Index: doc/LaTeXmacros/common.tex
===================================================================
--- doc/LaTeXmacros/common.tex	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/LaTeXmacros/common.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -11,6 +11,6 @@
 %% Created On       : Sat Apr  9 10:06:17 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Sat Feb 17 21:58:43 2018
-%% Update Count     : 369
+%% Last Modified On : Mon Mar 19 17:18:23 2018
+%% Update Count     : 379
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -101,5 +101,5 @@
 % index macros
 \newcommand{\italic}[1]{\emph{\hyperpage{#1}}}
-\newcommand{\definition}[1]{\textbf{\hyperpage{#1}}}
+\newcommand{\Definition}[1]{\textbf{\hyperpage{#1}}}
 \newcommand{\see}[1]{\emph{see}~#1}
 
@@ -114,5 +114,5 @@
 \def\impl{\@bsphack\begingroup
           \def\protect##1{\string##1\space}\@sanitize
-          \@wrxref{|definition}}
+          \@wrxref{|Definition}}
 \newcommand{\indexcode}[1]{{\lstinline$#1$}}
 \def\use{\@bsphack\begingroup
@@ -124,5 +124,5 @@
     \if@nobreak \ifvmode\nobreak\fi\fi\@esphack}
 %\newcommand{\use}[1]{\index{#1@{\lstinline$#1$}}}
-%\newcommand{\impl}[1]{\index{\protect#1@{\lstinline$\protect#1$}|definition}}
+%\newcommand{\impl}[1]{\index{\protect#1@{\lstinline$\protect#1$}|Definition}}
 
 % inline text and lowercase index: \Index{inline and lowercase index text}
@@ -148,4 +148,5 @@
 % Latin abbreviation
 \newcommand{\abbrevFont}{\textit}			% set empty for no italics
+\@ifundefined{eg}{
 \newcommand{\EG}{\abbrevFont{e}.\abbrevFont{g}.}
 \newcommand*{\eg}{%
@@ -153,5 +154,6 @@
 		{\@ifnextchar{:}{\EG}%
 			{\EG,\xspace}}%
-}%
+}}{}%
+\@ifundefined{ie}{
 \newcommand{\IE}{\abbrevFont{i}.\abbrevFont{e}.}
 \newcommand*{\ie}{%
@@ -159,20 +161,23 @@
 		{\@ifnextchar{:}{\IE}%
 			{\IE,\xspace}}%
-}%
+}}{}%
+\@ifundefined{etc}{
 \newcommand{\ETC}{\abbrevFont{etc}}
 \newcommand*{\etc}{%
 	\@ifnextchar{.}{\ETC}%
         {\ETC.\xspace}%
-}%
+}}{}%
+\@ifundefined{etal}{
 \newcommand{\ETAL}{\abbrevFont{et}~\abbrevFont{al}}
 \newcommand*{\etal}{%
 	\@ifnextchar{.}{\protect\ETAL}%
 		{\protect\ETAL.\xspace}%
-}%
+}}{}%
+\@ifundefined{viz}{
 \newcommand{\VIZ}{\abbrevFont{viz}}
 \newcommand*{\viz}{%
 	\@ifnextchar{.}{\VIZ}%
 		{\VIZ.\xspace}%
-}%
+}}{}%
 \makeatother
 
Index: doc/LaTeXmacros/lstlang.sty
===================================================================
--- doc/LaTeXmacros/lstlang.sty	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/LaTeXmacros/lstlang.sty	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -8,6 +8,6 @@
 %% Created On       : Sat May 13 16:34:42 2017
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Wed Aug 30 22:11:14 2017
-%% Update Count     : 14
+%% Last Modified On : Fri Apr  6 23:44:50 2018
+%% Update Count     : 20
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -31,12 +31,13 @@
 \lstdefinelanguage{sml} {
 	morekeywords= {
-		EQUAL, GREATER, LESS, NONE, SOME, abstraction, abstype, and, andalso, array, as, before, bool,
-		case, char, datatype, do, else, end, eqtype, exception, exn, false, fn, fun, functor, handle,
-		if, in, include, infix, infixr, int, let, list, local, nil, nonfix, not, o, of, op, open,
-		option, orelse, overload, print, raise, real, rec, ref, sharing, sig, signature, string, struct,
-		structure, substring, then, true, type, unit, val, vector, where, while, with, withtype, word
-	},
-	morestring=[b]",
-	morecomment=[s]{(*}{*)},
+		EQUAL, GREATER, LESS, NONE, SOME, abstraction, abstype, and, andalso, array, as, before,
+		bool, case, char, datatype, do, else, end, eqtype, exception, exn, false, fn, fun, functor,
+		handle, if, in, include, infix, infixr, int, let, list, local, nil, nonfix, not, o, of, op,
+		open, option, orelse, overload, print, raise, real, rec, ref, sharing, sig, signature,
+		string, struct, structure, substring, then, true, type, unit, val, vector, where, while,
+		with, withtype, word
+    },
+    morestring=[b]",
+    morecomment=[s]{(*}{*)},
 }
 
@@ -82,17 +83,21 @@
 
 \lstdefinelanguage{rust}{
+	% Keywords
 	morekeywords=[1]{
 		abstract, alignof, as, become, box, break, const, continue, crate, do, else, enum, extern,
-        false, final, fn, for, if, impl, in, let, loop, macro, match, mod, move, mut, offsetof,
-        override, priv, proc, pub, pure, ref, return, Self, self, sizeof, static, struct, super,
-        trait, true, type, typeof, unsafe, unsized, use, virtual, where, while, yield
+		false, final, fn, for, if, impl, in, let, loop, macro, match, mod, move, mut, offsetof,
+		override, priv, proc, pub, pure, ref, return, Self, self, sizeof, static, struct, super,
+		trait, true, type, typeof, unsafe, unsized, use, virtual, where, while, yield
 	},
+	% Strings
 	morestring=[b]{"},
+	% Comments
 	comment=[l]{//},
 	morecomment=[s]{/*}{*/},
+	% Options
 	sensitive=true
 }
 
-\lstdefinelanguage{Pseudo}{
+\lstdefinelanguage{pseudo}{
 	morekeywords={string,uint,int,bool,float},
 	sensitive=true,
@@ -107,13 +112,13 @@
 \lstdefinelanguage{CFA}[ANSI]{C}{
 	morekeywords={
-		_Alignas, _Alignof, __alignof, __alignof__, asm, __asm, __asm__, _At, __attribute,
-		__attribute__, auto, _Bool, catch, catchResume, choose, _Complex, __complex, __complex__,
-		__const, __const__, disable, dtype, enable, __extension__, fallthrough, fallthru,
-		finally, forall, ftype, _Generic, _Imaginary, inline, __label__, lvalue, _Noreturn, one_t,
-		otype, restrict, _Static_assert, throw, throwResume, trait, try, ttype, typeof, __typeof,
-		__typeof__, virtual, with, zero_t},
-	morekeywords=[2]{
-		_Atomic, coroutine, is_coroutine, is_monitor, is_thread, monitor, mutex, nomutex, or,
-		resume, suspend, thread, _Thread_local, waitfor, when, yield},
+		_Alignas, _Alignof, __alignof, __alignof__, asm, __asm, __asm__, __attribute, __attribute__,
+		auto, _Bool, catch, catchResume, choose, _Complex, __complex, __complex__, __const, __const__,
+		coroutine, disable, dtype, enable, __extension__, exception, fallthrough, fallthru, finally,
+		__float80, float80, __float128, float128, forall, ftype, _Generic, _Imaginary, __imag, __imag__,
+		inline, __inline, __inline__, __int128, int128, __label__, monitor, mutex, _Noreturn, one_t, or,
+		otype, restrict, __restrict, __restrict__, __signed, __signed__, _Static_assert, thread,
+		_Thread_local, throw, throwResume, timeout, trait, try, ttype, typeof, __typeof, __typeof__,
+		virtual, __volatile, __volatile__, waitfor, when, with, zero_t,
+    },
 	moredirectives={defined,include_next}%
 }
Index: doc/bibliography/pl.bib
===================================================================
--- doc/bibliography/pl.bib	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/bibliography/pl.bib	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -780,6 +780,7 @@
     title	= {Boost Coroutine Library},
     year	= 2015,
-    note	= {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
-		  {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}} [Accessed September 2016]},
+    howpublished= {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
+		  {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}}},
+    note	= {Accessed: 2016-09},
 }
 
@@ -865,6 +866,6 @@
     keywords	= {ISO/IEC C 11},
     contributer	= {pabuhr@plg},
-    author	= {C11},
-    title	= {Programming Languages -- {C} {ISO/IEC} 9889:2011-12},
+    key		= {C11},
+    title	= {C Programming Language {ISO/IEC} 9889:2011-12},
     edition	= {3rd},
     publisher	= {International Standard Organization},
@@ -873,18 +874,17 @@
 }
 
-@techreport{C++Concepts,
-    type	= {International Standard},
+@manual{C++Concepts,
     keywords	= {ISO/IEC TS 19217:2015},
     contributer	= {a3moss@uwaterloo.ca},
     key		= {Concepts},
-    title	= {Information technology -- Programming languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Extensions for concepts {ISO/IEC} {TS} 19217:2015},
+    title	= {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming language -- Extensions for concepts {ISO/IEC} {TS} 19217:2015},
     publisher	= {International Standard Organization},
     address	= {\href{https://www.iso.org/standard/64031.html}{https://\-www.iso.org/\-standard/\-64031.html}},
-    year	= 2015
+    year	= 2015,
 }
 
 @misc{Cforall,
     key		= {Cforall},
-    title	= {C$\forall$ Features},
+    title	= {\textsf{C}{$\mathbf{\forall}$} Features},
     howpublished= {\url{https://plg.uwaterloo.ca/~cforall/features}},
     note	= {Accessed: 2018-01-01},
@@ -895,5 +895,5 @@
     contributer	= {pabuhr@plg},
     author	= {Rodolfo Gabriel Esteves},
-    title	= {C$\forall$, a Study in Evolutionary Design in Programming Languages},
+    title	= {\textsf{C}$\mathbf{\forall}$, a Study in Evolutionary Design in Programming Languages},
     school	= {School of Computer Science, University of Waterloo},
     year	= 2004,
@@ -1022,9 +1022,21 @@
 }
 
+@inproceedings{Necula02,
+    author	= {Necula, George C. and McPeak, Scott and Weimer, Westley},
+    title	= {{CCured}: Type-safe Retrofitting of Legacy Code},
+    booktitle	= {Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
+    series	= {POPL '02},
+    year	= {2002},
+    location	= {Portland, Oregon},
+    pages	= {128-139},
+    publisher	= {ACM},
+    address	= {New York, NY, USA},
+}
+
 @techreport{cforall-ug,
     keywords	= {cforall, user guide},
     contributer	= {pabuhr@plg},
     author	= {Peter A. Buhr and Glen Ditchfield and David Till and Charles R. Zarnke},
-    title	= {{\mbox{\mdseries\sffamily C{$\mathbf{\forall}$}}}\ Users Guide, Version 0.1},
+    title	= {\textsf{C}$\mathbf{\forall}$ Users Guide, Version 0.1},
     institution	= {Department of Computer Science, University of Waterloo},
     address	= {Waterloo, Ontario, Canada, N2L 3G1},
@@ -1105,5 +1117,5 @@
     title	= {Programming Languages -- {Cobol} ISO/IEC 1989:2014},
     edition	= {2nd},
-    institution = {International Standard Organization},
+    institution	= {International Standard Organization},
     address	= {\href{https://www.iso.org/standard/51416.html}{https://\-www.iso.org/\-standard/\-51416.html}},
     year	= 2014,
@@ -1117,5 +1129,8 @@
     journal	= sigplan,
     year	= 1984,
-    month	= jun, volume = 19, number = 6, pages = {1-12},
+    month	= jun,
+    volume	= 19,
+    number	= 6,
+    pages	= {1-12},
     note	= {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction},
     abstract	= {
@@ -1536,5 +1551,5 @@
 @mastersthesis{Delisle18,
     author	= {Thierry Delisle },
-    title	= {Concurrency in {C}$\mathbf{\forall}$},
+    title	= {Concurrency in \textsf{C}$\mathbf{\forall}$},
     school	= {School of Computer Science, University of Waterloo},
     year	= 2018,
@@ -1702,5 +1717,5 @@
     contributer	= {a3moss@uwaterloo.ca},
     author	= {Glen Ditchfield},
-    title	= {Conversions for {Cforall}},
+    title	= {Conversions for \textsf{C}$\mathbf{\forall}$},
     note	= {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-\textasciitilde cforall/\-Conversions/\-index.html}},
     month	= {Nov},
@@ -1989,11 +2004,11 @@
 
 @book{Stroustrup94,
-    keywords    = {C++},
-    contributor = {wyrmok@plg},
-    author      = {Bjarne Stroustrup},
-    title       = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
-    publisher   = {Addison-Wesley},
+    keywords	= {C++},
+    contributor	= {wyrmok@plg},
+    author	= {Bjarne Stroustrup},
+    title	= {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
+    publisher	= {Addison-Wesley},
     address	= {Boston},
-    year        = 1994
+    year	= 1994
 }
 
@@ -2738,5 +2753,5 @@
 }
 
-@online{GCCExtensions,
+@misc{GCCExtensions,
     contributer	= {a3moss@uwaterloo.ca},
     key		= {{GNU}},
@@ -2744,6 +2759,6 @@
     title	= {Extensions to the {C} Language Family},
     year	= 2014,
-    note	= {\href{https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/C-Extensions.html}{https://\-gcc.gnu.org/\-onlinedocs/\-gcc-4.7.2/\-gcc/\-C\-Extensions.html}},
-    urldate	= {2017-04-02}
+    howpublished= {\href{https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/C-Extensions.html}{https://\-gcc.gnu.org/\-onlinedocs/\-gcc-4.7.2/\-gcc/\-C\-Extensions.html}},
+    note	= {Accessed: 2017-04-02},
 }
 
@@ -3083,7 +3098,7 @@
     keywords	= {GMP arbitrary-precision library},
     contributer	= {pabuhr@plg},
+    key		= {GMP},
     title	= {{GNU} Multiple Precision Arithmetic Library},
-    author	= {GMP},
-    organization= {GNU},
+    address	= {GNU},
     year	= 2016,
     note	= {\href{https://gmplib.org}{https://\-gmplib.org}},
@@ -3114,13 +3129,13 @@
 }
 
-@online{GObject,
+@misc{GObject,
     keywords	= {GObject},
     contributor	= {a3moss@uwaterloo.ca},
-    author	= {{GObject}},
-    organization= {The GNOME Project},
-    title	= {{GObject} Reference Manual},
+    key		= {GObject},
+    organization= {The {GNOME} Project},
+    title	= {{GO}bject Reference Manual},
     year	= 2014,
-    url		= {https://developer.gnome.org/gobject/stable/},
-    urldate	= {2017-04-04}
+    howpublished= {https://developer.gnome.org/gobject/stable/},
+    note	= {Accessed: 2017-04},
 }
 
@@ -3380,5 +3395,5 @@
     contributer	= {pabuhr@plg},
     author	= {Richard C. Bilson},
-    title	= {Implementing Overloading and Polymorphism in Cforall},
+    title	= {Implementing Overloading and Polymorphism in \textsf{C}$\mathbf{\forall}$},
     school	= {School of Computer Science, University of Waterloo},
     year	= 2003,
@@ -3646,4 +3661,27 @@
 }
 
+@inproceedings{Pharr12,
+    title	= {ispc: A {SPMD} compiler for high-performance CPU programming},
+    author	= {Pharr, Matt and Mark, William R},
+    booktitle	= {Innovative Parallel Computing (InPar), 2012},
+    pages	= {1--13},
+    year	= {2012},
+    month	= may,
+    address	= {San Jose, CA, USA},
+    publisher	= {IEEE},
+}
+
+@inproceedings{DeLozier13,
+    keywords	= {C++, local pointers, memory safety, type-safety},
+    author	= {DeLozier, Christian and Eisenberg, Richard and Nagarakatte, Santosh and Osera, Peter-Michael and Martin, Milo M.K. and Zdancewic, Steve},
+    title	= {{I}ronclad {C++}: A Library-augmented Type-safe Subset of {C++}},
+    booktitle	= {Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages \& Applications},
+    series	= {OOPSLA'13},
+    year	= {2013},
+    address	= {Indianapolis, Indiana, USA},
+    pages	= {287-304},
+    publisher	= {ACM},
+}
+
 @inproceedings{Hibbard77,
     keywords	= {algol-68, concurrency},
@@ -3687,22 +3725,22 @@
 		  
 @book{Java,
-    keywords    = {Java},
-    contributer	= {pabuhr@plg},
-    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
-    title       = {The {Java} Language Specification},
+    keywords	= {Java},
+    contributer	= {pabuhr@plg},
+    author	= {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
+    title	= {The {Java} Language Specification},
     publisher	= {Addison-Wesley},
     address	= {Reading},
-    year        = 2000,
+    year	= 2000,
     edition	= {2nd},
 }
 
 @manual{Java8,
-    keywords    = {Java SE 8},
-    contributer	= {pabuhr@plg},
-    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
-    title       = {{Java} Language Specification},
+    keywords	= {Java SE 8},
+    contributer	= {pabuhr@plg},
+    author	= {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
+    title	= {{Java} Language Specification},
     publisher	= {Oracle},
-    year        = 2015,
-    edition	= {Java SE 8},
+    year	= 2015,
+    edition	= {{J}ava {SE} 8},
 }
 
@@ -4639,22 +4677,23 @@
 }
 
-@manual{obj-c-book,
+@misc{obj-c-book,
     keywords	= {objective-c},
     contributor	= {a3moss@uwaterloo.ca},
-    author	= {{Objective-C}},
-    title	= {The {Objective-C} Programming Language},
-    organization= {Apple Computer Inc.},
-    address	= {Cupertino, CA},
-    year	= 2003
-}
-
-@online{xcode7,
+    key		= {Objective-C},
+    title	= {Objective-C},
+    publisher	= {Apple Inc.},
+    year	= 2015,
+    howpublished= {\href{https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/ObjectiveC.html}{https://developer.apple.com/\-library/\-content/\-documentation/\-General/\-Conceptual/\-DevPedia-\-CocoaCore/\-ObjectiveC.html}},
+    note	= {Accessed: 2018-03}
+}
+
+@misc{xcode7,
     keywords	= {objective-c},
     contributor	= {a3moss@uwaterloo.ca},
-    author	= {{Xcode}},
-    title	= {{Xcode} 7 Release Notes},
+    key		= {Xcode},
+    title	= {{X}code 7 Release Notes},
     year	= 2015,
-    note	= {\href{https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html}{https://developer.apple.com/\-library/\-content/\-documentation/\-Xcode/\-Conceptual/\-RN-Xcode-Archive/\-Chapters/\-xc7\_release\_notes.html}},
-    urldate	= {2017-04-04}
+    howpublished= {\href{https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html}{https://developer.apple.com/\-library/\-content/\-documentation/\-Xcode/\-Conceptual/\-RN-Xcode-Archive/\-Chapters/\-xc7\_release\_notes.html}},
+    note	= {Accessed: 2017-04}
 }
 
@@ -5196,6 +5235,5 @@
     year	= 1984,
     series	= {Computers and their Applications},
-    address	= {Market Cross House, Cooper Street, Chichester, West Sussex,
-	PO19 1EB, England},
+    address	= {Market Cross House, Cooper Street, Chichester, West Sussex, PO19 1EB, England},
     summary	= {
         The principles of Procedural Abstraction, Data Type Completeness,
@@ -5249,12 +5287,16 @@
 }
 
-@book{PowerPC,
-    key		= {PowerPC processor},
-    title	= {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
-    publisher	= {Freescale Semiconductor},
-    volume	= {MPCFPE32B},
-    edition	= {Rev. 3},
-    month	= 9,
-    year	= 2005,
+@inproceedings{Rafkind09,
+    keywords	= {accurate, C programming language, conservative, garbage collection, precise},
+    contributer	= {pabuhr@plg},
+    author	= {Rafkind, Jon and Wick, Adam and Regehr, John and Flatt, Matthew},
+    title	= {Precise Garbage Collection for C},
+    booktitle	= {Proceedings of the 2009 International Symposium on Memory Management},
+    series	= {ISMM '09},
+    year	= {2009},
+    location	= {Dublin, Ireland},
+    pages	= {39-48},
+    publisher	= {ACM},
+    address	= {New York, NY, USA},
 }
 
@@ -5329,6 +5371,5 @@
 
 @article{psa:persistence,
-    keywords	= {persistence, first-class procedures, closure, PS-Algol,
-	Abstract Data Types},
+    keywords	= {persistence, first-class procedures, closure, PS-Algol, Abstract Data Types},
     contributer	= {gjditchfield@plg},
     author	= {Malcolm P. Atkinson and Ronald Morrison},
@@ -5361,6 +5402,5 @@
 
 @article{Procol89,
-    keywords	= {active objects, object-oriented languages,
-	object-based languages, explicit per-object protocol},
+    keywords	= {active objects, object-oriented languages, object-based languages, explicit per-object protocol},
     contributer	= {akgoel@plg},
     author	= {Jan van den Bos and Chris Laffra},
@@ -5376,4 +5416,14 @@
 }
 
+@book{PowerPC,
+    key		= {PowerPC processor},
+    title	= {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
+    publisher	= {Freescale Semiconductor},
+    volume	= {MPCFPE32B},
+    edition	= {Rev. 3},
+    month	= 9,
+    year	= 2005,
+}
+
 @book{Butenhof97,
     keywords	= {PThreads, concurrency},
@@ -5422,8 +5472,8 @@
     contributer	= {pabuhr@plg},
     key		= {C++98},
-    title	= {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
-    organization= {International Standard ISO/IEC 14882:1998 (E)},
-    publisher   = {American National Standards Institute},
-    address	= {www.ansi.org},
+    title	= {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:1998},
+    edition	= {1st},
+    publisher   = {International Standard Organization},
+    address	= {\href{https://www.iso.org/standard/25845.html}{https://\-www.iso.org/\-standard/\-25845.html}},
     year	= 1998,
 }
@@ -5432,6 +5482,6 @@
     keywords	= {ISO/IEC C++ 14},
     contributer	= {pabuhr@plg},
-    author	= {C++14},
-    title	= {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} ISO/IEC 14882:2014},
+    key		= {C++14},
+    title	= {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:2014},
     edition	= {4th},
     publisher   = {International Standard Organization},
@@ -5878,6 +5928,7 @@
 
 @mastersthesis{Schluntz17,
+    keywords 	= {constructors, destructors, tuples},
     author	= {Robert Schluntz},
-    title	= {Resource Management and Tuples in {C}$\mathbf{\forall}$},
+    title	= {Resource Management and Tuples in \textsf{C}$\mathbf{\forall}$},
     school	= {School of Computer Science, University of Waterloo},
     year	= 2017,
@@ -5956,7 +6007,7 @@
     keywords	= {Rust programming language},
     contributer	= {pabuhr@plg},
-    author	= {{Rust}},
-    title	= {The {Rust} Programming Language},
-    organization= {The Rust Project Developers},
+    key		= {Rust},
+    title	= {The {R}ust Programming Language},
+    address	= {The Rust Project Developers},
     year	= 2015,
     note	= {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}},
@@ -5968,7 +6019,7 @@
     keywords	= {Scala programming language},
     contributer	= {pabuhr@plg},
-    author	= {{Scala}},
-    title	= {{Scala} Language Specification, Version 2.11},
-    organization= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
+    key		= {Scala},
+    title	= {{S}cala Language Specification, Version 2.11},
+    address	= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
     year	= 2016,
     note	= {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
@@ -6050,4 +6101,26 @@
     number	= 12,
     pages	= {66-76},
+}
+
+@article{Nickolls08,
+    author	= {Nickolls, John and Buck, Ian and Garland, Michael and Skadron, Kevin},
+    title	= {Scalable Parallel Programming with CUDA},
+    journal	= {Queue},
+    volume	= {6},
+    number	= {2},
+    month	= mar,
+    year	= 2008,
+    pages	= {40-53},
+    publisher	= {ACM},
+    address	= {New York, NY, USA},
+} 
+
+@inproceedings{Leissa14,
+    title	= {{S}ierra: a {SIMD} extension for {C}++},
+    author	= {Lei{\ss}a, Roland and Haffner, Immanuel and Hack, Sebastian},
+    booktitle	= {Proceedings of the 2014 Workshop on Workshop on programming models for SIMD/Vector processing},
+    pages	= {17-24},
+    year	= {2014},
+    organization= {ACM}
 }
 
@@ -6292,6 +6365,6 @@
 @article{Smith98,
     keywords	= {Polymorphic C},
-    contributor = {a3moss@uwaterloo.ca},
-    title	= {A sound polymorphic type system for a dialect of C},
+    contributor	= {a3moss@uwaterloo.ca},
+    title	= {A sound polymorphic type system for a dialect of {C}},
     author	= {Smith, Geoffrey and Volpano, Dennis},
     journal	= {Science of computer programming},
@@ -6401,5 +6474,5 @@
 }
 
-@online{Sutter15,
+@misc{Sutter15,
     contributer	= {pabuhr@plg},
     author	= {Herb Sutter and Bjarne Stroustrup and Gabriel Dos Reis},
@@ -6408,7 +6481,7 @@
     month	= oct,
     year	= 2015,
-    pages	= {1--6},
+    pages	= {1-6},
     numpages	= {6},
-    note	= {\href{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf}{http://\-www.open-std.org/\-jtc1/\-sc22/\-wg21/\-docs/\-papers/\-2015/\-p0144r0.pdf}},
+    howpublished= {\href{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf}{http://\-www.open-std.org/\-jtc1/\-sc22/\-wg21/\-docs/\-papers/\-2015/\-p0144r0.pdf}},
 }
 
@@ -6684,9 +6757,10 @@
 }
 
-@online{TIOBE,
-    contributer	= {pabuhr@plg},
-    author	= {{TIOBE Index}},
-    year	= {February 2018},
-    url		= {http://www.tiobe.com/tiobe_index},
+@misc{TIOBE,
+    contributer	= {pabuhr@plg},
+    key		= {TIOBE Index},
+    title	= {{TIOBE} Index},
+    howpublished= {\href{http://www.tiobe.com/tiobe_index}{http://\-www.tiobe.com/\-tiobe\_index}},
+    note	= {Accessed: 2018-09},
 }
 
@@ -6699,5 +6773,4 @@
     month	= sep,
     year	= 1990,
-    note	= {}
 }
 
@@ -7006,13 +7079,13 @@
 }
 
-@online{Vala,
+@misc{Vala,
     keywords	= {GObject, Vala},
     contributor	= {a3moss@uwaterloo.ca},
-    author	= {{Vala}},
-    organization= {The GNOME Project},
-    title	= {Vala Reference Manual},
+    key		= {Vala},
+    organization= {The {GNOME} Project},
+    title	= {{V}ala Reference Manual},
     year	= 2017,
-    url		= {https://wiki.gnome.org/Projects/Vala/Manual},
-    urldate	= {2017-04-04}
+    howpublished= {\url{https://wiki.gnome.org/Projects/Vala/Manual}},
+    note	= {Accessed: 2017-04}
 }
 
Index: doc/papers/concurrency/.gitignore
===================================================================
--- doc/papers/concurrency/.gitignore	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/concurrency/.gitignore	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -3,2 +3,5 @@
 *.pdf
 *.ps
+
+Paper.out.ps
+WileyNJD-AMA.bst
Index: doc/papers/concurrency/AMA/AMA-stix/Documents/.log
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Documents/.log	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Documents/.log	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,23 @@
+This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6400) (preloaded format=pdflatex 2017.9.23)  23 SEP 2017 18:48
+entering extended mode
+**wileyNJD-AMA
+(c:\MiKTeX2.9\texmf\tex\latex\tools\.tex
+LaTeX2e <2017-04-15>
+Babel <3.13> and hyphenation patterns for 73 language(s) loaded.
+File ignored)
+*
+! Emergency stop.
+<*> wileyNJD-AMA
+                
+End of file on the terminal!
+
+ 
+Here is how much of TeX's memory you used:
+ 7 strings out of 493348
+ 171 string characters out of 3143487
+ 53569 words of memory out of 3000000
+ 3639 multiletter control sequences out of 15000+200000
+ 3640 words of font info for 14 fonts, out of 3000000 for 9000
+ 1127 hyphenation exceptions out of 8191
+ 5i,0n,1p,93b,8s stack positions out of 5000i,500n,10000p,200000b,50000s
+!  ==> Fatal error occurred, no output PDF file produced!
Index: doc/papers/concurrency/AMA/AMA-stix/Documents/README.txt
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Documents/README.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Documents/README.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,41 @@
+% README.TXT for WileyNJD-v2.cls
+% Version 2.0 released 22 September 2017
+%
+% This software may only be used to prepare an article for publication in the
+% Wiley NJD journals
+% to be published by John Wiley & Sons, Ltd.
+% Any other use constitutes an infringement of copyright.
+%
+% The release consists of the following files:
+%
+%   README.TXT   this file
+%   WileyNJD-v2.cls  the LaTeX2e class file
+%   NJDnatbib.sty --> NJD natbib reference package.
+%   Stix-Fonts (folder) -->   Stix font files 
+
+%   MiKTeX 2.9 (Freeware software) is required to install STIX/LATO fonts
+%   Download MiKTeX installer & instructions from the below URLs
+	https://miktex.org/download
+ 	Instructions to install the basic MiKTeX installer
+	https://miktex.org/howto/install-miktex
+
+%   Execute(double click) --> Windows-Stix-fontinstaller.exe from Stix-Fonts folder (This EXE file will install fonts to local drive) (please rename Windows-Stix-fontinstaller.e_xe to Windows-Stix-fontinstaller.exe)
+%   Still shows font error, please do the following
+%   Start-->run--> type "mo_edmin.exe" and press enter
+%   Press -->Refresh FNDB button--> press close button.
+%   wileyNJD-Doc.tex   authors' instructions
+%   wileyNJD-Doc.pdf   authors' instructions in PDF format
+%
+% Typeset wileyNJD-Doc.tex for instructions and examples, or view the PDF.
+%
+% Simply place WileyNJD-v2.cls, NJDnatbib.sty, wileyNJD-AMA.bst and wileyNJD-Doc.tex in your systems usual directories
+% and typeset using your LaTeX2e command.
+%
+%
+%
+% *** IMPORTANT NOTE ***
+% When you submit your paper, please use the "doublespace" option
+% in the documentclass line which will double-space your document
+% and make the task of reviewing much simpler.
+%
+
Index: doc/papers/concurrency/AMA/AMA-stix/Documents/wileyNJD-Doc.tex
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Documents/wileyNJD-Doc.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Documents/wileyNJD-Doc.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,430 @@
+\documentclass[AMA,STIX1COL]{WileyNJD-v2}
+\usepackage{moreverb}
+
+
+\newcommand\BibTeX{{\rmfamily B\kern-.05em \textsc{i\kern-.025em b}\kern-.08em
+T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
+
+\articletype{Article Type}%
+
+\received{<day> <Month>, <year>}
+\revised{<day> <Month>, <year>}
+\accepted{<day> <Month>, <year>}
+
+%\raggedbottom
+
+\begin{document}
+
+\title{A demonstration of the \LaTeX\ class file for Wiley NJD Journals\protect\thanks{This is an example for title footnote.}}
+
+\author[1]{Author One*}
+
+\author[2,3]{Author Two}
+
+\author[3]{Author Three}
+
+\authormark{AUTHOR ONE \textsc{et al}}
+
+
+\address[1]{\orgdiv{Org Division}, \orgname{Org name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\address[2]{\orgdiv{Org Division}, \orgname{Org name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\address[3]{\orgdiv{Org Division}, \orgname{Org name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\corres{*Corresponding author name, Corresponding address. \email{authorone@Email.com}}
+
+\presentaddress{Present address}
+
+\abstract[Abstract]{This paper describes the use of the \LaTeXe\ \textsf{WileyNJD-v2.cls}
+class file for setting papers for \emph{Mathematical Methods in the Applied Sciences}.}
+
+\keywords{Class file; \LaTeXe; \emph{Wiley NJD}}
+
+\jnlcitation{\cname{%
+\author{Williams K.}, 
+\author{B. Hoskins}, 
+\author{R. Lee}, 
+\author{G. Masato}, and 
+\author{T. Woollings}} (\cyear{2016}), 
+\ctitle{A regime analysis of Atlantic winter jet variability applied to evaluate HadGEM3-GC2}, \cjournal{Q.J.R. Meteorol. Soc.}, \cvol{2017;00:1--6}.}
+
+\maketitle
+
+\footnotetext{\textbf{Abbreviations:} ANA, anti-nuclear antibodies; APC, antigen-presenting cells; IRF, interferon regulatory factor}
+
+
+\section{Introduction}\label{sec1}
+
+Many authors submitting \( \sin \cos \tan \inf_{x} \) to NJD journals use \LaTeXe\ to
+prepare their papers. This paper describes the
+\textsf{WileyNJD-v2.cls} class file which can be used to convert
+articles produced with other \LaTeXe\ class files into the correct
+form for publication in \emph{Wiley NJD Journals}.
+
+The \textsf{WileyNJD-v2.cls} class file preserves much of the standard
+\LaTeXe\ interface so that any document which was produced using
+the standard \LaTeXe\ \textsf{article} style can easily be
+converted to work with the \textsf{WileyNJD-v2} style. However, the
+width of text and typesize will vary from that of
+\textsf{article.cls}; therefore, \emph{line breaks will change}
+and it is likely that displayed mathematics and tabular material
+will need re-setting.
+
+In the following sections we describe how to lay out your code to
+use \textsf{WileyNJD-v2.cls} to reproduce the typographical look of
+\emph{Wiley NJD Journals}.
+
+\subsection{Procedure to install fonts}
+ 
+\begin{enumerate}
+\item All font files are available under the Stix-fonts folder 
+\item Font installer is available under the same folder Windows-Stix-fontinstaller.exe
+\item Execute (double click the EXE file) the EXE file that will install all fonts/map files to your local drive.
+\end{enumerate}
+
+\subsection{The Three Golden Rules} 
+
+Before we proceed, we would like to
+stress \emph{three golden rules} that need to be followed to
+enable the most efficient use of your code at the typesetting
+stage:
+\begin{enumerate}
+\item[(i)] keep your own macros to an absolute minimum;
+
+\item[(ii)] as \TeX\ is designed to make sensible spacing
+decisions by itself, do \emph{not} use explicit horizontal or
+vertical spacing commands, except in a few accepted (mostly
+mathematical) situations, such as \verb"\," before a
+differential~d, or \verb"\quad" to separate an equation from its
+qualifier;
+
+\item[(iii)] follow the \emph{NJD} reference style.
+\begin{enumerate}[a.]
+\item Chemistry --- Use the ``AMA'' option as \verb"\documentclass[AMA]{WileyNJD-v2.cls}"
+
+\end{enumerate}
+\end{enumerate}
+
+
+\section{Getting Started} The \textsf{WileyNJD-v2.cls} class file should run
+on any standard \LaTeXe\ installation. If any of the fonts, class
+files or packages it requires are missing from your installation,
+they can be found on the \emph{\TeX\ Live} CD-ROMs or from CTAN.
+
+LaTeX document class options
+
+\begin{flushleft}
+\begin{enumerate}[a.]
+\item STIX1COL--- For STIX font large one column layout use the ``STIX1COL'' option as \verb"\documentclass[AMA,STIX1COL]{WileyNJD-v2}"
+\item STIX2COL--- For STIX font large two column layout use the ``STIX2COL'' option as \verb"\documentclass[AMA,STIX2COL]{WileyNJD-v2}"
+\item STIXSMALL--- For STIX font small layout use the ``STIXSMALL'' option as \verb"\documentclass[AMA,STIXSMALL]{WileyNJD-v2}"
+\end{enumerate}
+\end{flushleft}
+
+
+
+\section{The Article Header Information}
+The heading for any file using \textsf{WileyNJD-v2.cls} is shown in
+Figure~\ref{F1}.
+
+\subsection{Remarks}
+
+\begin{enumerate}[(I).]
+
+\item Use \verb"\title{<title> \protect\thanks{<title footnotes}}" for article title and title footnote.
+\item Use \verb"\authormark{}" for running heads.
+
+\item Note the use of \verb"\author[<link>]{<name>}" and \verb"\address[<link>]{<name>}" to
+link names and addresses. The author for correspondence is marked
+by ``*'' and \verb"\corres{}" is used to give that
+author's address, which will be printed besides abstract, prefaced by
+`Correspondence to:'.
+
+\item For submitting a double-spaced manuscript, add
+\verb"doublespace" as an option to the documentclass line. \verb"\documentclass[doublespace]{WileyNJD-v2}"
+
+\item Use \verb"\presentaddress{}" for present address.
+
+\item In abstract \verb"\abstract[<title>]{abstract paragraph}" use optional parameter for title followed by abstract paragraph.
+
+\item For Key words use \verb"\keywords{}".
+
+\item For how to site use \verb"\jnlcitation{\cname{\author{<author name>},"
+
+\verb"\ctitle{<title>}, \cjournal{<Journal name>}, \cvol{<vol>}.}}".
+
+\item For title page abbreviations use \verb"\footnotetext{<\textbf{Abbreviation title:} Abreviations>}"
+
+\item Use \verb"\articletype{<article category}" for article header information
+
+\item Use \verb"\received{<received date>} \revised{<revised date>} \accepted{<accepted date>}" for history dates.
+
+\end{enumerate}
+
+
+
+\begin{figure}[p]
+\setlength{\fboxsep}{0pt}%
+\setlength{\fboxrule}{0pt}%
+\begin{center}
+\begin{boxedverbatim}
+
+\documentclass[AMA,STIX1COL]{WileyNJD-v2}
+
+\articletype{Article Type}%
+
+\received{26 April 2016}
+\revised{6 June 2016}
+\accepted{6 June 2016}
+
+\begin{document}
+
+\title{<Initial cap, lower case>\protect\thanks{<title footnote.>}}
+
+\author[<address link>]{<Author name><corresponding author*>}
+
+\author[<address link>,<address link>]{Author Name}
+
+\authormark{AUTHOR ONE \textsc{et al}}
+
+\address[<address link>]{\orgdiv{<Org Division>}, \orgname{<Org name>}, 
+\orgaddress{\state{<State name>}, \country{<Country name>}}}
+\address[<address link>]{\orgdiv{<Org Division>}, \orgname{<Org name>},
+ \orgaddress{\state{<State name>}, \country{<Country name>}}}
+
+\corres{<corresponding author link*> <author name, address.
+ \email{<authorone@email.com>}}
+
+\presentaddress{<Present address>}
+
+\abstract[<Abstract heading>]{<Abstract paragraph>}
+
+\keywords{<keyword1>, <keyword2>,...}
+
+\jnlcitation{\cname{%
+\author{<aurhor name>}, 
+\author{<aurhor name>}, 
+\author{<aurhor name>}, 
+\author{<aurhor name>},  and 
+\author{<aurhor name>}} (\cyear{<year>}), 
+\ctitle{<journal title>}, \cjournal{<journal name>} <year> <vol> Page <xxx>-<xxx>}
+
+\footnotetext{\textbf{<abbreviation head:>} <abbreviations> ..}
+
+\maketitle
+
+\section{Introduction}
+.
+.
+.
+\end{boxedverbatim}
+\end{center}
+\caption{Example for title page.\label{F1}}
+\end{figure}
+
+\section{The Body of the Article}
+
+\subsection{Section headings}
+
+\begin{enumerate}[(H1)]
+\item Section --- use \verb"\section{}"
+\item SubSection--- use \verb"\subsection{}"
+\item SubSubSectioin--- use \verb"\subsubsection{}"
+\item Paragraph--- use \verb"\paragraph{}"
+\item Subparagraph--- use \verb"\subparagraph{}"
+\end{enumerate}
+
+\subsection{Mathematics} \textsf{WileyNJD-v2.cls} makes the full
+functionality of \AmS\/\TeX\ available. We encourage the use of
+the \verb"align", \verb"gather" and \verb"multline" environments
+for displayed mathematics.
+
+\subsection{Figures and Tables}
+
+\textsf{WileyNJD-v2.cls} uses the
+\textsf{graphicx} package for handling figures.
+
+Figures are called in as follows:
+\begin{verbatim}
+\begin{figure}
+\centering
+\includegraphics{<figure name>}
+\caption{<Figure caption>}
+\end{figure}
+\end{verbatim}
+
+The standard coding for a table is shown in Figure~\ref{F2}.
+
+\begin{figure}[h]
+\setlength{\fboxsep}{0pt}%
+\setlength{\fboxrule}{0pt}%
+\begin{center}
+\begin{boxedverbatim}
+\begin{table}
+\caption{<Table caption>}
+\centering
+\begin{tabular}{<table alignment>}
+\toprule
+<column headings>\\
+\midrule
+<table entries
+(separated by & as usual)>\\
+<table entries>\\
+.
+.
+.\\
+\bottomrule
+\end{tabular}
+\begin{tablenotes}
+\item Source: xxx.
+\item[1] xxx.
+\item[2] xxx.
+\end{tablenotes}
+\end{table}
+\end{boxedverbatim}
+\end{center}
+\caption{Example for table layout.\label{F2}}
+\end{figure}
+
+\subsection{Cross-referencing}
+The use of the \LaTeX\ cross-reference system
+for figures, tables, equations, etc., is encouraged
+(using \verb"\ref{<name>}" and \verb"\label{<name>}").
+
+\subsection{Box text}
+
+\begin{verbatim}
+\begin{boxtext}
+\section*{<title>}%
+Paragraph
+\end{boxtext}
+\end{verbatim}
+
+\subsection{List items}
+
+\subsubsection{Enumerate list styles}
+\begin{verbatim}
+\begin{enumerate}[1]
+\item 
+\end{enumerate}
+
+\begin{enumerate}[1.]
+\item 
+\end{enumerate}
+
+\begin{enumerate}[(1)]
+\item 
+\end{enumerate}
+
+\begin{enumerate}[I]
+\item 
+\end{enumerate}
+
+\begin{enumerate}[i]
+\item 
+\end{enumerate}
+
+\begin{enumerate}[a]
+\item 
+\end{enumerate}
+
+\end{verbatim}
+
+\subsubsection{Bullet list styles}
+
+\begin{verbatim}
+\begin{itemize}
+\item 
+\end{itemize}
+\end{verbatim}
+
+\subsubsection{Description list}
+
+\begin{verbatim}
+\begin{description}
+\item[<entry>] description text.
+\end{description}
+\end{verbatim}
+
+\subsection{Enunciations}
+
+\begin{verbatim}
+\begin{theorem}[<Theorem subhead>]\label{thm1}
+<theorem text>. 
+\end{theorem}
+
+\begin{proposition}[<proposition subhead>]\label{pro1}
+<proposition text>. 
+\end{proposition}
+
+\begin{definition}[<definition subhead>]\label{dfn1}
+<definition text>. 
+\end{definition}
+
+\begin{proof}
+<proof text>. 
+\end{proof}
+
+\begin{proof}[Proof of Theorem~\ref{thm1}]
+<proof text>.
+\end{proof}
+
+\end{verbatim}
+
+\subsection{Program codes}
+
+Use \verb+\begin{verbatim}...\end{verbatim}+ for program codes without math. Use \verb+\begin{alltt}...\end{alltt}+ for program codes with math. Based on the text provided inside the optional argument of \verb+\begin{code}[Psecode|Listing|Box|Code|+\hfill\break \verb+Specification|Procedure|Sourcecode|Program]...+ \verb+\end{code}+ tag corresponding boxed like floats are generated. Also note that \verb+\begin{code}[Code|Listing]...+ \verb+\end{code}+ tag with either Code or Listing text as optional argument text are set with computer modern typewriter font.  All other code environments are set with normal text font. Refer below example:
+
+\begin{verbatim}
+\begin{lstlisting}[caption={Descriptive Caption Text},label=DescriptiveLabel]
+for i:=maxint to 0 do
+begin
+{ do nothing }
+end;
+Write('Case insensitive ');
+WritE('Pascal keywords.');
+\end{lstlisting}
+\end{verbatim}
+
+
+\subsection{Acknowledgements} An Acknowledgements section is started with \verb"\ack" or
+\verb"\acks" for \textit{Acknowledgement} or
+\textit{Acknowledgements}, respectively. It must be placed just
+before the References.
+
+\subsection{Bibliography}
+
+\begin{enumerate}[1]
+\item Use \verb"\bibliography{wileyNJD-AMA}" BST file for AMA reference style
+\item Use \verb"\bibliography{wileyNJD-APA}" BST file for APA reference style
+\item Use \verb"\bibliography{wileyNJD-AMS}" BST file for AMS reference style
+\item Use \verb"\bibliography{wileyNJD-VANCOUVER}" BST file for Vancouver reference style
+\item Use \verb"\bibliography{wileyNJD-ACS}" BST file for Chemistry reference style
+\end{enumerate}
+
+The normal commands for producing the reference list are:
+
+\begin{verbatim}
+\begin{thebibliography}{99}
+\bibitem{<x-ref label>}
+         <Reference details>
+.
+.
+.
+\end{thebibliography}
+\end{verbatim}
+
+\subsection{Appendix Section}
+
+\begin{verbatim}
+\appendix
+
+\section{Section title of first appendix\label{app1}}
+.
+.
+.
+
+\end{verbatim}
+
+\end{document}
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/a_axxd65.enc
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/a_axxd65.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/a_axxd65.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,57 @@
+% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
+
+%%AutoEnc_axxd65ow2itmagzxgdtfjmwsmc
+% Encoding created by otftotfm on Thu Mar 06 16:09:45 2014
+% Command line follows encoding
+/AutoEnc_axxd65ow2itmagzxgdtfjmwsmc [
+%00
+  /f_j /uni20AC /.notdef /.notdef /fraction /dotaccent /hungarumlaut /ogonek
+  /fl /.notdef /.notdef /ff /fi /.notdef /ffi /ffl
+%10
+  /dotlessi /uni0237 /grave /acute /caron /breve /macron /ring
+  /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%20
+  /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+  /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%30
+  /zero /one /two /three /four /five /six /seven
+  /eight /nine /colon /semicolon /less /equal /greater /question
+%40
+  /at /A /B /C /D /E /F /G
+  /H /I /J /K /L /M /N /O
+%50
+  /P /Q /R /S /T /U /V /W
+  /X /Y /Z /bracketleft /backslash /bracketright /circumflex /underscore
+%60
+  /quoteleft /a /b /c /d /e /f /g
+  /h /i /j /k /l /m /n /o
+%70
+  /p /q /r /s /t /u /v /w
+  /x /y /z /braceleft /bar /braceright /tilde /dieresis
+%80
+  /Lslash /quotesingle /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
+  /.notdef /perthousand /Scaron /guilsinglleft /.notdef /Zcaron /asciicircum /minus
+%90
+  /lslash /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash
+  /.notdef /trademark /scaron /guilsinglright /.notdef /zcaron /asciitilde /Ydieresis
+%A0
+  /uni00A0 /exclamdown /cent /sterling /currency /yen /brokenbar /section
+  /.notdef /copyright /ordfeminine /guillemotleft /logicalnot /uni00AD /registered /.notdef
+%B0
+  /degree /plusminus /twosuperior /threesuperior /.notdef /mu /paragraph /periodcentered
+  /.notdef /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+%C0
+  /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /.notdef /Ccedilla
+  /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+%D0
+  /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+  /.notdef /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /.notdef
+%E0
+  /agrave /aacute /acircumflex /atilde /adieresis /aring /.notdef /ccedilla
+  /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+%F0
+  /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+  /.notdef /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+] def
+% Command line: 'c:\w32tex\bin\otftotfm -a -e texnansx -fkern -fliga
+% STIX-Bold.otf STBd'
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stix.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,12 @@
+\ProvidesFile{ls1stix.fd}[2012/12/23 STIX LS1 font definitions]
+
+\DeclareFontFamily{LS1}{stix}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stix}{m}{n} {<-> stix-mathrm}{}
+\DeclareFontShape{LS1}{stix}{m}{it}{<-> stix-mathit}{}
+\DeclareFontShape{LS1}{stix}{b}{n} {<-> stix-mathrm-bold}{}
+\DeclareFontShape{LS1}{stix}{b}{it}{<-> stix-mathit-bold}{}
+
+\DeclareFontShape{LS1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixbb.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixbb.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixbb.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,10 @@
+\ProvidesFile{ls1stixbb.fd}[2012/12/23 STIX blackboard LS1 font definitions]
+
+\DeclareFontFamily{LS1}{stixbb}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixbb}{m}{n} {<-> stix-mathbb}{}
+\DeclareFontShape{LS1}{stixbb}{m}{it}{<-> stix-mathbbit}{}
+\DeclareFontShape{LS1}{stixbb}{b}{n} {<-> stix-mathbb-bold}{}
+\DeclareFontShape{LS1}{stixbb}{b}{it}{<-> stix-mathbbit-bold}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixfrak.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixfrak.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixfrak.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,8 @@
+\ProvidesFile{ls1stixfrak.fd}[2012/12/23 STIX fraktur LS1 font definitions]
+
+\DeclareFontFamily{LS1}{stixfrak}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixfrak}{m}{n} {<-> stix-mathfrak}{}
+\DeclareFontShape{LS1}{stixfrak}{b}{n} {<-> stix-mathfrak-bold}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixscr.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixscr.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixscr.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,9 @@
+\ProvidesFile{ls1stixscr.fd}[2012/12/23 STIX script LS1 font definitions]
+
+\DeclareFontFamily{LS1}{stixscr}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixscr}{m}{n} {<-> stix-mathscr}{}
+\DeclareFontShape{LS1}{stixscr}{b}{n} {<-> stix-mathscr-bold}{}
+\DeclareFontShape{LS1}{stixscr}{bx}{n} {<->ssub * stixscr/b/n}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixsf.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixsf.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls1stixsf.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,12 @@
+\ProvidesFile{ls1stixsf.fd}[2012/12/23 STIX sans-serif LS1 font definitions]
+
+\DeclareFontFamily{LS1}{stixsf}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixsf}{m}{n} {<-> stix-mathsf}{}
+\DeclareFontShape{LS1}{stixsf}{m}{it}{<-> stix-mathsfit}{}
+\DeclareFontShape{LS1}{stixsf}{b}{n} {<-> stix-mathsf-bold}{}
+\DeclareFontShape{LS1}{stixsf}{b}{it}{<-> stix-mathsfit-bold}{}
+
+\DeclareFontShape{LS1}{stixsf}{bx}{it}{<->ssub * stixsf/b/it}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stix.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,12 @@
+\ProvidesFile{ls1stix.fd}[2012/12/23 STIX LS2 font definitions]
+
+\DeclareFontFamily{LS2}{stix}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stix}{m}{n} {<-> stix-mathrm}{}
+\DeclareFontShape{LS2}{stix}{m}{it}{<-> stix-mathit}{}
+\DeclareFontShape{LS2}{stix}{b}{n} {<-> stix-mathrm-bold}{}
+\DeclareFontShape{LS2}{stix}{b}{it}{<-> stix-mathit-bold}{}
+
+\DeclareFontShape{LS2}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stixcal.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stixcal.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stixcal.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,8 @@
+\ProvidesFile{ls1stixcal.fd}[2012/12/23 STIX calligraphic LS2 font definitions]
+
+\DeclareFontFamily{LS2}{stixcal}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stixcal}{m}{n} {<-> stix-mathcal}{}
+\DeclareFontShape{LS2}{stixcal}{b}{n} {<-> stix-mathcal-bold}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stixex.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stixex.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stixex.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,8 @@
+\ProvidesFile{ls1stixex.fd}[2012/12/23 STIX LS2 font definitions]
+
+\DeclareFontFamily{LS2}{stixex}{}
+
+\DeclareFontShape{LS2}{stixex}{m}{n} {<-> stix-mathex}{}
+\DeclareFontShape{LS2}{stixex}{b}{n} {<-> stix-mathex-bold}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stixtt.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stixtt.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ls2stixtt.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,8 @@
+\ProvidesFile{ls1stixtt.fd}[2012/12/23 STIX typewriter LS2 font definitions]
+
+\DeclareFontFamily{LS2}{stixtt}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stixtt}{m}{n} {<-> stix-mathtt}{}
+\DeclareFontShape{LS2}{stixtt}{b}{n} {<-> stix-mathtt-bold}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ly1sti.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ly1sti.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ly1sti.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,30 @@
+%Filename: ly1sti.fd
+%Created by: SPi Global 
+%Created Using: OTF to TFM Font Setup Wizard
+%Date: 8/22/2013
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ly1sti.fd}
+   [1998/07/06 Fontinst v1.800 font definitions for LY1/sti.]
+
+\DeclareFontFamily{LY1}{sti}{}
+\DeclareFontShape{LY1}{sti}{m}{n}{<-> StixReg}{}
+\DeclareFontShape{LY1}{sti}{m}{sl}{<-> StixIt}{}
+\DeclareFontShape{LY1}{sti}{m}{it}{<-> StixIt}{}
+\DeclareFontShape{LY1}{sti}{b}{n}{<-> StixBd}{}
+\DeclareFontShape{LY1}{sti}{b}{sl}{<-> StixBdIt}{}
+\DeclareFontShape{LY1}{sti}{b}{it}{<-> StixBdIt}{}
+
+\DeclareFontShape{LY1}{sti}{bx}{n}{<->ssub * sti/b/n}{}
+\DeclareFontShape{LY1}{sti}{bx}{sc}{<->ssub * sti/b/sc}{}
+\DeclareFontShape{LY1}{sti}{bx}{sl}{<->ssub * sti/b/sl}{}
+\DeclareFontShape{LY1}{sti}{bx}{it}{<->ssub * sti/b/it}{}
+
+\DeclareFontShape{LY1}{sti}{m}{ui}{<->ssub * sti/m/it}{}
+\DeclareFontShape{LY1}{sti}{b}{ui}{<->ssub * sti/b/it}{}
+\DeclareFontShape{LY1}{sti}{l}{sc}{<->ssub * sti/m/sc}{}
+
+\endinput
+
+
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ot1stix.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ot1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ot1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,21 @@
+\ProvidesFile{ot1stix.fd}[2012/12/23 STIX OT1 font definitions]
+
+\DeclareFontFamily{OT1}{stix}{}
+
+\DeclareFontShape{OT1}{stix}{m}{n} {<-> ot1-stixgeneral}{}
+\DeclareFontShape{OT1}{stix}{b}{n} {<-> ot1-stixgeneral-bold}{}
+\DeclareFontShape{OT1}{stix}{m}{it}{<-> ot1-stixgeneral-italic}{}
+\DeclareFontShape{OT1}{stix}{b}{it}{<-> ot1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{OT1}{stix}{m}{sc}{<-> ot1-stixgeneralsc}{}
+\DeclareFontShape{OT1}{stix}{b}{sc}{<-> ot1-stixgeneralsc-bold}{}
+
+\DeclareFontShape{OT1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{OT1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{OT1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{OT1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{OT1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{OT1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ot2stix.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ot2stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ot2stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,21 @@
+\ProvidesFile{ot2stix.fd}[2012/12/23 STIX OT2 font definitions]
+
+\DeclareFontFamily{OT2}{stix}{}
+
+\DeclareFontShape{OT2}{stix}{m}{n} {<-> ot2-stixgeneral}{}
+\DeclareFontShape{OT2}{stix}{b}{n} {<-> ot2-stixgeneral-bold}{}
+\DeclareFontShape{OT2}{stix}{m}{it}{<-> ot2-stixgeneral-italic}{}
+\DeclareFontShape{OT2}{stix}{b}{it}{<-> ot2-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{OT2}{stix}{m}{sc}{<-> ot2-stixgeneralsc}{}
+\DeclareFontShape{OT2}{stix}{b}{sc}{<-> ot2-stixgeneralsc-bold}{}
+
+\DeclareFontShape{OT2}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{OT2}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{OT2}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{OT2}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{OT2}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{OT2}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-extra1.enc
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-extra1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-extra1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,259 @@
+%!PS-Adobe-3.0 Resource-Encoding
+/stixextra [ 
+/uniE002
+/uniE003
+/uniE00A
+/uniE00B
+/uniE026
+/uniE027
+/uniE02F
+/uniE037
+/uniE038
+/uniE039
+/uniE040
+/uniE043
+/uniE044
+/uniE04D
+/uniE053
+/uniE054
+/uniE055
+/uniE056
+/uniE057
+/uniE05D
+/uniE05E
+/uniE061
+/uniE062
+/uniE063
+/uniE064
+/uniE065
+/uniE066
+/uniE067
+/uniE068
+/uniE06B
+/uniE06C
+/uniE06F
+/uniE070
+/uniE076
+/uniE077
+/uniE07D
+/uniE07E
+/uniE07F
+/uniE080
+/uniE081
+/uniE084
+/uniE085
+/uniE088
+/uniE089
+/uniE092
+/uniE093
+/uniE096
+/uniE097
+/uniE099
+/uniE09A
+/uniE09B
+/uniE09C
+/uniE09D
+/uniE09E
+/uniE0A2
+/uniE0A4
+/uniE0A5
+/uniE0A6
+/uniE0A7
+/uniE0A8
+/uniE0A9
+/uniE0AA
+/uniE0AB
+/uniE0AC
+/uniE0AD
+/uniE0AE
+/uniE0AF
+/uniE0B0
+/uniE0B1
+/uniE0B2
+/uniE0B3
+/uniE0B7
+/uniE0B8
+/uniE0B9
+/uniE0BB
+/uniE0BC
+/uniE0BD
+/uniE0BE
+/uniE0BF
+/uniE0C0
+/uniE0C1
+/uniE0C2
+/uniE0C3
+/uniE0C4
+/uniE0C5
+/uniE0C6
+/uniE0C7
+/uniE0C8
+/uniE0C9
+/uniE0CA
+/uniE0CB
+/uniE0CC
+/uniE0CD
+/uniE0CE
+/uniE0CF
+/uniE0D0
+/uniE0D1
+/uniE0D2
+/uniE0D3
+/uniE0D4
+/uniE0D5
+/uniE0D6
+/uniE0D7
+/uniE0D8
+/uniE0D9
+/uniE0DA
+/uniE0DB
+/uniE0DC
+/uniE0DD
+/uniE0DE
+/uniE0DF
+/uniE0E0
+/uniE0E1
+/uniE0E2
+/uniE0E3
+/uniE0E5
+/uniE0E6
+/uniE0E7
+/uniE0E8
+/uniE0E9
+/uniE0EA
+/uniE0EB
+/uniE0EC
+/uniE0ED
+/uniE0EE
+/uniE0EF
+/uniE0F1
+/uniE0F2
+/uniE0F3
+/uniE0F4
+/uniE0F5
+/uniE0F6
+/uniE0F7
+/uniE0F8
+/uniE0F9
+/uniE0FA
+/uniE0FB
+/uniE0FC
+/uniE0FD
+/uniE0FE
+/uniE0FF
+/uniE100
+/uniE101
+/uniE102
+/uniE103
+/uniE104
+/uniE105
+/uniE106
+/uniE107
+/uniE108
+/uniE109
+/uniE10A
+/uniE10C
+/uniE10D
+/uniE110
+/uniE111
+/uniE112
+/uniE113
+/uniE114
+/uniE115
+/uniE116
+/uniE117
+/uniE118
+/uniE119
+/uniE11A
+/uniE11B
+/uniE11C
+/uniE11D
+/uniE11E
+/uniE11F
+/uniE120
+/uniE121
+/uniE122
+/uniE123
+/uniE124
+/uniE125
+/uniE126
+/uniE127
+/uniE128
+/uniE129
+/uniE12A
+/uniE12B
+/uniE12C
+/uniE12D
+/uniE12E
+/uniE12F
+/uniE130
+/uniE131
+/uniE132
+/uniE133
+/uniE138
+/uniE139
+/uniE13A
+/uniE14A
+/uniE14B
+/uniE150
+/uniE151
+/uniE152
+/uniE153
+/uniE17D
+/uniE17E
+/uniE181
+/uniE182
+/uniE183
+/uniE185
+/uniE186
+/uniE188
+/uniE189
+/uniE18B
+/uniE18D
+/uniE18E
+/uniE190
+/uniE193
+/uniE1A4
+/uniE1B4
+/uniE1B5
+/uniE1B6
+/uniE1B7
+/uniE1B8
+/uniE1B9
+/uniE1BA
+/uniE1BB
+/uniE1BC
+/uniE1BD
+/uniE1BF
+/uniE1C0
+/uniE1C3
+/uniE1C4
+/uniE1C5
+/uniE1C7
+/uniE1C8
+/uniE1CA
+/uniE1CB
+/uniE1CD
+/uniE1CF
+/uniE1D0
+/uniE1D2
+/uniE1D5
+/uniE1E6
+/uniE1F6
+/uniE1F7
+/uniE1F8
+/uniE1F9
+/uniE1FA
+/uniE1FB
+/uniE1FC
+/uniE1FD
+/uniE1FE
+/uniE1FF
+/uniE217
+/uniE261
+/uniE262
+/uniE263
+/uniE264
+/uniE265
+/.notdef
+] def
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-extra2.enc
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-extra2.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-extra2.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,259 @@
+%!PS-Adobe-3.0 Resource-Encoding
+/stixextra2 [
+/uniE266
+/uniE267
+/uniE268
+/uniE269
+/uniE26A
+/uniE26B
+/uniE26C
+/uniE26D
+/uniE26E
+/uniE26F
+/uniE270
+/uniE271
+/uniE272
+/uniE273
+/uniE274
+/uniE275
+/uniE276
+/uniE277
+/uniE278
+/uniE279
+/uniE27A
+/uniE27B
+/uniE27C
+/uniE27D
+/uniE27E
+/uniE27F
+/uniE280
+/uniE281
+/uniE282
+/uniE283
+/uniE284
+/uniE285
+/uniE286
+/uniE287
+/uniE288
+/uniE28C
+/uniE28D
+/uniE28E
+/uniE28F
+/uniE290
+/uniE291
+/uniE292
+/uniE293
+/uniE294
+/uniE295
+/uniE296
+/uniE297
+/uniE298
+/uniE299
+/uniE29A
+/uniE29B
+/uniE29C
+/uniE29D
+/uniE29E
+/uniE29F
+/uniE2A0
+/uniE2A1
+/uniE2A2
+/uniE2A3
+/uniE2A4
+/uniE2A5
+/uniE2A6
+/uniE2A7
+/uniE2A8
+/uniE2A9
+/uniE2AA
+/uniE2AB
+/uniE2AC
+/uniE2AD
+/uniE2AE
+/uniE2AF
+/uniE2B0
+/uniE2B1
+/uniE2B2
+/uniE2B3
+/uniE2B4
+/uniE2B5
+/uniE2B6
+/uniE2B7
+/uniE2B8
+/uniE2B9
+/uniE2BA
+/uniE2BB
+/uniE2BC
+/uniE2BD
+/uniE2BE
+/uniE2BF
+/uniE2C0
+/uniE2C1
+/uniE2C2
+/uniE2C3
+/uniE2C4
+/uniE2C5
+/uniE2C6
+/uniE2C7
+/uniE2C8
+/uniE2C9
+/uniE2CA
+/uniE2CB
+/uniE2CC
+/uniE2CD
+/uniE2CE
+/uniE2CF
+/uniE2D0
+/uniE2D1
+/uniE2D2
+/uniE2D3
+/uniE2D4
+/uniE2D5
+/uniE2D6
+/uniE2D7
+/uniE2D8
+/uniE2D9
+/uniE2DA
+/uniE2DB
+/uniE2DC
+/uniE2DD
+/uniE2DE
+/uniE2DF
+/uniE2E0
+/uniE2E1
+/uniE2E2
+/uniE2E3
+/uniE2E4
+/uniE2E5
+/uniE2E6
+/uniE2E7
+/uniE2E8
+/uniE2E9
+/uniE2EA
+/uniE2EB
+/uniE2EC
+/uniE2ED
+/uniE2EE
+/uniE2EF
+/uniE2F0
+/uniE2F1
+/uniE2F2
+/uniE2F3
+/uniE2F4
+/uniE2F5
+/uniE2F6
+/uniE2F7
+/uniE2F8
+/uniE2F9
+/uniE2FA
+/uniE2FB
+/uniE2FC
+/uniE2FD
+/uniE2FE
+/uniE2FF
+/uniE300
+/uniE301
+/uniE302
+/uniE303
+/uniE304
+/uniE305
+/uniE306
+/uniE307
+/uniE308
+/uniE309
+/uniE30A
+/uniE30B
+/uniE30C
+/uniE30D
+/uniE30E
+/uniE30F
+/uniE310
+/uniE311
+/uniE312
+/uniE313
+/uniE314
+/uniE315
+/uniE316
+/uniE317
+/uniE318
+/uniE319
+/uniE31A
+/uniE31B
+/uniE31C
+/uniE31D
+/uniE31E
+/uniE31F
+/uniE320
+/uniE321
+/uniE322
+/uniE323
+/uniE324
+/uniE325
+/uniE326
+/uniE327
+/uniE328
+/uniE329
+/uniE32A
+/uniE32B
+/uniE32C
+/uniE32D
+/uniE32E
+/uniE32F
+/uniE330
+/uniE331
+/uniE332
+/uniE333
+/uniE334
+/uniE335
+/uniE336
+/uniE337
+/uniE338
+/uniE339
+/uniE33A
+/uniE33B
+/uniE33C
+/uniE33D
+/uniE33E
+/uniE33F
+/uniE340
+/uniE341
+/uniE342
+/uniE343
+/uniE344
+/uniE345
+/uniE346
+/uniE347
+/uniE348
+/uniE349
+/uniE34A
+/uniE34B
+/uniE34C
+/uniE34D
+/uniE34E
+/uniE34F
+/uniE350
+/uniE351
+/uniE352
+/uniE353
+/uniE354
+/uniE355
+/uniE356
+/uniE357
+/uniE358
+/uniE359
+/uniE35A
+/uniE35B
+/uniE35C
+/uniE35D
+/uniE35E
+/uniE35F
+/uniE360
+/uniE361
+/uniE362
+/uniE363
+/uniE364
+/uniE365
+/uniE366
+/uniE367
+/.notdef
+] def
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-extra3.enc
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-extra3.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-extra3.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,259 @@
+%!PS-Adobe-3.0 Resource-Encoding
+/stixextra3 [
+/uniE368
+/uniE369
+/uniE36A
+/uniE36B
+/uniE36C
+/uniE36D
+/uniE36E
+/uniE36F
+/uniE370
+/uniE371
+/uniE372
+/uniE373
+/uniE374
+/uniE375
+/uniE376
+/uniE377
+/uniE378
+/uniE379
+/uniE37A
+/uniE37B
+/uniE37C
+/uniE37D
+/uniE37E
+/uniE37F
+/uniE380
+/uniE381
+/uniE382
+/uniE383
+/uniE384
+/uniE385
+/uniE386
+/uniE387
+/uniE388
+/uniE389
+/uniE3B7
+/uniE3B8
+/uniE3B9
+/uniE3BA
+/uniE3BB
+/uniE3BC
+/uniE3BD
+/uniE3BE
+/uniE3BF
+/uniE3C0
+/uniE3C2
+/uniE3C3
+/uniE3C4
+/uniE3C5
+/uniE3C6
+/uniE3C7
+/uniE3C8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-ot1.enc
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-ot1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-ot1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,181 @@
+%!PS-Adobe-3.0 Resource-Encoding
+%
+/stixot1 [
+% 0x0
+/uni0393
+/uni0394
+/uni0398
+/uni039B
+/uni039E
+/uni03A0
+/uni03A3
+/uni03A5
+
+% 0x8
+/uni03A6
+/uni03A8
+/uni03A9
+/ff
+/fi
+/fl
+/ffi
+/ffl
+
+% 0x10
+/dotlessi
+/uni0237
+/grave
+/acute
+/caron
+/breve
+/macron
+/ring
+
+% 0x18
+/cedilla
+/germandbls
+/ae
+/oe
+/oslash
+/AE
+/OE
+/Oslash
+
+% 0x20
+/space
+/exclam
+/quotedblright
+/numbersign
+/dollar
+/percent
+/ampersand
+/quoteright
+
+% 0x28
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/hyphen
+/period
+/slash
+
+% 0x30
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+
+% 0x38
+/eight
+/nine
+/colon
+/semicolon
+/exclamdown
+/equal
+/questiondown
+/question
+
+% 0x40
+/at
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+
+% 0x48
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+
+% 0x50
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+
+% 0x58
+/X
+/Y
+/Z
+/bracketleft
+/quotedblleft
+/bracketright
+/circumflex
+/dotaccent
+
+% 0x60
+/quoteleft
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+
+% 0x68
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+
+% 0x70
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+
+% 0x78
+/x
+/y
+/z
+/endash
+/emdash
+/hungarumlaut
+/tilde
+/dieresis
+
+%80
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-ot2.enc
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-ot2.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-ot2.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,228 @@
+%!PS-Adobe-3.0 Resource-Encoding
+%
+% TeX text for Cyrillic languages (obsolete)
+% (WNCYR encoding)
+%
+/stixot2 [
+% '00x
+/uni040A        % U+040A CYRILLIC CAPITAL LETTER NJE
+/uni0409        % U+0409 CYRILLIC CAPITAL LETTER LJE
+/uni040F        % U+040F CYRILLIC CAPITAL LETTER DZHE
+/uni042D        % U+042D CYRILLIC CAPITAL LETTER E
+/uni0406        % U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+/uni0404        % U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE
+/uni0402        % U+0402 CYRILLIC CAPITAL LETTER DJE
+/uni040B        % U+040B CYRILLIC CAPITAL LETTER TSHE
+
+% '01x
+/uni045A        % U+045A CYRILLIC SMALL LETTER NJE
+/uni0459        % U+0459 CYRILLIC SMALL LETTER LJE
+/uni045F        % U+045F CYRILLIC SMALL LETTER DZHE
+/uni044D        % U+044D CYRILLIC SMALL LETTER E
+/uni0456        % U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+/uni0454        % U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE
+/uni0452        % U+0452 CYRILLIC SMALL LETTER DJE
+/uni045B        % U+045B CYRILLIC SMALL LETTER TSHE
+
+% '02x
+/uni042E        % U+042E CYRILLIC CAPITAL LETTER YU
+/uni0416        % U+0416 CYRILLIC CAPITAL LETTER ZHE
+/uni0419        % U+0419 CYRILLIC CAPITAL LETTER SHORT I
+/uni0401        % U+0401 CYRILLIC CAPITAL LETTER IO
+/uni0474        % U+0474 CYRILLIC CAPITAL LETTER IZHITSA
+/uni0472        % U+0472 CYRILLIC CAPITAL LETTER FITA
+/uni0405        % U+0405 CYRILLIC CAPITAL LETTER DZE
+/uni042F        % U+042F CYRILLIC CAPITAL LETTER YA
+
+% '03x
+/uni044E        % U+044E CYRILLIC SMALL LETTER YU
+/uni0436        % U+0436 CYRILLIC SMALL LETTER ZHE
+/uni0439        % U+0439 CYRILLIC SMALL LETTER SHORT I
+/uni0451        % U+0451 CYRILLIC SMALL LETTER IO
+/uni0475        % U+0475 CYRILLIC SMALL LETTER IZHITSA
+/uni0473        % U+0473 CYRILLIC SMALL LETTER FITA
+/uni0455        % U+0455 CYRILLIC SMALL LETTER DZE
+/uni044F        % U+044F CYRILLIC SMALL LETTER YA
+
+% '04x
+/dieresis
+/exclam
+/quotedblright
+/uni0462        % U+0462 CYRILLIC CAPITAL LETTER YAT
+/cyrbreve       % \cyrbreve???
+/percent
+/acute
+/quoteright
+
+% '05x
+/parenleft
+/parenright
+/asterisk
+/uni0463        % U+0463 CYRILLIC SMALL LETTER YAT
+/comma
+/hyphen
+/period
+/slash
+
+% '06x
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+
+% '07x
+/eight
+/nine
+/colon
+/semicolon
+/guillemotleft
+/dotlessi
+/guillemotright
+/question
+
+% '10x
+/breve
+/uni0410        % U+0410 CYRILLIC CAPITAL LETTER A
+/uni0411        % U+0411 CYRILLIC CAPITAL LETTER BE
+/uni0426        % U+0426 CYRILLIC CAPITAL LETTER TSE
+/uni0414        % U+0414 CYRILLIC CAPITAL LETTER DE
+/uni0415        % U+0415 CYRILLIC CAPITAL LETTER IE
+/uni0424        % U+0424 CYRILLIC CAPITAL LETTER EF
+/uni0413        % U+0413 CYRILLIC CAPITAL LETTER GHE
+
+% '11x
+/uni0425        % U+0425 CYRILLIC CAPITAL LETTER HA
+/uni0418        % U+0418 CYRILLIC CAPITAL LETTER I
+/uni0408        % U+0408 CYRILLIC CAPITAL LETTER JE
+/uni041A        % U+041A CYRILLIC CAPITAL LETTER KA
+/uni041B        % U+041B CYRILLIC CAPITAL LETTER EL
+/uni041C        % U+041C CYRILLIC CAPITAL LETTER EM
+/uni041D        % U+041D CYRILLIC CAPITAL LETTER EN
+/uni041E        % U+041E CYRILLIC CAPITAL LETTER O
+
+% '12x
+/uni041F        % U+041F CYRILLIC CAPITAL LETTER PE
+/uni0427        % U+0427 CYRILLIC CAPITAL LETTER CHE
+/uni0420        % U+0420 CYRILLIC CAPITAL LETTER ER
+/uni0421        % U+0421 CYRILLIC CAPITAL LETTER ES
+/uni0422        % U+0422 CYRILLIC CAPITAL LETTER TE
+/uni0423        % U+0423 CYRILLIC CAPITAL LETTER U
+/uni0412        % U+0412 CYRILLIC CAPITAL LETTER VE
+/uni0429        % U+0429 CYRILLIC CAPITAL LETTER SHCHA
+
+% '13x
+/uni0428        % U+0428 CYRILLIC CAPITAL LETTER SHA
+/uni042B        % U+042B CYRILLIC CAPITAL LETTER YERU
+/uni0417        % U+0417 CYRILLIC CAPITAL LETTER ZE
+/bracketleft
+/quotedblleft
+/bracketright
+/uni042C        % U+042C CYRILLIC CAPITAL LETTER SOFT SIGN
+/uni042A        % U+042A CYRILLIC CAPITAL LETTER HARD SIGN
+
+% '14x
+/quoteleft
+/uni0430        % U+0430 CYRILLIC SMALL LETTER A
+/uni0431        % U+0431 CYRILLIC SMALL LETTER BE
+/uni0446        % U+0446 CYRILLIC SMALL LETTER TSE
+/uni0434        % U+0434 CYRILLIC SMALL LETTER DE
+/uni0435        % U+0435 CYRILLIC SMALL LETTER IE
+/uni0444        % U+0444 CYRILLIC SMALL LETTER EF
+/uni0433        % U+0433 CYRILLIC SMALL LETTER GHE
+
+% '15x
+/uni0445        % U+0445 CYRILLIC SMALL LETTER HA
+/uni0438        % U+0438 CYRILLIC SMALL LETTER I
+/uni0458        % U+0458 CYRILLIC SMALL LETTER JE
+/uni043A        % U+043A CYRILLIC SMALL LETTER KA
+/uni043B        % U+043B CYRILLIC SMALL LETTER EL
+/uni043C        % U+043C CYRILLIC SMALL LETTER EM
+/uni043D        % U+043D CYRILLIC SMALL LETTER EN
+/uni043E        % U+043E CYRILLIC SMALL LETTER O
+
+% '16x
+/uni043F        % U+043F CYRILLIC SMALL LETTER PE
+/uni0447        % U+0447 CYRILLIC SMALL LETTER CHE
+/uni0440        % U+0440 CYRILLIC SMALL LETTER ER
+/uni0441        % U+0441 CYRILLIC SMALL LETTER ES
+/uni0442        % U+0442 CYRILLIC SMALL LETTER TE
+/uni0443        % U+0443 CYRILLIC SMALL LETTER U
+/uni0432        % U+0432 CYRILLIC SMALL LETTER VE
+/uni0449        % U+0449 CYRILLIC SMALL LETTER SHCHA
+
+% '17x
+/uni0448        % U+0448 CYRILLIC SMALL LETTER SHA
+/uni044B        % U+044B CYRILLIC SMALL LETTER YERU
+/uni0437        % U+0437 CYRILLIC SMALL LETTER ZE
+/endash
+/emdash
+/uni2116        % U+2116 NUMERO SIGN
+/uni044C        % U+044C CYRILLIC SMALL LETTER SOFT SIGN
+/uni044A        % U+044A CYRILLIC SMALL LETTER HARD SIGN
+
+% '20x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '21x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '22x
+/.notdef
+/.notdef
+/uni040E        % U+040E CYRILLIC CAPITAL LETTER SHORT U
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% '23x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '24x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '25x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '26x
+/.notdef
+/.notdef
+/uni045E        % U+045E CYRILLIC SMALL LETTER SHORT U
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% '27x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '30x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '31x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '32x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '33x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '34x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '35x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '36x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '37x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-t1.enc
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-t1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-t1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,260 @@
+%!PS-Adobe-3.0 Resource-Encoding
+%
+/stixt1 [
+/grave           % 0x00 U+0060
+/acute           % 0x01 U+00B4
+/circumflex      % 0x02 U+02C6
+/tilde           % 0x03 U+02DC
+/dieresis        % 0x04 U+00A8
+/hungarumlaut    % 0x05 U+02DD
+/ring            % 0x06 U+02DA
+/caron           % 0x07 U+02C7
+/breve           % 0x08 U+02D8
+/macron          % 0x09 U+00AF
+/dotaccent       % 0x0A U+02D9
+/cedilla         % 0x0B U+00B8
+/ogonek          % 0x0C U+02DB
+/quotesinglbase  % 0x0D U+201A
+/guilsinglleft   % 0x0E U+2039
+/guilsinglright  % 0x0F U+203A
+/quotedblleft    % 0x10 U+201C
+/quotedblright   % 0x11 U+201D
+/quotedblbase    % 0x12 U+201E
+/guillemotleft   % 0x13 U+00AB
+/guillemotright  % 0x14 U+00BB
+/endash          % 0x15 U+2013
+/emdash          % 0x16 U+2014
+/uni200B         % 0x17 U+200B was /cwm
+/perthousandzero % 0x18 ______
+/dotlessi        % 0x19 U+0131
+/uni0237         % 0x1A U+0237 was /dotlessj
+/ff              % 0x1B U+FB00
+/fi              % 0x1C U+FB01
+/fl              % 0x1D U+FB02
+/ffi             % 0x1E U+FB03
+/ffl             % 0x1F U+FB04
+/uni2423         % 0x20 U+2423 was /visiblespace
+/exclam          % 0x21
+/quotedbl        % 0x22
+/numbersign      % 0x23
+/dollar          % 0x24
+/percent         % 0x25
+/ampersand       % 0x26
+/quoteright      % 0x27 U+2019
+/parenleft       % 0x28
+/parenright      % 0x29
+/asterisk        % 0x2A
+/plus            % 0x2B
+/comma           % 0x2C
+/hyphen          % 0x2D
+/period          % 0x2E
+/slash           % 0x2F
+/zero            % 0x30
+/one             % 0x31
+/two             % 0x32
+/three           % 0x33
+/four            % 0x34
+/five            % 0x35
+/six             % 0x36
+/seven           % 0x37
+/eight           % 0x38
+/nine            % 0x39
+/colon           % 0x3A
+/semicolon       % 0x3B
+/less            % 0x3C
+/equal           % 0x3D
+/greater         % 0x3E
+/question        % 0x3F
+/at              % 0x40
+/A               % 0x41
+/B               % 0x42
+/C               % 0x43
+/D               % 0x44
+/E               % 0x45
+/F               % 0x46
+/G               % 0x47
+/H               % 0x48
+/I               % 0x49
+/J               % 0x4A
+/K               % 0x4B
+/L               % 0x4C
+/M               % 0x4D
+/N               % 0x4E
+/O               % 0x4F
+/P               % 0x50
+/Q               % 0x51
+/R               % 0x52
+/S               % 0x53
+/T               % 0x54
+/U               % 0x55
+/V               % 0x56
+/W               % 0x57
+/X               % 0x58
+/Y               % 0x59
+/Z               % 0x5A
+/bracketleft     % 0x5B
+/backslash       % 0x5C
+/bracketright    % 0x5D
+/asciicircum     % 0x5E
+/underscore      % 0x5F
+/quoteleft       % 0x60 U+2018
+/a               % 0x61
+/b               % 0x62
+/c               % 0x63
+/d               % 0x64
+/e               % 0x65
+/f               % 0x66
+/g               % 0x67
+/h               % 0x68
+/i               % 0x69
+/j               % 0x6A
+/k               % 0x6B
+/l               % 0x6C
+/m               % 0x6D
+/n               % 0x6E
+/o               % 0x6F
+/p               % 0x70
+/q               % 0x71
+/r               % 0x72
+/s               % 0x73
+/t               % 0x74
+/u               % 0x75
+/v               % 0x76
+/w               % 0x77
+/x               % 0x78
+/y               % 0x79
+/z               % 0x7A
+/braceleft       % 0x7B
+/bar             % 0x7C
+/braceright      % 0x7D
+/asciitilde      % 0x7E
+/uni2010         % 0x7F U+002D (explicit "hyphen char")
+/uni0102         % 0x80 U+0102
+/uni0104         % 0x81 U+0104
+/uni0106         % 0x82 U+0106
+/uni010C         % 0x83 U+010C
+/uni010E         % 0x84 U+010E
+/uni011A         % 0x85 U+011A
+/uni0118         % 0x86 U+0118
+/uni011E         % 0x87 U+011E
+/uni0139         % 0x88 U+0139
+/uni013D         % 0x89 U+013D
+/Lslash          % 0x8A U+0141
+/uni0143         % 0x8B U+0143
+/uni0147         % 0x8C U+0147
+/uni014A         % 0x8D U+014A
+/uni0150         % 0x8E U+0150
+/uni0154         % 0x8F U+0154
+/uni0158         % 0x90 U+0158
+/uni015A         % 0x91 U+015A
+/Scaron          % 0x92 U+0160
+/uni015E         % 0x93 U+015E
+/uni0164         % 0x94 U+0164
+/uni0162         % 0x95 U+0162
+/uni0170         % 0x96 U+0170
+/uni016E         % 0x97 U+016E
+/Ydieresis       % 0x98 U+0178
+/uni0179         % 0x99 U+0179
+/Zcaron          % 0x9A U+017D
+/uni017B         % 0x9B U+017B
+/uni0132         % 0x9C U+0132
+/uni0130         % 0x9D U+0130
+/uni0111         % 0x9E U+0111
+/section         % 0x9F U+00A7
+/uni0103         % 0xA0 U+0103
+/uni0105         % 0xA1 U+0105
+/uni0107         % 0xA2 U+0107
+/uni010D         % 0xA3 U+010D
+/uni010F         % 0xA4 U+010F
+/uni011B         % 0xA5 U+011B
+/uni0119         % 0xA6 U+0119
+/uni011F         % 0xA7 U+011F
+/uni013A         % 0xA8 U+013A
+/uni013E         % 0xA9 U+013E
+/lslash          % 0xAA U+0142
+/uni0144         % 0xAB U+0144
+/uni0148         % 0xAC U+0148
+/uni014B         % 0xAD U+014B
+/uni0151         % 0xAE U+0151
+/uni0155         % 0xAF U+0155
+/uni0159         % 0xB0 U+0159
+/uni015B         % 0xB1 U+015B
+/scaron          % 0xB2 U+0161
+/uni015F         % 0xB3 U+015F
+/uni0165         % 0xB4 U+0165
+/uni0163         % 0xB5 U+0163
+/uni0171         % 0xB6 U+0171
+/uni016F         % 0xB7 U+016F
+/ydieresis       % 0xB8 U+00FF
+/uni017A         % 0xB9 U+017A
+/zcaron          % 0xBA U+017E
+/uni017C         % 0xBB U+017C
+/uni0133         % 0xBC U+0133
+/exclamdown      % 0xBD U+00A1
+/questiondown    % 0xBE U+00BF
+/sterling        % 0xBF U+00A3
+/Agrave          % 0xC0
+/Aacute          % 0xC1
+/Acircumflex     % 0xC2
+/Atilde          % 0xC3
+/Adieresis       % 0xC4
+/Aring           % 0xC5
+/AE              % 0xC6
+/Ccedilla        % 0xC7
+/Egrave          % 0xC8
+/Eacute          % 0xC9
+/Ecircumflex     % 0xCA
+/Edieresis       % 0xCB
+/Igrave          % 0xCC
+/Iacute          % 0xCD
+/Icircumflex     % 0xCE
+/Idieresis       % 0xCF
+/Eth             % 0xD0
+/Ntilde          % 0xD1
+/Ograve          % 0xD2
+/Oacute          % 0xD3
+/Ocircumflex     % 0xD4
+/Otilde          % 0xD5
+/Odieresis       % 0xD6
+/OE              % 0xD7 U+0152
+/Oslash          % 0xD8
+/Ugrave          % 0xD9
+/Uacute          % 0xDA
+/Ucircumflex     % 0xDB
+/Udieresis       % 0xDC
+/Yacute          % 0xDD
+/Thorn           % 0xDE
+/uni1E9E         % 0xDF (U+1E9E, /S_S) was /Germandbls
+/agrave          % 0xE0
+/aacute          % 0xE1
+/acircumflex     % 0xE2
+/atilde          % 0xE3
+/adieresis       % 0xE4
+/aring           % 0xE5
+/ae              % 0xE6
+/ccedilla        % 0xE7
+/egrave          % 0xE8
+/eacute          % 0xE9
+/ecircumflex     % 0xEA
+/edieresis       % 0xEB
+/igrave          % 0xEC
+/iacute          % 0xED
+/icircumflex     % 0xEE
+/idieresis       % 0xEF
+/eth             % 0xF0
+/ntilde          % 0xF1
+/ograve          % 0xF2
+/oacute          % 0xF3
+/ocircumflex     % 0xF4
+/otilde          % 0xF5
+/odieresis       % 0xF6
+/oe              % 0xF7 U+0153
+/oslash          % 0xF8
+/ugrave          % 0xF9
+/uacute          % 0xFA
+/ucircumflex     % 0xFB
+/udieresis       % 0xFC
+/yacute          % 0xFD
+/thorn           % 0xFE
+/germandbls      % 0xFF U+00DF
+] def
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-ts1.enc
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-ts1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix-ts1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,322 @@
+%!PS-Adobe-3.0 Resource-Encoding
+/stixts1 [
+% 0x0
+/grave
+/acute
+/circumflex
+/tilde
+/dieresis
+/hungarumlaut
+/ring
+/caron
+
+% 0x8
+/breve
+/macron
+/dotaccent
+/cedilla
+/ogonek
+/quotesinglbase
+/.notdef
+/.notdef
+
+% 0x10
+/.notdef
+/.notdef
+/quotedblbase
+/.notdef
+/.notdef
+/twelveudash
+/threequartersemdash
+/capitalcompwordmark
+
+% 0x18
+/uni2190
+/uni2192
+/tieaccentlowercase
+/tieaccentcapital
+/newtieaccentlowercase
+/newtieaccentcapital
+/.notdef
+/ascendercompwordmark
+
+% 0x20
+/blank
+/.notdef
+/.notdef
+/.notdef
+/dollar
+/.notdef
+/.notdef
+/quotesingle
+
+% 0x28
+/.notdef
+/.notdef
+/uni2217
+/.notdef
+/comma
+/hyphendbl
+/period
+/fraction
+
+% 0x30
+/zero.oldstyle
+/one.oldstyle
+/two.oldstyle
+/three.oldstyle
+/four.oldstyle
+/five.oldstyle
+/six.oldstyle
+/seven.oldstyle
+
+% 0x38
+/eight.oldstyle
+/nine.oldstyle
+/.notdef
+/.notdef
+/uni27E8
+/minus
+/uni27E9
+/.notdef
+
+% 0x40
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0x48
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/uni2127
+/.notdef
+/uni25CB
+
+% 0x50
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/uni2126
+
+% 0x58
+/.notdef
+/.notdef
+/.notdef
+/uni27E6
+/.notdef
+/uni27E7
+/uni2191
+/uni2193
+
+% 0x60
+/grave
+/.notdef
+/born
+/divorced
+/died
+/.notdef
+/.notdef
+/.notdef
+
+% 0x68
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/leaf
+/married
+/uni266A
+/.notdef
+
+% 0x70
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0x78
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/uni0330
+/hyphendblchar
+
+% 0x80
+/breve
+/caron
+/hungarumlaut
+/uni030F % XXXX
+/dagger
+/daggerdbl
+/uni2016
+/perthousand
+
+% 0x88
+/bullet
+/centigrade
+/dollar
+/cent
+/florin
+/colonmonetary
+/won
+/naira
+
+% 0x90
+/guarani
+/peso
+/uni20A4
+/uni211E
+/interrobang
+/interrobangdown
+/dong
+/trademark
+
+% 0x98
+/uni2031
+/pilcrow
+/baht
+/uni2116
+/uni2052
+/uni212E
+/uni25E6
+/servicemark
+
+% 0xA0
+/quillbracketleft
+/quillbracketright
+/cent
+/sterling
+/currency
+/yen
+/brokenbar
+/section
+
+% 0xA8
+/dieresis
+/copyright
+/ordfeminine
+/copyleft
+/logicalnot
+/uni24C5
+/registered
+/macron
+
+% 0xB0
+/degree
+/plusminus
+/twosuperior
+/threesuperior
+/acute
+/mu
+/paragraph
+/periodcentered
+
+% 0xB8
+/uni203B
+/onesuperior
+/ordmasculine
+/uni221A
+/onequarter
+/onehalf
+/threequarters
+/uni20AC
+
+% 0xC0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0xC8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0xD0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/multiply
+/.notdef
+
+% 0xD8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0xE0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0xE8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0xF0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/divide
+/.notdef
+
+% 0xF8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.dtx
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.dtx	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.dtx	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,4269 @@
+% \iffalse
+%<*driver>
+\begingroup
+\input docstrip
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+Copyright (c) 2001-2013 by the STI Pub Companies, consisting of the
+American Chemical Society, the American Institute of Physics, the American
+Mathematical Society, the American Physical Society, Elsevier, Inc., and
+The Institute of Electrical and Electronic Engineers, Inc. Portions
+copyright (c) 1998-2003 by MicroPress, Inc. Portions copyright (c) 1990 by
+Elsevier, Inc. All rights reserved.
+
+This work may be distributed and/or modified under the conditions of the LaTeX
+Project Public License, either version 1.3 of this license or (at your option)
+any later version.  The latest version of this license is in
+  http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX version
+2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is the STI Pub Companies.
+
+This work consists of the files stix.dtx and and the derived file stix.sty.
+
+\endpreamble
+
+\generate{\file{stix.sty}{\from{stix.dtx}{package}}}
+
+\endgroup
+\ProvidesFile{stix.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{stix}
+%<*package>
+    [2015/04/17 v1.1.2-latex STIX fonts support package]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[lcgreekalpha]{stix}
+
+\usepackage{fonttable}
+% fonttable's oct and hex numbers (ab)uses \' and \H which look ugly with our
+% fonts, use primes instead
+\makeatletter
+\renewcommand*{\f@toct}[1]{\hbox{\lower.5ex\hbox{$^{'}$}\kern-.1em\itshape #1\/\kern.05em}}
+\renewcommand*{\f@thex}[1]{\hbox{\lower.5ex\hbox{$^{''}$}\ttfamily#1}}
+\newcommand{\hex}[1]{\f@thex{#1}}
+\makeatother
+
+\usepackage{geometry}
+\usepackage{accents}
+\usepackage{enumitem}
+\usepackage[
+  justification=raggedright,
+  font=normalsize,
+  singlelinecheck=false
+]{caption}
+\usepackage[
+  bookmarks=true,
+  colorlinks=true,
+  linkcolor=black,
+  urlcolor=black,
+  pdftitle={The stix package},
+  pdfauthor={STI Pub Companies},
+  pdfsubject={STIX fonts LaTeX support package},
+  pdfkeywords={STIX, Math, STI Pub}
+]{hyperref}
+
+\newcommand\pkg[1]{\textsf{#1}}
+\renewcommand\cmd[1]{\texttt{\string#1}}
+\newcommand\showsymbol[3]{\par\noindent\hangindent=3em%
+\makebox[2em][l]{$#1$} \makebox[3.5em][l]{\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showop[3]{\par\noindent\hangindent=6em%
+  \makebox[5em][l]{$#1$\hfill$\displaystyle#1$\hfill}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showmbrace[3]{\par\noindent\hangindent=6em%
+  \makebox[5em][l]{${#1}{\bigm#1}{\Bigm#1}{\biggm#1}{\Biggm#1}$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showlbrace[3]{\par\noindent\hangindent=6em%
+  \makebox[5em][l]{$\Biggl#1\biggl#1\Bigl#1\bigl#1#1$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showrbrace[3]{\par\noindent\hangindent=6em%
+  \makebox[5em][l]{$#1\bigr#1\Bigr#1\biggr#1\Biggr#1$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showwideaccent[3]{\par\noindent\hangindent=4em%
+  \makebox[3em][l]{$#1{xxx}$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showaccent[3]{\par\noindent\hangindent=4em%
+  \makebox[3em][l]{$#1b$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showover[3]{\par\noindent\hangindent=6em%
+  \makebox[5em][l]{$#1{xxxxxx}$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+
+\begin{document}
+  \DocInput{stix.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CharacterTable
+%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%   Digits        \0\1\2\3\4\5\6\7\8\9
+%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%   Dollar        \$     Percent       \%     Ampersand     \&
+%   Acute accent  \'     Left paren    \(     Right paren   \)
+%   Asterisk      \*     Plus          \+     Comma         \,
+%   Minus         \-     Point         \.     Solidus       \/
+%   Colon         \:     Semicolon     \;     Less than     \<
+%   Equals        \=     Greater than  \>     Question mark \?
+%   Commercial at \@     Left bracket  \[     Backslash     \\
+%   Right bracket \]     Circumflex    \^     Underscore    \_
+%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%   Right brace   \}     Tilde         \~}
+%
+%
+% \GetFileInfo{stix.dtx}
+%
+% \title{The \pkg{stix} package}
+% \author{STI Pub Companies}
+% \date{\fileversion~from \filedate}
+%
+% \maketitle
+% \tableofcontents
+%
+% \newpage
+%
+% \section{Introduction}
+%
+% The mission of the \emph{Scientific and Technical Information Exchange
+% (STIX)} font creation project is the preparation of a comprehensive set of
+% fonts that serve the scientific and engineering community in the process from
+% manuscript creation through final publication, both in electronic and print
+% formats.  Toward this purpose, the STIX fonts will be made available, under
+% royalty-free license, to anyone, including publishers, software developers,
+% scientists, students, and the general public.
+%
+% The STIX fonts are based on the Unicode standard for character
+% representation. Not all Unicode values are included in the STIX Fonts, but there is extensive
+% coverage of Latin alphabets, Greek, and Cyrillic. The Font contents were
+% assembled from a list of every character/glyph required for publication in
+% the journals of the participating STI Pub companies. Every scientific
+% discipline is represented in this list, as well as many other fields from the
+% arts and humanities.
+%
+% Most of the glyphs in the STIX Fonts have been designed in Times-compatible
+% style.
+%
+% The \pkg{stix} package provides \LaTeX\ support for using STIX fonts in both
+% text and math. The text fonts are provided in both |T1| (default) and |OT1|
+% encodings, as well as |TS1| symbol font encoding, which cover only a subset
+% of Latin characters supported by STIX fonts. The math support covers nearly every mathematical symbol in STIX fonts,
+% around 2400 symbols in 11 regular fonts, in addition to around 1950 symbols
+% in 10 bold fonts.  Section~\ref{math-alphabets} lists math alphabets supported
+% by the \pkg{stix} package, while section~\ref{math-symbols} lists all defined
+% math symbols. There are also three fonts containing extra miscellaneous symbols,
+% |stix-extra1|, |stix-extra2| and |stix-extra3|, provided as TFM and PFB files
+% without support from the macro package.
+%
+% \section{Usage}
+%
+% Using STIX fonts with \LaTeX\ is as simple as loading the \pkg{stix} package:
+% \begin{verbatim}
+% \documentclass{article}
+% \usepackage{stix}
+% \begin{document}
+% Some text, and a math formula \(a+b=\sqrt{c}\).
+% \end{document}
+% \end{verbatim}
+%
+% \subsection{Options}
+% \begin{description}[font=\ttfamily,style=nextline,leftmargin=2.5cm,noitemsep]
+% \item[notext] Do not change the default text fonts.
+% \item[nomath] Do not change the default math fonts.
+% \item[not1] Do not change the default font encoding to |T1|.
+% \item[notextcomp] Do not load the \pkg{textcomp} package (provides symbols
+%    and oldstyle figures from |TS1| encoding to be used with |T1| encoded text
+%    fonts).
+% \item[lcgreekalpha] By default lower case Greek, partial differential and
+%    nabla are given |\mathord| class which makes them insensitive to math
+%    alphabet changes (i.e. |$\mathbf{\beta}$| gives $\beta$ instead of
+%    $\mathbf{\beta}$); with this option they will be given |\mathalpha| class
+%    just like Latin and upper case Greek.
+% \item[upint] Use upright integrals by default ($\intup$ instead of
+%    $\intsl$). See Section~\ref{integrals} on page~\pageref{integrals} for
+%    more details.
+% \end{description}
+%
+% \subsection{Compatibility with other packages}
+% \subsubsection*{\pkg{amsmath}}
+% The \pkg{stix} package should be used with at least \pkg{amsmath} v2.14,
+% \pkg{amssymb} v3.01 and \pkg{amsfonts} v3.01.
+%
+% With \pkg{amsmath} v2.14 or newer, it is recommended to load it (and/or
+% packages that load it) \emph{after} the \pkg{stix} package. Older versions of
+% \pkg{amsmath} must be loaded \emph{before} the \pkg{stix} package, otherwise
+% errors will arise.
+%
+% The following \pkg{amsmath} options affect not only symbols known to
+% \pkg{amsmath}, but also new symbols defined by the \pkg{stix} package:
+% |sumlimits|, |nosumlimits|, |intlimits| and |nointlimits|.
+%
+% \subsection{Feedback}
+% Bug reports and technical support issues should be reported to
+% \url{http://sourceforge.net/projects/stixfonts}.
+%
+% \section{Math alphabets}
+% \label{math-alphabets}
+% The following table lists math alphabets defined by the \pkg{stix} package with the
+% Unicode ranges they cover:
+%
+% \begin{table}[h]
+% \setlength{\tabcolsep}{3.5pt}
+% \begin{tabular}{ c l c c c c c }
+%     &               & A--Z             & a--z             & $\Gamma$--$\Omega$ & $\mathrm{\alpha}$--$\mathrm{\omega}$ & 0--9 \\
+% \hline
+% $*$ & |\mathrm|     & |00041|--|0005A| & |00061|--|0007A| & |00393|--|003A9| & |003B1|--|003C9| & |00030|--|00039| \\
+% $*$ & |\mathbf|     & |1D400|--|1D419| & |1D41A|--|1D433| & |1D6AA|--|1D6C0| & |1D6C2|--|1D6DA| & |1D7CE|--|1D7D7| \\
+% $*$ & |\mathit|     & |1D434|--|1D44D| & |1D44E|--|1D467| & |1D6E4|--|1D6FA| & |1D6FC|--|1D714| &         -        \\
+%     & |\mathbfit|   & |1D468|--|1D481| & |1D482|--|1D49B| & |1D71E|--|1D734| & |1D736|--|1D74E| &         -        \\
+% $*$ & |\mathcal|    &    \textbullet   &        -         &         -        &         -        &         -        \\
+% $*$ & |\mathscr|    & |1D49C|--|1D4B5| & |1D4B6|--|1D4CF| &         -        &         -        &         -        \\
+%     & |\mathbfscr|  & |1D4D0|--|1D4E9| & |1D4EA|--|1D503| &         -        &         -        &         -        \\
+% $*$ & |\mathsf|     & |1D5A0|--|1D5B9| & |1D5BA|--|1D5D3| &    \textbullet   &    \textbullet   & |1D7E2|--|1D7EB| \\
+%     & |\mathbfsf|   & |1D5D4|--|1D5ED| & |1D5EE|--|1D607| & |1D758|--|1D76E| & |1D770|--|1D788| & |1D7EC|--|1D7F5| \\
+% $*$ & |\mathsfit|   & |1D608|--|1D621| & |1D622|--|1D63B| &    \textbullet   &    \textbullet   &         -        \\
+%     & |\mathbfsfit| & |1D63C|--|1D655| & |1D656|--|1D66F| & |1D792|--|1D7A8| & |1D7AA|--|1D7C2| &         -        \\
+% $*$ & |\mathbb|     & |1D538|--|1D551| & |1D552|--|1D56B| &         -        &         -        & |1D7D8|--|1D7E1| \\
+%     & |\mathbfbb|   &    \textbullet   &    \textbullet   &         -        &         -        &         -        \\
+% $*$ & |\mathbbit|   &    \textbullet   &    \textbullet   &         -        &         -        &         -        \\
+%     & |\mathbfbbit| &    \textbullet   &    \textbullet   &         -        &         -        &         -        \\
+% $*$ & |\mathfrak|   & |1D504|--|1D51D| & |1D51E|--|1D537| &         -        &         -        &         -        \\
+%     & |\mathbffrak| & |1D56C|--|1D585| & |1D586|--|1D59F| &         -        &         -        &         -        \\
+% $*$ & |\mathtt|     & |1D670|--|1D689| & |1D68A|--|1D6A3| &         -        &         -        & |1D7F6|--|1D7FF| \\
+% \hline
+% \end{tabular}
+% \caption*{
+%   \begin{tabular}{ c l }
+%   \textbullet & Covered by STIX fonts but not in Unicode.\\
+%   -           & Not covered.\\
+%   $*$         & Available by default when loading the \pkg{stix} package.\\
+%   \end{tabular}
+% }
+% \end{table}
+%
+%
+% \TeX\ allows only 16 math alphabets to be used simultaneously, so not all of
+% these alphabets can be used in one document. When the \pkg{stix} package is
+% loaded, 12 math groups are allocated, with the 11 math alphabets
+% that are marked above available by default, which leaves room for 4 other math groups to be
+% allocated on demand when any of the other alphabets is used.
+%
+% \newpage
+% \section{Math symbols}
+% \label{math-symbols}
+%
+% The following section lists all math symbols defined by the \pkg{stix} package.
+% Symbols with $^*$ next to their name do not have a bold version; when
+% |\boldmath| is active, the non-bold glyph will be used.
+%
+% \subsection{Alphabetics}
+% \begin{multicols}{2}
+% \showsymbol\Gamma{0393}{}
+% \showsymbol\Delta{0394}{}
+% \showsymbol\Theta{0398}{}
+% \showsymbol\Lambda{039B}{}
+% \showsymbol\Xi{039E}{}
+% \showsymbol\Pi{03A0}{}
+% \showsymbol\Sigma{03A3}{}
+% \showsymbol\Upsilon{03A5}{}
+% \showsymbol\Phi{03A6}{}
+% \showsymbol\Psi{03A8}{}
+% \showsymbol\Omega{03A9}{}
+% \showsymbol\alpha{03B1}{}
+% \showsymbol\beta{03B2}{}
+% \showsymbol\gamma{03B3}{}
+% \showsymbol\delta{03B4}{}
+% \showsymbol\epsilon{03B5}{}
+% \showsymbol\zeta{03B6}{}
+% \showsymbol\eta{03B7}{}
+% \showsymbol\theta{03B8}{}
+% \showsymbol\iota{03B9}{}
+% \showsymbol\kappa{03BA}{}
+% \showsymbol\lambda{03BB}{}
+% \showsymbol\mu{03BC}{}
+% \showsymbol\nu{03BD}{}
+% \showsymbol\xi{03BE}{}
+% \showsymbol\pi{03C0}{}
+% \showsymbol\rho{03C1}{}
+% \showsymbol\sigma{03C3}{}
+% \showsymbol\tau{03C4}{}
+% \showsymbol\upsilon{03C5}{}
+% \showsymbol\phi{03D5}{}
+% \showsymbol\chi{03C7}{}
+% \showsymbol\psi{03C8}{}
+% \showsymbol\omega{03C9}{}
+% \showsymbol\varepsilon{03F5}{}
+% \showsymbol\vartheta{03D1}{}
+% \showsymbol\varpi{03D6}{}
+% \showsymbol\varrho{03F1}{}
+% \showsymbol\varsigma{03C2}{}
+% \showsymbol\varphi{03C6}{}
+% \showsymbol\nabla{2207}{}
+% \showsymbol\partial{2202}{}
+% \showsymbol\imath{1D6A4}{}
+% \showsymbol\jmath{1D6A5}{}
+% \end{multicols}
+%
+% \subsection{Ordinary symbols}
+% \begin{multicols}{2}
+% \showsymbol\#{0023}{}
+% \showsymbol\mathdollar{0024}{}
+% \showsymbol\%{0025}{}
+% \showsymbol\&{0026}{}
+% \showsymbol.{002E}{}
+% \showsymbol/{002F}{}
+% \showsymbol?{003F}{}
+% \showsymbol@{0040}{}
+% \showsymbol\backslash{005C}{}
+% \showsymbol\mathsterling{00A3}{}
+% \showsymbol\mathsection{00A7}{}
+% \showsymbol\neg{00AC}{}, \cmd\lnot
+% \showsymbol\mathparagraph{00B6}{}
+% \showsymbol\eth{00F0}{}
+% \showsymbol\Zbar{01B5}{*}
+% \showsymbol\digamma{03DD}{}
+% \showsymbol\varkappa{03F0}{}
+% \showsymbol\backepsilon{03F6}{}
+% \showsymbol\upbackepsilon{03F6}{}
+% \showsymbol\enleadertwodots{2025}{}
+% \showsymbol\mathellipsis{2026}{}
+% \showsymbol\prime{2032}{}
+% \showsymbol\dprime{2033}{}
+% \showsymbol\trprime{2034}{}
+% \showsymbol\backprime{2035}{}
+% \showsymbol\backdprime{2036}{}
+% \showsymbol\backtrprime{2037}{}
+% \showsymbol\caretinsert{2038}{}
+% \showsymbol\Exclam{203C}{}
+% \showsymbol\hyphenbullet{2043}{*}
+% \showsymbol\Question{2047}{}
+% \showsymbol\qprime{2057}{}
+% \showsymbol\enclosecircle{20DD}{}
+% \showsymbol\enclosesquare{20DE}{*}
+% \showsymbol\enclosediamond{20DF}{*}
+% \showsymbol\enclosetriangle{20E4}{}
+% \showsymbol\Eulerconst{2107}{}
+% \showsymbol\hbar{210F}{*}
+% \showsymbol\hslash{210F}{}
+% \showsymbol\Im{2111}{}
+% \showsymbol\ell{2113}{}
+% \showsymbol\wp{2118}{}
+% \showsymbol\Re{211C}{}
+% \showsymbol\mho{2127}{}
+% \showsymbol\turnediota{2129}{}
+% \showsymbol\Angstrom{212B}{}
+% \showsymbol\Finv{2132}{}
+% \showsymbol\aleph{2135}{}
+% \showsymbol\beth{2136}{}
+% \showsymbol\gimel{2137}{}
+% \showsymbol\daleth{2138}{}
+% \showsymbol\Game{2141}{*}
+% \showsymbol\sansLturned{2142}{*}
+% \showsymbol\sansLmirrored{2143}{*}
+% \showsymbol\Yup{2144}{*}
+% \showsymbol\PropertyLine{214A}{*}
+% \showsymbol\updownarrowbar{21A8}{}
+% \showsymbol\linefeed{21B4}{}
+% \showsymbol\carriagereturn{21B5}{}
+% \showsymbol\barovernorthwestarrow{21B8}{}
+% \showsymbol\barleftarrowrightarrowbar{21B9}{}
+% \showsymbol\acwopencirclearrow{21BA}{}
+% \showsymbol\cwopencirclearrow{21BB}{}
+% \showsymbol\nHuparrow{21DE}{*}
+% \showsymbol\nHdownarrow{21DF}{*}
+% \showsymbol\leftdasharrow{21E0}{*}
+% \showsymbol\updasharrow{21E1}{*}
+% \showsymbol\rightdasharrow{21E2}{*}
+% \showsymbol\downdasharrow{21E3}{*}
+% \showsymbol\leftwhitearrow{21E6}{}
+% \showsymbol\upwhitearrow{21E7}{}
+% \showsymbol\rightwhitearrow{21E8}{}
+% \showsymbol\downwhitearrow{21E9}{}
+% \showsymbol\whitearrowupfrombar{21EA}{}
+% \showsymbol\forall{2200}{}
+% \showsymbol\complement{2201}{}
+% \showsymbol\exists{2203}{}
+% \showsymbol\nexists{2204}{}
+% \showsymbol\varnothing{2205}{}
+% \showsymbol\emptyset{2205}{}
+% \showsymbol\increment{2206}{}
+% \showsymbol\QED{220E}{*}
+% \showsymbol\infty{221E}{}
+% \showsymbol\rightangle{221F}{}
+% \showsymbol\angle{2220}{}
+% \showsymbol\measuredangle{2221}{}
+% \showsymbol\sphericalangle{2222}{}
+% \showsymbol\therefore{2234}{}
+% \showsymbol\because{2235}{}
+% \showsymbol\sinewave{223F}{}
+% \showsymbol\top{22A4}{}
+% \showsymbol\bot{22A5}{}
+% \showsymbol\hermitmatrix{22B9}{}
+% \showsymbol\measuredrightangle{22BE}{}
+% \showsymbol\varlrtriangle{22BF}{}
+% \showsymbol\cdots{22EF}{}
+% \showsymbol\diameter{2300}{*}
+% \showsymbol\house{2302}{}
+% \showsymbol\invnot{2310}{}
+% \showsymbol\sqlozenge{2311}{*}
+% \showsymbol\profline{2312}{*}
+% \showsymbol\profsurf{2313}{*}
+% \showsymbol\viewdata{2317}{*}
+% \showsymbol\turnednot{2319}{}
+% \showsymbol\varhexagonlrbonds{232C}{*}
+% \showsymbol\conictaper{2332}{*}
+% \showsymbol\topbot{2336}{}
+% \showsymbol\APLnotbackslash{2340}{*}
+% \showsymbol\APLboxupcaret{2353}{*}
+% \showsymbol\APLboxquestion{2370}{*}
+% \showsymbol\rangledownzigzagarrow{237C}{*}
+% \showsymbol\hexagon{2394}{*}
+% \showsymbol\bbrktbrk{23B6}{}
+% \showsymbol\varcarriagereturn{23CE}{*}
+% \showsymbol\obrbrak{23E0}{}
+% \showsymbol\ubrbrak{23E1}{}
+% \showsymbol\trapezium{23E2}{*}
+% \showsymbol\benzenr{23E3}{*}
+% \showsymbol\strns{23E4}{*}
+% \showsymbol\fltns{23E5}{*}
+% \showsymbol\accurrent{23E6}{*}
+% \showsymbol\elinters{23E7}{*}
+% \showsymbol\mathvisiblespace{2423}{}
+% \showsymbol\circledR{24C7}{}
+% \showsymbol\circledS{24C8}{}
+% \showsymbol\mdlgblksquare{25A0}{*}, \cmd\blacksquare
+% \showsymbol\mdlgwhtsquare{25A1}{*}, \cmd\square, \cmd\Box
+% \showsymbol\squoval{25A2}{*}
+% \showsymbol\blackinwhitesquare{25A3}{*}
+% \showsymbol\squarehfill{25A4}{*}
+% \showsymbol\squarevfill{25A5}{*}
+% \showsymbol\squarehvfill{25A6}{*}
+% \showsymbol\squarenwsefill{25A7}{*}
+% \showsymbol\squareneswfill{25A8}{*}
+% \showsymbol\squarecrossfill{25A9}{*}
+% \showsymbol\smblksquare{25AA}{*}
+% \showsymbol\smwhtsquare{25AB}{*}
+% \showsymbol\hrectangleblack{25AC}{*}
+% \showsymbol\hrectangle{25AD}{*}
+% \showsymbol\vrectangleblack{25AE}{*}
+% \showsymbol\vrectangle{25AF}{*}
+% \showsymbol\parallelogramblack{25B0}{*}
+% \showsymbol\parallelogram{25B1}{*}
+% \showsymbol\bigblacktriangleup{25B2}{*}
+% \showsymbol\blacktriangle{25B4}{*}
+% \showsymbol\blacktriangleright{25B6}{*}
+% \showsymbol\smallblacktriangleright{25B8}{*}
+% \showsymbol\smalltriangleright{25B9}{*}
+% \showsymbol\blackpointerright{25BA}{*}
+% \showsymbol\whitepointerright{25BB}{*}
+% \showsymbol\bigblacktriangledown{25BC}{*}
+% \showsymbol\bigtriangledown{25BD}{}
+% \showsymbol\blacktriangledown{25BE}{*}
+% \showsymbol\triangledown{25BF}{*}
+% \showsymbol\blacktriangleleft{25C0}{*}
+% \showsymbol\smallblacktriangleleft{25C2}{*}
+% \showsymbol\smalltriangleleft{25C3}{*}
+% \showsymbol\blackpointerleft{25C4}{*}
+% \showsymbol\whitepointerleft{25C5}{*}
+% \showsymbol\mdlgblkdiamond{25C6}{*}
+% \showsymbol\mdlgwhtdiamond{25C7}{*}
+% \showsymbol\blackinwhitediamond{25C8}{*}
+% \showsymbol\fisheye{25C9}{*}
+% \showsymbol\mdlgwhtlozenge{25CA}{}, \cmd\lozenge, \\ \cmd\Diamond
+% \showsymbol\dottedcircle{25CC}{*}
+% \showsymbol\circlevertfill{25CD}{*}
+% \showsymbol\bullseye{25CE}{*}
+% \showsymbol\mdlgblkcircle{25CF}{*}
+% \showsymbol\circlelefthalfblack{25D0}{*}
+% \showsymbol\circlerighthalfblack{25D1}{*}
+% \showsymbol\circlebottomhalfblack{25D2}{*}
+% \showsymbol\circletophalfblack{25D3}{*}
+% \showsymbol\circleurquadblack{25D4}{*}
+% \showsymbol\blackcircleulquadwhite{25D5}{*}
+% \showsymbol\blacklefthalfcircle{25D6}{*}
+% \showsymbol\blackrighthalfcircle{25D7}{*}
+% \showsymbol\inversebullet{25D8}{*}
+% \showsymbol\inversewhitecircle{25D9}{*}
+% \showsymbol\invwhiteupperhalfcircle{25DA}{*}
+% \showsymbol\invwhitelowerhalfcircle{25DB}{*}
+% \showsymbol\ularc{25DC}{*}
+% \showsymbol\urarc{25DD}{*}
+% \showsymbol\lrarc{25DE}{*}
+% \showsymbol\llarc{25DF}{*}
+% \showsymbol\topsemicircle{25E0}{*}
+% \showsymbol\botsemicircle{25E1}{*}
+% \showsymbol\lrblacktriangle{25E2}{*}
+% \showsymbol\llblacktriangle{25E3}{*}
+% \showsymbol\ulblacktriangle{25E4}{*}
+% \showsymbol\urblacktriangle{25E5}{*}
+% \showsymbol\circ{25E6}{}, \cmd\smwhtcircle
+% \showsymbol\squareleftblack{25E7}{*}
+% \showsymbol\squarerightblack{25E8}{*}
+% \showsymbol\squareulblack{25E9}{*}
+% \showsymbol\squarelrblack{25EA}{*}
+% \showsymbol\trianglecdot{25EC}{}
+% \showsymbol\triangleleftblack{25ED}{*}
+% \showsymbol\trianglerightblack{25EE}{*}
+% \showsymbol\lgwhtcircle{25EF}{*}
+% \showsymbol\squareulquad{25F0}{*}
+% \showsymbol\squarellquad{25F1}{*}
+% \showsymbol\squarelrquad{25F2}{*}
+% \showsymbol\squareurquad{25F3}{*}
+% \showsymbol\circleulquad{25F4}{*}
+% \showsymbol\circlellquad{25F5}{*}
+% \showsymbol\circlelrquad{25F6}{*}
+% \showsymbol\circleurquad{25F7}{*}
+% \showsymbol\ultriangle{25F8}{*}
+% \showsymbol\urtriangle{25F9}{*}
+% \showsymbol\lltriangle{25FA}{*}
+% \showsymbol\mdwhtsquare{25FB}{*}
+% \showsymbol\mdblksquare{25FC}{*}
+% \showsymbol\mdsmwhtsquare{25FD}{*}
+% \showsymbol\mdsmblksquare{25FE}{*}
+% \showsymbol\lrtriangle{25FF}{*}
+% \showsymbol\bigstar{2605}{*}
+% \showsymbol\bigwhitestar{2606}{*}
+% \showsymbol\astrosun{2609}{}
+% \showsymbol\danger{2621}{}
+% \showsymbol\blacksmiley{263B}{}
+% \showsymbol\sun{263C}{}
+% \showsymbol\rightmoon{263D}{}
+% \showsymbol\leftmoon{263E}{}
+% \showsymbol\female{2640}{}
+% \showsymbol\male{2642}{}
+% \showsymbol\spadesuit{2660}{*}
+% \showsymbol\heartsuit{2661}{*}
+% \showsymbol\diamondsuit{2662}{*}
+% \showsymbol\clubsuit{2663}{*}
+% \showsymbol\varspadesuit{2664}{}
+% \showsymbol\varheartsuit{2665}{}
+% \showsymbol\vardiamondsuit{2666}{}
+% \showsymbol\varclubsuit{2667}{}
+% \showsymbol\quarternote{2669}{}
+% \showsymbol\eighthnote{266A}{}
+% \showsymbol\twonotes{266B}{}
+% \showsymbol\flat{266D}{}
+% \showsymbol\natural{266E}{}
+% \showsymbol\sharp{266F}{}
+% \showsymbol\acidfree{267E}{*}
+% \showsymbol\dicei{2680}{}
+% \showsymbol\diceii{2681}{}
+% \showsymbol\diceiii{2682}{}
+% \showsymbol\diceiv{2683}{}
+% \showsymbol\dicev{2684}{}
+% \showsymbol\dicevi{2685}{}
+% \showsymbol\circledrightdot{2686}{}
+% \showsymbol\circledtwodots{2687}{}
+% \showsymbol\blackcircledrightdot{2688}{}
+% \showsymbol\blackcircledtwodots{2689}{}
+% \showsymbol\Hermaphrodite{26A5}{}
+% \showsymbol\mdwhtcircle{26AA}{}
+% \showsymbol\mdblkcircle{26AB}{}
+% \showsymbol\mdsmwhtcircle{26AC}{}
+% \showsymbol\neuter{26B2}{}
+% \showsymbol\checkmark{2713}{}
+% \showsymbol\maltese{2720}{}
+% \showsymbol\circledstar{272A}{}
+% \showsymbol\varstar{2736}{}
+% \showsymbol\dingasterisk{273D}{}
+% \showsymbol\draftingarrow{279B}{*}
+% \showsymbol\threedangle{27C0}{*}
+% \showsymbol\whiteinwhitetriangle{27C1}{*}
+% \showsymbol\subsetcirc{27C3}{*}
+% \showsymbol\supsetcirc{27C4}{*}
+% \showsymbol\diagup{27CB}{*}
+% \showsymbol\diagdown{27CD}{*}
+% \showsymbol\diamondcdot{27D0}{*}
+% \showsymbol\rdiagovfdiag{292B}{*}
+% \showsymbol\fdiagovrdiag{292C}{*}
+% \showsymbol\seovnearrow{292D}{*}
+% \showsymbol\neovsearrow{292E}{*}
+% \showsymbol\fdiagovnearrow{292F}{*}
+% \showsymbol\rdiagovsearrow{2930}{*}
+% \showsymbol\neovnwarrow{2931}{*}
+% \showsymbol\nwovnearrow{2932}{*}
+% \showsymbol\uprightcurvearrow{2934}{*}
+% \showsymbol\downrightcurvedarrow{2935}{*}
+% \showsymbol\mdsmblkcircle{2981}{*}
+% \showsymbol\fourvdots{2999}{*}
+% \showsymbol\vzigzag{299A}{*}
+% \showsymbol\measuredangleleft{299B}{*}
+% \showsymbol\rightanglesqr{299C}{*}
+% \showsymbol\rightanglemdot{299D}{*}
+% \showsymbol\angles{299E}{*}
+% \showsymbol\angdnr{299F}{*}
+% \showsymbol\gtlpar{29A0}{*}
+% \showsymbol\sphericalangleup{29A1}{*}
+% \showsymbol\turnangle{29A2}{*}
+% \showsymbol\revangle{29A3}{*}
+% \showsymbol\angleubar{29A4}{*}
+% \showsymbol\revangleubar{29A5}{*}
+% \showsymbol\wideangledown{29A6}{*}
+% \showsymbol\wideangleup{29A7}{*}
+% \showsymbol\measanglerutone{29A8}{*}
+% \showsymbol\measanglelutonw{29A9}{*}
+% \showsymbol\measanglerdtose{29AA}{*}
+% \showsymbol\measangleldtosw{29AB}{*}
+% \showsymbol\measangleurtone{29AC}{*}
+% \showsymbol\measangleultonw{29AD}{*}
+% \showsymbol\measangledrtose{29AE}{*}
+% \showsymbol\measangledltosw{29AF}{*}
+% \showsymbol\revemptyset{29B0}{*}
+% \showsymbol\emptysetobar{29B1}{*}
+% \showsymbol\emptysetocirc{29B2}{*}
+% \showsymbol\emptysetoarr{29B3}{*}
+% \showsymbol\emptysetoarrl{29B4}{*}
+% \showsymbol\obot{29BA}{*}
+% \showsymbol\olcross{29BB}{*}
+% \showsymbol\odotslashdot{29BC}{*}
+% \showsymbol\uparrowoncircle{29BD}{*}
+% \showsymbol\circledwhitebullet{29BE}{*}
+% \showsymbol\circledbullet{29BF}{*}
+% \showsymbol\cirscir{29C2}{*}
+% \showsymbol\cirE{29C3}{*}
+% \showsymbol\boxonbox{29C9}{*}
+% \showsymbol\triangleodot{29CA}{*}
+% \showsymbol\triangleubar{29CB}{*}
+% \showsymbol\triangles{29CC}{*}
+% \showsymbol\iinfin{29DC}{*}
+% \showsymbol\tieinfty{29DD}{*}
+% \showsymbol\nvinfty{29DE}{*}
+% \showsymbol\laplac{29E0}{*}
+% \showsymbol\thermod{29E7}{*}
+% \showsymbol\downtriangleleftblack{29E8}{*}
+% \showsymbol\downtrianglerightblack{29E9}{*}
+% \showsymbol\blackdiamonddownarrow{29EA}{*}
+% \showsymbol\blacklozenge{29EB}{}
+% \showsymbol\circledownarrow{29EC}{*}
+% \showsymbol\blackcircledownarrow{29ED}{*}
+% \showsymbol\errbarsquare{29EE}{*}
+% \showsymbol\errbarblacksquare{29EF}{*}
+% \showsymbol\errbardiamond{29F0}{*}
+% \showsymbol\errbarblackdiamond{29F1}{*}
+% \showsymbol\errbarcircle{29F2}{*}
+% \showsymbol\errbarblackcircle{29F3}{*}
+% \showsymbol\perps{2AE1}{}
+% \showsymbol\topcir{2AF1}{}
+% \showsymbol\squaretopblack{2B12}{}
+% \showsymbol\squarebotblack{2B13}{}
+% \showsymbol\squareurblack{2B14}{}
+% \showsymbol\squarellblack{2B15}{}
+% \showsymbol\diamondleftblack{2B16}{}
+% \showsymbol\diamondrightblack{2B17}{}
+% \showsymbol\diamondtopblack{2B18}{}
+% \showsymbol\diamondbotblack{2B19}{}
+% \showsymbol\dottedsquare{2B1A}{}
+% \showsymbol\lgblksquare{2B1B}{}
+% \showsymbol\lgwhtsquare{2B1C}{}
+% \showsymbol\vysmblksquare{2B1D}{}
+% \showsymbol\vysmwhtsquare{2B1E}{}
+% \showsymbol\pentagonblack{2B1F}{}
+% \showsymbol\pentagon{2B20}{}
+% \showsymbol\varhexagon{2B21}{}
+% \showsymbol\varhexagonblack{2B22}{}
+% \showsymbol\hexagonblack{2B23}{}
+% \showsymbol\lgblkcircle{2B24}{}
+% \showsymbol\mdblkdiamond{2B25}{}
+% \showsymbol\mdwhtdiamond{2B26}{}
+% \showsymbol\mdblklozenge{2B27}{}
+% \showsymbol\mdwhtlozenge{2B28}{}
+% \showsymbol\smblkdiamond{2B29}{}
+% \showsymbol\smblklozenge{2B2A}{}
+% \showsymbol\smwhtlozenge{2B2B}{}
+% \showsymbol\blkhorzoval{2B2C}{}
+% \showsymbol\whthorzoval{2B2D}{}
+% \showsymbol\blkvertoval{2B2E}{}
+% \showsymbol\whtvertoval{2B2F}{}
+% \showsymbol\medwhitestar{2B50}{}
+% \showsymbol\medblackstar{2B51}{}
+% \showsymbol\smwhitestar{2B52}{}
+% \showsymbol\rightpentagonblack{2B53}{}
+% \showsymbol\rightpentagon{2B54}{}
+% \showsymbol\postalmark{3012}{}
+% \showsymbol\hzigzag{3030}{}
+% \showsymbol\Bbbk{1D55C}{}
+% \showsymbol\bracevert{XXXX}{*}
+% \end{multicols}
+%
+% \subsection{Binary operators}
+% \begin{multicols}{2}
+% \showsymbol+{000B}{}
+% \showsymbol\pm{00B1}{}
+% \showsymbol\cdotp{00B7}{}, \cmd\centerdot
+% \showsymbol\times{00D7}{}
+% \showsymbol\div{00F7}{}
+% \showsymbol\dagger{2020}{}
+% \showsymbol\ddagger{2021}{}
+% \showsymbol\smblkcircle{2022}{}
+% \showsymbol\fracslash{2044}{}
+% \showsymbol\upand{214B}{}
+% \showsymbol-{000D}{}
+% \showsymbol\mp{2213}{}
+% \showsymbol\dotplus{2214}{}
+% \showsymbol\smallsetminus{2216}{}
+% \showsymbol\ast{2217}{}
+% \showsymbol\vysmwhtcircle{2218}{}
+% \showsymbol\vysmblkcircle{2219}{}, {\small\cmd\bullet}
+% \showsymbol\wedge{2227}{}, \cmd\land
+% \showsymbol\vee{2228}{}, \cmd\lor
+% \showsymbol\cap{2229}{}
+% \showsymbol\cup{222A}{}
+% \showsymbol\dotminus{2238}{}
+% \showsymbol\invlazys{223E}{}
+% \showsymbol\wr{2240}{}
+% \showsymbol\cupleftarrow{228C}{}
+% \showsymbol\cupdot{228D}{}
+% \showsymbol\uplus{228E}{}
+% \showsymbol\sqcap{2293}{}
+% \showsymbol\sqcup{2294}{}
+% \showsymbol\oplus{2295}{}
+% \showsymbol\ominus{2296}{}
+% \showsymbol\otimes{2297}{}
+% \showsymbol\oslash{2298}{}
+% \showsymbol\odot{2299}{}
+% \showsymbol\circledcirc{229A}{}
+% \showsymbol\circledast{229B}{}
+% \showsymbol\circledequal{229C}{}
+% \showsymbol\circleddash{229D}{}
+% \showsymbol\boxplus{229E}{}
+% \showsymbol\boxminus{229F}{}
+% \showsymbol\boxtimes{22A0}{}
+% \showsymbol\boxdot{22A1}{}
+% \showsymbol\intercal{22BA}{}
+% \showsymbol\veebar{22BB}{}
+% \showsymbol\barwedge{22BC}{}
+% \showsymbol\barvee{22BD}{}
+% \showsymbol\diamond{22C4}{}, \cmd\smwhtdiamond
+% \showsymbol\cdot{22C5}{*}
+% \showsymbol\star{22C6}{}
+% \showsymbol\divideontimes{22C7}{}
+% \showsymbol\ltimes{22C9}{}
+% \showsymbol\rtimes{22CA}{}
+% \showsymbol\leftthreetimes{22CB}{}
+% \showsymbol\rightthreetimes{22CC}{}
+% \showsymbol\curlyvee{22CE}{}
+% \showsymbol\curlywedge{22CF}{}
+% \showsymbol\Cap{22D2}{}, \cmd\doublecap
+% \showsymbol\Cup{22D3}{}, \cmd\doublecup
+% \showsymbol\varbarwedge{2305}{*}
+% \showsymbol\vardoublebarwedge{2306}{*}
+% \showsymbol\obar{233D}{}
+% \showsymbol\triangle{25B3}{}, \cmd\bigtriangleup
+% \showsymbol\lhd{22B2}{}
+% \showsymbol\rhd{22B3}{}
+% \showsymbol\unlhd{22B4}{}
+% \showsymbol\unrhd{22B5}{}
+% \showsymbol\mdlgwhtcircle{25CB}{*}
+% \showsymbol\boxbar{25EB}{*}
+% \showsymbol\veedot{27C7}{*}
+% \showsymbol\wedgedot{27D1}{*}
+% \showsymbol\lozengeminus{27E0}{*}
+% \showsymbol\concavediamond{27E1}{*}
+% \showsymbol\concavediamondtickleft{27E2}{*}
+% \showsymbol\concavediamondtickright{27E3}{*}
+% \showsymbol\whitesquaretickleft{27E4}{*}
+% \showsymbol\whitesquaretickright{27E5}{*}
+% \showsymbol\typecolon{2982}{*}
+% \showsymbol\circlehbar{29B5}{*}
+% \showsymbol\circledvert{29B6}{}
+% \showsymbol\circledparallel{29B7}{}
+% \showsymbol\obslash{29B8}{}
+% \showsymbol\operp{29B9}{*}
+% \showsymbol\olessthan{29C0}{}
+% \showsymbol\ogreaterthan{29C1}{}
+% \showsymbol\boxdiag{29C4}{}
+% \showsymbol\boxbslash{29C5}{}
+% \showsymbol\boxast{29C6}{}
+% \showsymbol\boxcircle{29C7}{}
+% \showsymbol\boxbox{29C8}{*}
+% \showsymbol\triangleserifs{29CD}{*}
+% \showsymbol\hourglass{29D6}{*}
+% \showsymbol\blackhourglass{29D7}{*}
+% \showsymbol\shuffle{29E2}{*}
+% \showsymbol\mdlgblklozenge{29EB}{*}
+% \showsymbol\setminus{29F5}{*}
+% \showsymbol\dsol{29F6}{*}
+% \showsymbol\rsolbar{29F7}{*}
+% \showsymbol\doubleplus{29FA}{*}
+% \showsymbol\tripleplus{29FB}{*}
+% \showsymbol\tplus{29FE}{*}
+% \showsymbol\tminus{29FF}{*}
+% \showsymbol\ringplus{2A22}{}
+% \showsymbol\plushat{2A23}{}
+% \showsymbol\simplus{2A24}{}
+% \showsymbol\plusdot{2A25}{}
+% \showsymbol\plussim{2A26}{}
+% \showsymbol\plussubtwo{2A27}{}
+% \showsymbol\plustrif{2A28}{*}
+% \showsymbol\commaminus{2A29}{*}
+% \showsymbol\minusdot{2A2A}{}
+% \showsymbol\minusfdots{2A2B}{}
+% \showsymbol\minusrdots{2A2C}{*}
+% \showsymbol\opluslhrim{2A2D}{*}
+% \showsymbol\oplusrhrim{2A2E}{*}
+% \showsymbol\vectimes{2A2F}{*}
+% \showsymbol\dottimes{2A30}{}
+% \showsymbol\timesbar{2A31}{}
+% \showsymbol\btimes{2A32}{}
+% \showsymbol\smashtimes{2A33}{*}
+% \showsymbol\otimeslhrim{2A34}{*}
+% \showsymbol\otimesrhrim{2A35}{*}
+% \showsymbol\otimeshat{2A36}{*}
+% \showsymbol\Otimes{2A37}{*}
+% \showsymbol\odiv{2A38}{*}
+% \showsymbol\triangleplus{2A39}{*}
+% \showsymbol\triangleminus{2A3A}{*}
+% \showsymbol\triangletimes{2A3B}{*}
+% \showsymbol\intprod{2A3C}{*}
+% \showsymbol\intprodr{2A3D}{*}
+% \showsymbol\fcmp{2A3E}{*}
+% \showsymbol\amalg{2A3F}{}
+% \showsymbol\capdot{2A40}{*}
+% \showsymbol\uminus{2A41}{*}
+% \showsymbol\barcup{2A42}{*}
+% \showsymbol\barcap{2A43}{*}
+% \showsymbol\capwedge{2A44}{*}
+% \showsymbol\cupvee{2A45}{*}
+% \showsymbol\cupovercap{2A46}{*}
+% \showsymbol\capovercup{2A47}{*}
+% \showsymbol\cupbarcap{2A48}{*}
+% \showsymbol\capbarcup{2A49}{*}
+% \showsymbol\twocups{2A4A}{*}
+% \showsymbol\twocaps{2A4B}{*}
+% \showsymbol\closedvarcup{2A4C}{*}
+% \showsymbol\closedvarcap{2A4D}{*}
+% \showsymbol\Sqcap{2A4E}{*}
+% \showsymbol\Sqcup{2A4F}{*}
+% \showsymbol\closedvarcupsmashprod{2A50}{*}
+% \showsymbol\wedgeodot{2A51}{*}
+% \showsymbol\veeodot{2A52}{*}
+% \showsymbol\Wedge{2A53}{*}
+% \showsymbol\Vee{2A54}{*}
+% \showsymbol\wedgeonwedge{2A55}{*}
+% \showsymbol\veeonvee{2A56}{*}
+% \showsymbol\bigslopedvee{2A57}{*}
+% \showsymbol\bigslopedwedge{2A58}{*}
+% \showsymbol\wedgemidvert{2A5A}{*}
+% \showsymbol\veemidvert{2A5B}{*}
+% \showsymbol\midbarwedge{2A5C}{*}
+% \showsymbol\midbarvee{2A5D}{*}
+% \showsymbol\doublebarwedge{2A5E}{}
+% \showsymbol\wedgebar{2A5F}{*}
+% \showsymbol\wedgedoublebar{2A60}{*}
+% \showsymbol\varveebar{2A61}{*}
+% \showsymbol\doublebarvee{2A62}{*}
+% \showsymbol\veedoublebar{2A63}{}
+% \showsymbol\dsub{2A64}{*}
+% \showsymbol\rsub{2A65}{*}
+% \showsymbol\eqqplus{2A71}{}
+% \showsymbol\pluseqq{2A72}{}
+% \showsymbol\interleave{2AF4}{}
+% \showsymbol\nhVvert{2AF5}{}
+% \showsymbol\threedotcolon{2AF6}{}
+% \showsymbol\trslash{2AFB}{}
+% \showsymbol\sslash{2AFD}{}
+% \showsymbol\talloblong{2AFE}{}
+% \end{multicols}
+%
+% \subsection{Relations}
+% \begin{multicols}{2}
+% \showsymbol*{002A}{}, \cmd\ast
+% \showsymbol:{003A}{}
+% \showsymbol<{003C}{}, \cmd\less
+% \showsymbol={003D}{}, \cmd\equal
+% \showsymbol>{003E}{}, \cmd\greater
+% \showsymbol\closure{2050}{*}
+% \showsymbol\vertoverlay{20D2}{}
+% \showsymbol\leftarrow{2190}{}, \cmd\gets
+% \showsymbol\uparrow{2191}{}
+% \showsymbol\rightarrow{2192}{}, \cmd\to
+% \showsymbol\downarrow{2193}{}
+% \showsymbol\leftrightarrow{2194}{}
+% \showsymbol\updownarrow{2195}{}
+% \showsymbol\nwarrow{2196}{}
+% \showsymbol\nearrow{2197}{}
+% \showsymbol\searrow{2198}{}
+% \showsymbol\swarrow{2199}{}
+% \showsymbol\nleftarrow{219A}{}
+% \showsymbol\nrightarrow{219B}{}
+% \showsymbol\leftwavearrow{219C}{}
+% \showsymbol\rightwavearrow{219D}{}
+% \showsymbol\twoheadleftarrow{219E}{}
+% \showsymbol\twoheaduparrow{219F}{}
+% \showsymbol\twoheadrightarrow{21A0}{}
+% \showsymbol\twoheaddownarrow{21A1}{}
+% \showsymbol\leftarrowtail{21A2}{}
+% \showsymbol\rightarrowtail{21A3}{}
+% \showsymbol\mapsfrom{21A4}{}
+% \showsymbol\mapsup{21A5}{}
+% \showsymbol\mapsto{21A6}{}
+% \showsymbol\mapsdown{21A7}{}
+% \showsymbol\hookleftarrow{21A9}{}
+% \showsymbol\hookrightarrow{21AA}{}
+% \showsymbol\looparrowleft{21AB}{}
+% \showsymbol\looparrowright{21AC}{}
+% \showsymbol\leftrightsquigarrow{21AD}{}
+% \showsymbol\nleftrightarrow{21AE}{}
+% \showsymbol\downzigzagarrow{21AF}{}
+% \showsymbol\Lsh{21B0}{}
+% \showsymbol\Rsh{21B1}{}
+% \showsymbol\Ldsh{21B2}{}
+% \showsymbol\Rdsh{21B3}{}
+% \showsymbol\curvearrowleft{21B6}{}
+% \showsymbol\curvearrowright{21B7}{}
+% \showsymbol\circlearrowleft{21BA}{}
+% \showsymbol\circlearrowright{21BB}{}
+% \showsymbol\leftharpoonup{21BC}{}
+% \showsymbol\leftharpoondown{21BD}{}
+% \showsymbol\upharpoonright{21BE}{}, \cmd\restriction
+% \showsymbol\upharpoonleft{21BF}{}
+% \showsymbol\rightharpoonup{21C0}{}
+% \showsymbol\rightharpoondown{21C1}{}
+% \showsymbol\downharpoonright{21C2}{}
+% \showsymbol\downharpoonleft{21C3}{}
+% \showsymbol\rightleftarrows{21C4}{}
+% \showsymbol\updownarrows{21C5}{}
+% \showsymbol\leftrightarrows{21C6}{}
+% \showsymbol\leftleftarrows{21C7}{}
+% \showsymbol\upuparrows{21C8}{}
+% \showsymbol\rightrightarrows{21C9}{}
+% \showsymbol\downdownarrows{21CA}{}
+% \showsymbol\leftrightharpoons{21CB}{}
+% \showsymbol\rightleftharpoons{21CC}{}
+% \showsymbol\nLeftarrow{21CD}{}
+% \showsymbol\nLeftrightarrow{21CE}{}
+% \showsymbol\nRightarrow{21CF}{}
+% \showsymbol\Leftarrow{21D0}{}
+% \showsymbol\Uparrow{21D1}{}
+% \showsymbol\Rightarrow{21D2}{}
+% \showsymbol\Downarrow{21D3}{}
+% \showsymbol\Leftrightarrow{21D4}{}
+% \showsymbol\Updownarrow{21D5}{}
+% \showsymbol\Nwarrow{21D6}{}
+% \showsymbol\Nearrow{21D7}{}
+% \showsymbol\Searrow{21D8}{}
+% \showsymbol\Swarrow{21D9}{}
+% \showsymbol\Lleftarrow{21DA}{*}
+% \showsymbol\Rrightarrow{21DB}{*}
+% \showsymbol\leftsquigarrow{21DC}{}
+% \showsymbol\rightsquigarrow{21DD}{}, \cmd\leadsto
+% \showsymbol\barleftarrow{21E4}{*}
+% \showsymbol\rightarrowbar{21E5}{*}
+% \showsymbol\circleonrightarrow{21F4}{*}
+% \showsymbol\downuparrows{21F5}{}
+% \showsymbol\rightthreearrows{21F6}{*}
+% \showsymbol\nvleftarrow{21F7}{*}
+% \showsymbol\nvrightarrow{21F8}{*}
+% \showsymbol\nvleftrightarrow{21F9}{*}
+% \showsymbol\nVleftarrow{21FA}{*}
+% \showsymbol\nVrightarrow{21FB}{*}
+% \showsymbol\nVleftrightarrow{21FC}{*}
+% \showsymbol\leftarrowtriangle{21FD}{*}
+% \showsymbol\rightarrowtriangle{21FE}{*}
+% \showsymbol\leftrightarrowtriangle{21FF}{*}
+% \showsymbol\in{2208}{}
+% \showsymbol\notin{2209}{}
+% \showsymbol\smallin{220A}{}
+% \showsymbol\ni{220B}{}, \cmd\owns
+% \showsymbol\nni{220C}{}
+% \showsymbol\smallni{220D}{}
+% \showsymbol\propto{221D}{}
+% \showsymbol\varpropto{221D}{}
+% \showsymbol\mid{2223}{}
+% \showsymbol\shortmid{2223}{}
+% \showsymbol\nmid{2224}{}
+% \showsymbol\nshortmid{2224}{*}
+% \showsymbol\parallel{2225}{}
+% \showsymbol\shortparallel{2225}{*}
+% \showsymbol\nparallel{2226}{}
+% \showsymbol\nshortparallel{2226}{*}
+% \showsymbol\Colon{2237}{}
+% \showsymbol\dashcolon{2239}{}
+% \showsymbol\dotsminusdots{223A}{}
+% \showsymbol\kernelcontraction{223B}{}
+% \showsymbol\sim{223C}{}
+% \showsymbol\thicksim{223C}{}
+% \showsymbol\backsim{223D}{}
+% \showsymbol\nsim{2241}{}
+% \showsymbol\eqsim{2242}{}
+% \showsymbol\simeq{2243}{}
+% \showsymbol\nsime{2244}{}
+% \showsymbol\cong{2245}{}
+% \showsymbol\simneqq{2246}{}
+% \showsymbol\ncong{2247}{}
+% \showsymbol\approx{2248}{}
+% \showsymbol\thickapprox{2248}{}
+% \showsymbol\napprox{2249}{}
+% \showsymbol\approxeq{224A}{}
+% \showsymbol\approxident{224B}{}
+% \showsymbol\backcong{224C}{}
+% \showsymbol\asymp{224D}{}
+% \showsymbol\Bumpeq{224E}{}
+% \showsymbol\bumpeq{224F}{}
+% \showsymbol\doteq{2250}{}
+% \showsymbol\Doteq{2251}{}, \cmd\doteqdot
+% \showsymbol\fallingdotseq{2252}{}
+% \showsymbol\risingdotseq{2253}{}
+% \showsymbol\coloneq{2254}{}
+% \showsymbol\eqcolon{2255}{}
+% \showsymbol\eqcirc{2256}{}
+% \showsymbol\circeq{2257}{}
+% \showsymbol\arceq{2258}{}
+% \showsymbol\wedgeq{2259}{}
+% \showsymbol\veeeq{225A}{}
+% \showsymbol\stareq{225B}{}
+% \showsymbol\triangleq{225C}{}
+% \showsymbol\eqdef{225D}{}
+% \showsymbol\measeq{225E}{}
+% \showsymbol\questeq{225F}{}
+% \showsymbol\ne{2260}{}, \cmd\neq
+% \showsymbol\equiv{2261}{}
+% \showsymbol\nequiv{2262}{}
+% \showsymbol\Equiv{2263}{}
+% \showsymbol\leq{2264}{}, \cmd\le
+% \showsymbol\geq{2265}{}, \cmd\ge
+% \showsymbol\leqq{2266}{}
+% \showsymbol\geqq{2267}{}
+% \showsymbol\lneqq{2268}{}
+% \showsymbol\lvertneqq{2268}{}
+% \showsymbol\gneqq{2269}{}
+% \showsymbol\gvertneqq{2269}{}
+% \showsymbol\ll{226A}{}
+% \showsymbol\gg{226B}{}
+% \showsymbol\between{226C}{}
+% \showsymbol\nasymp{226D}{}
+% \showsymbol\nless{226E}{}
+% \showsymbol\ngtr{226F}{}
+% \showsymbol\nleq{2270}{}
+% \showsymbol\ngeq{2271}{}
+% \showsymbol\lesssim{2272}{}
+% \showsymbol\gtrsim{2273}{}
+% \showsymbol\nlesssim{2274}{}
+% \showsymbol\ngtrsim{2275}{}
+% \showsymbol\lessgtr{2276}{}
+% \showsymbol\gtrless{2277}{}
+% \showsymbol\nlessgtr{2278}{}
+% \showsymbol\ngtrless{2279}{}
+% \showsymbol\prec{227A}{}
+% \showsymbol\succ{227B}{}
+% \showsymbol\preccurlyeq{227C}{}
+% \showsymbol\succcurlyeq{227D}{}
+% \showsymbol\precsim{227E}{}
+% \showsymbol\succsim{227F}{}
+% \showsymbol\nprec{2280}{}
+% \showsymbol\nsucc{2281}{}
+% \showsymbol\subset{2282}{}
+% \showsymbol\supset{2283}{}
+% \showsymbol\nsubset{2284}{}
+% \showsymbol\nsupset{2285}{}
+% \showsymbol\subseteq{2286}{}
+% \showsymbol\supseteq{2287}{}
+% \showsymbol\nsubseteq{2288}{}
+% \showsymbol\nsupseteq{2289}{}
+% \showsymbol\subsetneq{228A}{}
+% \showsymbol\varsubsetneq{228A}{*}
+% \showsymbol\supsetneq{228B}{}
+% \showsymbol\varsupsetneq{228B}{*}
+% \showsymbol\sqsubset{228F}{}
+% \showsymbol\sqsupset{2290}{}
+% \showsymbol\sqsubseteq{2291}{}
+% \showsymbol\sqsupseteq{2292}{}
+% \showsymbol\vdash{22A2}{}
+% \showsymbol\dashv{22A3}{}
+% \showsymbol\assert{22A6}{}
+% \showsymbol\models{22A7}{}
+% \showsymbol\vDash{22A8}{}
+% \showsymbol\Vdash{22A9}{}
+% \showsymbol\Vvdash{22AA}{}
+% \showsymbol\VDash{22AB}{}
+% \showsymbol\nvdash{22AC}{}
+% \showsymbol\nvDash{22AD}{}
+% \showsymbol\nVdash{22AE}{}
+% \showsymbol\nVDash{22AF}{}
+% \showsymbol\prurel{22B0}{}
+% \showsymbol\scurel{22B1}{}
+% \showsymbol\vartriangleleft{22B2}{}
+% \showsymbol\vartriangleright{22B3}{}
+% \showsymbol\trianglelefteq{22B4}{}
+% \showsymbol\trianglerighteq{22B5}{}
+% \showsymbol\origof{22B6}{}
+% \showsymbol\imageof{22B7}{}
+% \showsymbol\multimap{22B8}{}
+% \showsymbol\bowtie{22C8}{}
+% \showsymbol\backsimeq{22CD}{}
+% \showsymbol\Subset{22D0}{}
+% \showsymbol\Supset{22D1}{}
+% \showsymbol\pitchfork{22D4}{}
+% \showsymbol\equalparallel{22D5}{}
+% \showsymbol\lessdot{22D6}{}
+% \showsymbol\gtrdot{22D7}{}
+% \showsymbol\lll{22D8}{}, \cmd\llless
+% \showsymbol\ggg{22D9}{}, \cmd\gggtr
+% \showsymbol\lesseqgtr{22DA}{}
+% \showsymbol\gtreqless{22DB}{}
+% \showsymbol\eqless{22DC}{}
+% \showsymbol\eqgtr{22DD}{}
+% \showsymbol\curlyeqprec{22DE}{}
+% \showsymbol\curlyeqsucc{22DF}{}
+% \showsymbol\npreccurlyeq{22E0}{}
+% \showsymbol\nsucccurlyeq{22E1}{}
+% \showsymbol\nsqsubseteq{22E2}{}
+% \showsymbol\nsqsupseteq{22E3}{}
+% \showsymbol\sqsubsetneq{22E4}{*}
+% \showsymbol\sqsupsetneq{22E5}{*}
+% \showsymbol\lnsim{22E6}{}
+% \showsymbol\gnsim{22E7}{}
+% \showsymbol\precnsim{22E8}{}
+% \showsymbol\succnsim{22E9}{}
+% \showsymbol\nvartriangleleft{22EA}{}
+% \showsymbol\nvartriangleright{22EB}{}
+% \showsymbol\ntrianglelefteq{22EC}{}
+% \showsymbol\ntrianglerighteq{22ED}{}
+% \showsymbol\vdots{22EE}{}
+% \showsymbol\adots{22F0}{}
+% \showsymbol\ddots{22F1}{}
+% \showsymbol\disin{22F2}{*}
+% \showsymbol\varisins{22F3}{*}
+% \showsymbol\isins{22F4}{*}
+% \showsymbol\isindot{22F5}{*}
+% \showsymbol\varisinobar{22F6}{}
+% \showsymbol\isinobar{22F7}{*}
+% \showsymbol\isinvb{22F8}{*}
+% \showsymbol\isinE{22F9}{*}
+% \showsymbol\nisd{22FA}{*}
+% \showsymbol\varnis{22FB}{*}
+% \showsymbol\nis{22FC}{*}
+% \showsymbol\varniobar{22FD}{}
+% \showsymbol\niobar{22FE}{*}
+% \showsymbol\bagmember{22FF}{*}
+% \showsymbol\frown{2322}{}
+% \showsymbol\smallfrown{2322}{*}
+% \showsymbol\smile{2323}{}
+% \showsymbol\smallsmile{2323}{*}
+% \showsymbol\APLnotslash{233F}{}
+% \showsymbol\vartriangle{25B5}{*}
+% \showsymbol\perp{27C2}{*}
+% \showsymbol\bsolhsub{27C8}{}
+% \showsymbol\suphsol{27C9}{}
+% \showsymbol\upin{27D2}{*}
+% \showsymbol\pullback{27D3}{*}
+% \showsymbol\pushout{27D4}{*}
+% \showsymbol\DashVDash{27DA}{*}
+% \showsymbol\dashVdash{27DB}{*}
+% \showsymbol\multimapinv{27DC}{*}
+% \showsymbol\vlongdash{27DD}{*}
+% \showsymbol\longdashv{27DE}{*}
+% \showsymbol\cirbot{27DF}{*}
+% \showsymbol\UUparrow{27F0}{*}
+% \showsymbol\DDownarrow{27F1}{*}
+% \showsymbol\acwgapcirclearrow{27F2}{*}
+% \showsymbol\cwgapcirclearrow{27F3}{*}
+% \showsymbol\rightarrowonoplus{27F4}{*}
+% \showsymbol\longleftarrow{27F5}{*}
+% \showsymbol\longrightarrow{27F6}{*}
+% \showsymbol\longleftrightarrow{27F7}{*}
+% \showsymbol\Longleftarrow{27F8}{*}
+% \showsymbol\Longrightarrow{27F9}{*}
+% \showsymbol\Longleftrightarrow{27FA}{*}
+% \showsymbol\longmapsfrom{27FB}{*}
+% \showsymbol\longmapsto{27FC}{*}
+% \showsymbol\Longmapsfrom{27FD}{*}
+% \showsymbol\Longmapsto{27FE}{*}
+% \showsymbol\longrightsquigarrow{27FF}{*}
+% \showsymbol\nvtwoheadrightarrow{2900}{*}
+% \showsymbol\nVtwoheadrightarrow{2901}{*}
+% \showsymbol\nvLeftarrow{2902}{*}
+% \showsymbol\nvRightarrow{2903}{*}
+% \showsymbol\nvLeftrightarrow{2904}{*}
+% \showsymbol\twoheadmapsto{2905}{*}
+% \showsymbol\Mapsfrom{2906}{*}
+% \showsymbol\Mapsto{2907}{*}
+% \showsymbol\downarrowbarred{2908}{*}
+% \showsymbol\uparrowbarred{2909}{*}
+% \showsymbol\Uuparrow{290A}{*}
+% \showsymbol\Ddownarrow{290B}{*}
+% \showsymbol\leftbkarrow{290C}{*}
+% \showsymbol\rightbkarrow{290D}{*}
+% \showsymbol\leftdbkarrow{290E}{*}, \cmd\dashleftarrow
+% \showsymbol\dbkarow{290F}{*}, \cmd\dashrightarrow
+% \showsymbol\drbkarow{2910}{*}
+% \showsymbol\rightdotarrow{2911}{*}
+% \showsymbol\baruparrow{2912}{*}
+% \showsymbol\downarrowbar{2913}{*}
+% \showsymbol\nvrightarrowtail{2914}{*}
+% \showsymbol\nVrightarrowtail{2915}{*}
+% \showsymbol\twoheadrightarrowtail{2916}{*}
+% \showsymbol\nvtwoheadrightarrowtail{2917}{*}
+% \showsymbol\nVtwoheadrightarrowtail{2918}{*}
+% \showsymbol\lefttail{2919}{*}
+% \showsymbol\righttail{291A}{*}
+% \showsymbol\leftdbltail{291B}{*}
+% \showsymbol\rightdbltail{291C}{*}
+% \showsymbol\diamondleftarrow{291D}{*}
+% \showsymbol\rightarrowdiamond{291E}{*}
+% \showsymbol\diamondleftarrowbar{291F}{*}
+% \showsymbol\barrightarrowdiamond{2920}{*}
+% \showsymbol\nwsearrow{2921}{*}
+% \showsymbol\neswarrow{2922}{*}
+% \showsymbol\hknwarrow{2923}{*}
+% \showsymbol\hknearrow{2924}{*}
+% \showsymbol\hksearow{2925}{*}
+% \showsymbol\hkswarow{2926}{*}
+% \showsymbol\tona{2927}{*}
+% \showsymbol\toea{2928}{*}
+% \showsymbol\tosa{2929}{*}
+% \showsymbol\towa{292A}{*}
+% \showsymbol\rightcurvedarrow{2933}{*}
+% \showsymbol\leftdowncurvedarrow{2936}{*}
+% \showsymbol\rightdowncurvedarrow{2937}{*}
+% \showsymbol\cwrightarcarrow{2938}{*}
+% \showsymbol\acwleftarcarrow{2939}{*}
+% \showsymbol\acwoverarcarrow{293A}{*}
+% \showsymbol\acwunderarcarrow{293B}{*}
+% \showsymbol\curvearrowrightminus{293C}{*}
+% \showsymbol\curvearrowleftplus{293D}{*}
+% \showsymbol\cwundercurvearrow{293E}{*}
+% \showsymbol\ccwundercurvearrow{293F}{*}
+% \showsymbol\acwcirclearrow{2940}{*}
+% \showsymbol\cwcirclearrow{2941}{*}
+% \showsymbol\rightarrowshortleftarrow{2942}{*}
+% \showsymbol\leftarrowshortrightarrow{2943}{*}
+% \showsymbol\shortrightarrowleftarrow{2944}{*}
+% \showsymbol\rightarrowplus{2945}{*}
+% \showsymbol\leftarrowplus{2946}{*}
+% \showsymbol\rightarrowx{2947}{*}
+% \showsymbol\leftrightarrowcircle{2948}{*}
+% \showsymbol\twoheaduparrowcircle{2949}{*}
+% \showsymbol\leftrightharpoonupdown{294A}{*}
+% \showsymbol\leftrightharpoondownup{294B}{*}
+% \showsymbol\updownharpoonrightleft{294C}{*}
+% \showsymbol\updownharpoonleftright{294D}{*}
+% \showsymbol\leftrightharpoonupup{294E}{*}
+% \showsymbol\updownharpoonrightright{294F}{*}
+% \showsymbol\leftrightharpoondowndown{2950}{*}
+% \showsymbol\updownharpoonleftleft{2951}{*}
+% \showsymbol\barleftharpoonup{2952}{*}
+% \showsymbol\rightharpoonupbar{2953}{*}
+% \showsymbol\barupharpoonright{2954}{*}
+% \showsymbol\downharpoonrightbar{2955}{*}
+% \showsymbol\barleftharpoondown{2956}{*}
+% \showsymbol\rightharpoondownbar{2957}{*}
+% \showsymbol\barupharpoonleft{2958}{*}
+% \showsymbol\downharpoonleftbar{2959}{*}
+% \showsymbol\leftharpoonupbar{295A}{*}
+% \showsymbol\barrightharpoonup{295B}{*}
+% \showsymbol\upharpoonrightbar{295C}{*}
+% \showsymbol\bardownharpoonright{295D}{*}
+% \showsymbol\leftharpoondownbar{295E}{*}
+% \showsymbol\barrightharpoondown{295F}{*}
+% \showsymbol\upharpoonleftbar{2960}{*}
+% \showsymbol\bardownharpoonleft{2961}{*}
+% \showsymbol\leftharpoonsupdown{2962}{*}
+% \showsymbol\upharpoonsleftright{2963}{*}
+% \showsymbol\rightharpoonsupdown{2964}{*}
+% \showsymbol\downharpoonsleftright{2965}{*}
+% \showsymbol\leftrightharpoonsup{2966}{*}
+% \showsymbol\leftrightharpoonsdown{2967}{*}
+% \showsymbol\rightleftharpoonsup{2968}{*}
+% \showsymbol\rightleftharpoonsdown{2969}{*}
+% \showsymbol\leftharpoonupdash{296A}{*}
+% \showsymbol\dashleftharpoondown{296B}{*}
+% \showsymbol\rightharpoonupdash{296C}{*}
+% \showsymbol\dashrightharpoondown{296D}{*}
+% \showsymbol\updownharpoonsleftright{296E}{*}
+% \showsymbol\downupharpoonsleftright{296F}{*}
+% \showsymbol\rightimply{2970}{*}
+% \showsymbol\equalrightarrow{2971}{*}
+% \showsymbol\similarrightarrow{2972}{*}
+% \showsymbol\leftarrowsimilar{2973}{*}
+% \showsymbol\rightarrowsimilar{2974}{*}
+% \showsymbol\rightarrowapprox{2975}{*}
+% \showsymbol\ltlarr{2976}{*}
+% \showsymbol\leftarrowless{2977}{*}
+% \showsymbol\gtrarr{2978}{*}
+% \showsymbol\subrarr{2979}{*}
+% \showsymbol\leftarrowsubset{297A}{*}
+% \showsymbol\suplarr{297B}{*}
+% \showsymbol\leftfishtail{297C}{*}
+% \showsymbol\rightfishtail{297D}{*}
+% \showsymbol\upfishtail{297E}{*}
+% \showsymbol\downfishtail{297F}{*}
+% \showsymbol\rtriltri{29CE}{*}
+% \showsymbol\ltrivb{29CF}{*}
+% \showsymbol\vbrtri{29D0}{*}
+% \showsymbol\lfbowtie{29D1}{*}
+% \showsymbol\rfbowtie{29D2}{*}
+% \showsymbol\fbowtie{29D3}{*}
+% \showsymbol\lftimes{29D4}{*}
+% \showsymbol\rftimes{29D5}{*}
+% \showsymbol\dualmap{29DF}{*}
+% \showsymbol\lrtriangleeq{29E1}{*}
+% \showsymbol\eparsl{29E3}{*}
+% \showsymbol\smeparsl{29E4}{*}
+% \showsymbol\eqvparsl{29E5}{*}
+% \showsymbol\gleichstark{29E6}{*}
+% \showsymbol\ruledelayed{29F4}{*}
+% \showsymbol\veeonwedge{2A59}{*}
+% \showsymbol\eqdot{2A66}{}
+% \showsymbol\dotequiv{2A67}{}
+% \showsymbol\equivVert{2A68}{*}
+% \showsymbol\equivVvert{2A69}{*}
+% \showsymbol\dotsim{2A6A}{}
+% \showsymbol\simrdots{2A6B}{*}
+% \showsymbol\simminussim{2A6C}{*}
+% \showsymbol\congdot{2A6D}{}
+% \showsymbol\asteq{2A6E}{}
+% \showsymbol\hatapprox{2A6F}{}
+% \showsymbol\approxeqq{2A70}{}
+% \showsymbol\eqqsim{2A73}{}
+% \showsymbol\Coloneq{2A74}{*}
+% \showsymbol\eqeq{2A75}{*}
+% \showsymbol\eqeqeq{2A76}{*}
+% \showsymbol\ddotseq{2A77}{*}
+% \showsymbol\equivDD{2A78}{*}
+% \showsymbol\ltcir{2A79}{*}
+% \showsymbol\gtcir{2A7A}{*}
+% \showsymbol\ltquest{2A7B}{*}
+% \showsymbol\gtquest{2A7C}{*}
+% \showsymbol\leqslant{2A7D}{}
+% \showsymbol\geqslant{2A7E}{}
+% \showsymbol\lesdot{2A7F}{*}
+% \showsymbol\gesdot{2A80}{*}
+% \showsymbol\lesdoto{2A81}{*}
+% \showsymbol\gesdoto{2A82}{*}
+% \showsymbol\lesdotor{2A83}{*}
+% \showsymbol\gesdotol{2A84}{*}
+% \showsymbol\lessapprox{2A85}{*}
+% \showsymbol\gtrapprox{2A86}{*}
+% \showsymbol\lneq{2A87}{}
+% \showsymbol\gneq{2A88}{}
+% \showsymbol\lnapprox{2A89}{}
+% \showsymbol\gnapprox{2A8A}{}
+% \showsymbol\lesseqqgtr{2A8B}{*}
+% \showsymbol\gtreqqless{2A8C}{*}
+% \showsymbol\lsime{2A8D}{*}
+% \showsymbol\gsime{2A8E}{*}
+% \showsymbol\lsimg{2A8F}{*}
+% \showsymbol\gsiml{2A90}{*}
+% \showsymbol\lgE{2A91}{*}
+% \showsymbol\glE{2A92}{*}
+% \showsymbol\lesges{2A93}{*}
+% \showsymbol\gesles{2A94}{*}
+% \showsymbol\eqslantless{2A95}{}
+% \showsymbol\eqslantgtr{2A96}{}
+% \showsymbol\elsdot{2A97}{*}
+% \showsymbol\egsdot{2A98}{*}
+% \showsymbol\eqqless{2A99}{*}
+% \showsymbol\eqqgtr{2A9A}{*}
+% \showsymbol\eqqslantless{2A9B}{*}
+% \showsymbol\eqqslantgtr{2A9C}{*}
+% \showsymbol\simless{2A9D}{}
+% \showsymbol\simgtr{2A9E}{}
+% \showsymbol\simlE{2A9F}{*}
+% \showsymbol\simgE{2AA0}{*}
+% \showsymbol\Lt{2AA1}{*}
+% \showsymbol\Gt{2AA2}{*}
+% \showsymbol\partialmeetcontraction{2AA3}{*}
+% \showsymbol\glj{2AA4}{*}
+% \showsymbol\gla{2AA5}{*}
+% \showsymbol\ltcc{2AA6}{*}
+% \showsymbol\gtcc{2AA7}{*}
+% \showsymbol\lescc{2AA8}{*}
+% \showsymbol\gescc{2AA9}{*}
+% \showsymbol\smt{2AAA}{*}
+% \showsymbol\lat{2AAB}{*}
+% \showsymbol\smte{2AAC}{*}
+% \showsymbol\late{2AAD}{*}
+% \showsymbol\bumpeqq{2AAE}{*}
+% \showsymbol\preceq{2AAF}{}
+% \showsymbol\npreceq{XXXX}{*}
+% \showsymbol\succeq{2AB0}{}
+% \showsymbol\nsucceq{XXXX}{*}
+% \showsymbol\precneq{2AB1}{*}
+% \showsymbol\succneq{2AB2}{*}
+% \showsymbol\preceqq{2AB3}{*}
+% \showsymbol\succeqq{2AB4}{*}
+% \showsymbol\precneqq{2AB5}{*}
+% \showsymbol\succneqq{2AB6}{*}
+% \showsymbol\precapprox{2AB7}{*}
+% \showsymbol\succapprox{2AB8}{*}
+% \showsymbol\precnapprox{2AB9}{*}
+% \showsymbol\succnapprox{2ABA}{*}
+% \showsymbol\Prec{2ABB}{*}
+% \showsymbol\Succ{2ABC}{*}
+% \showsymbol\subsetdot{2ABD}{}
+% \showsymbol\supsetdot{2ABE}{}
+% \showsymbol\subsetplus{2ABF}{*}
+% \showsymbol\supsetplus{2AC0}{*}
+% \showsymbol\submult{2AC1}{*}
+% \showsymbol\supmult{2AC2}{*}
+% \showsymbol\subedot{2AC3}{*}
+% \showsymbol\supedot{2AC4}{*}
+% \showsymbol\subseteqq{2AC5}{}
+% \showsymbol\nsubseteqq{XXXX}{*}
+% \showsymbol\supseteqq{2AC6}{}
+% \showsymbol\nsupseteqq{XXXX}{*}
+% \showsymbol\subsim{2AC7}{*}
+% \showsymbol\supsim{2AC8}{*}
+% \showsymbol\subsetapprox{2AC9}{*}
+% \showsymbol\supsetapprox{2ACA}{*}
+% \showsymbol\subsetneqq{2ACB}{}
+% \showsymbol\varsubsetneqq{2ACB}{*}
+% \showsymbol\supsetneqq{2ACC}{}
+% \showsymbol\varsupsetneqq{2ACC}{*}
+% \showsymbol\lsqhook{2ACD}{}
+% \showsymbol\rsqhook{2ACE}{}
+% \showsymbol\csub{2ACF}{}
+% \showsymbol\csup{2AD0}{}
+% \showsymbol\csube{2AD1}{}
+% \showsymbol\csupe{2AD2}{}
+% \showsymbol\subsup{2AD3}{}
+% \showsymbol\supsub{2AD4}{}
+% \showsymbol\subsub{2AD5}{}
+% \showsymbol\supsup{2AD6}{}
+% \showsymbol\suphsub{2AD7}{}
+% \showsymbol\supdsub{2AD8}{}
+% \showsymbol\forkv{2AD9}{}
+% \showsymbol\topfork{2ADA}{}
+% \showsymbol\mlcp{2ADB}{}
+% \showsymbol\forks{2ADC}{}
+% \showsymbol\forksnot{2ADD}{}
+% \showsymbol\shortlefttack{2ADE}{}
+% \showsymbol\shortdowntack{2ADF}{}
+% \showsymbol\shortuptack{2AE0}{}
+% \showsymbol\vDdash{2AE2}{}
+% \showsymbol\dashV{2AE3}{}
+% \showsymbol\Dashv{2AE4}{}
+% \showsymbol\DashV{2AE5}{}
+% \showsymbol\varVdash{2AE6}{}
+% \showsymbol\Barv{2AE7}{}
+% \showsymbol\vBar{2AE8}{}
+% \showsymbol\vBarv{2AE9}{}
+% \showsymbol\barV{2AEA}{}
+% \showsymbol\Vbar{2AEB}{}
+% \showsymbol\Not{2AEC}{}
+% \showsymbol\bNot{2AED}{}
+% \showsymbol\revnmid{2AEE}{}
+% \showsymbol\cirmid{2AEF}{}
+% \showsymbol\midcir{2AF0}{}
+% \showsymbol\nhpar{2AF2}{}
+% \showsymbol\parsim{2AF3}{}
+% \showsymbol\lllnest{2AF7}{}
+% \showsymbol\gggnest{2AF8}{}
+% \showsymbol\leqqslant{2AF9}{}
+% \showsymbol\geqqslant{2AFA}{}
+% \showsymbol\circleonleftarrow{2B30}{*}
+% \showsymbol\leftthreearrows{2B31}{*}
+% \showsymbol\leftarrowonoplus{2B32}{*}
+% \showsymbol\longleftsquigarrow{2B33}{*}
+% \showsymbol\nvtwoheadleftarrow{2B34}{*}
+% \showsymbol\nVtwoheadleftarrow{2B35}{*}
+% \showsymbol\twoheadmapsfrom{2B36}{*}
+% \showsymbol\twoheadleftdbkarrow{2B37}{*}
+% \showsymbol\leftdotarrow{2B38}{*}
+% \showsymbol\nvleftarrowtail{2B39}{*}
+% \showsymbol\nVleftarrowtail{2B3A}{*}
+% \showsymbol\twoheadleftarrowtail{2B3B}{*}
+% \showsymbol\nvtwoheadleftarrowtail{2B3C}{*}
+% \showsymbol\nVtwoheadleftarrowtail{2B3D}{*}
+% \showsymbol\leftarrowx{2B3E}{*}
+% \showsymbol\leftcurvedarrow{2B3F}{*}
+% \showsymbol\equalleftarrow{2B40}{*}
+% \showsymbol\bsimilarleftarrow{2B41}{*}
+% \showsymbol\leftarrowbackapprox{2B42}{*}
+% \showsymbol\rightarrowgtr{2B43}{*}
+% \showsymbol\rightarrowsupset{2B44}{*}
+% \showsymbol\LLeftarrow{2B45}{*}
+% \showsymbol\RRightarrow{2B46}{*}
+% \showsymbol\bsimilarrightarrow{2B47}{*}
+% \showsymbol\rightarrowbackapprox{2B48}{*}
+% \showsymbol\similarleftarrow{2B49}{*}
+% \showsymbol\leftarrowapprox{2B4A}{*}
+% \showsymbol\leftarrowbsimilar{2B4B}{*}
+% \showsymbol\rightarrowbsimilar{2B4C}{*}
+% \showsymbol\ngeqq{XXXX}{}
+% \showsymbol\ngeqslant{XXXX}{}
+% \showsymbol\nleqslant{XXXX}{}
+% \showsymbol\nleqq{XXXX}{}
+% \showsymbol\ncongdot{XXXX}{}
+% \showsymbol\napproxeqq{XXXX}{}
+% \showsymbol\nll{XXXX}{}
+% \showsymbol\ngg{XXXX}{}
+% \showsymbol\nsqsubset{XXXX}{}
+% \showsymbol\nsqsupset{XXXX}{}
+% \showsymbol\nBumpeq{XXXX}{}
+% \showsymbol\nbumpeq{XXXX}{}
+% \showsymbol\neqsim{XXXX}{}
+% \showsymbol\nvarisinobar{XXXX}{}
+% \showsymbol\nvarniobar{XXXX}{}
+% \showsymbol\neqslantless{XXXX}{}
+% \showsymbol\neqslantgtr{XXXX}{}
+% \showsymbol\lhook{XXXX}{}
+% \showsymbol\rhook{XXXX}{}
+% \showsymbol\relbar{XXXX}{}
+% \showsymbol\Relbar{XXXX}{}
+% \showsymbol\Rrelbar{XXXX}{*}
+% \showsymbol\RRelbar{XXXX}{*}
+% \showsymbol\mapsfromchar{XXXX}{}
+% \showsymbol\mapstochar{XXXX}{}
+% \end{multicols}
+%
+% \newpage
+% \subsection{Punctuation}
+% \begin{multicols}{2}
+% \showsymbol,{002C}{}
+% \showsymbol\ldotp{002E}{}
+% \showsymbol\colon{003A}{}
+% \showsymbol;{003B}{}
+% \end{multicols}
+%
+% \subsection{Integrals}
+% \label{integrals}
+% Integrals come in two styles, the slanted versions shown below ($\intsl$,
+% etc.)\ and upright versions such as~$\intup$. By default, the symbol names
+% listed below will give you the slanted style, but if you specify the |upint|
+% package option, they will give you the corresponding upright symbols.
+%
+% It is highly recommended that authors stick to the names below and use the
+% |upint| package option to choose a style globally for their document.
+% However, in recognition of the fact that it might occasionally be necessary
+% to mix the two styles, alternative names have been provided for all
+% integrals. Append |sl| or |up| to the names below to request either the
+% \emph{sl}anted or the \emph{up}right variant. Thus, |$\intsl$| will always
+% yield~$\intsl$ and |$\intup$| will always yield~$\intup$, and similarly for
+% the other integrals.
+%
+% \begin{multicols}{2}
+% \showsymbol\smallint{222B}{}
+% \showsymbol\smalliint{222C}{}
+% \showsymbol\smalliiint{222D}{}
+% \showsymbol\smalloint{222E}{}
+% \showsymbol\smalloiint{222F}{}
+% \showsymbol\smalloiiint{2230}{}
+% \showsymbol\smallintclockwise{2231}{}
+% \showsymbol\smallvarointclockwise{2232}{}
+% \showsymbol\smallointctrclockwise{2233}{}
+% \showsymbol\smallsumint{2A0B}{}
+% \showsymbol\smalliiiint{2A0C}{}
+% \showsymbol\smallintbar{2A0D}{}
+% \showsymbol\smallintBar{2A0E}{}
+% \showsymbol\smallfint{2A0F}{}
+% \showsymbol\smallcirfnint{2A10}{}
+% \showsymbol\smallawint{2A11}{}
+% \showsymbol\smallrppolint{2A12}{}
+% \showsymbol\smallscpolint{2A13}{}
+% \showsymbol\smallnpolint{2A14}{}
+% \showsymbol\smallpointint{2A15}{}
+% \showsymbol\smallsqint{2A16}{}
+% \showsymbol\smallintlarhk{2A17}{}
+% \showsymbol\smallintx{2A18}{}
+% \showsymbol\smallintcap{2A19}{}
+% \showsymbol\smallintcup{2A1A}{}
+% \showsymbol\smallupint{2A1B}{}
+% \showsymbol\smalllowint{2A1C}{}
+% \end{multicols}
+%
+% \begin{multicols}{2}
+% \showop\int{222B}{}
+% \showop\iint{222C}{}
+% \showop\iiint{222D}{}
+% \showop\oint{222E}{}
+% \showop\oiint{222F}{}
+% \showop\oiiint{2230}{}
+% \showop\intclockwise{2231}{}
+% \showop\varointclockwise{2232}{}
+% \showop\ointctrclockwise{2233}{}
+% \showop\sumint{2A0B}{}
+% \showop\iiiint{2A0C}{}
+% \showop\intbar{2A0D}{}
+% \showop\intBar{2A0E}{}
+% \showop\fint{2A0F}{}
+% \showop\cirfnint{2A10}{}
+% \showop\awint{2A11}{}
+% \showop\rppolint{2A12}{}
+% \showop\scpolint{2A13}{}
+% \showop\npolint{2A14}{}
+% \showop\pointint{2A15}{}
+% \showop\sqint{2A16}{}
+% \showop\intlarhk{2A17}{}
+% \showop\intx{2A18}{}
+% \showop\intcap{2A19}{}
+% \showop\intcup{2A1A}{}
+% \showop\upint{2A1B}{}
+% \showop\lowint{2A1C}{}
+% \end{multicols}
+%
+% \subsection{Big operators}
+% \begin{multicols}{2}
+% \showop\Bbbsum{2140}{}
+% \showop\prod{220F}{}
+% \showop\coprod{2210}{}
+% \showop\sum{2211}{}
+% \showop\bigwedge{22C0}{}
+% \showop\bigvee{22C1}{}
+% \showop\bigcap{22C2}{}
+% \showop\bigcup{22C3}{}
+% \showop\leftouterjoin{27D5}{*}
+% \showop\rightouterjoin{27D6}{*}
+% \showop\fullouterjoin{27D7}{*}
+% \showop\bigbot{27D8}{*}
+% \showop\bigtop{27D9}{*}
+% \showop\xsol{29F8}{*}
+% \showop\xbsol{29F9}{*}
+% \showop\bigodot{2A00}{*}
+% \showop\bigoplus{2A01}{*}
+% \showop\bigotimes{2A02}{*}
+% \showop\bigcupdot{2A03}{*}
+% \showop\biguplus{2A04}{*}
+% \showop\bigsqcap{2A05}{*}
+% \showop\bigsqcup{2A06}{*}
+% \showop\conjquant{2A07}{*}
+% \showop\disjquant{2A08}{*}
+% \showop\bigtimes{2A09}{*}
+% \showop\modtwosum{2A0A}{*}
+% \showop\Join{2A1D}{*}
+% \showop\bigtriangleleft{2A1E}{*}
+% \showop\zcmp{2A1F}{*}
+% \showop\zpipe{2A20}{*}
+% \showop\zproject{2A21}{*}
+% \showop\biginterleave{2AFC}{}
+% \showop\bigtalloblong{2AFF}{*}
+% \end{multicols}
+%
+% \subsection{Delimiters}
+% \begin{multicols}{2}
+% \showmbrace/{002F}{}
+% \showlbrace({0028}{}
+% \showlbrace[{005B}{}
+% \showlbrace\lbrace{007B}{}
+% \showmbrace\backslash{005C}{}
+% \showrbrace){0029}{}
+% \showrbrace]{005D}{}
+% \showrbrace\rbrace{007D}{}
+% \showlbrace\lceil{2308}{}
+% \showlbrace\lfloor{230A}{}
+% \showlbrace\lmoustache{23B0}{*}
+% \showlbrace\lbrbrak{2772}{*}
+% \showlbrace\lBrack{27E6}{*}
+% \showlbrace\langle{27E8}{}, \cmd<
+% \showlbrace\lAngle{27EA}{*}
+% \showlbrace\lgroup{27EE}{*}
+% \showlbrace\lBrace{2983}{*}
+% \showlbrace\lParen{2985}{*}
+% \showrbrace\rceil{2309}{}
+% \showrbrace\rfloor{230B}{}
+% \showrbrace\rmoustache{23B1}{*}
+% \showrbrace\rbrbrak{2773}{*}
+% \showrbrace\rBrack{27E7}{*}
+% \showrbrace\rangle{27E9}{}, \cmd>
+% \showrbrace\rAngle{27EB}{*}
+% \showrbrace\rgroup{27EF}{*}
+% \showrbrace\rBrace{2984}{*}
+% \showrbrace\rParen{2986}{*}
+% \end{multicols}
+%
+% \begin{multicols}{2}
+% \showmbrace\vert{007C}{}, \cmd|
+% \showmbrace\Vert{2016}{*}, \cmd\|
+% \showmbrace\Vvert{2980}{}
+% \showmbrace\uparrow{2191}{}
+% \showmbrace\downarrow{2193}{}
+% \showmbrace\updownarrow{2195}{}
+% \showmbrace\Uparrow{21D1}{}
+% \showmbrace\Downarrow{21D3}{}
+% \showmbrace\Updownarrow{21D5}{}
+% \showmbrace\Uuparrow{290A}{*}
+% \showmbrace\Ddownarrow{290B}{*}
+% \showmbrace\UUparrow{27F0}{*}
+% \showmbrace\DDownarrow{27F1}{*}
+% \showmbrace\arrowvert{XXXX}{}
+% \showmbrace\Arrowvert{XXXX}{}
+% \showmbrace\bracevert{XXXX}{*}
+% \end{multicols}
+%
+% \subsection{Other bracess}
+% \begin{multicols}{2}
+% \showsymbol\ulcorner{231C}{*}
+% \showsymbol\urcorner{231D}{*}
+% \showsymbol\llcorner{231E}{*}
+% \showsymbol\lrcorner{231F}{*}
+% \showsymbol\Lbrbrak{27EC}{*}
+% \showsymbol\Rbrbrak{27ED}{*}
+% \showsymbol\llparenthesis{2987}{*}
+% \showsymbol\rrparenthesis{2988}{*}
+% \showsymbol\llangle{2989}{*}
+% \showsymbol\rrangle{298A}{*}
+% \showsymbol\lbrackubar{298B}{*}
+% \showsymbol\rbrackubar{298C}{*}
+% \showsymbol\lbrackultick{298D}{*}
+% \showsymbol\rbracklrtick{298E}{*}
+% \showsymbol\lbracklltick{298F}{*}
+% \showsymbol\rbrackurtick{2990}{*}
+% \showsymbol\langledot{2991}{*}
+% \showsymbol\rangledot{2992}{*}
+% \showsymbol\lparenless{2993}{*}
+% \showsymbol\rparengtr{2994}{*}
+% \showsymbol\Lparengtr{2995}{*}
+% \showsymbol\Rparenless{2996}{*}
+% \showsymbol\lblkbrbrak{2997}{*}
+% \showsymbol\rblkbrbrak{2998}{*}
+% \showsymbol\lvzigzag{29D8}{*}
+% \showsymbol\rvzigzag{29D9}{*}
+% \showsymbol\Lvzigzag{29DA}{*}
+% \showsymbol\Rvzigzag{29DB}{*}
+% \showsymbol\lcurvyangle{29FC}{*}
+% \showsymbol\rcurvyangle{29FD}{*}
+% \showsymbol\lbrbrak{2772}{*}
+% \showsymbol\rbrbrak{2773}{*}
+% \showsymbol\lbag{27C5}{*}
+% \showsymbol\rbag{27C6}{*}
+% \showsymbol\Lbrbrak{27EC}{*}
+% \showsymbol\Rbrbrak{27ED}{*}
+% \end{multicols}
+%
+% \subsection{Accents}
+% \begin{multicols}{2}
+% \showaccent\grave{0300}{}
+% \showaccent\acute{0301}{}
+% \showaccent\hat{0302}{}
+% \showaccent\tilde{0303}{}
+% \showaccent\bar{0304}{}
+% \showaccent\breve{0306}{}
+% \showaccent\dot{0307}{}
+% \showaccent\ddot{0308}{}
+% \showaccent\ovhook{0309}{}
+% \showaccent\mathring{030A}{}
+% \showaccent\check{030C}{}
+% \showaccent\candra{0310}{}
+% \showaccent\oturnedcomma{0312}{}
+% \showaccent\ocommatopright{0315}{}
+% \showaccent\droang{031A}{}
+% \showaccent\leftharpoonaccent{20D0}{}
+% \showaccent\rightharpoonaccent{20D1}{}
+% \showaccent\leftarrowaccent{20D6}{}
+% \showaccent\vec{20D7}{}, \cmd\rightarrowaccent
+% \showaccent\leftrightarrowaccent{20E1}{}
+% \showaccent\dddot{20DB}{}
+% \showaccent\ddddot{20DC}{}
+% \showaccent\annuity{20E7}{}
+% \showaccent\widebridgeabove{20E9}{}
+% \showaccent\asteraccent{20F0}{}
+% \end{multicols}
+%
+% \begin{multicols}{2}
+% \showwideaccent\widehat{0302}{*}
+% \showwideaccent\widetilde{0303}{*}
+% \showwideaccent\widecheck{030C}{*}
+% \showwideaccent\overleftarrow{20D6}{}
+% \showwideaccent\overrightarrow{20D7}{}
+% \showwideaccent\underrightarrow{20EF}{}
+% \showwideaccent\underleftarrow{20EE}{}
+% \showwideaccent\overleftrightarrow{20E1}{}
+% \showwideaccent\underleftrightarrow{034D}{}
+% \showwideaccent\overleftharpoon{20D0}{}
+% \showwideaccent\overrightharpoon{20D1}{}
+% \showwideaccent\underleftharpoon{20EC}{}
+% \showwideaccent\underrightharpoon{20ED}{}
+% \end{multicols}
+%
+% OpenType STIX fonts include a number of under accents that can be used in
+% math mode, but \TeX\ does not support under accents natively so such glyphs
+% can not be used directly. Under accents can be set using regular accents and
+% commands like |\underaccent| from the \pkg{accents} package, for example
+% \verb|\underaccent{\hat}{X}| gives $\underaccent{\hat}{X}$. The
+% \pkg{undertilde} package provides |\utilde| for extensible under tilde
+% accent.
+%
+% \subsection{Over and under brackets}
+% \begin{multicols}{2}
+% \showover\overbracket{23B4}{}
+% \showover\overparen{23DC}{}
+% \showover\overbrace{23DE}{}
+% \showover\underbracket{23B5}{}
+% \showover\underparen{23DD}{}
+% \showover\underbrace{23DF}{}
+% \end{multicols}
+%
+% \subsection{Radicals}
+% \begin{multicols}{2}
+% \showaccent\sqrt{221A}{}
+% \showaccent\longdivision{27CC}{*}
+% \end{multicols}
+%
+% \newpage
+% \section{Font tables}
+% \nodecimals
+% \renewcommand{\thefootnote}{\fnsymbol{footnote}}
+% The rest of this document shows glyph tables for all STIX fonts. The name
+% before each table is the \TeX\ font name (i.e. TFM file name).
+%
+% Note that STIX fonts have no real smallcaps, the smallcaps below are
+% synthesized (scaled down upper case letters).
+%
+% \subsection{Text fonts}
+%
+% \subsubsection*{\texttt{ot1-stixgeneral}}
+% \fonttable{ot1-stixgeneral}
+%
+% \newpage
+% \subsubsection*{\texttt{ot1-stixgeneralsc}}
+% \fonttable{ot1-stixgeneralsc}
+%
+% \newpage
+% \subsubsection*{\texttt{t1-stixgeneral}}
+% \footnotetext[1]{\hex{18} and \hex{DF} do not exist in STIX OpenType fonts,
+% they were added as part of this package for compatability with |T1|
+% encoding.}
+% \fonttable{t1-stixgeneral}
+%
+% \newpage
+% \subsubsection*{\texttt{t1-stixgeneralsc}}
+% \fonttable{t1-stixgeneralsc}
+%
+% \newpage
+% \subsubsection*{\texttt{ot2-stixgeneral}}
+% \footnotetext[1]{\hex{24} does not exist in STIX OpenType fonts, it was added as
+% part of this package for compatability with |OT2| encoding.}
+% \fonttable{ot2-stixgeneral}
+%
+% \newpage
+% \subsubsection*{\texttt{ot2-stixgeneralsc}}
+% \fonttable{ot2-stixgeneralsc}
+%
+% \newpage
+% \subsubsection*{\texttt{ts1-stixgeneral}}
+% \fonttable{ts1-stixgeneral}
+%
+% \newpage
+% \subsection{Math fonts}
+% \subsubsection*{\texttt{stix-mathrm}}
+% \fonttable{stix-mathrm}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathit}}
+% \fonttable{stix-mathit}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathsf}}
+% \footnotetext[1]{\hex{28}, \hex{3A}, \hex{7B} and \hex{7C} do not exist in
+% STIX OpenType fonts.}
+% \fonttable{stix-mathsf}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathsfit}}
+% \footnotetext[1]{\hex{28}, \hex{7B} and \hex{7C} do not exist in STIX
+% OpenType fonts.}
+% \fonttable{stix-mathsfit}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathtt}}
+% \footnotetext[1]{\hex{7B} and \hex{7C} do not exist in STIX OpenType fonts.}
+% \fonttable{stix-mathtt}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathbb}}
+% \footnotetext[1]{\hex{7B} and \hex{7C} do not exist in STIX OpenType fonts.}
+% \fonttable{stix-mathbb}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathbbit}}
+% \footnotetext[1]{\hex{7B} and \hex{7C} do not exist in STIX OpenType fonts.}
+% \fonttable{stix-mathbbit}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathscr}}
+% \footnotetext[1]{\hex{7B} and \hex{7C} do not exist in STIX OpenType fonts.}
+% \fonttable{stix-mathscr}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathcal}}
+% \footnotetext[1]{\hex{09}, \hex{24}, \hex{9D}, \hex{B8}, \hex{D3} and
+% \hex{EE} do not exist in \textbf{bold} STIX OpenType fonts.}
+% \fonttable{stix-mathcal}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathfrak}}
+% \footnotetext[1]{\hex{7B} and \hex{7C} do not exist in STIX OpenType fonts.}
+% \fonttable{stix-mathfrak}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathex}}
+% \fonttable{stix-mathex}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-extra1}}
+% \fonttable{stix-extra1}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-extra2}}
+% \fonttable{stix-extra2}
+%
+% \subsubsection*{\texttt{stix-extra3}}
+% \fonttable{stix-extra3}
+%
+% \StopEventually{}
+% \endinput
+%
+% \section{Implementation}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \subsection{Package options}
+%
+%    \begin{macrocode}
+\newif\ifstix@text  \stix@texttrue
+\newif\ifstix@math  \stix@mathtrue
+\newif\ifstix@tenc  \stix@tenctrue
+\newif\ifstix@senc  \stix@senctrue
+\newif\ifstix@upint \stix@upintfalse
+\let\stix@lcgc\mathord
+\DeclareOption{notext}      {\stix@textfalse}
+\DeclareOption{nomath}      {\stix@mathfalse}
+\DeclareOption{not1}        {\stix@tencfalse}
+\DeclareOption{notextcomp}  {\stix@sencfalse}
+\DeclareOption{lcgreekalpha}{\let\stix@lcgc\mathalpha}
+\DeclareOption{upint}       {\stix@upinttrue}
+\ProcessOptions\relax
+%    \end{macrocode}
+%
+% \subsection{Text fonts}
+%
+%    \begin{macrocode}
+\ifstix@text
+    \ifstix@tenc
+        \def\encodingdefault{T1}
+    \fi
+    \ifstix@senc
+        \RequirePackage[full]{textcomp}
+%    \end{macrocode}
+%
+% Use |\textpertenthousand| from TS1 font, for some reason \pkg{textcomp}
+% doesn't do so.
+%
+%    \begin{macrocode}
+        \UndeclareTextCommand{\textpertenthousand}{T1}
+        \DeclareTextSymbolDefault{\textpertenthousand}{TS1}
+    \fi
+
+    \renewcommand{\rmdefault}{stix}
+\fi
+%    \end{macrocode}
+%
+% \subsection{Math fonts}
+%
+%    \begin{macrocode}
+\ifstix@math
+%    \end{macrocode}
+%
+% \subsubsection{Common macros}
+%
+%    \begin{macrocode}
+\def\stix@undefine#1{%
+    \if\relax\noexpand#1\let#1=\@undefined\fi}
+\def\stix@MathSymbol#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathSymbol{#1}{#2}{#3}{#4}}
+\def\stix@MathDelimiter#1#2#3#4#5#6{%
+    \stix@undefine#1%
+    \DeclareMathDelimiter{#1}{#2}{#3}{#4}{#5}{#6}}
+\def\stix@MathAccent#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathAccent{#1}{#2}{#3}{#4}}
+\def\stix@MathRadical#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathRadical{#1}{#2}{#3}{#4}}
+%    \end{macrocode}
+%
+% \subsubsection{Declaring fonts}
+%
+%    \begin{macrocode}
+\DeclareFontEncoding{LS1}{}{}
+\DeclareFontEncoding{LS2}{}{\noaccents@}
+\DeclareFontSubstitution{LS1}{stix}{m}{n}
+\DeclareFontSubstitution{LS2}{stix}{m}{n}
+\DeclareSymbolFont{letters}       {LS1}{stix}     {m}{it}
+\DeclareSymbolFont{operators}     {LS1}{stix}     {m} {n}
+\DeclareSymbolFont{bold-operators}{LS1}{stix}     {b} {n}
+\DeclareSymbolFont{symbols}       {LS1}{stixscr}  {m} {n}
+\DeclareSymbolFont{symbols2}      {LS1}{stixfrak} {m} {n}
+\DeclareSymbolFont{symbols3}      {LS1}{stixbb}   {m} {n}
+\DeclareSymbolFont{symbols4}      {LS1}{stixbb}   {m}{it}
+\DeclareSymbolFont{integrals}     {LS2}{stixcal}  {m} {n}
+\DeclareSymbolFont{largesymbols}  {LS2}{stixex}   {m} {n}
+\DeclareSymbolFont{arrows1}       {LS1}{stixsf}   {m} {n}
+\DeclareSymbolFont{arrows2}       {LS1}{stixsf}   {m}{it}
+\DeclareSymbolFont{arrows3}       {LS2}{stixtt}   {m} {n}
+\SetSymbolFont{letters}     {bold}{LS1}{stix}     {b}{it}
+\SetSymbolFont{operators}   {bold}{LS1}{stix}     {b} {n}
+\SetSymbolFont{symbols}     {bold}{LS1}{stixscr}  {b} {n}
+\SetSymbolFont{symbols2}    {bold}{LS1}{stixfrak} {b}{n}
+\SetSymbolFont{symbols3}    {bold}{LS1}{stixbb}   {b} {n}
+\SetSymbolFont{symbols4}    {bold}{LS1}{stixbb}   {b}{it}
+\SetSymbolFont{integrals}   {bold}{LS2}{stixcal}  {b} {n}
+\SetSymbolFont{largesymbols}{bold}{LS2}{stixex}   {b} {n}
+\SetSymbolFont{arrows1}     {bold}{LS1}{stixsf}   {b} {n}
+\SetSymbolFont{arrows2}     {bold}{LS1}{stixsf}   {b}{it}
+\SetSymbolFont{arrows3}     {bold}{LS2}{stixtt}   {b} {n}
+\DeclareSymbolFontAlphabet{\mathit}  {letters}
+\DeclareSymbolFontAlphabet{\mathrm}  {operators}
+\DeclareSymbolFontAlphabet{\mathscr} {symbols}
+\DeclareSymbolFontAlphabet{\mathfrak}{symbols2}
+\DeclareSymbolFontAlphabet{\mathbb}  {symbols3}
+\DeclareSymbolFontAlphabet{\mathbbit}{symbols4}
+\DeclareSymbolFontAlphabet{\mathcal} {integrals}
+\DeclareSymbolFontAlphabet{\mathsf}  {arrows1}
+\DeclareSymbolFontAlphabet{\mathsfit}{arrows2}
+\DeclareSymbolFontAlphabet{\mathtt}  {arrows3}
+%    \end{macrocode}
+%
+% \paragraph{Bold alphabets}
+%
+%    \begin{macrocode}
+\DeclareSymbolFontAlphabet{\mathbf}  {bold-operators}
+\DeclareMathAlphabet{\mathbfit}   {LS1}{stix}     {b}{it}
+\DeclareMathAlphabet{\mathbfsf}   {LS1}{stixsf}   {b} {n}
+\DeclareMathAlphabet{\mathbfsfit} {LS1}{stixsf}   {b}{it}
+\DeclareMathAlphabet{\mathbfbb}   {LS1}{stixbb}   {b} {n}
+\DeclareMathAlphabet{\mathbfbbit} {LS1}{stixbb}   {b}{it}
+\DeclareMathAlphabet{\mathbfscr}  {LS1}{stixscr}  {b} {n}
+\DeclareMathAlphabet{\mathbffrak} {LS1}{stixfrak} {b} {n}
+%    \end{macrocode}
+%
+% \subsubsection{Declaring symbols}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\Gamma}      {\mathalpha}{operators}{"00}
+\stix@MathSymbol{\Delta}      {\mathalpha}{operators}{"01}
+\stix@MathSymbol{\Theta}      {\mathalpha}{operators}{"02}
+\stix@MathSymbol{\Lambda}     {\mathalpha}{operators}{"03}
+\stix@MathSymbol{\Xi}         {\mathalpha}{operators}{"04}
+\stix@MathSymbol{\Pi}         {\mathalpha}{operators}{"05}
+\stix@MathSymbol{\Sigma}      {\mathalpha}{operators}{"06}
+\stix@MathSymbol{\Upsilon}    {\mathalpha}{operators}{"07}
+\stix@MathSymbol{\Phi}        {\mathalpha}{operators}{"08}
+\stix@MathSymbol{\Psi}        {\mathalpha}{operators}{"09}
+\stix@MathSymbol{\Omega}      {\mathalpha}{operators}{"0A}
+%    \end{macrocode}
+%
+% In default \LaTeX\ setup, lower case Greek symbols are defined as |\mathord|
+% and thus they don't change when family changes, but they should be
+% |\mathalpha| to behave like other alphabetic symbols. For backward
+% compatibility, |\stix@lcgc| is |\mathord| by default and |\mathalpha| when
+% |lcgreekalpha| package option is specified.
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\alpha}     {\stix@lcgc}{letters}{"0B}
+\stix@MathSymbol{\beta}      {\stix@lcgc}{letters}{"0C}
+\stix@MathSymbol{\gamma}     {\stix@lcgc}{letters}{"0D}
+\stix@MathSymbol{\delta}     {\stix@lcgc}{letters}{"0E}
+\stix@MathSymbol{\epsilon}   {\stix@lcgc}{letters}{"0F}
+\stix@MathSymbol{\zeta}      {\stix@lcgc}{letters}{"10}
+\stix@MathSymbol{\eta}       {\stix@lcgc}{letters}{"11}
+\stix@MathSymbol{\theta}     {\stix@lcgc}{letters}{"12}
+\stix@MathSymbol{\iota}      {\stix@lcgc}{letters}{"13}
+\stix@MathSymbol{\kappa}     {\stix@lcgc}{letters}{"14}
+\stix@MathSymbol{\lambda}    {\stix@lcgc}{letters}{"15}
+\stix@MathSymbol{\mu}        {\stix@lcgc}{letters}{"16}
+\stix@MathSymbol{\nu}        {\stix@lcgc}{letters}{"17}
+\stix@MathSymbol{\xi}        {\stix@lcgc}{letters}{"18}
+\stix@MathSymbol{\pi}        {\stix@lcgc}{letters}{"19}
+\stix@MathSymbol{\rho}       {\stix@lcgc}{letters}{"1A}
+\stix@MathSymbol{\sigma}     {\stix@lcgc}{letters}{"1B}
+\stix@MathSymbol{\tau}       {\stix@lcgc}{letters}{"1C}
+\stix@MathSymbol{\upsilon}   {\stix@lcgc}{letters}{"1D}
+\stix@MathSymbol{\phi}       {\stix@lcgc}{letters}{"1E}
+\stix@MathSymbol{\chi}       {\stix@lcgc}{letters}{"1F}
+\stix@MathSymbol{\psi}       {\stix@lcgc}{letters}{"20}
+\stix@MathSymbol{\omega}     {\stix@lcgc}{letters}{"21}
+\stix@MathSymbol{\varepsilon}{\stix@lcgc}{letters}{"22}
+\stix@MathSymbol{\vartheta}  {\stix@lcgc}{letters}{"23}
+\stix@MathSymbol{\varpi}     {\stix@lcgc}{letters}{"24}
+\stix@MathSymbol{\varrho}    {\stix@lcgc}{letters}{"25}
+\stix@MathSymbol{\varsigma}  {\stix@lcgc}{letters}{"26}
+\stix@MathSymbol{\varphi}    {\stix@lcgc}{letters}{"27}
+\stix@MathSymbol{\nabla}     {\stix@lcgc}{operators}{"28}
+\stix@MathSymbol{\partial}   {\stix@lcgc}{letters}{"29}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{0}     {\mathalpha}{operators}{`0}
+\stix@MathSymbol{1}     {\mathalpha}{operators}{`1}
+\stix@MathSymbol{2}     {\mathalpha}{operators}{`2}
+\stix@MathSymbol{3}     {\mathalpha}{operators}{`3}
+\stix@MathSymbol{4}     {\mathalpha}{operators}{`4}
+\stix@MathSymbol{5}     {\mathalpha}{operators}{`5}
+\stix@MathSymbol{6}     {\mathalpha}{operators}{`6}
+\stix@MathSymbol{7}     {\mathalpha}{operators}{`7}
+\stix@MathSymbol{8}     {\mathalpha}{operators}{`8}
+\stix@MathSymbol{9}     {\mathalpha}{operators}{`9}
+\stix@MathSymbol{A}     {\mathalpha}{letters}  {`A}
+\stix@MathSymbol{B}     {\mathalpha}{letters}  {`B}
+\stix@MathSymbol{C}     {\mathalpha}{letters}  {`C}
+\stix@MathSymbol{D}     {\mathalpha}{letters}  {`D}
+\stix@MathSymbol{E}     {\mathalpha}{letters}  {`E}
+\stix@MathSymbol{F}     {\mathalpha}{letters}  {`F}
+\stix@MathSymbol{G}     {\mathalpha}{letters}  {`G}
+\stix@MathSymbol{H}     {\mathalpha}{letters}  {`H}
+\stix@MathSymbol{I}     {\mathalpha}{letters}  {`I}
+\stix@MathSymbol{J}     {\mathalpha}{letters}  {`J}
+\stix@MathSymbol{K}     {\mathalpha}{letters}  {`K}
+\stix@MathSymbol{L}     {\mathalpha}{letters}  {`L}
+\stix@MathSymbol{M}     {\mathalpha}{letters}  {`M}
+\stix@MathSymbol{N}     {\mathalpha}{letters}  {`N}
+\stix@MathSymbol{O}     {\mathalpha}{letters}  {`O}
+\stix@MathSymbol{P}     {\mathalpha}{letters}  {`P}
+\stix@MathSymbol{Q}     {\mathalpha}{letters}  {`Q}
+\stix@MathSymbol{R}     {\mathalpha}{letters}  {`R}
+\stix@MathSymbol{S}     {\mathalpha}{letters}  {`S}
+\stix@MathSymbol{T}     {\mathalpha}{letters}  {`T}
+\stix@MathSymbol{U}     {\mathalpha}{letters}  {`U}
+\stix@MathSymbol{V}     {\mathalpha}{letters}  {`V}
+\stix@MathSymbol{W}     {\mathalpha}{letters}  {`W}
+\stix@MathSymbol{X}     {\mathalpha}{letters}  {`X}
+\stix@MathSymbol{Y}     {\mathalpha}{letters}  {`Y}
+\stix@MathSymbol{Z}     {\mathalpha}{letters}  {`Z}
+\stix@MathSymbol{a}     {\mathalpha}{letters}  {`a}
+\stix@MathSymbol{b}     {\mathalpha}{letters}  {`b}
+\stix@MathSymbol{c}     {\mathalpha}{letters}  {`c}
+\stix@MathSymbol{d}     {\mathalpha}{letters}  {`d}
+\stix@MathSymbol{e}     {\mathalpha}{letters}  {`e}
+\stix@MathSymbol{f}     {\mathalpha}{letters}  {`f}
+\stix@MathSymbol{g}     {\mathalpha}{letters}  {`g}
+\stix@MathSymbol{h}     {\mathalpha}{letters}  {`h}
+\stix@MathSymbol{i}     {\mathalpha}{letters}  {`i}
+\stix@MathSymbol{j}     {\mathalpha}{letters}  {`j}
+\stix@MathSymbol{k}     {\mathalpha}{letters}  {`k}
+\stix@MathSymbol{l}     {\mathalpha}{letters}  {`l}
+\stix@MathSymbol{m}     {\mathalpha}{letters}  {`m}
+\stix@MathSymbol{n}     {\mathalpha}{letters}  {`n}
+\stix@MathSymbol{o}     {\mathalpha}{letters}  {`o}
+\stix@MathSymbol{p}     {\mathalpha}{letters}  {`p}
+\stix@MathSymbol{q}     {\mathalpha}{letters}  {`q}
+\stix@MathSymbol{r}     {\mathalpha}{letters}  {`r}
+\stix@MathSymbol{s}     {\mathalpha}{letters}  {`s}
+\stix@MathSymbol{t}     {\mathalpha}{letters}  {`t}
+\stix@MathSymbol{u}     {\mathalpha}{letters}  {`u}
+\stix@MathSymbol{v}     {\mathalpha}{letters}  {`v}
+\stix@MathSymbol{w}     {\mathalpha}{letters}  {`w}
+\stix@MathSymbol{x}     {\mathalpha}{letters}  {`x}
+\stix@MathSymbol{y}     {\mathalpha}{letters}  {`y}
+\stix@MathSymbol{z}     {\mathalpha}{letters}  {`z}
+\stix@MathSymbol{\imath}{\mathalpha}{letters}  {"7B}
+\stix@MathSymbol{\jmath}{\mathalpha}{letters}  {"7C}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\aleph} {\mathord}{letters}{"2A}
+\stix@MathSymbol{\beth}  {\mathord}{letters}{"2B}
+\stix@MathSymbol{\gimel} {\mathord}{letters}{"2C}
+\stix@MathSymbol{\daleth}{\mathord}{letters}{"2D}
+\stix@MathSymbol{\hbar}  {\mathord}{letters}{"60}
+\stix@MathSymbol{\hslash}{\mathord}{letters}{"3D}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\ell}       {\mathord}  {symbols}{`l}
+\stix@MathSymbol{\wp}        {\mathord}  {symbols}{"7D}
+\stix@MathSymbol{\Re}        {\mathord}  {symbols2}{`R}
+\stix@MathSymbol{\Im}        {\mathord}  {symbols2}{`I}
+\stix@MathSymbol{-}          {\mathbin}  {operators}{"2A}
+\stix@MathSymbol{+}          {\mathbin}  {operators}{`+}
+\stix@MathSymbol{\pm}        {\mathbin}  {operators}{"2C}
+\stix@MathSymbol{\mp}        {\mathbin}  {operators}{"2D}
+\stix@MathSymbol{:}          {\mathrel}  {operators}{`:}
+\stix@MathSymbol{;}          {\mathpunct}{operators}{`;}
+\stix@MathSymbol{*}          {\mathrel}  {operators}{"3C}
+\stix@MathSymbol{\ast}       {\mathrel}  {operators}{"3C}
+\stix@MathSymbol{=}          {\mathrel}  {operators}{`=}
+\stix@MathSymbol{\mathdollar}{\mathord}  {operators}{"3E}
+\stix@MathSymbol{?}          {\mathclose}{operators}{`?}
+\stix@MathSymbol{!}          {\mathclose}{operators}{"40}
+\stix@MathSymbol{#}          {\mathord}  {operators}{"7D}
+\mathcode`\%="007E % can't use \stix@MathSymbol
+\stix@MathSymbol{&}          {\mathord}  {operators}{"99}
+\stix@MathSymbol{@}          {\mathord}  {operators}{"9A}
+\stix@MathSymbol{.}          {\mathord}  {letters}  {"3A}
+\stix@MathSymbol{\ldotp}     {\mathpunct}{letters}  {"3A}
+\stix@MathSymbol{,}          {\mathpunct}{letters}  {"3B}
+\stix@MathSymbol{\star}      {\mathbin}  {letters}  {"3F}
+\stix@MathSymbol{\flat}      {\mathord}  {letters}  {"5B}
+\stix@MathSymbol{\natural}   {\mathord}  {letters}  {"5C}
+\stix@MathSymbol{\sharp}     {\mathord}  {letters}  {"5D}
+\stix@MathSymbol{\smile}     {\mathrel}  {letters}  {"5E}
+\stix@MathSymbol{\frown}     {\mathrel}  {letters}  {"5F}
+\stix@MathSymbol{\triangleright} {\mathbin}{letters}{"2E}
+\stix@MathSymbol{\triangleleft}  {\mathbin}{letters}{"2F}
+%    \end{macrocode}
+%
+% \pkg{amsmath} defines |\colon| in a clever way, we want to retain that.
+%
+%    \begin{macrocode}
+\@ifpackageloaded{amsmath}{}{
+    \stix@MathSymbol{\colon}      {\mathpunct}{operators}{`:}
+}
+%    \end{macrocode}
+%
+% \paragraph{Delimiters}
+%
+%    \begin{macrocode}
+\stix@MathDelimiter{(}          {\mathopen} {operators}   {"2E}{largesymbols}{"00}
+\stix@MathDelimiter{)}          {\mathclose}{operators}   {"2F}{largesymbols}{"01}
+\stix@MathDelimiter{\lParen}    {\mathopen} {largesymbols}{"DE}{largesymbols}{"02}
+\stix@MathDelimiter{\rParen}    {\mathclose}{largesymbols}{"DF}{largesymbols}{"03}
+\stix@MathDelimiter{[}          {\mathopen} {operators}   {"5B}{largesymbols}{"04}
+\stix@MathDelimiter{]}          {\mathclose}{operators}   {"5D}{largesymbols}{"05}
+\stix@MathDelimiter{\lBrack}    {\mathopen} {largesymbols}{"E0}{largesymbols}{"06}
+\stix@MathDelimiter{\rBrack}    {\mathclose}{largesymbols}{"E1}{largesymbols}{"07}
+\stix@MathDelimiter{\lfloor}    {\mathopen} {largesymbols}{"E2}{largesymbols}{"08}
+\stix@MathDelimiter{\rfloor}    {\mathclose}{largesymbols}{"E3}{largesymbols}{"09}
+\stix@MathDelimiter{\lceil}     {\mathopen} {largesymbols}{"E4}{largesymbols}{"0A}
+\stix@MathDelimiter{\rceil}     {\mathclose}{largesymbols}{"E5}{largesymbols}{"0B}
+\stix@MathDelimiter{\lmoustache}{\mathopen} {largesymbols}{"E6}{largesymbols}{"EC}
+\stix@MathDelimiter{\rmoustache}{\mathclose}{largesymbols}{"E7}{largesymbols}{"ED}
+\stix@MathDelimiter{\lbrace}    {\mathopen} {operators}   {"5E}{largesymbols}{"0C}
+\stix@MathDelimiter{\rbrace}    {\mathclose}{operators}   {"60}{largesymbols}{"0D}
+\stix@MathDelimiter{\lBrace}    {\mathopen} {largesymbols}{"E8}{largesymbols}{"0E}
+\stix@MathDelimiter{\rBrace}    {\mathclose}{largesymbols}{"E9}{largesymbols}{"0F}
+\stix@MathDelimiter{\langle}    {\mathopen} {largesymbols}{"EA}{largesymbols}{"10}
+\stix@MathDelimiter{\rangle}    {\mathclose}{largesymbols}{"EB}{largesymbols}{"11}
+\stix@MathDelimiter{<}          {\mathopen} {largesymbols}{"EA}{largesymbols}{"10}
+\stix@MathDelimiter{>}          {\mathclose}{largesymbols}{"EB}{largesymbols}{"11}
+\stix@MathSymbol   {<}          {\mathrel}  {letters}{"3C}
+\stix@MathSymbol   {>}          {\mathrel}  {letters}{"3E}
+\stix@MathDelimiter{\lAngle}    {\mathopen} {largesymbols}{"EC}{largesymbols}{"12}
+\stix@MathDelimiter{\rAngle}    {\mathclose}{largesymbols}{"ED}{largesymbols}{"13}
+\stix@MathDelimiter{\lbrbrak}   {\mathopen} {largesymbols}{"EE}{largesymbols}{"14}
+\stix@MathDelimiter{\rbrbrak}   {\mathclose}{largesymbols}{"EF}{largesymbols}{"15}
+\stix@MathDelimiter{/}          {\mathord}  {operators}   {"5F}{largesymbols}{"16}
+\stix@MathDelimiter{\backslash} {\mathord}  {operators}   {"5C}{largesymbols}{"17}
+\expandafter\DeclareMathDelimiter\@backslashchar{\mathord}{operators}{"5C}{largesymbols}{"17}
+\stix@MathDelimiter{\lgroup}    {\mathopen} {largesymbols}{"DC}{largesymbols}{"6A}
+\stix@MathDelimiter{\rgroup}    {\mathclose}{largesymbols}{"DD}{largesymbols}{"6B}
+\stix@MathDelimiter{\bracevert} {\mathord}  {largesymbols}{"6E}{largesymbols}{"6E}
+\stix@MathDelimiter{|}          {\mathord}  {largesymbols}{"F0}{largesymbols}{"F3}
+\stix@MathDelimiter{\vert}      {\mathord}  {largesymbols}{"F0}{largesymbols}{"F3}
+\stix@MathDelimiter{\Vert}      {\mathord}  {largesymbols}{"F1}{largesymbols}{"F4}
+        \let\|=\Vert
+\stix@MathDelimiter{\Vvert}     {\mathord}  {largesymbols}{"F2}{largesymbols}{"F5}
+%    \end{macrocode}
+%
+% Override |\lvert|, |\rvert|, |\lVert| and |\rVert| from \pkg{amsmath}.
+%
+%    \begin{macrocode}
+\@ifpackageloaded{amsmath}{
+    \stix@MathDelimiter{\lvert} {\mathopen}  {largesymbols}{"F0}{largesymbols}{"F3}
+    \stix@MathDelimiter{\rvert} {\mathclose} {largesymbols}{"F0}{largesymbols}{"F3}
+    \stix@MathDelimiter{\lVert} {\mathopen}  {largesymbols}{"F1}{largesymbols}{"F4}
+    \stix@MathDelimiter{\rVert} {\mathclose} {largesymbols}{"F1}{largesymbols}{"F4}
+}{}
+\stix@MathDelimiter{\uparrow}    {\mathrel}{arrows1}{"7E}{arrows1}{"7E}
+\stix@MathDelimiter{\downarrow}  {\mathrel}{arrows1}{"9A}{arrows1}{"9A}
+\stix@MathDelimiter{\updownarrow}{\mathrel}{arrows1}{"9C}{arrows1}{"9C}
+\stix@MathDelimiter{\Uparrow}    {\mathrel}{arrows1}{"D8}{arrows1}{"D8}
+\stix@MathDelimiter{\Downarrow}  {\mathrel}{arrows1}{"DA}{arrows1}{"DA}
+\stix@MathDelimiter{\Updownarrow}{\mathrel}{arrows1}{"DC}{arrows1}{"DC}
+\stix@MathDelimiter{\UUparrow}   {\mathrel}{arrows1}{"FE}{arrows1}{"FE}
+\stix@MathDelimiter{\DDownarrow} {\mathrel}{arrows1}{"FF}{arrows1}{"FF}
+\stix@MathDelimiter{\Uuparrow}   {\mathrel}{arrows1}{"5F}{arrows1}{"5F}
+\stix@MathDelimiter{\Ddownarrow} {\mathrel}{arrows1}{"60}{arrows1}{"60}
+\stix@MathDelimiter{\arrowvert}  {\mathrel}{arrows1}{"3C}{arrows1}{"3C}
+\stix@MathDelimiter{\Arrowvert}  {\mathrel}{arrows1}{"3D}{arrows1}{"3D}
+%    \end{macrocode}
+%
+% \paragraph{Radicals}
+%
+%    \begin{macrocode}
+\stix@MathRadical{\sqrtsign}    {largesymbols}{"F9}{largesymbols}{"74}
+\stix@MathRadical{\longdivision}{largesymbols}{"FA}{largesymbols}{"FA}
+\def\surd{{\mathchar"13F9}}
+%    \end{macrocode}
+%
+% \paragraph{Integrals}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\smallintsl}             {\mathop}{integrals}{"00}
+\stix@MathSymbol{\smalliintsl}            {\mathop}{integrals}{"01}
+\stix@MathSymbol{\smalliiintsl}           {\mathop}{integrals}{"02}
+\stix@MathSymbol{\smallointsl}            {\mathop}{integrals}{"03}
+\stix@MathSymbol{\smalloiintsl}           {\mathop}{integrals}{"04}
+\stix@MathSymbol{\smalloiiintsl}          {\mathop}{integrals}{"05}
+\stix@MathSymbol{\smallintclockwisesl}    {\mathop}{integrals}{"06}
+\stix@MathSymbol{\smallvarointclockwisesl}{\mathop}{integrals}{"07}
+\stix@MathSymbol{\smallointctrclockwisesl}{\mathop}{integrals}{"08}
+\stix@MathSymbol{\smallsumintsl}          {\mathop}{integrals}{"09}
+\stix@MathSymbol{\smalliiiintsl}          {\mathop}{integrals}{"0A}
+\stix@MathSymbol{\smallintbarsl}          {\mathop}{integrals}{"0B}
+\stix@MathSymbol{\smallintBarsl}          {\mathop}{integrals}{"0C}
+\stix@MathSymbol{\smallfintsl}            {\mathop}{integrals}{"0D}
+\stix@MathSymbol{\smallcirfnintsl}        {\mathop}{integrals}{"0E}
+\stix@MathSymbol{\smallawintsl}           {\mathop}{integrals}{"0F}
+\stix@MathSymbol{\smallrppolintsl}        {\mathop}{integrals}{"10}
+\stix@MathSymbol{\smallscpolintsl}        {\mathop}{integrals}{"11}
+\stix@MathSymbol{\smallnpolintsl}         {\mathop}{integrals}{"12}
+\stix@MathSymbol{\smallpointintsl}        {\mathop}{integrals}{"13}
+\stix@MathSymbol{\smallsqintsl}           {\mathop}{integrals}{"14}
+\stix@MathSymbol{\smallintlarhksl}        {\mathop}{integrals}{"15}
+\stix@MathSymbol{\smallintxsl}            {\mathop}{integrals}{"16}
+\stix@MathSymbol{\smallintcapsl}          {\mathop}{integrals}{"17}
+\stix@MathSymbol{\smallintcupsl}          {\mathop}{integrals}{"18}
+\stix@MathSymbol{\smallupintsl}           {\mathop}{integrals}{"19}
+\stix@MathSymbol{\smalllowintsl}          {\mathop}{integrals}{"1A}
+\stix@MathSymbol{\smallintup}             {\mathop}{integrals}{"1B}
+\stix@MathSymbol{\smalliintup}            {\mathop}{integrals}{"1C}
+\stix@MathSymbol{\smalliiintup}           {\mathop}{integrals}{"1D}
+\stix@MathSymbol{\smallointup}            {\mathop}{integrals}{"1E}
+\stix@MathSymbol{\smalloiintup}           {\mathop}{integrals}{"1F}
+\stix@MathSymbol{\smalloiiintup}          {\mathop}{integrals}{"20}
+\stix@MathSymbol{\smallintclockwiseup}    {\mathop}{integrals}{"21}
+\stix@MathSymbol{\smallvarointclockwiseup}{\mathop}{integrals}{"22}
+\stix@MathSymbol{\smallointctrclockwiseup}{\mathop}{integrals}{"23}
+\stix@MathSymbol{\smallsumintup}          {\mathop}{integrals}{"24}
+\stix@MathSymbol{\smalliiiintup}          {\mathop}{integrals}{"25}
+\stix@MathSymbol{\smallintbarup}          {\mathop}{integrals}{"26}
+\stix@MathSymbol{\smallintBarup}          {\mathop}{integrals}{"27}
+\stix@MathSymbol{\smallfintup}            {\mathop}{integrals}{"28}
+\stix@MathSymbol{\smallcirfnintup}        {\mathop}{integrals}{"29}
+\stix@MathSymbol{\smallawintup}           {\mathop}{integrals}{"2A}
+\stix@MathSymbol{\smallrppolintup}        {\mathop}{integrals}{"2B}
+\stix@MathSymbol{\smallscpolintup}        {\mathop}{integrals}{"2C}
+\stix@MathSymbol{\smallnpolintup}         {\mathop}{integrals}{"2D}
+\stix@MathSymbol{\smallpointintup}        {\mathop}{integrals}{"2E}
+\stix@MathSymbol{\smallsqintup}           {\mathop}{integrals}{"2F}
+\stix@MathSymbol{\smallintlarhkup}        {\mathop}{integrals}{"30}
+\stix@MathSymbol{\smallintxup}            {\mathop}{integrals}{"31}
+\stix@MathSymbol{\smallintcapup}          {\mathop}{integrals}{"32}
+\stix@MathSymbol{\smallintcupup}          {\mathop}{integrals}{"33}
+\stix@MathSymbol{\smallupintup}           {\mathop}{integrals}{"34}
+\stix@MathSymbol{\smalllowintup}          {\mathop}{integrals}{"35}
+\stix@MathSymbol{\intslop}                {\mathop}{integrals}{"94}
+\stix@MathSymbol{\iintslop}               {\mathop}{integrals}{"95}
+\stix@MathSymbol{\iiintslop}              {\mathop}{integrals}{"96}
+\stix@MathSymbol{\ointslop}               {\mathop}{integrals}{"97}
+\stix@MathSymbol{\oiintslop}              {\mathop}{integrals}{"98}
+\stix@MathSymbol{\oiiintslop}             {\mathop}{integrals}{"99}
+\stix@MathSymbol{\intclockwiseslop}       {\mathop}{integrals}{"9A}
+\stix@MathSymbol{\varointclockwiseslop}   {\mathop}{integrals}{"9B}
+\stix@MathSymbol{\ointctrclockwiseslop}   {\mathop}{integrals}{"9C}
+\stix@MathSymbol{\sumintslop}             {\mathop}{integrals}{"9D}
+\stix@MathSymbol{\iiiintslop}             {\mathop}{integrals}{"9E}
+\stix@MathSymbol{\intbarslop}             {\mathop}{integrals}{"9F}
+\stix@MathSymbol{\intBarslop}             {\mathop}{integrals}{"A0}
+\stix@MathSymbol{\fintslop}               {\mathop}{integrals}{"A1}
+\stix@MathSymbol{\cirfnintslop}           {\mathop}{integrals}{"A2}
+\stix@MathSymbol{\awintslop}              {\mathop}{integrals}{"A3}
+\stix@MathSymbol{\rppolintslop}           {\mathop}{integrals}{"A4}
+\stix@MathSymbol{\scpolintslop}           {\mathop}{integrals}{"A5}
+\stix@MathSymbol{\npolintslop}            {\mathop}{integrals}{"A6}
+\stix@MathSymbol{\pointintslop}           {\mathop}{integrals}{"A7}
+\stix@MathSymbol{\sqintslop}              {\mathop}{integrals}{"A8}
+\stix@MathSymbol{\intlarhkslop}           {\mathop}{integrals}{"A9}
+\stix@MathSymbol{\intxslop}               {\mathop}{integrals}{"AA}
+\stix@MathSymbol{\intcapslop}             {\mathop}{integrals}{"AB}
+\stix@MathSymbol{\intcupslop}             {\mathop}{integrals}{"AC}
+\stix@MathSymbol{\upintslop}              {\mathop}{integrals}{"AD}
+\stix@MathSymbol{\lowintslop}             {\mathop}{integrals}{"AE}
+\stix@MathSymbol{\intupop}                {\mathop}{integrals}{"AF}
+\stix@MathSymbol{\iintupop}               {\mathop}{integrals}{"B0}
+\stix@MathSymbol{\iiintupop}              {\mathop}{integrals}{"B1}
+\stix@MathSymbol{\ointupop}               {\mathop}{integrals}{"B2}
+\stix@MathSymbol{\oiintupop}              {\mathop}{integrals}{"B3}
+\stix@MathSymbol{\oiiintupop}             {\mathop}{integrals}{"B4}
+\stix@MathSymbol{\intclockwiseupop}       {\mathop}{integrals}{"B5}
+\stix@MathSymbol{\varointclockwiseupop}   {\mathop}{integrals}{"B6}
+\stix@MathSymbol{\ointctrclockwiseupop}   {\mathop}{integrals}{"B7}
+\stix@MathSymbol{\sumintupop}             {\mathop}{integrals}{"B8}
+\stix@MathSymbol{\iiiintupop}             {\mathop}{integrals}{"B9}
+\stix@MathSymbol{\intbarupop}             {\mathop}{integrals}{"BA}
+\stix@MathSymbol{\intBarupop}             {\mathop}{integrals}{"BB}
+\stix@MathSymbol{\fintupop}               {\mathop}{integrals}{"BC}
+\stix@MathSymbol{\cirfnintupop}           {\mathop}{integrals}{"BD}
+\stix@MathSymbol{\awintupop}              {\mathop}{integrals}{"BE}
+\stix@MathSymbol{\rppolintupop}           {\mathop}{integrals}{"BF}
+\stix@MathSymbol{\scpolintupop}           {\mathop}{integrals}{"C0}
+\stix@MathSymbol{\npolintupop}            {\mathop}{integrals}{"C1}
+\stix@MathSymbol{\pointintupop}           {\mathop}{integrals}{"C2}
+\stix@MathSymbol{\sqintupop}              {\mathop}{integrals}{"C3}
+\stix@MathSymbol{\intlarhkupop}           {\mathop}{integrals}{"C4}
+\stix@MathSymbol{\intxupop}               {\mathop}{integrals}{"C5}
+\stix@MathSymbol{\intcapupop}             {\mathop}{integrals}{"C6}
+\stix@MathSymbol{\intcupupop}             {\mathop}{integrals}{"C7}
+\stix@MathSymbol{\upintupop}              {\mathop}{integrals}{"C8}
+\stix@MathSymbol{\lowintupop}             {\mathop}{integrals}{"C9}
+
+\stix@MathSymbol{\circledS}               {\mathord}{integrals}{"3B}
+\stix@MathSymbol{\diagdown}               {\mathord}{integrals}{"3C}
+\stix@MathSymbol{\diagup}                 {\mathord}{integrals}{"3D}
+\stix@MathSymbol{\eth}                    {\mathord}{integrals}{"3E}
+\stix@MathSymbol{\smallfrown}             {\mathrel}{integrals}{"3F}
+\stix@MathSymbol{\smallsmile}             {\mathrel}{integrals}{"40}
+\stix@MathSymbol{\gvertneqq}              {\mathrel}{integrals}{"5B}
+\stix@MathSymbol{\lvertneqq}              {\mathrel}{integrals}{"5C}
+\stix@MathSymbol{\nshortmid}              {\mathrel}{integrals}{"5D}
+\stix@MathSymbol{\nshortparallel}         {\mathrel}{integrals}{"5E}
+\stix@MathSymbol{\shortmid}               {\mathrel}{integrals}{"5F}
+\stix@MathSymbol{\shortparallel}          {\mathrel}{integrals}{"60}
+\stix@MathSymbol{\varsubsetneq}           {\mathrel}{integrals}{"61}
+\stix@MathSymbol{\varsupsetneq}           {\mathrel}{integrals}{"62}
+\stix@MathSymbol{\varsubsetneqq}          {\mathrel}{integrals}{"63}
+\stix@MathSymbol{\varsupsetneqq}          {\mathrel}{integrals}{"64}
+\stix@MathSymbol{\varkappa}               {\mathord}{integrals}{"7A}
+\stix@MathSymbol{\digamma}                {\mathord}{integrals}{"7B}
+\stix@MathSymbol{\backepsilon}            {\mathord}{integrals}{"7C}
+\stix@MathSymbol{\varpropto}              {\mathrel}{integrals}{"7E}
+%    \end{macrocode}
+%
+% For compatibility with \pkg{amsfonts} where they are defined to work both in
+% text and math mode.
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\yenmath}                {\mathord}{integrals}{"7D}
+\stix@MathSymbol{\circledRmath}           {\mathord}{integrals}{"3A}
+\stix@MathSymbol{\maltesemath}            {\mathord}{arrows3}{"83}
+\stix@MathSymbol{\circledstar}            {\mathord}{arrows3}{"84}
+\DeclareRobustCommand\yen{%
+  \ifmmode\yenmath\else{\fontencoding{TS1}\selectfont\char"A5}\fi}
+\DeclareRobustCommand\circledR{%
+  \ifmmode\circledRmath\else{\fontencoding{TS1}\selectfont\char"AE}\fi}
+\DeclareRobustCommand\checkmark{\ensuremath{\checkmarkmath}}
+\DeclareRobustCommand\maltese{\ensuremath{\maltesemath}}
+%    \end{macrocode}
+%
+% When |upint| package option is specified, integrals will be upright by
+% default.
+%
+%    \begin{macrocode}
+\ifstix@upint
+    \let\smallint=\smallintup
+    \let\smalliint=\smalliintup
+    \let\smalliiint=\smalliiintup
+    \let\smalloint=\smallointup
+    \let\smalloiint=\smalloiintup
+    \let\smalloiiint=\smalloiiintup
+    \let\smallintclockwise=\smallintclockwiseup
+    \let\smallvarointclockwise=\smallvarointclockwiseup
+    \let\smallointctrclockwise=\smallointctrclockwiseup
+    \let\smallsumint=\smallsumintup
+    \let\smalliiiint=\smalliiiintup
+    \let\smallintbar=\smallintbarup
+    \let\smallintBar=\smallintBarup
+    \let\smallfint=\smallfintup
+    \let\smallcirfnint=\smallcirfnintup
+    \let\smallawint=\smallawintup
+    \let\smallrppolint=\smallrppolintup
+    \let\smallscpolint=\smallscpolintup
+    \let\smallnpolint=\smallnpolintup
+    \let\smallpointint=\smallpointintup
+    \let\smallsqint=\smallsqintup
+    \let\smallintlarhk=\smallintlarhkup
+    \let\smallintx=\smallintxup
+    \let\smallintcap=\smallintcapup
+    \let\smallintcup=\smallintcupup
+    \let\smallupint=\smallupintup
+    \let\smalllowint=\smalllowintup
+    \let\intop=\intupop
+    \let\iintop=\iintupop
+    \let\iiintop=\iiintupop
+    \let\ointop=\ointupop
+    \let\oiintop=\oiintupop
+    \let\oiiintop=\oiiintupop
+    \let\intclockwiseop=\intclockwiseupop
+    \let\varointclockwiseop=\varointclockwiseupop
+    \let\ointctrclockwiseop=\ointctrclockwiseupop
+    \let\sumintop=\sumintupop
+    \let\iiiintop=\iiiintupop
+    \let\intbarop=\intbarupop
+    \let\intBarop=\intBarupop
+    \let\fintop=\fintupop
+    \let\cirfnintop=\cirfnintupop
+    \let\awintop=\awintupop
+    \let\rppolintop=\rppolintupop
+    \let\scpolintop=\scpolintupop
+    \let\npolintop=\npolintupop
+    \let\pointintop=\pointintupop
+    \let\sqintop=\sqintupop
+    \let\intlarhkop=\intlarhkupop
+    \let\intxop=\intxupop
+    \let\intcapop=\intcapupop
+    \let\intcupop=\intcupupop
+    \let\upintop=\upintupop
+    \let\lowintop=\lowintupop
+\else
+    \let\smallint=\smallintsl
+    \let\smalliint=\smalliintsl
+    \let\smalliiint=\smalliiintsl
+    \let\smalloint=\smallointsl
+    \let\smalloiint=\smalloiintsl
+    \let\smalloiiint=\smalloiiintsl
+    \let\smallintclockwise=\smallintclockwisesl
+    \let\smallvarointclockwise=\smallvarointclockwisesl
+    \let\smallointctrclockwise=\smallointctrclockwisesl
+    \let\smallsumint=\smallsumintsl
+    \let\smalliiiint=\smalliiiintsl
+    \let\smallintbar=\smallintbarsl
+    \let\smallintBar=\smallintBarsl
+    \let\smallfint=\smallfintsl
+    \let\smallcirfnint=\smallcirfnintsl
+    \let\smallawint=\smallawintsl
+    \let\smallrppolint=\smallrppolintsl
+    \let\smallscpolint=\smallscpolintsl
+    \let\smallnpolint=\smallnpolintsl
+    \let\smallpointint=\smallpointintsl
+    \let\smallsqint=\smallsqintsl
+    \let\smallintlarhk=\smallintlarhksl
+    \let\smallintx=\smallintxsl
+    \let\smallintcap=\smallintcapsl
+    \let\smallintcup=\smallintcupsl
+    \let\smallupint=\smallupintsl
+    \let\smalllowint=\smalllowintsl
+    \let\intop=\intslop
+    \let\iintop=\iintslop
+    \let\iiintop=\iiintslop
+    \let\ointop=\ointslop
+    \let\oiintop=\oiintslop
+    \let\oiiintop=\oiiintslop
+    \let\intclockwiseop=\intclockwiseslop
+    \let\varointclockwiseop=\varointclockwiseslop
+    \let\ointctrclockwiseop=\ointctrclockwiseslop
+    \let\sumintop=\sumintslop
+    \let\iiiintop=\iiiintslop
+    \let\intbarop=\intbarslop
+    \let\intBarop=\intBarslop
+    \let\fintop=\fintslop
+    \let\cirfnintop=\cirfnintslop
+    \let\awintop=\awintslop
+    \let\rppolintop=\rppolintslop
+    \let\scpolintop=\scpolintslop
+    \let\npolintop=\npolintslop
+    \let\pointintop=\pointintslop
+    \let\sqintop=\sqintslop
+    \let\intlarhkop=\intlarhkslop
+    \let\intxop=\intxslop
+    \let\intcapop=\intcapslop
+    \let\intcupop=\intcupslop
+    \let\upintop=\upintslop
+    \let\lowintop=\lowintslop
+\fi
+\def\int{\DOTSI\intop\ilimits@}
+\def\iint{\DOTSI\iintop\ilimits@}
+\def\iiint{\DOTSI\iiintop\ilimits@}
+\def\oint{\DOTSI\ointop\ilimits@}
+\def\oiint{\DOTSI\oiintop\ilimits@}
+\def\oiiint{\DOTSI\oiiintop\ilimits@}
+\def\intclockwise{\DOTSI\intclockwiseop\ilimits@}
+\def\varointclockwise{\DOTSI\varointclockwiseop\ilimits@}
+\def\ointctrclockwise{\DOTSI\ointctrclockwiseop\ilimits@}
+\def\sumint{\DOTSI\sumintop\ilimits@}
+\def\iiiint{\DOTSI\iiiintop\ilimits@}
+\def\intbar{\DOTSI\intbarop\ilimits@}
+\def\intBar{\DOTSI\intBarop\ilimits@}
+\def\fint{\DOTSI\fintop\ilimits@}
+\def\cirfnint{\DOTSI\cirfnintop\ilimits@}
+\def\awint{\DOTSI\awintop\ilimits@}
+\def\rppolint{\DOTSI\rppolintop\ilimits@}
+\def\scpolint{\DOTSI\scpolintop\ilimits@}
+\def\npolint{\DOTSI\npolintop\ilimits@}
+\def\pointint{\DOTSI\pointintop\ilimits@}
+\def\sqint{\DOTSI\sqintop\ilimits@}
+\def\intlarhk{\DOTSI\intlarhkop\ilimits@}
+\def\intx{\DOTSI\intxop\ilimits@}
+\def\intcap{\DOTSI\intcapop\ilimits@}
+\def\intcup{\DOTSI\intcupop\ilimits@}
+\def\upint{\DOTSI\upintop\ilimits@}
+\def\lowint{\DOTSI\lowintop\ilimits@}
+%    \end{macrocode}
+%
+% Upright integrals can be accessed using |up| suffix, and |sl| for slanted,
+% despite the default integrals shape.
+%
+%    \begin{macrocode}
+\def\intsl{\DOTSI\intslop\ilimits@}
+\def\iintsl{\DOTSI\iintslop\ilimits@}
+\def\iiintsl{\DOTSI\iiintslop\ilimits@}
+\def\ointsl{\DOTSI\ointslop\ilimits@}
+\def\oiintsl{\DOTSI\oiintslop\ilimits@}
+\def\oiiintsl{\DOTSI\oiiintslop\ilimits@}
+\def\intclockwisesl{\DOTSI\intclockwiseslop\ilimits@}
+\def\varointclockwisesl{\DOTSI\varointclockwiseslop\ilimits@}
+\def\ointctrclockwisesl{\DOTSI\ointctrclockwiseslop\ilimits@}
+\def\sumintsl{\DOTSI\sumintslop\ilimits@}
+\def\iiiintsl{\DOTSI\iiiintslop\ilimits@}
+\def\intbarsl{\DOTSI\intbarslop\ilimits@}
+\def\intBarsl{\DOTSI\intBarslop\ilimits@}
+\def\fintsl{\DOTSI\fintslop\ilimits@}
+\def\cirfnintsl{\DOTSI\cirfnintslop\ilimits@}
+\def\awintsl{\DOTSI\awintslop\ilimits@}
+\def\rppolintsl{\DOTSI\rppolintslop\ilimits@}
+\def\scpolintsl{\DOTSI\scpolintslop\ilimits@}
+\def\npolintsl{\DOTSI\npolintslop\ilimits@}
+\def\pointintsl{\DOTSI\pointintslop\ilimits@}
+\def\sqintsl{\DOTSI\sqintslop\ilimits@}
+\def\intlarhksl{\DOTSI\intlarhkslop\ilimits@}
+\def\intxsl{\DOTSI\intxslop\ilimits@}
+\def\intcapsl{\DOTSI\intcapslop\ilimits@}
+\def\intcupsl{\DOTSI\intcupslop\ilimits@}
+\def\upintsl{\DOTSI\upintslop\ilimits@}
+\def\lowintsl{\DOTSI\lowintslop\ilimits@}
+\def\intup{\DOTSI\intupop\ilimits@}
+\def\iintup{\DOTSI\iintupop\ilimits@}
+\def\iiintup{\DOTSI\iiintupop\ilimits@}
+\def\ointup{\DOTSI\ointupop\ilimits@}
+\def\oiintup{\DOTSI\oiintupop\ilimits@}
+\def\oiiintup{\DOTSI\oiiintupop\ilimits@}
+\def\intclockwiseup{\DOTSI\intclockwiseupop\ilimits@}
+\def\varointclockwiseup{\DOTSI\varointclockwiseupop\ilimits@}
+\def\ointctrclockwiseup{\DOTSI\ointctrclockwiseupop\ilimits@}
+\def\sumintup{\DOTSI\sumintupop\ilimits@}
+\def\iiiintup{\DOTSI\iiiintupop\ilimits@}
+\def\intbarup{\DOTSI\intbarupop\ilimits@}
+\def\intBarup{\DOTSI\intBarupop\ilimits@}
+\def\fintup{\DOTSI\fintupop\ilimits@}
+\def\cirfnintup{\DOTSI\cirfnintupop\ilimits@}
+\def\awintup{\DOTSI\awintupop\ilimits@}
+\def\rppolintup{\DOTSI\rppolintupop\ilimits@}
+\def\scpolintup{\DOTSI\scpolintupop\ilimits@}
+\def\npolintup{\DOTSI\npolintupop\ilimits@}
+\def\pointintup{\DOTSI\pointintupop\ilimits@}
+\def\sqintup{\DOTSI\sqintupop\ilimits@}
+\def\intlarhkup{\DOTSI\intlarhkupop\ilimits@}
+\def\intxup{\DOTSI\intxupop\ilimits@}
+\def\intcapup{\DOTSI\intcapupop\ilimits@}
+\def\intcupup{\DOTSI\intcupupop\ilimits@}
+\def\upintup{\DOTSI\upintupop\ilimits@}
+\def\lowintup{\DOTSI\lowintupop\ilimits@}
+%    \end{macrocode}
+%
+% \paragraph{Big operators}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\Bbbsumop}               {\mathop}{largesymbols}{"B0}
+\stix@MathSymbol{\prodop}                 {\mathop}{largesymbols}{"B1}
+\stix@MathSymbol{\coprodop}               {\mathop}{largesymbols}{"B2}
+\stix@MathSymbol{\sumop}                  {\mathop}{largesymbols}{"B3}
+\stix@MathSymbol{\bigwedgeop}             {\mathop}{largesymbols}{"B4}
+\stix@MathSymbol{\bigveeop}               {\mathop}{largesymbols}{"B5}
+\stix@MathSymbol{\bigcapop}               {\mathop}{largesymbols}{"B6}
+\stix@MathSymbol{\bigcupop}               {\mathop}{largesymbols}{"B7}
+\stix@MathSymbol{\xsolop}                 {\mathop}{largesymbols}{"B8}
+\stix@MathSymbol{\xbsolop}                {\mathop}{largesymbols}{"B9}
+\stix@MathSymbol{\bigodotop}              {\mathop}{largesymbols}{"BA}
+\stix@MathSymbol{\bigoplusop}             {\mathop}{largesymbols}{"BB}
+\stix@MathSymbol{\bigotimesop}            {\mathop}{largesymbols}{"BC}
+\stix@MathSymbol{\bigcupdotop}            {\mathop}{largesymbols}{"BD}
+\stix@MathSymbol{\biguplusop}             {\mathop}{largesymbols}{"BE}
+\stix@MathSymbol{\bigsqcapop}             {\mathop}{largesymbols}{"BF}
+\stix@MathSymbol{\bigsqcupop}             {\mathop}{largesymbols}{"C0}
+\stix@MathSymbol{\conjquantop}            {\mathop}{largesymbols}{"C1}
+\stix@MathSymbol{\disjquantop}            {\mathop}{largesymbols}{"C2}
+\stix@MathSymbol{\bigtimesop}             {\mathop}{largesymbols}{"C3}
+\stix@MathSymbol{\modtwosumop}            {\mathop}{largesymbols}{"C4}
+\stix@MathSymbol{\bigtalloblongop}        {\mathop}{largesymbols}{"C5}
+\def\Bbbsum{\DOTSI\Bbbsumop\slimits@}
+\def\prod{\DOTSI\prodop\slimits@}
+\def\coprod{\DOTSI\coprodop\slimits@}
+\def\sum{\DOTSI\sumop\slimits@}
+\def\bigwedge{\DOTSI\bigwedgeop\slimits@}
+\def\bigvee{\DOTSI\bigveeop\slimits@}
+\def\bigcap{\DOTSI\bigcapop\slimits@}
+\def\bigcup{\DOTSI\bigcupop\slimits@}
+\def\xsol{\DOTSI\xsolop\slimits@}
+\def\xbsol{\DOTSI\xbsolop\slimits@}
+\def\bigodot{\DOTSI\bigodotop\slimits@}
+\def\bigoplus{\DOTSI\bigoplusop\slimits@}
+\def\bigotimes{\DOTSI\bigotimesop\slimits@}
+\def\bigcupdot{\DOTSI\bigcupdotop\slimits@}
+\def\biguplus{\DOTSI\biguplusop\slimits@}
+\def\bigsqcap{\DOTSI\bigsqcapop\slimits@}
+\def\bigsqcup{\DOTSI\bigsqcupop\slimits@}
+\def\conjquant{\DOTSI\conjquantop\slimits@}
+\def\disjquant{\DOTSI\disjquantop\slimits@}
+\def\bigtimes{\DOTSI\bigtimesop\slimits@}
+\def\modtwosum{\DOTSI\modtwosumop\slimits@}
+\def\bigtalloblong{\DOTSI\bigtalloblongop\slimits@}
+%    \end{macrocode}
+%
+% \paragraph{Math accents}
+%
+%    \begin{macrocode}
+\stix@MathAccent{\grave}                {\mathalpha}{letters}{"80}
+\stix@MathAccent{\acute}                {\mathalpha}{letters}{"81}
+\stix@MathAccent{\hat}                  {\mathalpha}{letters}{"82}
+\stix@MathAccent{\tilde}                {\mathalpha}{letters}{"83}
+\stix@MathAccent{\bar}                  {\mathalpha}{letters}{"84}
+\stix@MathAccent{\breve}                {\mathalpha}{letters}{"85}
+\stix@MathAccent{\dot}                  {\mathalpha}{letters}{"86}
+\stix@MathAccent{\ddot}                 {\mathalpha}{letters}{"87}
+\stix@MathAccent{\ovhook}               {\mathalpha}{letters}{"88}
+\stix@MathAccent{\mathring}             {\mathalpha}{letters}{"89}
+\stix@MathAccent{\check}                {\mathalpha}{letters}{"8A}
+\stix@MathAccent{\candra}               {\mathalpha}{letters}{"8B}
+\stix@MathAccent{\oturnedcomma}         {\mathalpha}{letters}{"8C}
+\stix@MathAccent{\ocommatopright}       {\mathalpha}{letters}{"8D}
+\stix@MathAccent{\droang}               {\mathalpha}{letters}{"8E}
+\stix@MathAccent{\leftharpoonaccent}    {\mathalpha}{letters}{"8F}
+\stix@MathAccent{\rightharpoonaccent}   {\mathalpha}{letters}{"90}
+\stix@MathAccent{\leftarrowaccent}      {\mathalpha}{letters}{"91}
+\stix@MathAccent{\vec}                  {\mathalpha}{letters}{"92}
+        % not \let because amsmath redefines \vec
+        \def\rightarrowaccent{\vec}
+\stix@MathAccent{\dddot}                {\mathalpha}{letters}{"93}
+\stix@MathAccent{\ddddot}               {\mathalpha}{letters}{"94}
+\stix@MathAccent{\leftrightarrowaccent} {\mathalpha}{letters}{"95}
+\stix@MathAccent{\annuity}              {\mathalpha}{letters}{"96}
+\stix@MathAccent{\widebridgeabove}      {\mathalpha}{letters}{"97}
+\stix@MathAccent{\asteraccent}          {\mathalpha}{letters}{"98}
+%    \end{macrocode}
+%
+% \pkg{amsmath} breaks our wide accents, so we make sure its
+% |\set@mathaccent| has no effect while defining them.
+%
+%    \begin{macrocode}
+\begingroup
+  \def\set@mathaccent#1#2#3#4{%
+      \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
+  \stix@MathAccent{\widehat}            {\mathord}{letters}{"9A}
+  \stix@MathAccent{\widetilde}          {\mathord}{letters}{"9B}
+  \stix@MathAccent{\widecheck}          {\mathord}{letters}{"9C}
+\endgroup
+%    \end{macrocode}
+%
+% \paragraph{Over/under braces and brackets}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\braceld}{\mathord}{letters}{"A9}
+\stix@MathSymbol{\bracerd}{\mathord}{letters}{"AA}
+\stix@MathSymbol{\bracelu}{\mathord}{letters}{"AB}
+\stix@MathSymbol{\braceru}{\mathord}{letters}{"AC}
+\stix@MathSymbol{\braceex}{\mathord}{letters}{"AD}
+\stix@MathSymbol{\bracemu}{\mathord}{letters}{"AE}
+\stix@MathSymbol{\bracemd}{\mathord}{letters}{"AF}
+\stix@MathSymbol{\parenld}{\mathord}{letters}{"B0}
+\stix@MathSymbol{\parenrd}{\mathord}{letters}{"B1}
+\stix@MathSymbol{\parenlu}{\mathord}{letters}{"B2}
+\stix@MathSymbol{\parenru}{\mathord}{letters}{"B3}
+\stix@MathSymbol{\bracketld}{\mathord}{letters}{"B4}
+\stix@MathSymbol{\bracketrd}{\mathord}{letters}{"B5}
+\stix@MathSymbol{\bracketlu}{\mathord}{letters}{"B6}
+\stix@MathSymbol{\bracketru}{\mathord}{letters}{"B7}
+\def\stix@braceglue{\hskip -.15em plus .15em}
+\def\downbracefill{$\m@th%
+    \braceld\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracemu\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracerd$}
+\def\upbracefill{$\m@th%
+    \bracelu\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracemd\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\braceru$}
+\def\stix@parenglue{\hskip -.2em plus .2em}
+\def\downparenfill{$\m@th%
+    \parenld\stix@parenglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@parenglue\parenrd$}
+\def\upparenfill{$\m@th%
+    \parenlu\stix@parenglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@parenglue\parenru$}
+\def\stix@overbrace#1#2{%
+    \mathop {%
+        \vbox {%
+            \m@th%
+            \ialign{##\crcr%
+                \noalign{\kern.3\fontdimen5\textfont2}%
+                    \csname down#1fill\endcsname\crcr%
+                \noalign{\kern.5\fontdimen5\textfont2\nointerlineskip}%
+                $\hfil\displaystyle{#2}\hfil$\crcr%
+            }%
+        }%
+    }%
+    \limits%
+}
+\def\stix@underbrace#1#2{
+    \mathop {%
+        \vtop {%
+            \m@th%
+            \ialign{##\crcr%
+                $\hfil\displaystyle{#2}\hfil$\crcr%
+                \noalign{\kern.5\fontdimen5\textfont2\nointerlineskip}%
+                \csname up#1fill\endcsname\crcr%
+                \noalign{\kern.3\fontdimen5\textfont2}%
+            }%
+        }%
+    }%
+    \limits%
+}
+\def\overbrace#1{\stix@overbrace{brace}{#1}}
+\def\overparen#1{\stix@overbrace{paren}{#1}}
+\def\underbrace#1{\stix@underbrace{brace}{#1}}
+\def\underparen#1{\stix@underbrace{paren}{#1}}
+%    \end{macrocode}
+%
+% \pkg{mathtools} defines over/under brackets that takes optional arguments,
+% we want to retain that.
+%
+%    \begin{macrocode}
+\AtBeginDocument{
+    \@ifpackageloaded{mathtools}{}{
+        \def\stix@bracketglue{\hskip -.85em plus .85em}
+        \def\downbracketfill{$\m@th%
+            \bracketld\stix@bracketglue%
+            \cleaders\hbox{$\braceex$}\hfill%
+            \stix@bracketglue\bracketrd$}
+        \def\upbracketfill{$\m@th%
+            \bracketlu\stix@bracketglue%
+            \cleaders\hbox{$\braceex$}\hfill%
+            \stix@bracketglue\bracketru$}
+        \def\underbracket#1{\stix@underbrace{bracket}{#1}}
+        \def\overbracket#1{\stix@overbrace{bracket}{#1}}
+    }
+}
+%    \end{macrocode}
+%
+% \paragraph{Over/under arrows}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\arrowaccentex}  {\mathord}{letters}{"99}
+\stix@MathSymbol{\harpoonaccentlt}{\mathord}{letters}{"8F}
+\stix@MathSymbol{\harpoonaccentrt}{\mathord}{letters}{"90}
+\stix@MathSymbol{\arrowaccentlt}  {\mathord}{letters}{"91}
+\stix@MathSymbol{\arrowaccentrt}  {\mathord}{letters}{"92}
+\def\stix@arrowaccentglue{\hskip -.23em plus .23em}
+\def\overleftarrowfill{$\m@th%
+    \arrowaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill$}
+\def\overrightarrowfill{$\m@th%
+    \cleaders\hbox{$\arrowaccentex$}\hfill%
+    \stix@arrowaccentglue\arrowaccentrt$}
+\def\overleftrightarrowfill{$\m@th%
+    \arrowaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill%
+    \stix@arrowaccentglue\arrowaccentrt$}
+\def\overleftharpoonfill{$\m@th%
+    \harpoonaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill$}
+\def\overrightharpoonfill{$\m@th%
+   \cleaders\hbox{$\arrowaccentex$}\hfill%
+   \stix@arrowaccentglue\harpoonaccentrt$}
+\def\stix@overarrow#1#2#3{%
+    \vbox {%
+        \m@th%
+        \ialign{##\crcr%
+            \csname over#1fill\endcsname\crcr%
+            \noalign{\kern -1ex\nointerlineskip}%
+            $\hfil#2#3\hfil$\crcr%
+        }%
+    }%
+}
+\def\stix@underarrow#1#2#3{
+    \vtop {%
+        \m@th%
+        \ialign{##\crcr%
+            $\hfil#2#3\hfil$\crcr%
+            \noalign{\kern .2ex\nointerlineskip}%
+            \csname over#1fill\endcsname\crcr%
+            \noalign{\kern -1ex\nointerlineskip}%
+        }%
+    }%
+}
+\def\overleftarrow{\mathpalette{\stix@overarrow{leftarrow}}}
+\def\overrightarrow{\mathpalette{\stix@overarrow{rightarrow}}}
+\def\overleftrightarrow{\mathpalette{\stix@overarrow{leftrightarrow}}}
+\def\overleftharpoon{\mathpalette{\stix@overarrow{leftharpoon}}}
+\def\overrightharpoon{\mathpalette{\stix@overarrow{rightharpoon}}}
+\def\underleftarrow{\mathpalette{\stix@underarrow{leftarrow}}}
+\def\underrightarrow{\mathpalette{\stix@underarrow{rightarrow}}}
+\def\underleftrightarrow{\mathpalette{\stix@underarrow{leftrightarrow}}}
+\def\underleftharpoon{\mathpalette{\stix@underarrow{leftharpoon}}}
+\def\underrightharpoon{\mathpalette{\stix@underarrow{rightharpoon}}}
+%    \end{macrocode}
+%
+% \paragraph{Arrows}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\lhook}                    {\mathrel}{arrows1}{"2A}
+\stix@MathSymbol{\rhook}                    {\mathrel}{arrows1}{"2B}
+\stix@MathSymbol{\relbar}                   {\mathrel}{arrows1}{"2C}
+\stix@MathSymbol{\Relbar}                   {\mathrel}{arrows1}{"2D}
+\stix@MathSymbol{\Rrelbar}                  {\mathrel}{arrows1}{"2E}
+\stix@MathSymbol{\RRelbar}                  {\mathrel}{arrows1}{"2F}
+
+\stix@MathSymbol{\mapsfromchar}             {\mathrel}{arrows1}{"3A}
+\stix@MathSymbol{\mapstochar}               {\mathrel}{arrows1}{"3B}
+\stix@MathSymbol{\rightarrowbackapprox}     {\mathrel}{arrows1}{"40}
+\stix@MathSymbol{\similarleftarrow}         {\mathrel}{arrows1}{"5B}
+\stix@MathSymbol{\leftarrowapprox}          {\mathrel}{arrows1}{"5C}
+\stix@MathSymbol{\leftarrowbsimilar}        {\mathrel}{arrows1}{"5D}
+\stix@MathSymbol{\rightarrowbsimilar}       {\mathrel}{arrows1}{"5E}
+\stix@MathSymbol{\leftarrow}                {\mathrel}{arrows1}{"7D} \let\gets=\leftarrow
+\stix@MathSymbol{\rightarrow}               {\mathrel}{arrows1}{"99} \let\to=\rightarrow
+\stix@MathSymbol{\leftrightarrow}           {\mathrel}{arrows1}{"9B}
+\stix@MathSymbol{\nwarrow}                  {\mathrel}{arrows1}{"9D}
+\stix@MathSymbol{\nearrow}                  {\mathrel}{arrows1}{"9E}
+\stix@MathSymbol{\searrow}                  {\mathrel}{arrows1}{"9F}
+
+\stix@MathSymbol{\swarrow}                  {\mathrel}{arrows1}{"A0}
+\stix@MathSymbol{\nleftarrow}               {\mathrel}{arrows1}{"A1}
+\stix@MathSymbol{\nrightarrow}              {\mathrel}{arrows1}{"A2}
+\stix@MathSymbol{\leftwavearrow}            {\mathrel}{arrows1}{"A3}
+\stix@MathSymbol{\rightwavearrow}           {\mathrel}{arrows1}{"A4}
+\stix@MathSymbol{\twoheadleftarrow}         {\mathrel}{arrows1}{"A5}
+\stix@MathSymbol{\twoheaduparrow}           {\mathrel}{arrows1}{"A6}
+\stix@MathSymbol{\twoheadrightarrow}        {\mathrel}{arrows1}{"A7}
+\stix@MathSymbol{\twoheaddownarrow}         {\mathrel}{arrows1}{"A8}
+\stix@MathSymbol{\leftarrowtail}            {\mathrel}{arrows1}{"A9}
+\stix@MathSymbol{\rightarrowtail}           {\mathrel}{arrows1}{"AA}
+\stix@MathSymbol{\mapsfrom}                 {\mathrel}{arrows1}{"AB}
+\stix@MathSymbol{\mapsup}                   {\mathrel}{arrows1}{"AC}
+\stix@MathSymbol{\mapsto}                   {\mathrel}{arrows1}{"AD}
+\stix@MathSymbol{\mapsdown}                 {\mathrel}{arrows1}{"AE}
+\stix@MathSymbol{\updownarrowbar}           {\mathord}{arrows1}{"AF}
+
+\stix@MathSymbol{\hookleftarrow}            {\mathrel}{arrows1}{"B0}
+\stix@MathSymbol{\hookrightarrow}           {\mathrel}{arrows1}{"B1}
+\stix@MathSymbol{\looparrowleft}            {\mathrel}{arrows1}{"B2}
+\stix@MathSymbol{\looparrowright}           {\mathrel}{arrows1}{"B3}
+\stix@MathSymbol{\leftrightsquigarrow}      {\mathrel}{arrows1}{"B4}
+\stix@MathSymbol{\nleftrightarrow}          {\mathrel}{arrows1}{"B5}
+\stix@MathSymbol{\downzigzagarrow}          {\mathrel}{arrows1}{"B6}
+\stix@MathSymbol{\Lsh}                      {\mathrel}{arrows1}{"B7}
+\stix@MathSymbol{\Rsh}                      {\mathrel}{arrows1}{"B8}
+\stix@MathSymbol{\Ldsh}                     {\mathrel}{arrows1}{"B9}
+\stix@MathSymbol{\Rdsh}                     {\mathrel}{arrows1}{"BA}
+\stix@MathSymbol{\linefeed}                 {\mathord}{arrows1}{"BB}
+\stix@MathSymbol{\carriagereturn}           {\mathord}{arrows1}{"BC}
+\stix@MathSymbol{\curvearrowleft}           {\mathrel}{arrows1}{"BD}
+\stix@MathSymbol{\curvearrowright}          {\mathrel}{arrows1}{"BE}
+\stix@MathSymbol{\barovernorthwestarrow}    {\mathord}{arrows1}{"BF}
+
+\stix@MathSymbol{\barleftarrowrightarrowbar}{\mathord}{arrows1}{"C0}
+\stix@MathSymbol{\acwopencirclearrow}       {\mathord}{arrows1}{"C1} \stix@MathSymbol{\circlearrowleft} {\mathrel}{arrows1}{"C1}
+\stix@MathSymbol{\cwopencirclearrow}        {\mathord}{arrows1}{"C2} \stix@MathSymbol{\circlearrowright}{\mathrel}{arrows1}{"C2}
+\stix@MathSymbol{\leftharpoonup}            {\mathrel}{arrows1}{"C3}
+\stix@MathSymbol{\leftharpoondown}          {\mathrel}{arrows1}{"C4}
+\stix@MathSymbol{\upharpoonright}           {\mathrel}{arrows1}{"C5} \let\restriction=\upharpoonright
+\stix@MathSymbol{\upharpoonleft}            {\mathrel}{arrows1}{"C6}
+\stix@MathSymbol{\rightharpoonup}           {\mathrel}{arrows1}{"C7}
+\stix@MathSymbol{\rightharpoondown}         {\mathrel}{arrows1}{"C8}
+\stix@MathSymbol{\downharpoonright}         {\mathrel}{arrows1}{"C9}
+\stix@MathSymbol{\downharpoonleft}          {\mathrel}{arrows1}{"CA}
+\stix@MathSymbol{\rightleftarrows}          {\mathrel}{arrows1}{"CB}
+\stix@MathSymbol{\updownarrows}             {\mathrel}{arrows1}{"CC}
+\stix@MathSymbol{\leftrightarrows}          {\mathrel}{arrows1}{"CD}
+\stix@MathSymbol{\leftleftarrows}           {\mathrel}{arrows1}{"CE}
+\stix@MathSymbol{\upuparrows}               {\mathrel}{arrows1}{"CF}
+
+\stix@MathSymbol{\rightrightarrows}         {\mathrel}{arrows1}{"D0}
+\stix@MathSymbol{\downdownarrows}           {\mathrel}{arrows1}{"D1}
+\stix@MathSymbol{\leftrightharpoons}        {\mathrel}{arrows1}{"D2}
+\stix@MathSymbol{\rightleftharpoons}        {\mathrel}{arrows1}{"D3}
+\stix@MathSymbol{\nLeftarrow}               {\mathrel}{arrows1}{"D4}
+\stix@MathSymbol{\nLeftrightarrow}          {\mathrel}{arrows1}{"D5}
+\stix@MathSymbol{\nRightarrow}              {\mathrel}{arrows1}{"D6}
+\stix@MathSymbol{\Leftarrow}                {\mathrel}{arrows1}{"D7}
+\stix@MathSymbol{\Rightarrow}               {\mathrel}{arrows1}{"D9}
+\stix@MathSymbol{\Leftrightarrow}           {\mathrel}{arrows1}{"DB}
+\stix@MathSymbol{\Nwarrow}                  {\mathrel}{arrows1}{"DD}
+\stix@MathSymbol{\Nearrow}                  {\mathrel}{arrows1}{"DE}
+\stix@MathSymbol{\Searrow}                  {\mathrel}{arrows1}{"DF}
+
+\stix@MathSymbol{\Swarrow}                  {\mathrel}{arrows1}{"E0}
+\stix@MathSymbol{\Lleftarrow}               {\mathrel}{arrows1}{"E1}
+\stix@MathSymbol{\Rrightarrow}              {\mathrel}{arrows1}{"E2}
+\stix@MathSymbol{\leftsquigarrow}           {\mathrel}{arrows1}{"E3}
+\stix@MathSymbol{\rightsquigarrow}          {\mathrel}{arrows1}{"E4} \let\leadsto=\rightsquigarrow
+\stix@MathSymbol{\nHuparrow}                {\mathord}{arrows1}{"E5}
+\stix@MathSymbol{\nHdownarrow}              {\mathord}{arrows1}{"E6}
+\stix@MathSymbol{\leftdasharrow}            {\mathord}{arrows1}{"E7}
+\stix@MathSymbol{\updasharrow}              {\mathord}{arrows1}{"E8}
+\stix@MathSymbol{\rightdasharrow}           {\mathord}{arrows1}{"E9}
+\stix@MathSymbol{\downdasharrow}            {\mathord}{arrows1}{"EA}
+\stix@MathSymbol{\barleftarrow}             {\mathrel}{arrows1}{"EB}
+\stix@MathSymbol{\rightarrowbar}            {\mathrel}{arrows1}{"EC}
+\stix@MathSymbol{\leftwhitearrow}           {\mathord}{arrows1}{"ED}
+\stix@MathSymbol{\upwhitearrow}             {\mathord}{arrows1}{"EE}
+\stix@MathSymbol{\rightwhitearrow}          {\mathord}{arrows1}{"EF}
+
+\stix@MathSymbol{\downwhitearrow}           {\mathord}{arrows1}{"F0}
+\stix@MathSymbol{\whitearrowupfrombar}      {\mathord}{arrows1}{"F1}
+\stix@MathSymbol{\circleonrightarrow}       {\mathrel}{arrows1}{"F2}
+\stix@MathSymbol{\downuparrows}             {\mathrel}{arrows1}{"F3}
+\stix@MathSymbol{\rightthreearrows}         {\mathrel}{arrows1}{"F4}
+\stix@MathSymbol{\nvleftarrow}              {\mathrel}{arrows1}{"F5}
+\stix@MathSymbol{\nvrightarrow}             {\mathrel}{arrows1}{"F6}
+\stix@MathSymbol{\nvleftrightarrow}         {\mathrel}{arrows1}{"F7}
+\stix@MathSymbol{\nVleftarrow}              {\mathrel}{arrows1}{"F8}
+\stix@MathSymbol{\nVrightarrow}             {\mathrel}{arrows1}{"F9}
+\stix@MathSymbol{\nVleftrightarrow}         {\mathrel}{arrows1}{"FA}
+\stix@MathSymbol{\leftarrowtriangle}        {\mathrel}{arrows1}{"FB}
+\stix@MathSymbol{\rightarrowtriangle}       {\mathrel}{arrows1}{"FC}
+\stix@MathSymbol{\leftrightarrowtriangle}   {\mathrel}{arrows1}{"FD}
+
+\stix@MathSymbol{\leftarrowonoplus}         {\mathrel}{arrows2}{"2A}
+\stix@MathSymbol{\longleftsquigarrow}       {\mathrel}{arrows2}{"2B}
+\stix@MathSymbol{\nvtwoheadleftarrow}       {\mathrel}{arrows2}{"2C}
+\stix@MathSymbol{\nVtwoheadleftarrow}       {\mathrel}{arrows2}{"2D}
+\stix@MathSymbol{\twoheadmapsfrom}          {\mathrel}{arrows2}{"2E}
+\stix@MathSymbol{\twoheadleftdbkarrow}      {\mathrel}{arrows2}{"2F}
+\stix@MathSymbol{\leftdotarrow}             {\mathrel}{arrows2}{"3A}
+\stix@MathSymbol{\nvleftarrowtail}          {\mathrel}{arrows2}{"3B}
+\stix@MathSymbol{\nVleftarrowtail}          {\mathrel}{arrows2}{"3C}
+\stix@MathSymbol{\twoheadleftarrowtail}     {\mathrel}{arrows2}{"3D}
+\stix@MathSymbol{\nvtwoheadleftarrowtail}   {\mathrel}{arrows2}{"3E}
+\stix@MathSymbol{\nVtwoheadleftarrowtail}   {\mathrel}{arrows2}{"3F}
+\stix@MathSymbol{\leftarrowx}               {\mathrel}{arrows2}{"40}
+\stix@MathSymbol{\leftcurvedarrow}          {\mathrel}{arrows2}{"5B}
+\stix@MathSymbol{\equalleftarrow}           {\mathrel}{arrows2}{"5C}
+\stix@MathSymbol{\bsimilarleftarrow}        {\mathrel}{arrows2}{"5D}
+\stix@MathSymbol{\leftarrowbackapprox}      {\mathrel}{arrows2}{"5E}
+\stix@MathSymbol{\rightarrowgtr}            {\mathrel}{arrows2}{"5F}
+\stix@MathSymbol{\rightarrowsupset}         {\mathrel}{arrows2}{"60}
+\stix@MathSymbol{\LLeftarrow}               {\mathrel}{arrows2}{"7D}
+\stix@MathSymbol{\RRightarrow}              {\mathrel}{arrows2}{"7E}
+
+\stix@MathSymbol{\nvtwoheadrightarrow}      {\mathrel}{arrows2}{"99}
+\stix@MathSymbol{\nVtwoheadrightarrow}      {\mathrel}{arrows2}{"9A}
+\stix@MathSymbol{\nvLeftarrow}              {\mathrel}{arrows2}{"9B}
+\stix@MathSymbol{\nvRightarrow}             {\mathrel}{arrows2}{"9C}
+\stix@MathSymbol{\nvLeftrightarrow}         {\mathrel}{arrows2}{"9D}
+\stix@MathSymbol{\twoheadmapsto}            {\mathrel}{arrows2}{"9E}
+\stix@MathSymbol{\Mapsfrom}                 {\mathrel}{arrows2}{"9F}
+
+\stix@MathSymbol{\Mapsto}                   {\mathrel}{arrows2}{"A0}
+\stix@MathSymbol{\downarrowbarred}          {\mathrel}{arrows2}{"A1}
+\stix@MathSymbol{\uparrowbarred}            {\mathrel}{arrows2}{"A2}
+\stix@MathSymbol{\circleonleftarrow}        {\mathrel}{arrows2}{"A3}
+\stix@MathSymbol{\leftthreearrows}          {\mathrel}{arrows2}{"A4}
+\stix@MathSymbol{\leftbkarrow}              {\mathrel}{arrows2}{"A5}
+\stix@MathSymbol{\rightbkarrow}             {\mathrel}{arrows2}{"A6}
+\stix@MathSymbol{\leftdbkarrow}             {\mathrel}{arrows2}{"A7} \let\dashleftarrow=\leftdbkarrow
+\stix@MathSymbol{\dbkarow}                  {\mathrel}{arrows2}{"A8} \let\dashrightarrow=\dbkarow \let\dasharrow=\dbkarow
+\stix@MathSymbol{\drbkarow}                 {\mathrel}{arrows2}{"A9}
+\stix@MathSymbol{\rightdotarrow}            {\mathrel}{arrows2}{"AA}
+\stix@MathSymbol{\baruparrow}               {\mathrel}{arrows2}{"AB}
+\stix@MathSymbol{\downarrowbar}             {\mathrel}{arrows2}{"AC}
+\stix@MathSymbol{\nvrightarrowtail}         {\mathrel}{arrows2}{"AD}
+\stix@MathSymbol{\nVrightarrowtail}         {\mathrel}{arrows2}{"AE}
+\stix@MathSymbol{\twoheadrightarrowtail}    {\mathrel}{arrows2}{"AF}
+
+\stix@MathSymbol{\nvtwoheadrightarrowtail}  {\mathrel}{arrows2}{"B0}
+\stix@MathSymbol{\nVtwoheadrightarrowtail}  {\mathrel}{arrows2}{"B1}
+\stix@MathSymbol{\lefttail}                 {\mathrel}{arrows2}{"B2}
+\stix@MathSymbol{\righttail}                {\mathrel}{arrows2}{"B3}
+\stix@MathSymbol{\leftdbltail}              {\mathrel}{arrows2}{"B4}
+\stix@MathSymbol{\rightdbltail}             {\mathrel}{arrows2}{"B5}
+\stix@MathSymbol{\diamondleftarrow}         {\mathrel}{arrows2}{"B6}
+\stix@MathSymbol{\rightarrowdiamond}        {\mathrel}{arrows2}{"B7}
+\stix@MathSymbol{\diamondleftarrowbar}      {\mathrel}{arrows2}{"B8}
+\stix@MathSymbol{\barrightarrowdiamond}     {\mathrel}{arrows2}{"B9}
+\stix@MathSymbol{\nwsearrow}                {\mathrel}{arrows2}{"BA}
+\stix@MathSymbol{\neswarrow}                {\mathrel}{arrows2}{"BB}
+\stix@MathSymbol{\hknwarrow}                {\mathrel}{arrows2}{"BC}
+\stix@MathSymbol{\hknearrow}                {\mathrel}{arrows2}{"BD}
+\stix@MathSymbol{\hksearow}                 {\mathrel}{arrows2}{"BE}
+\stix@MathSymbol{\hkswarow}                 {\mathrel}{arrows2}{"BF}
+
+\stix@MathSymbol{\tona}                     {\mathrel}{arrows2}{"C0}
+\stix@MathSymbol{\toea}                     {\mathrel}{arrows2}{"C1}
+\stix@MathSymbol{\tosa}                     {\mathrel}{arrows2}{"C2}
+\stix@MathSymbol{\towa}                     {\mathrel}{arrows2}{"C3}
+\stix@MathSymbol{\rdiagovfdiag}             {\mathord}{arrows2}{"C4}
+\stix@MathSymbol{\fdiagovrdiag}             {\mathord}{arrows2}{"C5}
+\stix@MathSymbol{\seovnearrow}              {\mathord}{arrows2}{"C6}
+\stix@MathSymbol{\neovsearrow}              {\mathord}{arrows2}{"C7}
+\stix@MathSymbol{\fdiagovnearrow}           {\mathord}{arrows2}{"C8}
+\stix@MathSymbol{\rdiagovsearrow}           {\mathord}{arrows2}{"C9}
+\stix@MathSymbol{\neovnwarrow}              {\mathord}{arrows2}{"CA}
+\stix@MathSymbol{\nwovnearrow}              {\mathord}{arrows2}{"CB}
+\stix@MathSymbol{\rightcurvedarrow}         {\mathrel}{arrows2}{"CC}
+\stix@MathSymbol{\uprightcurvearrow}        {\mathord}{arrows2}{"CD}
+\stix@MathSymbol{\downrightcurvedarrow}     {\mathord}{arrows2}{"CE}
+\stix@MathSymbol{\leftdowncurvedarrow}      {\mathrel}{arrows2}{"CF}
+
+\stix@MathSymbol{\rightdowncurvedarrow}     {\mathrel}{arrows2}{"D0}
+\stix@MathSymbol{\cwrightarcarrow}          {\mathrel}{arrows2}{"D1}
+\stix@MathSymbol{\acwleftarcarrow}          {\mathrel}{arrows2}{"D2}
+\stix@MathSymbol{\acwoverarcarrow}          {\mathrel}{arrows2}{"D3}
+\stix@MathSymbol{\acwunderarcarrow}         {\mathrel}{arrows2}{"D4}
+\stix@MathSymbol{\curvearrowrightminus}     {\mathrel}{arrows2}{"D5}
+\stix@MathSymbol{\curvearrowleftplus}       {\mathrel}{arrows2}{"D6}
+\stix@MathSymbol{\cwundercurvearrow}        {\mathrel}{arrows2}{"D7}
+\stix@MathSymbol{\ccwundercurvearrow}       {\mathrel}{arrows2}{"D8}
+\stix@MathSymbol{\acwcirclearrow}           {\mathrel}{arrows2}{"D9}
+\stix@MathSymbol{\cwcirclearrow}            {\mathrel}{arrows2}{"DA}
+\stix@MathSymbol{\rightarrowshortleftarrow} {\mathrel}{arrows2}{"DB}
+\stix@MathSymbol{\leftarrowshortrightarrow} {\mathrel}{arrows2}{"DC}
+\stix@MathSymbol{\shortrightarrowleftarrow} {\mathrel}{arrows2}{"DD}
+\stix@MathSymbol{\rightarrowplus}           {\mathrel}{arrows2}{"DE}
+\stix@MathSymbol{\leftarrowplus}            {\mathrel}{arrows2}{"DF}
+
+\stix@MathSymbol{\rightarrowx}              {\mathrel}{arrows2}{"E0}
+\stix@MathSymbol{\leftrightarrowcircle}     {\mathrel}{arrows2}{"E1}
+\stix@MathSymbol{\twoheaduparrowcircle}     {\mathrel}{arrows2}{"E2}
+\stix@MathSymbol{\leftrightharpoonupdown}   {\mathrel}{arrows2}{"E3}
+\stix@MathSymbol{\leftrightharpoondownup}   {\mathrel}{arrows2}{"E4}
+\stix@MathSymbol{\updownharpoonrightleft}   {\mathrel}{arrows2}{"E5}
+\stix@MathSymbol{\updownharpoonleftright}   {\mathrel}{arrows2}{"E6}
+\stix@MathSymbol{\leftrightharpoonupup}     {\mathrel}{arrows2}{"E7}
+\stix@MathSymbol{\updownharpoonrightright}  {\mathrel}{arrows2}{"E8}
+\stix@MathSymbol{\leftrightharpoondowndown} {\mathrel}{arrows2}{"E9}
+\stix@MathSymbol{\updownharpoonleftleft}    {\mathrel}{arrows2}{"EA}
+\stix@MathSymbol{\barleftharpoonup}         {\mathrel}{arrows2}{"EB}
+\stix@MathSymbol{\rightharpoonupbar}        {\mathrel}{arrows2}{"EC}
+\stix@MathSymbol{\barupharpoonright}        {\mathrel}{arrows2}{"ED}
+\stix@MathSymbol{\downharpoonrightbar}      {\mathrel}{arrows2}{"EE}
+\stix@MathSymbol{\barleftharpoondown}       {\mathrel}{arrows2}{"EF}
+
+\stix@MathSymbol{\rightharpoondownbar}      {\mathrel}{arrows2}{"F0}
+\stix@MathSymbol{\barupharpoonleft}         {\mathrel}{arrows2}{"F1}
+\stix@MathSymbol{\downharpoonleftbar}       {\mathrel}{arrows2}{"F2}
+\stix@MathSymbol{\leftharpoonupbar}         {\mathrel}{arrows2}{"F3}
+\stix@MathSymbol{\barrightharpoonup}        {\mathrel}{arrows2}{"F4}
+\stix@MathSymbol{\upharpoonrightbar}        {\mathrel}{arrows2}{"F5}
+\stix@MathSymbol{\bardownharpoonright}      {\mathrel}{arrows2}{"F6}
+\stix@MathSymbol{\leftharpoondownbar}       {\mathrel}{arrows2}{"F7}
+\stix@MathSymbol{\barrightharpoondown}      {\mathrel}{arrows2}{"F8}
+\stix@MathSymbol{\upharpoonleftbar}         {\mathrel}{arrows2}{"F9}
+\stix@MathSymbol{\bardownharpoonleft}       {\mathrel}{arrows2}{"FA}
+\stix@MathSymbol{\leftharpoonsupdown}       {\mathrel}{arrows2}{"FB}
+\stix@MathSymbol{\upharpoonsleftright}      {\mathrel}{arrows2}{"FC}
+\stix@MathSymbol{\rightharpoonsupdown}      {\mathrel}{arrows2}{"FD}
+\stix@MathSymbol{\downharpoonsleftright}    {\mathrel}{arrows2}{"FE}
+\stix@MathSymbol{\leftrightharpoonsup}      {\mathrel}{arrows2}{"FF}
+
+\stix@MathSymbol{\cwgapcirclearrow}         {\mathrel}{arrows3}{"00}
+\stix@MathSymbol{\rightarrowonoplus}        {\mathrel}{arrows3}{"01}
+\stix@MathSymbol{\longleftarrow}            {\mathrel}{arrows3}{"02}
+\stix@MathSymbol{\longrightarrow}           {\mathrel}{arrows3}{"03}
+\stix@MathSymbol{\longleftrightarrow}       {\mathrel}{arrows3}{"04}
+\stix@MathSymbol{\Longleftarrow}            {\mathrel}{arrows3}{"05}
+\stix@MathSymbol{\Longrightarrow}           {\mathrel}{arrows3}{"06}
+\stix@MathSymbol{\Longleftrightarrow}       {\mathrel}{arrows3}{"07}
+\stix@MathSymbol{\longmapsfrom}             {\mathrel}{arrows3}{"08}
+\stix@MathSymbol{\longmapsto}               {\mathrel}{arrows3}{"09}
+\stix@MathSymbol{\Longmapsfrom}             {\mathrel}{arrows3}{"0A}
+\stix@MathSymbol{\Longmapsto}               {\mathrel}{arrows3}{"0B}
+\stix@MathSymbol{\longrightsquigarrow}      {\mathrel}{arrows3}{"0C}
+\stix@MathSymbol{\acwgapcirclearrow}        {\mathrel}{arrows3}{"0D}
+\stix@MathSymbol{\bsimilarrightarrow}       {\mathrel}{arrows3}{"0E}
+\stix@MathSymbol{\spadesuit}                {\mathord}{arrows3}{"0F}
+
+\stix@MathSymbol{\heartsuit}                {\mathord}{arrows3}{"10}
+\stix@MathSymbol{\diamondsuit}              {\mathord}{arrows3}{"11}
+\stix@MathSymbol{\clubsuit}                 {\mathord}{arrows3}{"12}
+\stix@MathSymbol{\mathparagraph}            {\mathord}{arrows3}{"13}
+\stix@MathSymbol{\mathsection}              {\mathord}{arrows3}{"14}
+\stix@MathSymbol{\leftrightharpoonsdown}    {\mathrel}{arrows3}{"15}
+\stix@MathSymbol{\rightleftharpoonsup}      {\mathrel}{arrows3}{"16}
+\stix@MathSymbol{\rightleftharpoonsdown}    {\mathrel}{arrows3}{"17}
+\stix@MathSymbol{\leftharpoonupdash}        {\mathrel}{arrows3}{"18}
+\stix@MathSymbol{\dashleftharpoondown}      {\mathrel}{arrows3}{"19}
+\stix@MathSymbol{\rightharpoonupdash}       {\mathrel}{arrows3}{"1A}
+\stix@MathSymbol{\dashrightharpoondown}     {\mathrel}{arrows3}{"1B}
+\stix@MathSymbol{\updownharpoonsleftright}  {\mathrel}{arrows3}{"1C}
+\stix@MathSymbol{\downupharpoonsleftright}  {\mathrel}{arrows3}{"1D}
+\stix@MathSymbol{\rightimply}               {\mathrel}{arrows3}{"1E}
+\stix@MathSymbol{\equalrightarrow}          {\mathrel}{arrows3}{"1F}
+
+\stix@MathSymbol{\similarrightarrow}        {\mathrel}{arrows3}{"20}
+\stix@MathSymbol{\leftarrowsimilar}         {\mathrel}{arrows3}{"21}
+\stix@MathSymbol{\rightarrowsimilar}        {\mathrel}{arrows3}{"22}
+\stix@MathSymbol{\rightarrowapprox}         {\mathrel}{arrows3}{"23}
+\stix@MathSymbol{\ltlarr}                   {\mathrel}{arrows3}{"24}
+\stix@MathSymbol{\leftarrowless}            {\mathrel}{arrows3}{"25}
+\stix@MathSymbol{\gtrarr}                   {\mathrel}{arrows3}{"26}
+\stix@MathSymbol{\subrarr}                  {\mathrel}{arrows3}{"27}
+\stix@MathSymbol{\leftarrowsubset}          {\mathrel}{arrows3}{"28}
+\stix@MathSymbol{\suplarr}                  {\mathrel}{arrows3}{"29}
+\stix@MathSymbol{\leftfishtail}             {\mathrel}{arrows3}{"2A}
+\stix@MathSymbol{\rightfishtail}            {\mathrel}{arrows3}{"2B}
+\stix@MathSymbol{\upfishtail}               {\mathrel}{arrows3}{"2C}
+\stix@MathSymbol{\downfishtail}             {\mathrel}{arrows3}{"2D}
+\stix@MathSymbol{\varclubsuit}              {\mathord}{arrows3}{"2E}
+\stix@MathSymbol{\quarternote}              {\mathord}{arrows3}{"2F}
+
+\stix@MathSymbol{\eighthnote}               {\mathord}{arrows3}{"3A}
+\stix@MathSymbol{\twonotes}                 {\mathord}{arrows3}{"3B}
+\stix@MathSymbol{\dicei}                    {\mathord}{arrows3}{"3C}
+\stix@MathSymbol{\diceii}                   {\mathord}{arrows3}{"3D}
+\stix@MathSymbol{\diceiii}                  {\mathord}{arrows3}{"3E}
+\stix@MathSymbol{\diceiv}                   {\mathord}{arrows3}{"3F}
+\stix@MathSymbol{\dicev}                    {\mathord}{arrows3}{"40}
+
+\stix@MathSymbol{\dicevi}                   {\mathord}{arrows3}{"5B}
+\stix@MathSymbol{\circledrightdot}          {\mathord}{arrows3}{"5C}
+\stix@MathSymbol{\circledtwodots}           {\mathord}{arrows3}{"5D}
+\stix@MathSymbol{\blackcircledrightdot}     {\mathord}{arrows3}{"5E}
+\stix@MathSymbol{\blackcircledtwodots}      {\mathord}{arrows3}{"5F}
+\stix@MathSymbol{\Hermaphrodite}            {\mathord}{arrows3}{"60}
+
+\stix@MathSymbol{\mdwhtcircle}              {\mathord}{arrows3}{"7D}
+\stix@MathSymbol{\mdblkcircle}              {\mathord}{arrows3}{"7E}
+
+\stix@MathSymbol{\mdsmwhtcircle}            {\mathord}{arrows3}{"80}
+\stix@MathSymbol{\neuter}                   {\mathord}{arrows3}{"81}
+\stix@MathSymbol{\checkmarkmath}            {\mathord}{arrows3}{"82}
+%stix@MathSymbol{\maltesemath}              {\mathord}{arrows3}{"83} % moved up
+%stix@MathSymbol{\circledstar}              {\mathord}{arrows3}{"84} % moved up
+\stix@MathSymbol{\varstar}                  {\mathord}{arrows3}{"85}
+\stix@MathSymbol{\dingasterisk}             {\mathord}{arrows3}{"86}
+%
+\stix@MathSymbol{\squareulblack}            {\mathord}{arrows3}{"88}
+\stix@MathSymbol{\squarelrblack}            {\mathord}{arrows3}{"89}
+\stix@MathSymbol{\boxbar}                   {\mathbin}{arrows3}{"8A}
+\stix@MathSymbol{\trianglecdot}             {\mathord}{arrows3}{"8B}
+\stix@MathSymbol{\triangleleftblack}        {\mathord}{arrows3}{"8C}
+\stix@MathSymbol{\trianglerightblack}       {\mathord}{arrows3}{"8D}
+\stix@MathSymbol{\lgwhtcircle}              {\mathord}{arrows3}{"8E}
+\stix@MathSymbol{\squareulquad}             {\mathord}{arrows3}{"8F}
+
+\stix@MathSymbol{\squarellquad}             {\mathord}{arrows3}{"90}
+\stix@MathSymbol{\squarelrquad}             {\mathord}{arrows3}{"91}
+\stix@MathSymbol{\squareurquad}             {\mathord}{arrows3}{"92}
+\stix@MathSymbol{\circleulquad}             {\mathord}{arrows3}{"93}
+\stix@MathSymbol{\circlellquad}             {\mathord}{arrows3}{"94}
+\stix@MathSymbol{\circlelrquad}             {\mathord}{arrows3}{"95}
+\stix@MathSymbol{\circleurquad}             {\mathord}{arrows3}{"96}
+\stix@MathSymbol{\ultriangle}               {\mathord}{arrows3}{"97}
+\stix@MathSymbol{\urtriangle}               {\mathord}{arrows3}{"98}
+\stix@MathSymbol{\lltriangle}               {\mathord}{arrows3}{"99}
+\stix@MathSymbol{\mdwhtsquare}              {\mathord}{arrows3}{"9A}
+\stix@MathSymbol{\mdblksquare}              {\mathord}{arrows3}{"9B}
+\stix@MathSymbol{\mdsmwhtsquare}            {\mathord}{arrows3}{"9C}
+\stix@MathSymbol{\mdsmblksquare}            {\mathord}{arrows3}{"9D}
+\stix@MathSymbol{\lrtriangle}               {\mathord}{arrows3}{"9E}
+\stix@MathSymbol{\bigstar}                  {\mathord}{arrows3}{"9F}
+
+\stix@MathSymbol{\bigwhitestar}             {\mathord}{arrows3}{"A0}
+\stix@MathSymbol{\dottimes}                 {\mathbin}{arrows3}{"A1}
+\stix@MathSymbol{\timesbar}                 {\mathbin}{arrows3}{"A2}
+\stix@MathSymbol{\btimes}                   {\mathbin}{arrows3}{"A3}
+\stix@MathSymbol{\smashtimes}               {\mathbin}{arrows3}{"A4}
+\stix@MathSymbol{\otimeslhrim}              {\mathbin}{arrows3}{"A5}
+\stix@MathSymbol{\otimesrhrim}              {\mathbin}{arrows3}{"A6}
+\stix@MathSymbol{\otimeshat}                {\mathbin}{arrows3}{"A7}
+\stix@MathSymbol{\Otimes}                   {\mathbin}{arrows3}{"A8}
+\stix@MathSymbol{\odiv}                     {\mathbin}{arrows3}{"A9}
+\stix@MathSymbol{\triangleplus}             {\mathbin}{arrows3}{"AA}
+\stix@MathSymbol{\triangleminus}            {\mathbin}{arrows3}{"AB}
+\stix@MathSymbol{\triangletimes}            {\mathbin}{arrows3}{"AC}
+\stix@MathSymbol{\intprod}                  {\mathbin}{arrows3}{"AD}
+\stix@MathSymbol{\intprodr}                 {\mathbin}{arrows3}{"AE}
+\stix@MathSymbol{\fcmp}                     {\mathbin}{arrows3}{"AF}
+
+\stix@MathSymbol{\amalg}                    {\mathbin}{arrows3}{"B0}
+\stix@MathSymbol{\capdot}                   {\mathbin}{arrows3}{"B1}
+\stix@MathSymbol{\uminus}                   {\mathbin}{arrows3}{"B2}
+\stix@MathSymbol{\barcup}                   {\mathbin}{arrows3}{"B3}
+\stix@MathSymbol{\barcap}                   {\mathbin}{arrows3}{"B4}
+\stix@MathSymbol{\capwedge}                 {\mathbin}{arrows3}{"B5}
+\stix@MathSymbol{\cupvee}                   {\mathbin}{arrows3}{"B6}
+\stix@MathSymbol{\cupovercap}               {\mathbin}{arrows3}{"B7}
+\stix@MathSymbol{\capovercup}               {\mathbin}{arrows3}{"B8}
+\stix@MathSymbol{\cupbarcap}                {\mathbin}{arrows3}{"B9}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\neg}                      {\mathord}{operators}{"9B} \let\lnot=\neg
+\stix@MathSymbol{\cdotp}                    {\mathbin}{operators}{"9C} \let\centerdot=\cdotp
+\stix@MathSymbol{\times}                    {\mathbin}{operators}{"9D}
+\stix@MathSymbol{\preceq}                   {\mathrel}{operators}{"9E}
+\stix@MathSymbol{\div}                      {\mathbin}{operators}{"9F}
+
+\stix@MathSymbol{\Zbar}                     {\mathord}{operators}{"A0}
+\stix@MathSymbol{\notchar}                  {\mathrel}{operators}{"A1}
+\stix@MathSymbol{\upbackepsilon}            {\mathord}{operators}{"A2}
+\stix@MathSymbol{\dagger}                   {\mathbin}{operators}{"A3}
+\stix@MathSymbol{\ddagger}                  {\mathbin}{operators}{"A4}
+\stix@MathSymbol{\smblkcircle}              {\mathbin}{operators}{"A5}
+\stix@MathSymbol{\enleadertwodots}          {\mathord}{operators}{"A6}
+\stix@MathSymbol{\unicodeellipsis}          {\mathord}{operators}{"A7} \def\mathellipsis{\mathinner{\unicodeellipsis}}
+\stix@MathSymbol{\prime}                    {\mathord}{operators}{"A8}
+\stix@MathSymbol{\dprime}                   {\mathord}{operators}{"A9}
+\stix@MathSymbol{\trprime}                  {\mathord}{operators}{"AA}
+\stix@MathSymbol{\backprime}                {\mathord}{operators}{"AB}
+\stix@MathSymbol{\backdprime}               {\mathord}{operators}{"AC}
+\stix@MathSymbol{\backtrprime}              {\mathord}{operators}{"AD}
+\stix@MathSymbol{\caretinsert}              {\mathord}{operators}{"AE}
+\stix@MathSymbol{\Exclam}                   {\mathord}{operators}{"AF}
+
+\stix@MathSymbol{\hyphenbullet}             {\mathord}{operators}{"B0}
+\stix@MathSymbol{\fracslash}                {\mathbin}{operators}{"B1}
+\stix@MathSymbol{\Question}                 {\mathord}{operators}{"B2}
+\stix@MathSymbol{\closure}                  {\mathrel}{operators}{"B3}
+\stix@MathSymbol{\qprime}                   {\mathord}{operators}{"B4}
+\stix@MathSymbol{\vertoverlay}              {\mathrel}{operators}{"B5}
+\stix@MathSymbol{\enclosecircle}            {\mathord}{operators}{"B6}
+\stix@MathSymbol{\enclosesquare}            {\mathord}{operators}{"B7}
+\stix@MathSymbol{\enclosediamond}           {\mathord}{operators}{"B8}
+\stix@MathSymbol{\enclosetriangle}          {\mathord}{operators}{"B9}
+\stix@MathSymbol{\Eulerconst}               {\mathord}{operators}{"BA}
+\stix@MathSymbol{\mho}                      {\mathord}{operators}{"BB}
+\stix@MathSymbol{\turnediota}               {\mathord}{operators}{"BC}
+\stix@MathSymbol{\Angstrom}                 {\mathord}{operators}{"BD}
+\stix@MathSymbol{\Finv}                     {\mathord}{operators}{"BE}
+\stix@MathSymbol{\Game}                     {\mathord}{operators}{"BF}
+
+\stix@MathSymbol{\sansLturned}              {\mathord}{operators}{"C0}
+\stix@MathSymbol{\sansLmirrored}            {\mathord}{operators}{"C1}
+\stix@MathSymbol{\Yup}                      {\mathord}{operators}{"C2}
+\stix@MathSymbol{\PropertyLine}             {\mathord}{operators}{"C3}
+\stix@MathSymbol{\upand}                    {\mathbin}{operators}{"C4}
+\stix@MathSymbol{\forall}                   {\mathord}{operators}{"C5}
+\stix@MathSymbol{\complement}               {\mathord}{operators}{"C6}
+\stix@MathSymbol{\exists}                   {\mathord}{operators}{"C7}
+\stix@MathSymbol{\nexists}                  {\mathord}{operators}{"C8}
+\stix@MathSymbol{\varnothing}               {\mathord}{operators}{"C9}
+\stix@MathSymbol{\increment}                {\mathord}{operators}{"CA}
+\stix@MathSymbol{\in}                       {\mathrel}{operators}{"CB}
+\stix@MathSymbol{\notin}                    {\mathrel}{operators}{"CC}
+\stix@MathSymbol{\smallin}                  {\mathrel}{operators}{"CD}
+\stix@MathSymbol{\ni}                       {\mathrel}{operators}{"CE} \let\owns=\ni
+\stix@MathSymbol{\nni}                      {\mathrel}{operators}{"CF}
+
+\stix@MathSymbol{\smallni}                  {\mathrel}{operators}{"D0}
+\stix@MathSymbol{\QED}                      {\mathord}{operators}{"D1}
+\stix@MathSymbol{\dotplus}                  {\mathbin}{operators}{"D2}
+\stix@MathSymbol{\succeq}                   {\mathrel}{operators}{"D3}
+\stix@MathSymbol{\smallsetminus}            {\mathbin}{operators}{"D4}
+\stix@MathSymbol{\vysmwhtcircle}            {\mathbin}{operators}{"D5}
+\stix@MathSymbol{\vysmblkcircle}            {\mathbin}{operators}{"D6} \let\bullet=\vysmblkcircle
+\stix@MathSymbol{\propto}                   {\mathrel}{operators}{"D7}
+\stix@MathSymbol{\infty}                    {\mathord}{operators}{"D8}
+\stix@MathSymbol{\rightangle}               {\mathord}{operators}{"D9}
+\stix@MathSymbol{\angle}                    {\mathord}{operators}{"DA}
+\stix@MathSymbol{\measuredangle}            {\mathord}{operators}{"DB}
+\stix@MathSymbol{\sphericalangle}           {\mathord}{operators}{"DC}
+\stix@MathSymbol{\mid}                      {\mathrel}{operators}{"DD}
+\stix@MathSymbol{\nmid}                     {\mathrel}{operators}{"DE}
+\stix@MathSymbol{\parallel}                 {\mathrel}{operators}{"DF}
+
+\stix@MathSymbol{\nparallel}                {\mathrel}{operators}{"E0}
+\stix@MathSymbol{\wedge}                    {\mathbin}{operators}{"E1} \let\land=\wedge
+\stix@MathSymbol{\vee}                      {\mathbin}{operators}{"E2} \let\lor=\vee
+\stix@MathSymbol{\cap}                      {\mathbin}{operators}{"E3}
+\stix@MathSymbol{\cup}                      {\mathbin}{operators}{"E4}
+\stix@MathSymbol{\therefore}                {\mathord}{operators}{"E5}
+\stix@MathSymbol{\because}                  {\mathord}{operators}{"E6}
+\stix@MathSymbol{\emptyset}                 {\mathord}{operators}{"E7}
+\stix@MathSymbol{\Colon}                    {\mathrel}{operators}{"E8}
+\stix@MathSymbol{\dotminus}                 {\mathbin}{operators}{"E9}
+\stix@MathSymbol{\dashcolon}                {\mathrel}{operators}{"EA}
+\stix@MathSymbol{\dotsminusdots}            {\mathrel}{operators}{"EB}
+\stix@MathSymbol{\kernelcontraction}        {\mathrel}{operators}{"EC}
+\stix@MathSymbol{\sim}                      {\mathrel}{operators}{"ED} \stix@MathSymbol{\thicksim}{\mathrel}{bold-operators}{"ED}
+\stix@MathSymbol{\backsim}                  {\mathrel}{operators}{"EE}
+\stix@MathSymbol{\invlazys}                 {\mathbin}{operators}{"EF}
+
+\stix@MathSymbol{\sinewave}                 {\mathord}{operators}{"F0}
+\stix@MathSymbol{\wr}                       {\mathbin}{operators}{"F1}
+\stix@MathSymbol{\nsim}                     {\mathrel}{operators}{"F2}
+\stix@MathSymbol{\eqsim}                    {\mathrel}{operators}{"F3}
+\stix@MathSymbol{\simeq}                    {\mathrel}{operators}{"F4}
+\stix@MathSymbol{\nsime}                    {\mathrel}{operators}{"F5}
+\stix@MathSymbol{\cong}                     {\mathrel}{operators}{"F6}
+\stix@MathSymbol{\simneqq}                  {\mathrel}{operators}{"F7}
+\stix@MathSymbol{\ncong}                    {\mathrel}{operators}{"F8}
+\stix@MathSymbol{\approx}                   {\mathrel}{operators}{"F9} \stix@MathSymbol{\thickapprox}{\mathrel}{bold-operators}{"F9}
+\stix@MathSymbol{\napprox}                  {\mathrel}{operators}{"FA}
+\stix@MathSymbol{\approxeq}                 {\mathrel}{operators}{"FB}
+\stix@MathSymbol{\approxident}              {\mathrel}{operators}{"FC}
+\stix@MathSymbol{\backcong}                 {\mathrel}{operators}{"FD}
+\stix@MathSymbol{\asymp}                    {\mathrel}{operators}{"FE}
+\stix@MathSymbol{\Bumpeq}                   {\mathrel}{operators}{"FF}
+
+\stix@MathSymbol{\bumpeq}                   {\mathrel}{integrals}{"80}
+\stix@MathSymbol{\doteq}                    {\mathrel}{integrals}{"81}
+\stix@MathSymbol{\Doteq}                    {\mathrel}{integrals}{"82}
+        \let\doteqdot=\Doteq
+\stix@MathSymbol{\fallingdotseq}            {\mathrel}{integrals}{"83}
+\stix@MathSymbol{\risingdotseq}             {\mathrel}{integrals}{"84}
+\stix@MathSymbol{\coloneq}                  {\mathrel}{integrals}{"85}
+\stix@MathSymbol{\eqcolon}                  {\mathrel}{integrals}{"86}
+\stix@MathSymbol{\eqcirc}                   {\mathrel}{integrals}{"87}
+\stix@MathSymbol{\circeq}                   {\mathrel}{integrals}{"88}
+\stix@MathSymbol{\arceq}                    {\mathrel}{integrals}{"89}
+\stix@MathSymbol{\wedgeq}                   {\mathrel}{integrals}{"8A}
+\stix@MathSymbol{\veeeq}                    {\mathrel}{integrals}{"8B}
+\stix@MathSymbol{\stareq}                   {\mathrel}{integrals}{"8C}
+\stix@MathSymbol{\triangleq}                {\mathrel}{integrals}{"8D}
+\stix@MathSymbol{\eqdef}                    {\mathrel}{integrals}{"8E}
+\stix@MathSymbol{\measeq}                   {\mathrel}{integrals}{"8F}
+\stix@MathSymbol{\questeq}                  {\mathrel}{integrals}{"90}
+\stix@MathSymbol{\ne}                       {\mathrel}{integrals}{"91}
+        \let\neq=\ne
+\stix@MathSymbol{\equiv}                    {\mathrel}{integrals}{"92}
+\stix@MathSymbol{\nequiv}                   {\mathrel}{integrals}{"93}
+\stix@MathSymbol{\Equiv}                    {\mathrel}{integrals}{"65}
+\stix@MathSymbol{\leq}                      {\mathrel}{integrals}{"66}
+        \let\le=\leq
+\stix@MathSymbol{\geq}                      {\mathrel}{integrals}{"67}
+        \let\ge=\geq
+\stix@MathSymbol{\leqq}                     {\mathrel}{integrals}{"68}
+\stix@MathSymbol{\geqq}                     {\mathrel}{integrals}{"69}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\lneqq}                    {\mathrel}{letters}{"40}
+\stix@MathSymbol{\gneqq}                    {\mathrel}{letters}{"7D}
+\stix@MathSymbol{\ll}                       {\mathrel}{letters}{"7E}
+\stix@MathSymbol{\gg}                       {\mathrel}{letters}{"B8}
+\stix@MathSymbol{\between}                  {\mathrel}{letters}{"B9}
+\stix@MathSymbol{\nasymp}                   {\mathrel}{letters}{"BA}
+\stix@MathSymbol{\nless}                    {\mathrel}{letters}{"BB}
+\stix@MathSymbol{\ngtr}                     {\mathrel}{letters}{"BC}
+\stix@MathSymbol{\nleq}                     {\mathrel}{letters}{"BD}
+\stix@MathSymbol{\ngeq}                     {\mathrel}{letters}{"BE}
+\stix@MathSymbol{\lesssim}                  {\mathrel}{letters}{"BF}
+\stix@MathSymbol{\gtrsim}                   {\mathrel}{letters}{"C0}
+\stix@MathSymbol{\nlesssim}                 {\mathrel}{letters}{"C1}
+\stix@MathSymbol{\ngtrsim}                  {\mathrel}{letters}{"C2}
+\stix@MathSymbol{\lessgtr}                  {\mathrel}{letters}{"C3}
+\stix@MathSymbol{\gtrless}                  {\mathrel}{letters}{"C4}
+\stix@MathSymbol{\nlessgtr}                 {\mathrel}{letters}{"C5}
+\stix@MathSymbol{\ngtrless}                 {\mathrel}{letters}{"C6}
+\stix@MathSymbol{\prec}                     {\mathrel}{letters}{"C7}
+\stix@MathSymbol{\succ}                     {\mathrel}{letters}{"C8}
+\stix@MathSymbol{\preccurlyeq}              {\mathrel}{letters}{"C9}
+\stix@MathSymbol{\succcurlyeq}              {\mathrel}{letters}{"CA}
+\stix@MathSymbol{\precsim}                  {\mathrel}{letters}{"CB}
+\stix@MathSymbol{\succsim}                  {\mathrel}{letters}{"CC}
+\stix@MathSymbol{\nprec}                    {\mathrel}{letters}{"CD}
+\stix@MathSymbol{\nsucc}                    {\mathrel}{letters}{"CE}
+\stix@MathSymbol{\subset}                   {\mathrel}{letters}{"CF}
+\stix@MathSymbol{\supset}                   {\mathrel}{letters}{"D0}
+\stix@MathSymbol{\nsubset}                  {\mathrel}{letters}{"D1}
+\stix@MathSymbol{\nsupset}                  {\mathrel}{letters}{"D2}
+\stix@MathSymbol{\subseteq}                 {\mathrel}{letters}{"D3}
+\stix@MathSymbol{\supseteq}                 {\mathrel}{letters}{"D4}
+\stix@MathSymbol{\nsubseteq}                {\mathrel}{letters}{"D5}
+\stix@MathSymbol{\nsupseteq}                {\mathrel}{letters}{"D6}
+\stix@MathSymbol{\subsetneq}                {\mathrel}{letters}{"D7}
+\stix@MathSymbol{\supsetneq}                {\mathrel}{letters}{"D8}
+\stix@MathSymbol{\cupleftarrow}             {\mathbin}{letters}{"D9}
+\stix@MathSymbol{\cupdot}                   {\mathbin}{letters}{"DA}
+\stix@MathSymbol{\uplus}                    {\mathbin}{letters}{"DB}
+\stix@MathSymbol{\sqsubset}                 {\mathrel}{letters}{"DC}
+\stix@MathSymbol{\sqsupset}                 {\mathrel}{letters}{"DD}
+\stix@MathSymbol{\sqsubseteq}               {\mathrel}{letters}{"DE}
+\stix@MathSymbol{\sqsupseteq}               {\mathrel}{letters}{"DF}
+\stix@MathSymbol{\sqcap}                    {\mathbin}{letters}{"E0}
+\stix@MathSymbol{\sqcup}                    {\mathbin}{letters}{"E1}
+\stix@MathSymbol{\oplus}                    {\mathbin}{letters}{"E2}
+\stix@MathSymbol{\ominus}                   {\mathbin}{letters}{"E3}
+\stix@MathSymbol{\otimes}                   {\mathbin}{letters}{"E4}
+\stix@MathSymbol{\oslash}                   {\mathbin}{letters}{"E5}
+\stix@MathSymbol{\odot}                     {\mathbin}{letters}{"E6}
+\stix@MathSymbol{\circledcirc}              {\mathbin}{letters}{"E7}
+\stix@MathSymbol{\circledast}               {\mathbin}{letters}{"E8}
+\stix@MathSymbol{\circledequal}             {\mathbin}{letters}{"E9}
+\stix@MathSymbol{\circleddash}              {\mathbin}{letters}{"EA}
+\stix@MathSymbol{\boxplus}                  {\mathbin}{letters}{"EB}
+\stix@MathSymbol{\boxminus}                 {\mathbin}{letters}{"EC}
+\stix@MathSymbol{\boxtimes}                 {\mathbin}{letters}{"ED}
+\stix@MathSymbol{\boxdot}                   {\mathbin}{letters}{"EE}
+\stix@MathSymbol{\vdash}                    {\mathrel}{letters}{"EF}
+\stix@MathSymbol{\dashv}                    {\mathrel}{letters}{"F0}
+\stix@MathSymbol{\top}                      {\mathord}{letters}{"F1}
+\stix@MathSymbol{\bot}                      {\mathord}{letters}{"F2}
+\stix@MathSymbol{\assert}                   {\mathrel}{letters}{"F3}
+\stix@MathSymbol{\models}                   {\mathrel}{letters}{"F4}
+\stix@MathSymbol{\vDash}                    {\mathrel}{letters}{"F5}
+\stix@MathSymbol{\Vdash}                    {\mathrel}{letters}{"F6}
+\stix@MathSymbol{\Vvdash}                   {\mathrel}{letters}{"F7}
+\stix@MathSymbol{\VDash}                    {\mathrel}{letters}{"F8}
+\stix@MathSymbol{\nvdash}                   {\mathrel}{letters}{"F9}
+\stix@MathSymbol{\nvDash}                   {\mathrel}{letters}{"FA}
+\stix@MathSymbol{\nVdash}                   {\mathrel}{letters}{"FB}
+\stix@MathSymbol{\nVDash}                   {\mathrel}{letters}{"FC}
+\stix@MathSymbol{\prurel}                   {\mathrel}{letters}{"FD}
+\stix@MathSymbol{\scurel}                   {\mathrel}{letters}{"FE}
+\stix@MathSymbol{\trianglelefteq}           {\mathrel}{letters}{"FF}
+\stix@MathSymbol{\unlhd}                    {\mathbin}{letters}{"FF}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\trianglerighteq}          {\mathrel}{symbols}{"00}
+\stix@MathSymbol{\unrhd}                    {\mathbin}{symbols}{"00}
+\stix@MathSymbol{\origof}                   {\mathrel}{symbols}{"01}
+\stix@MathSymbol{\imageof}                  {\mathrel}{symbols}{"02}
+\stix@MathSymbol{\multimap}                 {\mathrel}{symbols}{"03}
+\stix@MathSymbol{\hermitmatrix}             {\mathord}{symbols}{"04}
+\stix@MathSymbol{\intercal}                 {\mathbin}{symbols}{"05}
+\stix@MathSymbol{\veebar}                   {\mathbin}{symbols}{"06}
+\stix@MathSymbol{\barwedge}                 {\mathbin}{symbols}{"07}
+\stix@MathSymbol{\barvee}                   {\mathbin}{symbols}{"08}
+\stix@MathSymbol{\measuredrightangle}       {\mathord}{symbols}{"09}
+\stix@MathSymbol{\varlrtriangle}            {\mathord}{symbols}{"0A}
+\stix@MathSymbol{\smwhtdiamond}             {\mathbin}{symbols}{"0B}
+        \let\diamond=\smwhtdiamond
+\stix@MathSymbol{\cdot}                     {\mathbin}{symbols}{"0C}
+\stix@MathSymbol{\divideontimes}            {\mathbin}{symbols}{"0D}
+\stix@MathSymbol{\bowtie}                   {\mathrel}{symbols}{"0E}
+\stix@MathSymbol{\ltimes}                   {\mathbin}{symbols}{"0F}
+\stix@MathSymbol{\rtimes}                   {\mathbin}{symbols}{"10}
+\stix@MathSymbol{\leftthreetimes}           {\mathbin}{symbols}{"11}
+\stix@MathSymbol{\rightthreetimes}          {\mathbin}{symbols}{"12}
+\stix@MathSymbol{\backsimeq}                {\mathrel}{symbols}{"13}
+\stix@MathSymbol{\curlyvee}                 {\mathbin}{symbols}{"14}
+\stix@MathSymbol{\curlywedge}               {\mathbin}{symbols}{"15}
+\stix@MathSymbol{\Subset}                   {\mathrel}{symbols}{"16}
+\stix@MathSymbol{\Supset}                   {\mathrel}{symbols}{"17}
+\stix@MathSymbol{\Cap}                      {\mathbin}{symbols}{"18}
+        \let\doublecap=\Cap
+\stix@MathSymbol{\Cup}                      {\mathbin}{symbols}{"19}
+        \let\doublecup=\Cup
+\stix@MathSymbol{\pitchfork}                {\mathrel}{symbols}{"1A}
+\stix@MathSymbol{\equalparallel}            {\mathrel}{symbols}{"1B}
+\stix@MathSymbol{\lessdot}                  {\mathrel}{symbols}{"1C}
+\stix@MathSymbol{\gtrdot}                   {\mathrel}{symbols}{"1D}
+\stix@MathSymbol{\lll}                      {\mathrel}{symbols}{"1E}
+        \let\llless=\lll
+\stix@MathSymbol{\ggg}                      {\mathrel}{symbols}{"1F}
+        \let\gggtr=\ggg
+\stix@MathSymbol{\lesseqgtr}                {\mathrel}{symbols}{"20}
+\stix@MathSymbol{\gtreqless}                {\mathrel}{symbols}{"21}
+\stix@MathSymbol{\eqless}                   {\mathrel}{symbols}{"22}
+\stix@MathSymbol{\eqgtr}                    {\mathrel}{symbols}{"23}
+\stix@MathSymbol{\curlyeqprec}              {\mathrel}{symbols}{"24}
+\stix@MathSymbol{\curlyeqsucc}              {\mathrel}{symbols}{"25}
+\stix@MathSymbol{\npreccurlyeq}             {\mathrel}{symbols}{"26}
+\stix@MathSymbol{\nsucccurlyeq}             {\mathrel}{symbols}{"27}
+\stix@MathSymbol{\nsqsubseteq}              {\mathrel}{symbols}{"28}
+\stix@MathSymbol{\nsqsupseteq}              {\mathrel}{symbols}{"29}
+\stix@MathSymbol{\sqsubsetneq}              {\mathrel}{symbols}{"2A}
+\stix@MathSymbol{\sqsupsetneq}              {\mathrel}{symbols}{"2B}
+\stix@MathSymbol{\lnsim}                    {\mathrel}{symbols}{"2C}
+\stix@MathSymbol{\gnsim}                    {\mathrel}{symbols}{"2D}
+\stix@MathSymbol{\precnsim}                 {\mathrel}{symbols}{"2E}
+\stix@MathSymbol{\succnsim}                 {\mathrel}{symbols}{"2F}
+\stix@MathSymbol{\nvartriangleleft}         {\mathrel}{symbols}{"30}
+\stix@MathSymbol{\nvartriangleright}        {\mathrel}{symbols}{"31}
+\stix@MathSymbol{\ntrianglelefteq}          {\mathrel}{symbols}{"32}
+\stix@MathSymbol{\ntrianglerighteq}         {\mathrel}{symbols}{"33}
+\stix@MathSymbol{\vdotsmath}                {\mathrel}{symbols}{"34}
+%    \end{macrocode}
+%
+% \LaTeX's |\vdots| works in text mode as well, so should ours.
+%
+%    \begin{macrocode}
+        \DeclareRobustCommand\vdots{%
+                \ifmmode\vdotsmath\else%
+                {\usefont{LS1}{stixscr}{\f@series}{n}\char"34}%
+                \fi}
+\stix@MathSymbol{\unicodecdots}             {\mathord}{symbols}{"35} \let\@cdots=\unicodecdots \DeclareRobustCommand\cdots{\mathinner{\unicodecdots}}
+\stix@MathSymbol{\adots}                    {\mathrel}{symbols}{"36}
+\stix@MathSymbol{\ddots}                    {\mathrel}{symbols}{"37}
+\stix@MathSymbol{\disin}                    {\mathrel}{symbols}{"38}
+\stix@MathSymbol{\varisins}                 {\mathrel}{symbols}{"39}
+\stix@MathSymbol{\isins}                    {\mathrel}{symbols}{"3A}
+\stix@MathSymbol{\isindot}                  {\mathrel}{symbols}{"3B}
+\stix@MathSymbol{\varisinobar}              {\mathrel}{symbols}{"3C}
+\stix@MathSymbol{\isinobar}                 {\mathrel}{symbols}{"3D}
+\stix@MathSymbol{\isinvb}                   {\mathrel}{symbols}{"3E}
+\stix@MathSymbol{\isinE}                    {\mathrel}{symbols}{"3F}
+\stix@MathSymbol{\nisd}                     {\mathrel}{symbols}{"40}
+\stix@MathSymbol{\varnis}                   {\mathrel}{symbols}{"5B}
+\stix@MathSymbol{\nis}                      {\mathrel}{symbols}{"5C}
+\stix@MathSymbol{\varniobar}                {\mathrel}{symbols}{"5D}
+\stix@MathSymbol{\niobar}                   {\mathrel}{symbols}{"5E}
+\stix@MathSymbol{\bagmember}                {\mathrel}{symbols}{"5F}
+\stix@MathSymbol{\diameter}                 {\mathord}{symbols}{"60}
+\stix@MathSymbol{\house}                    {\mathord}{symbols}{"7E}
+
+\stix@MathSymbol{\varbarwedge}              {\mathbin}{symbols}{"99}
+\stix@MathSymbol{\vardoublebarwedge}        {\mathbin}{symbols}{"9A}
+\stix@MathSymbol{\invnot}                   {\mathord}{symbols}{"9B}
+\stix@MathSymbol{\sqlozenge}                {\mathord}{symbols}{"9C}
+\stix@MathSymbol{\profline}                 {\mathord}{symbols}{"9D}
+\stix@MathSymbol{\profsurf}                 {\mathord}{symbols}{"9E}
+\stix@MathSymbol{\viewdata}                 {\mathord}{symbols}{"9F}
+
+\stix@MathSymbol{\turnednot}                {\mathord}{symbols}{"A0}
+\stix@MathSymbol{\ulcorner}                {\mathopen}{symbols}{"A1}
+\stix@MathSymbol{\urcorner}               {\mathclose}{symbols}{"A2}
+\stix@MathSymbol{\llcorner}                {\mathopen}{symbols}{"A3}
+\stix@MathSymbol{\lrcorner}               {\mathclose}{symbols}{"A4}
+\stix@MathSymbol{\varhexagonlrbonds}        {\mathord}{symbols}{"A5}
+\stix@MathSymbol{\conictaper}               {\mathord}{symbols}{"A6}
+\stix@MathSymbol{\topbot}                   {\mathord}{symbols}{"A7}
+\stix@MathSymbol{\obar}                     {\mathbin}{symbols}{"A8}
+\stix@MathSymbol{\APLnotslash}              {\mathrel}{symbols}{"A9}
+\stix@MathSymbol{\APLnotbackslash}          {\mathord}{symbols}{"AA}
+\stix@MathSymbol{\APLboxupcaret}            {\mathord}{symbols}{"AB}
+\stix@MathSymbol{\APLboxquestion}           {\mathord}{symbols}{"AC}
+\stix@MathSymbol{\rangledownzigzagarrow}    {\mathord}{symbols}{"AD}
+\stix@MathSymbol{\hexagon}                  {\mathord}{symbols}{"AE}
+\stix@MathSymbol{\varcarriagereturn}        {\mathord}{symbols}{"AF}
+
+\stix@MathSymbol{\trapezium}                {\mathord}{symbols}{"B0}
+\stix@MathSymbol{\benzenr}                  {\mathord}{symbols}{"B1}
+\stix@MathSymbol{\strns}                    {\mathord}{symbols}{"B2}
+\stix@MathSymbol{\fltns}                    {\mathord}{symbols}{"B3}
+\stix@MathSymbol{\accurrent}                {\mathord}{symbols}{"B4}
+\stix@MathSymbol{\elinters}                 {\mathord}{symbols}{"B5}
+\stix@MathSymbol{\mathvisiblespace}         {\mathord}{symbols}{"B6}
+\stix@MathSymbol{\mdlgblksquare}            {\mathord}{symbols}{"B7} \let\blacksquare=\mdlgblksquare
+\stix@MathSymbol{\mdlgwhtsquare}            {\mathord}{symbols}{"B8} \let\square=\mdlgwhtsquare \let\Box=\mdlgwhtsquare
+\stix@MathSymbol{\squoval}                  {\mathord}{symbols}{"B9}
+\stix@MathSymbol{\blackinwhitesquare}       {\mathord}{symbols}{"BA}
+\stix@MathSymbol{\squarehfill}              {\mathord}{symbols}{"BB}
+\stix@MathSymbol{\squarevfill}              {\mathord}{symbols}{"BC}
+\stix@MathSymbol{\squarehvfill}             {\mathord}{symbols}{"BD}
+\stix@MathSymbol{\squarenwsefill}           {\mathord}{symbols}{"BE}
+\stix@MathSymbol{\squareneswfill}           {\mathord}{symbols}{"BF}
+
+\stix@MathSymbol{\squarecrossfill}          {\mathord}{symbols}{"C0}
+\stix@MathSymbol{\smblksquare}              {\mathord}{symbols}{"C1}
+\stix@MathSymbol{\smwhtsquare}              {\mathord}{symbols}{"C2}
+\stix@MathSymbol{\hrectangleblack}          {\mathord}{symbols}{"C3}
+\stix@MathSymbol{\hrectangle}               {\mathord}{symbols}{"C4}
+\stix@MathSymbol{\vrectangleblack}          {\mathord}{symbols}{"C5}
+\stix@MathSymbol{\vrectangle}               {\mathord}{symbols}{"C6}
+\stix@MathSymbol{\parallelogramblack}       {\mathord}{symbols}{"C7}
+\stix@MathSymbol{\parallelogram}            {\mathord}{symbols}{"C8}
+\stix@MathSymbol{\bigblacktriangleup}       {\mathord}{symbols}{"C9}
+\stix@MathSymbol{\bigtriangleup}            {\mathbin}{symbols}{"CA} \let\varbigtriangleup=\bigtriangleup \let\triangle=\bigtriangleup
+\stix@MathSymbol{\blacktriangle}            {\mathord}{symbols}{"CB}
+\stix@MathSymbol{\vartriangle}              {\mathrel}{symbols}{"CC}
+\stix@MathSymbol{\blacktriangleright}       {\mathord}{symbols}{"CD}
+\stix@MathSymbol{\vartriangleright}         {\mathrel}{symbols}{"CE} \stix@MathSymbol{\rhd}{\mathbin}{symbols}{"CE}
+\stix@MathSymbol{\smallblacktriangleright}  {\mathord}{symbols}{"CF}
+
+\stix@MathSymbol{\smalltriangleright}       {\mathord}{symbols}{"D0}
+\stix@MathSymbol{\blackpointerright}        {\mathord}{symbols}{"D1}
+\stix@MathSymbol{\whitepointerright}        {\mathord}{symbols}{"D2}
+\stix@MathSymbol{\bigblacktriangledown}     {\mathord}{symbols}{"D3}
+\stix@MathSymbol{\bigtriangledown}          {\mathord}{symbols}{"D4} \let\varbigtriangledown=\bigtriangledown
+\stix@MathSymbol{\blacktriangledown}        {\mathord}{symbols}{"D5}
+\stix@MathSymbol{\triangledown}             {\mathord}{symbols}{"D6}
+\stix@MathSymbol{\blacktriangleleft}        {\mathord}{symbols}{"D7}
+\stix@MathSymbol{\vartriangleleft}          {\mathrel}{symbols}{"D8} \stix@MathSymbol{\lhd}{\mathbin}{symbols}{"D8}
+\stix@MathSymbol{\smallblacktriangleleft}   {\mathord}{symbols}{"D9}
+\stix@MathSymbol{\smalltriangleleft}        {\mathord}{symbols}{"DA}
+\stix@MathSymbol{\blackpointerleft}         {\mathord}{symbols}{"DB}
+\stix@MathSymbol{\whitepointerleft}         {\mathord}{symbols}{"DC}
+\stix@MathSymbol{\mdlgblkdiamond}           {\mathord}{symbols}{"DD}
+\stix@MathSymbol{\mdlgwhtdiamond}           {\mathord}{symbols}{"DE}
+\stix@MathSymbol{\blackinwhitediamond}      {\mathord}{symbols}{"DF}
+
+\stix@MathSymbol{\fisheye}                  {\mathord}{symbols}{"E0}
+\stix@MathSymbol{\mdlgwhtlozenge}           {\mathord}{symbols}{"E1} \let\lozenge=\mdlgwhtlozenge \let\Diamond=\mdlgwhtlozenge
+\stix@MathSymbol{\mdlgwhtcircle}            {\mathbin}{symbols}{"E2} \let\bigcirc=\mdlgwhtcircle
+\stix@MathSymbol{\dottedcircle}             {\mathord}{symbols}{"E3}
+\stix@MathSymbol{\circlevertfill}           {\mathord}{symbols}{"E4}
+\stix@MathSymbol{\bullseye}                 {\mathord}{symbols}{"E5}
+\stix@MathSymbol{\mdlgblkcircle}            {\mathord}{symbols}{"E6}
+\stix@MathSymbol{\circlelefthalfblack}      {\mathord}{symbols}{"E7}
+\stix@MathSymbol{\circlerighthalfblack}     {\mathord}{symbols}{"E8}
+\stix@MathSymbol{\circlebottomhalfblack}    {\mathord}{symbols}{"E9}
+\stix@MathSymbol{\circletophalfblack}       {\mathord}{symbols}{"EA}
+\stix@MathSymbol{\circleurquadblack}        {\mathord}{symbols}{"EB}
+\stix@MathSymbol{\blackcircleulquadwhite}   {\mathord}{symbols}{"EC}
+\stix@MathSymbol{\blacklefthalfcircle}      {\mathord}{symbols}{"ED}
+\stix@MathSymbol{\blackrighthalfcircle}     {\mathord}{symbols}{"EE}
+\stix@MathSymbol{\inversebullet}            {\mathord}{symbols}{"EF}
+
+\stix@MathSymbol{\inversewhitecircle}       {\mathord}{symbols}{"F0}
+\stix@MathSymbol{\invwhiteupperhalfcircle}  {\mathord}{symbols}{"F1}
+\stix@MathSymbol{\invwhitelowerhalfcircle}  {\mathord}{symbols}{"F2}
+\stix@MathSymbol{\ularc}                    {\mathord}{symbols}{"F3}
+\stix@MathSymbol{\urarc}                    {\mathord}{symbols}{"F4}
+\stix@MathSymbol{\lrarc}                    {\mathord}{symbols}{"F5}
+\stix@MathSymbol{\llarc}                    {\mathord}{symbols}{"F6}
+\stix@MathSymbol{\topsemicircle}            {\mathord}{symbols}{"F7}
+\stix@MathSymbol{\botsemicircle}            {\mathord}{symbols}{"F8}
+\stix@MathSymbol{\lrblacktriangle}          {\mathord}{symbols}{"F9}
+\stix@MathSymbol{\llblacktriangle}          {\mathord}{symbols}{"FA}
+\stix@MathSymbol{\ulblacktriangle}          {\mathord}{symbols}{"FB}
+\stix@MathSymbol{\urblacktriangle}          {\mathord}{symbols}{"FC}
+\stix@MathSymbol{\smwhtcircle}              {\mathord}{symbols}{"FD} \let\circ=\smwhtcircle
+\stix@MathSymbol{\squareleftblack}          {\mathord}{symbols}{"FE}
+\stix@MathSymbol{\squarerightblack}         {\mathord}{symbols}{"FF}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\acidfree}                 {\mathord}  {symbols2}{"00}
+\stix@MathSymbol{\draftingarrow}            {\mathord}  {symbols2}{"01}
+\stix@MathSymbol{\threedangle}              {\mathord}  {symbols2}{"02}
+\stix@MathSymbol{\whiteinwhitetriangle}     {\mathord}  {symbols2}{"03}
+\stix@MathSymbol{\perp}                     {\mathrel}  {symbols2}{"04}
+\stix@MathSymbol{\subsetcirc}               {\mathord}  {symbols2}{"05}
+\stix@MathSymbol{\supsetcirc}               {\mathord}  {symbols2}{"06}
+\stix@MathSymbol{\lbag}                     {\mathopen} {symbols2}{"07}
+\stix@MathSymbol{\rbag}                     {\mathclose}{symbols2}{"08}
+\stix@MathSymbol{\veedot}                   {\mathbin}  {symbols2}{"09}
+\stix@MathSymbol{\bsolhsub}                 {\mathrel}  {symbols2}{"0A}
+\stix@MathSymbol{\suphsol}                  {\mathrel}  {symbols2}{"0B}
+\stix@MathSymbol{\diamondcdot}              {\mathord}  {symbols2}{"0C}
+\stix@MathSymbol{\wedgedot}                 {\mathbin}  {symbols2}{"0D}
+\stix@MathSymbol{\upin}                     {\mathrel}  {symbols2}{"0E}
+\stix@MathSymbol{\pullback}                 {\mathrel}  {symbols2}{"0F}
+\stix@MathSymbol{\pushout}                  {\mathrel}  {symbols2}{"10}
+\stix@MathSymbol{\leftouterjoin}            {\mathop}   {symbols2}{"11}
+\stix@MathSymbol{\rightouterjoin}           {\mathop}   {symbols2}{"12}
+\stix@MathSymbol{\fullouterjoin}            {\mathop}   {symbols2}{"13}
+\stix@MathSymbol{\bigbot}                   {\mathop}   {symbols2}{"14}
+\stix@MathSymbol{\bigtop}                   {\mathop}   {symbols2}{"15}
+\stix@MathSymbol{\DashVDash}                {\mathrel}  {symbols2}{"16}
+\stix@MathSymbol{\dashVdash}                {\mathrel}  {symbols2}{"17}
+\stix@MathSymbol{\multimapinv}              {\mathrel}  {symbols2}{"18}
+\stix@MathSymbol{\vlongdash}                {\mathrel}  {symbols2}{"19}
+\stix@MathSymbol{\longdashv}                {\mathrel}  {symbols2}{"1A}
+\stix@MathSymbol{\cirbot}                   {\mathrel}  {symbols2}{"1B}
+\stix@MathSymbol{\lozengeminus}             {\mathbin}  {symbols2}{"1C}
+\stix@MathSymbol{\concavediamond}           {\mathbin}  {symbols2}{"1D}
+\stix@MathSymbol{\concavediamondtickleft}   {\mathbin}  {symbols2}{"1E}
+\stix@MathSymbol{\concavediamondtickright}  {\mathbin}  {symbols2}{"1F}
+\stix@MathSymbol{\whitesquaretickleft}      {\mathbin}  {symbols2}{"20}
+\stix@MathSymbol{\whitesquaretickright}     {\mathbin}  {symbols2}{"21}
+\stix@MathSymbol{\Lbrbrak}                  {\mathopen} {symbols2}{"22}
+\stix@MathSymbol{\Rbrbrak}                  {\mathclose}{symbols2}{"23}
+\stix@MathSymbol{\mdsmblkcircle}            {\mathord}  {symbols2}{"24}
+\stix@MathSymbol{\typecolon}                {\mathbin}  {symbols2}{"25}
+\stix@MathSymbol{\llparenthesis}            {\mathopen} {symbols2}{"26}
+\stix@MathSymbol{\rrparenthesis}            {\mathclose}{symbols2}{"27}
+\stix@MathSymbol{\llangle}                  {\mathopen} {symbols2}{"28}
+\stix@MathSymbol{\rrangle}                  {\mathclose}{symbols2}{"29}
+\stix@MathSymbol{\lbrackubar}               {\mathopen} {symbols2}{"2A}
+\stix@MathSymbol{\rbrackubar}               {\mathclose}{symbols2}{"2B}
+\stix@MathSymbol{\lbrackultick}             {\mathopen} {symbols2}{"2C}
+\stix@MathSymbol{\rbracklrtick}             {\mathclose}{symbols2}{"2D}
+\stix@MathSymbol{\lbracklltick}             {\mathopen} {symbols2}{"2E}
+\stix@MathSymbol{\rbrackurtick}             {\mathclose}{symbols2}{"2F}
+\stix@MathSymbol{\langledot}                {\mathopen} {symbols2}{"30}
+\stix@MathSymbol{\rangledot}                {\mathclose}{symbols2}{"31}
+\stix@MathSymbol{\lparenless}               {\mathopen} {symbols2}{"32}
+\stix@MathSymbol{\rparengtr}                {\mathclose}{symbols2}{"33}
+\stix@MathSymbol{\Lparengtr}                {\mathopen} {symbols2}{"34}
+\stix@MathSymbol{\Rparenless}               {\mathclose}{symbols2}{"35}
+\stix@MathSymbol{\lblkbrbrak}               {\mathopen} {symbols2}{"36}
+\stix@MathSymbol{\rblkbrbrak}               {\mathclose}{symbols2}{"37}
+\stix@MathSymbol{\fourvdots}                {\mathord}  {symbols2}{"38}
+\stix@MathSymbol{\vzigzag}                  {\mathord}  {symbols2}{"39}
+\stix@MathSymbol{\measuredangleleft}        {\mathord}  {symbols2}{"3A}
+\stix@MathSymbol{\rightanglesqr}            {\mathord}  {symbols2}{"3B}
+\stix@MathSymbol{\rightanglemdot}           {\mathord}  {symbols2}{"3C}
+\stix@MathSymbol{\angles}                   {\mathord}  {symbols2}{"3D}
+\stix@MathSymbol{\angdnr}                   {\mathord}  {symbols2}{"3E}
+\stix@MathSymbol{\gtlpar}                   {\mathord}  {symbols2}{"3F}
+\stix@MathSymbol{\sphericalangleup}         {\mathord}  {symbols2}{"40}
+\stix@MathSymbol{\turnangle}                {\mathord}  {symbols2}{"5B}
+\stix@MathSymbol{\revangle}                 {\mathord}  {symbols2}{"5C}
+\stix@MathSymbol{\angleubar}                {\mathord}  {symbols2}{"5D}
+\stix@MathSymbol{\revangleubar}             {\mathord}  {symbols2}{"5E}
+\stix@MathSymbol{\wideangledown}            {\mathord}  {symbols2}{"5F}
+\stix@MathSymbol{\wideangleup}              {\mathord}  {symbols2}{"60}
+\stix@MathSymbol{\measanglerutone}          {\mathord}  {symbols2}{"7D}
+\stix@MathSymbol{\measanglelutonw}          {\mathord}  {symbols2}{"7E}
+
+\stix@MathSymbol{\measanglerdtose}          {\mathord}  {symbols2}{"99}
+\stix@MathSymbol{\measangleldtosw}          {\mathord}  {symbols2}{"9A}
+\stix@MathSymbol{\measangleurtone}          {\mathord}  {symbols2}{"9B}
+\stix@MathSymbol{\measangleultonw}          {\mathord}  {symbols2}{"9C}
+\stix@MathSymbol{\measangledrtose}          {\mathord}  {symbols2}{"9D}
+\stix@MathSymbol{\measangledltosw}          {\mathord}  {symbols2}{"9E}
+\stix@MathSymbol{\revemptyset}              {\mathord}  {symbols2}{"9F}
+
+\stix@MathSymbol{\emptysetobar}             {\mathord}  {symbols2}{"A0}
+\stix@MathSymbol{\emptysetocirc}            {\mathord}  {symbols2}{"A1}
+\stix@MathSymbol{\emptysetoarr}             {\mathord}  {symbols2}{"A2}
+\stix@MathSymbol{\emptysetoarrl}            {\mathord}  {symbols2}{"A3}
+\stix@MathSymbol{\circlehbar}               {\mathbin}  {symbols2}{"A4}
+\stix@MathSymbol{\circledvert}              {\mathbin}  {symbols2}{"A5}
+\stix@MathSymbol{\circledparallel}          {\mathbin}  {symbols2}{"A6}
+\stix@MathSymbol{\obslash}                  {\mathbin}  {symbols2}{"A7}
+\stix@MathSymbol{\operp}                    {\mathbin}  {symbols2}{"A8}
+\stix@MathSymbol{\obot}                     {\mathord}  {symbols2}{"A9}
+\stix@MathSymbol{\olcross}                  {\mathord}  {symbols2}{"AA}
+\stix@MathSymbol{\odotslashdot}             {\mathord}  {symbols2}{"AB}
+\stix@MathSymbol{\uparrowoncircle}          {\mathord}  {symbols2}{"AC}
+\stix@MathSymbol{\circledwhitebullet}       {\mathord}  {symbols2}{"AD}
+\stix@MathSymbol{\circledbullet}            {\mathord}  {symbols2}{"AE}
+\stix@MathSymbol{\olessthan}                {\mathbin}  {symbols2}{"AF}
+
+\stix@MathSymbol{\ogreaterthan}             {\mathbin}  {symbols2}{"B0}
+\stix@MathSymbol{\cirscir}                  {\mathord}  {symbols2}{"B1}
+\stix@MathSymbol{\cirE}                     {\mathord}  {symbols2}{"B2}
+\stix@MathSymbol{\boxdiag}                  {\mathbin}  {symbols2}{"B3}
+\stix@MathSymbol{\boxbslash}                {\mathbin}  {symbols2}{"B4}
+\stix@MathSymbol{\boxast}                   {\mathbin}  {symbols2}{"B5}
+\stix@MathSymbol{\boxcircle}                {\mathbin}  {symbols2}{"B6}
+\stix@MathSymbol{\boxbox}                   {\mathbin}  {symbols2}{"B7}
+\stix@MathSymbol{\boxonbox}                 {\mathord}  {symbols2}{"B8}
+\stix@MathSymbol{\triangleodot}             {\mathord}  {symbols2}{"B9}
+\stix@MathSymbol{\triangleubar}             {\mathord}  {symbols2}{"BA}
+\stix@MathSymbol{\triangles}                {\mathord}  {symbols2}{"BB}
+\stix@MathSymbol{\triangleserifs}           {\mathbin}  {symbols2}{"BC}
+\stix@MathSymbol{\rtriltri}                 {\mathrel}  {symbols2}{"BD}
+\stix@MathSymbol{\ltrivb}                   {\mathrel}  {symbols2}{"BE}
+\stix@MathSymbol{\vbrtri}                   {\mathrel}  {symbols2}{"BF}
+
+\stix@MathSymbol{\lfbowtie}                 {\mathrel}  {symbols2}{"C0}
+\stix@MathSymbol{\rfbowtie}                 {\mathrel}  {symbols2}{"C1}
+\stix@MathSymbol{\fbowtie}                  {\mathrel}  {symbols2}{"C2}
+\stix@MathSymbol{\lftimes}                  {\mathrel}  {symbols2}{"C3}
+\stix@MathSymbol{\rftimes}                  {\mathrel}  {symbols2}{"C4}
+\stix@MathSymbol{\hourglass}                {\mathbin}  {symbols2}{"C5}
+\stix@MathSymbol{\blackhourglass}           {\mathbin}  {symbols2}{"C6}
+\stix@MathSymbol{\lvzigzag}                 {\mathopen} {symbols2}{"C7}
+\stix@MathSymbol{\rvzigzag}                 {\mathclose}{symbols2}{"C8}
+\stix@MathSymbol{\Lvzigzag}                 {\mathopen} {symbols2}{"C9}
+\stix@MathSymbol{\Rvzigzag}                 {\mathclose}{symbols2}{"CA}
+\stix@MathSymbol{\iinfin}                   {\mathord}  {symbols2}{"CB}
+\stix@MathSymbol{\tieinfty}                 {\mathord}  {symbols2}{"CC}
+\stix@MathSymbol{\nvinfty}                  {\mathord}  {symbols2}{"CD}
+\stix@MathSymbol{\dualmap}                  {\mathrel}  {symbols2}{"CE}
+\stix@MathSymbol{\laplac}                   {\mathord}  {symbols2}{"CF}
+
+\stix@MathSymbol{\lrtriangleeq}             {\mathrel}  {symbols2}{"D0}
+\stix@MathSymbol{\shuffle}                  {\mathbin}  {symbols2}{"D1}
+\stix@MathSymbol{\eparsl}                   {\mathrel}  {symbols2}{"D2}
+\stix@MathSymbol{\smeparsl}                 {\mathrel}  {symbols2}{"D3}
+\stix@MathSymbol{\eqvparsl}                 {\mathrel}  {symbols2}{"D4}
+\stix@MathSymbol{\gleichstark}              {\mathrel}  {symbols2}{"D5}
+\stix@MathSymbol{\thermod}                  {\mathord}  {symbols2}{"D6}
+\stix@MathSymbol{\downtriangleleftblack}    {\mathord}  {symbols2}{"D7}
+\stix@MathSymbol{\downtrianglerightblack}   {\mathord}  {symbols2}{"D8}
+\stix@MathSymbol{\blackdiamonddownarrow}    {\mathord}  {symbols2}{"D9}
+\stix@MathSymbol{\blacklozenge}             {\mathord}  {symbols2}{"DA} \stix@MathSymbol{\mdlgblklozenge}{\mathbin}{symbols2}{"DA}
+\stix@MathSymbol{\circledownarrow}          {\mathord}  {symbols2}{"DB}
+\stix@MathSymbol{\blackcircledownarrow}     {\mathord}  {symbols2}{"DC}
+\stix@MathSymbol{\errbarsquare}             {\mathord}  {symbols2}{"DD}
+\stix@MathSymbol{\errbarblacksquare}        {\mathord}  {symbols2}{"DE}
+\stix@MathSymbol{\errbardiamond}            {\mathord}  {symbols2}{"DF}
+
+\stix@MathSymbol{\errbarblackdiamond}       {\mathord}  {symbols2}{"E0}
+\stix@MathSymbol{\errbarcircle}             {\mathord}  {symbols2}{"E1}
+\stix@MathSymbol{\errbarblackcircle}        {\mathord}  {symbols2}{"E2}
+\stix@MathSymbol{\ruledelayed}              {\mathrel}  {symbols2}{"E3}
+\stix@MathSymbol{\setminus}                 {\mathbin}  {symbols2}{"E4}
+\stix@MathSymbol{\dsol}                     {\mathbin}  {symbols2}{"E5}
+\stix@MathSymbol{\rsolbar}                  {\mathbin}  {symbols2}{"E6}
+\stix@MathSymbol{\doubleplus}               {\mathbin}  {symbols2}{"E7}
+\stix@MathSymbol{\tripleplus}               {\mathbin}  {symbols2}{"E8}
+\stix@MathSymbol{\lcurvyangle}              {\mathopen} {symbols2}{"E9}
+\stix@MathSymbol{\rcurvyangle}              {\mathclose}{symbols2}{"EA}
+\stix@MathSymbol{\tplus}                    {\mathbin}  {symbols2}{"EB}
+\stix@MathSymbol{\tminus}                   {\mathbin}  {symbols2}{"EC}
+\stix@MathSymbol{\Join}                     {\mathop}   {symbols2}{"ED}
+\stix@MathSymbol{\bigtriangleleft}          {\mathop}   {symbols2}{"EE}
+\stix@MathSymbol{\zcmp}                     {\mathop}   {symbols2}{"EF}
+
+\stix@MathSymbol{\zpipe}                    {\mathop}   {symbols2}{"F0}
+\stix@MathSymbol{\zproject}                 {\mathop}   {symbols2}{"F1}
+\stix@MathSymbol{\ringplus}                 {\mathbin}  {symbols2}{"F2}
+\stix@MathSymbol{\plushat}                  {\mathbin}  {symbols2}{"F3}
+\stix@MathSymbol{\simplus}                  {\mathbin}  {symbols2}{"F4}
+\stix@MathSymbol{\plusdot}                  {\mathbin}  {symbols2}{"F5}
+\stix@MathSymbol{\plussim}                  {\mathbin}  {symbols2}{"F6}
+\stix@MathSymbol{\plussubtwo}               {\mathbin}  {symbols2}{"F7}
+\stix@MathSymbol{\plustrif}                 {\mathbin}  {symbols2}{"F8}
+\stix@MathSymbol{\commaminus}               {\mathbin}  {symbols2}{"F9}
+\stix@MathSymbol{\minusdot}                 {\mathbin}  {symbols2}{"FA}
+\stix@MathSymbol{\minusfdots}               {\mathbin}  {symbols2}{"FB}
+\stix@MathSymbol{\minusrdots}               {\mathbin}  {symbols2}{"FC}
+\stix@MathSymbol{\opluslhrim}               {\mathbin}  {symbols2}{"FD}
+\stix@MathSymbol{\oplusrhrim}               {\mathbin}  {symbols2}{"FE}
+\stix@MathSymbol{\vectimes}                 {\mathbin}  {symbols2}{"FF}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\succneq}                  {\mathrel}{symbols3}{"26}
+\stix@MathSymbol{\preceqq}                  {\mathrel}{symbols3}{"27}
+\stix@MathSymbol{\succeqq}                  {\mathrel}{symbols3}{"28}
+\stix@MathSymbol{\precneqq}                 {\mathrel}{symbols3}{"29}
+\stix@MathSymbol{\succneqq}                 {\mathrel}{symbols3}{"2A}
+\stix@MathSymbol{\precapprox}               {\mathrel}{symbols3}{"2B}
+\stix@MathSymbol{\succapprox}               {\mathrel}{symbols3}{"2C}
+\stix@MathSymbol{\precnapprox}              {\mathrel}{symbols3}{"2D}
+\stix@MathSymbol{\succnapprox}              {\mathrel}{symbols3}{"2E}
+\stix@MathSymbol{\Prec}                     {\mathrel}{symbols3}{"2F}
+\stix@MathSymbol{\Succ}                     {\mathrel}{symbols3}{"3A}
+\stix@MathSymbol{\subsetdot}                {\mathrel}{symbols3}{"3B}
+\stix@MathSymbol{\supsetdot}                {\mathrel}{symbols3}{"3C}
+\stix@MathSymbol{\subsetplus}               {\mathrel}{symbols3}{"3D}
+\stix@MathSymbol{\supsetplus}               {\mathrel}{symbols3}{"3E}
+\stix@MathSymbol{\submult}                  {\mathrel}{symbols3}{"3F}
+\stix@MathSymbol{\supmult}                  {\mathrel}{symbols3}{"40}
+\stix@MathSymbol{\subedot}                  {\mathrel}{symbols3}{"5B}
+\stix@MathSymbol{\supedot}                  {\mathrel}{symbols3}{"5C}
+\stix@MathSymbol{\subseteqq}                {\mathrel}{symbols3}{"5D}
+\stix@MathSymbol{\supseteqq}                {\mathrel}{symbols3}{"5E}
+\stix@MathSymbol{\subsim}                   {\mathrel}{symbols3}{"5F}
+\stix@MathSymbol{\supsim}                   {\mathrel}{symbols3}{"60}
+\stix@MathSymbol{\subsetapprox}             {\mathrel}{symbols3}{"7D}
+\stix@MathSymbol{\supsetapprox}             {\mathrel}{symbols3}{"7E}
+
+\stix@MathSymbol{\Bbbk}                     {\mathord}{symbols3}{`k}
+
+\stix@MathSymbol{\capbarcup}                {\mathbin}{symbols3}{"99}
+\stix@MathSymbol{\twocups}                  {\mathbin}{symbols3}{"9A}
+\stix@MathSymbol{\twocaps}                  {\mathbin}{symbols3}{"9B}
+\stix@MathSymbol{\closedvarcup}             {\mathbin}{symbols3}{"9C}
+\stix@MathSymbol{\closedvarcap}             {\mathbin}{symbols3}{"9D}
+\stix@MathSymbol{\Sqcap}                    {\mathbin}{symbols3}{"9E}
+\stix@MathSymbol{\Sqcup}                    {\mathbin}{symbols3}{"9F}
+
+\stix@MathSymbol{\closedvarcupsmashprod}    {\mathbin}{symbols3}{"A0}
+\stix@MathSymbol{\wedgeodot}                {\mathbin}{symbols3}{"A1}
+\stix@MathSymbol{\veeodot}                  {\mathbin}{symbols3}{"A2}
+\stix@MathSymbol{\Wedge}                    {\mathbin}{symbols3}{"A3}
+\stix@MathSymbol{\Vee}                      {\mathbin}{symbols3}{"A4}
+\stix@MathSymbol{\wedgeonwedge}             {\mathbin}{symbols3}{"A5}
+\stix@MathSymbol{\veeonvee}                 {\mathbin}{symbols3}{"A6}
+\stix@MathSymbol{\bigslopedvee}             {\mathbin}{symbols3}{"A7}
+\stix@MathSymbol{\bigslopedwedge}           {\mathbin}{symbols3}{"A8}
+\stix@MathSymbol{\veeonwedge}               {\mathrel}{symbols3}{"A9}
+\stix@MathSymbol{\wedgemidvert}             {\mathbin}{symbols3}{"AA}
+\stix@MathSymbol{\veemidvert}               {\mathbin}{symbols3}{"AB}
+\stix@MathSymbol{\midbarwedge}              {\mathbin}{symbols3}{"AC}
+\stix@MathSymbol{\midbarvee}                {\mathbin}{symbols3}{"AD}
+\stix@MathSymbol{\doublebarwedge}           {\mathbin}{symbols3}{"AE}
+\stix@MathSymbol{\wedgebar}                 {\mathbin}{symbols3}{"AF}
+
+\stix@MathSymbol{\wedgedoublebar}           {\mathbin}{symbols3}{"B0}
+\stix@MathSymbol{\varveebar}                {\mathbin}{symbols3}{"B1}
+\stix@MathSymbol{\doublebarvee}             {\mathbin}{symbols3}{"B2}
+\stix@MathSymbol{\veedoublebar}             {\mathbin}{symbols3}{"B3}
+\stix@MathSymbol{\dsub}                     {\mathbin}{symbols3}{"B4}
+\stix@MathSymbol{\rsub}                     {\mathbin}{symbols3}{"B5}
+\stix@MathSymbol{\eqdot}                    {\mathrel}{symbols3}{"B6}
+\stix@MathSymbol{\dotequiv}                 {\mathrel}{symbols3}{"B7}
+\stix@MathSymbol{\equivVert}                {\mathrel}{symbols3}{"B8}
+\stix@MathSymbol{\equivVvert}               {\mathrel}{symbols3}{"B9}
+\stix@MathSymbol{\dotsim}                   {\mathrel}{symbols3}{"BA}
+\stix@MathSymbol{\simrdots}                 {\mathrel}{symbols3}{"BB}
+\stix@MathSymbol{\simminussim}              {\mathrel}{symbols3}{"BC}
+\stix@MathSymbol{\congdot}                  {\mathrel}{symbols3}{"BD}
+\stix@MathSymbol{\asteq}                    {\mathrel}{symbols3}{"BE}
+\stix@MathSymbol{\hatapprox}                {\mathrel}{symbols3}{"BF}
+
+\stix@MathSymbol{\approxeqq}                {\mathrel}{symbols3}{"C0}
+\stix@MathSymbol{\eqqplus}                  {\mathbin}{symbols3}{"C1}
+\stix@MathSymbol{\pluseqq}                  {\mathbin}{symbols3}{"C2}
+\stix@MathSymbol{\eqqsim}                   {\mathrel}{symbols3}{"C3}
+\stix@MathSymbol{\Coloneq}                  {\mathrel}{symbols3}{"C4}
+\stix@MathSymbol{\eqeq}                     {\mathrel}{symbols3}{"C5}
+\stix@MathSymbol{\eqeqeq}                   {\mathrel}{symbols3}{"C6}
+\stix@MathSymbol{\ddotseq}                  {\mathrel}{symbols3}{"C7}
+\stix@MathSymbol{\equivDD}                  {\mathrel}{symbols3}{"C8}
+\stix@MathSymbol{\ltcir}                    {\mathrel}{symbols3}{"C9}
+\stix@MathSymbol{\gtcir}                    {\mathrel}{symbols3}{"CA}
+\stix@MathSymbol{\ltquest}                  {\mathrel}{symbols3}{"CB}
+\stix@MathSymbol{\gtquest}                  {\mathrel}{symbols3}{"CC}
+\stix@MathSymbol{\leqslant}                 {\mathrel}{symbols3}{"CD}
+\stix@MathSymbol{\geqslant}                 {\mathrel}{symbols3}{"CE}
+\stix@MathSymbol{\lesdot}                   {\mathrel}{symbols3}{"CF}
+
+\stix@MathSymbol{\gesdot}                   {\mathrel}{symbols3}{"D0}
+\stix@MathSymbol{\lesdoto}                  {\mathrel}{symbols3}{"D1}
+\stix@MathSymbol{\gesdoto}                  {\mathrel}{symbols3}{"D2}
+\stix@MathSymbol{\lesdotor}                 {\mathrel}{symbols3}{"D3}
+\stix@MathSymbol{\gesdotol}                 {\mathrel}{symbols3}{"D4}
+\stix@MathSymbol{\lessapprox}               {\mathrel}{symbols3}{"D5}
+\stix@MathSymbol{\gtrapprox}                {\mathrel}{symbols3}{"D6}
+\stix@MathSymbol{\lneq}                     {\mathrel}{symbols3}{"D7}
+\stix@MathSymbol{\gneq}                     {\mathrel}{symbols3}{"D8}
+\stix@MathSymbol{\lnapprox}                 {\mathrel}{symbols3}{"D9}
+\stix@MathSymbol{\gnapprox}                 {\mathrel}{symbols3}{"DA}
+\stix@MathSymbol{\lesseqqgtr}               {\mathrel}{symbols3}{"DB}
+\stix@MathSymbol{\gtreqqless}               {\mathrel}{symbols3}{"DC}
+\stix@MathSymbol{\lsime}                    {\mathrel}{symbols3}{"DD}
+\stix@MathSymbol{\gsime}                    {\mathrel}{symbols3}{"DE}
+\stix@MathSymbol{\lsimg}                    {\mathrel}{symbols3}{"DF}
+
+\stix@MathSymbol{\gsiml}                    {\mathrel}{symbols3}{"E0}
+\stix@MathSymbol{\lgE}                      {\mathrel}{symbols3}{"E1}
+\stix@MathSymbol{\glE}                      {\mathrel}{symbols3}{"E2}
+\stix@MathSymbol{\lesges}                   {\mathrel}{symbols3}{"E3}
+\stix@MathSymbol{\gesles}                   {\mathrel}{symbols3}{"E4}
+\stix@MathSymbol{\eqslantless}              {\mathrel}{symbols3}{"E5}
+\stix@MathSymbol{\eqslantgtr}               {\mathrel}{symbols3}{"E6}
+\stix@MathSymbol{\elsdot}                   {\mathrel}{symbols3}{"E7}
+\stix@MathSymbol{\egsdot}                   {\mathrel}{symbols3}{"E8}
+\stix@MathSymbol{\eqqless}                  {\mathrel}{symbols3}{"E9}
+\stix@MathSymbol{\eqqgtr}                   {\mathrel}{symbols3}{"EA}
+\stix@MathSymbol{\eqqslantless}             {\mathrel}{symbols3}{"EB}
+\stix@MathSymbol{\eqqslantgtr}              {\mathrel}{symbols3}{"EC}
+\stix@MathSymbol{\simless}                  {\mathrel}{symbols3}{"ED}
+\stix@MathSymbol{\simgtr}                   {\mathrel}{symbols3}{"EE}
+\stix@MathSymbol{\simlE}                    {\mathrel}{symbols3}{"EF}
+
+\stix@MathSymbol{\simgE}                    {\mathrel}{symbols3}{"F0}
+\stix@MathSymbol{\Lt}                       {\mathrel}{symbols3}{"F1}
+\stix@MathSymbol{\Gt}                       {\mathrel}{symbols3}{"F2}
+\stix@MathSymbol{\partialmeetcontraction}   {\mathrel}{symbols3}{"F3}
+\stix@MathSymbol{\glj}                      {\mathrel}{symbols3}{"F4}
+\stix@MathSymbol{\gla}                      {\mathrel}{symbols3}{"F5}
+\stix@MathSymbol{\ltcc}                     {\mathrel}{symbols3}{"F6}
+\stix@MathSymbol{\gtcc}                     {\mathrel}{symbols3}{"F7}
+\stix@MathSymbol{\lescc}                    {\mathrel}{symbols3}{"F8}
+\stix@MathSymbol{\gescc}                    {\mathrel}{symbols3}{"F9}
+\stix@MathSymbol{\smt}                      {\mathrel}{symbols3}{"FA}
+\stix@MathSymbol{\lat}                      {\mathrel}{symbols3}{"FB}
+\stix@MathSymbol{\smte}                     {\mathrel}{symbols3}{"FC}
+\stix@MathSymbol{\late}                     {\mathrel}{symbols3}{"FD}
+\stix@MathSymbol{\bumpeqq}                  {\mathrel}{symbols3}{"FE}
+\stix@MathSymbol{\precneq}                  {\mathrel}{symbols3}{"FF}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\ngeqq}                    {\mathrel}{symbols4}{"02}
+\stix@MathSymbol{\ngeqslant}                {\mathrel}{symbols4}{"03}
+\stix@MathSymbol{\nleqslant}                {\mathrel}{symbols4}{"04}
+\stix@MathSymbol{\nleqq}                    {\mathrel}{symbols4}{"05}
+\stix@MathSymbol{\nsubseteqq}               {\mathrel}{symbols4}{"06}
+\stix@MathSymbol{\nsupseteqq}               {\mathrel}{symbols4}{"07}
+
+\stix@MathSymbol{\mathsterling}             {\mathord}{symbols4}{"7D}
+
+\stix@MathSymbol{\ncongdot}                 {\mathrel}{symbols4}{"09}
+\stix@MathSymbol{\napproxeqq}               {\mathrel}{symbols4}{"0A}
+\stix@MathSymbol{\nll}                      {\mathrel}{symbols4}{"0B}
+\stix@MathSymbol{\ngg}                      {\mathrel}{symbols4}{"0C}
+\stix@MathSymbol{\nsqsubset}                {\mathrel}{symbols4}{"1A}
+\stix@MathSymbol{\npreceq}                  {\mathrel}{symbols4}{"16}
+\stix@MathSymbol{\nsucceq}                  {\mathrel}{symbols4}{"19}
+\stix@MathSymbol{\nsqsupset}                {\mathrel}{symbols4}{"1B}
+\stix@MathSymbol{\nBumpeq}                  {\mathrel}{symbols4}{"1C}
+\stix@MathSymbol{\nbumpeq}                  {\mathrel}{symbols4}{"1F}
+\stix@MathSymbol{\neqsim}                   {\mathrel}{symbols4}{"20}
+\stix@MathSymbol{\nvarisinobar}             {\mathrel}{symbols4}{"21}
+\stix@MathSymbol{\nvarniobar}               {\mathrel}{symbols4}{"22}
+\stix@MathSymbol{\neqslantless}             {\mathrel}{symbols4}{"25}
+\stix@MathSymbol{\neqslantgtr}              {\mathrel}{symbols4}{"26}
+
+\stix@MathSymbol{\subsetneqq}               {\mathrel}{symbols4}{"99}
+\stix@MathSymbol{\supsetneqq}               {\mathrel}{symbols4}{"9A}
+\stix@MathSymbol{\lsqhook}                  {\mathrel}{symbols4}{"9B}
+\stix@MathSymbol{\rsqhook}                  {\mathrel}{symbols4}{"9C}
+\stix@MathSymbol{\csub}                     {\mathrel}{symbols4}{"9D}
+\stix@MathSymbol{\csup}                     {\mathrel}{symbols4}{"9E}
+\stix@MathSymbol{\csube}                    {\mathrel}{symbols4}{"9F}
+
+\stix@MathSymbol{\csupe}                    {\mathrel}{symbols4}{"A0}
+\stix@MathSymbol{\subsup}                   {\mathrel}{symbols4}{"A1}
+\stix@MathSymbol{\supsub}                   {\mathrel}{symbols4}{"A2}
+\stix@MathSymbol{\subsub}                   {\mathrel}{symbols4}{"A3}
+\stix@MathSymbol{\supsup}                   {\mathrel}{symbols4}{"A4}
+\stix@MathSymbol{\suphsub}                  {\mathrel}{symbols4}{"A5}
+\stix@MathSymbol{\supdsub}                  {\mathrel}{symbols4}{"A6}
+\stix@MathSymbol{\forkv}                    {\mathrel}{symbols4}{"A7}
+\stix@MathSymbol{\topfork}                  {\mathrel}{symbols4}{"A8}
+\stix@MathSymbol{\mlcp}                     {\mathrel}{symbols4}{"A9}
+\stix@MathSymbol{\forks}                    {\mathrel}{symbols4}{"AA}
+\stix@MathSymbol{\forksnot}                 {\mathrel}{symbols4}{"AB}
+\stix@MathSymbol{\shortlefttack}            {\mathrel}{symbols4}{"AC}
+\stix@MathSymbol{\shortdowntack}            {\mathrel}{symbols4}{"AD}
+\stix@MathSymbol{\shortuptack}              {\mathrel}{symbols4}{"AE}
+\stix@MathSymbol{\perps}                    {\mathord}{symbols4}{"AF}
+
+\stix@MathSymbol{\vDdash}                   {\mathrel}{symbols4}{"B0}
+\stix@MathSymbol{\dashV}                    {\mathrel}{symbols4}{"B1}
+\stix@MathSymbol{\Dashv}                    {\mathrel}{symbols4}{"B2}
+\stix@MathSymbol{\DashV}                    {\mathrel}{symbols4}{"B3}
+\stix@MathSymbol{\varVdash}                 {\mathrel}{symbols4}{"B4}
+\stix@MathSymbol{\Barv}                     {\mathrel}{symbols4}{"B5}
+\stix@MathSymbol{\vBar}                     {\mathrel}{symbols4}{"B6}
+\stix@MathSymbol{\vBarv}                    {\mathrel}{symbols4}{"B7}
+\stix@MathSymbol{\barV}                     {\mathrel}{symbols4}{"B8}
+\stix@MathSymbol{\Vbar}                     {\mathrel}{symbols4}{"B9}
+\stix@MathSymbol{\Not}                      {\mathrel}{symbols4}{"BA}
+\stix@MathSymbol{\bNot}                     {\mathrel}{symbols4}{"BB}
+\stix@MathSymbol{\revnmid}                  {\mathrel}{symbols4}{"BC}
+\stix@MathSymbol{\cirmid}                   {\mathrel}{symbols4}{"BD}
+\stix@MathSymbol{\midcir}                   {\mathrel}{symbols4}{"BE}
+\stix@MathSymbol{\topcir}                   {\mathord}{symbols4}{"BF}
+
+\stix@MathSymbol{\nhpar}                    {\mathrel}{symbols4}{"C0}
+\stix@MathSymbol{\parsim}                   {\mathrel}{symbols4}{"C1}
+\stix@MathSymbol{\interleave}               {\mathbin}{symbols4}{"C2}
+\stix@MathSymbol{\nhVvert}                  {\mathbin}{symbols4}{"C3}
+\stix@MathSymbol{\threedotcolon}            {\mathbin}{symbols4}{"C4}
+\stix@MathSymbol{\lllnest}                  {\mathrel}{symbols4}{"C5}
+\stix@MathSymbol{\gggnest}                  {\mathrel}{symbols4}{"C6}
+\stix@MathSymbol{\leqqslant}                {\mathrel}{symbols4}{"C7}
+\stix@MathSymbol{\geqqslant}                {\mathrel}{symbols4}{"C8}
+\stix@MathSymbol{\trslash}                  {\mathbin}{symbols4}{"C9}
+\stix@MathSymbol{\biginterleave}            {\mathop} {symbols4}{"CA}
+\stix@MathSymbol{\sslash}                   {\mathbin}{symbols4}{"CB}
+\stix@MathSymbol{\talloblong}               {\mathbin}{symbols4}{"CC}
+\stix@MathSymbol{\squaretopblack}           {\mathord}{symbols4}{"CD}
+\stix@MathSymbol{\squarebotblack}           {\mathord}{symbols4}{"CE}
+\stix@MathSymbol{\squareurblack}            {\mathord}{symbols4}{"CF}
+
+\stix@MathSymbol{\squarellblack}            {\mathord}{symbols4}{"D0}
+\stix@MathSymbol{\diamondleftblack}         {\mathord}{symbols4}{"D1}
+\stix@MathSymbol{\diamondrightblack}        {\mathord}{symbols4}{"D2}
+\stix@MathSymbol{\diamondtopblack}          {\mathord}{symbols4}{"D3}
+\stix@MathSymbol{\diamondbotblack}          {\mathord}{symbols4}{"D4}
+\stix@MathSymbol{\dottedsquare}             {\mathord}{symbols4}{"D5}
+\stix@MathSymbol{\lgblksquare}              {\mathord}{symbols4}{"D6}
+\stix@MathSymbol{\lgwhtsquare}              {\mathord}{symbols4}{"D7}
+\stix@MathSymbol{\vysmblksquare}            {\mathord}{symbols4}{"D8}
+\stix@MathSymbol{\vysmwhtsquare}            {\mathord}{symbols4}{"D9}
+\stix@MathSymbol{\pentagonblack}            {\mathord}{symbols4}{"DA}
+\stix@MathSymbol{\pentagon}                 {\mathord}{symbols4}{"DB}
+\stix@MathSymbol{\varhexagon}               {\mathord}{symbols4}{"DC}
+\stix@MathSymbol{\varhexagonblack}          {\mathord}{symbols4}{"DD}
+\stix@MathSymbol{\hexagonblack}             {\mathord}{symbols4}{"DE}
+\stix@MathSymbol{\lgblkcircle}              {\mathord}{symbols4}{"DF}
+
+\stix@MathSymbol{\mdblkdiamond}             {\mathord}{symbols4}{"E0}
+\stix@MathSymbol{\mdwhtdiamond}             {\mathord}{symbols4}{"E1}
+\stix@MathSymbol{\mdblklozenge}             {\mathord}{symbols4}{"E2}
+\stix@MathSymbol{\mdwhtlozenge}             {\mathord}{symbols4}{"E3}
+\stix@MathSymbol{\smblkdiamond}             {\mathord}{symbols4}{"E4}
+\stix@MathSymbol{\smblklozenge}             {\mathord}{symbols4}{"E5}
+\stix@MathSymbol{\smwhtlozenge}             {\mathord}{symbols4}{"E6}
+\stix@MathSymbol{\blkhorzoval}              {\mathord}{symbols4}{"E7}
+\stix@MathSymbol{\whthorzoval}              {\mathord}{symbols4}{"E8}
+\stix@MathSymbol{\blkvertoval}              {\mathord}{symbols4}{"E9}
+\stix@MathSymbol{\whtvertoval}              {\mathord}{symbols4}{"EA}
+\stix@MathSymbol{\medwhitestar}             {\mathord}{symbols4}{"EB}
+\stix@MathSymbol{\medblackstar}             {\mathord}{symbols4}{"EC}
+\stix@MathSymbol{\smwhitestar}              {\mathord}{symbols4}{"ED}
+\stix@MathSymbol{\rightpentagonblack}       {\mathord}{symbols4}{"EE}
+\stix@MathSymbol{\rightpentagon}            {\mathord}{symbols4}{"EF}
+
+\stix@MathSymbol{\postalmark}               {\mathord}{symbols4}{"F0}
+\stix@MathSymbol{\hzigzag}                  {\mathord}{symbols4}{"F1}
+\stix@MathSymbol{\bbrktbrk}                 {\mathord}{symbols4}{"F2}
+\stix@MathSymbol{\obrbrak}                  {\mathord}{symbols4}{"F3}
+\stix@MathSymbol{\ubrbrak}                  {\mathord}{symbols4}{"F4}
+\stix@MathSymbol{\astrosun}                 {\mathord}{symbols4}{"F5}
+\stix@MathSymbol{\danger}                   {\mathord}{symbols4}{"F6}
+\stix@MathSymbol{\blacksmiley}              {\mathord}{symbols4}{"F7}
+\stix@MathSymbol{\sun}                      {\mathord}{symbols4}{"F8}
+\stix@MathSymbol{\rightmoon}                {\mathord}{symbols4}{"F9}
+\stix@MathSymbol{\leftmoon}                 {\mathord}{symbols4}{"FA}
+\stix@MathSymbol{\female}                   {\mathord}{symbols4}{"FB}
+\stix@MathSymbol{\male}                     {\mathord}{symbols4}{"FC}
+\stix@MathSymbol{\varspadesuit}             {\mathord}{symbols4}{"FD}
+\stix@MathSymbol{\varheartsuit}             {\mathord}{symbols4}{"FE}
+\stix@MathSymbol{\vardiamondsuit}           {\mathord}{symbols4}{"FF}
+%    \end{macrocode}
+%
+% Our fonts have no optical sizes, so were are loading |script| and
+% |scriptscript| fonts at bigger sizes than the default \LaTeX\ setup.
+%
+%    \begin{macrocode}
+    \DeclareMathSizes{10}{10}{7.5}{6}
+%    \end{macrocode}
+%
+% \subsection{Package compatibility}
+%
+%    \begin{macrocode}
+\AtBeginDocument{
+    \@ifpackageloaded{amsmath}{
+%    \end{macrocode}
+%
+% \pkg{amsmath} redefines |\big| etc. but they are small for us, so we revert
+% to the \LaTeX\ definition.
+%
+%    \begin{macrocode}
+        \renewcommand{\big}{\bBigg@{1.2}}
+        \renewcommand{\Bigg}{\bBigg@{2.7}}
+%    \end{macrocode}
+%
+% Keep \pkg{amsmath}'s definitions from persisting if it is loaded first.
+%
+%    \begin{macrocode}
+        \let\dotsb@\@cdots
+        \let\dotsb\cdots
+        \let\dotsm\cdots
+    }{
+%    \end{macrocode}
+%
+% For \pkg{amsmath}'s |*limits| options.
+%
+%    \begin{macrocode}
+        \let\ilimits@=\nolimits
+        \let\slimits@=\relax
+        \let\DOTSI\relax
+    }
+}
+%    \end{macrocode}
+%
+% \pkg{amsopn} changes the math code of some symbols inside its
+% |\DeclareMathOperator|, we fix them to match positions in our fonts.
+%
+%    \begin{macrocode}
+\@ifpackageloaded{amsopn}{
+    \begingroup \catcode`\"=12
+    \gdef\newmcodes@{%
+      \mathcode`\'="007F\relax%
+      \mathcode`\*="003C\relax%
+      \mathcode`\.="613A\relax%
+      \ifnum\mathcode`\-="002A \else
+        \mathchardef\std@minus\mathcode`\-\relax
+      \fi
+      \mathcode`\-="002A\relax%
+      \mathcode`\/="005F\relax%
+      \mathcode`\:="603A\relax%
+    }
+    \endgroup
+}{}
+%    \end{macrocode}
+%
+% For compatibility with \pkg{babel-spanish} that defines |\dotlessi| in a way
+% that breaks when |\i| is not defined for the encoding of the operators font
+% (|LS1| in our case), we define |\i| for |LS1|, and while at it we define |\j|
+% just in case\footnote{\url{http://sourceforge.net/p/stixfonts/tracking/41/}}.
+%
+%    \begin{macrocode}
+\DeclareTextSymbol{\i}{LS1}{123}
+\DeclareTextSymbol{\j}{LS1}{124}
+%    \end{macrocode}
+% \subsection{Precomposed negations}
+%
+% Here we define |\not| as a macros that looks ahead and if there is a
+% precomposed negation of its argument, it will be used.
+%
+%    \begin{macrocode}
+\@namedef{not=}{\ne}
+\@namedef{not>}{\ngtr}
+\@namedef{not<}{\nless}
+\let\ngets\nleftarrow
+\let\nsimeq\nsime
+\let\nforksnot\forks
+\let\nle\nleq
+\let\nge\ngeq
+\DeclareRobustCommand*{\not}[1]{%
+    \begingroup \escapechar\m@ne\xdef\@gtempa{not\string#1}\endgroup
+    \@ifundefined{\@gtempa}%
+        {\not@n@{#1}}%
+        {\@nameuse{\@gtempa}}}
+\def\not@n@#1{%
+    \begingroup \escapechar\m@ne\xdef\@gtempa{n\string#1}\endgroup
+    \@ifundefined{\@gtempa}%
+        {\notchar #1}%
+        {\@nameuse{\@gtempa}}}
+%    \end{macrocode}
+%
+% \subsection{Compatibility with Babel}
+%
+% Spanish babel defines a versions of |\dotlessi| that works for fonts other
+% than math italic, but this breaks when the \pkg{stix} package is loaded. Our |\imath|
+% does this already, so we just use it.
+%
+%    \begin{macrocode}
+\def\stix@dotlessi{\ifmmode\imath\else\i\fi}
+\@ifundefined{es@dotlessi}{}{\let\es@dotlessi\stix@dotlessi}
+
+\fi
+\endinput
+%    \end{macrocode}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.fdd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.fdd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.fdd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,239 @@
+% \iffalse
+%<*driver>
+\begingroup
+\input docstrip
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+Copyright (c) 2001-2013 by the STI Pub Companies, consisting of the
+American Chemical Society, the American Institute of Physics, the American
+Mathematical Society, the American Physical Society, Elsevier, Inc., and
+The Institute of Electrical and Electronic Engineers, Inc. Portions
+copyright (c) 1998-2003 by MicroPress, Inc. Portions copyright (c) 1990 by
+Elsevier, Inc. All rights reserved.
+
+This work may be distributed and/or modified under the conditions of the LaTeX
+Project Public License, either version 1.3 of this license or (at your option)
+any later version.  The latest version of this license is in
+  http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX version
+2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is the STI Pub Companies.
+
+This work consists of the files stix.fdd and and the derived files ls1stix.fd,
+ls1stixbb.fd, ls1stixfrak.fd, ls1stixscr.fd, ls1stixsf.fd, ls2stixcal.fd,
+ls2stixex.fd, ls2stix.fd, ls2stixtt.fd, ot1stix.fd, ot2stix.fd, t1stix.fd,
+ts1stix.fd.
+
+\endpreamble
+
+\generate{\file{ls1stix.fd}{\from{stix.fdd}{ls1stix}}}
+\generate{\file{ls1stixbb.fd}{\from{stix.fdd}{ls1stixbb}}}
+\generate{\file{ls1stixfrak.fd}{\from{stix.fdd}{ls1stixfrak}}}
+\generate{\file{ls1stixscr.fd}{\from{stix.fdd}{ls1stixscr}}}
+\generate{\file{ls1stixsf.fd}{\from{stix.fdd}{ls1stixsf}}}
+\generate{\file{ls2stixcal.fd}{\from{stix.fdd}{ls2stixcal}}}
+\generate{\file{ls2stixex.fd}{\from{stix.fdd}{ls2stixex}}}
+\generate{\file{ls2stix.fd}{\from{stix.fdd}{ls2stix}}}
+\generate{\file{ls2stixtt.fd}{\from{stix.fdd}{ls2stixtt}}}
+\generate{\file{ot1stix.fd}{\from{stix.fdd}{ot1stix}}}
+\generate{\file{ot2stix.fd}{\from{stix.fdd}{ot2stix}}}
+\generate{\file{t1stix.fd}{\from{stix.fdd}{t1stix}}}
+\generate{\file{ts1stix.fd}{\from{stix.fdd}{ts1stix}}}
+
+\endgroup
+\end
+%</driver>
+%\fi
+%<ls1stix>\ProvidesFile{ls1stix.fd}
+%<ls1stixbb>\ProvidesFile{ls1stixbb.fd}
+%<ls1stixfrak>\ProvidesFile{ls1stixfrak.fd}
+%<ls1stixscr>\ProvidesFile{ls1stixscr.fd}
+%<ls1stixsf>\ProvidesFile{ls1stixsf.fd}
+%<ls2stixcal>\ProvidesFile{ls2stixcal.fd}
+%<ls2stixex>\ProvidesFile{ls2stixex.fd}
+%<ls2stix>\ProvidesFile{ls2stix.fd}
+%<ls2stixtt>\ProvidesFile{ls2stixtt.fd}
+%<ot1stix>\ProvidesFile{ot1stix.fd}
+%<ot2stix>\ProvidesFile{ot2stix.fd}
+%<t1stix>\ProvidesFile{t1stix.fd}
+%<ts1stix>\ProvidesFile{ts1stix.fd}
+[2015/04/17 v1.1.2-latex STIX %
+%<ls1stix>LS1 %
+%<ls1stixbb>blackboard LS1 %
+%<ls1stixfrak>fraktur LS1 %
+%<ls1stixscr>script LS1 %
+%<ls1stixsf>sans-serif LS1 %
+%<ls2stixcal>calligraphic LS2 %
+%<ls2stixex>extentions LS2 %
+%<ls2stix>LS2 %
+%<ls2stixtt>typewriter LS2 %
+%<ot1stix>OT1 %
+%<ot2stix>OT2 %
+%<t1stix>T1 %
+%<ts1stix>TS1 %
+font definitions]
+%<*ls1stixbb>
+\DeclareFontFamily{LS1}{stixbb}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixbb}{m}{n} {<-> stix-mathbb}{}
+\DeclareFontShape{LS1}{stixbb}{m}{it}{<-> stix-mathbbit}{}
+\DeclareFontShape{LS1}{stixbb}{b}{n} {<-> stix-mathbb-bold}{}
+\DeclareFontShape{LS1}{stixbb}{b}{it}{<-> stix-mathbbit-bold}{}
+%</ls1stixbb>
+%
+%<*ls1stix>
+\DeclareFontFamily{LS1}{stix}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stix}{m}{n} {<-> stix-mathrm}{}
+\DeclareFontShape{LS1}{stix}{m}{it}{<-> stix-mathit}{}
+\DeclareFontShape{LS1}{stix}{b}{n} {<-> stix-mathrm-bold}{}
+\DeclareFontShape{LS1}{stix}{b}{it}{<-> stix-mathit-bold}{}
+
+\DeclareFontShape{LS1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</ls1stix>
+%
+%<*ls1stixfrak>
+\DeclareFontFamily{LS1}{stixfrak}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixfrak}{m}{n} {<-> stix-mathfrak}{}
+\DeclareFontShape{LS1}{stixfrak}{b}{n} {<-> stix-mathfrak-bold}{}
+%</ls1stixfrak>
+%
+%<*ls1stixscr>
+\DeclareFontFamily{LS1}{stixscr}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixscr}{m}{n} {<-> stix-mathscr}{}
+\DeclareFontShape{LS1}{stixscr}{b}{n} {<-> stix-mathscr-bold}{}
+\DeclareFontShape{LS1}{stixscr}{bx}{n} {<->ssub * stixscr/b/n}{}
+%</ls1stixscr>
+%
+%<*ls1stixsf>
+\DeclareFontFamily{LS1}{stixsf}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixsf}{m}{n} {<-> stix-mathsf}{}
+\DeclareFontShape{LS1}{stixsf}{m}{it}{<-> stix-mathsfit}{}
+\DeclareFontShape{LS1}{stixsf}{b}{n} {<-> stix-mathsf-bold}{}
+\DeclareFontShape{LS1}{stixsf}{b}{it}{<-> stix-mathsfit-bold}{}
+
+\DeclareFontShape{LS1}{stixsf}{bx}{it}{<->ssub * stixsf/b/it}{}
+%</ls1stixsf>
+%
+%<*ls2stixcal>
+\DeclareFontFamily{LS2}{stixcal}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stixcal}{m}{n} {<-> stix-mathcal}{}
+\DeclareFontShape{LS2}{stixcal}{b}{n} {<-> stix-mathcal-bold}{}
+%</ls2stixcal>
+%
+%<*ls2stixex>
+\DeclareFontFamily{LS2}{stixex}{}
+
+\DeclareFontShape{LS2}{stixex}{m}{n} {<-> stix-mathex}{}
+\DeclareFontShape{LS2}{stixex}{b}{n} {<-> stix-mathex-bold}{}
+%</ls2stixex>
+%
+%<*ls2stix>
+\DeclareFontFamily{LS2}{stix}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stix}{m}{n} {<-> stix-mathrm}{}
+\DeclareFontShape{LS2}{stix}{m}{it}{<-> stix-mathit}{}
+\DeclareFontShape{LS2}{stix}{b}{n} {<-> stix-mathrm-bold}{}
+\DeclareFontShape{LS2}{stix}{b}{it}{<-> stix-mathit-bold}{}
+
+\DeclareFontShape{LS2}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</ls2stix>
+%
+%<*ls2stixtt>
+\DeclareFontFamily{LS2}{stixtt}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stixtt}{m}{n} {<-> stix-mathtt}{}
+\DeclareFontShape{LS2}{stixtt}{b}{n} {<-> stix-mathtt-bold}{}
+%</ls2stixtt>
+%
+%<*ot1stix>
+\DeclareFontFamily{OT1}{stix}{}
+
+\DeclareFontShape{OT1}{stix}{m}{n} {<-> ot1-stixgeneral}{}
+\DeclareFontShape{OT1}{stix}{b}{n} {<-> ot1-stixgeneral-bold}{}
+\DeclareFontShape{OT1}{stix}{m}{it}{<-> ot1-stixgeneral-italic}{}
+\DeclareFontShape{OT1}{stix}{b}{it}{<-> ot1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{OT1}{stix}{m}{sc}{<-> ot1-stixgeneralsc}{}
+\DeclareFontShape{OT1}{stix}{b}{sc}{<-> ot1-stixgeneralsc-bold}{}
+
+\DeclareFontShape{OT1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{OT1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{OT1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{OT1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{OT1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{OT1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</ot1stix>
+%
+%<*ot2stix>
+\DeclareFontFamily{OT2}{stix}{}
+
+\DeclareFontShape{OT2}{stix}{m}{n} {<-> ot2-stixgeneral}{}
+\DeclareFontShape{OT2}{stix}{b}{n} {<-> ot2-stixgeneral-bold}{}
+\DeclareFontShape{OT2}{stix}{m}{it}{<-> ot2-stixgeneral-italic}{}
+\DeclareFontShape{OT2}{stix}{b}{it}{<-> ot2-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{OT2}{stix}{m}{sc}{<-> ot2-stixgeneralsc}{}
+\DeclareFontShape{OT2}{stix}{b}{sc}{<-> ot2-stixgeneralsc-bold}{}
+
+\DeclareFontShape{OT2}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{OT2}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{OT2}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{OT2}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{OT2}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{OT2}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</ot2stix>
+%
+%<*t1stix>
+\DeclareFontFamily{T1}{stix}{}
+
+\DeclareFontShape{T1}{stix}{m}{n} {<-> t1-stixgeneral}{}
+\DeclareFontShape{T1}{stix}{b}{n} {<-> t1-stixgeneral-bold}{}
+\DeclareFontShape{T1}{stix}{m}{it}{<-> t1-stixgeneral-italic}{}
+\DeclareFontShape{T1}{stix}{b}{it}{<-> t1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{T1}{stix}{m}{sc}{<-> t1-stixgeneralsc}{}
+\DeclareFontShape{T1}{stix}{b}{sc}{<-> t1-stixgeneralsc-bold}{}
+
+\DeclareFontShape{T1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{T1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{T1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{T1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{T1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{T1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</t1stix>
+%
+%<*ts1stix>
+\DeclareFontFamily{TS1}{stix}{}
+
+\DeclareFontShape{TS1}{stix}{m}{n} {<-> ts1-stixgeneral}{}
+\DeclareFontShape{TS1}{stix}{b}{n} {<-> ts1-stixgeneral-bold}{}
+\DeclareFontShape{TS1}{stix}{m}{it}{<-> ts1-stixgeneral-italic}{}
+\DeclareFontShape{TS1}{stix}{b}{it}{<-> ts1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{TS1}{stix}{m}{sc}{<->ssub * stix/m/n}{}
+\DeclareFontShape{TS1}{stix}{b}{sc}{<->ssub * stix/b/n}{}
+
+\DeclareFontShape{TS1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{TS1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{TS1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{TS1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{TS1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{TS1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</ts1stix>
+%
+% \Finale
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.map
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.map	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.map	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,61 @@
+t1-stixgeneral             STIXGeneral-Regular    "stixt1  ReEncodeFont" <stix-t1.enc  <STIXGeneral-Regular.pfb
+t1-stixgeneral-bold        STIXGeneral-Bold       "stixt1  ReEncodeFont" <stix-t1.enc  <STIXGeneral-Bold.pfb
+t1-stixgeneral-italic      STIXGeneral-Italic     "stixt1  ReEncodeFont" <stix-t1.enc  <STIXGeneral-Italic.pfb
+t1-stixgeneral-bolditalic  STIXGeneral-BoldItalic "stixt1  ReEncodeFont" <stix-t1.enc  <STIXGeneral-BoldItalic.pfb
+
+ts1-stixgeneral            STIXGeneral-Regular    "stixts1 ReEncodeFont" <stix-ts1.enc <STIXGeneral-Regular.pfb
+ts1-stixgeneral-bold       STIXGeneral-Bold       "stixts1 ReEncodeFont" <stix-ts1.enc <STIXGeneral-Bold.pfb
+ts1-stixgeneral-italic     STIXGeneral-Italic     "stixts1 ReEncodeFont" <stix-ts1.enc <STIXGeneral-Italic.pfb
+ts1-stixgeneral-bolditalic STIXGeneral-BoldItalic "stixts1 ReEncodeFont" <stix-ts1.enc <STIXGeneral-BoldItalic.pfb
+
+ot1-stixgeneral            STIXGeneral-Regular    "stixot1 ReEncodeFont" <stix-ot1.enc <STIXGeneral-Regular.pfb
+ot1-stixgeneral-bold       STIXGeneral-Bold       "stixot1 ReEncodeFont" <stix-ot1.enc <STIXGeneral-Bold.pfb
+ot1-stixgeneral-italic     STIXGeneral-Italic     "stixot1 ReEncodeFont" <stix-ot1.enc <STIXGeneral-Italic.pfb
+ot1-stixgeneral-bolditalic STIXGeneral-BoldItalic "stixot1 ReEncodeFont" <stix-ot1.enc <STIXGeneral-BoldItalic.pfb
+
+ot2-stixgeneral            STIXGeneral-Regular    "stixot2 ReEncodeFont" <stix-ot2.enc <STIXGeneral-Regular.pfb
+ot2-stixgeneral-bold       STIXGeneral-Bold       "stixot2 ReEncodeFont" <stix-ot2.enc <STIXGeneral-Bold.pfb
+ot2-stixgeneral-italic     STIXGeneral-Italic     "stixot2 ReEncodeFont" <stix-ot2.enc <STIXGeneral-Italic.pfb
+ot2-stixgeneral-bolditalic STIXGeneral-BoldItalic "stixot2 ReEncodeFont" <stix-ot2.enc <STIXGeneral-BoldItalic.pfb
+
+stix-mathrm        STIXMath-Regular              <stix-mathrm.pfb
+stix-mathrm-bold   STIXMath-Bold                 <stix-mathrm-bold.pfb
+stix-mathit        STIXMath-Italic               <stix-mathit.pfb
+stix-mathit-bold   STIXMath-BoldItalic           <stix-mathit-bold.pfb
+
+stix-mathsf        STIXMathSans-Regular          <stix-mathsf.pfb
+stix-mathsfit      STIXMathSans-Italic           <stix-mathsfit.pfb
+stix-mathsf-bold   STIXMathSans-Bold             <stix-mathsf-bold.pfb
+stix-mathsfit-bold STIXMathSans-BoldItalic       <stix-mathsfit-bold.pfb
+
+stix-mathtt        STIXMathTyperwriter-Regular   <stix-mathtt.pfb
+stix-mathtt-bold   STIXMathTyperwriter-Bold      <stix-mathtt-bold.pfb
+
+stix-mathbb        STIXMathBlackboard-Regular    <stix-mathbb.pfb
+stix-mathbbit      STIXMathBlackboard-Italic     <stix-mathbbit.pfb
+stix-mathbb-bold   STIXMathBlackboard-Bold       <stix-mathbb-bold.pfb
+stix-mathbbit-bold STIXMathBlackboard-BoldItalic <stix-mathbbit-bold.pfb
+
+stix-mathscr       STIXMathScript-Regular        <stix-mathscr.pfb
+stix-mathscr-bold  STIXMathScript-Bold           <stix-mathscr-bold.pfb
+
+stix-mathcal       STIXMathCalligraphy-Regular   <stix-mathcal.pfb
+stix-mathcal-bold  STIXMathCalligraphy-Bold      <stix-mathcal-bold.pfb
+
+stix-mathfrak      STIXMathFraktur-Regular       <stix-mathfrak.pfb
+stix-mathfrak-bold STIXMathFraktur-Bold          <stix-mathfrak-bold.pfb
+
+stix-mathex        STIXMathExtensions-Regular    <stix-mathex.pfb
+stix-mathex-bold   STIXMathExtensions-Bold       <stix-mathex-bold.pfb
+
+stix-extra1      STIXGeneral-Regular "stixextra  ReEncodeFont" <stix-extra1.enc <STIXGeneral-Regular.pfb
+stix-extra2      STIXGeneral-Regular "stixextra2 ReEncodeFont" <stix-extra2.enc <STIXGeneral-Regular.pfb
+stix-extra3      STIXGeneral-Regular "stixextra3 ReEncodeFont" <stix-extra3.enc <STIXGeneral-Regular.pfb
+stix-extra1-bold STIXGeneral-Bold    "stixextra  ReEncodeFont" <stix-extra1.enc <STIXGeneral-Bold.pfb
+stix-extra2-bold STIXGeneral-Bold    "stixextra2 ReEncodeFont" <stix-extra2.enc <STIXGeneral-Bold.pfb
+stix-extra3-bold STIXGeneral-Bold    "stixextra3 ReEncodeFont" <stix-extra3.enc <STIXGeneral-Bold.pfb
+
+StixBd STIX-Bold "AutoEnc_axxd65ow2itmagzxgdtfjmwsmc ReEncodeFont" <[a_axxd65.enc <<STIX-Bold.pfb
+StixBdIt STIX-BoldItalic "AutoEnc_axxd65ow2itmagzxgdtfjmwsmc ReEncodeFont" <[a_axxd65.enc <<STIX-BoldItalic.pfb
+StixIt STIX-Italic "AutoEnc_axxd65ow2itmagzxgdtfjmwsmc ReEncodeFont" <[a_axxd65.enc <<STIX-Italic.pfb
+StixReg STIX-Regular "AutoEnc_axxd65ow2itmagzxgdtfjmwsmc ReEncodeFont" <[a_axxd65.enc <<STIX-Regular.pfb
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.sty
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.sty	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/stix.sty	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,2160 @@
+%%
+%% This is file `stix.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% stix.dtx  (with options: `package')
+%% 
+%% Copyright (c) 2001-2013 by the STI Pub Companies, consisting of the
+%% American Chemical Society, the American Institute of Physics, the American
+%% Mathematical Society, the American Physical Society, Elsevier, Inc., and
+%% The Institute of Electrical and Electronic Engineers, Inc. Portions
+%% copyright (c) 1998-2003 by MicroPress, Inc. Portions copyright (c) 1990 by
+%% Elsevier, Inc. All rights reserved.
+%% 
+%% This work may be distributed and/or modified under the conditions of the LaTeX
+%% Project Public License, either version 1.3 of this license or (at your option)
+%% any later version.  The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status `maintained'.
+%% 
+%% The Current Maintainer of this work is the STI Pub Companies.
+%% 
+%% This work consists of the files stix.dtx and and the derived file stix.sty.
+%% 
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{stix}
+    [2015/04/17 v1.1.2-latex STIX fonts support package]
+\newif\ifstix@text  \stix@texttrue
+\newif\ifstix@math  \stix@mathtrue
+\newif\ifstix@tenc  \stix@tenctrue
+\newif\ifstix@senc  \stix@senctrue
+\newif\ifstix@upint \stix@upintfalse
+\let\stix@lcgc\mathord
+\DeclareOption{notext}      {\stix@textfalse}
+\DeclareOption{nomath}      {\stix@mathfalse}
+\DeclareOption{not1}        {\stix@tencfalse}
+\DeclareOption{notextcomp}  {\stix@sencfalse}
+\DeclareOption{lcgreekalpha}{\let\stix@lcgc\mathalpha}
+\DeclareOption{upint}       {\stix@upinttrue}
+\ProcessOptions\relax
+\ifstix@text
+    \ifstix@tenc
+        \def\encodingdefault{T1}
+    \fi
+    \ifstix@senc
+        \RequirePackage[full]{textcomp}
+        \UndeclareTextCommand{\textpertenthousand}{T1}
+        \DeclareTextSymbolDefault{\textpertenthousand}{TS1}
+    \fi
+
+    \renewcommand{\rmdefault}{stix}
+\fi
+\ifstix@math
+\def\stix@undefine#1{%
+    \if\relax\noexpand#1\let#1=\@undefined\fi}
+\def\stix@MathSymbol#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathSymbol{#1}{#2}{#3}{#4}}
+\def\stix@MathDelimiter#1#2#3#4#5#6{%
+    \stix@undefine#1%
+    \DeclareMathDelimiter{#1}{#2}{#3}{#4}{#5}{#6}}
+\def\stix@MathAccent#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathAccent{#1}{#2}{#3}{#4}}
+\def\stix@MathRadical#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathRadical{#1}{#2}{#3}{#4}}
+\DeclareFontEncoding{LS1}{}{}
+\DeclareFontEncoding{LS2}{}{\noaccents@}
+\DeclareFontSubstitution{LS1}{stix}{m}{n}
+\DeclareFontSubstitution{LS2}{stix}{m}{n}
+\DeclareSymbolFont{letters}       {LS1}{stix}     {m}{it}
+\DeclareSymbolFont{operators}     {LS1}{stix}     {m} {n}
+\DeclareSymbolFont{bold-operators}{LS1}{stix}     {b} {n}
+\DeclareSymbolFont{symbols}       {LS1}{stixscr}  {m} {n}
+\DeclareSymbolFont{symbols2}      {LS1}{stixfrak} {m} {n}
+\DeclareSymbolFont{symbols3}      {LS1}{stixbb}   {m} {n}
+\DeclareSymbolFont{symbols4}      {LS1}{stixbb}   {m}{it}
+\DeclareSymbolFont{integrals}     {LS2}{stixcal}  {m} {n}
+\DeclareSymbolFont{largesymbols}  {LS2}{stixex}   {m} {n}
+\DeclareSymbolFont{arrows1}       {LS1}{stixsf}   {m} {n}
+\DeclareSymbolFont{arrows2}       {LS1}{stixsf}   {m}{it}
+\DeclareSymbolFont{arrows3}       {LS2}{stixtt}   {m} {n}
+\SetSymbolFont{letters}     {bold}{LS1}{stix}     {b}{it}
+\SetSymbolFont{operators}   {bold}{LS1}{stix}     {b} {n}
+\SetSymbolFont{symbols}     {bold}{LS1}{stixscr}  {b} {n}
+\SetSymbolFont{symbols2}    {bold}{LS1}{stixfrak} {b}{n}
+\SetSymbolFont{symbols3}    {bold}{LS1}{stixbb}   {b} {n}
+\SetSymbolFont{symbols4}    {bold}{LS1}{stixbb}   {b}{it}
+\SetSymbolFont{integrals}   {bold}{LS2}{stixcal}  {b} {n}
+\SetSymbolFont{largesymbols}{bold}{LS2}{stixex}   {b} {n}
+\SetSymbolFont{arrows1}     {bold}{LS1}{stixsf}   {b} {n}
+\SetSymbolFont{arrows2}     {bold}{LS1}{stixsf}   {b}{it}
+\SetSymbolFont{arrows3}     {bold}{LS2}{stixtt}   {b} {n}
+\DeclareSymbolFontAlphabet{\mathit}  {letters}
+\DeclareSymbolFontAlphabet{\mathrm}  {operators}
+\DeclareSymbolFontAlphabet{\mathscr} {symbols}
+\DeclareSymbolFontAlphabet{\mathfrak}{symbols2}
+\DeclareSymbolFontAlphabet{\mathbb}  {symbols3}
+\DeclareSymbolFontAlphabet{\mathbbit}{symbols4}
+\DeclareSymbolFontAlphabet{\mathcal} {integrals}
+\DeclareSymbolFontAlphabet{\mathsf}  {arrows1}
+\DeclareSymbolFontAlphabet{\mathsfit}{arrows2}
+\DeclareSymbolFontAlphabet{\mathtt}  {arrows3}
+\DeclareSymbolFontAlphabet{\mathbf}  {bold-operators}
+\DeclareMathAlphabet{\mathbfit}   {LS1}{stix}     {b}{it}
+\DeclareMathAlphabet{\mathbfsf}   {LS1}{stixsf}   {b} {n}
+\DeclareMathAlphabet{\mathbfsfit} {LS1}{stixsf}   {b}{it}
+\DeclareMathAlphabet{\mathbfbb}   {LS1}{stixbb}   {b} {n}
+\DeclareMathAlphabet{\mathbfbbit} {LS1}{stixbb}   {b}{it}
+\DeclareMathAlphabet{\mathbfscr}  {LS1}{stixscr}  {b} {n}
+\DeclareMathAlphabet{\mathbffrak} {LS1}{stixfrak} {b} {n}
+\stix@MathSymbol{\Gamma}      {\mathalpha}{operators}{"00}
+\stix@MathSymbol{\Delta}      {\mathalpha}{operators}{"01}
+\stix@MathSymbol{\Theta}      {\mathalpha}{operators}{"02}
+\stix@MathSymbol{\Lambda}     {\mathalpha}{operators}{"03}
+\stix@MathSymbol{\Xi}         {\mathalpha}{operators}{"04}
+\stix@MathSymbol{\Pi}         {\mathalpha}{operators}{"05}
+\stix@MathSymbol{\Sigma}      {\mathalpha}{operators}{"06}
+\stix@MathSymbol{\Upsilon}    {\mathalpha}{operators}{"07}
+\stix@MathSymbol{\Phi}        {\mathalpha}{operators}{"08}
+\stix@MathSymbol{\Psi}        {\mathalpha}{operators}{"09}
+\stix@MathSymbol{\Omega}      {\mathalpha}{operators}{"0A}
+\stix@MathSymbol{\alpha}     {\stix@lcgc}{letters}{"0B}
+\stix@MathSymbol{\beta}      {\stix@lcgc}{letters}{"0C}
+\stix@MathSymbol{\gamma}     {\stix@lcgc}{letters}{"0D}
+\stix@MathSymbol{\delta}     {\stix@lcgc}{letters}{"0E}
+\stix@MathSymbol{\epsilon}   {\stix@lcgc}{letters}{"0F}
+\stix@MathSymbol{\zeta}      {\stix@lcgc}{letters}{"10}
+\stix@MathSymbol{\eta}       {\stix@lcgc}{letters}{"11}
+\stix@MathSymbol{\theta}     {\stix@lcgc}{letters}{"12}
+\stix@MathSymbol{\iota}      {\stix@lcgc}{letters}{"13}
+\stix@MathSymbol{\kappa}     {\stix@lcgc}{letters}{"14}
+\stix@MathSymbol{\lambda}    {\stix@lcgc}{letters}{"15}
+\stix@MathSymbol{\mu}        {\stix@lcgc}{letters}{"16}
+\stix@MathSymbol{\nu}        {\stix@lcgc}{letters}{"17}
+\stix@MathSymbol{\xi}        {\stix@lcgc}{letters}{"18}
+\stix@MathSymbol{\pi}        {\stix@lcgc}{letters}{"19}
+\stix@MathSymbol{\rho}       {\stix@lcgc}{letters}{"1A}
+\stix@MathSymbol{\sigma}     {\stix@lcgc}{letters}{"1B}
+\stix@MathSymbol{\tau}       {\stix@lcgc}{letters}{"1C}
+\stix@MathSymbol{\upsilon}   {\stix@lcgc}{letters}{"1D}
+\stix@MathSymbol{\phi}       {\stix@lcgc}{letters}{"1E}
+\stix@MathSymbol{\chi}       {\stix@lcgc}{letters}{"1F}
+\stix@MathSymbol{\psi}       {\stix@lcgc}{letters}{"20}
+\stix@MathSymbol{\omega}     {\stix@lcgc}{letters}{"21}
+\stix@MathSymbol{\varepsilon}{\stix@lcgc}{letters}{"22}
+\stix@MathSymbol{\vartheta}  {\stix@lcgc}{letters}{"23}
+\stix@MathSymbol{\varpi}     {\stix@lcgc}{letters}{"24}
+\stix@MathSymbol{\varrho}    {\stix@lcgc}{letters}{"25}
+\stix@MathSymbol{\varsigma}  {\stix@lcgc}{letters}{"26}
+\stix@MathSymbol{\varphi}    {\stix@lcgc}{letters}{"27}
+\stix@MathSymbol{\nabla}     {\stix@lcgc}{operators}{"28}
+\stix@MathSymbol{\partial}   {\stix@lcgc}{letters}{"29}
+\stix@MathSymbol{0}     {\mathalpha}{operators}{`0}
+\stix@MathSymbol{1}     {\mathalpha}{operators}{`1}
+\stix@MathSymbol{2}     {\mathalpha}{operators}{`2}
+\stix@MathSymbol{3}     {\mathalpha}{operators}{`3}
+\stix@MathSymbol{4}     {\mathalpha}{operators}{`4}
+\stix@MathSymbol{5}     {\mathalpha}{operators}{`5}
+\stix@MathSymbol{6}     {\mathalpha}{operators}{`6}
+\stix@MathSymbol{7}     {\mathalpha}{operators}{`7}
+\stix@MathSymbol{8}     {\mathalpha}{operators}{`8}
+\stix@MathSymbol{9}     {\mathalpha}{operators}{`9}
+\stix@MathSymbol{A}     {\mathalpha}{letters}  {`A}
+\stix@MathSymbol{B}     {\mathalpha}{letters}  {`B}
+\stix@MathSymbol{C}     {\mathalpha}{letters}  {`C}
+\stix@MathSymbol{D}     {\mathalpha}{letters}  {`D}
+\stix@MathSymbol{E}     {\mathalpha}{letters}  {`E}
+\stix@MathSymbol{F}     {\mathalpha}{letters}  {`F}
+\stix@MathSymbol{G}     {\mathalpha}{letters}  {`G}
+\stix@MathSymbol{H}     {\mathalpha}{letters}  {`H}
+\stix@MathSymbol{I}     {\mathalpha}{letters}  {`I}
+\stix@MathSymbol{J}     {\mathalpha}{letters}  {`J}
+\stix@MathSymbol{K}     {\mathalpha}{letters}  {`K}
+\stix@MathSymbol{L}     {\mathalpha}{letters}  {`L}
+\stix@MathSymbol{M}     {\mathalpha}{letters}  {`M}
+\stix@MathSymbol{N}     {\mathalpha}{letters}  {`N}
+\stix@MathSymbol{O}     {\mathalpha}{letters}  {`O}
+\stix@MathSymbol{P}     {\mathalpha}{letters}  {`P}
+\stix@MathSymbol{Q}     {\mathalpha}{letters}  {`Q}
+\stix@MathSymbol{R}     {\mathalpha}{letters}  {`R}
+\stix@MathSymbol{S}     {\mathalpha}{letters}  {`S}
+\stix@MathSymbol{T}     {\mathalpha}{letters}  {`T}
+\stix@MathSymbol{U}     {\mathalpha}{letters}  {`U}
+\stix@MathSymbol{V}     {\mathalpha}{letters}  {`V}
+\stix@MathSymbol{W}     {\mathalpha}{letters}  {`W}
+\stix@MathSymbol{X}     {\mathalpha}{letters}  {`X}
+\stix@MathSymbol{Y}     {\mathalpha}{letters}  {`Y}
+\stix@MathSymbol{Z}     {\mathalpha}{letters}  {`Z}
+\stix@MathSymbol{a}     {\mathalpha}{letters}  {`a}
+\stix@MathSymbol{b}     {\mathalpha}{letters}  {`b}
+\stix@MathSymbol{c}     {\mathalpha}{letters}  {`c}
+\stix@MathSymbol{d}     {\mathalpha}{letters}  {`d}
+\stix@MathSymbol{e}     {\mathalpha}{letters}  {`e}
+\stix@MathSymbol{f}     {\mathalpha}{letters}  {`f}
+\stix@MathSymbol{g}     {\mathalpha}{letters}  {`g}
+\stix@MathSymbol{h}     {\mathalpha}{letters}  {`h}
+\stix@MathSymbol{i}     {\mathalpha}{letters}  {`i}
+\stix@MathSymbol{j}     {\mathalpha}{letters}  {`j}
+\stix@MathSymbol{k}     {\mathalpha}{letters}  {`k}
+\stix@MathSymbol{l}     {\mathalpha}{letters}  {`l}
+\stix@MathSymbol{m}     {\mathalpha}{letters}  {`m}
+\stix@MathSymbol{n}     {\mathalpha}{letters}  {`n}
+\stix@MathSymbol{o}     {\mathalpha}{letters}  {`o}
+\stix@MathSymbol{p}     {\mathalpha}{letters}  {`p}
+\stix@MathSymbol{q}     {\mathalpha}{letters}  {`q}
+\stix@MathSymbol{r}     {\mathalpha}{letters}  {`r}
+\stix@MathSymbol{s}     {\mathalpha}{letters}  {`s}
+\stix@MathSymbol{t}     {\mathalpha}{letters}  {`t}
+\stix@MathSymbol{u}     {\mathalpha}{letters}  {`u}
+\stix@MathSymbol{v}     {\mathalpha}{letters}  {`v}
+\stix@MathSymbol{w}     {\mathalpha}{letters}  {`w}
+\stix@MathSymbol{x}     {\mathalpha}{letters}  {`x}
+\stix@MathSymbol{y}     {\mathalpha}{letters}  {`y}
+\stix@MathSymbol{z}     {\mathalpha}{letters}  {`z}
+\stix@MathSymbol{\imath}{\mathalpha}{letters}  {"7B}
+\stix@MathSymbol{\jmath}{\mathalpha}{letters}  {"7C}
+\stix@MathSymbol{\aleph} {\mathord}{letters}{"2A}
+\stix@MathSymbol{\beth}  {\mathord}{letters}{"2B}
+\stix@MathSymbol{\gimel} {\mathord}{letters}{"2C}
+\stix@MathSymbol{\daleth}{\mathord}{letters}{"2D}
+\stix@MathSymbol{\hbar}  {\mathord}{letters}{"60}
+\stix@MathSymbol{\hslash}{\mathord}{letters}{"3D}
+\stix@MathSymbol{\ell}       {\mathord}  {symbols}{`l}
+\stix@MathSymbol{\wp}        {\mathord}  {symbols}{"7D}
+\stix@MathSymbol{\Re}        {\mathord}  {symbols2}{`R}
+\stix@MathSymbol{\Im}        {\mathord}  {symbols2}{`I}
+\stix@MathSymbol{-}          {\mathbin}  {operators}{"2A}
+\stix@MathSymbol{+}          {\mathbin}  {operators}{`+}
+\stix@MathSymbol{\pm}        {\mathbin}  {operators}{"2C}
+\stix@MathSymbol{\mp}        {\mathbin}  {operators}{"2D}
+\stix@MathSymbol{:}          {\mathrel}  {operators}{`:}
+\stix@MathSymbol{;}          {\mathpunct}{operators}{`;}
+\stix@MathSymbol{*}          {\mathrel}  {operators}{"3C}
+\stix@MathSymbol{\ast}       {\mathrel}  {operators}{"3C}
+\stix@MathSymbol{=}          {\mathrel}  {operators}{`=}
+\stix@MathSymbol{\mathdollar}{\mathord}  {operators}{"3E}
+\stix@MathSymbol{?}          {\mathclose}{operators}{`?}
+\stix@MathSymbol{!}          {\mathclose}{operators}{"40}
+\stix@MathSymbol{#}          {\mathord}  {operators}{"7D}
+\mathcode`\%="007E % can't use \stix@MathSymbol
+\stix@MathSymbol{&}          {\mathord}  {operators}{"99}
+\stix@MathSymbol{@}          {\mathord}  {operators}{"9A}
+\stix@MathSymbol{.}          {\mathord}  {letters}  {"3A}
+\stix@MathSymbol{\ldotp}     {\mathpunct}{letters}  {"3A}
+\stix@MathSymbol{,}          {\mathpunct}{letters}  {"3B}
+\stix@MathSymbol{\star}      {\mathbin}  {letters}  {"3F}
+\stix@MathSymbol{\flat}      {\mathord}  {letters}  {"5B}
+\stix@MathSymbol{\natural}   {\mathord}  {letters}  {"5C}
+\stix@MathSymbol{\sharp}     {\mathord}  {letters}  {"5D}
+\stix@MathSymbol{\smile}     {\mathrel}  {letters}  {"5E}
+\stix@MathSymbol{\frown}     {\mathrel}  {letters}  {"5F}
+\stix@MathSymbol{\triangleright} {\mathbin}{letters}{"2E}
+\stix@MathSymbol{\triangleleft}  {\mathbin}{letters}{"2F}
+\@ifpackageloaded{amsmath}{}{
+    \stix@MathSymbol{\colon}      {\mathpunct}{operators}{`:}
+}
+\stix@MathDelimiter{(}          {\mathopen} {operators}   {"2E}{largesymbols}{"00}
+\stix@MathDelimiter{)}          {\mathclose}{operators}   {"2F}{largesymbols}{"01}
+\stix@MathDelimiter{\lParen}    {\mathopen} {largesymbols}{"DE}{largesymbols}{"02}
+\stix@MathDelimiter{\rParen}    {\mathclose}{largesymbols}{"DF}{largesymbols}{"03}
+\stix@MathDelimiter{[}          {\mathopen} {operators}   {"5B}{largesymbols}{"04}
+\stix@MathDelimiter{]}          {\mathclose}{operators}   {"5D}{largesymbols}{"05}
+\stix@MathDelimiter{\lBrack}    {\mathopen} {largesymbols}{"E0}{largesymbols}{"06}
+\stix@MathDelimiter{\rBrack}    {\mathclose}{largesymbols}{"E1}{largesymbols}{"07}
+\stix@MathDelimiter{\lfloor}    {\mathopen} {largesymbols}{"E2}{largesymbols}{"08}
+\stix@MathDelimiter{\rfloor}    {\mathclose}{largesymbols}{"E3}{largesymbols}{"09}
+\stix@MathDelimiter{\lceil}     {\mathopen} {largesymbols}{"E4}{largesymbols}{"0A}
+\stix@MathDelimiter{\rceil}     {\mathclose}{largesymbols}{"E5}{largesymbols}{"0B}
+\stix@MathDelimiter{\lmoustache}{\mathopen} {largesymbols}{"E6}{largesymbols}{"EC}
+\stix@MathDelimiter{\rmoustache}{\mathclose}{largesymbols}{"E7}{largesymbols}{"ED}
+\stix@MathDelimiter{\lbrace}    {\mathopen} {operators}   {"5E}{largesymbols}{"0C}
+\stix@MathDelimiter{\rbrace}    {\mathclose}{operators}   {"60}{largesymbols}{"0D}
+\stix@MathDelimiter{\lBrace}    {\mathopen} {largesymbols}{"E8}{largesymbols}{"0E}
+\stix@MathDelimiter{\rBrace}    {\mathclose}{largesymbols}{"E9}{largesymbols}{"0F}
+\stix@MathDelimiter{\langle}    {\mathopen} {largesymbols}{"EA}{largesymbols}{"10}
+\stix@MathDelimiter{\rangle}    {\mathclose}{largesymbols}{"EB}{largesymbols}{"11}
+\stix@MathDelimiter{<}          {\mathopen} {largesymbols}{"EA}{largesymbols}{"10}
+\stix@MathDelimiter{>}          {\mathclose}{largesymbols}{"EB}{largesymbols}{"11}
+\stix@MathSymbol   {<}          {\mathrel}  {letters}{"3C}
+\stix@MathSymbol   {>}          {\mathrel}  {letters}{"3E}
+\stix@MathDelimiter{\lAngle}    {\mathopen} {largesymbols}{"EC}{largesymbols}{"12}
+\stix@MathDelimiter{\rAngle}    {\mathclose}{largesymbols}{"ED}{largesymbols}{"13}
+\stix@MathDelimiter{\lbrbrak}   {\mathopen} {largesymbols}{"EE}{largesymbols}{"14}
+\stix@MathDelimiter{\rbrbrak}   {\mathclose}{largesymbols}{"EF}{largesymbols}{"15}
+\stix@MathDelimiter{/}          {\mathord}  {operators}   {"5F}{largesymbols}{"16}
+\stix@MathDelimiter{\backslash} {\mathord}  {operators}   {"5C}{largesymbols}{"17}
+\expandafter\DeclareMathDelimiter\@backslashchar{\mathord}{operators}{"5C}{largesymbols}{"17}
+\stix@MathDelimiter{\lgroup}    {\mathopen} {largesymbols}{"DC}{largesymbols}{"6A}
+\stix@MathDelimiter{\rgroup}    {\mathclose}{largesymbols}{"DD}{largesymbols}{"6B}
+\stix@MathDelimiter{\bracevert} {\mathord}  {largesymbols}{"6E}{largesymbols}{"6E}
+\stix@MathDelimiter{|}          {\mathord}  {largesymbols}{"F0}{largesymbols}{"F3}
+\stix@MathDelimiter{\vert}      {\mathord}  {largesymbols}{"F0}{largesymbols}{"F3}
+\stix@MathDelimiter{\Vert}      {\mathord}  {largesymbols}{"F1}{largesymbols}{"F4}
+        \let\|=\Vert
+\stix@MathDelimiter{\Vvert}     {\mathord}  {largesymbols}{"F2}{largesymbols}{"F5}
+\@ifpackageloaded{amsmath}{
+    \stix@MathDelimiter{\lvert} {\mathopen}  {largesymbols}{"F0}{largesymbols}{"F3}
+    \stix@MathDelimiter{\rvert} {\mathclose} {largesymbols}{"F0}{largesymbols}{"F3}
+    \stix@MathDelimiter{\lVert} {\mathopen}  {largesymbols}{"F1}{largesymbols}{"F4}
+    \stix@MathDelimiter{\rVert} {\mathclose} {largesymbols}{"F1}{largesymbols}{"F4}
+}{}
+\stix@MathDelimiter{\uparrow}    {\mathrel}{arrows1}{"7E}{arrows1}{"7E}
+\stix@MathDelimiter{\downarrow}  {\mathrel}{arrows1}{"9A}{arrows1}{"9A}
+\stix@MathDelimiter{\updownarrow}{\mathrel}{arrows1}{"9C}{arrows1}{"9C}
+\stix@MathDelimiter{\Uparrow}    {\mathrel}{arrows1}{"D8}{arrows1}{"D8}
+\stix@MathDelimiter{\Downarrow}  {\mathrel}{arrows1}{"DA}{arrows1}{"DA}
+\stix@MathDelimiter{\Updownarrow}{\mathrel}{arrows1}{"DC}{arrows1}{"DC}
+\stix@MathDelimiter{\UUparrow}   {\mathrel}{arrows1}{"FE}{arrows1}{"FE}
+\stix@MathDelimiter{\DDownarrow} {\mathrel}{arrows1}{"FF}{arrows1}{"FF}
+\stix@MathDelimiter{\Uuparrow}   {\mathrel}{arrows1}{"5F}{arrows1}{"5F}
+\stix@MathDelimiter{\Ddownarrow} {\mathrel}{arrows1}{"60}{arrows1}{"60}
+\stix@MathDelimiter{\arrowvert}  {\mathrel}{arrows1}{"3C}{arrows1}{"3C}
+\stix@MathDelimiter{\Arrowvert}  {\mathrel}{arrows1}{"3D}{arrows1}{"3D}
+\stix@MathRadical{\sqrtsign}    {largesymbols}{"F9}{largesymbols}{"74}
+\stix@MathRadical{\longdivision}{largesymbols}{"FA}{largesymbols}{"FA}
+\def\surd{{\mathchar"13F9}}
+\stix@MathSymbol{\smallintsl}             {\mathop}{integrals}{"00}
+\stix@MathSymbol{\smalliintsl}            {\mathop}{integrals}{"01}
+\stix@MathSymbol{\smalliiintsl}           {\mathop}{integrals}{"02}
+\stix@MathSymbol{\smallointsl}            {\mathop}{integrals}{"03}
+\stix@MathSymbol{\smalloiintsl}           {\mathop}{integrals}{"04}
+\stix@MathSymbol{\smalloiiintsl}          {\mathop}{integrals}{"05}
+\stix@MathSymbol{\smallintclockwisesl}    {\mathop}{integrals}{"06}
+\stix@MathSymbol{\smallvarointclockwisesl}{\mathop}{integrals}{"07}
+\stix@MathSymbol{\smallointctrclockwisesl}{\mathop}{integrals}{"08}
+\stix@MathSymbol{\smallsumintsl}          {\mathop}{integrals}{"09}
+\stix@MathSymbol{\smalliiiintsl}          {\mathop}{integrals}{"0A}
+\stix@MathSymbol{\smallintbarsl}          {\mathop}{integrals}{"0B}
+\stix@MathSymbol{\smallintBarsl}          {\mathop}{integrals}{"0C}
+\stix@MathSymbol{\smallfintsl}            {\mathop}{integrals}{"0D}
+\stix@MathSymbol{\smallcirfnintsl}        {\mathop}{integrals}{"0E}
+\stix@MathSymbol{\smallawintsl}           {\mathop}{integrals}{"0F}
+\stix@MathSymbol{\smallrppolintsl}        {\mathop}{integrals}{"10}
+\stix@MathSymbol{\smallscpolintsl}        {\mathop}{integrals}{"11}
+\stix@MathSymbol{\smallnpolintsl}         {\mathop}{integrals}{"12}
+\stix@MathSymbol{\smallpointintsl}        {\mathop}{integrals}{"13}
+\stix@MathSymbol{\smallsqintsl}           {\mathop}{integrals}{"14}
+\stix@MathSymbol{\smallintlarhksl}        {\mathop}{integrals}{"15}
+\stix@MathSymbol{\smallintxsl}            {\mathop}{integrals}{"16}
+\stix@MathSymbol{\smallintcapsl}          {\mathop}{integrals}{"17}
+\stix@MathSymbol{\smallintcupsl}          {\mathop}{integrals}{"18}
+\stix@MathSymbol{\smallupintsl}           {\mathop}{integrals}{"19}
+\stix@MathSymbol{\smalllowintsl}          {\mathop}{integrals}{"1A}
+\stix@MathSymbol{\smallintup}             {\mathop}{integrals}{"1B}
+\stix@MathSymbol{\smalliintup}            {\mathop}{integrals}{"1C}
+\stix@MathSymbol{\smalliiintup}           {\mathop}{integrals}{"1D}
+\stix@MathSymbol{\smallointup}            {\mathop}{integrals}{"1E}
+\stix@MathSymbol{\smalloiintup}           {\mathop}{integrals}{"1F}
+\stix@MathSymbol{\smalloiiintup}          {\mathop}{integrals}{"20}
+\stix@MathSymbol{\smallintclockwiseup}    {\mathop}{integrals}{"21}
+\stix@MathSymbol{\smallvarointclockwiseup}{\mathop}{integrals}{"22}
+\stix@MathSymbol{\smallointctrclockwiseup}{\mathop}{integrals}{"23}
+\stix@MathSymbol{\smallsumintup}          {\mathop}{integrals}{"24}
+\stix@MathSymbol{\smalliiiintup}          {\mathop}{integrals}{"25}
+\stix@MathSymbol{\smallintbarup}          {\mathop}{integrals}{"26}
+\stix@MathSymbol{\smallintBarup}          {\mathop}{integrals}{"27}
+\stix@MathSymbol{\smallfintup}            {\mathop}{integrals}{"28}
+\stix@MathSymbol{\smallcirfnintup}        {\mathop}{integrals}{"29}
+\stix@MathSymbol{\smallawintup}           {\mathop}{integrals}{"2A}
+\stix@MathSymbol{\smallrppolintup}        {\mathop}{integrals}{"2B}
+\stix@MathSymbol{\smallscpolintup}        {\mathop}{integrals}{"2C}
+\stix@MathSymbol{\smallnpolintup}         {\mathop}{integrals}{"2D}
+\stix@MathSymbol{\smallpointintup}        {\mathop}{integrals}{"2E}
+\stix@MathSymbol{\smallsqintup}           {\mathop}{integrals}{"2F}
+\stix@MathSymbol{\smallintlarhkup}        {\mathop}{integrals}{"30}
+\stix@MathSymbol{\smallintxup}            {\mathop}{integrals}{"31}
+\stix@MathSymbol{\smallintcapup}          {\mathop}{integrals}{"32}
+\stix@MathSymbol{\smallintcupup}          {\mathop}{integrals}{"33}
+\stix@MathSymbol{\smallupintup}           {\mathop}{integrals}{"34}
+\stix@MathSymbol{\smalllowintup}          {\mathop}{integrals}{"35}
+\stix@MathSymbol{\intslop}                {\mathop}{integrals}{"94}
+\stix@MathSymbol{\iintslop}               {\mathop}{integrals}{"95}
+\stix@MathSymbol{\iiintslop}              {\mathop}{integrals}{"96}
+\stix@MathSymbol{\ointslop}               {\mathop}{integrals}{"97}
+\stix@MathSymbol{\oiintslop}              {\mathop}{integrals}{"98}
+\stix@MathSymbol{\oiiintslop}             {\mathop}{integrals}{"99}
+\stix@MathSymbol{\intclockwiseslop}       {\mathop}{integrals}{"9A}
+\stix@MathSymbol{\varointclockwiseslop}   {\mathop}{integrals}{"9B}
+\stix@MathSymbol{\ointctrclockwiseslop}   {\mathop}{integrals}{"9C}
+\stix@MathSymbol{\sumintslop}             {\mathop}{integrals}{"9D}
+\stix@MathSymbol{\iiiintslop}             {\mathop}{integrals}{"9E}
+\stix@MathSymbol{\intbarslop}             {\mathop}{integrals}{"9F}
+\stix@MathSymbol{\intBarslop}             {\mathop}{integrals}{"A0}
+\stix@MathSymbol{\fintslop}               {\mathop}{integrals}{"A1}
+\stix@MathSymbol{\cirfnintslop}           {\mathop}{integrals}{"A2}
+\stix@MathSymbol{\awintslop}              {\mathop}{integrals}{"A3}
+\stix@MathSymbol{\rppolintslop}           {\mathop}{integrals}{"A4}
+\stix@MathSymbol{\scpolintslop}           {\mathop}{integrals}{"A5}
+\stix@MathSymbol{\npolintslop}            {\mathop}{integrals}{"A6}
+\stix@MathSymbol{\pointintslop}           {\mathop}{integrals}{"A7}
+\stix@MathSymbol{\sqintslop}              {\mathop}{integrals}{"A8}
+\stix@MathSymbol{\intlarhkslop}           {\mathop}{integrals}{"A9}
+\stix@MathSymbol{\intxslop}               {\mathop}{integrals}{"AA}
+\stix@MathSymbol{\intcapslop}             {\mathop}{integrals}{"AB}
+\stix@MathSymbol{\intcupslop}             {\mathop}{integrals}{"AC}
+\stix@MathSymbol{\upintslop}              {\mathop}{integrals}{"AD}
+\stix@MathSymbol{\lowintslop}             {\mathop}{integrals}{"AE}
+\stix@MathSymbol{\intupop}                {\mathop}{integrals}{"AF}
+\stix@MathSymbol{\iintupop}               {\mathop}{integrals}{"B0}
+\stix@MathSymbol{\iiintupop}              {\mathop}{integrals}{"B1}
+\stix@MathSymbol{\ointupop}               {\mathop}{integrals}{"B2}
+\stix@MathSymbol{\oiintupop}              {\mathop}{integrals}{"B3}
+\stix@MathSymbol{\oiiintupop}             {\mathop}{integrals}{"B4}
+\stix@MathSymbol{\intclockwiseupop}       {\mathop}{integrals}{"B5}
+\stix@MathSymbol{\varointclockwiseupop}   {\mathop}{integrals}{"B6}
+\stix@MathSymbol{\ointctrclockwiseupop}   {\mathop}{integrals}{"B7}
+\stix@MathSymbol{\sumintupop}             {\mathop}{integrals}{"B8}
+\stix@MathSymbol{\iiiintupop}             {\mathop}{integrals}{"B9}
+\stix@MathSymbol{\intbarupop}             {\mathop}{integrals}{"BA}
+\stix@MathSymbol{\intBarupop}             {\mathop}{integrals}{"BB}
+\stix@MathSymbol{\fintupop}               {\mathop}{integrals}{"BC}
+\stix@MathSymbol{\cirfnintupop}           {\mathop}{integrals}{"BD}
+\stix@MathSymbol{\awintupop}              {\mathop}{integrals}{"BE}
+\stix@MathSymbol{\rppolintupop}           {\mathop}{integrals}{"BF}
+\stix@MathSymbol{\scpolintupop}           {\mathop}{integrals}{"C0}
+\stix@MathSymbol{\npolintupop}            {\mathop}{integrals}{"C1}
+\stix@MathSymbol{\pointintupop}           {\mathop}{integrals}{"C2}
+\stix@MathSymbol{\sqintupop}              {\mathop}{integrals}{"C3}
+\stix@MathSymbol{\intlarhkupop}           {\mathop}{integrals}{"C4}
+\stix@MathSymbol{\intxupop}               {\mathop}{integrals}{"C5}
+\stix@MathSymbol{\intcapupop}             {\mathop}{integrals}{"C6}
+\stix@MathSymbol{\intcupupop}             {\mathop}{integrals}{"C7}
+\stix@MathSymbol{\upintupop}              {\mathop}{integrals}{"C8}
+\stix@MathSymbol{\lowintupop}             {\mathop}{integrals}{"C9}
+
+\stix@MathSymbol{\circledS}               {\mathord}{integrals}{"3B}
+\stix@MathSymbol{\diagdown}               {\mathord}{integrals}{"3C}
+\stix@MathSymbol{\diagup}                 {\mathord}{integrals}{"3D}
+\stix@MathSymbol{\eth}                    {\mathord}{integrals}{"3E}
+\stix@MathSymbol{\smallfrown}             {\mathrel}{integrals}{"3F}
+\stix@MathSymbol{\smallsmile}             {\mathrel}{integrals}{"40}
+\stix@MathSymbol{\gvertneqq}              {\mathrel}{integrals}{"5B}
+\stix@MathSymbol{\lvertneqq}              {\mathrel}{integrals}{"5C}
+\stix@MathSymbol{\nshortmid}              {\mathrel}{integrals}{"5D}
+\stix@MathSymbol{\nshortparallel}         {\mathrel}{integrals}{"5E}
+\stix@MathSymbol{\shortmid}               {\mathrel}{integrals}{"5F}
+\stix@MathSymbol{\shortparallel}          {\mathrel}{integrals}{"60}
+\stix@MathSymbol{\varsubsetneq}           {\mathrel}{integrals}{"61}
+\stix@MathSymbol{\varsupsetneq}           {\mathrel}{integrals}{"62}
+\stix@MathSymbol{\varsubsetneqq}          {\mathrel}{integrals}{"63}
+\stix@MathSymbol{\varsupsetneqq}          {\mathrel}{integrals}{"64}
+\stix@MathSymbol{\varkappa}               {\mathord}{integrals}{"7A}
+\stix@MathSymbol{\digamma}                {\mathord}{integrals}{"7B}
+\stix@MathSymbol{\backepsilon}            {\mathord}{integrals}{"7C}
+\stix@MathSymbol{\varpropto}              {\mathrel}{integrals}{"7E}
+\stix@MathSymbol{\yenmath}                {\mathord}{integrals}{"7D}
+\stix@MathSymbol{\circledRmath}           {\mathord}{integrals}{"3A}
+\stix@MathSymbol{\maltesemath}            {\mathord}{arrows3}{"83}
+\stix@MathSymbol{\circledstar}            {\mathord}{arrows3}{"84}
+\DeclareRobustCommand\yen{%
+  \ifmmode\yenmath\else{\fontencoding{TS1}\selectfont\char"A5}\fi}
+\DeclareRobustCommand\circledR{%
+  \ifmmode\circledRmath\else{\fontencoding{TS1}\selectfont\char"AE}\fi}
+\DeclareRobustCommand\checkmark{\ensuremath{\checkmarkmath}}
+\DeclareRobustCommand\maltese{\ensuremath{\maltesemath}}
+\ifstix@upint
+    \let\smallint=\smallintup
+    \let\smalliint=\smalliintup
+    \let\smalliiint=\smalliiintup
+    \let\smalloint=\smallointup
+    \let\smalloiint=\smalloiintup
+    \let\smalloiiint=\smalloiiintup
+    \let\smallintclockwise=\smallintclockwiseup
+    \let\smallvarointclockwise=\smallvarointclockwiseup
+    \let\smallointctrclockwise=\smallointctrclockwiseup
+    \let\smallsumint=\smallsumintup
+    \let\smalliiiint=\smalliiiintup
+    \let\smallintbar=\smallintbarup
+    \let\smallintBar=\smallintBarup
+    \let\smallfint=\smallfintup
+    \let\smallcirfnint=\smallcirfnintup
+    \let\smallawint=\smallawintup
+    \let\smallrppolint=\smallrppolintup
+    \let\smallscpolint=\smallscpolintup
+    \let\smallnpolint=\smallnpolintup
+    \let\smallpointint=\smallpointintup
+    \let\smallsqint=\smallsqintup
+    \let\smallintlarhk=\smallintlarhkup
+    \let\smallintx=\smallintxup
+    \let\smallintcap=\smallintcapup
+    \let\smallintcup=\smallintcupup
+    \let\smallupint=\smallupintup
+    \let\smalllowint=\smalllowintup
+    \let\intop=\intupop
+    \let\iintop=\iintupop
+    \let\iiintop=\iiintupop
+    \let\ointop=\ointupop
+    \let\oiintop=\oiintupop
+    \let\oiiintop=\oiiintupop
+    \let\intclockwiseop=\intclockwiseupop
+    \let\varointclockwiseop=\varointclockwiseupop
+    \let\ointctrclockwiseop=\ointctrclockwiseupop
+    \let\sumintop=\sumintupop
+    \let\iiiintop=\iiiintupop
+    \let\intbarop=\intbarupop
+    \let\intBarop=\intBarupop
+    \let\fintop=\fintupop
+    \let\cirfnintop=\cirfnintupop
+    \let\awintop=\awintupop
+    \let\rppolintop=\rppolintupop
+    \let\scpolintop=\scpolintupop
+    \let\npolintop=\npolintupop
+    \let\pointintop=\pointintupop
+    \let\sqintop=\sqintupop
+    \let\intlarhkop=\intlarhkupop
+    \let\intxop=\intxupop
+    \let\intcapop=\intcapupop
+    \let\intcupop=\intcupupop
+    \let\upintop=\upintupop
+    \let\lowintop=\lowintupop
+\else
+    \let\smallint=\smallintsl
+    \let\smalliint=\smalliintsl
+    \let\smalliiint=\smalliiintsl
+    \let\smalloint=\smallointsl
+    \let\smalloiint=\smalloiintsl
+    \let\smalloiiint=\smalloiiintsl
+    \let\smallintclockwise=\smallintclockwisesl
+    \let\smallvarointclockwise=\smallvarointclockwisesl
+    \let\smallointctrclockwise=\smallointctrclockwisesl
+    \let\smallsumint=\smallsumintsl
+    \let\smalliiiint=\smalliiiintsl
+    \let\smallintbar=\smallintbarsl
+    \let\smallintBar=\smallintBarsl
+    \let\smallfint=\smallfintsl
+    \let\smallcirfnint=\smallcirfnintsl
+    \let\smallawint=\smallawintsl
+    \let\smallrppolint=\smallrppolintsl
+    \let\smallscpolint=\smallscpolintsl
+    \let\smallnpolint=\smallnpolintsl
+    \let\smallpointint=\smallpointintsl
+    \let\smallsqint=\smallsqintsl
+    \let\smallintlarhk=\smallintlarhksl
+    \let\smallintx=\smallintxsl
+    \let\smallintcap=\smallintcapsl
+    \let\smallintcup=\smallintcupsl
+    \let\smallupint=\smallupintsl
+    \let\smalllowint=\smalllowintsl
+    \let\intop=\intslop
+    \let\iintop=\iintslop
+    \let\iiintop=\iiintslop
+    \let\ointop=\ointslop
+    \let\oiintop=\oiintslop
+    \let\oiiintop=\oiiintslop
+    \let\intclockwiseop=\intclockwiseslop
+    \let\varointclockwiseop=\varointclockwiseslop
+    \let\ointctrclockwiseop=\ointctrclockwiseslop
+    \let\sumintop=\sumintslop
+    \let\iiiintop=\iiiintslop
+    \let\intbarop=\intbarslop
+    \let\intBarop=\intBarslop
+    \let\fintop=\fintslop
+    \let\cirfnintop=\cirfnintslop
+    \let\awintop=\awintslop
+    \let\rppolintop=\rppolintslop
+    \let\scpolintop=\scpolintslop
+    \let\npolintop=\npolintslop
+    \let\pointintop=\pointintslop
+    \let\sqintop=\sqintslop
+    \let\intlarhkop=\intlarhkslop
+    \let\intxop=\intxslop
+    \let\intcapop=\intcapslop
+    \let\intcupop=\intcupslop
+    \let\upintop=\upintslop
+    \let\lowintop=\lowintslop
+\fi
+\def\int{\DOTSI\intop\ilimits@}
+\def\iint{\DOTSI\iintop\ilimits@}
+\def\iiint{\DOTSI\iiintop\ilimits@}
+\def\oint{\DOTSI\ointop\ilimits@}
+\def\oiint{\DOTSI\oiintop\ilimits@}
+\def\oiiint{\DOTSI\oiiintop\ilimits@}
+\def\intclockwise{\DOTSI\intclockwiseop\ilimits@}
+\def\varointclockwise{\DOTSI\varointclockwiseop\ilimits@}
+\def\ointctrclockwise{\DOTSI\ointctrclockwiseop\ilimits@}
+\def\sumint{\DOTSI\sumintop\ilimits@}
+\def\iiiint{\DOTSI\iiiintop\ilimits@}
+\def\intbar{\DOTSI\intbarop\ilimits@}
+\def\intBar{\DOTSI\intBarop\ilimits@}
+\def\fint{\DOTSI\fintop\ilimits@}
+\def\cirfnint{\DOTSI\cirfnintop\ilimits@}
+\def\awint{\DOTSI\awintop\ilimits@}
+\def\rppolint{\DOTSI\rppolintop\ilimits@}
+\def\scpolint{\DOTSI\scpolintop\ilimits@}
+\def\npolint{\DOTSI\npolintop\ilimits@}
+\def\pointint{\DOTSI\pointintop\ilimits@}
+\def\sqint{\DOTSI\sqintop\ilimits@}
+\def\intlarhk{\DOTSI\intlarhkop\ilimits@}
+\def\intx{\DOTSI\intxop\ilimits@}
+\def\intcap{\DOTSI\intcapop\ilimits@}
+\def\intcup{\DOTSI\intcupop\ilimits@}
+\def\upint{\DOTSI\upintop\ilimits@}
+\def\lowint{\DOTSI\lowintop\ilimits@}
+\def\intsl{\DOTSI\intslop\ilimits@}
+\def\iintsl{\DOTSI\iintslop\ilimits@}
+\def\iiintsl{\DOTSI\iiintslop\ilimits@}
+\def\ointsl{\DOTSI\ointslop\ilimits@}
+\def\oiintsl{\DOTSI\oiintslop\ilimits@}
+\def\oiiintsl{\DOTSI\oiiintslop\ilimits@}
+\def\intclockwisesl{\DOTSI\intclockwiseslop\ilimits@}
+\def\varointclockwisesl{\DOTSI\varointclockwiseslop\ilimits@}
+\def\ointctrclockwisesl{\DOTSI\ointctrclockwiseslop\ilimits@}
+\def\sumintsl{\DOTSI\sumintslop\ilimits@}
+\def\iiiintsl{\DOTSI\iiiintslop\ilimits@}
+\def\intbarsl{\DOTSI\intbarslop\ilimits@}
+\def\intBarsl{\DOTSI\intBarslop\ilimits@}
+\def\fintsl{\DOTSI\fintslop\ilimits@}
+\def\cirfnintsl{\DOTSI\cirfnintslop\ilimits@}
+\def\awintsl{\DOTSI\awintslop\ilimits@}
+\def\rppolintsl{\DOTSI\rppolintslop\ilimits@}
+\def\scpolintsl{\DOTSI\scpolintslop\ilimits@}
+\def\npolintsl{\DOTSI\npolintslop\ilimits@}
+\def\pointintsl{\DOTSI\pointintslop\ilimits@}
+\def\sqintsl{\DOTSI\sqintslop\ilimits@}
+\def\intlarhksl{\DOTSI\intlarhkslop\ilimits@}
+\def\intxsl{\DOTSI\intxslop\ilimits@}
+\def\intcapsl{\DOTSI\intcapslop\ilimits@}
+\def\intcupsl{\DOTSI\intcupslop\ilimits@}
+\def\upintsl{\DOTSI\upintslop\ilimits@}
+\def\lowintsl{\DOTSI\lowintslop\ilimits@}
+\def\intup{\DOTSI\intupop\ilimits@}
+\def\iintup{\DOTSI\iintupop\ilimits@}
+\def\iiintup{\DOTSI\iiintupop\ilimits@}
+\def\ointup{\DOTSI\ointupop\ilimits@}
+\def\oiintup{\DOTSI\oiintupop\ilimits@}
+\def\oiiintup{\DOTSI\oiiintupop\ilimits@}
+\def\intclockwiseup{\DOTSI\intclockwiseupop\ilimits@}
+\def\varointclockwiseup{\DOTSI\varointclockwiseupop\ilimits@}
+\def\ointctrclockwiseup{\DOTSI\ointctrclockwiseupop\ilimits@}
+\def\sumintup{\DOTSI\sumintupop\ilimits@}
+\def\iiiintup{\DOTSI\iiiintupop\ilimits@}
+\def\intbarup{\DOTSI\intbarupop\ilimits@}
+\def\intBarup{\DOTSI\intBarupop\ilimits@}
+\def\fintup{\DOTSI\fintupop\ilimits@}
+\def\cirfnintup{\DOTSI\cirfnintupop\ilimits@}
+\def\awintup{\DOTSI\awintupop\ilimits@}
+\def\rppolintup{\DOTSI\rppolintupop\ilimits@}
+\def\scpolintup{\DOTSI\scpolintupop\ilimits@}
+\def\npolintup{\DOTSI\npolintupop\ilimits@}
+\def\pointintup{\DOTSI\pointintupop\ilimits@}
+\def\sqintup{\DOTSI\sqintupop\ilimits@}
+\def\intlarhkup{\DOTSI\intlarhkupop\ilimits@}
+\def\intxup{\DOTSI\intxupop\ilimits@}
+\def\intcapup{\DOTSI\intcapupop\ilimits@}
+\def\intcupup{\DOTSI\intcupupop\ilimits@}
+\def\upintup{\DOTSI\upintupop\ilimits@}
+\def\lowintup{\DOTSI\lowintupop\ilimits@}
+\stix@MathSymbol{\Bbbsumop}               {\mathop}{largesymbols}{"B0}
+\stix@MathSymbol{\prodop}                 {\mathop}{largesymbols}{"B1}
+\stix@MathSymbol{\coprodop}               {\mathop}{largesymbols}{"B2}
+\stix@MathSymbol{\sumop}                  {\mathop}{largesymbols}{"B3}
+\stix@MathSymbol{\bigwedgeop}             {\mathop}{largesymbols}{"B4}
+\stix@MathSymbol{\bigveeop}               {\mathop}{largesymbols}{"B5}
+\stix@MathSymbol{\bigcapop}               {\mathop}{largesymbols}{"B6}
+\stix@MathSymbol{\bigcupop}               {\mathop}{largesymbols}{"B7}
+\stix@MathSymbol{\xsolop}                 {\mathop}{largesymbols}{"B8}
+\stix@MathSymbol{\xbsolop}                {\mathop}{largesymbols}{"B9}
+\stix@MathSymbol{\bigodotop}              {\mathop}{largesymbols}{"BA}
+\stix@MathSymbol{\bigoplusop}             {\mathop}{largesymbols}{"BB}
+\stix@MathSymbol{\bigotimesop}            {\mathop}{largesymbols}{"BC}
+\stix@MathSymbol{\bigcupdotop}            {\mathop}{largesymbols}{"BD}
+\stix@MathSymbol{\biguplusop}             {\mathop}{largesymbols}{"BE}
+\stix@MathSymbol{\bigsqcapop}             {\mathop}{largesymbols}{"BF}
+\stix@MathSymbol{\bigsqcupop}             {\mathop}{largesymbols}{"C0}
+\stix@MathSymbol{\conjquantop}            {\mathop}{largesymbols}{"C1}
+\stix@MathSymbol{\disjquantop}            {\mathop}{largesymbols}{"C2}
+\stix@MathSymbol{\bigtimesop}             {\mathop}{largesymbols}{"C3}
+\stix@MathSymbol{\modtwosumop}            {\mathop}{largesymbols}{"C4}
+\stix@MathSymbol{\bigtalloblongop}        {\mathop}{largesymbols}{"C5}
+\def\Bbbsum{\DOTSI\Bbbsumop\slimits@}
+\def\prod{\DOTSI\prodop\slimits@}
+\def\coprod{\DOTSI\coprodop\slimits@}
+\def\sum{\DOTSI\sumop\slimits@}
+\def\bigwedge{\DOTSI\bigwedgeop\slimits@}
+\def\bigvee{\DOTSI\bigveeop\slimits@}
+\def\bigcap{\DOTSI\bigcapop\slimits@}
+\def\bigcup{\DOTSI\bigcupop\slimits@}
+\def\xsol{\DOTSI\xsolop\slimits@}
+\def\xbsol{\DOTSI\xbsolop\slimits@}
+\def\bigodot{\DOTSI\bigodotop\slimits@}
+\def\bigoplus{\DOTSI\bigoplusop\slimits@}
+\def\bigotimes{\DOTSI\bigotimesop\slimits@}
+\def\bigcupdot{\DOTSI\bigcupdotop\slimits@}
+\def\biguplus{\DOTSI\biguplusop\slimits@}
+\def\bigsqcap{\DOTSI\bigsqcapop\slimits@}
+\def\bigsqcup{\DOTSI\bigsqcupop\slimits@}
+\def\conjquant{\DOTSI\conjquantop\slimits@}
+\def\disjquant{\DOTSI\disjquantop\slimits@}
+\def\bigtimes{\DOTSI\bigtimesop\slimits@}
+\def\modtwosum{\DOTSI\modtwosumop\slimits@}
+\def\bigtalloblong{\DOTSI\bigtalloblongop\slimits@}
+\stix@MathAccent{\grave}                {\mathalpha}{letters}{"80}
+\stix@MathAccent{\acute}                {\mathalpha}{letters}{"81}
+\stix@MathAccent{\hat}                  {\mathalpha}{letters}{"82}
+\stix@MathAccent{\tilde}                {\mathalpha}{letters}{"83}
+\stix@MathAccent{\bar}                  {\mathalpha}{letters}{"84}
+\stix@MathAccent{\breve}                {\mathalpha}{letters}{"85}
+\stix@MathAccent{\dot}                  {\mathalpha}{letters}{"86}
+\stix@MathAccent{\ddot}                 {\mathalpha}{letters}{"87}
+\stix@MathAccent{\ovhook}               {\mathalpha}{letters}{"88}
+\stix@MathAccent{\mathring}             {\mathalpha}{letters}{"89}
+\stix@MathAccent{\check}                {\mathalpha}{letters}{"8A}
+\stix@MathAccent{\candra}               {\mathalpha}{letters}{"8B}
+\stix@MathAccent{\oturnedcomma}         {\mathalpha}{letters}{"8C}
+\stix@MathAccent{\ocommatopright}       {\mathalpha}{letters}{"8D}
+\stix@MathAccent{\droang}               {\mathalpha}{letters}{"8E}
+\stix@MathAccent{\leftharpoonaccent}    {\mathalpha}{letters}{"8F}
+\stix@MathAccent{\rightharpoonaccent}   {\mathalpha}{letters}{"90}
+\stix@MathAccent{\leftarrowaccent}      {\mathalpha}{letters}{"91}
+\stix@MathAccent{\vec}                  {\mathalpha}{letters}{"92}
+        % not \let because amsmath redefines \vec
+        \def\rightarrowaccent{\vec}
+\stix@MathAccent{\dddot}                {\mathalpha}{letters}{"93}
+\stix@MathAccent{\ddddot}               {\mathalpha}{letters}{"94}
+\stix@MathAccent{\leftrightarrowaccent} {\mathalpha}{letters}{"95}
+\stix@MathAccent{\annuity}              {\mathalpha}{letters}{"96}
+\stix@MathAccent{\widebridgeabove}      {\mathalpha}{letters}{"97}
+\stix@MathAccent{\asteraccent}          {\mathalpha}{letters}{"98}
+\begingroup
+  \def\set@mathaccent#1#2#3#4{%
+      \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
+  \stix@MathAccent{\widehat}            {\mathord}{letters}{"9A}
+  \stix@MathAccent{\widetilde}          {\mathord}{letters}{"9B}
+  \stix@MathAccent{\widecheck}          {\mathord}{letters}{"9C}
+\endgroup
+\stix@MathSymbol{\braceld}{\mathord}{letters}{"A9}
+\stix@MathSymbol{\bracerd}{\mathord}{letters}{"AA}
+\stix@MathSymbol{\bracelu}{\mathord}{letters}{"AB}
+\stix@MathSymbol{\braceru}{\mathord}{letters}{"AC}
+\stix@MathSymbol{\braceex}{\mathord}{letters}{"AD}
+\stix@MathSymbol{\bracemu}{\mathord}{letters}{"AE}
+\stix@MathSymbol{\bracemd}{\mathord}{letters}{"AF}
+\stix@MathSymbol{\parenld}{\mathord}{letters}{"B0}
+\stix@MathSymbol{\parenrd}{\mathord}{letters}{"B1}
+\stix@MathSymbol{\parenlu}{\mathord}{letters}{"B2}
+\stix@MathSymbol{\parenru}{\mathord}{letters}{"B3}
+\stix@MathSymbol{\bracketld}{\mathord}{letters}{"B4}
+\stix@MathSymbol{\bracketrd}{\mathord}{letters}{"B5}
+\stix@MathSymbol{\bracketlu}{\mathord}{letters}{"B6}
+\stix@MathSymbol{\bracketru}{\mathord}{letters}{"B7}
+\def\stix@braceglue{\hskip -.15em plus .15em}
+\def\downbracefill{$\m@th%
+    \braceld\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracemu\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracerd$}
+\def\upbracefill{$\m@th%
+    \bracelu\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracemd\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\braceru$}
+\def\stix@parenglue{\hskip -.2em plus .2em}
+\def\downparenfill{$\m@th%
+    \parenld\stix@parenglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@parenglue\parenrd$}
+\def\upparenfill{$\m@th%
+    \parenlu\stix@parenglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@parenglue\parenru$}
+\def\stix@overbrace#1#2{%
+    \mathop {%
+        \vbox {%
+            \m@th%
+            \ialign{##\crcr%
+                \noalign{\kern.3\fontdimen5\textfont2}%
+                    \csname down#1fill\endcsname\crcr%
+                \noalign{\kern.5\fontdimen5\textfont2\nointerlineskip}%
+                $\hfil\displaystyle{#2}\hfil$\crcr%
+            }%
+        }%
+    }%
+    \limits%
+}
+\def\stix@underbrace#1#2{
+    \mathop {%
+        \vtop {%
+            \m@th%
+            \ialign{##\crcr%
+                $\hfil\displaystyle{#2}\hfil$\crcr%
+                \noalign{\kern.5\fontdimen5\textfont2\nointerlineskip}%
+                \csname up#1fill\endcsname\crcr%
+                \noalign{\kern.3\fontdimen5\textfont2}%
+            }%
+        }%
+    }%
+    \limits%
+}
+\def\overbrace#1{\stix@overbrace{brace}{#1}}
+\def\overparen#1{\stix@overbrace{paren}{#1}}
+\def\underbrace#1{\stix@underbrace{brace}{#1}}
+\def\underparen#1{\stix@underbrace{paren}{#1}}
+\AtBeginDocument{
+    \@ifpackageloaded{mathtools}{}{
+        \def\stix@bracketglue{\hskip -.85em plus .85em}
+        \def\downbracketfill{$\m@th%
+            \bracketld\stix@bracketglue%
+            \cleaders\hbox{$\braceex$}\hfill%
+            \stix@bracketglue\bracketrd$}
+        \def\upbracketfill{$\m@th%
+            \bracketlu\stix@bracketglue%
+            \cleaders\hbox{$\braceex$}\hfill%
+            \stix@bracketglue\bracketru$}
+        \def\underbracket#1{\stix@underbrace{bracket}{#1}}
+        \def\overbracket#1{\stix@overbrace{bracket}{#1}}
+    }
+}
+\stix@MathSymbol{\arrowaccentex}  {\mathord}{letters}{"99}
+\stix@MathSymbol{\harpoonaccentlt}{\mathord}{letters}{"8F}
+\stix@MathSymbol{\harpoonaccentrt}{\mathord}{letters}{"90}
+\stix@MathSymbol{\arrowaccentlt}  {\mathord}{letters}{"91}
+\stix@MathSymbol{\arrowaccentrt}  {\mathord}{letters}{"92}
+\def\stix@arrowaccentglue{\hskip -.23em plus .23em}
+\def\overleftarrowfill{$\m@th%
+    \arrowaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill$}
+\def\overrightarrowfill{$\m@th%
+    \cleaders\hbox{$\arrowaccentex$}\hfill%
+    \stix@arrowaccentglue\arrowaccentrt$}
+\def\overleftrightarrowfill{$\m@th%
+    \arrowaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill%
+    \stix@arrowaccentglue\arrowaccentrt$}
+\def\overleftharpoonfill{$\m@th%
+    \harpoonaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill$}
+\def\overrightharpoonfill{$\m@th%
+   \cleaders\hbox{$\arrowaccentex$}\hfill%
+   \stix@arrowaccentglue\harpoonaccentrt$}
+\def\stix@overarrow#1#2#3{%
+    \vbox {%
+        \m@th%
+        \ialign{##\crcr%
+            \csname over#1fill\endcsname\crcr%
+            \noalign{\kern -1ex\nointerlineskip}%
+            $\hfil#2#3\hfil$\crcr%
+        }%
+    }%
+}
+\def\stix@underarrow#1#2#3{
+    \vtop {%
+        \m@th%
+        \ialign{##\crcr%
+            $\hfil#2#3\hfil$\crcr%
+            \noalign{\kern .2ex\nointerlineskip}%
+            \csname over#1fill\endcsname\crcr%
+            \noalign{\kern -1ex\nointerlineskip}%
+        }%
+    }%
+}
+\def\overleftarrow{\mathpalette{\stix@overarrow{leftarrow}}}
+\def\overrightarrow{\mathpalette{\stix@overarrow{rightarrow}}}
+\def\overleftrightarrow{\mathpalette{\stix@overarrow{leftrightarrow}}}
+\def\overleftharpoon{\mathpalette{\stix@overarrow{leftharpoon}}}
+\def\overrightharpoon{\mathpalette{\stix@overarrow{rightharpoon}}}
+\def\underleftarrow{\mathpalette{\stix@underarrow{leftarrow}}}
+\def\underrightarrow{\mathpalette{\stix@underarrow{rightarrow}}}
+\def\underleftrightarrow{\mathpalette{\stix@underarrow{leftrightarrow}}}
+\def\underleftharpoon{\mathpalette{\stix@underarrow{leftharpoon}}}
+\def\underrightharpoon{\mathpalette{\stix@underarrow{rightharpoon}}}
+\stix@MathSymbol{\lhook}                    {\mathrel}{arrows1}{"2A}
+\stix@MathSymbol{\rhook}                    {\mathrel}{arrows1}{"2B}
+\stix@MathSymbol{\relbar}                   {\mathrel}{arrows1}{"2C}
+\stix@MathSymbol{\Relbar}                   {\mathrel}{arrows1}{"2D}
+\stix@MathSymbol{\Rrelbar}                  {\mathrel}{arrows1}{"2E}
+\stix@MathSymbol{\RRelbar}                  {\mathrel}{arrows1}{"2F}
+
+\stix@MathSymbol{\mapsfromchar}             {\mathrel}{arrows1}{"3A}
+\stix@MathSymbol{\mapstochar}               {\mathrel}{arrows1}{"3B}
+\stix@MathSymbol{\rightarrowbackapprox}     {\mathrel}{arrows1}{"40}
+\stix@MathSymbol{\similarleftarrow}         {\mathrel}{arrows1}{"5B}
+\stix@MathSymbol{\leftarrowapprox}          {\mathrel}{arrows1}{"5C}
+\stix@MathSymbol{\leftarrowbsimilar}        {\mathrel}{arrows1}{"5D}
+\stix@MathSymbol{\rightarrowbsimilar}       {\mathrel}{arrows1}{"5E}
+\stix@MathSymbol{\leftarrow}                {\mathrel}{arrows1}{"7D} \let\gets=\leftarrow
+\stix@MathSymbol{\rightarrow}               {\mathrel}{arrows1}{"99} \let\to=\rightarrow
+\stix@MathSymbol{\leftrightarrow}           {\mathrel}{arrows1}{"9B}
+\stix@MathSymbol{\nwarrow}                  {\mathrel}{arrows1}{"9D}
+\stix@MathSymbol{\nearrow}                  {\mathrel}{arrows1}{"9E}
+\stix@MathSymbol{\searrow}                  {\mathrel}{arrows1}{"9F}
+
+\stix@MathSymbol{\swarrow}                  {\mathrel}{arrows1}{"A0}
+\stix@MathSymbol{\nleftarrow}               {\mathrel}{arrows1}{"A1}
+\stix@MathSymbol{\nrightarrow}              {\mathrel}{arrows1}{"A2}
+\stix@MathSymbol{\leftwavearrow}            {\mathrel}{arrows1}{"A3}
+\stix@MathSymbol{\rightwavearrow}           {\mathrel}{arrows1}{"A4}
+\stix@MathSymbol{\twoheadleftarrow}         {\mathrel}{arrows1}{"A5}
+\stix@MathSymbol{\twoheaduparrow}           {\mathrel}{arrows1}{"A6}
+\stix@MathSymbol{\twoheadrightarrow}        {\mathrel}{arrows1}{"A7}
+\stix@MathSymbol{\twoheaddownarrow}         {\mathrel}{arrows1}{"A8}
+\stix@MathSymbol{\leftarrowtail}            {\mathrel}{arrows1}{"A9}
+\stix@MathSymbol{\rightarrowtail}           {\mathrel}{arrows1}{"AA}
+\stix@MathSymbol{\mapsfrom}                 {\mathrel}{arrows1}{"AB}
+\stix@MathSymbol{\mapsup}                   {\mathrel}{arrows1}{"AC}
+\stix@MathSymbol{\mapsto}                   {\mathrel}{arrows1}{"AD}
+\stix@MathSymbol{\mapsdown}                 {\mathrel}{arrows1}{"AE}
+\stix@MathSymbol{\updownarrowbar}           {\mathord}{arrows1}{"AF}
+
+\stix@MathSymbol{\hookleftarrow}            {\mathrel}{arrows1}{"B0}
+\stix@MathSymbol{\hookrightarrow}           {\mathrel}{arrows1}{"B1}
+\stix@MathSymbol{\looparrowleft}            {\mathrel}{arrows1}{"B2}
+\stix@MathSymbol{\looparrowright}           {\mathrel}{arrows1}{"B3}
+\stix@MathSymbol{\leftrightsquigarrow}      {\mathrel}{arrows1}{"B4}
+\stix@MathSymbol{\nleftrightarrow}          {\mathrel}{arrows1}{"B5}
+\stix@MathSymbol{\downzigzagarrow}          {\mathrel}{arrows1}{"B6}
+\stix@MathSymbol{\Lsh}                      {\mathrel}{arrows1}{"B7}
+\stix@MathSymbol{\Rsh}                      {\mathrel}{arrows1}{"B8}
+\stix@MathSymbol{\Ldsh}                     {\mathrel}{arrows1}{"B9}
+\stix@MathSymbol{\Rdsh}                     {\mathrel}{arrows1}{"BA}
+\stix@MathSymbol{\linefeed}                 {\mathord}{arrows1}{"BB}
+\stix@MathSymbol{\carriagereturn}           {\mathord}{arrows1}{"BC}
+\stix@MathSymbol{\curvearrowleft}           {\mathrel}{arrows1}{"BD}
+\stix@MathSymbol{\curvearrowright}          {\mathrel}{arrows1}{"BE}
+\stix@MathSymbol{\barovernorthwestarrow}    {\mathord}{arrows1}{"BF}
+
+\stix@MathSymbol{\barleftarrowrightarrowbar}{\mathord}{arrows1}{"C0}
+\stix@MathSymbol{\acwopencirclearrow}       {\mathord}{arrows1}{"C1} \stix@MathSymbol{\circlearrowleft} {\mathrel}{arrows1}{"C1}
+\stix@MathSymbol{\cwopencirclearrow}        {\mathord}{arrows1}{"C2} \stix@MathSymbol{\circlearrowright}{\mathrel}{arrows1}{"C2}
+\stix@MathSymbol{\leftharpoonup}            {\mathrel}{arrows1}{"C3}
+\stix@MathSymbol{\leftharpoondown}          {\mathrel}{arrows1}{"C4}
+\stix@MathSymbol{\upharpoonright}           {\mathrel}{arrows1}{"C5} \let\restriction=\upharpoonright
+\stix@MathSymbol{\upharpoonleft}            {\mathrel}{arrows1}{"C6}
+\stix@MathSymbol{\rightharpoonup}           {\mathrel}{arrows1}{"C7}
+\stix@MathSymbol{\rightharpoondown}         {\mathrel}{arrows1}{"C8}
+\stix@MathSymbol{\downharpoonright}         {\mathrel}{arrows1}{"C9}
+\stix@MathSymbol{\downharpoonleft}          {\mathrel}{arrows1}{"CA}
+\stix@MathSymbol{\rightleftarrows}          {\mathrel}{arrows1}{"CB}
+\stix@MathSymbol{\updownarrows}             {\mathrel}{arrows1}{"CC}
+\stix@MathSymbol{\leftrightarrows}          {\mathrel}{arrows1}{"CD}
+\stix@MathSymbol{\leftleftarrows}           {\mathrel}{arrows1}{"CE}
+\stix@MathSymbol{\upuparrows}               {\mathrel}{arrows1}{"CF}
+
+\stix@MathSymbol{\rightrightarrows}         {\mathrel}{arrows1}{"D0}
+\stix@MathSymbol{\downdownarrows}           {\mathrel}{arrows1}{"D1}
+\stix@MathSymbol{\leftrightharpoons}        {\mathrel}{arrows1}{"D2}
+\stix@MathSymbol{\rightleftharpoons}        {\mathrel}{arrows1}{"D3}
+\stix@MathSymbol{\nLeftarrow}               {\mathrel}{arrows1}{"D4}
+\stix@MathSymbol{\nLeftrightarrow}          {\mathrel}{arrows1}{"D5}
+\stix@MathSymbol{\nRightarrow}              {\mathrel}{arrows1}{"D6}
+\stix@MathSymbol{\Leftarrow}                {\mathrel}{arrows1}{"D7}
+\stix@MathSymbol{\Rightarrow}               {\mathrel}{arrows1}{"D9}
+\stix@MathSymbol{\Leftrightarrow}           {\mathrel}{arrows1}{"DB}
+\stix@MathSymbol{\Nwarrow}                  {\mathrel}{arrows1}{"DD}
+\stix@MathSymbol{\Nearrow}                  {\mathrel}{arrows1}{"DE}
+\stix@MathSymbol{\Searrow}                  {\mathrel}{arrows1}{"DF}
+
+\stix@MathSymbol{\Swarrow}                  {\mathrel}{arrows1}{"E0}
+\stix@MathSymbol{\Lleftarrow}               {\mathrel}{arrows1}{"E1}
+\stix@MathSymbol{\Rrightarrow}              {\mathrel}{arrows1}{"E2}
+\stix@MathSymbol{\leftsquigarrow}           {\mathrel}{arrows1}{"E3}
+\stix@MathSymbol{\rightsquigarrow}          {\mathrel}{arrows1}{"E4} \let\leadsto=\rightsquigarrow
+\stix@MathSymbol{\nHuparrow}                {\mathord}{arrows1}{"E5}
+\stix@MathSymbol{\nHdownarrow}              {\mathord}{arrows1}{"E6}
+\stix@MathSymbol{\leftdasharrow}            {\mathord}{arrows1}{"E7}
+\stix@MathSymbol{\updasharrow}              {\mathord}{arrows1}{"E8}
+\stix@MathSymbol{\rightdasharrow}           {\mathord}{arrows1}{"E9}
+\stix@MathSymbol{\downdasharrow}            {\mathord}{arrows1}{"EA}
+\stix@MathSymbol{\barleftarrow}             {\mathrel}{arrows1}{"EB}
+\stix@MathSymbol{\rightarrowbar}            {\mathrel}{arrows1}{"EC}
+\stix@MathSymbol{\leftwhitearrow}           {\mathord}{arrows1}{"ED}
+\stix@MathSymbol{\upwhitearrow}             {\mathord}{arrows1}{"EE}
+\stix@MathSymbol{\rightwhitearrow}          {\mathord}{arrows1}{"EF}
+
+\stix@MathSymbol{\downwhitearrow}           {\mathord}{arrows1}{"F0}
+\stix@MathSymbol{\whitearrowupfrombar}      {\mathord}{arrows1}{"F1}
+\stix@MathSymbol{\circleonrightarrow}       {\mathrel}{arrows1}{"F2}
+\stix@MathSymbol{\downuparrows}             {\mathrel}{arrows1}{"F3}
+\stix@MathSymbol{\rightthreearrows}         {\mathrel}{arrows1}{"F4}
+\stix@MathSymbol{\nvleftarrow}              {\mathrel}{arrows1}{"F5}
+\stix@MathSymbol{\nvrightarrow}             {\mathrel}{arrows1}{"F6}
+\stix@MathSymbol{\nvleftrightarrow}         {\mathrel}{arrows1}{"F7}
+\stix@MathSymbol{\nVleftarrow}              {\mathrel}{arrows1}{"F8}
+\stix@MathSymbol{\nVrightarrow}             {\mathrel}{arrows1}{"F9}
+\stix@MathSymbol{\nVleftrightarrow}         {\mathrel}{arrows1}{"FA}
+\stix@MathSymbol{\leftarrowtriangle}        {\mathrel}{arrows1}{"FB}
+\stix@MathSymbol{\rightarrowtriangle}       {\mathrel}{arrows1}{"FC}
+\stix@MathSymbol{\leftrightarrowtriangle}   {\mathrel}{arrows1}{"FD}
+
+\stix@MathSymbol{\leftarrowonoplus}         {\mathrel}{arrows2}{"2A}
+\stix@MathSymbol{\longleftsquigarrow}       {\mathrel}{arrows2}{"2B}
+\stix@MathSymbol{\nvtwoheadleftarrow}       {\mathrel}{arrows2}{"2C}
+\stix@MathSymbol{\nVtwoheadleftarrow}       {\mathrel}{arrows2}{"2D}
+\stix@MathSymbol{\twoheadmapsfrom}          {\mathrel}{arrows2}{"2E}
+\stix@MathSymbol{\twoheadleftdbkarrow}      {\mathrel}{arrows2}{"2F}
+\stix@MathSymbol{\leftdotarrow}             {\mathrel}{arrows2}{"3A}
+\stix@MathSymbol{\nvleftarrowtail}          {\mathrel}{arrows2}{"3B}
+\stix@MathSymbol{\nVleftarrowtail}          {\mathrel}{arrows2}{"3C}
+\stix@MathSymbol{\twoheadleftarrowtail}     {\mathrel}{arrows2}{"3D}
+\stix@MathSymbol{\nvtwoheadleftarrowtail}   {\mathrel}{arrows2}{"3E}
+\stix@MathSymbol{\nVtwoheadleftarrowtail}   {\mathrel}{arrows2}{"3F}
+\stix@MathSymbol{\leftarrowx}               {\mathrel}{arrows2}{"40}
+\stix@MathSymbol{\leftcurvedarrow}          {\mathrel}{arrows2}{"5B}
+\stix@MathSymbol{\equalleftarrow}           {\mathrel}{arrows2}{"5C}
+\stix@MathSymbol{\bsimilarleftarrow}        {\mathrel}{arrows2}{"5D}
+\stix@MathSymbol{\leftarrowbackapprox}      {\mathrel}{arrows2}{"5E}
+\stix@MathSymbol{\rightarrowgtr}            {\mathrel}{arrows2}{"5F}
+\stix@MathSymbol{\rightarrowsupset}         {\mathrel}{arrows2}{"60}
+\stix@MathSymbol{\LLeftarrow}               {\mathrel}{arrows2}{"7D}
+\stix@MathSymbol{\RRightarrow}              {\mathrel}{arrows2}{"7E}
+
+\stix@MathSymbol{\nvtwoheadrightarrow}      {\mathrel}{arrows2}{"99}
+\stix@MathSymbol{\nVtwoheadrightarrow}      {\mathrel}{arrows2}{"9A}
+\stix@MathSymbol{\nvLeftarrow}              {\mathrel}{arrows2}{"9B}
+\stix@MathSymbol{\nvRightarrow}             {\mathrel}{arrows2}{"9C}
+\stix@MathSymbol{\nvLeftrightarrow}         {\mathrel}{arrows2}{"9D}
+\stix@MathSymbol{\twoheadmapsto}            {\mathrel}{arrows2}{"9E}
+\stix@MathSymbol{\Mapsfrom}                 {\mathrel}{arrows2}{"9F}
+
+\stix@MathSymbol{\Mapsto}                   {\mathrel}{arrows2}{"A0}
+\stix@MathSymbol{\downarrowbarred}          {\mathrel}{arrows2}{"A1}
+\stix@MathSymbol{\uparrowbarred}            {\mathrel}{arrows2}{"A2}
+\stix@MathSymbol{\circleonleftarrow}        {\mathrel}{arrows2}{"A3}
+\stix@MathSymbol{\leftthreearrows}          {\mathrel}{arrows2}{"A4}
+\stix@MathSymbol{\leftbkarrow}              {\mathrel}{arrows2}{"A5}
+\stix@MathSymbol{\rightbkarrow}             {\mathrel}{arrows2}{"A6}
+\stix@MathSymbol{\leftdbkarrow}             {\mathrel}{arrows2}{"A7} \let\dashleftarrow=\leftdbkarrow
+\stix@MathSymbol{\dbkarow}                  {\mathrel}{arrows2}{"A8} \let\dashrightarrow=\dbkarow \let\dasharrow=\dbkarow
+\stix@MathSymbol{\drbkarow}                 {\mathrel}{arrows2}{"A9}
+\stix@MathSymbol{\rightdotarrow}            {\mathrel}{arrows2}{"AA}
+\stix@MathSymbol{\baruparrow}               {\mathrel}{arrows2}{"AB}
+\stix@MathSymbol{\downarrowbar}             {\mathrel}{arrows2}{"AC}
+\stix@MathSymbol{\nvrightarrowtail}         {\mathrel}{arrows2}{"AD}
+\stix@MathSymbol{\nVrightarrowtail}         {\mathrel}{arrows2}{"AE}
+\stix@MathSymbol{\twoheadrightarrowtail}    {\mathrel}{arrows2}{"AF}
+
+\stix@MathSymbol{\nvtwoheadrightarrowtail}  {\mathrel}{arrows2}{"B0}
+\stix@MathSymbol{\nVtwoheadrightarrowtail}  {\mathrel}{arrows2}{"B1}
+\stix@MathSymbol{\lefttail}                 {\mathrel}{arrows2}{"B2}
+\stix@MathSymbol{\righttail}                {\mathrel}{arrows2}{"B3}
+\stix@MathSymbol{\leftdbltail}              {\mathrel}{arrows2}{"B4}
+\stix@MathSymbol{\rightdbltail}             {\mathrel}{arrows2}{"B5}
+\stix@MathSymbol{\diamondleftarrow}         {\mathrel}{arrows2}{"B6}
+\stix@MathSymbol{\rightarrowdiamond}        {\mathrel}{arrows2}{"B7}
+\stix@MathSymbol{\diamondleftarrowbar}      {\mathrel}{arrows2}{"B8}
+\stix@MathSymbol{\barrightarrowdiamond}     {\mathrel}{arrows2}{"B9}
+\stix@MathSymbol{\nwsearrow}                {\mathrel}{arrows2}{"BA}
+\stix@MathSymbol{\neswarrow}                {\mathrel}{arrows2}{"BB}
+\stix@MathSymbol{\hknwarrow}                {\mathrel}{arrows2}{"BC}
+\stix@MathSymbol{\hknearrow}                {\mathrel}{arrows2}{"BD}
+\stix@MathSymbol{\hksearow}                 {\mathrel}{arrows2}{"BE}
+\stix@MathSymbol{\hkswarow}                 {\mathrel}{arrows2}{"BF}
+
+\stix@MathSymbol{\tona}                     {\mathrel}{arrows2}{"C0}
+\stix@MathSymbol{\toea}                     {\mathrel}{arrows2}{"C1}
+\stix@MathSymbol{\tosa}                     {\mathrel}{arrows2}{"C2}
+\stix@MathSymbol{\towa}                     {\mathrel}{arrows2}{"C3}
+\stix@MathSymbol{\rdiagovfdiag}             {\mathord}{arrows2}{"C4}
+\stix@MathSymbol{\fdiagovrdiag}             {\mathord}{arrows2}{"C5}
+\stix@MathSymbol{\seovnearrow}              {\mathord}{arrows2}{"C6}
+\stix@MathSymbol{\neovsearrow}              {\mathord}{arrows2}{"C7}
+\stix@MathSymbol{\fdiagovnearrow}           {\mathord}{arrows2}{"C8}
+\stix@MathSymbol{\rdiagovsearrow}           {\mathord}{arrows2}{"C9}
+\stix@MathSymbol{\neovnwarrow}              {\mathord}{arrows2}{"CA}
+\stix@MathSymbol{\nwovnearrow}              {\mathord}{arrows2}{"CB}
+\stix@MathSymbol{\rightcurvedarrow}         {\mathrel}{arrows2}{"CC}
+\stix@MathSymbol{\uprightcurvearrow}        {\mathord}{arrows2}{"CD}
+\stix@MathSymbol{\downrightcurvedarrow}     {\mathord}{arrows2}{"CE}
+\stix@MathSymbol{\leftdowncurvedarrow}      {\mathrel}{arrows2}{"CF}
+
+\stix@MathSymbol{\rightdowncurvedarrow}     {\mathrel}{arrows2}{"D0}
+\stix@MathSymbol{\cwrightarcarrow}          {\mathrel}{arrows2}{"D1}
+\stix@MathSymbol{\acwleftarcarrow}          {\mathrel}{arrows2}{"D2}
+\stix@MathSymbol{\acwoverarcarrow}          {\mathrel}{arrows2}{"D3}
+\stix@MathSymbol{\acwunderarcarrow}         {\mathrel}{arrows2}{"D4}
+\stix@MathSymbol{\curvearrowrightminus}     {\mathrel}{arrows2}{"D5}
+\stix@MathSymbol{\curvearrowleftplus}       {\mathrel}{arrows2}{"D6}
+\stix@MathSymbol{\cwundercurvearrow}        {\mathrel}{arrows2}{"D7}
+\stix@MathSymbol{\ccwundercurvearrow}       {\mathrel}{arrows2}{"D8}
+\stix@MathSymbol{\acwcirclearrow}           {\mathrel}{arrows2}{"D9}
+\stix@MathSymbol{\cwcirclearrow}            {\mathrel}{arrows2}{"DA}
+\stix@MathSymbol{\rightarrowshortleftarrow} {\mathrel}{arrows2}{"DB}
+\stix@MathSymbol{\leftarrowshortrightarrow} {\mathrel}{arrows2}{"DC}
+\stix@MathSymbol{\shortrightarrowleftarrow} {\mathrel}{arrows2}{"DD}
+\stix@MathSymbol{\rightarrowplus}           {\mathrel}{arrows2}{"DE}
+\stix@MathSymbol{\leftarrowplus}            {\mathrel}{arrows2}{"DF}
+
+\stix@MathSymbol{\rightarrowx}              {\mathrel}{arrows2}{"E0}
+\stix@MathSymbol{\leftrightarrowcircle}     {\mathrel}{arrows2}{"E1}
+\stix@MathSymbol{\twoheaduparrowcircle}     {\mathrel}{arrows2}{"E2}
+\stix@MathSymbol{\leftrightharpoonupdown}   {\mathrel}{arrows2}{"E3}
+\stix@MathSymbol{\leftrightharpoondownup}   {\mathrel}{arrows2}{"E4}
+\stix@MathSymbol{\updownharpoonrightleft}   {\mathrel}{arrows2}{"E5}
+\stix@MathSymbol{\updownharpoonleftright}   {\mathrel}{arrows2}{"E6}
+\stix@MathSymbol{\leftrightharpoonupup}     {\mathrel}{arrows2}{"E7}
+\stix@MathSymbol{\updownharpoonrightright}  {\mathrel}{arrows2}{"E8}
+\stix@MathSymbol{\leftrightharpoondowndown} {\mathrel}{arrows2}{"E9}
+\stix@MathSymbol{\updownharpoonleftleft}    {\mathrel}{arrows2}{"EA}
+\stix@MathSymbol{\barleftharpoonup}         {\mathrel}{arrows2}{"EB}
+\stix@MathSymbol{\rightharpoonupbar}        {\mathrel}{arrows2}{"EC}
+\stix@MathSymbol{\barupharpoonright}        {\mathrel}{arrows2}{"ED}
+\stix@MathSymbol{\downharpoonrightbar}      {\mathrel}{arrows2}{"EE}
+\stix@MathSymbol{\barleftharpoondown}       {\mathrel}{arrows2}{"EF}
+
+\stix@MathSymbol{\rightharpoondownbar}      {\mathrel}{arrows2}{"F0}
+\stix@MathSymbol{\barupharpoonleft}         {\mathrel}{arrows2}{"F1}
+\stix@MathSymbol{\downharpoonleftbar}       {\mathrel}{arrows2}{"F2}
+\stix@MathSymbol{\leftharpoonupbar}         {\mathrel}{arrows2}{"F3}
+\stix@MathSymbol{\barrightharpoonup}        {\mathrel}{arrows2}{"F4}
+\stix@MathSymbol{\upharpoonrightbar}        {\mathrel}{arrows2}{"F5}
+\stix@MathSymbol{\bardownharpoonright}      {\mathrel}{arrows2}{"F6}
+\stix@MathSymbol{\leftharpoondownbar}       {\mathrel}{arrows2}{"F7}
+\stix@MathSymbol{\barrightharpoondown}      {\mathrel}{arrows2}{"F8}
+\stix@MathSymbol{\upharpoonleftbar}         {\mathrel}{arrows2}{"F9}
+\stix@MathSymbol{\bardownharpoonleft}       {\mathrel}{arrows2}{"FA}
+\stix@MathSymbol{\leftharpoonsupdown}       {\mathrel}{arrows2}{"FB}
+\stix@MathSymbol{\upharpoonsleftright}      {\mathrel}{arrows2}{"FC}
+\stix@MathSymbol{\rightharpoonsupdown}      {\mathrel}{arrows2}{"FD}
+\stix@MathSymbol{\downharpoonsleftright}    {\mathrel}{arrows2}{"FE}
+\stix@MathSymbol{\leftrightharpoonsup}      {\mathrel}{arrows2}{"FF}
+
+\stix@MathSymbol{\cwgapcirclearrow}         {\mathrel}{arrows3}{"00}
+\stix@MathSymbol{\rightarrowonoplus}        {\mathrel}{arrows3}{"01}
+\stix@MathSymbol{\longleftarrow}            {\mathrel}{arrows3}{"02}
+\stix@MathSymbol{\longrightarrow}           {\mathrel}{arrows3}{"03}
+\stix@MathSymbol{\longleftrightarrow}       {\mathrel}{arrows3}{"04}
+\stix@MathSymbol{\Longleftarrow}            {\mathrel}{arrows3}{"05}
+\stix@MathSymbol{\Longrightarrow}           {\mathrel}{arrows3}{"06}
+\stix@MathSymbol{\Longleftrightarrow}       {\mathrel}{arrows3}{"07}
+\stix@MathSymbol{\longmapsfrom}             {\mathrel}{arrows3}{"08}
+\stix@MathSymbol{\longmapsto}               {\mathrel}{arrows3}{"09}
+\stix@MathSymbol{\Longmapsfrom}             {\mathrel}{arrows3}{"0A}
+\stix@MathSymbol{\Longmapsto}               {\mathrel}{arrows3}{"0B}
+\stix@MathSymbol{\longrightsquigarrow}      {\mathrel}{arrows3}{"0C}
+\stix@MathSymbol{\acwgapcirclearrow}        {\mathrel}{arrows3}{"0D}
+\stix@MathSymbol{\bsimilarrightarrow}       {\mathrel}{arrows3}{"0E}
+\stix@MathSymbol{\spadesuit}                {\mathord}{arrows3}{"0F}
+
+\stix@MathSymbol{\heartsuit}                {\mathord}{arrows3}{"10}
+\stix@MathSymbol{\diamondsuit}              {\mathord}{arrows3}{"11}
+\stix@MathSymbol{\clubsuit}                 {\mathord}{arrows3}{"12}
+\stix@MathSymbol{\mathparagraph}            {\mathord}{arrows3}{"13}
+\stix@MathSymbol{\mathsection}              {\mathord}{arrows3}{"14}
+\stix@MathSymbol{\leftrightharpoonsdown}    {\mathrel}{arrows3}{"15}
+\stix@MathSymbol{\rightleftharpoonsup}      {\mathrel}{arrows3}{"16}
+\stix@MathSymbol{\rightleftharpoonsdown}    {\mathrel}{arrows3}{"17}
+\stix@MathSymbol{\leftharpoonupdash}        {\mathrel}{arrows3}{"18}
+\stix@MathSymbol{\dashleftharpoondown}      {\mathrel}{arrows3}{"19}
+\stix@MathSymbol{\rightharpoonupdash}       {\mathrel}{arrows3}{"1A}
+\stix@MathSymbol{\dashrightharpoondown}     {\mathrel}{arrows3}{"1B}
+\stix@MathSymbol{\updownharpoonsleftright}  {\mathrel}{arrows3}{"1C}
+\stix@MathSymbol{\downupharpoonsleftright}  {\mathrel}{arrows3}{"1D}
+\stix@MathSymbol{\rightimply}               {\mathrel}{arrows3}{"1E}
+\stix@MathSymbol{\equalrightarrow}          {\mathrel}{arrows3}{"1F}
+
+\stix@MathSymbol{\similarrightarrow}        {\mathrel}{arrows3}{"20}
+\stix@MathSymbol{\leftarrowsimilar}         {\mathrel}{arrows3}{"21}
+\stix@MathSymbol{\rightarrowsimilar}        {\mathrel}{arrows3}{"22}
+\stix@MathSymbol{\rightarrowapprox}         {\mathrel}{arrows3}{"23}
+\stix@MathSymbol{\ltlarr}                   {\mathrel}{arrows3}{"24}
+\stix@MathSymbol{\leftarrowless}            {\mathrel}{arrows3}{"25}
+\stix@MathSymbol{\gtrarr}                   {\mathrel}{arrows3}{"26}
+\stix@MathSymbol{\subrarr}                  {\mathrel}{arrows3}{"27}
+\stix@MathSymbol{\leftarrowsubset}          {\mathrel}{arrows3}{"28}
+\stix@MathSymbol{\suplarr}                  {\mathrel}{arrows3}{"29}
+\stix@MathSymbol{\leftfishtail}             {\mathrel}{arrows3}{"2A}
+\stix@MathSymbol{\rightfishtail}            {\mathrel}{arrows3}{"2B}
+\stix@MathSymbol{\upfishtail}               {\mathrel}{arrows3}{"2C}
+\stix@MathSymbol{\downfishtail}             {\mathrel}{arrows3}{"2D}
+\stix@MathSymbol{\varclubsuit}              {\mathord}{arrows3}{"2E}
+\stix@MathSymbol{\quarternote}              {\mathord}{arrows3}{"2F}
+
+\stix@MathSymbol{\eighthnote}               {\mathord}{arrows3}{"3A}
+\stix@MathSymbol{\twonotes}                 {\mathord}{arrows3}{"3B}
+\stix@MathSymbol{\dicei}                    {\mathord}{arrows3}{"3C}
+\stix@MathSymbol{\diceii}                   {\mathord}{arrows3}{"3D}
+\stix@MathSymbol{\diceiii}                  {\mathord}{arrows3}{"3E}
+\stix@MathSymbol{\diceiv}                   {\mathord}{arrows3}{"3F}
+\stix@MathSymbol{\dicev}                    {\mathord}{arrows3}{"40}
+
+\stix@MathSymbol{\dicevi}                   {\mathord}{arrows3}{"5B}
+\stix@MathSymbol{\circledrightdot}          {\mathord}{arrows3}{"5C}
+\stix@MathSymbol{\circledtwodots}           {\mathord}{arrows3}{"5D}
+\stix@MathSymbol{\blackcircledrightdot}     {\mathord}{arrows3}{"5E}
+\stix@MathSymbol{\blackcircledtwodots}      {\mathord}{arrows3}{"5F}
+\stix@MathSymbol{\Hermaphrodite}            {\mathord}{arrows3}{"60}
+
+\stix@MathSymbol{\mdwhtcircle}              {\mathord}{arrows3}{"7D}
+\stix@MathSymbol{\mdblkcircle}              {\mathord}{arrows3}{"7E}
+
+\stix@MathSymbol{\mdsmwhtcircle}            {\mathord}{arrows3}{"80}
+\stix@MathSymbol{\neuter}                   {\mathord}{arrows3}{"81}
+\stix@MathSymbol{\checkmarkmath}            {\mathord}{arrows3}{"82}
+\stix@MathSymbol{\varstar}                  {\mathord}{arrows3}{"85}
+\stix@MathSymbol{\dingasterisk}             {\mathord}{arrows3}{"86}
+\stix@MathSymbol{\squareulblack}            {\mathord}{arrows3}{"88}
+\stix@MathSymbol{\squarelrblack}            {\mathord}{arrows3}{"89}
+\stix@MathSymbol{\boxbar}                   {\mathbin}{arrows3}{"8A}
+\stix@MathSymbol{\trianglecdot}             {\mathord}{arrows3}{"8B}
+\stix@MathSymbol{\triangleleftblack}        {\mathord}{arrows3}{"8C}
+\stix@MathSymbol{\trianglerightblack}       {\mathord}{arrows3}{"8D}
+\stix@MathSymbol{\lgwhtcircle}              {\mathord}{arrows3}{"8E}
+\stix@MathSymbol{\squareulquad}             {\mathord}{arrows3}{"8F}
+
+\stix@MathSymbol{\squarellquad}             {\mathord}{arrows3}{"90}
+\stix@MathSymbol{\squarelrquad}             {\mathord}{arrows3}{"91}
+\stix@MathSymbol{\squareurquad}             {\mathord}{arrows3}{"92}
+\stix@MathSymbol{\circleulquad}             {\mathord}{arrows3}{"93}
+\stix@MathSymbol{\circlellquad}             {\mathord}{arrows3}{"94}
+\stix@MathSymbol{\circlelrquad}             {\mathord}{arrows3}{"95}
+\stix@MathSymbol{\circleurquad}             {\mathord}{arrows3}{"96}
+\stix@MathSymbol{\ultriangle}               {\mathord}{arrows3}{"97}
+\stix@MathSymbol{\urtriangle}               {\mathord}{arrows3}{"98}
+\stix@MathSymbol{\lltriangle}               {\mathord}{arrows3}{"99}
+\stix@MathSymbol{\mdwhtsquare}              {\mathord}{arrows3}{"9A}
+\stix@MathSymbol{\mdblksquare}              {\mathord}{arrows3}{"9B}
+\stix@MathSymbol{\mdsmwhtsquare}            {\mathord}{arrows3}{"9C}
+\stix@MathSymbol{\mdsmblksquare}            {\mathord}{arrows3}{"9D}
+\stix@MathSymbol{\lrtriangle}               {\mathord}{arrows3}{"9E}
+\stix@MathSymbol{\bigstar}                  {\mathord}{arrows3}{"9F}
+
+\stix@MathSymbol{\bigwhitestar}             {\mathord}{arrows3}{"A0}
+\stix@MathSymbol{\dottimes}                 {\mathbin}{arrows3}{"A1}
+\stix@MathSymbol{\timesbar}                 {\mathbin}{arrows3}{"A2}
+\stix@MathSymbol{\btimes}                   {\mathbin}{arrows3}{"A3}
+\stix@MathSymbol{\smashtimes}               {\mathbin}{arrows3}{"A4}
+\stix@MathSymbol{\otimeslhrim}              {\mathbin}{arrows3}{"A5}
+\stix@MathSymbol{\otimesrhrim}              {\mathbin}{arrows3}{"A6}
+\stix@MathSymbol{\otimeshat}                {\mathbin}{arrows3}{"A7}
+\stix@MathSymbol{\Otimes}                   {\mathbin}{arrows3}{"A8}
+\stix@MathSymbol{\odiv}                     {\mathbin}{arrows3}{"A9}
+\stix@MathSymbol{\triangleplus}             {\mathbin}{arrows3}{"AA}
+\stix@MathSymbol{\triangleminus}            {\mathbin}{arrows3}{"AB}
+\stix@MathSymbol{\triangletimes}            {\mathbin}{arrows3}{"AC}
+\stix@MathSymbol{\intprod}                  {\mathbin}{arrows3}{"AD}
+\stix@MathSymbol{\intprodr}                 {\mathbin}{arrows3}{"AE}
+\stix@MathSymbol{\fcmp}                     {\mathbin}{arrows3}{"AF}
+
+\stix@MathSymbol{\amalg}                    {\mathbin}{arrows3}{"B0}
+\stix@MathSymbol{\capdot}                   {\mathbin}{arrows3}{"B1}
+\stix@MathSymbol{\uminus}                   {\mathbin}{arrows3}{"B2}
+\stix@MathSymbol{\barcup}                   {\mathbin}{arrows3}{"B3}
+\stix@MathSymbol{\barcap}                   {\mathbin}{arrows3}{"B4}
+\stix@MathSymbol{\capwedge}                 {\mathbin}{arrows3}{"B5}
+\stix@MathSymbol{\cupvee}                   {\mathbin}{arrows3}{"B6}
+\stix@MathSymbol{\cupovercap}               {\mathbin}{arrows3}{"B7}
+\stix@MathSymbol{\capovercup}               {\mathbin}{arrows3}{"B8}
+\stix@MathSymbol{\cupbarcap}                {\mathbin}{arrows3}{"B9}
+\stix@MathSymbol{\neg}                      {\mathord}{operators}{"9B} \let\lnot=\neg
+\stix@MathSymbol{\cdotp}                    {\mathbin}{operators}{"9C} \let\centerdot=\cdotp
+\stix@MathSymbol{\times}                    {\mathbin}{operators}{"9D}
+\stix@MathSymbol{\preceq}                   {\mathrel}{operators}{"9E}
+\stix@MathSymbol{\div}                      {\mathbin}{operators}{"9F}
+
+\stix@MathSymbol{\Zbar}                     {\mathord}{operators}{"A0}
+\stix@MathSymbol{\notchar}                  {\mathrel}{operators}{"A1}
+\stix@MathSymbol{\upbackepsilon}            {\mathord}{operators}{"A2}
+\stix@MathSymbol{\dagger}                   {\mathbin}{operators}{"A3}
+\stix@MathSymbol{\ddagger}                  {\mathbin}{operators}{"A4}
+\stix@MathSymbol{\smblkcircle}              {\mathbin}{operators}{"A5}
+\stix@MathSymbol{\enleadertwodots}          {\mathord}{operators}{"A6}
+\stix@MathSymbol{\unicodeellipsis}          {\mathord}{operators}{"A7} \def\mathellipsis{\mathinner{\unicodeellipsis}}
+\stix@MathSymbol{\prime}                    {\mathord}{operators}{"A8}
+\stix@MathSymbol{\dprime}                   {\mathord}{operators}{"A9}
+\stix@MathSymbol{\trprime}                  {\mathord}{operators}{"AA}
+\stix@MathSymbol{\backprime}                {\mathord}{operators}{"AB}
+\stix@MathSymbol{\backdprime}               {\mathord}{operators}{"AC}
+\stix@MathSymbol{\backtrprime}              {\mathord}{operators}{"AD}
+\stix@MathSymbol{\caretinsert}              {\mathord}{operators}{"AE}
+\stix@MathSymbol{\Exclam}                   {\mathord}{operators}{"AF}
+
+\stix@MathSymbol{\hyphenbullet}             {\mathord}{operators}{"B0}
+\stix@MathSymbol{\fracslash}                {\mathbin}{operators}{"B1}
+\stix@MathSymbol{\Question}                 {\mathord}{operators}{"B2}
+\stix@MathSymbol{\closure}                  {\mathrel}{operators}{"B3}
+\stix@MathSymbol{\qprime}                   {\mathord}{operators}{"B4}
+\stix@MathSymbol{\vertoverlay}              {\mathrel}{operators}{"B5}
+\stix@MathSymbol{\enclosecircle}            {\mathord}{operators}{"B6}
+\stix@MathSymbol{\enclosesquare}            {\mathord}{operators}{"B7}
+\stix@MathSymbol{\enclosediamond}           {\mathord}{operators}{"B8}
+\stix@MathSymbol{\enclosetriangle}          {\mathord}{operators}{"B9}
+\stix@MathSymbol{\Eulerconst}               {\mathord}{operators}{"BA}
+\stix@MathSymbol{\mho}                      {\mathord}{operators}{"BB}
+\stix@MathSymbol{\turnediota}               {\mathord}{operators}{"BC}
+\stix@MathSymbol{\Angstrom}                 {\mathord}{operators}{"BD}
+\stix@MathSymbol{\Finv}                     {\mathord}{operators}{"BE}
+\stix@MathSymbol{\Game}                     {\mathord}{operators}{"BF}
+
+\stix@MathSymbol{\sansLturned}              {\mathord}{operators}{"C0}
+\stix@MathSymbol{\sansLmirrored}            {\mathord}{operators}{"C1}
+\stix@MathSymbol{\Yup}                      {\mathord}{operators}{"C2}
+\stix@MathSymbol{\PropertyLine}             {\mathord}{operators}{"C3}
+\stix@MathSymbol{\upand}                    {\mathbin}{operators}{"C4}
+\stix@MathSymbol{\forall}                   {\mathord}{operators}{"C5}
+\stix@MathSymbol{\complement}               {\mathord}{operators}{"C6}
+\stix@MathSymbol{\exists}                   {\mathord}{operators}{"C7}
+\stix@MathSymbol{\nexists}                  {\mathord}{operators}{"C8}
+\stix@MathSymbol{\varnothing}               {\mathord}{operators}{"C9}
+\stix@MathSymbol{\increment}                {\mathord}{operators}{"CA}
+\stix@MathSymbol{\in}                       {\mathrel}{operators}{"CB}
+\stix@MathSymbol{\notin}                    {\mathrel}{operators}{"CC}
+\stix@MathSymbol{\smallin}                  {\mathrel}{operators}{"CD}
+\stix@MathSymbol{\ni}                       {\mathrel}{operators}{"CE} \let\owns=\ni
+\stix@MathSymbol{\nni}                      {\mathrel}{operators}{"CF}
+
+\stix@MathSymbol{\smallni}                  {\mathrel}{operators}{"D0}
+\stix@MathSymbol{\QED}                      {\mathord}{operators}{"D1}
+\stix@MathSymbol{\dotplus}                  {\mathbin}{operators}{"D2}
+\stix@MathSymbol{\succeq}                   {\mathrel}{operators}{"D3}
+\stix@MathSymbol{\smallsetminus}            {\mathbin}{operators}{"D4}
+\stix@MathSymbol{\vysmwhtcircle}            {\mathbin}{operators}{"D5}
+\stix@MathSymbol{\vysmblkcircle}            {\mathbin}{operators}{"D6} \let\bullet=\vysmblkcircle
+\stix@MathSymbol{\propto}                   {\mathrel}{operators}{"D7}
+\stix@MathSymbol{\infty}                    {\mathord}{operators}{"D8}
+\stix@MathSymbol{\rightangle}               {\mathord}{operators}{"D9}
+\stix@MathSymbol{\angle}                    {\mathord}{operators}{"DA}
+\stix@MathSymbol{\measuredangle}            {\mathord}{operators}{"DB}
+\stix@MathSymbol{\sphericalangle}           {\mathord}{operators}{"DC}
+\stix@MathSymbol{\mid}                      {\mathrel}{operators}{"DD}
+\stix@MathSymbol{\nmid}                     {\mathrel}{operators}{"DE}
+\stix@MathSymbol{\parallel}                 {\mathrel}{operators}{"DF}
+
+\stix@MathSymbol{\nparallel}                {\mathrel}{operators}{"E0}
+\stix@MathSymbol{\wedge}                    {\mathbin}{operators}{"E1} \let\land=\wedge
+\stix@MathSymbol{\vee}                      {\mathbin}{operators}{"E2} \let\lor=\vee
+\stix@MathSymbol{\cap}                      {\mathbin}{operators}{"E3}
+\stix@MathSymbol{\cup}                      {\mathbin}{operators}{"E4}
+\stix@MathSymbol{\therefore}                {\mathord}{operators}{"E5}
+\stix@MathSymbol{\because}                  {\mathord}{operators}{"E6}
+\stix@MathSymbol{\emptyset}                 {\mathord}{operators}{"E7}
+\stix@MathSymbol{\Colon}                    {\mathrel}{operators}{"E8}
+\stix@MathSymbol{\dotminus}                 {\mathbin}{operators}{"E9}
+\stix@MathSymbol{\dashcolon}                {\mathrel}{operators}{"EA}
+\stix@MathSymbol{\dotsminusdots}            {\mathrel}{operators}{"EB}
+\stix@MathSymbol{\kernelcontraction}        {\mathrel}{operators}{"EC}
+\stix@MathSymbol{\sim}                      {\mathrel}{operators}{"ED} \stix@MathSymbol{\thicksim}{\mathrel}{bold-operators}{"ED}
+\stix@MathSymbol{\backsim}                  {\mathrel}{operators}{"EE}
+\stix@MathSymbol{\invlazys}                 {\mathbin}{operators}{"EF}
+
+\stix@MathSymbol{\sinewave}                 {\mathord}{operators}{"F0}
+\stix@MathSymbol{\wr}                       {\mathbin}{operators}{"F1}
+\stix@MathSymbol{\nsim}                     {\mathrel}{operators}{"F2}
+\stix@MathSymbol{\eqsim}                    {\mathrel}{operators}{"F3}
+\stix@MathSymbol{\simeq}                    {\mathrel}{operators}{"F4}
+\stix@MathSymbol{\nsime}                    {\mathrel}{operators}{"F5}
+\stix@MathSymbol{\cong}                     {\mathrel}{operators}{"F6}
+\stix@MathSymbol{\simneqq}                  {\mathrel}{operators}{"F7}
+\stix@MathSymbol{\ncong}                    {\mathrel}{operators}{"F8}
+\stix@MathSymbol{\approx}                   {\mathrel}{operators}{"F9} \stix@MathSymbol{\thickapprox}{\mathrel}{bold-operators}{"F9}
+\stix@MathSymbol{\napprox}                  {\mathrel}{operators}{"FA}
+\stix@MathSymbol{\approxeq}                 {\mathrel}{operators}{"FB}
+\stix@MathSymbol{\approxident}              {\mathrel}{operators}{"FC}
+\stix@MathSymbol{\backcong}                 {\mathrel}{operators}{"FD}
+\stix@MathSymbol{\asymp}                    {\mathrel}{operators}{"FE}
+\stix@MathSymbol{\Bumpeq}                   {\mathrel}{operators}{"FF}
+
+\stix@MathSymbol{\bumpeq}                   {\mathrel}{integrals}{"80}
+\stix@MathSymbol{\doteq}                    {\mathrel}{integrals}{"81}
+\stix@MathSymbol{\Doteq}                    {\mathrel}{integrals}{"82}
+        \let\doteqdot=\Doteq
+\stix@MathSymbol{\fallingdotseq}            {\mathrel}{integrals}{"83}
+\stix@MathSymbol{\risingdotseq}             {\mathrel}{integrals}{"84}
+\stix@MathSymbol{\coloneq}                  {\mathrel}{integrals}{"85}
+\stix@MathSymbol{\eqcolon}                  {\mathrel}{integrals}{"86}
+\stix@MathSymbol{\eqcirc}                   {\mathrel}{integrals}{"87}
+\stix@MathSymbol{\circeq}                   {\mathrel}{integrals}{"88}
+\stix@MathSymbol{\arceq}                    {\mathrel}{integrals}{"89}
+\stix@MathSymbol{\wedgeq}                   {\mathrel}{integrals}{"8A}
+\stix@MathSymbol{\veeeq}                    {\mathrel}{integrals}{"8B}
+\stix@MathSymbol{\stareq}                   {\mathrel}{integrals}{"8C}
+\stix@MathSymbol{\triangleq}                {\mathrel}{integrals}{"8D}
+\stix@MathSymbol{\eqdef}                    {\mathrel}{integrals}{"8E}
+\stix@MathSymbol{\measeq}                   {\mathrel}{integrals}{"8F}
+\stix@MathSymbol{\questeq}                  {\mathrel}{integrals}{"90}
+\stix@MathSymbol{\ne}                       {\mathrel}{integrals}{"91}
+        \let\neq=\ne
+\stix@MathSymbol{\equiv}                    {\mathrel}{integrals}{"92}
+\stix@MathSymbol{\nequiv}                   {\mathrel}{integrals}{"93}
+\stix@MathSymbol{\Equiv}                    {\mathrel}{integrals}{"65}
+\stix@MathSymbol{\leq}                      {\mathrel}{integrals}{"66}
+        \let\le=\leq
+\stix@MathSymbol{\geq}                      {\mathrel}{integrals}{"67}
+        \let\ge=\geq
+\stix@MathSymbol{\leqq}                     {\mathrel}{integrals}{"68}
+\stix@MathSymbol{\geqq}                     {\mathrel}{integrals}{"69}
+\stix@MathSymbol{\lneqq}                    {\mathrel}{letters}{"40}
+\stix@MathSymbol{\gneqq}                    {\mathrel}{letters}{"7D}
+\stix@MathSymbol{\ll}                       {\mathrel}{letters}{"7E}
+\stix@MathSymbol{\gg}                       {\mathrel}{letters}{"B8}
+\stix@MathSymbol{\between}                  {\mathrel}{letters}{"B9}
+\stix@MathSymbol{\nasymp}                   {\mathrel}{letters}{"BA}
+\stix@MathSymbol{\nless}                    {\mathrel}{letters}{"BB}
+\stix@MathSymbol{\ngtr}                     {\mathrel}{letters}{"BC}
+\stix@MathSymbol{\nleq}                     {\mathrel}{letters}{"BD}
+\stix@MathSymbol{\ngeq}                     {\mathrel}{letters}{"BE}
+\stix@MathSymbol{\lesssim}                  {\mathrel}{letters}{"BF}
+\stix@MathSymbol{\gtrsim}                   {\mathrel}{letters}{"C0}
+\stix@MathSymbol{\nlesssim}                 {\mathrel}{letters}{"C1}
+\stix@MathSymbol{\ngtrsim}                  {\mathrel}{letters}{"C2}
+\stix@MathSymbol{\lessgtr}                  {\mathrel}{letters}{"C3}
+\stix@MathSymbol{\gtrless}                  {\mathrel}{letters}{"C4}
+\stix@MathSymbol{\nlessgtr}                 {\mathrel}{letters}{"C5}
+\stix@MathSymbol{\ngtrless}                 {\mathrel}{letters}{"C6}
+\stix@MathSymbol{\prec}                     {\mathrel}{letters}{"C7}
+\stix@MathSymbol{\succ}                     {\mathrel}{letters}{"C8}
+\stix@MathSymbol{\preccurlyeq}              {\mathrel}{letters}{"C9}
+\stix@MathSymbol{\succcurlyeq}              {\mathrel}{letters}{"CA}
+\stix@MathSymbol{\precsim}                  {\mathrel}{letters}{"CB}
+\stix@MathSymbol{\succsim}                  {\mathrel}{letters}{"CC}
+\stix@MathSymbol{\nprec}                    {\mathrel}{letters}{"CD}
+\stix@MathSymbol{\nsucc}                    {\mathrel}{letters}{"CE}
+\stix@MathSymbol{\subset}                   {\mathrel}{letters}{"CF}
+\stix@MathSymbol{\supset}                   {\mathrel}{letters}{"D0}
+\stix@MathSymbol{\nsubset}                  {\mathrel}{letters}{"D1}
+\stix@MathSymbol{\nsupset}                  {\mathrel}{letters}{"D2}
+\stix@MathSymbol{\subseteq}                 {\mathrel}{letters}{"D3}
+\stix@MathSymbol{\supseteq}                 {\mathrel}{letters}{"D4}
+\stix@MathSymbol{\nsubseteq}                {\mathrel}{letters}{"D5}
+\stix@MathSymbol{\nsupseteq}                {\mathrel}{letters}{"D6}
+\stix@MathSymbol{\subsetneq}                {\mathrel}{letters}{"D7}
+\stix@MathSymbol{\supsetneq}                {\mathrel}{letters}{"D8}
+\stix@MathSymbol{\cupleftarrow}             {\mathbin}{letters}{"D9}
+\stix@MathSymbol{\cupdot}                   {\mathbin}{letters}{"DA}
+\stix@MathSymbol{\uplus}                    {\mathbin}{letters}{"DB}
+\stix@MathSymbol{\sqsubset}                 {\mathrel}{letters}{"DC}
+\stix@MathSymbol{\sqsupset}                 {\mathrel}{letters}{"DD}
+\stix@MathSymbol{\sqsubseteq}               {\mathrel}{letters}{"DE}
+\stix@MathSymbol{\sqsupseteq}               {\mathrel}{letters}{"DF}
+\stix@MathSymbol{\sqcap}                    {\mathbin}{letters}{"E0}
+\stix@MathSymbol{\sqcup}                    {\mathbin}{letters}{"E1}
+\stix@MathSymbol{\oplus}                    {\mathbin}{letters}{"E2}
+\stix@MathSymbol{\ominus}                   {\mathbin}{letters}{"E3}
+\stix@MathSymbol{\otimes}                   {\mathbin}{letters}{"E4}
+\stix@MathSymbol{\oslash}                   {\mathbin}{letters}{"E5}
+\stix@MathSymbol{\odot}                     {\mathbin}{letters}{"E6}
+\stix@MathSymbol{\circledcirc}              {\mathbin}{letters}{"E7}
+\stix@MathSymbol{\circledast}               {\mathbin}{letters}{"E8}
+\stix@MathSymbol{\circledequal}             {\mathbin}{letters}{"E9}
+\stix@MathSymbol{\circleddash}              {\mathbin}{letters}{"EA}
+\stix@MathSymbol{\boxplus}                  {\mathbin}{letters}{"EB}
+\stix@MathSymbol{\boxminus}                 {\mathbin}{letters}{"EC}
+\stix@MathSymbol{\boxtimes}                 {\mathbin}{letters}{"ED}
+\stix@MathSymbol{\boxdot}                   {\mathbin}{letters}{"EE}
+\stix@MathSymbol{\vdash}                    {\mathrel}{letters}{"EF}
+\stix@MathSymbol{\dashv}                    {\mathrel}{letters}{"F0}
+\stix@MathSymbol{\top}                      {\mathord}{letters}{"F1}
+\stix@MathSymbol{\bot}                      {\mathord}{letters}{"F2}
+\stix@MathSymbol{\assert}                   {\mathrel}{letters}{"F3}
+\stix@MathSymbol{\models}                   {\mathrel}{letters}{"F4}
+\stix@MathSymbol{\vDash}                    {\mathrel}{letters}{"F5}
+\stix@MathSymbol{\Vdash}                    {\mathrel}{letters}{"F6}
+\stix@MathSymbol{\Vvdash}                   {\mathrel}{letters}{"F7}
+\stix@MathSymbol{\VDash}                    {\mathrel}{letters}{"F8}
+\stix@MathSymbol{\nvdash}                   {\mathrel}{letters}{"F9}
+\stix@MathSymbol{\nvDash}                   {\mathrel}{letters}{"FA}
+\stix@MathSymbol{\nVdash}                   {\mathrel}{letters}{"FB}
+\stix@MathSymbol{\nVDash}                   {\mathrel}{letters}{"FC}
+\stix@MathSymbol{\prurel}                   {\mathrel}{letters}{"FD}
+\stix@MathSymbol{\scurel}                   {\mathrel}{letters}{"FE}
+\stix@MathSymbol{\trianglelefteq}           {\mathrel}{letters}{"FF}
+\stix@MathSymbol{\unlhd}                    {\mathbin}{letters}{"FF}
+\stix@MathSymbol{\trianglerighteq}          {\mathrel}{symbols}{"00}
+\stix@MathSymbol{\unrhd}                    {\mathbin}{symbols}{"00}
+\stix@MathSymbol{\origof}                   {\mathrel}{symbols}{"01}
+\stix@MathSymbol{\imageof}                  {\mathrel}{symbols}{"02}
+\stix@MathSymbol{\multimap}                 {\mathrel}{symbols}{"03}
+\stix@MathSymbol{\hermitmatrix}             {\mathord}{symbols}{"04}
+\stix@MathSymbol{\intercal}                 {\mathbin}{symbols}{"05}
+\stix@MathSymbol{\veebar}                   {\mathbin}{symbols}{"06}
+\stix@MathSymbol{\barwedge}                 {\mathbin}{symbols}{"07}
+\stix@MathSymbol{\barvee}                   {\mathbin}{symbols}{"08}
+\stix@MathSymbol{\measuredrightangle}       {\mathord}{symbols}{"09}
+\stix@MathSymbol{\varlrtriangle}            {\mathord}{symbols}{"0A}
+\stix@MathSymbol{\smwhtdiamond}             {\mathbin}{symbols}{"0B}
+        \let\diamond=\smwhtdiamond
+\stix@MathSymbol{\cdot}                     {\mathbin}{symbols}{"0C}
+\stix@MathSymbol{\divideontimes}            {\mathbin}{symbols}{"0D}
+\stix@MathSymbol{\bowtie}                   {\mathrel}{symbols}{"0E}
+\stix@MathSymbol{\ltimes}                   {\mathbin}{symbols}{"0F}
+\stix@MathSymbol{\rtimes}                   {\mathbin}{symbols}{"10}
+\stix@MathSymbol{\leftthreetimes}           {\mathbin}{symbols}{"11}
+\stix@MathSymbol{\rightthreetimes}          {\mathbin}{symbols}{"12}
+\stix@MathSymbol{\backsimeq}                {\mathrel}{symbols}{"13}
+\stix@MathSymbol{\curlyvee}                 {\mathbin}{symbols}{"14}
+\stix@MathSymbol{\curlywedge}               {\mathbin}{symbols}{"15}
+\stix@MathSymbol{\Subset}                   {\mathrel}{symbols}{"16}
+\stix@MathSymbol{\Supset}                   {\mathrel}{symbols}{"17}
+\stix@MathSymbol{\Cap}                      {\mathbin}{symbols}{"18}
+        \let\doublecap=\Cap
+\stix@MathSymbol{\Cup}                      {\mathbin}{symbols}{"19}
+        \let\doublecup=\Cup
+\stix@MathSymbol{\pitchfork}                {\mathrel}{symbols}{"1A}
+\stix@MathSymbol{\equalparallel}            {\mathrel}{symbols}{"1B}
+\stix@MathSymbol{\lessdot}                  {\mathrel}{symbols}{"1C}
+\stix@MathSymbol{\gtrdot}                   {\mathrel}{symbols}{"1D}
+\stix@MathSymbol{\lll}                      {\mathrel}{symbols}{"1E}
+        \let\llless=\lll
+\stix@MathSymbol{\ggg}                      {\mathrel}{symbols}{"1F}
+        \let\gggtr=\ggg
+\stix@MathSymbol{\lesseqgtr}                {\mathrel}{symbols}{"20}
+\stix@MathSymbol{\gtreqless}                {\mathrel}{symbols}{"21}
+\stix@MathSymbol{\eqless}                   {\mathrel}{symbols}{"22}
+\stix@MathSymbol{\eqgtr}                    {\mathrel}{symbols}{"23}
+\stix@MathSymbol{\curlyeqprec}              {\mathrel}{symbols}{"24}
+\stix@MathSymbol{\curlyeqsucc}              {\mathrel}{symbols}{"25}
+\stix@MathSymbol{\npreccurlyeq}             {\mathrel}{symbols}{"26}
+\stix@MathSymbol{\nsucccurlyeq}             {\mathrel}{symbols}{"27}
+\stix@MathSymbol{\nsqsubseteq}              {\mathrel}{symbols}{"28}
+\stix@MathSymbol{\nsqsupseteq}              {\mathrel}{symbols}{"29}
+\stix@MathSymbol{\sqsubsetneq}              {\mathrel}{symbols}{"2A}
+\stix@MathSymbol{\sqsupsetneq}              {\mathrel}{symbols}{"2B}
+\stix@MathSymbol{\lnsim}                    {\mathrel}{symbols}{"2C}
+\stix@MathSymbol{\gnsim}                    {\mathrel}{symbols}{"2D}
+\stix@MathSymbol{\precnsim}                 {\mathrel}{symbols}{"2E}
+\stix@MathSymbol{\succnsim}                 {\mathrel}{symbols}{"2F}
+\stix@MathSymbol{\nvartriangleleft}         {\mathrel}{symbols}{"30}
+\stix@MathSymbol{\nvartriangleright}        {\mathrel}{symbols}{"31}
+\stix@MathSymbol{\ntrianglelefteq}          {\mathrel}{symbols}{"32}
+\stix@MathSymbol{\ntrianglerighteq}         {\mathrel}{symbols}{"33}
+\stix@MathSymbol{\vdotsmath}                {\mathrel}{symbols}{"34}
+        \DeclareRobustCommand\vdots{%
+                \ifmmode\vdotsmath\else%
+                {\usefont{LS1}{stixscr}{\f@series}{n}\char"34}%
+                \fi}
+\stix@MathSymbol{\unicodecdots}             {\mathord}{symbols}{"35} \let\@cdots=\unicodecdots \DeclareRobustCommand\cdots{\mathinner{\unicodecdots}}
+\stix@MathSymbol{\adots}                    {\mathrel}{symbols}{"36}
+\stix@MathSymbol{\ddots}                    {\mathrel}{symbols}{"37}
+\stix@MathSymbol{\disin}                    {\mathrel}{symbols}{"38}
+\stix@MathSymbol{\varisins}                 {\mathrel}{symbols}{"39}
+\stix@MathSymbol{\isins}                    {\mathrel}{symbols}{"3A}
+\stix@MathSymbol{\isindot}                  {\mathrel}{symbols}{"3B}
+\stix@MathSymbol{\varisinobar}              {\mathrel}{symbols}{"3C}
+\stix@MathSymbol{\isinobar}                 {\mathrel}{symbols}{"3D}
+\stix@MathSymbol{\isinvb}                   {\mathrel}{symbols}{"3E}
+\stix@MathSymbol{\isinE}                    {\mathrel}{symbols}{"3F}
+\stix@MathSymbol{\nisd}                     {\mathrel}{symbols}{"40}
+\stix@MathSymbol{\varnis}                   {\mathrel}{symbols}{"5B}
+\stix@MathSymbol{\nis}                      {\mathrel}{symbols}{"5C}
+\stix@MathSymbol{\varniobar}                {\mathrel}{symbols}{"5D}
+\stix@MathSymbol{\niobar}                   {\mathrel}{symbols}{"5E}
+\stix@MathSymbol{\bagmember}                {\mathrel}{symbols}{"5F}
+\stix@MathSymbol{\diameter}                 {\mathord}{symbols}{"60}
+\stix@MathSymbol{\house}                    {\mathord}{symbols}{"7E}
+
+\stix@MathSymbol{\varbarwedge}              {\mathbin}{symbols}{"99}
+\stix@MathSymbol{\vardoublebarwedge}        {\mathbin}{symbols}{"9A}
+\stix@MathSymbol{\invnot}                   {\mathord}{symbols}{"9B}
+\stix@MathSymbol{\sqlozenge}                {\mathord}{symbols}{"9C}
+\stix@MathSymbol{\profline}                 {\mathord}{symbols}{"9D}
+\stix@MathSymbol{\profsurf}                 {\mathord}{symbols}{"9E}
+\stix@MathSymbol{\viewdata}                 {\mathord}{symbols}{"9F}
+
+\stix@MathSymbol{\turnednot}                {\mathord}{symbols}{"A0}
+\stix@MathSymbol{\ulcorner}                {\mathopen}{symbols}{"A1}
+\stix@MathSymbol{\urcorner}               {\mathclose}{symbols}{"A2}
+\stix@MathSymbol{\llcorner}                {\mathopen}{symbols}{"A3}
+\stix@MathSymbol{\lrcorner}               {\mathclose}{symbols}{"A4}
+\stix@MathSymbol{\varhexagonlrbonds}        {\mathord}{symbols}{"A5}
+\stix@MathSymbol{\conictaper}               {\mathord}{symbols}{"A6}
+\stix@MathSymbol{\topbot}                   {\mathord}{symbols}{"A7}
+\stix@MathSymbol{\obar}                     {\mathbin}{symbols}{"A8}
+\stix@MathSymbol{\APLnotslash}              {\mathrel}{symbols}{"A9}
+\stix@MathSymbol{\APLnotbackslash}          {\mathord}{symbols}{"AA}
+\stix@MathSymbol{\APLboxupcaret}            {\mathord}{symbols}{"AB}
+\stix@MathSymbol{\APLboxquestion}           {\mathord}{symbols}{"AC}
+\stix@MathSymbol{\rangledownzigzagarrow}    {\mathord}{symbols}{"AD}
+\stix@MathSymbol{\hexagon}                  {\mathord}{symbols}{"AE}
+\stix@MathSymbol{\varcarriagereturn}        {\mathord}{symbols}{"AF}
+
+\stix@MathSymbol{\trapezium}                {\mathord}{symbols}{"B0}
+\stix@MathSymbol{\benzenr}                  {\mathord}{symbols}{"B1}
+\stix@MathSymbol{\strns}                    {\mathord}{symbols}{"B2}
+\stix@MathSymbol{\fltns}                    {\mathord}{symbols}{"B3}
+\stix@MathSymbol{\accurrent}                {\mathord}{symbols}{"B4}
+\stix@MathSymbol{\elinters}                 {\mathord}{symbols}{"B5}
+\stix@MathSymbol{\mathvisiblespace}         {\mathord}{symbols}{"B6}
+\stix@MathSymbol{\mdlgblksquare}            {\mathord}{symbols}{"B7} \let\blacksquare=\mdlgblksquare
+\stix@MathSymbol{\mdlgwhtsquare}            {\mathord}{symbols}{"B8} \let\square=\mdlgwhtsquare \let\Box=\mdlgwhtsquare
+\stix@MathSymbol{\squoval}                  {\mathord}{symbols}{"B9}
+\stix@MathSymbol{\blackinwhitesquare}       {\mathord}{symbols}{"BA}
+\stix@MathSymbol{\squarehfill}              {\mathord}{symbols}{"BB}
+\stix@MathSymbol{\squarevfill}              {\mathord}{symbols}{"BC}
+\stix@MathSymbol{\squarehvfill}             {\mathord}{symbols}{"BD}
+\stix@MathSymbol{\squarenwsefill}           {\mathord}{symbols}{"BE}
+\stix@MathSymbol{\squareneswfill}           {\mathord}{symbols}{"BF}
+
+\stix@MathSymbol{\squarecrossfill}          {\mathord}{symbols}{"C0}
+\stix@MathSymbol{\smblksquare}              {\mathord}{symbols}{"C1}
+\stix@MathSymbol{\smwhtsquare}              {\mathord}{symbols}{"C2}
+\stix@MathSymbol{\hrectangleblack}          {\mathord}{symbols}{"C3}
+\stix@MathSymbol{\hrectangle}               {\mathord}{symbols}{"C4}
+\stix@MathSymbol{\vrectangleblack}          {\mathord}{symbols}{"C5}
+\stix@MathSymbol{\vrectangle}               {\mathord}{symbols}{"C6}
+\stix@MathSymbol{\parallelogramblack}       {\mathord}{symbols}{"C7}
+\stix@MathSymbol{\parallelogram}            {\mathord}{symbols}{"C8}
+\stix@MathSymbol{\bigblacktriangleup}       {\mathord}{symbols}{"C9}
+\stix@MathSymbol{\bigtriangleup}            {\mathbin}{symbols}{"CA} \let\varbigtriangleup=\bigtriangleup \let\triangle=\bigtriangleup
+\stix@MathSymbol{\blacktriangle}            {\mathord}{symbols}{"CB}
+\stix@MathSymbol{\vartriangle}              {\mathrel}{symbols}{"CC}
+\stix@MathSymbol{\blacktriangleright}       {\mathord}{symbols}{"CD}
+\stix@MathSymbol{\vartriangleright}         {\mathrel}{symbols}{"CE} \stix@MathSymbol{\rhd}{\mathbin}{symbols}{"CE}
+\stix@MathSymbol{\smallblacktriangleright}  {\mathord}{symbols}{"CF}
+
+\stix@MathSymbol{\smalltriangleright}       {\mathord}{symbols}{"D0}
+\stix@MathSymbol{\blackpointerright}        {\mathord}{symbols}{"D1}
+\stix@MathSymbol{\whitepointerright}        {\mathord}{symbols}{"D2}
+\stix@MathSymbol{\bigblacktriangledown}     {\mathord}{symbols}{"D3}
+\stix@MathSymbol{\bigtriangledown}          {\mathord}{symbols}{"D4} \let\varbigtriangledown=\bigtriangledown
+\stix@MathSymbol{\blacktriangledown}        {\mathord}{symbols}{"D5}
+\stix@MathSymbol{\triangledown}             {\mathord}{symbols}{"D6}
+\stix@MathSymbol{\blacktriangleleft}        {\mathord}{symbols}{"D7}
+\stix@MathSymbol{\vartriangleleft}          {\mathrel}{symbols}{"D8} \stix@MathSymbol{\lhd}{\mathbin}{symbols}{"D8}
+\stix@MathSymbol{\smallblacktriangleleft}   {\mathord}{symbols}{"D9}
+\stix@MathSymbol{\smalltriangleleft}        {\mathord}{symbols}{"DA}
+\stix@MathSymbol{\blackpointerleft}         {\mathord}{symbols}{"DB}
+\stix@MathSymbol{\whitepointerleft}         {\mathord}{symbols}{"DC}
+\stix@MathSymbol{\mdlgblkdiamond}           {\mathord}{symbols}{"DD}
+\stix@MathSymbol{\mdlgwhtdiamond}           {\mathord}{symbols}{"DE}
+\stix@MathSymbol{\blackinwhitediamond}      {\mathord}{symbols}{"DF}
+
+\stix@MathSymbol{\fisheye}                  {\mathord}{symbols}{"E0}
+\stix@MathSymbol{\mdlgwhtlozenge}           {\mathord}{symbols}{"E1} \let\lozenge=\mdlgwhtlozenge \let\Diamond=\mdlgwhtlozenge
+\stix@MathSymbol{\mdlgwhtcircle}            {\mathbin}{symbols}{"E2} \let\bigcirc=\mdlgwhtcircle
+\stix@MathSymbol{\dottedcircle}             {\mathord}{symbols}{"E3}
+\stix@MathSymbol{\circlevertfill}           {\mathord}{symbols}{"E4}
+\stix@MathSymbol{\bullseye}                 {\mathord}{symbols}{"E5}
+\stix@MathSymbol{\mdlgblkcircle}            {\mathord}{symbols}{"E6}
+\stix@MathSymbol{\circlelefthalfblack}      {\mathord}{symbols}{"E7}
+\stix@MathSymbol{\circlerighthalfblack}     {\mathord}{symbols}{"E8}
+\stix@MathSymbol{\circlebottomhalfblack}    {\mathord}{symbols}{"E9}
+\stix@MathSymbol{\circletophalfblack}       {\mathord}{symbols}{"EA}
+\stix@MathSymbol{\circleurquadblack}        {\mathord}{symbols}{"EB}
+\stix@MathSymbol{\blackcircleulquadwhite}   {\mathord}{symbols}{"EC}
+\stix@MathSymbol{\blacklefthalfcircle}      {\mathord}{symbols}{"ED}
+\stix@MathSymbol{\blackrighthalfcircle}     {\mathord}{symbols}{"EE}
+\stix@MathSymbol{\inversebullet}            {\mathord}{symbols}{"EF}
+
+\stix@MathSymbol{\inversewhitecircle}       {\mathord}{symbols}{"F0}
+\stix@MathSymbol{\invwhiteupperhalfcircle}  {\mathord}{symbols}{"F1}
+\stix@MathSymbol{\invwhitelowerhalfcircle}  {\mathord}{symbols}{"F2}
+\stix@MathSymbol{\ularc}                    {\mathord}{symbols}{"F3}
+\stix@MathSymbol{\urarc}                    {\mathord}{symbols}{"F4}
+\stix@MathSymbol{\lrarc}                    {\mathord}{symbols}{"F5}
+\stix@MathSymbol{\llarc}                    {\mathord}{symbols}{"F6}
+\stix@MathSymbol{\topsemicircle}            {\mathord}{symbols}{"F7}
+\stix@MathSymbol{\botsemicircle}            {\mathord}{symbols}{"F8}
+\stix@MathSymbol{\lrblacktriangle}          {\mathord}{symbols}{"F9}
+\stix@MathSymbol{\llblacktriangle}          {\mathord}{symbols}{"FA}
+\stix@MathSymbol{\ulblacktriangle}          {\mathord}{symbols}{"FB}
+\stix@MathSymbol{\urblacktriangle}          {\mathord}{symbols}{"FC}
+\stix@MathSymbol{\smwhtcircle}              {\mathord}{symbols}{"FD} \let\circ=\smwhtcircle
+\stix@MathSymbol{\squareleftblack}          {\mathord}{symbols}{"FE}
+\stix@MathSymbol{\squarerightblack}         {\mathord}{symbols}{"FF}
+\stix@MathSymbol{\acidfree}                 {\mathord}  {symbols2}{"00}
+\stix@MathSymbol{\draftingarrow}            {\mathord}  {symbols2}{"01}
+\stix@MathSymbol{\threedangle}              {\mathord}  {symbols2}{"02}
+\stix@MathSymbol{\whiteinwhitetriangle}     {\mathord}  {symbols2}{"03}
+\stix@MathSymbol{\perp}                     {\mathrel}  {symbols2}{"04}
+\stix@MathSymbol{\subsetcirc}               {\mathord}  {symbols2}{"05}
+\stix@MathSymbol{\supsetcirc}               {\mathord}  {symbols2}{"06}
+\stix@MathSymbol{\lbag}                     {\mathopen} {symbols2}{"07}
+\stix@MathSymbol{\rbag}                     {\mathclose}{symbols2}{"08}
+\stix@MathSymbol{\veedot}                   {\mathbin}  {symbols2}{"09}
+\stix@MathSymbol{\bsolhsub}                 {\mathrel}  {symbols2}{"0A}
+\stix@MathSymbol{\suphsol}                  {\mathrel}  {symbols2}{"0B}
+\stix@MathSymbol{\diamondcdot}              {\mathord}  {symbols2}{"0C}
+\stix@MathSymbol{\wedgedot}                 {\mathbin}  {symbols2}{"0D}
+\stix@MathSymbol{\upin}                     {\mathrel}  {symbols2}{"0E}
+\stix@MathSymbol{\pullback}                 {\mathrel}  {symbols2}{"0F}
+\stix@MathSymbol{\pushout}                  {\mathrel}  {symbols2}{"10}
+\stix@MathSymbol{\leftouterjoin}            {\mathop}   {symbols2}{"11}
+\stix@MathSymbol{\rightouterjoin}           {\mathop}   {symbols2}{"12}
+\stix@MathSymbol{\fullouterjoin}            {\mathop}   {symbols2}{"13}
+\stix@MathSymbol{\bigbot}                   {\mathop}   {symbols2}{"14}
+\stix@MathSymbol{\bigtop}                   {\mathop}   {symbols2}{"15}
+\stix@MathSymbol{\DashVDash}                {\mathrel}  {symbols2}{"16}
+\stix@MathSymbol{\dashVdash}                {\mathrel}  {symbols2}{"17}
+\stix@MathSymbol{\multimapinv}              {\mathrel}  {symbols2}{"18}
+\stix@MathSymbol{\vlongdash}                {\mathrel}  {symbols2}{"19}
+\stix@MathSymbol{\longdashv}                {\mathrel}  {symbols2}{"1A}
+\stix@MathSymbol{\cirbot}                   {\mathrel}  {symbols2}{"1B}
+\stix@MathSymbol{\lozengeminus}             {\mathbin}  {symbols2}{"1C}
+\stix@MathSymbol{\concavediamond}           {\mathbin}  {symbols2}{"1D}
+\stix@MathSymbol{\concavediamondtickleft}   {\mathbin}  {symbols2}{"1E}
+\stix@MathSymbol{\concavediamondtickright}  {\mathbin}  {symbols2}{"1F}
+\stix@MathSymbol{\whitesquaretickleft}      {\mathbin}  {symbols2}{"20}
+\stix@MathSymbol{\whitesquaretickright}     {\mathbin}  {symbols2}{"21}
+\stix@MathSymbol{\Lbrbrak}                  {\mathopen} {symbols2}{"22}
+\stix@MathSymbol{\Rbrbrak}                  {\mathclose}{symbols2}{"23}
+\stix@MathSymbol{\mdsmblkcircle}            {\mathord}  {symbols2}{"24}
+\stix@MathSymbol{\typecolon}                {\mathbin}  {symbols2}{"25}
+\stix@MathSymbol{\llparenthesis}            {\mathopen} {symbols2}{"26}
+\stix@MathSymbol{\rrparenthesis}            {\mathclose}{symbols2}{"27}
+\stix@MathSymbol{\llangle}                  {\mathopen} {symbols2}{"28}
+\stix@MathSymbol{\rrangle}                  {\mathclose}{symbols2}{"29}
+\stix@MathSymbol{\lbrackubar}               {\mathopen} {symbols2}{"2A}
+\stix@MathSymbol{\rbrackubar}               {\mathclose}{symbols2}{"2B}
+\stix@MathSymbol{\lbrackultick}             {\mathopen} {symbols2}{"2C}
+\stix@MathSymbol{\rbracklrtick}             {\mathclose}{symbols2}{"2D}
+\stix@MathSymbol{\lbracklltick}             {\mathopen} {symbols2}{"2E}
+\stix@MathSymbol{\rbrackurtick}             {\mathclose}{symbols2}{"2F}
+\stix@MathSymbol{\langledot}                {\mathopen} {symbols2}{"30}
+\stix@MathSymbol{\rangledot}                {\mathclose}{symbols2}{"31}
+\stix@MathSymbol{\lparenless}               {\mathopen} {symbols2}{"32}
+\stix@MathSymbol{\rparengtr}                {\mathclose}{symbols2}{"33}
+\stix@MathSymbol{\Lparengtr}                {\mathopen} {symbols2}{"34}
+\stix@MathSymbol{\Rparenless}               {\mathclose}{symbols2}{"35}
+\stix@MathSymbol{\lblkbrbrak}               {\mathopen} {symbols2}{"36}
+\stix@MathSymbol{\rblkbrbrak}               {\mathclose}{symbols2}{"37}
+\stix@MathSymbol{\fourvdots}                {\mathord}  {symbols2}{"38}
+\stix@MathSymbol{\vzigzag}                  {\mathord}  {symbols2}{"39}
+\stix@MathSymbol{\measuredangleleft}        {\mathord}  {symbols2}{"3A}
+\stix@MathSymbol{\rightanglesqr}            {\mathord}  {symbols2}{"3B}
+\stix@MathSymbol{\rightanglemdot}           {\mathord}  {symbols2}{"3C}
+\stix@MathSymbol{\angles}                   {\mathord}  {symbols2}{"3D}
+\stix@MathSymbol{\angdnr}                   {\mathord}  {symbols2}{"3E}
+\stix@MathSymbol{\gtlpar}                   {\mathord}  {symbols2}{"3F}
+\stix@MathSymbol{\sphericalangleup}         {\mathord}  {symbols2}{"40}
+\stix@MathSymbol{\turnangle}                {\mathord}  {symbols2}{"5B}
+\stix@MathSymbol{\revangle}                 {\mathord}  {symbols2}{"5C}
+\stix@MathSymbol{\angleubar}                {\mathord}  {symbols2}{"5D}
+\stix@MathSymbol{\revangleubar}             {\mathord}  {symbols2}{"5E}
+\stix@MathSymbol{\wideangledown}            {\mathord}  {symbols2}{"5F}
+\stix@MathSymbol{\wideangleup}              {\mathord}  {symbols2}{"60}
+\stix@MathSymbol{\measanglerutone}          {\mathord}  {symbols2}{"7D}
+\stix@MathSymbol{\measanglelutonw}          {\mathord}  {symbols2}{"7E}
+
+\stix@MathSymbol{\measanglerdtose}          {\mathord}  {symbols2}{"99}
+\stix@MathSymbol{\measangleldtosw}          {\mathord}  {symbols2}{"9A}
+\stix@MathSymbol{\measangleurtone}          {\mathord}  {symbols2}{"9B}
+\stix@MathSymbol{\measangleultonw}          {\mathord}  {symbols2}{"9C}
+\stix@MathSymbol{\measangledrtose}          {\mathord}  {symbols2}{"9D}
+\stix@MathSymbol{\measangledltosw}          {\mathord}  {symbols2}{"9E}
+\stix@MathSymbol{\revemptyset}              {\mathord}  {symbols2}{"9F}
+
+\stix@MathSymbol{\emptysetobar}             {\mathord}  {symbols2}{"A0}
+\stix@MathSymbol{\emptysetocirc}            {\mathord}  {symbols2}{"A1}
+\stix@MathSymbol{\emptysetoarr}             {\mathord}  {symbols2}{"A2}
+\stix@MathSymbol{\emptysetoarrl}            {\mathord}  {symbols2}{"A3}
+\stix@MathSymbol{\circlehbar}               {\mathbin}  {symbols2}{"A4}
+\stix@MathSymbol{\circledvert}              {\mathbin}  {symbols2}{"A5}
+\stix@MathSymbol{\circledparallel}          {\mathbin}  {symbols2}{"A6}
+\stix@MathSymbol{\obslash}                  {\mathbin}  {symbols2}{"A7}
+\stix@MathSymbol{\operp}                    {\mathbin}  {symbols2}{"A8}
+\stix@MathSymbol{\obot}                     {\mathord}  {symbols2}{"A9}
+\stix@MathSymbol{\olcross}                  {\mathord}  {symbols2}{"AA}
+\stix@MathSymbol{\odotslashdot}             {\mathord}  {symbols2}{"AB}
+\stix@MathSymbol{\uparrowoncircle}          {\mathord}  {symbols2}{"AC}
+\stix@MathSymbol{\circledwhitebullet}       {\mathord}  {symbols2}{"AD}
+\stix@MathSymbol{\circledbullet}            {\mathord}  {symbols2}{"AE}
+\stix@MathSymbol{\olessthan}                {\mathbin}  {symbols2}{"AF}
+
+\stix@MathSymbol{\ogreaterthan}             {\mathbin}  {symbols2}{"B0}
+\stix@MathSymbol{\cirscir}                  {\mathord}  {symbols2}{"B1}
+\stix@MathSymbol{\cirE}                     {\mathord}  {symbols2}{"B2}
+\stix@MathSymbol{\boxdiag}                  {\mathbin}  {symbols2}{"B3}
+\stix@MathSymbol{\boxbslash}                {\mathbin}  {symbols2}{"B4}
+\stix@MathSymbol{\boxast}                   {\mathbin}  {symbols2}{"B5}
+\stix@MathSymbol{\boxcircle}                {\mathbin}  {symbols2}{"B6}
+\stix@MathSymbol{\boxbox}                   {\mathbin}  {symbols2}{"B7}
+\stix@MathSymbol{\boxonbox}                 {\mathord}  {symbols2}{"B8}
+\stix@MathSymbol{\triangleodot}             {\mathord}  {symbols2}{"B9}
+\stix@MathSymbol{\triangleubar}             {\mathord}  {symbols2}{"BA}
+\stix@MathSymbol{\triangles}                {\mathord}  {symbols2}{"BB}
+\stix@MathSymbol{\triangleserifs}           {\mathbin}  {symbols2}{"BC}
+\stix@MathSymbol{\rtriltri}                 {\mathrel}  {symbols2}{"BD}
+\stix@MathSymbol{\ltrivb}                   {\mathrel}  {symbols2}{"BE}
+\stix@MathSymbol{\vbrtri}                   {\mathrel}  {symbols2}{"BF}
+
+\stix@MathSymbol{\lfbowtie}                 {\mathrel}  {symbols2}{"C0}
+\stix@MathSymbol{\rfbowtie}                 {\mathrel}  {symbols2}{"C1}
+\stix@MathSymbol{\fbowtie}                  {\mathrel}  {symbols2}{"C2}
+\stix@MathSymbol{\lftimes}                  {\mathrel}  {symbols2}{"C3}
+\stix@MathSymbol{\rftimes}                  {\mathrel}  {symbols2}{"C4}
+\stix@MathSymbol{\hourglass}                {\mathbin}  {symbols2}{"C5}
+\stix@MathSymbol{\blackhourglass}           {\mathbin}  {symbols2}{"C6}
+\stix@MathSymbol{\lvzigzag}                 {\mathopen} {symbols2}{"C7}
+\stix@MathSymbol{\rvzigzag}                 {\mathclose}{symbols2}{"C8}
+\stix@MathSymbol{\Lvzigzag}                 {\mathopen} {symbols2}{"C9}
+\stix@MathSymbol{\Rvzigzag}                 {\mathclose}{symbols2}{"CA}
+\stix@MathSymbol{\iinfin}                   {\mathord}  {symbols2}{"CB}
+\stix@MathSymbol{\tieinfty}                 {\mathord}  {symbols2}{"CC}
+\stix@MathSymbol{\nvinfty}                  {\mathord}  {symbols2}{"CD}
+\stix@MathSymbol{\dualmap}                  {\mathrel}  {symbols2}{"CE}
+\stix@MathSymbol{\laplac}                   {\mathord}  {symbols2}{"CF}
+
+\stix@MathSymbol{\lrtriangleeq}             {\mathrel}  {symbols2}{"D0}
+\stix@MathSymbol{\shuffle}                  {\mathbin}  {symbols2}{"D1}
+\stix@MathSymbol{\eparsl}                   {\mathrel}  {symbols2}{"D2}
+\stix@MathSymbol{\smeparsl}                 {\mathrel}  {symbols2}{"D3}
+\stix@MathSymbol{\eqvparsl}                 {\mathrel}  {symbols2}{"D4}
+\stix@MathSymbol{\gleichstark}              {\mathrel}  {symbols2}{"D5}
+\stix@MathSymbol{\thermod}                  {\mathord}  {symbols2}{"D6}
+\stix@MathSymbol{\downtriangleleftblack}    {\mathord}  {symbols2}{"D7}
+\stix@MathSymbol{\downtrianglerightblack}   {\mathord}  {symbols2}{"D8}
+\stix@MathSymbol{\blackdiamonddownarrow}    {\mathord}  {symbols2}{"D9}
+\stix@MathSymbol{\blacklozenge}             {\mathord}  {symbols2}{"DA} \stix@MathSymbol{\mdlgblklozenge}{\mathbin}{symbols2}{"DA}
+\stix@MathSymbol{\circledownarrow}          {\mathord}  {symbols2}{"DB}
+\stix@MathSymbol{\blackcircledownarrow}     {\mathord}  {symbols2}{"DC}
+\stix@MathSymbol{\errbarsquare}             {\mathord}  {symbols2}{"DD}
+\stix@MathSymbol{\errbarblacksquare}        {\mathord}  {symbols2}{"DE}
+\stix@MathSymbol{\errbardiamond}            {\mathord}  {symbols2}{"DF}
+
+\stix@MathSymbol{\errbarblackdiamond}       {\mathord}  {symbols2}{"E0}
+\stix@MathSymbol{\errbarcircle}             {\mathord}  {symbols2}{"E1}
+\stix@MathSymbol{\errbarblackcircle}        {\mathord}  {symbols2}{"E2}
+\stix@MathSymbol{\ruledelayed}              {\mathrel}  {symbols2}{"E3}
+\stix@MathSymbol{\setminus}                 {\mathbin}  {symbols2}{"E4}
+\stix@MathSymbol{\dsol}                     {\mathbin}  {symbols2}{"E5}
+\stix@MathSymbol{\rsolbar}                  {\mathbin}  {symbols2}{"E6}
+\stix@MathSymbol{\doubleplus}               {\mathbin}  {symbols2}{"E7}
+\stix@MathSymbol{\tripleplus}               {\mathbin}  {symbols2}{"E8}
+\stix@MathSymbol{\lcurvyangle}              {\mathopen} {symbols2}{"E9}
+\stix@MathSymbol{\rcurvyangle}              {\mathclose}{symbols2}{"EA}
+\stix@MathSymbol{\tplus}                    {\mathbin}  {symbols2}{"EB}
+\stix@MathSymbol{\tminus}                   {\mathbin}  {symbols2}{"EC}
+\stix@MathSymbol{\Join}                     {\mathop}   {symbols2}{"ED}
+\stix@MathSymbol{\bigtriangleleft}          {\mathop}   {symbols2}{"EE}
+\stix@MathSymbol{\zcmp}                     {\mathop}   {symbols2}{"EF}
+
+\stix@MathSymbol{\zpipe}                    {\mathop}   {symbols2}{"F0}
+\stix@MathSymbol{\zproject}                 {\mathop}   {symbols2}{"F1}
+\stix@MathSymbol{\ringplus}                 {\mathbin}  {symbols2}{"F2}
+\stix@MathSymbol{\plushat}                  {\mathbin}  {symbols2}{"F3}
+\stix@MathSymbol{\simplus}                  {\mathbin}  {symbols2}{"F4}
+\stix@MathSymbol{\plusdot}                  {\mathbin}  {symbols2}{"F5}
+\stix@MathSymbol{\plussim}                  {\mathbin}  {symbols2}{"F6}
+\stix@MathSymbol{\plussubtwo}               {\mathbin}  {symbols2}{"F7}
+\stix@MathSymbol{\plustrif}                 {\mathbin}  {symbols2}{"F8}
+\stix@MathSymbol{\commaminus}               {\mathbin}  {symbols2}{"F9}
+\stix@MathSymbol{\minusdot}                 {\mathbin}  {symbols2}{"FA}
+\stix@MathSymbol{\minusfdots}               {\mathbin}  {symbols2}{"FB}
+\stix@MathSymbol{\minusrdots}               {\mathbin}  {symbols2}{"FC}
+\stix@MathSymbol{\opluslhrim}               {\mathbin}  {symbols2}{"FD}
+\stix@MathSymbol{\oplusrhrim}               {\mathbin}  {symbols2}{"FE}
+\stix@MathSymbol{\vectimes}                 {\mathbin}  {symbols2}{"FF}
+\stix@MathSymbol{\succneq}                  {\mathrel}{symbols3}{"26}
+\stix@MathSymbol{\preceqq}                  {\mathrel}{symbols3}{"27}
+\stix@MathSymbol{\succeqq}                  {\mathrel}{symbols3}{"28}
+\stix@MathSymbol{\precneqq}                 {\mathrel}{symbols3}{"29}
+\stix@MathSymbol{\succneqq}                 {\mathrel}{symbols3}{"2A}
+\stix@MathSymbol{\precapprox}               {\mathrel}{symbols3}{"2B}
+\stix@MathSymbol{\succapprox}               {\mathrel}{symbols3}{"2C}
+\stix@MathSymbol{\precnapprox}              {\mathrel}{symbols3}{"2D}
+\stix@MathSymbol{\succnapprox}              {\mathrel}{symbols3}{"2E}
+\stix@MathSymbol{\Prec}                     {\mathrel}{symbols3}{"2F}
+\stix@MathSymbol{\Succ}                     {\mathrel}{symbols3}{"3A}
+\stix@MathSymbol{\subsetdot}                {\mathrel}{symbols3}{"3B}
+\stix@MathSymbol{\supsetdot}                {\mathrel}{symbols3}{"3C}
+\stix@MathSymbol{\subsetplus}               {\mathrel}{symbols3}{"3D}
+\stix@MathSymbol{\supsetplus}               {\mathrel}{symbols3}{"3E}
+\stix@MathSymbol{\submult}                  {\mathrel}{symbols3}{"3F}
+\stix@MathSymbol{\supmult}                  {\mathrel}{symbols3}{"40}
+\stix@MathSymbol{\subedot}                  {\mathrel}{symbols3}{"5B}
+\stix@MathSymbol{\supedot}                  {\mathrel}{symbols3}{"5C}
+\stix@MathSymbol{\subseteqq}                {\mathrel}{symbols3}{"5D}
+\stix@MathSymbol{\supseteqq}                {\mathrel}{symbols3}{"5E}
+\stix@MathSymbol{\subsim}                   {\mathrel}{symbols3}{"5F}
+\stix@MathSymbol{\supsim}                   {\mathrel}{symbols3}{"60}
+\stix@MathSymbol{\subsetapprox}             {\mathrel}{symbols3}{"7D}
+\stix@MathSymbol{\supsetapprox}             {\mathrel}{symbols3}{"7E}
+
+\stix@MathSymbol{\Bbbk}                     {\mathord}{symbols3}{`k}
+
+\stix@MathSymbol{\capbarcup}                {\mathbin}{symbols3}{"99}
+\stix@MathSymbol{\twocups}                  {\mathbin}{symbols3}{"9A}
+\stix@MathSymbol{\twocaps}                  {\mathbin}{symbols3}{"9B}
+\stix@MathSymbol{\closedvarcup}             {\mathbin}{symbols3}{"9C}
+\stix@MathSymbol{\closedvarcap}             {\mathbin}{symbols3}{"9D}
+\stix@MathSymbol{\Sqcap}                    {\mathbin}{symbols3}{"9E}
+\stix@MathSymbol{\Sqcup}                    {\mathbin}{symbols3}{"9F}
+
+\stix@MathSymbol{\closedvarcupsmashprod}    {\mathbin}{symbols3}{"A0}
+\stix@MathSymbol{\wedgeodot}                {\mathbin}{symbols3}{"A1}
+\stix@MathSymbol{\veeodot}                  {\mathbin}{symbols3}{"A2}
+\stix@MathSymbol{\Wedge}                    {\mathbin}{symbols3}{"A3}
+\stix@MathSymbol{\Vee}                      {\mathbin}{symbols3}{"A4}
+\stix@MathSymbol{\wedgeonwedge}             {\mathbin}{symbols3}{"A5}
+\stix@MathSymbol{\veeonvee}                 {\mathbin}{symbols3}{"A6}
+\stix@MathSymbol{\bigslopedvee}             {\mathbin}{symbols3}{"A7}
+\stix@MathSymbol{\bigslopedwedge}           {\mathbin}{symbols3}{"A8}
+\stix@MathSymbol{\veeonwedge}               {\mathrel}{symbols3}{"A9}
+\stix@MathSymbol{\wedgemidvert}             {\mathbin}{symbols3}{"AA}
+\stix@MathSymbol{\veemidvert}               {\mathbin}{symbols3}{"AB}
+\stix@MathSymbol{\midbarwedge}              {\mathbin}{symbols3}{"AC}
+\stix@MathSymbol{\midbarvee}                {\mathbin}{symbols3}{"AD}
+\stix@MathSymbol{\doublebarwedge}           {\mathbin}{symbols3}{"AE}
+\stix@MathSymbol{\wedgebar}                 {\mathbin}{symbols3}{"AF}
+
+\stix@MathSymbol{\wedgedoublebar}           {\mathbin}{symbols3}{"B0}
+\stix@MathSymbol{\varveebar}                {\mathbin}{symbols3}{"B1}
+\stix@MathSymbol{\doublebarvee}             {\mathbin}{symbols3}{"B2}
+\stix@MathSymbol{\veedoublebar}             {\mathbin}{symbols3}{"B3}
+\stix@MathSymbol{\dsub}                     {\mathbin}{symbols3}{"B4}
+\stix@MathSymbol{\rsub}                     {\mathbin}{symbols3}{"B5}
+\stix@MathSymbol{\eqdot}                    {\mathrel}{symbols3}{"B6}
+\stix@MathSymbol{\dotequiv}                 {\mathrel}{symbols3}{"B7}
+\stix@MathSymbol{\equivVert}                {\mathrel}{symbols3}{"B8}
+\stix@MathSymbol{\equivVvert}               {\mathrel}{symbols3}{"B9}
+\stix@MathSymbol{\dotsim}                   {\mathrel}{symbols3}{"BA}
+\stix@MathSymbol{\simrdots}                 {\mathrel}{symbols3}{"BB}
+\stix@MathSymbol{\simminussim}              {\mathrel}{symbols3}{"BC}
+\stix@MathSymbol{\congdot}                  {\mathrel}{symbols3}{"BD}
+\stix@MathSymbol{\asteq}                    {\mathrel}{symbols3}{"BE}
+\stix@MathSymbol{\hatapprox}                {\mathrel}{symbols3}{"BF}
+
+\stix@MathSymbol{\approxeqq}                {\mathrel}{symbols3}{"C0}
+\stix@MathSymbol{\eqqplus}                  {\mathbin}{symbols3}{"C1}
+\stix@MathSymbol{\pluseqq}                  {\mathbin}{symbols3}{"C2}
+\stix@MathSymbol{\eqqsim}                   {\mathrel}{symbols3}{"C3}
+\stix@MathSymbol{\Coloneq}                  {\mathrel}{symbols3}{"C4}
+\stix@MathSymbol{\eqeq}                     {\mathrel}{symbols3}{"C5}
+\stix@MathSymbol{\eqeqeq}                   {\mathrel}{symbols3}{"C6}
+\stix@MathSymbol{\ddotseq}                  {\mathrel}{symbols3}{"C7}
+\stix@MathSymbol{\equivDD}                  {\mathrel}{symbols3}{"C8}
+\stix@MathSymbol{\ltcir}                    {\mathrel}{symbols3}{"C9}
+\stix@MathSymbol{\gtcir}                    {\mathrel}{symbols3}{"CA}
+\stix@MathSymbol{\ltquest}                  {\mathrel}{symbols3}{"CB}
+\stix@MathSymbol{\gtquest}                  {\mathrel}{symbols3}{"CC}
+\stix@MathSymbol{\leqslant}                 {\mathrel}{symbols3}{"CD}
+\stix@MathSymbol{\geqslant}                 {\mathrel}{symbols3}{"CE}
+\stix@MathSymbol{\lesdot}                   {\mathrel}{symbols3}{"CF}
+
+\stix@MathSymbol{\gesdot}                   {\mathrel}{symbols3}{"D0}
+\stix@MathSymbol{\lesdoto}                  {\mathrel}{symbols3}{"D1}
+\stix@MathSymbol{\gesdoto}                  {\mathrel}{symbols3}{"D2}
+\stix@MathSymbol{\lesdotor}                 {\mathrel}{symbols3}{"D3}
+\stix@MathSymbol{\gesdotol}                 {\mathrel}{symbols3}{"D4}
+\stix@MathSymbol{\lessapprox}               {\mathrel}{symbols3}{"D5}
+\stix@MathSymbol{\gtrapprox}                {\mathrel}{symbols3}{"D6}
+\stix@MathSymbol{\lneq}                     {\mathrel}{symbols3}{"D7}
+\stix@MathSymbol{\gneq}                     {\mathrel}{symbols3}{"D8}
+\stix@MathSymbol{\lnapprox}                 {\mathrel}{symbols3}{"D9}
+\stix@MathSymbol{\gnapprox}                 {\mathrel}{symbols3}{"DA}
+\stix@MathSymbol{\lesseqqgtr}               {\mathrel}{symbols3}{"DB}
+\stix@MathSymbol{\gtreqqless}               {\mathrel}{symbols3}{"DC}
+\stix@MathSymbol{\lsime}                    {\mathrel}{symbols3}{"DD}
+\stix@MathSymbol{\gsime}                    {\mathrel}{symbols3}{"DE}
+\stix@MathSymbol{\lsimg}                    {\mathrel}{symbols3}{"DF}
+
+\stix@MathSymbol{\gsiml}                    {\mathrel}{symbols3}{"E0}
+\stix@MathSymbol{\lgE}                      {\mathrel}{symbols3}{"E1}
+\stix@MathSymbol{\glE}                      {\mathrel}{symbols3}{"E2}
+\stix@MathSymbol{\lesges}                   {\mathrel}{symbols3}{"E3}
+\stix@MathSymbol{\gesles}                   {\mathrel}{symbols3}{"E4}
+\stix@MathSymbol{\eqslantless}              {\mathrel}{symbols3}{"E5}
+\stix@MathSymbol{\eqslantgtr}               {\mathrel}{symbols3}{"E6}
+\stix@MathSymbol{\elsdot}                   {\mathrel}{symbols3}{"E7}
+\stix@MathSymbol{\egsdot}                   {\mathrel}{symbols3}{"E8}
+\stix@MathSymbol{\eqqless}                  {\mathrel}{symbols3}{"E9}
+\stix@MathSymbol{\eqqgtr}                   {\mathrel}{symbols3}{"EA}
+\stix@MathSymbol{\eqqslantless}             {\mathrel}{symbols3}{"EB}
+\stix@MathSymbol{\eqqslantgtr}              {\mathrel}{symbols3}{"EC}
+\stix@MathSymbol{\simless}                  {\mathrel}{symbols3}{"ED}
+\stix@MathSymbol{\simgtr}                   {\mathrel}{symbols3}{"EE}
+\stix@MathSymbol{\simlE}                    {\mathrel}{symbols3}{"EF}
+
+\stix@MathSymbol{\simgE}                    {\mathrel}{symbols3}{"F0}
+\stix@MathSymbol{\Lt}                       {\mathrel}{symbols3}{"F1}
+\stix@MathSymbol{\Gt}                       {\mathrel}{symbols3}{"F2}
+\stix@MathSymbol{\partialmeetcontraction}   {\mathrel}{symbols3}{"F3}
+\stix@MathSymbol{\glj}                      {\mathrel}{symbols3}{"F4}
+\stix@MathSymbol{\gla}                      {\mathrel}{symbols3}{"F5}
+\stix@MathSymbol{\ltcc}                     {\mathrel}{symbols3}{"F6}
+\stix@MathSymbol{\gtcc}                     {\mathrel}{symbols3}{"F7}
+\stix@MathSymbol{\lescc}                    {\mathrel}{symbols3}{"F8}
+\stix@MathSymbol{\gescc}                    {\mathrel}{symbols3}{"F9}
+\stix@MathSymbol{\smt}                      {\mathrel}{symbols3}{"FA}
+\stix@MathSymbol{\lat}                      {\mathrel}{symbols3}{"FB}
+\stix@MathSymbol{\smte}                     {\mathrel}{symbols3}{"FC}
+\stix@MathSymbol{\late}                     {\mathrel}{symbols3}{"FD}
+\stix@MathSymbol{\bumpeqq}                  {\mathrel}{symbols3}{"FE}
+\stix@MathSymbol{\precneq}                  {\mathrel}{symbols3}{"FF}
+\stix@MathSymbol{\ngeqq}                    {\mathrel}{symbols4}{"02}
+\stix@MathSymbol{\ngeqslant}                {\mathrel}{symbols4}{"03}
+\stix@MathSymbol{\nleqslant}                {\mathrel}{symbols4}{"04}
+\stix@MathSymbol{\nleqq}                    {\mathrel}{symbols4}{"05}
+\stix@MathSymbol{\nsubseteqq}               {\mathrel}{symbols4}{"06}
+\stix@MathSymbol{\nsupseteqq}               {\mathrel}{symbols4}{"07}
+
+\stix@MathSymbol{\mathsterling}             {\mathord}{symbols4}{"7D}
+
+\stix@MathSymbol{\ncongdot}                 {\mathrel}{symbols4}{"09}
+\stix@MathSymbol{\napproxeqq}               {\mathrel}{symbols4}{"0A}
+\stix@MathSymbol{\nll}                      {\mathrel}{symbols4}{"0B}
+\stix@MathSymbol{\ngg}                      {\mathrel}{symbols4}{"0C}
+\stix@MathSymbol{\nsqsubset}                {\mathrel}{symbols4}{"1A}
+\stix@MathSymbol{\npreceq}                  {\mathrel}{symbols4}{"16}
+\stix@MathSymbol{\nsucceq}                  {\mathrel}{symbols4}{"19}
+\stix@MathSymbol{\nsqsupset}                {\mathrel}{symbols4}{"1B}
+\stix@MathSymbol{\nBumpeq}                  {\mathrel}{symbols4}{"1C}
+\stix@MathSymbol{\nbumpeq}                  {\mathrel}{symbols4}{"1F}
+\stix@MathSymbol{\neqsim}                   {\mathrel}{symbols4}{"20}
+\stix@MathSymbol{\nvarisinobar}             {\mathrel}{symbols4}{"21}
+\stix@MathSymbol{\nvarniobar}               {\mathrel}{symbols4}{"22}
+\stix@MathSymbol{\neqslantless}             {\mathrel}{symbols4}{"25}
+\stix@MathSymbol{\neqslantgtr}              {\mathrel}{symbols4}{"26}
+
+\stix@MathSymbol{\subsetneqq}               {\mathrel}{symbols4}{"99}
+\stix@MathSymbol{\supsetneqq}               {\mathrel}{symbols4}{"9A}
+\stix@MathSymbol{\lsqhook}                  {\mathrel}{symbols4}{"9B}
+\stix@MathSymbol{\rsqhook}                  {\mathrel}{symbols4}{"9C}
+\stix@MathSymbol{\csub}                     {\mathrel}{symbols4}{"9D}
+\stix@MathSymbol{\csup}                     {\mathrel}{symbols4}{"9E}
+\stix@MathSymbol{\csube}                    {\mathrel}{symbols4}{"9F}
+
+\stix@MathSymbol{\csupe}                    {\mathrel}{symbols4}{"A0}
+\stix@MathSymbol{\subsup}                   {\mathrel}{symbols4}{"A1}
+\stix@MathSymbol{\supsub}                   {\mathrel}{symbols4}{"A2}
+\stix@MathSymbol{\subsub}                   {\mathrel}{symbols4}{"A3}
+\stix@MathSymbol{\supsup}                   {\mathrel}{symbols4}{"A4}
+\stix@MathSymbol{\suphsub}                  {\mathrel}{symbols4}{"A5}
+\stix@MathSymbol{\supdsub}                  {\mathrel}{symbols4}{"A6}
+\stix@MathSymbol{\forkv}                    {\mathrel}{symbols4}{"A7}
+\stix@MathSymbol{\topfork}                  {\mathrel}{symbols4}{"A8}
+\stix@MathSymbol{\mlcp}                     {\mathrel}{symbols4}{"A9}
+\stix@MathSymbol{\forks}                    {\mathrel}{symbols4}{"AA}
+\stix@MathSymbol{\forksnot}                 {\mathrel}{symbols4}{"AB}
+\stix@MathSymbol{\shortlefttack}            {\mathrel}{symbols4}{"AC}
+\stix@MathSymbol{\shortdowntack}            {\mathrel}{symbols4}{"AD}
+\stix@MathSymbol{\shortuptack}              {\mathrel}{symbols4}{"AE}
+\stix@MathSymbol{\perps}                    {\mathord}{symbols4}{"AF}
+
+\stix@MathSymbol{\vDdash}                   {\mathrel}{symbols4}{"B0}
+\stix@MathSymbol{\dashV}                    {\mathrel}{symbols4}{"B1}
+\stix@MathSymbol{\Dashv}                    {\mathrel}{symbols4}{"B2}
+\stix@MathSymbol{\DashV}                    {\mathrel}{symbols4}{"B3}
+\stix@MathSymbol{\varVdash}                 {\mathrel}{symbols4}{"B4}
+\stix@MathSymbol{\Barv}                     {\mathrel}{symbols4}{"B5}
+\stix@MathSymbol{\vBar}                     {\mathrel}{symbols4}{"B6}
+\stix@MathSymbol{\vBarv}                    {\mathrel}{symbols4}{"B7}
+\stix@MathSymbol{\barV}                     {\mathrel}{symbols4}{"B8}
+\stix@MathSymbol{\Vbar}                     {\mathrel}{symbols4}{"B9}
+\stix@MathSymbol{\Not}                      {\mathrel}{symbols4}{"BA}
+\stix@MathSymbol{\bNot}                     {\mathrel}{symbols4}{"BB}
+\stix@MathSymbol{\revnmid}                  {\mathrel}{symbols4}{"BC}
+\stix@MathSymbol{\cirmid}                   {\mathrel}{symbols4}{"BD}
+\stix@MathSymbol{\midcir}                   {\mathrel}{symbols4}{"BE}
+\stix@MathSymbol{\topcir}                   {\mathord}{symbols4}{"BF}
+
+\stix@MathSymbol{\nhpar}                    {\mathrel}{symbols4}{"C0}
+\stix@MathSymbol{\parsim}                   {\mathrel}{symbols4}{"C1}
+\stix@MathSymbol{\interleave}               {\mathbin}{symbols4}{"C2}
+\stix@MathSymbol{\nhVvert}                  {\mathbin}{symbols4}{"C3}
+\stix@MathSymbol{\threedotcolon}            {\mathbin}{symbols4}{"C4}
+\stix@MathSymbol{\lllnest}                  {\mathrel}{symbols4}{"C5}
+\stix@MathSymbol{\gggnest}                  {\mathrel}{symbols4}{"C6}
+\stix@MathSymbol{\leqqslant}                {\mathrel}{symbols4}{"C7}
+\stix@MathSymbol{\geqqslant}                {\mathrel}{symbols4}{"C8}
+\stix@MathSymbol{\trslash}                  {\mathbin}{symbols4}{"C9}
+\stix@MathSymbol{\biginterleave}            {\mathop} {symbols4}{"CA}
+\stix@MathSymbol{\sslash}                   {\mathbin}{symbols4}{"CB}
+\stix@MathSymbol{\talloblong}               {\mathbin}{symbols4}{"CC}
+\stix@MathSymbol{\squaretopblack}           {\mathord}{symbols4}{"CD}
+\stix@MathSymbol{\squarebotblack}           {\mathord}{symbols4}{"CE}
+\stix@MathSymbol{\squareurblack}            {\mathord}{symbols4}{"CF}
+
+\stix@MathSymbol{\squarellblack}            {\mathord}{symbols4}{"D0}
+\stix@MathSymbol{\diamondleftblack}         {\mathord}{symbols4}{"D1}
+\stix@MathSymbol{\diamondrightblack}        {\mathord}{symbols4}{"D2}
+\stix@MathSymbol{\diamondtopblack}          {\mathord}{symbols4}{"D3}
+\stix@MathSymbol{\diamondbotblack}          {\mathord}{symbols4}{"D4}
+\stix@MathSymbol{\dottedsquare}             {\mathord}{symbols4}{"D5}
+\stix@MathSymbol{\lgblksquare}              {\mathord}{symbols4}{"D6}
+\stix@MathSymbol{\lgwhtsquare}              {\mathord}{symbols4}{"D7}
+\stix@MathSymbol{\vysmblksquare}            {\mathord}{symbols4}{"D8}
+\stix@MathSymbol{\vysmwhtsquare}            {\mathord}{symbols4}{"D9}
+\stix@MathSymbol{\pentagonblack}            {\mathord}{symbols4}{"DA}
+\stix@MathSymbol{\pentagon}                 {\mathord}{symbols4}{"DB}
+\stix@MathSymbol{\varhexagon}               {\mathord}{symbols4}{"DC}
+\stix@MathSymbol{\varhexagonblack}          {\mathord}{symbols4}{"DD}
+\stix@MathSymbol{\hexagonblack}             {\mathord}{symbols4}{"DE}
+\stix@MathSymbol{\lgblkcircle}              {\mathord}{symbols4}{"DF}
+
+\stix@MathSymbol{\mdblkdiamond}             {\mathord}{symbols4}{"E0}
+\stix@MathSymbol{\mdwhtdiamond}             {\mathord}{symbols4}{"E1}
+\stix@MathSymbol{\mdblklozenge}             {\mathord}{symbols4}{"E2}
+\stix@MathSymbol{\mdwhtlozenge}             {\mathord}{symbols4}{"E3}
+\stix@MathSymbol{\smblkdiamond}             {\mathord}{symbols4}{"E4}
+\stix@MathSymbol{\smblklozenge}             {\mathord}{symbols4}{"E5}
+\stix@MathSymbol{\smwhtlozenge}             {\mathord}{symbols4}{"E6}
+\stix@MathSymbol{\blkhorzoval}              {\mathord}{symbols4}{"E7}
+\stix@MathSymbol{\whthorzoval}              {\mathord}{symbols4}{"E8}
+\stix@MathSymbol{\blkvertoval}              {\mathord}{symbols4}{"E9}
+\stix@MathSymbol{\whtvertoval}              {\mathord}{symbols4}{"EA}
+\stix@MathSymbol{\medwhitestar}             {\mathord}{symbols4}{"EB}
+\stix@MathSymbol{\medblackstar}             {\mathord}{symbols4}{"EC}
+\stix@MathSymbol{\smwhitestar}              {\mathord}{symbols4}{"ED}
+\stix@MathSymbol{\rightpentagonblack}       {\mathord}{symbols4}{"EE}
+\stix@MathSymbol{\rightpentagon}            {\mathord}{symbols4}{"EF}
+
+\stix@MathSymbol{\postalmark}               {\mathord}{symbols4}{"F0}
+\stix@MathSymbol{\hzigzag}                  {\mathord}{symbols4}{"F1}
+\stix@MathSymbol{\bbrktbrk}                 {\mathord}{symbols4}{"F2}
+\stix@MathSymbol{\obrbrak}                  {\mathord}{symbols4}{"F3}
+\stix@MathSymbol{\ubrbrak}                  {\mathord}{symbols4}{"F4}
+\stix@MathSymbol{\astrosun}                 {\mathord}{symbols4}{"F5}
+\stix@MathSymbol{\danger}                   {\mathord}{symbols4}{"F6}
+\stix@MathSymbol{\blacksmiley}              {\mathord}{symbols4}{"F7}
+\stix@MathSymbol{\sun}                      {\mathord}{symbols4}{"F8}
+\stix@MathSymbol{\rightmoon}                {\mathord}{symbols4}{"F9}
+\stix@MathSymbol{\leftmoon}                 {\mathord}{symbols4}{"FA}
+\stix@MathSymbol{\female}                   {\mathord}{symbols4}{"FB}
+\stix@MathSymbol{\male}                     {\mathord}{symbols4}{"FC}
+\stix@MathSymbol{\varspadesuit}             {\mathord}{symbols4}{"FD}
+\stix@MathSymbol{\varheartsuit}             {\mathord}{symbols4}{"FE}
+\stix@MathSymbol{\vardiamondsuit}           {\mathord}{symbols4}{"FF}
+    \DeclareMathSizes{10}{10}{7.5}{6}
+\AtBeginDocument{
+    \@ifpackageloaded{amsmath}{
+        \renewcommand{\big}{\bBigg@{1.2}}
+        \renewcommand{\Bigg}{\bBigg@{2.7}}
+        \let\dotsb@\@cdots
+        \let\dotsb\cdots
+        \let\dotsm\cdots
+    }{
+        \let\ilimits@=\nolimits
+        \let\slimits@=\relax
+        \let\DOTSI\relax
+    }
+}
+\@ifpackageloaded{amsopn}{
+    \begingroup \catcode`\"=12
+    \gdef\newmcodes@{%
+      \mathcode`\'="007F\relax%
+      \mathcode`\*="003C\relax%
+      \mathcode`\.="613A\relax%
+      \ifnum\mathcode`\-="002A \else
+        \mathchardef\std@minus\mathcode`\-\relax
+      \fi
+      \mathcode`\-="002A\relax%
+      \mathcode`\/="005F\relax%
+      \mathcode`\:="603A\relax%
+    }
+    \endgroup
+}{}
+\DeclareTextSymbol{\i}{LS1}{123}
+\DeclareTextSymbol{\j}{LS1}{124}
+\@namedef{not=}{\ne}
+\@namedef{not>}{\ngtr}
+\@namedef{not<}{\nless}
+\let\ngets\nleftarrow
+\let\nsimeq\nsime
+\let\nforksnot\forks
+\let\nle\nleq
+\let\nge\ngeq
+\DeclareRobustCommand*{\not}[1]{%
+    \begingroup \escapechar\m@ne\xdef\@gtempa{not\string#1}\endgroup
+    \@ifundefined{\@gtempa}%
+        {\not@n@{#1}}%
+        {\@nameuse{\@gtempa}}}
+\def\not@n@#1{%
+    \begingroup \escapechar\m@ne\xdef\@gtempa{n\string#1}\endgroup
+    \@ifundefined{\@gtempa}%
+        {\notchar #1}%
+        {\@nameuse{\@gtempa}}}
+\def\stix@dotlessi{\ifmmode\imath\else\i\fi}
+\@ifundefined{es@dotlessi}{}{\let\es@dotlessi\stix@dotlessi}
+
+\fi
+\endinput
+%%
+%% End of file `stix.sty'.
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/t1stix.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/t1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/t1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,21 @@
+\ProvidesFile{t1stix.fd}[2012/12/23 STIX T1 font definitions]
+
+\DeclareFontFamily{T1}{stix}{}
+
+\DeclareFontShape{T1}{stix}{m}{n} {<-> t1-stixgeneral}{}
+\DeclareFontShape{T1}{stix}{b}{n} {<-> t1-stixgeneral-bold}{}
+\DeclareFontShape{T1}{stix}{m}{it}{<-> t1-stixgeneral-italic}{}
+\DeclareFontShape{T1}{stix}{b}{it}{<-> t1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{T1}{stix}{m}{sc}{<-> t1-stixgeneralsc}{}
+\DeclareFontShape{T1}{stix}{b}{sc}{<-> t1-stixgeneralsc-bold}{}
+
+\DeclareFontShape{T1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{T1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{T1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{T1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{T1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{T1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ts1stix.fd
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ts1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/Stix-fonts/ts1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,21 @@
+\ProvidesFile{t1stix.fd}[2012/12/23 STIX TS1 font definitions]
+
+\DeclareFontFamily{TS1}{stix}{}
+
+\DeclareFontShape{TS1}{stix}{m}{n} {<-> ts1-stixgeneral}{}
+\DeclareFontShape{TS1}{stix}{b}{n} {<-> ts1-stixgeneral-bold}{}
+\DeclareFontShape{TS1}{stix}{m}{it}{<-> ts1-stixgeneral-italic}{}
+\DeclareFontShape{TS1}{stix}{b}{it}{<-> ts1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{TS1}{stix}{m}{sc}{<->ssub * stix/m/n}{}
+\DeclareFontShape{TS1}{stix}{b}{sc}{<->ssub * stix/b/n}{}
+
+\DeclareFontShape{TS1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{TS1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{TS1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{TS1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{TS1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{TS1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/concurrency/AMA/AMA-stix/ama/NJDnatbib.sty
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/ama/NJDnatbib.sty	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/ama/NJDnatbib.sty	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,1262 @@
+%%
+%% This is file `NJDnatbib.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% natbib.dtx  (with options: `package,all')
+%% =============================================
+%% IMPORTANT NOTICE:
+%% 
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%% 
+%% This is a generated file.
+%% It may not be distributed without the original source file natbib.dtx.
+%% 
+%% Full documentation can be obtained by LaTeXing that original file.
+%% Only a few abbreviated comments remain here to describe the usage.
+%% =============================================
+%% Copyright 1993-2010 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@mps.mpg.de
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{NJDnatbib}
+        [2010/09/13 8.31b (PWD, AO)]
+
+ % This package reimplements the LaTeX \cite command to be used for various
+ % citation styles, both author-year and numerical. It accepts BibTeX
+ % output intended for many other packages, and therefore acts as a
+ % general, all-purpose citation-style interface.
+ %
+ % With standard numerical .bst files, only numerical citations are
+ % possible. With an author-year .bst file, both numerical and
+ % author-year citations are possible.
+ %
+ % If author-year citations are selected, \bibitem must have one of the
+ %   following forms:
+ %   \bibitem[Jones et al.(1990)]{key}...
+ %   \bibitem[Jones et al.(1990)Jones, Baker, and Williams]{key}...
+ %   \bibitem[Jones et al., 1990]{key}...
+ %   \bibitem[\protect\citeauthoryear{Jones, Baker, and Williams}{Jones
+ %       et al.}{1990}]{key}...
+ %   \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}...
+ %   \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
+ %   \bibitem[\protect\citename{Jones et al., }1990]{key}...
+ %   \harvarditem[Jones et al.]{Jones, Baker, and Williams}{1990}{key}...
+ %
+ % This is either to be made up manually, or to be generated by an
+ % appropriate .bst file with BibTeX.
+ %                            Author-year mode     ||   Numerical mode
+ % Then, \citet{key}  ==>>  Jones et al. (1990)    ||   Jones et al. [21]
+ %       \citep{key}  ==>> (Jones et al., 1990)    ||   [21]
+ % Multiple citations as normal:
+ % \citep{key1,key2}  ==>> (Jones et al., 1990; Smith, 1989) || [21,24]
+ %                           or  (Jones et al., 1990, 1991)  || [21,24]
+ %                           or  (Jones et al., 1990a,b)     || [21,24]
+ % \cite{key} is the equivalent of \citet{key} in author-year mode
+ %                         and  of \citep{key} in numerical mode
+ % Full author lists may be forced with \citet* or \citep*, e.g.
+ %       \citep*{key}      ==>> (Jones, Baker, and Williams, 1990)
+ % Optional notes as:
+ %   \citep[chap. 2]{key}    ==>> (Jones et al., 1990, chap. 2)
+ %   \citep[e.g.,][]{key}    ==>> (e.g., Jones et al., 1990)
+ %   \citep[see][pg. 34]{key}==>> (see Jones et al., 1990, pg. 34)
+ %  (Note: in standard LaTeX, only one note is allowed, after the ref.
+ %   Here, one note is like the standard, two make pre- and post-notes.)
+ %   \citealt{key}          ==>> Jones et al. 1990
+ %   \citealt*{key}         ==>> Jones, Baker, and Williams 1990
+ %   \citealp{key}          ==>> Jones et al., 1990
+ %   \citealp*{key}         ==>> Jones, Baker, and Williams, 1990
+ % Additional citation possibilities (both author-year and numerical modes)
+ %   \citeauthor{key}       ==>> Jones et al.
+ %   \citeauthor*{key}      ==>> Jones, Baker, and Williams
+ %   \citeyear{key}         ==>> 1990
+ %   \citeyearpar{key}      ==>> (1990)
+ %   \citetext{priv. comm.} ==>> (priv. comm.)
+ %   \citenum{key}          ==>> 11 [non-superscripted]
+ % Note: full author lists depends on whether the bib style supports them;
+ %       if not, the abbreviated list is printed even when full requested.
+ %
+ % For names like della Robbia at the start of a sentence, use
+ %   \Citet{dRob98}         ==>> Della Robbia (1998)
+ %   \Citep{dRob98}         ==>> (Della Robbia, 1998)
+ %   \Citeauthor{dRob98}    ==>> Della Robbia
+ %
+ %
+ % Citation aliasing is achieved with
+ %   \defcitealias{key}{text}
+ %   \citetalias{key}  ==>> text
+ %   \citepalias{key}  ==>> (text)
+ %
+ % Defining the citation mode and punctual (citation style)
+ %   \setcitestyle{<comma-separated list of keywords, same
+ %     as the package options>}
+ % Example: \setcitestyle{square,semicolon}
+ % Alternatively:
+ % Use \bibpunct with 6 mandatory arguments:
+ %    1. opening bracket for citation
+ %    2. closing bracket
+ %    3. citation separator (for multiple citations in one \cite)
+ %    4. the letter n for numerical styles, s for superscripts
+ %        else anything for author-year
+ %    5. punctuation between authors and date
+ %    6. punctuation between years (or numbers) when common authors missing
+ % One optional argument is the character coming before post-notes. It
+ %   appears in square braces before all other arguments. May be left off.
+ % Example (and default) \bibpunct[, ]{(}{)}{;}{a}{,}{,}
+ %
+ % To make this automatic for a given bib style, named newbib, say, make
+ % a local configuration file, natbib.cfg, with the definition
+ %   \newcommand{\bibstyle@newbib}{\bibpunct...}
+ % Then the \bibliographystyle{newbib} will cause \bibstyle@newbib to
+ % be called on THE NEXT LATEX RUN (via the aux file).
+ %
+ % Such preprogrammed definitions may be invoked anywhere in the text
+ %  by calling \citestyle{newbib}. This is only useful if the style specified
+ %  differs from that in \bibliographystyle.
+ %
+ % With \citeindextrue and \citeindexfalse, one can control whether the
+ % \cite commands make an automatic entry of the citation in the .idx
+ % indexing file. For this, \makeindex must also be given in the preamble.
+ %
+ % Package Options: (for selecting punctuation)
+ %   round  -  round parentheses are used (default)
+ %   square -  square brackets are used   [option]
+ %   curly  -  curly braces are used      {option}
+ %   angle  -  angle brackets are used    <option>
+ %   semicolon  -  multiple citations separated by semi-colon (default)
+ %   colon  - same as semicolon, an earlier confusion
+ %   comma  -  separated by comma
+ %   authoryear - selects author-year citations (default)
+ %   numbers-  selects numerical citations
+ %   super  -  numerical citations as superscripts
+ %   sort   -  sorts multiple citations according to order in ref. list
+ %   sort&compress   -  like sort, but also compresses numerical citations
+ %   compress - compresses without sorting
+ %   longnamesfirst  -  makes first citation full author list
+ %   sectionbib - puts bibliography in a \section* instead of \chapter*
+ %   merge - allows the citation key to have a * prefix,
+ %           signifying to merge its reference with that of the previous citation.
+ %   elide - if references are merged, repeated portions of later ones may be removed.
+ %   mcite - recognizes and ignores the * prefix for merging.
+ % Punctuation so selected dominates over any predefined ones.
+ % Package options are called as, e.g.
+ %        \usepackage[square,comma]{natbib}
+ % LaTeX the source file natbib.dtx to obtain more details
+ % or the file natnotes.tex for a brief reference sheet.
+ %-----------------------------------------------------------
+\providecommand\@ifxundefined[1]{%
+ \ifx#1\@undefined\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\@ifnum[1]{%
+ \ifnum#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\@ifx[1]{%
+ \ifx#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\appdef[2]{%
+ \toks@\expandafter{#1}\@temptokena{#2}%
+ \edef#1{\the\toks@\the\@temptokena}%
+}%
+\@ifclassloaded{agu2001}{\PackageError{natbib}
+  {The agu2001 class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+\@ifclassloaded{agutex}{\PackageError{natbib}
+  {The AGUTeX class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+\@ifclassloaded{aguplus}{\PackageError{natbib}
+  {The aguplus class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+\@ifclassloaded{nlinproc}{\PackageError{natbib}
+  {The nlinproc class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+\@ifclassloaded{egs}{\PackageError{natbib}
+  {The egs class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+\@ifclassloaded{egu}{\PackageError{natbib}
+  {The egu class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+ % Define citation punctuation for some author-year styles
+ % One may add and delete at this point
+ % Or put additions into local configuration file natbib.cfg
+\newcommand\bibstyle@chicago{\bibpunct{(}{)}{;}{a}{,}{,}}
+\newcommand\bibstyle@named{\bibpunct{[}{]}{;}{a}{,}{,}}
+\newcommand\bibstyle@agu{\bibpunct{[}{]}{;}{a}{,}{,~}}%Amer. Geophys. Union
+\newcommand\bibstyle@copernicus{\bibpunct{(}{)}{;}{a}{,}{,}}%Copernicus Publications
+\let\bibstyle@egu=\bibstyle@copernicus
+\let\bibstyle@egs=\bibstyle@copernicus
+\newcommand\bibstyle@agsm{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
+\newcommand\bibstyle@kluwer{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
+\newcommand\bibstyle@dcu{\bibpunct{(}{)}{;}{a}{;}{,}\gdef\harvardand{and}}
+\newcommand\bibstyle@aa{\bibpunct{(}{)}{;}{a}{}{,}} %Astronomy & Astrophysics
+\newcommand\bibstyle@pass{\bibpunct{(}{)}{;}{a}{,}{,}}%Planet. & Space Sci
+\newcommand\bibstyle@anngeo{\bibpunct{(}{)}{;}{a}{,}{,}}%Annales Geophysicae
+\newcommand\bibstyle@nlinproc{\bibpunct{(}{)}{;}{a}{,}{,}}%Nonlin.Proc.Geophys.
+ % Define citation punctuation for some numerical styles
+\newcommand\bibstyle@cospar{\bibpunct{/}{/}{,}{n}{}{}%
+     \gdef\bibnumfmt##1{##1.}}
+\newcommand\bibstyle@esa{\bibpunct{(Ref.~}{)}{,}{n}{}{}%
+     \gdef\bibnumfmt##1{##1.\hspace{1em}}}
+\newcommand\bibstyle@nature{\bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
+     \gdef\bibnumfmt##1{##1.}}
+ % The standard LaTeX styles
+\newcommand\bibstyle@plain{\bibpunct{[}{]}{,}{n}{}{,}}
+\let\bibstyle@alpha=\bibstyle@plain
+\let\bibstyle@abbrv=\bibstyle@plain
+\let\bibstyle@unsrt=\bibstyle@plain
+ % The author-year modifications of the standard styles
+\newcommand\bibstyle@plainnat{\bibpunct{[}{]}{,}{a}{,}{,}}
+\let\bibstyle@abbrvnat=\bibstyle@plainnat
+\let\bibstyle@unsrtnat=\bibstyle@plainnat
+\newif\ifNAT@numbers \NAT@numbersfalse
+\newif\ifNAT@super \NAT@superfalse
+\let\NAT@merge\z@
+\DeclareOption{numbers}{\NAT@numberstrue
+   \ExecuteOptions{square,comma,nobibstyle}}
+\DeclareOption{super}{\NAT@supertrue\NAT@numberstrue
+   \renewcommand\NAT@open{}\renewcommand\NAT@close{}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{authoryear}{\NAT@numbersfalse
+   \ExecuteOptions{round,semicolon,bibstyle}}
+\DeclareOption{round}{%
+      \renewcommand\NAT@open{(} \renewcommand\NAT@close{)}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{square}{%
+      \renewcommand\NAT@open{[} \renewcommand\NAT@close{]}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{angle}{%
+      \renewcommand\NAT@open{$<$} \renewcommand\NAT@close{$>$}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{curly}{%
+      \renewcommand\NAT@open{\{} \renewcommand\NAT@close{\}}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{comma}{\renewcommand\NAT@sep{,}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{semicolon}{\renewcommand\NAT@sep{;}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{colon}{\ExecuteOptions{semicolon}}
+\DeclareOption{nobibstyle}{\let\bibstyle=\@gobble}
+\DeclareOption{bibstyle}{\let\bibstyle=\@citestyle}
+\newif\ifNAT@openbib \NAT@openbibfalse
+\DeclareOption{openbib}{\NAT@openbibtrue}
+\DeclareOption{sectionbib}{\def\NAT@sectionbib{on}}
+\def\NAT@sort{\z@}
+\def\NAT@cmprs{\z@}
+\DeclareOption{sort}{\def\NAT@sort{\@ne}}
+\DeclareOption{compress}{\def\NAT@cmprs{\@ne}}
+\DeclareOption{sort&compress}{\def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}}
+\DeclareOption{mcite}{\let\NAT@merge\@ne}
+\DeclareOption{merge}{\@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}}
+\DeclareOption{elide}{\@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}}
+\@ifpackageloaded{cite}{\PackageWarningNoLine{natbib}
+  {The `cite' package should not be used\MessageBreak
+   with natbib. Use option `sort' instead}\ExecuteOptions{sort}}{}
+\@ifpackageloaded{mcite}{\PackageWarningNoLine{natbib}
+  {The `mcite' package should not be used\MessageBreak
+   with natbib. Use option `merge' instead}\ExecuteOptions{merge}}{}
+\@ifpackageloaded{citeref}{\PackageError{natbib}
+  {The `citeref' package must be loaded after natbib}%
+  {Move \protect\usepackage{citeref} to after \string\usepackage{natbib}}}{}
+\newif\ifNAT@longnames\NAT@longnamesfalse
+\DeclareOption{longnamesfirst}{\NAT@longnamestrue}
+\DeclareOption{nonamebreak}{\def\NAT@nmfmt#1{\mbox{\NAT@up#1}}}
+\def\NAT@nmfmt#1{{\NAT@up#1}}
+\renewcommand\bibstyle[1]{\csname bibstyle@#1\endcsname}
+\AtBeginDocument{\global\let\bibstyle=\@gobble}
+\let\@citestyle\bibstyle
+\newcommand\citestyle[1]{\@citestyle{#1}\let\bibstyle\@gobble}
+\newcommand\bibpunct[7][, ]%
+  {\gdef\NAT@open{#2}\gdef\NAT@close{#3}\gdef
+   \NAT@sep{#4}\global\NAT@numbersfalse
+     \ifx #5n\global\NAT@numberstrue\global\NAT@superfalse
+   \else
+     \ifx #5s\global\NAT@numberstrue\global\NAT@supertrue
+   \fi\fi
+   \gdef\NAT@aysep{#6}\gdef\NAT@yrsep{#7}%
+   \gdef\NAT@cmt{#1}%
+   \NAT@@setcites
+  }
+\newcommand\setcitestyle[1]{
+ \@for\@tempa:=#1\do
+ {\def\@tempb{round}\ifx\@tempa\@tempb
+    \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
+  \def\@tempb{square}\ifx\@tempa\@tempb
+    \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
+  \def\@tempb{angle}\ifx\@tempa\@tempb
+    \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
+  \def\@tempb{curly}\ifx\@tempa\@tempb
+    \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
+  \def\@tempb{semicolon}\ifx\@tempa\@tempb
+    \renewcommand\NAT@sep{;}\fi
+  \def\@tempb{colon}\ifx\@tempa\@tempb
+    \renewcommand\NAT@sep{;}\fi
+  \def\@tempb{comma}\ifx\@tempa\@tempb
+    \renewcommand\NAT@sep{,}\fi
+  \def\@tempb{authoryear}\ifx\@tempa\@tempb
+    \NAT@numbersfalse\fi
+  \def\@tempb{numbers}\ifx\@tempa\@tempb
+    \NAT@numberstrue\NAT@superfalse\fi
+  \def\@tempb{super}\ifx\@tempa\@tempb
+    \NAT@numberstrue\NAT@supertrue\fi
+  \expandafter\NAT@find@eq\@tempa=\relax\@nil
+  \if\@tempc\relax\else
+    \expandafter\NAT@rem@eq\@tempc
+    \def\@tempb{open}\ifx\@tempa\@tempb
+     \xdef\NAT@open{\@tempc}\fi
+    \def\@tempb{close}\ifx\@tempa\@tempb
+     \xdef\NAT@close{\@tempc}\fi
+    \def\@tempb{aysep}\ifx\@tempa\@tempb
+     \xdef\NAT@aysep{\@tempc}\fi
+    \def\@tempb{yysep}\ifx\@tempa\@tempb
+     \xdef\NAT@yrsep{\@tempc}\fi
+    \def\@tempb{notesep}\ifx\@tempa\@tempb
+     \xdef\NAT@cmt{\@tempc}\fi
+    \def\@tempb{citesep}\ifx\@tempa\@tempb
+     \xdef\NAT@sep{\@tempc}\fi
+  \fi
+ }%
+ \NAT@@setcites
+}
+ \def\NAT@find@eq#1=#2\@nil{\def\@tempa{#1}\def\@tempc{#2}}
+ \def\NAT@rem@eq#1={\def\@tempc{#1}}
+ \def\NAT@@setcites{\global\let\bibstyle\@gobble}
+\AtBeginDocument{\let\NAT@@setcites\NAT@set@cites}
+\newcommand\NAT@open{(} \newcommand\NAT@close{)}
+\newcommand\NAT@sep{;}
+\ProcessOptions
+\newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,}
+\newcommand\NAT@cmt{, }
+\newcommand\NAT@cite%
+    [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
+        #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
+\newcommand\NAT@citenum%
+    [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
+        #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
+%\newcommand\NAT@citesuper[3]{\ifNAT@swa
+%\if*#2*\else#2\NAT@spacechar\fi
+%\unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}%
+%   \if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand\NAT@citesuper[3]{\ifNAT@swa
+\if*#2*\else#2\NAT@spacechar\fi
+\unskip\kern\p@\textsuperscript{\NAT@@open#1\if*#3*\else,\NAT@spacechar#3\fi\NAT@@close}%
+   \else #1\fi\endgroup}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand\textsuperscript[1]{\mbox{$^{\mbox{\scriptsize#1}}$}}
+\begingroup \catcode`\_=8
+\gdef\NAT@ifcat@num#1{%
+ \ifcat_\ifnum\z@<0#1_\else A\fi
+  \expandafter\@firstoftwo
+ \else
+  \expandafter\@secondoftwo
+ \fi
+}%
+\endgroup
+\providecommand\@firstofone[1]{#1}
+\newcommand\NAT@citexnum{}
+\def\NAT@citexnum[#1][#2]#3{%
+  \NAT@reset@parser
+  \NAT@sort@cites{#3}%
+  \NAT@reset@citea
+  \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty
+    \@for\@citeb:=\NAT@cite@list\do
+    {\@safe@activestrue
+     \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+     \@safe@activesfalse
+     \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+       {\reset@font\bfseries?}
+        \NAT@citeundefined\PackageWarning{natbib}%
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+     {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm
+      \NAT@parse{\@citeb}%
+      \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
+        \let\NAT@name=\NAT@all@names
+        \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
+      \fi
+      \ifNAT@full\let\NAT@nm\NAT@all@names\else
+        \let\NAT@nm\NAT@name\fi
+      \ifNAT@swa
+       \@ifnum{\NAT@ctype>\@ne}{%
+        \@citea
+        \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}%
+       }{%
+        \@ifnum{\NAT@cmprs>\z@}{%
+         \NAT@ifcat@num\NAT@num
+          {\let\NAT@nm=\NAT@num}%
+          {\def\NAT@nm{-2}}%
+         \NAT@ifcat@num\NAT@last@num
+          {\@tempcnta=\NAT@last@num\relax}%
+          {\@tempcnta\m@ne}%
+         \@ifnum{\NAT@nm=\@tempcnta}{%
+          \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}%
+         }{%
+           \advance\@tempcnta by\@ne
+           \@ifnum{\NAT@nm=\@tempcnta}{%
+             \ifx\NAT@last@yr\relax
+               \def@NAT@last@yr{\@citea}%
+             \else
+               \def@NAT@last@yr{--\NAT@penalty}%
+             \fi
+           }{%
+             \NAT@last@yr@mbox
+           }%
+         }%
+        }{%
+         \@tempswatrue
+         \@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}%
+         \if@tempswa\NAT@citea@mbox\fi
+        }%
+       }%
+       \NAT@def@citea
+      \else
+        \ifcase\NAT@ctype
+          \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else
+            \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}%
+          \fi
+          \if*#1*\else#1\NAT@spacechar\fi
+          \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
+          \NAT@def@citea@box
+        \or
+          \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
+        \or
+          \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
+        \or
+          \NAT@hyper@citea@space\NAT@alias
+        \fi
+      \fi
+     }%
+    }%
+      \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}%
+      \ifNAT@swa\else
+        \@ifnum{\NAT@ctype=\z@}{%
+          \if*#2*\else\NAT@cmt#2\fi
+        }{}%
+        \NAT@mbox{\NAT@@close}%
+      \fi
+  }{#1}{#2}%
+}%
+\def\NAT@citea@mbox{%
+ \@citea\mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
+}%
+\def\NAT@hyper@#1{%
+ \hyper@natlinkstart{\@citeb\@extra@b@citeb}#1\hyper@natlinkend
+}%
+\def\NAT@hyper@citea#1{%
+ \@citea
+ \NAT@hyper@{#1}%
+ \NAT@def@citea
+}%
+\def\NAT@hyper@citea@space#1{%
+ \@citea
+ \NAT@hyper@{#1}%
+ \NAT@def@citea@space
+}%
+\def\def@NAT@last@yr#1{%
+ \protected@edef\NAT@last@yr{%
+  #1%
+  \noexpand\mbox{%
+   \noexpand\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
+   {\noexpand\citenumfont{\NAT@num}}%
+   \noexpand\hyper@natlinkend
+  }%
+ }%
+}%
+\def\NAT@last@yr@mbox{%
+ \NAT@last@yr\let\NAT@last@yr\relax
+ \NAT@citea@mbox
+}%
+\newcommand\NAT@test[1]{%
+ \@ifnum{#1=\@ne}{%
+  \ifx\NAT@nm\NAT@noname
+   \begingroup\reset@font\bfseries(author?)\endgroup
+   \PackageWarning{natbib}{%
+    Author undefined for citation`\@citeb' \MessageBreak on page \thepage%
+   }%
+  \else \NAT@nm
+  \fi
+ }{%
+  \if\relax\NAT@date\relax
+   \begingroup\reset@font\bfseries(year?)\endgroup
+   \PackageWarning{natbib}{%
+    Year undefined for citation`\@citeb' \MessageBreak on page \thepage%
+   }%
+  \else \NAT@date
+  \fi
+ }%
+}%
+\let\citenumfont=\@empty
+\newcommand\NAT@citex{}
+\def\NAT@citex%
+  [#1][#2]#3{%
+  \NAT@reset@parser
+  \NAT@sort@cites{#3}%
+  \NAT@reset@citea
+  \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty
+    \@for\@citeb:=\NAT@cite@list\do
+    {\@safe@activestrue
+     \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+     \@safe@activesfalse
+     \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea%
+       {\reset@font\bfseries ?}\NAT@citeundefined
+                 \PackageWarning{natbib}%
+       {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}%
+     {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year
+      \NAT@parse{\@citeb}%
+      \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
+        \let\NAT@name=\NAT@all@names
+        \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
+      \fi
+     \ifNAT@full\let\NAT@nm\NAT@all@names\else
+       \let\NAT@nm\NAT@name\fi
+     \ifNAT@swa\ifcase\NAT@ctype
+       \if\relax\NAT@date\relax
+         \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}%
+       \else
+         \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
+            \ifx\NAT@last@yr\NAT@year
+              \def\NAT@temp{{?}}%
+              \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
+               {Multiple citation on page \thepage: same authors and
+               year\MessageBreak without distinguishing extra
+               letter,\MessageBreak appears as question mark}\fi
+              \NAT@hyper@{\NAT@exlab}%
+            \else\unskip\NAT@spacechar
+              \NAT@hyper@{\NAT@date}%
+            \fi
+         \else
+           \@citea\NAT@hyper@{%
+             \NAT@nmfmt{\NAT@nm}%
+             \hyper@natlinkbreak{%
+               \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb
+             }%
+             \NAT@date
+           }%
+         \fi
+       \fi
+     \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+     \or\@citea\NAT@hyper@{\NAT@date}%
+     \or\@citea\NAT@hyper@{\NAT@alias}%
+     \fi \NAT@def@citea
+     \else
+       \ifcase\NAT@ctype
+        \if\relax\NAT@date\relax
+          \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+        \else
+         \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
+            \ifx\NAT@last@yr\NAT@year
+              \def\NAT@temp{{?}}%
+              \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
+               {Multiple citation on page \thepage: same authors and
+               year\MessageBreak without distinguishing extra
+               letter,\MessageBreak appears as question mark}\fi
+              \NAT@hyper@{\NAT@exlab}%
+            \else
+              \unskip\NAT@spacechar
+              \NAT@hyper@{\NAT@date}%
+            \fi
+         \else
+           \@citea\NAT@hyper@{%
+             \NAT@nmfmt{\NAT@nm}%
+             \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}%
+               {\@citeb\@extra@b@citeb}%
+             \NAT@date
+           }%
+         \fi
+        \fi
+       \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+       \or\@citea\NAT@hyper@{\NAT@date}%
+       \or\@citea\NAT@hyper@{\NAT@alias}%
+       \fi
+       \if\relax\NAT@date\relax
+         \NAT@def@citea
+       \else
+         \NAT@def@citea@close
+       \fi
+     \fi
+     }}\ifNAT@swa\else\if*#2*\else\NAT@cmt#2\fi
+     \if\relax\NAT@date\relax\else\NAT@@close\fi\fi}{#1}{#2}}
+\def\NAT@spacechar{\ }%
+\def\NAT@separator{\NAT@sep\NAT@penalty}%
+\def\NAT@reset@citea{\c@NAT@ctr\@ne\let\@citea\@empty}%
+\def\NAT@def@citea{\def\@citea{\NAT@separator\NAT@space}}%
+\def\NAT@def@citea@space{\def\@citea{\NAT@separator\NAT@spacechar}}%
+\def\NAT@def@citea@close{\def\@citea{\NAT@@close\NAT@separator\NAT@space}}%
+\def\NAT@def@citea@box{\def\@citea{\NAT@mbox{\NAT@@close}\NAT@separator\NAT@spacechar}}%
+\newif\ifNAT@par \NAT@partrue
+\newcommand\NAT@@open{\ifNAT@par\NAT@open\fi}
+\newcommand\NAT@@close{\ifNAT@par\NAT@close\fi}
+\newcommand\NAT@alias{\@ifundefined{al@\@citeb\@extra@b@citeb}{%
+  {\reset@font\bfseries(alias?)}\PackageWarning{natbib}
+  {Alias undefined for citation `\@citeb'
+  \MessageBreak on page \thepage}}{\@nameuse{al@\@citeb\@extra@b@citeb}}}
+\let\NAT@up\relax
+\newcommand\NAT@Up[1]{{\let\protect\@unexpandable@protect\let~\relax
+  \expandafter\NAT@deftemp#1}\expandafter\NAT@UP\NAT@temp}
+\newcommand\NAT@deftemp[1]{\xdef\NAT@temp{#1}}
+\newcommand\NAT@UP[1]{\let\@tempa\NAT@UP\ifcat a#1\MakeUppercase{#1}%
+  \let\@tempa\relax\else#1\fi\@tempa}
+\newcommand\shortcites[1]{%
+  \@bsphack\@for\@citeb:=#1\do
+  {\@safe@activestrue
+   \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+   \@safe@activesfalse
+   \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}\@esphack}
+\newcommand\NAT@biblabel[1]{\hfill}
+\newcommand\NAT@biblabelnum[1]{\bibnumfmt{#1}}
+\let\bibnumfmt\@empty
+\providecommand\@biblabel[1]{[#1]}
+\AtBeginDocument{\ifx\bibnumfmt\@empty\let\bibnumfmt\@biblabel\fi}
+\newcommand\NAT@bibsetnum[1]{\settowidth\labelwidth{\@biblabel{#1}}%
+   \setlength{\leftmargin}{\labelwidth}\addtolength{\leftmargin}{\labelsep}%
+   \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}%
+   \ifNAT@openbib
+     \addtolength{\leftmargin}{\bibindent}%
+     \setlength{\itemindent}{-\bibindent}%
+     \setlength{\listparindent}{\itemindent}%
+     \setlength{\parsep}{0pt}%
+   \fi
+}
+\newlength{\bibhang}
+\setlength{\bibhang}{1em}
+\newlength{\bibsep}
+ {\@listi \global\bibsep\itemsep \global\advance\bibsep by\parsep}
+
+\newcommand\NAT@bibsetup%
+   [1]{\setlength{\leftmargin}{\bibhang}\setlength{\itemindent}{-\leftmargin}%
+       \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}}
+\newcommand\NAT@set@cites{%
+  \ifNAT@numbers
+    \ifNAT@super \let\@cite\NAT@citesuper
+       \def\NAT@mbox##1{\unskip\nobreak\textsuperscript{##1}}%
+       \let\citeyearpar=\citeyear
+       \let\NAT@space\relax
+       \def\NAT@super@kern{\kern\p@}%
+    \else
+       \let\NAT@mbox=\mbox
+       \let\@cite\NAT@citenum
+       \let\NAT@space\NAT@spacechar
+       \let\NAT@super@kern\relax
+    \fi
+    \let\@citex\NAT@citexnum
+    \let\@biblabel\NAT@biblabelnum
+    \let\@bibsetup\NAT@bibsetnum
+    \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@num\NAT@close}%
+    \def\natexlab##1{}%
+    \def\NAT@penalty{\penalty\@m}%
+  \else
+    \let\@cite\NAT@cite
+    \let\@citex\NAT@citex
+    \let\@biblabel\NAT@biblabel
+    \let\@bibsetup\NAT@bibsetup
+    \let\NAT@space\NAT@spacechar
+    \let\NAT@penalty\@empty
+    \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}%
+    \def\natexlab##1{##1}%
+  \fi}
+\AtBeginDocument{\NAT@set@cites}
+\AtBeginDocument{\ifx\SK@def\@undefined\else
+\ifx\SK@cite\@empty\else
+  \SK@def\@citex[#1][#2]#3{\SK@\SK@@ref{#3}\SK@@citex[#1][#2]{#3}}\fi
+\ifx\SK@citeauthor\@undefined\def\HAR@checkdef{}\else
+  \let\citeauthor\SK@citeauthor
+  \let\citefullauthor\SK@citefullauthor
+  \let\citeyear\SK@citeyear\fi
+\fi}
+\newif\ifNAT@full\NAT@fullfalse
+\newif\ifNAT@swa
+\DeclareRobustCommand\citet
+   {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
+     \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\newcommand\NAT@citetp{\@ifnextchar[{\NAT@@citetp}{\NAT@@citetp[]}}
+\newcommand\NAT@@citetp{}
+\def\NAT@@citetp[#1]{\@ifnextchar[{\@citex[#1]}{\@citex[][#1]}}
+\DeclareRobustCommand\citep
+   {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\cite
+    {\begingroup\let\NAT@ctype\z@\NAT@partrue\NAT@swatrue
+      \@ifstar{\NAT@fulltrue\NAT@cites}{\NAT@fullfalse\NAT@cites}}
+\newcommand\NAT@cites{\@ifnextchar [{\NAT@@citetp}{%
+     \ifNAT@numbers\else
+     \NAT@swafalse
+     \fi
+    \NAT@@citetp[]}}
+\DeclareRobustCommand\citealt
+   {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citealp
+   {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citenum
+   {\begingroup
+     \NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse\let\textsuperscript\NAT@spacechar
+     \NAT@citexnum[][]}
+\DeclareRobustCommand\citeauthor
+   {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
+    \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citet
+   {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
+     \let\NAT@up\NAT@Up
+     \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citep
+   {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
+     \let\NAT@up\NAT@Up
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citealt
+   {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
+     \let\NAT@up\NAT@Up
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citealp
+   {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
+     \let\NAT@up\NAT@Up
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citeauthor
+   {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
+     \let\NAT@up\NAT@Up
+    \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citeyear
+   {\begingroup\NAT@swafalse\let\NAT@ctype\tw@\NAT@parfalse\NAT@citetp}
+\DeclareRobustCommand\citeyearpar
+   {\begingroup\NAT@swatrue\let\NAT@ctype\tw@\NAT@partrue\NAT@citetp}
+\newcommand\citetext[1]{\NAT@open#1\NAT@close}
+\DeclareRobustCommand\citefullauthor
+   {\citeauthor*}
+\newcommand\defcitealias[2]{%
+   \@ifundefined{al@#1\@extra@b@citeb}{}
+   {\PackageWarning{natbib}{Overwriting existing alias for citation #1}}
+   \@namedef{al@#1\@extra@b@citeb}{#2}}
+\DeclareRobustCommand\citetalias{\begingroup
+   \NAT@swafalse\let\NAT@ctype\thr@@\NAT@parfalse\NAT@citetp}
+\DeclareRobustCommand\citepalias{\begingroup
+   \NAT@swatrue\let\NAT@ctype\thr@@\NAT@partrue\NAT@citetp}
+\renewcommand\nocite[1]{\@bsphack
+  \@for\@citeb:=#1\do{%
+    \@safe@activestrue
+    \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+    \@safe@activesfalse
+    \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+    \if*\@citeb\else
+    \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+       \NAT@citeundefined \PackageWarning{natbib}%
+       {Citation `\@citeb' undefined}}{}\fi}%
+  \@esphack}
+\newcommand\NAT@parse[1]{%
+  \begingroup
+   \let\protect=\@unexpandable@protect
+   \let~\relax
+   \let\active@prefix=\@gobble
+   \edef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}%
+   \aftergroup\NAT@split
+   \expandafter
+  \endgroup
+  \NAT@temp{}{}{}{}{}@@%
+  \expandafter\NAT@parse@date\NAT@date??????@@%
+  \ifciteindex\NAT@index\fi
+}%
+\def\NAT@split#1#2#3#4#5@@{%
+  \gdef\NAT@num{#1}\gdef\NAT@name{#3}\gdef\NAT@date{#2}%
+  \gdef\NAT@all@names{#4}%
+  \ifx\NAT@num\@empty\gdef\NAT@num{0}\fi
+  \ifx\NAT@noname\NAT@all@names \gdef\NAT@all@names{#3}\fi
+}%
+\def\NAT@reset@parser{%
+  \global\let\NAT@num\@empty
+  \global\let\NAT@name\@empty
+  \global\let\NAT@date\@empty
+  \global\let\NAT@all@names\@empty
+}%
+\newcommand\NAT@parse@date{}
+\def\NAT@parse@date#1#2#3#4#5#6@@{%
+  \ifnum\the\catcode`#1=11\def\NAT@year{}\def\NAT@exlab{#1}\else
+  \ifnum\the\catcode`#2=11\def\NAT@year{#1}\def\NAT@exlab{#2}\else
+  \ifnum\the\catcode`#3=11\def\NAT@year{#1#2}\def\NAT@exlab{#3}\else
+  \ifnum\the\catcode`#4=11\def\NAT@year{#1#2#3}\def\NAT@exlab{#4}\else
+    \def\NAT@year{#1#2#3#4}\def\NAT@exlab{{#5}}\fi\fi\fi\fi}
+\newcommand\NAT@index{}
+\let\NAT@makeindex=\makeindex
+\renewcommand\makeindex{\NAT@makeindex
+  \renewcommand\NAT@index{\@bsphack\begingroup
+     \def~{\string~}\@wrindex{\NAT@idxtxt}}}
+\newcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}
+\@ifxundefined\@indexfile{}{\let\NAT@makeindex\relax\makeindex}
+\newif\ifciteindex \citeindexfalse
+\newcommand\citeindextype{default}
+\newcommand\NAT@index@alt{{\let\protect=\noexpand\let~\relax
+  \xdef\NAT@temp{\NAT@idxtxt}}\expandafter\NAT@exp\NAT@temp\@nil}
+\newcommand\NAT@exp{}
+\def\NAT@exp#1\@nil{\index[\citeindextype]{#1}}
+
+\AtBeginDocument{%
+\@ifpackageloaded{index}{\let\NAT@index=\NAT@index@alt}{}}
+\newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd}
+\newcommand\NAT@ifxcmd{\ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi}
+\def\NAT@bare#1(#2)#3(@)#4\@nil#5{%
+  \if @#2
+    \expandafter\NAT@apalk#1, , \@nil{#5}%
+  \else
+  \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{#3}{#5}%
+\fi
+}
+\newcommand\NAT@wrout[5]{%
+\if@filesw
+      {\let\protect\noexpand\let~\relax
+       \immediate
+       \write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}\fi
+\ignorespaces}
+\def\NAT@noname{{}}
+\renewcommand\bibitem{\@ifnextchar[{\@lbibitem}{\@lbibitem[]}}%
+\let\NAT@bibitem@first@sw\@secondoftwo
+\def\@lbibitem[#1]#2{%
+  \if\relax\@extra@b@citeb\relax\else
+    \@ifundefined{br@#2\@extra@b@citeb}{}{%
+     \@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}}%
+    }%
+  \fi
+  \@ifundefined{b@#2\@extra@b@citeb}{%
+   \def\NAT@num{}%
+  }{%
+   \NAT@parse{#2}%
+  }%
+  \def\NAT@tmp{#1}%
+  \expandafter\let\expandafter\bibitemOpen\csname NAT@b@open@#2\endcsname
+  \expandafter\let\expandafter\bibitemShut\csname NAT@b@shut@#2\endcsname
+  \@ifnum{\NAT@merge>\@ne}{%
+   \NAT@bibitem@first@sw{%
+    \@firstoftwo
+   }{%
+    \@ifundefined{NAT@b*@#2}{%
+     \@firstoftwo
+    }{%
+     \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
+     \@secondoftwo
+    }%
+   }%
+  }{%
+   \@firstoftwo
+  }%
+  {%
+   \global\advance\c@NAT@ctr\@ne
+   \@ifx{\NAT@tmp\@empty}{\@firstoftwo}{%
+    \@secondoftwo
+   }%
+   {%
+    \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
+    \global\NAT@stdbsttrue
+   }{}%
+   \bibitem@fin
+   \item[\hfil\NAT@anchor{#2}{\NAT@num}]%
+   \global\let\NAT@bibitem@first@sw\@secondoftwo
+   \NAT@bibitem@init
+  }%
+  {%
+   \NAT@anchor{#2}{}%
+   \NAT@bibitem@cont
+   \bibitem@fin
+  }%
+  \@ifx{\NAT@tmp\@empty}{%
+    \NAT@wrout{\the\c@NAT@ctr}{}{}{}{#2}%
+  }{%
+    \expandafter\NAT@ifcmd\NAT@tmp(@)(@)\@nil{#2}%
+  }%
+}%
+\def\bibitem@fin{%
+ \@ifxundefined\@bibstop{}{\csname bibitem@\@bibstop\endcsname}%
+}%
+\def\NAT@bibitem@init{%
+ \let\@bibstop\@undefined
+}%
+\def\NAT@bibitem@cont{%
+ \let\bibitem@Stop\bibitemContinue
+ \let\bibitem@NoStop\bibitemContinue
+}%
+\def\BibitemOpen{%
+ \bibitemOpen
+}%
+\def\BibitemShut#1{%
+ \def\@bibstop{#1}%
+ \let\bibitem@Stop\bibitemStop
+ \let\bibitem@NoStop\bibitemNoStop
+ \@ifx{\bibitemShut\relax}{\let\@bibitemShut\@empty}{%
+  \expandafter\def\expandafter\@bibitemShut\expandafter{\bibitemShut}%
+ }%
+}%
+\def\@bibitemShut{}%
+\def\bibitemStop{\@bibitemShut}%
+\def\bibitemNoStop{%
+ \@ifx{\@empty\@bibitemShut}{.\spacefactor\@mmm\space}{\@bibitemShut}%
+}%
+\def\bibitemContinue{%
+ \@ifx{\@empty\@bibitemShut}{;\spacefactor\@mmm\space}{\@bibitemShut}%
+}%
+\mathchardef\@mmm=3000 %
+\let\bibitemOpen\relax
+\let\bibitemShut\relax
+\@ifnum{\NAT@merge>\@ne}{%
+\providecommand{\bibAnnote}[3]{%
+  \BibitemShut{#1}%
+  \def\@tempa{#3}\@ifx{\@tempa\@empty}{}{%
+   \begin{quotation}\noindent
+    \textsc{Key:}\ #2\\\textsc{Annotation:}\ \@tempa
+   \end{quotation}%
+  }%
+  \ignorespaces
+}%
+\providecommand{\bibAnnoteFile}[2]{%
+  \IfFileExists{#2}{%
+    \bibAnnote{#1}{#2}{\input{#2}}%
+  }{%
+    \bibAnnote{#1}{#2}{}%
+  }%
+}%
+}{}%
+\def\bibfield{\@ifnum{\NAT@merge>\tw@}{\@bibfield}{\@secondoftwo}}%
+\def\@bibfield#1#2{%
+ \begingroup
+  \let\Doi\@gobble
+  \let\bibinfo\relax
+  \let\restore@protect\@empty
+  \protected@edef\@tempa{#2}%
+  \aftergroup\def\aftergroup\@tempa
+ \expandafter\endgroup\expandafter{\@tempa}%
+ \expandafter\@ifx\expandafter{\csname @bib#1\endcsname\@tempa}{%
+  \expandafter\let\expandafter\@tempa\csname @bib@X#1\endcsname
+ }{%
+  \expandafter\let\csname @bib#1\endcsname\@tempa
+  \expandafter\let\expandafter\@tempa\csname @bib@Y#1\endcsname
+ }%
+ \@ifx{\@tempa\relax}{\let\@tempa\@firstofone}{}%
+ \@tempa{#2}%
+}%
+\def\bibinfo#1{%
+ \expandafter\let\expandafter\@tempa\csname bibinfo@X@#1\endcsname
+ \@ifx{\@tempa\relax}{\@firstofone}{\@tempa}%
+}%
+\def\@bib@Xauthor#1{\let\@bib@Xjournal\@gobble}%
+\def\@bib@Xjournal#1{\begingroup\let\bibinfo@X@journal\@bib@Z@journal#1\endgroup}%
+\def\@bibibid@#1{\textit{ibid}.}%
+\appdef\NAT@bibitem@init{%
+ \let\@bibauthor  \@empty
+ \let\@bibjournal \@empty
+ \let\@bib@Z@journal\@bibibid@
+}%
+\ifx\SK@lbibitem\@undefined\else
+   \let\SK@lbibitem\@lbibitem
+   \def\@lbibitem[#1]#2{%
+     \SK@lbibitem[#1]{#2}\SK@\SK@@label{#2}\ignorespaces}\fi
+\newif\ifNAT@stdbst \NAT@stdbstfalse
+
+\AtEndDocument{%
+  \ifNAT@stdbst\if@filesw
+   \immediate\write\@auxout{%
+    \string\providecommand\string\NAT@force@numbers{}%
+    \string\NAT@force@numbers
+   }%
+  \fi\fi
+ }
+\newcommand\NAT@force@numbers{%
+  \ifNAT@numbers\else
+  \PackageError{natbib}{Bibliography not compatible with author-year
+  citations.\MessageBreak
+  Press <return> to continue in numerical citation style}
+  {Check the bibliography entries for non-compliant syntax,\MessageBreak
+   or select author-year BibTeX style, e.g. plainnat}%
+  \global\NAT@numberstrue\fi}
+
+\providecommand\bibcite{}
+\renewcommand\bibcite[2]{%
+ \@ifundefined{b@#1\@extra@binfo}{\relax}{%
+   \NAT@citemultiple
+   \PackageWarningNoLine{natbib}{Citation `#1' multiply defined}%
+ }%
+ \global\@namedef{b@#1\@extra@binfo}{#2}%
+}%
+\AtEndDocument{\NAT@swatrue\let\bibcite\NAT@testdef}
+\newcommand\NAT@testdef[2]{%
+  \def\NAT@temp{#2}%
+  \expandafter \ifx \csname b@#1\@extra@binfo\endcsname\NAT@temp
+  \else
+    \ifNAT@swa \NAT@swafalse
+      \PackageWarningNoLine{natbib}{%
+        Citation(s) may have changed.\MessageBreak
+        Rerun to get citations correct%
+      }%
+    \fi
+  \fi
+}%
+\newcommand\NAT@apalk{}
+\def\NAT@apalk#1, #2, #3\@nil#4{%
+  \if\relax#2\relax
+    \global\NAT@stdbsttrue
+    \NAT@wrout{#1}{}{}{}{#4}%
+  \else
+    \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
+  \fi
+}%
+\newcommand\citeauthoryear{}
+\def\citeauthoryear#1#2#3(@)(@)\@nil#4{%
+  \if\relax#3\relax
+    \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
+  \else
+    \NAT@wrout{\the\c@NAT@ctr}{#3}{#2}{#1}{#4}%
+  \fi
+}%
+\newcommand\citestarts{\NAT@open}%
+\newcommand\citeends{\NAT@close}%
+\newcommand\betweenauthors{and}%
+\newcommand\astroncite{}
+\def\astroncite#1#2(@)(@)\@nil#3{%
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#3}%
+}%
+\newcommand\citename{}
+\def\citename#1#2(@)(@)\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}}
+\newcommand\harvarditem[4][]{%
+ \if\relax#1\relax
+   \bibitem[#2(#3)]{#4}%
+ \else
+   \bibitem[#1(#3)#2]{#4}%
+ \fi
+}%
+\newcommand\harvardleft{\NAT@open}
+\newcommand\harvardright{\NAT@close}
+\newcommand\harvardyearleft{\NAT@open}
+\newcommand\harvardyearright{\NAT@close}
+\AtBeginDocument{\providecommand{\harvardand}{and}}
+\newcommand\harvardurl[1]{\textbf{URL:} \textit{#1}}
+\providecommand\bibsection{}
+\@ifundefined{chapter}{%
+  \renewcommand\bibsection{%
+   \section*{\refname\@mkboth{\MakeUppercase{\refname}}{\MakeUppercase{\refname}}}%
+  }%
+}{%
+  \@ifxundefined\NAT@sectionbib{%
+    \renewcommand\bibsection{%
+      \chapter*{\bibname\@mkboth{\MakeUppercase{\bibname}}{\MakeUppercase{\bibname}}}%
+    }%
+  }{%
+    \renewcommand\bibsection{%
+      \section*{\bibname\ifx\@mkboth\@gobbletwo\else\markright{\MakeUppercase{\bibname}}\fi}%
+    }%
+  }%
+}%
+\@ifclassloaded{amsart}{\renewcommand\bibsection{\section*{\refname}}}{}%
+\@ifclassloaded{amsbook}{\renewcommand\bibsection{\chapter*{\bibname}}}{}%
+\@ifxundefined\bib@heading{}{\let\bibsection\bib@heading}%
+\newcounter{NAT@ctr}
+\renewenvironment{thebibliography}[1]{%
+ \bibsection
+ \parindent\z@
+ \bibpreamble
+ \bibfont
+ \list{\@biblabel{\the\c@NAT@ctr}}{\@bibsetup{#1}\global\c@NAT@ctr\z@}%
+ \ifNAT@openbib
+   \renewcommand\newblock{\par}%
+ \else
+   \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
+ \fi
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.\@m
+ \let\NAT@bibitem@first@sw\@firstoftwo
+    \let\citeN\cite \let\shortcite\cite
+    \let\citeasnoun\cite
+}{%
+ \bibitem@fin
+ \bibpostamble
+ \def\@noitemerr{%
+  \PackageWarning{natbib}{Empty `thebibliography' environment}%
+ }%
+ \endlist
+ \bibcleanup
+}%
+\let\bibfont\@empty
+\let\bibpreamble\@empty
+\let\bibpostamble\@empty
+\def\bibcleanup{\vskip-\lastskip}%
+\providecommand\reset@font{\relax}
+\providecommand\bibname{Bibliography}
+\providecommand\refname{References}
+\newcommand\NAT@citeundefined{\gdef \NAT@undefined {%
+    \PackageWarningNoLine{natbib}{There were undefined citations}}}
+\let \NAT@undefined \relax
+\newcommand\NAT@citemultiple{\gdef \NAT@multiple {%
+    \PackageWarningNoLine{natbib}{There were multiply defined citations}}}
+\let \NAT@multiple \relax
+\AtEndDocument{\NAT@undefined\NAT@multiple}
+\providecommand\@mkboth[2]{}
+\providecommand\MakeUppercase{\uppercase}
+\providecommand{\@extra@b@citeb}{}
+\gdef\@extra@binfo{}
+\def\NAT@anchor#1#2{%
+ \hyper@natanchorstart{#1\@extra@b@citeb}%
+  \def\@tempa{#2}\@ifx{\@tempa\@empty}{}{\@biblabel{#2}}%
+ \hyper@natanchorend
+}%
+\providecommand\hyper@natanchorstart[1]{}%
+\providecommand\hyper@natanchorend{}%
+\providecommand\hyper@natlinkstart[1]{}%
+\providecommand\hyper@natlinkend{}%
+\providecommand\hyper@natlinkbreak[2]{#1}%
+\AtBeginDocument{%
+  \@ifpackageloaded{babel}{%
+     \let\org@@citex\@citex}{}}
+\providecommand\@safe@activestrue{}%
+\providecommand\@safe@activesfalse{}%
+
+\newcommand\NAT@sort@cites[1]{%
+  \let\NAT@cite@list\@empty
+  \@for\@citeb:=#1\do{\expandafter\NAT@star@cite\@citeb\@@}%
+  \if@filesw
+    \expandafter\immediate\expandafter\write\expandafter\@auxout
+      \expandafter{\expandafter\string\expandafter\citation\expandafter{\NAT@cite@list}}%
+  \fi
+  \@ifnum{\NAT@sort>\z@}{%
+    \expandafter\NAT@sort@cites@\expandafter{\NAT@cite@list}%
+  }{}%
+}%
+\def\NAT@star@cite{%
+  \let\NAT@star@sw\@secondoftwo
+  \@ifnum{\NAT@merge>\z@}{%
+   \@ifnextchar*{%
+    \let\NAT@star@sw\@firstoftwo
+    \NAT@star@cite@star
+   }{%
+    \NAT@star@cite@nostar
+   }%
+  }{%
+   \NAT@star@cite@noextension
+  }%
+}%
+\def\NAT@star@cite@star*{%
+ \NAT@star@cite@nostar
+}%
+\def\NAT@star@cite@nostar{%
+ \let\nat@keyopt@open\@empty
+ \let\nat@keyopt@shut\@empty
+ \@ifnextchar[{\NAT@star@cite@pre}{\NAT@star@cite@pre[]}%
+}%
+\def\NAT@star@cite@pre[#1]{%
+ \def\nat@keyopt@open{#1}%
+ \@ifnextchar[{\NAT@star@cite@post}{\NAT@star@cite@post[]}%
+}%
+\def\NAT@star@cite@post[#1]#2\@@{%
+ \def\nat@keyopt@shut{#1}%
+ \NAT@star@sw{\expandafter\global\expandafter\let\csname NAT@b*@#2\endcsname\@empty}{}%
+ \NAT@cite@list@append{#2}%
+}%
+\def\NAT@star@cite@noextension#1\@@{%
+  \let\nat@keyopt@open\@empty
+  \let\nat@keyopt@shut\@empty
+  \NAT@cite@list@append{#1}%
+}%
+\def\NAT@cite@list@append#1{%
+  \edef\@citeb{\@firstofone#1\@empty}%
+  \if@filesw\@ifxundefined\@cprwrite{}{\expandafter\@cprwrite\@citeb=}\fi
+  \if\relax\nat@keyopt@open\relax\else
+   \global\expandafter\let\csname NAT@b@open@\@citeb\endcsname\nat@keyopt@open
+  \fi
+  \if\relax\nat@keyopt@shut\relax\else
+   \global\expandafter\let\csname NAT@b@shut@\@citeb\endcsname\nat@keyopt@shut
+  \fi
+  \toks@\expandafter{\NAT@cite@list}%
+  \ifx\NAT@cite@list\@empty
+    \@temptokena\expandafter{\@citeb}%
+  \else
+    \@temptokena\expandafter{\expandafter,\@citeb}%
+  \fi
+  \edef\NAT@cite@list{\the\toks@\the\@temptokena}%
+}%
+\newcommand\NAT@sort@cites@[1]{%
+  \count@\z@
+  \@tempcntb\m@ne
+  \let\@celt\delimiter
+  \def\NAT@num@list{}%
+  \let\NAT@cite@list\@empty
+  \let\NAT@nonsort@list\@empty
+  \@for \@citeb:=#1\do{\NAT@make@cite@list}%
+  \ifx\NAT@nonsort@list\@empty\else
+   \protected@edef\NAT@cite@list{\NAT@cite@list\NAT@nonsort@list}%
+  \fi
+  \ifx\NAT@cite@list\@empty\else
+   \protected@edef\NAT@cite@list{\expandafter\NAT@xcom\NAT@cite@list @@}%
+  \fi
+}%
+\def\NAT@make@cite@list{%
+  \advance\count@\@ne
+  \@safe@activestrue
+  \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+  \@safe@activesfalse
+  \@ifundefined{b@\@citeb\@extra@b@citeb}%
+   {\def\NAT@num{A}}%
+   {\NAT@parse{\@citeb}}%
+  \NAT@ifcat@num\NAT@num
+   {\@tempcnta\NAT@num \relax
+    \@ifnum{\@tempcnta<\@tempcntb}{%
+      \let\NAT@@cite@list=\NAT@cite@list
+      \let\NAT@cite@list\@empty
+      \begingroup\let\@celt=\NAT@celt\NAT@num@list\endgroup
+      \protected@edef\NAT@num@list{%
+       \expandafter\NAT@num@celt \NAT@num@list \@gobble @%
+      }%
+    }{%
+      \protected@edef\NAT@num@list{\NAT@num@list \@celt{\NAT@num}}%
+      \protected@edef\NAT@cite@list{\NAT@cite@list\@citeb,}%
+      \@tempcntb\@tempcnta
+    }%
+   }%
+   {\protected@edef\NAT@nonsort@list{\NAT@nonsort@list\@citeb,}}%
+}%
+\def\NAT@celt#1{%
+  \@ifnum{#1>\@tempcnta}{%
+    \xdef\NAT@cite@list{\NAT@cite@list\@citeb,\NAT@@cite@list}%
+    \let\@celt\@gobble
+  }{%
+    \expandafter\def@NAT@cite@lists\NAT@@cite@list\@@
+  }%
+}%
+\def\NAT@num@celt#1#2{%
+ \ifx#1\@celt
+  \@ifnum{#2>\@tempcnta}{%
+    \@celt{\number\@tempcnta}%
+    \@celt{#2}%
+  }{%
+    \@celt{#2}%
+    \expandafter\NAT@num@celt
+  }%
+ \fi
+}%
+\def\def@NAT@cite@lists#1,#2\@@{%
+  \xdef\NAT@cite@list{\NAT@cite@list#1,}%
+  \xdef\NAT@@cite@list{#2}%
+}%
+\def\NAT@nextc#1,#2@@{#1,}
+\def\NAT@restc#1,#2{#2}
+\def\NAT@xcom#1,@@{#1}
+\InputIfFileExists{natbib.cfg}
+       {\typeout{Local config file natbib.cfg used}}{}
+%% 
+%% <<<<< End of generated file <<<<<<
+%%
+%% End of file `natbib.sty'.
Index: doc/papers/concurrency/AMA/AMA-stix/ama/WileyNJD-AMA.bst
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/ama/WileyNJD-AMA.bst	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/ama/WileyNJD-AMA.bst	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,1100 @@
+% 
+% THIS IS AN ALPHA VERSION!!! 
+%
+% USE AT YOUR OWN RISK
+%
+% This should work for articles...I don't know if it works well for
+% books, etc (give it a try and see!).
+%
+% PLEASE COMPARE RESULTS WITH THE INSTRUCTIONS FOR AUTHORS FOR THE
+% JOURNAL YOU ARE SUBMITTING FOR...I CANNOT ACCEPT RESPONSIBILITY
+% FOR REJECTED MANUSCRIPTS (but I will try to fix it if you point out
+% a bug)
+%
+% AMA Manual of Style (JAMA, Cancer, many others..)
+%    -Up to 6 authors, otherwise 3 authors et al.
+%    -Title in italics
+%    -numeric labels
+%    -order-of-reference.
+%    
+%    Author L, Author S, Author D, et al. Title. Journal. 
+%    YYYY;VOL(NUM):PPP-PPP.
+%
+%
+%   History
+%    9/30/85    (HWT)   IEETR Original version, by Howard Trickey.
+%    1/29/88    (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik;
+%    3/27/02    IEETR style used as framework.  Formats heavily changed by
+%               Eric Kort (eric.kort@vai.org)
+%
+%           THIS VERSION DOES NOT WORK WITH BIBTEX 0.98i.
+%
+
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    month
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    title
+    type
+    volume
+    year
+  }
+  {}
+  { label }
+
+INTEGERS { output.state before.all mid.sentence after.quote after.sentence
+        after.quoted.block after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.quote :=
+  #3 'after.sentence :=
+  #4 'after.quoted.block :=
+  #5 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { "" * write$ }
+    { output.state after.quote =
+    { " " * write$ }
+    { output.state after.block =
+        { add.period$ write$
+          newline$
+          "\newblock " write$
+        }
+        { output.state before.all =
+        'write$
+        { output.state after.quoted.block =
+            { write$
+              newline$
+              "\newblock " write$
+            }
+            { add.period$ " " * write$ }
+          if$
+        }
+          if$
+        }
+      if$
+    }
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  ""
+  before.all 'output.state :=
+}
+
+FUNCTION {blank.sep}
+{ after.quote 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ output.state after.quoted.block =
+    'skip$
+    'add.period$
+  if$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { output.state after.quote =
+    { after.quoted.block 'output.state := }
+    { after.block 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+    'skip$
+    { after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\it " swap$ * "}" * }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames etal}
+
+FUNCTION {format.names}
+{ 's :=  % push the name s, pop s and author (already on stack), assign author to s
+  #1 'nameptr := 
+  #0 'etal :=
+
+  s num.names$ 'numnames :=
+  
+  numnames #6 >
+    {#3 'numnames :=
+     #1 'etal :=
+    }
+    {}
+    %end if 
+  if$
+  
+  numnames 'namesleft :=
+  { namesleft #0 > }
+
+  {s nameptr "{ll~}{ff}" format.name$ 't :=
+    namesleft #1 >
+    {t * ", " * }
+    {t}
+    %end if 
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
+
+  etal
+    {", et al. "}
+    {". "}
+  if$
+  *
+}
+
+FUNCTION {format.editors.names}
+{ 's :=  % push the name s, pop s and author (already on stack), assign author to s
+  #1 'nameptr := 
+  #0 'etal :=
+
+  s num.names$ 'numnames :=
+  
+  numnames #6 >
+    {#3 'numnames :=
+     #1 'etal :=
+    }
+    {}
+    %end if 
+  if$
+  
+  numnames 'namesleft :=
+  { namesleft #0 > }
+
+  {s nameptr "{ll~}{ff}" format.name$ 't :=
+    namesleft #1 >
+    {t * ", " * }
+    {t}
+    %end if 
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
+
+  etal
+    {", et al. "}
+    {""}
+  if$
+  *
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.editors.names
+      editor num.names$ #1 >
+    { ", eds." * }
+    { ", ed." * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title ". " *}% modified by SPi-Global on 12Jun2017
+  if$
+}
+
+FUNCTION {format.journal}
+{ journal empty$
+    { "" }
+    { journal ". " *}
+  if$
+}
+
+FUNCTION {format.title.p}
+{ title empty$
+    { "" }
+    { title " " *}
+  if$
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+    { t #1 #2 substring$ "--" = not
+        { "--" *
+          t #2 global.max$ substring$ 't :=
+        }
+        {   { t #1 #1 substring$ "-" = }
+        { "-" *
+          t #2 global.max$ substring$ 't :=
+        }
+          while$
+        }
+      if$
+    }
+    { t #1 #1 substring$ *
+      t #2 global.max$ substring$ 't :=
+    }
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.date}
+{ year empty$
+    { "" }
+    { " " * year }
+  if$
+}
+
+FUNCTION {inproformat.date}
+{ year empty$
+    { "" }
+    { "; " * year }
+  if$
+}
+
+FUNCTION {format.btitle}
+%%{ title emphasize
+{ title % modified by SPi-Global on 12Jun2017
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+    { "" }
+    { series empty$
+    'skip$
+    { " " * series * ", vol. " volume * ": " *}
+      if$
+      "volume and number" number either.or.check
+    }
+  if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+    { number empty$
+    { series field.or.null }
+    { output.state mid.sentence =
+        { "no.~" }
+        { "No.~" }
+      if$
+      number *
+      series empty$
+        { "there's a number but no series in " cite$ * warning$ }
+        { " in " * series * }
+      if$
+    }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { edition "l" change.case$ "~ed." * }
+  if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+    { #1 'multiresult := }
+    { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+    { "" }
+    {":" pages *}
+  if$
+}
+
+FUNCTION {incollecformat.pages}
+{ pages empty$
+    { "" }
+    {" (pp. " pages * ")" *}
+  if$
+}
+
+FUNCTION {format.volume}
+{ volume empty$
+    { "" }
+    { "" volume * }
+  if$
+}
+
+FUNCTION {format.number}
+{ number empty$
+    { "" }
+    { "(" number * ")" *}
+  if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+    { "ch.~" chapter * }
+    { type "l" change.case$ chapter tie.or.space.connect }
+      if$
+      pages empty$
+    'skip$
+    { ", " * format.pages * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "In: " }
+    { "In: " 
+      editor empty$
+      { booktitle emphasize * }
+      { " " * format.editors * " " * booktitle emphasize * ", " * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+    'skip$
+    { pop$
+      output.state after.block =
+    { type "t" change.case$ }
+    { type "l" change.case$ }
+      if$
+    }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$
+  and and and and and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+    %%{ "Tech. Rep." }% modified by SPi-Global - 16Jun2017
+    { "" }
+    'type
+  if$
+  number empty$
+    { "l" change.case$ }
+    { number tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.addr.pub}
+{ publisher empty$
+    { "" }
+    { address empty$
+    { "" }
+    { address ": " * }
+      if$
+      publisher * " " *
+    }
+  if$
+}
+
+FUNCTION {format.book.addr.pub}
+{ publisher empty$
+    { "" }
+    { address empty$
+    { "" }
+    { address ": " * }
+      if$
+      publisher * "; " *
+    }
+  if$
+}
+
+FUNCTION {format.paddress}
+{ address empty$
+    { "" }
+    { "(" address * ")" * }
+  if$
+}
+
+FUNCTION {format.ppaddress}
+{ address empty$
+    { "" }
+    { "; " address * "" * }
+  if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+    { journal empty$
+    { "need key or journal for " cite$ * " to crossref " * crossref *
+      warning$
+      ""
+    }
+    { "in {\em " journal * "\/}" * }
+      if$
+    }
+    { "in " key * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+  editor num.names$ duplicate$
+  #2 >
+    { pop$ " {\em et~al.}" * }
+    { #2 <
+    'skip$
+    { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+        { " {\em et~al.}" * }
+        { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+      if$
+    }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      "In "
+    }
+    { "Vol.~" volume *
+      " of " *
+    }
+  if$
+  editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+    { series empty$
+        { "need editor, key, or series for " cite$ * " to crossref " *
+          crossref * warning$
+          "" *
+        }
+        { "{\em " * series * "\/}" * }
+      if$
+    }
+    { key * }
+      if$
+    }
+    { format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+    { booktitle empty$
+        { "need editor, key, or booktitle for " cite$ * " to crossref " *
+          crossref * warning$
+          ""
+        }
+        { "in {\em " booktitle * "\/}" * }
+      if$
+    }
+    { "in " key * }
+      if$
+    }
+    { "in " format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {no.blank.or.punct}
+{  "" * before.all 'output.state :=
+}
+
+FUNCTION {add.semicolon}
+{
+  ";" *
+  no.blank.or.punct
+}
+
+FUNCTION {add.colon}
+{
+  ": " *
+  no.blank.or.punct
+}
+
+FUNCTION {add.space}
+{
+  " " *
+  no.blank.or.punct
+}
+
+FUNCTION {article}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title "title" output.check
+  blank.sep
+  crossref missing$
+    { format.journal emphasize "journal" output.check
+      format.date add.semicolon "year" output.check
+      format.volume output
+      format.number output
+      format.pages output
+    }
+    { format.article.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+    { "author and editor" editor either.or.check }
+    'skip$
+      if$
+    }
+  if$
+  format.btitle emphasize "title"  output.check
+  crossref missing$
+    { format.bvolume output
+      new.block
+      format.number.series output
+      format.book.addr.pub "publisher" output.check
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+  format.authors output
+  title empty$
+    { "empty title in " cite$ * warning$
+      howpublished new.sentence.checka
+    }
+    { howpublished empty$ not
+      address empty$ month empty$ year empty$ and and
+      or
+    { format.title.p output.nonnull }
+    { format.title output.nonnull }
+      if$
+      blank.sep
+    }
+  if$
+  howpublished output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+    { "author and editor" editor either.or.check }
+    'skip$
+      if$
+    }
+  if$
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.number.series output
+      format.addr.pub "publisher" output.check
+    }
+    { format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title "title" output.check
+  blank.sep
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.number.series add.period$ add.space output
+      format.bvolume output
+      format.addr.pub "publisher" output.check
+      format.edition output
+      format.date "year" output.check
+      %%format.chapter.pages output
+      incollecformat.pages output
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title "title" output.check
+  blank.sep
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      blank.sep
+      format.bvolume output
+      format.number.series output
+      new.block
+      format.pages output
+      organization output
+      publisher output
+      inproformat.date "year" output.check
+      format.ppaddress output
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+  author empty$
+    { new.block organization empty$
+    'skip$
+    { new.block organization output.nonnull
+      new.block address output
+    }
+      if$
+    }
+    { format.authors output.nonnull }
+  if$
+  format.btitle "title" output.check
+  author empty$
+    { new.block organization empty$
+    { new.block address new.block.checka
+      address output
+    }
+    'skip$
+      if$
+    }
+    { new.block organization new.block address new.block.checkb
+      organization output
+      address output
+    }
+  if$
+  new.block
+  format.edition output
+  new.block
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title "title" output.check
+  blank.sep
+  "Master's thesis" format.thesis.type output.nonnull
+  new.block
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {format.note}
+{ note empty$
+    { "" }
+    { note "; " *}
+  if$
+}
+
+FUNCTION {misc}
+{ output.bibitem
+  format.authors output
+  title empty$
+    { howpublished new.sentence.checka }
+    { howpublished empty$ not
+      month empty$ year empty$ and
+      or
+    { format.title.p output.nonnull }
+    { format.title emphasize output.nonnull }
+      if$
+      blank.sep
+    }
+  if$
+  howpublished output
+  new.block
+  format.note output 
+  new.block
+  format.date output
+  fin.entry
+  empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  format.btitle "title" output.check
+  new.block
+  "PhD thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+  editor empty$
+    { organization output }
+    { format.editors output.nonnull }
+  if$
+  format.btitle "title" output.check
+  format.bvolume output
+  format.number.series output
+  format.paddress output
+  editor empty$
+    'skip$
+    { organization output }
+  if$
+  publisher output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {add.spperiod}
+{
+  ". " *
+  no.blank.or.punct
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title emphasize "title" output.check
+  blank.sep
+  format.tr.number add.colon output.nonnull
+  institution "institution" output.check
+  address output
+  add.semicolon add.space format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title.p "title" output.check
+  blank.sep
+  note "note" output.check
+  format.date output
+  fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications ACM"}
+
+MACRO {ibmjrd} {"IBM J. Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems~J."}
+
+MACRO {ieeese} {"IEEE Trans. Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Trans. Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Trans. Computer-Aided Design"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"J.~ACM"}
+
+MACRO {jcss} {"J.~Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM J. Computing"}
+
+MACRO {tocs} {"ACM Trans. Computer Systems"}
+
+MACRO {tods} {"ACM Trans. Database Systems"}
+
+MACRO {tog} {"ACM Trans. Graphics"}
+
+MACRO {toms} {"ACM Trans. Mathematical Software"}
+
+MACRO {toois} {"ACM Trans. Office Information Systems"}
+
+MACRO {toplas} {"ACM Trans. Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+STRINGS { longest.label }
+
+INTEGERS { number.label longest.label.width }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #1 'number.label :=
+  #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ number.label int.to.str$ 'label :=
+  number.label #1 + 'number.label :=
+  label width$ longest.label.width >
+    { label 'longest.label :=
+      label width$ 'longest.label.width :=
+    }
+    'skip$
+  if$
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {longest.label.pass}
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+    'skip$
+    { preamble$ write$ newline$ }
+  if$
+  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+  "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
Index: doc/papers/concurrency/AMA/AMA-stix/ama/WileyNJD-v2.cls
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/ama/WileyNJD-v2.cls	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/ama/WileyNJD-v2.cls	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,3458 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% This file is copyright by SPi Technologies Ltd. All rights reserved.
+%%
+%% Author:       SPi, LaTeX Development Team, Chennai (India)
+%% Created On: 
+%% Last Modified By:
+%% Last Modified On:
+%% Description:  Class file to support authoring template in LaTeX typesetting 
+%%               for Wiley Journals
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}[2009/09/24]
+\ProvidesClass{WileyNJD-v2}
+              [2017/06/23 v0.2 Standard LaTeX document class for Journal]
+
+\newif\if@cropmarkson\@cropmarksonfalse
+\newif\if@croppage\@croppagefalse
+\newif\if@draftruleson\@draftrulesonfalse
+\newif\if@exactptsize\@exactptsizefalse
+\newif\if@pagenum   \@pagenumfalse%
+\newif\if@purexml\global\@purexmlfalse
+\newif\if@xml\global\@xmlfalse
+\newif\if@hyperrefon  \@hyperrefonfalse%
+\newif\ifbibunnumbered\global\bibunnumberedtrue%
+\newif\ifproof\global\prooffalse%
+\newif\ifEqnSpan\global\EqnSpantrue% 
+\newif\if@dblspace\global\@dblspacefalse% 
+
+\newif\if@font@stix\global\@font@stixfalse%
+\newif\if@large@design\global\@large@designtrue%
+\newif\if@small@design\global\@small@designfalse%
+
+
+\newif\if@APArefstyle\global\@APArefstylefalse%
+\newif\if@AMSrefstyle\global\@AMSrefstylefalse%
+\newif\if@AMArefstyle\global\@AMArefstylefalse%
+\newif\if@Vancouverrefstyle\global\@Vancouverrefstylefalse%
+\newif\if@Chemistryrefstyle\global\@Chemistryrefstylefalse%
+
+\newif\if@STIXLargeOneCol\global\@STIXLargeOneColfalse%
+\newif\if@STIXSmall\global\@STIXSmallfalse%
+\newif\if@STIXLargeTwoCol\global\@STIXLargeTwoColfalse%
+
+\newif\if@LATOLargeOneCol\global\@LATOLargeOneColfalse%
+\newif\if@LATOSmall\global\@LATOSmallfalse%
+\newif\if@LATOLargeTwoCol\global\@LATOLargeTwoColfalse%
+
+\def\dummyalphabet{\vphantom{abcdefghijklmnopqrstuvwxyz0123456789}}
+
+\DeclareOption{STIX1COL}{\global\@STIXLargeOneColtrue\global\@font@stixtrue}
+\DeclareOption{STIX2COL}{\global\@STIXLargeTwoColtrue\global\@font@stixtrue}
+\DeclareOption{STIXSMALL}{\global\@STIXSmalltrue \global\@font@stixtrue}
+\DeclareOption{LATO1COL}{\global\@LATOLargeOneColtrue\global\@font@stixfalse}
+\DeclareOption{LATO2COL}{\global\@LATOLargeTwoColtrue\global\@font@stixfalse}
+\DeclareOption{LATOSMALL}{\global\@LATOSmalltrue\global\@font@stixfalse}
+
+
+\DeclareOption{APA}{\global\@APArefstyletrue}
+\DeclareOption{AMS}{\global\@AMSrefstyletrue}
+\DeclareOption{ACS}{\global\@Chemistryrefstyletrue}
+\DeclareOption{AMA}{\global\@AMArefstyletrue}
+\DeclareOption{VANCOUVER}{\global\@Vancouverrefstyletrue}
+
+\DeclareOption{doublespace}{\global\@dblspacetrue}
+
+\DeclareOption{draftrules}{\global\@draftrulesontrue}
+\DeclareOption{exactsize}{\global\@exactptsizetrue}%
+\DeclareOption{noexactsize}{\global\@exactptsizefalse}%
+\DeclareOption{croppage}{\global\@croppagetrue\global\@cropmarksontrue}%
+\DeclareOption{number}{\xdef\@biboptions{numbers}}
+\DeclareOption{numbers}{\xdef\@biboptions{numbers}}
+\DeclareOption{EqnSpan}{\global\EqnSpantrue}%%
+
+\DeclareOption{proof}{%
+\global\prooftrue%
+\global\@hyperrefontrue%
+}%
+
+\DeclareOption{final}{%
+\global\prooffalse%
+\global\@hyperrefontrue% links and bookmarks are removed through PDF action list post PDF creation
+}%
+
+\def\@JrnlID{}%
+\gdef\JrnlID#1{\gdef\@JrnlID{#1}}%
+
+\def\@YES{YES}%
+\def\@NO{NO}%
+
+%
+%%%%%%%%% From Boolean Package %%%%%%%%%
+%
+
+\newcommand {\TRUE}[2]{#1}
+\newcommand {\FALSE}[2]{#2}
+
+%% Public commands are also given inner hidden names
+
+\let \bln@true \TRUE
+\let \bln@false \FALSE
+
+\newcommand {\AND}[2]{#1{#2}{\bln@false}}
+\newcommand {\OR}[2]{#1{\bln@true}{#2}}
+\newcommand {\NOT}[1]{#1{\bln@false}{\bln@true}}
+\newcommand {\IF}[3]{#1{#2}{#3}}
+
+\let \bln@and \AND
+\let \bln@or  \OR
+\let \bln@not \NOT
+\let \bln@if  \IF
+
+
+%% To convert if.. macros into Booleans:
+
+\newcommand {\texbool}[1]
+    {#1\let \bln@do \bln@true \else \let \bln@do \bln@false\fi \bln@do}
+%% Does not work
+\let \bln@tex \texbool
+
+\newcommand {\ifxbool}[2]
+    {\ifx #1#2\let \bln@do \bln@true \else \let \bln@do \bln@false \fi \bln@do}
+\let \bln@ifx \ifxbool
+
+\newcommand {\ifybool}[2]
+    {\def \bln@testa{#1}\ifxbool{\bln@testa}{#2}}
+\let \bln@ify \ifybool
+
+\newcommand {\ifequalbool}[2]
+    {\def \bln@testa{#1}\def \bln@testb{#2}\ifxbool{\bln@testa}{\bln@testb}}
+\let \bln@ifequal \ifequalbool
+
+\def \bln@empty {}
+\newcommand {\ifemptybool}[1]
+    {\ifybool{#1}{\bln@empty}}
+\let \bln@ifempty \ifemptybool
+
+%% To force evaluation, e.g. if a blnlean expression is to be used several
+%% times. This takes a Boolean expression and returns a Boolean value, i.e.
+%% \True or \False.
+
+\newcommand* {\letboolval}[2]
+        {#2{\let #1\bln@true}{\let #1\bln@false}}
+\newcommand* {\newboolval}[2]
+        {\@ifdefinable #1{\letboolval{#1}{#2}}}
+
+%% We provide list versions of And and Or
+
+\def \bln@scan #1,#2\bln@to#3#4{%
+    \bln@ifempty{#2}{#3{#4}{#1}}
+          {\bln@scan #2\bln@to {#3}{#3{#4}{#1}}}%
+}
+\def \bln@eval #1#2#3{%
+    \bln@ifempty{#1}{#3}%
+          {\bln@scan #1,\bln@to {#2}{#3}}%
+}
+
+\newcommand*{\ANDL}[1]{\bln@eval {#1}{\bln@and}{\bln@true}}
+\newcommand*{\ORL} [1]{\bln@eval {#1}{\bln@or}{\bln@false}}
+
+%% In some contexts, shorter names may be more convenient
+
+\newcommand*{\ShorterBooleanNames}{%
+  \let \true  \bln@true
+  \let \false \bln@true
+  \let \or    \bln@or
+  \let \and   \bln@and
+  \let \not   \bln@not
+  \let \orl   \bln@orl
+  \let \andl  \bln@andl
+}
+
+%% Comparisson between strings
+
+\newcommand {\stringmatch}[3]{%
+   \def \@match ##1#2##2\str@sep ##3\str@sep ##4\str@end
+        {#1{##1}{##2}{\ifequalbool{#2}{##3}}}%
+   \@match #3\str@sep #2\str@sep \str@sep \str@end
+}
+\let \str@match \stringmatch
+
+%% The following commands takes in order Prefix Infix Suffix Left
+
+\def \str@infix  #1#2#3{#3}
+\def \str@prefix #1#2#3{\AND{#3}{\ifemptybool{#1}}}
+\def \str@suffix #1#2#3{\AND{#3}{\ifemptybool{#2}}}
+
+\newcommand {\ifstringinfix} {\str@match {\str@infix}}
+\newcommand {\ifstringsuffix}{\str@match {\str@suffix}}
+\newcommand {\ifstringprefix}{\str@match {\str@prefix}}
+
+%%%%%%%%%%% From ifjobname Package %%%%%%%%%%%%%
+
+\edef \@jobname {\jobname}
+
+%% Simple equality
+\def \job@eattwo #1#2{}
+\def \ifjobname #1{%
+   \edef \job@tmp {\expandafter \string \csname x#1\endcsname}%
+   \edef \job@name {\expandafter \job@eattwo \job@tmp}%
+   \ifxbool{\@jobname}{\job@name}%
+}
+
+%%
+
+\newtoks \job@temptoken
+
+\def \ifjob@iffix #1#2{%
+   \edef \@tmp {\expandafter \string \csname x#2\endcsname}%
+   \edef \job@name {\expandafter \job@eattwo \@tmp}%
+   \job@temptoken{\def \@match ##1}%
+   \@temptokena={##2\relax ##3\relax
+           {\def \tmp@prefix {##1}\def \tmp@suffix {##2}\def \tmp@left
+           {##3}}}%
+   \let \arg@one \job@name%
+   \edef \@tmp{\the \job@temptoken\job@name\the \@temptokena}\@tmp
+   \edef \@tmp{\noexpand\@match \@jobname \relax \job@name \relax \relax}\@tmp
+   #1}
+
+\def \job@infix {\ifxbool{\tmp@left}{\arg@one}}
+\def \job@suffix
+     {\AND{\ifxbool{\tmp@left}{\arg@one}}{\ifxbool{\empty}{\tmp@suffix}}}
+\def \job@prefix
+     {\AND{\ifxbool{\tmp@left}{\arg@one}}{\ifxbool{\empty}{\tmp@prefix}}}
+
+\newcommand {\ifjobinfix} {\ifjob@iffix {\job@infix}}
+\newcommand {\ifjobsuffix}{\ifjob@iffix {\job@suffix}}
+\newcommand {\ifjobprefix}{\ifjob@iffix {\job@prefix}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%\ExecuteOptions{twosidecrop,crop,centre,noinfo,a3paper,exactsize,croppage}%
+\ProcessOptions
+\LoadClass[twoside,fleqn,onecolumn]{article}%
+
+%\usepackage{etex}%
+%\reserveinserts{28}% included etex package and \reserveinserts{...} to avoid no room for \newinserts, \newcounts or \newskips etc.
+\RequirePackage{graphicx,multicol}%
+\RequirePackage{multirow}%
+\RequirePackage{cuted}%
+\RequirePackage{ifpdf}%
+\RequirePackage{url}\def\UrlFont{}%\urlstyle{sf}
+\RequirePackage[strict]{changepage}%
+\RequirePackage{calc}%
+\RequirePackage{xcolor}%
+\RequirePackage{float}%
+\RequirePackage{floatpag}%
+\floatpagestyle{headings}%
+\rotfloatpagestyle{headings}%modified from plain to headings to get header and footer for sidewaystable%
+\RequirePackage{dblfloatfix}%
+\RequirePackage[figuresright]{rotating}%
+\RequirePackage{longtable}%
+%%\RequirePackage{threeparttable}%
+\RequirePackage{ulem}%
+\RequirePackage{enumerate}%
+\RequirePackage{soul}
+\usepackage{caption}
+%%
+%\if@hyperrefon%
+%  \if@xml%
+     \RequirePackage{hyperref}%
+%  \else%
+%     \RequirePackage{hyperref}%
+%  \fi%
+%  \RequirePackage{breakurl}%
+  \hypersetup{bookmarksopen=true,%
+              bookmarksdepth=3}%
+  \RequirePackage{bookmark}% if bookmark package is commented bookmarks are getting printed at the beginning of the file in the output
+%\else%
+%  \RequirePackage{hyperref}%
+%  \RequirePackage{breakurl}%
+%  \hypersetup{bookmarksopen=true,%
+%              bookmarksdepth=3}%
+%  \RequirePackage{bookmark}% if bookmark package is commented bookmarks are getting printed at the beginning of the file in the output
+%\fi%
+\IfFileExists{subfigure.sty}{}{\RequirePackage[labelformat=empty]{subfig}}%
+
+\RequirePackage{twoopt}%
+\RequirePackage[bottom]{footmisc}% to place footnotes below floats
+
+%\if@xml%
+%\else%
+%%%%%%% For pagenumbering automations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\usepackage{alphalph}%
+%\usepackage[pagecontinue=true,alphMult=ab,AlphMulti=AB,fnsymbolmult=true,romanMult=true,RomanMulti=true]{pageslts}
+%\AtBeginDocument{\pagenumbering{arabic}}%% for pagesLTS package
+%%%%%%% end pagenumbering automations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\fi%
+
+\AtBeginDocument{\if@dblspace\usepackage{setspace}\doublespacing\fi}%
+
+\RequirePackage{tabularx}%%  COMPULSARILY HAS TO BE INPUTTED TO USE \tabpara% XMT: Update
+
+
+%\newcounter{boxcnt}%
+%\newcommand\boxsection[1]{\begingroup\vskip2pt%
+%\refstepcounter{boxcnt}%
+%\vbox{{\textcolor{black!75}{\bfseries BOX \theboxcnt.}}\quad {\bfseries#1}}\par%
+%\removelastskip\vskip4pt%
+%\endgroup}
+
+
+%\usepackage{mdframed}
+%\mdfsetup{linewidth=1pt,topline=true,bottomline=true,skipabove=\topskip,skipbelow=\topskip}
+%\newenvironment{boxtext}{\begingroup\begin{fcolorbox}{black}{white}%
+%}{\par\end{fcolorbox}\endgroup}
+
+%%%%%%%%%%%%%%%%%%%%%boxtext%%%%%%%%%%%%%%%%%%%%%
+\def\ColorDefns{%
+\definecolor{boxrulecol}{cmyk}{0,0,0,0}%
+\definecolor{boxbodycol}{cmyk}{0,0,0,0}}%
+
+\newdimen\tfboxrule%
+\newdimen\bfboxrule%
+
+\def\@spframeb@x#1{%
+  \@tempdima\fboxrule
+  \advance\@tempdima\fboxsep
+  \advance\@tempdima\dp\@tempboxa
+  \leavevmode
+  \hbox{%
+    \lower\@tempdima\hbox{%
+      \vbox{%
+        \hrule\@height\tfboxrule
+        \hbox{%
+          \vrule\@width\fboxrule
+          #1%
+          \vbox{%
+            \vskip\fboxsep
+            \box\@tempboxa
+            \vskip\fboxsep}%
+          #1%
+          \vrule\@width\fboxrule}%
+        \hrule\@height\bfboxrule}%
+                          }%
+        }%
+}%
+
+
+
+\newdimen\BXRuleThickness%
+\BXRuleThickness=0.25pt%
+
+\newdimen\BXleftrightskipdimen%
+\BXleftrightskipdimen=8pt%
+
+\newdimen\BXhsize%
+
+\advance\BXhsize by -2\BXRuleThickness%(rule thickness)
+\advance\BXhsize by -2\BXleftrightskipdimen%(rule thickness)
+
+\newdimen\FreePageSpace%To find out the FreeSpace
+\newdimen\ovsize%
+
+\newskip\adjustskip%
+\adjustskip=0pt plus10pt minus1pt%
+
+\gdef\ComputeFreeSpaceOnPage{%
+\par%
+\ifdim\pagetotal=0pt%
+   \global\FreePageSpace=\vsize%
+   \global\advance\FreePageSpace by -\adjustskip%
+\else%
+   \FreePageSpace=\pagegoal%
+  \ifvoid\footins%
+     \global\advance\FreePageSpace by -\pagetotal%
+     \global\advance\FreePageSpace by -\adjustskip%
+  \else%
+    \setbox3=\vbox{\unvbox\footins}%
+    \htftbox=\ht3%
+    \advance\htftbox by \dp3%
+    \global\advance\FreePageSpace by -\pagetotal%
+    \global\advance\FreePageSpace by -\htftbox%
+    \global\advance\FreePageSpace by -\adjustskip%
+  \fi%
+\fi%
+}%
+
+\newbox\BXbox%
+
+\gdef\overprinton{\special{ps:gsave
+true setoverprint}}
+
+\gdef\overprintoff{\special{ps:grestore
+false setoverprint}}
+
+\long\def\BXboxfirst#1{\begingroup%\undefined%
+\fboxsep=\BXleftrightskipdimen%
+\fboxrule=\BXRuleThickness\tfboxrule=\BXRuleThickness\bfboxrule=\BXRuleThickness%
+\setbox\BXbox=\vbox{\hsize=\BXhsize\hsize=\BXhsize\fbox{\vbox{#1}}}%
+\box\BXbox%
+\endgroup}%
+
+\long\def\BXboxmid#1{\begingroup%\undefined%
+\fboxsep=\BXleftrightskipdimen%
+\fboxrule=\BXRuleThickness\tfboxrule=\BXRuleThickness\bfboxrule=\BXRuleThickness%
+\setbox\BXbox=\vbox{\hsize=\BXhsize\hsize=\BXhsize\fbox{\vbox{#1}}}%
+\box\BXbox%
+\endgroup}%
+
+\long\def\BXboxlast#1{\begingroup%\undefined%
+\fboxsep=\BXleftrightskipdimen%
+\fboxrule=\BXRuleThickness\tfboxrule=\BXRuleThickness\bfboxrule=\BXRuleThickness%
+\setbox\BXbox=\vbox{\hsize=\BXhsize\hsize=\BXhsize\fbox{\vbox{#1}}}%
+\box\BXbox%
+\endgroup}%
+	
+\long\def\BXboxfull#1{\begingroup%
+\fboxsep=\BXleftrightskipdimen%
+\fboxrule=\BXRuleThickness\tfboxrule=\BXRuleThickness\bfboxrule=\BXRuleThickness%
+\setbox\BXbox=\vbox{\hsize=\BXhsize\hsize=\BXhsize\fbox{\vbox{#1}}}%
+\box\BXbox%
+\endgroup}%
+
+\newskip\xxptspaceamount%
+\xxptspaceamount=20pt plus10pt minus5pt%
+
+\newskip\BXboxoutbnewskip%
+\BXboxoutbnewskip=\xxptspaceamount%
+
+\def\BXboxoutbskip{\removelastskip\vskip\BXboxoutbnewskip}%
+
+\newdimen\BXdim%
+
+\def\boxejectdefns{\vfill\eject}%
+
+\long\def\BX#1{\begingroup%
+\ComputeFreeSpaceOnPage%
+\BXdim=\ht#1\advance\BXdim by \dp#1%
+\ifdim\BXdim>\FreePageSpace%
+\advance\FreePageSpace by -\BXboxoutbnewskip%outside space before definition
+\advance\FreePageSpace by -\BXleftrightskipdimen%bottom space in the first box
+  \setbox8=\vbox{\unvbox#1}%
+  \setbox1=\vsplit8to\FreePageSpace%
+  \setbox1=\vbox{\unvbox1}%
+  \setbox2=\vbox{\unvbox8}%
+  \BXboxfirst{\unvbox1}\boxejectdefns%
+\loop\ifdim\ht2>\vsize%
+  \ovsize=\vsize%
+  \advance\ovsize by -2\BXleftrightskipdimen%
+  \setbox1=\vsplit2to\ovsize%
+  \setbox1=\vbox{\unvbox1}%
+  \BXboxmid{\unvbox1}\boxejectdefns%
+\repeat%
+  \BXboxlast{\unvbox2}%
+\else%
+\BXboxfull{\unvbox#1}%
+\fi%
+\endgroup}%
+
+
+
+
+\newbox\BXgraybox%
+\newenvironment{boxtext}{\begingroup\parskip=0pt\parindent=0pt%
+%\let\section=\boxhead%
+\let\@frameb@x\@spframeb@x%
+\fboxsep=5pt\hsize=\BXhsize\parindent=0pt%
+\setbox\BXgraybox=\vbox\bgroup%\leftskip=1pt%
+\nointerlineskip\vskip0pt%%
+%\reset@font\tabbodyfont%
+\removelastskip\noindent}%
+{\egroup\hsize=\hsize\BXboxoutbskip\BX{\BXgraybox}\endgroup}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+%% ========================================================= %%
+%% If array package is included before dcolumn package,      %%
+%% array environment inside eqnarray throw errors            %%
+%% array package is included in dcolumn package; do not      %%
+%% include array.sty again in Wileyarticle.cls anywhere;     %%
+%% ========================================================= %%
+\RequirePackage{varwidth}%
+\RequirePackage{dcolumn}% 
+%
+%% Fonts Used
+%
+\if@STIXLargeOneCol%
+\RequirePackage[not1,notextcomp,lcgreekalpha]{stix}%
+\usepackage[T1]{fontenc}
+\BXhsize=170mm%
+\else%
+\if@STIXLargeTwoCol%
+\RequirePackage[not1,notextcomp,lcgreekalpha]{stix}%
+\usepackage[T1]{fontenc}
+\BXhsize=19pc%
+\else%
+\if@STIXSmall%
+\RequirePackage[not1,notextcomp,lcgreekalpha]{stix}%
+\usepackage[T1]{fontenc}
+\BXhsize=170mm%
+\else%
+\if@LATOLargeTwoCol%
+\usepackage[default]{lato}
+\usepackage[T1]{fontenc}
+  \fontfamily{fla}%
+ \renewcommand{\rmdefault}{fla}%
+  \renewcommand{\sfdefault}{fla}%
+\BXhsize=19pc%
+\else%
+\if@LATOLargeOneCol%
+\usepackage[default]{lato}
+\usepackage[T1]{fontenc}
+  \fontfamily{fla}%
+ \renewcommand{\rmdefault}{fla}%
+  \renewcommand{\sfdefault}{fla}%
+\everymath{\sf}%  \renewcommand*{\mathsf}{fla}%
+\BXhsize=170mm%
+\else%
+\if@LATOSmall%
+\usepackage[default]{lato}
+\usepackage[T1]{fontenc}
+  \fontfamily{fla}%
+ \renewcommand{\rmdefault}{fla}%
+  \renewcommand{\sfdefault}{fla}%
+\BXhsize=170mm%
+\else%
+\fi\fi\fi\fi\fi\fi%
+
+%\RequirePackage[not1,notextcomp,lcgreekalpha]{stix}%
+
+\captionsetup[figure]{labelformat=simple, labelsep=space, skip=10pt, labelfont=bf}
+\captionsetup[table]{labelformat=simple, labelsep=space, skip=10pt, labelfont=bf}
+\renewcommand{\thefigure}{\arabic{figure}}
+
+\renewcommand{\thetable}{\arabic{table}}
+
+\renewcommand\figurename{\textbf{FIGURE}}%%
+\renewcommand\tablename{\textbf{TABLE}} %%
+
+\def\fnum@figure{\figurenumfont{\figurename}\space\relax\textbf{\thefigure\hskip9pt}} %%LN
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Layout Settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\newlength\trimwidth
+\newlength\trimheight
+\newlength\typewidth
+\newlength\typeheight
+\newlength\normaltextheight
+\newlength\blindfoliodrop
+\newlength\figheight
+\newlength\figwidth
+\newlength\tabledim
+
+\if@STIXLargeOneCol%
+\setlength\paperwidth{210mm}%
+\setlength\paperheight{276mm}%
+
+\setlength\typeheight{62\baselineskip}
+\setlength\textheight{53\baselineskip}%
+\addtolength\textheight{-6.9\p@}%
+
+\setlength\typewidth{177.8mm}
+\setlength\textwidth{177.8mm}
+
+%%\addtolength\textwidth{1.8\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {15.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+\addtolength\topmargin{5\p@}%
+\setlength\oddsidemargin{45\p@}%
+\setlength\evensidemargin{45\p@}%
+
+\setlength\footskip{51\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+%\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+\setlength{\skip\footins}{18pt plus2pt minus2pt}%
+
+\newskip\abs@coli@hsize\abs@coli@hsize12pc%
+\newskip\abs@colii@hsize\abs@colii@hsize29pc%
+
+\RequirePackage[paperwidth=210mm,
+    paperheight=276mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+%    text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\if@STIXLargeTwoCol%
+\setlength\paperwidth{210mm}%
+\setlength\paperheight{276mm}%
+
+\setlength\typeheight{62\baselineskip}
+\setlength\textheight{53\baselineskip}%
+\addtolength\textheight{-6.9\p@}%
+
+\setlength\typewidth{177.8mm}
+\setlength\textwidth{177.8mm}
+
+%%\addtolength\textwidth{1.8\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {15.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+\addtolength\topmargin{5\p@}%
+\setlength\oddsidemargin{45\p@}%
+\setlength\evensidemargin{45\p@}%
+
+\setlength\footskip{51\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+%\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+\setlength{\skip\footins}{18pt plus2pt minus2pt}%
+
+\newskip\abs@coli@hsize\abs@coli@hsize12pc%
+\newskip\abs@colii@hsize\abs@colii@hsize29pc%
+
+\RequirePackage[paperwidth=210mm,
+    paperheight=276mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+%    text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,twocolumn,columnsep=1pc,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\if@STIXSmall%
+\setlength\paperwidth{171mm}%
+\setlength\paperheight{246mm}%
+
+\setlength\typeheight{56\baselineskip}
+\setlength\typewidth{177mm}
+%
+\setlength\textheight{47\baselineskip}%
+\addtolength\textheight{-5.1\p@}%
+\setlength\textwidth{33.8pc}
+%\addtolength\textwidth{2\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {21.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+%\addtolength\topmargin{4\p@}%
+\setlength\oddsidemargin{40.5\p@}%
+\setlength\evensidemargin{40.5\p@}%
+
+\setlength\footskip{22\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+%\setlength{\skip\footins}{22pt plus2pt minus2pt}%
+
+\setlength\parindent{15pt}% \z@
+
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+\renewcommand\baselinestretch{}
+\parskip=0pt%
+\newskip\abs@coli@hsize\abs@coli@hsize11pc%
+\newskip\abs@colii@hsize\abs@colii@hsize21.7pc%
+
+\RequirePackage[paperwidth=171mm,
+    paperheight=246mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+ %   text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\if@LATOLargeTwoCol%
+\setlength\paperwidth{210mm}%
+\setlength\paperheight{276mm}%
+
+\setlength\typeheight{62\baselineskip}
+\setlength\textheight{53\baselineskip}%
+\addtolength\textheight{-6.9\p@}%
+
+\setlength\typewidth{177.8mm}
+\setlength\textwidth{177.8mm}
+
+%%\addtolength\textwidth{1.8\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {15.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+\addtolength\topmargin{5\p@}%
+\setlength\oddsidemargin{45\p@}%
+\setlength\evensidemargin{45\p@}%
+
+\setlength\footskip{51\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+%\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+\setlength{\skip\footins}{18pt plus2pt minus2pt}%
+
+
+\newskip\abs@coli@hsize\abs@coli@hsize12pc%
+\newskip\abs@colii@hsize\abs@colii@hsize29pc%
+
+\RequirePackage[paperwidth=210mm,
+    paperheight=276mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+ %   text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,twocolumn,columnsep=1pc,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\if@LATOLargeOneCol%
+\setlength\paperwidth{210mm}%
+\setlength\paperheight{276mm}%
+
+\setlength\typeheight{62\baselineskip}
+\setlength\textheight{53\baselineskip}%
+\addtolength\textheight{-6.9\p@}%
+
+\setlength\typewidth{177.8mm}
+\setlength\textwidth{177.8mm}
+
+%%\addtolength\textwidth{1.8\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {15.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+\addtolength\topmargin{5\p@}%
+\setlength\oddsidemargin{45\p@}%
+\setlength\evensidemargin{45\p@}%
+
+\setlength\footskip{51\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+%\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+\setlength{\skip\footins}{18pt plus2pt minus2pt}%
+
+\newskip\abs@coli@hsize\abs@coli@hsize12pc%
+\newskip\abs@colii@hsize\abs@colii@hsize29pc%
+
+
+\RequirePackage[paperwidth=210mm,
+    paperheight=276mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+   % text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\if@LATOSmall%
+\setlength\paperwidth{171mm}%
+\setlength\paperheight{246mm}%
+
+\setlength\typeheight{56\baselineskip}
+\setlength\typewidth{177mm}
+%
+\setlength\textheight{47\baselineskip}%
+\addtolength\textheight{-5.1\p@}%
+\setlength\textwidth{33.8pc}
+%\addtolength\textwidth{2\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {21.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+%\addtolength\topmargin{4\p@}%
+\setlength\oddsidemargin{40.5\p@}%
+\setlength\evensidemargin{40.5\p@}%
+
+\setlength\footskip{22\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+%\setlength{\skip\footins}{22pt plus2pt minus2pt}%
+
+\setlength\parindent{15pt}% \z@
+
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+\renewcommand\baselinestretch{}
+\parskip=0pt%
+
+\newskip\abs@coli@hsize\abs@coli@hsize11pc%
+\newskip\abs@colii@hsize\abs@colii@hsize21.7pc%
+
+\RequirePackage[paperwidth=171mm,
+    paperheight=246mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+ %   text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\fi\fi\fi\fi\fi\fi%
+
+
+%
+\newdimen\parindentvalue%
+\parindentvalue=1em%
+%
+\setlength\parindent{\parindentvalue}%
+%
+\ifpdf%
+    \global\@cropmarksonfalse%
+\else%
+    \if@cropmarkson%
+        \RequirePackage{crop}%
+        \if@croppage%
+            \CROP@size{\paperwidth}{\paperheight}%
+        \fi%
+    \fi%
+\fi%
+
+%
+% Footnotes
+%
+%%\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+
+
+%
+
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% Pagination Settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Line spacing
+\setlength\lineskip{0\p@}%
+\setlength\normallineskip{0\p@}%
+\renewcommand\baselinestretch{}%
+\parskip=\z@%
+
+\pagenumbering{arabic}%
+\sloppy%
+\frenchspacing%
+%%\flushbottom
+
+%%% special parameters for TeX
+\adjdemerits=100
+\linepenalty=100
+
+
+% Page break penalties
+\@lowpenalty   51
+\@medpenalty  151
+\@highpenalty 301
+
+% Disallow widows and orphans
+\clubpenalty 10000
+\widowpenalty 10000
+
+% Disable page breaks before equations, allow pagebreaks after
+% equations and discourage widow lines before equations.
+\displaywidowpenalty 100
+\predisplaypenalty   10000
+\postdisplaypenalty  0
+
+% Set these global demerits
+\doublehyphendemerits 1000000% corresponds to badness 800
+\finalhyphendemerits  1000000% corresponds to badness 1000
+
+% Allow loose lines rather than overfull lines
+\vbadness=9999%
+\tolerance=9999%
+
+
+% Allow breaking the page in the middle of a paragraph
+\interlinepenalty 0%
+
+% Disallow breaking the page after a hyphenated line
+\brokenpenalty 10000%
+
+% Hyphenation; don't split words into less than three characters
+\lefthyphenmin=3%
+\righthyphenmin=3%
+
+% Float placement parameters
+
+% The total number of floats that can be allowed on a page.
+\setcounter{totalnumber}{10}%
+
+% The maximum number of floats at the top and bottom of a page.
+\setcounter{topnumber}{3}%
+\setcounter{bottomnumber}{3}%
+
+% The maximum part of the top or bottom of a text page that can be
+% occupied by floats. This is set so that at least four lines of text
+% fit on the page.
+\renewcommand\topfraction{.921}%
+\renewcommand\bottomfraction{.921}%
+
+% The minimum amount of a text page that must be occupied by text.
+% This should accomodate four lines of text.
+%%\renewcommand\textfraction{.13}%
+\renewcommand\textfraction{.1}%
+
+% The minimum amount of a float page that must be occupied by floats.
+%%\renewcommand\floatpagefraction{.887}%
+\renewcommand\floatpagefraction{.95}%
+
+% The same parameters repeated for double column output
+%%\renewcommand\dbltopfraction{.88}%
+%%\renewcommand\dblfloatpagefraction{.88}%
+\renewcommand\dbltopfraction{.95}%
+\renewcommand\dblfloatpagefraction{.95}%
+
+% Space between floats
+\setlength\floatsep{24\p@ \@plus 2.875\p@ \@minus 1.4375\p@}%
+
+% Space between floats and text
+\setlength\textfloatsep{24\p@ \@plus 2.875\p@ \@minus 1.4375\p@}%
+%
+%%\def\resettextfloatsep{\makeatletter\setlength\textfloatsep{13.5\p@ \@plus 2.875\p@ \@minus 1.4375\p@}\makeatother}%
+%
+% Space above and below an inline figure
+\setlength\intextsep{24\p@ \@plus 2.875\p@ \@minus 1.4375\p@}%
+
+% For double column floats
+\setlength\dblfloatsep{24\p@ \@plus 2.875\p@ \@minus 1.4375\p@}%
+\setlength\dbltextfloatsep{24\p@ \@plus 2.875\p@ \@minus 1.4375\p@}%
+
+\hyphenation{Figure Figures Table Tables Equation Equations Section Sections Appendix Theorem Lemma Proposition Corollary}% 
+\hyphenation{Claim Conjecture Property Remark Problem Example Definition Algorithm Assumption Axiom Case Hypotheses Note Proof}% 
+
+%%% miscellaneous macros %%%
+\def\zz#1{\vphantom{#1}}%
+\def\nobreaktie{\penalty\@M\hbox{\ }} % tie
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Draftrules %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%% To print grid lines on all pages
+\newdimen\pageheight\global\pageheight=\textheight%
+\newcount\rulecount\rulecount=1%
+%
+\newdimen\leftcolrulepos
+\newdimen\rightcolrulepos
+%
+\edef\slugtoday{\two@digits{\the\day}/\two@digits{\the\month}/\the\year}%
+%
+\def\PrintGridLines{%
+{\color{black!10}%
+    {%
+    \loop%
+    \ifdim\pageheight>0pt%
+        \ifnum\rulecount=1%
+            \advance\pageheight by -1.5pt%
+        \fi%
+        \AtTextUpperLeft{%x
+          \put(0,\LenToUnit{-\pageheight}){%
+            \line(1,0){\LenToUnit{\leftcolrulepos}}}}%
+%%14Mar16%%
+        \AtTextUpperLeft{%
+        \put(\LenToUnit{\rightcolrulepos},\LenToUnit{-\pageheight}){%
+           \line(1,0){\LenToUnit{\leftcolrulepos}}}}%
+        \advance\pageheight-11.5pt%baseline
+        \advance\rulecount\@ne%
+    \repeat%
+}}}%
+%
+\RequirePackage{showframe}
+\if@draftruleson%
+%
+\renewcommand\ShowFramePicture{%
+\leftcolrulepos\columnwidth%
+\rightcolrulepos\columnwidth%
+\advance\rightcolrulepos by \columnsep%
+  \begingroup
+    \normalcolor\thinlines%
+    \put(0,0){
+%    \if@watermarkon\AtTextUpperLeft{%
+%      \put(\LenToUnit{\textwidth},41){\llap{\fontsize{8}{10}\selectfont {\rm JrnlID\ \@JrnlID\_ArtID \@artid\_Proof\#1 - \slugtoday}}}}\fi%
+    \AtTextLowerLeft{%
+      \framebox(\LenToUnit{\textwidth},\LenToUnit{\textheight}){}}%
+      \linethickness{.1pt}%
+      \PrintGridLines%
+    \AtTextLowerLeft{%
+      \put(0,\LenToUnit{-\footskip}){%
+        \line(1,0){\LenToUnit{\textwidth}}}}%
+        \AtTextLowerLeft{%
+          \put(\LenToUnit{\columnwidth},0){%
+            \line(0,1){\LenToUnit{\textheight}}}}%
+            %%For marginpar
+%%14Mar16%%
+        \AtTextLowerLeft{%
+          \put(\LenToUnit{\rightcolrulepos},0){%
+            \line(0,1){\LenToUnit{\textheight}}}}%
+    \AtTextLowerLeft{%
+      \@tempdima=\textwidth\advance\@tempdima\marginparsep%
+      \if@twoside%
+        \ifodd\c@page
+          \if@mparswitch
+            \@tempdima=-\marginparsep\advance\@tempdima-\marginparwidth%
+          \fi
+        \else%
+          \@mparswitchfalse
+          \if@mparswitch
+            \@tempdima=-\marginparsep\advance\@tempdima-\marginparwidth%
+          \fi
+        \fi%
+      \fi%
+    }}%
+  \endgroup
+}%
+\else
+\renewcommand\ShowFramePicture{%
+\leftcolrulepos\columnwidth%
+\rightcolrulepos\columnwidth%
+\advance\rightcolrulepos by \columnsep%
+  \begingroup
+    \normalcolor\thinlines%
+    \put(0,0){
+%    \if@watermarkon\AtTextUpperLeft{%
+%      \put(\LenToUnit{\textwidth},41){\llap{\fontsize{8}{10}\selectfont {\rm JrnlID\ \@JrnlID\_ArtID \@artid\_Proof\#1 - \slugtoday}}}}\fi%
+    }%
+  \endgroup
+}%
+\fi%
+
+%% Miscellaneous macros %%
+
+\newdimen\artopleftskipdim%
+\artopleftskipdim=36.25pt%
+
+\def\hb{\hfill\break}%
+\def\uns{\ifmmode\,\else$\,$\fi}%
+\def\raggedcenter{\leftskip=0pt plus 0.5fil\rightskip=0pt plus 0.5fil\parfillskip=0pt}%
+\def\artopraggedright{\leftskip=\artopleftskipdim\rightskip=0pt plus 1fil\parfillskip=0pt\relax}%
+
+%% Metadata Info %%
+
+\def\@artid{xx}% pub-id
+\def\@jname{xxx}%
+\def\@jvol{\emph{xxx}}%
+\def\@eissn{xx}%
+\def\@pissn{xx}%
+%%\def\@copyyear{xxxx}%
+\def\copyyr{xxxx}%
+\def\@jnlyear{xxxx}%
+\def\@doi{}%
+\def\@pubname{ }%
+\def\@arteditor{}%
+
+\def\artid#1{\gdef\@artid{#1}}%
+\def\@jid{}%
+\def\jid#1{\gdef\@jid{#1}}%
+\def\jname#1{\gdef\@jname{#1}}%
+\def\jvol#1{\gdef\@jvol{#1}}%
+\def\eissn#1{\gdef\@eissn{#1}}%
+\def\pissn#1{\gdef\@pissn{#1}}%
+\def\copyyear#1{\gdef\copyyr{#1}}%
+\def\jyear#1{%%\gdef\copyyear{#1}
+\gdef\@jnlyear{#1}}%
+\def\doi#1{\gdef\@doi{#1}}%
+\def\pubname#1{\gdef\@pubname{#1}}%
+%%\def\arteditor#1{\gdef\@arteditor{\acadeditorfont Academic Editor:\ #1}}%
+%%\def\aceditor#1{\gdef\@arteditor{\acadeditorfont Academic Editor:\ #1}}%
+
+\def\jmonth#1{\gdef\@jmonth{#1}}%
+
+
+\def\@copyeditor{}%
+\def\copyeditor#1{\gdef\@copyeditor{#1}}%
+
+\def\orcid[#1]#2#3{}%
+\newcommand{\orgdiv}[1]{#1}%
+\newcommand{\orgname}[1]{#1}%
+\newcommand{\orgaddress}[1]{#1}%
+\newcommand{\street}[1]{#1}%
+\newcommand{\postcode}[1]{#1}%
+\newcommand{\city}[1]{#1}%
+\newcommand{\state}[1]{#1}%
+\newcommand{\country}[1]{#1}%
+
+%%\def\PI#1{{#1}}%
+%%\def\licenseVal#1{}%
+
+\def\@copyname{}%
+\newcommand\copyrightinfo[2][]{\if!#2!\gdef\@copyname{}\else\gdef\@copyname{\copyrightfont#2\ \@licenseVal}\fi}%
+
+%% Macros for firstpage %%
+
+\def\startpage#1{%
+  \gdef\temp{#1}%
+  \ifx\temp\@empty%
+    \def\@firstpage{1}%
+  \else%
+    \def\@firstpage{#1}%
+    \setcounter{page}{#1}%
+    \setcounter{spagecounter}{#1}%
+  \fi%
+}%
+\def\@firstpage{}
+
+\def\endpage#1{\gdef\@endpage{#1}}
+\def\@endpage{}
+
+%
+%% Cross Link for Author & Address
+%
+\def\jmkLabel#1{\@bsphack\protected@write\@auxout{}{\string\Newlabel{#1}{\@currentlabel}}\@esphack}%
+\def\Newlabel#1#2{\expandafter\xdef\csname X@#1\endcsname{#2}}%
+\def\jmkRef#1{\@ifundefined{X@#1}{0}{\csname X@#1\endcsname}}%
+
+%
+%%%%%%%%%%%%%%%%%% Updation for xml conversion
+%
+\gdef\@FirstPg{}%
+\gdef\@LastPg{}%
+%
+\def\FirstPg#1{\if!#1!\else\gdef\@FirstPg{#1}\fi}%
+\def\LastPg#1{\if!#1!\else\gdef\@LastPg{#1}\fi}%
+
+%\newcount\LastAQCnt%
+
+\newwrite\@xmlpage
+\openout\@xmlpage=\jobname.pag
+\newcounter{spagecounter}
+\newcounter{lpagecounter}
+%%\AtBeginDocument{\setcounter{spagecounter}{\c@page}}
+\AtEndDocument{\setcounter{lpagecounter}{\c@page}%
+\addtocounter{lpagecounter}{-1}%
+\immediate\write\@xmlpage{\string\FirstPg{\thespagecounter}\string\LastPg{\thelpagecounter}}%
+\immediate\write\@auxout{\string\FirstPg{\thespagecounter}\string\LastPg{\thelpagecounter}}%
+\immediate\closeout\@xmlpage%
+}%
+
+%% Fonts definitions %%
+
+\if@font@stix%
+  \def\footnotetextfont{\rmfamily\fontsize{8bp}{10bp}\selectfont}\else%
+  %%
+  \def\footnotetextfont{\rmfamily\fontsize{6bp}{8bp}\selectfont}
+\fi%
+%
+
+
+%\usepackage{microtype}
+%\DisableLigatures[f]{encoding = *, family = * }
+
+\newcommand{\sbdefault}{sb}
+\DeclareRobustCommand\sbseries{\not@math@alphabet\sbseries\mathbf\fontseries\sbdefault\selectfont}
+\DeclareTextFontCommand{\textsb}{\sbseries}
+\DeclareRobustCommand\sfitseries{\not@math@alphabet\sfitseries\normalfont\fontseries{m}\fontshape{it}\selectfont}
+\DeclareTextFontCommand{\textsfi}{\sfitseries}
+\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@exactptsize%
+  \def\set@fontsize#1#2#3{%
+    \@defaultunits\@tempdimb#2bp\relax\@nnil%
+    \edef\f@size{\strip@pt\@tempdimb}%
+    \@defaultunits\@tempskipa#3bp\relax\@nnil%
+    \edef\f@baselineskip{\the\@tempskipa}%
+    \edef\f@linespread{#1}%
+    \let\baselinestretch\f@linespread%
+    \def\size@update{%
+      \baselineskip\f@baselineskip\relax%
+      \baselineskip\f@linespread\baselineskip%
+      \normalbaselineskip\baselineskip%
+      \setbox\strutbox\hbox{\vrule\@height.7\baselineskip\@depth.3\baselineskip\@width\z@}%
+      \let\size@update\relax%
+    }%
+  }%
+\fi%
+\renewcommand\normalsize{%
+  \if@font@stix%
+    \@setfontsize\normalsize{10bp}{13bp}%
+  \else%
+    \@setfontsize\normalsize{8bp}{13bp}%
+  \fi%
+  \abovedisplayskip 5.5\p@ \@plus2\p@ \@minus0\p@
+  \abovedisplayshortskip \z@ \@plus3\p@%
+  \belowdisplayshortskip 3\p@ \@plus3\p@ \@minus3\p@%
+  \belowdisplayskip \abovedisplayskip%
+  \let\@listi\@listI}%
+\newcommand{\textbaselineskip}{\baselineskip13bp}%
+\normalsize\baselineskip13bp%
+\newcommand\medsize{%
+  \@setfontsize\small\@viipt{9}%
+  \abovedisplayskip 5\p@ \@plus3\p@ \@minus4\p@
+  \abovedisplayshortskip \z@ \@plus2\p@
+  \belowdisplayshortskip 3\p@ \@plus2\p@ \@minus2\p@
+  \def\@listi{%
+    \leftmargin\leftmargini
+    \topsep 4\p@ \@plus2\p@ \@minus2\p@
+    \parsep 2\p@ \@plus\p@ \@minus\p@
+    \itemsep \parsep}%
+  \belowdisplayskip\abovedisplayskip}
+\renewcommand\small{%
+  \@setfontsize\small\@vpt{7}%
+  \abovedisplayskip 5\p@ \@plus3\p@ \@minus4\p@
+  \abovedisplayshortskip \z@ \@plus2\p@
+  \belowdisplayshortskip 3\p@ \@plus2\p@ \@minus2\p@
+  \def\@listi{%
+    \leftmargin\leftmargini
+    \topsep 4\p@ \@plus2\p@ \@minus2\p@
+    \parsep 2\p@ \@plus\p@ \@minus\p@
+    \itemsep \parsep}%
+  \belowdisplayskip \abovedisplayskip}
+\renewcommand\footnotesize{%
+  \@setfontsize\footnotesize{7.5}{9}%
+  \abovedisplayskip 5\p@ \@plus2\p@ \@minus4\p@
+  \abovedisplayshortskip \z@ \@plus\p@
+  \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+  \def\@listi{%
+    \leftmargin\leftmargini
+    \topsep 3\p@ \@plus\p@ \@minus\p@
+    \parsep 2\p@ \@plus\p@ \@minus\p@
+    \itemsep \parsep}%
+  \belowdisplayskip \abovedisplayskip}
+\renewcommand\scriptsize{\@setfontsize\scriptsize\@ixpt\@ixpt}
+\newcommand\scrisize{\@setfontsize\scrisize{9.3}{9}}
+\renewcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\renewcommand\large{\@setfontsize\large{12}{14}}
+\newcommand\larg{\@setfontsize\larg{11}{13}}
+\renewcommand\Large{\@setfontsize\Large{16}{18}}
+\newcommand\fpe{\@setfontsize\fpe{19}{21}}
+\renewcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\newcommand\rke{\@setfontsize\rke{10}{10}}
+\newcommand\ke{\@setfontsize\ke{9}{10}}
+\newcommand\lke{\@setfontsize\lke{8.4}{8.25}}
+\newcommand\ffe{\@setfontsize\ffe{9}{12}}
+\newcommand\adf{\@setfontsize\adf{10.3}{12}}
+\newcommand\kes{\@setfontsize\kes{8}{9.5}}
+\newcommand\bis{\@setfontsize\bis{9}{10}}
+\newcommand\tdf{\@setfontsize\tdf{14}{16}}
+\newcommand\svo{\@setfontsize\svo{14.5}{16}}
+\renewcommand\huge{\@setfontsize\huge\@xxpt{25}}
+\renewcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
+%
+%\DeclareMathSizes{24bp}{24}{16.06}{10}%
+%\DeclareMathSizes{15bp}{15}{10}{5}%
+%\DeclareMathSizes{9bp}{9}{6.02}{5.5}
+%\DeclareMathSizes{8bp}{8}{5.35}{4.1}%
+%\DeclareMathSizes{7.5bp}{7.5}{5.35}{4.1}%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FONT DECLARATION Ends %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FONTS / COLOR DECLARATION Starts %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+\def\dummyalphabet{\vphantom{abcdefghijklmnopqrstuvwxyz0123456789}}
+%
+\sodef\letterspacetwty{}{.2em}{.4em plus1em}{.5em plus 1em minus1em }
+%
+\definecolor{Black}{gray}{0}
+\definecolor{White}{cmyk}{0.0,0.0,0.0,0.0}
+\definecolor{Tcolor}{cmyk}{1,0.8,0.0,0.0}%
+\definecolor{Jcolor}{cmyk}{0.0,0.85,1,0.0}%
+\definecolor{rgray}{cmyk}{0.0,0.0,0.0,0.4}%
+\definecolor{lightgray}{cmyk}{0.0,0.0,0.0,0.2}
+\definecolor{Blue}{cmyk}{1,0.77,0.0,0.0}
+%
+\gdef\@stix@font@defn{%
+  %
+%  \def\infoboxfont{\fontfamily{tim}\fontsize{8}{8}\selectfont}%
+  %
+%  \def\watermarkfont{\reset@font\fontfamily{\ffdefault}\fontsize{45}{45}\bfseries\selectfont}
+  %
+  \def\pagenumfont{\rmfamily\fontsize{7}{9}\bfseries\selectfont}%
+  \def\cnmpagenumfont{\rmfamily\fontsize{7}{9}\selectfont\bfseries}%
+%%%  \def\runningheadfont{\rmfamily\fontsize{7}{9}\scshape\selectfont}%
+  \def\runningheadfont{\rmfamily\fontsize{7}{9}\selectfont}%New updations 19aug2016
+  \def\runningfootfont{\rmfamily\fontsize{7}{9}\selectfont}%
+  \def\titlepageheadfont{\rmfamily\fontsize{7}{9}\selectfont}%
+  %
+  \def\BRarttypefont{\reset@font\rmfamily\fontsize{18}{18}\fontseries{b}\selectfont}%
+  \def\pubheadfont{\reset@font\rmfamily\fontsize{7}{9}\fontseries{b}\selectfont}%
+  \def\arttypefont{\rmfamily\fontsize{9}{9}\fontseries{b}\selectfont}%
+  \def\SParttypefont{\rmfamily\fontsize{9}{12}\fontseries{b}\selectfont}%
+  \def\titlefont{\rmfamily\fontsize{18}{23}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\subtitlefont{\rmfamily\fontsize{16}{21}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\Authorfont{\rmfamily\fontsize{12}{18}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\absheadfont{\hsize\abs@colii@hsize\rmfamily\fontsize{10}{10}\fontseries{b}\selectfont\bfseries\leftskip7\p@\rightskip\leftskip}% LN20FEB2016
+  \def\legalstatementfont{\rmfamily\fontsize{7}{10}\selectfont\leftskip0\p@\rightskip\leftskip}%
+    \def\BRsectionfont{\rmfamily\fontsize{10}{16}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\sectionfont{\rmfamily\fontsize{12}{13}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\subsectionfont{\rmfamily\fontsize{12}{13}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\subsubsectionfont{\rmfamily\fontsize{12}{13}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\paragraphfont{\rmfamily\fontsize{10.5}{13}\fontseries{b}\selectfont}%
+  \def\subparagraphfont{\rmfamily\fontsize{10}{13}\fontseries{b}\selectfont}%
+  \def\appsectionfont{\rmfamily\fontsize{10}{13}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  %
+  \def\boxheadfont{\rmfamily\fontsize{10}{13}\fontseries{b}\selectfont}
+  \def\boxtitlefont{\rmfamily\fontsize{10}{13}\bfseries\selectfont}
+  %
+  \def\GnSabsfont{\rmfamily\fontsize{9}{15}\selectfont}%
+  \def\GnSabsfootfont{\reset@font\rmfamily\fontsize{14}{0}\bfseries\selectfont}%
+  %
+  \def\suppinfofont{\noindent\rmfamily}%
+  \def\suppinfoheadfont{\noindent\fontsize{10}{13}\fontseries{b}\selectfont}%
+  \def\suppinfocaptionfont{\noindent\rmfamily}%
+  %
+  \def\figurenumfont{\rmfamily\fontsize{9bp}{12}\fontseries{b}\selectfont}%
+  \def\figurecaptionfont{\rmfamily\fontsize{8.5bp}{12}\selectfont}
+  \def\bwfiginfofont{\fontfamily{tim}\fontsize{10bp}{10bp}\selectfont}%
+  %
+  \def\tablenumfont{\rmfamily\fontsize{9bp}{11.5bp}\fontseries{b}\selectfont}%
+  \def\keypointheadfont{\reset@font\rmfamily\fontsize{10bp}{13bp}\fontseries{b}\selectfont}%
+  \def\tablecaptionfont{\rmfamily\fontsize{8.5bp}{12bp}\selectfont}
+  \def\tablebodyfont{\rmfamily\fontsize{8.5bp}{11.5bp}\selectfont}
+  \def\tablecolheadfont{\rmfamily\fontsize{8.5bp}{11.5bp}\selectfont\bfseries}
+  \def\tablefootnotefont{\rmfamily\fontsize{7.5bp}{10.5bp}\selectfont}
+  %
+%%  \def\footnotetextfont{\rmfamily\fontsize{8bp}{10bp}\selectfont}
+  %
+  \def\listfont{\normalsize}%
+  %
+  \def\refheadfont{\fontsize{10}{13}\fontseries{b}\selectfont}
+  \def\reflistfont{\fontsize{8.5}{11.5}\selectfont}
+  %
+  \def\biographyheadfont{\fontsize{10}{13}\fontseries{b}\selectfont}
+  %
+  \def\ackheadfont{\fontsize{10}{13}\selectfont\fontseries{b}\selectfont}
+  \def\addressfont{\hsize\abs@coli@hsize\rmfamily\fontsize{8}{11}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\corresfont{\hsize\abs@coli@hsize\rmfamily\fontsize{8}{11}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\FIfont{\hsize\abs@coli@hsize\rmfamily\fontsize{8}{11}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\JELfont{\hsize\abs@coli@hsize\rmfamily\fontsize{8}{11}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\keywordsheadfont{\hsize\abs@colii@hsize\rmfamily\fontsize{8}{8}\selectfont\ifAbstractexist\leftskip7\p@\rightskip\leftskip\fi}%
+  \def\abstractfont{\hsize\abs@colii@hsize\rmfamily\fontsize{10}{15}\selectfont\leftskip7\p@\rightskip\leftskip}%
+  \def\keywordsfont{\rmfamily\fontsize{8}{13}\selectfont\ifAbstractexist\leftskip7\p@\rightskip\leftskip\fi}%
+  %
+}%
+\gdef\@lato@font@defn{%
+  %
+%  \def\infoboxfont{\fontfamily{tim}\fontsize{8}{8}\selectfont}%
+  %
+%  \def\watermarkfont{\reset@font\fontfamily{\ffdefault}\fontsize{45}{45}\bfseries\selectfont}
+  %
+  \def\pagenumfont{\rmfamily\fontsize{7}{9}\bfseries\selectfont}%
+  \def\cnmpagenumfont{\rmfamily\fontsize{7}{9}\selectfont\bfseries}%
+%%%  \def\runningheadfont{\rmfamily\fontsize{7}{9}\scshape\selectfont}%
+  \def\runningheadfont{\rmfamily\fontsize{7}{9}\selectfont}%New updations 19aug2016
+  \def\runningfootfont{\rmfamily\fontsize{7}{9}\selectfont}%
+  \def\titlepageheadfont{\rmfamily\fontsize{7}{9}\selectfont}%
+  %
+  \def\BRarttypefont{\reset@font\rmfamily\fontsize{18}{18}\fontseries{b}\selectfont}%
+  \def\pubheadfont{\reset@font\rmfamily\fontsize{7}{9}\fontseries{b}\selectfont}%
+  \def\arttypefont{\rmfamily\fontsize{9}{9}\fontseries{b}\selectfont}%
+  \def\SParttypefont{\rmfamily\fontsize{9}{12}\fontseries{b}\selectfont}%
+  \def\titlefont{\rmfamily\fontsize{18}{23}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil\let\mathbcal\titmathbcal}%
+  \def\subtitlefont{\rmfamily\fontsize{16}{21}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\Authorfont{\rmfamily\fontsize{12}{18}\selectfont\bfseries\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\addressfont{\hsize\abs@coli@hsize\rmfamily\fontsize{7}{10}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\corresfont{\hsize\abs@coli@hsize\rmfamily\fontsize{7}{10}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  %
+  \def\FIfont{\hsize\abs@coli@hsize\rmfamily\fontsize{7}{10}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\JELfont{\hsize\abs@coli@hsize\rmfamily\fontsize{7}{10}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\abstractfont{\hsize\abs@colii@hsize\rmfamily\fontsize{8}{13}\selectfont\leftskip7\p@\rightskip\leftskip}%
+  \def\keywordsheadfont{\hsize\abs@colii@hsize\rmfamily\fontsize{7}{7}\selectfont\ifAbstractexist\leftskip7\p@\rightskip\leftskip\fi}%
+  \def\absheadfont{\hsize\abs@colii@hsize\rmfamily\fontsize{10}{10}\fontseries{b}\selectfont\bfseries\leftskip7\p@\rightskip\leftskip}% LN20FEB2016
+  \def\keywordsfont{\rmfamily\fontsize{8}{13}\selectfont\ifAbstractexist\leftskip7\p@\rightskip\leftskip\fi}%
+  \def\legalstatementfont{\rmfamily\fontsize{7}{10}\selectfont\leftskip0\p@\rightskip\leftskip}%
+  %
+  \def\BRsectionfont{\rmfamily\fontsize{10}{16}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\sectionfont{\rmfamily\fontsize{10}{13}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\subsectionfont{\rmfamily\fontsize{10}{14}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\subsubsectionfont{\rmfamily\fontsize{9}{12.5}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\paragraphfont{\rmfamily\fontsize{8.5}{13}\fontseries{b}\selectfont}%
+  \def\subparagraphfont{\rmfamily\fontsize{8.5}{13}\fontseries{b}\selectfont}%
+  \def\appsectionfont{\rmfamily\fontsize{8}{11}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  %
+  \def\boxheadfont{\rmfamily\fontsize{8}{10}\fontseries{b}\selectfont}
+  \def\boxtitlefont{\rmfamily\fontsize{8}{10}\bfseries\selectfont}
+  %
+  \def\GnSabsfont{\rmfamily\fontsize{9}{15}\selectfont}%
+  \def\GnSabsfootfont{\reset@font\rmfamily\fontsize{14}{0}\bfseries\selectfont}%
+  %
+  \def\suppinfofont{\noindent\rmfamily}%
+  \def\suppinfoheadfont{\noindent\fontsize{8}{13}\fontseries{b}\selectfont}%
+  \def\suppinfocaptionfont{\noindent\rmfamily}%
+  %
+  \def\figurenumfont{\rmfamily\fontsize{7bp}{9}\fontseries{b}\selectfont}%
+  \def\figurecaptionfont{\rmfamily\fontsize{8bp}{11}\selectfont}
+  \def\bwfiginfofont{\fontfamily{tim}\fontsize{10bp}{10bp}\selectfont}%
+  %
+  \def\tablenumfont{\rmfamily\fontsize{7bp}{9bp}\fontseries{b}\selectfont}%
+  \def\keypointheadfont{\reset@font\rmfamily\fontsize{9bp}{11bp}\fontseries{b}\selectfont}%
+  \def\tablecaptionfont{\rmfamily\fontsize{8bp}{9bp}\selectfont}
+  \def\tablebodyfont{\rmfamily\fontsize{7.5bp}{9bp}\selectfont}
+  \def\tablecolheadfont{\rmfamily\fontsize{7.5bp}{9bp}\selectfont\bfseries}
+  \def\tablefootnotefont{\rmfamily\fontsize{7.5bp}{9bp}\selectfont}
+  %
+%%  \def\footnotetextfont{\rmfamily\fontsize{8bp}{10bp}\selectfont}
+  %
+  \def\listfont{\normalsize}%
+  %
+  \def\refheadfont{\fontsize{8}{10}\fontseries{b}\selectfont}
+  \def\reflistfont{\fontsize{7.5}{10}\selectfont}
+  %
+  \def\biographyheadfont{\fontsize{8}{10}\fontseries{b}\selectfont}
+  %
+  \def\ackheadfont{\fontsize{8}{9}\selectfont\fontseries{b}\selectfont}
+  %
+}%
+%%
+\gdef\largedesign@lato@font{\@lato@font@defn}%
+%%
+\gdef\largedesign@stix@font{\@stix@font@defn%
+}%
+%%
+\gdef\smalldesign@lato@font{\@lato@font@defn}%
+%%
+\gdef\smalldesign@stix@font{\@stix@font@defn}%
+
+
+\if@large@design%
+  \if@font@stix%
+    \largedesign@stix@font%
+  \else%
+    \largedesign@lato@font%
+  \fi%
+\else%
+  \if@font@stix%
+    \smalldesign@stix@font%
+  \else%
+    \smalldesign@lato@font%
+  \fi%
+\fi%
+%
+\def\listfont{\reset@font\fontfamily{\rmdefault}\normalsize}%
+\def\tablistfont{\tablebodyfont}% 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% article front matter elements %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% article opening Running headers %%
+
+\def\artoprunningheaders{\vbox{\OPRHfont\raggedright%
+\@pubname\par%
+\@jname\par%
+Volume\ \@jvol, Article ID\ \@artid, \thepage~pages\par%
+%%\if@hyperrefon\urlstyle{same}\burlalt{http://dx.doi.org/\@doi}{http://dx.doi.org/\@doi}\else{http://dx.doi.org/\@doi}\fi% this line is not required in the output
+}}
+
+\def\nullartoprunningheaders{\vbox{\OPRHfont\raggedright%
+\phantom{\@pubname}\par%
+\phantom{\@jname}\par%
+\phantom{Volume\ \@jvol, Article ID\ \@artid, \thepage pages}\par%
+%%\if@hyperrefon\urlstyle{same}\burlalt{http://dx.doi.org/\@doi}{http://dx.doi.org/\@doi}\else{http://dx.doi.org/\@doi}\fi%
+}}
+
+%% article category %%
+
+\def\@DocHead{}%
+\def\articletype#1{\gdef\@DocHead{\hsize=\textwidth\arttypefont\bfseries\uline{\uppercase{#1}}}}%
+
+%% article title %%
+
+\def\titlemark#1{\gdef\@titlemark{#1}}%
+\gdef\@titlemark{}%
+
+%%\def\titlefootnotemark#1{\textsuperscript{\hbox{\reset@font\fontsize{12.5}{0}\selectfont$\@fnsymbol{#1}$}}}%
+\def\titlefootnotemark#1{\textsuperscript{$\@fnsymbol{#1}$}}%
+
+\def\title#1{\gdef\@title{\hsize=\textwidth%
+\titlefont#1\addcontentsline{toc}{chapter}{#1}% for bookmarks
+}}%
+\def\shrttitle#1{\gdef\@shrttitle{#1}}\shrttitle{}%
+
+%% article authors %%
+
+\let\sep\@empty%
+\let\authorsep\@empty%
+\let\emailsep\@empty%
+
+\newcount\aucount%
+\newcount\corrauthcount%
+
+%%\def\au@and{\unskip\advance\punctcount by -1, }%
+\def\au@and{\ifnum\punctcount=1\else\ifnum\punctcount=2\ and\advance\punctcount by -1\else\advance\punctcount by -1 \fi \fi}%
+\def\artauthors{}
+
+\newif\if@auemail%
+
+\newcommand{\thecorrauthcount}{\the\corrauthcount}%
+\newcommand{\theaucount}{\the\aucount}%
+\newcommand{\thefnmCnt}{\the\fnmCnt}%
+
+\newcount\authfncnt%
+\authfncnt=0%
+
+\newcount\authfnTmpCnt%
+\authfnTmpCnt=1%
+%
+\gdef\StoreAuthFnText#1#2{%
+\edef\GetRoman{\romannumeral#1}%
+\expandafter\gdef\csname\GetRoman StoreAuthFnTxt\endcsname{#2}%
+}%
+%
+\def\authfndefns{%
+\loop\ifnum\authfncnt>0%
+   \csname\romannumeral\authfnTmpCnt StoreAuthFnTxt\endcsname\par%
+   \StepDownCounter{\authfncnt}%
+   \StepUpCounter{\authfnTmpCnt}%
+\repeat}%
+
+
+\def\author{\advance\aucount\@ne%
+%%\let\footnotetext\authfootnotetext%
+\@ifstar\@@corrauthor\@@author}%
+
+\newcommand{\@@corrauthor}[2][]{\g@addto@macro\artauthors{\undefined%
+\renewcommand{\email}[1]{}%
+\hsize=\textwidth\raggedright%
+\global\advance\aucount\@ne%%
+\global\advance\corrauthcount\@ne%%
+\def\@currentlabel{#2}
+\jmkLabel{corrauth\thecorrauthcount}%
+\Authorfont%
+\def\baselinestretch{1}%
+\authorsep{#2\ifnum\aucount=2\else\ifnum\punctcount=2,\else\ifnum\punctcount=1\relax\else\ifnum\punctcount=0\relax\else,\fi\fi\fi\fi}%
+\unskip\ifx#1\empty\else\textsuperscript{\smash{{%
+\@for\@@affmark:=#1\do{\edef\affnum{\@ifundefined{X@\@@affmark}{1}{\jmkRef{\@@affmark}}}%
+\unskip\sep\affnum\let\sep=,}}}}\fi%
+\def\authorsep{\au@and~}%
+\global\let\sep\@empty%
+}}%
+
+\newcommand\fnm[1]{{\StepUpCounter{\fnmCnt}#1\addtocontents{aq}{\protect{\bfseries Author\ \thefnmCnt}\hfill\protect\break Given Names: #1\hfill\protect\break}}}%
+\newcommand\sur[1]{{#1\addtocontents{aq}{Last Name: #1\protect\par}}}%
+
+\newbox\aufootnotemark%
+
+\newbox\authmarkbox%
+\newif\ifGApresent%
+
+\def\@filtername#1#2\@nil{#1.\ }%
+\def\filtername#1 #2\@nil{%
+\@filtername#1\@nil #2}%
+\newcommand{\@@author}[2][]{%
+\def\temp{#1}\g@addto@macro\artauthors{%
+\def\footnotemark##1{%
+\affilmarkdefns%
+\global\setbox\authmarkbox\hbox{\reset@font\fontfamily{\rmdefault}\fontsize{8.75pt}{0}\selectfont{##1}}}%
+\ifnum\aucount=1%
+    \global\@auemailtrue%
+    \else%
+    \global\@auemailfalse%
+    \fi%
+    \Authorfont%\baselineskip=12pt%
+    \def\baselinestretch{1}%
+   \authorsep{#2}\unskip\ifx\temp\@empty%
+      \@ifundefined{Xname@0}%
+        {\expandafter\xdef\csname Xname@0\endcsname{\filtername#2\@nil}}%
+        {\expandafter\protected@xdef\csname Xname@0\endcsname%
+             {\csname Xname@0\endcsname,\ \filtername#2\@nil}}%
+   \else%
+   \textsuperscript{\smash{{%
+      \@for\@@affmark:=#1\do{\edef\affnum{\@ifundefined{X@\@@affmark}{1}{\jmkRef{\@@affmark}}}%
+      \@ifundefined{Xname@\@@affmark}%
+        {\expandafter\xdef\csname Xname@\@@affmark\endcsname{\filtername#2\@nil}}%
+        {\expandafter\protected@xdef\csname Xname@\@@affmark\endcsname%
+             {\csname Xname@\@@affmark\endcsname,\ \filtername#2\@nil}}%
+     \unskip\sep\ifnum\addcount=1\else\affnum\fi\let\sep=,}}}\unhbox\authmarkbox}\fi%
+    \gdef\authorsep{\enspace|\enspace}%%% 
+    \global\let\sep\@empty\global\let\@corref\@empty%
+}}%
+
+%%\if@purexml\else%
+%
+\newcounter{affn}%
+\renewcommand\theaffn{\arabic{affn}}%
+%
+\def\jmkaddress{}%
+\def\miscjmkaddress{}%
+\def\addsep{\par\vskip0pt}%
+%
+\newcount\addcount% To check the count of address
+%
+\def\address{\advance\addcount\@ne\@ifstar\@@corraddress\@@address}%
+%
+\newcommand{\@@corraddress}[2][]{\gdef\@corresinfo{#2}}%
+%
+\newcommand{\@@address}[2][]{\def\temp{#1}%
+\g@addto@macro\jmkaddress{\hsize=\textwidth%
+\def\baselinestretch{1}%
+\stepcounter{affn}%
+\xdef\@currentlabel{\theaffn}%
+\jmkLabel{#1}%
+\addressfont\ifx#1\empty\else\@hangfrom{\textsuperscript{\smash{\theaffn}}}\fi%
+#2\vphantom{Thy}\par%
+}}%
+%%\fi%
+
+%% email details %%
+
+\newcount\emailcount%
+\newcount\punctcount%
+
+%\def\jmkemail{}%
+%\def\emailand{\ and\ }%
+%\def\@emailsep{\unskip\advance\emailcount by -1\emailand}%
+
+%\newcommand{\email}[1]{%%\global\advance\emailcount\@ne%
+%\let\emailcount\corrauthcount%
+%\g@addto@macro\jmkemail{%
+%\def\emailau{\jmkRef{corrauth\thecorrauthcount};}%
+%\emailsep{\emailau\ #1}\def\emailsep{\@emailsep}}}%
+
+\newcommand{\email}[1]{Email: #1}%
+
+%
+%% Correspondence details
+%
+
+%\def\corresinfotext{Correspondence should be addressed to }%
+%\newcommand{\corresinfo}{{\hsize=\textwidth\corresfont\corresinfotext\jmkemail\par}}%
+
+\gdef\@corresinfo{}%
+\def\corres#1{\gdef\@corresinfo{#1}}%
+
+\newcommand{\corresinfo}{{\corresfont\baselineskip11pt\textbf{Correspondence}\par \@corresinfo\par}}%
+
+\gdef\@presentaddress{}%
+\def\presentaddress#1{\gdef\@presentaddress{\hsize=\textwidth\corresfont\baselineskip11pt\textbf{Present Address}\par #1}}%
+
+%
+\def\received#1{\gdef\@received{Received #1;}}\gdef\@received{}%
+\def\revised#1{\gdef\@revised{Revised #1;}}\gdef\@revised{}%
+\def\accepted#1{\gdef\@accepted{Accepted #1}}\gdef\@accepted{}%
+\def\published#1{\gdef\@published{Published #1}}\gdef\@published{}%
+   \def\xmlreceived{\gdef\@received{\ifnum\artActypcnt=1\relax Received:\ref{MSSreceiveddate}\ReceivedMONTH\nobreakspace{}\kern.5pt\ReceivedYEAR,\else Received:\ref{MSSreceiveddate}\nobreakspace{}\kern.5pt\ReceivedDATE\nobreakspace{}\kern.5pt\ReceivedMONTH\nobreakspace{}\kern.5pt\ReceivedYEAR\fi}}\gdef\@received{}%
+   \def\xmlrevised{\gdef\@revised{Revised:\ref{MSSrevised}\nobreakspace{}\kern.5pt\RevisedDATE\nobreakspace{}\kern.5pt\RevisedMONTH\nobreakspace{}\kern.5pt\RevisedYEAR}}\gdef\@revised{}%
+   \def\xmlaccepted{\gdef\@accepted{\ifnum\artActypcnt=1\relax in final form\ref{ACCdate}\AccMONTH\nobreakspace{}\kern.5pt\AccYEAR\else Accepted:\ref{ACCdate}\nobreakspace{}\kern.5pt\AccDATE\nobreakspace{}\kern.5pt\AccMONTH\nobreakspace{}\kern.5pt\AccYEAR\fi}}\gdef\@accepted{}%
+   \def\xmlacceptedonline{\gdef\@acceptedonline{Accepted article online\ref{PUBaccptdate}\nobreakspace{}\kern.5pt\AccDATEi\nobreakspace{}\kern.5pt\AccMONTHi\nobreakspace{}\kern.5pt\AccYEARi}}\gdef\@acceptedonline{}%
+   \def\xmlpubdate{\gdef\@pubdate{Published on:\ref{PUBEVdate}\nobreakspace{}\kern.5pt\PubDATE\nobreakspace{}\kern.5pt\PubMONTH\nobreakspace{}\kern.5pt\PubYEAR}}\gdef\@pubdate{}%
+
+\newif\ifarticletype\global\articletypefalse
+
+\def\pagenumberalign#1{\hbox to 22.5\p@{#1}}%
+\def\rhvertbar{\smash{\raisebox{-2\p@}{\rule{.5\p@}{10\p@}}}}%
+\def\historydatesvertbar{\hspace*{7\p@}\smash{\raisebox{-4\p@}{\rule{.5\p@}{12\p@}}}\hspace*{7\p@}}%
+\def\foot@pagenumber@align#1{\hbox to 15.75\p@{#1}}%
+\def\foot@vertbar{\hspace*{7\p@}\smash{\raisebox{0\p@}{\rule{.5\p@}{9.25\p@}}}\hspace*{7\p@}}%
+\def\authorseprule#1{\gdef\author@seprule{\hspace*{7\p@}#1\hspace*{7\p@}}}\authorseprule{\smash{\raisebox{.1\p@}{\hbox{\rule{.5\p@}{8.5\p@}}}}}%
+%
+\def\thepagedef{{\pagenumfont\thepage}}%
+
+\def\headfootrule#1{\gdef\@headfootrule{#1}}\headfootrule{{\rule{\textwidth}{.5\p@}}}%
+
+\def\historykern#1{\gdef\history@kern{#1}}\historykern{\nobreakspace{}\kern.5pt}
+\def\@dummy@received{\textcolor{red}{Received:\history@kern{}00\history@kern{}Month\history@kern{}0000}}%
+\def\@dummy@revised{\textcolor{red}{Revised:\history@kern{}00\history@kern{}Month\history@kern{}0000}}%
+\def\@dummy@accepted{\textcolor{red}{Accepted:\history@kern{}00\history@kern{}Month\history@kern{}0000}}%
+\def\@dummy@pubdate{\textcolor{red}{Published\history@kern{}on:\history@kern{}00\history@kern{}Month\history@kern{}0000}}%
+\def\historydates#1{\gdef\@history@dates{#1}}%
+\historydates{{\titlepageheadfont%
+  \ifx\@received\@empty\@dummy@received\else\@received\fi\historydatesvertbar%
+  \ifx\@revised\@empty\@dummy@revised\else\@revised\fi\historydatesvertbar%
+  \ifx\@accepted\@empty\@dummy@accepted\else\@accepted\fi%\historydatesvertbar%
+%  \ifx\@pubdate\@empty\@dummy@pubdate\else\@pubdate\fi%
+}}%
+%
+\def\doiheadtext#1{\gdef\@DOI@text{#1}}\doiheadtext{DOI: xxx/xxxx\nobreakspace{}}%
+\def\head@titlepage@def#1#2{\vbox{%
+  \hbox to \textwidth{#1\dummyalphabet}\par\vspace*{2.5\p@}%
+  \@headfootrule\par\vspace*{9\p@}%
+  \smash{{\titlepageheadfont\@DOI@text#2}}\par\vspace*{9\p@}%
+  \vspace*{-2.5\p@}%
+%  \smash{\hbox to \textwidth{\hfill\rhlogo}}\par%
+}}%
+%
+\newskip\foot@titlepage@raise@skip\global\foot@titlepage@raise@skip23\p@%
+
+\def\oddhead@titlepage@info{\head@titlepage@def{\@history@dates\hfill}{\@doi}}%
+\def\evenhead@titlepage@info{\oddhead@titlepage@info}%
+%
+%\def\oddfoot@titlepage@info{\foot@titlepage@def{\runningfooter}}%
+%\def\evenfoot@titlepage@info{\oddfoot@titlepage@info}%
+%
+\def\ps@titlepage{%
+%  \def\@oddfoot{\oddfoot@titlepage@info}%
+ % \def\@evenfoot{\evenfoot@titlepage@info}%
+  \def\@oddhead{\oddhead@titlepage@info}%
+  \def\@evenhead{\evenhead@titlepage@info}%
+  \let\@mkboth\markboth%
+}%
+
+
+%% Abstract %%
+
+%% Article Abstract
+%% Author name in Running Head
+
+\newcount\lastauthorcnt
+
+\newif\if@suppimage \global\@suppimagefalse
+\newif\ifAbstractexist%
+\global\Abstractexistfalse%
+%% Article Abstract
+\renewcommand\abstract[2][]{\global\Abstractexisttrue%
+  \gdef\@abstract{%
+    \setlength{\parindent}{\z@}%
+    \vspace*{8.5\p@}%
+    \rightskip0pt\raggedright\hspace*{7\p@}\hbox{\reset@font\abstractfont{\absheadfont#1}}\par\vskip3pt% LN20feb2016
+    {\abstractfont\baselineskip15pt\ifFWabstract\hsize\textwidth\fi#2\par\vspace*{0\p@}}%
+    \addcontentsline{toc}{section}{\abstractname}%
+}}%\abstract{}%
+
+%% Correspondence
+\def\correspondencename{Correspondence}
+\def\correspondence#1{%
+  \gdef\@correspondence{%
+    \par\vspace*{3\p@}%
+    {\corresfont\correspondencename\par}%
+    {\corresfont#1\par}%
+  }%
+}\correspondence{}%
+
+%% Funding Information
+\def\fundingNumber#1{#1.}%
+\def\fundingAgency#1{#1,\space}%
+%
+\newcount\fundinginfocount\fundinginfocount0%
+\newcount\commafundinginfocount\commafundinginfocount0%
+\newcount\fundinginfotempcount\fundinginfotempcount0%
+\newcount\tempfundinginfocount\tempfundinginfocount0%
+%
+\def\fundingInfo#1{%
+  \expandafter\protected@xdef\csname fundinginfo\the\fundinginfocount\endcsname{#1}%
+  \global\advance\fundinginfocount1%
+}%
+%
+\def\fundinginfohead#1{\gdef\@fundinginfo@head{#1}}\fundinginfohead{Funding Information}%
+\def\fundinginfoheadtext#1{\gdef\@fundinginfo@head@text{#1}}\fundinginfoheadtext{This research was supported by the }%
+\gdef\@fundinginfo{{%
+  \reset@font\FIfont%
+  \ifnum\fundinginfocount<1\else%
+  \par\vspace*{3\p@}%
+  \@fundinginfo@head\par%
+  \@fundinginfo@head@text%
+  \global\tempfundinginfocount\fundinginfocount%
+  \global\advance\tempfundinginfocount-1%
+  \global\commafundinginfocount\tempfundinginfocount%
+  \global\advance\commafundinginfocount-1%
+  \ifnum\fundinginfocount=1%
+    \ignorespaces\csname fundinginfo0\endcsname%
+  \else%
+    \@whilenum\fundinginfotempcount<\tempfundinginfocount\do{%
+      \ignorespaces\csname fundinginfo\the\fundinginfotempcount\endcsname\ %
+      \global\advance\fundinginfotempcount1%
+    }%
+    \csname fundinginfo\the\fundinginfotempcount\endcsname\par%
+  \fi%
+  \fi%
+\vfill}}%
+
+%% JEL Classification
+\newcount\JELinfocount\JELinfocount0%
+\newcount\commaJELinfocount\commaJELinfocount0%
+\newcount\JELinfotempcount\JELinfotempcount0%
+\newcount\tempJELinfocount\tempJELinfocount0%
+%
+\def\JELinfo#1{%
+  \expandafter\protected@xdef\csname JELinfo\the\JELinfocount\endcsname{#1}%
+  \global\advance\JELinfocount1%
+}%
+%
+\def\JELinfohead#1{\gdef\@JELinfo@head{#1}}\JELinfohead{JEL Classification:\nobreakspace{}}%
+\gdef\@JELinfo{{%
+  \ifnum\JELinfocount<1\else%
+  \reset@font\JELfont%
+  \par\vspace*{3\p@}%
+  \@JELinfo@head%
+  \global\tempJELinfocount\JELinfocount%
+  \global\advance\tempJELinfocount-1%
+  \global\commaJELinfocount\tempJELinfocount%
+  \global\advance\commaJELinfocount-1%
+  \ifnum\JELinfocount=1%
+    \ignorespaces\csname JELinfo0\endcsname%
+  \else%
+    \@whilenum\JELinfotempcount<\tempJELinfocount\do{%
+      \ignorespaces\csname JELinfo\the\JELinfotempcount\endcsname\ %
+      \global\advance\JELinfotempcount1%
+    }%
+    \csname JELinfo\the\JELinfotempcount\endcsname\par\vspace*{-\baselineskip}%
+  \fi%
+  \fi%
+\vfill}}%
+
+%%
+\newbox\htftbox%
+\newdimen\ovsize%
+\newdimen\oovsize%
+\newdimen\FreePageSpace%
+\newdimen\FreePageSpaceTest%
+\newskip\fadjskip\fadjskip=0pt%
+\newskip\adjustskip\adjustskip=0pc%
+\newskip\titleskip%
+
+\gdef\ComputeFreeSpaceOnPage{%
+\par%
+\ifdim\pagetotal=0pt%
+   \global\FreePageSpace=\vsize%
+   \global\advance\FreePageSpace by -\adjustskip%
+\else%
+   \FreePageSpace=\pagegoal%
+  \ifvoid\footins%
+     \global\advance\FreePageSpace by -\pagetotal%
+     \global\advance\FreePageSpace by -\adjustskip%
+  \else%
+    \setbox3=\vbox{\unvbox\footins}%
+    \htftbox=\ht3%
+    \advance\htftbox by \dp3%
+    \global\advance\FreePageSpace by -\pagetotal%
+    \global\advance\FreePageSpace by -\htftbox%
+    \global\advance\FreePageSpace by -\adjustskip%
+  \fi%
+\fi%
+}%
+%%
+
+\definecolor{tenpercent}{cmyk}{0,0,0,0.10}
+\definecolor{thirtyfivepercent}{cmyk}{0,0,0,0.35}
+\definecolor{sixtyfivepercent}{cmyk}{0,0,0,0.65}
+\definecolor{seventyfivepercent}{cmyk}{0,0,0,0.75}
+%
+
+%\newskip\abs@coli@hsize\abs@coli@hsize12pc%
+%\newskip\abs@colii@hsize\abs@colii@hsize29pc%
+
+
+%
+\newbox\abs@boxa%
+\newbox\abs@boxb%
+\newbox\abs@boxc%
+%
+\newdimen\abs@dima%
+\newdimen\abs@dimb%
+\newdimen\abs@dimc%
+%
+\def\absCOvrule{\vrule width0.5pt}%
+\def\authCOvrule{{\color{tenpercent}\vrule width\abs@colii@hsize}}%
+
+\def\FWauthCOvrule{{\color{tenpercent}\vrule width\textwidth}}%
+
+%
+\long\def\absworkarea#1#2{%
+  \setbox\abs@boxa\vbox{\hsize\abs@coli@hsize#1\dummyalphabet}%
+  \abs@dima=\ht\abs@boxa%
+  \advance\abs@dima by \dp\abs@boxa%
+  \advance\abs@dima by -4.5\p@%
+  \setbox\abs@boxb\vbox{\hsize\abs@colii@hsize#2\dummyalphabet}%
+  \abs@dimb=\ht\abs@boxb%
+  \advance\abs@dimb by \dp\abs@boxb%
+  \ComputeFreeSpaceOnPage%
+  \stripsep\z@%
+  \ifdim\abs@dimb>\FreePageSpace%
+    \setbox8=\vbox{\unvbox\abs@boxb}%
+    \advance\FreePageSpace by -\@firstpage@foot@height%
+    %\advance\FreePageSpace by \baselineskip%
+    \setbox1=\vsplit8 to \FreePageSpace%
+    \setbox1=\vbox{\unvbox1}%
+    \setbox2=\vbox{\unvbox8}%
+    \ifdim\abs@dima>\FreePageSpace%
+      \setbox7=\vbox{\unvbox\abs@boxa}%
+      %\advance\FreePageSpace by -\@firstpage@foot@height%
+      %\advance\FreePageSpace by \baselineskip%
+      \setbox3=\vsplit7 to \FreePageSpace%
+      \setbox3=\vbox{\unvbox3}%
+      \setbox4=\vbox{\unvbox7}%
+    \fi%
+    \gdef\abs@dimchk{\ifdim\ht3>\ht1\ht3\else\ht1\fi}%
+    \parbox{\textwidth}{%
+      \begin{minipage}[t]{\abs@coli@hsize}%
+      \leavevmode\vbox to \abs@dimchk{\ifdim\abs@dima>\FreePageSpace\copy3\else\unvbox\abs@boxa\fi\vfill}%
+      \end{minipage}\hfill%
+      \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+      \begin{minipage}[t]{\abs@colii@hsize}%
+      \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox1\vfill}%
+      \end{minipage}%
+      \vspace*{\@firstpage@foot@height}%
+    }%\end{strip}%
+    \clearpage%\vfill\eject%
+    \loop%
+    \ifdim\ht2>\textheight%
+    \ovsize=\vsize%
+    \setbox1=\vsplit2 to \ovsize%
+    \setbox1=\vbox{\unvbox1}%
+    \setbox3=\vsplit4 to \ovsize%
+    \setbox3=\vbox{\unvbox3}%
+    %\ifdim\ht4>\textheight%
+    %\oovsize=\vsize%
+    %\setbox3=\vsplit4 to \oovsize%
+    %\setbox3=\vbox{\unvbox3}%
+     \parbox{\textwidth}{%
+      \begin{minipage}[t]{\abs@coli@hsize}%
+      \leavevmode\vbox{\unvbox3\vfill}%
+      \end{minipage}\hfill%
+      \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+      \begin{minipage}[t]{\abs@colii@hsize}%
+      \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox1\vspace*{7\p@}}%
+      \end{minipage}%
+   }%
+    \clearpage%
+    \repeat%
+    \gdef\abs@dimchk{\ifdim\ht4>\ht2\ht4\else\ht2\fi}%
+     \parbox{\textwidth}{%
+      \begin{minipage}[t]{\abs@coli@hsize}%
+      \leavevmode\vbox to \abs@dimchk{\copy4\vfill}%
+      \end{minipage}
+      \hfill%
+      \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+      \begin{minipage}[t]{\abs@colii@hsize}%
+      \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox2\vfill}%
+      \end{minipage}%
+      \vspace*{2pc}%
+      \vskip\titleskip%
+    }%
+  \else%
+    \ifdim\abs@dima>\FreePageSpace%
+      \setbox8=\vbox{\unvbox\abs@boxa}%
+      \advance\FreePageSpace by -\@firstpage@foot@height%
+      %\advance\FreePageSpace by \baselineskip%
+      \setbox1=\vsplit8 to \FreePageSpace%
+      \setbox1=\vbox{\unvbox1}%
+      \setbox2=\vbox{\unvbox8}%
+       \parbox{\textwidth}{%%
+        \begin{minipage}[t]{\abs@coli@hsize}%
+        \leavevmode\vbox{\copy1\vfill}%
+        \end{minipage}\hfill%
+        \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\abs@colii@hsize}%
+        \leavevmode\hspace*{-\textwidth}\vbox to \ht1{\unvbox\abs@boxb\vfill}%
+        \end{minipage}%
+        \vspace*{\@firstpage@foot@height}%
+      }%
+      \clearpage%\vfill\eject%
+      \loop\ifdim\ht2>\textheight%
+      \ovsize=\vsize%
+      \setbox1=\vsplit2 to \ovsize%
+      \setbox1=\vbox{\unvbox1}%
+       \parbox{\textwidth}{%%
+        \begin{minipage}[t]{\abs@coli@hsize}%
+        \leavevmode\vbox{\unvbox1\vfill}%
+        \end{minipage}\hfill%
+        \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\abs@colii@hsize}%
+        \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox1\vspace*{7\p@}}%
+        \end{minipage}%
+      }%
+      \clearpage%
+      \repeat%
+       \parbox{\textwidth}{%
+        \begin{minipage}[t]{\abs@coli@hsize}%
+        \leavevmode\vbox{\unvbox2\vfill}%
+        \end{minipage}
+        \hfill%
+        \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\abs@colii@hsize}%
+        \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox2\vspace*{-7\p@}}%
+        \end{minipage}%
+        \vspace*{2pc}%
+        \vskip\titleskip%
+      }%
+    \else%
+      \gdef\abs@dimchk{\ifdim\abs@dima>\abs@dimb\abs@dima\else\abs@dimb\fi}%
+       \parbox{\textwidth}{%%
+        \begin{minipage}[t]{\abs@coli@hsize}%
+        \leavevmode\vbox to \abs@dimchk{\copy\abs@boxa\vfill}%
+        \end{minipage}\hfill%
+        \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\abs@colii@hsize}%
+        \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox\abs@boxb\vfill}%
+        \end{minipage}%
+        \vspace*{2pc}%
+        \vskip\titleskip%
+      }%
+    \fi%
+  \fi%
+%%%  \ifx\@titlenotes\@empty\else\global\thankstrue\footnotetext{\@titlenotes\par\vspace*{-\baselineskip}}\fi%
+}%
+
+\long\def\FWabsworkarea#1#2{%
+%  \setbox\abs@boxa\vbox{\hsize\abs@coli@hsize#1\dummyalphabet}%
+%  \abs@dima=\ht\abs@boxa%
+%  \advance\abs@dima by \dp\abs@boxa%
+%  \advance\abs@dima by -4.5\p@%
+  \setbox\abs@boxb\vbox{\hsize\textwidth#2\dummyalphabet}%
+  \abs@dimb=\ht\abs@boxb%
+  \advance\abs@dimb by \dp\abs@boxb%
+  \ComputeFreeSpaceOnPage%
+  \stripsep\z@%
+  %\ifx\@titlenotes\@empty\else\footnotetext{\textsuperscript{1}\@titlenotes\par\vspace*{-2\baselineskip}}\par\vspace*{-2\baselineskip}\fi%
+%%  \ifx\@fundinginfo\@empty\else\footnotetext{\textsuperscript{1}\@fundinginfo\par\vspace*{-2\baselineskip}}\par\vspace*{-2\baselineskip}\fi%
+  \ifdim\abs@dimb>\FreePageSpace%
+    \setbox8=\vbox{\unvbox\abs@boxb}%
+    \advance\FreePageSpace by -\@firstpage@foot@height%
+    %\advance\FreePageSpace by \baselineskip%
+    \setbox1=\vsplit8 to \FreePageSpace%
+    \setbox1=\vbox{\unvbox1}%
+    \setbox2=\vbox{\unvbox8}%
+    \ifdim\abs@dima>\FreePageSpace%
+%      \setbox7=\vbox{\unvbox\abs@boxa}%
+      %\advance\FreePageSpace by -\@firstpage@foot@height%
+      %\advance\FreePageSpace by \baselineskip%
+      \setbox3=\vsplit7 to \FreePageSpace%
+      \setbox3=\vbox{\unvbox3}%
+      \setbox4=\vbox{\unvbox7}%
+    \fi%
+    \gdef\abs@dimchk{\ifdim\ht3>\ht1\ht3\else\ht1\fi}%
+   \parbox{\textwidth}{%
+%      \begin{minipage}[t]{\abs@coli@hsize}%
+%      \leavevmode\vbox to \abs@dimchk{\ifdim\abs@dima>\FreePageSpace\copy3\else\unvbox\abs@boxa\fi\vfill}%
+%      \end{minipage}\hfill%
+\FWauthCOvrule %     \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+      \begin{minipage}[t]{\textwidth}%
+      \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox1\vfill}%
+      \end{minipage}%
+      \vspace*{\@firstpage@foot@height}%
+   }% \end{strip}%
+    \vfill\eject%
+    \loop%
+    \ifdim\ht2>\textheight%
+    \ovsize=\vsize%
+    \setbox1=\vsplit2 to \ovsize%
+    \setbox1=\vbox{\unvbox1}%
+    \setbox3=\vsplit4 to \ovsize%
+    \setbox3=\vbox{\unvbox3}%
+    %\ifdim\ht4>\textheight%
+    %\oovsize=\vsize%
+    %\setbox3=\vsplit4 to \oovsize%
+    %\setbox3=\vbox{\unvbox3}%
+    \parbox{\textwidth}{%\begin{strip}%
+    %  \begin{minipage}[t]{\abs@coli@hsize}%
+     % \leavevmode\vbox{\unvbox3\vfill}%
+     % \end{minipage}\hfill%
+      \FWauthCOvrule%
+      \begin{minipage}[t]{\textwidth}%
+      \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox1\vspace*{7\p@}}%
+      \end{minipage}%
+    }%\end{strip}%
+    \clearpage%
+    \repeat%
+    \gdef\abs@dimchk{\ifdim\ht4>\ht2\ht4\else\ht2\fi}%
+    \parbox{\textwidth}{%\begin{strip}
+     % \begin{minipage}[t]{\abs@coli@hsize}%
+     % \leavevmode\vbox to \abs@dimchk{\copy4\vfill}%
+     % \end{minipage}
+     % \hfill%
+     \FWauthCOvrule% \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+      \begin{minipage}[t]{\textwidth}%
+      \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox2\vfill}%
+      \end{minipage}%
+      \vspace*{2pc}%
+      \vskip\titleskip%
+    }%\end{strip}
+  \else%
+    \ifdim\abs@dima>\FreePageSpace%
+%      \setbox8=\vbox{\unvbox\abs@boxa}%
+      \advance\FreePageSpace by -\@firstpage@foot@height%
+      %\advance\FreePageSpace by \baselineskip%
+%      \setbox1=\vsplit8 to \FreePageSpace%
+    %  \setbox1=\vbox{\unvbox1}%
+%      \setbox2=\vbox{\unvbox8}%
+      \parbox{\textwidth}{%\begin{strip}%
+%        \begin{minipage}[t]{\abs@coli@hsize}%
+ %       \leavevmode\vbox{\copy1\vfill}%
+  %      \end{minipage}\hfill%
+   %     \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\textwidth}%
+        \leavevmode\hspace*{-\textwidth}\vbox to \ht1{\unvbox\abs@boxb\vfill}%
+        \end{minipage}%
+        \vspace*{\@firstpage@foot@height}%
+      }%\end{strip}%
+      \vfill\eject%
+      \loop\ifdim\ht2>\textheight%
+      \ovsize=\vsize%
+      \setbox1=\vsplit2 to \ovsize%
+      \setbox1=\vbox{\unvbox1}%
+      \parbox{\textwidth}{%\begin{strip}%
+%        \begin{minipage}[t]{\abs@coli@hsize}%
+ %       \leavevmode\vbox{\unvbox1\vfill}%
+  %      \end{minipage}\hfill%
+   \FWauthCOvrule%     \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\textwidth}%
+        \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox1\vspace*{7\p@}}%
+        \end{minipage}%
+      }%\end{strip}%
+      \clearpage%
+      \repeat%
+      \parbox{\textwidth}{%\begin{strip}
+   %     \begin{minipage}[t]{\abs@coli@hsize}%
+   %     \leavevmode\vbox{\unvbox2\vfill}%
+   %     \end{minipage}
+   %     \hfill%
+   \FWauthCOvrule%     \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\textwidth}%
+        \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox2\vspace*{-7\p@}}%
+        \end{minipage}%
+        \vspace*{2pc}%
+        \vskip\titleskip%
+      }%\end{strip}
+    \else%
+      \gdef\abs@dimchk{\ifdim\abs@dima>\abs@dimb\abs@dima\else\abs@dimb\fi}%
+     \parbox{\textwidth}{%\begin{strip}%
+       % \begin{minipage}[t]{\abs@coli@hsize}%
+       % \leavevmode\vbox to \abs@dimchk{\copy\abs@boxa\vfill}%
+       % \end{minipage}\hfill%
+        \FWauthCOvrule%
+        \begin{minipage}[t]{\textwidth}%
+        \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox\abs@boxb\vfill}%
+        \end{minipage}%
+        \vspace*{2pc}%
+        \vskip\titleskip%
+      }%\end{strip}%
+    \fi%
+  \fi%
+  \ifx\@titlenotes\@empty\else\global\thankstrue\footnotetext{\@titlenotes\par\vspace*{-\baselineskip}}\fi%
+}%
+
+
+\newif\ifabstract\global\abstractfalse%
+\newif\ifFWabstract%
+%
+\gdef\printabstractpart{%
+  \absworkarea{%
+    \noindent{\reset@font\addressfont\jmkaddress\par}%\movedauaddress\@movedauaddress%\@corres%
+   % \noindent\ifx\movedauaddress\@empty\else{\addressfont\@movedauaddress\par}\fi%
+ \removelastskip\vskip8pt%
+   \ifx\@corresinfo\empty\else{\corresinfo\par}\fi%
+   \removelastskip\vskip8pt%
+   \ifx\@presentaddress\empty\else\@presentaddress\fi%
+   \removelastskip\vskip8pt%
+    \ifx\@fundinginfo\@empty\else\par\@fundinginfo\fi%
+    \ifx\@JELinfo\@empty\else\par\@JELinfo\fi%
+  }{%
+    \global\abstracttrue%
+    \ifx\@abstract\@empty\else\@abstract\fi%
+\removelastskip\vskip15pt%
+    \ifx\@keywords\@empty\else\@keywords\fi%
+    \global\abstractfalse%
+  }
+}
+
+%% Printing Abstract
+%% Printing Abstract
+\long\def\printabstract{%
+  \bgroup%
+    \setlength{\parindent}{\z@}%
+    \printabstractpart%
+  \egroup%
+}%
+
+%% Legal Statement
+\def\legalstatement#1{%
+  \gdef\@temp{#1}%
+  \ifx\@temp\@empty%
+    \gdef\@legalstatement{}%
+  \else%
+    \gdef\@legalstatement{%
+      \smash{{\color{thirtyfivepercent}\@headfootrule}}\par\vspace*{-.45\baselineskip}%
+      \parbox[t]{\textwidth}{{\color{seventyfivepercent}\legalstatementfont#1\dummyalphabet\par}}\par\vspace*{4.75\p@}%
+    }%
+  \fi%
+}\legalstatement{}%
+
+
+%% Keywords %%
+
+\def\keywords#1{\def\@keywords{{\keywordsheadfont\textbf{KEYWORDS:}\par\removelastskip\nointerlineskip\vskip6pt \keywordsfont#1\par}}}\def\@keywords{}%
+
+\def\@fnsymbol#1{\ifcase#1\or \dagger\or \ddagger\or
+   \S\or \P\or \#\or \|\or **\or \dagger\dagger
+   \or \ddagger\ddagger\or \S\S\or \P\P\or \#\#\or \|\|\else\@ctrerr\fi\relax}
+
+\renewcommand{\maketitle}{\par%
+  \@afterindentfalse%
+  \begingroup
+    \renewcommand{\thefootnote}{\fnsymbol{footnote}}%
+    \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
+    \long\def\@makefntext##1{\parindent 1em\noindent
+            \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
+    \if@twocolumn
+      \ifnum \col@number=\@ne
+         \twocolumn[\@maketitle]%
+      \else
+         \twocolumn[\@maketitle]%
+      \fi
+    \else
+      \newpage
+      \global\@topnum\z@   % Prevents figures from going at top of page.
+      \@maketitle
+    \fi
+    \thispagestyle{titlepage}\@thanks%
+    \insert\footins{\authfndefns}\par%
+  \endgroup
+%  \let\footnotetext\oldfootnotetext%
+  \setcounter{footnote}{0}%
+  \let\thanks\relax
+  \let\maketitle\relax\let\@maketitle\relax
+  \gdef\@thanks{}\gdef\@author{}\gdef\@title{}
+  \@afterheading%
+}
+
+\newskip\adjtitleskip%
+
+\adjtitleskip=10pt plus4pt minus2pt
+
+\renewcommand{\@maketitle}{{\unskip%
+\hsize=\textwidth\parindent=0pt%
+\thispagestyle{empty}%
+%%\let\footnote\thanks%
+%\removelastskip\vskip-21.13pt%
+%\ifproof\artoprunningheaders\else\nullartoprunningheaders\fi\par%
+\removelastskip\vspace*{5pt}%
+\ifx\@DocHead\empty%
+  \zz{\@DocHead\par}%
+\else%
+  {\@DocHead\par}%
+\fi%
+\removelastskip\vskip4pt%
+\ifx\@title\empty\else{\@title\par}\fi%
+\removelastskip\vskip18pt%
+\ifnum\aucount>0%
+   \global\punctcount\aucount%
+   {\artauthors\par}%
+   \removelastskip\vskip8.25pt%
+%   {\jmkaddress\par}%
+\fi%
+ %  \removelastskip\vskip9pt%
+  % \ifx\@corresinfo\empty\else{\corresinfo\par}\fi%
+   %\removelastskip\vskip8pt%
+   %\ifx\@presentaddress\empty\else\@presentaddress\fi%
+   %\removelastskip\vskip8pt%
+   %{\history\par}%
+   %\removelastskip\vskip12pt%
+%   \ifx\@abstract\empty\else{\@abstract\par}\fi%
+   \removelastskip\vskip19pt%
+%   \ifx\@keywords\empty\else{\@keywords\par}\fi%
+   \printabstract
+%%   \vspace*{10pt plus4pt minus2pt}%
+   \removelastskip\vskip\adjtitleskip%
+}}%
+
+%\renewcommand\thefootnote{\@arabic\c@footnote}%
+
+%
+%%
+
+%%%%%%%%%%%%%%%%%%%%%%%section defn%%%%%%%%%%%%%%%%%%%%%%
+
+%\setcounter{secnumdepth}{3}
+\newcounter {chapter}[part]% for bookmarks
+\renewcommand\thepart         {\@Roman\c@part}
+\renewcommand\thesection      {\@arabic\c@section}
+\renewcommand\thesubsection   {\thesection.\@arabic\c@subsection}
+\renewcommand\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}
+\renewcommand\theparagraph    {\thesubsubsection.\@arabic\c@paragraph}
+\renewcommand\thesubparagraph {\theparagraph\@arabic\c@subparagraph}
+%%
+\renewcommand\part{\par
+   \addvspace{4ex}%
+   \@afterindentfalse
+   \secdef\@part\@spart}
+%%
+\def\@part[#1]#2{%
+    \ifnum \c@secnumdepth >\m@ne
+      \refstepcounter{part}%
+      \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+    \else
+      \addcontentsline{toc}{part}{#1}%
+    \fi
+    {\parindent \z@ \raggedright
+     \interlinepenalty \@M
+     \normalfont
+     \ifnum \c@secnumdepth >\m@ne
+       \Large\bfseries \partname~\thepart
+       \par\nobreak
+     \fi
+     \huge \bfseries #2%
+     \markboth{}{}\par}%
+    \nobreak
+    \vskip 3ex
+    \@afterheading}
+
+\def\@spart#1{%
+    {\parindent \z@ \raggedright
+     \interlinepenalty \@M
+     \normalfont
+     \huge \bfseries #1\par}%
+     \nobreak
+     \vskip 3ex
+     \@afterheading}
+
+\renewcommand\section{\@startsection{section}{1}{\z@}{-27pt \@plus -2pt \@minus -2pt}{12\p@}{\sectionfont}}%
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}{-23pt \@plus -2pt \@minus -2pt}{5\p@}{\subsectionfont}}%
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{-20pt \@plus -2pt \@minus -2pt}{2\p@}{\subsubsectionfont}}%
+%
+\newskip\secruleskip\secruleskip8.5\p@%
+%\def\secrule{\color{sixtyfivepercent}\hspace*{\secruleskip}\raisebox{0pt}{\rule{.5\p@}{7.5\p@}}\hspace*{\secruleskip}}%
+%\def\subsecrule{\color{sixtyfivepercent}\secrule}%
+%\def\subsubsecrule{\color{sixtyfivepercent}\hspace*{\secruleskip}\raisebox{0pt}{\rule{.5\p@}{6.5\p@}}\hspace*{\secruleskip}}%
+
+\def\secrule{\hspace*{\secruleskip}\raisebox{0pt}{\rule{.5\p@}{7.5\p@}}\hspace*{\secruleskip}}%
+\def\subsecrule{\secrule}%
+\def\subsubsecrule{\hspace*{\secruleskip}\raisebox{0pt}{\rule{.5\p@}{6.5\p@}}\hspace*{\secruleskip}}%
+
+
+\def\@sectioncntformat#1{{\ifappendixsec\csname the#1\endcsname\ \else\csname the#1\endcsname\secrule\fi}}%
+\def\@subsectioncntformat#1{{\ifappendixsec\csname the#1\endcsname\ \else\csname the#1\endcsname\subsecrule\fi}}%
+\def\@subsubsectioncntformat#1{{\ifappendixsec\csname the#1\endcsname\ \else\csname the#1\endcsname\subsubsecrule\fi}}%
+
+\def\@paragraphcntformat#1{{\ifappendixsec\csname the#1\endcsname\ \else\csname the#1\endcsname.\ \fi}}%
+\def\@subparagraphcntformat#1{#1}
+%
+\if@font@stix\relax%
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{-10pt \@plus -2pt \@minus -2pt}{2\p@}{\paragraphfont}}%
+\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}{-10pt \@plus -2pt \@minus -2pt}{-12\p@}{\subparagraphfont}}%
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+   \ifnum #2>\c@secnumdepth%
+      \edef\@svsec{\noindent}%
+   \else%
+      \refstepcounter{#1}%
+      \let\@@protect\protect%
+      \def\protect{\noexpand\protect\noexpand}%
+      \edef\@svsec{\csname @#1cntformat\endcsname{#1}}%
+      \let\protect\@@protect%
+   \fi%
+   \@tempskipa #5\relax%
+   \ifdim \@tempskipa>\z@%
+      \ifnum#2=1%
+         \begingroup #6\relax%\@hangfrom%
+            {\noindent\hskip #3\relax{\@svsec}}%
+            {\interlinepenalty\@M{\uppercase{#8}}\par}%
+         \endgroup%
+      \else%
+         \ifnum#2=2%
+            \begingroup #6\relax%\@hangfrom%
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M{#8}\par}%
+            \endgroup%
+         \else%
+      \ifnum#2=3%
+            \begingroup #6\relax%\@hangfrom%
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M{#8}\par}%
+            \endgroup%
+         \else%
+      \ifnum#2=4%
+            \begingroup #6\relax%\@hangfrom%
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M{\textcolor{black!75}{#8}}\par}%
+            \endgroup%
+         \else%
+            \begingroup #6\relax%\@hangfrom
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M#8\par}%
+            \endgroup%
+         \fi%
+     \fi%
+     \fi%
+      \fi%
+      \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 \textcolor{black!75}{#8}\hspace*{4pt}}%
+      }%
+   \fi%
+   \@xsect{#5}%
+}%
+\else%
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{-20pt \@plus -2pt \@minus -2pt}{2\p@}{\paragraphfont}}%
+\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}{-20pt \@plus -2pt \@minus -2pt}{-12\p@}{\subparagraphfont}}%
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+   \ifnum #2>\c@secnumdepth%
+      \edef\@svsec{\noindent}%
+   \else%
+      \refstepcounter{#1}%
+      \let\@@protect\protect%
+      \def\protect{\noexpand\protect\noexpand}%
+      \edef\@svsec{\csname @#1cntformat\endcsname{#1}}%
+      \let\protect\@@protect%
+   \fi%
+   \@tempskipa #5\relax%
+   \ifdim \@tempskipa>\z@%
+      \ifnum#2=1%
+         \begingroup #6\relax%\@hangfrom%
+            {\noindent\hskip #3\relax{\@svsec}}%
+            {\interlinepenalty\@M{\uppercase{#8}}\par}%
+         \endgroup%
+      \else%
+         \ifnum#2=2%
+            \begingroup #6\relax%\@hangfrom%
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M{#8}\par}%
+            \endgroup%
+         \else%
+            \begingroup #6\relax%\@hangfrom
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M{#8}\par}%
+            \endgroup%
+         \fi%
+      \fi%
+      \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 #8.\hspace*{6pt}}%
+      }%
+   \fi%
+   \@xsect{#5}%
+}%
+\fi%
+
+\def\@ssect#1#2#3#4#5#6{%
+   %#1#2#3#4#5#6
+   \@tempskipa #4\relax%
+   \ifdim\@tempskipa>\z@%
+      \ifnum#1=1%
+         \begingroup%
+            #5{\@hangfrom{\hskip #2}%
+            \interlinepenalty \@M\uppercase{#6}\@@par}%
+         \endgroup%
+         \addcontentsline{toc}{section}{#6}%
+      \else%
+         \begingroup%
+            #5{\@hangfrom{\hskip #2}%
+            \interlinepenalty \@M#6\@@par}%
+         \endgroup%
+      \fi%
+   \else%
+      \def\@svsechd{#5{\hskip #2\relax #6}}%
+   \fi%
+   \@xsect{#4}%
+}%
+%
+\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
+      %\ifnum#2=2%
+      %   \vspace*{-2.4\p@}%
+      %\fi%
+      \everypar{}%
+   \else%
+      \addpenalty\@secpenalty%
+      \addvspace\@tempskipa%
+   \fi%
+   \@ifstar%
+      {\@ssect{#2}{#3}{#4}{#5}{#6}}%
+      {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%% Regular pagestyle %%
+%
+
+\def\@authormark{}% 
+\def\authormark#1{%
+\markboth{{{#1}}}{{{#1}}}\gdef\@authormark{\def\etal{\textit{ET AL.}}\let\AQ\AHAQ#1}\gdef\@authormarkforcite{\undefined\def\etal{\textit{et al.}}#1}}%
+\def\etal{\textit{et al.}}%
+
+\newskip\rhverticalsep\rhverticalsep11.5\p@%
+\def\oddpage@headings@def{\hspace*{\rhverticalsep}\rhvertbar\pagenumberalign{\hss\thepagedef}}%
+\def\evenpage@headings@def{\pagenumberalign{\thepagedef\hss}\rhvertbar\hspace*{\rhverticalsep}}%
+
+\def\leftmarkdef{{\runningheadfont\@authormark}}%
+\def\rightmarkdef{{\runningheadfont\@authormark}}%
+%
+\def\headfootrule#1{\gdef\@headfootrule{#1}}\headfootrule{{\rule{\textwidth}{.5\p@}}}%
+%
+\def\head@headings@def#1{\vbox{%
+  \strut\par\vspace*{-5pt}%
+\vspace*{2\p@}%\fi%
+  \@headfootrule\par%\vspace*{-8.25\p@}%
+\vspace*{-11\p@}%\fi%
+  \hbox to \textwidth{#1\dummyalphabet}\par\vspace*{\p@}%
+  }%
+}%
+%
+
+\def\oddhead@headings@info{\head@headings@def{\rightmarkdef\hfill\oddpage@headings@def}}%
+\def\evenhead@headings@info{\head@headings@def{\evenpage@headings@def\hfill\leftmarkdef}}%
+
+\def\ps@headings{%
+\let\@oddfoot\@empty\let\@evenfoot\@empty%
+  \def\@oddhead{\oddhead@headings@info}%
+  \def\@evenhead{\evenhead@headings@info}%
+\let\@mkboth\markboth%
+}%
+\pagestyle{headings}%
+%
+
+%% Macros for Section headings %%
+
+\setcounter{secnumdepth}{3}% 
+%
+
+\newif\if@FTSection%
+\global\@FTSectionfalse%
+
+\newif\if@unnumsection%
+\@unnumsectionfalse%
+
+
+%% Macros for Bibliography %%
+
+%\newif\ifbackmatter\newcommand{\backmatter}{\par\global\backmattertrue}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+
+\if@Vancouverrefstyle%
+   \IfFileExists{NJDnatbib.sty}{\usepackage[numbers,super,sort&compress]{NJDnatbib}}{\usepackage[numbers,super,sort&compress]{natbib}}%
+   \bibliographystyle{WileyNJD-VANCOUVER}%
+   \bibpunct{}{}{, }{s}{}{}%
+\renewcommand\@biblabel[1]{#1.} 
+%   \renewcommand{\bibfont}{\reset@font\fontfamily{\rmdefault}\fontsize{8bp}{10}\selectfont\baselineskip=10\p@}%
+\else%
+\if@AMArefstyle%
+   \IfFileExists{NJDnatbib.sty}{\usepackage[numbers,super]{NJDnatbib}}{\usepackage[numbers,super]{natbib}}%
+   \bibliographystyle{WileyNJD-AMA}%
+\renewcommand\@biblabel[1]{#1.} 
+%   \bibpunct{(}{)}{,}{n}{}{}%
+%   \renewcommand{\bibfont}{\reset@font\fontfamily{\rmdefault}\fontsize{8bp}{10}\selectfont\baselineskip=10\p@}%
+\else%
+\if@Chemistryrefstyle%
+   \IfFileExists{NJDnatbib.sty}{\usepackage[numbers,super,sort&compress]{NJDnatbib}}{\usepackage[numbers,super,sort&compress]{natbib}}%
+   \bibliographystyle{WileyNJD-ACS}%
+   \bibpunct{[}{]}{,}{n}{}{}%
+\setcitestyle{super,open={[},close={]}}
+%%  \renewcommand{\bibfont}{\reset@font\fontfamily{\rmdefault}\fontsize{8bp}{10}\selectfont\baselineskip=10\p@}%
+\else%
+\if@AMSrefstyle%
+   \usepackage[numbers]{natbib}%
+   \bibliographystyle{WileyNJD-AMS}%
+   \bibpunct{(}{)}{,}{}{}{}%
+\setcitestyle{numbers,square}
+ %  \renewcommand{\bibfont}{\reset@font\fontfamily{\rmdefault}\fontsize{8bp}{10}\selectfont\baselineskip=10\p@}%
+\else%
+\if@APArefstyle
+   \usepackage[natbibapa]{NJDapacite}%
+   \bibliographystyle{WileyNJD-APA}%
+   \renewcommand{\APACrefbtitle}[2]{\textit{#2}}
+   \bibpunct{(}{)}{; }{}{}{}%
+   %%
+ %  \renewcommand{\bibfont}{\reset@font\fontfamily{\rmdefault}\fontsize{8bp}{10}\selectfont\baselineskip=10\p@}%
+   %%
+   \renewcommand{\APACrefnote}[1]{%
+     \ifx\@empty#1\@empty
+     \else
+       {#1.}%
+     \fi}%
+   %%
+   \renewcommand{\BTR}{}%%
+   \renewcommand{\BNUM}{}% number (of a technical report)
+   %%
+   \renewcommand{\APACjournalVolNumPages}[4]{%
+     \textit{#1}%             journal
+     \ifx\@empty#2\@empty
+     \else
+       \unskip, \textit{#2}%  volume
+     \fi
+     \ifx\@empty#3\@empty
+     \else
+       \unskip({#3})%      issue number
+     \fi
+     \ifx\@empty#4\@empty
+     \else
+       \unskip, {#4}%      pages
+     \fi}
+   %%
+\fi\fi\fi\fi\fi%
+
+
+%
+%% Macros for Scheme %%
+%
+\def\ftype@scheme{1}%
+\def\ext@scheme{los}%
+\def\fps@scheme{tbp}%
+\newcounter{scheme}%
+\setcounter{scheme}{0}%
+\renewcommand{\thescheme}{\@arabic\c@scheme}%
+\newenvironment{scheme}%
+               {\@float{scheme}}%
+               {\end@float}
+\newenvironment{scheme*}%
+               {\@dblfloat{scheme}}%
+               {\end@dblfloat}
+%
+%% Macros for display equations %%
+
+\let\SplitEq\relax%
+
+\setlength\arraycolsep{2\p@}%
+\setlength\tabcolsep{6\p@}%
+\setlength\arrayrulewidth{.4\p@}%
+\setlength\doublerulesep{4\p@}%
+\setlength\tabbingsep{\labelsep}%
+
+\def\eqnarray{%%\initialset%%%introduced on 31Oct15%
+   \stepcounter{equation}%
+   \def\@currentlabel{\p@equation\theequation}%
+   \global\@eqnswtrue
+   \m@th
+   \global\@eqcnt\z@
+   \tabskip\@centering%
+   \let\\\@eqncr
+   $$\everycr{}\halign to\displaywidth\bgroup
+       \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel% for centered equations
+%%     \hskip\z@skip\hfil$\displaystyle\tabskip\z@skip{##}$\@eqnsel% for left aligned equations
+      &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil
+      &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
+         $\displaystyle{##}$\hfil\tabskip\@centering
+      &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
+       \tabskip\z@skip
+      \cr
+}
+\def\endeqnarray{%
+      \@@eqncr
+      \egroup
+      \global\advance\c@equation\m@ne
+   $$\@ignoretrue
+}
+%
+
+%
+
+%% Macros for Tables %%
+
+\RequirePackage{booktabs}%
+
+%%%%table notes%%%%
+\newenvironment{tablenotes}{\list{}{\setlength{\labelsep}{0pt}% 
+\setlength{\labelwidth}{0pt}%
+\setlength{\leftmargin}{0pt}%
+\setlength{\rightmargin}{0pt}%
+\setlength{\topsep}{2pt}%
+\setlength{\itemsep}{0pt}%
+\setlength{\partopsep}{0pt}%
+\setlength{\listparindent}{0em}%
+\setlength{\parsep}{0pt}}%
+\item\relax%
+}{\endlist}%
+
+\def\tnote#1{#1}%%
+
+%
+
+%
+%\renewenvironment{sidewaystable*}
+%               {\@rotdblfloat{table}}
+%               {\thisfloatpagestyle{headings}\end@rotdblfloat}%
+
+%\renewenvironment{sidewaysfigure*}
+%               {\@rotdblfloat{figure}}
+%               {\thisfloatpagestyle{headings}\end@rotdblfloat}
+
+%% Macros for Quote %%
+
+\renewenvironment{quote}{\list{}{\setlength{\labelsep}{0pt}% 
+\setlength{\labelwidth}{0pt}%
+\setlength{\leftmargin}{\parindentvalue}%
+\setlength{\rightmargin}{\parindentvalue}%
+\setlength{\topsep}{12.5pt \@plus2pt \@minus1pt}% 
+\setlength{\itemsep}{0pt}%
+\setlength{\partopsep}{0pt}%
+\setlength{\listparindent}{0em}%
+\setlength{\parsep}{0pt}}%
+\def\rightline##1{\undefined\vspace*{6pt}\@@line{\hss##1}}%
+\item\relax%
+}{\endlist}%
+
+%%
+%%%% Enunciations: Theorem-like styles %%
+%%
+
+\let\iint\undefined%
+\let\iiint\undefined%
+\let\iiiint\undefined%
+\let\dddot\undefined%
+\let\ddddot\undefined%
+\let\overleftrightarrow\undefined%
+\let\underrightarrow\undefined%
+\let\underleftarrow\undefined%
+\let\underleftrightarrow\undefined%
+
+\RequirePackage[intlimits,sumlimits,namelimits,centertags]{amsmath}%
+
+\RequirePackage{amsthm}
+
+\newif\ifeproof%
+
+%%introduced to make number in italics
+%\def\thmhead@plain#1#2#3{%
+%  \thmname{#1}\ifeproof\else\thmnumber{\@ifnotempty{#1}{ }\textit{#2}}%
+%  \thmnote{ {\the\thm@notefont\textit{(#3)}}}\fi}
+
+%\newtheorem{theorem}{Theorem}
+%\newtheorem{lemma}{Lemma}
+%\newtheorem{proposition}{Proposition}
+%\newtheorem{definition}{Definition}
+%\newtheorem{corollary}{Corollary}
+%\newtheorem{conjecture}{Conjecture}
+%\newtheorem{eremark}{Remark}
+%\newtheorem{case}{Case}
+%\newtheorem{eexample}{Example}
+%\newtheorem{estep}{Step}
+%\newtheorem{eproof}{Proof}
+\def\thm@space@setup{%
+  \thm@preskip=7\p@ \thm@postskip=7\p@
+}
+\thm@headpunct{}
+
+\def\thmsep{9pt}%
+
+\newif\ifOldenunciation%
+\newif\ifEnunciation%
+
+\newtheoremstyle{plain}% Numbered
+{8pt}% Space above
+{8pt}% Space below
+{\normalfont}% Body font
+{}% Indent amount
+{\itshape}% Theorem head font
+{}% Punctuation after theorem head
+{\newline}% Space after theorem headi
+{}% Theorem head spec (can be left empty, meaning `normal')
+
+%\renewenvironment{proof}[1][\proofname]{\par%
+%\pushQED{\qed}%
+%  \pushQED{\fontsize{9}{0}\selectfont{\qed}}%
+%\pushQED{\hfill\fontsize{9}{0}\selectfont{$\square$}}%
+%  \normalfont \topsep8\p@\@plus6\p@\relax
+%  \noindent\ignorespaces{\itshape#1}\newline%\itshape
+%}{%
+%\popQED\endtrivlist\@endpefalse
+%}
+%
+
+\newtheoremstyle{WBstyleone}
+  {6\p@} % Space above
+  {6\p@} % Space below
+  {\normalfont} % Body font
+  {\z@} % Indent amount
+  {\bfseries} % Theorem head font
+  {.} % Punctuation after theorem head
+  {5\p@} % Space after theorem head
+  {} % Theorem head spec (can be left empty, meaning `normal')
+
+%\renewenvironment{proof}[1][\proofname]{\par%%%%%%%%%%%%%commented as per author request
+ % \pushQED{\qed}%
+%  \normalfont \topsep6\p@\@plus6\p@\relax
+%  \trivlist
+%  \item[\hskip\labelsep
+%      %  \itshape
+%    #1\@addpunct{.}]\ignorespaces\Enunciationtrue%
+%\itshape}{%\vspace*{-\baselineskip}%
+%  \popQED\endtrivlist\@endpefalse
+%}
+
+
+\newtheoremstyle{WBstyletwo}
+  {6\p@} % Space above
+  {6\p@} % Space below
+  {\normalfont} % Body font
+  {\z@} % Indent amount
+  {\itshape} % Theorem head font
+  {.} % Punctuation after theorem head
+  {5\p@} % Space after theorem head
+  {\thmname{#1}\thmnumber{ #2}\thmnote{. #3}} % Theorem head spec (can be left empty, meaning `normal')
+  
+\newtheoremstyle{WBstylethree}
+  {6\p@} % Space above
+  {6\p@} % Space below
+  {\normalfont} % Body font
+  {\z@} % Indent amount
+  {\bfseries} % Theorem head font
+  {.} % Punctuation after theorem head
+  {5\p@} % Space after theorem head
+  {} % Theorem head spec (can be left empty, meaning `normal')
+
+\theoremstyle{WBstyleone}
+\newtheorem{theorem}{Theorem}
+\newtheorem{construction}{Construction}
+\newtheorem{estimate}{Estimate}
+\newtheorem{lemma}{Lemma}
+\newtheorem{corollary}{Corollary}
+\newtheorem{result}{Result}
+\newtheorem{algth}{Algorithm}
+\newtheorem{proposition}{Proposition}
+\newtheorem{hypothesis}{Hypothesis}
+\newtheorem{experiment}{Experiment}
+\newtheorem{LWrule}{Rule}
+\newtheorem{procedure}{Procedure}
+
+\newtheorem{assertion}{Assertion}
+\newtheorem{axiom}{Axiom}
+\newtheorem{conjecture}{Conjecture}
+\newtheorem{criterion}{Criterion}
+\newtheorem{reduction}{Reduction}
+\newtheorem{sublemma}{Sublemma}
+
+
+\theoremstyle{WBstyletwo}
+\newtheorem{case}{Case}
+\newtheorem{remark}{Remark}
+\newtheorem{notation}{Notation}
+
+\newtheorem{answer}{Answer}
+\newtheorem{base}{Base}
+\newtheorem{claim}{Claim}
+\newtheorem{ccomment}{Comment}
+\newtheorem{subproof}{Subproof}
+\newtheorem{conclusion}{Conclusion}
+\newtheorem{observation}{Observation}
+\newtheorem{subcase}{Subcase}
+\newtheorem{step}{Step}
+\newtheorem{summary}{Summary}
+
+
+
+\theoremstyle{WBstylethree}
+\newtheorem{definition}{Definition}
+\newtheorem{condition}{Condition}
+\newtheorem{property}{Property}
+\newtheorem{problem}{Problem}
+\newtheorem{fact}{Fact}
+\newtheorem{assumption}{Assumption}
+\newtheorem{eexample}{Example}
+\newtheorem{model}{Model}
+
+\newtheorem{affirmation}{Affirmation}
+\newtheorem{application}{Application}
+\newtheorem{convention}{Convention}
+\newtheorem{discussion}{Discussion}
+\newtheorem{exercise}{Exercise}
+\newtheorem{question}{Question}
+\newtheorem{scholium}{Scholium}
+\newtheorem{terminology}{Terminology}
+
+%
+%% Macros for Appendix %%
+%
+\newif\ifappendixsec%
+
+\newcounter{printcitcnt}
+
+%\newcounter{appcnt}
+%\newcounter{appseccnt}
+%\newcounter{appsubseccnt}
+%\newcounter{appsubsubseccnt}
+
+%\def\sappendix{\global\appendixsectrue\printjnlcitation%
+%  \setcounter{figure}{0}%
+%  \setcounter{table}{0}%
+%  \setcounter{equation}{0}%
+%  \renewcommand\thesection{\protect\refstepcounter{appcnt}\protect\refstepcounter{appseccnt}APPENDIX\ \protect\Alph{appcnt}\protect\arabic{appseccnt}:}%
+%  \renewcommand\thesubsection{\protect\refstepcounter{appsubseccnt}\Alph{appseccnt}.\arabic{appsubseccnt}}%
+%  \renewcommand\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}%
+%  \renewcommand\thefigure{\@Alph\c@section\arabic{figure}\enspace }%
+%  \renewcommand\thetable{\@Alph\c@section\arabic{table}\enspace }%
+%  \renewcommand\theequation{\@Alph\c@section\arabic{equation}}%
+%}%
+%
+
+%%%%%%%%%%%%%%%%%%%%appendix%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\if@chapter@pp\@chapter@ppfalse
+\newif\if@knownclass@pp\@knownclass@ppfalse
+\@ifundefined{chapter}{%
+  \@ifundefined{section}{}{\@knownclass@pptrue}}{%
+  \@chapter@pptrue\@knownclass@pptrue}
+\providecommand{\phantomsection}{}
+\newcounter{@pps}
+  \renewcommand{\the@pps}{\alph{@pps}}
+\newif\if@pphyper
+  \@pphyperfalse
+\AtBeginDocument{%
+  \@ifpackageloaded{hyperref}{\@pphypertrue}{}}
+
+\newif\if@dotoc@pp\@dotoc@ppfalse
+\newif\if@dotitle@pp\@dotitle@ppfalse
+\newif\if@dotitletoc@pp\@dotitletoc@ppfalse
+\newif\if@dohead@pp\@dohead@ppfalse
+\newif\if@dopage@pp\@dopage@ppfalse
+\DeclareOption{toc}{\@dotoc@pptrue}
+\DeclareOption{title}{\@dotitle@pptrue}
+\DeclareOption{titletoc}{\@dotitletoc@pptrue}
+\DeclareOption{header}{\@dohead@pptrue}
+\DeclareOption{page}{\@dopage@pptrue}
+\ProcessOptions\relax
+\newcommand{\@ppendinput}{}
+\if@knownclass@pp\else
+  \PackageWarningNoLine{appendix}%
+    {There is no \protect\chapter\space or \protect\section\space command.\MessageBreak
+     The appendix package will not be used}
+  \renewcommand{\@ppendinput}{\endinput}
+\fi
+\@ppendinput
+
+\newcommand{\appendixtocon}{\@dotoc@pptrue}
+\newcommand{\appendixtocoff}{\@dotoc@ppfalse}
+\newcommand{\appendixpageon}{\@dopage@pptrue}
+\newcommand{\appendixpageoff}{\@dopage@ppfalse}
+\newcommand{\appendixtitleon}{\@dotitle@pptrue}
+\newcommand{\appendixtitleoff}{\@dotitle@ppfalse}
+\newcommand{\appendixtitletocon}{\@dotitletoc@pptrue}
+\newcommand{\appendixtitletocoff}{\@dotitletoc@ppfalse}
+\newcommand{\appendixheaderon}{\@dohead@pptrue}
+\newcommand{\appendixheaderoff}{\@dohead@ppfalse}
+\newcounter{@ppsavesec}
+\newcounter{@ppsaveapp}
+\setcounter{@ppsaveapp}{0}
+\newcommand{\@ppsavesec}{%
+  \if@chapter@pp \setcounter{@ppsavesec}{\value{chapter}} \else
+                 \setcounter{@ppsavesec}{\value{section}} \fi}
+\newcommand{\@pprestoresec}{%
+  \if@chapter@pp \setcounter{chapter}{\value{@ppsavesec}} \else
+                 \setcounter{section}{\value{@ppsavesec}} \fi}
+\newcommand{\@ppsaveapp}{%
+  \if@chapter@pp \setcounter{@ppsaveapp}{\value{chapter}} \else
+                 \setcounter{@ppsaveapp}{\value{section}} \fi}
+\newcommand{\restoreapp}{%
+  \if@chapter@pp \setcounter{chapter}{\value{@ppsaveapp}} \else
+                 \setcounter{section}{\value{@ppsaveapp}} \fi}
+\providecommand{\appendixname}{Appendix}
+\newcommand{\appendixtocname}{Appendices}
+\newcommand{\appendixpagename}{Appendices}
+\newcommand{\appendixpage}{%
+  \if@chapter@pp \@chap@pppage \else \@sec@pppage \fi
+}
+\newcommand{\clear@ppage}{%
+  \if@openright\cleardoublepage\else\clearpage\fi}
+
+\newcommand{\@chap@pppage}{%
+  \clear@ppage
+  \thispagestyle{plain}%
+  \if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi
+  \null\vfil
+  \markboth{}{}%
+  {\centering
+   \interlinepenalty \@M
+   \normalfont
+   \Huge \bfseries \appendixpagename\par}%
+  \if@dotoc@pp
+    \addappheadtotoc
+  \fi
+  \vfil\newpage
+  \if@twoside
+    \if@openright
+      \null
+      \thispagestyle{empty}%
+      \newpage
+    \fi
+  \fi
+  \if@tempswa
+    \twocolumn
+  \fi
+}
+
+\newcommand{\@sec@pppage}{%
+  \par
+  \addvspace{4ex}%
+  \@afterindentfalse
+  {\parindent \z@ \raggedright
+   \interlinepenalty \@M
+   \normalfont
+   \huge \bfseries \appendixpagename%
+   \markboth{}{}\par}%
+  \if@dotoc@pp
+    \addappheadtotoc
+  \fi
+  \nobreak
+  \vskip 3ex
+  \@afterheading
+}
+
+\newif\if@pptocpage
+  \@pptocpagetrue
+\newcommand{\noappendicestocpagenum}{\@pptocpagefalse}
+\newcommand{\appendicestocpagenum}{\@pptocpagetrue}
+\newcommand{\addappheadtotoc}{%
+  \phantomsection
+  \if@chapter@pp
+    \if@pptocpage
+      \addcontentsline{toc}{chapter}{\appendixtocname}%
+    \else
+      \if@pphyper
+        \addtocontents{toc}%
+          {\protect\contentsline{chapter}{\appendixtocname}{}{\@currentHref}}%
+      \else
+        \addtocontents{toc}%
+          {\protect\contentsline{chapter}{\appendixtocname}{}}%
+      \fi
+    \fi
+  \else
+    \if@pptocpage
+      \addcontentsline{toc}{section}{\appendixtocname}%
+    \else
+      \if@pphyper
+        \addtocontents{toc}%
+          {\protect\contentsline{section}{\appendixtocname}{}{\@currentHref}}%
+      \else
+        \addtocontents{toc}%
+          {\protect\contentsline{section}{\appendixtocname}{}}%
+      \fi
+    \fi
+  \fi
+}
+
+\providecommand{\theH@pps}{\alph{@pps}}
+
+\newcommand{\@resets@pp}{\par
+  \@ppsavesec
+  \stepcounter{@pps}
+  \setcounter{section}{0}%
+  \if@chapter@pp
+    \setcounter{chapter}{0}%
+    \renewcommand\@chapapp{\appendixname}%
+    \renewcommand\thechapter{\@Alph\c@chapter}%
+  \else
+    \setcounter{subsection}{0}%
+\ifnum\c@secnumdepth=1
+    \renewcommand\thesection{Appendix\@Alph\c@section}%
+\else
+  \renewcommand\thesection{\@Alph\c@section}%
+\fi
+  \fi
+  \if@pphyper
+    \if@chapter@pp
+      \renewcommand{\theHchapter}{\theH@pps.\Alph{chapter}}%
+    \else
+      \renewcommand{\theHsection}{\theH@pps.\Alph{section}}%
+    \fi
+    \def\Hy@chapapp{\appendixname}%
+  \fi
+  \restoreapp
+}
+
+\renewenvironment{appendix}{\printjnlcitation\section*{Appendix}\global\appendixsectrue%
+  \setcounter{figure}{0}%
+  \setcounter{table}{0}%
+  \setcounter{equation}{0}%
+  \@resets@pp
+  \if@dotoc@pp
+    \if@dopage@pp              % both page and toc
+      \if@chapter@pp           % chapters
+        \clear@ppage
+      \fi
+      \appendixpage
+    \else                      % toc only
+       \if@chapter@pp          % chapters
+         \clear@ppage
+       \fi
+      \addappheadtotoc
+    \fi
+  \else
+    \if@dopage@pp              % page only
+      \appendixpage
+    \fi
+  \fi
+  \if@chapter@pp
+    \if@dotitletoc@pp \@redotocentry@pp{chapter} \fi
+  \else
+    \if@dotitletoc@pp \@redotocentry@pp{section} \fi
+    \if@dohead@pp
+      \def\sectionmark##1{%
+        \if@twoside
+          \markboth{\@formatsecmark@pp{##1}}{}
+        \else
+          \markright{\@formatsecmark@pp{##1}}{}
+        \fi}
+    \fi
+    \if@dotitle@pp
+      \def\sectionname{\appendixname}
+      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
+        \csname the##1\endcsname\quad}
+    \fi
+  \fi%
+  \renewcommand\thefigure{\@Alph\c@section\arabic{figure}}%
+  \renewcommand\thetable{\@Alph\c@section\arabic{table}}%
+  \renewcommand\theequation{\@Alph\c@section\arabic{equation}}%
+}{%
+  \@ppsaveapp\@pprestoresec}
+
+\newcommand{\setthesection}{\thechapter.\Alph{section}}
+\newcommand{\setthesubsection}{\thesection.\Alph{subsection}}
+
+\newcommand{\@resets@ppsub}{\par
+  \stepcounter{@pps}
+  \if@chapter@pp
+    \setcounter{section}{0}
+    \renewcommand{\thesection}{\setthesection}
+  \else
+    \setcounter{subsection}{0}
+    \renewcommand{\thesubsection}{\setthesubsection}
+  \fi
+  \if@pphyper
+    \if@chapter@pp
+      \renewcommand{\theHsection}{\theH@pps.\setthesection}%
+    \else
+      \renewcommand{\theHsubsection}{\theH@pps.\setthesubsection}%
+    \fi
+    \def\Hy@chapapp{\appendixname}%
+  \fi
+}
+
+\newenvironment{subappendices}{%
+  \@resets@ppsub
+  \if@chapter@pp
+    \if@dotitletoc@pp \@redotocentry@pp{section} \fi
+    \if@dotitle@pp
+      \def\sectionname{\appendixname}
+      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
+        \csname the##1\endcsname\quad}
+    \fi
+  \else
+    \if@dotitletoc@pp \@redotocentry@pp{subsection} \fi
+    \if@dotitle@pp
+      \def\subsectionname{\appendixname}
+      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
+        \csname the##1\endcsname\quad}
+    \fi
+  \fi}{}
+
+\newcommand{\@formatsecmark@pp}[1]{%
+  \MakeUppercase{\appendixname\space
+    \ifnum \c@secnumdepth >\z@
+      \thesection\quad
+    \fi
+    #1}}
+\newcommand{\@redotocentry@pp}[1]{%
+  \let\oldacl@pp=\addcontentsline
+  \def\addcontentsline##1##2##3{%
+    \def\@pptempa{##1}\def\@pptempb{toc}%
+    \ifx\@pptempa\@pptempb
+      \def\@pptempa{##2}\def\@pptempb{#1}%
+      \ifx\@pptempa\@pptempb
+\oldacl@pp{##1}{##2}{\appendixname\space ##3}%
+      \else
+        \oldacl@pp{##1}{##2}{##3}%
+      \fi
+    \else
+      \oldacl@pp{##1}{##2}{##3}%
+    \fi}
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\renewcommand\footnoterule{%%LN
+  \kern-3\p@%
+  \hrule height0.5pt%
+  \kern4.4\p@%
+}%
+
+%
+%%% Macros for float algorithm %%%
+
+%\usepackage[plain]{algorithm} %% wrapper
+%\usepackage{varwidth}%
+%\usepackage{algorithmicx}%
+%\usepackage{algpseudocode}%
+\usepackage{algorithm, algorithmicx, algpseudocode}
+
+\usepackage{listings}%
+\usepackage{alltt}%
+
+
+%%% Macros for upright lowercase greek characters %%%
+
+
+%% since small triangle symbol is not found used \triangleright and rotated to 90 degrees %%
+
+
+\def\@jissue{}%
+\def\jissue#1{\gdef\@jissue{#1}}%
+
+\def\@licenseVal{}%
+\def\licenseVal#1{\gdef\@licenseVal{#1}}%
+
+\def\@supplinks{}%
+\def\supplinks#1{\gdef\@supplinks{#1}}%
+
+\def\@coninterest{}%
+\def\coninterest#1{\gdef\@coninterest{#1}}%
+
+\def\@confinfo{}%
+\def\confinfo#1{\def\@confinfo{#1}}%
+
+\def\@cdate{}%
+\def\cdate#1{\gdef\@cdate{#1}}%
+
+\def\@cname{}%
+\def\cname#1{\gdef\@cname{#1}}%
+
+\def\@cloc{}%
+\def\cloc#1{\gdef\@cloc{#1}}%
+
+\def\tabheadfont{}%
+
+\let\fullpagewidth\textwidth%
+
+\def\jargon#1{#1}%
+
+\newenvironment{bm}[1][]{\begingroup%
+\if!#1!\else\section*{#1}\fi%
+}{\endgroup}
+
+\let\glosslist\description%
+\let\endglosslist\enddescription%
+
+\newenvironment{ack}[1][]{\begingroup%
+\if!#1!\else\section*{#1}\fi%
+}{\endgroup}
+
+\def\APLrightarrowbox{}% Use \usepackage{wasysym} to get this symbol
+\def\boxcircle{}%
+
+%% Macros for \citation tag %%
+
+\newbox\jnlcitationbox%
+
+\def\cname#1{\gdef\author##1{##1}#1}%
+\def\cyear#1{#1}%
+\def\ctitle#1{#1}%
+\def\cjournal#1{\textit{#1}}%
+\def\cvol#1{\textit{#1}}%
+
+\gdef\@jnlcitation{}%
+\def\jnlcitation#1{\gdef\@jnlcitation{\textbf{How to cite this article: }#1}}%
+
+\newdimen\jnlcithsize%
+%\jnlcithsize=\hsize%
+\advance\jnlcithsize-12pt% fbox sep x 2
+\advance\jnlcithsize-1pt% fbox rule x 2
+
+\gdef\printjnlcitation{\removelastskip\vskip18pt\fboxsep=6pt\fboxrule=0.5pt%
+\hskip-\parindentvalue\fbox{\vbox{\noindent\@jnlcitation}}}%
+
+\AtEndDocument{\ifappendixsec\else\printjnlcitation\fi}%
+
+%% Misc math macros %%
+
+\newcommand{\xleftrightarrow}[2][]{\ext@arrow 3399\leftrightarrowfill@{#1}{#2}}%
+
+%
+%%% Macros for Biography %%%
+%
+\RequirePackage{wrapfig}%
+%
+%  \begin{wrapfigure}[12]{r}[34pt]{5cm} <figure> \end{wrapfigure}
+%                     --  -  ----  ---
+%  [number of narrow lines] {placement} [overhang] {width of figure}
+\newcount\wraplines%
+\wraplines=5%
+%
+\newbox\@authorfigbox%
+\newskip\@authorfigboxdim%
+%
+
+\newskip\biofigadjskip%
+\biofigadjskip=0pt%
+%
+\newenvironment{biography}[2]{\par\addvspace{10.5pt plus3.375pt minus1.6875pt}%\lineno@off%
+\def\author##1{\textbf{##1}}%
+\def\@authorfig{{#1}}%
+\setbox\@authorfigbox=\hbox{#1}%%10Nov16%%
+\@authorfigboxdim=\wd\@authorfigbox%
+\advance\@authorfigboxdim by 10pt
+\if@dblspace\else\wraplines=7\fi%
+%14pt%
+\noindent{%
+\ifx\@authorfig\@empty\else\unskip%
+\begin{wrapfigure}[\wraplines]{l}[0pt]{\@authorfigboxdim}%{38.25mm}%
+\vskip-25pt\vskip\biofigadjskip%
+\@authorfig%
+\end{wrapfigure}%
+\fi%
+#2%
+\par%
+}}{\par\addvspace{10.5pt plus3.375pt minus1.6875pt}}
+
+\def\emph#1{\textit{#1}}
+
+%%% Macros for Bibliography %%%
+
+
+\endinput
+
+
Index: doc/papers/concurrency/AMA/AMA-stix/ama/wileyNJD-AMA.bbl
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/ama/wileyNJD-AMA.bbl	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/ama/wileyNJD-AMA.bbl	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,156 @@
+\begin{thebibliography}{10}
+
+\bibitem{Hirt1974}
+Hirt CW, Amsden AA, Cook JL. An arbitrary {L}agrangian-{E}ulerian computing
+  method for all flow speeds.  {\it J {C}omput {P}hys. }1974;14(3):227--253.
+
+\bibitem{Liska2010}
+Liska R, Shashkov M, Vachal P, Wendroff B. Optimization-based synchronized
+  flux-corrected conservative interpolation (remapping) of mass and momentum
+  for arbitrary {L}agrangian-{E}ulerian methods.  {\it J {C}omput {P}hys.
+  }2010;229(5):1467--1497.
+
+\bibitem{Taylor1937}
+Taylor GI, Green AE. Mechanism of the production of small eddies from large
+  ones.  {\it P {R}oy {S}oc {L}ond {A} {M}at. }1937;158(895):499--521.
+\newblock \url{https://doi.org/10.1098/rspa.1937.0036},
+  \url{http://rspa.royalsocietypublishing.org/content/158/895/499}.
+
+\bibitem{Knupp1999}
+Knupp PM. Winslow smoothing on two-dimensional unstructured meshes.  {\it Eng
+  {C}omput. }1999;15:263--268.
+
+\bibitem{Kamm2000}
+Kamm J. {\it Evaluation of the {S}edov-von {N}eumann-{T}aylor blast wave
+  solution. } Technical {R}eport LA-UR-00-6055: Los {A}lamos {N}ational
+  {L}aboratory; 2000.
+
+\bibitem{Kucharik2003}
+Kucharik M, Shashkov M, Wendroff B. An efficient linearity-and-bound-preserving
+  remapping method.  {\it J {C}omput {P}hys. }2003;188(2):462--471.
+
+\bibitem{Blanchard2015}
+Blanchard G, Loubere R. {\it High-Order {C}onservative {R}emapping with a
+  posteriori {MOOD} stabilization on polygonal meshes. }
+  \url{https://hal.archives-ouvertes.fr/hal-01207156}, the {HAL} {O}pen
+  {A}rchive, hal-01207156. Accessed January 13, 2016; 2015.
+
+\bibitem{Burton2013}
+Burton DE, Kenamond MA, Morgan NR, Carney TC, Shashkov MJ. An intersection
+  based {ALE} scheme {(xALE)} for cell centered hydrodynamics {(CCH)}.  In:
+  Talk at {M}ultimat 2013, {I}nternational {C}onference on {N}umerical
+  {M}ethods for {M}ulti-{M}aterial {F}luid {F}lows; September 2--6, 2013; San
+  {F}rancisco.
+\newblock LA-UR-13-26756.2.
+
+\bibitem{Berndt2011}
+Berndt M, Breil J, Galera S, Kucharik M, Maire PH, Shashkov M. Two-step hybrid
+  conservative remapping for multimaterial arbitrary {L}agrangian-{E}ulerian
+  methods.  {\it J {C}omput {P}hys. }2011;230(17):6664--6687.
+
+\bibitem{Kucharik2012}
+Kucharik M, Shashkov M. One-step hybrid remapping algorithm for multi-material
+  arbitrary {L}agrangian-{E}ulerian methods.  {\it J {C}omput {P}hys.
+  }2012;231(7):2851--2864.
+
+\bibitem{Breil2015}
+Breil J, Alcin H, Maire PH. A swept intersection-based remapping method for
+  axisymmetric {ReALE} computation.  {\it Int {J} {N}umer {M}eth {F}l.
+  }2015;77(11):694--706.
+\newblock Fld.3996.
+
+\bibitem{Barth1997}
+Barth TJ. Numerical methods for gasdynamic systems on unstructured meshes.  In:
+   Kroner D, Rohde C, Ohlberger M, eds. {\it An {I}ntroduction to {R}ecent
+  {D}evelopments in {T}heory and {N}umerics for {C}onservation {L}aws,
+  {P}roceedings of the {I}nternational {S}chool on {T}heory and {N}umerics for
+  {C}onservation {L}aws}, Lecture {N}otes in {C}omputational {S}cience and
+  {E}ngineering. Berlin: Springer 1997.
+\newblock ISBN 3-540-65081-4.
+
+\bibitem{Lauritzen2011}
+Lauritzen P, Erath C, Mittal R. On simplifying `incremental remap'-based
+  transport schemes.  {\it J {C}omput {P}hys. }2011;230(22):7957--7963.
+
+\bibitem{Klima2017}
+Klima M, Kucharik M, Shashkov M. Local error analysis and comparison of the
+  swept- and intersection-based remapping methods.  {\it Commun {C}omput
+  {P}hys. }2017;21(2):526--558.
+
+\bibitem{Dukowicz2000}
+Dukowicz JK, Baumgardner JR. Incremental remapping as a transport/advection
+  algorithm.  {\it J {C}omput {P}hys. }2000;160(1):318--335.
+
+\bibitem{Kucharik2011}
+Kucharik M, Shashkov M. Flux-based approach for conservative remap of
+  multi-material quantities in {2D} arbitrary {L}agrangian-{E}ulerian
+  simulations.  In:  Fo\v{r}t J, F{\"{u}}rst J, Halama J, Herbin R, Hubert F,
+  eds. {\it Finite {V}olumes for {C}omplex {A}pplications {VI} {P}roblems \&
+  {P}erspectives},  Springer {P}roceedings in {M}athematics, vol. 1: Springer
+  2011 (pp. 623--631).
+
+\bibitem{Kucharik2014}
+Kucharik M, Shashkov M. Conservative multi-material remap for staggered
+  multi-material arbitrary {L}agrangian-{E}ulerian methods.  {\it J {C}omput
+  {P}hys. }2014;258:268--304.
+
+\bibitem{Loubere2005}
+Loubere R, Shashkov M. A subcell remapping method on staggered polygonal grids
+  for arbitrary-{L}agrangian-{E}ulerian methods.  {\it J {C}omput {P}hys.
+  }2005;209(1):105--138.
+
+\bibitem{Caramana1998}
+Caramana EJ, Shashkov MJ. Elimination of artificial grid distortion and
+  hourglass-type motions by means of {L}agrangian subzonal masses and
+  pressures.  {\it J {C}omput {P}hys. }1998;142(2):521--561.
+
+\bibitem{Hoch2009}
+Hoch P. {\it An arbitrary {L}agrangian-{E}ulerian strategy to solve
+  compressible fluid flows. } Technical {R}eport: CEA; 2009.
+\newblock HAL: hal-00366858.
+  https://hal.archives-ouvertes.fr/docs/00/36/68/58/PDF/ale2d.pdf. Accessed
+  January 13, 2016.
+
+\bibitem{Shashkov1996}
+Shashkov M. {\it Conservative {F}inite-{D}ifference {M}ethods on {G}eneral
+  {G}rids}.
+\newblock Boca Raton, Florida: CRC {P}ress; 1996.
+\newblock ISBN 0-8493-7375-1.
+
+\bibitem{Benson1992}
+Benson DJ. Computational methods in {L}agrangian and {E}ulerian hydrocodes.
+  {\it Comput {M}ethod {A}ppl {M}. }1992;99(2--3):235--394.
+
+\bibitem{Margolin2003}
+Margolin LG, Shashkov M. Second-order sign-preserving conservative
+  interpolation (remapping) on general grids.  {\it J {C}omput {P}hys.
+  }2003;184(1):266--298.
+
+\bibitem{Kenamond2013}
+Kenamond MA, Burton DE. Exact intersection remapping of multi-material
+  domain-decomposed polygonal meshes.  In: Talk at {M}ultimat 2013,
+  {I}nternational {C}onference on {N}umerical {M}ethods for {M}ulti-{M}aterial
+  {F}luid {F}lows; September 2--6, 2013; San {F}rancisco.
+\newblock LA-UR-13-26794.
+
+\bibitem{Dukowicz1984}
+Dukowicz J. Conservative rezoning (remapping) for general quadrilateral meshes.
+   {\it J {C}omput {P}hys. }1984;54(3):411--424.
+
+\bibitem{Margolin2002}
+Margolin LG, Shashkov M. {\it Second-order sign-preserving remapping on general
+  grids. } Technical Report LA-UR-02-525: Los {A}lamos {N}ational {L}aboratory;
+  2002.
+
+\bibitem{Mavriplis2003}
+Mavriplis DJ. Revisiting the least-squares procedure for gradient
+  reconstruction on unstructured meshes.  In: AIAA 2003-3986. 16th {AIAA}
+  {C}omputational {F}luid {D}ynamics {C}onference; June 23--26, 2003; Orlando,
+  {F}lorida.
+
+\bibitem{Scovazzi2008}
+Scovazzi G, Love E, Shashkov M. Multi-scale {L}agrangian shock hydrodynamics on
+  {Q1/P0} finite elements: {T}heoretical framework and two-dimensional
+  computations.  {\it Comput {M}ethod {A}ppl {M}. }2008;197(9--12):1056--1079.
+
+\end{thebibliography}
Index: doc/papers/concurrency/AMA/AMA-stix/ama/wileyNJD-AMA.bib
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/ama/wileyNJD-AMA.bib	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/ama/wileyNJD-AMA.bib	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,299 @@
+%==Ref1
+@article{Hirt1974,
+      author = "Hirt, CW and Amsden, AA and Cook, JL",
+       title = "An arbitrary {L}agrangian-{E}ulerian computing method for all flow speeds",
+        year = "1974",
+     journal = "J {C}omput {P}hys",
+      volume = "14",
+      number = "3",
+       pages = "227--253"
+}
+
+%==Ref2
+@article{Benson1992,
+      author = "Benson, DJ",
+       title = "Computational methods in {L}agrangian and {E}ulerian hydrocodes",
+        year = "1992",
+     journal = "Comput {M}ethod {A}ppl {M}",
+      volume = "99",
+      number = "2--3",
+       pages = "235--394"
+}
+
+%==Ref3
+@article{Dukowicz1984,
+      author = "Dukowicz, J",
+       title = "Conservative rezoning (remapping) for general quadrilateral meshes",
+        year = "1984",
+     journal = "J {C}omput {P}hys",
+      volume = "54",
+      number = "3",
+       pages = "411--424"
+}
+
+%==Ref4
+@article{Margolin2003,
+      author = "Margolin, LG and Shashkov, M",
+       title = "Second-order sign-preserving conservative interpolation (remapping) on general grids",
+        year = "2003",
+     journal = "J {C}omput {P}hys",
+      volume = "184",
+      number = "1",
+       pages = "266--298"
+}
+
+%==Ref5
+@inproceedings{Kenamond2013,
+      author = "Kenamond, MA and Burton, DE",
+       title = "Exact intersection remapping of multi-material domain-decomposed polygonal meshes",
+      series = "Talk at {M}ultimat 2013, {I}nternational {C}onference on {N}umerical {M}ethods for {M}ulti-{M}aterial {F}luid {F}lows",
+     address = "San {F}rancisco",
+        year = "September 2--6, 2013",
+        note = "LA-UR-13-26794"
+}
+
+%==Ref6
+@inproceedings{Burton2013,
+      author = "Burton, DE and Kenamond, MA and Morgan, NR and Carney, TC and Shashkov, MJ",
+       title = "An intersection based {ALE} scheme {(xALE)} for cell centered hydrodynamics {(CCH)}",
+      series = "Talk at {M}ultimat 2013, {I}nternational {C}onference on {N}umerical {M}ethods for {M}ulti-{M}aterial {F}luid {F}lows",
+     address = "San {F}rancisco",
+        year = "September 2--6, 2013",
+        note = "LA-UR-13-26756.2"
+}
+
+%==Ref7
+@article{Berndt2011,
+      author = "Berndt, M and Breil, J and Galera, S and Kucharik, M and Maire, PH and Shashkov, M",
+       title = "Two-step hybrid conservative remapping for multimaterial arbitrary {L}agrangian-{E}ulerian methods",
+        year = "2011",
+     journal = "J {C}omput {P}hys",
+      volume = "230",
+      number = "17",
+       pages = "6664--6687"
+}
+
+%==Ref8
+@article{Kucharik2012,
+      author = "Kucharik, M and Shashkov, M",
+       title = "One-step hybrid remapping algorithm for multi-material arbitrary {L}agrangian-{E}ulerian methods",
+        year = "2012",
+     journal = "J {C}omput {P}hys",
+      volume = "231",
+      number = "7",
+       pages = "2851--2864"
+}
+
+%==Ref9
+@article{Breil2015,
+      author = "Breil, J and Alcin, H and Maire, PH",
+       title = "A swept intersection-based remapping method for axisymmetric {ReALE} computation",
+        year = "2015",
+     journal = "Int {J} {N}umer {M}eth {F}l",
+      volume = "77",
+      number = "11",
+       pages = "694--706",
+        note = "Fld.3996"
+}
+
+%==Ref10
+@incollection{Barth1997,
+      author = "Barth, TJ",
+       title = "Numerical methods for gasdynamic systems on unstructured meshes",
+   booktitle = "An {I}ntroduction to {R}ecent {D}evelopments in {T}heory and {N}umerics for {C}onservation {L}aws, {P}roceedings of the {I}nternational {S}chool on {T}heory and {N}umerics for {C}onservation {L}aws",
+      editor = "Kroner, D and Rohde, C and Ohlberger, M",
+     address = "Berlin",
+      series = "Lecture {N}otes in {C}omputational {S}cience and {E}ngineering",
+   publisher = "Springer",
+        year = "1997",
+        note = "ISBN 3-540-65081-4"
+}
+
+%==Ref11
+@article{Liska2010,
+      author = "Liska, R and Shashkov, M and Vachal, P and Wendroff, B",
+       title = "Optimization-based synchronized flux-corrected conservative interpolation (remapping) of mass and momentum for arbitrary {L}agrangian-{E}ulerian methods",
+        year = "2010",
+     journal = "J {C}omput {P}hys",
+      volume = "229",
+      number = "5",
+       pages = "1467--1497"
+}
+
+%==Ref12
+@article{Kucharik2003,
+      author = "Kucharik, M and Shashkov, M and Wendroff, B",
+       title = "An efficient linearity-and-bound-preserving remapping method",
+        year = "2003",
+     journal = "J {C}omput {P}hys",
+      volume = "188",
+      number = "2",
+       pages = "462--471"
+}
+
+%==Ref13
+@misc{Blanchard2015,
+      author = "Blanchard, G and Loubere, R",
+       title = "High-Order {C}onservative {R}emapping with a posteriori {MOOD} stabilization on polygonal meshes",
+        year = "2015",
+	note = "\url{https://hal.archives-ouvertes.fr/hal-01207156}, the {HAL} {O}pen {A}rchive, hal-01207156. Accessed January 13, 2016"
+}
+
+%==Ref14
+@article{Lauritzen2011,
+      author = "Lauritzen, P and Erath, C and Mittal, R",
+       title = "On simplifying `incremental remap'-based transport schemes",
+        year = "2011",
+     journal = "J {C}omput {P}hys",
+      volume = "230",
+      number = "22",
+       pages = "7957--7963"
+}
+
+%==Ref15
+@article{Klima2017,
+      author = "Klima, M and Kucharik, M and Shashkov, M",
+       title = "Local error analysis and comparison of the swept- and intersection-based remapping methods",
+        year = "2017",
+     journal = "Commun {C}omput {P}hys",
+      volume = "21",
+      number = "2",
+       pages = "526--558"
+}
+
+%==Ref16
+@article{Dukowicz2000,
+      author = "Dukowicz, JK and Baumgardner, JR",
+       title = "Incremental remapping as a transport/advection algorithm",
+        year = "2000",
+     journal = "J {C}omput {P}hys",
+      volume = "160",
+      number = "1",
+       pages = "318--335"
+}
+
+%==Ref17
+@incollection{Kucharik2011,
+      author = "Kucharik, M and Shashkov, M",
+       title = "Flux-based approach for conservative remap of multi-material quantities in {2D} arbitrary {L}agrangian-{E}ulerian simulations",
+   booktitle = "Finite {V}olumes for {C}omplex {A}pplications {VI} {P}roblems \& {P}erspectives",
+      editor = "Fo\v{r}t, J and F{\"{u}}rst, J and Halama, J and Herbin, R and Hubert, F",
+      series = "Springer {P}roceedings in {M}athematics",
+      volume = "1",
+   publisher = "Springer",
+        year = "2011",
+       pages = "623--631"
+}
+
+%==Ref18
+@article{Kucharik2014,
+      author = "Kucharik, M and Shashkov, M",
+       title = "Conservative multi-material remap for staggered multi-material arbitrary {L}agrangian-{E}ulerian methods",
+        year = "2014",
+     journal = "J {C}omput {P}hys",
+      volume = "258",
+       pages = "268--304"
+}
+
+%==Ref19
+@article{Loubere2005,
+      author = "Loubere, R and Shashkov, M",
+       title = "A subcell remapping method on staggered polygonal grids for arbitrary-{L}agrangian-{E}ulerian methods",
+        year = "2005",
+     journal = "J {C}omput {P}hys",
+      volume = "209",
+      number = "1",
+       pages = "105--138"
+}
+
+%==Ref20
+@techreport{Margolin2002,
+      author = "Margolin, LG and Shashkov, M",
+       title = "Second-order sign-preserving remapping on general grids",
+ institution = "Los {A}lamos {N}ational {L}aboratory",
+        year = "2002",
+      number = "Technical Report LA-UR-02-525"
+}
+
+%==Ref21
+@inproceedings{Mavriplis2003,
+      author = "Mavriplis, DJ",
+       title = "Revisiting the least-squares procedure for gradient reconstruction on unstructured meshes",
+        year = "June 23--26, 2003",
+      series = "AIAA 2003-3986. 16th {AIAA} {C}omputational {F}luid {D}ynamics {C}onference",
+     address = "Orlando, {F}lorida"
+}
+
+%==Ref22
+@article{Scovazzi2008,
+      author = "Scovazzi, G and Love, E and Shashkov, M",
+       title = "Multi-scale {L}agrangian shock hydrodynamics on {Q1/P0} finite elements: {T}heoretical framework and two-dimensional computations",
+        year = "2008",
+     journal = "Comput {M}ethod {A}ppl {M}",
+      volume = "197",
+      number = "9--12",
+       pages = "1056--1079"
+}
+
+%==Ref23
+@article{Caramana1998,
+      author = "Caramana, EJ and Shashkov, MJ",
+       title = "Elimination of artificial grid distortion and hourglass-type motions by means of {L}agrangian subzonal masses and pressures",
+        year = "1998",
+     journal = "J {C}omput {P}hys",
+      volume = "142",
+      number = "2",
+       pages = "521--561"
+}
+
+%==Ref24
+@techreport{Hoch2009,
+      author = "Hoch, P",
+       title = "An arbitrary {L}agrangian-{E}ulerian strategy to solve compressible fluid flows",
+      number = "Technical {R}eport",
+ institution = "CEA",
+        year = "2009",
+        note = "HAL: hal-00366858. https://hal.archives-ouvertes.fr/docs/00/36/68/58/PDF/ale2d.pdf. Accessed January 13, 2016"
+}
+
+%==Ref25
+@book{Shashkov1996,
+      author = "Shashkov, M",
+       title = "Conservative {F}inite-{D}ifference {M}ethods on {G}eneral {G}rids",
+   publisher = "CRC {P}ress",
+     address = "Boca Raton, Florida",
+        year = "1996",
+        note = "ISBN 0-8493-7375-1"
+}
+
+%==Ref26
+@article{Knupp1999,
+      author = "Knupp, PM",
+       title = "Winslow smoothing on two-dimensional unstructured meshes",
+        year = "1999",
+     journal = "Eng {C}omput",
+      volume = "15",
+       pages = "263--268"
+}
+
+%==Ref27
+@techreport{kamm2000,
+      author = "Kamm, J",
+       title = "Evaluation of the {S}edov-von {N}eumann-{T}aylor blast wave solution",
+ institution = "Los {A}lamos {N}ational {L}aboratory",
+        year = "2000",
+      number = "Technical {R}eport LA-UR-00-6055"
+}
+
+%==Ref28
+@article{Taylor1937,
+      author = "Taylor, GI and Green, AE",
+       title = "Mechanism of the production of small eddies from large ones",
+        year = "1937",
+     journal = "P {R}oy {S}oc {L}ond {A} {M}at",
+      volume = "158",
+      number = "895",
+       pages = "499--521",
+        note = "\url{https://doi.org/10.1098/rspa.1937.0036}, \url{http://rspa.royalsocietypublishing.org/content/158/895/499}"
+}
+
Index: doc/papers/concurrency/AMA/AMA-stix/ama/wileyNJD-AMA.tex
===================================================================
--- doc/papers/concurrency/AMA/AMA-stix/ama/wileyNJD-AMA.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/concurrency/AMA/AMA-stix/ama/wileyNJD-AMA.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,858 @@
+\documentclass[AMA,STIX1COL]{WileyNJD-v2}
+
+\articletype{Article Type}%
+
+\received{26 April 2016}
+\revised{6 June 2016}
+\accepted{6 June 2016}
+
+\raggedbottom
+
+\begin{document}
+
+\title{This is the sample article title\protect\thanks{This is an example for title footnote.}}
+
+\author[1]{Author One*}
+
+\author[2,3]{Author Two}
+
+\author[3]{Author Three}
+
+\authormark{AUTHOR ONE \textsc{et al}}
+
+
+\address[1]{\orgdiv{Org Division}, \orgname{Org Name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\address[2]{\orgdiv{Org Division}, \orgname{Org Name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\address[3]{\orgdiv{Org Division}, \orgname{Org Name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\corres{*Corresponding author name, This is sample corresponding address. \email{authorone@gmail.com}}
+
+\presentaddress{This is sample for present address text this is sample for present address text}
+
+\abstract[Summary]{This is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract tex
+
+t this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text.}
+
+\keywords{keyword1, keyword2, keyword3, keyword4}
+
+\jnlcitation{\cname{%
+\author{Williams K.}, 
+\author{B. Hoskins}, 
+\author{R. Lee}, 
+\author{G. Masato}, and 
+\author{T. Woollings}} (\cyear{2016}), 
+\ctitle{A regime analysis of Atlantic winter jet variability applied to evaluate HadGEM3-GC2}, \cjournal{Q.J.R. Meteorol. Soc.}, \cvol{2017;00:1--6}.}
+
+\maketitle
+
+\footnotetext{\textbf{Abbreviations:} ANA, anti-nuclear antibodies; APC, antigen-presenting cells; IRF, interferon regulatory factor}
+
+
+\section{Sample for first level head}\label{sec1}
+
+xLorem ipsum dolor sit amet, consectetuer adipiscing elit.\cite{Hirt1974} Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
+felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
+Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
+sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel
+leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur
+auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam.
+Duis eget orci sit amet orci dignissim rutrum.
+
+\begin{eqnarray}
+s(nT_{s}) &= &s(t)\times \sum\limits_{n=0}^{N-1} \delta (t-nT_{s}) \xleftrightarrow{\mathrm{DFT}}  S \left(\frac{m}{NT_{s}}\right) \nonumber\\
+&= &\frac{1}{N} \sum\limits_{n=0}^{N-1} \sum\limits_{k=-N/2}^{N/2-1} s_{k} e^{\mathrm{j}2\pi k\Delta fnT_{s}} e^{-j\frac{2\pi}{N}mn}
+\end{eqnarray}
+
+\section{Sample for another first level head}\label{sec2}
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra
+fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa ac
+quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo.\cite{Liska2010} Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+Example for bibliography citations cite\cite{Taylor1937}, cites\cite{Knupp1999,Kamm2000}
+
+Quisque ullamcorper placerat ipsum. Cras nibh.\cite{Kucharik2003,Blanchard2015} Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
+Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat
+quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor
+vitae risus porta vehicula.
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
+vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+
+
+\begin{figure}[t]
+\centerline{\includegraphics[width=342pt,height=9pc,draft]{empty}}
+\caption{This is the sample figure caption.\label{fig1}}
+\end{figure}
+
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu
+ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum
+eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et
+convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non,
+pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio.
+
+Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non
+odio. Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce
+sed justo eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor.
+Donec pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin
+et quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien
+turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.
+
+\begin{figure*}
+\centerline{\includegraphics[width=342pt,height=9pc,draft]{empty}}
+\caption{This is the sample figure caption.\label{fig2}}
+\end{figure*}
+
+\subsection{Example for second level head}
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec odio elit, dictum
+in, hendrerit sit amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam vestibulum
+fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. Nulla facilisi. Pellentesque
+eget lectus. Proin eu metus. Sed porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. Ut mi mi, lacinia
+sit amet, placerat et, mollis vitae, dui. Sed ante tellus, tristique ut, iaculis eu, malesuada ac, dui. Mauris nibh leo,
+facilisis non, adipiscing quis, ultrices a, dui.
+
+Morbi luctus, wisi viverra faucibus pretium, nibh est placerat odio, nec commodo wisi enim eget quam. Quisque
+libero justo, consectetuer a, feugiat vitae, porttitor eu, libero. Suspendisse sed mauris vitae elit sollicitudin malesuada.
+
+Maecenas ultricies eros sit amet ante. Ut venenatis velit. Maecenas sed mi eget dui varius euismod. Phasellus aliquet
+volutpat odio. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque sit
+amet pede ac sem eleifend consectetuer. Nullam elementum, urna vel imperdiet sodales, elit ipsum pharetra ligula,
+ac pretium ante justo a nulla. Curabitur tristique arcu eu metus. Vestibulum lectus. Proin mauris. Proin eu nunc eu
+urna hendrerit faucibus. Aliquam auctor, pede consequat laoreet varius, eros tellus scelerisque quam, pellentesque
+hendrerit ipsum dolor sed augue. Nulla nec lacus.
+
+\begin{quote}
+This is an example\cite{Burton2013,Berndt2011,Kucharik2012} for quote text. This is an example for quote text. This is an example for quote text. This is an example for quote text.\cite{Breil2015} This is an example for quote text. This is an example for quote text. This is an example for quote text. This is an example for quote text. This is an example for quote text. This is an example for quote text.\cite{Barth1997} This is an example for quote text. This is an example for quote text. This is an example for quote text. 
+\end{quote}
+
+\section{Sample for next first level head}\label{sec3}
+
+\subsection{Example for another second level head}
+
+Suspendisse vitae elit. Aliquam arcu neque, ornare in, ullamcorper quis, commodo eu, libero. Fusce sagittis erat at
+erat tristique mollis. Maecenas sapien libero, molestie et, lobortis in, sodales eget, dui. Morbi ultrices rutrum lorem.
+Nam elementum ullamcorper leo. Morbi dui. Aliquam sagittis. Nunc placerat. Pellentesque tristique sodales est.
+Maecenas imperdiet lacinia velit. Cras non urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros. Praesent
+malesuada, diam id pretium elementum, eros sem dictum tortor, vel consectetuer odio sem sed wisi.
+
+Sed feugiat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut pellentesque
+augue sed urna. Vestibulum diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam at lectus. In sagittis
+ultrices mauris. Curabitur malesuada erat sit amet massa. Fusce blandit. Aliquam erat volutpat. Aliquam euismod.
+Aenean vel lectus. Nunc imperdiet justo nec dolor.
+
+\subsection{Second level head text}
+
+Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In mi erat, cursus id, nonummy sed, ullamcorper
+eget, sapien. Praesent pretium, magna in eleifend egestas, pede pede pretium lorem, quis consectetuer tortor sapien
+facilisis magna. Mauris quis magna varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam porttitor quam
+a lacus. Praesent vel arcu ut tortor cursus volutpat. In vitae pede quis diam bibendum placerat. Fusce elementum
+convallis neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut, mi. Duis nec dui quis leo sagittis commodo.
+
+
+\subsubsection{Third level head text}
+
+Aliquam lectus. Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris porttitor pharetra tortor. Sed fringilla
+justo sed mauris. Mauris tellus. Sed non leo. Nullam elementum, magna in cursus sodales, augue est scelerisque
+sapien, venenatis congue nulla arcu et pede. Ut suscipit enim vel sapien. Donec congue. Maecenas urna mi, suscipit
+in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla et nisl.
+
+Etiam ac leo a risus tristique nonummy. Donec dignissim tincidunt nulla. Vestibulum rhoncus molestie odio. Sed
+lobortis, justo et pretium lobortis, mauris turpis condimentum augue, nec ultricies nibh arcu pretium enim. Nunc
+purus neque, placerat id, imperdiet sed, pellentesque nec, nisl. Vestibulum imperdiet neque non sem accumsan laoreet.
+In hac habitasse platea dictumst. Etiam condimentum facilisis libero. Suspendisse in elit quis nisl aliquam dapibus.
+Pellentesque auctor sapien. Sed egestas sapien nec lectus. Pellentesque vel dui vel neque bibendum viverra. Aliquam
+porttitor nisl nec pede. Proin mattis libero vel turpis. Donec rutrum mauris et libero. Proin euismod porta felis.
+Nam lobortis, metus quis elementum commodo, nunc lectus elementum mauris, eget vulputate ligula tellus eu neque.
+Vivamus eu dolor.
+
+Nulla in ipsum. Praesent eros nulla, congue vitae, euismod ut, commodo a, wisi. Pellentesque habitant morbi
+tristique senectus et netus et malesuada fames ac turpis egestas. Aenean nonummy magna non leo. Sed felis erat,
+ullamcorper in, dictum non, ultricies ut, lectus. Proin vel arcu a odio lobortis euismod. Vestibulum ante ipsum primis
+in faucibus orci luctus et ultrices posuere cubilia Curae; Proin ut est. Aliquam odio. Pellentesque massa turpis, cursus
+eu, euismod nec, tempor congue, nulla. Duis viverra gravida mauris. Cras tincidunt. Curabitur eros ligula, varius ut,
+pulvinar in, cursus faucibus, augue.
+
+
+
+\begin{boxtext}
+\section*{Example of Boxtext}%
+This is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext.
+\end{boxtext}
+
+
+\paragraph{Fourth level head text}
+
+Sed feugiat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut pellentesque
+augue sed urna. Vestibulum diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam at lectus. In sagittis
+ultrices mauris. Curabitur malesuada erat sit amet massa. Fusce blandit. Aliquam erat volutpat. Aliquam euismod.
+Aenean vel lectus. Nunc imperdiet justo nec dolor.
+
+Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In mi erat, cursus id, nonummy sed, ullamcorper
+eget, sapien. Praesent pretium, magna in eleifend egestas, pede pede pretium lorem, quis consectetuer tortor sapien
+facilisis magna. Mauris quis magna varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam porttitor quam
+a lacus. Praesent vel arcu ut tortor cursus volutpat. In vitae pede quis diam bibendum placerat. Fusce elementum
+convallis neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut, mi. Duis nec dui quis leo sagittis commodo.
+
+\subparagraph{Fifth level head text}
+
+Aliquam lectus. Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris porttitor pharetra
+tortor. Sed fringilla justo sed mauris. Mauris tellus. Sed non leo. Nullam elementum, magna in cursus sodales, augue
+est scelerisque sapien, venenatis congue nulla arcu et pede. Ut suscipit enim vel sapien. Donec congue. Maecenas
+urna mi, suscipit in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla et nisl.
+
+Etiam ac leo a risus tristique nonummy. Donec dignissim tincidunt nulla. Vestibulum rhoncus molestie odio. Sed
+lobortis, justo et pretium lobortis, mauris turpis condimentum augue, nec ultricies nibh arcu pretium enim. Nunc
+purus neque, placerat id, imperdiet sed, pellentesque nec, nisl. Vestibulum imperdiet neque non sem accumsan laoreet.
+In hac habitasse platea dictumst. Etiam condimentum facilisis libero. Suspendisse in elit quis nisl aliquam dapibus.
+Pellentesque auctor sapien. Sed egestas sapien nec lectus. Pellentesque vel dui vel neque bibendum viverra. Aliquam
+porttitor nisl nec pede. Proin mattis libero vel turpis. Donec rutrum mauris et libero. Proin euismod porta felis.
+Nam lobortis, metus quis elementum commodo, nunc lectus elementum mauris, eget vulputate ligula tellus eu neque.
+Vivamus eu dolor.
+
+in faucibus orci luctus et ultrices posuere cubilia Curae; Proin ut est. Aliquam odio. Pellentesque massa turpis, cursus
+eu, euismod nec, tempor congue, nulla. Duis viverra gravida mauris. Cras tincidunt. Curabitur eros ligula, varius ut,
+pulvinar in, cursus faucibus, augue.
+
+Curabitur tellus magna, porttitor a, commodo a, commodo in, tortor. Donec interdum. Praesent scelerisque. Mae-
+cenas posuere sodales odio. Vivamus metus lacus, varius quis, imperdiet quis, rhoncus a, turpis. Etiam ligula arcu,
+elementum a, venenatis quis, sollicitudin sed, metus. Donec nunc pede, tincidunt in, venenatis vitae, faucibus vel,
+nibh. Pellentesque wisi. Nullam malesuada. Morbi ut tellus ut pede tincidunt porta. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Etiam congue neque id dolor.
+
+Donec et nisl at wisi luctus bibendum. Nam interdum tellus ac libero. Sed sem justo, laoreet vitae, fringilla at,
+adipiscing ut, nibh. Maecenas non sem quis tortor eleifend fermentum. Etiam id tortor ac mauris porta vulputate.
+Integer porta neque vitae massa. Maecenas tempus libero a libero posuere dictum. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Aenean quis mauris sed elit commodo placerat. Class aptent
+taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus rhoncus tincidunt libero.
+Etiam elementum pretium justo. Vivamus est. Morbi a tellus eget pede tristique commodo. Nulla nisl. Vestibulum
+sed nisl eu sapien cursus rutrum.
+
+Nulla non mauris vitae wisi posuere convallis. Sed eu nulla nec eros scelerisque pharetra. Nullam varius. Etiam
+dignissim elementum metus. Vestibulum faucibus, metus sit amet mattis rhoncus, sapien dui laoreet odio, nec ultricies
+nibh augue a enim. Fusce in ligula. Quisque at magna et nulla commodo consequat. Proin accumsan imperdiet sem.
+Nunc porta. Donec feugiat mi at justo. Phasellus facilisis ipsum quis ante. In ac elit eget ipsum pharetra faucibus.
+Maecenas viverra nulla in massa.
+
+Nulla in ipsum. Praesent eros nulla, congue vitae, euismod ut, commodo a, wisi. Pellentesque habitant morbi
+tristique senectus et netus et malesuada fames ac turpis egestas. Aenean nonummy magna non leo. Sed felis erat,
+ullamcorper in, dictum non, ultricies ut, lectus. Proin vel arcu a odio lobortis euismod. Vestibulum ante ipsum primis
+
+
+\begin{center}
+\begin{table*}[t]%
+\caption{This is sample table caption.\label{tab1}}
+\centering
+\begin{tabular*}{500pt}{@{\extracolsep\fill}lccD{.}{.}{3}c@{\extracolsep\fill}}
+\toprule
+&\multicolumn{2}{@{}c@{}}{\textbf{Spanned heading\tnote{1}}} & \multicolumn{2}{@{}c@{}}{\textbf{Spanned heading\tnote{2}}} \\\cmidrule{2-3}\cmidrule{4-5}
+\textbf{col1 head} & \textbf{col2 head}  & \textbf{col3 head}  & \multicolumn{1}{@{}l@{}}{\textbf{col4 head}}  & \textbf{col5 head}   \\
+\midrule
+col1 text & col2 text  & col3 text  & 12.34  & col5 text\tnote{1}   \\
+col1 text & col2 text  & col3 text  & 1.62  & col5 text\tnote{2}   \\
+col1 text & col2 text  & col3 text  & 51.809  & col5 text   \\
+\bottomrule
+\end{tabular*}
+\begin{tablenotes}%%[341pt]
+\item Source: Example for table source text.
+\item[1] Example for a first table footnote.
+\item[2] Example for a second table footnote.
+\end{tablenotes}
+\end{table*}
+\end{center}
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla
+facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
+vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+
+
+
+\begin{center}
+\begin{table}[t]%
+\centering
+\caption{This is sample table caption.\label{tab2}}%
+\begin{tabular*}{500pt}{@{\extracolsep\fill}lcccc@{\extracolsep\fill}}
+\toprule
+\textbf{col1 head} & \textbf{col2 head}  & \textbf{col3 head}  & \textbf{col4 head}  & \textbf{col5 head} \\
+\midrule
+col1 text & col2 text  & col3 text  & col4 text  & col5 text\tnote{$\dagger$}   \\
+col1 text & col2 text  & col3 text  & col4 text  & col5 text   \\
+col1 text & col2 text  & col3 text  & col4 text  & col5 text\tnote{$\ddagger$}   \\
+\bottomrule
+\end{tabular*}
+\begin{tablenotes}
+\item Source: Example for table source text.
+\item[$\dagger$] Example for a first table footnote.
+\item[$\ddagger$] Example for a second table footnote.
+\end{tablenotes}
+\end{table}
+\end{center}
+
+
+
+Below is the example\cite{Liska2010,Kucharik2003,Blanchard2015} for bulleted list. Below is the example for bulleted list. Below is the example for bulleted list. Below is the example for bulleted list. Below is the example for bulleted list. Below is the example for bulleted list\footnote{This is an example for footnote.}:
+\begin{itemize}
+\item bulleted list entry sample bulleted list entry.\cite{Lauritzen2011} sample list entry text. 
+\item bulleted list entry sample bulleted list entry. bulleted list entry sample bulleted list entry. bulleted list entry sample bulleted list entry.
+\item bulleted list entry sample bulleted list entry.\cite{Klima2017} bulleted list entry sample bulleted list entry.\cite{Dukowicz2000} sample list entry text.  bulleted list entry sample bulleted list entry.
+\item sample list entry text. sample list entry text.  
+\end{itemize}
+
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu
+ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum
+eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et
+convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non,
+pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio.
+
+Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non
+odio. Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce
+sed justo eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin
+et quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien
+turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.
+
+
+Below is the sample for description list. Below is the example for description list. Below is the example for description list. Below is the example for description list. Below is the example for description list. Below is the example for description list:\\[12pt]
+
+
+\noindent\textbf{Description sample:}
+
+\begin{description}
+\item[first entry] description text. description text.\cite{Kucharik2011,Kucharik2014,Loubere2005} description text. description text. description text. description text. description text. 
+\item[second long entry] description text. description text. description text. description text. description text. description text. description text. 
+\item[third entry] description text. description text. description text. description text. description text. 
+\item[fourth entry] description text. description text. 
+\end{description}
+
+
+\noindent\textbf{Numbered list items sample:}
+
+\begin{enumerate}[1.]
+\item First level numbered list entry. sample numbered list entry. 
+
+\item First numbered list entry. sample numbered list entry. Numbered list entry.\cite{Caramana1998} sample numbered list entry. Numbered list entry. sample numbered list entry. 
+
+\begin{enumerate}[a.]
+\item Second level alpabetical list entry. Second level alpabetical list entry. Second level alpabetical list entry.\cite{Hoch2009} Second level alpabetical list entry. 
+
+\item Second level alpabetical list entry. Second level alpabetical list entry.\cite{Shashkov1996,Knupp1999,Knupp1999}
+
+\begin{enumerate}[ii.]
+\item Third level lowercase roman numeral list entry. Third level lowercase roman numeral list entry. Third level lowercase roman numeral list entry. 
+
+\item Third level lowercase roman numeral list entry. Third level lowercase roman numeral list entry.\cite{Kamm2000}
+\end{enumerate}
+
+\item Second level alpabetical list entry. Second level alpabetical list entry.\cite{Taylor1937}
+\end{enumerate}
+
+\item First level numbered list entry. sample numbered list entry. Numbered list entry. sample numbered list entry. Numbered list entry. 
+
+\item Another first level numbered list entry. sample numbered list entry. Numbered list entry. sample numbered list entry. Numbered list entry. 
+\end{enumerate}
+
+\noindent\textbf{un-numbered list items sample:}
+
+\begin{enumerate}[]
+\item Sample unnumberd list text..
+\item Sample unnumberd list text.
+\item sample unnumberd list text. 
+\item Sample unnumberd list text.
+\end{enumerate}
+
+\section{Examples for enunciations}\label{sec4}
+
+\begin{theorem}[Theorem subhead]\label{thm1}
+Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. 
+\end{theorem}
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
+Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat
+quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor
+vitae risus porta vehicula.
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla
+facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
+vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+
+\begin{proposition}
+Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. 
+\end{proposition}
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
+Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat
+quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor
+vitae risus porta vehicula.
+
+\begin{definition}[Definition sub head]
+Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text.
+\end{definition}
+
+Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non
+odio. Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce
+sed justo eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor.
+Donec pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin
+et quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien
+turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec odio elit,
+dictum in, hendrerit sit amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam
+vestibulum fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. Nulla facilisi.
+Pellentesque eget lectus. Proin eu metus. Sed porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. Ut
+mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante tellus, tristique ut, iaculis eu, malesuada ac, dui.
+Mauris nibh leo, facilisis non, adipiscing quis, ultrices a, dui.
+
+\begin{proof}
+Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. 
+\end{proof}
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
+pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque
+a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt
+urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+\begin{proof}[Proof of Theorem~\ref{thm1}]
+Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. 
+\end{proof}
+
+Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In mi erat, cursus id, nonummy sed, ullamcorper
+eget, sapien. Praesent pretium, magna in eleifend egestas, pede pede pretium lorem, quis consectetuer tortor sapien
+facilisis magna. Mauris quis magna varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam porttitor quam
+a lacus. Praesent vel arcu ut tortor cursus volutpat. In vitae pede quis diam bibendum placerat. Fusce elementum
+convallis neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut, mi. Duis nec dui quis leo sagittis commodo.
+Aliquam lectus. Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris porttitor pharetra tortor. Sed fringilla
+justo sed mauris. Mauris tellus. Sed non leo. Nullam elementum, magna in cursus sodales, augue est scelerisque
+sapien, venenatis congue nulla arcu et pede. Ut suscipit enim vel sapien. Donec congue. Maecenas urna mi, suscipit
+in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla et nisl.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec odio elit,
+dictum in, hendrerit sit amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam
+vestibulum fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. Nulla facilisi.
+Pellentesque eget lectus. Proin eu metus. Sed porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. Ut Curabitur tellus magna, porttitor a, commodo a, commodo in, tortor. Donec interdum. Praesent scelerisque. Mae-
+cenas posuere sodales odio. Vivamus metus lacus, varius quis, imperdiet quis, rhoncus a, turpis. Etiam ligula arcu,
+elementum a, venenatis quis, sollicitudin sed, metus. Donec nunc pede, tincidunt in, venenatis vitae, faucibus vel,
+
+
+\begin{sidewaystable}%[h]
+\caption{Sideways table caption. For decimal alignment refer column 4 to 9 in tabular* preamble.\label{tab3}}%
+\begin{tabular*}{\textheight}{@{\extracolsep\fill}lccD{.}{.}{4}D{.}{.}{4}D{.}{.}{4}D{.}{.}{4}D{.}{.}{4}D{.}{.}{4}@{\extracolsep\fill}}%
+\toprule
+  & \textbf{col2 head} & \textbf{col3 head} & \multicolumn{1}{c}{\textbf{10}} &\multicolumn{1}{c}{\textbf{20}} &\multicolumn{1}{c}{\textbf{30}} &\multicolumn{1}{c}{\textbf{10}} &\multicolumn{1}{c}{\textbf{20}} &\multicolumn{1}{c}{\textbf{30}} \\
+\midrule
+  &col2 text &col3 text &0.7568&1.0530&1.2642&0.9919&1.3541&1.6108 \\
+  & &col2 text &12.5701 &19.6603&25.6809&18.0689&28.4865&37.3011 \\
+3 &col2 text  & col3 text &0.7426&1.0393&1.2507&0.9095&1.2524&1.4958 \\
+  & &col3 text &12.8008&19.9620&26.0324&16.6347&26.0843&34.0765 \\
+  & col2 text & col3 text &0.7285&1.0257&1.2374&0.8195&1.1407&1.3691\tnote{*} \\
+  & & col3 text &13.0360&20.2690&26.3895&15.0812&23.4932&30.6060\tnote{\dagger} \\
+\bottomrule
+\end{tabular*}
+\begin{tablenotes}%%[\textheight]
+\item[*] First sideways table footnote. Sideways table footnote. Sideways table footnote. Sideways table footnote.
+\item[$\dagger$] Second sideways table footnote. Sideways table footnote. Sideways table footnote. Sideways table footnote.
+\end{tablenotes}
+\end{sidewaystable}
+
+\begin{sidewaysfigure}
+\centerline{\includegraphics[width=542pt,height=9pc,draft]{empty}}
+\caption{Sideways figure caption. Sideways figure caption. Sideways figure caption. Sideways figure caption. Sideways figure caption. Sideways figure caption.\label{fig3}}
+\end{sidewaysfigure}
+
+nibh. Pellentesque wisi.\cite{Kucharik2012} Nullam malesuada. Morbi ut tellus ut pede tincidunt porta. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Etiam congue neque id dolor.
+
+\begin{algorithm}
+\caption{Pseudocode for our algorithm}\label{alg1}
+\begin{algorithmic}
+  \For each frame
+  \For water particles $f_{i}$
+  \State compute fluid flow\cite{Hirt1974}
+  \State compute fluid--solid interaction\cite{Benson1992}
+  \State apply adhesion and surface tension\cite{Margolin2003}
+  \EndFor
+   \For solid particles $s_{i}$
+   \For neighboring water particles $f_{j}$
+   \State compute virtual water film \\(see Section~\ref{sec3})
+   \EndFor
+   \EndFor
+   \For solid particles $s_{i}$
+   \For neighboring water particles $f_{j}$
+   \State compute growth direction vector \\(see Section~\ref{sec2})
+   \EndFor
+   \EndFor
+   \For solid particles $s_{i}$
+   \For neighboring water particles $f_{j}$
+   \State compute $F_{\theta}$ (see Section~\ref{sec1})
+   \State compute $CE(s_{i},f_{j})$ \\(see Section~\ref{sec3})
+   \If $CE(b_{i}, f_{j})$ $>$ glaze threshold
+   \State $j$th water particle's phase $\Leftarrow$ ICE
+   \EndIf
+   \If $CE(c_{i}, f_{j})$ $>$ icicle threshold
+   \State $j$th water particle's phase $\Leftarrow$ ICE
+   \EndIf
+   \EndFor
+   \EndFor
+  \EndFor
+\end{algorithmic}
+\end{algorithm}
+
+Donec et nisl at wisi luctus bibendum. Nam interdum tellus ac libero. Sed sem justo, laoreet vitae, fringilla at,
+adipiscing ut, nibh. Maecenas non sem quis tortor eleifend fermentum. Etiam id tortor ac mauris porta vulputate.
+Integer porta neque vitae massa.\cite{Hirt1974,Benson1992}  Maecenas tempus libero a libero posuere dictum. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Aenean quis mauris sed elit commodo placerat. Class aptent
+taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus rhoncus tincidunt libero.
+Etiam elementum pretium justo. Vivamus est. Morbi a tellus eget pede tristique commodo.\cite{Benson1992} Nulla nisl. Vestibulum
+sed nisl eu sapien cursus rutrum.
+
+Pellentesque wisi. Nullam malesuada. Morbi ut tellus ut pede tincidunt porta. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Etiam congue neque id dolor.
+
+Donec et nisl at wisi luctus bibendum. Nam interdum tellus ac libero. Sed sem justo, laoreet vitae, fringilla at,
+adipiscing ut, nibh. Maecenas non sem quis tortor eleifend fermentum. Etiam id tortor ac mauris porta vulputate.
+Integer porta neque vitae massa. Maecenas tempus libero a libero posuere dictum. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Aenean quis mauris sed elit commodo placerat. Class aptent
+taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus rhoncus tincidunt libero.
+Etiam elementum pretium justo. Vivamus est. Morbi a tellus eget pede tristique commodo. Nulla nisl. Vestibulum
+sed nisl eu sapien cursus rutrum.
+
+\begin{equation}\label{eq23}
+ \|\tilde{X}(k)\|^2
+ =\frac{\left\|\sum\limits_{i=1}^{p}\tilde{Y}_i(k)+\sum\limits_{j=1}^{q}\tilde{Z}_j(k) \right\|^2}{(p+q)^2}
+ \leq\frac{\sum\limits_{i=1}^{p}\left\|\tilde{Y}_i(k)\right\|^2+\sum\limits_{j=1}^{q}\left\|\tilde{Z}_j(k)\right\|^2 }{p+q}.
+\end{equation}
+
+Sed feugiat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut pellentesque
+augue sed urna. Vestibulum diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam at lectus. In sagittis
+ultrices mauris. Curabitur malesuada erat sit amet massa. Fusce blandit. Aliquam erat volutpat. Aliquam euismod.
+Aenean vel lectus. Nunc imperdiet justo nec dolor.
+
+Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In mi erat, cursus id, nonummy sed, ullamcorper
+eget, sapien. Praesent pretium, magna in eleifend egestas, pede pede pretium lorem, quis consectetuer tortor sapien
+facilisis magna. Mauris quis magna varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam porttitor quam
+a lacus. Praesent vel arcu ut tortor cursus volutpat. In vitae pede quis diam bibendum placerat. Fusce elementum
+convallis neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut, mi. Duis nec dui quis leo sagittis commodo.
+
+\begin{equation}\label{eq24}
+ \|\tilde{X}(k)\|^2
+ =\frac{\left\|\sum\limits_{i=1}^{p}\tilde{Y}_i(k)+\sum\limits_{j=1}^{q}\tilde{Z}_j(k) \right\|^2}{(p+q)^2}
+ \leq\frac{\sum\limits_{i=1}^{p}\left\|\tilde{Y}_i(k)\right\|^2+\sum\limits_{j=1}^{q}\left\|\tilde{Z}_j(k)\right\|^2 }{p+q}.
+\end{equation}
+
+Aliquam lectus. Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris porttitor pharetra
+tortor. Sed fringilla justo sed mauris. Mauris tellus. Sed non leo. Nullam elementum, magna in cursus sodales, augue
+est scelerisque sapien, venenatis congue nulla arcu et pede. Ut suscipit enim vel sapien. Donec congue. Maecenas
+urna mi, suscipit in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla et nisl.
+
+Etiam ac leo a risus tristique nonummy. Donec dignissim tincidunt nulla. Vestibulum rhoncus molestie odio. Sed
+lobortis, justo et pretium lobortis, mauris turpis condimentum augue, nec ultricies nibh arcu pretium enim. Nunc
+purus neque, placerat id, imperdiet sed, pellentesque nec, nisl. Vestibulum imperdiet neque non sem accumsan laoreet.
+In hac habitasse platea dictumst. Etiam condimentum facilisis libero. Suspendisse in elit quis nisl aliquam dapibus.
+Pellentesque auctor sapien. Sed egestas sapien nec lectus. Pellentesque vel dui vel neque bibendum viverra. Aliquam
+porttitor nisl nec pede. Proin mattis libero vel turpis. Donec rutrum mauris et libero. Proin euismod porta felis.
+Nam lobortis, metus quis elementum commodo, nunc lectus elementum mauris, eget vulputate ligula tellus eu neque.
+Vivamus eu dolor.
+
+
+
+
+\section{Conclusions}\label{sec5}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
+felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
+Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
+sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel
+leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur
+auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam.
+Duis eget orci sit amet orci dignissim rutrum.
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
+pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque
+a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt
+urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
+
+%\backmatter
+
+\section*{Acknowledgments}
+This is acknowledgment text.\cite{Kenamond2013} Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. 
+
+\subsection*{Author contributions}
+
+This is an author contribution text. This is an author contribution text. This is an author contribution text. This is an author contribution text. This is an author contribution text. 
+
+\subsection*{Financial disclosure}
+
+None reported.
+
+\subsection*{Conflict of interest}
+
+The authors declare no potential conflict of interests.
+
+
+\section*{Supporting information}
+
+The following supporting information is available as part of the online article:
+
+\noindent
+\textbf{Figure S1.}
+{500{\uns}hPa geopotential anomalies for GC2C calculated against the ERA Interim reanalysis. The period is 1989--2008.}
+
+\noindent
+\textbf{Figure S2.}
+{The SST anomalies for GC2C calculated against the observations (OIsst).}
+
+
+\appendix
+
+\section{Section title of first appendix\label{app1}}
+
+Use \verb+\begin{verbatim}...\end{verbatim}+ for program codes without math. Use \verb+\begin{alltt}...\end{alltt}+ for program codes with math. Based on the text provided inside the optional argument of \verb+\begin{code}[Psecode|Listing|Box|Code|+\hfill\break \verb+Specification|Procedure|Sourcecode|Program]...+ \verb+\end{code}+ tag corresponding boxed like floats are generated. Also note that \verb+\begin{code}[Code|Listing]...+ \verb+\end{code}+ tag with either Code or Listing text as optional argument text are set with computer modern typewriter font.  All other code environments are set with normal text font. Refer below example:
+
+\begin{lstlisting}[caption={Descriptive Caption Text},label=DescriptiveLabel]
+for i:=maxint to 0 do
+begin
+{ do nothing }
+end;
+Write('Case insensitive ');
+WritE('Pascal keywords.');
+\end{lstlisting}
+
+
+
+\subsection{Subsection title of first appendix\label{app1.1a}}
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
+pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque
+a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt
+urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+\subsubsection{Subsection title of first appendix\label{app1.1.1a}}
+
+\noindent\textbf{Unnumbered figure}
+
+
+\begin{center}
+\includegraphics[width=7pc,height=8pc,draft]{empty}
+\end{center}
+
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla
+facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
+vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu
+ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum
+eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et
+convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non,
+pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio.
+
+\section{Section title of second appendix\label{app2}}%
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla
+facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
+vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu
+ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum
+eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et
+convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non,
+pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio.
+
+%== Figure 4 ==
+%% Example for figure inside appendix
+\begin{figure}[t]
+\centerline{\includegraphics[height=10pc,width=78mm,draft]{empty}}
+\caption{This is an example for appendix figure.\label{fig5}}
+\end{figure}
+
+\subsection{Subsection title of second appendix\label{app2.1a}}
+
+Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non odio.
+Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce sed justo
+eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor. Donec
+pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin et quam.
+Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien turpis,
+fermentum vel, eleifend faucibus, vehicula eu, lacus.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec odio elit,
+dictum in, hendrerit sit amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam
+vestibulum fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. Nulla facilisi.
+Pellentesque eget lectus. Proin eu metus. Sed porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. Ut
+mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante tellus, tristique ut, iaculis eu, malesuada ac, dui.
+Mauris nibh leo, facilisis non, adipiscing quis, ultrices a, dui.
+
+\subsubsection{Subsection title of second appendix\label{app2.1.1a}}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
+felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
+Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
+sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel
+leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur
+auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam.
+Duis eget orci sit amet orci dignissim rutrum.
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
+pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque
+a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt
+urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
+
+\begin{center}
+\begin{table}[b]%
+\centering
+\caption{This is an example of Appendix table showing food requirements of army, navy and airforce.\label{tab4}}%
+\begin{tabular*}{300pt}{@{\extracolsep\fill}lcc@{\extracolsep\fill}}%
+\toprule
+\textbf{col1 head} & \textbf{col2 head} & \textbf{col3 head} \\
+\midrule
+col1 text & col2 text & col3 text \\
+col1 text & col2 text & col3 text \\
+col1 text & col2 text & col3 text\\
+\bottomrule
+\end{tabular*}
+\end{table}
+\end{center}
+
+
+Example for an equation inside appendix
+\begin{equation}
+\mathcal{L}\quad \mathbf{\mathcal{L}} = i \bar{\psi} \gamma^\mu D_\mu \psi - \frac{1}{4} F_{\mu\nu}^a F^{a\mu\nu} - m \bar{\psi} \psi\label{eq25}
+\end{equation}
+
+\section{Example of another appendix section\label{app3}}%
+
+This is sample for paragraph text this is sample for paragraph text  this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text
+
+
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
+pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque
+a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt
+urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+
+\begin{equation}
+\mathcal{L} = i \bar{\psi} \gamma^\mu D_\mu \psi
+    - \frac{1}{4} F_{\mu\nu}^a F^{a\mu\nu} - m \bar{\psi} \psi
+\label{eq26}
+\end{equation}
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
+Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat
+quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor
+vitae risus porta vehicula.
+
+
+\begin{center}
+\begin{tabular*}{300pt}{@{\extracolsep\fill}lcc@{\extracolsep\fill}}%
+\toprule
+\textbf{col1 head} & \textbf{col2 head} & \textbf{col3 head} \\
+\midrule
+col1 text & col2 text & col3 text \\
+col1 text & col2 text & col3 text \\
+col1 text & col2 text & col3 text \\
+\bottomrule
+\end{tabular*}
+\end{center}
+
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
+Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat
+quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor
+vitae risus porta vehicula.
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla
+facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, evehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec odio elit,
+dictum in, hendrerit sit amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam
+vestibulum fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. Nulla facilisi.
+Pellentesque eget lectus. Proin eu metus. Sed porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. Ut
+mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante tellus, tristique ut, iaculis eu, malesuada ac, dui.
+Mauris nibh leo, facilisis non, adipiscing quis, ultrices a, dui.
+
+\nocite{*}% Show all bib entries - both cited and uncited; comment this line to view only cited bib entries;
+\bibliography{wileyNJD-AMA}%
+
+\clearpage
+
+\section*{Author Biography}
+
+\begin{biography}{\includegraphics[width=66pt,height=86pt,draft]{empty}}{\textbf{Author Name.} This is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text.}
+\end{biography}
+
+\end{document}
Index: doc/papers/concurrency/Makefile
===================================================================
--- doc/papers/concurrency/Makefile	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/concurrency/Makefile	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -3,10 +3,10 @@
 Build = build
 Figures = figures
-Macros = ../../LaTeXmacros
-TeXLIB = .:style:annex:${Macros}:${Build}:../../bibliography:
+Macros = AMA/AMA-stix/ama
+TeXLIB = .:annex:../../LaTeXmacros:${Macros}:${Build}:../../bibliography:
 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error -output-directory=${Build}
 BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
 
-MAKEFLAGS = --no-print-directory --silent #
+MAKEFLAGS = --no-print-directory # --silent
 VPATH = ${Build} ${Figures}
 
@@ -40,4 +40,5 @@
 
 DOCUMENT = Paper.pdf
+BASE = ${basename ${DOCUMENT}}
 
 # Directives #
@@ -48,22 +49,22 @@
 
 clean :
-	@rm -frv ${DOCUMENT} ${basename ${DOCUMENT}}.ps ${Build}
+	@rm -frv ${DOCUMENT} ${BASE}.ps WileyNJD-AMA.bst ${BASE}.out.ps ${Build}
 
 # File Dependencies #
 
-${DOCUMENT} : ${basename ${DOCUMENT}}.ps
+${DOCUMENT} : ${BASE}.ps
 	ps2pdf $<
 
-${basename ${DOCUMENT}}.ps : ${basename ${DOCUMENT}}.dvi
+${BASE}.ps : ${BASE}.dvi
 	dvips ${Build}/$< -o $@
 
-${basename ${DOCUMENT}}.dvi : Makefile ${Build} ${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} \
-		${Macros}/common.tex ${Macros}/indexstyle annex/local.bib ../../bibliography/pl.bib
+${BASE}.dvi : Makefile ${Build} ${BASE}.out.ps WileyNJD-AMA.bst ${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} \
+		annex/local.bib ../../bibliography/pl.bib
 	# Must have *.aux file containing citations for bibtex
 	if [ ! -r ${basename $@}.aux ] ; then ${LaTeX} ${basename $@}.tex ; fi
-	-${BibTeX} ${Build}/${basename $@}
+	${BibTeX} ${Build}/${basename $@}
 	# Some citations reference others so run again to resolve these citations
 	${LaTeX} ${basename $@}.tex
-	-${BibTeX} ${Build}/${basename $@}
+	${BibTeX} ${Build}/${basename $@}
 	# Run again to finish citations
 	${LaTeX} ${basename $@}.tex
@@ -73,4 +74,10 @@
 ${Build}:
 	mkdir -p ${Build}
+
+${BASE}.out.ps:
+	ln -fs build/Paper.out.ps .
+
+WileyNJD-AMA.bst:
+	ln -fs AMA/AMA-stix/ama/WileyNJD-AMA.bst .
 
 %.tex : %.fig
Index: doc/papers/concurrency/Paper.tex
===================================================================
--- doc/papers/concurrency/Paper.tex	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/concurrency/Paper.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -1,48 +1,36 @@
-% inline code ©...© (copyright symbol) emacs: C-q M-)
-% red highlighting ®...® (registered trademark symbol) emacs: C-q M-.
-% blue highlighting ß...ß (sharp s symbol) emacs: C-q M-_
-% green highlighting ¢...¢ (cent symbol) emacs: C-q M-"
-% LaTex escape §...§ (section symbol) emacs: C-q M-'
-% keyword escape ¶...¶ (pilcrow symbol) emacs: C-q M-^
-% math escape $...$ (dollar symbol)
-
-\documentclass[10pt]{article}
+\documentclass[AMA,STIX1COL]{WileyNJD-v2}
+
+\articletype{RESEARCH ARTICLE}%
+
+\received{26 April 2016}
+\revised{6 June 2016}
+\accepted{6 June 2016}
+
+\raggedbottom
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 % Latex packages used in the document.
-\usepackage[T1]{fontenc}					% allow Latin1 (extended ASCII) characters
-\usepackage{textcomp}
-\usepackage[latin1]{inputenc}
-\usepackage{fullpage,times,comment}
 \usepackage{epic,eepic}
+\usepackage{xspace}
+\usepackage{comment}
 \usepackage{upquote}						% switch curled `'" to straight
-\usepackage{calc}
-\usepackage{xspace}
-\usepackage[labelformat=simple]{subfig}
+\usepackage{listings}						% format program code
+\usepackage[labelformat=simple,aboveskip=0pt,farskip=0pt]{subfig}
 \renewcommand{\thesubfigure}{(\alph{subfigure})}
-\usepackage{graphicx}
-\usepackage{tabularx}
-\usepackage{multicol}
-\usepackage{varioref}
-\usepackage{listings}						% format program code
-\usepackage[flushmargin]{footmisc}				% support label/reference in footnote
-\usepackage{latexsym}						% \Box glyph
-\usepackage{mathptmx}						% better math font with "times"
-\usepackage[usenames]{color}
+\usepackage{siunitx}
+\sisetup{ binary-units=true }
+%\input{style}								% bespoke macros used in the document
+
+\hypersetup{breaklinks=true}
+\definecolor{OliveGreen}{cmyk}{0.64 0 0.95 0.40}
+\definecolor{Mahogany}{cmyk}{0 0.85 0.87 0.35}
+\definecolor{Plum}{cmyk}{0.50 1 0 0}
+
 \usepackage[pagewise]{lineno}
 \renewcommand{\linenumberfont}{\scriptsize\sffamily}
-\usepackage{fancyhdr}
-\usepackage{float}
-\usepackage{siunitx}
-\sisetup{ binary-units=true }
-\input{style}							% bespoke macros used in the document
-\usepackage{url}
-\usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}
-\usepackage{breakurl}
-\urlstyle{rm}
-
-\setlength{\topmargin}{-0.45in}				% move running title into header
-\setlength{\headsep}{0.25in}
+
+\lefthyphenmin=4							% hyphen only after 4 characters
+\righthyphenmin=4
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -50,6 +38,16 @@
 % Names used in the document.
 
-\newcommand{\Version}{1.0.0}
-\newcommand{\CS}{C\raisebox{-0.9ex}{\large$^\sharp$}\xspace}
+\newcommand{\CFAIcon}{\textsf{C}\raisebox{\depth}{\rotatebox{180}{\textsf{A}}}\xspace} % Cforall symbolic name
+\newcommand{\CFA}{\protect\CFAIcon} 		% safe for section/caption
+\newcommand{\CFL}{\textrm{Cforall}\xspace} 	% Cforall symbolic name
+\newcommand{\Celeven}{\textrm{C11}\xspace} 	% C11 symbolic name
+\newcommand{\CC}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}\xspace} % C++ symbolic name
+\newcommand{\CCeleven}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}11\xspace} % C++11 symbolic name
+\newcommand{\CCfourteen}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}14\xspace} % C++14 symbolic name
+\newcommand{\CCseventeen}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}17\xspace} % C++17 symbolic name
+\newcommand{\CCtwenty}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}20\xspace} % C++20 symbolic name
+\newcommand{\Csharp}{C\raisebox{-0.7ex}{\Large$^\sharp$}\xspace} % C# symbolic name
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \newcommand{\Textbf}[2][red]{{\color{#1}{\textbf{#2}}}}
@@ -62,38 +60,212 @@
 \newcommand{\TODO}{{\Textbf{TODO}}}
 
-
-\newsavebox{\LstBox}
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\setcounter{secnumdepth}{2}                           % number subsubsections
-\setcounter{tocdepth}{2}                              % subsubsections in table of contents
-% \linenumbers                                       	% comment out to turn off line numbering
-
-\title{Concurrency in \CFA}
-\author{Thierry Delisle and Peter A. Buhr, Waterloo, Ontario, Canada}
+% Default underscore is too low and wide. Cannot use lstlisting "literate" as replacing underscore
+% removes it as a variable-name character so keywords in variables are highlighted. MUST APPEAR
+% AFTER HYPERREF.
+%\DeclareTextCommandDefault{\textunderscore}{\leavevmode\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}
+\renewcommand{\textunderscore}{\leavevmode\makebox[1.2ex][c]{\rule{1ex}{0.075ex}}}
+
+\makeatletter
+% parindent is relative, i.e., toggled on/off in environments like itemize, so store the value for
+% use rather than use \parident directly.
+\newlength{\parindentlnth}
+\setlength{\parindentlnth}{\parindent}
+
+\newcommand{\LstBasicStyle}[1]{{\lst@basicstyle{\lst@basicstyle{#1}}}}
+\newcommand{\LstKeywordStyle}[1]{{\lst@basicstyle{\lst@keywordstyle{#1}}}}
+\newcommand{\LstCommentStyle}[1]{{\lst@basicstyle{\lst@commentstyle{#1}}}}
+
+\newlength{\gcolumnposn}					% temporary hack because lstlisting does not handle tabs correctly
+\newlength{\columnposn}
+\setlength{\gcolumnposn}{3.5in}
+\setlength{\columnposn}{\gcolumnposn}
+\newcommand{\C}[2][\@empty]{\ifx#1\@empty\else\global\setlength{\columnposn}{#1}\global\columnposn=\columnposn\fi\hfill\makebox[\textwidth-\columnposn][l]{\lst@basicstyle{\LstCommentStyle{#2}}}}
+\newcommand{\CRT}{\global\columnposn=\gcolumnposn}
+
+% Denote newterms in particular font and index them without particular font and in lowercase, e.g., \newterm{abc}.
+% The option parameter provides an index term different from the new term, e.g., \newterm[\texttt{abc}]{abc}
+% The star version does not lowercase the index information, e.g., \newterm*{IBM}.
+\newcommand{\newtermFontInline}{\emph}
+\newcommand{\newterm}{\@ifstar\@snewterm\@newterm}
+\newcommand{\@newterm}[2][\@empty]{\lowercase{\def\temp{#2}}{\newtermFontInline{#2}}\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi}
+\newcommand{\@snewterm}[2][\@empty]{{\newtermFontInline{#2}}\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}
+
+% Latin abbreviation
+\newcommand{\abbrevFont}{\textit}			% set empty for no italics
+\@ifundefined{eg}{
+\newcommand{\EG}{\abbrevFont{e}.\abbrevFont{g}.}
+\newcommand*{\eg}{%
+	\@ifnextchar{,}{\EG}%
+		{\@ifnextchar{:}{\EG}%
+			{\EG,\xspace}}%
+}}{}%
+\@ifundefined{ie}{
+\newcommand{\IE}{\abbrevFont{i}.\abbrevFont{e}.}
+\newcommand*{\ie}{%
+	\@ifnextchar{,}{\IE}%
+		{\@ifnextchar{:}{\IE}%
+			{\IE,\xspace}}%
+}}{}%
+\@ifundefined{etc}{
+\newcommand{\ETC}{\abbrevFont{etc}}
+\newcommand*{\etc}{%
+	\@ifnextchar{.}{\ETC}%
+        {\ETC.\xspace}%
+}}{}%
+\@ifundefined{etal}{
+\newcommand{\ETAL}{\abbrevFont{et}~\abbrevFont{al}}
+\newcommand*{\etal}{%
+	\@ifnextchar{.}{\protect\ETAL}%
+		{\protect\ETAL.\xspace}%
+}}{}%
+\@ifundefined{viz}{
+\newcommand{\VIZ}{\abbrevFont{viz}}
+\newcommand*{\viz}{%
+	\@ifnextchar{.}{\VIZ}%
+		{\VIZ.\xspace}%
+}}{}%
+\makeatother
+
+\newenvironment{cquote}{%
+	\list{}{\lstset{resetmargins=true,aboveskip=0pt,belowskip=0pt}\topsep=3pt\parsep=0pt\leftmargin=\parindentlnth\rightmargin\leftmargin}%
+	\item\relax
+}{%
+	\endlist
+}% cquote
+
+% CFA programming language, based on ANSI C (with some gcc additions)
+\lstdefinelanguage{CFA}[ANSI]{C}{
+	morekeywords={
+		_Alignas, _Alignof, __alignof, __alignof__, asm, __asm, __asm__, __attribute, __attribute__,
+		auto, _Bool, catch, catchResume, choose, _Complex, __complex, __complex__, __const, __const__,
+		coroutine, disable, dtype, enable, __extension__, exception, fallthrough, fallthru, finally,
+		__float80, float80, __float128, float128, forall, ftype, _Generic, _Imaginary, __imag, __imag__,
+		inline, __inline, __inline__, __int128, int128, __label__, monitor, mutex, _Noreturn, one_t, or,
+		otype, restrict, __restrict, __restrict__, __signed, __signed__, _Static_assert, thread,
+		_Thread_local, throw, throwResume, timeout, trait, try, ttype, typeof, __typeof, __typeof__,
+		virtual, __volatile, __volatile__, waitfor, when, with, zero_t},
+	moredirectives={defined,include_next}%
+}
+
+\lstset{
+language=CFA,
+columns=fullflexible,
+basicstyle=\linespread{0.9}\sf,							% reduce line spacing and use sanserif font
+stringstyle=\tt,										% use typewriter font
+tabsize=5,												% N space tabbing
+xleftmargin=\parindentlnth,								% indent code to paragraph indentation
+%mathescape=true,										% LaTeX math escape in CFA code $...$
+escapechar=\$,											% LaTeX escape in CFA code
+keepspaces=true,										%
+showstringspaces=false,									% do not show spaces with cup
+showlines=true,											% show blank lines at end of code
+aboveskip=4pt,											% spacing above/below code block
+belowskip=3pt,
+% replace/adjust listing characters that look bad in sanserif
+literate={-}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.8ex}{0.1ex}}}}1 {^}{\raisebox{0.6ex}{$\scriptstyle\land\,$}}1
+	{~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1 % {`}{\ttfamily\upshape\hspace*{-0.1ex}`}1
+	{<-}{$\leftarrow$}2 {=>}{$\Rightarrow$}2 {->}{\makebox[1ex][c]{\raisebox{0.5ex}{\rule{0.8ex}{0.075ex}}}\kern-0.2ex{\textgreater}}2,
+moredelim=**[is][\color{red}]{`}{`},
+}% lstset
+
+% uC++ programming language, based on ANSI C++
+\lstdefinelanguage{uC++}[ANSI]{C++}{
+	morekeywords={
+		_Accept, _AcceptReturn, _AcceptWait, _Actor, _At, _CatchResume, _Cormonitor, _Coroutine, _Disable,
+		_Else, _Enable, _Event, _Finally, _Monitor, _Mutex, _Nomutex, _PeriodicTask, _RealTimeTask,
+		_Resume, _Select, _SporadicTask, _Task, _Timeout, _When, _With, _Throw},
+}
+\lstdefinelanguage{Golang}{
+	morekeywords=[1]{package,import,func,type,struct,return,defer,panic,recover,select,var,const,iota,},
+	morekeywords=[2]{string,uint,uint8,uint16,uint32,uint64,int,int8,int16,int32,int64,
+		bool,float32,float64,complex64,complex128,byte,rune,uintptr, error,interface},
+	morekeywords=[3]{map,slice,make,new,nil,len,cap,copy,close,true,false,delete,append,real,imag,complex,chan,},
+	morekeywords=[4]{for,break,continue,range,goto,switch,case,fallthrough,if,else,default,},
+	morekeywords=[5]{Println,Printf,Error,},
+	sensitive=true,
+	morecomment=[l]{//},
+	morecomment=[s]{/*}{*/},
+	morestring=[b]',
+	morestring=[b]",
+	morestring=[s]{`}{`},
+}
+
+\lstnewenvironment{cfa}[1][]
+{\lstset{#1}}
+{}
+\lstnewenvironment{C++}[1][]                            % use C++ style
+{\lstset{language=C++,moredelim=**[is][\protect\color{red}]{`}{`},#1}\lstset{#1}}
+{}
+\lstnewenvironment{uC++}[1][]
+{\lstset{#1}}
+{}
+\lstnewenvironment{Go}[1][]
+{\lstset{#1}}
+{}
+
+% inline code @...@
+\lstMakeShortInline@%
+
+
+\title{\texorpdfstring{Concurrency in \protect\CFA}{Concurrency in Cforall}}
+
+\author[1]{Thierry Delisle}
+\author[1]{Peter A. Buhr*}
+\authormark{Thierry Delisle \textsc{et al}}
+
+\address[1]{\orgdiv{Cheriton School of Computer Science}, \orgname{University of Waterloo}, \orgaddress{\state{Ontario}, \country{Canada}}}
+
+\corres{*Peter A. Buhr, \email{pabuhr{\char`\@}uwaterloo.ca}}
+\presentaddress{Cheriton School of Computer Science, University of Waterloo, Waterloo, ON, N2L 3G1, Canada}
+
+
+\abstract[Summary]{
+\CFA is a modern, polymorphic, \emph{non-object-oriented} extension of the C programming language.
+This paper discusses the design of the concurrency and parallelism features in \CFA, and the concurrent runtime-system.
+These features are created from scratch as ISO C lacks concurrency, relying largely on pthreads.
+Coroutines and lightweight (user) threads are introduced into the language.
+In addition, monitors are added as a high-level mechanism for mutual exclusion and synchronization.
+A unique contribution is allowing multiple monitors to be safely acquired simultaneously.
+All features respect the expectations of C programmers, while being fully integrate with the \CFA polymorphic type-system and other language features.
+Finally, experimental results are presented to compare the performance of the new features with similar mechanisms in other concurrent programming-languages.
+}%
+
+\keywords{concurrency, parallelism, coroutines, threads, monitors, runtime, C, Cforall}
 
 
 \begin{document}
+\linenumbers                                            % comment out to turn off line numbering
+
 \maketitle
 
-\begin{abstract}
-\CFA is a modern, \emph{non-object-oriented} extension of the C programming language.
-This paper serves as a definition and an implementation for the concurrency and parallelism \CFA offers. These features are created from scratch due to the lack of concurrency in ISO C. Lightweight threads are introduced into the language. In addition, monitors are introduced as a high-level tool for control-flow based synchronization and mutual-exclusion. The main contributions of this paper are two-fold: it extends the existing semantics of monitors introduce by~\cite{Hoare74} to handle monitors in groups and also details the engineering effort needed to introduce these features as core language features. Indeed, these features are added with respect to expectations of C programmers, and integrate with the \CFA type-system and other language features.
-\end{abstract}
-
-%----------------------------------------------------------------------
-% MAIN BODY
-%----------------------------------------------------------------------
-
+% ======================================================================
 % ======================================================================
 \section{Introduction}
 % ======================================================================
-
-This paper provides a minimal concurrency \textbf{api} that is simple, efficient and can be reused to build higher-level features. The simplest possible concurrency system is a thread and a lock but this low-level approach is hard to master. An easier approach for users is to support higher-level constructs as the basis of concurrency. Indeed, for highly productive concurrent programming, high-level approaches are much more popular~\cite{HPP:Study}. Examples are task based, message passing and implicit threading. The high-level approach and its minimal \textbf{api} are tested in a dialect of C, called \CFA. Furthermore, the proposed \textbf{api} doubles as an early definition of the \CFA language and library. This paper also provides an implementation of the concurrency library for \CFA as well as all the required language features added to the source-to-source translator.
-
-There are actually two problems that need to be solved in the design of concurrency for a programming language: which concurrency and which parallelism tools are available to the programmer. While these two concepts are often combined, they are in fact distinct, requiring different tools~\cite{Buhr05a}. Concurrency tools need to handle mutual exclusion and synchronization, while parallelism tools are about performance, cost and resource utilization.
-
-In the context of this paper, a \textbf{thread} is a fundamental unit of execution that runs a sequence of code, generally on a program stack. Having multiple simultaneous threads gives rise to concurrency and generally requires some kind of locking mechanism to ensure proper execution. Correspondingly, \textbf{concurrency} is defined as the concepts and challenges that occur when multiple independent (sharing memory, timing dependencies, etc.) concurrent threads are introduced. Accordingly, \textbf{locking} (and by extension locks) are defined as a mechanism that prevents the progress of certain threads in order to avoid problems due to concurrency. Finally, in this paper \textbf{parallelism} is distinct from concurrency and is defined as running multiple threads simultaneously. More precisely, parallelism implies \emph{actual} simultaneous execution as opposed to concurrency which only requires \emph{apparent} simultaneous execution. As such, parallelism is only observable in the differences in performance or, more generally, differences in timing.
+% ======================================================================
+
+This paper provides a minimal concurrency \newterm{Abstract Program Interface} (API) that is simple, efficient and can be used to build other concurrency features.
+While the simplest concurrency system is a thread and a lock, this low-level approach is hard to master.
+An easier approach for programmers is to support higher-level constructs as the basis of concurrency.
+Indeed, for highly productive concurrent programming, high-level approaches are much more popular~\cite{Hochstein05}.
+Examples of high-level approaches are task based~\cite{TBB}, message passing~\cite{Erlang,MPI}, and implicit threading~\cite{OpenMP}.
+
+This paper used the following terminology.
+A \newterm{thread} is a fundamental unit of execution that runs a sequence of code and requires a stack to maintain state.
+Multiple simultaneous threads gives rise to \newterm{concurrency}, which requires locking to ensure safe communication and access to shared data.
+% Correspondingly, concurrency is defined as the concepts and challenges that occur when multiple independent (sharing memory, timing dependencies, \etc) concurrent threads are introduced.
+\newterm{Locking}, and by extension locks, are defined as a mechanism to prevent progress of threads to provide safety.
+\newterm{Parallelism} is running multiple threads simultaneously.
+Parallelism implies \emph{actual} simultaneous execution, where concurrency only requires \emph{apparent} simultaneous execution.
+As such, parallelism is only observable in differences in performance, which is observed through differences in timing.
+
+Hence, there are two problems to be solved in the design of concurrency for a programming language: concurrency and parallelism.
+While these two concepts are often combined, they are in fact distinct, requiring different tools~\cite[\S~2]{Buhr05a}.
+Concurrency tools handle synchronization and mutual exclusion, while parallelism tools handle performance, cost and resource utilization.
+
+The proposed concurrency API is implemented in a dialect of C, called \CFA.
+The paper discusses how the language features are added to the \CFA translator with respect to parsing, semantic, and type checking, and the corresponding high-perforamnce runtime-library to implement the concurrency features.
 
 % ======================================================================
@@ -105,24 +277,30 @@
 The following is a quick introduction to the \CFA language, specifically tailored to the features needed to support concurrency.
 
-\CFA is an extension of ISO-C and therefore supports all of the same paradigms as C. It is a non-object-oriented system-language, meaning most of the major abstractions have either no runtime overhead or can be opted out easily. Like C, the basics of \CFA revolve around structures and routines, which are thin abstractions over machine code. The vast majority of the code produced by the \CFA translator respects memory layouts and calling conventions laid out by C. Interestingly, while \CFA is not an object-oriented language, lacking the concept of a receiver (e.g., {\tt this}), it does have some notion of objects\footnote{C defines the term objects as : ``region of data storage in the execution environment, the contents of which can represent
-values''~\cite[3.15]{C11}}, most importantly construction and destruction of objects. Most of the following code examples can be found on the \CFA website~\cite{www-cfa}.
-
-% ======================================================================
+\CFA is an extension of ISO-C and therefore supports all of the same paradigms as C.
+It is a non-object-oriented system-language, meaning most of the major abstractions have either no runtime overhead or can be opted out easily.
+Like C, the basics of \CFA revolve around structures and routines, which are thin abstractions over machine code.
+The vast majority of the code produced by the \CFA translator respects memory layouts and calling conventions laid out by C.
+Interestingly, while \CFA is not an object-oriented language, lacking the concept of a receiver (\eg {\tt this}), it does have some notion of objects\footnote{C defines the term objects as : ``region of data storage in the execution environment, the contents of which can represent
+values''~\cite[3.15]{C11}}, most importantly construction and destruction of objects.
+Most of the following code examples can be found on the \CFA website~\cite{Cforall}.
+
+
 \subsection{References}
 
-Like \CC, \CFA introduces rebind-able references providing multiple dereferencing as an alternative to pointers. In regards to concurrency, the semantic difference between pointers and references are not particularly relevant, but since this document uses mostly references, here is a quick overview of the semantics:
-\begin{cfacode}
+Like \CC, \CFA introduces rebind-able references providing multiple dereferencing as an alternative to pointers.
+In regards to concurrency, the semantic difference between pointers and references are not particularly relevant, but since this document uses mostly references, here is a quick overview of the semantics:
+\begin{cfa}
 int x, *p1 = &x, **p2 = &p1, ***p3 = &p2,
 	&r1 = x,    &&r2 = r1,   &&&r3 = r2;
-***p3 = 3;							//change x
-r3    = 3;							//change x, ***r3
-**p3  = ...;						//change p1
-*p3   = ...;						//change p2
-int y, z, & ar[3] = {x, y, z};		//initialize array of references
-typeof( ar[1]) p;					//is int, referenced object type
-typeof(&ar[1]) q;					//is int &, reference type
-sizeof( ar[1]) == sizeof(int);		//is true, referenced object size
-sizeof(&ar[1]) == sizeof(int *);	//is true, reference size
-\end{cfacode}
+***p3 = 3;							$\C{// change x}$
+r3    = 3;							$\C{// change x, ***r3}$
+**p3  = ...;						$\C{// change p1}$
+*p3   = ...;						$\C{// change p2}$
+int y, z, & ar[3] = {x, y, z};		$\C{// initialize array of references}$
+typeof( ar[1]) p;					$\C{// is int, referenced object type}$
+typeof(&ar[1]) q;					$\C{// is int \&, reference type}$
+sizeof( ar[1]) == sizeof(int);		$\C{// is true, referenced object size}$
+sizeof(&ar[1]) == sizeof(int *);	$\C{// is true, reference size}$
+\end{cfa}
 The important take away from this code example is that a reference offers a handle to an object, much like a pointer, but which is automatically dereferenced for convenience.
 
@@ -130,138 +308,152 @@
 \subsection{Overloading}
 
-Another important feature of \CFA is function overloading as in Java and \CC, where routines with the same name are selected based on the number and type of the arguments. As well, \CFA uses the return type as part of the selection criteria, as in Ada~\cite{Ada}. For routines with multiple parameters and returns, the selection is complex.
-\begin{cfacode}
-//selection based on type and number of parameters
-void f(void);			//(1)
-void f(char);			//(2)
-void f(int, double);	//(3)
-f();					//select (1)
-f('a');					//select (2)
-f(3, 5.2);				//select (3)
-
-//selection based on  type and number of returns
-char   f(int);			//(1)
-double f(int);			//(2)
-char   c = f(3);		//select (1)
-double d = f(4);		//select (2)
-\end{cfacode}
-This feature is particularly important for concurrency since the runtime system relies on creating different types to represent concurrency objects. Therefore, overloading is necessary to prevent the need for long prefixes and other naming conventions that prevent name clashes. As seen in section \ref{basics}, routine \code{main} is an example that benefits from overloading.
+Another important feature of \CFA is function overloading as in Java and \CC, where routines with the same name are selected based on the number and type of the arguments.
+As well, \CFA uses the return type as part of the selection criteria, as in Ada~\cite{Ada}.
+For routines with multiple parameters and returns, the selection is complex.
+\begin{cfa}
+// selection based on type and number of parameters
+void f(void);			$\C{// (1)}$
+void f(char);			$\C{// (2)}$
+void f(int, double);	$\C{// (3)}$
+f();					$\C{// select (1)}$
+f('a');					$\C{// select (2)}$
+f(3, 5.2);				$\C{// select (3)}$
+
+// selection based on  type and number of returns
+char   f(int);			$\C{// (1)}$
+double f(int);			$\C{// (2)}$
+char   c = f(3);		$\C{// select (1)}$
+double d = f(4);		$\C{// select (2)}$
+\end{cfa}
+This feature is particularly important for concurrency since the runtime system relies on creating different types to represent concurrency objects.
+Therefore, overloading is necessary to prevent the need for long prefixes and other naming conventions that prevent name clashes.
+As seen in section \ref{basics}, routine @main@ is an example that benefits from overloading.
 
 % ======================================================================
 \subsection{Operators}
-Overloading also extends to operators. The syntax for denoting operator-overloading is to name a routine with the symbol of the operator and question marks where the arguments of the operation appear, e.g.:
-\begin{cfacode}
-int ++? (int op);              		//unary prefix increment
-int ?++ (int op);              		//unary postfix increment
-int ?+? (int op1, int op2);    		//binary plus
-int ?<=?(int op1, int op2);   		//binary less than
-int ?=? (int & op1, int op2);  		//binary assignment
-int ?+=?(int & op1, int op2); 		//binary plus-assignment
+Overloading also extends to operators.
+The syntax for denoting operator-overloading is to name a routine with the symbol of the operator and question marks where the arguments of the operation appear, \eg:
+\begin{cfa}
+int ++? (int op);              		$\C{// unary prefix increment}$
+int ?++ (int op);              		$\C{// unary postfix increment}$
+int ?+? (int op1, int op2);    		$\C{// binary plus}$
+int ?<=?(int op1, int op2);   		$\C{// binary less than}$
+int ?=? (int & op1, int op2);  		$\C{// binary assignment}$
+int ?+=?(int & op1, int op2); 		$\C{// binary plus-assignment}$
 
 struct S {int i, j;};
-S ?+?(S op1, S op2) {				//add two structures
+S ?+?(S op1, S op2) {				$\C{// add two structures}$
 	return (S){op1.i + op2.i, op1.j + op2.j};
 }
 S s1 = {1, 2}, s2 = {2, 3}, s3;
-s3 = s1 + s2;						//compute sum: s3 == {2, 5}
-\end{cfacode}
+s3 = s1 + s2;						$\C{// compute sum: s3 == {2, 5}}$
+\end{cfa}
 While concurrency does not use operator overloading directly, this feature is more important as an introduction for the syntax of constructors.
 
 % ======================================================================
 \subsection{Constructors/Destructors}
-Object lifetime is often a challenge in concurrency. \CFA uses the approach of giving concurrent meaning to object lifetime as a means of synchronization and/or mutual exclusion. Since \CFA relies heavily on the lifetime of objects, constructors and destructors is a core feature required for concurrency and parallelism. \CFA uses the following syntax for constructors and destructors:
-\begin{cfacode}
+Object lifetime is often a challenge in concurrency. \CFA uses the approach of giving concurrent meaning to object lifetime as a means of synchronization and/or mutual exclusion.
+Since \CFA relies heavily on the lifetime of objects, constructors and destructors is a core feature required for concurrency and parallelism. \CFA uses the following syntax for constructors and destructors:
+\begin{cfa}
 struct S {
 	size_t size;
 	int * ia;
 };
-void ?{}(S & s, int asize) {	//constructor operator
-	s.size = asize;				//initialize fields
+void ?{}(S & s, int asize) {	$\C{// constructor operator}$
+	s.size = asize;				$\C{// initialize fields}$
 	s.ia = calloc(size, sizeof(S));
 }
-void ^?{}(S & s) {				//destructor operator
-	free(ia);					//de-initialization fields
+void ^?{}(S & s) {				$\C{// destructor operator}$
+	free(ia);					$\C{// de-initialization fields}$
 }
 int main() {
-	S x = {10}, y = {100};		//implicit calls: ?{}(x, 10), ?{}(y, 100)
-	...							//use x and y
-	^x{};  ^y{};				//explicit calls to de-initialize
-	x{20};  y{200};				//explicit calls to reinitialize
-	...							//reuse x and y
-}								//implicit calls: ^?{}(y), ^?{}(x)
-\end{cfacode}
-The language guarantees that every object and all their fields are constructed. Like \CC, construction of an object is automatically done on allocation and destruction of the object is done on deallocation. Allocation and deallocation can occur on the stack or on the heap.
-\begin{cfacode}
+	S x = {10}, y = {100};		$\C{// implicit calls: ?\{\}(x, 10), ?\{\}(y, 100)}$
+	...							$\C{// use x and y}$
+	^x{};  ^y{};				$\C{// explicit calls to de-initialize}$
+	x{20};  y{200};				$\C{// explicit calls to reinitialize}$
+	...							$\C{// reuse x and y}$
+}								$\C{// implicit calls: \^?\{\}(y), \^?\{\}(x)}$
+\end{cfa}
+The language guarantees that every object and all their fields are constructed.
+Like \CC, construction of an object is automatically done on allocation and destruction of the object is done on deallocation.
+Allocation and deallocation can occur on the stack or on the heap.
+\begin{cfa}
 {
-	struct S s = {10};	//allocation, call constructor
+	struct S s = {10};	$\C{// allocation, call constructor}$
 	...
-}						//deallocation, call destructor
-struct S * s = new();	//allocation, call constructor
+}						$\C{// deallocation, call destructor}$
+struct S * s = new();	$\C{// allocation, call constructor}$
 ...
-delete(s);				//deallocation, call destructor
-\end{cfacode}
-Note that like \CC, \CFA introduces \code{new} and \code{delete}, which behave like \code{malloc} and \code{free} in addition to constructing and destructing objects, after calling \code{malloc} and before calling \code{free}, respectively.
+delete(s);				$\C{// deallocation, call destructor}$
+\end{cfa}
+Note that like \CC, \CFA introduces @new@ and @delete@, which behave like @malloc@ and @free@ in addition to constructing and destructing objects, after calling @malloc@ and before calling @free@, respectively.
 
 % ======================================================================
 \subsection{Parametric Polymorphism}
 \label{s:ParametricPolymorphism}
-Routines in \CFA can also be reused for multiple types. This capability is done using the \code{forall} clauses, which allow separately compiled routines to support generic usage over multiple types. For example, the following sum function works for any type that supports construction from 0 and addition:
-\begin{cfacode}
-//constraint type, 0 and +
+Routines in \CFA can also be reused for multiple types.
+This capability is done using the @forall@ clauses, which allow separately compiled routines to support generic usage over multiple types.
+For example, the following sum function works for any type that supports construction from 0 and addition:
+\begin{cfa}
+// constraint type, 0 and +
 forall(otype T | { void ?{}(T *, zero_t); T ?+?(T, T); })
 T sum(T a[ ], size_t size) {
-	T total = 0;				//construct T from 0
+	T total = 0;				$\C{// construct T from 0}$
 	for(size_t i = 0; i < size; i++)
-		total = total + a[i];	//select appropriate +
+		total = total + a[i];	$\C{// select appropriate +}$
 	return total;
 }
 
 S sa[5];
-int i = sum(sa, 5);				//use S's 0 construction and +
-\end{cfacode}
-
-Since writing constraints on types can become cumbersome for more constrained functions, \CFA also has the concept of traits. Traits are named collection of constraints that can be used both instead and in addition to regular constraints:
-\begin{cfacode}
+int i = sum(sa, 5);				$\C{// use S's 0 construction and +}$
+\end{cfa}
+
+Since writing constraints on types can become cumbersome for more constrained functions, \CFA also has the concept of traits.
+Traits are named collection of constraints that can be used both instead and in addition to regular constraints:
+\begin{cfa}
 trait summable( otype T ) {
-	void ?{}(T *, zero_t);		//constructor from 0 literal
-	T ?+?(T, T);				//assortment of additions
+	void ?{}(T *, zero_t);		$\C{// constructor from 0 literal}$
+	T ?+?(T, T);				$\C{// assortment of additions}$
 	T ?+=?(T *, T);
 	T ++?(T *);
 	T ?++(T *);
 };
-forall( otype T | summable(T) )	//use trait
+forall( otype T | summable(T) )	$\C{// use trait}$
 T sum(T a[], size_t size);
-\end{cfacode}
-
-Note that the type use for assertions can be either an \code{otype} or a \code{dtype}. Types declared as \code{otype} refer to ``complete'' objects, i.e., objects with a size, a default constructor, a copy constructor, a destructor and an assignment operator. Using \code{dtype,} on the other hand, has none of these assumptions but is extremely restrictive, it only guarantees the object is addressable.
+\end{cfa}
+
+Note that the type use for assertions can be either an @otype@ or a @dtype@.
+Types declared as @otype@ refer to ``complete'' objects, \ie objects with a size, a default constructor, a copy constructor, a destructor and an assignment operator.
+Using @dtype@, on the other hand, has none of these assumptions but is extremely restrictive, it only guarantees the object is addressable.
 
 % ======================================================================
 \subsection{with Clause/Statement}
-Since \CFA lacks the concept of a receiver, certain functions end up needing to repeat variable names often. To remove this inconvenience, \CFA provides the \code{with} statement, which opens an aggregate scope making its fields directly accessible (like Pascal).
-\begin{cfacode}
+Since \CFA lacks the concept of a receiver, certain functions end up needing to repeat variable names often.
+To remove this inconvenience, \CFA provides the @with@ statement, which opens an aggregate scope making its fields directly accessible (like Pascal).
+\begin{cfa}
 struct S { int i, j; };
-int mem(S & this) with (this)		//with clause
-	i = 1;							//this->i
-	j = 2;							//this->j
+int mem(S & this) with (this)		$\C{// with clause}$
+	i = 1;							$\C{// this->i}$
+	j = 2;							$\C{// this->j}$
 }
 int foo() {
 	struct S1 { ... } s1;
 	struct S2 { ... } s2;
-	with (s1) 						//with statement
+	with (s1) 						$\C{// with statement}$
 	{
-		//access fields of s1 without qualification
-		with (s2)					//nesting
+		// access fields of s1 without qualification
+		with (s2)					$\C{// nesting}$
 		{
-			//access fields of s1 and s2 without qualification
+			// access fields of s1 and s2 without qualification
 		}
 	}
-	with (s1, s2) 					//scopes open in parallel
+	with (s1, s2) 					$\C{// scopes open in parallel}$
 	{
-		//access fields of s1 and s2 without qualification
+		// access fields of s1 and s2 without qualification
 	}
 }
-\end{cfacode}
-
-For more information on \CFA see \cite{cforall-ug,rob-thesis,www-cfa}.
+\end{cfa}
+
+For more information on \CFA see \cite{cforall-ug,Schluntz17,www-cfa}.
 
 % ======================================================================
@@ -270,239 +462,325 @@
 % ======================================================================
 % ======================================================================
-Before any detailed discussion of the concurrency and parallelism in \CFA, it is important to describe the basics of concurrency and how they are expressed in \CFA user code.
-
-\section{Basics of concurrency}
-At its core, concurrency is based on having multiple call-stacks and scheduling among threads of execution executing on these stacks. Concurrency without parallelism only requires having multiple call stacks (or contexts) for a single thread of execution.
-
-Execution with a single thread and multiple stacks where the thread is self-scheduling deterministically across the stacks is called coroutining. Execution with a single and multiple stacks but where the thread is scheduled by an oracle (non-deterministic from the thread's perspective) across the stacks is called concurrency.
-
-Therefore, a minimal concurrency system can be achieved by creating coroutines (see Section \ref{coroutine}), which instead of context-switching among each other, always ask an oracle where to context-switch next. While coroutines can execute on the caller's stack-frame, stack-full coroutines allow full generality and are sufficient as the basis for concurrency. The aforementioned oracle is a scheduler and the whole system now follows a cooperative threading-model (a.k.a., non-preemptive scheduling). The oracle/scheduler can either be a stack-less or stack-full entity and correspondingly require one or two context-switches to run a different coroutine. In any case, a subset of concurrency related challenges start to appear. For the complete set of concurrency challenges to occur, the only feature missing is preemption.
-
-A scheduler introduces order of execution uncertainty, while preemption introduces uncertainty about where context switches occur. Mutual exclusion and synchronization are ways of limiting non-determinism in a concurrent system. Now it is important to understand that uncertainty is desirable; uncertainty can be used by runtime systems to significantly increase performance and is often the basis of giving a user the illusion that tasks are running in parallel. Optimal performance in concurrent applications is often obtained by having as much non-determinism as correctness allows.
-
-\section{\protect\CFA's Thread Building Blocks}
-One of the important features that are missing in C is threading\footnote{While the C11 standard defines a ``threads.h'' header, it is minimal and defined as optional. As such, library support for threading is far from widespread. At the time of writing the paper, neither \texttt{gcc} nor \texttt{clang} support ``threads.h'' in their respective standard libraries.}. On modern architectures, a lack of threading is unacceptable~\cite{Sutter05, Sutter05b}, and therefore modern programming languages must have the proper tools to allow users to write efficient concurrent programs to take advantage of parallelism. As an extension of C, \CFA needs to express these concepts in a way that is as natural as possible to programmers familiar with imperative languages. And being a system-level language means programmers expect to choose precisely which features they need and which cost they are willing to pay.
-
-\section{Coroutines: A Stepping Stone}\label{coroutine}
-While the main focus of this proposal is concurrency and parallelism, it is important to address coroutines, which are actually a significant building block of a concurrency system. \textbf{Coroutine}s are generalized routines which have predefined points where execution is suspended and can be resumed at a later time. Therefore, they need to deal with context switches and other context-management operations. This proposal includes coroutines both as an intermediate step for the implementation of threads, and a first-class feature of \CFA. Furthermore, many design challenges of threads are at least partially present in designing coroutines, which makes the design effort that much more relevant. The core \textbf{api} of coroutines revolves around two features: independent call-stacks and \code{suspend}/\code{resume}.
-
-\begin{table}
-\begin{center}
-\begin{tabular}{c @{\hskip 0.025in}|@{\hskip 0.025in} c @{\hskip 0.025in}|@{\hskip 0.025in} c}
-\begin{ccode}[tabsize=2]
-//Using callbacks
-void fibonacci_func(
-	int n,
-	void (*callback)(int)
-) {
-	int first = 0;
-	int second = 1;
-	int next, i;
-	for(i = 0; i < n; i++)
-	{
-		if(i <= 1)
-			next = i;
-		else {
-			next = f1 + f2;
-			f1 = f2;
-			f2 = next;
-		}
-		callback(next);
+
+At its core, concurrency is based on having multiple call-stacks and scheduling among threads of execution executing on these stacks.
+Multiple call stacks (or contexts) and a single thread of execution does \emph{not} imply concurrency.
+Execution with a single thread and multiple stacks where the thread is deterministically self-scheduling across the stacks is called \newterm{coroutining};
+execution with a single thread and multiple stacks but where the thread is scheduled by an oracle (non-deterministic from the thread's perspective) across the stacks is called concurrency~\cite[\S~3]{Buhr05a}.
+Therefore, a minimal concurrency system can be achieved using coroutines (see Section \ref{coroutine}), which instead of context-switching among each other, always defer to an oracle for where to context-switch next.
+
+While coroutines can execute on the caller's stack-frame, stack-full coroutines allow full generality and are sufficient as the basis for concurrency.
+The aforementioned oracle is a scheduler and the whole system now follows a cooperative threading-model (a.k.a., non-preemptive scheduling).
+The oracle/scheduler can either be a stack-less or stack-full entity and correspondingly require one or two context-switches to run a different coroutine.
+In any case, a subset of concurrency related challenges start to appear.
+For the complete set of concurrency challenges to occur, the only feature missing is preemption.
+
+A scheduler introduces order of execution uncertainty, while preemption introduces uncertainty about where context switches occur.
+Mutual exclusion and synchronization are ways of limiting non-determinism in a concurrent system.
+Now it is important to understand that uncertainty is desirable; uncertainty can be used by runtime systems to significantly increase performance and is often the basis of giving a user the illusion that tasks are running in parallel.
+Optimal performance in concurrent applications is often obtained by having as much non-determinism as correctness allows.
+
+
+\subsection{\protect\CFA's Thread Building Blocks}
+
+One of the important features that are missing in C is threading\footnote{While the C11 standard defines a ``threads.h'' header, it is minimal and defined as optional.
+As such, library support for threading is far from widespread.
+At the time of writing the paper, neither \protect\lstinline|gcc| nor \protect\lstinline|clang| support ``threads.h'' in their standard libraries.}.
+On modern architectures, a lack of threading is unacceptable~\cite{Sutter05, Sutter05b}, and therefore modern programming languages must have the proper tools to allow users to write efficient concurrent programs to take advantage of parallelism.
+As an extension of C, \CFA needs to express these concepts in a way that is as natural as possible to programmers familiar with imperative languages.
+And being a system-level language means programmers expect to choose precisely which features they need and which cost they are willing to pay.
+
+
+\subsection{Coroutines: A Stepping Stone}\label{coroutine}
+
+While the focus of this proposal is concurrency and parallelism, it is important to address coroutines, which are a significant building block of a concurrency system.
+\newterm{Coroutine}s are generalized routines with points where execution is suspended and resumed at a later time.
+Suspend/resume is a context switche and coroutines have other context-management operations.
+Many design challenges of threads are partially present in designing coroutines, which makes the design effort relevant.
+The core \textbf{api} of coroutines has two features: independent call-stacks and @suspend@/@resume@.
+
+A coroutine handles the class of problems that need to retain state between calls (\eg plugin, device driver, finite-state machine).
+For example, a problem made easier with coroutines is unbounded generators, \eg generating an infinite sequence of Fibonacci numbers:
+\begin{displaymath}
+f(n) = \left \{
+\begin{array}{ll}
+0				& n = 0		\\
+1				& n = 1		\\
+f(n-1) + f(n-2)	& n \ge 2	\\
+\end{array}
+\right.
+\end{displaymath}
+Figure~\ref{f:C-fibonacci} shows conventional approaches for writing a Fibonacci generator in C.
+
+Figure~\ref{f:GlobalVariables} illustrates the following problems:
+unencapsulated global variables necessary to retain state between calls;
+only one fibonacci generator can run at a time;
+execution state must be explicitly retained.
+Figure~\ref{f:ExternalState} addresses these issues:
+unencapsulated program global variables become encapsulated structure variables;
+multiple fibonacci generators can run at a time by declaring multiple fibonacci objects;
+explicit execution state is removed by precomputing the first two Fibonacci numbers and returning $f(n-2)$.
+
+\begin{figure}
+\centering
+\newbox\myboxA
+\begin{lrbox}{\myboxA}
+\begin{lstlisting}[aboveskip=0pt,belowskip=0pt]
+`int f1, f2, state = 1;`   // single global variables
+int fib() {
+	int fn;
+	`switch ( state )` {  // explicit execution state
+	  case 1: fn = 0;  f1 = fn;  state = 2;  break;
+	  case 2: fn = 1;  f2 = f1;  f1 = fn;  state = 3;  break;
+	  case 3: fn = f1 + f2;  f2 = f1;  f1 = fn;  break;
 	}
-}
-
+	return fn;
+}
 int main() {
-	void print_fib(int n) {
-		printf("%d\n", n);
+
+	for ( int i = 0; i < 10; i += 1 ) {
+		printf( "%d\n", fib() );
 	}
-
-	fibonacci_func(
-		10, print_fib
-	);
-
-
-
-}
-\end{ccode}&\begin{ccode}[tabsize=2]
-//Using output array
-void fibonacci_array(
-	int n,
-	int* array
-) {
-	int f1 = 0; int f2 = 1;
-	int next, i;
-	for(i = 0; i < n; i++)
-	{
-		if(i <= 1)
-			next = i;
-		else {
-			next = f1 + f2;
-			f1 = f2;
-			f2 = next;
-		}
-		array[i] = next;
+}
+\end{lstlisting}
+\end{lrbox}
+
+\newbox\myboxB
+\begin{lrbox}{\myboxB}
+\begin{lstlisting}[aboveskip=0pt,belowskip=0pt]
+#define FIB_INIT `{ 0, 1 }`
+typedef struct { int f2, f1; } Fib;
+int fib( Fib * f ) {
+
+	int ret = f->f2;
+	int fn = f->f1 + f->f2;
+	f->f2 = f->f1; f->f1 = fn;
+
+	return ret;
+}
+int main() {
+	Fib f1 = FIB_INIT, f2 = FIB_INIT;
+	for ( int i = 0; i < 10; i += 1 ) {
+		printf( "%d %d\n", fib( &f1 ), fib( &f2 ) );
 	}
 }
-
-
+\end{lstlisting}
+\end{lrbox}
+
+\subfloat[3 States: global variables]{\label{f:GlobalVariables}\usebox\myboxA}
+\qquad
+\subfloat[1 State: external variables]{\label{f:ExternalState}\usebox\myboxB}
+\caption{C Fibonacci Implementations}
+\label{f:C-fibonacci}
+
+\bigskip
+
+\newbox\myboxA
+\begin{lrbox}{\myboxA}
+\begin{lstlisting}[aboveskip=0pt,belowskip=0pt]
+`coroutine` Fib { int fn; };
+void main( Fib & f ) with( f ) {
+	int f1, f2;
+	fn = 0;  f1 = fn;  `suspend()`;
+	fn = 1;  f2 = f1;  f1 = fn;  `suspend()`;
+	for ( ;; ) {
+		fn = f1 + f2;  f2 = f1;  f1 = fn;  `suspend()`;
+	}
+}
+int next( Fib & fib ) with( fib ) {
+	`resume( fib );`
+	return fn;
+}
 int main() {
-	int a[10];
-
-	fibonacci_func(
-		10, a
-	);
-
-	for(int i=0;i<10;i++){
-		printf("%d\n", a[i]);
-	}
-
-}
-\end{ccode}&\begin{ccode}[tabsize=2]
-//Using external state
-typedef struct {
-	int f1, f2;
-} Iterator_t;
-
-int fibonacci_state(
-	Iterator_t* it
-) {
-	int f;
-	f = it->f1 + it->f2;
-	it->f2 = it->f1;
-	it->f1 = max(f,1);
-	return f;
-}
-
-
-
-
-
-
-
-int main() {
-	Iterator_t it={0,0};
-
-	for(int i=0;i<10;i++){
-		printf("%d\n",
-			fibonacci_state(
-				&it
-			);
-		);
-	}
-
-}
-\end{ccode}
-\end{tabular}
-\end{center}
-\caption{Different implementations of a Fibonacci sequence generator in C.}
-\label{lst:fibonacci-c}
-\end{table}
-
-A good example of a problem made easier with coroutines is generators, e.g., generating the Fibonacci sequence. This problem comes with the challenge of decoupling how a sequence is generated and how it is used. Listing \ref{lst:fibonacci-c} shows conventional approaches to writing generators in C. All three of these approach suffer from strong coupling. The left and centre approaches require that the generator have knowledge of how the sequence is used, while the rightmost approach requires holding internal state between calls on behalf of the generator and makes it much harder to handle corner cases like the Fibonacci seed.
-
-Listing \ref{lst:fibonacci-cfa} is an example of a solution to the Fibonacci problem using \CFA coroutines, where the coroutine stack holds sufficient state for the next generation. This solution has the advantage of having very strong decoupling between how the sequence is generated and how it is used. Indeed, this version is as easy to use as the \code{fibonacci_state} solution, while the implementation is very similar to the \code{fibonacci_func} example.
-
-\begin{figure}
-\begin{cfacode}[caption={Implementation of Fibonacci using coroutines},label={lst:fibonacci-cfa}]
-coroutine Fibonacci {
-	int fn; //used for communication
-};
-
-void ?{}(Fibonacci& this) { //constructor
-	this.fn = 0;
-}
-
-//main automatically called on first resume
-void main(Fibonacci& this) with (this) {
-	int fn1, fn2; 		//retained between resumes
-	fn  = 0;
-	fn1 = fn;
-	suspend(this); 		//return to last resume
-
-	fn  = 1;
-	fn2 = fn1;
-	fn1 = fn;
-	suspend(this); 		//return to last resume
-
-	for ( ;; ) {
-		fn  = fn1 + fn2;
-		fn2 = fn1;
-		fn1 = fn;
-		suspend(this); 	//return to last resume
-	}
-}
-
-int next(Fibonacci& this) {
-	resume(this); //transfer to last suspend
-	return this.fn;
-}
-
-void main() { //regular program main
-	Fibonacci f1, f2;
+	Fib f1, f2;
 	for ( int i = 1; i <= 10; i += 1 ) {
 		sout | next( f1 ) | next( f2 ) | endl;
 	}
 }
-\end{cfacode}
+\end{lstlisting}
+\end{lrbox}
+\newbox\myboxB
+\begin{lrbox}{\myboxB}
+\begin{lstlisting}[aboveskip=0pt,belowskip=0pt]
+`coroutine` Fib { int ret; };
+void main( Fib & f ) with( f ) {
+	int fn, f1 = 1, f2 = 0;
+	for ( ;; ) {
+		ret = f2;
+
+		fn = f1 + f2;  f2 = f1;  f1 = fn; `suspend();`
+	}
+}
+int next( Fib & fib ) with( fib ) {
+	`resume( fib );`
+	return ret;
+}
+
+
+
+
+
+
+\end{lstlisting}
+\end{lrbox}
+\subfloat[3 States, internal variables]{\label{f:Coroutine3States}\usebox\myboxA}
+\qquad
+\subfloat[1 State, internal variables]{\label{f:Coroutine1State}\usebox\myboxB}
+\caption{\CFA Coroutine Fibonacci Implementations}
+\label{f:fibonacci-cfa}
 \end{figure}
 
-Listing \ref{lst:fmt-line} shows the \code{Format} coroutine for restructuring text into groups of character blocks of fixed size. The example takes advantage of resuming coroutines in the constructor to simplify the code and highlights the idea that interesting control flow can occur in the constructor.
+Figure~\ref{f:Coroutine3States} creates a @coroutine@ type, which provides communication for multiple interface functions, and the \newterm{coroutine main}, which runs on the coroutine stack.
+\begin{cfa}
+`coroutine C { char c; int i; _Bool s; };`	$\C{// used for communication}$
+void ?{}( C & c ) { s = false; }			$\C{// constructor}$
+void main( C & cor ) with( cor ) {			$\C{// actual coroutine}$
+	while ( ! s ) // process c
+	if ( v == ... ) s = false;
+}
+// interface functions
+char cont( C & cor, char ch ) { c = ch; resume( cor ); return c; }
+_Bool stop( C & cor, int v ) { s = true; i = v; resume( cor ); return s; }
+\end{cfa}
+
+encapsulates the Fibonacci state in the  shows is an example of a solution to the Fibonacci problem using \CFA coroutines, where the coroutine stack holds sufficient state for the next generation.
+This solution has the advantage of having very strong decoupling between how the sequence is generated and how it is used.
+Indeed, this version is as easy to use as the @fibonacci_state@ solution, while the implementation is very similar to the @fibonacci_func@ example.
+
+Figure~\ref{f:fmt-line} shows the @Format@ coroutine for restructuring text into groups of character blocks of fixed size.
+The example takes advantage of resuming coroutines in the constructor to simplify the code and highlights the idea that interesting control flow can occur in the constructor.
 
 \begin{figure}
-\begin{cfacode}[tabsize=3,caption={Formatting text into lines of 5 blocks of 4 characters.},label={lst:fmt-line}]
-//format characters into blocks of 4 and groups of 5 blocks per line
-coroutine Format {
-	char ch;									//used for communication
-	int g, b;								//global because used in destructor
+\centering
+\begin{cfa}
+`coroutine` Format {
+	char ch;								$\C{// used for communication}$
+	int g, b;								$\C{// global because used in destructor}$
 };
-
-void  ?{}(Format& fmt) {
-	resume( fmt );  						//prime (start) coroutine
-}
-
-void ^?{}(Format& fmt) with fmt {
-	if ( fmt.g != 0 || fmt.b != 0 )
-	sout | endl;
-}
-
-void main(Format& fmt) with fmt {
-	for ( ;; ) {							//for as many characters
-		for(g = 0; g < 5; g++) {		//groups of 5 blocks
-			for(b = 0; b < 4; fb++) {	//blocks of 4 characters
-				suspend();
-				sout | ch;					//print character
+void ?{}( Format & fmt ) { `resume( fmt );` } $\C{// prime (start) coroutine}$
+void ^?{}( Format & fmt ) with( fmt ) { if ( g != 0 || b != 0 ) sout | endl; }
+void main( Format & fmt ) with( fmt ) {
+	for ( ;; ) {							$\C{// for as many characters}$
+		for ( g = 0; g < 5; g += 1 ) {		$\C{// groups of 5 blocks}$
+			for ( b = 0; b < 4; b += 1 ) {	$\C{// blocks of 4 characters}$
+				`suspend();`
+				sout | ch;					$\C{// print character}$
 			}
-			sout | "  ";					//print block separator
+			sout | "  ";					$\C{// print block separator}$
 		}
-		sout | endl;						//print group separator
+		sout | endl;						$\C{// print group separator}$
 	}
 }
-
-void prt(Format & fmt, char ch) {
+void prt( Format & fmt, char ch ) {
 	fmt.ch = ch;
-	resume(fmt);
-}
-
+	`resume( fmt );`
+}
 int main() {
 	Format fmt;
 	char ch;
-	Eof: for ( ;; ) {						//read until end of file
-		sin | ch;							//read one character
-		if(eof(sin)) break Eof;			//eof ?
-		prt(fmt, ch);						//push character for formatting
+	for ( ;; ) {							$\C{// read until end of file}$
+		sin | ch;							$\C{// read one character}$
+	  if ( eof( sin ) ) break;				$\C{// eof ?}$
+		prt( fmt, ch );						$\C{// push character for formatting}$
 	}
 }
-\end{cfacode}
+\end{cfa}
+\caption{Formatting text into lines of 5 blocks of 4 characters.}
+\label{f:fmt-line}
 \end{figure}
 
-\subsection{Construction}
-One important design challenge for implementing coroutines and threads (shown in section \ref{threads}) is that the runtime system needs to run code after the user-constructor runs to connect the fully constructed object into the system. In the case of coroutines, this challenge is simpler since there is no non-determinism from preemption or scheduling. However, the underlying challenge remains the same for coroutines and threads.
-
-The runtime system needs to create the coroutine's stack and, more importantly, prepare it for the first resumption. The timing of the creation is non-trivial since users expect both to have fully constructed objects once execution enters the coroutine main and to be able to resume the coroutine from the constructor. There are several solutions to this problem but the chosen option effectively forces the design of the coroutine.
-
-Furthermore, \CFA faces an extra challenge as polymorphic routines create invisible thunks when cast to non-polymorphic routines and these thunks have function scope. For example, the following code, while looking benign, can run into undefined behaviour because of thunks:
-
-\begin{cfacode}
-//async: Runs function asynchronously on another thread
+\begin{figure}
+\centering
+\lstset{language=CFA,escapechar={},moredelim=**[is][\protect\color{red}]{`}{`}}
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\begin{cfa}
+`coroutine` Prod {
+	Cons & c;
+	int N, money, receipt;
+};
+void main( Prod & prod ) with( prod ) {
+	// 1st resume starts here
+	for ( int i = 0; i < N; i += 1 ) {
+		int p1 = random( 100 ), p2 = random( 100 );
+		sout | p1 | " " | p2 | endl;
+		int status = delivery( c, p1, p2 );
+		sout | " $" | money | endl | status | endl;
+		receipt += 1;
+	}
+	stop( c );
+	sout | "prod stops" | endl;
+}
+int payment( Prod & prod, int money ) {
+	prod.money = money;
+	`resume( prod );`
+	return prod.receipt;
+}
+void start( Prod & prod, int N, Cons &c ) {
+	&prod.c = &c;
+	prod.[N, receipt] = [N, 0];
+	`resume( prod );`
+}
+int main() {
+	Prod prod;
+	Cons cons = { prod };
+	srandom( getpid() );
+	start( prod, 5, cons );
+}
+\end{cfa}
+&
+\begin{cfa}
+`coroutine` Cons {
+	Prod & p;
+	int p1, p2, status;
+	_Bool done;
+};
+void ?{}( Cons & cons, Prod & p ) {
+	&cons.p = &p;
+	cons.[status, done ] = [0, false];
+}
+void ^?{}( Cons & cons ) {}
+void main( Cons & cons ) with( cons ) {
+	// 1st resume starts here
+	int money = 1, receipt;
+	for ( ; ! done; ) {
+		sout | p1 | " " | p2 | endl | " $" | money | endl;
+		status += 1;
+		receipt = payment( p, money );
+		sout | " #" | receipt | endl;
+		money += 1;
+	}
+	sout | "cons stops" | endl;
+}
+int delivery( Cons & cons, int p1, int p2 ) {
+	cons.[p1, p2] = [p1, p2];
+	`resume( cons );`
+	return cons.status;
+}
+void stop( Cons & cons ) {
+	cons.done = true;
+	`resume( cons );`
+}
+
+\end{cfa}
+\end{tabular}
+\caption{Producer / consumer: resume-resume cycle, bi-directional communication}
+\label{f:ProdCons}
+\end{figure}
+
+
+\subsubsection{Construction}
+
+One important design challenge for implementing coroutines and threads (shown in section \ref{threads}) is that the runtime system needs to run code after the user-constructor runs to connect the fully constructed object into the system.
+In the case of coroutines, this challenge is simpler since there is no non-determinism from preemption or scheduling.
+However, the underlying challenge remains the same for coroutines and threads.
+
+The runtime system needs to create the coroutine's stack and, more importantly, prepare it for the first resumption.
+The timing of the creation is non-trivial since users expect both to have fully constructed objects once execution enters the coroutine main and to be able to resume the coroutine from the constructor.
+There are several solutions to this problem but the chosen option effectively forces the design of the coroutine.
+
+Furthermore, \CFA faces an extra challenge as polymorphic routines create invisible thunks when cast to non-polymorphic routines and these thunks have function scope.
+For example, the following code, while looking benign, can run into undefined behaviour because of thunks:
+
+\begin{cfa}
+// async: Runs function asynchronously on another thread
 forall(otype T)
 extern void async(void (*func)(T*), T* obj);
@@ -513,11 +791,11 @@
 void bar() {
 	int a;
-	async(noop, &a); //start thread running noop with argument a
-}
-\end{cfacode}
+	async(noop, &a); // start thread running noop with argument a
+}
+\end{cfa}
 
 The generated C code\footnote{Code trimmed down for brevity} creates a local thunk to hold type information:
 
-\begin{ccode}
+\begin{cfa}
 extern void async(/* omitted */, void (*func)(void*), void* obj);
 
@@ -533,14 +811,19 @@
 	async(/* omitted */, ((void (*)(void*))(&_thunk0)), (&a));
 }
-\end{ccode}
-The problem in this example is a storage management issue, the function pointer \code{_thunk0} is only valid until the end of the block, which limits the viable solutions because storing the function pointer for too long causes undefined behaviour; i.e., the stack-based thunk being destroyed before it can be used. This challenge is an extension of challenges that come with second-class routines. Indeed, GCC nested routines also have the limitation that nested routine cannot be passed outside of the declaration scope. The case of coroutines and threads is simply an extension of this problem to multiple call stacks.
-
-\subsection{Alternative: Composition}
+\end{cfa}
+The problem in this example is a storage management issue, the function pointer @_thunk0@ is only valid until the end of the block, which limits the viable solutions because storing the function pointer for too long causes undefined behaviour; \ie the stack-based thunk being destroyed before it can be used.
+This challenge is an extension of challenges that come with second-class routines.
+Indeed, GCC nested routines also have the limitation that nested routine cannot be passed outside of the declaration scope.
+The case of coroutines and threads is simply an extension of this problem to multiple call stacks.
+
+
+\subsubsection{Alternative: Composition}
+
 One solution to this challenge is to use composition/containment, where coroutine fields are added to manage the coroutine.
 
-\begin{cfacode}
+\begin{cfa}
 struct Fibonacci {
-	int fn; //used for communication
-	coroutine c; //composition
+	int fn; // used for communication
+	coroutine c; // composition
 };
 
@@ -551,36 +834,49 @@
 void ?{}(Fibonacci& this) {
 	this.fn = 0;
-	//Call constructor to initialize coroutine
+	// Call constructor to initialize coroutine
 	(this.c){myMain};
 }
-\end{cfacode}
-The downside of this approach is that users need to correctly construct the coroutine handle before using it. Like any other objects, the user must carefully choose construction order to prevent usage of objects not yet constructed. However, in the case of coroutines, users must also pass to the coroutine information about the coroutine main, like in the previous example. This opens the door for user errors and requires extra runtime storage to pass at runtime information that can be known statically.
-
-\subsection{Alternative: Reserved keyword}
+\end{cfa}
+The downside of this approach is that users need to correctly construct the coroutine handle before using it.
+Like any other objects, the user must carefully choose construction order to prevent usage of objects not yet constructed.
+However, in the case of coroutines, users must also pass to the coroutine information about the coroutine main, like in the previous example.
+This opens the door for user errors and requires extra runtime storage to pass at runtime information that can be known statically.
+
+
+\subsubsection{Alternative: Reserved keyword}
+
 The next alternative is to use language support to annotate coroutines as follows:
-
-\begin{cfacode}
+\begin{cfa}
 coroutine Fibonacci {
-	int fn; //used for communication
+	int fn; // used for communication
 };
-\end{cfacode}
-The \code{coroutine} keyword means the compiler can find and inject code where needed. The downside of this approach is that it makes coroutine a special case in the language. Users wanting to extend coroutines or build their own for various reasons can only do so in ways offered by the language. Furthermore, implementing coroutines without language supports also displays the power of the programming language used. While this is ultimately the option used for idiomatic \CFA code, coroutines and threads can still be constructed by users without using the language support. The reserved keywords are only present to improve ease of use for the common cases.
-
-\subsection{Alternative: Lambda Objects}
-
-For coroutines as for threads, many implementations are based on routine pointers or function objects~\cite{Butenhof97, C++14, MS:VisualC++, BoostCoroutines15}. For example, Boost implements coroutines in terms of four functor object types:
-\begin{cfacode}
+\end{cfa}
+The @coroutine@ keyword means the compiler can find and inject code where needed.
+The downside of this approach is that it makes coroutine a special case in the language.
+Users wanting to extend coroutines or build their own for various reasons can only do so in ways offered by the language.
+Furthermore, implementing coroutines without language supports also displays the power of the programming language used.
+While this is ultimately the option used for idiomatic \CFA code, coroutines and threads can still be constructed by users without using the language support.
+The reserved keywords are only present to improve ease of use for the common cases.
+
+
+\subsubsection{Alternative: Lambda Objects}
+
+For coroutines as for threads, many implementations are based on routine pointers or function objects~\cite{Butenhof97, C++14, MS:VisualC++, BoostCoroutines15}.
+For example, Boost implements coroutines in terms of four functor object types:
+\begin{cfa}
 asymmetric_coroutine<>::pull_type
 asymmetric_coroutine<>::push_type
 symmetric_coroutine<>::call_type
 symmetric_coroutine<>::yield_type
-\end{cfacode}
-Often, the canonical threading paradigm in languages is based on function pointers, \texttt{pthread} being one of the most well-known examples. The main problem of this approach is that the thread usage is limited to a generic handle that must otherwise be wrapped in a custom type. Since the custom type is simple to write in \CFA and solves several issues, added support for routine/lambda based coroutines adds very little.
-
-A variation of this would be to use a simple function pointer in the same way \texttt{pthread} does for threads:
-\begin{cfacode}
+\end{cfa}
+Often, the canonical threading paradigm in languages is based on function pointers, @pthread@ being one of the most well-known examples.
+The main problem of this approach is that the thread usage is limited to a generic handle that must otherwise be wrapped in a custom type.
+Since the custom type is simple to write in \CFA and solves several issues, added support for routine/lambda based coroutines adds very little.
+
+A variation of this would be to use a simple function pointer in the same way @pthread@ does for threads:
+\begin{cfa}
 void foo( coroutine_t cid, void* arg ) {
 	int* value = (int*)arg;
-	//Coroutine body
+	// Coroutine body
 }
 
@@ -590,12 +886,15 @@
 	coroutine_resume( &cid );
 }
-\end{cfacode}
-This semantics is more common for thread interfaces but coroutines work equally well. As discussed in section \ref{threads}, this approach is superseded by static approaches in terms of expressivity.
-
-\subsection{Alternative: Trait-Based Coroutines}
-
-Finally, the underlying approach, which is the one closest to \CFA idioms, is to use trait-based lazy coroutines. This approach defines a coroutine as anything that satisfies the trait \code{is_coroutine} (as defined below) and is used as a coroutine.
-
-\begin{cfacode}
+\end{cfa}
+This semantics is more common for thread interfaces but coroutines work equally well.
+As discussed in section \ref{threads}, this approach is superseded by static approaches in terms of expressivity.
+
+
+\subsubsection{Alternative: Trait-Based Coroutines}
+
+Finally, the underlying approach, which is the one closest to \CFA idioms, is to use trait-based lazy coroutines.
+This approach defines a coroutine as anything that satisfies the trait @is_coroutine@ (as defined below) and is used as a coroutine.
+
+\begin{cfa}
 trait is_coroutine(dtype T) {
       void main(T& this);
@@ -605,14 +904,17 @@
 forall( dtype T | is_coroutine(T) ) void suspend(T&);
 forall( dtype T | is_coroutine(T) ) void resume (T&);
-\end{cfacode}
-This ensures that an object is not a coroutine until \code{resume} is called on the object. Correspondingly, any object that is passed to \code{resume} is a coroutine since it must satisfy the \code{is_coroutine} trait to compile. The advantage of this approach is that users can easily create different types of coroutines, for example, changing the memory layout of a coroutine is trivial when implementing the \code{get_coroutine} routine. The \CFA keyword \code{coroutine} simply has the effect of implementing the getter and forward declarations required for users to implement the main routine.
+\end{cfa}
+This ensures that an object is not a coroutine until @resume@ is called on the object.
+Correspondingly, any object that is passed to @resume@ is a coroutine since it must satisfy the @is_coroutine@ trait to compile.
+The advantage of this approach is that users can easily create different types of coroutines, for example, changing the memory layout of a coroutine is trivial when implementing the @get_coroutine@ routine.
+The \CFA keyword @coroutine@ simply has the effect of implementing the getter and forward declarations required for users to implement the main routine.
 
 \begin{center}
 \begin{tabular}{c c c}
-\begin{cfacode}[tabsize=3]
+\begin{cfa}[tabsize=3]
 coroutine MyCoroutine {
 	int someValue;
 };
-\end{cfacode} & == & \begin{cfacode}[tabsize=3]
+\end{cfa} & == & \begin{cfa}[tabsize=3]
 struct MyCoroutine {
 	int someValue;
@@ -628,5 +930,5 @@
 
 void main(struct MyCoroutine* this);
-\end{cfacode}
+\end{cfa}
 \end{tabular}
 \end{center}
@@ -634,14 +936,17 @@
 The combination of these two approaches allows users new to coroutining and concurrency to have an easy and concise specification, while more advanced users have tighter control on memory layout and initialization.
 
-\section{Thread Interface}\label{threads}
-The basic building blocks of multithreading in \CFA are \textbf{cfathread}. Both user and kernel threads are supported, where user threads are the concurrency mechanism and kernel threads are the parallel mechanism. User threads offer a flexible and lightweight interface. A thread can be declared using a struct declaration \code{thread} as follows:
-
-\begin{cfacode}
+\subsection{Thread Interface}\label{threads}
+The basic building blocks of multithreading in \CFA are \textbf{cfathread}.
+Both user and kernel threads are supported, where user threads are the concurrency mechanism and kernel threads are the parallel mechanism.
+User threads offer a flexible and lightweight interface.
+A thread can be declared using a struct declaration @thread@ as follows:
+
+\begin{cfa}
 thread foo {};
-\end{cfacode}
+\end{cfa}
 
 As for coroutines, the keyword is a thin wrapper around a \CFA trait:
 
-\begin{cfacode}
+\begin{cfa}
 trait is_thread(dtype T) {
       void ^?{}(T & mutex this);
@@ -649,8 +954,12 @@
       thread_desc* get_thread(T & this);
 };
-\end{cfacode}
-
-Obviously, for this thread implementation to be useful it must run some user code. Several other threading interfaces use a function-pointer representation as the interface of threads (for example \Csharp~\cite{Csharp} and Scala~\cite{Scala}). However, this proposal considers that statically tying a \code{main} routine to a thread supersedes this approach. Since the \code{main} routine is already a special routine in \CFA (where the program begins), it is a natural extension of the semantics to use overloading to declare mains for different threads (the normal main being the main of the initial thread). As such the \code{main} routine of a thread can be defined as
-\begin{cfacode}
+\end{cfa}
+
+Obviously, for this thread implementation to be useful it must run some user code.
+Several other threading interfaces use a function-pointer representation as the interface of threads (for example \Csharp~\cite{Csharp} and Scala~\cite{Scala}).
+However, this proposal considers that statically tying a @main@ routine to a thread supersedes this approach.
+Since the @main@ routine is already a special routine in \CFA (where the program begins), it is a natural extension of the semantics to use overloading to declare mains for different threads (the normal main being the main of the initial thread).
+As such the @main@ routine of a thread can be defined as
+\begin{cfa}
 thread foo {};
 
@@ -658,8 +967,9 @@
 	sout | "Hello World!" | endl;
 }
-\end{cfacode}
-
-In this example, threads of type \code{foo} start execution in the \code{void main(foo &)} routine, which prints \code{"Hello World!".} While this paper encourages this approach to enforce strongly typed programming, users may prefer to use the routine-based thread semantics for the sake of simplicity. With the static semantics it is trivial to write a thread type that takes a function pointer as a parameter and executes it on its stack asynchronously.
-\begin{cfacode}
+\end{cfa}
+
+In this example, threads of type @foo@ start execution in the @void main(foo &)@ routine, which prints @"Hello World!".@ While this paper encourages this approach to enforce strongly typed programming, users may prefer to use the routine-based thread semantics for the sake of simplicity.
+With the static semantics it is trivial to write a thread type that takes a function pointer as a parameter and executes it on its stack asynchronously.
+\begin{cfa}
 typedef void (*voidFunc)(int);
 
@@ -675,5 +985,5 @@
 
 void main(FuncRunner & this) {
-	//thread starts here and runs the function
+	// thread starts here and runs the function
 	this.func( this.arg );
 }
@@ -687,10 +997,12 @@
 	return 0?
 }
-\end{cfacode}
+\end{cfa}
 
 A consequence of the strongly typed approach to main is that memory layout of parameters and return values to/from a thread are now explicitly specified in the \textbf{api}.
 
-Of course, for threads to be useful, it must be possible to start and stop threads and wait for them to complete execution. While using an \textbf{api} such as \code{fork} and \code{join} is relatively common in the literature, such an interface is unnecessary. Indeed, the simplest approach is to use \textbf{raii} principles and have threads \code{fork} after the constructor has completed and \code{join} before the destructor runs.
-\begin{cfacode}
+Of course, for threads to be useful, it must be possible to start and stop threads and wait for them to complete execution.
+While using an \textbf{api} such as @fork@ and @join@ is relatively common in the literature, such an interface is unnecessary.
+Indeed, the simplest approach is to use \textbf{raii} principles and have threads @fork@ after the constructor has completed and @join@ before the destructor runs.
+\begin{cfa}
 thread World;
 
@@ -701,21 +1013,21 @@
 void main() {
 	World w;
-	//Thread forks here
-
-	//Printing "Hello " and "World!" are run concurrently
+	// Thread forks here
+
+	// Printing "Hello " and "World!" are run concurrently
 	sout | "Hello " | endl;
 
-	//Implicit join at end of scope
-}
-\end{cfacode}
+	// Implicit join at end of scope
+}
+\end{cfa}
 
 This semantic has several advantages over explicit semantics: a thread is always started and stopped exactly once, users cannot make any programming errors, and it naturally scales to multiple threads meaning basic synchronization is very simple.
 
-\begin{cfacode}
+\begin{cfa}
 thread MyThread {
 	//...
 };
 
-//main
+// main
 void main(MyThread& this) {
 	//...
@@ -724,15 +1036,16 @@
 void foo() {
 	MyThread thrds[10];
-	//Start 10 threads at the beginning of the scope
+	// Start 10 threads at the beginning of the scope
 
 	DoStuff();
 
-	//Wait for the 10 threads to finish
-}
-\end{cfacode}
-
-However, one of the drawbacks of this approach is that threads always form a tree where nodes must always outlive their children, i.e., they are always destroyed in the opposite order of construction because of C scoping rules. This restriction is relaxed by using dynamic allocation, so threads can outlive the scope in which they are created, much like dynamically allocating memory lets objects outlive the scope in which they are created.
-
-\begin{cfacode}
+	// Wait for the 10 threads to finish
+}
+\end{cfa}
+
+However, one of the drawbacks of this approach is that threads always form a tree where nodes must always outlive their children, \ie they are always destroyed in the opposite order of construction because of C scoping rules.
+This restriction is relaxed by using dynamic allocation, so threads can outlive the scope in which they are created, much like dynamically allocating memory lets objects outlive the scope in which they are created.
+
+\begin{cfa}
 thread MyThread {
 	//...
@@ -746,20 +1059,20 @@
 	MyThread* long_lived;
 	{
-		//Start a thread at the beginning of the scope
+		// Start a thread at the beginning of the scope
 		MyThread short_lived;
 
-		//create another thread that will outlive the thread in this scope
+		// create another thread that will outlive the thread in this scope
 		long_lived = new MyThread;
 
 		DoStuff();
 
-		//Wait for the thread short_lived to finish
+		// Wait for the thread short_lived to finish
 	}
 	DoMoreStuff();
 
-	//Now wait for the long_lived to finish
+	// Now wait for the long_lived to finish
 	delete long_lived;
 }
-\end{cfacode}
+\end{cfa}
 
 
@@ -769,20 +1082,59 @@
 % ======================================================================
 % ======================================================================
-Several tools can be used to solve concurrency challenges. Since many of these challenges appear with the use of mutable shared state, some languages and libraries simply disallow mutable shared state (Erlang~\cite{Erlang}, Haskell~\cite{Haskell}, Akka (Scala)~\cite{Akka}). In these paradigms, interaction among concurrent objects relies on message passing~\cite{Thoth,Harmony,V-Kernel} or other paradigms closely relate to networking concepts (channels~\cite{CSP,Go} for example). However, in languages that use routine calls as their core abstraction mechanism, these approaches force a clear distinction between concurrent and non-concurrent paradigms (i.e., message passing versus routine calls). This distinction in turn means that, in order to be effective, programmers need to learn two sets of design patterns. While this distinction can be hidden away in library code, effective use of the library still has to take both paradigms into account.
-
-Approaches based on shared memory are more closely related to non-concurrent paradigms since they often rely on basic constructs like routine calls and shared objects. At the lowest level, concurrent paradigms are implemented as atomic operations and locks. Many such mechanisms have been proposed, including semaphores~\cite{Dijkstra68b} and path expressions~\cite{Campbell74}. However, for productivity reasons it is desirable to have a higher-level construct be the core concurrency paradigm~\cite{HPP:Study}.
-
-An approach that is worth mentioning because it is gaining in popularity is transactional memory~\cite{Herlihy93}. While this approach is even pursued by system languages like \CC~\cite{Cpp-Transactions}, the performance and feature set is currently too restrictive to be the main concurrency paradigm for system languages, which is why it was rejected as the core paradigm for concurrency in \CFA.
-
-One of the most natural, elegant, and efficient mechanisms for synchronization and communication, especially for shared-memory systems, is the \emph{monitor}. Monitors were first proposed by Brinch Hansen~\cite{Hansen73} and later described and extended by C.A.R.~Hoare~\cite{Hoare74}. Many programming languages---e.g., Concurrent Pascal~\cite{ConcurrentPascal}, Mesa~\cite{Mesa}, Modula~\cite{Modula-2}, Turing~\cite{Turing:old}, Modula-3~\cite{Modula-3}, NeWS~\cite{NeWS}, Emerald~\cite{Emerald}, \uC~\cite{Buhr92a} and Java~\cite{Java}---provide monitors as explicit language constructs. In addition, operating-system kernels and device drivers have a monitor-like structure, although they often use lower-level primitives such as semaphores or locks to simulate monitors. For these reasons, this project proposes monitors as the core concurrency construct.
-
-\section{Basics}
-Non-determinism requires concurrent systems to offer support for mutual-exclusion and synchronization. Mutual-exclusion is the concept that only a fixed number of threads can access a critical section at any given time, where a critical section is a group of instructions on an associated portion of data that requires the restricted access. On the other hand, synchronization enforces relative ordering of execution and synchronization tools provide numerous mechanisms to establish timing relationships among threads.
-
-\subsection{Mutual-Exclusion}
-As mentioned above, mutual-exclusion is the guarantee that only a fix number of threads can enter a critical section at once. However, many solutions exist for mutual exclusion, which vary in terms of performance, flexibility and ease of use. Methods range from low-level locks, which are fast and flexible but require significant attention to be correct, to  higher-level concurrency techniques, which sacrifice some performance in order to improve ease of use. Ease of use comes by either guaranteeing some problems cannot occur (e.g., being deadlock free) or by offering a more explicit coupling between data and corresponding critical section. For example, the \CC \code{std::atomic<T>} offers an easy way to express mutual-exclusion on a restricted set of operations (e.g., reading/writing large types atomically). Another challenge with low-level locks is composability. Locks have restricted composability because it takes careful organizing for multiple locks to be used while preventing deadlocks. Easing composability is another feature higher-level mutual-exclusion mechanisms often offer.
-
-\subsection{Synchronization}
-As with mutual-exclusion, low-level synchronization primitives often offer good performance and good flexibility at the cost of ease of use. Again, higher-level mechanisms often simplify usage by adding either better coupling between synchronization and data (e.g., message passing) or offering a simpler solution to otherwise involved challenges. As mentioned above, synchronization can be expressed as guaranteeing that event \textit{X} always happens before \textit{Y}. Most of the time, synchronization happens within a critical section, where threads must acquire mutual-exclusion in a certain order. However, it may also be desirable to guarantee that event \textit{Z} does not occur between \textit{X} and \textit{Y}. Not satisfying this property is called \textbf{barging}. For example, where event \textit{X} tries to effect event \textit{Y} but another thread acquires the critical section and emits \textit{Z} before \textit{Y}. The classic example is the thread that finishes using a resource and unblocks a thread waiting to use the resource, but the unblocked thread must compete to acquire the resource. Preventing or detecting barging is an involved challenge with low-level locks, which can be made much easier by higher-level constructs. This challenge is often split into two different methods, barging avoidance and barging prevention. Algorithms that use flag variables to detect barging threads are said to be using barging avoidance, while algorithms that baton-pass locks~\cite{Andrews89} between threads instead of releasing the locks are said to be using barging prevention.
+Several tools can be used to solve concurrency challenges.
+Since many of these challenges appear with the use of mutable shared state, some languages and libraries simply disallow mutable shared state (Erlang~\cite{Erlang}, Haskell~\cite{Haskell}, Akka (Scala)~\cite{Akka}).
+In these paradigms, interaction among concurrent objects relies on message passing~\cite{Thoth,Harmony,V-Kernel} or other paradigms closely relate to networking concepts (channels~\cite{CSP,Go} for example).
+However, in languages that use routine calls as their core abstraction mechanism, these approaches force a clear distinction between concurrent and non-concurrent paradigms (\ie message passing versus routine calls).
+This distinction in turn means that, in order to be effective, programmers need to learn two sets of design patterns.
+While this distinction can be hidden away in library code, effective use of the library still has to take both paradigms into account.
+
+Approaches based on shared memory are more closely related to non-concurrent paradigms since they often rely on basic constructs like routine calls and shared objects.
+At the lowest level, concurrent paradigms are implemented as atomic operations and locks.
+Many such mechanisms have been proposed, including semaphores~\cite{Dijkstra68b} and path expressions~\cite{Campbell74}.
+However, for productivity reasons it is desirable to have a higher-level construct be the core concurrency paradigm~\cite{Hochstein05}.
+
+An approach that is worth mentioning because it is gaining in popularity is transactional memory~\cite{Herlihy93}.
+While this approach is even pursued by system languages like \CC~\cite{Cpp-Transactions}, the performance and feature set is currently too restrictive to be the main concurrency paradigm for system languages, which is why it was rejected as the core paradigm for concurrency in \CFA.
+
+One of the most natural, elegant, and efficient mechanisms for synchronization and communication, especially for shared-memory systems, is the \emph{monitor}.
+Monitors were first proposed by Brinch Hansen~\cite{Hansen73} and later described and extended by C.A.R.~Hoare~\cite{Hoare74}.
+Many programming languages---\eg Concurrent Pascal~\cite{ConcurrentPascal}, Mesa~\cite{Mesa}, Modula~\cite{Modula-2}, Turing~\cite{Turing:old}, Modula-3~\cite{Modula-3}, NeWS~\cite{NeWS}, Emerald~\cite{Emerald}, \uC~\cite{Buhr92a} and Java~\cite{Java}---provide monitors as explicit language constructs.
+In addition, operating-system kernels and device drivers have a monitor-like structure, although they often use lower-level primitives such as semaphores or locks to simulate monitors.
+For these reasons, this project proposes monitors as the core concurrency construct.
+
+
+\subsection{Basics}
+
+Non-determinism requires concurrent systems to offer support for mutual-exclusion and synchronization.
+Mutual-exclusion is the concept that only a fixed number of threads can access a critical section at any given time, where a critical section is a group of instructions on an associated portion of data that requires the restricted access.
+On the other hand, synchronization enforces relative ordering of execution and synchronization tools provide numerous mechanisms to establish timing relationships among threads.
+
+
+\subsubsection{Mutual-Exclusion}
+
+As mentioned above, mutual-exclusion is the guarantee that only a fix number of threads can enter a critical section at once.
+However, many solutions exist for mutual exclusion, which vary in terms of performance, flexibility and ease of use.
+Methods range from low-level locks, which are fast and flexible but require significant attention to be correct, to  higher-level concurrency techniques, which sacrifice some performance in order to improve ease of use.
+Ease of use comes by either guaranteeing some problems cannot occur (\eg being deadlock free) or by offering a more explicit coupling between data and corresponding critical section.
+For example, the \CC @std::atomic<T>@ offers an easy way to express mutual-exclusion on a restricted set of operations (\eg reading/writing large types atomically).
+Another challenge with low-level locks is composability.
+Locks have restricted composability because it takes careful organizing for multiple locks to be used while preventing deadlocks.
+Easing composability is another feature higher-level mutual-exclusion mechanisms often offer.
+
+
+\subsubsection{Synchronization}
+
+As with mutual-exclusion, low-level synchronization primitives often offer good performance and good flexibility at the cost of ease of use.
+Again, higher-level mechanisms often simplify usage by adding either better coupling between synchronization and data (\eg message passing) or offering a simpler solution to otherwise involved challenges.
+As mentioned above, synchronization can be expressed as guaranteeing that event \textit{X} always happens before \textit{Y}.
+Most of the time, synchronization happens within a critical section, where threads must acquire mutual-exclusion in a certain order.
+However, it may also be desirable to guarantee that event \textit{Z} does not occur between \textit{X} and \textit{Y}.
+Not satisfying this property is called \textbf{barging}.
+For example, where event \textit{X} tries to effect event \textit{Y} but another thread acquires the critical section and emits \textit{Z} before \textit{Y}.
+The classic example is the thread that finishes using a resource and unblocks a thread waiting to use the resource, but the unblocked thread must compete to acquire the resource.
+Preventing or detecting barging is an involved challenge with low-level locks, which can be made much easier by higher-level constructs.
+This challenge is often split into two different methods, barging avoidance and barging prevention.
+Algorithms that use flag variables to detect barging threads are said to be using barging avoidance, while algorithms that baton-pass locks~\cite{Andrews89} between threads instead of releasing the locks are said to be using barging prevention.
+
 
 % ======================================================================
@@ -791,14 +1143,19 @@
 % ======================================================================
 % ======================================================================
-A \textbf{monitor} is a set of routines that ensure mutual-exclusion when accessing shared state. More precisely, a monitor is a programming technique that associates mutual-exclusion to routine scopes, as opposed to mutex locks, where mutual-exclusion is defined by lock/release calls independently of any scoping of the calling routine. This strong association eases readability and maintainability, at the cost of flexibility. Note that both monitors and mutex locks, require an abstract handle to identify them. This concept is generally associated with object-oriented languages like Java~\cite{Java} or \uC~\cite{uC++book} but does not strictly require OO semantics. The only requirement is the ability to declare a handle to a shared object and a set of routines that act on it:
-\begin{cfacode}
+A \textbf{monitor} is a set of routines that ensure mutual-exclusion when accessing shared state.
+More precisely, a monitor is a programming technique that associates mutual-exclusion to routine scopes, as opposed to mutex locks, where mutual-exclusion is defined by lock/release calls independently of any scoping of the calling routine.
+This strong association eases readability and maintainability, at the cost of flexibility.
+Note that both monitors and mutex locks, require an abstract handle to identify them.
+This concept is generally associated with object-oriented languages like Java~\cite{Java} or \uC~\cite{uC++book} but does not strictly require OO semantics.
+The only requirement is the ability to declare a handle to a shared object and a set of routines that act on it:
+\begin{cfa}
 typedef /*some monitor type*/ monitor;
 int f(monitor & m);
 
 int main() {
-	monitor m;  //Handle m
-	f(m);       //Routine using handle
-}
-\end{cfacode}
+	monitor m;  // Handle m
+	f(m);       // Routine using handle
+}
+\end{cfa}
 
 % ======================================================================
@@ -807,25 +1164,30 @@
 % ======================================================================
 % ======================================================================
-The above monitor example displays some of the intrinsic characteristics. First, it is necessary to use pass-by-reference over pass-by-value for monitor routines. This semantics is important, because at their core, monitors are implicit mutual-exclusion objects (locks), and these objects cannot be copied. Therefore, monitors are non-copy-able objects (\code{dtype}).
-
-Another aspect to consider is when a monitor acquires its mutual exclusion. For example, a monitor may need to be passed through multiple helper routines that do not acquire the monitor mutual-exclusion on entry. Passthrough can occur for generic helper routines (\code{swap}, \code{sort}, etc.) or specific helper routines like the following to implement an atomic counter:
-
-\begin{cfacode}
+The above monitor example displays some of the intrinsic characteristics.
+First, it is necessary to use pass-by-reference over pass-by-value for monitor routines.
+This semantics is important, because at their core, monitors are implicit mutual-exclusion objects (locks), and these objects cannot be copied.
+Therefore, monitors are non-copy-able objects (@dtype@).
+
+Another aspect to consider is when a monitor acquires its mutual exclusion.
+For example, a monitor may need to be passed through multiple helper routines that do not acquire the monitor mutual-exclusion on entry.
+Passthrough can occur for generic helper routines (@swap@, @sort@, \etc) or specific helper routines like the following to implement an atomic counter:
+
+\begin{cfa}
 monitor counter_t { /*...see section $\ref{data}$...*/ };
 
-void ?{}(counter_t & nomutex this); //constructor
-size_t ++?(counter_t & mutex this); //increment
-
-//need for mutex is platform dependent
-void ?{}(size_t * this, counter_t & mutex cnt); //conversion
-\end{cfacode}
+void ?{}(counter_t & nomutex this); // constructor
+size_t ++?(counter_t & mutex this); // increment
+
+// need for mutex is platform dependent
+void ?{}(size_t * this, counter_t & mutex cnt); // conversion
+\end{cfa}
 This counter is used as follows:
 \begin{center}
 \begin{tabular}{c @{\hskip 0.35in} c @{\hskip 0.35in} c}
-\begin{cfacode}
-//shared counter
+\begin{cfa}
+// shared counter
 counter_t cnt1, cnt2;
 
-//multiple threads access counter
+// multiple threads access counter
 thread 1 : cnt1++; cnt2++;
 thread 2 : cnt1++; cnt2++;
@@ -833,14 +1195,20 @@
 	...
 thread N : cnt1++; cnt2++;
-\end{cfacode}
+\end{cfa}
 \end{tabular}
 \end{center}
-Notice how the counter is used without any explicit synchronization and yet supports thread-safe semantics for both reading and writing, which is similar in usage to the \CC template \code{std::atomic}.
-
-Here, the constructor (\code{?\{\}}) uses the \code{nomutex} keyword to signify that it does not acquire the monitor mutual-exclusion when constructing. This semantics is because an object not yet con\-structed should never be shared and therefore does not require mutual exclusion. Furthermore, it allows the implementation greater freedom when it initializes the monitor locking. The prefix increment operator uses \code{mutex} to protect the incrementing process from race conditions. Finally, there is a conversion operator from \code{counter_t} to \code{size_t}. This conversion may or may not require the \code{mutex} keyword depending on whether or not reading a \code{size_t} is an atomic operation.
-
-For maximum usability, monitors use \textbf{multi-acq} semantics, which means a single thread can acquire the same monitor multiple times without deadlock. For example, listing \ref{fig:search} uses recursion and \textbf{multi-acq} to print values inside a binary tree.
+Notice how the counter is used without any explicit synchronization and yet supports thread-safe semantics for both reading and writing, which is similar in usage to the \CC template @std::atomic@.
+
+Here, the constructor (@?{}@) uses the @nomutex@ keyword to signify that it does not acquire the monitor mutual-exclusion when constructing.
+This semantics is because an object not yet constructed should never be shared and therefore does not require mutual exclusion.
+Furthermore, it allows the implementation greater freedom when it initializes the monitor locking.
+The prefix increment operator uses @mutex@ to protect the incrementing process from race conditions.
+Finally, there is a conversion operator from @counter_t@ to @size_t@.
+This conversion may or may not require the @mutex@ keyword depending on whether or not reading a @size_t@ is an atomic operation.
+
+For maximum usability, monitors use \textbf{multi-acq} semantics, which means a single thread can acquire the same monitor multiple times without deadlock.
+For example, listing \ref{fig:search} uses recursion and \textbf{multi-acq} to print values inside a binary tree.
 \begin{figure}
-\begin{cfacode}[caption={Recursive printing algorithm using \textbf{multi-acq}.},label={fig:search}]
+\begin{cfa}[caption={Recursive printing algorithm using \textbf{multi-acq}.},label={fig:search}]
 monitor printer { ... };
 struct tree {
@@ -855,11 +1223,20 @@
 	print(p, t->right);
 }
-\end{cfacode}
+\end{cfa}
 \end{figure}
 
-Having both \code{mutex} and \code{nomutex} keywords can be redundant, depending on the meaning of a routine having neither of these keywords. For example, it is reasonable that it should default to the safest option (\code{mutex}) when given a routine without qualifiers \code{void foo(counter_t & this)}, whereas assuming \code{nomutex} is unsafe and may cause subtle errors. On the other hand, \code{nomutex} is the ``normal'' parameter behaviour, it effectively states explicitly that ``this routine is not special''. Another alternative is making exactly one of these keywords mandatory, which provides the same semantics but without the ambiguity of supporting routines with neither keyword. Mandatory keywords would also have the added benefit of being self-documented but at the cost of extra typing. While there are several benefits to mandatory keywords, they do bring a few challenges. Mandatory keywords in \CFA would imply that the compiler must know without doubt whether or not a parameter is a monitor or not. Since \CFA relies heavily on traits as an abstraction mechanism, the distinction between a type that is a monitor and a type that looks like a monitor can become blurred. For this reason, \CFA only has the \code{mutex} keyword and uses no keyword to mean \code{nomutex}.
-
-The next semantic decision is to establish when \code{mutex} may be used as a type qualifier. Consider the following declarations:
-\begin{cfacode}
+Having both @mutex@ and @nomutex@ keywords can be redundant, depending on the meaning of a routine having neither of these keywords.
+For example, it is reasonable that it should default to the safest option (@mutex@) when given a routine without qualifiers @void foo(counter_t & this)@, whereas assuming @nomutex@ is unsafe and may cause subtle errors.
+On the other hand, @nomutex@ is the ``normal'' parameter behaviour, it effectively states explicitly that ``this routine is not special''.
+Another alternative is making exactly one of these keywords mandatory, which provides the same semantics but without the ambiguity of supporting routines with neither keyword.
+Mandatory keywords would also have the added benefit of being self-documented but at the cost of extra typing.
+While there are several benefits to mandatory keywords, they do bring a few challenges.
+Mandatory keywords in \CFA would imply that the compiler must know without doubt whether or not a parameter is a monitor or not.
+Since \CFA relies heavily on traits as an abstraction mechanism, the distinction between a type that is a monitor and a type that looks like a monitor can become blurred.
+For this reason, \CFA only has the @mutex@ keyword and uses no keyword to mean @nomutex@.
+
+The next semantic decision is to establish when @mutex@ may be used as a type qualifier.
+Consider the following declarations:
+\begin{cfa}
 int f1(monitor & mutex m);
 int f2(const monitor & mutex m);
@@ -867,17 +1244,29 @@
 int f4(monitor * mutex m []);
 int f5(graph(monitor *) & mutex m);
-\end{cfacode}
-The problem is to identify which object(s) should be acquired. Furthermore, each object needs to be acquired only once. In the case of simple routines like \code{f1} and \code{f2} it is easy to identify an exhaustive list of objects to acquire on entry. Adding indirections (\code{f3}) still allows the compiler and programmer to identify which object is acquired. However, adding in arrays (\code{f4}) makes it much harder. Array lengths are not necessarily known in C, and even then, making sure objects are only acquired once becomes none-trivial. This problem can be extended to absurd limits like \code{f5}, which uses a graph of monitors. To make the issue tractable, this project imposes the requirement that a routine may only acquire one monitor per parameter and it must be the type of the parameter with at most one level of indirection (ignoring potential qualifiers). Also note that while routine \code{f3} can be supported, meaning that monitor \code{**m} is acquired, passing an array to this routine would be type-safe and yet result in undefined behaviour because only the first element of the array is acquired. However, this ambiguity is part of the C type-system with respects to arrays. For this reason, \code{mutex} is disallowed in the context where arrays may be passed:
-\begin{cfacode}
-int f1(monitor & mutex m);    //Okay : recommended case
-int f2(monitor * mutex m);    //Not Okay : Could be an array
-int f3(monitor mutex m []);  //Not Okay : Array of unknown length
-int f4(monitor ** mutex m);   //Not Okay : Could be an array
-int f5(monitor * mutex m []); //Not Okay : Array of unknown length
-\end{cfacode}
-Note that not all array functions are actually distinct in the type system. However, even if the code generation could tell the difference, the extra information is still not sufficient to extend meaningfully the monitor call semantic.
-
-Unlike object-oriented monitors, where calling a mutex member \emph{implicitly} acquires mutual-exclusion of the receiver object, \CFA uses an explicit mechanism to specify the object that acquires mutual-exclusion. A consequence of this approach is that it extends naturally to multi-monitor calls.
-\begin{cfacode}
+\end{cfa}
+The problem is to identify which object(s) should be acquired.
+Furthermore, each object needs to be acquired only once.
+In the case of simple routines like @f1@ and @f2@ it is easy to identify an exhaustive list of objects to acquire on entry.
+Adding indirections (@f3@) still allows the compiler and programmer to identify which object is acquired.
+However, adding in arrays (@f4@) makes it much harder.
+Array lengths are not necessarily known in C, and even then, making sure objects are only acquired once becomes none-trivial.
+This problem can be extended to absurd limits like @f5@, which uses a graph of monitors.
+To make the issue tractable, this project imposes the requirement that a routine may only acquire one monitor per parameter and it must be the type of the parameter with at most one level of indirection (ignoring potential qualifiers).
+Also note that while routine @f3@ can be supported, meaning that monitor @**m@ is acquired, passing an array to this routine would be type-safe and yet result in undefined behaviour because only the first element of the array is acquired.
+However, this ambiguity is part of the C type-system with respects to arrays.
+For this reason, @mutex@ is disallowed in the context where arrays may be passed:
+\begin{cfa}
+int f1(monitor & mutex m);    // Okay : recommended case
+int f2(monitor * mutex m);    // Not Okay : Could be an array
+int f3(monitor mutex m []);  // Not Okay : Array of unknown length
+int f4(monitor ** mutex m);   // Not Okay : Could be an array
+int f5(monitor * mutex m []); // Not Okay : Array of unknown length
+\end{cfa}
+Note that not all array functions are actually distinct in the type system.
+However, even if the code generation could tell the difference, the extra information is still not sufficient to extend meaningfully the monitor call semantic.
+
+Unlike object-oriented monitors, where calling a mutex member \emph{implicitly} acquires mutual-exclusion of the receiver object, \CFA uses an explicit mechanism to specify the object that acquires mutual-exclusion.
+A consequence of this approach is that it extends naturally to multi-monitor calls.
+\begin{cfa}
 int f(MonitorA & mutex a, MonitorB & mutex b);
 
@@ -885,30 +1274,43 @@
 MonitorB b;
 f(a,b);
-\end{cfacode}
-While OO monitors could be extended with a mutex qualifier for multiple-monitor calls, no example of this feature could be found. The capability to acquire multiple locks before entering a critical section is called \emph{\textbf{bulk-acq}}. In practice, writing multi-locking routines that do not lead to deadlocks is tricky. Having language support for such a feature is therefore a significant asset for \CFA. In the case presented above, \CFA guarantees that the order of acquisition is consistent across calls to different routines using the same monitors as arguments. This consistent ordering means acquiring multiple monitors is safe from deadlock when using \textbf{bulk-acq}. However, users can still force the acquiring order. For example, notice which routines use \code{mutex}/\code{nomutex} and how this affects acquiring order:
-\begin{cfacode}
-void foo(A& mutex a, B& mutex b) { //acquire a & b
+\end{cfa}
+While OO monitors could be extended with a mutex qualifier for multiple-monitor calls, no example of this feature could be found.
+The capability to acquire multiple locks before entering a critical section is called \emph{\textbf{bulk-acq}}.
+In practice, writing multi-locking routines that do not lead to deadlocks is tricky.
+Having language support for such a feature is therefore a significant asset for \CFA.
+In the case presented above, \CFA guarantees that the order of acquisition is consistent across calls to different routines using the same monitors as arguments.
+This consistent ordering means acquiring multiple monitors is safe from deadlock when using \textbf{bulk-acq}.
+However, users can still force the acquiring order.
+For example, notice which routines use @mutex@/@nomutex@ and how this affects acquiring order:
+\begin{cfa}
+void foo(A& mutex a, B& mutex b) { // acquire a & b
 	...
 }
 
-void bar(A& mutex a, B& /*nomutex*/ b) { //acquire a
-	... foo(a, b); ... //acquire b
-}
-
-void baz(A& /*nomutex*/ a, B& mutex b) { //acquire b
-	... foo(a, b); ... //acquire a
-}
-\end{cfacode}
-The \textbf{multi-acq} monitor lock allows a monitor lock to be acquired by both \code{bar} or \code{baz} and acquired again in \code{foo}. In the calls to \code{bar} and \code{baz} the monitors are acquired in opposite order.
-
-However, such use leads to lock acquiring order problems. In the example above, the user uses implicit ordering in the case of function \code{foo} but explicit ordering in the case of \code{bar} and \code{baz}. This subtle difference means that calling these routines concurrently may lead to deadlock and is therefore undefined behaviour. As shown~\cite{Lister77}, solving this problem requires:
+void bar(A& mutex a, B& /*nomutex*/ b) { // acquire a
+	... foo(a, b); ... // acquire b
+}
+
+void baz(A& /*nomutex*/ a, B& mutex b) { // acquire b
+	... foo(a, b); ... // acquire a
+}
+\end{cfa}
+The \textbf{multi-acq} monitor lock allows a monitor lock to be acquired by both @bar@ or @baz@ and acquired again in @foo@.
+In the calls to @bar@ and @baz@ the monitors are acquired in opposite order.
+
+However, such use leads to lock acquiring order problems.
+In the example above, the user uses implicit ordering in the case of function @foo@ but explicit ordering in the case of @bar@ and @baz@.
+This subtle difference means that calling these routines concurrently may lead to deadlock and is therefore undefined behaviour.
+As shown~\cite{Lister77}, solving this problem requires:
 \begin{enumerate}
 	\item Dynamically tracking the monitor-call order.
 	\item Implement rollback semantics.
 \end{enumerate}
-While the first requirement is already a significant constraint on the system, implementing a general rollback semantics in a C-like language is still prohibitively complex~\cite{Dice10}. In \CFA, users simply need to be careful when acquiring multiple monitors at the same time or only use \textbf{bulk-acq} of all the monitors. While \CFA provides only a partial solution, most systems provide no solution and the \CFA partial solution handles many useful cases.
+While the first requirement is already a significant constraint on the system, implementing a general rollback semantics in a C-like language is still prohibitively complex~\cite{Dice10}.
+In \CFA, users simply need to be careful when acquiring multiple monitors at the same time or only use \textbf{bulk-acq} of all the monitors.
+While \CFA provides only a partial solution, most systems provide no solution and the \CFA partial solution handles many useful cases.
 
 For example, \textbf{multi-acq} and \textbf{bulk-acq} can be used together in interesting ways:
-\begin{cfacode}
+\begin{cfa}
 monitor bank { ... };
 
@@ -919,20 +1321,24 @@
 	deposit( yourbank, me2you );
 }
-\end{cfacode}
-This example shows a trivial solution to the bank-account transfer problem~\cite{BankTransfer}. Without \textbf{multi-acq} and \textbf{bulk-acq}, the solution to this problem is much more involved and requires careful engineering.
-
-\subsection{\code{mutex} statement} \label{mutex-stmt}
-
-The call semantics discussed above have one software engineering issue: only a routine can acquire the mutual-exclusion of a set of monitor. \CFA offers the \code{mutex} statement to work around the need for unnecessary names, avoiding a major software engineering problem~\cite{2FTwoHardThings}. Table \ref{lst:mutex-stmt} shows an example of the \code{mutex} statement, which introduces a new scope in which the mutual-exclusion of a set of monitor is acquired. Beyond naming, the \code{mutex} statement has no semantic difference from a routine call with \code{mutex} parameters.
+\end{cfa}
+This example shows a trivial solution to the bank-account transfer problem~\cite{BankTransfer}.
+Without \textbf{multi-acq} and \textbf{bulk-acq}, the solution to this problem is much more involved and requires careful engineering.
+
+
+\subsection{\protect\lstinline|mutex| statement} \label{mutex-stmt}
+
+The call semantics discussed above have one software engineering issue: only a routine can acquire the mutual-exclusion of a set of monitor. \CFA offers the @mutex@ statement to work around the need for unnecessary names, avoiding a major software engineering problem~\cite{2FTwoHardThings}.
+Table \ref{f:mutex-stmt} shows an example of the @mutex@ statement, which introduces a new scope in which the mutual-exclusion of a set of monitor is acquired.
+Beyond naming, the @mutex@ statement has no semantic difference from a routine call with @mutex@ parameters.
 
 \begin{table}
 \begin{center}
 \begin{tabular}{|c|c|}
-function call & \code{mutex} statement \\
+function call & @mutex@ statement \\
 \hline
-\begin{cfacode}[tabsize=3]
+\begin{cfa}[tabsize=3]
 monitor M {};
 void foo( M & mutex m1, M & mutex m2 ) {
-	//critical section
+	// critical section
 }
 
@@ -940,18 +1346,18 @@
 	foo( m1, m2 );
 }
-\end{cfacode}&\begin{cfacode}[tabsize=3]
+\end{cfa}&\begin{cfa}[tabsize=3]
 monitor M {};
 void bar( M & m1, M & m2 ) {
 	mutex(m1, m2) {
-		//critical section
+		// critical section
 	}
 }
 
 
-\end{cfacode}
+\end{cfa}
 \end{tabular}
 \end{center}
-\caption{Regular call semantics vs. \code{mutex} statement}
-\label{lst:mutex-stmt}
+\caption{Regular call semantics vs. \protect\lstinline|mutex| statement}
+\label{f:mutex-stmt}
 \end{table}
 
@@ -961,6 +1367,9 @@
 % ======================================================================
 % ======================================================================
-Once the call semantics are established, the next step is to establish data semantics. Indeed, until now a monitor is used simply as a generic handle but in most cases monitors contain shared data. This data should be intrinsic to the monitor declaration to prevent any accidental use of data without its appropriate protection. For example, here is a complete version of the counter shown in section \ref{call}:
-\begin{cfacode}
+Once the call semantics are established, the next step is to establish data semantics.
+Indeed, until now a monitor is used simply as a generic handle but in most cases monitors contain shared data.
+This data should be intrinsic to the monitor declaration to prevent any accidental use of data without its appropriate protection.
+For example, here is a complete version of the counter shown in section \ref{call}:
+\begin{cfa}
 monitor counter_t {
 	int value;
@@ -975,18 +1384,20 @@
 }
 
-//need for mutex is platform dependent here
+// need for mutex is platform dependent here
 void ?{}(int * this, counter_t & mutex cnt) {
 	*this = (int)cnt;
 }
-\end{cfacode}
-
-Like threads and coroutines, monitors are defined in terms of traits with some additional language support in the form of the \code{monitor} keyword. The monitor trait is:
-\begin{cfacode}
+\end{cfa}
+
+Like threads and coroutines, monitors are defined in terms of traits with some additional language support in the form of the @monitor@ keyword.
+The monitor trait is:
+\begin{cfa}
 trait is_monitor(dtype T) {
 	monitor_desc * get_monitor( T & );
 	void ^?{}( T & mutex );
 };
-\end{cfacode}
-Note that the destructor of a monitor must be a \code{mutex} routine to prevent deallocation while a thread is accessing the monitor. As with any object, calls to a monitor, using \code{mutex} or otherwise, is undefined behaviour after the destructor has run.
+\end{cfa}
+Note that the destructor of a monitor must be a @mutex@ routine to prevent deallocation while a thread is accessing the monitor.
+As with any object, calls to a monitor, using @mutex@ or otherwise, is undefined behaviour after the destructor has run.
 
 % ======================================================================
@@ -995,9 +1406,13 @@
 % ======================================================================
 % ======================================================================
-In addition to mutual exclusion, the monitors at the core of \CFA's concurrency can also be used to achieve synchronization. With monitors, this capability is generally achieved with internal or external scheduling as in~\cite{Hoare74}. With \textbf{scheduling} loosely defined as deciding which thread acquires the critical section next, \textbf{internal scheduling} means making the decision from inside the critical section (i.e., with access to the shared state), while \textbf{external scheduling} means making the decision when entering the critical section (i.e., without access to the shared state). Since internal scheduling within a single monitor is mostly a solved problem, this paper concentrates on extending internal scheduling to multiple monitors. Indeed, like the \textbf{bulk-acq} semantics, internal scheduling extends to multiple monitors in a way that is natural to the user but requires additional complexity on the implementation side.
+In addition to mutual exclusion, the monitors at the core of \CFA's concurrency can also be used to achieve synchronization.
+With monitors, this capability is generally achieved with internal or external scheduling as in~\cite{Hoare74}.
+With \textbf{scheduling} loosely defined as deciding which thread acquires the critical section next, \textbf{internal scheduling} means making the decision from inside the critical section (\ie with access to the shared state), while \textbf{external scheduling} means making the decision when entering the critical section (\ie without access to the shared state).
+Since internal scheduling within a single monitor is mostly a solved problem, this paper concentrates on extending internal scheduling to multiple monitors.
+Indeed, like the \textbf{bulk-acq} semantics, internal scheduling extends to multiple monitors in a way that is natural to the user but requires additional complexity on the implementation side.
 
 First, here is a simple example of internal scheduling:
 
-\begin{cfacode}
+\begin{cfa}
 monitor A {
 	condition e;
@@ -1006,5 +1421,5 @@
 void foo(A& mutex a1, A& mutex a2) {
 	...
-	//Wait for cooperation from bar()
+	// Wait for cooperation from bar()
 	wait(a1.e);
 	...
@@ -1012,13 +1427,21 @@
 
 void bar(A& mutex a1, A& mutex a2) {
-	//Provide cooperation for foo()
+	// Provide cooperation for foo()
 	...
-	//Unblock foo
+	// Unblock foo
 	signal(a1.e);
 }
-\end{cfacode}
-There are two details to note here. First, \code{signal} is a delayed operation; it only unblocks the waiting thread when it reaches the end of the critical section. This semantics is needed to respect mutual-exclusion, i.e., the signaller and signalled thread cannot be in the monitor simultaneously. The alternative is to return immediately after the call to \code{signal}, which is significantly more restrictive. Second, in \CFA, while it is common to store a \code{condition} as a field of the monitor, a \code{condition} variable can be stored/created independently of a monitor. Here routine \code{foo} waits for the \code{signal} from \code{bar} before making further progress, ensuring a basic ordering.
-
-An important aspect of the implementation is that \CFA does not allow barging, which means that once function \code{bar} releases the monitor, \code{foo} is guaranteed to be the next thread to acquire the monitor (unless some other thread waited on the same condition). This guarantee offers the benefit of not having to loop around waits to recheck that a condition is met. The main reason \CFA offers this guarantee is that users can easily introduce barging if it becomes a necessity but adding barging prevention or barging avoidance is more involved without language support. Supporting barging prevention as well as extending internal scheduling to multiple monitors is the main source of complexity in the design and implementation of \CFA concurrency.
+\end{cfa}
+There are two details to note here.
+First, @signal@ is a delayed operation; it only unblocks the waiting thread when it reaches the end of the critical section.
+This semantics is needed to respect mutual-exclusion, \ie the signaller and signalled thread cannot be in the monitor simultaneously.
+The alternative is to return immediately after the call to @signal@, which is significantly more restrictive.
+Second, in \CFA, while it is common to store a @condition@ as a field of the monitor, a @condition@ variable can be stored/created independently of a monitor.
+Here routine @foo@ waits for the @signal@ from @bar@ before making further progress, ensuring a basic ordering.
+
+An important aspect of the implementation is that \CFA does not allow barging, which means that once function @bar@ releases the monitor, @foo@ is guaranteed to be the next thread to acquire the monitor (unless some other thread waited on the same condition).
+This guarantee offers the benefit of not having to loop around waits to recheck that a condition is met.
+The main reason \CFA offers this guarantee is that users can easily introduce barging if it becomes a necessity but adding barging prevention or barging avoidance is more involved without language support.
+Supporting barging prevention as well as extending internal scheduling to multiple monitors is the main source of complexity in the design and implementation of \CFA concurrency.
 
 % ======================================================================
@@ -1027,44 +1450,55 @@
 % ======================================================================
 % ======================================================================
-It is easy to understand the problem of multi-monitor scheduling using a series of pseudo-code examples. Note that for simplicity in the following snippets of pseudo-code, waiting and signalling is done using an implicit condition variable, like Java built-in monitors. Indeed, \code{wait} statements always use the implicit condition variable as parameters and explicitly name the monitors (A and B) associated with the condition. Note that in \CFA, condition variables are tied to a \emph{group} of monitors on first use (called branding), which means that using internal scheduling with distinct sets of monitors requires one condition variable per set of monitors. The example below shows the simple case of having two threads (one for each column) and a single monitor A.
+It is easy to understand the problem of multi-monitor scheduling using a series of pseudo-code examples.
+Note that for simplicity in the following snippets of pseudo-code, waiting and signalling is done using an implicit condition variable, like Java built-in monitors.
+Indeed, @wait@ statements always use the implicit condition variable as parameters and explicitly name the monitors (A and B) associated with the condition.
+Note that in \CFA, condition variables are tied to a \emph{group} of monitors on first use (called branding), which means that using internal scheduling with distinct sets of monitors requires one condition variable per set of monitors.
+The example below shows the simple case of having two threads (one for each column) and a single monitor A.
 
 \begin{multicols}{2}
 thread 1
-\begin{pseudo}
+\begin{cfa}
 acquire A
 	wait A
 release A
-\end{pseudo}
+\end{cfa}
 
 \columnbreak
 
 thread 2
-\begin{pseudo}
+\begin{cfa}
 acquire A
 	signal A
 release A
-\end{pseudo}
+\end{cfa}
 \end{multicols}
-One thread acquires before waiting (atomically blocking and releasing A) and the other acquires before signalling. It is important to note here that both \code{wait} and \code{signal} must be called with the proper monitor(s) already acquired. This semantic is a logical requirement for barging prevention.
+One thread acquires before waiting (atomically blocking and releasing A) and the other acquires before signalling.
+It is important to note here that both @wait@ and @signal@ must be called with the proper monitor(s) already acquired.
+This semantic is a logical requirement for barging prevention.
 
 A direct extension of the previous example is a \textbf{bulk-acq} version:
 \begin{multicols}{2}
-\begin{pseudo}
+\begin{cfa}
 acquire A & B
 	wait A & B
 release A & B
-\end{pseudo}
+\end{cfa}
 \columnbreak
-\begin{pseudo}
+\begin{cfa}
 acquire A & B
 	signal A & B
 release A & B
-\end{pseudo}
+\end{cfa}
 \end{multicols}
-\noindent This version uses \textbf{bulk-acq} (denoted using the {\sf\&} symbol), but the presence of multiple monitors does not add a particularly new meaning. Synchronization happens between the two threads in exactly the same way and order. The only difference is that mutual exclusion covers a group of monitors. On the implementation side, handling multiple monitors does add a degree of complexity as the next few examples demonstrate.
-
-While deadlock issues can occur when nesting monitors, these issues are only a symptom of the fact that locks, and by extension monitors, are not perfectly composable. For monitors, a well-known deadlock problem is the Nested Monitor Problem~\cite{Lister77}, which occurs when a \code{wait} is made by a thread that holds more than one monitor. For example, the following pseudo-code runs into the nested-monitor problem:
+\noindent This version uses \textbf{bulk-acq} (denoted using the {\sf\&} symbol), but the presence of multiple monitors does not add a particularly new meaning.
+Synchronization happens between the two threads in exactly the same way and order.
+The only difference is that mutual exclusion covers a group of monitors.
+On the implementation side, handling multiple monitors does add a degree of complexity as the next few examples demonstrate.
+
+While deadlock issues can occur when nesting monitors, these issues are only a symptom of the fact that locks, and by extension monitors, are not perfectly composable.
+For monitors, a well-known deadlock problem is the Nested Monitor Problem~\cite{Lister77}, which occurs when a @wait@ is made by a thread that holds more than one monitor.
+For example, the following cfa-code runs into the nested-monitor problem:
 \begin{multicols}{2}
-\begin{pseudo}
+\begin{cfa}
 acquire A
 	acquire B
@@ -1072,9 +1506,9 @@
 	release B
 release A
-\end{pseudo}
+\end{cfa}
 
 \columnbreak
 
-\begin{pseudo}
+\begin{cfa}
 acquire A
 	acquire B
@@ -1082,12 +1516,14 @@
 	release B
 release A
-\end{pseudo}
+\end{cfa}
 \end{multicols}
-\noindent The \code{wait} only releases monitor \code{B} so the signalling thread cannot acquire monitor \code{A} to get to the \code{signal}. Attempting release of all acquired monitors at the \code{wait} introduces a different set of problems, such as releasing monitor \code{C}, which has nothing to do with the \code{signal}.
-
-However, for monitors as for locks, it is possible to write a program using nesting without encountering any problems if nesting is done correctly. For example, the next pseudo-code snippet acquires monitors {\sf A} then {\sf B} before waiting, while only acquiring {\sf B} when signalling, effectively avoiding the Nested Monitor Problem~\cite{Lister77}.
+\noindent The @wait@ only releases monitor @B@ so the signalling thread cannot acquire monitor @A@ to get to the @signal@.
+Attempting release of all acquired monitors at the @wait@ introduces a different set of problems, such as releasing monitor @C@, which has nothing to do with the @signal@.
+
+However, for monitors as for locks, it is possible to write a program using nesting without encountering any problems if nesting is done correctly.
+For example, the next cfa-code snippet acquires monitors {\sf A} then {\sf B} before waiting, while only acquiring {\sf B} when signalling, effectively avoiding the Nested Monitor Problem~\cite{Lister77}.
 
 \begin{multicols}{2}
-\begin{pseudo}
+\begin{cfa}
 acquire A
 	acquire B
@@ -1095,9 +1531,9 @@
 	release B
 release A
-\end{pseudo}
+\end{cfa}
 
 \columnbreak
 
-\begin{pseudo}
+\begin{cfa}
 
 acquire B
@@ -1105,5 +1541,5 @@
 release B
 
-\end{pseudo}
+\end{cfa}
 \end{multicols}
 
@@ -1116,75 +1552,77 @@
 % ======================================================================
 
-A larger example is presented to show complex issues for \textbf{bulk-acq} and its implementation options are analyzed. Listing \ref{lst:int-bulk-pseudo} shows an example where \textbf{bulk-acq} adds a significant layer of complexity to the internal signalling semantics, and listing \ref{lst:int-bulk-cfa} shows the corresponding \CFA code to implement the pseudo-code in listing \ref{lst:int-bulk-pseudo}. For the purpose of translating the given pseudo-code into \CFA-code, any method of introducing a monitor is acceptable, e.g., \code{mutex} parameters, global variables, pointer parameters, or using locals with the \code{mutex} statement.
-
-\begin{figure}[!t]
+A larger example is presented to show complex issues for \textbf{bulk-acq} and its implementation options are analyzed.
+Figure~\ref{f:int-bulk-cfa} shows an example where \textbf{bulk-acq} adds a significant layer of complexity to the internal signalling semantics, and listing \ref{f:int-bulk-cfa} shows the corresponding \CFA code to implement the cfa-code in listing \ref{f:int-bulk-cfa}.
+For the purpose of translating the given cfa-code into \CFA-code, any method of introducing a monitor is acceptable, \eg @mutex@ parameters, global variables, pointer parameters, or using locals with the @mutex@ statement.
+
+\begin{figure}
 \begin{multicols}{2}
 Waiting thread
-\begin{pseudo}[numbers=left]
+\begin{cfa}[numbers=left]
 acquire A
-	//Code Section 1
+	// Code Section 1
 	acquire A & B
-		//Code Section 2
+		// Code Section 2
 		wait A & B
-		//Code Section 3
+		// Code Section 3
 	release A & B
-	//Code Section 4
+	// Code Section 4
 release A
-\end{pseudo}
+\end{cfa}
 \columnbreak
 Signalling thread
-\begin{pseudo}[numbers=left, firstnumber=10,escapechar=|]
+\begin{cfa}[numbers=left, firstnumber=10,escapechar=|]
 acquire A
-	//Code Section 5
+	// Code Section 5
 	acquire A & B
-		//Code Section 6
+		// Code Section 6
 		|\label{line:signal1}|signal A & B
-		//Code Section 7
+		// Code Section 7
 	|\label{line:releaseFirst}|release A & B
-	//Code Section 8
+	// Code Section 8
 |\label{line:lastRelease}|release A
-\end{pseudo}
+\end{cfa}
 \end{multicols}
-\begin{cfacode}[caption={Internal scheduling with \textbf{bulk-acq}},label={lst:int-bulk-pseudo}]
-\end{cfacode}
+\begin{cfa}[caption={Internal scheduling with \textbf{bulk-acq}},label={f:int-bulk-cfa}]
+\end{cfa}
 \begin{center}
-\begin{cfacode}[xleftmargin=.4\textwidth]
+\begin{cfa}[xleftmargin=.4\textwidth]
 monitor A a;
 monitor B b;
 condition c;
-\end{cfacode}
+\end{cfa}
 \end{center}
 \begin{multicols}{2}
 Waiting thread
-\begin{cfacode}
+\begin{cfa}
 mutex(a) {
-	//Code Section 1
+	// Code Section 1
 	mutex(a, b) {
-		//Code Section 2
+		// Code Section 2
 		wait(c);
-		//Code Section 3
+		// Code Section 3
 	}
-	//Code Section 4
-}
-\end{cfacode}
+	// Code Section 4
+}
+\end{cfa}
 \columnbreak
 Signalling thread
-\begin{cfacode}
+\begin{cfa}
 mutex(a) {
-	//Code Section 5
+	// Code Section 5
 	mutex(a, b) {
-		//Code Section 6
+		// Code Section 6
 		signal(c);
-		//Code Section 7
+		// Code Section 7
 	}
-	//Code Section 8
-}
-\end{cfacode}
+	// Code Section 8
+}
+\end{cfa}
 \end{multicols}
-\begin{cfacode}[caption={Equivalent \CFA code for listing \ref{lst:int-bulk-pseudo}},label={lst:int-bulk-cfa}]
-\end{cfacode}
+\begin{cfa}[caption={Equivalent \CFA code for listing \ref{f:int-bulk-cfa}},label={f:int-bulk-cfa}]
+\end{cfa}
 \begin{multicols}{2}
 Waiter
-\begin{pseudo}[numbers=left]
+\begin{cfa}[numbers=left]
 acquire A
 	acquire A & B
@@ -1192,35 +1630,48 @@
 	release A & B
 release A
-\end{pseudo}
+\end{cfa}
 
 \columnbreak
 
 Signaller
-\begin{pseudo}[numbers=left, firstnumber=6,escapechar=|]
+\begin{cfa}[numbers=left, firstnumber=6,escapechar=|]
 acquire A
 	acquire A & B
 		signal A & B
 	release A & B
-	|\label{line:secret}|//Secretly keep B here
+	|\label{line:secret}|// Secretly keep B here
 release A
-//Wakeup waiter and transfer A & B
-\end{pseudo}
+// Wakeup waiter and transfer A & B
+\end{cfa}
 \end{multicols}
-\begin{cfacode}[caption={Listing \ref{lst:int-bulk-pseudo}, with delayed signalling comments},label={lst:int-secret}]
-\end{cfacode}
+\begin{cfa}[caption={Figure~\ref{f:int-bulk-cfa}, with delayed signalling comments},label={f:int-secret}]
+\end{cfa}
 \end{figure}
 
-The complexity begins at code sections 4 and 8 in listing \ref{lst:int-bulk-pseudo}, which are where the existing semantics of internal scheduling needs to be extended for multiple monitors. The root of the problem is that \textbf{bulk-acq} is used in a context where one of the monitors is already acquired, which is why it is important to define the behaviour of the previous pseudo-code. When the signaller thread reaches the location where it should ``release \code{A & B}'' (listing \ref{lst:int-bulk-pseudo} line \ref{line:releaseFirst}), it must actually transfer ownership of monitor \code{B} to the waiting thread. This ownership transfer is required in order to prevent barging into \code{B} by another thread, since both the signalling and signalled threads still need monitor \code{A}. There are three options:
+The complexity begins at code sections 4 and 8 in listing \ref{f:int-bulk-cfa}, which are where the existing semantics of internal scheduling needs to be extended for multiple monitors.
+The root of the problem is that \textbf{bulk-acq} is used in a context where one of the monitors is already acquired, which is why it is important to define the behaviour of the previous cfa-code.
+When the signaller thread reaches the location where it should ``release @A & B@'' (listing \ref{f:int-bulk-cfa} line \ref{line:releaseFirst}), it must actually transfer ownership of monitor @B@ to the waiting thread.
+This ownership transfer is required in order to prevent barging into @B@ by another thread, since both the signalling and signalled threads still need monitor @A@.
+There are three options:
 
 \subsubsection{Delaying Signals}
-The obvious solution to the problem of multi-monitor scheduling is to keep ownership of all locks until the last lock is ready to be transferred. It can be argued that that moment is when the last lock is no longer needed, because this semantics fits most closely to the behaviour of single-monitor scheduling. This solution has the main benefit of transferring ownership of groups of monitors, which simplifies the semantics from multiple objects to a single group of objects, effectively making the existing single-monitor semantic viable by simply changing monitors to monitor groups. This solution releases the monitors once every monitor in a group can be released. However, since some monitors are never released (e.g., the monitor of a thread), this interpretation means a group might never be released. A more interesting interpretation is to transfer the group until all its monitors are released, which means the group is not passed further and a thread can retain its locks.
-
-However, listing \ref{lst:int-secret} shows this solution can become much more complicated depending on what is executed while secretly holding B at line \ref{line:secret}, while avoiding the need to transfer ownership of a subset of the condition monitors. Listing \ref{lst:dependency} shows a slightly different example where a third thread is waiting on monitor \code{A}, using a different condition variable. Because the third thread is signalled when secretly holding \code{B}, the goal  becomes unreachable. Depending on the order of signals (listing \ref{lst:dependency} line \ref{line:signal-ab} and \ref{line:signal-a}) two cases can happen:
-
-\paragraph{Case 1: thread $\alpha$ goes first.} In this case, the problem is that monitor \code{A} needs to be passed to thread $\beta$ when thread $\alpha$ is done with it.
-\paragraph{Case 2: thread $\beta$ goes first.} In this case, the problem is that monitor \code{B} needs to be retained and passed to thread $\alpha$ along with monitor \code{A}, which can be done directly or possibly using thread $\beta$ as an intermediate.
+The obvious solution to the problem of multi-monitor scheduling is to keep ownership of all locks until the last lock is ready to be transferred.
+It can be argued that that moment is when the last lock is no longer needed, because this semantics fits most closely to the behaviour of single-monitor scheduling.
+This solution has the main benefit of transferring ownership of groups of monitors, which simplifies the semantics from multiple objects to a single group of objects, effectively making the existing single-monitor semantic viable by simply changing monitors to monitor groups.
+This solution releases the monitors once every monitor in a group can be released.
+However, since some monitors are never released (\eg the monitor of a thread), this interpretation means a group might never be released.
+A more interesting interpretation is to transfer the group until all its monitors are released, which means the group is not passed further and a thread can retain its locks.
+
+However, listing \ref{f:int-secret} shows this solution can become much more complicated depending on what is executed while secretly holding B at line \ref{line:secret}, while avoiding the need to transfer ownership of a subset of the condition monitors.
+Figure~\ref{f:dependency} shows a slightly different example where a third thread is waiting on monitor @A@, using a different condition variable.
+Because the third thread is signalled when secretly holding @B@, the goal  becomes unreachable.
+Depending on the order of signals (listing \ref{f:dependency} line \ref{line:signal-ab} and \ref{line:signal-a}) two cases can happen:
+
+\paragraph{Case 1: thread $\alpha$ goes first.} In this case, the problem is that monitor @A@ needs to be passed to thread $\beta$ when thread $\alpha$ is done with it.
+\paragraph{Case 2: thread $\beta$ goes first.} In this case, the problem is that monitor @B@ needs to be retained and passed to thread $\alpha$ along with monitor @A@, which can be done directly or possibly using thread $\beta$ as an intermediate.
 \\
 
-Note that ordering is not determined by a race condition but by whether signalled threads are enqueued in FIFO or FILO order. However, regardless of the answer, users can move line \ref{line:signal-a} before line \ref{line:signal-ab} and get the reverse effect for listing \ref{lst:dependency}.
+Note that ordering is not determined by a race condition but by whether signalled threads are enqueued in FIFO or FILO order.
+However, regardless of the answer, users can move line \ref{line:signal-a} before line \ref{line:signal-ab} and get the reverse effect for listing \ref{f:dependency}.
 
 In both cases, the threads need to be able to distinguish, on a per monitor basis, which ones need to be released and which ones need to be transferred, which means knowing when to release a group becomes complex and inefficient (see next section) and therefore effectively precludes this approach.
@@ -1232,5 +1683,5 @@
 \begin{multicols}{3}
 Thread $\alpha$
-\begin{pseudo}[numbers=left, firstnumber=1]
+\begin{cfa}[numbers=left, firstnumber=1]
 acquire A
 	acquire A & B
@@ -1238,8 +1689,8 @@
 	release A & B
 release A
-\end{pseudo}
+\end{cfa}
 \columnbreak
 Thread $\gamma$
-\begin{pseudo}[numbers=left, firstnumber=6, escapechar=|]
+\begin{cfa}[numbers=left, firstnumber=6, escapechar=|]
 acquire A
 	acquire A & B
@@ -1248,26 +1699,32 @@
 	|\label{line:signal-a}|signal A
 |\label{line:release-a}|release A
-\end{pseudo}
+\end{cfa}
 \columnbreak
 Thread $\beta$
-\begin{pseudo}[numbers=left, firstnumber=12, escapechar=|]
+\begin{cfa}[numbers=left, firstnumber=12, escapechar=|]
 acquire A
 	wait A
 |\label{line:release-aa}|release A
-\end{pseudo}
+\end{cfa}
 \end{multicols}
-\begin{cfacode}[caption={Pseudo-code for the three thread example.},label={lst:dependency}]
-\end{cfacode}
+\begin{cfa}[caption={Pseudo-code for the three thread example.},label={f:dependency}]
+\end{cfa}
 \begin{center}
 \input{dependency}
 \end{center}
-\caption{Dependency graph of the statements in listing \ref{lst:dependency}}
+\caption{Dependency graph of the statements in listing \ref{f:dependency}}
 \label{fig:dependency}
 \end{figure}
 
-In listing \ref{lst:int-bulk-pseudo}, there is a solution that satisfies both barging prevention and mutual exclusion. If ownership of both monitors is transferred to the waiter when the signaller releases \code{A & B} and then the waiter transfers back ownership of \code{A} back to the signaller when it releases it, then the problem is solved (\code{B} is no longer in use at this point). Dynamically finding the correct order is therefore the second possible solution. The problem is effectively resolving a dependency graph of ownership requirements. Here even the simplest of code snippets requires two transfers and has a super-linear complexity. This complexity can be seen in listing \ref{lst:explosion}, which is just a direct extension to three monitors, requires at least three ownership transfer and has multiple solutions. Furthermore, the presence of multiple solutions for ownership transfer can cause deadlock problems if a specific solution is not consistently picked; In the same way that multiple lock acquiring order can cause deadlocks.
+In listing \ref{f:int-bulk-cfa}, there is a solution that satisfies both barging prevention and mutual exclusion.
+If ownership of both monitors is transferred to the waiter when the signaller releases @A & B@ and then the waiter transfers back ownership of @A@ back to the signaller when it releases it, then the problem is solved (@B@ is no longer in use at this point).
+Dynamically finding the correct order is therefore the second possible solution.
+The problem is effectively resolving a dependency graph of ownership requirements.
+Here even the simplest of code snippets requires two transfers and has a super-linear complexity.
+This complexity can be seen in listing \ref{f:explosion}, which is just a direct extension to three monitors, requires at least three ownership transfer and has multiple solutions.
+Furthermore, the presence of multiple solutions for ownership transfer can cause deadlock problems if a specific solution is not consistently picked; In the same way that multiple lock acquiring order can cause deadlocks.
 \begin{figure}
 \begin{multicols}{2}
-\begin{pseudo}
+\begin{cfa}
 acquire A
 	acquire B
@@ -1277,9 +1734,9 @@
 	release B
 release A
-\end{pseudo}
+\end{cfa}
 
 \columnbreak
 
-\begin{pseudo}
+\begin{cfa}
 acquire A
 	acquire B
@@ -1289,20 +1746,27 @@
 	release B
 release A
-\end{pseudo}
+\end{cfa}
 \end{multicols}
-\begin{cfacode}[caption={Extension to three monitors of listing \ref{lst:int-bulk-pseudo}},label={lst:explosion}]
-\end{cfacode}
+\begin{cfa}[caption={Extension to three monitors of listing \ref{f:int-bulk-cfa}},label={f:explosion}]
+\end{cfa}
 \end{figure}
 
-Given the three threads example in listing \ref{lst:dependency}, figure \ref{fig:dependency} shows the corresponding dependency graph that results, where every node is a statement of one of the three threads, and the arrows the dependency of that statement (e.g., $\alpha1$ must happen before $\alpha2$). The extra challenge is that this dependency graph is effectively post-mortem, but the runtime system needs to be able to build and solve these graphs as the dependencies unfold. Resolving dependency graphs being a complex and expensive endeavour, this solution is not the preferred one.
+Given the three threads example in listing \ref{f:dependency}, figure \ref{fig:dependency} shows the corresponding dependency graph that results, where every node is a statement of one of the three threads, and the arrows the dependency of that statement (\eg $\alpha1$ must happen before $\alpha2$).
+The extra challenge is that this dependency graph is effectively post-mortem, but the runtime system needs to be able to build and solve these graphs as the dependencies unfold.
+Resolving dependency graphs being a complex and expensive endeavour, this solution is not the preferred one.
 
 \subsubsection{Partial Signalling} \label{partial-sig}
-Finally, the solution that is chosen for \CFA is to use partial signalling. Again using listing \ref{lst:int-bulk-pseudo}, the partial signalling solution transfers ownership of monitor \code{B} at lines \ref{line:signal1} to the waiter but does not wake the waiting thread since it is still using monitor \code{A}. Only when it reaches line \ref{line:lastRelease} does it actually wake up the waiting thread. This solution has the benefit that complexity is encapsulated into only two actions: passing monitors to the next owner when they should be released and conditionally waking threads if all conditions are met. This solution has a much simpler implementation than a dependency graph solving algorithms, which is why it was chosen. Furthermore, after being fully implemented, this solution does not appear to have any significant downsides.
-
-Using partial signalling, listing \ref{lst:dependency} can be solved easily:
+Finally, the solution that is chosen for \CFA is to use partial signalling.
+Again using listing \ref{f:int-bulk-cfa}, the partial signalling solution transfers ownership of monitor @B@ at lines \ref{line:signal1} to the waiter but does not wake the waiting thread since it is still using monitor @A@.
+Only when it reaches line \ref{line:lastRelease} does it actually wake up the waiting thread.
+This solution has the benefit that complexity is encapsulated into only two actions: passing monitors to the next owner when they should be released and conditionally waking threads if all conditions are met.
+This solution has a much simpler implementation than a dependency graph solving algorithms, which is why it was chosen.
+Furthermore, after being fully implemented, this solution does not appear to have any significant downsides.
+
+Using partial signalling, listing \ref{f:dependency} can be solved easily:
 \begin{itemize}
-	\item When thread $\gamma$ reaches line \ref{line:release-ab} it transfers monitor \code{B} to thread $\alpha$ and continues to hold monitor \code{A}.
-	\item When thread $\gamma$ reaches line \ref{line:release-a}  it transfers monitor \code{A} to thread $\beta$  and wakes it up.
-	\item When thread $\beta$  reaches line \ref{line:release-aa} it transfers monitor \code{A} to thread $\alpha$ and wakes it up.
+	\item When thread $\gamma$ reaches line \ref{line:release-ab} it transfers monitor @B@ to thread $\alpha$ and continues to hold monitor @A@.
+	\item When thread $\gamma$ reaches line \ref{line:release-a}  it transfers monitor @A@ to thread $\beta$  and wakes it up.
+	\item When thread $\beta$  reaches line \ref{line:release-aa} it transfers monitor @A@ to thread $\alpha$ and wakes it up.
 \end{itemize}
 
@@ -1314,10 +1778,9 @@
 \begin{table}
 \begin{tabular}{|c|c|}
-\code{signal} & \code{signal_block} \\
+@signal@ & @signal_block@ \\
 \hline
-\begin{cfacode}[tabsize=3]
-monitor DatingService
-{
-	//compatibility codes
+\begin{cfa}[tabsize=3]
+monitor DatingService {
+	// compatibility codes
 	enum{ CCodes = 20 };
 
@@ -1330,42 +1793,25 @@
 condition exchange;
 
-int girl(int phoneNo, int ccode)
-{
-	//no compatible boy ?
-	if(empty(boys[ccode]))
-	{
-		//wait for boy
-		wait(girls[ccode]);
-
-		//make phone number available
-		girlPhoneNo = phoneNo;
-
-		//wake boy from chair
-		signal(exchange);
-	}
-	else
-	{
-		//make phone number available
-		girlPhoneNo = phoneNo;
-
-		//wake boy
-		signal(boys[ccode]);
-
-		//sit in chair
-		wait(exchange);
+int girl(int phoneNo, int cfa) {
+	// no compatible boy ?
+	if(empty(boys[cfa])) {
+		wait(girls[cfa]);		// wait for boy
+		girlPhoneNo = phoneNo;		// make phone number available
+		signal(exchange);		// wake boy from chair
+	} else {
+		girlPhoneNo = phoneNo;		// make phone number available
+		signal(boys[cfa]);		// wake boy
+		wait(exchange);		// sit in chair
 	}
 	return boyPhoneNo;
 }
-
-int boy(int phoneNo, int ccode)
-{
-	//same as above
-	//with boy/girl interchanged
-}
-\end{cfacode}&\begin{cfacode}[tabsize=3]
-monitor DatingService
-{
-	//compatibility codes
-	enum{ CCodes = 20 };
+int boy(int phoneNo, int cfa) {
+	// same as above
+	// with boy/girl interchanged
+}
+\end{cfa}&\begin{cfa}[tabsize=3]
+monitor DatingService {
+
+	enum{ CCodes = 20 }; 	// compatibility codes
 
 	int girlPhoneNo;
@@ -1375,29 +1821,17 @@
 condition girls[CCodes];
 condition boys [CCodes];
-//exchange is not needed
-
-int girl(int phoneNo, int ccode)
-{
-	//no compatible boy ?
-	if(empty(boys[ccode]))
-	{
-		//wait for boy
-		wait(girls[ccode]);
-
-		//make phone number available
-		girlPhoneNo = phoneNo;
-
-		//wake boy from chair
-		signal(exchange);
-	}
-	else
-	{
-		//make phone number available
-		girlPhoneNo = phoneNo;
-
-		//wake boy
-		signal_block(boys[ccode]);
-
-		//second handshake unnecessary
+// exchange is not needed
+
+int girl(int phoneNo, int cfa) {
+	// no compatible boy ?
+	if(empty(boys[cfa])) {
+		wait(girls[cfa]);		// wait for boy
+		girlPhoneNo = phoneNo;		// make phone number available
+		signal(exchange);		// wake boy from chair
+	} else {
+		girlPhoneNo = phoneNo;		// make phone number available
+		signal_block(boys[cfa]); 		// wake boy
+
+		// second handshake unnecessary
 
 	}
@@ -1405,17 +1839,22 @@
 }
 
-int boy(int phoneNo, int ccode)
-{
-	//same as above
-	//with boy/girl interchanged
-}
-\end{cfacode}
+int boy(int phoneNo, int cfa) {
+	// same as above
+	// with boy/girl interchanged
+}
+\end{cfa}
 \end{tabular}
-\caption{Dating service example using \code{signal} and \code{signal_block}. }
+\caption{Dating service example using \protect\lstinline|signal| and \protect\lstinline|signal_block|. }
 \label{tbl:datingservice}
 \end{table}
-An important note is that, until now, signalling a monitor was a delayed operation. The ownership of the monitor is transferred only when the monitor would have otherwise been released, not at the point of the \code{signal} statement. However, in some cases, it may be more convenient for users to immediately transfer ownership to the thread that is waiting for cooperation, which is achieved using the \code{signal_block} routine.
-
-The example in table \ref{tbl:datingservice} highlights the difference in behaviour. As mentioned, \code{signal} only transfers ownership once the current critical section exits; this behaviour requires additional synchronization when a two-way handshake is needed. To avoid this explicit synchronization, the \code{condition} type offers the \code{signal_block} routine, which handles the two-way handshake as shown in the example. This feature removes the need for a second condition variables and simplifies programming. Like every other monitor semantic, \code{signal_block} uses barging prevention, which means mutual-exclusion is baton-passed both on the front end and the back end of the call to \code{signal_block}, meaning no other thread can acquire the monitor either before or after the call.
+An important note is that, until now, signalling a monitor was a delayed operation.
+The ownership of the monitor is transferred only when the monitor would have otherwise been released, not at the point of the @signal@ statement.
+However, in some cases, it may be more convenient for users to immediately transfer ownership to the thread that is waiting for cooperation, which is achieved using the @signal_block@ routine.
+
+The example in table \ref{tbl:datingservice} highlights the difference in behaviour.
+As mentioned, @signal@ only transfers ownership once the current critical section exits; this behaviour requires additional synchronization when a two-way handshake is needed.
+To avoid this explicit synchronization, the @condition@ type offers the @signal_block@ routine, which handles the two-way handshake as shown in the example.
+This feature removes the need for a second condition variables and simplifies programming.
+Like every other monitor semantic, @signal_block@ uses barging prevention, which means mutual-exclusion is baton-passed both on the front end and the back end of the call to @signal_block@, meaning no other thread can acquire the monitor either before or after the call.
 
 % ======================================================================
@@ -1429,5 +1868,5 @@
 Internal Scheduling & External Scheduling & Go\\
 \hline
-\begin{ucppcode}[tabsize=3]
+\begin{uC++}[tabsize=3]
 _Monitor Semaphore {
 	condition c;
@@ -1444,5 +1883,5 @@
 	}
 }
-\end{ucppcode}&\begin{ucppcode}[tabsize=3]
+\end{uC++}&\begin{uC++}[tabsize=3]
 _Monitor Semaphore {
 
@@ -1459,5 +1898,5 @@
 	}
 }
-\end{ucppcode}&\begin{gocode}[tabsize=3]
+\end{uC++}&\begin{Go}[tabsize=3]
 type MySem struct {
 	inUse bool
@@ -1479,16 +1918,23 @@
 	s.inUse = false
 
-	//This actually deadlocks
-	//when single thread
+	// This actually deadlocks
+	// when single thread
 	s.c <- false
 }
-\end{gocode}
+\end{Go}
 \end{tabular}
 \caption{Different forms of scheduling.}
 \label{tbl:sched}
 \end{table}
-This method is more constrained and explicit, which helps users reduce the non-deterministic nature of concurrency. Indeed, as the following examples demonstrate, external scheduling allows users to wait for events from other threads without the concern of unrelated events occurring. External scheduling can generally be done either in terms of control flow (e.g., Ada with \code{accept}, \uC with \code{_Accept}) or in terms of data (e.g., Go with channels). Of course, both of these paradigms have their own strengths and weaknesses, but for this project, control-flow semantics was chosen to stay consistent with the rest of the languages semantics. Two challenges specific to \CFA arise when trying to add external scheduling with loose object definitions and multiple-monitor routines. The previous example shows a simple use \code{_Accept} versus \code{wait}/\code{signal} and its advantages. Note that while other languages often use \code{accept}/\code{select} as the core external scheduling keyword, \CFA uses \code{waitfor} to prevent name collisions with existing socket \textbf{api}s.
-
-For the \code{P} member above using internal scheduling, the call to \code{wait} only guarantees that \code{V} is the last routine to access the monitor, allowing a third routine, say \code{isInUse()}, acquire mutual exclusion several times while routine \code{P} is waiting. On the other hand, external scheduling guarantees that while routine \code{P} is waiting, no other routine than \code{V} can acquire the monitor.
+This method is more constrained and explicit, which helps users reduce the non-deterministic nature of concurrency.
+Indeed, as the following examples demonstrate, external scheduling allows users to wait for events from other threads without the concern of unrelated events occurring.
+External scheduling can generally be done either in terms of control flow (\eg Ada with @accept@, \uC with @_Accept@) or in terms of data (\eg Go with channels).
+Of course, both of these paradigms have their own strengths and weaknesses, but for this project, control-flow semantics was chosen to stay consistent with the rest of the languages semantics.
+Two challenges specific to \CFA arise when trying to add external scheduling with loose object definitions and multiple-monitor routines.
+The previous example shows a simple use @_Accept@ versus @wait@/@signal@ and its advantages.
+Note that while other languages often use @accept@/@select@ as the core external scheduling keyword, \CFA uses @waitfor@ to prevent name collisions with existing socket \textbf{api}s.
+
+For the @P@ member above using internal scheduling, the call to @wait@ only guarantees that @V@ is the last routine to access the monitor, allowing a third routine, say @isInUse()@, acquire mutual exclusion several times while routine @P@ is waiting.
+On the other hand, external scheduling guarantees that while routine @P@ is waiting, no other routine than @V@ can acquire the monitor.
 
 % ======================================================================
@@ -1497,24 +1943,26 @@
 % ======================================================================
 % ======================================================================
-In \uC, a monitor class declaration includes an exhaustive list of monitor operations. Since \CFA is not object oriented, monitors become both more difficult to implement and less clear for a user:
-
-\begin{cfacode}
+In \uC, a monitor class declaration includes an exhaustive list of monitor operations.
+Since \CFA is not object oriented, monitors become both more difficult to implement and less clear for a user:
+
+\begin{cfa}
 monitor A {};
 
 void f(A & mutex a);
 void g(A & mutex a) {
-	waitfor(f); //Obvious which f() to wait for
-}
-
-void f(A & mutex a, int); //New different F added in scope
+	waitfor(f); // Obvious which f() to wait for
+}
+
+void f(A & mutex a, int); // New different F added in scope
 void h(A & mutex a) {
-	waitfor(f); //Less obvious which f() to wait for
-}
-\end{cfacode}
-
-Furthermore, external scheduling is an example where implementation constraints become visible from the interface. Here is the pseudo-code for the entering phase of a monitor:
+	waitfor(f); // Less obvious which f() to wait for
+}
+\end{cfa}
+
+Furthermore, external scheduling is an example where implementation constraints become visible from the interface.
+Here is the cfa-code for the entering phase of a monitor:
 \begin{center}
 \begin{tabular}{l}
-\begin{pseudo}
+\begin{cfa}
 	if monitor is free
 		enter
@@ -1525,8 +1973,10 @@
 	else
 		block
-\end{pseudo}
+\end{cfa}
 \end{tabular}
 \end{center}
-For the first two conditions, it is easy to implement a check that can evaluate the condition in a few instructions. However, a fast check for \pscode{monitor accepts me} is much harder to implement depending on the constraints put on the monitors. Indeed, monitors are often expressed as an entry queue and some acceptor queue as in Figure~\ref{fig:ClassicalMonitor}.
+For the first two conditions, it is easy to implement a check that can evaluate the condition in a few instructions.
+However, a fast check for @monitor accepts me@ is much harder to implement depending on the constraints put on the monitors.
+Indeed, monitors are often expressed as an entry queue and some acceptor queue as in Figure~\ref{fig:ClassicalMonitor}.
 
 \begin{figure}
@@ -1544,15 +1994,23 @@
 \end{figure}
 
-There are other alternatives to these pictures, but in the case of the left picture, implementing a fast accept check is relatively easy. Restricted to a fixed number of mutex members, N, the accept check reduces to updating a bitmask when the acceptor queue changes, a check that executes in a single instruction even with a fairly large number (e.g., 128) of mutex members. This approach requires a unique dense ordering of routines with an upper-bound and that ordering must be consistent across translation units. For OO languages these constraints are common, since objects only offer adding member routines consistently across translation units via inheritance. However, in \CFA users can extend objects with mutex routines that are only visible in certain translation unit. This means that establishing a program-wide dense-ordering among mutex routines can only be done in the program linking phase, and still could have issues when using dynamically shared objects.
+There are other alternatives to these pictures, but in the case of the left picture, implementing a fast accept check is relatively easy.
+Restricted to a fixed number of mutex members, N, the accept check reduces to updating a bitmask when the acceptor queue changes, a check that executes in a single instruction even with a fairly large number (\eg 128) of mutex members.
+This approach requires a unique dense ordering of routines with an upper-bound and that ordering must be consistent across translation units.
+For OO languages these constraints are common, since objects only offer adding member routines consistently across translation units via inheritance.
+However, in \CFA users can extend objects with mutex routines that are only visible in certain translation unit.
+This means that establishing a program-wide dense-ordering among mutex routines can only be done in the program linking phase, and still could have issues when using dynamically shared objects.
 
 The alternative is to alter the implementation as in Figure~\ref{fig:BulkMonitor}.
-Here, the mutex routine called is associated with a thread on the entry queue while a list of acceptable routines is kept separate. Generating a mask dynamically means that the storage for the mask information can vary between calls to \code{waitfor}, allowing for more flexibility and extensions. Storing an array of accepted function pointers replaces the single instruction bitmask comparison with dereferencing a pointer followed by a linear search. Furthermore, supporting nested external scheduling (e.g., listing \ref{lst:nest-ext}) may now require additional searches for the \code{waitfor} statement to check if a routine is already queued.
+Here, the mutex routine called is associated with a thread on the entry queue while a list of acceptable routines is kept separate.
+Generating a mask dynamically means that the storage for the mask information can vary between calls to @waitfor@, allowing for more flexibility and extensions.
+Storing an array of accepted function pointers replaces the single instruction bitmask comparison with dereferencing a pointer followed by a linear search.
+Furthermore, supporting nested external scheduling (\eg listing \ref{f:nest-ext}) may now require additional searches for the @waitfor@ statement to check if a routine is already queued.
 
 \begin{figure}
-\begin{cfacode}[caption={Example of nested external scheduling},label={lst:nest-ext}]
+\begin{cfa}[caption={Example of nested external scheduling},label={f:nest-ext}]
 monitor M {};
 void foo( M & mutex a ) {}
 void bar( M & mutex b ) {
-	//Nested in the waitfor(bar, c) call
+	// Nested in the waitfor(bar, c) call
 	waitfor(foo, b);
 }
@@ -1561,10 +2019,15 @@
 }
 
-\end{cfacode}
+\end{cfa}
 \end{figure}
 
-Note that in the right picture, tasks need to always keep track of the monitors associated with mutex routines, and the routine mask needs to have both a function pointer and a set of monitors, as is discussed in the next section. These details are omitted from the picture for the sake of simplicity.
-
-At this point, a decision must be made between flexibility and performance. Many design decisions in \CFA achieve both flexibility and performance, for example polymorphic routines add significant flexibility but inlining them means the optimizer can easily remove any runtime cost. Here, however, the cost of flexibility cannot be trivially removed. In the end, the most flexible approach has been chosen since it allows users to write programs that would otherwise be  hard to write. This decision is based on the assumption that writing fast but inflexible locks is closer to a solved problem than writing locks that are as flexible as external scheduling in \CFA.
+Note that in the right picture, tasks need to always keep track of the monitors associated with mutex routines, and the routine mask needs to have both a function pointer and a set of monitors, as is discussed in the next section.
+These details are omitted from the picture for the sake of simplicity.
+
+At this point, a decision must be made between flexibility and performance.
+Many design decisions in \CFA achieve both flexibility and performance, for example polymorphic routines add significant flexibility but inlining them means the optimizer can easily remove any runtime cost.
+Here, however, the cost of flexibility cannot be trivially removed.
+In the end, the most flexible approach has been chosen since it allows users to write programs that would otherwise be  hard to write.
+This decision is based on the assumption that writing fast but inflexible locks is closer to a solved problem than writing locks that are as flexible as external scheduling in \CFA.
 
 % ======================================================================
@@ -1574,6 +2037,7 @@
 % ======================================================================
 
-External scheduling, like internal scheduling, becomes significantly more complex when introducing multi-monitor syntax. Even in the simplest possible case, some new semantics needs to be established:
-\begin{cfacode}
+External scheduling, like internal scheduling, becomes significantly more complex when introducing multi-monitor syntax.
+Even in the simplest possible case, some new semantics needs to be established:
+\begin{cfa}
 monitor M {};
 
@@ -1581,10 +2045,10 @@
 
 void g(M & mutex b, M & mutex c) {
-	waitfor(f); //two monitors M => unknown which to pass to f(M & mutex)
-}
-\end{cfacode}
+	waitfor(f); // two monitors M => unknown which to pass to f(M & mutex)
+}
+\end{cfa}
 The obvious solution is to specify the correct monitor as follows:
 
-\begin{cfacode}
+\begin{cfa}
 monitor M {};
 
@@ -1592,11 +2056,14 @@
 
 void g(M & mutex a, M & mutex b) {
-	//wait for call to f with argument b
+	// wait for call to f with argument b
 	waitfor(f, b);
 }
-\end{cfacode}
-This syntax is unambiguous. Both locks are acquired and kept by \code{g}. When routine \code{f} is called, the lock for monitor \code{b} is temporarily transferred from \code{g} to \code{f} (while \code{g} still holds lock \code{a}). This behaviour can be extended to the multi-monitor \code{waitfor} statement as follows.
-
-\begin{cfacode}
+\end{cfa}
+This syntax is unambiguous.
+Both locks are acquired and kept by @g@.
+When routine @f@ is called, the lock for monitor @b@ is temporarily transferred from @g@ to @f@ (while @g@ still holds lock @a@).
+This behaviour can be extended to the multi-monitor @waitfor@ statement as follows.
+
+\begin{cfa}
 monitor M {};
 
@@ -1604,14 +2071,14 @@
 
 void g(M & mutex a, M & mutex b) {
-	//wait for call to f with arguments a and b
+	// wait for call to f with arguments a and b
 	waitfor(f, a, b);
 }
-\end{cfacode}
-
-Note that the set of monitors passed to the \code{waitfor} statement must be entirely contained in the set of monitors already acquired in the routine. \code{waitfor} used in any other context is undefined behaviour.
+\end{cfa}
+
+Note that the set of monitors passed to the @waitfor@ statement must be entirely contained in the set of monitors already acquired in the routine. @waitfor@ used in any other context is undefined behaviour.
 
 An important behaviour to note is when a set of monitors only match partially:
 
-\begin{cfacode}
+\begin{cfa}
 mutex struct A {};
 
@@ -1626,22 +2093,29 @@
 
 void foo() {
-	g(a1, b); //block on accept
+	g(a1, b); // block on accept
 }
 
 void bar() {
-	f(a2, b); //fulfill cooperation
-}
-\end{cfacode}
-While the equivalent can happen when using internal scheduling, the fact that conditions are specific to a set of monitors means that users have to use two different condition variables. In both cases, partially matching monitor sets does not wakeup the waiting thread. It is also important to note that in the case of external scheduling the order of parameters is irrelevant; \code{waitfor(f,a,b)} and \code{waitfor(f,b,a)} are indistinguishable waiting condition.
-
-% ======================================================================
-% ======================================================================
-\subsection{\code{waitfor} Semantics}
-% ======================================================================
-% ======================================================================
-
-Syntactically, the \code{waitfor} statement takes a function identifier and a set of monitors. While the set of monitors can be any list of expressions, the function name is more restricted because the compiler validates at compile time the validity of the function type and the parameters used with the \code{waitfor} statement. It checks that the set of monitors passed in matches the requirements for a function call. Listing \ref{lst:waitfor} shows various usages of the waitfor statement and which are acceptable. The choice of the function type is made ignoring any non-\code{mutex} parameter. One limitation of the current implementation is that it does not handle overloading, but overloading is possible.
+	f(a2, b); // fulfill cooperation
+}
+\end{cfa}
+While the equivalent can happen when using internal scheduling, the fact that conditions are specific to a set of monitors means that users have to use two different condition variables.
+In both cases, partially matching monitor sets does not wakeup the waiting thread.
+It is also important to note that in the case of external scheduling the order of parameters is irrelevant; @waitfor(f,a,b)@ and @waitfor(f,b,a)@ are indistinguishable waiting condition.
+
+% ======================================================================
+% ======================================================================
+\subsection{\protect\lstinline|waitfor| Semantics}
+% ======================================================================
+% ======================================================================
+
+Syntactically, the @waitfor@ statement takes a function identifier and a set of monitors.
+While the set of monitors can be any list of expressions, the function name is more restricted because the compiler validates at compile time the validity of the function type and the parameters used with the @waitfor@ statement.
+It checks that the set of monitors passed in matches the requirements for a function call.
+Figure~\ref{f:waitfor} shows various usages of the waitfor statement and which are acceptable.
+The choice of the function type is made ignoring any non-@mutex@ parameter.
+One limitation of the current implementation is that it does not handle overloading, but overloading is possible.
 \begin{figure}
-\begin{cfacode}[caption={Various correct and incorrect uses of the waitfor statement},label={lst:waitfor}]
+\begin{cfa}[caption={Various correct and incorrect uses of the waitfor statement},label={f:waitfor}]
 monitor A{};
 monitor B{};
@@ -1657,26 +2131,32 @@
 	void (*fp)( A & mutex ) = f1;
 
-	waitfor(f1, a1);     //Correct : 1 monitor case
-	waitfor(f2, a1, b1); //Correct : 2 monitor case
-	waitfor(f3, a1);     //Correct : non-mutex arguments are ignored
-	waitfor(f1, *ap);    //Correct : expression as argument
-
-	waitfor(f1, a1, b1); //Incorrect : Too many mutex arguments
-	waitfor(f2, a1);     //Incorrect : Too few mutex arguments
-	waitfor(f2, a1, a2); //Incorrect : Mutex arguments don't match
-	waitfor(f1, 1);      //Incorrect : 1 not a mutex argument
-	waitfor(f9, a1);     //Incorrect : f9 function does not exist
-	waitfor(*fp, a1 );   //Incorrect : fp not an identifier
-	waitfor(f4, a1);     //Incorrect : f4 ambiguous
-
-	waitfor(f2, a1, b2); //Undefined behaviour : b2 not mutex
-}
-\end{cfacode}
+	waitfor(f1, a1);     // Correct : 1 monitor case
+	waitfor(f2, a1, b1); // Correct : 2 monitor case
+	waitfor(f3, a1);     // Correct : non-mutex arguments are ignored
+	waitfor(f1, *ap);    // Correct : expression as argument
+
+	waitfor(f1, a1, b1); // Incorrect : Too many mutex arguments
+	waitfor(f2, a1);     // Incorrect : Too few mutex arguments
+	waitfor(f2, a1, a2); // Incorrect : Mutex arguments don't match
+	waitfor(f1, 1);      // Incorrect : 1 not a mutex argument
+	waitfor(f9, a1);     // Incorrect : f9 function does not exist
+	waitfor(*fp, a1 );   // Incorrect : fp not an identifier
+	waitfor(f4, a1);     // Incorrect : f4 ambiguous
+
+	waitfor(f2, a1, b2); // Undefined behaviour : b2 not mutex
+}
+\end{cfa}
 \end{figure}
 
-Finally, for added flexibility, \CFA supports constructing a complex \code{waitfor} statement using the \code{or}, \code{timeout} and \code{else}. Indeed, multiple \code{waitfor} clauses can be chained together using \code{or}; this chain forms a single statement that uses baton pass to any function that fits one of the function+monitor set passed in. To enable users to tell which accepted function executed, \code{waitfor}s are followed by a statement (including the null statement \code{;}) or a compound statement, which is executed after the clause is triggered. A \code{waitfor} chain can also be followed by a \code{timeout}, to signify an upper bound on the wait, or an \code{else}, to signify that the call should be non-blocking, which checks for a matching function call already arrived and otherwise continues. Any and all of these clauses can be preceded by a \code{when} condition to dynamically toggle the accept clauses on or off based on some current state. Listing \ref{lst:waitfor2} demonstrates several complex masks and some incorrect ones.
+Finally, for added flexibility, \CFA supports constructing a complex @waitfor@ statement using the @or@, @timeout@ and @else@.
+Indeed, multiple @waitfor@ clauses can be chained together using @or@; this chain forms a single statement that uses baton pass to any function that fits one of the function+monitor set passed in.
+To enable users to tell which accepted function executed, @waitfor@s are followed by a statement (including the null statement @;@) or a compound statement, which is executed after the clause is triggered.
+A @waitfor@ chain can also be followed by a @timeout@, to signify an upper bound on the wait, or an @else@, to signify that the call should be non-blocking, which checks for a matching function call already arrived and otherwise continues.
+Any and all of these clauses can be preceded by a @when@ condition to dynamically toggle the accept clauses on or off based on some current state.
+Figure~\ref{f:waitfor2} demonstrates several complex masks and some incorrect ones.
 
 \begin{figure}
-\begin{cfacode}[caption={Various correct and incorrect uses of the or, else, and timeout clause around a waitfor statement},label={lst:waitfor2}]
+\lstset{language=CFA,deletedelim=**[is][]{`}{`}}
+\begin{cfa}
 monitor A{};
 
@@ -1685,55 +2165,44 @@
 
 void foo( A & mutex a, bool b, int t ) {
-	//Correct : blocking case
-	waitfor(f1, a);
-
-	//Correct : block with statement
-	waitfor(f1, a) {
+	waitfor(f1, a);							$\C{// Correct : blocking case}$
+
+	waitfor(f1, a) {						$\C{// Correct : block with statement}$
 		sout | "f1" | endl;
 	}
-
-	//Correct : block waiting for f1 or f2
-	waitfor(f1, a) {
+	waitfor(f1, a) {						$\C{// Correct : block waiting for f1 or f2}$
 		sout | "f1" | endl;
 	} or waitfor(f2, a) {
 		sout | "f2" | endl;
 	}
-
-	//Correct : non-blocking case
-	waitfor(f1, a); or else;
-
-	//Correct : non-blocking case
-	waitfor(f1, a) {
+	waitfor(f1, a); or else;				$\C{// Correct : non-blocking case}$
+
+	waitfor(f1, a) {						$\C{// Correct : non-blocking case}$
 		sout | "blocked" | endl;
 	} or else {
 		sout | "didn't block" | endl;
 	}
-
-	//Correct : block at most 10 seconds
-	waitfor(f1, a) {
+	waitfor(f1, a) {						$\C{// Correct : block at most 10 seconds}$
 		sout | "blocked" | endl;
 	} or timeout( 10`s) {
 		sout | "didn't block" | endl;
 	}
-
-	//Correct : block only if b == true
-	//if b == false, don't even make the call
+	// Correct : block only if b == true if b == false, don't even make the call
 	when(b) waitfor(f1, a);
 
-	//Correct : block only if b == true
-	//if b == false, make non-blocking call
+	// Correct : block only if b == true if b == false, make non-blocking call
 	waitfor(f1, a); or when(!b) else;
 
-	//Correct : block only of t > 1
+	// Correct : block only of t > 1
 	waitfor(f1, a); or when(t > 1) timeout(t); or else;
 
-	//Incorrect : timeout clause is dead code
+	// Incorrect : timeout clause is dead code
 	waitfor(f1, a); or timeout(t); or else;
 
-	//Incorrect : order must be
-	//waitfor [or waitfor... [or timeout] [or else]]
+	// Incorrect : order must be waitfor [or waitfor... [or timeout] [or else]]
 	timeout(t); or waitfor(f1, a); or else;
 }
-\end{cfacode}
+\end{cfa}
+\caption{Correct and incorrect uses of the or, else, and timeout clause around a waitfor statement}
+\label{f:waitfor2}
 \end{figure}
 
@@ -1743,7 +2212,11 @@
 % ======================================================================
 % ======================================================================
-An interesting use for the \code{waitfor} statement is destructor semantics. Indeed, the \code{waitfor} statement can accept any \code{mutex} routine, which includes the destructor (see section \ref{data}). However, with the semantics discussed until now, waiting for the destructor does not make any sense, since using an object after its destructor is called is undefined behaviour. The simplest approach is to disallow \code{waitfor} on a destructor. However, a more expressive approach is to flip ordering of execution when waiting for the destructor, meaning that waiting for the destructor allows the destructor to run after the current \code{mutex} routine, similarly to how a condition is signalled.
+An interesting use for the @waitfor@ statement is destructor semantics.
+Indeed, the @waitfor@ statement can accept any @mutex@ routine, which includes the destructor (see section \ref{data}).
+However, with the semantics discussed until now, waiting for the destructor does not make any sense, since using an object after its destructor is called is undefined behaviour.
+The simplest approach is to disallow @waitfor@ on a destructor.
+However, a more expressive approach is to flip ordering of execution when waiting for the destructor, meaning that waiting for the destructor allows the destructor to run after the current @mutex@ routine, similarly to how a condition is signalled.
 \begin{figure}
-\begin{cfacode}[caption={Example of an executor which executes action in series until the destructor is called.},label={lst:dtor-order}]
+\begin{cfa}[caption={Example of an executor which executes action in series until the destructor is called.},label={f:dtor-order}]
 monitor Executer {};
 struct  Action;
@@ -1759,7 +2232,8 @@
 	}
 }
-\end{cfacode}
+\end{cfa}
 \end{figure}
-For example, listing \ref{lst:dtor-order} shows an example of an executor with an infinite loop, which waits for the destructor to break out of this loop. Switching the semantic meaning introduces an idiomatic way to terminate a task and/or wait for its termination via destruction.
+For example, listing \ref{f:dtor-order} shows an example of an executor with an infinite loop, which waits for the destructor to break out of this loop.
+Switching the semantic meaning introduces an idiomatic way to terminate a task and/or wait for its termination via destruction.
 
 
@@ -1772,42 +2246,88 @@
 % #       #     # #     # #     # ####### ####### ####### ####### ###  #####  #     #
 \section{Parallelism}
-Historically, computer performance was about processor speeds and instruction counts. However, with heat dissipation being a direct consequence of speed increase, parallelism has become the new source for increased performance~\cite{Sutter05, Sutter05b}. In this decade, it is no longer reasonable to create a high-performance application without caring about parallelism. Indeed, parallelism is an important aspect of performance and more specifically throughput and hardware utilization. The lowest-level approach of parallelism is to use \textbf{kthread} in combination with semantics like \code{fork}, \code{join}, etc. However, since these have significant costs and limitations, \textbf{kthread} are now mostly used as an implementation tool rather than a user oriented one. There are several alternatives to solve these issues that all have strengths and weaknesses. While there are many variations of the presented paradigms, most of these variations do not actually change the guarantees or the semantics, they simply move costs in order to achieve better performance for certain workloads.
+Historically, computer performance was about processor speeds and instruction counts.
+However, with heat dissipation being a direct consequence of speed increase, parallelism has become the new source for increased performance~\cite{Sutter05, Sutter05b}.
+In this decade, it is no longer reasonable to create a high-performance application without caring about parallelism.
+Indeed, parallelism is an important aspect of performance and more specifically throughput and hardware utilization.
+The lowest-level approach of parallelism is to use \textbf{kthread} in combination with semantics like @fork@, @join@, \etc.
+However, since these have significant costs and limitations, \textbf{kthread} are now mostly used as an implementation tool rather than a user oriented one.
+There are several alternatives to solve these issues that all have strengths and weaknesses.
+While there are many variations of the presented paradigms, most of these variations do not actually change the guarantees or the semantics, they simply move costs in order to achieve better performance for certain workloads.
 
 \section{Paradigms}
 \subsection{User-Level Threads}
-A direct improvement on the \textbf{kthread} approach is to use \textbf{uthread}. These threads offer most of the same features that the operating system already provides but can be used on a much larger scale. This approach is the most powerful solution as it allows all the features of multithreading, while removing several of the more expensive costs of kernel threads. The downside is that almost none of the low-level threading problems are hidden; users still have to think about data races, deadlocks and synchronization issues. These issues can be somewhat alleviated by a concurrency toolkit with strong guarantees, but the parallelism toolkit offers very little to reduce complexity in itself.
+A direct improvement on the \textbf{kthread} approach is to use \textbf{uthread}.
+These threads offer most of the same features that the operating system already provides but can be used on a much larger scale.
+This approach is the most powerful solution as it allows all the features of multithreading, while removing several of the more expensive costs of kernel threads.
+The downside is that almost none of the low-level threading problems are hidden; users still have to think about data races, deadlocks and synchronization issues.
+These issues can be somewhat alleviated by a concurrency toolkit with strong guarantees, but the parallelism toolkit offers very little to reduce complexity in itself.
 
 Examples of languages that support \textbf{uthread} are Erlang~\cite{Erlang} and \uC~\cite{uC++book}.
 
 \subsection{Fibers : User-Level Threads Without Preemption} \label{fibers}
-A popular variant of \textbf{uthread} is what is often referred to as \textbf{fiber}. However, \textbf{fiber} do not present meaningful semantic differences with \textbf{uthread}. The significant difference between \textbf{uthread} and \textbf{fiber} is the lack of \textbf{preemption} in the latter. Advocates of \textbf{fiber} list their high performance and ease of implementation as major strengths, but the performance difference between \textbf{uthread} and \textbf{fiber} is controversial, and the ease of implementation, while true, is a weak argument in the context of language design. Therefore this proposal largely ignores fibers.
+A popular variant of \textbf{uthread} is what is often referred to as \textbf{fiber}.
+However, \textbf{fiber} do not present meaningful semantic differences with \textbf{uthread}.
+The significant difference between \textbf{uthread} and \textbf{fiber} is the lack of \textbf{preemption} in the latter.
+Advocates of \textbf{fiber} list their high performance and ease of implementation as major strengths, but the performance difference between \textbf{uthread} and \textbf{fiber} is controversial, and the ease of implementation, while true, is a weak argument in the context of language design.
+Therefore this proposal largely ignores fibers.
 
 An example of a language that uses fibers is Go~\cite{Go}
 
 \subsection{Jobs and Thread Pools}
-An approach on the opposite end of the spectrum is to base parallelism on \textbf{pool}. Indeed, \textbf{pool} offer limited flexibility but at the benefit of a simpler user interface. In \textbf{pool} based systems, users express parallelism as units of work, called jobs, and a dependency graph (either explicit or implicit) that ties them together. This approach means users need not worry about concurrency but significantly limit the interaction that can occur among jobs. Indeed, any \textbf{job} that blocks also block the underlying worker, which effectively means the CPU utilization, and therefore throughput, suffers noticeably. It can be argued that a solution to this problem is to use more workers than available cores. However, unless the number of jobs and the number of workers are comparable, having a significant number of blocked jobs always results in idles cores.
+An approach on the opposite end of the spectrum is to base parallelism on \textbf{pool}.
+Indeed, \textbf{pool} offer limited flexibility but at the benefit of a simpler user interface.
+In \textbf{pool} based systems, users express parallelism as units of work, called jobs, and a dependency graph (either explicit or implicit) that ties them together.
+This approach means users need not worry about concurrency but significantly limit the interaction that can occur among jobs.
+Indeed, any \textbf{job} that blocks also block the underlying worker, which effectively means the CPU utilization, and therefore throughput, suffers noticeably.
+It can be argued that a solution to this problem is to use more workers than available cores.
+However, unless the number of jobs and the number of workers are comparable, having a significant number of blocked jobs always results in idles cores.
 
 The gold standard of this implementation is Intel's TBB library~\cite{TBB}.
 
 \subsection{Paradigm Performance}
-While the choice between the three paradigms listed above may have significant performance implications, it is difficult to pin down the performance implications of choosing a model at the language level. Indeed, in many situations one of these paradigms may show better performance but it all strongly depends on the workload. Having a large amount of mostly independent units of work to execute almost guarantees equivalent performance across paradigms and that the \textbf{pool}-based system has the best efficiency thanks to the lower memory overhead (i.e., no thread stack per job). However, interactions among jobs can easily exacerbate contention. User-level threads allow fine-grain context switching, which results in better resource utilization, but a context switch is more expensive and the extra control means users need to tweak more variables to get the desired performance. Finally, if the units of uninterrupted work are large, enough the paradigm choice is largely amortized by the actual work done.
+While the choice between the three paradigms listed above may have significant performance implications, it is difficult to pin down the performance implications of choosing a model at the language level.
+Indeed, in many situations one of these paradigms may show better performance but it all strongly depends on the workload.
+Having a large amount of mostly independent units of work to execute almost guarantees equivalent performance across paradigms and that the \textbf{pool}-based system has the best efficiency thanks to the lower memory overhead (\ie no thread stack per job).
+However, interactions among jobs can easily exacerbate contention.
+User-level threads allow fine-grain context switching, which results in better resource utilization, but a context switch is more expensive and the extra control means users need to tweak more variables to get the desired performance.
+Finally, if the units of uninterrupted work are large, enough the paradigm choice is largely amortized by the actual work done.
 
 \section{The \protect\CFA\ Kernel : Processors, Clusters and Threads}\label{kernel}
-A \textbf{cfacluster} is a group of \textbf{kthread} executed in isolation. \textbf{uthread} are scheduled on the \textbf{kthread} of a given \textbf{cfacluster}, allowing organization between \textbf{uthread} and \textbf{kthread}. It is important that \textbf{kthread} belonging to a same \textbf{cfacluster} have homogeneous settings, otherwise migrating a \textbf{uthread} from one \textbf{kthread} to the other can cause issues. A \textbf{cfacluster} also offers a pluggable scheduler that can optimize the workload generated by the \textbf{uthread}.
-
-\textbf{cfacluster} have not been fully implemented in the context of this paper. Currently \CFA only supports one \textbf{cfacluster}, the initial one.
+A \textbf{cfacluster} is a group of \textbf{kthread} executed in isolation. \textbf{uthread} are scheduled on the \textbf{kthread} of a given \textbf{cfacluster}, allowing organization between \textbf{uthread} and \textbf{kthread}.
+It is important that \textbf{kthread} belonging to a same \textbf{cfacluster} have homogeneous settings, otherwise migrating a \textbf{uthread} from one \textbf{kthread} to the other can cause issues.
+A \textbf{cfacluster} also offers a pluggable scheduler that can optimize the workload generated by the \textbf{uthread}.
+
+\textbf{cfacluster} have not been fully implemented in the context of this paper.
+Currently \CFA only supports one \textbf{cfacluster}, the initial one.
 
 \subsection{Future Work: Machine Setup}\label{machine}
-While this was not done in the context of this paper, another important aspect of clusters is affinity. While many common desktop and laptop PCs have homogeneous CPUs, other devices often have more heterogeneous setups. For example, a system using \textbf{numa} configurations may benefit from users being able to tie clusters and/or kernel threads to certain CPU cores. OS support for CPU affinity is now common~\cite{affinityLinux, affinityWindows, affinityFreebsd, affinityNetbsd, affinityMacosx}, which means it is both possible and desirable for \CFA to offer an abstraction mechanism for portable CPU affinity.
+While this was not done in the context of this paper, another important aspect of clusters is affinity.
+While many common desktop and laptop PCs have homogeneous CPUs, other devices often have more heterogeneous setups.
+For example, a system using \textbf{numa} configurations may benefit from users being able to tie clusters and/or kernel threads to certain CPU cores.
+OS support for CPU affinity is now common~\cite{affinityLinux, affinityWindows, affinityFreebsd, affinityNetbsd, affinityMacosx}, which means it is both possible and desirable for \CFA to offer an abstraction mechanism for portable CPU affinity.
 
 \subsection{Paradigms}\label{cfaparadigms}
-Given these building blocks, it is possible to reproduce all three of the popular paradigms. Indeed, \textbf{uthread} is the default paradigm in \CFA. However, disabling \textbf{preemption} on the \textbf{cfacluster} means \textbf{cfathread} effectively become \textbf{fiber}. Since several \textbf{cfacluster} with different scheduling policy can coexist in the same application, this allows \textbf{fiber} and \textbf{uthread} to coexist in the runtime of an application. Finally, it is possible to build executors for thread pools from \textbf{uthread} or \textbf{fiber}, which includes specialized jobs like actors~\cite{Actors}.
+Given these building blocks, it is possible to reproduce all three of the popular paradigms.
+Indeed, \textbf{uthread} is the default paradigm in \CFA.
+However, disabling \textbf{preemption} on the \textbf{cfacluster} means \textbf{cfathread} effectively become \textbf{fiber}.
+Since several \textbf{cfacluster} with different scheduling policy can coexist in the same application, this allows \textbf{fiber} and \textbf{uthread} to coexist in the runtime of an application.
+Finally, it is possible to build executors for thread pools from \textbf{uthread} or \textbf{fiber}, which includes specialized jobs like actors~\cite{Actors}.
 
 
 
 \section{Behind the Scenes}
-There are several challenges specific to \CFA when implementing concurrency. These challenges are a direct result of \textbf{bulk-acq} and loose object definitions. These two constraints are the root cause of most design decisions in the implementation. Furthermore, to avoid contention from dynamically allocating memory in a concurrent environment, the internal-scheduling design is (almost) entirely free of mallocs. This approach avoids the chicken and egg problem~\cite{Chicken} of having a memory allocator that relies on the threading system and a threading system that relies on the runtime. This extra goal means that memory management is a constant concern in the design of the system.
-
-The main memory concern for concurrency is queues. All blocking operations are made by parking threads onto queues and all queues are designed with intrusive nodes, where each node has pre-allocated link fields for chaining, to avoid the need for memory allocation. Since several concurrency operations can use an unbound amount of memory (depending on \textbf{bulk-acq}), statically defining information in the intrusive fields of threads is insufficient.The only way to use a variable amount of memory without requiring memory allocation is to pre-allocate large buffers of memory eagerly and store the information in these buffers. Conveniently, the call stack fits that description and is easy to use, which is why it is used heavily in the implementation of internal scheduling, particularly variable-length arrays. Since stack allocation is based on scopes, the first step of the implementation is to identify the scopes that are available to store the information, and which of these can have a variable-length array. The threads and the condition both have a fixed amount of memory, while \code{mutex} routines and blocking calls allow for an unbound amount, within the stack size.
+There are several challenges specific to \CFA when implementing concurrency.
+These challenges are a direct result of \textbf{bulk-acq} and loose object definitions.
+These two constraints are the root cause of most design decisions in the implementation.
+Furthermore, to avoid contention from dynamically allocating memory in a concurrent environment, the internal-scheduling design is (almost) entirely free of mallocs.
+This approach avoids the chicken and egg problem~\cite{Chicken} of having a memory allocator that relies on the threading system and a threading system that relies on the runtime.
+This extra goal means that memory management is a constant concern in the design of the system.
+
+The main memory concern for concurrency is queues.
+All blocking operations are made by parking threads onto queues and all queues are designed with intrusive nodes, where each node has pre-allocated link fields for chaining, to avoid the need for memory allocation.
+Since several concurrency operations can use an unbound amount of memory (depending on \textbf{bulk-acq}), statically defining information in the intrusive fields of threads is insufficient.The only way to use a variable amount of memory without requiring memory allocation is to pre-allocate large buffers of memory eagerly and store the information in these buffers.
+Conveniently, the call stack fits that description and is easy to use, which is why it is used heavily in the implementation of internal scheduling, particularly variable-length arrays.
+Since stack allocation is based on scopes, the first step of the implementation is to identify the scopes that are available to store the information, and which of these can have a variable-length array.
+The threads and the condition both have a fixed amount of memory, while @mutex@ routines and blocking calls allow for an unbound amount, within the stack size.
 
 Note that since the major contributions of this paper are extending monitor semantics to \textbf{bulk-acq} and loose object definitions, any challenges that are not resulting of these characteristics of \CFA are considered as solved problems and therefore not discussed.
@@ -1819,9 +2339,16 @@
 % ======================================================================
 
-The first step towards the monitor implementation is simple \code{mutex} routines. In the single monitor case, mutual-exclusion is done using the entry/exit procedure in listing \ref{lst:entry1}. The entry/exit procedures do not have to be extended to support multiple monitors. Indeed it is sufficient to enter/leave monitors one-by-one as long as the order is correct to prevent deadlock~\cite{Havender68}. In \CFA, ordering of monitor acquisition relies on memory ordering. This approach is sufficient because all objects are guaranteed to have distinct non-overlapping memory layouts and mutual-exclusion for a monitor is only defined for its lifetime, meaning that destroying a monitor while it is acquired is undefined behaviour. When a mutex call is made, the concerned monitors are aggregated into a variable-length pointer array and sorted based on pointer values. This array persists for the entire duration of the mutual-exclusion and its ordering reused extensively.
+The first step towards the monitor implementation is simple @mutex@ routines.
+In the single monitor case, mutual-exclusion is done using the entry/exit procedure in listing \ref{f:entry1}.
+The entry/exit procedures do not have to be extended to support multiple monitors.
+Indeed it is sufficient to enter/leave monitors one-by-one as long as the order is correct to prevent deadlock~\cite{Havender68}.
+In \CFA, ordering of monitor acquisition relies on memory ordering.
+This approach is sufficient because all objects are guaranteed to have distinct non-overlapping memory layouts and mutual-exclusion for a monitor is only defined for its lifetime, meaning that destroying a monitor while it is acquired is undefined behaviour.
+When a mutex call is made, the concerned monitors are aggregated into a variable-length pointer array and sorted based on pointer values.
+This array persists for the entire duration of the mutual-exclusion and its ordering reused extensively.
 \begin{figure}
 \begin{multicols}{2}
 Entry
-\begin{pseudo}
+\begin{cfa}
 if monitor is free
 	enter
@@ -1831,32 +2358,36 @@
 	block
 increment recursions
-\end{pseudo}
+\end{cfa}
 \columnbreak
 Exit
-\begin{pseudo}
+\begin{cfa}
 decrement recursion
 if recursion == 0
 	if entry queue not empty
 		wake-up thread
-\end{pseudo}
+\end{cfa}
 \end{multicols}
-\begin{pseudo}[caption={Initial entry and exit routine for monitors},label={lst:entry1}]
-\end{pseudo}
+\begin{cfa}[caption={Initial entry and exit routine for monitors},label={f:entry1}]
+\end{cfa}
 \end{figure}
 
 \subsection{Details: Interaction with polymorphism}
-Depending on the choice of semantics for when monitor locks are acquired, interaction between monitors and \CFA's concept of polymorphism can be more complex to support. However, it is shown that entry-point locking solves most of the issues.
-
-First of all, interaction between \code{otype} polymorphism (see Section~\ref{s:ParametricPolymorphism}) and monitors is impossible since monitors do not support copying. Therefore, the main question is how to support \code{dtype} polymorphism. It is important to present the difference between the two acquiring options: \textbf{callsite-locking} and entry-point locking, i.e., acquiring the monitors before making a mutex routine-call or as the first operation of the mutex routine-call. For example:
-\begin{table}[H]
+Depending on the choice of semantics for when monitor locks are acquired, interaction between monitors and \CFA's concept of polymorphism can be more complex to support.
+However, it is shown that entry-point locking solves most of the issues.
+
+First of all, interaction between @otype@ polymorphism (see Section~\ref{s:ParametricPolymorphism}) and monitors is impossible since monitors do not support copying.
+Therefore, the main question is how to support @dtype@ polymorphism.
+It is important to present the difference between the two acquiring options: \textbf{callsite-locking} and entry-point locking, \ie acquiring the monitors before making a mutex routine-call or as the first operation of the mutex routine-call.
+For example:
+\begin{table}
 \begin{center}
 \begin{tabular}{|c|c|c|}
 Mutex & \textbf{callsite-locking} & \textbf{entry-point-locking} \\
-call & pseudo-code & pseudo-code \\
+call & cfa-code & cfa-code \\
 \hline
-\begin{cfacode}[tabsize=3]
+\begin{cfa}[tabsize=3]
 void foo(monitor& mutex a){
 
-	//Do Work
+	// Do Work
 	//...
 
@@ -1869,8 +2400,8 @@
 
 }
-\end{cfacode} & \begin{pseudo}[tabsize=3]
+\end{cfa} & \begin{cfa}[tabsize=3]
 foo(& a) {
 
-	//Do Work
+	// Do Work
 	//...
 
@@ -1883,8 +2414,8 @@
 	release(a);
 }
-\end{pseudo} & \begin{pseudo}[tabsize=3]
+\end{cfa} & \begin{cfa}[tabsize=3]
 foo(& a) {
 	acquire(a);
-	//Do Work
+	// Do Work
 	//...
 	release(a);
@@ -1897,5 +2428,5 @@
 
 }
-\end{pseudo}
+\end{cfa}
 \end{tabular}
 \end{center}
@@ -1904,16 +2435,20 @@
 \end{table}
 
-Note the \code{mutex} keyword relies on the type system, which means that in cases where a generic monitor-routine is desired, writing the mutex routine is possible with the proper trait, e.g.:
-\begin{cfacode}
-//Incorrect: T may not be monitor
+Note the @mutex@ keyword relies on the type system, which means that in cases where a generic monitor-routine is desired, writing the mutex routine is possible with the proper trait, \eg:
+\begin{cfa}
+// Incorrect: T may not be monitor
 forall(dtype T)
 void foo(T * mutex t);
 
-//Correct: this function only works on monitors (any monitor)
+// Correct: this function only works on monitors (any monitor)
 forall(dtype T | is_monitor(T))
 void bar(T * mutex t));
-\end{cfacode}
-
-Both entry point and \textbf{callsite-locking} are feasible implementations. The current \CFA implementation uses entry-point locking because it requires less work when using \textbf{raii}, effectively transferring the burden of implementation to object construction/destruction. It is harder to use \textbf{raii} for call-site locking, as it does not necessarily have an existing scope that matches exactly the scope of the mutual exclusion, i.e., the function body. For example, the monitor call can appear in the middle of an expression. Furthermore, entry-point locking requires less code generation since any useful routine is called multiple times but there is only one entry point for many call sites.
+\end{cfa}
+
+Both entry point and \textbf{callsite-locking} are feasible implementations.
+The current \CFA implementation uses entry-point locking because it requires less work when using \textbf{raii}, effectively transferring the burden of implementation to object construction/destruction.
+It is harder to use \textbf{raii} for call-site locking, as it does not necessarily have an existing scope that matches exactly the scope of the mutual exclusion, \ie the function body.
+For example, the monitor call can appear in the middle of an expression.
+Furthermore, entry-point locking requires less code generation since any useful routine is called multiple times but there is only one entry point for many call sites.
 
 % ======================================================================
@@ -1923,5 +2458,6 @@
 % ======================================================================
 
-Figure \ref{fig:system1} shows a high-level picture if the \CFA runtime system in regards to concurrency. Each component of the picture is explained in detail in the flowing sections.
+Figure \ref{fig:system1} shows a high-level picture if the \CFA runtime system in regards to concurrency.
+Each component of the picture is explained in detail in the flowing sections.
 
 \begin{figure}
@@ -1934,26 +2470,70 @@
 
 \subsection{Processors}
-Parallelism in \CFA is built around using processors to specify how much parallelism is desired. \CFA processors are object wrappers around kernel threads, specifically \texttt{pthread}s in the current implementation of \CFA. Indeed, any parallelism must go through operating-system libraries. However, \textbf{uthread} are still the main source of concurrency, processors are simply the underlying source of parallelism. Indeed, processor \textbf{kthread} simply fetch a \textbf{uthread} from the scheduler and run it; they are effectively executers for user-threads. The main benefit of this approach is that it offers a well-defined boundary between kernel code and user code, for example, kernel thread quiescing, scheduling and interrupt handling. Processors internally use coroutines to take advantage of the existing context-switching semantics.
+Parallelism in \CFA is built around using processors to specify how much parallelism is desired. \CFA processors are object wrappers around kernel threads, specifically @pthread@s in the current implementation of \CFA.
+Indeed, any parallelism must go through operating-system libraries.
+However, \textbf{uthread} are still the main source of concurrency, processors are simply the underlying source of parallelism.
+Indeed, processor \textbf{kthread} simply fetch a \textbf{uthread} from the scheduler and run it; they are effectively executers for user-threads.
+The main benefit of this approach is that it offers a well-defined boundary between kernel code and user code, for example, kernel thread quiescing, scheduling and interrupt handling.
+Processors internally use coroutines to take advantage of the existing context-switching semantics.
 
 \subsection{Stack Management}
-One of the challenges of this system is to reduce the footprint as much as possible. Specifically, all \texttt{pthread}s created also have a stack created with them, which should be used as much as possible. Normally, coroutines also create their own stack to run on, however, in the case of the coroutines used for processors, these coroutines run directly on the \textbf{kthread} stack, effectively stealing the processor stack. The exception to this rule is the Main Processor, i.e., the initial \textbf{kthread} that is given to any program. In order to respect C user expectations, the stack of the initial kernel thread, the main stack of the program, is used by the main user thread rather than the main processor, which can grow very large.
+One of the challenges of this system is to reduce the footprint as much as possible.
+Specifically, all @pthread@s created also have a stack created with them, which should be used as much as possible.
+Normally, coroutines also create their own stack to run on, however, in the case of the coroutines used for processors, these coroutines run directly on the \textbf{kthread} stack, effectively stealing the processor stack.
+The exception to this rule is the Main Processor, \ie the initial \textbf{kthread} that is given to any program.
+In order to respect C user expectations, the stack of the initial kernel thread, the main stack of the program, is used by the main user thread rather than the main processor, which can grow very large.
 
 \subsection{Context Switching}
-As mentioned in section \ref{coroutine}, coroutines are a stepping stone for implementing threading, because they share the same mechanism for context-switching between different stacks. To improve performance and simplicity, context-switching is implemented using the following assumption: all context-switches happen inside a specific function call. This assumption means that the context-switch only has to copy the callee-saved registers onto the stack and then switch the stack registers with the ones of the target coroutine/thread. Note that the instruction pointer can be left untouched since the context-switch is always inside the same function. Threads, however, do not context-switch between each other directly. They context-switch to the scheduler. This method is called a 2-step context-switch and has the advantage of having a clear distinction between user code and the kernel where scheduling and other system operations happen. Obviously, this doubles the context-switch cost because threads must context-switch to an intermediate stack. The alternative 1-step context-switch uses the stack of the ``from'' thread to schedule and then context-switches directly to the ``to'' thread. However, the performance of the 2-step context-switch is still superior to a \code{pthread_yield} (see section \ref{results}). Additionally, for users in need for optimal performance, it is important to note that having a 2-step context-switch as the default does not prevent \CFA from offering a 1-step context-switch (akin to the Microsoft \code{SwitchToFiber}~\cite{switchToWindows} routine). This option is not currently present in \CFA, but the changes required to add it are strictly additive.
+As mentioned in section \ref{coroutine}, coroutines are a stepping stone for implementing threading, because they share the same mechanism for context-switching between different stacks.
+To improve performance and simplicity, context-switching is implemented using the following assumption: all context-switches happen inside a specific function call.
+This assumption means that the context-switch only has to copy the callee-saved registers onto the stack and then switch the stack registers with the ones of the target coroutine/thread.
+Note that the instruction pointer can be left untouched since the context-switch is always inside the same function.
+Threads, however, do not context-switch between each other directly.
+They context-switch to the scheduler.
+This method is called a 2-step context-switch and has the advantage of having a clear distinction between user code and the kernel where scheduling and other system operations happen.
+Obviously, this doubles the context-switch cost because threads must context-switch to an intermediate stack.
+The alternative 1-step context-switch uses the stack of the ``from'' thread to schedule and then context-switches directly to the ``to'' thread.
+However, the performance of the 2-step context-switch is still superior to a @pthread_yield@ (see section \ref{results}).
+Additionally, for users in need for optimal performance, it is important to note that having a 2-step context-switch as the default does not prevent \CFA from offering a 1-step context-switch (akin to the Microsoft @SwitchToFiber@~\cite{switchToWindows} routine).
+This option is not currently present in \CFA, but the changes required to add it are strictly additive.
 
 \subsection{Preemption} \label{preemption}
-Finally, an important aspect for any complete threading system is preemption. As mentioned in section \ref{basics}, preemption introduces an extra degree of uncertainty, which enables users to have multiple threads interleave transparently, rather than having to cooperate among threads for proper scheduling and CPU distribution. Indeed, preemption is desirable because it adds a degree of isolation among threads. In a fully cooperative system, any thread that runs a long loop can starve other threads, while in a preemptive system, starvation can still occur but it does not rely on every thread having to yield or block on a regular basis, which reduces significantly a programmer burden. Obviously, preemption is not optimal for every workload. However any preemptive system can become a cooperative system by making the time slices extremely large. Therefore, \CFA uses a preemptive threading system.
-
-Preemption in \CFA\footnote{Note that the implementation of preemption is strongly tied with the underlying threading system. For this reason, only the Linux implementation is cover, \CFA does not run on Windows at the time of writting} is based on kernel timers, which are used to run a discrete-event simulation. Every processor keeps track of the current time and registers an expiration time with the preemption system. When the preemption system receives a change in preemption, it inserts the time in a sorted order and sets a kernel timer for the closest one, effectively stepping through preemption events on each signal sent by the timer. These timers use the Linux signal {\tt SIGALRM}, which is delivered to the process rather than the kernel-thread. This results in an implementation problem, because when delivering signals to a process, the kernel can deliver the signal to any kernel thread for which the signal is not blocked, i.e.:
+Finally, an important aspect for any complete threading system is preemption.
+As mentioned in section \ref{basics}, preemption introduces an extra degree of uncertainty, which enables users to have multiple threads interleave transparently, rather than having to cooperate among threads for proper scheduling and CPU distribution.
+Indeed, preemption is desirable because it adds a degree of isolation among threads.
+In a fully cooperative system, any thread that runs a long loop can starve other threads, while in a preemptive system, starvation can still occur but it does not rely on every thread having to yield or block on a regular basis, which reduces significantly a programmer burden.
+Obviously, preemption is not optimal for every workload.
+However any preemptive system can become a cooperative system by making the time slices extremely large.
+Therefore, \CFA uses a preemptive threading system.
+
+Preemption in \CFA\footnote{Note that the implementation of preemption is strongly tied with the underlying threading system.
+For this reason, only the Linux implementation is cover, \CFA does not run on Windows at the time of writting} is based on kernel timers, which are used to run a discrete-event simulation.
+Every processor keeps track of the current time and registers an expiration time with the preemption system.
+When the preemption system receives a change in preemption, it inserts the time in a sorted order and sets a kernel timer for the closest one, effectively stepping through preemption events on each signal sent by the timer.
+These timers use the Linux signal {\tt SIGALRM}, which is delivered to the process rather than the kernel-thread.
+This results in an implementation problem, because when delivering signals to a process, the kernel can deliver the signal to any kernel thread for which the signal is not blocked, \ie:
 \begin{quote}
-A process-directed signal may be delivered to any one of the threads that does not currently have the signal blocked. If more than one of the threads has the signal unblocked, then the kernel chooses an arbitrary thread to which to deliver the signal.
+A process-directed signal may be delivered to any one of the threads that does not currently have the signal blocked.
+If more than one of the threads has the signal unblocked, then the kernel chooses an arbitrary thread to which to deliver the signal.
 SIGNAL(7) - Linux Programmer's Manual
 \end{quote}
 For the sake of simplicity, and in order to prevent the case of having two threads receiving alarms simultaneously, \CFA programs block the {\tt SIGALRM} signal on every kernel thread except one.
 
-Now because of how involuntary context-switches are handled, the kernel thread handling {\tt SIGALRM} cannot also be a processor thread. Hence, involuntary context-switching is done by sending signal {\tt SIGUSR1} to the corresponding proces\-sor and having the thread yield from inside the signal handler. This approach effectively context-switches away from the signal handler back to the kernel and the signal handler frame is eventually unwound when the thread is scheduled again. As a result, a signal handler can start on one kernel thread and terminate on a second kernel thread (but the same user thread). It is important to note that signal handlers save and restore signal masks because user-thread migration can cause a signal mask to migrate from one kernel thread to another. This behaviour is only a problem if all kernel threads, among which a user thread can migrate, differ in terms of signal masks\footnote{Sadly, official POSIX documentation is silent on what distinguishes ``async-signal-safe'' functions from other functions.}. However, since the kernel thread handling preemption requires a different signal mask, executing user threads on the kernel-alarm thread can cause deadlocks. For this reason, the alarm thread is in a tight loop around a system call to \code{sigwaitinfo}, requiring very little CPU time for preemption. One final detail about the alarm thread is how to wake it when additional communication is required (e.g., on thread termination). This unblocking is also done using {\tt SIGALRM}, but sent through the \code{pthread_sigqueue}. Indeed, \code{sigwait} can differentiate signals sent from \code{pthread_sigqueue} from signals sent from alarms or the kernel.
+Now because of how involuntary context-switches are handled, the kernel thread handling {\tt SIGALRM} cannot also be a processor thread.
+Hence, involuntary context-switching is done by sending signal {\tt SIGUSR1} to the corresponding proces\-sor and having the thread yield from inside the signal handler.
+This approach effectively context-switches away from the signal handler back to the kernel and the signal handler frame is eventually unwound when the thread is scheduled again.
+As a result, a signal handler can start on one kernel thread and terminate on a second kernel thread (but the same user thread).
+It is important to note that signal handlers save and restore signal masks because user-thread migration can cause a signal mask to migrate from one kernel thread to another.
+This behaviour is only a problem if all kernel threads, among which a user thread can migrate, differ in terms of signal masks\footnote{Sadly, official POSIX documentation is silent on what distinguishes ``async-signal-safe'' functions from other functions.}.
+However, since the kernel thread handling preemption requires a different signal mask, executing user threads on the kernel-alarm thread can cause deadlocks.
+For this reason, the alarm thread is in a tight loop around a system call to @sigwaitinfo@, requiring very little CPU time for preemption.
+One final detail about the alarm thread is how to wake it when additional communication is required (\eg on thread termination).
+This unblocking is also done using {\tt SIGALRM}, but sent through the @pthread_sigqueue@.
+Indeed, @sigwait@ can differentiate signals sent from @pthread_sigqueue@ from signals sent from alarms or the kernel.
 
 \subsection{Scheduler}
-Finally, an aspect that was not mentioned yet is the scheduling algorithm. Currently, the \CFA scheduler uses a single ready queue for all processors, which is the simplest approach to scheduling. Further discussion on scheduling is present in section \ref{futur:sched}.
+Finally, an aspect that was not mentioned yet is the scheduling algorithm.
+Currently, the \CFA scheduler uses a single ready queue for all processors, which is the simplest approach to scheduling.
+Further discussion on scheduling is present in section \ref{futur:sched}.
 
 % ======================================================================
@@ -1964,5 +2544,5 @@
 The following figure is the traditional illustration of a monitor (repeated from page~\pageref{fig:ClassicalMonitor} for convenience):
 
-\begin{figure}[H]
+\begin{figure}
 \begin{center}
 {\resizebox{0.4\textwidth}{!}{\input{monitor}}}
@@ -1971,9 +2551,13 @@
 \end{figure}
 
-This picture has several components, the two most important being the entry queue and the AS-stack. The entry queue is an (almost) FIFO list where threads waiting to enter are parked, while the acceptor/signaller (AS) stack is a FILO list used for threads that have been signalled or otherwise marked as running next.
-
-For \CFA, this picture does not have support for blocking multiple monitors on a single condition. To support \textbf{bulk-acq} two changes to this picture are required. First, it is no longer helpful to attach the condition to \emph{a single} monitor. Secondly, the thread waiting on the condition has to be separated across multiple monitors, seen in figure \ref{fig:monitor_cfa}.
-
-\begin{figure}[H]
+This picture has several components, the two most important being the entry queue and the AS-stack.
+The entry queue is an (almost) FIFO list where threads waiting to enter are parked, while the acceptor/signaller (AS) stack is a FILO list used for threads that have been signalled or otherwise marked as running next.
+
+For \CFA, this picture does not have support for blocking multiple monitors on a single condition.
+To support \textbf{bulk-acq} two changes to this picture are required.
+First, it is no longer helpful to attach the condition to \emph{a single} monitor.
+Secondly, the thread waiting on the condition has to be separated across multiple monitors, seen in figure \ref{fig:monitor_cfa}.
+
+\begin{figure}
 \begin{center}
 {\resizebox{0.8\textwidth}{!}{\input{int_monitor}}}
@@ -1983,10 +2567,14 @@
 \end{figure}
 
-This picture and the proper entry and leave algorithms (see listing \ref{lst:entry2}) is the fundamental implementation of internal scheduling. Note that when a thread is moved from the condition to the AS-stack, it is conceptually split into N pieces, where N is the number of monitors specified in the parameter list. The thread is woken up when all the pieces have popped from the AS-stacks and made active. In this picture, the threads are split into halves but this is only because there are two monitors. For a specific signalling operation every monitor needs a piece of thread on its AS-stack.
-
-\begin{figure}[b]
+This picture and the proper entry and leave algorithms (see listing \ref{f:entry2}) is the fundamental implementation of internal scheduling.
+Note that when a thread is moved from the condition to the AS-stack, it is conceptually split into N pieces, where N is the number of monitors specified in the parameter list.
+The thread is woken up when all the pieces have popped from the AS-stacks and made active.
+In this picture, the threads are split into halves but this is only because there are two monitors.
+For a specific signalling operation every monitor needs a piece of thread on its AS-stack.
+
+\begin{figure}
 \begin{multicols}{2}
 Entry
-\begin{pseudo}
+\begin{cfa}
 if monitor is free
 	enter
@@ -1997,8 +2585,8 @@
 increment recursion
 
-\end{pseudo}
+\end{cfa}
 \columnbreak
 Exit
-\begin{pseudo}
+\begin{cfa}
 decrement recursion
 if recursion == 0
@@ -2010,13 +2598,16 @@
 	if entry queue not empty
 		wake-up thread
-\end{pseudo}
+\end{cfa}
 \end{multicols}
-\begin{pseudo}[caption={Entry and exit routine for monitors with internal scheduling},label={lst:entry2}]
-\end{pseudo}
+\begin{cfa}[caption={Entry and exit routine for monitors with internal scheduling},label={f:entry2}]
+\end{cfa}
 \end{figure}
 
-The solution discussed in \ref{intsched} can be seen in the exit routine of listing \ref{lst:entry2}. Basically, the solution boils down to having a separate data structure for the condition queue and the AS-stack, and unconditionally transferring ownership of the monitors but only unblocking the thread when the last monitor has transferred ownership. This solution is deadlock safe as well as preventing any potential barging. The data structures used for the AS-stack are reused extensively for external scheduling, but in the case of internal scheduling, the data is allocated using variable-length arrays on the call stack of the \code{wait} and \code{signal_block} routines.
-
-\begin{figure}[H]
+The solution discussed in \ref{intsched} can be seen in the exit routine of listing \ref{f:entry2}.
+Basically, the solution boils down to having a separate data structure for the condition queue and the AS-stack, and unconditionally transferring ownership of the monitors but only unblocking the thread when the last monitor has transferred ownership.
+This solution is deadlock safe as well as preventing any potential barging.
+The data structures used for the AS-stack are reused extensively for external scheduling, but in the case of internal scheduling, the data is allocated using variable-length arrays on the call stack of the @wait@ and @signal_block@ routines.
+
+\begin{figure}
 \begin{center}
 {\resizebox{0.8\textwidth}{!}{\input{monitor_structs.pstex_t}}}
@@ -2026,5 +2617,8 @@
 \end{figure}
 
-Figure \ref{fig:structs} shows a high-level representation of these data structures. The main idea behind them is that, a thread cannot contain an arbitrary number of intrusive ``next'' pointers for linking onto monitors. The \code{condition node} is the data structure that is queued onto a condition variable and, when signalled, the condition queue is popped and each \code{condition criterion} is moved to the AS-stack. Once all the criteria have been popped from their respective AS-stacks, the thread is woken up, which is what is shown in listing \ref{lst:entry2}.
+Figure \ref{fig:structs} shows a high-level representation of these data structures.
+The main idea behind them is that, a thread cannot contain an arbitrary number of intrusive ``next'' pointers for linking onto monitors.
+The @condition node@ is the data structure that is queued onto a condition variable and, when signalled, the condition queue is popped and each @condition criterion@ is moved to the AS-stack.
+Once all the criteria have been popped from their respective AS-stacks, the thread is woken up, which is what is shown in listing \ref{f:entry2}.
 
 % ======================================================================
@@ -2033,25 +2627,46 @@
 % ======================================================================
 % ======================================================================
-Similarly to internal scheduling, external scheduling for multiple monitors relies on the idea that waiting-thread queues are no longer specific to a single monitor, as mentioned in section \ref{extsched}. For internal scheduling, these queues are part of condition variables, which are still unique for a given scheduling operation (i.e., no signal statement uses multiple conditions). However, in the case of external scheduling, there is no equivalent object which is associated with \code{waitfor} statements. This absence means the queues holding the waiting threads must be stored inside at least one of the monitors that is acquired. These monitors being the only objects that have sufficient lifetime and are available on both sides of the \code{waitfor} statement. This requires an algorithm to choose which monitor holds the relevant queue. It is also important that said algorithm be independent of the order in which users list parameters. The proposed algorithm is to fall back on monitor lock ordering (sorting by address) and specify that the monitor that is acquired first is the one with the relevant waiting queue. This assumes that the lock acquiring order is static for the lifetime of all concerned objects but that is a reasonable constraint.
+Similarly to internal scheduling, external scheduling for multiple monitors relies on the idea that waiting-thread queues are no longer specific to a single monitor, as mentioned in section \ref{extsched}.
+For internal scheduling, these queues are part of condition variables, which are still unique for a given scheduling operation (\ie no signal statement uses multiple conditions).
+However, in the case of external scheduling, there is no equivalent object which is associated with @waitfor@ statements.
+This absence means the queues holding the waiting threads must be stored inside at least one of the monitors that is acquired.
+These monitors being the only objects that have sufficient lifetime and are available on both sides of the @waitfor@ statement.
+This requires an algorithm to choose which monitor holds the relevant queue.
+It is also important that said algorithm be independent of the order in which users list parameters.
+The proposed algorithm is to fall back on monitor lock ordering (sorting by address) and specify that the monitor that is acquired first is the one with the relevant waiting queue.
+This assumes that the lock acquiring order is static for the lifetime of all concerned objects but that is a reasonable constraint.
 
 This algorithm choice has two consequences:
 \begin{itemize}
-	\item The queue of the monitor with the lowest address is no longer a true FIFO queue because threads can be moved to the front of the queue. These queues need to contain a set of monitors for each of the waiting threads. Therefore, another thread whose set contains the same lowest address monitor but different lower priority monitors may arrive first but enter the critical section after a thread with the correct pairing.
-	\item The queue of the lowest priority monitor is both required and potentially unused. Indeed, since it is not known at compile time which monitor is the monitor which has the lowest address, every monitor needs to have the correct queues even though it is possible that some queues go unused for the entire duration of the program, for example if a monitor is only used in a specific pair.
+	\item The queue of the monitor with the lowest address is no longer a true FIFO queue because threads can be moved to the front of the queue.
+These queues need to contain a set of monitors for each of the waiting threads.
+Therefore, another thread whose set contains the same lowest address monitor but different lower priority monitors may arrive first but enter the critical section after a thread with the correct pairing.
+	\item The queue of the lowest priority monitor is both required and potentially unused.
+Indeed, since it is not known at compile time which monitor is the monitor which has the lowest address, every monitor needs to have the correct queues even though it is possible that some queues go unused for the entire duration of the program, for example if a monitor is only used in a specific pair.
 \end{itemize}
 Therefore, the following modifications need to be made to support external scheduling:
 \begin{itemize}
-	\item The threads waiting on the entry queue need to keep track of which routine they are trying to enter, and using which set of monitors. The \code{mutex} routine already has all the required information on its stack, so the thread only needs to keep a pointer to that information.
-	\item The monitors need to keep a mask of acceptable routines. This mask contains for each acceptable routine, a routine pointer and an array of monitors to go with it. It also needs storage to keep track of which routine was accepted. Since this information is not specific to any monitor, the monitors actually contain a pointer to an integer on the stack of the waiting thread. Note that if a thread has acquired two monitors but executes a \code{waitfor} with only one monitor as a parameter, setting the mask of acceptable routines to both monitors will not cause any problems since the extra monitor will not change ownership regardless. This becomes relevant when \code{when} clauses affect the number of monitors passed to a \code{waitfor} statement.
-	\item The entry/exit routines need to be updated as shown in listing \ref{lst:entry3}.
+	\item The threads waiting on the entry queue need to keep track of which routine they are trying to enter, and using which set of monitors.
+The @mutex@ routine already has all the required information on its stack, so the thread only needs to keep a pointer to that information.
+	\item The monitors need to keep a mask of acceptable routines.
+This mask contains for each acceptable routine, a routine pointer and an array of monitors to go with it.
+It also needs storage to keep track of which routine was accepted.
+Since this information is not specific to any monitor, the monitors actually contain a pointer to an integer on the stack of the waiting thread.
+Note that if a thread has acquired two monitors but executes a @waitfor@ with only one monitor as a parameter, setting the mask of acceptable routines to both monitors will not cause any problems since the extra monitor will not change ownership regardless.
+This becomes relevant when @when@ clauses affect the number of monitors passed to a @waitfor@ statement.
+	\item The entry/exit routines need to be updated as shown in listing \ref{f:entry3}.
 \end{itemize}
 
 \subsection{External Scheduling - Destructors}
-Finally, to support the ordering inversion of destructors, the code generation needs to be modified to use a special entry routine. This routine is needed because of the storage requirements of the call order inversion. Indeed, when waiting for the destructors, storage is needed for the waiting context and the lifetime of said storage needs to outlive the waiting operation it is needed for. For regular \code{waitfor} statements, the call stack of the routine itself matches this requirement but it is no longer the case when waiting for the destructor since it is pushed on to the AS-stack for later. The \code{waitfor} semantics can then be adjusted correspondingly, as seen in listing \ref{lst:entry-dtor}
+Finally, to support the ordering inversion of destructors, the code generation needs to be modified to use a special entry routine.
+This routine is needed because of the storage requirements of the call order inversion.
+Indeed, when waiting for the destructors, storage is needed for the waiting context and the lifetime of said storage needs to outlive the waiting operation it is needed for.
+For regular @waitfor@ statements, the call stack of the routine itself matches this requirement but it is no longer the case when waiting for the destructor since it is pushed on to the AS-stack for later.
+The @waitfor@ semantics can then be adjusted correspondingly, as seen in listing \ref{f:entry-dtor}
 
 \begin{figure}
 \begin{multicols}{2}
 Entry
-\begin{pseudo}
+\begin{cfa}
 if monitor is free
 	enter
@@ -2064,8 +2679,8 @@
 	block
 increment recursion
-\end{pseudo}
+\end{cfa}
 \columnbreak
 Exit
-\begin{pseudo}
+\begin{cfa}
 decrement recursion
 if recursion == 0
@@ -2080,8 +2695,8 @@
 		wake-up thread
 	endif
-\end{pseudo}
+\end{cfa}
 \end{multicols}
-\begin{pseudo}[caption={Entry and exit routine for monitors with internal scheduling and external scheduling},label={lst:entry3}]
-\end{pseudo}
+\begin{cfa}[caption={Entry and exit routine for monitors with internal scheduling and external scheduling},label={f:entry3}]
+\end{cfa}
 \end{figure}
 
@@ -2089,5 +2704,5 @@
 \begin{multicols}{2}
 Destructor Entry
-\begin{pseudo}
+\begin{cfa}
 if monitor is free
 	enter
@@ -2103,8 +2718,8 @@
 	wait
 increment recursion
-\end{pseudo}
+\end{cfa}
 \columnbreak
 Waitfor
-\begin{pseudo}
+\begin{cfa}
 if matching thread is already there
 	if found destructor
@@ -2126,8 +2741,8 @@
 block
 return
-\end{pseudo}
+\end{cfa}
 \end{multicols}
-\begin{pseudo}[caption={Pseudo code for the \code{waitfor} routine and the \code{mutex} entry routine for destructors},label={lst:entry-dtor}]
-\end{pseudo}
+\begin{cfa}[caption={Pseudo code for the \protect\lstinline|waitfor| routine and the \protect\lstinline|mutex| entry routine for destructors},label={f:entry-dtor}]
+\end{cfa}
 \end{figure}
 
@@ -2141,7 +2756,8 @@
 
 \section{Threads As Monitors}
-As it was subtly alluded in section \ref{threads}, \code{thread}s in \CFA are in fact monitors, which means that all monitor features are available when using threads. For example, here is a very simple two thread pipeline that could be used for a simulator of a game engine:
-\begin{figure}[H]
-\begin{cfacode}[caption={Toy simulator using \code{thread}s and \code{monitor}s.},label={lst:engine-v1}]
+As it was subtly alluded in section \ref{threads}, @thread@s in \CFA are in fact monitors, which means that all monitor features are available when using threads.
+For example, here is a very simple two thread pipeline that could be used for a simulator of a game engine:
+\begin{figure}
+\begin{cfa}[caption={Toy simulator using \protect\lstinline|thread|s and \protect\lstinline|monitor|s.},label={f:engine-v1}]
 // Visualization declaration
 thread Renderer {} renderer;
@@ -2170,9 +2786,10 @@
 	}
 }
-\end{cfacode}
+\end{cfa}
 \end{figure}
-One of the obvious complaints of the previous code snippet (other than its toy-like simplicity) is that it does not handle exit conditions and just goes on forever. Luckily, the monitor semantics can also be used to clearly enforce a shutdown order in a concise manner:
-\begin{figure}[H]
-\begin{cfacode}[caption={Same toy simulator with proper termination condition.},label={lst:engine-v2}]
+One of the obvious complaints of the previous code snippet (other than its toy-like simplicity) is that it does not handle exit conditions and just goes on forever.
+Luckily, the monitor semantics can also be used to clearly enforce a shutdown order in a concise manner:
+\begin{figure}
+\begin{cfa}[caption={Same toy simulator with proper termination condition.},label={f:engine-v2}]
 // Visualization declaration
 thread Renderer {} renderer;
@@ -2212,35 +2829,38 @@
 // Call destructor for simulator once simulator finishes
 // Call destructor for renderer to signify shutdown
-\end{cfacode}
+\end{cfa}
 \end{figure}
 
 \section{Fibers \& Threads}
-As mentioned in section \ref{preemption}, \CFA uses preemptive threads by default but can use fibers on demand. Currently, using fibers is done by adding the following line of code to the program~:
-\begin{cfacode}
+As mentioned in section \ref{preemption}, \CFA uses preemptive threads by default but can use fibers on demand.
+Currently, using fibers is done by adding the following line of code to the program~:
+\begin{cfa}
 unsigned int default_preemption() {
 	return 0;
 }
-\end{cfacode}
-This function is called by the kernel to fetch the default preemption rate, where 0 signifies an infinite time-slice, i.e., no preemption. However, once clusters are fully implemented, it will be possible to create fibers and \textbf{uthread} in the same system, as in listing \ref{lst:fiber-uthread}
+\end{cfa}
+This function is called by the kernel to fetch the default preemption rate, where 0 signifies an infinite time-slice, \ie no preemption.
+However, once clusters are fully implemented, it will be possible to create fibers and \textbf{uthread} in the same system, as in listing \ref{f:fiber-uthread}
 \begin{figure}
-\begin{cfacode}[caption={Using fibers and \textbf{uthread} side-by-side in \CFA},label={lst:fiber-uthread}]
-//Cluster forward declaration
+\lstset{language=CFA,deletedelim=**[is][]{`}{`}}
+\begin{cfa}[caption={Using fibers and \textbf{uthread} side-by-side in \CFA},label={f:fiber-uthread}]
+// Cluster forward declaration
 struct cluster;
 
-//Processor forward declaration
+// Processor forward declaration
 struct processor;
 
-//Construct clusters with a preemption rate
+// Construct clusters with a preemption rate
 void ?{}(cluster& this, unsigned int rate);
-//Construct processor and add it to cluster
+// Construct processor and add it to cluster
 void ?{}(processor& this, cluster& cluster);
-//Construct thread and schedule it on cluster
+// Construct thread and schedule it on cluster
 void ?{}(thread& this, cluster& cluster);
 
-//Declare two clusters
-cluster thread_cluster = { 10`ms };			//Preempt every 10 ms
-cluster fibers_cluster = { 0 };				//Never preempt
-
-//Construct 4 processors
+// Declare two clusters
+cluster thread_cluster = { 10`ms };			// Preempt every 10 ms
+cluster fibers_cluster = { 0 };				// Never preempt
+
+// Construct 4 processors
 processor processors[4] = {
 	//2 for the thread cluster
@@ -2252,9 +2872,9 @@
 };
 
-//Declares thread
+// Declares thread
 thread UThread {};
 void ?{}(UThread& this) {
-	//Construct underlying thread to automatically
-	//be scheduled on the thread cluster
+	// Construct underlying thread to automatically
+	// be scheduled on the thread cluster
 	(this){ thread_cluster }
 }
@@ -2262,14 +2882,14 @@
 void main(UThread & this);
 
-//Declares fibers
+// Declares fibers
 thread Fiber {};
 void ?{}(Fiber& this) {
-	//Construct underlying thread to automatically
-	//be scheduled on the fiber cluster
+	// Construct underlying thread to automatically
+	// be scheduled on the fiber cluster
 	(this.__thread){ fibers_cluster }
 }
 
 void main(Fiber & this);
-\end{cfacode}
+\end{cfa}
 \end{figure}
 
@@ -2281,6 +2901,7 @@
 % ======================================================================
 \section{Machine Setup}
-Table \ref{tab:machine} shows the characteristics of the machine used to run the benchmarks. All tests were made on this machine.
-\begin{table}[H]
+Table \ref{tab:machine} shows the characteristics of the machine used to run the benchmarks.
+All tests were made on this machine.
+\begin{table}
 \begin{center}
 \begin{tabular}{| l | r | l | r |}
@@ -2314,6 +2935,7 @@
 
 \section{Micro Benchmarks}
-All benchmarks are run using the same harness to produce the results, seen as the \code{BENCH()} macro in the following examples. This macro uses the following logic to benchmark the code:
-\begin{pseudo}
+All benchmarks are run using the same harness to produce the results, seen as the @BENCH()@ macro in the following examples.
+This macro uses the following logic to benchmark the code:
+\begin{cfa}
 #define BENCH(run, result) \
 	before = gettime(); \
@@ -2321,13 +2943,21 @@
 	after  = gettime(); \
 	result = (after - before) / N;
-\end{pseudo}
-The method used to get time is \code{clock_gettime(CLOCK_THREAD_CPUTIME_ID);}. Each benchmark is using many iterations of a simple call to measure the cost of the call. The specific number of iterations depends on the specific benchmark.
+\end{cfa}
+The method used to get time is @clock_gettime(CLOCK_THREAD_CPUTIME_ID);@.
+Each benchmark is using many iterations of a simple call to measure the cost of the call.
+The specific number of iterations depends on the specific benchmark.
 
 \subsection{Context-Switching}
-The first interesting benchmark is to measure how long context-switches take. The simplest approach to do this is to yield on a thread, which executes a 2-step context switch. Yielding causes the thread to context-switch to the scheduler and back, more precisely: from the \textbf{uthread} to the \textbf{kthread} then from the \textbf{kthread} back to the same \textbf{uthread} (or a different one in the general case). In order to make the comparison fair, coroutines also execute a 2-step context-switch by resuming another coroutine which does nothing but suspending in a tight loop, which is a resume/suspend cycle instead of a yield. Listing \ref{lst:ctx-switch} shows the code for coroutines and threads with the results in table \ref{tab:ctx-switch}. All omitted tests are functionally identical to one of these tests. The difference between coroutines and threads can be attributed to the cost of scheduling.
+The first interesting benchmark is to measure how long context-switches take.
+The simplest approach to do this is to yield on a thread, which executes a 2-step context switch.
+Yielding causes the thread to context-switch to the scheduler and back, more precisely: from the \textbf{uthread} to the \textbf{kthread} then from the \textbf{kthread} back to the same \textbf{uthread} (or a different one in the general case).
+In order to make the comparison fair, coroutines also execute a 2-step context-switch by resuming another coroutine which does nothing but suspending in a tight loop, which is a resume/suspend cycle instead of a yield.
+Figure~\ref{f:ctx-switch} shows the code for coroutines and threads with the results in table \ref{tab:ctx-switch}.
+All omitted tests are functionally identical to one of these tests.
+The difference between coroutines and threads can be attributed to the cost of scheduling.
 \begin{figure}
 \begin{multicols}{2}
 \CFA Coroutines
-\begin{cfacode}
+\begin{cfa}
 coroutine GreatSuspender {};
 void main(GreatSuspender& this) {
@@ -2345,8 +2975,8 @@
 	printf("%llu\n", result);
 }
-\end{cfacode}
+\end{cfa}
 \columnbreak
 \CFA Threads
-\begin{cfacode}
+\begin{cfa}
 
 
@@ -2364,8 +2994,8 @@
 	printf("%llu\n", result);
 }
-\end{cfacode}
+\end{cfa}
 \end{multicols}
-\begin{cfacode}[caption={\CFA benchmark code used to measure context-switches for coroutines and threads.},label={lst:ctx-switch}]
-\end{cfacode}
+\begin{cfa}[caption={\CFA benchmark code used to measure context-switches for coroutines and threads.},label={f:ctx-switch}]
+\end{cfa}
 \end{figure}
 
@@ -2386,13 +3016,18 @@
 \end{tabular}
 \end{center}
-\caption{Context Switch comparison. All numbers are in nanoseconds(\si{\nano\second})}
+\caption{Context Switch comparison.
+All numbers are in nanoseconds(\si{\nano\second})}
 \label{tab:ctx-switch}
 \end{table}
 
 \subsection{Mutual-Exclusion}
-The next interesting benchmark is to measure the overhead to enter/leave a critical-section. For monitors, the simplest approach is to measure how long it takes to enter and leave a monitor routine. Listing \ref{lst:mutex} shows the code for \CFA. To put the results in context, the cost of entering a non-inline function and the cost of acquiring and releasing a \code{pthread_mutex} lock is also measured. The results can be shown in table \ref{tab:mutex}.
+The next interesting benchmark is to measure the overhead to enter/leave a critical-section.
+For monitors, the simplest approach is to measure how long it takes to enter and leave a monitor routine.
+Figure~\ref{f:mutex} shows the code for \CFA.
+To put the results in context, the cost of entering a non-inline function and the cost of acquiring and releasing a @pthread_mutex@ lock is also measured.
+The results can be shown in table \ref{tab:mutex}.
 
 \begin{figure}
-\begin{cfacode}[caption={\CFA benchmark code used to measure mutex routines.},label={lst:mutex}]
+\begin{cfa}[caption={\CFA benchmark code used to measure mutex routines.},label={f:mutex}]
 monitor M {};
 void __attribute__((noinline)) call( M & mutex m /*, m2, m3, m4*/ ) {}
@@ -2408,5 +3043,5 @@
 	printf("%llu\n", result);
 }
-\end{cfacode}
+\end{cfa}
 \end{figure}
 
@@ -2420,21 +3055,24 @@
 FetchAdd + FetchSub				& 26		& 26		& 0    \\
 Pthreads Mutex Lock				& 31		& 31.86	& 0.99 \\
-\uC \code{monitor} member routine		& 30		& 30		& 0    \\
-\CFA \code{mutex} routine, 1 argument	& 41		& 41.57	& 0.9  \\
-\CFA \code{mutex} routine, 2 argument	& 76		& 76.96	& 1.57 \\
-\CFA \code{mutex} routine, 4 argument	& 145		& 146.68	& 3.85 \\
+\uC @monitor@ member routine		& 30		& 30		& 0    \\
+\CFA @mutex@ routine, 1 argument	& 41		& 41.57	& 0.9  \\
+\CFA @mutex@ routine, 2 argument	& 76		& 76.96	& 1.57 \\
+\CFA @mutex@ routine, 4 argument	& 145		& 146.68	& 3.85 \\
 Java synchronized routine			& 27		& 28.57	& 2.6  \\
 \hline
 \end{tabular}
 \end{center}
-\caption{Mutex routine comparison. All numbers are in nanoseconds(\si{\nano\second})}
+\caption{Mutex routine comparison.
+All numbers are in nanoseconds(\si{\nano\second})}
 \label{tab:mutex}
 \end{table}
 
 \subsection{Internal Scheduling}
-The internal-scheduling benchmark measures the cost of waiting on and signalling a condition variable. Listing \ref{lst:int-sched} shows the code for \CFA, with results table \ref{tab:int-sched}. As with all other benchmarks, all omitted tests are functionally identical to one of these tests.
+The internal-scheduling benchmark measures the cost of waiting on and signalling a condition variable.
+Figure~\ref{f:int-sched} shows the code for \CFA, with results table \ref{tab:int-sched}.
+As with all other benchmarks, all omitted tests are functionally identical to one of these tests.
 
 \begin{figure}
-\begin{cfacode}[caption={Benchmark code for internal scheduling},label={lst:int-sched}]
+\begin{cfa}[caption={Benchmark code for internal scheduling},label={f:int-sched}]
 volatile int go = 0;
 condition c;
@@ -2466,5 +3104,5 @@
 	return do_wait(m1);
 }
-\end{cfacode}
+\end{cfa}
 \end{figure}
 
@@ -2476,21 +3114,24 @@
 \hline
 Pthreads Condition Variable			& 5902.5	& 6093.29 	& 714.78 \\
-\uC \code{signal}					& 322		& 323 	& 3.36   \\
-\CFA \code{signal}, 1 \code{monitor}	& 352.5	& 353.11	& 3.66   \\
-\CFA \code{signal}, 2 \code{monitor}	& 430		& 430.29	& 8.97   \\
-\CFA \code{signal}, 4 \code{monitor}	& 594.5	& 606.57	& 18.33  \\
-Java \code{notify}				& 13831.5	& 15698.21	& 4782.3 \\
+\uC @signal@					& 322		& 323 	& 3.36   \\
+\CFA @signal@, 1 @monitor@	& 352.5	& 353.11	& 3.66   \\
+\CFA @signal@, 2 @monitor@	& 430		& 430.29	& 8.97   \\
+\CFA @signal@, 4 @monitor@	& 594.5	& 606.57	& 18.33  \\
+Java @notify@				& 13831.5	& 15698.21	& 4782.3 \\
 \hline
 \end{tabular}
 \end{center}
-\caption{Internal scheduling comparison. All numbers are in nanoseconds(\si{\nano\second})}
+\caption{Internal scheduling comparison.
+All numbers are in nanoseconds(\si{\nano\second})}
 \label{tab:int-sched}
 \end{table}
 
 \subsection{External Scheduling}
-The Internal scheduling benchmark measures the cost of the \code{waitfor} statement (\code{_Accept} in \uC). Listing \ref{lst:ext-sched} shows the code for \CFA, with results in table \ref{tab:ext-sched}. As with all other benchmarks, all omitted tests are functionally identical to one of these tests.
+The Internal scheduling benchmark measures the cost of the @waitfor@ statement (@_Accept@ in \uC).
+Figure~\ref{f:ext-sched} shows the code for \CFA, with results in table \ref{tab:ext-sched}.
+As with all other benchmarks, all omitted tests are functionally identical to one of these tests.
 
 \begin{figure}
-\begin{cfacode}[caption={Benchmark code for external scheduling},label={lst:ext-sched}]
+\begin{cfa}[caption={Benchmark code for external scheduling},label={f:ext-sched}]
 volatile int go = 0;
 monitor M {};
@@ -2521,5 +3162,5 @@
 	return do_wait(m1);
 }
-\end{cfacode}
+\end{cfa}
 \end{figure}
 
@@ -2530,22 +3171,27 @@
 \multicolumn{1}{c |}{} & \multicolumn{1}{c |}{ Median } &\multicolumn{1}{c |}{ Average } & \multicolumn{1}{c |}{ Standard Deviation} \\
 \hline
-\uC \code{Accept}					& 350		& 350.61	& 3.11  \\
-\CFA \code{waitfor}, 1 \code{monitor}	& 358.5	& 358.36	& 3.82  \\
-\CFA \code{waitfor}, 2 \code{monitor}	& 422		& 426.79	& 7.95  \\
-\CFA \code{waitfor}, 4 \code{monitor}	& 579.5	& 585.46	& 11.25 \\
+\uC @Accept@					& 350		& 350.61	& 3.11  \\
+\CFA @waitfor@, 1 @monitor@	& 358.5	& 358.36	& 3.82  \\
+\CFA @waitfor@, 2 @monitor@	& 422		& 426.79	& 7.95  \\
+\CFA @waitfor@, 4 @monitor@	& 579.5	& 585.46	& 11.25 \\
 \hline
 \end{tabular}
 \end{center}
-\caption{External scheduling comparison. All numbers are in nanoseconds(\si{\nano\second})}
+\caption{External scheduling comparison.
+All numbers are in nanoseconds(\si{\nano\second})}
 \label{tab:ext-sched}
 \end{table}
 
+
 \subsection{Object Creation}
-Finally, the last benchmark measures the cost of creation for concurrent objects. Listing \ref{lst:creation} shows the code for \texttt{pthread}s and \CFA threads, with results shown in table \ref{tab:creation}. As with all other benchmarks, all omitted tests are functionally identical to one of these tests. The only note here is that the call stacks of \CFA coroutines are lazily created, therefore without priming the coroutine, the creation cost is very low.
+Finally, the last benchmark measures the cost of creation for concurrent objects.
+Figure~\ref{f:creation} shows the code for @pthread@s and \CFA threads, with results shown in table \ref{tab:creation}.
+As with all other benchmarks, all omitted tests are functionally identical to one of these tests.
+The only note here is that the call stacks of \CFA coroutines are lazily created, therefore without priming the coroutine, the creation cost is very low.
 
 \begin{figure}
 \begin{center}
-\texttt{pthread}
-\begin{ccode}
+@pthread@
+\begin{cfa}
 int main() {
 	BENCH(
@@ -2566,10 +3212,10 @@
 	printf("%llu\n", result);
 }
-\end{ccode}
+\end{cfa}
 
 
 
 \CFA Threads
-\begin{cfacode}
+\begin{cfa}
 int main() {
 	BENCH(
@@ -2581,8 +3227,8 @@
 	printf("%llu\n", result);
 }
-\end{cfacode}
+\end{cfa}
 \end{center}
-\begin{cfacode}[caption={Benchmark code for \texttt{pthread}s and \CFA to measure object creation},label={lst:creation}]
-\end{cfacode}
+\caption{Benchmark code for \protect\lstinline|pthread|s and \CFA to measure object creation}
+\label{f:creation}
 \end{figure}
 
@@ -2604,5 +3250,6 @@
 \end{tabular}
 \end{center}
-\caption{Creation comparison. All numbers are in nanoseconds(\si{\nano\second}).}
+\caption{Creation comparison.
+All numbers are in nanoseconds(\si{\nano\second}).}
 \label{tab:creation}
 \end{table}
@@ -2611,5 +3258,10 @@
 
 \section{Conclusion}
-This paper has achieved a minimal concurrency \textbf{api} that is simple, efficient and usable as the basis for higher-level features. The approach presented is based on a lightweight thread-system for parallelism, which sits on top of clusters of processors. This M:N model is judged to be both more efficient and allow more flexibility for users. Furthermore, this document introduces monitors as the main concurrency tool for users. This paper also offers a novel approach allowing multiple monitors to be accessed simultaneously without running into the Nested Monitor Problem~\cite{Lister77}. It also offers a full implementation of the concurrency runtime written entirely in \CFA, effectively the largest \CFA code base to date.
+This paper has achieved a minimal concurrency \textbf{api} that is simple, efficient and usable as the basis for higher-level features.
+The approach presented is based on a lightweight thread-system for parallelism, which sits on top of clusters of processors.
+This M:N model is judged to be both more efficient and allow more flexibility for users.
+Furthermore, this document introduces monitors as the main concurrency tool for users.
+This paper also offers a novel approach allowing multiple monitors to be accessed simultaneously without running into the Nested Monitor Problem~\cite{Lister77}.
+It also offers a full implementation of the concurrency runtime written entirely in \CFA, effectively the largest \CFA code base to date.
 
 
@@ -2621,17 +3273,40 @@
 
 \subsection{Performance} \label{futur:perf}
-This paper presents a first implementation of the \CFA concurrency runtime. Therefore, there is still significant work to improve performance. Many of the data structures and algorithms may change in the future to more efficient versions. For example, the number of monitors in a single \textbf{bulk-acq} is only bound by the stack size, this is probably unnecessarily generous. It may be possible that limiting the number helps increase performance. However, it is not obvious that the benefit would be significant.
+This paper presents a first implementation of the \CFA concurrency runtime.
+Therefore, there is still significant work to improve performance.
+Many of the data structures and algorithms may change in the future to more efficient versions.
+For example, the number of monitors in a single \textbf{bulk-acq} is only bound by the stack size, this is probably unnecessarily generous.
+It may be possible that limiting the number helps increase performance.
+However, it is not obvious that the benefit would be significant.
 
 \subsection{Flexible Scheduling} \label{futur:sched}
-An important part of concurrency is scheduling. Different scheduling algorithms can affect performance (both in terms of average and variation). However, no single scheduler is optimal for all workloads and therefore there is value in being able to change the scheduler for given programs. One solution is to offer various tweaking options to users, allowing the scheduler to be adjusted to the requirements of the workload. However, in order to be truly flexible, it would be interesting to allow users to add arbitrary data and arbitrary scheduling algorithms. For example, a web server could attach Type-of-Service information to threads and have a ``ToS aware'' scheduling algorithm tailored to this specific web server. This path of flexible schedulers will be explored for \CFA.
+An important part of concurrency is scheduling.
+Different scheduling algorithms can affect performance (both in terms of average and variation).
+However, no single scheduler is optimal for all workloads and therefore there is value in being able to change the scheduler for given programs.
+One solution is to offer various tweaking options to users, allowing the scheduler to be adjusted to the requirements of the workload.
+However, in order to be truly flexible, it would be interesting to allow users to add arbitrary data and arbitrary scheduling algorithms.
+For example, a web server could attach Type-of-Service information to threads and have a ``ToS aware'' scheduling algorithm tailored to this specific web server.
+This path of flexible schedulers will be explored for \CFA.
 
 \subsection{Non-Blocking I/O} \label{futur:nbio}
-While most of the parallelism tools are aimed at data parallelism and control-flow parallelism, many modern workloads are not bound on computation but on IO operations, a common case being web servers and XaaS (anything as a service). These types of workloads often require significant engineering around amortizing costs of blocking IO operations. At its core, non-blocking I/O is an operating system level feature that allows queuing IO operations (e.g., network operations) and registering for notifications instead of waiting for requests to complete. In this context, the role of the language makes Non-Blocking IO easily available and with low overhead. The current trend is to use asynchronous programming using tools like callbacks and/or futures and promises, which can be seen in frameworks like Node.js~\cite{NodeJs} for JavaScript, Spring MVC~\cite{SpringMVC} for Java and Django~\cite{Django} for Python. However, while these are valid solutions, they lead to code that is harder to read and maintain because it is much less linear.
+While most of the parallelism tools are aimed at data parallelism and control-flow parallelism, many modern workloads are not bound on computation but on IO operations, a common case being web servers and XaaS (anything as a service).
+These types of workloads often require significant engineering around amortizing costs of blocking IO operations.
+At its core, non-blocking I/O is an operating system level feature that allows queuing IO operations (\eg network operations) and registering for notifications instead of waiting for requests to complete.
+In this context, the role of the language makes Non-Blocking IO easily available and with low overhead.
+The current trend is to use asynchronous programming using tools like callbacks and/or futures and promises, which can be seen in frameworks like Node.js~\cite{NodeJs} for JavaScript, Spring MVC~\cite{SpringMVC} for Java and Django~\cite{Django} for Python.
+However, while these are valid solutions, they lead to code that is harder to read and maintain because it is much less linear.
 
 \subsection{Other Concurrency Tools} \label{futur:tools}
-While monitors offer a flexible and powerful concurrent core for \CFA, other concurrency tools are also necessary for a complete multi-paradigm concurrency package. Examples of such tools can include simple locks and condition variables, futures and promises~\cite{promises}, executors and actors. These additional features are useful when monitors offer a level of abstraction that is inadequate for certain tasks.
+While monitors offer a flexible and powerful concurrent core for \CFA, other concurrency tools are also necessary for a complete multi-paradigm concurrency package.
+Examples of such tools can include simple locks and condition variables, futures and promises~\cite{promises}, executors and actors.
+These additional features are useful when monitors offer a level of abstraction that is inadequate for certain tasks.
 
 \subsection{Implicit Threading} \label{futur:implcit}
-Simpler applications can benefit greatly from having implicit parallelism. That is, parallelism that does not rely on the user to write concurrency. This type of parallelism can be achieved both at the language level and at the library level. The canonical example of implicit parallelism is parallel for loops, which are the simplest example of a divide and conquer algorithms~\cite{uC++book}. Table \ref{lst:parfor} shows three different code examples that accomplish point-wise sums of large arrays. Note that none of these examples explicitly declare any concurrency or parallelism objects.
+Simpler applications can benefit greatly from having implicit parallelism.
+That is, parallelism that does not rely on the user to write concurrency.
+This type of parallelism can be achieved both at the language level and at the library level.
+The canonical example of implicit parallelism is parallel for loops, which are the simplest example of a divide and conquer algorithms~\cite{uC++book}.
+Table \ref{f:parfor} shows three different code examples that accomplish point-wise sums of large arrays.
+Note that none of these examples explicitly declare any concurrency or parallelism objects.
 
 \begin{table}
@@ -2639,5 +3314,5 @@
 \begin{tabular}[t]{|c|c|c|}
 Sequential & Library Parallel & Language Parallel \\
-\begin{cfacode}[tabsize=3]
+\begin{cfa}[tabsize=3]
 void big_sum(
 	int* a, int* b,
@@ -2663,5 +3338,5 @@
 //... fill in a & b
 big_sum(a,b,c,10000);
-\end{cfacode} &\begin{cfacode}[tabsize=3]
+\end{cfa} &\begin{cfa}[tabsize=3]
 void big_sum(
 	int* a, int* b,
@@ -2687,5 +3362,5 @@
 //... fill in a & b
 big_sum(a,b,c,10000);
-\end{cfacode}&\begin{cfacode}[tabsize=3]
+\end{cfa}&\begin{cfa}[tabsize=3]
 void big_sum(
 	int* a, int* b,
@@ -2711,12 +3386,13 @@
 //... fill in a & b
 big_sum(a,b,c,10000);
-\end{cfacode}
+\end{cfa}
 \end{tabular}
 \end{center}
 \caption{For loop to sum numbers: Sequential, using library parallelism and language parallelism.}
-\label{lst:parfor}
+\label{f:parfor}
 \end{table}
 
-Implicit parallelism is a restrictive solution and therefore has its limitations. However, it is a quick and simple approach to parallelism, which may very well be sufficient for smaller applications and reduces the amount of boilerplate needed to start benefiting from parallelism in modern CPUs.
+Implicit parallelism is a restrictive solution and therefore has its limitations.
+However, it is a quick and simple approach to parallelism, which may very well be sufficient for smaller applications and reduces the amount of boilerplate needed to start benefiting from parallelism in modern CPUs.
 
 
@@ -2731,5 +3407,5 @@
 % B I B L I O G R A P H Y
 % -----------------------------
-\bibliographystyle{plain}
+%\bibliographystyle{plain}
 \bibliography{pl,local}
 
Index: doc/papers/concurrency/annex/local.bib
===================================================================
--- doc/papers/concurrency/annex/local.bib	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/concurrency/annex/local.bib	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -21,9 +21,15 @@
 @string{pldi="Programming Language Design and Implementation"}
 
-
-@article{HPP:Study,
-	keywords 	= {Parallel, Productivity},
-	author 	= {Lorin Hochstein and Jeff Carver and Forrest Shull and Sima Asgari and Victor Basili and Jeffrey K. Hollingsworth and Marvin V. Zelkowitz },
-	title 	= {Parallel Programmer Productivity: A Case Study of Novice Parallel Programmers},
+@inproceedings{Hochstein05,
+    keywords	= {Application software; Computer aided software engineering; Concurrent computing; Educational
+                  institutions; High performance computing; Humans; Instruments; Productivity; Programming profession;
+                  Software engineering},
+    author	= {Lorin Hochstein and Jeff Carver and Forrest Shull and Sima Asgari and Victor Basili and Jeffrey K. Hollingsworth and Marvin V. Zelkowitz},
+    title	= {Parallel Programmer Productivity: A Case Study of Novice Parallel Programmers},
+    booktitle	= {Supercomputing, 2005. Proceedings of the ACM/IEEE SC 2005 Conference},
+    publisher	= {IEEE},
+    year	= {2005},
+    pages	= {35-35},
+    month	= nov,
 }
 
@@ -35,9 +41,10 @@
 }
 
-@article{TBB,
-	key	= {TBB},
-	keywords 	= {Intel, TBB},
-	title 	= {Intel Thread Building Blocks},
-	note		= "\url{https://www.threadingbuildingblocks.org/}"
+@misc{TBB,
+    keywords 	= {Intel, TBB},
+    key		= {TBB},
+    title 	= {Thread Building Blocks},
+    howpublished= {Intel, \url{https://www.threadingbuildingblocks.org}},
+    note	= {Accessed: 2018-3},
 }
 
@@ -48,13 +55,4 @@
 	title 	= {C$\forall$ Programmming Language},
 	note	= {\url{https://plg.uwaterloo.ca/~cforall}},
-}
-
-@mastersthesis{rob-thesis,
-	keywords 	= {Constructors, Destructors, Tuples},
-	author	= {Rob Schluntz},
-	title 	= {Resource Management and Tuples in Cforall},
-	year		= 2017,
-	school	= {University of Waterloo},
-	note	= {\url{https://uwspace.uwaterloo.ca/handle/10012/11830}},
 }
 
Index: doc/papers/concurrency/style/cfa-format.tex
===================================================================
--- doc/papers/concurrency/style/cfa-format.tex	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/concurrency/style/cfa-format.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -1,3 +1,3 @@
-\usepackage[usenames,dvipsnames]{xcolor}
+%\usepackage[usenames,dvipsnames]{xcolor}
 \usepackage{listings}
 \usepackage{inconsolata}
@@ -11,163 +11,161 @@
 % from https://gist.github.com/nikolajquorning/92bbbeef32e1dd80105c9bf2daceb89a
 \lstdefinelanguage{sml} {
-  morekeywords= {
-    EQUAL, GREATER, LESS, NONE, SOME, abstraction, abstype, and, andalso, array, as, before, bool, case, char, datatype, do, else, end, eqtype, exception, exn, false, fn, fun, functor, handle, if, in, include, infix, infixr, int, let, list, local, nil, nonfix, not, o, of, op, open, option, orelse, overload, print, raise, real, rec, ref, sharing, sig, signature, string, struct, structure, substring, then, true, type, unit, val, vector, where, while, with, withtype, word
-  },
-  morestring=[b]",
-  morecomment=[s]{(*}{*)},
+	morekeywords= {
+		EQUAL, GREATER, LESS, NONE, SOME, abstraction, abstype, and, andalso, array, as, before,
+		bool, case, char, datatype, do, else, end, eqtype, exception, exn, false, fn, fun, functor,
+		handle, if, in, include, infix, infixr, int, let, list, local, nil, nonfix, not, o, of, op,
+		open, option, orelse, overload, print, raise, real, rec, ref, sharing, sig, signature,
+		string, struct, structure, substring, then, true, type, unit, val, vector, where, while,
+		with, withtype, word
+    },
+    morestring=[b]",
+    morecomment=[s]{(*}{*)},
 }
 
 \lstdefinelanguage{D}{
-  % Keywords
-  morekeywords=[1]{
-    abstract, alias, align, auto, body, break, cast, catch, class, const,
-    continue, debug, delegate, delete, deprecated, do, else, enum, export,
-    false, final, finally, for, foreach, foreach_reverse, function, goto, if,
-    immutable, import, in, inout, interface, invariant, is, lazy, macro, mixin,
-    module, new, nothrow, null, out, override, package, pragma, private,
-    protected, public, pure, ref, return, shared, static, struct, super,
-    switch, synchronized, template, this, throw, true, try, typedef, typeid,
-    typeof, union, unittest, volatile, while, with
-  },
-  % Special identifiers, common functions
-  morekeywords=[2]{enforce},
-  % Ugly identifiers
-  morekeywords=[3]{
-    __DATE__, __EOF__, __FILE__, __LINE__, __TIMESTAMP__, __TIME__, __VENDOR__,
-    __VERSION__, __ctfe, __gshared, __monitor, __thread, __vptr, _argptr,
-    _arguments, _ctor, _dtor
-  },
-  % Basic types
-  morekeywords=[4]{
-     byte, ubyte, short, ushort, int, uint, long, ulong, cent, ucent, void,
-     bool, bit, float, double, real, ushort, int, uint, long, ulong, float,
-     char, wchar, dchar, string, wstring, dstring, ireal, ifloat, idouble,
-     creal, cfloat, cdouble, size_t, ptrdiff_t, sizediff_t, equals_t, hash_t
-  },
-  % Strings
-  morestring=[b]{"},
-  morestring=[b]{'},
-  morestring=[b]{`},
-  % Comments
-  comment=[l]{//},
-  morecomment=[s]{/*}{*/},
-  morecomment=[s][\color{blue}]{/**}{*/},
-  morecomment=[n]{/+}{+/},
-  morecomment=[n][\color{blue}]{/++}{+/},
-  % Options
-  sensitive=true
+	% Keywords
+	morekeywords=[1]{
+		abstract, alias, align, auto, body, break, cast, catch, class, const, continue, debug,
+		delegate, delete, deprecated, do, else, enum, export, false, final, finally, for, foreach,
+		foreach_reverse, function, goto, if, immutable, import, in, inout, interface, invariant, is,
+		lazy, macro, mixin, module, new, nothrow, null, out, override, package, pragma, private,
+		protected, public, pure, ref, return, shared, static, struct, super, switch, synchronized,
+		template, this, throw, true, try, typedef, typeid, typeof, union, unittest, volatile, while,
+		with
+	},
+	% Special identifiers, common functions
+	morekeywords=[2]{enforce},
+	% Ugly identifiers
+	morekeywords=[3]{
+		__DATE__, __EOF__, __FILE__, __LINE__, __TIMESTAMP__, __TIME__, __VENDOR__,
+		__VERSION__, __ctfe, __gshared, __monitor, __thread, __vptr, _argptr,
+		_arguments, _ctor, _dtor
+	},
+	% Basic types
+	morekeywords=[4]{
+		byte, ubyte, short, ushort, int, uint, long, ulong, cent, ucent, void, bool, bit, float,
+		double, real, ushort, int, uint, long, ulong, float, char, wchar, dchar, string, wstring,
+		dstring, ireal, ifloat, idouble, creal, cfloat, cdouble, size_t, ptrdiff_t, sizediff_t,
+		equals_t, hash_t
+	},
+	% Strings
+	morestring=[b]{"},
+	morestring=[b]{'},
+	morestring=[b]{`},
+	% Comments
+	comment=[l]{//},
+	morecomment=[s]{/*}{*/},
+	morecomment=[s][\color{blue}]{/**}{*/},
+	morecomment=[n]{/+}{+/},
+	morecomment=[n][\color{blue}]{/++}{+/},
+	% Options
+	sensitive=true
 }
 
 \lstdefinelanguage{rust}{
-  % Keywords
-  morekeywords=[1]{
-    abstract, alignof, as, become, box,
-    break, const, continue, crate, do,
-    else, enum, extern, false, final,
-    fn, for, if, impl, in,
-    let, loop, macro, match, mod,
-    move, mut, offsetof, override, priv,
-    proc, pub, pure, ref, return,
-    Self, self, sizeof, static, struct,
-    super, trait, true,  type, typeof,
-    unsafe, unsized, use, virtual, where,
-    while, yield
-  },
-  % Strings
-  morestring=[b]{"},
-  % Comments
-  comment=[l]{//},
-  morecomment=[s]{/*}{*/},
-  % Options
-  sensitive=true
+	% Keywords
+	morekeywords=[1]{
+		abstract, alignof, as, become, box, break, const, continue, crate, do, else, enum, extern,
+		false, final, fn, for, if, impl, in, let, loop, macro, match, mod, move, mut, offsetof,
+		override, priv, proc, pub, pure, ref, return, Self, self, sizeof, static, struct, super,
+		trait, true, type, typeof, unsafe, unsized, use, virtual, where, while, yield
+	},
+	% Strings
+	morestring=[b]{"},
+	% Comments
+	comment=[l]{//},
+	morecomment=[s]{/*}{*/},
+	% Options
+	sensitive=true
 }
 
 \lstdefinelanguage{pseudo}{
-	morekeywords={string,uint,int,bool,float},%
-	sensitive=true,%
-	morecomment=[l]{//},%
-	morecomment=[s]{/*}{*/},%
-	morestring=[b]',%
-	morestring=[b]",%
-	morestring=[s]{`}{`},%
-}%
+	morekeywords={string,uint,int,bool,float},
+	sensitive=true,
+	morecomment=[l]{//},
+	morecomment=[s]{/*}{*/},
+	morestring=[b]',
+	morestring=[b]",
+	morestring=[s]{`}{`},
+}
 
 \newcommand{\KWC}{K-W C\xspace}
 
 \lstdefinestyle{pseudoStyle}{
-  escapeinside={@@},
-  basicstyle=\linespread{0.9}\sf\footnotesize,		% reduce line spacing and use typewriter font
-  keywordstyle=\bfseries\color{blue},
-  keywordstyle=[2]\bfseries\color{Plum},
-  commentstyle=\itshape\color{OliveGreen},		    % green and italic comments
-  identifierstyle=\color{identifierCol},
-  stringstyle=\sf\color{Mahogany},			          % use sanserif font
-  mathescape=true,
-  columns=fixed,
-  aboveskip=4pt,                                  % spacing above/below code block
-  belowskip=3pt,
-  keepspaces=true,
-  tabsize=4,
-  % frame=lines,
-  literate=,
-  showlines=true,                                 % show blank lines at end of code
-  showspaces=false,
-  showstringspaces=false,
-  escapechar=\$,
-  xleftmargin=\parindentlnth,                     % indent code to paragraph indentation
-  moredelim=[is][\color{red}\bfseries]{**R**}{**R**},    % red highlighting
-  % moredelim=* detects keywords, comments, strings, and other delimiters and applies their formatting
-  % moredelim=** allows cumulative application
+	escapeinside={@@},
+	basicstyle=\linespread{0.9}\sf\footnotesize,		% reduce line spacing and use typewriter font
+	keywordstyle=\bfseries\color{blue},
+	keywordstyle=[2]\bfseries\color{Plum},
+	commentstyle=\itshape\color{OliveGreen},		    % green and italic comments
+	identifierstyle=\color{identifierCol},
+	stringstyle=\sf\color{Mahogany},					  % use sanserif font
+	mathescape=true,
+	columns=fixed,
+	aboveskip=4pt,								  % spacing above/below code block
+	belowskip=3pt,
+	keepspaces=true,
+	tabsize=4,
+	% frame=lines,
+	literate=,
+	showlines=true,								 % show blank lines at end of code
+	showspaces=false,
+	showstringspaces=false,
+	escapechar=\$,
+	xleftmargin=\parindentlnth,				     % indent code to paragraph indentation
+	moredelim=[is][\color{red}\bfseries]{**R**}{**R**},    % red highlighting
+	% moredelim=* detects keywords, comments, strings, and other delimiters and applies their formatting
+	% moredelim=** allows cumulative application
 }
 
 \lstdefinestyle{defaultStyle}{
-  escapeinside={@@},
-  basicstyle=\linespread{0.9}\tt\footnotesize,		% reduce line spacing and use typewriter font
-  keywordstyle=\bfseries\color{blue},
-  keywordstyle=[2]\bfseries\color{Plum},
-  commentstyle=\itshape\color{OliveGreen},		    % green and italic comments
-  identifierstyle=\color{identifierCol},
-  stringstyle=\sf\color{Mahogany},			          % use sanserif font
-  mathescape=true,
-  columns=fixed,
-  aboveskip=4pt,                                  % spacing above/below code block
-  belowskip=3pt,
-  keepspaces=true,
-  tabsize=4,
-  % frame=lines,
-  literate=,
-  showlines=true,                                 % show blank lines at end of code
-  showspaces=false,
-  showstringspaces=false,
-  escapechar=\$,
-  xleftmargin=\parindentlnth,                     % indent code to paragraph indentation
-  moredelim=[is][\color{red}\bfseries]{**R**}{**R**},    % red highlighting
-  % moredelim=* detects keywords, comments, strings, and other delimiters and applies their formatting
-  % moredelim=** allows cumulative application
+	escapeinside={@@},
+	basicstyle=\linespread{0.9}\tt\footnotesize,		% reduce line spacing and use typewriter font
+	keywordstyle=\bfseries\color{blue},
+	keywordstyle=[2]\bfseries\color{Plum},
+	commentstyle=\itshape\color{OliveGreen},		    % green and italic comments
+	identifierstyle=\color{identifierCol},
+	stringstyle=\sf\color{Mahogany},					  % use sanserif font
+	mathescape=true,
+	columns=fixed,
+	aboveskip=4pt,								  % spacing above/below code block
+	belowskip=3pt,
+	keepspaces=true,
+	tabsize=4,
+	% frame=lines,
+	literate=,
+	showlines=true,								 % show blank lines at end of code
+	showspaces=false,
+	showstringspaces=false,
+	escapechar=\$,
+	xleftmargin=\parindentlnth,				     % indent code to paragraph indentation
+	moredelim=[is][\color{red}\bfseries]{**R**}{**R**},    % red highlighting
+	% moredelim=* detects keywords, comments, strings, and other delimiters and applies their formatting
+	% moredelim=** allows cumulative application
 }
 
 \lstdefinestyle{cfaStyle}{
-  escapeinside={@@},
-  basicstyle=\linespread{0.9}\tt\footnotesize,		% reduce line spacing and use typewriter font
-  keywordstyle=\bfseries\color{blue},
-  keywordstyle=[2]\bfseries\color{Plum},
-  commentstyle=\sf\itshape\color{OliveGreen},		  % green and italic comments
-  identifierstyle=\color{identifierCol},
-  stringstyle=\sf\color{Mahogany},			          % use sanserif font
-  mathescape=true,
-  columns=fixed,
-  aboveskip=4pt,                                  % spacing above/below code block
-  belowskip=3pt,
-  keepspaces=true,
-  tabsize=4,
-  % frame=lines,
-  literate=,
-  showlines=true,                                 % show blank lines at end of code
-  showspaces=false,
-  showstringspaces=false,
-  escapechar=\$,
-  xleftmargin=\parindentlnth,                     % indent code to paragraph indentation
-  moredelim=[is][\color{red}\bfseries]{**R**}{**R**},    % red highlighting
-  morekeywords=[2]{accept, signal, signal_block, wait, waitfor},
+	escapeinside={@@},
+	basicstyle=\linespread{0.9}\sf,		% reduce line spacing and use typewriter font
+%  keywordstyle=\bfseries\color{blue},
+	keywordstyle=[2]\bfseries\color{red},
+%  commentstyle=\sf\itshape\color{OliveGreen},		  % green and italic comments
+	identifierstyle=\color{identifierCol},
+%  stringstyle=\sf\color{Mahogany},					  % use sanserif font
+	stringstyle=\tt,										% use typewriter font
+	mathescape=true,
+	columns=fixed,
+	aboveskip=4pt,								  % spacing above/below code block
+	belowskip=3pt,
+	keepspaces=true,
+	tabsize=4,
+	% frame=lines,
+	literate=,
+	showlines=true,								 % show blank lines at end of code
+	showspaces=false,
+	showstringspaces=false,
+	escapechar=\$,
+	xleftmargin=\parindentlnth,				     % indent code to paragraph indentation
+	moredelim=[is][\color{red}\bfseries]{**R**}{**R**},    % red highlighting
+	morekeywords=[2]{accept, signal, signal_block, wait, waitfor},
 }
 
@@ -175,100 +173,100 @@
 
 \lstnewenvironment{ccode}[1][]{
-  \lstset{
-    language = C,
-    style=defaultStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = C,
+		style=defaultStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
 \lstnewenvironment{cfacode}[1][]{
-  \lstset{
-    language = CFA,
-    style=cfaStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = CFA,
+		style=cfaStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
 \lstnewenvironment{pseudo}[1][]{
-  \lstset{
-    language = pseudo,
-    style=pseudoStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = pseudo,
+		style=pseudoStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
 \lstnewenvironment{cppcode}[1][]{
-  \lstset{
-    language = c++,
-    style=defaultStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = c++,
+		style=defaultStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
 \lstnewenvironment{ucppcode}[1][]{
-  \lstset{
-    language = c++,
-    style=defaultStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = c++,
+		style=defaultStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
 \lstnewenvironment{javacode}[1][]{
-  \lstset{
-    language = java,
-    style=defaultStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = java,
+		style=defaultStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
 \lstnewenvironment{scalacode}[1][]{
-  \lstset{
-    language = scala,
-    style=defaultStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = scala,
+		style=defaultStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
 \lstnewenvironment{smlcode}[1][]{
-  \lstset{
-    language = sml,
-    style=defaultStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = sml,
+		style=defaultStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
 \lstnewenvironment{dcode}[1][]{
-  \lstset{
-    language = D,
-    style=defaultStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = D,
+		style=defaultStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
 \lstnewenvironment{rustcode}[1][]{
-  \lstset{
-    language = rust,
-    style=defaultStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = rust,
+		style=defaultStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
 \lstnewenvironment{gocode}[1][]{
-  \lstset{
-    language = Golang,
-    style=defaultStyle,
-    captionpos=b,
-    #1
-  }
+	\lstset{
+		language = Golang,
+		style=defaultStyle,
+		captionpos=b,
+		#1
+	}
 }{}
 
@@ -278,2 +276,7 @@
 \newcommand{\code}[1]{\lstinline[language=CFA,style=cfaStyle]{#1}}
 \newcommand{\pscode}[1]{\lstinline[language=pseudo,style=pseudoStyle]{#1}}
+
+% Local Variables: %
+% tab-width: 4 %
+% fill-column: 100 %
+% End: %
Index: doc/papers/general/.gitignore
===================================================================
--- doc/papers/general/.gitignore	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/.gitignore	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -3,2 +3,7 @@
 *.pdf
 *.ps
+
+Paper.tex.plain
+mail
+Paper.out.ps
+WileyNJD-AMA.bst
Index: doc/papers/general/AMA/AMA-stix/Documents/.log
===================================================================
--- doc/papers/general/AMA/AMA-stix/Documents/.log	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Documents/.log	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,23 @@
+This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6400) (preloaded format=pdflatex 2017.9.23)  23 SEP 2017 18:48
+entering extended mode
+**wileyNJD-AMA
+(c:\MiKTeX2.9\texmf\tex\latex\tools\.tex
+LaTeX2e <2017-04-15>
+Babel <3.13> and hyphenation patterns for 73 language(s) loaded.
+File ignored)
+*
+! Emergency stop.
+<*> wileyNJD-AMA
+                
+End of file on the terminal!
+
+ 
+Here is how much of TeX's memory you used:
+ 7 strings out of 493348
+ 171 string characters out of 3143487
+ 53569 words of memory out of 3000000
+ 3639 multiletter control sequences out of 15000+200000
+ 3640 words of font info for 14 fonts, out of 3000000 for 9000
+ 1127 hyphenation exceptions out of 8191
+ 5i,0n,1p,93b,8s stack positions out of 5000i,500n,10000p,200000b,50000s
+!  ==> Fatal error occurred, no output PDF file produced!
Index: doc/papers/general/AMA/AMA-stix/Documents/README.txt
===================================================================
--- doc/papers/general/AMA/AMA-stix/Documents/README.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Documents/README.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,41 @@
+% README.TXT for WileyNJD-v2.cls
+% Version 2.0 released 22 September 2017
+%
+% This software may only be used to prepare an article for publication in the
+% Wiley NJD journals
+% to be published by John Wiley & Sons, Ltd.
+% Any other use constitutes an infringement of copyright.
+%
+% The release consists of the following files:
+%
+%   README.TXT   this file
+%   WileyNJD-v2.cls  the LaTeX2e class file
+%   NJDnatbib.sty --> NJD natbib reference package.
+%   Stix-Fonts (folder) -->   Stix font files 
+
+%   MiKTeX 2.9 (Freeware software) is required to install STIX/LATO fonts
+%   Download MiKTeX installer & instructions from the below URLs
+	https://miktex.org/download
+ 	Instructions to install the basic MiKTeX installer
+	https://miktex.org/howto/install-miktex
+
+%   Execute(double click) --> Windows-Stix-fontinstaller.exe from Stix-Fonts folder (This EXE file will install fonts to local drive) (please rename Windows-Stix-fontinstaller.e_xe to Windows-Stix-fontinstaller.exe)
+%   Still shows font error, please do the following
+%   Start-->run--> type "mo_edmin.exe" and press enter
+%   Press -->Refresh FNDB button--> press close button.
+%   wileyNJD-Doc.tex   authors' instructions
+%   wileyNJD-Doc.pdf   authors' instructions in PDF format
+%
+% Typeset wileyNJD-Doc.tex for instructions and examples, or view the PDF.
+%
+% Simply place WileyNJD-v2.cls, NJDnatbib.sty, wileyNJD-AMA.bst and wileyNJD-Doc.tex in your systems usual directories
+% and typeset using your LaTeX2e command.
+%
+%
+%
+% *** IMPORTANT NOTE ***
+% When you submit your paper, please use the "doublespace" option
+% in the documentclass line which will double-space your document
+% and make the task of reviewing much simpler.
+%
+
Index: doc/papers/general/AMA/AMA-stix/Documents/wileyNJD-Doc.tex
===================================================================
--- doc/papers/general/AMA/AMA-stix/Documents/wileyNJD-Doc.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Documents/wileyNJD-Doc.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,430 @@
+\documentclass[AMA,STIX1COL]{WileyNJD-v2}
+\usepackage{moreverb}
+
+
+\newcommand\BibTeX{{\rmfamily B\kern-.05em \textsc{i\kern-.025em b}\kern-.08em
+T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
+
+\articletype{Article Type}%
+
+\received{<day> <Month>, <year>}
+\revised{<day> <Month>, <year>}
+\accepted{<day> <Month>, <year>}
+
+%\raggedbottom
+
+\begin{document}
+
+\title{A demonstration of the \LaTeX\ class file for Wiley NJD Journals\protect\thanks{This is an example for title footnote.}}
+
+\author[1]{Author One*}
+
+\author[2,3]{Author Two}
+
+\author[3]{Author Three}
+
+\authormark{AUTHOR ONE \textsc{et al}}
+
+
+\address[1]{\orgdiv{Org Division}, \orgname{Org name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\address[2]{\orgdiv{Org Division}, \orgname{Org name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\address[3]{\orgdiv{Org Division}, \orgname{Org name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\corres{*Corresponding author name, Corresponding address. \email{authorone@Email.com}}
+
+\presentaddress{Present address}
+
+\abstract[Abstract]{This paper describes the use of the \LaTeXe\ \textsf{WileyNJD-v2.cls}
+class file for setting papers for \emph{Mathematical Methods in the Applied Sciences}.}
+
+\keywords{Class file; \LaTeXe; \emph{Wiley NJD}}
+
+\jnlcitation{\cname{%
+\author{Williams K.}, 
+\author{B. Hoskins}, 
+\author{R. Lee}, 
+\author{G. Masato}, and 
+\author{T. Woollings}} (\cyear{2016}), 
+\ctitle{A regime analysis of Atlantic winter jet variability applied to evaluate HadGEM3-GC2}, \cjournal{Q.J.R. Meteorol. Soc.}, \cvol{2017;00:1--6}.}
+
+\maketitle
+
+\footnotetext{\textbf{Abbreviations:} ANA, anti-nuclear antibodies; APC, antigen-presenting cells; IRF, interferon regulatory factor}
+
+
+\section{Introduction}\label{sec1}
+
+Many authors submitting \( \sin \cos \tan \inf_{x} \) to NJD journals use \LaTeXe\ to
+prepare their papers. This paper describes the
+\textsf{WileyNJD-v2.cls} class file which can be used to convert
+articles produced with other \LaTeXe\ class files into the correct
+form for publication in \emph{Wiley NJD Journals}.
+
+The \textsf{WileyNJD-v2.cls} class file preserves much of the standard
+\LaTeXe\ interface so that any document which was produced using
+the standard \LaTeXe\ \textsf{article} style can easily be
+converted to work with the \textsf{WileyNJD-v2} style. However, the
+width of text and typesize will vary from that of
+\textsf{article.cls}; therefore, \emph{line breaks will change}
+and it is likely that displayed mathematics and tabular material
+will need re-setting.
+
+In the following sections we describe how to lay out your code to
+use \textsf{WileyNJD-v2.cls} to reproduce the typographical look of
+\emph{Wiley NJD Journals}.
+
+\subsection{Procedure to install fonts}
+ 
+\begin{enumerate}
+\item All font files are available under the Stix-fonts folder 
+\item Font installer is available under the same folder Windows-Stix-fontinstaller.exe
+\item Execute (double click the EXE file) the EXE file that will install all fonts/map files to your local drive.
+\end{enumerate}
+
+\subsection{The Three Golden Rules} 
+
+Before we proceed, we would like to
+stress \emph{three golden rules} that need to be followed to
+enable the most efficient use of your code at the typesetting
+stage:
+\begin{enumerate}
+\item[(i)] keep your own macros to an absolute minimum;
+
+\item[(ii)] as \TeX\ is designed to make sensible spacing
+decisions by itself, do \emph{not} use explicit horizontal or
+vertical spacing commands, except in a few accepted (mostly
+mathematical) situations, such as \verb"\," before a
+differential~d, or \verb"\quad" to separate an equation from its
+qualifier;
+
+\item[(iii)] follow the \emph{NJD} reference style.
+\begin{enumerate}[a.]
+\item Chemistry --- Use the ``AMA'' option as \verb"\documentclass[AMA]{WileyNJD-v2.cls}"
+
+\end{enumerate}
+\end{enumerate}
+
+
+\section{Getting Started} The \textsf{WileyNJD-v2.cls} class file should run
+on any standard \LaTeXe\ installation. If any of the fonts, class
+files or packages it requires are missing from your installation,
+they can be found on the \emph{\TeX\ Live} CD-ROMs or from CTAN.
+
+LaTeX document class options
+
+\begin{flushleft}
+\begin{enumerate}[a.]
+\item STIX1COL--- For STIX font large one column layout use the ``STIX1COL'' option as \verb"\documentclass[AMA,STIX1COL]{WileyNJD-v2}"
+\item STIX2COL--- For STIX font large two column layout use the ``STIX2COL'' option as \verb"\documentclass[AMA,STIX2COL]{WileyNJD-v2}"
+\item STIXSMALL--- For STIX font small layout use the ``STIXSMALL'' option as \verb"\documentclass[AMA,STIXSMALL]{WileyNJD-v2}"
+\end{enumerate}
+\end{flushleft}
+
+
+
+\section{The Article Header Information}
+The heading for any file using \textsf{WileyNJD-v2.cls} is shown in
+Figure~\ref{F1}.
+
+\subsection{Remarks}
+
+\begin{enumerate}[(I).]
+
+\item Use \verb"\title{<title> \protect\thanks{<title footnotes}}" for article title and title footnote.
+\item Use \verb"\authormark{}" for running heads.
+
+\item Note the use of \verb"\author[<link>]{<name>}" and \verb"\address[<link>]{<name>}" to
+link names and addresses. The author for correspondence is marked
+by ``*'' and \verb"\corres{}" is used to give that
+author's address, which will be printed besides abstract, prefaced by
+`Correspondence to:'.
+
+\item For submitting a double-spaced manuscript, add
+\verb"doublespace" as an option to the documentclass line. \verb"\documentclass[doublespace]{WileyNJD-v2}"
+
+\item Use \verb"\presentaddress{}" for present address.
+
+\item In abstract \verb"\abstract[<title>]{abstract paragraph}" use optional parameter for title followed by abstract paragraph.
+
+\item For Key words use \verb"\keywords{}".
+
+\item For how to site use \verb"\jnlcitation{\cname{\author{<author name>},"
+
+\verb"\ctitle{<title>}, \cjournal{<Journal name>}, \cvol{<vol>}.}}".
+
+\item For title page abbreviations use \verb"\footnotetext{<\textbf{Abbreviation title:} Abreviations>}"
+
+\item Use \verb"\articletype{<article category}" for article header information
+
+\item Use \verb"\received{<received date>} \revised{<revised date>} \accepted{<accepted date>}" for history dates.
+
+\end{enumerate}
+
+
+
+\begin{figure}[p]
+\setlength{\fboxsep}{0pt}%
+\setlength{\fboxrule}{0pt}%
+\begin{center}
+\begin{boxedverbatim}
+
+\documentclass[AMA,STIX1COL]{WileyNJD-v2}
+
+\articletype{Article Type}%
+
+\received{26 April 2016}
+\revised{6 June 2016}
+\accepted{6 June 2016}
+
+\begin{document}
+
+\title{<Initial cap, lower case>\protect\thanks{<title footnote.>}}
+
+\author[<address link>]{<Author name><corresponding author*>}
+
+\author[<address link>,<address link>]{Author Name}
+
+\authormark{AUTHOR ONE \textsc{et al}}
+
+\address[<address link>]{\orgdiv{<Org Division>}, \orgname{<Org name>}, 
+\orgaddress{\state{<State name>}, \country{<Country name>}}}
+\address[<address link>]{\orgdiv{<Org Division>}, \orgname{<Org name>},
+ \orgaddress{\state{<State name>}, \country{<Country name>}}}
+
+\corres{<corresponding author link*> <author name, address.
+ \email{<authorone@email.com>}}
+
+\presentaddress{<Present address>}
+
+\abstract[<Abstract heading>]{<Abstract paragraph>}
+
+\keywords{<keyword1>, <keyword2>,...}
+
+\jnlcitation{\cname{%
+\author{<aurhor name>}, 
+\author{<aurhor name>}, 
+\author{<aurhor name>}, 
+\author{<aurhor name>},  and 
+\author{<aurhor name>}} (\cyear{<year>}), 
+\ctitle{<journal title>}, \cjournal{<journal name>} <year> <vol> Page <xxx>-<xxx>}
+
+\footnotetext{\textbf{<abbreviation head:>} <abbreviations> ..}
+
+\maketitle
+
+\section{Introduction}
+.
+.
+.
+\end{boxedverbatim}
+\end{center}
+\caption{Example for title page.\label{F1}}
+\end{figure}
+
+\section{The Body of the Article}
+
+\subsection{Section headings}
+
+\begin{enumerate}[(H1)]
+\item Section --- use \verb"\section{}"
+\item SubSection--- use \verb"\subsection{}"
+\item SubSubSectioin--- use \verb"\subsubsection{}"
+\item Paragraph--- use \verb"\paragraph{}"
+\item Subparagraph--- use \verb"\subparagraph{}"
+\end{enumerate}
+
+\subsection{Mathematics} \textsf{WileyNJD-v2.cls} makes the full
+functionality of \AmS\/\TeX\ available. We encourage the use of
+the \verb"align", \verb"gather" and \verb"multline" environments
+for displayed mathematics.
+
+\subsection{Figures and Tables}
+
+\textsf{WileyNJD-v2.cls} uses the
+\textsf{graphicx} package for handling figures.
+
+Figures are called in as follows:
+\begin{verbatim}
+\begin{figure}
+\centering
+\includegraphics{<figure name>}
+\caption{<Figure caption>}
+\end{figure}
+\end{verbatim}
+
+The standard coding for a table is shown in Figure~\ref{F2}.
+
+\begin{figure}[h]
+\setlength{\fboxsep}{0pt}%
+\setlength{\fboxrule}{0pt}%
+\begin{center}
+\begin{boxedverbatim}
+\begin{table}
+\caption{<Table caption>}
+\centering
+\begin{tabular}{<table alignment>}
+\toprule
+<column headings>\\
+\midrule
+<table entries
+(separated by & as usual)>\\
+<table entries>\\
+.
+.
+.\\
+\bottomrule
+\end{tabular}
+\begin{tablenotes}
+\item Source: xxx.
+\item[1] xxx.
+\item[2] xxx.
+\end{tablenotes}
+\end{table}
+\end{boxedverbatim}
+\end{center}
+\caption{Example for table layout.\label{F2}}
+\end{figure}
+
+\subsection{Cross-referencing}
+The use of the \LaTeX\ cross-reference system
+for figures, tables, equations, etc., is encouraged
+(using \verb"\ref{<name>}" and \verb"\label{<name>}").
+
+\subsection{Box text}
+
+\begin{verbatim}
+\begin{boxtext}
+\section*{<title>}%
+Paragraph
+\end{boxtext}
+\end{verbatim}
+
+\subsection{List items}
+
+\subsubsection{Enumerate list styles}
+\begin{verbatim}
+\begin{enumerate}[1]
+\item 
+\end{enumerate}
+
+\begin{enumerate}[1.]
+\item 
+\end{enumerate}
+
+\begin{enumerate}[(1)]
+\item 
+\end{enumerate}
+
+\begin{enumerate}[I]
+\item 
+\end{enumerate}
+
+\begin{enumerate}[i]
+\item 
+\end{enumerate}
+
+\begin{enumerate}[a]
+\item 
+\end{enumerate}
+
+\end{verbatim}
+
+\subsubsection{Bullet list styles}
+
+\begin{verbatim}
+\begin{itemize}
+\item 
+\end{itemize}
+\end{verbatim}
+
+\subsubsection{Description list}
+
+\begin{verbatim}
+\begin{description}
+\item[<entry>] description text.
+\end{description}
+\end{verbatim}
+
+\subsection{Enunciations}
+
+\begin{verbatim}
+\begin{theorem}[<Theorem subhead>]\label{thm1}
+<theorem text>. 
+\end{theorem}
+
+\begin{proposition}[<proposition subhead>]\label{pro1}
+<proposition text>. 
+\end{proposition}
+
+\begin{definition}[<definition subhead>]\label{dfn1}
+<definition text>. 
+\end{definition}
+
+\begin{proof}
+<proof text>. 
+\end{proof}
+
+\begin{proof}[Proof of Theorem~\ref{thm1}]
+<proof text>.
+\end{proof}
+
+\end{verbatim}
+
+\subsection{Program codes}
+
+Use \verb+\begin{verbatim}...\end{verbatim}+ for program codes without math. Use \verb+\begin{alltt}...\end{alltt}+ for program codes with math. Based on the text provided inside the optional argument of \verb+\begin{code}[Psecode|Listing|Box|Code|+\hfill\break \verb+Specification|Procedure|Sourcecode|Program]...+ \verb+\end{code}+ tag corresponding boxed like floats are generated. Also note that \verb+\begin{code}[Code|Listing]...+ \verb+\end{code}+ tag with either Code or Listing text as optional argument text are set with computer modern typewriter font.  All other code environments are set with normal text font. Refer below example:
+
+\begin{verbatim}
+\begin{lstlisting}[caption={Descriptive Caption Text},label=DescriptiveLabel]
+for i:=maxint to 0 do
+begin
+{ do nothing }
+end;
+Write('Case insensitive ');
+WritE('Pascal keywords.');
+\end{lstlisting}
+\end{verbatim}
+
+
+\subsection{Acknowledgements} An Acknowledgements section is started with \verb"\ack" or
+\verb"\acks" for \textit{Acknowledgement} or
+\textit{Acknowledgements}, respectively. It must be placed just
+before the References.
+
+\subsection{Bibliography}
+
+\begin{enumerate}[1]
+\item Use \verb"\bibliography{wileyNJD-AMA}" BST file for AMA reference style
+\item Use \verb"\bibliography{wileyNJD-APA}" BST file for APA reference style
+\item Use \verb"\bibliography{wileyNJD-AMS}" BST file for AMS reference style
+\item Use \verb"\bibliography{wileyNJD-VANCOUVER}" BST file for Vancouver reference style
+\item Use \verb"\bibliography{wileyNJD-ACS}" BST file for Chemistry reference style
+\end{enumerate}
+
+The normal commands for producing the reference list are:
+
+\begin{verbatim}
+\begin{thebibliography}{99}
+\bibitem{<x-ref label>}
+         <Reference details>
+.
+.
+.
+\end{thebibliography}
+\end{verbatim}
+
+\subsection{Appendix Section}
+
+\begin{verbatim}
+\appendix
+
+\section{Section title of first appendix\label{app1}}
+.
+.
+.
+
+\end{verbatim}
+
+\end{document}
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/a_axxd65.enc
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/a_axxd65.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/a_axxd65.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,57 @@
+% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
+
+%%AutoEnc_axxd65ow2itmagzxgdtfjmwsmc
+% Encoding created by otftotfm on Thu Mar 06 16:09:45 2014
+% Command line follows encoding
+/AutoEnc_axxd65ow2itmagzxgdtfjmwsmc [
+%00
+  /f_j /uni20AC /.notdef /.notdef /fraction /dotaccent /hungarumlaut /ogonek
+  /fl /.notdef /.notdef /ff /fi /.notdef /ffi /ffl
+%10
+  /dotlessi /uni0237 /grave /acute /caron /breve /macron /ring
+  /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%20
+  /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+  /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%30
+  /zero /one /two /three /four /five /six /seven
+  /eight /nine /colon /semicolon /less /equal /greater /question
+%40
+  /at /A /B /C /D /E /F /G
+  /H /I /J /K /L /M /N /O
+%50
+  /P /Q /R /S /T /U /V /W
+  /X /Y /Z /bracketleft /backslash /bracketright /circumflex /underscore
+%60
+  /quoteleft /a /b /c /d /e /f /g
+  /h /i /j /k /l /m /n /o
+%70
+  /p /q /r /s /t /u /v /w
+  /x /y /z /braceleft /bar /braceright /tilde /dieresis
+%80
+  /Lslash /quotesingle /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
+  /.notdef /perthousand /Scaron /guilsinglleft /.notdef /Zcaron /asciicircum /minus
+%90
+  /lslash /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash
+  /.notdef /trademark /scaron /guilsinglright /.notdef /zcaron /asciitilde /Ydieresis
+%A0
+  /uni00A0 /exclamdown /cent /sterling /currency /yen /brokenbar /section
+  /.notdef /copyright /ordfeminine /guillemotleft /logicalnot /uni00AD /registered /.notdef
+%B0
+  /degree /plusminus /twosuperior /threesuperior /.notdef /mu /paragraph /periodcentered
+  /.notdef /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+%C0
+  /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /.notdef /Ccedilla
+  /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+%D0
+  /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+  /.notdef /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /.notdef
+%E0
+  /agrave /aacute /acircumflex /atilde /adieresis /aring /.notdef /ccedilla
+  /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+%F0
+  /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+  /.notdef /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+] def
+% Command line: 'c:\w32tex\bin\otftotfm -a -e texnansx -fkern -fliga
+% STIX-Bold.otf STBd'
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stix.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,12 @@
+\ProvidesFile{ls1stix.fd}[2012/12/23 STIX LS1 font definitions]
+
+\DeclareFontFamily{LS1}{stix}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stix}{m}{n} {<-> stix-mathrm}{}
+\DeclareFontShape{LS1}{stix}{m}{it}{<-> stix-mathit}{}
+\DeclareFontShape{LS1}{stix}{b}{n} {<-> stix-mathrm-bold}{}
+\DeclareFontShape{LS1}{stix}{b}{it}{<-> stix-mathit-bold}{}
+
+\DeclareFontShape{LS1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixbb.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixbb.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixbb.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,10 @@
+\ProvidesFile{ls1stixbb.fd}[2012/12/23 STIX blackboard LS1 font definitions]
+
+\DeclareFontFamily{LS1}{stixbb}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixbb}{m}{n} {<-> stix-mathbb}{}
+\DeclareFontShape{LS1}{stixbb}{m}{it}{<-> stix-mathbbit}{}
+\DeclareFontShape{LS1}{stixbb}{b}{n} {<-> stix-mathbb-bold}{}
+\DeclareFontShape{LS1}{stixbb}{b}{it}{<-> stix-mathbbit-bold}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixfrak.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixfrak.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixfrak.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,8 @@
+\ProvidesFile{ls1stixfrak.fd}[2012/12/23 STIX fraktur LS1 font definitions]
+
+\DeclareFontFamily{LS1}{stixfrak}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixfrak}{m}{n} {<-> stix-mathfrak}{}
+\DeclareFontShape{LS1}{stixfrak}{b}{n} {<-> stix-mathfrak-bold}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixscr.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixscr.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixscr.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,9 @@
+\ProvidesFile{ls1stixscr.fd}[2012/12/23 STIX script LS1 font definitions]
+
+\DeclareFontFamily{LS1}{stixscr}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixscr}{m}{n} {<-> stix-mathscr}{}
+\DeclareFontShape{LS1}{stixscr}{b}{n} {<-> stix-mathscr-bold}{}
+\DeclareFontShape{LS1}{stixscr}{bx}{n} {<->ssub * stixscr/b/n}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixsf.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixsf.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ls1stixsf.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,12 @@
+\ProvidesFile{ls1stixsf.fd}[2012/12/23 STIX sans-serif LS1 font definitions]
+
+\DeclareFontFamily{LS1}{stixsf}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixsf}{m}{n} {<-> stix-mathsf}{}
+\DeclareFontShape{LS1}{stixsf}{m}{it}{<-> stix-mathsfit}{}
+\DeclareFontShape{LS1}{stixsf}{b}{n} {<-> stix-mathsf-bold}{}
+\DeclareFontShape{LS1}{stixsf}{b}{it}{<-> stix-mathsfit-bold}{}
+
+\DeclareFontShape{LS1}{stixsf}{bx}{it}{<->ssub * stixsf/b/it}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stix.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,12 @@
+\ProvidesFile{ls1stix.fd}[2012/12/23 STIX LS2 font definitions]
+
+\DeclareFontFamily{LS2}{stix}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stix}{m}{n} {<-> stix-mathrm}{}
+\DeclareFontShape{LS2}{stix}{m}{it}{<-> stix-mathit}{}
+\DeclareFontShape{LS2}{stix}{b}{n} {<-> stix-mathrm-bold}{}
+\DeclareFontShape{LS2}{stix}{b}{it}{<-> stix-mathit-bold}{}
+
+\DeclareFontShape{LS2}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stixcal.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stixcal.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stixcal.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,8 @@
+\ProvidesFile{ls1stixcal.fd}[2012/12/23 STIX calligraphic LS2 font definitions]
+
+\DeclareFontFamily{LS2}{stixcal}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stixcal}{m}{n} {<-> stix-mathcal}{}
+\DeclareFontShape{LS2}{stixcal}{b}{n} {<-> stix-mathcal-bold}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stixex.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stixex.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stixex.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,8 @@
+\ProvidesFile{ls1stixex.fd}[2012/12/23 STIX LS2 font definitions]
+
+\DeclareFontFamily{LS2}{stixex}{}
+
+\DeclareFontShape{LS2}{stixex}{m}{n} {<-> stix-mathex}{}
+\DeclareFontShape{LS2}{stixex}{b}{n} {<-> stix-mathex-bold}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stixtt.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stixtt.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ls2stixtt.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,8 @@
+\ProvidesFile{ls1stixtt.fd}[2012/12/23 STIX typewriter LS2 font definitions]
+
+\DeclareFontFamily{LS2}{stixtt}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stixtt}{m}{n} {<-> stix-mathtt}{}
+\DeclareFontShape{LS2}{stixtt}{b}{n} {<-> stix-mathtt-bold}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ly1sti.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ly1sti.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ly1sti.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,30 @@
+%Filename: ly1sti.fd
+%Created by: SPi Global 
+%Created Using: OTF to TFM Font Setup Wizard
+%Date: 8/22/2013
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ly1sti.fd}
+   [1998/07/06 Fontinst v1.800 font definitions for LY1/sti.]
+
+\DeclareFontFamily{LY1}{sti}{}
+\DeclareFontShape{LY1}{sti}{m}{n}{<-> StixReg}{}
+\DeclareFontShape{LY1}{sti}{m}{sl}{<-> StixIt}{}
+\DeclareFontShape{LY1}{sti}{m}{it}{<-> StixIt}{}
+\DeclareFontShape{LY1}{sti}{b}{n}{<-> StixBd}{}
+\DeclareFontShape{LY1}{sti}{b}{sl}{<-> StixBdIt}{}
+\DeclareFontShape{LY1}{sti}{b}{it}{<-> StixBdIt}{}
+
+\DeclareFontShape{LY1}{sti}{bx}{n}{<->ssub * sti/b/n}{}
+\DeclareFontShape{LY1}{sti}{bx}{sc}{<->ssub * sti/b/sc}{}
+\DeclareFontShape{LY1}{sti}{bx}{sl}{<->ssub * sti/b/sl}{}
+\DeclareFontShape{LY1}{sti}{bx}{it}{<->ssub * sti/b/it}{}
+
+\DeclareFontShape{LY1}{sti}{m}{ui}{<->ssub * sti/m/it}{}
+\DeclareFontShape{LY1}{sti}{b}{ui}{<->ssub * sti/b/it}{}
+\DeclareFontShape{LY1}{sti}{l}{sc}{<->ssub * sti/m/sc}{}
+
+\endinput
+
+
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ot1stix.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ot1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ot1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,21 @@
+\ProvidesFile{ot1stix.fd}[2012/12/23 STIX OT1 font definitions]
+
+\DeclareFontFamily{OT1}{stix}{}
+
+\DeclareFontShape{OT1}{stix}{m}{n} {<-> ot1-stixgeneral}{}
+\DeclareFontShape{OT1}{stix}{b}{n} {<-> ot1-stixgeneral-bold}{}
+\DeclareFontShape{OT1}{stix}{m}{it}{<-> ot1-stixgeneral-italic}{}
+\DeclareFontShape{OT1}{stix}{b}{it}{<-> ot1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{OT1}{stix}{m}{sc}{<-> ot1-stixgeneralsc}{}
+\DeclareFontShape{OT1}{stix}{b}{sc}{<-> ot1-stixgeneralsc-bold}{}
+
+\DeclareFontShape{OT1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{OT1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{OT1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{OT1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{OT1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{OT1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ot2stix.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ot2stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ot2stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,21 @@
+\ProvidesFile{ot2stix.fd}[2012/12/23 STIX OT2 font definitions]
+
+\DeclareFontFamily{OT2}{stix}{}
+
+\DeclareFontShape{OT2}{stix}{m}{n} {<-> ot2-stixgeneral}{}
+\DeclareFontShape{OT2}{stix}{b}{n} {<-> ot2-stixgeneral-bold}{}
+\DeclareFontShape{OT2}{stix}{m}{it}{<-> ot2-stixgeneral-italic}{}
+\DeclareFontShape{OT2}{stix}{b}{it}{<-> ot2-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{OT2}{stix}{m}{sc}{<-> ot2-stixgeneralsc}{}
+\DeclareFontShape{OT2}{stix}{b}{sc}{<-> ot2-stixgeneralsc-bold}{}
+
+\DeclareFontShape{OT2}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{OT2}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{OT2}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{OT2}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{OT2}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{OT2}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-extra1.enc
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-extra1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-extra1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,259 @@
+%!PS-Adobe-3.0 Resource-Encoding
+/stixextra [ 
+/uniE002
+/uniE003
+/uniE00A
+/uniE00B
+/uniE026
+/uniE027
+/uniE02F
+/uniE037
+/uniE038
+/uniE039
+/uniE040
+/uniE043
+/uniE044
+/uniE04D
+/uniE053
+/uniE054
+/uniE055
+/uniE056
+/uniE057
+/uniE05D
+/uniE05E
+/uniE061
+/uniE062
+/uniE063
+/uniE064
+/uniE065
+/uniE066
+/uniE067
+/uniE068
+/uniE06B
+/uniE06C
+/uniE06F
+/uniE070
+/uniE076
+/uniE077
+/uniE07D
+/uniE07E
+/uniE07F
+/uniE080
+/uniE081
+/uniE084
+/uniE085
+/uniE088
+/uniE089
+/uniE092
+/uniE093
+/uniE096
+/uniE097
+/uniE099
+/uniE09A
+/uniE09B
+/uniE09C
+/uniE09D
+/uniE09E
+/uniE0A2
+/uniE0A4
+/uniE0A5
+/uniE0A6
+/uniE0A7
+/uniE0A8
+/uniE0A9
+/uniE0AA
+/uniE0AB
+/uniE0AC
+/uniE0AD
+/uniE0AE
+/uniE0AF
+/uniE0B0
+/uniE0B1
+/uniE0B2
+/uniE0B3
+/uniE0B7
+/uniE0B8
+/uniE0B9
+/uniE0BB
+/uniE0BC
+/uniE0BD
+/uniE0BE
+/uniE0BF
+/uniE0C0
+/uniE0C1
+/uniE0C2
+/uniE0C3
+/uniE0C4
+/uniE0C5
+/uniE0C6
+/uniE0C7
+/uniE0C8
+/uniE0C9
+/uniE0CA
+/uniE0CB
+/uniE0CC
+/uniE0CD
+/uniE0CE
+/uniE0CF
+/uniE0D0
+/uniE0D1
+/uniE0D2
+/uniE0D3
+/uniE0D4
+/uniE0D5
+/uniE0D6
+/uniE0D7
+/uniE0D8
+/uniE0D9
+/uniE0DA
+/uniE0DB
+/uniE0DC
+/uniE0DD
+/uniE0DE
+/uniE0DF
+/uniE0E0
+/uniE0E1
+/uniE0E2
+/uniE0E3
+/uniE0E5
+/uniE0E6
+/uniE0E7
+/uniE0E8
+/uniE0E9
+/uniE0EA
+/uniE0EB
+/uniE0EC
+/uniE0ED
+/uniE0EE
+/uniE0EF
+/uniE0F1
+/uniE0F2
+/uniE0F3
+/uniE0F4
+/uniE0F5
+/uniE0F6
+/uniE0F7
+/uniE0F8
+/uniE0F9
+/uniE0FA
+/uniE0FB
+/uniE0FC
+/uniE0FD
+/uniE0FE
+/uniE0FF
+/uniE100
+/uniE101
+/uniE102
+/uniE103
+/uniE104
+/uniE105
+/uniE106
+/uniE107
+/uniE108
+/uniE109
+/uniE10A
+/uniE10C
+/uniE10D
+/uniE110
+/uniE111
+/uniE112
+/uniE113
+/uniE114
+/uniE115
+/uniE116
+/uniE117
+/uniE118
+/uniE119
+/uniE11A
+/uniE11B
+/uniE11C
+/uniE11D
+/uniE11E
+/uniE11F
+/uniE120
+/uniE121
+/uniE122
+/uniE123
+/uniE124
+/uniE125
+/uniE126
+/uniE127
+/uniE128
+/uniE129
+/uniE12A
+/uniE12B
+/uniE12C
+/uniE12D
+/uniE12E
+/uniE12F
+/uniE130
+/uniE131
+/uniE132
+/uniE133
+/uniE138
+/uniE139
+/uniE13A
+/uniE14A
+/uniE14B
+/uniE150
+/uniE151
+/uniE152
+/uniE153
+/uniE17D
+/uniE17E
+/uniE181
+/uniE182
+/uniE183
+/uniE185
+/uniE186
+/uniE188
+/uniE189
+/uniE18B
+/uniE18D
+/uniE18E
+/uniE190
+/uniE193
+/uniE1A4
+/uniE1B4
+/uniE1B5
+/uniE1B6
+/uniE1B7
+/uniE1B8
+/uniE1B9
+/uniE1BA
+/uniE1BB
+/uniE1BC
+/uniE1BD
+/uniE1BF
+/uniE1C0
+/uniE1C3
+/uniE1C4
+/uniE1C5
+/uniE1C7
+/uniE1C8
+/uniE1CA
+/uniE1CB
+/uniE1CD
+/uniE1CF
+/uniE1D0
+/uniE1D2
+/uniE1D5
+/uniE1E6
+/uniE1F6
+/uniE1F7
+/uniE1F8
+/uniE1F9
+/uniE1FA
+/uniE1FB
+/uniE1FC
+/uniE1FD
+/uniE1FE
+/uniE1FF
+/uniE217
+/uniE261
+/uniE262
+/uniE263
+/uniE264
+/uniE265
+/.notdef
+] def
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-extra2.enc
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-extra2.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-extra2.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,259 @@
+%!PS-Adobe-3.0 Resource-Encoding
+/stixextra2 [
+/uniE266
+/uniE267
+/uniE268
+/uniE269
+/uniE26A
+/uniE26B
+/uniE26C
+/uniE26D
+/uniE26E
+/uniE26F
+/uniE270
+/uniE271
+/uniE272
+/uniE273
+/uniE274
+/uniE275
+/uniE276
+/uniE277
+/uniE278
+/uniE279
+/uniE27A
+/uniE27B
+/uniE27C
+/uniE27D
+/uniE27E
+/uniE27F
+/uniE280
+/uniE281
+/uniE282
+/uniE283
+/uniE284
+/uniE285
+/uniE286
+/uniE287
+/uniE288
+/uniE28C
+/uniE28D
+/uniE28E
+/uniE28F
+/uniE290
+/uniE291
+/uniE292
+/uniE293
+/uniE294
+/uniE295
+/uniE296
+/uniE297
+/uniE298
+/uniE299
+/uniE29A
+/uniE29B
+/uniE29C
+/uniE29D
+/uniE29E
+/uniE29F
+/uniE2A0
+/uniE2A1
+/uniE2A2
+/uniE2A3
+/uniE2A4
+/uniE2A5
+/uniE2A6
+/uniE2A7
+/uniE2A8
+/uniE2A9
+/uniE2AA
+/uniE2AB
+/uniE2AC
+/uniE2AD
+/uniE2AE
+/uniE2AF
+/uniE2B0
+/uniE2B1
+/uniE2B2
+/uniE2B3
+/uniE2B4
+/uniE2B5
+/uniE2B6
+/uniE2B7
+/uniE2B8
+/uniE2B9
+/uniE2BA
+/uniE2BB
+/uniE2BC
+/uniE2BD
+/uniE2BE
+/uniE2BF
+/uniE2C0
+/uniE2C1
+/uniE2C2
+/uniE2C3
+/uniE2C4
+/uniE2C5
+/uniE2C6
+/uniE2C7
+/uniE2C8
+/uniE2C9
+/uniE2CA
+/uniE2CB
+/uniE2CC
+/uniE2CD
+/uniE2CE
+/uniE2CF
+/uniE2D0
+/uniE2D1
+/uniE2D2
+/uniE2D3
+/uniE2D4
+/uniE2D5
+/uniE2D6
+/uniE2D7
+/uniE2D8
+/uniE2D9
+/uniE2DA
+/uniE2DB
+/uniE2DC
+/uniE2DD
+/uniE2DE
+/uniE2DF
+/uniE2E0
+/uniE2E1
+/uniE2E2
+/uniE2E3
+/uniE2E4
+/uniE2E5
+/uniE2E6
+/uniE2E7
+/uniE2E8
+/uniE2E9
+/uniE2EA
+/uniE2EB
+/uniE2EC
+/uniE2ED
+/uniE2EE
+/uniE2EF
+/uniE2F0
+/uniE2F1
+/uniE2F2
+/uniE2F3
+/uniE2F4
+/uniE2F5
+/uniE2F6
+/uniE2F7
+/uniE2F8
+/uniE2F9
+/uniE2FA
+/uniE2FB
+/uniE2FC
+/uniE2FD
+/uniE2FE
+/uniE2FF
+/uniE300
+/uniE301
+/uniE302
+/uniE303
+/uniE304
+/uniE305
+/uniE306
+/uniE307
+/uniE308
+/uniE309
+/uniE30A
+/uniE30B
+/uniE30C
+/uniE30D
+/uniE30E
+/uniE30F
+/uniE310
+/uniE311
+/uniE312
+/uniE313
+/uniE314
+/uniE315
+/uniE316
+/uniE317
+/uniE318
+/uniE319
+/uniE31A
+/uniE31B
+/uniE31C
+/uniE31D
+/uniE31E
+/uniE31F
+/uniE320
+/uniE321
+/uniE322
+/uniE323
+/uniE324
+/uniE325
+/uniE326
+/uniE327
+/uniE328
+/uniE329
+/uniE32A
+/uniE32B
+/uniE32C
+/uniE32D
+/uniE32E
+/uniE32F
+/uniE330
+/uniE331
+/uniE332
+/uniE333
+/uniE334
+/uniE335
+/uniE336
+/uniE337
+/uniE338
+/uniE339
+/uniE33A
+/uniE33B
+/uniE33C
+/uniE33D
+/uniE33E
+/uniE33F
+/uniE340
+/uniE341
+/uniE342
+/uniE343
+/uniE344
+/uniE345
+/uniE346
+/uniE347
+/uniE348
+/uniE349
+/uniE34A
+/uniE34B
+/uniE34C
+/uniE34D
+/uniE34E
+/uniE34F
+/uniE350
+/uniE351
+/uniE352
+/uniE353
+/uniE354
+/uniE355
+/uniE356
+/uniE357
+/uniE358
+/uniE359
+/uniE35A
+/uniE35B
+/uniE35C
+/uniE35D
+/uniE35E
+/uniE35F
+/uniE360
+/uniE361
+/uniE362
+/uniE363
+/uniE364
+/uniE365
+/uniE366
+/uniE367
+/.notdef
+] def
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-extra3.enc
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-extra3.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-extra3.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,259 @@
+%!PS-Adobe-3.0 Resource-Encoding
+/stixextra3 [
+/uniE368
+/uniE369
+/uniE36A
+/uniE36B
+/uniE36C
+/uniE36D
+/uniE36E
+/uniE36F
+/uniE370
+/uniE371
+/uniE372
+/uniE373
+/uniE374
+/uniE375
+/uniE376
+/uniE377
+/uniE378
+/uniE379
+/uniE37A
+/uniE37B
+/uniE37C
+/uniE37D
+/uniE37E
+/uniE37F
+/uniE380
+/uniE381
+/uniE382
+/uniE383
+/uniE384
+/uniE385
+/uniE386
+/uniE387
+/uniE388
+/uniE389
+/uniE3B7
+/uniE3B8
+/uniE3B9
+/uniE3BA
+/uniE3BB
+/uniE3BC
+/uniE3BD
+/uniE3BE
+/uniE3BF
+/uniE3C0
+/uniE3C2
+/uniE3C3
+/uniE3C4
+/uniE3C5
+/uniE3C6
+/uniE3C7
+/uniE3C8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-ot1.enc
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-ot1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-ot1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,181 @@
+%!PS-Adobe-3.0 Resource-Encoding
+%
+/stixot1 [
+% 0x0
+/uni0393
+/uni0394
+/uni0398
+/uni039B
+/uni039E
+/uni03A0
+/uni03A3
+/uni03A5
+
+% 0x8
+/uni03A6
+/uni03A8
+/uni03A9
+/ff
+/fi
+/fl
+/ffi
+/ffl
+
+% 0x10
+/dotlessi
+/uni0237
+/grave
+/acute
+/caron
+/breve
+/macron
+/ring
+
+% 0x18
+/cedilla
+/germandbls
+/ae
+/oe
+/oslash
+/AE
+/OE
+/Oslash
+
+% 0x20
+/space
+/exclam
+/quotedblright
+/numbersign
+/dollar
+/percent
+/ampersand
+/quoteright
+
+% 0x28
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/hyphen
+/period
+/slash
+
+% 0x30
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+
+% 0x38
+/eight
+/nine
+/colon
+/semicolon
+/exclamdown
+/equal
+/questiondown
+/question
+
+% 0x40
+/at
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+
+% 0x48
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+
+% 0x50
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+
+% 0x58
+/X
+/Y
+/Z
+/bracketleft
+/quotedblleft
+/bracketright
+/circumflex
+/dotaccent
+
+% 0x60
+/quoteleft
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+
+% 0x68
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+
+% 0x70
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+
+% 0x78
+/x
+/y
+/z
+/endash
+/emdash
+/hungarumlaut
+/tilde
+/dieresis
+
+%80
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-ot2.enc
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-ot2.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-ot2.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,228 @@
+%!PS-Adobe-3.0 Resource-Encoding
+%
+% TeX text for Cyrillic languages (obsolete)
+% (WNCYR encoding)
+%
+/stixot2 [
+% '00x
+/uni040A        % U+040A CYRILLIC CAPITAL LETTER NJE
+/uni0409        % U+0409 CYRILLIC CAPITAL LETTER LJE
+/uni040F        % U+040F CYRILLIC CAPITAL LETTER DZHE
+/uni042D        % U+042D CYRILLIC CAPITAL LETTER E
+/uni0406        % U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+/uni0404        % U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE
+/uni0402        % U+0402 CYRILLIC CAPITAL LETTER DJE
+/uni040B        % U+040B CYRILLIC CAPITAL LETTER TSHE
+
+% '01x
+/uni045A        % U+045A CYRILLIC SMALL LETTER NJE
+/uni0459        % U+0459 CYRILLIC SMALL LETTER LJE
+/uni045F        % U+045F CYRILLIC SMALL LETTER DZHE
+/uni044D        % U+044D CYRILLIC SMALL LETTER E
+/uni0456        % U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+/uni0454        % U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE
+/uni0452        % U+0452 CYRILLIC SMALL LETTER DJE
+/uni045B        % U+045B CYRILLIC SMALL LETTER TSHE
+
+% '02x
+/uni042E        % U+042E CYRILLIC CAPITAL LETTER YU
+/uni0416        % U+0416 CYRILLIC CAPITAL LETTER ZHE
+/uni0419        % U+0419 CYRILLIC CAPITAL LETTER SHORT I
+/uni0401        % U+0401 CYRILLIC CAPITAL LETTER IO
+/uni0474        % U+0474 CYRILLIC CAPITAL LETTER IZHITSA
+/uni0472        % U+0472 CYRILLIC CAPITAL LETTER FITA
+/uni0405        % U+0405 CYRILLIC CAPITAL LETTER DZE
+/uni042F        % U+042F CYRILLIC CAPITAL LETTER YA
+
+% '03x
+/uni044E        % U+044E CYRILLIC SMALL LETTER YU
+/uni0436        % U+0436 CYRILLIC SMALL LETTER ZHE
+/uni0439        % U+0439 CYRILLIC SMALL LETTER SHORT I
+/uni0451        % U+0451 CYRILLIC SMALL LETTER IO
+/uni0475        % U+0475 CYRILLIC SMALL LETTER IZHITSA
+/uni0473        % U+0473 CYRILLIC SMALL LETTER FITA
+/uni0455        % U+0455 CYRILLIC SMALL LETTER DZE
+/uni044F        % U+044F CYRILLIC SMALL LETTER YA
+
+% '04x
+/dieresis
+/exclam
+/quotedblright
+/uni0462        % U+0462 CYRILLIC CAPITAL LETTER YAT
+/cyrbreve       % \cyrbreve???
+/percent
+/acute
+/quoteright
+
+% '05x
+/parenleft
+/parenright
+/asterisk
+/uni0463        % U+0463 CYRILLIC SMALL LETTER YAT
+/comma
+/hyphen
+/period
+/slash
+
+% '06x
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+
+% '07x
+/eight
+/nine
+/colon
+/semicolon
+/guillemotleft
+/dotlessi
+/guillemotright
+/question
+
+% '10x
+/breve
+/uni0410        % U+0410 CYRILLIC CAPITAL LETTER A
+/uni0411        % U+0411 CYRILLIC CAPITAL LETTER BE
+/uni0426        % U+0426 CYRILLIC CAPITAL LETTER TSE
+/uni0414        % U+0414 CYRILLIC CAPITAL LETTER DE
+/uni0415        % U+0415 CYRILLIC CAPITAL LETTER IE
+/uni0424        % U+0424 CYRILLIC CAPITAL LETTER EF
+/uni0413        % U+0413 CYRILLIC CAPITAL LETTER GHE
+
+% '11x
+/uni0425        % U+0425 CYRILLIC CAPITAL LETTER HA
+/uni0418        % U+0418 CYRILLIC CAPITAL LETTER I
+/uni0408        % U+0408 CYRILLIC CAPITAL LETTER JE
+/uni041A        % U+041A CYRILLIC CAPITAL LETTER KA
+/uni041B        % U+041B CYRILLIC CAPITAL LETTER EL
+/uni041C        % U+041C CYRILLIC CAPITAL LETTER EM
+/uni041D        % U+041D CYRILLIC CAPITAL LETTER EN
+/uni041E        % U+041E CYRILLIC CAPITAL LETTER O
+
+% '12x
+/uni041F        % U+041F CYRILLIC CAPITAL LETTER PE
+/uni0427        % U+0427 CYRILLIC CAPITAL LETTER CHE
+/uni0420        % U+0420 CYRILLIC CAPITAL LETTER ER
+/uni0421        % U+0421 CYRILLIC CAPITAL LETTER ES
+/uni0422        % U+0422 CYRILLIC CAPITAL LETTER TE
+/uni0423        % U+0423 CYRILLIC CAPITAL LETTER U
+/uni0412        % U+0412 CYRILLIC CAPITAL LETTER VE
+/uni0429        % U+0429 CYRILLIC CAPITAL LETTER SHCHA
+
+% '13x
+/uni0428        % U+0428 CYRILLIC CAPITAL LETTER SHA
+/uni042B        % U+042B CYRILLIC CAPITAL LETTER YERU
+/uni0417        % U+0417 CYRILLIC CAPITAL LETTER ZE
+/bracketleft
+/quotedblleft
+/bracketright
+/uni042C        % U+042C CYRILLIC CAPITAL LETTER SOFT SIGN
+/uni042A        % U+042A CYRILLIC CAPITAL LETTER HARD SIGN
+
+% '14x
+/quoteleft
+/uni0430        % U+0430 CYRILLIC SMALL LETTER A
+/uni0431        % U+0431 CYRILLIC SMALL LETTER BE
+/uni0446        % U+0446 CYRILLIC SMALL LETTER TSE
+/uni0434        % U+0434 CYRILLIC SMALL LETTER DE
+/uni0435        % U+0435 CYRILLIC SMALL LETTER IE
+/uni0444        % U+0444 CYRILLIC SMALL LETTER EF
+/uni0433        % U+0433 CYRILLIC SMALL LETTER GHE
+
+% '15x
+/uni0445        % U+0445 CYRILLIC SMALL LETTER HA
+/uni0438        % U+0438 CYRILLIC SMALL LETTER I
+/uni0458        % U+0458 CYRILLIC SMALL LETTER JE
+/uni043A        % U+043A CYRILLIC SMALL LETTER KA
+/uni043B        % U+043B CYRILLIC SMALL LETTER EL
+/uni043C        % U+043C CYRILLIC SMALL LETTER EM
+/uni043D        % U+043D CYRILLIC SMALL LETTER EN
+/uni043E        % U+043E CYRILLIC SMALL LETTER O
+
+% '16x
+/uni043F        % U+043F CYRILLIC SMALL LETTER PE
+/uni0447        % U+0447 CYRILLIC SMALL LETTER CHE
+/uni0440        % U+0440 CYRILLIC SMALL LETTER ER
+/uni0441        % U+0441 CYRILLIC SMALL LETTER ES
+/uni0442        % U+0442 CYRILLIC SMALL LETTER TE
+/uni0443        % U+0443 CYRILLIC SMALL LETTER U
+/uni0432        % U+0432 CYRILLIC SMALL LETTER VE
+/uni0449        % U+0449 CYRILLIC SMALL LETTER SHCHA
+
+% '17x
+/uni0448        % U+0448 CYRILLIC SMALL LETTER SHA
+/uni044B        % U+044B CYRILLIC SMALL LETTER YERU
+/uni0437        % U+0437 CYRILLIC SMALL LETTER ZE
+/endash
+/emdash
+/uni2116        % U+2116 NUMERO SIGN
+/uni044C        % U+044C CYRILLIC SMALL LETTER SOFT SIGN
+/uni044A        % U+044A CYRILLIC SMALL LETTER HARD SIGN
+
+% '20x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '21x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '22x
+/.notdef
+/.notdef
+/uni040E        % U+040E CYRILLIC CAPITAL LETTER SHORT U
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% '23x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '24x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '25x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '26x
+/.notdef
+/.notdef
+/uni045E        % U+045E CYRILLIC SMALL LETTER SHORT U
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% '27x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '30x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '31x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '32x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '33x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '34x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '35x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '36x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+
+% '37x
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-t1.enc
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-t1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-t1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,260 @@
+%!PS-Adobe-3.0 Resource-Encoding
+%
+/stixt1 [
+/grave           % 0x00 U+0060
+/acute           % 0x01 U+00B4
+/circumflex      % 0x02 U+02C6
+/tilde           % 0x03 U+02DC
+/dieresis        % 0x04 U+00A8
+/hungarumlaut    % 0x05 U+02DD
+/ring            % 0x06 U+02DA
+/caron           % 0x07 U+02C7
+/breve           % 0x08 U+02D8
+/macron          % 0x09 U+00AF
+/dotaccent       % 0x0A U+02D9
+/cedilla         % 0x0B U+00B8
+/ogonek          % 0x0C U+02DB
+/quotesinglbase  % 0x0D U+201A
+/guilsinglleft   % 0x0E U+2039
+/guilsinglright  % 0x0F U+203A
+/quotedblleft    % 0x10 U+201C
+/quotedblright   % 0x11 U+201D
+/quotedblbase    % 0x12 U+201E
+/guillemotleft   % 0x13 U+00AB
+/guillemotright  % 0x14 U+00BB
+/endash          % 0x15 U+2013
+/emdash          % 0x16 U+2014
+/uni200B         % 0x17 U+200B was /cwm
+/perthousandzero % 0x18 ______
+/dotlessi        % 0x19 U+0131
+/uni0237         % 0x1A U+0237 was /dotlessj
+/ff              % 0x1B U+FB00
+/fi              % 0x1C U+FB01
+/fl              % 0x1D U+FB02
+/ffi             % 0x1E U+FB03
+/ffl             % 0x1F U+FB04
+/uni2423         % 0x20 U+2423 was /visiblespace
+/exclam          % 0x21
+/quotedbl        % 0x22
+/numbersign      % 0x23
+/dollar          % 0x24
+/percent         % 0x25
+/ampersand       % 0x26
+/quoteright      % 0x27 U+2019
+/parenleft       % 0x28
+/parenright      % 0x29
+/asterisk        % 0x2A
+/plus            % 0x2B
+/comma           % 0x2C
+/hyphen          % 0x2D
+/period          % 0x2E
+/slash           % 0x2F
+/zero            % 0x30
+/one             % 0x31
+/two             % 0x32
+/three           % 0x33
+/four            % 0x34
+/five            % 0x35
+/six             % 0x36
+/seven           % 0x37
+/eight           % 0x38
+/nine            % 0x39
+/colon           % 0x3A
+/semicolon       % 0x3B
+/less            % 0x3C
+/equal           % 0x3D
+/greater         % 0x3E
+/question        % 0x3F
+/at              % 0x40
+/A               % 0x41
+/B               % 0x42
+/C               % 0x43
+/D               % 0x44
+/E               % 0x45
+/F               % 0x46
+/G               % 0x47
+/H               % 0x48
+/I               % 0x49
+/J               % 0x4A
+/K               % 0x4B
+/L               % 0x4C
+/M               % 0x4D
+/N               % 0x4E
+/O               % 0x4F
+/P               % 0x50
+/Q               % 0x51
+/R               % 0x52
+/S               % 0x53
+/T               % 0x54
+/U               % 0x55
+/V               % 0x56
+/W               % 0x57
+/X               % 0x58
+/Y               % 0x59
+/Z               % 0x5A
+/bracketleft     % 0x5B
+/backslash       % 0x5C
+/bracketright    % 0x5D
+/asciicircum     % 0x5E
+/underscore      % 0x5F
+/quoteleft       % 0x60 U+2018
+/a               % 0x61
+/b               % 0x62
+/c               % 0x63
+/d               % 0x64
+/e               % 0x65
+/f               % 0x66
+/g               % 0x67
+/h               % 0x68
+/i               % 0x69
+/j               % 0x6A
+/k               % 0x6B
+/l               % 0x6C
+/m               % 0x6D
+/n               % 0x6E
+/o               % 0x6F
+/p               % 0x70
+/q               % 0x71
+/r               % 0x72
+/s               % 0x73
+/t               % 0x74
+/u               % 0x75
+/v               % 0x76
+/w               % 0x77
+/x               % 0x78
+/y               % 0x79
+/z               % 0x7A
+/braceleft       % 0x7B
+/bar             % 0x7C
+/braceright      % 0x7D
+/asciitilde      % 0x7E
+/uni2010         % 0x7F U+002D (explicit "hyphen char")
+/uni0102         % 0x80 U+0102
+/uni0104         % 0x81 U+0104
+/uni0106         % 0x82 U+0106
+/uni010C         % 0x83 U+010C
+/uni010E         % 0x84 U+010E
+/uni011A         % 0x85 U+011A
+/uni0118         % 0x86 U+0118
+/uni011E         % 0x87 U+011E
+/uni0139         % 0x88 U+0139
+/uni013D         % 0x89 U+013D
+/Lslash          % 0x8A U+0141
+/uni0143         % 0x8B U+0143
+/uni0147         % 0x8C U+0147
+/uni014A         % 0x8D U+014A
+/uni0150         % 0x8E U+0150
+/uni0154         % 0x8F U+0154
+/uni0158         % 0x90 U+0158
+/uni015A         % 0x91 U+015A
+/Scaron          % 0x92 U+0160
+/uni015E         % 0x93 U+015E
+/uni0164         % 0x94 U+0164
+/uni0162         % 0x95 U+0162
+/uni0170         % 0x96 U+0170
+/uni016E         % 0x97 U+016E
+/Ydieresis       % 0x98 U+0178
+/uni0179         % 0x99 U+0179
+/Zcaron          % 0x9A U+017D
+/uni017B         % 0x9B U+017B
+/uni0132         % 0x9C U+0132
+/uni0130         % 0x9D U+0130
+/uni0111         % 0x9E U+0111
+/section         % 0x9F U+00A7
+/uni0103         % 0xA0 U+0103
+/uni0105         % 0xA1 U+0105
+/uni0107         % 0xA2 U+0107
+/uni010D         % 0xA3 U+010D
+/uni010F         % 0xA4 U+010F
+/uni011B         % 0xA5 U+011B
+/uni0119         % 0xA6 U+0119
+/uni011F         % 0xA7 U+011F
+/uni013A         % 0xA8 U+013A
+/uni013E         % 0xA9 U+013E
+/lslash          % 0xAA U+0142
+/uni0144         % 0xAB U+0144
+/uni0148         % 0xAC U+0148
+/uni014B         % 0xAD U+014B
+/uni0151         % 0xAE U+0151
+/uni0155         % 0xAF U+0155
+/uni0159         % 0xB0 U+0159
+/uni015B         % 0xB1 U+015B
+/scaron          % 0xB2 U+0161
+/uni015F         % 0xB3 U+015F
+/uni0165         % 0xB4 U+0165
+/uni0163         % 0xB5 U+0163
+/uni0171         % 0xB6 U+0171
+/uni016F         % 0xB7 U+016F
+/ydieresis       % 0xB8 U+00FF
+/uni017A         % 0xB9 U+017A
+/zcaron          % 0xBA U+017E
+/uni017C         % 0xBB U+017C
+/uni0133         % 0xBC U+0133
+/exclamdown      % 0xBD U+00A1
+/questiondown    % 0xBE U+00BF
+/sterling        % 0xBF U+00A3
+/Agrave          % 0xC0
+/Aacute          % 0xC1
+/Acircumflex     % 0xC2
+/Atilde          % 0xC3
+/Adieresis       % 0xC4
+/Aring           % 0xC5
+/AE              % 0xC6
+/Ccedilla        % 0xC7
+/Egrave          % 0xC8
+/Eacute          % 0xC9
+/Ecircumflex     % 0xCA
+/Edieresis       % 0xCB
+/Igrave          % 0xCC
+/Iacute          % 0xCD
+/Icircumflex     % 0xCE
+/Idieresis       % 0xCF
+/Eth             % 0xD0
+/Ntilde          % 0xD1
+/Ograve          % 0xD2
+/Oacute          % 0xD3
+/Ocircumflex     % 0xD4
+/Otilde          % 0xD5
+/Odieresis       % 0xD6
+/OE              % 0xD7 U+0152
+/Oslash          % 0xD8
+/Ugrave          % 0xD9
+/Uacute          % 0xDA
+/Ucircumflex     % 0xDB
+/Udieresis       % 0xDC
+/Yacute          % 0xDD
+/Thorn           % 0xDE
+/uni1E9E         % 0xDF (U+1E9E, /S_S) was /Germandbls
+/agrave          % 0xE0
+/aacute          % 0xE1
+/acircumflex     % 0xE2
+/atilde          % 0xE3
+/adieresis       % 0xE4
+/aring           % 0xE5
+/ae              % 0xE6
+/ccedilla        % 0xE7
+/egrave          % 0xE8
+/eacute          % 0xE9
+/ecircumflex     % 0xEA
+/edieresis       % 0xEB
+/igrave          % 0xEC
+/iacute          % 0xED
+/icircumflex     % 0xEE
+/idieresis       % 0xEF
+/eth             % 0xF0
+/ntilde          % 0xF1
+/ograve          % 0xF2
+/oacute          % 0xF3
+/ocircumflex     % 0xF4
+/otilde          % 0xF5
+/odieresis       % 0xF6
+/oe              % 0xF7 U+0153
+/oslash          % 0xF8
+/ugrave          % 0xF9
+/uacute          % 0xFA
+/ucircumflex     % 0xFB
+/udieresis       % 0xFC
+/yacute          % 0xFD
+/thorn           % 0xFE
+/germandbls      % 0xFF U+00DF
+] def
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-ts1.enc
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-ts1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix-ts1.enc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,322 @@
+%!PS-Adobe-3.0 Resource-Encoding
+/stixts1 [
+% 0x0
+/grave
+/acute
+/circumflex
+/tilde
+/dieresis
+/hungarumlaut
+/ring
+/caron
+
+% 0x8
+/breve
+/macron
+/dotaccent
+/cedilla
+/ogonek
+/quotesinglbase
+/.notdef
+/.notdef
+
+% 0x10
+/.notdef
+/.notdef
+/quotedblbase
+/.notdef
+/.notdef
+/twelveudash
+/threequartersemdash
+/capitalcompwordmark
+
+% 0x18
+/uni2190
+/uni2192
+/tieaccentlowercase
+/tieaccentcapital
+/newtieaccentlowercase
+/newtieaccentcapital
+/.notdef
+/ascendercompwordmark
+
+% 0x20
+/blank
+/.notdef
+/.notdef
+/.notdef
+/dollar
+/.notdef
+/.notdef
+/quotesingle
+
+% 0x28
+/.notdef
+/.notdef
+/uni2217
+/.notdef
+/comma
+/hyphendbl
+/period
+/fraction
+
+% 0x30
+/zero.oldstyle
+/one.oldstyle
+/two.oldstyle
+/three.oldstyle
+/four.oldstyle
+/five.oldstyle
+/six.oldstyle
+/seven.oldstyle
+
+% 0x38
+/eight.oldstyle
+/nine.oldstyle
+/.notdef
+/.notdef
+/uni27E8
+/minus
+/uni27E9
+/.notdef
+
+% 0x40
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0x48
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/uni2127
+/.notdef
+/uni25CB
+
+% 0x50
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/uni2126
+
+% 0x58
+/.notdef
+/.notdef
+/.notdef
+/uni27E6
+/.notdef
+/uni27E7
+/uni2191
+/uni2193
+
+% 0x60
+/grave
+/.notdef
+/born
+/divorced
+/died
+/.notdef
+/.notdef
+/.notdef
+
+% 0x68
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/leaf
+/married
+/uni266A
+/.notdef
+
+% 0x70
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0x78
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/uni0330
+/hyphendblchar
+
+% 0x80
+/breve
+/caron
+/hungarumlaut
+/uni030F % XXXX
+/dagger
+/daggerdbl
+/uni2016
+/perthousand
+
+% 0x88
+/bullet
+/centigrade
+/dollar
+/cent
+/florin
+/colonmonetary
+/won
+/naira
+
+% 0x90
+/guarani
+/peso
+/uni20A4
+/uni211E
+/interrobang
+/interrobangdown
+/dong
+/trademark
+
+% 0x98
+/uni2031
+/pilcrow
+/baht
+/uni2116
+/uni2052
+/uni212E
+/uni25E6
+/servicemark
+
+% 0xA0
+/quillbracketleft
+/quillbracketright
+/cent
+/sterling
+/currency
+/yen
+/brokenbar
+/section
+
+% 0xA8
+/dieresis
+/copyright
+/ordfeminine
+/copyleft
+/logicalnot
+/uni24C5
+/registered
+/macron
+
+% 0xB0
+/degree
+/plusminus
+/twosuperior
+/threesuperior
+/acute
+/mu
+/paragraph
+/periodcentered
+
+% 0xB8
+/uni203B
+/onesuperior
+/ordmasculine
+/uni221A
+/onequarter
+/onehalf
+/threequarters
+/uni20AC
+
+% 0xC0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0xC8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0xD0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/multiply
+/.notdef
+
+% 0xD8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0xE0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0xE8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+
+% 0xF0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/divide
+/.notdef
+
+% 0xF8
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+] def
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.dtx
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.dtx	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.dtx	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,4269 @@
+% \iffalse
+%<*driver>
+\begingroup
+\input docstrip
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+Copyright (c) 2001-2013 by the STI Pub Companies, consisting of the
+American Chemical Society, the American Institute of Physics, the American
+Mathematical Society, the American Physical Society, Elsevier, Inc., and
+The Institute of Electrical and Electronic Engineers, Inc. Portions
+copyright (c) 1998-2003 by MicroPress, Inc. Portions copyright (c) 1990 by
+Elsevier, Inc. All rights reserved.
+
+This work may be distributed and/or modified under the conditions of the LaTeX
+Project Public License, either version 1.3 of this license or (at your option)
+any later version.  The latest version of this license is in
+  http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX version
+2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is the STI Pub Companies.
+
+This work consists of the files stix.dtx and and the derived file stix.sty.
+
+\endpreamble
+
+\generate{\file{stix.sty}{\from{stix.dtx}{package}}}
+
+\endgroup
+\ProvidesFile{stix.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{stix}
+%<*package>
+    [2015/04/17 v1.1.2-latex STIX fonts support package]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[lcgreekalpha]{stix}
+
+\usepackage{fonttable}
+% fonttable's oct and hex numbers (ab)uses \' and \H which look ugly with our
+% fonts, use primes instead
+\makeatletter
+\renewcommand*{\f@toct}[1]{\hbox{\lower.5ex\hbox{$^{'}$}\kern-.1em\itshape #1\/\kern.05em}}
+\renewcommand*{\f@thex}[1]{\hbox{\lower.5ex\hbox{$^{''}$}\ttfamily#1}}
+\newcommand{\hex}[1]{\f@thex{#1}}
+\makeatother
+
+\usepackage{geometry}
+\usepackage{accents}
+\usepackage{enumitem}
+\usepackage[
+  justification=raggedright,
+  font=normalsize,
+  singlelinecheck=false
+]{caption}
+\usepackage[
+  bookmarks=true,
+  colorlinks=true,
+  linkcolor=black,
+  urlcolor=black,
+  pdftitle={The stix package},
+  pdfauthor={STI Pub Companies},
+  pdfsubject={STIX fonts LaTeX support package},
+  pdfkeywords={STIX, Math, STI Pub}
+]{hyperref}
+
+\newcommand\pkg[1]{\textsf{#1}}
+\renewcommand\cmd[1]{\texttt{\string#1}}
+\newcommand\showsymbol[3]{\par\noindent\hangindent=3em%
+\makebox[2em][l]{$#1$} \makebox[3.5em][l]{\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showop[3]{\par\noindent\hangindent=6em%
+  \makebox[5em][l]{$#1$\hfill$\displaystyle#1$\hfill}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showmbrace[3]{\par\noindent\hangindent=6em%
+  \makebox[5em][l]{${#1}{\bigm#1}{\Bigm#1}{\biggm#1}{\Biggm#1}$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showlbrace[3]{\par\noindent\hangindent=6em%
+  \makebox[5em][l]{$\Biggl#1\biggl#1\Bigl#1\bigl#1#1$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showrbrace[3]{\par\noindent\hangindent=6em%
+  \makebox[5em][l]{$#1\bigr#1\Bigr#1\biggr#1\Biggr#1$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showwideaccent[3]{\par\noindent\hangindent=4em%
+  \makebox[3em][l]{$#1{xxx}$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showaccent[3]{\par\noindent\hangindent=4em%
+  \makebox[3em][l]{$#1b$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+\newcommand\showover[3]{\par\noindent\hangindent=6em%
+  \makebox[5em][l]{$#1{xxxxxx}$}\makebox[3.5em][l]{\small\cmd{U+#2}} \cmd{#1}$^{#3}$}
+
+\begin{document}
+  \DocInput{stix.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CharacterTable
+%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%   Digits        \0\1\2\3\4\5\6\7\8\9
+%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%   Dollar        \$     Percent       \%     Ampersand     \&
+%   Acute accent  \'     Left paren    \(     Right paren   \)
+%   Asterisk      \*     Plus          \+     Comma         \,
+%   Minus         \-     Point         \.     Solidus       \/
+%   Colon         \:     Semicolon     \;     Less than     \<
+%   Equals        \=     Greater than  \>     Question mark \?
+%   Commercial at \@     Left bracket  \[     Backslash     \\
+%   Right bracket \]     Circumflex    \^     Underscore    \_
+%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%   Right brace   \}     Tilde         \~}
+%
+%
+% \GetFileInfo{stix.dtx}
+%
+% \title{The \pkg{stix} package}
+% \author{STI Pub Companies}
+% \date{\fileversion~from \filedate}
+%
+% \maketitle
+% \tableofcontents
+%
+% \newpage
+%
+% \section{Introduction}
+%
+% The mission of the \emph{Scientific and Technical Information Exchange
+% (STIX)} font creation project is the preparation of a comprehensive set of
+% fonts that serve the scientific and engineering community in the process from
+% manuscript creation through final publication, both in electronic and print
+% formats.  Toward this purpose, the STIX fonts will be made available, under
+% royalty-free license, to anyone, including publishers, software developers,
+% scientists, students, and the general public.
+%
+% The STIX fonts are based on the Unicode standard for character
+% representation. Not all Unicode values are included in the STIX Fonts, but there is extensive
+% coverage of Latin alphabets, Greek, and Cyrillic. The Font contents were
+% assembled from a list of every character/glyph required for publication in
+% the journals of the participating STI Pub companies. Every scientific
+% discipline is represented in this list, as well as many other fields from the
+% arts and humanities.
+%
+% Most of the glyphs in the STIX Fonts have been designed in Times-compatible
+% style.
+%
+% The \pkg{stix} package provides \LaTeX\ support for using STIX fonts in both
+% text and math. The text fonts are provided in both |T1| (default) and |OT1|
+% encodings, as well as |TS1| symbol font encoding, which cover only a subset
+% of Latin characters supported by STIX fonts. The math support covers nearly every mathematical symbol in STIX fonts,
+% around 2400 symbols in 11 regular fonts, in addition to around 1950 symbols
+% in 10 bold fonts.  Section~\ref{math-alphabets} lists math alphabets supported
+% by the \pkg{stix} package, while section~\ref{math-symbols} lists all defined
+% math symbols. There are also three fonts containing extra miscellaneous symbols,
+% |stix-extra1|, |stix-extra2| and |stix-extra3|, provided as TFM and PFB files
+% without support from the macro package.
+%
+% \section{Usage}
+%
+% Using STIX fonts with \LaTeX\ is as simple as loading the \pkg{stix} package:
+% \begin{verbatim}
+% \documentclass{article}
+% \usepackage{stix}
+% \begin{document}
+% Some text, and a math formula \(a+b=\sqrt{c}\).
+% \end{document}
+% \end{verbatim}
+%
+% \subsection{Options}
+% \begin{description}[font=\ttfamily,style=nextline,leftmargin=2.5cm,noitemsep]
+% \item[notext] Do not change the default text fonts.
+% \item[nomath] Do not change the default math fonts.
+% \item[not1] Do not change the default font encoding to |T1|.
+% \item[notextcomp] Do not load the \pkg{textcomp} package (provides symbols
+%    and oldstyle figures from |TS1| encoding to be used with |T1| encoded text
+%    fonts).
+% \item[lcgreekalpha] By default lower case Greek, partial differential and
+%    nabla are given |\mathord| class which makes them insensitive to math
+%    alphabet changes (i.e. |$\mathbf{\beta}$| gives $\beta$ instead of
+%    $\mathbf{\beta}$); with this option they will be given |\mathalpha| class
+%    just like Latin and upper case Greek.
+% \item[upint] Use upright integrals by default ($\intup$ instead of
+%    $\intsl$). See Section~\ref{integrals} on page~\pageref{integrals} for
+%    more details.
+% \end{description}
+%
+% \subsection{Compatibility with other packages}
+% \subsubsection*{\pkg{amsmath}}
+% The \pkg{stix} package should be used with at least \pkg{amsmath} v2.14,
+% \pkg{amssymb} v3.01 and \pkg{amsfonts} v3.01.
+%
+% With \pkg{amsmath} v2.14 or newer, it is recommended to load it (and/or
+% packages that load it) \emph{after} the \pkg{stix} package. Older versions of
+% \pkg{amsmath} must be loaded \emph{before} the \pkg{stix} package, otherwise
+% errors will arise.
+%
+% The following \pkg{amsmath} options affect not only symbols known to
+% \pkg{amsmath}, but also new symbols defined by the \pkg{stix} package:
+% |sumlimits|, |nosumlimits|, |intlimits| and |nointlimits|.
+%
+% \subsection{Feedback}
+% Bug reports and technical support issues should be reported to
+% \url{http://sourceforge.net/projects/stixfonts}.
+%
+% \section{Math alphabets}
+% \label{math-alphabets}
+% The following table lists math alphabets defined by the \pkg{stix} package with the
+% Unicode ranges they cover:
+%
+% \begin{table}[h]
+% \setlength{\tabcolsep}{3.5pt}
+% \begin{tabular}{ c l c c c c c }
+%     &               & A--Z             & a--z             & $\Gamma$--$\Omega$ & $\mathrm{\alpha}$--$\mathrm{\omega}$ & 0--9 \\
+% \hline
+% $*$ & |\mathrm|     & |00041|--|0005A| & |00061|--|0007A| & |00393|--|003A9| & |003B1|--|003C9| & |00030|--|00039| \\
+% $*$ & |\mathbf|     & |1D400|--|1D419| & |1D41A|--|1D433| & |1D6AA|--|1D6C0| & |1D6C2|--|1D6DA| & |1D7CE|--|1D7D7| \\
+% $*$ & |\mathit|     & |1D434|--|1D44D| & |1D44E|--|1D467| & |1D6E4|--|1D6FA| & |1D6FC|--|1D714| &         -        \\
+%     & |\mathbfit|   & |1D468|--|1D481| & |1D482|--|1D49B| & |1D71E|--|1D734| & |1D736|--|1D74E| &         -        \\
+% $*$ & |\mathcal|    &    \textbullet   &        -         &         -        &         -        &         -        \\
+% $*$ & |\mathscr|    & |1D49C|--|1D4B5| & |1D4B6|--|1D4CF| &         -        &         -        &         -        \\
+%     & |\mathbfscr|  & |1D4D0|--|1D4E9| & |1D4EA|--|1D503| &         -        &         -        &         -        \\
+% $*$ & |\mathsf|     & |1D5A0|--|1D5B9| & |1D5BA|--|1D5D3| &    \textbullet   &    \textbullet   & |1D7E2|--|1D7EB| \\
+%     & |\mathbfsf|   & |1D5D4|--|1D5ED| & |1D5EE|--|1D607| & |1D758|--|1D76E| & |1D770|--|1D788| & |1D7EC|--|1D7F5| \\
+% $*$ & |\mathsfit|   & |1D608|--|1D621| & |1D622|--|1D63B| &    \textbullet   &    \textbullet   &         -        \\
+%     & |\mathbfsfit| & |1D63C|--|1D655| & |1D656|--|1D66F| & |1D792|--|1D7A8| & |1D7AA|--|1D7C2| &         -        \\
+% $*$ & |\mathbb|     & |1D538|--|1D551| & |1D552|--|1D56B| &         -        &         -        & |1D7D8|--|1D7E1| \\
+%     & |\mathbfbb|   &    \textbullet   &    \textbullet   &         -        &         -        &         -        \\
+% $*$ & |\mathbbit|   &    \textbullet   &    \textbullet   &         -        &         -        &         -        \\
+%     & |\mathbfbbit| &    \textbullet   &    \textbullet   &         -        &         -        &         -        \\
+% $*$ & |\mathfrak|   & |1D504|--|1D51D| & |1D51E|--|1D537| &         -        &         -        &         -        \\
+%     & |\mathbffrak| & |1D56C|--|1D585| & |1D586|--|1D59F| &         -        &         -        &         -        \\
+% $*$ & |\mathtt|     & |1D670|--|1D689| & |1D68A|--|1D6A3| &         -        &         -        & |1D7F6|--|1D7FF| \\
+% \hline
+% \end{tabular}
+% \caption*{
+%   \begin{tabular}{ c l }
+%   \textbullet & Covered by STIX fonts but not in Unicode.\\
+%   -           & Not covered.\\
+%   $*$         & Available by default when loading the \pkg{stix} package.\\
+%   \end{tabular}
+% }
+% \end{table}
+%
+%
+% \TeX\ allows only 16 math alphabets to be used simultaneously, so not all of
+% these alphabets can be used in one document. When the \pkg{stix} package is
+% loaded, 12 math groups are allocated, with the 11 math alphabets
+% that are marked above available by default, which leaves room for 4 other math groups to be
+% allocated on demand when any of the other alphabets is used.
+%
+% \newpage
+% \section{Math symbols}
+% \label{math-symbols}
+%
+% The following section lists all math symbols defined by the \pkg{stix} package.
+% Symbols with $^*$ next to their name do not have a bold version; when
+% |\boldmath| is active, the non-bold glyph will be used.
+%
+% \subsection{Alphabetics}
+% \begin{multicols}{2}
+% \showsymbol\Gamma{0393}{}
+% \showsymbol\Delta{0394}{}
+% \showsymbol\Theta{0398}{}
+% \showsymbol\Lambda{039B}{}
+% \showsymbol\Xi{039E}{}
+% \showsymbol\Pi{03A0}{}
+% \showsymbol\Sigma{03A3}{}
+% \showsymbol\Upsilon{03A5}{}
+% \showsymbol\Phi{03A6}{}
+% \showsymbol\Psi{03A8}{}
+% \showsymbol\Omega{03A9}{}
+% \showsymbol\alpha{03B1}{}
+% \showsymbol\beta{03B2}{}
+% \showsymbol\gamma{03B3}{}
+% \showsymbol\delta{03B4}{}
+% \showsymbol\epsilon{03B5}{}
+% \showsymbol\zeta{03B6}{}
+% \showsymbol\eta{03B7}{}
+% \showsymbol\theta{03B8}{}
+% \showsymbol\iota{03B9}{}
+% \showsymbol\kappa{03BA}{}
+% \showsymbol\lambda{03BB}{}
+% \showsymbol\mu{03BC}{}
+% \showsymbol\nu{03BD}{}
+% \showsymbol\xi{03BE}{}
+% \showsymbol\pi{03C0}{}
+% \showsymbol\rho{03C1}{}
+% \showsymbol\sigma{03C3}{}
+% \showsymbol\tau{03C4}{}
+% \showsymbol\upsilon{03C5}{}
+% \showsymbol\phi{03D5}{}
+% \showsymbol\chi{03C7}{}
+% \showsymbol\psi{03C8}{}
+% \showsymbol\omega{03C9}{}
+% \showsymbol\varepsilon{03F5}{}
+% \showsymbol\vartheta{03D1}{}
+% \showsymbol\varpi{03D6}{}
+% \showsymbol\varrho{03F1}{}
+% \showsymbol\varsigma{03C2}{}
+% \showsymbol\varphi{03C6}{}
+% \showsymbol\nabla{2207}{}
+% \showsymbol\partial{2202}{}
+% \showsymbol\imath{1D6A4}{}
+% \showsymbol\jmath{1D6A5}{}
+% \end{multicols}
+%
+% \subsection{Ordinary symbols}
+% \begin{multicols}{2}
+% \showsymbol\#{0023}{}
+% \showsymbol\mathdollar{0024}{}
+% \showsymbol\%{0025}{}
+% \showsymbol\&{0026}{}
+% \showsymbol.{002E}{}
+% \showsymbol/{002F}{}
+% \showsymbol?{003F}{}
+% \showsymbol@{0040}{}
+% \showsymbol\backslash{005C}{}
+% \showsymbol\mathsterling{00A3}{}
+% \showsymbol\mathsection{00A7}{}
+% \showsymbol\neg{00AC}{}, \cmd\lnot
+% \showsymbol\mathparagraph{00B6}{}
+% \showsymbol\eth{00F0}{}
+% \showsymbol\Zbar{01B5}{*}
+% \showsymbol\digamma{03DD}{}
+% \showsymbol\varkappa{03F0}{}
+% \showsymbol\backepsilon{03F6}{}
+% \showsymbol\upbackepsilon{03F6}{}
+% \showsymbol\enleadertwodots{2025}{}
+% \showsymbol\mathellipsis{2026}{}
+% \showsymbol\prime{2032}{}
+% \showsymbol\dprime{2033}{}
+% \showsymbol\trprime{2034}{}
+% \showsymbol\backprime{2035}{}
+% \showsymbol\backdprime{2036}{}
+% \showsymbol\backtrprime{2037}{}
+% \showsymbol\caretinsert{2038}{}
+% \showsymbol\Exclam{203C}{}
+% \showsymbol\hyphenbullet{2043}{*}
+% \showsymbol\Question{2047}{}
+% \showsymbol\qprime{2057}{}
+% \showsymbol\enclosecircle{20DD}{}
+% \showsymbol\enclosesquare{20DE}{*}
+% \showsymbol\enclosediamond{20DF}{*}
+% \showsymbol\enclosetriangle{20E4}{}
+% \showsymbol\Eulerconst{2107}{}
+% \showsymbol\hbar{210F}{*}
+% \showsymbol\hslash{210F}{}
+% \showsymbol\Im{2111}{}
+% \showsymbol\ell{2113}{}
+% \showsymbol\wp{2118}{}
+% \showsymbol\Re{211C}{}
+% \showsymbol\mho{2127}{}
+% \showsymbol\turnediota{2129}{}
+% \showsymbol\Angstrom{212B}{}
+% \showsymbol\Finv{2132}{}
+% \showsymbol\aleph{2135}{}
+% \showsymbol\beth{2136}{}
+% \showsymbol\gimel{2137}{}
+% \showsymbol\daleth{2138}{}
+% \showsymbol\Game{2141}{*}
+% \showsymbol\sansLturned{2142}{*}
+% \showsymbol\sansLmirrored{2143}{*}
+% \showsymbol\Yup{2144}{*}
+% \showsymbol\PropertyLine{214A}{*}
+% \showsymbol\updownarrowbar{21A8}{}
+% \showsymbol\linefeed{21B4}{}
+% \showsymbol\carriagereturn{21B5}{}
+% \showsymbol\barovernorthwestarrow{21B8}{}
+% \showsymbol\barleftarrowrightarrowbar{21B9}{}
+% \showsymbol\acwopencirclearrow{21BA}{}
+% \showsymbol\cwopencirclearrow{21BB}{}
+% \showsymbol\nHuparrow{21DE}{*}
+% \showsymbol\nHdownarrow{21DF}{*}
+% \showsymbol\leftdasharrow{21E0}{*}
+% \showsymbol\updasharrow{21E1}{*}
+% \showsymbol\rightdasharrow{21E2}{*}
+% \showsymbol\downdasharrow{21E3}{*}
+% \showsymbol\leftwhitearrow{21E6}{}
+% \showsymbol\upwhitearrow{21E7}{}
+% \showsymbol\rightwhitearrow{21E8}{}
+% \showsymbol\downwhitearrow{21E9}{}
+% \showsymbol\whitearrowupfrombar{21EA}{}
+% \showsymbol\forall{2200}{}
+% \showsymbol\complement{2201}{}
+% \showsymbol\exists{2203}{}
+% \showsymbol\nexists{2204}{}
+% \showsymbol\varnothing{2205}{}
+% \showsymbol\emptyset{2205}{}
+% \showsymbol\increment{2206}{}
+% \showsymbol\QED{220E}{*}
+% \showsymbol\infty{221E}{}
+% \showsymbol\rightangle{221F}{}
+% \showsymbol\angle{2220}{}
+% \showsymbol\measuredangle{2221}{}
+% \showsymbol\sphericalangle{2222}{}
+% \showsymbol\therefore{2234}{}
+% \showsymbol\because{2235}{}
+% \showsymbol\sinewave{223F}{}
+% \showsymbol\top{22A4}{}
+% \showsymbol\bot{22A5}{}
+% \showsymbol\hermitmatrix{22B9}{}
+% \showsymbol\measuredrightangle{22BE}{}
+% \showsymbol\varlrtriangle{22BF}{}
+% \showsymbol\cdots{22EF}{}
+% \showsymbol\diameter{2300}{*}
+% \showsymbol\house{2302}{}
+% \showsymbol\invnot{2310}{}
+% \showsymbol\sqlozenge{2311}{*}
+% \showsymbol\profline{2312}{*}
+% \showsymbol\profsurf{2313}{*}
+% \showsymbol\viewdata{2317}{*}
+% \showsymbol\turnednot{2319}{}
+% \showsymbol\varhexagonlrbonds{232C}{*}
+% \showsymbol\conictaper{2332}{*}
+% \showsymbol\topbot{2336}{}
+% \showsymbol\APLnotbackslash{2340}{*}
+% \showsymbol\APLboxupcaret{2353}{*}
+% \showsymbol\APLboxquestion{2370}{*}
+% \showsymbol\rangledownzigzagarrow{237C}{*}
+% \showsymbol\hexagon{2394}{*}
+% \showsymbol\bbrktbrk{23B6}{}
+% \showsymbol\varcarriagereturn{23CE}{*}
+% \showsymbol\obrbrak{23E0}{}
+% \showsymbol\ubrbrak{23E1}{}
+% \showsymbol\trapezium{23E2}{*}
+% \showsymbol\benzenr{23E3}{*}
+% \showsymbol\strns{23E4}{*}
+% \showsymbol\fltns{23E5}{*}
+% \showsymbol\accurrent{23E6}{*}
+% \showsymbol\elinters{23E7}{*}
+% \showsymbol\mathvisiblespace{2423}{}
+% \showsymbol\circledR{24C7}{}
+% \showsymbol\circledS{24C8}{}
+% \showsymbol\mdlgblksquare{25A0}{*}, \cmd\blacksquare
+% \showsymbol\mdlgwhtsquare{25A1}{*}, \cmd\square, \cmd\Box
+% \showsymbol\squoval{25A2}{*}
+% \showsymbol\blackinwhitesquare{25A3}{*}
+% \showsymbol\squarehfill{25A4}{*}
+% \showsymbol\squarevfill{25A5}{*}
+% \showsymbol\squarehvfill{25A6}{*}
+% \showsymbol\squarenwsefill{25A7}{*}
+% \showsymbol\squareneswfill{25A8}{*}
+% \showsymbol\squarecrossfill{25A9}{*}
+% \showsymbol\smblksquare{25AA}{*}
+% \showsymbol\smwhtsquare{25AB}{*}
+% \showsymbol\hrectangleblack{25AC}{*}
+% \showsymbol\hrectangle{25AD}{*}
+% \showsymbol\vrectangleblack{25AE}{*}
+% \showsymbol\vrectangle{25AF}{*}
+% \showsymbol\parallelogramblack{25B0}{*}
+% \showsymbol\parallelogram{25B1}{*}
+% \showsymbol\bigblacktriangleup{25B2}{*}
+% \showsymbol\blacktriangle{25B4}{*}
+% \showsymbol\blacktriangleright{25B6}{*}
+% \showsymbol\smallblacktriangleright{25B8}{*}
+% \showsymbol\smalltriangleright{25B9}{*}
+% \showsymbol\blackpointerright{25BA}{*}
+% \showsymbol\whitepointerright{25BB}{*}
+% \showsymbol\bigblacktriangledown{25BC}{*}
+% \showsymbol\bigtriangledown{25BD}{}
+% \showsymbol\blacktriangledown{25BE}{*}
+% \showsymbol\triangledown{25BF}{*}
+% \showsymbol\blacktriangleleft{25C0}{*}
+% \showsymbol\smallblacktriangleleft{25C2}{*}
+% \showsymbol\smalltriangleleft{25C3}{*}
+% \showsymbol\blackpointerleft{25C4}{*}
+% \showsymbol\whitepointerleft{25C5}{*}
+% \showsymbol\mdlgblkdiamond{25C6}{*}
+% \showsymbol\mdlgwhtdiamond{25C7}{*}
+% \showsymbol\blackinwhitediamond{25C8}{*}
+% \showsymbol\fisheye{25C9}{*}
+% \showsymbol\mdlgwhtlozenge{25CA}{}, \cmd\lozenge, \\ \cmd\Diamond
+% \showsymbol\dottedcircle{25CC}{*}
+% \showsymbol\circlevertfill{25CD}{*}
+% \showsymbol\bullseye{25CE}{*}
+% \showsymbol\mdlgblkcircle{25CF}{*}
+% \showsymbol\circlelefthalfblack{25D0}{*}
+% \showsymbol\circlerighthalfblack{25D1}{*}
+% \showsymbol\circlebottomhalfblack{25D2}{*}
+% \showsymbol\circletophalfblack{25D3}{*}
+% \showsymbol\circleurquadblack{25D4}{*}
+% \showsymbol\blackcircleulquadwhite{25D5}{*}
+% \showsymbol\blacklefthalfcircle{25D6}{*}
+% \showsymbol\blackrighthalfcircle{25D7}{*}
+% \showsymbol\inversebullet{25D8}{*}
+% \showsymbol\inversewhitecircle{25D9}{*}
+% \showsymbol\invwhiteupperhalfcircle{25DA}{*}
+% \showsymbol\invwhitelowerhalfcircle{25DB}{*}
+% \showsymbol\ularc{25DC}{*}
+% \showsymbol\urarc{25DD}{*}
+% \showsymbol\lrarc{25DE}{*}
+% \showsymbol\llarc{25DF}{*}
+% \showsymbol\topsemicircle{25E0}{*}
+% \showsymbol\botsemicircle{25E1}{*}
+% \showsymbol\lrblacktriangle{25E2}{*}
+% \showsymbol\llblacktriangle{25E3}{*}
+% \showsymbol\ulblacktriangle{25E4}{*}
+% \showsymbol\urblacktriangle{25E5}{*}
+% \showsymbol\circ{25E6}{}, \cmd\smwhtcircle
+% \showsymbol\squareleftblack{25E7}{*}
+% \showsymbol\squarerightblack{25E8}{*}
+% \showsymbol\squareulblack{25E9}{*}
+% \showsymbol\squarelrblack{25EA}{*}
+% \showsymbol\trianglecdot{25EC}{}
+% \showsymbol\triangleleftblack{25ED}{*}
+% \showsymbol\trianglerightblack{25EE}{*}
+% \showsymbol\lgwhtcircle{25EF}{*}
+% \showsymbol\squareulquad{25F0}{*}
+% \showsymbol\squarellquad{25F1}{*}
+% \showsymbol\squarelrquad{25F2}{*}
+% \showsymbol\squareurquad{25F3}{*}
+% \showsymbol\circleulquad{25F4}{*}
+% \showsymbol\circlellquad{25F5}{*}
+% \showsymbol\circlelrquad{25F6}{*}
+% \showsymbol\circleurquad{25F7}{*}
+% \showsymbol\ultriangle{25F8}{*}
+% \showsymbol\urtriangle{25F9}{*}
+% \showsymbol\lltriangle{25FA}{*}
+% \showsymbol\mdwhtsquare{25FB}{*}
+% \showsymbol\mdblksquare{25FC}{*}
+% \showsymbol\mdsmwhtsquare{25FD}{*}
+% \showsymbol\mdsmblksquare{25FE}{*}
+% \showsymbol\lrtriangle{25FF}{*}
+% \showsymbol\bigstar{2605}{*}
+% \showsymbol\bigwhitestar{2606}{*}
+% \showsymbol\astrosun{2609}{}
+% \showsymbol\danger{2621}{}
+% \showsymbol\blacksmiley{263B}{}
+% \showsymbol\sun{263C}{}
+% \showsymbol\rightmoon{263D}{}
+% \showsymbol\leftmoon{263E}{}
+% \showsymbol\female{2640}{}
+% \showsymbol\male{2642}{}
+% \showsymbol\spadesuit{2660}{*}
+% \showsymbol\heartsuit{2661}{*}
+% \showsymbol\diamondsuit{2662}{*}
+% \showsymbol\clubsuit{2663}{*}
+% \showsymbol\varspadesuit{2664}{}
+% \showsymbol\varheartsuit{2665}{}
+% \showsymbol\vardiamondsuit{2666}{}
+% \showsymbol\varclubsuit{2667}{}
+% \showsymbol\quarternote{2669}{}
+% \showsymbol\eighthnote{266A}{}
+% \showsymbol\twonotes{266B}{}
+% \showsymbol\flat{266D}{}
+% \showsymbol\natural{266E}{}
+% \showsymbol\sharp{266F}{}
+% \showsymbol\acidfree{267E}{*}
+% \showsymbol\dicei{2680}{}
+% \showsymbol\diceii{2681}{}
+% \showsymbol\diceiii{2682}{}
+% \showsymbol\diceiv{2683}{}
+% \showsymbol\dicev{2684}{}
+% \showsymbol\dicevi{2685}{}
+% \showsymbol\circledrightdot{2686}{}
+% \showsymbol\circledtwodots{2687}{}
+% \showsymbol\blackcircledrightdot{2688}{}
+% \showsymbol\blackcircledtwodots{2689}{}
+% \showsymbol\Hermaphrodite{26A5}{}
+% \showsymbol\mdwhtcircle{26AA}{}
+% \showsymbol\mdblkcircle{26AB}{}
+% \showsymbol\mdsmwhtcircle{26AC}{}
+% \showsymbol\neuter{26B2}{}
+% \showsymbol\checkmark{2713}{}
+% \showsymbol\maltese{2720}{}
+% \showsymbol\circledstar{272A}{}
+% \showsymbol\varstar{2736}{}
+% \showsymbol\dingasterisk{273D}{}
+% \showsymbol\draftingarrow{279B}{*}
+% \showsymbol\threedangle{27C0}{*}
+% \showsymbol\whiteinwhitetriangle{27C1}{*}
+% \showsymbol\subsetcirc{27C3}{*}
+% \showsymbol\supsetcirc{27C4}{*}
+% \showsymbol\diagup{27CB}{*}
+% \showsymbol\diagdown{27CD}{*}
+% \showsymbol\diamondcdot{27D0}{*}
+% \showsymbol\rdiagovfdiag{292B}{*}
+% \showsymbol\fdiagovrdiag{292C}{*}
+% \showsymbol\seovnearrow{292D}{*}
+% \showsymbol\neovsearrow{292E}{*}
+% \showsymbol\fdiagovnearrow{292F}{*}
+% \showsymbol\rdiagovsearrow{2930}{*}
+% \showsymbol\neovnwarrow{2931}{*}
+% \showsymbol\nwovnearrow{2932}{*}
+% \showsymbol\uprightcurvearrow{2934}{*}
+% \showsymbol\downrightcurvedarrow{2935}{*}
+% \showsymbol\mdsmblkcircle{2981}{*}
+% \showsymbol\fourvdots{2999}{*}
+% \showsymbol\vzigzag{299A}{*}
+% \showsymbol\measuredangleleft{299B}{*}
+% \showsymbol\rightanglesqr{299C}{*}
+% \showsymbol\rightanglemdot{299D}{*}
+% \showsymbol\angles{299E}{*}
+% \showsymbol\angdnr{299F}{*}
+% \showsymbol\gtlpar{29A0}{*}
+% \showsymbol\sphericalangleup{29A1}{*}
+% \showsymbol\turnangle{29A2}{*}
+% \showsymbol\revangle{29A3}{*}
+% \showsymbol\angleubar{29A4}{*}
+% \showsymbol\revangleubar{29A5}{*}
+% \showsymbol\wideangledown{29A6}{*}
+% \showsymbol\wideangleup{29A7}{*}
+% \showsymbol\measanglerutone{29A8}{*}
+% \showsymbol\measanglelutonw{29A9}{*}
+% \showsymbol\measanglerdtose{29AA}{*}
+% \showsymbol\measangleldtosw{29AB}{*}
+% \showsymbol\measangleurtone{29AC}{*}
+% \showsymbol\measangleultonw{29AD}{*}
+% \showsymbol\measangledrtose{29AE}{*}
+% \showsymbol\measangledltosw{29AF}{*}
+% \showsymbol\revemptyset{29B0}{*}
+% \showsymbol\emptysetobar{29B1}{*}
+% \showsymbol\emptysetocirc{29B2}{*}
+% \showsymbol\emptysetoarr{29B3}{*}
+% \showsymbol\emptysetoarrl{29B4}{*}
+% \showsymbol\obot{29BA}{*}
+% \showsymbol\olcross{29BB}{*}
+% \showsymbol\odotslashdot{29BC}{*}
+% \showsymbol\uparrowoncircle{29BD}{*}
+% \showsymbol\circledwhitebullet{29BE}{*}
+% \showsymbol\circledbullet{29BF}{*}
+% \showsymbol\cirscir{29C2}{*}
+% \showsymbol\cirE{29C3}{*}
+% \showsymbol\boxonbox{29C9}{*}
+% \showsymbol\triangleodot{29CA}{*}
+% \showsymbol\triangleubar{29CB}{*}
+% \showsymbol\triangles{29CC}{*}
+% \showsymbol\iinfin{29DC}{*}
+% \showsymbol\tieinfty{29DD}{*}
+% \showsymbol\nvinfty{29DE}{*}
+% \showsymbol\laplac{29E0}{*}
+% \showsymbol\thermod{29E7}{*}
+% \showsymbol\downtriangleleftblack{29E8}{*}
+% \showsymbol\downtrianglerightblack{29E9}{*}
+% \showsymbol\blackdiamonddownarrow{29EA}{*}
+% \showsymbol\blacklozenge{29EB}{}
+% \showsymbol\circledownarrow{29EC}{*}
+% \showsymbol\blackcircledownarrow{29ED}{*}
+% \showsymbol\errbarsquare{29EE}{*}
+% \showsymbol\errbarblacksquare{29EF}{*}
+% \showsymbol\errbardiamond{29F0}{*}
+% \showsymbol\errbarblackdiamond{29F1}{*}
+% \showsymbol\errbarcircle{29F2}{*}
+% \showsymbol\errbarblackcircle{29F3}{*}
+% \showsymbol\perps{2AE1}{}
+% \showsymbol\topcir{2AF1}{}
+% \showsymbol\squaretopblack{2B12}{}
+% \showsymbol\squarebotblack{2B13}{}
+% \showsymbol\squareurblack{2B14}{}
+% \showsymbol\squarellblack{2B15}{}
+% \showsymbol\diamondleftblack{2B16}{}
+% \showsymbol\diamondrightblack{2B17}{}
+% \showsymbol\diamondtopblack{2B18}{}
+% \showsymbol\diamondbotblack{2B19}{}
+% \showsymbol\dottedsquare{2B1A}{}
+% \showsymbol\lgblksquare{2B1B}{}
+% \showsymbol\lgwhtsquare{2B1C}{}
+% \showsymbol\vysmblksquare{2B1D}{}
+% \showsymbol\vysmwhtsquare{2B1E}{}
+% \showsymbol\pentagonblack{2B1F}{}
+% \showsymbol\pentagon{2B20}{}
+% \showsymbol\varhexagon{2B21}{}
+% \showsymbol\varhexagonblack{2B22}{}
+% \showsymbol\hexagonblack{2B23}{}
+% \showsymbol\lgblkcircle{2B24}{}
+% \showsymbol\mdblkdiamond{2B25}{}
+% \showsymbol\mdwhtdiamond{2B26}{}
+% \showsymbol\mdblklozenge{2B27}{}
+% \showsymbol\mdwhtlozenge{2B28}{}
+% \showsymbol\smblkdiamond{2B29}{}
+% \showsymbol\smblklozenge{2B2A}{}
+% \showsymbol\smwhtlozenge{2B2B}{}
+% \showsymbol\blkhorzoval{2B2C}{}
+% \showsymbol\whthorzoval{2B2D}{}
+% \showsymbol\blkvertoval{2B2E}{}
+% \showsymbol\whtvertoval{2B2F}{}
+% \showsymbol\medwhitestar{2B50}{}
+% \showsymbol\medblackstar{2B51}{}
+% \showsymbol\smwhitestar{2B52}{}
+% \showsymbol\rightpentagonblack{2B53}{}
+% \showsymbol\rightpentagon{2B54}{}
+% \showsymbol\postalmark{3012}{}
+% \showsymbol\hzigzag{3030}{}
+% \showsymbol\Bbbk{1D55C}{}
+% \showsymbol\bracevert{XXXX}{*}
+% \end{multicols}
+%
+% \subsection{Binary operators}
+% \begin{multicols}{2}
+% \showsymbol+{000B}{}
+% \showsymbol\pm{00B1}{}
+% \showsymbol\cdotp{00B7}{}, \cmd\centerdot
+% \showsymbol\times{00D7}{}
+% \showsymbol\div{00F7}{}
+% \showsymbol\dagger{2020}{}
+% \showsymbol\ddagger{2021}{}
+% \showsymbol\smblkcircle{2022}{}
+% \showsymbol\fracslash{2044}{}
+% \showsymbol\upand{214B}{}
+% \showsymbol-{000D}{}
+% \showsymbol\mp{2213}{}
+% \showsymbol\dotplus{2214}{}
+% \showsymbol\smallsetminus{2216}{}
+% \showsymbol\ast{2217}{}
+% \showsymbol\vysmwhtcircle{2218}{}
+% \showsymbol\vysmblkcircle{2219}{}, {\small\cmd\bullet}
+% \showsymbol\wedge{2227}{}, \cmd\land
+% \showsymbol\vee{2228}{}, \cmd\lor
+% \showsymbol\cap{2229}{}
+% \showsymbol\cup{222A}{}
+% \showsymbol\dotminus{2238}{}
+% \showsymbol\invlazys{223E}{}
+% \showsymbol\wr{2240}{}
+% \showsymbol\cupleftarrow{228C}{}
+% \showsymbol\cupdot{228D}{}
+% \showsymbol\uplus{228E}{}
+% \showsymbol\sqcap{2293}{}
+% \showsymbol\sqcup{2294}{}
+% \showsymbol\oplus{2295}{}
+% \showsymbol\ominus{2296}{}
+% \showsymbol\otimes{2297}{}
+% \showsymbol\oslash{2298}{}
+% \showsymbol\odot{2299}{}
+% \showsymbol\circledcirc{229A}{}
+% \showsymbol\circledast{229B}{}
+% \showsymbol\circledequal{229C}{}
+% \showsymbol\circleddash{229D}{}
+% \showsymbol\boxplus{229E}{}
+% \showsymbol\boxminus{229F}{}
+% \showsymbol\boxtimes{22A0}{}
+% \showsymbol\boxdot{22A1}{}
+% \showsymbol\intercal{22BA}{}
+% \showsymbol\veebar{22BB}{}
+% \showsymbol\barwedge{22BC}{}
+% \showsymbol\barvee{22BD}{}
+% \showsymbol\diamond{22C4}{}, \cmd\smwhtdiamond
+% \showsymbol\cdot{22C5}{*}
+% \showsymbol\star{22C6}{}
+% \showsymbol\divideontimes{22C7}{}
+% \showsymbol\ltimes{22C9}{}
+% \showsymbol\rtimes{22CA}{}
+% \showsymbol\leftthreetimes{22CB}{}
+% \showsymbol\rightthreetimes{22CC}{}
+% \showsymbol\curlyvee{22CE}{}
+% \showsymbol\curlywedge{22CF}{}
+% \showsymbol\Cap{22D2}{}, \cmd\doublecap
+% \showsymbol\Cup{22D3}{}, \cmd\doublecup
+% \showsymbol\varbarwedge{2305}{*}
+% \showsymbol\vardoublebarwedge{2306}{*}
+% \showsymbol\obar{233D}{}
+% \showsymbol\triangle{25B3}{}, \cmd\bigtriangleup
+% \showsymbol\lhd{22B2}{}
+% \showsymbol\rhd{22B3}{}
+% \showsymbol\unlhd{22B4}{}
+% \showsymbol\unrhd{22B5}{}
+% \showsymbol\mdlgwhtcircle{25CB}{*}
+% \showsymbol\boxbar{25EB}{*}
+% \showsymbol\veedot{27C7}{*}
+% \showsymbol\wedgedot{27D1}{*}
+% \showsymbol\lozengeminus{27E0}{*}
+% \showsymbol\concavediamond{27E1}{*}
+% \showsymbol\concavediamondtickleft{27E2}{*}
+% \showsymbol\concavediamondtickright{27E3}{*}
+% \showsymbol\whitesquaretickleft{27E4}{*}
+% \showsymbol\whitesquaretickright{27E5}{*}
+% \showsymbol\typecolon{2982}{*}
+% \showsymbol\circlehbar{29B5}{*}
+% \showsymbol\circledvert{29B6}{}
+% \showsymbol\circledparallel{29B7}{}
+% \showsymbol\obslash{29B8}{}
+% \showsymbol\operp{29B9}{*}
+% \showsymbol\olessthan{29C0}{}
+% \showsymbol\ogreaterthan{29C1}{}
+% \showsymbol\boxdiag{29C4}{}
+% \showsymbol\boxbslash{29C5}{}
+% \showsymbol\boxast{29C6}{}
+% \showsymbol\boxcircle{29C7}{}
+% \showsymbol\boxbox{29C8}{*}
+% \showsymbol\triangleserifs{29CD}{*}
+% \showsymbol\hourglass{29D6}{*}
+% \showsymbol\blackhourglass{29D7}{*}
+% \showsymbol\shuffle{29E2}{*}
+% \showsymbol\mdlgblklozenge{29EB}{*}
+% \showsymbol\setminus{29F5}{*}
+% \showsymbol\dsol{29F6}{*}
+% \showsymbol\rsolbar{29F7}{*}
+% \showsymbol\doubleplus{29FA}{*}
+% \showsymbol\tripleplus{29FB}{*}
+% \showsymbol\tplus{29FE}{*}
+% \showsymbol\tminus{29FF}{*}
+% \showsymbol\ringplus{2A22}{}
+% \showsymbol\plushat{2A23}{}
+% \showsymbol\simplus{2A24}{}
+% \showsymbol\plusdot{2A25}{}
+% \showsymbol\plussim{2A26}{}
+% \showsymbol\plussubtwo{2A27}{}
+% \showsymbol\plustrif{2A28}{*}
+% \showsymbol\commaminus{2A29}{*}
+% \showsymbol\minusdot{2A2A}{}
+% \showsymbol\minusfdots{2A2B}{}
+% \showsymbol\minusrdots{2A2C}{*}
+% \showsymbol\opluslhrim{2A2D}{*}
+% \showsymbol\oplusrhrim{2A2E}{*}
+% \showsymbol\vectimes{2A2F}{*}
+% \showsymbol\dottimes{2A30}{}
+% \showsymbol\timesbar{2A31}{}
+% \showsymbol\btimes{2A32}{}
+% \showsymbol\smashtimes{2A33}{*}
+% \showsymbol\otimeslhrim{2A34}{*}
+% \showsymbol\otimesrhrim{2A35}{*}
+% \showsymbol\otimeshat{2A36}{*}
+% \showsymbol\Otimes{2A37}{*}
+% \showsymbol\odiv{2A38}{*}
+% \showsymbol\triangleplus{2A39}{*}
+% \showsymbol\triangleminus{2A3A}{*}
+% \showsymbol\triangletimes{2A3B}{*}
+% \showsymbol\intprod{2A3C}{*}
+% \showsymbol\intprodr{2A3D}{*}
+% \showsymbol\fcmp{2A3E}{*}
+% \showsymbol\amalg{2A3F}{}
+% \showsymbol\capdot{2A40}{*}
+% \showsymbol\uminus{2A41}{*}
+% \showsymbol\barcup{2A42}{*}
+% \showsymbol\barcap{2A43}{*}
+% \showsymbol\capwedge{2A44}{*}
+% \showsymbol\cupvee{2A45}{*}
+% \showsymbol\cupovercap{2A46}{*}
+% \showsymbol\capovercup{2A47}{*}
+% \showsymbol\cupbarcap{2A48}{*}
+% \showsymbol\capbarcup{2A49}{*}
+% \showsymbol\twocups{2A4A}{*}
+% \showsymbol\twocaps{2A4B}{*}
+% \showsymbol\closedvarcup{2A4C}{*}
+% \showsymbol\closedvarcap{2A4D}{*}
+% \showsymbol\Sqcap{2A4E}{*}
+% \showsymbol\Sqcup{2A4F}{*}
+% \showsymbol\closedvarcupsmashprod{2A50}{*}
+% \showsymbol\wedgeodot{2A51}{*}
+% \showsymbol\veeodot{2A52}{*}
+% \showsymbol\Wedge{2A53}{*}
+% \showsymbol\Vee{2A54}{*}
+% \showsymbol\wedgeonwedge{2A55}{*}
+% \showsymbol\veeonvee{2A56}{*}
+% \showsymbol\bigslopedvee{2A57}{*}
+% \showsymbol\bigslopedwedge{2A58}{*}
+% \showsymbol\wedgemidvert{2A5A}{*}
+% \showsymbol\veemidvert{2A5B}{*}
+% \showsymbol\midbarwedge{2A5C}{*}
+% \showsymbol\midbarvee{2A5D}{*}
+% \showsymbol\doublebarwedge{2A5E}{}
+% \showsymbol\wedgebar{2A5F}{*}
+% \showsymbol\wedgedoublebar{2A60}{*}
+% \showsymbol\varveebar{2A61}{*}
+% \showsymbol\doublebarvee{2A62}{*}
+% \showsymbol\veedoublebar{2A63}{}
+% \showsymbol\dsub{2A64}{*}
+% \showsymbol\rsub{2A65}{*}
+% \showsymbol\eqqplus{2A71}{}
+% \showsymbol\pluseqq{2A72}{}
+% \showsymbol\interleave{2AF4}{}
+% \showsymbol\nhVvert{2AF5}{}
+% \showsymbol\threedotcolon{2AF6}{}
+% \showsymbol\trslash{2AFB}{}
+% \showsymbol\sslash{2AFD}{}
+% \showsymbol\talloblong{2AFE}{}
+% \end{multicols}
+%
+% \subsection{Relations}
+% \begin{multicols}{2}
+% \showsymbol*{002A}{}, \cmd\ast
+% \showsymbol:{003A}{}
+% \showsymbol<{003C}{}, \cmd\less
+% \showsymbol={003D}{}, \cmd\equal
+% \showsymbol>{003E}{}, \cmd\greater
+% \showsymbol\closure{2050}{*}
+% \showsymbol\vertoverlay{20D2}{}
+% \showsymbol\leftarrow{2190}{}, \cmd\gets
+% \showsymbol\uparrow{2191}{}
+% \showsymbol\rightarrow{2192}{}, \cmd\to
+% \showsymbol\downarrow{2193}{}
+% \showsymbol\leftrightarrow{2194}{}
+% \showsymbol\updownarrow{2195}{}
+% \showsymbol\nwarrow{2196}{}
+% \showsymbol\nearrow{2197}{}
+% \showsymbol\searrow{2198}{}
+% \showsymbol\swarrow{2199}{}
+% \showsymbol\nleftarrow{219A}{}
+% \showsymbol\nrightarrow{219B}{}
+% \showsymbol\leftwavearrow{219C}{}
+% \showsymbol\rightwavearrow{219D}{}
+% \showsymbol\twoheadleftarrow{219E}{}
+% \showsymbol\twoheaduparrow{219F}{}
+% \showsymbol\twoheadrightarrow{21A0}{}
+% \showsymbol\twoheaddownarrow{21A1}{}
+% \showsymbol\leftarrowtail{21A2}{}
+% \showsymbol\rightarrowtail{21A3}{}
+% \showsymbol\mapsfrom{21A4}{}
+% \showsymbol\mapsup{21A5}{}
+% \showsymbol\mapsto{21A6}{}
+% \showsymbol\mapsdown{21A7}{}
+% \showsymbol\hookleftarrow{21A9}{}
+% \showsymbol\hookrightarrow{21AA}{}
+% \showsymbol\looparrowleft{21AB}{}
+% \showsymbol\looparrowright{21AC}{}
+% \showsymbol\leftrightsquigarrow{21AD}{}
+% \showsymbol\nleftrightarrow{21AE}{}
+% \showsymbol\downzigzagarrow{21AF}{}
+% \showsymbol\Lsh{21B0}{}
+% \showsymbol\Rsh{21B1}{}
+% \showsymbol\Ldsh{21B2}{}
+% \showsymbol\Rdsh{21B3}{}
+% \showsymbol\curvearrowleft{21B6}{}
+% \showsymbol\curvearrowright{21B7}{}
+% \showsymbol\circlearrowleft{21BA}{}
+% \showsymbol\circlearrowright{21BB}{}
+% \showsymbol\leftharpoonup{21BC}{}
+% \showsymbol\leftharpoondown{21BD}{}
+% \showsymbol\upharpoonright{21BE}{}, \cmd\restriction
+% \showsymbol\upharpoonleft{21BF}{}
+% \showsymbol\rightharpoonup{21C0}{}
+% \showsymbol\rightharpoondown{21C1}{}
+% \showsymbol\downharpoonright{21C2}{}
+% \showsymbol\downharpoonleft{21C3}{}
+% \showsymbol\rightleftarrows{21C4}{}
+% \showsymbol\updownarrows{21C5}{}
+% \showsymbol\leftrightarrows{21C6}{}
+% \showsymbol\leftleftarrows{21C7}{}
+% \showsymbol\upuparrows{21C8}{}
+% \showsymbol\rightrightarrows{21C9}{}
+% \showsymbol\downdownarrows{21CA}{}
+% \showsymbol\leftrightharpoons{21CB}{}
+% \showsymbol\rightleftharpoons{21CC}{}
+% \showsymbol\nLeftarrow{21CD}{}
+% \showsymbol\nLeftrightarrow{21CE}{}
+% \showsymbol\nRightarrow{21CF}{}
+% \showsymbol\Leftarrow{21D0}{}
+% \showsymbol\Uparrow{21D1}{}
+% \showsymbol\Rightarrow{21D2}{}
+% \showsymbol\Downarrow{21D3}{}
+% \showsymbol\Leftrightarrow{21D4}{}
+% \showsymbol\Updownarrow{21D5}{}
+% \showsymbol\Nwarrow{21D6}{}
+% \showsymbol\Nearrow{21D7}{}
+% \showsymbol\Searrow{21D8}{}
+% \showsymbol\Swarrow{21D9}{}
+% \showsymbol\Lleftarrow{21DA}{*}
+% \showsymbol\Rrightarrow{21DB}{*}
+% \showsymbol\leftsquigarrow{21DC}{}
+% \showsymbol\rightsquigarrow{21DD}{}, \cmd\leadsto
+% \showsymbol\barleftarrow{21E4}{*}
+% \showsymbol\rightarrowbar{21E5}{*}
+% \showsymbol\circleonrightarrow{21F4}{*}
+% \showsymbol\downuparrows{21F5}{}
+% \showsymbol\rightthreearrows{21F6}{*}
+% \showsymbol\nvleftarrow{21F7}{*}
+% \showsymbol\nvrightarrow{21F8}{*}
+% \showsymbol\nvleftrightarrow{21F9}{*}
+% \showsymbol\nVleftarrow{21FA}{*}
+% \showsymbol\nVrightarrow{21FB}{*}
+% \showsymbol\nVleftrightarrow{21FC}{*}
+% \showsymbol\leftarrowtriangle{21FD}{*}
+% \showsymbol\rightarrowtriangle{21FE}{*}
+% \showsymbol\leftrightarrowtriangle{21FF}{*}
+% \showsymbol\in{2208}{}
+% \showsymbol\notin{2209}{}
+% \showsymbol\smallin{220A}{}
+% \showsymbol\ni{220B}{}, \cmd\owns
+% \showsymbol\nni{220C}{}
+% \showsymbol\smallni{220D}{}
+% \showsymbol\propto{221D}{}
+% \showsymbol\varpropto{221D}{}
+% \showsymbol\mid{2223}{}
+% \showsymbol\shortmid{2223}{}
+% \showsymbol\nmid{2224}{}
+% \showsymbol\nshortmid{2224}{*}
+% \showsymbol\parallel{2225}{}
+% \showsymbol\shortparallel{2225}{*}
+% \showsymbol\nparallel{2226}{}
+% \showsymbol\nshortparallel{2226}{*}
+% \showsymbol\Colon{2237}{}
+% \showsymbol\dashcolon{2239}{}
+% \showsymbol\dotsminusdots{223A}{}
+% \showsymbol\kernelcontraction{223B}{}
+% \showsymbol\sim{223C}{}
+% \showsymbol\thicksim{223C}{}
+% \showsymbol\backsim{223D}{}
+% \showsymbol\nsim{2241}{}
+% \showsymbol\eqsim{2242}{}
+% \showsymbol\simeq{2243}{}
+% \showsymbol\nsime{2244}{}
+% \showsymbol\cong{2245}{}
+% \showsymbol\simneqq{2246}{}
+% \showsymbol\ncong{2247}{}
+% \showsymbol\approx{2248}{}
+% \showsymbol\thickapprox{2248}{}
+% \showsymbol\napprox{2249}{}
+% \showsymbol\approxeq{224A}{}
+% \showsymbol\approxident{224B}{}
+% \showsymbol\backcong{224C}{}
+% \showsymbol\asymp{224D}{}
+% \showsymbol\Bumpeq{224E}{}
+% \showsymbol\bumpeq{224F}{}
+% \showsymbol\doteq{2250}{}
+% \showsymbol\Doteq{2251}{}, \cmd\doteqdot
+% \showsymbol\fallingdotseq{2252}{}
+% \showsymbol\risingdotseq{2253}{}
+% \showsymbol\coloneq{2254}{}
+% \showsymbol\eqcolon{2255}{}
+% \showsymbol\eqcirc{2256}{}
+% \showsymbol\circeq{2257}{}
+% \showsymbol\arceq{2258}{}
+% \showsymbol\wedgeq{2259}{}
+% \showsymbol\veeeq{225A}{}
+% \showsymbol\stareq{225B}{}
+% \showsymbol\triangleq{225C}{}
+% \showsymbol\eqdef{225D}{}
+% \showsymbol\measeq{225E}{}
+% \showsymbol\questeq{225F}{}
+% \showsymbol\ne{2260}{}, \cmd\neq
+% \showsymbol\equiv{2261}{}
+% \showsymbol\nequiv{2262}{}
+% \showsymbol\Equiv{2263}{}
+% \showsymbol\leq{2264}{}, \cmd\le
+% \showsymbol\geq{2265}{}, \cmd\ge
+% \showsymbol\leqq{2266}{}
+% \showsymbol\geqq{2267}{}
+% \showsymbol\lneqq{2268}{}
+% \showsymbol\lvertneqq{2268}{}
+% \showsymbol\gneqq{2269}{}
+% \showsymbol\gvertneqq{2269}{}
+% \showsymbol\ll{226A}{}
+% \showsymbol\gg{226B}{}
+% \showsymbol\between{226C}{}
+% \showsymbol\nasymp{226D}{}
+% \showsymbol\nless{226E}{}
+% \showsymbol\ngtr{226F}{}
+% \showsymbol\nleq{2270}{}
+% \showsymbol\ngeq{2271}{}
+% \showsymbol\lesssim{2272}{}
+% \showsymbol\gtrsim{2273}{}
+% \showsymbol\nlesssim{2274}{}
+% \showsymbol\ngtrsim{2275}{}
+% \showsymbol\lessgtr{2276}{}
+% \showsymbol\gtrless{2277}{}
+% \showsymbol\nlessgtr{2278}{}
+% \showsymbol\ngtrless{2279}{}
+% \showsymbol\prec{227A}{}
+% \showsymbol\succ{227B}{}
+% \showsymbol\preccurlyeq{227C}{}
+% \showsymbol\succcurlyeq{227D}{}
+% \showsymbol\precsim{227E}{}
+% \showsymbol\succsim{227F}{}
+% \showsymbol\nprec{2280}{}
+% \showsymbol\nsucc{2281}{}
+% \showsymbol\subset{2282}{}
+% \showsymbol\supset{2283}{}
+% \showsymbol\nsubset{2284}{}
+% \showsymbol\nsupset{2285}{}
+% \showsymbol\subseteq{2286}{}
+% \showsymbol\supseteq{2287}{}
+% \showsymbol\nsubseteq{2288}{}
+% \showsymbol\nsupseteq{2289}{}
+% \showsymbol\subsetneq{228A}{}
+% \showsymbol\varsubsetneq{228A}{*}
+% \showsymbol\supsetneq{228B}{}
+% \showsymbol\varsupsetneq{228B}{*}
+% \showsymbol\sqsubset{228F}{}
+% \showsymbol\sqsupset{2290}{}
+% \showsymbol\sqsubseteq{2291}{}
+% \showsymbol\sqsupseteq{2292}{}
+% \showsymbol\vdash{22A2}{}
+% \showsymbol\dashv{22A3}{}
+% \showsymbol\assert{22A6}{}
+% \showsymbol\models{22A7}{}
+% \showsymbol\vDash{22A8}{}
+% \showsymbol\Vdash{22A9}{}
+% \showsymbol\Vvdash{22AA}{}
+% \showsymbol\VDash{22AB}{}
+% \showsymbol\nvdash{22AC}{}
+% \showsymbol\nvDash{22AD}{}
+% \showsymbol\nVdash{22AE}{}
+% \showsymbol\nVDash{22AF}{}
+% \showsymbol\prurel{22B0}{}
+% \showsymbol\scurel{22B1}{}
+% \showsymbol\vartriangleleft{22B2}{}
+% \showsymbol\vartriangleright{22B3}{}
+% \showsymbol\trianglelefteq{22B4}{}
+% \showsymbol\trianglerighteq{22B5}{}
+% \showsymbol\origof{22B6}{}
+% \showsymbol\imageof{22B7}{}
+% \showsymbol\multimap{22B8}{}
+% \showsymbol\bowtie{22C8}{}
+% \showsymbol\backsimeq{22CD}{}
+% \showsymbol\Subset{22D0}{}
+% \showsymbol\Supset{22D1}{}
+% \showsymbol\pitchfork{22D4}{}
+% \showsymbol\equalparallel{22D5}{}
+% \showsymbol\lessdot{22D6}{}
+% \showsymbol\gtrdot{22D7}{}
+% \showsymbol\lll{22D8}{}, \cmd\llless
+% \showsymbol\ggg{22D9}{}, \cmd\gggtr
+% \showsymbol\lesseqgtr{22DA}{}
+% \showsymbol\gtreqless{22DB}{}
+% \showsymbol\eqless{22DC}{}
+% \showsymbol\eqgtr{22DD}{}
+% \showsymbol\curlyeqprec{22DE}{}
+% \showsymbol\curlyeqsucc{22DF}{}
+% \showsymbol\npreccurlyeq{22E0}{}
+% \showsymbol\nsucccurlyeq{22E1}{}
+% \showsymbol\nsqsubseteq{22E2}{}
+% \showsymbol\nsqsupseteq{22E3}{}
+% \showsymbol\sqsubsetneq{22E4}{*}
+% \showsymbol\sqsupsetneq{22E5}{*}
+% \showsymbol\lnsim{22E6}{}
+% \showsymbol\gnsim{22E7}{}
+% \showsymbol\precnsim{22E8}{}
+% \showsymbol\succnsim{22E9}{}
+% \showsymbol\nvartriangleleft{22EA}{}
+% \showsymbol\nvartriangleright{22EB}{}
+% \showsymbol\ntrianglelefteq{22EC}{}
+% \showsymbol\ntrianglerighteq{22ED}{}
+% \showsymbol\vdots{22EE}{}
+% \showsymbol\adots{22F0}{}
+% \showsymbol\ddots{22F1}{}
+% \showsymbol\disin{22F2}{*}
+% \showsymbol\varisins{22F3}{*}
+% \showsymbol\isins{22F4}{*}
+% \showsymbol\isindot{22F5}{*}
+% \showsymbol\varisinobar{22F6}{}
+% \showsymbol\isinobar{22F7}{*}
+% \showsymbol\isinvb{22F8}{*}
+% \showsymbol\isinE{22F9}{*}
+% \showsymbol\nisd{22FA}{*}
+% \showsymbol\varnis{22FB}{*}
+% \showsymbol\nis{22FC}{*}
+% \showsymbol\varniobar{22FD}{}
+% \showsymbol\niobar{22FE}{*}
+% \showsymbol\bagmember{22FF}{*}
+% \showsymbol\frown{2322}{}
+% \showsymbol\smallfrown{2322}{*}
+% \showsymbol\smile{2323}{}
+% \showsymbol\smallsmile{2323}{*}
+% \showsymbol\APLnotslash{233F}{}
+% \showsymbol\vartriangle{25B5}{*}
+% \showsymbol\perp{27C2}{*}
+% \showsymbol\bsolhsub{27C8}{}
+% \showsymbol\suphsol{27C9}{}
+% \showsymbol\upin{27D2}{*}
+% \showsymbol\pullback{27D3}{*}
+% \showsymbol\pushout{27D4}{*}
+% \showsymbol\DashVDash{27DA}{*}
+% \showsymbol\dashVdash{27DB}{*}
+% \showsymbol\multimapinv{27DC}{*}
+% \showsymbol\vlongdash{27DD}{*}
+% \showsymbol\longdashv{27DE}{*}
+% \showsymbol\cirbot{27DF}{*}
+% \showsymbol\UUparrow{27F0}{*}
+% \showsymbol\DDownarrow{27F1}{*}
+% \showsymbol\acwgapcirclearrow{27F2}{*}
+% \showsymbol\cwgapcirclearrow{27F3}{*}
+% \showsymbol\rightarrowonoplus{27F4}{*}
+% \showsymbol\longleftarrow{27F5}{*}
+% \showsymbol\longrightarrow{27F6}{*}
+% \showsymbol\longleftrightarrow{27F7}{*}
+% \showsymbol\Longleftarrow{27F8}{*}
+% \showsymbol\Longrightarrow{27F9}{*}
+% \showsymbol\Longleftrightarrow{27FA}{*}
+% \showsymbol\longmapsfrom{27FB}{*}
+% \showsymbol\longmapsto{27FC}{*}
+% \showsymbol\Longmapsfrom{27FD}{*}
+% \showsymbol\Longmapsto{27FE}{*}
+% \showsymbol\longrightsquigarrow{27FF}{*}
+% \showsymbol\nvtwoheadrightarrow{2900}{*}
+% \showsymbol\nVtwoheadrightarrow{2901}{*}
+% \showsymbol\nvLeftarrow{2902}{*}
+% \showsymbol\nvRightarrow{2903}{*}
+% \showsymbol\nvLeftrightarrow{2904}{*}
+% \showsymbol\twoheadmapsto{2905}{*}
+% \showsymbol\Mapsfrom{2906}{*}
+% \showsymbol\Mapsto{2907}{*}
+% \showsymbol\downarrowbarred{2908}{*}
+% \showsymbol\uparrowbarred{2909}{*}
+% \showsymbol\Uuparrow{290A}{*}
+% \showsymbol\Ddownarrow{290B}{*}
+% \showsymbol\leftbkarrow{290C}{*}
+% \showsymbol\rightbkarrow{290D}{*}
+% \showsymbol\leftdbkarrow{290E}{*}, \cmd\dashleftarrow
+% \showsymbol\dbkarow{290F}{*}, \cmd\dashrightarrow
+% \showsymbol\drbkarow{2910}{*}
+% \showsymbol\rightdotarrow{2911}{*}
+% \showsymbol\baruparrow{2912}{*}
+% \showsymbol\downarrowbar{2913}{*}
+% \showsymbol\nvrightarrowtail{2914}{*}
+% \showsymbol\nVrightarrowtail{2915}{*}
+% \showsymbol\twoheadrightarrowtail{2916}{*}
+% \showsymbol\nvtwoheadrightarrowtail{2917}{*}
+% \showsymbol\nVtwoheadrightarrowtail{2918}{*}
+% \showsymbol\lefttail{2919}{*}
+% \showsymbol\righttail{291A}{*}
+% \showsymbol\leftdbltail{291B}{*}
+% \showsymbol\rightdbltail{291C}{*}
+% \showsymbol\diamondleftarrow{291D}{*}
+% \showsymbol\rightarrowdiamond{291E}{*}
+% \showsymbol\diamondleftarrowbar{291F}{*}
+% \showsymbol\barrightarrowdiamond{2920}{*}
+% \showsymbol\nwsearrow{2921}{*}
+% \showsymbol\neswarrow{2922}{*}
+% \showsymbol\hknwarrow{2923}{*}
+% \showsymbol\hknearrow{2924}{*}
+% \showsymbol\hksearow{2925}{*}
+% \showsymbol\hkswarow{2926}{*}
+% \showsymbol\tona{2927}{*}
+% \showsymbol\toea{2928}{*}
+% \showsymbol\tosa{2929}{*}
+% \showsymbol\towa{292A}{*}
+% \showsymbol\rightcurvedarrow{2933}{*}
+% \showsymbol\leftdowncurvedarrow{2936}{*}
+% \showsymbol\rightdowncurvedarrow{2937}{*}
+% \showsymbol\cwrightarcarrow{2938}{*}
+% \showsymbol\acwleftarcarrow{2939}{*}
+% \showsymbol\acwoverarcarrow{293A}{*}
+% \showsymbol\acwunderarcarrow{293B}{*}
+% \showsymbol\curvearrowrightminus{293C}{*}
+% \showsymbol\curvearrowleftplus{293D}{*}
+% \showsymbol\cwundercurvearrow{293E}{*}
+% \showsymbol\ccwundercurvearrow{293F}{*}
+% \showsymbol\acwcirclearrow{2940}{*}
+% \showsymbol\cwcirclearrow{2941}{*}
+% \showsymbol\rightarrowshortleftarrow{2942}{*}
+% \showsymbol\leftarrowshortrightarrow{2943}{*}
+% \showsymbol\shortrightarrowleftarrow{2944}{*}
+% \showsymbol\rightarrowplus{2945}{*}
+% \showsymbol\leftarrowplus{2946}{*}
+% \showsymbol\rightarrowx{2947}{*}
+% \showsymbol\leftrightarrowcircle{2948}{*}
+% \showsymbol\twoheaduparrowcircle{2949}{*}
+% \showsymbol\leftrightharpoonupdown{294A}{*}
+% \showsymbol\leftrightharpoondownup{294B}{*}
+% \showsymbol\updownharpoonrightleft{294C}{*}
+% \showsymbol\updownharpoonleftright{294D}{*}
+% \showsymbol\leftrightharpoonupup{294E}{*}
+% \showsymbol\updownharpoonrightright{294F}{*}
+% \showsymbol\leftrightharpoondowndown{2950}{*}
+% \showsymbol\updownharpoonleftleft{2951}{*}
+% \showsymbol\barleftharpoonup{2952}{*}
+% \showsymbol\rightharpoonupbar{2953}{*}
+% \showsymbol\barupharpoonright{2954}{*}
+% \showsymbol\downharpoonrightbar{2955}{*}
+% \showsymbol\barleftharpoondown{2956}{*}
+% \showsymbol\rightharpoondownbar{2957}{*}
+% \showsymbol\barupharpoonleft{2958}{*}
+% \showsymbol\downharpoonleftbar{2959}{*}
+% \showsymbol\leftharpoonupbar{295A}{*}
+% \showsymbol\barrightharpoonup{295B}{*}
+% \showsymbol\upharpoonrightbar{295C}{*}
+% \showsymbol\bardownharpoonright{295D}{*}
+% \showsymbol\leftharpoondownbar{295E}{*}
+% \showsymbol\barrightharpoondown{295F}{*}
+% \showsymbol\upharpoonleftbar{2960}{*}
+% \showsymbol\bardownharpoonleft{2961}{*}
+% \showsymbol\leftharpoonsupdown{2962}{*}
+% \showsymbol\upharpoonsleftright{2963}{*}
+% \showsymbol\rightharpoonsupdown{2964}{*}
+% \showsymbol\downharpoonsleftright{2965}{*}
+% \showsymbol\leftrightharpoonsup{2966}{*}
+% \showsymbol\leftrightharpoonsdown{2967}{*}
+% \showsymbol\rightleftharpoonsup{2968}{*}
+% \showsymbol\rightleftharpoonsdown{2969}{*}
+% \showsymbol\leftharpoonupdash{296A}{*}
+% \showsymbol\dashleftharpoondown{296B}{*}
+% \showsymbol\rightharpoonupdash{296C}{*}
+% \showsymbol\dashrightharpoondown{296D}{*}
+% \showsymbol\updownharpoonsleftright{296E}{*}
+% \showsymbol\downupharpoonsleftright{296F}{*}
+% \showsymbol\rightimply{2970}{*}
+% \showsymbol\equalrightarrow{2971}{*}
+% \showsymbol\similarrightarrow{2972}{*}
+% \showsymbol\leftarrowsimilar{2973}{*}
+% \showsymbol\rightarrowsimilar{2974}{*}
+% \showsymbol\rightarrowapprox{2975}{*}
+% \showsymbol\ltlarr{2976}{*}
+% \showsymbol\leftarrowless{2977}{*}
+% \showsymbol\gtrarr{2978}{*}
+% \showsymbol\subrarr{2979}{*}
+% \showsymbol\leftarrowsubset{297A}{*}
+% \showsymbol\suplarr{297B}{*}
+% \showsymbol\leftfishtail{297C}{*}
+% \showsymbol\rightfishtail{297D}{*}
+% \showsymbol\upfishtail{297E}{*}
+% \showsymbol\downfishtail{297F}{*}
+% \showsymbol\rtriltri{29CE}{*}
+% \showsymbol\ltrivb{29CF}{*}
+% \showsymbol\vbrtri{29D0}{*}
+% \showsymbol\lfbowtie{29D1}{*}
+% \showsymbol\rfbowtie{29D2}{*}
+% \showsymbol\fbowtie{29D3}{*}
+% \showsymbol\lftimes{29D4}{*}
+% \showsymbol\rftimes{29D5}{*}
+% \showsymbol\dualmap{29DF}{*}
+% \showsymbol\lrtriangleeq{29E1}{*}
+% \showsymbol\eparsl{29E3}{*}
+% \showsymbol\smeparsl{29E4}{*}
+% \showsymbol\eqvparsl{29E5}{*}
+% \showsymbol\gleichstark{29E6}{*}
+% \showsymbol\ruledelayed{29F4}{*}
+% \showsymbol\veeonwedge{2A59}{*}
+% \showsymbol\eqdot{2A66}{}
+% \showsymbol\dotequiv{2A67}{}
+% \showsymbol\equivVert{2A68}{*}
+% \showsymbol\equivVvert{2A69}{*}
+% \showsymbol\dotsim{2A6A}{}
+% \showsymbol\simrdots{2A6B}{*}
+% \showsymbol\simminussim{2A6C}{*}
+% \showsymbol\congdot{2A6D}{}
+% \showsymbol\asteq{2A6E}{}
+% \showsymbol\hatapprox{2A6F}{}
+% \showsymbol\approxeqq{2A70}{}
+% \showsymbol\eqqsim{2A73}{}
+% \showsymbol\Coloneq{2A74}{*}
+% \showsymbol\eqeq{2A75}{*}
+% \showsymbol\eqeqeq{2A76}{*}
+% \showsymbol\ddotseq{2A77}{*}
+% \showsymbol\equivDD{2A78}{*}
+% \showsymbol\ltcir{2A79}{*}
+% \showsymbol\gtcir{2A7A}{*}
+% \showsymbol\ltquest{2A7B}{*}
+% \showsymbol\gtquest{2A7C}{*}
+% \showsymbol\leqslant{2A7D}{}
+% \showsymbol\geqslant{2A7E}{}
+% \showsymbol\lesdot{2A7F}{*}
+% \showsymbol\gesdot{2A80}{*}
+% \showsymbol\lesdoto{2A81}{*}
+% \showsymbol\gesdoto{2A82}{*}
+% \showsymbol\lesdotor{2A83}{*}
+% \showsymbol\gesdotol{2A84}{*}
+% \showsymbol\lessapprox{2A85}{*}
+% \showsymbol\gtrapprox{2A86}{*}
+% \showsymbol\lneq{2A87}{}
+% \showsymbol\gneq{2A88}{}
+% \showsymbol\lnapprox{2A89}{}
+% \showsymbol\gnapprox{2A8A}{}
+% \showsymbol\lesseqqgtr{2A8B}{*}
+% \showsymbol\gtreqqless{2A8C}{*}
+% \showsymbol\lsime{2A8D}{*}
+% \showsymbol\gsime{2A8E}{*}
+% \showsymbol\lsimg{2A8F}{*}
+% \showsymbol\gsiml{2A90}{*}
+% \showsymbol\lgE{2A91}{*}
+% \showsymbol\glE{2A92}{*}
+% \showsymbol\lesges{2A93}{*}
+% \showsymbol\gesles{2A94}{*}
+% \showsymbol\eqslantless{2A95}{}
+% \showsymbol\eqslantgtr{2A96}{}
+% \showsymbol\elsdot{2A97}{*}
+% \showsymbol\egsdot{2A98}{*}
+% \showsymbol\eqqless{2A99}{*}
+% \showsymbol\eqqgtr{2A9A}{*}
+% \showsymbol\eqqslantless{2A9B}{*}
+% \showsymbol\eqqslantgtr{2A9C}{*}
+% \showsymbol\simless{2A9D}{}
+% \showsymbol\simgtr{2A9E}{}
+% \showsymbol\simlE{2A9F}{*}
+% \showsymbol\simgE{2AA0}{*}
+% \showsymbol\Lt{2AA1}{*}
+% \showsymbol\Gt{2AA2}{*}
+% \showsymbol\partialmeetcontraction{2AA3}{*}
+% \showsymbol\glj{2AA4}{*}
+% \showsymbol\gla{2AA5}{*}
+% \showsymbol\ltcc{2AA6}{*}
+% \showsymbol\gtcc{2AA7}{*}
+% \showsymbol\lescc{2AA8}{*}
+% \showsymbol\gescc{2AA9}{*}
+% \showsymbol\smt{2AAA}{*}
+% \showsymbol\lat{2AAB}{*}
+% \showsymbol\smte{2AAC}{*}
+% \showsymbol\late{2AAD}{*}
+% \showsymbol\bumpeqq{2AAE}{*}
+% \showsymbol\preceq{2AAF}{}
+% \showsymbol\npreceq{XXXX}{*}
+% \showsymbol\succeq{2AB0}{}
+% \showsymbol\nsucceq{XXXX}{*}
+% \showsymbol\precneq{2AB1}{*}
+% \showsymbol\succneq{2AB2}{*}
+% \showsymbol\preceqq{2AB3}{*}
+% \showsymbol\succeqq{2AB4}{*}
+% \showsymbol\precneqq{2AB5}{*}
+% \showsymbol\succneqq{2AB6}{*}
+% \showsymbol\precapprox{2AB7}{*}
+% \showsymbol\succapprox{2AB8}{*}
+% \showsymbol\precnapprox{2AB9}{*}
+% \showsymbol\succnapprox{2ABA}{*}
+% \showsymbol\Prec{2ABB}{*}
+% \showsymbol\Succ{2ABC}{*}
+% \showsymbol\subsetdot{2ABD}{}
+% \showsymbol\supsetdot{2ABE}{}
+% \showsymbol\subsetplus{2ABF}{*}
+% \showsymbol\supsetplus{2AC0}{*}
+% \showsymbol\submult{2AC1}{*}
+% \showsymbol\supmult{2AC2}{*}
+% \showsymbol\subedot{2AC3}{*}
+% \showsymbol\supedot{2AC4}{*}
+% \showsymbol\subseteqq{2AC5}{}
+% \showsymbol\nsubseteqq{XXXX}{*}
+% \showsymbol\supseteqq{2AC6}{}
+% \showsymbol\nsupseteqq{XXXX}{*}
+% \showsymbol\subsim{2AC7}{*}
+% \showsymbol\supsim{2AC8}{*}
+% \showsymbol\subsetapprox{2AC9}{*}
+% \showsymbol\supsetapprox{2ACA}{*}
+% \showsymbol\subsetneqq{2ACB}{}
+% \showsymbol\varsubsetneqq{2ACB}{*}
+% \showsymbol\supsetneqq{2ACC}{}
+% \showsymbol\varsupsetneqq{2ACC}{*}
+% \showsymbol\lsqhook{2ACD}{}
+% \showsymbol\rsqhook{2ACE}{}
+% \showsymbol\csub{2ACF}{}
+% \showsymbol\csup{2AD0}{}
+% \showsymbol\csube{2AD1}{}
+% \showsymbol\csupe{2AD2}{}
+% \showsymbol\subsup{2AD3}{}
+% \showsymbol\supsub{2AD4}{}
+% \showsymbol\subsub{2AD5}{}
+% \showsymbol\supsup{2AD6}{}
+% \showsymbol\suphsub{2AD7}{}
+% \showsymbol\supdsub{2AD8}{}
+% \showsymbol\forkv{2AD9}{}
+% \showsymbol\topfork{2ADA}{}
+% \showsymbol\mlcp{2ADB}{}
+% \showsymbol\forks{2ADC}{}
+% \showsymbol\forksnot{2ADD}{}
+% \showsymbol\shortlefttack{2ADE}{}
+% \showsymbol\shortdowntack{2ADF}{}
+% \showsymbol\shortuptack{2AE0}{}
+% \showsymbol\vDdash{2AE2}{}
+% \showsymbol\dashV{2AE3}{}
+% \showsymbol\Dashv{2AE4}{}
+% \showsymbol\DashV{2AE5}{}
+% \showsymbol\varVdash{2AE6}{}
+% \showsymbol\Barv{2AE7}{}
+% \showsymbol\vBar{2AE8}{}
+% \showsymbol\vBarv{2AE9}{}
+% \showsymbol\barV{2AEA}{}
+% \showsymbol\Vbar{2AEB}{}
+% \showsymbol\Not{2AEC}{}
+% \showsymbol\bNot{2AED}{}
+% \showsymbol\revnmid{2AEE}{}
+% \showsymbol\cirmid{2AEF}{}
+% \showsymbol\midcir{2AF0}{}
+% \showsymbol\nhpar{2AF2}{}
+% \showsymbol\parsim{2AF3}{}
+% \showsymbol\lllnest{2AF7}{}
+% \showsymbol\gggnest{2AF8}{}
+% \showsymbol\leqqslant{2AF9}{}
+% \showsymbol\geqqslant{2AFA}{}
+% \showsymbol\circleonleftarrow{2B30}{*}
+% \showsymbol\leftthreearrows{2B31}{*}
+% \showsymbol\leftarrowonoplus{2B32}{*}
+% \showsymbol\longleftsquigarrow{2B33}{*}
+% \showsymbol\nvtwoheadleftarrow{2B34}{*}
+% \showsymbol\nVtwoheadleftarrow{2B35}{*}
+% \showsymbol\twoheadmapsfrom{2B36}{*}
+% \showsymbol\twoheadleftdbkarrow{2B37}{*}
+% \showsymbol\leftdotarrow{2B38}{*}
+% \showsymbol\nvleftarrowtail{2B39}{*}
+% \showsymbol\nVleftarrowtail{2B3A}{*}
+% \showsymbol\twoheadleftarrowtail{2B3B}{*}
+% \showsymbol\nvtwoheadleftarrowtail{2B3C}{*}
+% \showsymbol\nVtwoheadleftarrowtail{2B3D}{*}
+% \showsymbol\leftarrowx{2B3E}{*}
+% \showsymbol\leftcurvedarrow{2B3F}{*}
+% \showsymbol\equalleftarrow{2B40}{*}
+% \showsymbol\bsimilarleftarrow{2B41}{*}
+% \showsymbol\leftarrowbackapprox{2B42}{*}
+% \showsymbol\rightarrowgtr{2B43}{*}
+% \showsymbol\rightarrowsupset{2B44}{*}
+% \showsymbol\LLeftarrow{2B45}{*}
+% \showsymbol\RRightarrow{2B46}{*}
+% \showsymbol\bsimilarrightarrow{2B47}{*}
+% \showsymbol\rightarrowbackapprox{2B48}{*}
+% \showsymbol\similarleftarrow{2B49}{*}
+% \showsymbol\leftarrowapprox{2B4A}{*}
+% \showsymbol\leftarrowbsimilar{2B4B}{*}
+% \showsymbol\rightarrowbsimilar{2B4C}{*}
+% \showsymbol\ngeqq{XXXX}{}
+% \showsymbol\ngeqslant{XXXX}{}
+% \showsymbol\nleqslant{XXXX}{}
+% \showsymbol\nleqq{XXXX}{}
+% \showsymbol\ncongdot{XXXX}{}
+% \showsymbol\napproxeqq{XXXX}{}
+% \showsymbol\nll{XXXX}{}
+% \showsymbol\ngg{XXXX}{}
+% \showsymbol\nsqsubset{XXXX}{}
+% \showsymbol\nsqsupset{XXXX}{}
+% \showsymbol\nBumpeq{XXXX}{}
+% \showsymbol\nbumpeq{XXXX}{}
+% \showsymbol\neqsim{XXXX}{}
+% \showsymbol\nvarisinobar{XXXX}{}
+% \showsymbol\nvarniobar{XXXX}{}
+% \showsymbol\neqslantless{XXXX}{}
+% \showsymbol\neqslantgtr{XXXX}{}
+% \showsymbol\lhook{XXXX}{}
+% \showsymbol\rhook{XXXX}{}
+% \showsymbol\relbar{XXXX}{}
+% \showsymbol\Relbar{XXXX}{}
+% \showsymbol\Rrelbar{XXXX}{*}
+% \showsymbol\RRelbar{XXXX}{*}
+% \showsymbol\mapsfromchar{XXXX}{}
+% \showsymbol\mapstochar{XXXX}{}
+% \end{multicols}
+%
+% \newpage
+% \subsection{Punctuation}
+% \begin{multicols}{2}
+% \showsymbol,{002C}{}
+% \showsymbol\ldotp{002E}{}
+% \showsymbol\colon{003A}{}
+% \showsymbol;{003B}{}
+% \end{multicols}
+%
+% \subsection{Integrals}
+% \label{integrals}
+% Integrals come in two styles, the slanted versions shown below ($\intsl$,
+% etc.)\ and upright versions such as~$\intup$. By default, the symbol names
+% listed below will give you the slanted style, but if you specify the |upint|
+% package option, they will give you the corresponding upright symbols.
+%
+% It is highly recommended that authors stick to the names below and use the
+% |upint| package option to choose a style globally for their document.
+% However, in recognition of the fact that it might occasionally be necessary
+% to mix the two styles, alternative names have been provided for all
+% integrals. Append |sl| or |up| to the names below to request either the
+% \emph{sl}anted or the \emph{up}right variant. Thus, |$\intsl$| will always
+% yield~$\intsl$ and |$\intup$| will always yield~$\intup$, and similarly for
+% the other integrals.
+%
+% \begin{multicols}{2}
+% \showsymbol\smallint{222B}{}
+% \showsymbol\smalliint{222C}{}
+% \showsymbol\smalliiint{222D}{}
+% \showsymbol\smalloint{222E}{}
+% \showsymbol\smalloiint{222F}{}
+% \showsymbol\smalloiiint{2230}{}
+% \showsymbol\smallintclockwise{2231}{}
+% \showsymbol\smallvarointclockwise{2232}{}
+% \showsymbol\smallointctrclockwise{2233}{}
+% \showsymbol\smallsumint{2A0B}{}
+% \showsymbol\smalliiiint{2A0C}{}
+% \showsymbol\smallintbar{2A0D}{}
+% \showsymbol\smallintBar{2A0E}{}
+% \showsymbol\smallfint{2A0F}{}
+% \showsymbol\smallcirfnint{2A10}{}
+% \showsymbol\smallawint{2A11}{}
+% \showsymbol\smallrppolint{2A12}{}
+% \showsymbol\smallscpolint{2A13}{}
+% \showsymbol\smallnpolint{2A14}{}
+% \showsymbol\smallpointint{2A15}{}
+% \showsymbol\smallsqint{2A16}{}
+% \showsymbol\smallintlarhk{2A17}{}
+% \showsymbol\smallintx{2A18}{}
+% \showsymbol\smallintcap{2A19}{}
+% \showsymbol\smallintcup{2A1A}{}
+% \showsymbol\smallupint{2A1B}{}
+% \showsymbol\smalllowint{2A1C}{}
+% \end{multicols}
+%
+% \begin{multicols}{2}
+% \showop\int{222B}{}
+% \showop\iint{222C}{}
+% \showop\iiint{222D}{}
+% \showop\oint{222E}{}
+% \showop\oiint{222F}{}
+% \showop\oiiint{2230}{}
+% \showop\intclockwise{2231}{}
+% \showop\varointclockwise{2232}{}
+% \showop\ointctrclockwise{2233}{}
+% \showop\sumint{2A0B}{}
+% \showop\iiiint{2A0C}{}
+% \showop\intbar{2A0D}{}
+% \showop\intBar{2A0E}{}
+% \showop\fint{2A0F}{}
+% \showop\cirfnint{2A10}{}
+% \showop\awint{2A11}{}
+% \showop\rppolint{2A12}{}
+% \showop\scpolint{2A13}{}
+% \showop\npolint{2A14}{}
+% \showop\pointint{2A15}{}
+% \showop\sqint{2A16}{}
+% \showop\intlarhk{2A17}{}
+% \showop\intx{2A18}{}
+% \showop\intcap{2A19}{}
+% \showop\intcup{2A1A}{}
+% \showop\upint{2A1B}{}
+% \showop\lowint{2A1C}{}
+% \end{multicols}
+%
+% \subsection{Big operators}
+% \begin{multicols}{2}
+% \showop\Bbbsum{2140}{}
+% \showop\prod{220F}{}
+% \showop\coprod{2210}{}
+% \showop\sum{2211}{}
+% \showop\bigwedge{22C0}{}
+% \showop\bigvee{22C1}{}
+% \showop\bigcap{22C2}{}
+% \showop\bigcup{22C3}{}
+% \showop\leftouterjoin{27D5}{*}
+% \showop\rightouterjoin{27D6}{*}
+% \showop\fullouterjoin{27D7}{*}
+% \showop\bigbot{27D8}{*}
+% \showop\bigtop{27D9}{*}
+% \showop\xsol{29F8}{*}
+% \showop\xbsol{29F9}{*}
+% \showop\bigodot{2A00}{*}
+% \showop\bigoplus{2A01}{*}
+% \showop\bigotimes{2A02}{*}
+% \showop\bigcupdot{2A03}{*}
+% \showop\biguplus{2A04}{*}
+% \showop\bigsqcap{2A05}{*}
+% \showop\bigsqcup{2A06}{*}
+% \showop\conjquant{2A07}{*}
+% \showop\disjquant{2A08}{*}
+% \showop\bigtimes{2A09}{*}
+% \showop\modtwosum{2A0A}{*}
+% \showop\Join{2A1D}{*}
+% \showop\bigtriangleleft{2A1E}{*}
+% \showop\zcmp{2A1F}{*}
+% \showop\zpipe{2A20}{*}
+% \showop\zproject{2A21}{*}
+% \showop\biginterleave{2AFC}{}
+% \showop\bigtalloblong{2AFF}{*}
+% \end{multicols}
+%
+% \subsection{Delimiters}
+% \begin{multicols}{2}
+% \showmbrace/{002F}{}
+% \showlbrace({0028}{}
+% \showlbrace[{005B}{}
+% \showlbrace\lbrace{007B}{}
+% \showmbrace\backslash{005C}{}
+% \showrbrace){0029}{}
+% \showrbrace]{005D}{}
+% \showrbrace\rbrace{007D}{}
+% \showlbrace\lceil{2308}{}
+% \showlbrace\lfloor{230A}{}
+% \showlbrace\lmoustache{23B0}{*}
+% \showlbrace\lbrbrak{2772}{*}
+% \showlbrace\lBrack{27E6}{*}
+% \showlbrace\langle{27E8}{}, \cmd<
+% \showlbrace\lAngle{27EA}{*}
+% \showlbrace\lgroup{27EE}{*}
+% \showlbrace\lBrace{2983}{*}
+% \showlbrace\lParen{2985}{*}
+% \showrbrace\rceil{2309}{}
+% \showrbrace\rfloor{230B}{}
+% \showrbrace\rmoustache{23B1}{*}
+% \showrbrace\rbrbrak{2773}{*}
+% \showrbrace\rBrack{27E7}{*}
+% \showrbrace\rangle{27E9}{}, \cmd>
+% \showrbrace\rAngle{27EB}{*}
+% \showrbrace\rgroup{27EF}{*}
+% \showrbrace\rBrace{2984}{*}
+% \showrbrace\rParen{2986}{*}
+% \end{multicols}
+%
+% \begin{multicols}{2}
+% \showmbrace\vert{007C}{}, \cmd|
+% \showmbrace\Vert{2016}{*}, \cmd\|
+% \showmbrace\Vvert{2980}{}
+% \showmbrace\uparrow{2191}{}
+% \showmbrace\downarrow{2193}{}
+% \showmbrace\updownarrow{2195}{}
+% \showmbrace\Uparrow{21D1}{}
+% \showmbrace\Downarrow{21D3}{}
+% \showmbrace\Updownarrow{21D5}{}
+% \showmbrace\Uuparrow{290A}{*}
+% \showmbrace\Ddownarrow{290B}{*}
+% \showmbrace\UUparrow{27F0}{*}
+% \showmbrace\DDownarrow{27F1}{*}
+% \showmbrace\arrowvert{XXXX}{}
+% \showmbrace\Arrowvert{XXXX}{}
+% \showmbrace\bracevert{XXXX}{*}
+% \end{multicols}
+%
+% \subsection{Other bracess}
+% \begin{multicols}{2}
+% \showsymbol\ulcorner{231C}{*}
+% \showsymbol\urcorner{231D}{*}
+% \showsymbol\llcorner{231E}{*}
+% \showsymbol\lrcorner{231F}{*}
+% \showsymbol\Lbrbrak{27EC}{*}
+% \showsymbol\Rbrbrak{27ED}{*}
+% \showsymbol\llparenthesis{2987}{*}
+% \showsymbol\rrparenthesis{2988}{*}
+% \showsymbol\llangle{2989}{*}
+% \showsymbol\rrangle{298A}{*}
+% \showsymbol\lbrackubar{298B}{*}
+% \showsymbol\rbrackubar{298C}{*}
+% \showsymbol\lbrackultick{298D}{*}
+% \showsymbol\rbracklrtick{298E}{*}
+% \showsymbol\lbracklltick{298F}{*}
+% \showsymbol\rbrackurtick{2990}{*}
+% \showsymbol\langledot{2991}{*}
+% \showsymbol\rangledot{2992}{*}
+% \showsymbol\lparenless{2993}{*}
+% \showsymbol\rparengtr{2994}{*}
+% \showsymbol\Lparengtr{2995}{*}
+% \showsymbol\Rparenless{2996}{*}
+% \showsymbol\lblkbrbrak{2997}{*}
+% \showsymbol\rblkbrbrak{2998}{*}
+% \showsymbol\lvzigzag{29D8}{*}
+% \showsymbol\rvzigzag{29D9}{*}
+% \showsymbol\Lvzigzag{29DA}{*}
+% \showsymbol\Rvzigzag{29DB}{*}
+% \showsymbol\lcurvyangle{29FC}{*}
+% \showsymbol\rcurvyangle{29FD}{*}
+% \showsymbol\lbrbrak{2772}{*}
+% \showsymbol\rbrbrak{2773}{*}
+% \showsymbol\lbag{27C5}{*}
+% \showsymbol\rbag{27C6}{*}
+% \showsymbol\Lbrbrak{27EC}{*}
+% \showsymbol\Rbrbrak{27ED}{*}
+% \end{multicols}
+%
+% \subsection{Accents}
+% \begin{multicols}{2}
+% \showaccent\grave{0300}{}
+% \showaccent\acute{0301}{}
+% \showaccent\hat{0302}{}
+% \showaccent\tilde{0303}{}
+% \showaccent\bar{0304}{}
+% \showaccent\breve{0306}{}
+% \showaccent\dot{0307}{}
+% \showaccent\ddot{0308}{}
+% \showaccent\ovhook{0309}{}
+% \showaccent\mathring{030A}{}
+% \showaccent\check{030C}{}
+% \showaccent\candra{0310}{}
+% \showaccent\oturnedcomma{0312}{}
+% \showaccent\ocommatopright{0315}{}
+% \showaccent\droang{031A}{}
+% \showaccent\leftharpoonaccent{20D0}{}
+% \showaccent\rightharpoonaccent{20D1}{}
+% \showaccent\leftarrowaccent{20D6}{}
+% \showaccent\vec{20D7}{}, \cmd\rightarrowaccent
+% \showaccent\leftrightarrowaccent{20E1}{}
+% \showaccent\dddot{20DB}{}
+% \showaccent\ddddot{20DC}{}
+% \showaccent\annuity{20E7}{}
+% \showaccent\widebridgeabove{20E9}{}
+% \showaccent\asteraccent{20F0}{}
+% \end{multicols}
+%
+% \begin{multicols}{2}
+% \showwideaccent\widehat{0302}{*}
+% \showwideaccent\widetilde{0303}{*}
+% \showwideaccent\widecheck{030C}{*}
+% \showwideaccent\overleftarrow{20D6}{}
+% \showwideaccent\overrightarrow{20D7}{}
+% \showwideaccent\underrightarrow{20EF}{}
+% \showwideaccent\underleftarrow{20EE}{}
+% \showwideaccent\overleftrightarrow{20E1}{}
+% \showwideaccent\underleftrightarrow{034D}{}
+% \showwideaccent\overleftharpoon{20D0}{}
+% \showwideaccent\overrightharpoon{20D1}{}
+% \showwideaccent\underleftharpoon{20EC}{}
+% \showwideaccent\underrightharpoon{20ED}{}
+% \end{multicols}
+%
+% OpenType STIX fonts include a number of under accents that can be used in
+% math mode, but \TeX\ does not support under accents natively so such glyphs
+% can not be used directly. Under accents can be set using regular accents and
+% commands like |\underaccent| from the \pkg{accents} package, for example
+% \verb|\underaccent{\hat}{X}| gives $\underaccent{\hat}{X}$. The
+% \pkg{undertilde} package provides |\utilde| for extensible under tilde
+% accent.
+%
+% \subsection{Over and under brackets}
+% \begin{multicols}{2}
+% \showover\overbracket{23B4}{}
+% \showover\overparen{23DC}{}
+% \showover\overbrace{23DE}{}
+% \showover\underbracket{23B5}{}
+% \showover\underparen{23DD}{}
+% \showover\underbrace{23DF}{}
+% \end{multicols}
+%
+% \subsection{Radicals}
+% \begin{multicols}{2}
+% \showaccent\sqrt{221A}{}
+% \showaccent\longdivision{27CC}{*}
+% \end{multicols}
+%
+% \newpage
+% \section{Font tables}
+% \nodecimals
+% \renewcommand{\thefootnote}{\fnsymbol{footnote}}
+% The rest of this document shows glyph tables for all STIX fonts. The name
+% before each table is the \TeX\ font name (i.e. TFM file name).
+%
+% Note that STIX fonts have no real smallcaps, the smallcaps below are
+% synthesized (scaled down upper case letters).
+%
+% \subsection{Text fonts}
+%
+% \subsubsection*{\texttt{ot1-stixgeneral}}
+% \fonttable{ot1-stixgeneral}
+%
+% \newpage
+% \subsubsection*{\texttt{ot1-stixgeneralsc}}
+% \fonttable{ot1-stixgeneralsc}
+%
+% \newpage
+% \subsubsection*{\texttt{t1-stixgeneral}}
+% \footnotetext[1]{\hex{18} and \hex{DF} do not exist in STIX OpenType fonts,
+% they were added as part of this package for compatability with |T1|
+% encoding.}
+% \fonttable{t1-stixgeneral}
+%
+% \newpage
+% \subsubsection*{\texttt{t1-stixgeneralsc}}
+% \fonttable{t1-stixgeneralsc}
+%
+% \newpage
+% \subsubsection*{\texttt{ot2-stixgeneral}}
+% \footnotetext[1]{\hex{24} does not exist in STIX OpenType fonts, it was added as
+% part of this package for compatability with |OT2| encoding.}
+% \fonttable{ot2-stixgeneral}
+%
+% \newpage
+% \subsubsection*{\texttt{ot2-stixgeneralsc}}
+% \fonttable{ot2-stixgeneralsc}
+%
+% \newpage
+% \subsubsection*{\texttt{ts1-stixgeneral}}
+% \fonttable{ts1-stixgeneral}
+%
+% \newpage
+% \subsection{Math fonts}
+% \subsubsection*{\texttt{stix-mathrm}}
+% \fonttable{stix-mathrm}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathit}}
+% \fonttable{stix-mathit}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathsf}}
+% \footnotetext[1]{\hex{28}, \hex{3A}, \hex{7B} and \hex{7C} do not exist in
+% STIX OpenType fonts.}
+% \fonttable{stix-mathsf}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathsfit}}
+% \footnotetext[1]{\hex{28}, \hex{7B} and \hex{7C} do not exist in STIX
+% OpenType fonts.}
+% \fonttable{stix-mathsfit}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathtt}}
+% \footnotetext[1]{\hex{7B} and \hex{7C} do not exist in STIX OpenType fonts.}
+% \fonttable{stix-mathtt}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathbb}}
+% \footnotetext[1]{\hex{7B} and \hex{7C} do not exist in STIX OpenType fonts.}
+% \fonttable{stix-mathbb}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathbbit}}
+% \footnotetext[1]{\hex{7B} and \hex{7C} do not exist in STIX OpenType fonts.}
+% \fonttable{stix-mathbbit}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathscr}}
+% \footnotetext[1]{\hex{7B} and \hex{7C} do not exist in STIX OpenType fonts.}
+% \fonttable{stix-mathscr}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathcal}}
+% \footnotetext[1]{\hex{09}, \hex{24}, \hex{9D}, \hex{B8}, \hex{D3} and
+% \hex{EE} do not exist in \textbf{bold} STIX OpenType fonts.}
+% \fonttable{stix-mathcal}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathfrak}}
+% \footnotetext[1]{\hex{7B} and \hex{7C} do not exist in STIX OpenType fonts.}
+% \fonttable{stix-mathfrak}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-mathex}}
+% \fonttable{stix-mathex}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-extra1}}
+% \fonttable{stix-extra1}
+%
+% \newpage
+% \subsubsection*{\texttt{stix-extra2}}
+% \fonttable{stix-extra2}
+%
+% \subsubsection*{\texttt{stix-extra3}}
+% \fonttable{stix-extra3}
+%
+% \StopEventually{}
+% \endinput
+%
+% \section{Implementation}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \subsection{Package options}
+%
+%    \begin{macrocode}
+\newif\ifstix@text  \stix@texttrue
+\newif\ifstix@math  \stix@mathtrue
+\newif\ifstix@tenc  \stix@tenctrue
+\newif\ifstix@senc  \stix@senctrue
+\newif\ifstix@upint \stix@upintfalse
+\let\stix@lcgc\mathord
+\DeclareOption{notext}      {\stix@textfalse}
+\DeclareOption{nomath}      {\stix@mathfalse}
+\DeclareOption{not1}        {\stix@tencfalse}
+\DeclareOption{notextcomp}  {\stix@sencfalse}
+\DeclareOption{lcgreekalpha}{\let\stix@lcgc\mathalpha}
+\DeclareOption{upint}       {\stix@upinttrue}
+\ProcessOptions\relax
+%    \end{macrocode}
+%
+% \subsection{Text fonts}
+%
+%    \begin{macrocode}
+\ifstix@text
+    \ifstix@tenc
+        \def\encodingdefault{T1}
+    \fi
+    \ifstix@senc
+        \RequirePackage[full]{textcomp}
+%    \end{macrocode}
+%
+% Use |\textpertenthousand| from TS1 font, for some reason \pkg{textcomp}
+% doesn't do so.
+%
+%    \begin{macrocode}
+        \UndeclareTextCommand{\textpertenthousand}{T1}
+        \DeclareTextSymbolDefault{\textpertenthousand}{TS1}
+    \fi
+
+    \renewcommand{\rmdefault}{stix}
+\fi
+%    \end{macrocode}
+%
+% \subsection{Math fonts}
+%
+%    \begin{macrocode}
+\ifstix@math
+%    \end{macrocode}
+%
+% \subsubsection{Common macros}
+%
+%    \begin{macrocode}
+\def\stix@undefine#1{%
+    \if\relax\noexpand#1\let#1=\@undefined\fi}
+\def\stix@MathSymbol#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathSymbol{#1}{#2}{#3}{#4}}
+\def\stix@MathDelimiter#1#2#3#4#5#6{%
+    \stix@undefine#1%
+    \DeclareMathDelimiter{#1}{#2}{#3}{#4}{#5}{#6}}
+\def\stix@MathAccent#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathAccent{#1}{#2}{#3}{#4}}
+\def\stix@MathRadical#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathRadical{#1}{#2}{#3}{#4}}
+%    \end{macrocode}
+%
+% \subsubsection{Declaring fonts}
+%
+%    \begin{macrocode}
+\DeclareFontEncoding{LS1}{}{}
+\DeclareFontEncoding{LS2}{}{\noaccents@}
+\DeclareFontSubstitution{LS1}{stix}{m}{n}
+\DeclareFontSubstitution{LS2}{stix}{m}{n}
+\DeclareSymbolFont{letters}       {LS1}{stix}     {m}{it}
+\DeclareSymbolFont{operators}     {LS1}{stix}     {m} {n}
+\DeclareSymbolFont{bold-operators}{LS1}{stix}     {b} {n}
+\DeclareSymbolFont{symbols}       {LS1}{stixscr}  {m} {n}
+\DeclareSymbolFont{symbols2}      {LS1}{stixfrak} {m} {n}
+\DeclareSymbolFont{symbols3}      {LS1}{stixbb}   {m} {n}
+\DeclareSymbolFont{symbols4}      {LS1}{stixbb}   {m}{it}
+\DeclareSymbolFont{integrals}     {LS2}{stixcal}  {m} {n}
+\DeclareSymbolFont{largesymbols}  {LS2}{stixex}   {m} {n}
+\DeclareSymbolFont{arrows1}       {LS1}{stixsf}   {m} {n}
+\DeclareSymbolFont{arrows2}       {LS1}{stixsf}   {m}{it}
+\DeclareSymbolFont{arrows3}       {LS2}{stixtt}   {m} {n}
+\SetSymbolFont{letters}     {bold}{LS1}{stix}     {b}{it}
+\SetSymbolFont{operators}   {bold}{LS1}{stix}     {b} {n}
+\SetSymbolFont{symbols}     {bold}{LS1}{stixscr}  {b} {n}
+\SetSymbolFont{symbols2}    {bold}{LS1}{stixfrak} {b}{n}
+\SetSymbolFont{symbols3}    {bold}{LS1}{stixbb}   {b} {n}
+\SetSymbolFont{symbols4}    {bold}{LS1}{stixbb}   {b}{it}
+\SetSymbolFont{integrals}   {bold}{LS2}{stixcal}  {b} {n}
+\SetSymbolFont{largesymbols}{bold}{LS2}{stixex}   {b} {n}
+\SetSymbolFont{arrows1}     {bold}{LS1}{stixsf}   {b} {n}
+\SetSymbolFont{arrows2}     {bold}{LS1}{stixsf}   {b}{it}
+\SetSymbolFont{arrows3}     {bold}{LS2}{stixtt}   {b} {n}
+\DeclareSymbolFontAlphabet{\mathit}  {letters}
+\DeclareSymbolFontAlphabet{\mathrm}  {operators}
+\DeclareSymbolFontAlphabet{\mathscr} {symbols}
+\DeclareSymbolFontAlphabet{\mathfrak}{symbols2}
+\DeclareSymbolFontAlphabet{\mathbb}  {symbols3}
+\DeclareSymbolFontAlphabet{\mathbbit}{symbols4}
+\DeclareSymbolFontAlphabet{\mathcal} {integrals}
+\DeclareSymbolFontAlphabet{\mathsf}  {arrows1}
+\DeclareSymbolFontAlphabet{\mathsfit}{arrows2}
+\DeclareSymbolFontAlphabet{\mathtt}  {arrows3}
+%    \end{macrocode}
+%
+% \paragraph{Bold alphabets}
+%
+%    \begin{macrocode}
+\DeclareSymbolFontAlphabet{\mathbf}  {bold-operators}
+\DeclareMathAlphabet{\mathbfit}   {LS1}{stix}     {b}{it}
+\DeclareMathAlphabet{\mathbfsf}   {LS1}{stixsf}   {b} {n}
+\DeclareMathAlphabet{\mathbfsfit} {LS1}{stixsf}   {b}{it}
+\DeclareMathAlphabet{\mathbfbb}   {LS1}{stixbb}   {b} {n}
+\DeclareMathAlphabet{\mathbfbbit} {LS1}{stixbb}   {b}{it}
+\DeclareMathAlphabet{\mathbfscr}  {LS1}{stixscr}  {b} {n}
+\DeclareMathAlphabet{\mathbffrak} {LS1}{stixfrak} {b} {n}
+%    \end{macrocode}
+%
+% \subsubsection{Declaring symbols}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\Gamma}      {\mathalpha}{operators}{"00}
+\stix@MathSymbol{\Delta}      {\mathalpha}{operators}{"01}
+\stix@MathSymbol{\Theta}      {\mathalpha}{operators}{"02}
+\stix@MathSymbol{\Lambda}     {\mathalpha}{operators}{"03}
+\stix@MathSymbol{\Xi}         {\mathalpha}{operators}{"04}
+\stix@MathSymbol{\Pi}         {\mathalpha}{operators}{"05}
+\stix@MathSymbol{\Sigma}      {\mathalpha}{operators}{"06}
+\stix@MathSymbol{\Upsilon}    {\mathalpha}{operators}{"07}
+\stix@MathSymbol{\Phi}        {\mathalpha}{operators}{"08}
+\stix@MathSymbol{\Psi}        {\mathalpha}{operators}{"09}
+\stix@MathSymbol{\Omega}      {\mathalpha}{operators}{"0A}
+%    \end{macrocode}
+%
+% In default \LaTeX\ setup, lower case Greek symbols are defined as |\mathord|
+% and thus they don't change when family changes, but they should be
+% |\mathalpha| to behave like other alphabetic symbols. For backward
+% compatibility, |\stix@lcgc| is |\mathord| by default and |\mathalpha| when
+% |lcgreekalpha| package option is specified.
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\alpha}     {\stix@lcgc}{letters}{"0B}
+\stix@MathSymbol{\beta}      {\stix@lcgc}{letters}{"0C}
+\stix@MathSymbol{\gamma}     {\stix@lcgc}{letters}{"0D}
+\stix@MathSymbol{\delta}     {\stix@lcgc}{letters}{"0E}
+\stix@MathSymbol{\epsilon}   {\stix@lcgc}{letters}{"0F}
+\stix@MathSymbol{\zeta}      {\stix@lcgc}{letters}{"10}
+\stix@MathSymbol{\eta}       {\stix@lcgc}{letters}{"11}
+\stix@MathSymbol{\theta}     {\stix@lcgc}{letters}{"12}
+\stix@MathSymbol{\iota}      {\stix@lcgc}{letters}{"13}
+\stix@MathSymbol{\kappa}     {\stix@lcgc}{letters}{"14}
+\stix@MathSymbol{\lambda}    {\stix@lcgc}{letters}{"15}
+\stix@MathSymbol{\mu}        {\stix@lcgc}{letters}{"16}
+\stix@MathSymbol{\nu}        {\stix@lcgc}{letters}{"17}
+\stix@MathSymbol{\xi}        {\stix@lcgc}{letters}{"18}
+\stix@MathSymbol{\pi}        {\stix@lcgc}{letters}{"19}
+\stix@MathSymbol{\rho}       {\stix@lcgc}{letters}{"1A}
+\stix@MathSymbol{\sigma}     {\stix@lcgc}{letters}{"1B}
+\stix@MathSymbol{\tau}       {\stix@lcgc}{letters}{"1C}
+\stix@MathSymbol{\upsilon}   {\stix@lcgc}{letters}{"1D}
+\stix@MathSymbol{\phi}       {\stix@lcgc}{letters}{"1E}
+\stix@MathSymbol{\chi}       {\stix@lcgc}{letters}{"1F}
+\stix@MathSymbol{\psi}       {\stix@lcgc}{letters}{"20}
+\stix@MathSymbol{\omega}     {\stix@lcgc}{letters}{"21}
+\stix@MathSymbol{\varepsilon}{\stix@lcgc}{letters}{"22}
+\stix@MathSymbol{\vartheta}  {\stix@lcgc}{letters}{"23}
+\stix@MathSymbol{\varpi}     {\stix@lcgc}{letters}{"24}
+\stix@MathSymbol{\varrho}    {\stix@lcgc}{letters}{"25}
+\stix@MathSymbol{\varsigma}  {\stix@lcgc}{letters}{"26}
+\stix@MathSymbol{\varphi}    {\stix@lcgc}{letters}{"27}
+\stix@MathSymbol{\nabla}     {\stix@lcgc}{operators}{"28}
+\stix@MathSymbol{\partial}   {\stix@lcgc}{letters}{"29}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{0}     {\mathalpha}{operators}{`0}
+\stix@MathSymbol{1}     {\mathalpha}{operators}{`1}
+\stix@MathSymbol{2}     {\mathalpha}{operators}{`2}
+\stix@MathSymbol{3}     {\mathalpha}{operators}{`3}
+\stix@MathSymbol{4}     {\mathalpha}{operators}{`4}
+\stix@MathSymbol{5}     {\mathalpha}{operators}{`5}
+\stix@MathSymbol{6}     {\mathalpha}{operators}{`6}
+\stix@MathSymbol{7}     {\mathalpha}{operators}{`7}
+\stix@MathSymbol{8}     {\mathalpha}{operators}{`8}
+\stix@MathSymbol{9}     {\mathalpha}{operators}{`9}
+\stix@MathSymbol{A}     {\mathalpha}{letters}  {`A}
+\stix@MathSymbol{B}     {\mathalpha}{letters}  {`B}
+\stix@MathSymbol{C}     {\mathalpha}{letters}  {`C}
+\stix@MathSymbol{D}     {\mathalpha}{letters}  {`D}
+\stix@MathSymbol{E}     {\mathalpha}{letters}  {`E}
+\stix@MathSymbol{F}     {\mathalpha}{letters}  {`F}
+\stix@MathSymbol{G}     {\mathalpha}{letters}  {`G}
+\stix@MathSymbol{H}     {\mathalpha}{letters}  {`H}
+\stix@MathSymbol{I}     {\mathalpha}{letters}  {`I}
+\stix@MathSymbol{J}     {\mathalpha}{letters}  {`J}
+\stix@MathSymbol{K}     {\mathalpha}{letters}  {`K}
+\stix@MathSymbol{L}     {\mathalpha}{letters}  {`L}
+\stix@MathSymbol{M}     {\mathalpha}{letters}  {`M}
+\stix@MathSymbol{N}     {\mathalpha}{letters}  {`N}
+\stix@MathSymbol{O}     {\mathalpha}{letters}  {`O}
+\stix@MathSymbol{P}     {\mathalpha}{letters}  {`P}
+\stix@MathSymbol{Q}     {\mathalpha}{letters}  {`Q}
+\stix@MathSymbol{R}     {\mathalpha}{letters}  {`R}
+\stix@MathSymbol{S}     {\mathalpha}{letters}  {`S}
+\stix@MathSymbol{T}     {\mathalpha}{letters}  {`T}
+\stix@MathSymbol{U}     {\mathalpha}{letters}  {`U}
+\stix@MathSymbol{V}     {\mathalpha}{letters}  {`V}
+\stix@MathSymbol{W}     {\mathalpha}{letters}  {`W}
+\stix@MathSymbol{X}     {\mathalpha}{letters}  {`X}
+\stix@MathSymbol{Y}     {\mathalpha}{letters}  {`Y}
+\stix@MathSymbol{Z}     {\mathalpha}{letters}  {`Z}
+\stix@MathSymbol{a}     {\mathalpha}{letters}  {`a}
+\stix@MathSymbol{b}     {\mathalpha}{letters}  {`b}
+\stix@MathSymbol{c}     {\mathalpha}{letters}  {`c}
+\stix@MathSymbol{d}     {\mathalpha}{letters}  {`d}
+\stix@MathSymbol{e}     {\mathalpha}{letters}  {`e}
+\stix@MathSymbol{f}     {\mathalpha}{letters}  {`f}
+\stix@MathSymbol{g}     {\mathalpha}{letters}  {`g}
+\stix@MathSymbol{h}     {\mathalpha}{letters}  {`h}
+\stix@MathSymbol{i}     {\mathalpha}{letters}  {`i}
+\stix@MathSymbol{j}     {\mathalpha}{letters}  {`j}
+\stix@MathSymbol{k}     {\mathalpha}{letters}  {`k}
+\stix@MathSymbol{l}     {\mathalpha}{letters}  {`l}
+\stix@MathSymbol{m}     {\mathalpha}{letters}  {`m}
+\stix@MathSymbol{n}     {\mathalpha}{letters}  {`n}
+\stix@MathSymbol{o}     {\mathalpha}{letters}  {`o}
+\stix@MathSymbol{p}     {\mathalpha}{letters}  {`p}
+\stix@MathSymbol{q}     {\mathalpha}{letters}  {`q}
+\stix@MathSymbol{r}     {\mathalpha}{letters}  {`r}
+\stix@MathSymbol{s}     {\mathalpha}{letters}  {`s}
+\stix@MathSymbol{t}     {\mathalpha}{letters}  {`t}
+\stix@MathSymbol{u}     {\mathalpha}{letters}  {`u}
+\stix@MathSymbol{v}     {\mathalpha}{letters}  {`v}
+\stix@MathSymbol{w}     {\mathalpha}{letters}  {`w}
+\stix@MathSymbol{x}     {\mathalpha}{letters}  {`x}
+\stix@MathSymbol{y}     {\mathalpha}{letters}  {`y}
+\stix@MathSymbol{z}     {\mathalpha}{letters}  {`z}
+\stix@MathSymbol{\imath}{\mathalpha}{letters}  {"7B}
+\stix@MathSymbol{\jmath}{\mathalpha}{letters}  {"7C}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\aleph} {\mathord}{letters}{"2A}
+\stix@MathSymbol{\beth}  {\mathord}{letters}{"2B}
+\stix@MathSymbol{\gimel} {\mathord}{letters}{"2C}
+\stix@MathSymbol{\daleth}{\mathord}{letters}{"2D}
+\stix@MathSymbol{\hbar}  {\mathord}{letters}{"60}
+\stix@MathSymbol{\hslash}{\mathord}{letters}{"3D}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\ell}       {\mathord}  {symbols}{`l}
+\stix@MathSymbol{\wp}        {\mathord}  {symbols}{"7D}
+\stix@MathSymbol{\Re}        {\mathord}  {symbols2}{`R}
+\stix@MathSymbol{\Im}        {\mathord}  {symbols2}{`I}
+\stix@MathSymbol{-}          {\mathbin}  {operators}{"2A}
+\stix@MathSymbol{+}          {\mathbin}  {operators}{`+}
+\stix@MathSymbol{\pm}        {\mathbin}  {operators}{"2C}
+\stix@MathSymbol{\mp}        {\mathbin}  {operators}{"2D}
+\stix@MathSymbol{:}          {\mathrel}  {operators}{`:}
+\stix@MathSymbol{;}          {\mathpunct}{operators}{`;}
+\stix@MathSymbol{*}          {\mathrel}  {operators}{"3C}
+\stix@MathSymbol{\ast}       {\mathrel}  {operators}{"3C}
+\stix@MathSymbol{=}          {\mathrel}  {operators}{`=}
+\stix@MathSymbol{\mathdollar}{\mathord}  {operators}{"3E}
+\stix@MathSymbol{?}          {\mathclose}{operators}{`?}
+\stix@MathSymbol{!}          {\mathclose}{operators}{"40}
+\stix@MathSymbol{#}          {\mathord}  {operators}{"7D}
+\mathcode`\%="007E % can't use \stix@MathSymbol
+\stix@MathSymbol{&}          {\mathord}  {operators}{"99}
+\stix@MathSymbol{@}          {\mathord}  {operators}{"9A}
+\stix@MathSymbol{.}          {\mathord}  {letters}  {"3A}
+\stix@MathSymbol{\ldotp}     {\mathpunct}{letters}  {"3A}
+\stix@MathSymbol{,}          {\mathpunct}{letters}  {"3B}
+\stix@MathSymbol{\star}      {\mathbin}  {letters}  {"3F}
+\stix@MathSymbol{\flat}      {\mathord}  {letters}  {"5B}
+\stix@MathSymbol{\natural}   {\mathord}  {letters}  {"5C}
+\stix@MathSymbol{\sharp}     {\mathord}  {letters}  {"5D}
+\stix@MathSymbol{\smile}     {\mathrel}  {letters}  {"5E}
+\stix@MathSymbol{\frown}     {\mathrel}  {letters}  {"5F}
+\stix@MathSymbol{\triangleright} {\mathbin}{letters}{"2E}
+\stix@MathSymbol{\triangleleft}  {\mathbin}{letters}{"2F}
+%    \end{macrocode}
+%
+% \pkg{amsmath} defines |\colon| in a clever way, we want to retain that.
+%
+%    \begin{macrocode}
+\@ifpackageloaded{amsmath}{}{
+    \stix@MathSymbol{\colon}      {\mathpunct}{operators}{`:}
+}
+%    \end{macrocode}
+%
+% \paragraph{Delimiters}
+%
+%    \begin{macrocode}
+\stix@MathDelimiter{(}          {\mathopen} {operators}   {"2E}{largesymbols}{"00}
+\stix@MathDelimiter{)}          {\mathclose}{operators}   {"2F}{largesymbols}{"01}
+\stix@MathDelimiter{\lParen}    {\mathopen} {largesymbols}{"DE}{largesymbols}{"02}
+\stix@MathDelimiter{\rParen}    {\mathclose}{largesymbols}{"DF}{largesymbols}{"03}
+\stix@MathDelimiter{[}          {\mathopen} {operators}   {"5B}{largesymbols}{"04}
+\stix@MathDelimiter{]}          {\mathclose}{operators}   {"5D}{largesymbols}{"05}
+\stix@MathDelimiter{\lBrack}    {\mathopen} {largesymbols}{"E0}{largesymbols}{"06}
+\stix@MathDelimiter{\rBrack}    {\mathclose}{largesymbols}{"E1}{largesymbols}{"07}
+\stix@MathDelimiter{\lfloor}    {\mathopen} {largesymbols}{"E2}{largesymbols}{"08}
+\stix@MathDelimiter{\rfloor}    {\mathclose}{largesymbols}{"E3}{largesymbols}{"09}
+\stix@MathDelimiter{\lceil}     {\mathopen} {largesymbols}{"E4}{largesymbols}{"0A}
+\stix@MathDelimiter{\rceil}     {\mathclose}{largesymbols}{"E5}{largesymbols}{"0B}
+\stix@MathDelimiter{\lmoustache}{\mathopen} {largesymbols}{"E6}{largesymbols}{"EC}
+\stix@MathDelimiter{\rmoustache}{\mathclose}{largesymbols}{"E7}{largesymbols}{"ED}
+\stix@MathDelimiter{\lbrace}    {\mathopen} {operators}   {"5E}{largesymbols}{"0C}
+\stix@MathDelimiter{\rbrace}    {\mathclose}{operators}   {"60}{largesymbols}{"0D}
+\stix@MathDelimiter{\lBrace}    {\mathopen} {largesymbols}{"E8}{largesymbols}{"0E}
+\stix@MathDelimiter{\rBrace}    {\mathclose}{largesymbols}{"E9}{largesymbols}{"0F}
+\stix@MathDelimiter{\langle}    {\mathopen} {largesymbols}{"EA}{largesymbols}{"10}
+\stix@MathDelimiter{\rangle}    {\mathclose}{largesymbols}{"EB}{largesymbols}{"11}
+\stix@MathDelimiter{<}          {\mathopen} {largesymbols}{"EA}{largesymbols}{"10}
+\stix@MathDelimiter{>}          {\mathclose}{largesymbols}{"EB}{largesymbols}{"11}
+\stix@MathSymbol   {<}          {\mathrel}  {letters}{"3C}
+\stix@MathSymbol   {>}          {\mathrel}  {letters}{"3E}
+\stix@MathDelimiter{\lAngle}    {\mathopen} {largesymbols}{"EC}{largesymbols}{"12}
+\stix@MathDelimiter{\rAngle}    {\mathclose}{largesymbols}{"ED}{largesymbols}{"13}
+\stix@MathDelimiter{\lbrbrak}   {\mathopen} {largesymbols}{"EE}{largesymbols}{"14}
+\stix@MathDelimiter{\rbrbrak}   {\mathclose}{largesymbols}{"EF}{largesymbols}{"15}
+\stix@MathDelimiter{/}          {\mathord}  {operators}   {"5F}{largesymbols}{"16}
+\stix@MathDelimiter{\backslash} {\mathord}  {operators}   {"5C}{largesymbols}{"17}
+\expandafter\DeclareMathDelimiter\@backslashchar{\mathord}{operators}{"5C}{largesymbols}{"17}
+\stix@MathDelimiter{\lgroup}    {\mathopen} {largesymbols}{"DC}{largesymbols}{"6A}
+\stix@MathDelimiter{\rgroup}    {\mathclose}{largesymbols}{"DD}{largesymbols}{"6B}
+\stix@MathDelimiter{\bracevert} {\mathord}  {largesymbols}{"6E}{largesymbols}{"6E}
+\stix@MathDelimiter{|}          {\mathord}  {largesymbols}{"F0}{largesymbols}{"F3}
+\stix@MathDelimiter{\vert}      {\mathord}  {largesymbols}{"F0}{largesymbols}{"F3}
+\stix@MathDelimiter{\Vert}      {\mathord}  {largesymbols}{"F1}{largesymbols}{"F4}
+        \let\|=\Vert
+\stix@MathDelimiter{\Vvert}     {\mathord}  {largesymbols}{"F2}{largesymbols}{"F5}
+%    \end{macrocode}
+%
+% Override |\lvert|, |\rvert|, |\lVert| and |\rVert| from \pkg{amsmath}.
+%
+%    \begin{macrocode}
+\@ifpackageloaded{amsmath}{
+    \stix@MathDelimiter{\lvert} {\mathopen}  {largesymbols}{"F0}{largesymbols}{"F3}
+    \stix@MathDelimiter{\rvert} {\mathclose} {largesymbols}{"F0}{largesymbols}{"F3}
+    \stix@MathDelimiter{\lVert} {\mathopen}  {largesymbols}{"F1}{largesymbols}{"F4}
+    \stix@MathDelimiter{\rVert} {\mathclose} {largesymbols}{"F1}{largesymbols}{"F4}
+}{}
+\stix@MathDelimiter{\uparrow}    {\mathrel}{arrows1}{"7E}{arrows1}{"7E}
+\stix@MathDelimiter{\downarrow}  {\mathrel}{arrows1}{"9A}{arrows1}{"9A}
+\stix@MathDelimiter{\updownarrow}{\mathrel}{arrows1}{"9C}{arrows1}{"9C}
+\stix@MathDelimiter{\Uparrow}    {\mathrel}{arrows1}{"D8}{arrows1}{"D8}
+\stix@MathDelimiter{\Downarrow}  {\mathrel}{arrows1}{"DA}{arrows1}{"DA}
+\stix@MathDelimiter{\Updownarrow}{\mathrel}{arrows1}{"DC}{arrows1}{"DC}
+\stix@MathDelimiter{\UUparrow}   {\mathrel}{arrows1}{"FE}{arrows1}{"FE}
+\stix@MathDelimiter{\DDownarrow} {\mathrel}{arrows1}{"FF}{arrows1}{"FF}
+\stix@MathDelimiter{\Uuparrow}   {\mathrel}{arrows1}{"5F}{arrows1}{"5F}
+\stix@MathDelimiter{\Ddownarrow} {\mathrel}{arrows1}{"60}{arrows1}{"60}
+\stix@MathDelimiter{\arrowvert}  {\mathrel}{arrows1}{"3C}{arrows1}{"3C}
+\stix@MathDelimiter{\Arrowvert}  {\mathrel}{arrows1}{"3D}{arrows1}{"3D}
+%    \end{macrocode}
+%
+% \paragraph{Radicals}
+%
+%    \begin{macrocode}
+\stix@MathRadical{\sqrtsign}    {largesymbols}{"F9}{largesymbols}{"74}
+\stix@MathRadical{\longdivision}{largesymbols}{"FA}{largesymbols}{"FA}
+\def\surd{{\mathchar"13F9}}
+%    \end{macrocode}
+%
+% \paragraph{Integrals}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\smallintsl}             {\mathop}{integrals}{"00}
+\stix@MathSymbol{\smalliintsl}            {\mathop}{integrals}{"01}
+\stix@MathSymbol{\smalliiintsl}           {\mathop}{integrals}{"02}
+\stix@MathSymbol{\smallointsl}            {\mathop}{integrals}{"03}
+\stix@MathSymbol{\smalloiintsl}           {\mathop}{integrals}{"04}
+\stix@MathSymbol{\smalloiiintsl}          {\mathop}{integrals}{"05}
+\stix@MathSymbol{\smallintclockwisesl}    {\mathop}{integrals}{"06}
+\stix@MathSymbol{\smallvarointclockwisesl}{\mathop}{integrals}{"07}
+\stix@MathSymbol{\smallointctrclockwisesl}{\mathop}{integrals}{"08}
+\stix@MathSymbol{\smallsumintsl}          {\mathop}{integrals}{"09}
+\stix@MathSymbol{\smalliiiintsl}          {\mathop}{integrals}{"0A}
+\stix@MathSymbol{\smallintbarsl}          {\mathop}{integrals}{"0B}
+\stix@MathSymbol{\smallintBarsl}          {\mathop}{integrals}{"0C}
+\stix@MathSymbol{\smallfintsl}            {\mathop}{integrals}{"0D}
+\stix@MathSymbol{\smallcirfnintsl}        {\mathop}{integrals}{"0E}
+\stix@MathSymbol{\smallawintsl}           {\mathop}{integrals}{"0F}
+\stix@MathSymbol{\smallrppolintsl}        {\mathop}{integrals}{"10}
+\stix@MathSymbol{\smallscpolintsl}        {\mathop}{integrals}{"11}
+\stix@MathSymbol{\smallnpolintsl}         {\mathop}{integrals}{"12}
+\stix@MathSymbol{\smallpointintsl}        {\mathop}{integrals}{"13}
+\stix@MathSymbol{\smallsqintsl}           {\mathop}{integrals}{"14}
+\stix@MathSymbol{\smallintlarhksl}        {\mathop}{integrals}{"15}
+\stix@MathSymbol{\smallintxsl}            {\mathop}{integrals}{"16}
+\stix@MathSymbol{\smallintcapsl}          {\mathop}{integrals}{"17}
+\stix@MathSymbol{\smallintcupsl}          {\mathop}{integrals}{"18}
+\stix@MathSymbol{\smallupintsl}           {\mathop}{integrals}{"19}
+\stix@MathSymbol{\smalllowintsl}          {\mathop}{integrals}{"1A}
+\stix@MathSymbol{\smallintup}             {\mathop}{integrals}{"1B}
+\stix@MathSymbol{\smalliintup}            {\mathop}{integrals}{"1C}
+\stix@MathSymbol{\smalliiintup}           {\mathop}{integrals}{"1D}
+\stix@MathSymbol{\smallointup}            {\mathop}{integrals}{"1E}
+\stix@MathSymbol{\smalloiintup}           {\mathop}{integrals}{"1F}
+\stix@MathSymbol{\smalloiiintup}          {\mathop}{integrals}{"20}
+\stix@MathSymbol{\smallintclockwiseup}    {\mathop}{integrals}{"21}
+\stix@MathSymbol{\smallvarointclockwiseup}{\mathop}{integrals}{"22}
+\stix@MathSymbol{\smallointctrclockwiseup}{\mathop}{integrals}{"23}
+\stix@MathSymbol{\smallsumintup}          {\mathop}{integrals}{"24}
+\stix@MathSymbol{\smalliiiintup}          {\mathop}{integrals}{"25}
+\stix@MathSymbol{\smallintbarup}          {\mathop}{integrals}{"26}
+\stix@MathSymbol{\smallintBarup}          {\mathop}{integrals}{"27}
+\stix@MathSymbol{\smallfintup}            {\mathop}{integrals}{"28}
+\stix@MathSymbol{\smallcirfnintup}        {\mathop}{integrals}{"29}
+\stix@MathSymbol{\smallawintup}           {\mathop}{integrals}{"2A}
+\stix@MathSymbol{\smallrppolintup}        {\mathop}{integrals}{"2B}
+\stix@MathSymbol{\smallscpolintup}        {\mathop}{integrals}{"2C}
+\stix@MathSymbol{\smallnpolintup}         {\mathop}{integrals}{"2D}
+\stix@MathSymbol{\smallpointintup}        {\mathop}{integrals}{"2E}
+\stix@MathSymbol{\smallsqintup}           {\mathop}{integrals}{"2F}
+\stix@MathSymbol{\smallintlarhkup}        {\mathop}{integrals}{"30}
+\stix@MathSymbol{\smallintxup}            {\mathop}{integrals}{"31}
+\stix@MathSymbol{\smallintcapup}          {\mathop}{integrals}{"32}
+\stix@MathSymbol{\smallintcupup}          {\mathop}{integrals}{"33}
+\stix@MathSymbol{\smallupintup}           {\mathop}{integrals}{"34}
+\stix@MathSymbol{\smalllowintup}          {\mathop}{integrals}{"35}
+\stix@MathSymbol{\intslop}                {\mathop}{integrals}{"94}
+\stix@MathSymbol{\iintslop}               {\mathop}{integrals}{"95}
+\stix@MathSymbol{\iiintslop}              {\mathop}{integrals}{"96}
+\stix@MathSymbol{\ointslop}               {\mathop}{integrals}{"97}
+\stix@MathSymbol{\oiintslop}              {\mathop}{integrals}{"98}
+\stix@MathSymbol{\oiiintslop}             {\mathop}{integrals}{"99}
+\stix@MathSymbol{\intclockwiseslop}       {\mathop}{integrals}{"9A}
+\stix@MathSymbol{\varointclockwiseslop}   {\mathop}{integrals}{"9B}
+\stix@MathSymbol{\ointctrclockwiseslop}   {\mathop}{integrals}{"9C}
+\stix@MathSymbol{\sumintslop}             {\mathop}{integrals}{"9D}
+\stix@MathSymbol{\iiiintslop}             {\mathop}{integrals}{"9E}
+\stix@MathSymbol{\intbarslop}             {\mathop}{integrals}{"9F}
+\stix@MathSymbol{\intBarslop}             {\mathop}{integrals}{"A0}
+\stix@MathSymbol{\fintslop}               {\mathop}{integrals}{"A1}
+\stix@MathSymbol{\cirfnintslop}           {\mathop}{integrals}{"A2}
+\stix@MathSymbol{\awintslop}              {\mathop}{integrals}{"A3}
+\stix@MathSymbol{\rppolintslop}           {\mathop}{integrals}{"A4}
+\stix@MathSymbol{\scpolintslop}           {\mathop}{integrals}{"A5}
+\stix@MathSymbol{\npolintslop}            {\mathop}{integrals}{"A6}
+\stix@MathSymbol{\pointintslop}           {\mathop}{integrals}{"A7}
+\stix@MathSymbol{\sqintslop}              {\mathop}{integrals}{"A8}
+\stix@MathSymbol{\intlarhkslop}           {\mathop}{integrals}{"A9}
+\stix@MathSymbol{\intxslop}               {\mathop}{integrals}{"AA}
+\stix@MathSymbol{\intcapslop}             {\mathop}{integrals}{"AB}
+\stix@MathSymbol{\intcupslop}             {\mathop}{integrals}{"AC}
+\stix@MathSymbol{\upintslop}              {\mathop}{integrals}{"AD}
+\stix@MathSymbol{\lowintslop}             {\mathop}{integrals}{"AE}
+\stix@MathSymbol{\intupop}                {\mathop}{integrals}{"AF}
+\stix@MathSymbol{\iintupop}               {\mathop}{integrals}{"B0}
+\stix@MathSymbol{\iiintupop}              {\mathop}{integrals}{"B1}
+\stix@MathSymbol{\ointupop}               {\mathop}{integrals}{"B2}
+\stix@MathSymbol{\oiintupop}              {\mathop}{integrals}{"B3}
+\stix@MathSymbol{\oiiintupop}             {\mathop}{integrals}{"B4}
+\stix@MathSymbol{\intclockwiseupop}       {\mathop}{integrals}{"B5}
+\stix@MathSymbol{\varointclockwiseupop}   {\mathop}{integrals}{"B6}
+\stix@MathSymbol{\ointctrclockwiseupop}   {\mathop}{integrals}{"B7}
+\stix@MathSymbol{\sumintupop}             {\mathop}{integrals}{"B8}
+\stix@MathSymbol{\iiiintupop}             {\mathop}{integrals}{"B9}
+\stix@MathSymbol{\intbarupop}             {\mathop}{integrals}{"BA}
+\stix@MathSymbol{\intBarupop}             {\mathop}{integrals}{"BB}
+\stix@MathSymbol{\fintupop}               {\mathop}{integrals}{"BC}
+\stix@MathSymbol{\cirfnintupop}           {\mathop}{integrals}{"BD}
+\stix@MathSymbol{\awintupop}              {\mathop}{integrals}{"BE}
+\stix@MathSymbol{\rppolintupop}           {\mathop}{integrals}{"BF}
+\stix@MathSymbol{\scpolintupop}           {\mathop}{integrals}{"C0}
+\stix@MathSymbol{\npolintupop}            {\mathop}{integrals}{"C1}
+\stix@MathSymbol{\pointintupop}           {\mathop}{integrals}{"C2}
+\stix@MathSymbol{\sqintupop}              {\mathop}{integrals}{"C3}
+\stix@MathSymbol{\intlarhkupop}           {\mathop}{integrals}{"C4}
+\stix@MathSymbol{\intxupop}               {\mathop}{integrals}{"C5}
+\stix@MathSymbol{\intcapupop}             {\mathop}{integrals}{"C6}
+\stix@MathSymbol{\intcupupop}             {\mathop}{integrals}{"C7}
+\stix@MathSymbol{\upintupop}              {\mathop}{integrals}{"C8}
+\stix@MathSymbol{\lowintupop}             {\mathop}{integrals}{"C9}
+
+\stix@MathSymbol{\circledS}               {\mathord}{integrals}{"3B}
+\stix@MathSymbol{\diagdown}               {\mathord}{integrals}{"3C}
+\stix@MathSymbol{\diagup}                 {\mathord}{integrals}{"3D}
+\stix@MathSymbol{\eth}                    {\mathord}{integrals}{"3E}
+\stix@MathSymbol{\smallfrown}             {\mathrel}{integrals}{"3F}
+\stix@MathSymbol{\smallsmile}             {\mathrel}{integrals}{"40}
+\stix@MathSymbol{\gvertneqq}              {\mathrel}{integrals}{"5B}
+\stix@MathSymbol{\lvertneqq}              {\mathrel}{integrals}{"5C}
+\stix@MathSymbol{\nshortmid}              {\mathrel}{integrals}{"5D}
+\stix@MathSymbol{\nshortparallel}         {\mathrel}{integrals}{"5E}
+\stix@MathSymbol{\shortmid}               {\mathrel}{integrals}{"5F}
+\stix@MathSymbol{\shortparallel}          {\mathrel}{integrals}{"60}
+\stix@MathSymbol{\varsubsetneq}           {\mathrel}{integrals}{"61}
+\stix@MathSymbol{\varsupsetneq}           {\mathrel}{integrals}{"62}
+\stix@MathSymbol{\varsubsetneqq}          {\mathrel}{integrals}{"63}
+\stix@MathSymbol{\varsupsetneqq}          {\mathrel}{integrals}{"64}
+\stix@MathSymbol{\varkappa}               {\mathord}{integrals}{"7A}
+\stix@MathSymbol{\digamma}                {\mathord}{integrals}{"7B}
+\stix@MathSymbol{\backepsilon}            {\mathord}{integrals}{"7C}
+\stix@MathSymbol{\varpropto}              {\mathrel}{integrals}{"7E}
+%    \end{macrocode}
+%
+% For compatibility with \pkg{amsfonts} where they are defined to work both in
+% text and math mode.
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\yenmath}                {\mathord}{integrals}{"7D}
+\stix@MathSymbol{\circledRmath}           {\mathord}{integrals}{"3A}
+\stix@MathSymbol{\maltesemath}            {\mathord}{arrows3}{"83}
+\stix@MathSymbol{\circledstar}            {\mathord}{arrows3}{"84}
+\DeclareRobustCommand\yen{%
+  \ifmmode\yenmath\else{\fontencoding{TS1}\selectfont\char"A5}\fi}
+\DeclareRobustCommand\circledR{%
+  \ifmmode\circledRmath\else{\fontencoding{TS1}\selectfont\char"AE}\fi}
+\DeclareRobustCommand\checkmark{\ensuremath{\checkmarkmath}}
+\DeclareRobustCommand\maltese{\ensuremath{\maltesemath}}
+%    \end{macrocode}
+%
+% When |upint| package option is specified, integrals will be upright by
+% default.
+%
+%    \begin{macrocode}
+\ifstix@upint
+    \let\smallint=\smallintup
+    \let\smalliint=\smalliintup
+    \let\smalliiint=\smalliiintup
+    \let\smalloint=\smallointup
+    \let\smalloiint=\smalloiintup
+    \let\smalloiiint=\smalloiiintup
+    \let\smallintclockwise=\smallintclockwiseup
+    \let\smallvarointclockwise=\smallvarointclockwiseup
+    \let\smallointctrclockwise=\smallointctrclockwiseup
+    \let\smallsumint=\smallsumintup
+    \let\smalliiiint=\smalliiiintup
+    \let\smallintbar=\smallintbarup
+    \let\smallintBar=\smallintBarup
+    \let\smallfint=\smallfintup
+    \let\smallcirfnint=\smallcirfnintup
+    \let\smallawint=\smallawintup
+    \let\smallrppolint=\smallrppolintup
+    \let\smallscpolint=\smallscpolintup
+    \let\smallnpolint=\smallnpolintup
+    \let\smallpointint=\smallpointintup
+    \let\smallsqint=\smallsqintup
+    \let\smallintlarhk=\smallintlarhkup
+    \let\smallintx=\smallintxup
+    \let\smallintcap=\smallintcapup
+    \let\smallintcup=\smallintcupup
+    \let\smallupint=\smallupintup
+    \let\smalllowint=\smalllowintup
+    \let\intop=\intupop
+    \let\iintop=\iintupop
+    \let\iiintop=\iiintupop
+    \let\ointop=\ointupop
+    \let\oiintop=\oiintupop
+    \let\oiiintop=\oiiintupop
+    \let\intclockwiseop=\intclockwiseupop
+    \let\varointclockwiseop=\varointclockwiseupop
+    \let\ointctrclockwiseop=\ointctrclockwiseupop
+    \let\sumintop=\sumintupop
+    \let\iiiintop=\iiiintupop
+    \let\intbarop=\intbarupop
+    \let\intBarop=\intBarupop
+    \let\fintop=\fintupop
+    \let\cirfnintop=\cirfnintupop
+    \let\awintop=\awintupop
+    \let\rppolintop=\rppolintupop
+    \let\scpolintop=\scpolintupop
+    \let\npolintop=\npolintupop
+    \let\pointintop=\pointintupop
+    \let\sqintop=\sqintupop
+    \let\intlarhkop=\intlarhkupop
+    \let\intxop=\intxupop
+    \let\intcapop=\intcapupop
+    \let\intcupop=\intcupupop
+    \let\upintop=\upintupop
+    \let\lowintop=\lowintupop
+\else
+    \let\smallint=\smallintsl
+    \let\smalliint=\smalliintsl
+    \let\smalliiint=\smalliiintsl
+    \let\smalloint=\smallointsl
+    \let\smalloiint=\smalloiintsl
+    \let\smalloiiint=\smalloiiintsl
+    \let\smallintclockwise=\smallintclockwisesl
+    \let\smallvarointclockwise=\smallvarointclockwisesl
+    \let\smallointctrclockwise=\smallointctrclockwisesl
+    \let\smallsumint=\smallsumintsl
+    \let\smalliiiint=\smalliiiintsl
+    \let\smallintbar=\smallintbarsl
+    \let\smallintBar=\smallintBarsl
+    \let\smallfint=\smallfintsl
+    \let\smallcirfnint=\smallcirfnintsl
+    \let\smallawint=\smallawintsl
+    \let\smallrppolint=\smallrppolintsl
+    \let\smallscpolint=\smallscpolintsl
+    \let\smallnpolint=\smallnpolintsl
+    \let\smallpointint=\smallpointintsl
+    \let\smallsqint=\smallsqintsl
+    \let\smallintlarhk=\smallintlarhksl
+    \let\smallintx=\smallintxsl
+    \let\smallintcap=\smallintcapsl
+    \let\smallintcup=\smallintcupsl
+    \let\smallupint=\smallupintsl
+    \let\smalllowint=\smalllowintsl
+    \let\intop=\intslop
+    \let\iintop=\iintslop
+    \let\iiintop=\iiintslop
+    \let\ointop=\ointslop
+    \let\oiintop=\oiintslop
+    \let\oiiintop=\oiiintslop
+    \let\intclockwiseop=\intclockwiseslop
+    \let\varointclockwiseop=\varointclockwiseslop
+    \let\ointctrclockwiseop=\ointctrclockwiseslop
+    \let\sumintop=\sumintslop
+    \let\iiiintop=\iiiintslop
+    \let\intbarop=\intbarslop
+    \let\intBarop=\intBarslop
+    \let\fintop=\fintslop
+    \let\cirfnintop=\cirfnintslop
+    \let\awintop=\awintslop
+    \let\rppolintop=\rppolintslop
+    \let\scpolintop=\scpolintslop
+    \let\npolintop=\npolintslop
+    \let\pointintop=\pointintslop
+    \let\sqintop=\sqintslop
+    \let\intlarhkop=\intlarhkslop
+    \let\intxop=\intxslop
+    \let\intcapop=\intcapslop
+    \let\intcupop=\intcupslop
+    \let\upintop=\upintslop
+    \let\lowintop=\lowintslop
+\fi
+\def\int{\DOTSI\intop\ilimits@}
+\def\iint{\DOTSI\iintop\ilimits@}
+\def\iiint{\DOTSI\iiintop\ilimits@}
+\def\oint{\DOTSI\ointop\ilimits@}
+\def\oiint{\DOTSI\oiintop\ilimits@}
+\def\oiiint{\DOTSI\oiiintop\ilimits@}
+\def\intclockwise{\DOTSI\intclockwiseop\ilimits@}
+\def\varointclockwise{\DOTSI\varointclockwiseop\ilimits@}
+\def\ointctrclockwise{\DOTSI\ointctrclockwiseop\ilimits@}
+\def\sumint{\DOTSI\sumintop\ilimits@}
+\def\iiiint{\DOTSI\iiiintop\ilimits@}
+\def\intbar{\DOTSI\intbarop\ilimits@}
+\def\intBar{\DOTSI\intBarop\ilimits@}
+\def\fint{\DOTSI\fintop\ilimits@}
+\def\cirfnint{\DOTSI\cirfnintop\ilimits@}
+\def\awint{\DOTSI\awintop\ilimits@}
+\def\rppolint{\DOTSI\rppolintop\ilimits@}
+\def\scpolint{\DOTSI\scpolintop\ilimits@}
+\def\npolint{\DOTSI\npolintop\ilimits@}
+\def\pointint{\DOTSI\pointintop\ilimits@}
+\def\sqint{\DOTSI\sqintop\ilimits@}
+\def\intlarhk{\DOTSI\intlarhkop\ilimits@}
+\def\intx{\DOTSI\intxop\ilimits@}
+\def\intcap{\DOTSI\intcapop\ilimits@}
+\def\intcup{\DOTSI\intcupop\ilimits@}
+\def\upint{\DOTSI\upintop\ilimits@}
+\def\lowint{\DOTSI\lowintop\ilimits@}
+%    \end{macrocode}
+%
+% Upright integrals can be accessed using |up| suffix, and |sl| for slanted,
+% despite the default integrals shape.
+%
+%    \begin{macrocode}
+\def\intsl{\DOTSI\intslop\ilimits@}
+\def\iintsl{\DOTSI\iintslop\ilimits@}
+\def\iiintsl{\DOTSI\iiintslop\ilimits@}
+\def\ointsl{\DOTSI\ointslop\ilimits@}
+\def\oiintsl{\DOTSI\oiintslop\ilimits@}
+\def\oiiintsl{\DOTSI\oiiintslop\ilimits@}
+\def\intclockwisesl{\DOTSI\intclockwiseslop\ilimits@}
+\def\varointclockwisesl{\DOTSI\varointclockwiseslop\ilimits@}
+\def\ointctrclockwisesl{\DOTSI\ointctrclockwiseslop\ilimits@}
+\def\sumintsl{\DOTSI\sumintslop\ilimits@}
+\def\iiiintsl{\DOTSI\iiiintslop\ilimits@}
+\def\intbarsl{\DOTSI\intbarslop\ilimits@}
+\def\intBarsl{\DOTSI\intBarslop\ilimits@}
+\def\fintsl{\DOTSI\fintslop\ilimits@}
+\def\cirfnintsl{\DOTSI\cirfnintslop\ilimits@}
+\def\awintsl{\DOTSI\awintslop\ilimits@}
+\def\rppolintsl{\DOTSI\rppolintslop\ilimits@}
+\def\scpolintsl{\DOTSI\scpolintslop\ilimits@}
+\def\npolintsl{\DOTSI\npolintslop\ilimits@}
+\def\pointintsl{\DOTSI\pointintslop\ilimits@}
+\def\sqintsl{\DOTSI\sqintslop\ilimits@}
+\def\intlarhksl{\DOTSI\intlarhkslop\ilimits@}
+\def\intxsl{\DOTSI\intxslop\ilimits@}
+\def\intcapsl{\DOTSI\intcapslop\ilimits@}
+\def\intcupsl{\DOTSI\intcupslop\ilimits@}
+\def\upintsl{\DOTSI\upintslop\ilimits@}
+\def\lowintsl{\DOTSI\lowintslop\ilimits@}
+\def\intup{\DOTSI\intupop\ilimits@}
+\def\iintup{\DOTSI\iintupop\ilimits@}
+\def\iiintup{\DOTSI\iiintupop\ilimits@}
+\def\ointup{\DOTSI\ointupop\ilimits@}
+\def\oiintup{\DOTSI\oiintupop\ilimits@}
+\def\oiiintup{\DOTSI\oiiintupop\ilimits@}
+\def\intclockwiseup{\DOTSI\intclockwiseupop\ilimits@}
+\def\varointclockwiseup{\DOTSI\varointclockwiseupop\ilimits@}
+\def\ointctrclockwiseup{\DOTSI\ointctrclockwiseupop\ilimits@}
+\def\sumintup{\DOTSI\sumintupop\ilimits@}
+\def\iiiintup{\DOTSI\iiiintupop\ilimits@}
+\def\intbarup{\DOTSI\intbarupop\ilimits@}
+\def\intBarup{\DOTSI\intBarupop\ilimits@}
+\def\fintup{\DOTSI\fintupop\ilimits@}
+\def\cirfnintup{\DOTSI\cirfnintupop\ilimits@}
+\def\awintup{\DOTSI\awintupop\ilimits@}
+\def\rppolintup{\DOTSI\rppolintupop\ilimits@}
+\def\scpolintup{\DOTSI\scpolintupop\ilimits@}
+\def\npolintup{\DOTSI\npolintupop\ilimits@}
+\def\pointintup{\DOTSI\pointintupop\ilimits@}
+\def\sqintup{\DOTSI\sqintupop\ilimits@}
+\def\intlarhkup{\DOTSI\intlarhkupop\ilimits@}
+\def\intxup{\DOTSI\intxupop\ilimits@}
+\def\intcapup{\DOTSI\intcapupop\ilimits@}
+\def\intcupup{\DOTSI\intcupupop\ilimits@}
+\def\upintup{\DOTSI\upintupop\ilimits@}
+\def\lowintup{\DOTSI\lowintupop\ilimits@}
+%    \end{macrocode}
+%
+% \paragraph{Big operators}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\Bbbsumop}               {\mathop}{largesymbols}{"B0}
+\stix@MathSymbol{\prodop}                 {\mathop}{largesymbols}{"B1}
+\stix@MathSymbol{\coprodop}               {\mathop}{largesymbols}{"B2}
+\stix@MathSymbol{\sumop}                  {\mathop}{largesymbols}{"B3}
+\stix@MathSymbol{\bigwedgeop}             {\mathop}{largesymbols}{"B4}
+\stix@MathSymbol{\bigveeop}               {\mathop}{largesymbols}{"B5}
+\stix@MathSymbol{\bigcapop}               {\mathop}{largesymbols}{"B6}
+\stix@MathSymbol{\bigcupop}               {\mathop}{largesymbols}{"B7}
+\stix@MathSymbol{\xsolop}                 {\mathop}{largesymbols}{"B8}
+\stix@MathSymbol{\xbsolop}                {\mathop}{largesymbols}{"B9}
+\stix@MathSymbol{\bigodotop}              {\mathop}{largesymbols}{"BA}
+\stix@MathSymbol{\bigoplusop}             {\mathop}{largesymbols}{"BB}
+\stix@MathSymbol{\bigotimesop}            {\mathop}{largesymbols}{"BC}
+\stix@MathSymbol{\bigcupdotop}            {\mathop}{largesymbols}{"BD}
+\stix@MathSymbol{\biguplusop}             {\mathop}{largesymbols}{"BE}
+\stix@MathSymbol{\bigsqcapop}             {\mathop}{largesymbols}{"BF}
+\stix@MathSymbol{\bigsqcupop}             {\mathop}{largesymbols}{"C0}
+\stix@MathSymbol{\conjquantop}            {\mathop}{largesymbols}{"C1}
+\stix@MathSymbol{\disjquantop}            {\mathop}{largesymbols}{"C2}
+\stix@MathSymbol{\bigtimesop}             {\mathop}{largesymbols}{"C3}
+\stix@MathSymbol{\modtwosumop}            {\mathop}{largesymbols}{"C4}
+\stix@MathSymbol{\bigtalloblongop}        {\mathop}{largesymbols}{"C5}
+\def\Bbbsum{\DOTSI\Bbbsumop\slimits@}
+\def\prod{\DOTSI\prodop\slimits@}
+\def\coprod{\DOTSI\coprodop\slimits@}
+\def\sum{\DOTSI\sumop\slimits@}
+\def\bigwedge{\DOTSI\bigwedgeop\slimits@}
+\def\bigvee{\DOTSI\bigveeop\slimits@}
+\def\bigcap{\DOTSI\bigcapop\slimits@}
+\def\bigcup{\DOTSI\bigcupop\slimits@}
+\def\xsol{\DOTSI\xsolop\slimits@}
+\def\xbsol{\DOTSI\xbsolop\slimits@}
+\def\bigodot{\DOTSI\bigodotop\slimits@}
+\def\bigoplus{\DOTSI\bigoplusop\slimits@}
+\def\bigotimes{\DOTSI\bigotimesop\slimits@}
+\def\bigcupdot{\DOTSI\bigcupdotop\slimits@}
+\def\biguplus{\DOTSI\biguplusop\slimits@}
+\def\bigsqcap{\DOTSI\bigsqcapop\slimits@}
+\def\bigsqcup{\DOTSI\bigsqcupop\slimits@}
+\def\conjquant{\DOTSI\conjquantop\slimits@}
+\def\disjquant{\DOTSI\disjquantop\slimits@}
+\def\bigtimes{\DOTSI\bigtimesop\slimits@}
+\def\modtwosum{\DOTSI\modtwosumop\slimits@}
+\def\bigtalloblong{\DOTSI\bigtalloblongop\slimits@}
+%    \end{macrocode}
+%
+% \paragraph{Math accents}
+%
+%    \begin{macrocode}
+\stix@MathAccent{\grave}                {\mathalpha}{letters}{"80}
+\stix@MathAccent{\acute}                {\mathalpha}{letters}{"81}
+\stix@MathAccent{\hat}                  {\mathalpha}{letters}{"82}
+\stix@MathAccent{\tilde}                {\mathalpha}{letters}{"83}
+\stix@MathAccent{\bar}                  {\mathalpha}{letters}{"84}
+\stix@MathAccent{\breve}                {\mathalpha}{letters}{"85}
+\stix@MathAccent{\dot}                  {\mathalpha}{letters}{"86}
+\stix@MathAccent{\ddot}                 {\mathalpha}{letters}{"87}
+\stix@MathAccent{\ovhook}               {\mathalpha}{letters}{"88}
+\stix@MathAccent{\mathring}             {\mathalpha}{letters}{"89}
+\stix@MathAccent{\check}                {\mathalpha}{letters}{"8A}
+\stix@MathAccent{\candra}               {\mathalpha}{letters}{"8B}
+\stix@MathAccent{\oturnedcomma}         {\mathalpha}{letters}{"8C}
+\stix@MathAccent{\ocommatopright}       {\mathalpha}{letters}{"8D}
+\stix@MathAccent{\droang}               {\mathalpha}{letters}{"8E}
+\stix@MathAccent{\leftharpoonaccent}    {\mathalpha}{letters}{"8F}
+\stix@MathAccent{\rightharpoonaccent}   {\mathalpha}{letters}{"90}
+\stix@MathAccent{\leftarrowaccent}      {\mathalpha}{letters}{"91}
+\stix@MathAccent{\vec}                  {\mathalpha}{letters}{"92}
+        % not \let because amsmath redefines \vec
+        \def\rightarrowaccent{\vec}
+\stix@MathAccent{\dddot}                {\mathalpha}{letters}{"93}
+\stix@MathAccent{\ddddot}               {\mathalpha}{letters}{"94}
+\stix@MathAccent{\leftrightarrowaccent} {\mathalpha}{letters}{"95}
+\stix@MathAccent{\annuity}              {\mathalpha}{letters}{"96}
+\stix@MathAccent{\widebridgeabove}      {\mathalpha}{letters}{"97}
+\stix@MathAccent{\asteraccent}          {\mathalpha}{letters}{"98}
+%    \end{macrocode}
+%
+% \pkg{amsmath} breaks our wide accents, so we make sure its
+% |\set@mathaccent| has no effect while defining them.
+%
+%    \begin{macrocode}
+\begingroup
+  \def\set@mathaccent#1#2#3#4{%
+      \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
+  \stix@MathAccent{\widehat}            {\mathord}{letters}{"9A}
+  \stix@MathAccent{\widetilde}          {\mathord}{letters}{"9B}
+  \stix@MathAccent{\widecheck}          {\mathord}{letters}{"9C}
+\endgroup
+%    \end{macrocode}
+%
+% \paragraph{Over/under braces and brackets}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\braceld}{\mathord}{letters}{"A9}
+\stix@MathSymbol{\bracerd}{\mathord}{letters}{"AA}
+\stix@MathSymbol{\bracelu}{\mathord}{letters}{"AB}
+\stix@MathSymbol{\braceru}{\mathord}{letters}{"AC}
+\stix@MathSymbol{\braceex}{\mathord}{letters}{"AD}
+\stix@MathSymbol{\bracemu}{\mathord}{letters}{"AE}
+\stix@MathSymbol{\bracemd}{\mathord}{letters}{"AF}
+\stix@MathSymbol{\parenld}{\mathord}{letters}{"B0}
+\stix@MathSymbol{\parenrd}{\mathord}{letters}{"B1}
+\stix@MathSymbol{\parenlu}{\mathord}{letters}{"B2}
+\stix@MathSymbol{\parenru}{\mathord}{letters}{"B3}
+\stix@MathSymbol{\bracketld}{\mathord}{letters}{"B4}
+\stix@MathSymbol{\bracketrd}{\mathord}{letters}{"B5}
+\stix@MathSymbol{\bracketlu}{\mathord}{letters}{"B6}
+\stix@MathSymbol{\bracketru}{\mathord}{letters}{"B7}
+\def\stix@braceglue{\hskip -.15em plus .15em}
+\def\downbracefill{$\m@th%
+    \braceld\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracemu\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracerd$}
+\def\upbracefill{$\m@th%
+    \bracelu\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracemd\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\braceru$}
+\def\stix@parenglue{\hskip -.2em plus .2em}
+\def\downparenfill{$\m@th%
+    \parenld\stix@parenglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@parenglue\parenrd$}
+\def\upparenfill{$\m@th%
+    \parenlu\stix@parenglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@parenglue\parenru$}
+\def\stix@overbrace#1#2{%
+    \mathop {%
+        \vbox {%
+            \m@th%
+            \ialign{##\crcr%
+                \noalign{\kern.3\fontdimen5\textfont2}%
+                    \csname down#1fill\endcsname\crcr%
+                \noalign{\kern.5\fontdimen5\textfont2\nointerlineskip}%
+                $\hfil\displaystyle{#2}\hfil$\crcr%
+            }%
+        }%
+    }%
+    \limits%
+}
+\def\stix@underbrace#1#2{
+    \mathop {%
+        \vtop {%
+            \m@th%
+            \ialign{##\crcr%
+                $\hfil\displaystyle{#2}\hfil$\crcr%
+                \noalign{\kern.5\fontdimen5\textfont2\nointerlineskip}%
+                \csname up#1fill\endcsname\crcr%
+                \noalign{\kern.3\fontdimen5\textfont2}%
+            }%
+        }%
+    }%
+    \limits%
+}
+\def\overbrace#1{\stix@overbrace{brace}{#1}}
+\def\overparen#1{\stix@overbrace{paren}{#1}}
+\def\underbrace#1{\stix@underbrace{brace}{#1}}
+\def\underparen#1{\stix@underbrace{paren}{#1}}
+%    \end{macrocode}
+%
+% \pkg{mathtools} defines over/under brackets that takes optional arguments,
+% we want to retain that.
+%
+%    \begin{macrocode}
+\AtBeginDocument{
+    \@ifpackageloaded{mathtools}{}{
+        \def\stix@bracketglue{\hskip -.85em plus .85em}
+        \def\downbracketfill{$\m@th%
+            \bracketld\stix@bracketglue%
+            \cleaders\hbox{$\braceex$}\hfill%
+            \stix@bracketglue\bracketrd$}
+        \def\upbracketfill{$\m@th%
+            \bracketlu\stix@bracketglue%
+            \cleaders\hbox{$\braceex$}\hfill%
+            \stix@bracketglue\bracketru$}
+        \def\underbracket#1{\stix@underbrace{bracket}{#1}}
+        \def\overbracket#1{\stix@overbrace{bracket}{#1}}
+    }
+}
+%    \end{macrocode}
+%
+% \paragraph{Over/under arrows}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\arrowaccentex}  {\mathord}{letters}{"99}
+\stix@MathSymbol{\harpoonaccentlt}{\mathord}{letters}{"8F}
+\stix@MathSymbol{\harpoonaccentrt}{\mathord}{letters}{"90}
+\stix@MathSymbol{\arrowaccentlt}  {\mathord}{letters}{"91}
+\stix@MathSymbol{\arrowaccentrt}  {\mathord}{letters}{"92}
+\def\stix@arrowaccentglue{\hskip -.23em plus .23em}
+\def\overleftarrowfill{$\m@th%
+    \arrowaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill$}
+\def\overrightarrowfill{$\m@th%
+    \cleaders\hbox{$\arrowaccentex$}\hfill%
+    \stix@arrowaccentglue\arrowaccentrt$}
+\def\overleftrightarrowfill{$\m@th%
+    \arrowaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill%
+    \stix@arrowaccentglue\arrowaccentrt$}
+\def\overleftharpoonfill{$\m@th%
+    \harpoonaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill$}
+\def\overrightharpoonfill{$\m@th%
+   \cleaders\hbox{$\arrowaccentex$}\hfill%
+   \stix@arrowaccentglue\harpoonaccentrt$}
+\def\stix@overarrow#1#2#3{%
+    \vbox {%
+        \m@th%
+        \ialign{##\crcr%
+            \csname over#1fill\endcsname\crcr%
+            \noalign{\kern -1ex\nointerlineskip}%
+            $\hfil#2#3\hfil$\crcr%
+        }%
+    }%
+}
+\def\stix@underarrow#1#2#3{
+    \vtop {%
+        \m@th%
+        \ialign{##\crcr%
+            $\hfil#2#3\hfil$\crcr%
+            \noalign{\kern .2ex\nointerlineskip}%
+            \csname over#1fill\endcsname\crcr%
+            \noalign{\kern -1ex\nointerlineskip}%
+        }%
+    }%
+}
+\def\overleftarrow{\mathpalette{\stix@overarrow{leftarrow}}}
+\def\overrightarrow{\mathpalette{\stix@overarrow{rightarrow}}}
+\def\overleftrightarrow{\mathpalette{\stix@overarrow{leftrightarrow}}}
+\def\overleftharpoon{\mathpalette{\stix@overarrow{leftharpoon}}}
+\def\overrightharpoon{\mathpalette{\stix@overarrow{rightharpoon}}}
+\def\underleftarrow{\mathpalette{\stix@underarrow{leftarrow}}}
+\def\underrightarrow{\mathpalette{\stix@underarrow{rightarrow}}}
+\def\underleftrightarrow{\mathpalette{\stix@underarrow{leftrightarrow}}}
+\def\underleftharpoon{\mathpalette{\stix@underarrow{leftharpoon}}}
+\def\underrightharpoon{\mathpalette{\stix@underarrow{rightharpoon}}}
+%    \end{macrocode}
+%
+% \paragraph{Arrows}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\lhook}                    {\mathrel}{arrows1}{"2A}
+\stix@MathSymbol{\rhook}                    {\mathrel}{arrows1}{"2B}
+\stix@MathSymbol{\relbar}                   {\mathrel}{arrows1}{"2C}
+\stix@MathSymbol{\Relbar}                   {\mathrel}{arrows1}{"2D}
+\stix@MathSymbol{\Rrelbar}                  {\mathrel}{arrows1}{"2E}
+\stix@MathSymbol{\RRelbar}                  {\mathrel}{arrows1}{"2F}
+
+\stix@MathSymbol{\mapsfromchar}             {\mathrel}{arrows1}{"3A}
+\stix@MathSymbol{\mapstochar}               {\mathrel}{arrows1}{"3B}
+\stix@MathSymbol{\rightarrowbackapprox}     {\mathrel}{arrows1}{"40}
+\stix@MathSymbol{\similarleftarrow}         {\mathrel}{arrows1}{"5B}
+\stix@MathSymbol{\leftarrowapprox}          {\mathrel}{arrows1}{"5C}
+\stix@MathSymbol{\leftarrowbsimilar}        {\mathrel}{arrows1}{"5D}
+\stix@MathSymbol{\rightarrowbsimilar}       {\mathrel}{arrows1}{"5E}
+\stix@MathSymbol{\leftarrow}                {\mathrel}{arrows1}{"7D} \let\gets=\leftarrow
+\stix@MathSymbol{\rightarrow}               {\mathrel}{arrows1}{"99} \let\to=\rightarrow
+\stix@MathSymbol{\leftrightarrow}           {\mathrel}{arrows1}{"9B}
+\stix@MathSymbol{\nwarrow}                  {\mathrel}{arrows1}{"9D}
+\stix@MathSymbol{\nearrow}                  {\mathrel}{arrows1}{"9E}
+\stix@MathSymbol{\searrow}                  {\mathrel}{arrows1}{"9F}
+
+\stix@MathSymbol{\swarrow}                  {\mathrel}{arrows1}{"A0}
+\stix@MathSymbol{\nleftarrow}               {\mathrel}{arrows1}{"A1}
+\stix@MathSymbol{\nrightarrow}              {\mathrel}{arrows1}{"A2}
+\stix@MathSymbol{\leftwavearrow}            {\mathrel}{arrows1}{"A3}
+\stix@MathSymbol{\rightwavearrow}           {\mathrel}{arrows1}{"A4}
+\stix@MathSymbol{\twoheadleftarrow}         {\mathrel}{arrows1}{"A5}
+\stix@MathSymbol{\twoheaduparrow}           {\mathrel}{arrows1}{"A6}
+\stix@MathSymbol{\twoheadrightarrow}        {\mathrel}{arrows1}{"A7}
+\stix@MathSymbol{\twoheaddownarrow}         {\mathrel}{arrows1}{"A8}
+\stix@MathSymbol{\leftarrowtail}            {\mathrel}{arrows1}{"A9}
+\stix@MathSymbol{\rightarrowtail}           {\mathrel}{arrows1}{"AA}
+\stix@MathSymbol{\mapsfrom}                 {\mathrel}{arrows1}{"AB}
+\stix@MathSymbol{\mapsup}                   {\mathrel}{arrows1}{"AC}
+\stix@MathSymbol{\mapsto}                   {\mathrel}{arrows1}{"AD}
+\stix@MathSymbol{\mapsdown}                 {\mathrel}{arrows1}{"AE}
+\stix@MathSymbol{\updownarrowbar}           {\mathord}{arrows1}{"AF}
+
+\stix@MathSymbol{\hookleftarrow}            {\mathrel}{arrows1}{"B0}
+\stix@MathSymbol{\hookrightarrow}           {\mathrel}{arrows1}{"B1}
+\stix@MathSymbol{\looparrowleft}            {\mathrel}{arrows1}{"B2}
+\stix@MathSymbol{\looparrowright}           {\mathrel}{arrows1}{"B3}
+\stix@MathSymbol{\leftrightsquigarrow}      {\mathrel}{arrows1}{"B4}
+\stix@MathSymbol{\nleftrightarrow}          {\mathrel}{arrows1}{"B5}
+\stix@MathSymbol{\downzigzagarrow}          {\mathrel}{arrows1}{"B6}
+\stix@MathSymbol{\Lsh}                      {\mathrel}{arrows1}{"B7}
+\stix@MathSymbol{\Rsh}                      {\mathrel}{arrows1}{"B8}
+\stix@MathSymbol{\Ldsh}                     {\mathrel}{arrows1}{"B9}
+\stix@MathSymbol{\Rdsh}                     {\mathrel}{arrows1}{"BA}
+\stix@MathSymbol{\linefeed}                 {\mathord}{arrows1}{"BB}
+\stix@MathSymbol{\carriagereturn}           {\mathord}{arrows1}{"BC}
+\stix@MathSymbol{\curvearrowleft}           {\mathrel}{arrows1}{"BD}
+\stix@MathSymbol{\curvearrowright}          {\mathrel}{arrows1}{"BE}
+\stix@MathSymbol{\barovernorthwestarrow}    {\mathord}{arrows1}{"BF}
+
+\stix@MathSymbol{\barleftarrowrightarrowbar}{\mathord}{arrows1}{"C0}
+\stix@MathSymbol{\acwopencirclearrow}       {\mathord}{arrows1}{"C1} \stix@MathSymbol{\circlearrowleft} {\mathrel}{arrows1}{"C1}
+\stix@MathSymbol{\cwopencirclearrow}        {\mathord}{arrows1}{"C2} \stix@MathSymbol{\circlearrowright}{\mathrel}{arrows1}{"C2}
+\stix@MathSymbol{\leftharpoonup}            {\mathrel}{arrows1}{"C3}
+\stix@MathSymbol{\leftharpoondown}          {\mathrel}{arrows1}{"C4}
+\stix@MathSymbol{\upharpoonright}           {\mathrel}{arrows1}{"C5} \let\restriction=\upharpoonright
+\stix@MathSymbol{\upharpoonleft}            {\mathrel}{arrows1}{"C6}
+\stix@MathSymbol{\rightharpoonup}           {\mathrel}{arrows1}{"C7}
+\stix@MathSymbol{\rightharpoondown}         {\mathrel}{arrows1}{"C8}
+\stix@MathSymbol{\downharpoonright}         {\mathrel}{arrows1}{"C9}
+\stix@MathSymbol{\downharpoonleft}          {\mathrel}{arrows1}{"CA}
+\stix@MathSymbol{\rightleftarrows}          {\mathrel}{arrows1}{"CB}
+\stix@MathSymbol{\updownarrows}             {\mathrel}{arrows1}{"CC}
+\stix@MathSymbol{\leftrightarrows}          {\mathrel}{arrows1}{"CD}
+\stix@MathSymbol{\leftleftarrows}           {\mathrel}{arrows1}{"CE}
+\stix@MathSymbol{\upuparrows}               {\mathrel}{arrows1}{"CF}
+
+\stix@MathSymbol{\rightrightarrows}         {\mathrel}{arrows1}{"D0}
+\stix@MathSymbol{\downdownarrows}           {\mathrel}{arrows1}{"D1}
+\stix@MathSymbol{\leftrightharpoons}        {\mathrel}{arrows1}{"D2}
+\stix@MathSymbol{\rightleftharpoons}        {\mathrel}{arrows1}{"D3}
+\stix@MathSymbol{\nLeftarrow}               {\mathrel}{arrows1}{"D4}
+\stix@MathSymbol{\nLeftrightarrow}          {\mathrel}{arrows1}{"D5}
+\stix@MathSymbol{\nRightarrow}              {\mathrel}{arrows1}{"D6}
+\stix@MathSymbol{\Leftarrow}                {\mathrel}{arrows1}{"D7}
+\stix@MathSymbol{\Rightarrow}               {\mathrel}{arrows1}{"D9}
+\stix@MathSymbol{\Leftrightarrow}           {\mathrel}{arrows1}{"DB}
+\stix@MathSymbol{\Nwarrow}                  {\mathrel}{arrows1}{"DD}
+\stix@MathSymbol{\Nearrow}                  {\mathrel}{arrows1}{"DE}
+\stix@MathSymbol{\Searrow}                  {\mathrel}{arrows1}{"DF}
+
+\stix@MathSymbol{\Swarrow}                  {\mathrel}{arrows1}{"E0}
+\stix@MathSymbol{\Lleftarrow}               {\mathrel}{arrows1}{"E1}
+\stix@MathSymbol{\Rrightarrow}              {\mathrel}{arrows1}{"E2}
+\stix@MathSymbol{\leftsquigarrow}           {\mathrel}{arrows1}{"E3}
+\stix@MathSymbol{\rightsquigarrow}          {\mathrel}{arrows1}{"E4} \let\leadsto=\rightsquigarrow
+\stix@MathSymbol{\nHuparrow}                {\mathord}{arrows1}{"E5}
+\stix@MathSymbol{\nHdownarrow}              {\mathord}{arrows1}{"E6}
+\stix@MathSymbol{\leftdasharrow}            {\mathord}{arrows1}{"E7}
+\stix@MathSymbol{\updasharrow}              {\mathord}{arrows1}{"E8}
+\stix@MathSymbol{\rightdasharrow}           {\mathord}{arrows1}{"E9}
+\stix@MathSymbol{\downdasharrow}            {\mathord}{arrows1}{"EA}
+\stix@MathSymbol{\barleftarrow}             {\mathrel}{arrows1}{"EB}
+\stix@MathSymbol{\rightarrowbar}            {\mathrel}{arrows1}{"EC}
+\stix@MathSymbol{\leftwhitearrow}           {\mathord}{arrows1}{"ED}
+\stix@MathSymbol{\upwhitearrow}             {\mathord}{arrows1}{"EE}
+\stix@MathSymbol{\rightwhitearrow}          {\mathord}{arrows1}{"EF}
+
+\stix@MathSymbol{\downwhitearrow}           {\mathord}{arrows1}{"F0}
+\stix@MathSymbol{\whitearrowupfrombar}      {\mathord}{arrows1}{"F1}
+\stix@MathSymbol{\circleonrightarrow}       {\mathrel}{arrows1}{"F2}
+\stix@MathSymbol{\downuparrows}             {\mathrel}{arrows1}{"F3}
+\stix@MathSymbol{\rightthreearrows}         {\mathrel}{arrows1}{"F4}
+\stix@MathSymbol{\nvleftarrow}              {\mathrel}{arrows1}{"F5}
+\stix@MathSymbol{\nvrightarrow}             {\mathrel}{arrows1}{"F6}
+\stix@MathSymbol{\nvleftrightarrow}         {\mathrel}{arrows1}{"F7}
+\stix@MathSymbol{\nVleftarrow}              {\mathrel}{arrows1}{"F8}
+\stix@MathSymbol{\nVrightarrow}             {\mathrel}{arrows1}{"F9}
+\stix@MathSymbol{\nVleftrightarrow}         {\mathrel}{arrows1}{"FA}
+\stix@MathSymbol{\leftarrowtriangle}        {\mathrel}{arrows1}{"FB}
+\stix@MathSymbol{\rightarrowtriangle}       {\mathrel}{arrows1}{"FC}
+\stix@MathSymbol{\leftrightarrowtriangle}   {\mathrel}{arrows1}{"FD}
+
+\stix@MathSymbol{\leftarrowonoplus}         {\mathrel}{arrows2}{"2A}
+\stix@MathSymbol{\longleftsquigarrow}       {\mathrel}{arrows2}{"2B}
+\stix@MathSymbol{\nvtwoheadleftarrow}       {\mathrel}{arrows2}{"2C}
+\stix@MathSymbol{\nVtwoheadleftarrow}       {\mathrel}{arrows2}{"2D}
+\stix@MathSymbol{\twoheadmapsfrom}          {\mathrel}{arrows2}{"2E}
+\stix@MathSymbol{\twoheadleftdbkarrow}      {\mathrel}{arrows2}{"2F}
+\stix@MathSymbol{\leftdotarrow}             {\mathrel}{arrows2}{"3A}
+\stix@MathSymbol{\nvleftarrowtail}          {\mathrel}{arrows2}{"3B}
+\stix@MathSymbol{\nVleftarrowtail}          {\mathrel}{arrows2}{"3C}
+\stix@MathSymbol{\twoheadleftarrowtail}     {\mathrel}{arrows2}{"3D}
+\stix@MathSymbol{\nvtwoheadleftarrowtail}   {\mathrel}{arrows2}{"3E}
+\stix@MathSymbol{\nVtwoheadleftarrowtail}   {\mathrel}{arrows2}{"3F}
+\stix@MathSymbol{\leftarrowx}               {\mathrel}{arrows2}{"40}
+\stix@MathSymbol{\leftcurvedarrow}          {\mathrel}{arrows2}{"5B}
+\stix@MathSymbol{\equalleftarrow}           {\mathrel}{arrows2}{"5C}
+\stix@MathSymbol{\bsimilarleftarrow}        {\mathrel}{arrows2}{"5D}
+\stix@MathSymbol{\leftarrowbackapprox}      {\mathrel}{arrows2}{"5E}
+\stix@MathSymbol{\rightarrowgtr}            {\mathrel}{arrows2}{"5F}
+\stix@MathSymbol{\rightarrowsupset}         {\mathrel}{arrows2}{"60}
+\stix@MathSymbol{\LLeftarrow}               {\mathrel}{arrows2}{"7D}
+\stix@MathSymbol{\RRightarrow}              {\mathrel}{arrows2}{"7E}
+
+\stix@MathSymbol{\nvtwoheadrightarrow}      {\mathrel}{arrows2}{"99}
+\stix@MathSymbol{\nVtwoheadrightarrow}      {\mathrel}{arrows2}{"9A}
+\stix@MathSymbol{\nvLeftarrow}              {\mathrel}{arrows2}{"9B}
+\stix@MathSymbol{\nvRightarrow}             {\mathrel}{arrows2}{"9C}
+\stix@MathSymbol{\nvLeftrightarrow}         {\mathrel}{arrows2}{"9D}
+\stix@MathSymbol{\twoheadmapsto}            {\mathrel}{arrows2}{"9E}
+\stix@MathSymbol{\Mapsfrom}                 {\mathrel}{arrows2}{"9F}
+
+\stix@MathSymbol{\Mapsto}                   {\mathrel}{arrows2}{"A0}
+\stix@MathSymbol{\downarrowbarred}          {\mathrel}{arrows2}{"A1}
+\stix@MathSymbol{\uparrowbarred}            {\mathrel}{arrows2}{"A2}
+\stix@MathSymbol{\circleonleftarrow}        {\mathrel}{arrows2}{"A3}
+\stix@MathSymbol{\leftthreearrows}          {\mathrel}{arrows2}{"A4}
+\stix@MathSymbol{\leftbkarrow}              {\mathrel}{arrows2}{"A5}
+\stix@MathSymbol{\rightbkarrow}             {\mathrel}{arrows2}{"A6}
+\stix@MathSymbol{\leftdbkarrow}             {\mathrel}{arrows2}{"A7} \let\dashleftarrow=\leftdbkarrow
+\stix@MathSymbol{\dbkarow}                  {\mathrel}{arrows2}{"A8} \let\dashrightarrow=\dbkarow \let\dasharrow=\dbkarow
+\stix@MathSymbol{\drbkarow}                 {\mathrel}{arrows2}{"A9}
+\stix@MathSymbol{\rightdotarrow}            {\mathrel}{arrows2}{"AA}
+\stix@MathSymbol{\baruparrow}               {\mathrel}{arrows2}{"AB}
+\stix@MathSymbol{\downarrowbar}             {\mathrel}{arrows2}{"AC}
+\stix@MathSymbol{\nvrightarrowtail}         {\mathrel}{arrows2}{"AD}
+\stix@MathSymbol{\nVrightarrowtail}         {\mathrel}{arrows2}{"AE}
+\stix@MathSymbol{\twoheadrightarrowtail}    {\mathrel}{arrows2}{"AF}
+
+\stix@MathSymbol{\nvtwoheadrightarrowtail}  {\mathrel}{arrows2}{"B0}
+\stix@MathSymbol{\nVtwoheadrightarrowtail}  {\mathrel}{arrows2}{"B1}
+\stix@MathSymbol{\lefttail}                 {\mathrel}{arrows2}{"B2}
+\stix@MathSymbol{\righttail}                {\mathrel}{arrows2}{"B3}
+\stix@MathSymbol{\leftdbltail}              {\mathrel}{arrows2}{"B4}
+\stix@MathSymbol{\rightdbltail}             {\mathrel}{arrows2}{"B5}
+\stix@MathSymbol{\diamondleftarrow}         {\mathrel}{arrows2}{"B6}
+\stix@MathSymbol{\rightarrowdiamond}        {\mathrel}{arrows2}{"B7}
+\stix@MathSymbol{\diamondleftarrowbar}      {\mathrel}{arrows2}{"B8}
+\stix@MathSymbol{\barrightarrowdiamond}     {\mathrel}{arrows2}{"B9}
+\stix@MathSymbol{\nwsearrow}                {\mathrel}{arrows2}{"BA}
+\stix@MathSymbol{\neswarrow}                {\mathrel}{arrows2}{"BB}
+\stix@MathSymbol{\hknwarrow}                {\mathrel}{arrows2}{"BC}
+\stix@MathSymbol{\hknearrow}                {\mathrel}{arrows2}{"BD}
+\stix@MathSymbol{\hksearow}                 {\mathrel}{arrows2}{"BE}
+\stix@MathSymbol{\hkswarow}                 {\mathrel}{arrows2}{"BF}
+
+\stix@MathSymbol{\tona}                     {\mathrel}{arrows2}{"C0}
+\stix@MathSymbol{\toea}                     {\mathrel}{arrows2}{"C1}
+\stix@MathSymbol{\tosa}                     {\mathrel}{arrows2}{"C2}
+\stix@MathSymbol{\towa}                     {\mathrel}{arrows2}{"C3}
+\stix@MathSymbol{\rdiagovfdiag}             {\mathord}{arrows2}{"C4}
+\stix@MathSymbol{\fdiagovrdiag}             {\mathord}{arrows2}{"C5}
+\stix@MathSymbol{\seovnearrow}              {\mathord}{arrows2}{"C6}
+\stix@MathSymbol{\neovsearrow}              {\mathord}{arrows2}{"C7}
+\stix@MathSymbol{\fdiagovnearrow}           {\mathord}{arrows2}{"C8}
+\stix@MathSymbol{\rdiagovsearrow}           {\mathord}{arrows2}{"C9}
+\stix@MathSymbol{\neovnwarrow}              {\mathord}{arrows2}{"CA}
+\stix@MathSymbol{\nwovnearrow}              {\mathord}{arrows2}{"CB}
+\stix@MathSymbol{\rightcurvedarrow}         {\mathrel}{arrows2}{"CC}
+\stix@MathSymbol{\uprightcurvearrow}        {\mathord}{arrows2}{"CD}
+\stix@MathSymbol{\downrightcurvedarrow}     {\mathord}{arrows2}{"CE}
+\stix@MathSymbol{\leftdowncurvedarrow}      {\mathrel}{arrows2}{"CF}
+
+\stix@MathSymbol{\rightdowncurvedarrow}     {\mathrel}{arrows2}{"D0}
+\stix@MathSymbol{\cwrightarcarrow}          {\mathrel}{arrows2}{"D1}
+\stix@MathSymbol{\acwleftarcarrow}          {\mathrel}{arrows2}{"D2}
+\stix@MathSymbol{\acwoverarcarrow}          {\mathrel}{arrows2}{"D3}
+\stix@MathSymbol{\acwunderarcarrow}         {\mathrel}{arrows2}{"D4}
+\stix@MathSymbol{\curvearrowrightminus}     {\mathrel}{arrows2}{"D5}
+\stix@MathSymbol{\curvearrowleftplus}       {\mathrel}{arrows2}{"D6}
+\stix@MathSymbol{\cwundercurvearrow}        {\mathrel}{arrows2}{"D7}
+\stix@MathSymbol{\ccwundercurvearrow}       {\mathrel}{arrows2}{"D8}
+\stix@MathSymbol{\acwcirclearrow}           {\mathrel}{arrows2}{"D9}
+\stix@MathSymbol{\cwcirclearrow}            {\mathrel}{arrows2}{"DA}
+\stix@MathSymbol{\rightarrowshortleftarrow} {\mathrel}{arrows2}{"DB}
+\stix@MathSymbol{\leftarrowshortrightarrow} {\mathrel}{arrows2}{"DC}
+\stix@MathSymbol{\shortrightarrowleftarrow} {\mathrel}{arrows2}{"DD}
+\stix@MathSymbol{\rightarrowplus}           {\mathrel}{arrows2}{"DE}
+\stix@MathSymbol{\leftarrowplus}            {\mathrel}{arrows2}{"DF}
+
+\stix@MathSymbol{\rightarrowx}              {\mathrel}{arrows2}{"E0}
+\stix@MathSymbol{\leftrightarrowcircle}     {\mathrel}{arrows2}{"E1}
+\stix@MathSymbol{\twoheaduparrowcircle}     {\mathrel}{arrows2}{"E2}
+\stix@MathSymbol{\leftrightharpoonupdown}   {\mathrel}{arrows2}{"E3}
+\stix@MathSymbol{\leftrightharpoondownup}   {\mathrel}{arrows2}{"E4}
+\stix@MathSymbol{\updownharpoonrightleft}   {\mathrel}{arrows2}{"E5}
+\stix@MathSymbol{\updownharpoonleftright}   {\mathrel}{arrows2}{"E6}
+\stix@MathSymbol{\leftrightharpoonupup}     {\mathrel}{arrows2}{"E7}
+\stix@MathSymbol{\updownharpoonrightright}  {\mathrel}{arrows2}{"E8}
+\stix@MathSymbol{\leftrightharpoondowndown} {\mathrel}{arrows2}{"E9}
+\stix@MathSymbol{\updownharpoonleftleft}    {\mathrel}{arrows2}{"EA}
+\stix@MathSymbol{\barleftharpoonup}         {\mathrel}{arrows2}{"EB}
+\stix@MathSymbol{\rightharpoonupbar}        {\mathrel}{arrows2}{"EC}
+\stix@MathSymbol{\barupharpoonright}        {\mathrel}{arrows2}{"ED}
+\stix@MathSymbol{\downharpoonrightbar}      {\mathrel}{arrows2}{"EE}
+\stix@MathSymbol{\barleftharpoondown}       {\mathrel}{arrows2}{"EF}
+
+\stix@MathSymbol{\rightharpoondownbar}      {\mathrel}{arrows2}{"F0}
+\stix@MathSymbol{\barupharpoonleft}         {\mathrel}{arrows2}{"F1}
+\stix@MathSymbol{\downharpoonleftbar}       {\mathrel}{arrows2}{"F2}
+\stix@MathSymbol{\leftharpoonupbar}         {\mathrel}{arrows2}{"F3}
+\stix@MathSymbol{\barrightharpoonup}        {\mathrel}{arrows2}{"F4}
+\stix@MathSymbol{\upharpoonrightbar}        {\mathrel}{arrows2}{"F5}
+\stix@MathSymbol{\bardownharpoonright}      {\mathrel}{arrows2}{"F6}
+\stix@MathSymbol{\leftharpoondownbar}       {\mathrel}{arrows2}{"F7}
+\stix@MathSymbol{\barrightharpoondown}      {\mathrel}{arrows2}{"F8}
+\stix@MathSymbol{\upharpoonleftbar}         {\mathrel}{arrows2}{"F9}
+\stix@MathSymbol{\bardownharpoonleft}       {\mathrel}{arrows2}{"FA}
+\stix@MathSymbol{\leftharpoonsupdown}       {\mathrel}{arrows2}{"FB}
+\stix@MathSymbol{\upharpoonsleftright}      {\mathrel}{arrows2}{"FC}
+\stix@MathSymbol{\rightharpoonsupdown}      {\mathrel}{arrows2}{"FD}
+\stix@MathSymbol{\downharpoonsleftright}    {\mathrel}{arrows2}{"FE}
+\stix@MathSymbol{\leftrightharpoonsup}      {\mathrel}{arrows2}{"FF}
+
+\stix@MathSymbol{\cwgapcirclearrow}         {\mathrel}{arrows3}{"00}
+\stix@MathSymbol{\rightarrowonoplus}        {\mathrel}{arrows3}{"01}
+\stix@MathSymbol{\longleftarrow}            {\mathrel}{arrows3}{"02}
+\stix@MathSymbol{\longrightarrow}           {\mathrel}{arrows3}{"03}
+\stix@MathSymbol{\longleftrightarrow}       {\mathrel}{arrows3}{"04}
+\stix@MathSymbol{\Longleftarrow}            {\mathrel}{arrows3}{"05}
+\stix@MathSymbol{\Longrightarrow}           {\mathrel}{arrows3}{"06}
+\stix@MathSymbol{\Longleftrightarrow}       {\mathrel}{arrows3}{"07}
+\stix@MathSymbol{\longmapsfrom}             {\mathrel}{arrows3}{"08}
+\stix@MathSymbol{\longmapsto}               {\mathrel}{arrows3}{"09}
+\stix@MathSymbol{\Longmapsfrom}             {\mathrel}{arrows3}{"0A}
+\stix@MathSymbol{\Longmapsto}               {\mathrel}{arrows3}{"0B}
+\stix@MathSymbol{\longrightsquigarrow}      {\mathrel}{arrows3}{"0C}
+\stix@MathSymbol{\acwgapcirclearrow}        {\mathrel}{arrows3}{"0D}
+\stix@MathSymbol{\bsimilarrightarrow}       {\mathrel}{arrows3}{"0E}
+\stix@MathSymbol{\spadesuit}                {\mathord}{arrows3}{"0F}
+
+\stix@MathSymbol{\heartsuit}                {\mathord}{arrows3}{"10}
+\stix@MathSymbol{\diamondsuit}              {\mathord}{arrows3}{"11}
+\stix@MathSymbol{\clubsuit}                 {\mathord}{arrows3}{"12}
+\stix@MathSymbol{\mathparagraph}            {\mathord}{arrows3}{"13}
+\stix@MathSymbol{\mathsection}              {\mathord}{arrows3}{"14}
+\stix@MathSymbol{\leftrightharpoonsdown}    {\mathrel}{arrows3}{"15}
+\stix@MathSymbol{\rightleftharpoonsup}      {\mathrel}{arrows3}{"16}
+\stix@MathSymbol{\rightleftharpoonsdown}    {\mathrel}{arrows3}{"17}
+\stix@MathSymbol{\leftharpoonupdash}        {\mathrel}{arrows3}{"18}
+\stix@MathSymbol{\dashleftharpoondown}      {\mathrel}{arrows3}{"19}
+\stix@MathSymbol{\rightharpoonupdash}       {\mathrel}{arrows3}{"1A}
+\stix@MathSymbol{\dashrightharpoondown}     {\mathrel}{arrows3}{"1B}
+\stix@MathSymbol{\updownharpoonsleftright}  {\mathrel}{arrows3}{"1C}
+\stix@MathSymbol{\downupharpoonsleftright}  {\mathrel}{arrows3}{"1D}
+\stix@MathSymbol{\rightimply}               {\mathrel}{arrows3}{"1E}
+\stix@MathSymbol{\equalrightarrow}          {\mathrel}{arrows3}{"1F}
+
+\stix@MathSymbol{\similarrightarrow}        {\mathrel}{arrows3}{"20}
+\stix@MathSymbol{\leftarrowsimilar}         {\mathrel}{arrows3}{"21}
+\stix@MathSymbol{\rightarrowsimilar}        {\mathrel}{arrows3}{"22}
+\stix@MathSymbol{\rightarrowapprox}         {\mathrel}{arrows3}{"23}
+\stix@MathSymbol{\ltlarr}                   {\mathrel}{arrows3}{"24}
+\stix@MathSymbol{\leftarrowless}            {\mathrel}{arrows3}{"25}
+\stix@MathSymbol{\gtrarr}                   {\mathrel}{arrows3}{"26}
+\stix@MathSymbol{\subrarr}                  {\mathrel}{arrows3}{"27}
+\stix@MathSymbol{\leftarrowsubset}          {\mathrel}{arrows3}{"28}
+\stix@MathSymbol{\suplarr}                  {\mathrel}{arrows3}{"29}
+\stix@MathSymbol{\leftfishtail}             {\mathrel}{arrows3}{"2A}
+\stix@MathSymbol{\rightfishtail}            {\mathrel}{arrows3}{"2B}
+\stix@MathSymbol{\upfishtail}               {\mathrel}{arrows3}{"2C}
+\stix@MathSymbol{\downfishtail}             {\mathrel}{arrows3}{"2D}
+\stix@MathSymbol{\varclubsuit}              {\mathord}{arrows3}{"2E}
+\stix@MathSymbol{\quarternote}              {\mathord}{arrows3}{"2F}
+
+\stix@MathSymbol{\eighthnote}               {\mathord}{arrows3}{"3A}
+\stix@MathSymbol{\twonotes}                 {\mathord}{arrows3}{"3B}
+\stix@MathSymbol{\dicei}                    {\mathord}{arrows3}{"3C}
+\stix@MathSymbol{\diceii}                   {\mathord}{arrows3}{"3D}
+\stix@MathSymbol{\diceiii}                  {\mathord}{arrows3}{"3E}
+\stix@MathSymbol{\diceiv}                   {\mathord}{arrows3}{"3F}
+\stix@MathSymbol{\dicev}                    {\mathord}{arrows3}{"40}
+
+\stix@MathSymbol{\dicevi}                   {\mathord}{arrows3}{"5B}
+\stix@MathSymbol{\circledrightdot}          {\mathord}{arrows3}{"5C}
+\stix@MathSymbol{\circledtwodots}           {\mathord}{arrows3}{"5D}
+\stix@MathSymbol{\blackcircledrightdot}     {\mathord}{arrows3}{"5E}
+\stix@MathSymbol{\blackcircledtwodots}      {\mathord}{arrows3}{"5F}
+\stix@MathSymbol{\Hermaphrodite}            {\mathord}{arrows3}{"60}
+
+\stix@MathSymbol{\mdwhtcircle}              {\mathord}{arrows3}{"7D}
+\stix@MathSymbol{\mdblkcircle}              {\mathord}{arrows3}{"7E}
+
+\stix@MathSymbol{\mdsmwhtcircle}            {\mathord}{arrows3}{"80}
+\stix@MathSymbol{\neuter}                   {\mathord}{arrows3}{"81}
+\stix@MathSymbol{\checkmarkmath}            {\mathord}{arrows3}{"82}
+%stix@MathSymbol{\maltesemath}              {\mathord}{arrows3}{"83} % moved up
+%stix@MathSymbol{\circledstar}              {\mathord}{arrows3}{"84} % moved up
+\stix@MathSymbol{\varstar}                  {\mathord}{arrows3}{"85}
+\stix@MathSymbol{\dingasterisk}             {\mathord}{arrows3}{"86}
+%
+\stix@MathSymbol{\squareulblack}            {\mathord}{arrows3}{"88}
+\stix@MathSymbol{\squarelrblack}            {\mathord}{arrows3}{"89}
+\stix@MathSymbol{\boxbar}                   {\mathbin}{arrows3}{"8A}
+\stix@MathSymbol{\trianglecdot}             {\mathord}{arrows3}{"8B}
+\stix@MathSymbol{\triangleleftblack}        {\mathord}{arrows3}{"8C}
+\stix@MathSymbol{\trianglerightblack}       {\mathord}{arrows3}{"8D}
+\stix@MathSymbol{\lgwhtcircle}              {\mathord}{arrows3}{"8E}
+\stix@MathSymbol{\squareulquad}             {\mathord}{arrows3}{"8F}
+
+\stix@MathSymbol{\squarellquad}             {\mathord}{arrows3}{"90}
+\stix@MathSymbol{\squarelrquad}             {\mathord}{arrows3}{"91}
+\stix@MathSymbol{\squareurquad}             {\mathord}{arrows3}{"92}
+\stix@MathSymbol{\circleulquad}             {\mathord}{arrows3}{"93}
+\stix@MathSymbol{\circlellquad}             {\mathord}{arrows3}{"94}
+\stix@MathSymbol{\circlelrquad}             {\mathord}{arrows3}{"95}
+\stix@MathSymbol{\circleurquad}             {\mathord}{arrows3}{"96}
+\stix@MathSymbol{\ultriangle}               {\mathord}{arrows3}{"97}
+\stix@MathSymbol{\urtriangle}               {\mathord}{arrows3}{"98}
+\stix@MathSymbol{\lltriangle}               {\mathord}{arrows3}{"99}
+\stix@MathSymbol{\mdwhtsquare}              {\mathord}{arrows3}{"9A}
+\stix@MathSymbol{\mdblksquare}              {\mathord}{arrows3}{"9B}
+\stix@MathSymbol{\mdsmwhtsquare}            {\mathord}{arrows3}{"9C}
+\stix@MathSymbol{\mdsmblksquare}            {\mathord}{arrows3}{"9D}
+\stix@MathSymbol{\lrtriangle}               {\mathord}{arrows3}{"9E}
+\stix@MathSymbol{\bigstar}                  {\mathord}{arrows3}{"9F}
+
+\stix@MathSymbol{\bigwhitestar}             {\mathord}{arrows3}{"A0}
+\stix@MathSymbol{\dottimes}                 {\mathbin}{arrows3}{"A1}
+\stix@MathSymbol{\timesbar}                 {\mathbin}{arrows3}{"A2}
+\stix@MathSymbol{\btimes}                   {\mathbin}{arrows3}{"A3}
+\stix@MathSymbol{\smashtimes}               {\mathbin}{arrows3}{"A4}
+\stix@MathSymbol{\otimeslhrim}              {\mathbin}{arrows3}{"A5}
+\stix@MathSymbol{\otimesrhrim}              {\mathbin}{arrows3}{"A6}
+\stix@MathSymbol{\otimeshat}                {\mathbin}{arrows3}{"A7}
+\stix@MathSymbol{\Otimes}                   {\mathbin}{arrows3}{"A8}
+\stix@MathSymbol{\odiv}                     {\mathbin}{arrows3}{"A9}
+\stix@MathSymbol{\triangleplus}             {\mathbin}{arrows3}{"AA}
+\stix@MathSymbol{\triangleminus}            {\mathbin}{arrows3}{"AB}
+\stix@MathSymbol{\triangletimes}            {\mathbin}{arrows3}{"AC}
+\stix@MathSymbol{\intprod}                  {\mathbin}{arrows3}{"AD}
+\stix@MathSymbol{\intprodr}                 {\mathbin}{arrows3}{"AE}
+\stix@MathSymbol{\fcmp}                     {\mathbin}{arrows3}{"AF}
+
+\stix@MathSymbol{\amalg}                    {\mathbin}{arrows3}{"B0}
+\stix@MathSymbol{\capdot}                   {\mathbin}{arrows3}{"B1}
+\stix@MathSymbol{\uminus}                   {\mathbin}{arrows3}{"B2}
+\stix@MathSymbol{\barcup}                   {\mathbin}{arrows3}{"B3}
+\stix@MathSymbol{\barcap}                   {\mathbin}{arrows3}{"B4}
+\stix@MathSymbol{\capwedge}                 {\mathbin}{arrows3}{"B5}
+\stix@MathSymbol{\cupvee}                   {\mathbin}{arrows3}{"B6}
+\stix@MathSymbol{\cupovercap}               {\mathbin}{arrows3}{"B7}
+\stix@MathSymbol{\capovercup}               {\mathbin}{arrows3}{"B8}
+\stix@MathSymbol{\cupbarcap}                {\mathbin}{arrows3}{"B9}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\neg}                      {\mathord}{operators}{"9B} \let\lnot=\neg
+\stix@MathSymbol{\cdotp}                    {\mathbin}{operators}{"9C} \let\centerdot=\cdotp
+\stix@MathSymbol{\times}                    {\mathbin}{operators}{"9D}
+\stix@MathSymbol{\preceq}                   {\mathrel}{operators}{"9E}
+\stix@MathSymbol{\div}                      {\mathbin}{operators}{"9F}
+
+\stix@MathSymbol{\Zbar}                     {\mathord}{operators}{"A0}
+\stix@MathSymbol{\notchar}                  {\mathrel}{operators}{"A1}
+\stix@MathSymbol{\upbackepsilon}            {\mathord}{operators}{"A2}
+\stix@MathSymbol{\dagger}                   {\mathbin}{operators}{"A3}
+\stix@MathSymbol{\ddagger}                  {\mathbin}{operators}{"A4}
+\stix@MathSymbol{\smblkcircle}              {\mathbin}{operators}{"A5}
+\stix@MathSymbol{\enleadertwodots}          {\mathord}{operators}{"A6}
+\stix@MathSymbol{\unicodeellipsis}          {\mathord}{operators}{"A7} \def\mathellipsis{\mathinner{\unicodeellipsis}}
+\stix@MathSymbol{\prime}                    {\mathord}{operators}{"A8}
+\stix@MathSymbol{\dprime}                   {\mathord}{operators}{"A9}
+\stix@MathSymbol{\trprime}                  {\mathord}{operators}{"AA}
+\stix@MathSymbol{\backprime}                {\mathord}{operators}{"AB}
+\stix@MathSymbol{\backdprime}               {\mathord}{operators}{"AC}
+\stix@MathSymbol{\backtrprime}              {\mathord}{operators}{"AD}
+\stix@MathSymbol{\caretinsert}              {\mathord}{operators}{"AE}
+\stix@MathSymbol{\Exclam}                   {\mathord}{operators}{"AF}
+
+\stix@MathSymbol{\hyphenbullet}             {\mathord}{operators}{"B0}
+\stix@MathSymbol{\fracslash}                {\mathbin}{operators}{"B1}
+\stix@MathSymbol{\Question}                 {\mathord}{operators}{"B2}
+\stix@MathSymbol{\closure}                  {\mathrel}{operators}{"B3}
+\stix@MathSymbol{\qprime}                   {\mathord}{operators}{"B4}
+\stix@MathSymbol{\vertoverlay}              {\mathrel}{operators}{"B5}
+\stix@MathSymbol{\enclosecircle}            {\mathord}{operators}{"B6}
+\stix@MathSymbol{\enclosesquare}            {\mathord}{operators}{"B7}
+\stix@MathSymbol{\enclosediamond}           {\mathord}{operators}{"B8}
+\stix@MathSymbol{\enclosetriangle}          {\mathord}{operators}{"B9}
+\stix@MathSymbol{\Eulerconst}               {\mathord}{operators}{"BA}
+\stix@MathSymbol{\mho}                      {\mathord}{operators}{"BB}
+\stix@MathSymbol{\turnediota}               {\mathord}{operators}{"BC}
+\stix@MathSymbol{\Angstrom}                 {\mathord}{operators}{"BD}
+\stix@MathSymbol{\Finv}                     {\mathord}{operators}{"BE}
+\stix@MathSymbol{\Game}                     {\mathord}{operators}{"BF}
+
+\stix@MathSymbol{\sansLturned}              {\mathord}{operators}{"C0}
+\stix@MathSymbol{\sansLmirrored}            {\mathord}{operators}{"C1}
+\stix@MathSymbol{\Yup}                      {\mathord}{operators}{"C2}
+\stix@MathSymbol{\PropertyLine}             {\mathord}{operators}{"C3}
+\stix@MathSymbol{\upand}                    {\mathbin}{operators}{"C4}
+\stix@MathSymbol{\forall}                   {\mathord}{operators}{"C5}
+\stix@MathSymbol{\complement}               {\mathord}{operators}{"C6}
+\stix@MathSymbol{\exists}                   {\mathord}{operators}{"C7}
+\stix@MathSymbol{\nexists}                  {\mathord}{operators}{"C8}
+\stix@MathSymbol{\varnothing}               {\mathord}{operators}{"C9}
+\stix@MathSymbol{\increment}                {\mathord}{operators}{"CA}
+\stix@MathSymbol{\in}                       {\mathrel}{operators}{"CB}
+\stix@MathSymbol{\notin}                    {\mathrel}{operators}{"CC}
+\stix@MathSymbol{\smallin}                  {\mathrel}{operators}{"CD}
+\stix@MathSymbol{\ni}                       {\mathrel}{operators}{"CE} \let\owns=\ni
+\stix@MathSymbol{\nni}                      {\mathrel}{operators}{"CF}
+
+\stix@MathSymbol{\smallni}                  {\mathrel}{operators}{"D0}
+\stix@MathSymbol{\QED}                      {\mathord}{operators}{"D1}
+\stix@MathSymbol{\dotplus}                  {\mathbin}{operators}{"D2}
+\stix@MathSymbol{\succeq}                   {\mathrel}{operators}{"D3}
+\stix@MathSymbol{\smallsetminus}            {\mathbin}{operators}{"D4}
+\stix@MathSymbol{\vysmwhtcircle}            {\mathbin}{operators}{"D5}
+\stix@MathSymbol{\vysmblkcircle}            {\mathbin}{operators}{"D6} \let\bullet=\vysmblkcircle
+\stix@MathSymbol{\propto}                   {\mathrel}{operators}{"D7}
+\stix@MathSymbol{\infty}                    {\mathord}{operators}{"D8}
+\stix@MathSymbol{\rightangle}               {\mathord}{operators}{"D9}
+\stix@MathSymbol{\angle}                    {\mathord}{operators}{"DA}
+\stix@MathSymbol{\measuredangle}            {\mathord}{operators}{"DB}
+\stix@MathSymbol{\sphericalangle}           {\mathord}{operators}{"DC}
+\stix@MathSymbol{\mid}                      {\mathrel}{operators}{"DD}
+\stix@MathSymbol{\nmid}                     {\mathrel}{operators}{"DE}
+\stix@MathSymbol{\parallel}                 {\mathrel}{operators}{"DF}
+
+\stix@MathSymbol{\nparallel}                {\mathrel}{operators}{"E0}
+\stix@MathSymbol{\wedge}                    {\mathbin}{operators}{"E1} \let\land=\wedge
+\stix@MathSymbol{\vee}                      {\mathbin}{operators}{"E2} \let\lor=\vee
+\stix@MathSymbol{\cap}                      {\mathbin}{operators}{"E3}
+\stix@MathSymbol{\cup}                      {\mathbin}{operators}{"E4}
+\stix@MathSymbol{\therefore}                {\mathord}{operators}{"E5}
+\stix@MathSymbol{\because}                  {\mathord}{operators}{"E6}
+\stix@MathSymbol{\emptyset}                 {\mathord}{operators}{"E7}
+\stix@MathSymbol{\Colon}                    {\mathrel}{operators}{"E8}
+\stix@MathSymbol{\dotminus}                 {\mathbin}{operators}{"E9}
+\stix@MathSymbol{\dashcolon}                {\mathrel}{operators}{"EA}
+\stix@MathSymbol{\dotsminusdots}            {\mathrel}{operators}{"EB}
+\stix@MathSymbol{\kernelcontraction}        {\mathrel}{operators}{"EC}
+\stix@MathSymbol{\sim}                      {\mathrel}{operators}{"ED} \stix@MathSymbol{\thicksim}{\mathrel}{bold-operators}{"ED}
+\stix@MathSymbol{\backsim}                  {\mathrel}{operators}{"EE}
+\stix@MathSymbol{\invlazys}                 {\mathbin}{operators}{"EF}
+
+\stix@MathSymbol{\sinewave}                 {\mathord}{operators}{"F0}
+\stix@MathSymbol{\wr}                       {\mathbin}{operators}{"F1}
+\stix@MathSymbol{\nsim}                     {\mathrel}{operators}{"F2}
+\stix@MathSymbol{\eqsim}                    {\mathrel}{operators}{"F3}
+\stix@MathSymbol{\simeq}                    {\mathrel}{operators}{"F4}
+\stix@MathSymbol{\nsime}                    {\mathrel}{operators}{"F5}
+\stix@MathSymbol{\cong}                     {\mathrel}{operators}{"F6}
+\stix@MathSymbol{\simneqq}                  {\mathrel}{operators}{"F7}
+\stix@MathSymbol{\ncong}                    {\mathrel}{operators}{"F8}
+\stix@MathSymbol{\approx}                   {\mathrel}{operators}{"F9} \stix@MathSymbol{\thickapprox}{\mathrel}{bold-operators}{"F9}
+\stix@MathSymbol{\napprox}                  {\mathrel}{operators}{"FA}
+\stix@MathSymbol{\approxeq}                 {\mathrel}{operators}{"FB}
+\stix@MathSymbol{\approxident}              {\mathrel}{operators}{"FC}
+\stix@MathSymbol{\backcong}                 {\mathrel}{operators}{"FD}
+\stix@MathSymbol{\asymp}                    {\mathrel}{operators}{"FE}
+\stix@MathSymbol{\Bumpeq}                   {\mathrel}{operators}{"FF}
+
+\stix@MathSymbol{\bumpeq}                   {\mathrel}{integrals}{"80}
+\stix@MathSymbol{\doteq}                    {\mathrel}{integrals}{"81}
+\stix@MathSymbol{\Doteq}                    {\mathrel}{integrals}{"82}
+        \let\doteqdot=\Doteq
+\stix@MathSymbol{\fallingdotseq}            {\mathrel}{integrals}{"83}
+\stix@MathSymbol{\risingdotseq}             {\mathrel}{integrals}{"84}
+\stix@MathSymbol{\coloneq}                  {\mathrel}{integrals}{"85}
+\stix@MathSymbol{\eqcolon}                  {\mathrel}{integrals}{"86}
+\stix@MathSymbol{\eqcirc}                   {\mathrel}{integrals}{"87}
+\stix@MathSymbol{\circeq}                   {\mathrel}{integrals}{"88}
+\stix@MathSymbol{\arceq}                    {\mathrel}{integrals}{"89}
+\stix@MathSymbol{\wedgeq}                   {\mathrel}{integrals}{"8A}
+\stix@MathSymbol{\veeeq}                    {\mathrel}{integrals}{"8B}
+\stix@MathSymbol{\stareq}                   {\mathrel}{integrals}{"8C}
+\stix@MathSymbol{\triangleq}                {\mathrel}{integrals}{"8D}
+\stix@MathSymbol{\eqdef}                    {\mathrel}{integrals}{"8E}
+\stix@MathSymbol{\measeq}                   {\mathrel}{integrals}{"8F}
+\stix@MathSymbol{\questeq}                  {\mathrel}{integrals}{"90}
+\stix@MathSymbol{\ne}                       {\mathrel}{integrals}{"91}
+        \let\neq=\ne
+\stix@MathSymbol{\equiv}                    {\mathrel}{integrals}{"92}
+\stix@MathSymbol{\nequiv}                   {\mathrel}{integrals}{"93}
+\stix@MathSymbol{\Equiv}                    {\mathrel}{integrals}{"65}
+\stix@MathSymbol{\leq}                      {\mathrel}{integrals}{"66}
+        \let\le=\leq
+\stix@MathSymbol{\geq}                      {\mathrel}{integrals}{"67}
+        \let\ge=\geq
+\stix@MathSymbol{\leqq}                     {\mathrel}{integrals}{"68}
+\stix@MathSymbol{\geqq}                     {\mathrel}{integrals}{"69}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\lneqq}                    {\mathrel}{letters}{"40}
+\stix@MathSymbol{\gneqq}                    {\mathrel}{letters}{"7D}
+\stix@MathSymbol{\ll}                       {\mathrel}{letters}{"7E}
+\stix@MathSymbol{\gg}                       {\mathrel}{letters}{"B8}
+\stix@MathSymbol{\between}                  {\mathrel}{letters}{"B9}
+\stix@MathSymbol{\nasymp}                   {\mathrel}{letters}{"BA}
+\stix@MathSymbol{\nless}                    {\mathrel}{letters}{"BB}
+\stix@MathSymbol{\ngtr}                     {\mathrel}{letters}{"BC}
+\stix@MathSymbol{\nleq}                     {\mathrel}{letters}{"BD}
+\stix@MathSymbol{\ngeq}                     {\mathrel}{letters}{"BE}
+\stix@MathSymbol{\lesssim}                  {\mathrel}{letters}{"BF}
+\stix@MathSymbol{\gtrsim}                   {\mathrel}{letters}{"C0}
+\stix@MathSymbol{\nlesssim}                 {\mathrel}{letters}{"C1}
+\stix@MathSymbol{\ngtrsim}                  {\mathrel}{letters}{"C2}
+\stix@MathSymbol{\lessgtr}                  {\mathrel}{letters}{"C3}
+\stix@MathSymbol{\gtrless}                  {\mathrel}{letters}{"C4}
+\stix@MathSymbol{\nlessgtr}                 {\mathrel}{letters}{"C5}
+\stix@MathSymbol{\ngtrless}                 {\mathrel}{letters}{"C6}
+\stix@MathSymbol{\prec}                     {\mathrel}{letters}{"C7}
+\stix@MathSymbol{\succ}                     {\mathrel}{letters}{"C8}
+\stix@MathSymbol{\preccurlyeq}              {\mathrel}{letters}{"C9}
+\stix@MathSymbol{\succcurlyeq}              {\mathrel}{letters}{"CA}
+\stix@MathSymbol{\precsim}                  {\mathrel}{letters}{"CB}
+\stix@MathSymbol{\succsim}                  {\mathrel}{letters}{"CC}
+\stix@MathSymbol{\nprec}                    {\mathrel}{letters}{"CD}
+\stix@MathSymbol{\nsucc}                    {\mathrel}{letters}{"CE}
+\stix@MathSymbol{\subset}                   {\mathrel}{letters}{"CF}
+\stix@MathSymbol{\supset}                   {\mathrel}{letters}{"D0}
+\stix@MathSymbol{\nsubset}                  {\mathrel}{letters}{"D1}
+\stix@MathSymbol{\nsupset}                  {\mathrel}{letters}{"D2}
+\stix@MathSymbol{\subseteq}                 {\mathrel}{letters}{"D3}
+\stix@MathSymbol{\supseteq}                 {\mathrel}{letters}{"D4}
+\stix@MathSymbol{\nsubseteq}                {\mathrel}{letters}{"D5}
+\stix@MathSymbol{\nsupseteq}                {\mathrel}{letters}{"D6}
+\stix@MathSymbol{\subsetneq}                {\mathrel}{letters}{"D7}
+\stix@MathSymbol{\supsetneq}                {\mathrel}{letters}{"D8}
+\stix@MathSymbol{\cupleftarrow}             {\mathbin}{letters}{"D9}
+\stix@MathSymbol{\cupdot}                   {\mathbin}{letters}{"DA}
+\stix@MathSymbol{\uplus}                    {\mathbin}{letters}{"DB}
+\stix@MathSymbol{\sqsubset}                 {\mathrel}{letters}{"DC}
+\stix@MathSymbol{\sqsupset}                 {\mathrel}{letters}{"DD}
+\stix@MathSymbol{\sqsubseteq}               {\mathrel}{letters}{"DE}
+\stix@MathSymbol{\sqsupseteq}               {\mathrel}{letters}{"DF}
+\stix@MathSymbol{\sqcap}                    {\mathbin}{letters}{"E0}
+\stix@MathSymbol{\sqcup}                    {\mathbin}{letters}{"E1}
+\stix@MathSymbol{\oplus}                    {\mathbin}{letters}{"E2}
+\stix@MathSymbol{\ominus}                   {\mathbin}{letters}{"E3}
+\stix@MathSymbol{\otimes}                   {\mathbin}{letters}{"E4}
+\stix@MathSymbol{\oslash}                   {\mathbin}{letters}{"E5}
+\stix@MathSymbol{\odot}                     {\mathbin}{letters}{"E6}
+\stix@MathSymbol{\circledcirc}              {\mathbin}{letters}{"E7}
+\stix@MathSymbol{\circledast}               {\mathbin}{letters}{"E8}
+\stix@MathSymbol{\circledequal}             {\mathbin}{letters}{"E9}
+\stix@MathSymbol{\circleddash}              {\mathbin}{letters}{"EA}
+\stix@MathSymbol{\boxplus}                  {\mathbin}{letters}{"EB}
+\stix@MathSymbol{\boxminus}                 {\mathbin}{letters}{"EC}
+\stix@MathSymbol{\boxtimes}                 {\mathbin}{letters}{"ED}
+\stix@MathSymbol{\boxdot}                   {\mathbin}{letters}{"EE}
+\stix@MathSymbol{\vdash}                    {\mathrel}{letters}{"EF}
+\stix@MathSymbol{\dashv}                    {\mathrel}{letters}{"F0}
+\stix@MathSymbol{\top}                      {\mathord}{letters}{"F1}
+\stix@MathSymbol{\bot}                      {\mathord}{letters}{"F2}
+\stix@MathSymbol{\assert}                   {\mathrel}{letters}{"F3}
+\stix@MathSymbol{\models}                   {\mathrel}{letters}{"F4}
+\stix@MathSymbol{\vDash}                    {\mathrel}{letters}{"F5}
+\stix@MathSymbol{\Vdash}                    {\mathrel}{letters}{"F6}
+\stix@MathSymbol{\Vvdash}                   {\mathrel}{letters}{"F7}
+\stix@MathSymbol{\VDash}                    {\mathrel}{letters}{"F8}
+\stix@MathSymbol{\nvdash}                   {\mathrel}{letters}{"F9}
+\stix@MathSymbol{\nvDash}                   {\mathrel}{letters}{"FA}
+\stix@MathSymbol{\nVdash}                   {\mathrel}{letters}{"FB}
+\stix@MathSymbol{\nVDash}                   {\mathrel}{letters}{"FC}
+\stix@MathSymbol{\prurel}                   {\mathrel}{letters}{"FD}
+\stix@MathSymbol{\scurel}                   {\mathrel}{letters}{"FE}
+\stix@MathSymbol{\trianglelefteq}           {\mathrel}{letters}{"FF}
+\stix@MathSymbol{\unlhd}                    {\mathbin}{letters}{"FF}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\trianglerighteq}          {\mathrel}{symbols}{"00}
+\stix@MathSymbol{\unrhd}                    {\mathbin}{symbols}{"00}
+\stix@MathSymbol{\origof}                   {\mathrel}{symbols}{"01}
+\stix@MathSymbol{\imageof}                  {\mathrel}{symbols}{"02}
+\stix@MathSymbol{\multimap}                 {\mathrel}{symbols}{"03}
+\stix@MathSymbol{\hermitmatrix}             {\mathord}{symbols}{"04}
+\stix@MathSymbol{\intercal}                 {\mathbin}{symbols}{"05}
+\stix@MathSymbol{\veebar}                   {\mathbin}{symbols}{"06}
+\stix@MathSymbol{\barwedge}                 {\mathbin}{symbols}{"07}
+\stix@MathSymbol{\barvee}                   {\mathbin}{symbols}{"08}
+\stix@MathSymbol{\measuredrightangle}       {\mathord}{symbols}{"09}
+\stix@MathSymbol{\varlrtriangle}            {\mathord}{symbols}{"0A}
+\stix@MathSymbol{\smwhtdiamond}             {\mathbin}{symbols}{"0B}
+        \let\diamond=\smwhtdiamond
+\stix@MathSymbol{\cdot}                     {\mathbin}{symbols}{"0C}
+\stix@MathSymbol{\divideontimes}            {\mathbin}{symbols}{"0D}
+\stix@MathSymbol{\bowtie}                   {\mathrel}{symbols}{"0E}
+\stix@MathSymbol{\ltimes}                   {\mathbin}{symbols}{"0F}
+\stix@MathSymbol{\rtimes}                   {\mathbin}{symbols}{"10}
+\stix@MathSymbol{\leftthreetimes}           {\mathbin}{symbols}{"11}
+\stix@MathSymbol{\rightthreetimes}          {\mathbin}{symbols}{"12}
+\stix@MathSymbol{\backsimeq}                {\mathrel}{symbols}{"13}
+\stix@MathSymbol{\curlyvee}                 {\mathbin}{symbols}{"14}
+\stix@MathSymbol{\curlywedge}               {\mathbin}{symbols}{"15}
+\stix@MathSymbol{\Subset}                   {\mathrel}{symbols}{"16}
+\stix@MathSymbol{\Supset}                   {\mathrel}{symbols}{"17}
+\stix@MathSymbol{\Cap}                      {\mathbin}{symbols}{"18}
+        \let\doublecap=\Cap
+\stix@MathSymbol{\Cup}                      {\mathbin}{symbols}{"19}
+        \let\doublecup=\Cup
+\stix@MathSymbol{\pitchfork}                {\mathrel}{symbols}{"1A}
+\stix@MathSymbol{\equalparallel}            {\mathrel}{symbols}{"1B}
+\stix@MathSymbol{\lessdot}                  {\mathrel}{symbols}{"1C}
+\stix@MathSymbol{\gtrdot}                   {\mathrel}{symbols}{"1D}
+\stix@MathSymbol{\lll}                      {\mathrel}{symbols}{"1E}
+        \let\llless=\lll
+\stix@MathSymbol{\ggg}                      {\mathrel}{symbols}{"1F}
+        \let\gggtr=\ggg
+\stix@MathSymbol{\lesseqgtr}                {\mathrel}{symbols}{"20}
+\stix@MathSymbol{\gtreqless}                {\mathrel}{symbols}{"21}
+\stix@MathSymbol{\eqless}                   {\mathrel}{symbols}{"22}
+\stix@MathSymbol{\eqgtr}                    {\mathrel}{symbols}{"23}
+\stix@MathSymbol{\curlyeqprec}              {\mathrel}{symbols}{"24}
+\stix@MathSymbol{\curlyeqsucc}              {\mathrel}{symbols}{"25}
+\stix@MathSymbol{\npreccurlyeq}             {\mathrel}{symbols}{"26}
+\stix@MathSymbol{\nsucccurlyeq}             {\mathrel}{symbols}{"27}
+\stix@MathSymbol{\nsqsubseteq}              {\mathrel}{symbols}{"28}
+\stix@MathSymbol{\nsqsupseteq}              {\mathrel}{symbols}{"29}
+\stix@MathSymbol{\sqsubsetneq}              {\mathrel}{symbols}{"2A}
+\stix@MathSymbol{\sqsupsetneq}              {\mathrel}{symbols}{"2B}
+\stix@MathSymbol{\lnsim}                    {\mathrel}{symbols}{"2C}
+\stix@MathSymbol{\gnsim}                    {\mathrel}{symbols}{"2D}
+\stix@MathSymbol{\precnsim}                 {\mathrel}{symbols}{"2E}
+\stix@MathSymbol{\succnsim}                 {\mathrel}{symbols}{"2F}
+\stix@MathSymbol{\nvartriangleleft}         {\mathrel}{symbols}{"30}
+\stix@MathSymbol{\nvartriangleright}        {\mathrel}{symbols}{"31}
+\stix@MathSymbol{\ntrianglelefteq}          {\mathrel}{symbols}{"32}
+\stix@MathSymbol{\ntrianglerighteq}         {\mathrel}{symbols}{"33}
+\stix@MathSymbol{\vdotsmath}                {\mathrel}{symbols}{"34}
+%    \end{macrocode}
+%
+% \LaTeX's |\vdots| works in text mode as well, so should ours.
+%
+%    \begin{macrocode}
+        \DeclareRobustCommand\vdots{%
+                \ifmmode\vdotsmath\else%
+                {\usefont{LS1}{stixscr}{\f@series}{n}\char"34}%
+                \fi}
+\stix@MathSymbol{\unicodecdots}             {\mathord}{symbols}{"35} \let\@cdots=\unicodecdots \DeclareRobustCommand\cdots{\mathinner{\unicodecdots}}
+\stix@MathSymbol{\adots}                    {\mathrel}{symbols}{"36}
+\stix@MathSymbol{\ddots}                    {\mathrel}{symbols}{"37}
+\stix@MathSymbol{\disin}                    {\mathrel}{symbols}{"38}
+\stix@MathSymbol{\varisins}                 {\mathrel}{symbols}{"39}
+\stix@MathSymbol{\isins}                    {\mathrel}{symbols}{"3A}
+\stix@MathSymbol{\isindot}                  {\mathrel}{symbols}{"3B}
+\stix@MathSymbol{\varisinobar}              {\mathrel}{symbols}{"3C}
+\stix@MathSymbol{\isinobar}                 {\mathrel}{symbols}{"3D}
+\stix@MathSymbol{\isinvb}                   {\mathrel}{symbols}{"3E}
+\stix@MathSymbol{\isinE}                    {\mathrel}{symbols}{"3F}
+\stix@MathSymbol{\nisd}                     {\mathrel}{symbols}{"40}
+\stix@MathSymbol{\varnis}                   {\mathrel}{symbols}{"5B}
+\stix@MathSymbol{\nis}                      {\mathrel}{symbols}{"5C}
+\stix@MathSymbol{\varniobar}                {\mathrel}{symbols}{"5D}
+\stix@MathSymbol{\niobar}                   {\mathrel}{symbols}{"5E}
+\stix@MathSymbol{\bagmember}                {\mathrel}{symbols}{"5F}
+\stix@MathSymbol{\diameter}                 {\mathord}{symbols}{"60}
+\stix@MathSymbol{\house}                    {\mathord}{symbols}{"7E}
+
+\stix@MathSymbol{\varbarwedge}              {\mathbin}{symbols}{"99}
+\stix@MathSymbol{\vardoublebarwedge}        {\mathbin}{symbols}{"9A}
+\stix@MathSymbol{\invnot}                   {\mathord}{symbols}{"9B}
+\stix@MathSymbol{\sqlozenge}                {\mathord}{symbols}{"9C}
+\stix@MathSymbol{\profline}                 {\mathord}{symbols}{"9D}
+\stix@MathSymbol{\profsurf}                 {\mathord}{symbols}{"9E}
+\stix@MathSymbol{\viewdata}                 {\mathord}{symbols}{"9F}
+
+\stix@MathSymbol{\turnednot}                {\mathord}{symbols}{"A0}
+\stix@MathSymbol{\ulcorner}                {\mathopen}{symbols}{"A1}
+\stix@MathSymbol{\urcorner}               {\mathclose}{symbols}{"A2}
+\stix@MathSymbol{\llcorner}                {\mathopen}{symbols}{"A3}
+\stix@MathSymbol{\lrcorner}               {\mathclose}{symbols}{"A4}
+\stix@MathSymbol{\varhexagonlrbonds}        {\mathord}{symbols}{"A5}
+\stix@MathSymbol{\conictaper}               {\mathord}{symbols}{"A6}
+\stix@MathSymbol{\topbot}                   {\mathord}{symbols}{"A7}
+\stix@MathSymbol{\obar}                     {\mathbin}{symbols}{"A8}
+\stix@MathSymbol{\APLnotslash}              {\mathrel}{symbols}{"A9}
+\stix@MathSymbol{\APLnotbackslash}          {\mathord}{symbols}{"AA}
+\stix@MathSymbol{\APLboxupcaret}            {\mathord}{symbols}{"AB}
+\stix@MathSymbol{\APLboxquestion}           {\mathord}{symbols}{"AC}
+\stix@MathSymbol{\rangledownzigzagarrow}    {\mathord}{symbols}{"AD}
+\stix@MathSymbol{\hexagon}                  {\mathord}{symbols}{"AE}
+\stix@MathSymbol{\varcarriagereturn}        {\mathord}{symbols}{"AF}
+
+\stix@MathSymbol{\trapezium}                {\mathord}{symbols}{"B0}
+\stix@MathSymbol{\benzenr}                  {\mathord}{symbols}{"B1}
+\stix@MathSymbol{\strns}                    {\mathord}{symbols}{"B2}
+\stix@MathSymbol{\fltns}                    {\mathord}{symbols}{"B3}
+\stix@MathSymbol{\accurrent}                {\mathord}{symbols}{"B4}
+\stix@MathSymbol{\elinters}                 {\mathord}{symbols}{"B5}
+\stix@MathSymbol{\mathvisiblespace}         {\mathord}{symbols}{"B6}
+\stix@MathSymbol{\mdlgblksquare}            {\mathord}{symbols}{"B7} \let\blacksquare=\mdlgblksquare
+\stix@MathSymbol{\mdlgwhtsquare}            {\mathord}{symbols}{"B8} \let\square=\mdlgwhtsquare \let\Box=\mdlgwhtsquare
+\stix@MathSymbol{\squoval}                  {\mathord}{symbols}{"B9}
+\stix@MathSymbol{\blackinwhitesquare}       {\mathord}{symbols}{"BA}
+\stix@MathSymbol{\squarehfill}              {\mathord}{symbols}{"BB}
+\stix@MathSymbol{\squarevfill}              {\mathord}{symbols}{"BC}
+\stix@MathSymbol{\squarehvfill}             {\mathord}{symbols}{"BD}
+\stix@MathSymbol{\squarenwsefill}           {\mathord}{symbols}{"BE}
+\stix@MathSymbol{\squareneswfill}           {\mathord}{symbols}{"BF}
+
+\stix@MathSymbol{\squarecrossfill}          {\mathord}{symbols}{"C0}
+\stix@MathSymbol{\smblksquare}              {\mathord}{symbols}{"C1}
+\stix@MathSymbol{\smwhtsquare}              {\mathord}{symbols}{"C2}
+\stix@MathSymbol{\hrectangleblack}          {\mathord}{symbols}{"C3}
+\stix@MathSymbol{\hrectangle}               {\mathord}{symbols}{"C4}
+\stix@MathSymbol{\vrectangleblack}          {\mathord}{symbols}{"C5}
+\stix@MathSymbol{\vrectangle}               {\mathord}{symbols}{"C6}
+\stix@MathSymbol{\parallelogramblack}       {\mathord}{symbols}{"C7}
+\stix@MathSymbol{\parallelogram}            {\mathord}{symbols}{"C8}
+\stix@MathSymbol{\bigblacktriangleup}       {\mathord}{symbols}{"C9}
+\stix@MathSymbol{\bigtriangleup}            {\mathbin}{symbols}{"CA} \let\varbigtriangleup=\bigtriangleup \let\triangle=\bigtriangleup
+\stix@MathSymbol{\blacktriangle}            {\mathord}{symbols}{"CB}
+\stix@MathSymbol{\vartriangle}              {\mathrel}{symbols}{"CC}
+\stix@MathSymbol{\blacktriangleright}       {\mathord}{symbols}{"CD}
+\stix@MathSymbol{\vartriangleright}         {\mathrel}{symbols}{"CE} \stix@MathSymbol{\rhd}{\mathbin}{symbols}{"CE}
+\stix@MathSymbol{\smallblacktriangleright}  {\mathord}{symbols}{"CF}
+
+\stix@MathSymbol{\smalltriangleright}       {\mathord}{symbols}{"D0}
+\stix@MathSymbol{\blackpointerright}        {\mathord}{symbols}{"D1}
+\stix@MathSymbol{\whitepointerright}        {\mathord}{symbols}{"D2}
+\stix@MathSymbol{\bigblacktriangledown}     {\mathord}{symbols}{"D3}
+\stix@MathSymbol{\bigtriangledown}          {\mathord}{symbols}{"D4} \let\varbigtriangledown=\bigtriangledown
+\stix@MathSymbol{\blacktriangledown}        {\mathord}{symbols}{"D5}
+\stix@MathSymbol{\triangledown}             {\mathord}{symbols}{"D6}
+\stix@MathSymbol{\blacktriangleleft}        {\mathord}{symbols}{"D7}
+\stix@MathSymbol{\vartriangleleft}          {\mathrel}{symbols}{"D8} \stix@MathSymbol{\lhd}{\mathbin}{symbols}{"D8}
+\stix@MathSymbol{\smallblacktriangleleft}   {\mathord}{symbols}{"D9}
+\stix@MathSymbol{\smalltriangleleft}        {\mathord}{symbols}{"DA}
+\stix@MathSymbol{\blackpointerleft}         {\mathord}{symbols}{"DB}
+\stix@MathSymbol{\whitepointerleft}         {\mathord}{symbols}{"DC}
+\stix@MathSymbol{\mdlgblkdiamond}           {\mathord}{symbols}{"DD}
+\stix@MathSymbol{\mdlgwhtdiamond}           {\mathord}{symbols}{"DE}
+\stix@MathSymbol{\blackinwhitediamond}      {\mathord}{symbols}{"DF}
+
+\stix@MathSymbol{\fisheye}                  {\mathord}{symbols}{"E0}
+\stix@MathSymbol{\mdlgwhtlozenge}           {\mathord}{symbols}{"E1} \let\lozenge=\mdlgwhtlozenge \let\Diamond=\mdlgwhtlozenge
+\stix@MathSymbol{\mdlgwhtcircle}            {\mathbin}{symbols}{"E2} \let\bigcirc=\mdlgwhtcircle
+\stix@MathSymbol{\dottedcircle}             {\mathord}{symbols}{"E3}
+\stix@MathSymbol{\circlevertfill}           {\mathord}{symbols}{"E4}
+\stix@MathSymbol{\bullseye}                 {\mathord}{symbols}{"E5}
+\stix@MathSymbol{\mdlgblkcircle}            {\mathord}{symbols}{"E6}
+\stix@MathSymbol{\circlelefthalfblack}      {\mathord}{symbols}{"E7}
+\stix@MathSymbol{\circlerighthalfblack}     {\mathord}{symbols}{"E8}
+\stix@MathSymbol{\circlebottomhalfblack}    {\mathord}{symbols}{"E9}
+\stix@MathSymbol{\circletophalfblack}       {\mathord}{symbols}{"EA}
+\stix@MathSymbol{\circleurquadblack}        {\mathord}{symbols}{"EB}
+\stix@MathSymbol{\blackcircleulquadwhite}   {\mathord}{symbols}{"EC}
+\stix@MathSymbol{\blacklefthalfcircle}      {\mathord}{symbols}{"ED}
+\stix@MathSymbol{\blackrighthalfcircle}     {\mathord}{symbols}{"EE}
+\stix@MathSymbol{\inversebullet}            {\mathord}{symbols}{"EF}
+
+\stix@MathSymbol{\inversewhitecircle}       {\mathord}{symbols}{"F0}
+\stix@MathSymbol{\invwhiteupperhalfcircle}  {\mathord}{symbols}{"F1}
+\stix@MathSymbol{\invwhitelowerhalfcircle}  {\mathord}{symbols}{"F2}
+\stix@MathSymbol{\ularc}                    {\mathord}{symbols}{"F3}
+\stix@MathSymbol{\urarc}                    {\mathord}{symbols}{"F4}
+\stix@MathSymbol{\lrarc}                    {\mathord}{symbols}{"F5}
+\stix@MathSymbol{\llarc}                    {\mathord}{symbols}{"F6}
+\stix@MathSymbol{\topsemicircle}            {\mathord}{symbols}{"F7}
+\stix@MathSymbol{\botsemicircle}            {\mathord}{symbols}{"F8}
+\stix@MathSymbol{\lrblacktriangle}          {\mathord}{symbols}{"F9}
+\stix@MathSymbol{\llblacktriangle}          {\mathord}{symbols}{"FA}
+\stix@MathSymbol{\ulblacktriangle}          {\mathord}{symbols}{"FB}
+\stix@MathSymbol{\urblacktriangle}          {\mathord}{symbols}{"FC}
+\stix@MathSymbol{\smwhtcircle}              {\mathord}{symbols}{"FD} \let\circ=\smwhtcircle
+\stix@MathSymbol{\squareleftblack}          {\mathord}{symbols}{"FE}
+\stix@MathSymbol{\squarerightblack}         {\mathord}{symbols}{"FF}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\acidfree}                 {\mathord}  {symbols2}{"00}
+\stix@MathSymbol{\draftingarrow}            {\mathord}  {symbols2}{"01}
+\stix@MathSymbol{\threedangle}              {\mathord}  {symbols2}{"02}
+\stix@MathSymbol{\whiteinwhitetriangle}     {\mathord}  {symbols2}{"03}
+\stix@MathSymbol{\perp}                     {\mathrel}  {symbols2}{"04}
+\stix@MathSymbol{\subsetcirc}               {\mathord}  {symbols2}{"05}
+\stix@MathSymbol{\supsetcirc}               {\mathord}  {symbols2}{"06}
+\stix@MathSymbol{\lbag}                     {\mathopen} {symbols2}{"07}
+\stix@MathSymbol{\rbag}                     {\mathclose}{symbols2}{"08}
+\stix@MathSymbol{\veedot}                   {\mathbin}  {symbols2}{"09}
+\stix@MathSymbol{\bsolhsub}                 {\mathrel}  {symbols2}{"0A}
+\stix@MathSymbol{\suphsol}                  {\mathrel}  {symbols2}{"0B}
+\stix@MathSymbol{\diamondcdot}              {\mathord}  {symbols2}{"0C}
+\stix@MathSymbol{\wedgedot}                 {\mathbin}  {symbols2}{"0D}
+\stix@MathSymbol{\upin}                     {\mathrel}  {symbols2}{"0E}
+\stix@MathSymbol{\pullback}                 {\mathrel}  {symbols2}{"0F}
+\stix@MathSymbol{\pushout}                  {\mathrel}  {symbols2}{"10}
+\stix@MathSymbol{\leftouterjoin}            {\mathop}   {symbols2}{"11}
+\stix@MathSymbol{\rightouterjoin}           {\mathop}   {symbols2}{"12}
+\stix@MathSymbol{\fullouterjoin}            {\mathop}   {symbols2}{"13}
+\stix@MathSymbol{\bigbot}                   {\mathop}   {symbols2}{"14}
+\stix@MathSymbol{\bigtop}                   {\mathop}   {symbols2}{"15}
+\stix@MathSymbol{\DashVDash}                {\mathrel}  {symbols2}{"16}
+\stix@MathSymbol{\dashVdash}                {\mathrel}  {symbols2}{"17}
+\stix@MathSymbol{\multimapinv}              {\mathrel}  {symbols2}{"18}
+\stix@MathSymbol{\vlongdash}                {\mathrel}  {symbols2}{"19}
+\stix@MathSymbol{\longdashv}                {\mathrel}  {symbols2}{"1A}
+\stix@MathSymbol{\cirbot}                   {\mathrel}  {symbols2}{"1B}
+\stix@MathSymbol{\lozengeminus}             {\mathbin}  {symbols2}{"1C}
+\stix@MathSymbol{\concavediamond}           {\mathbin}  {symbols2}{"1D}
+\stix@MathSymbol{\concavediamondtickleft}   {\mathbin}  {symbols2}{"1E}
+\stix@MathSymbol{\concavediamondtickright}  {\mathbin}  {symbols2}{"1F}
+\stix@MathSymbol{\whitesquaretickleft}      {\mathbin}  {symbols2}{"20}
+\stix@MathSymbol{\whitesquaretickright}     {\mathbin}  {symbols2}{"21}
+\stix@MathSymbol{\Lbrbrak}                  {\mathopen} {symbols2}{"22}
+\stix@MathSymbol{\Rbrbrak}                  {\mathclose}{symbols2}{"23}
+\stix@MathSymbol{\mdsmblkcircle}            {\mathord}  {symbols2}{"24}
+\stix@MathSymbol{\typecolon}                {\mathbin}  {symbols2}{"25}
+\stix@MathSymbol{\llparenthesis}            {\mathopen} {symbols2}{"26}
+\stix@MathSymbol{\rrparenthesis}            {\mathclose}{symbols2}{"27}
+\stix@MathSymbol{\llangle}                  {\mathopen} {symbols2}{"28}
+\stix@MathSymbol{\rrangle}                  {\mathclose}{symbols2}{"29}
+\stix@MathSymbol{\lbrackubar}               {\mathopen} {symbols2}{"2A}
+\stix@MathSymbol{\rbrackubar}               {\mathclose}{symbols2}{"2B}
+\stix@MathSymbol{\lbrackultick}             {\mathopen} {symbols2}{"2C}
+\stix@MathSymbol{\rbracklrtick}             {\mathclose}{symbols2}{"2D}
+\stix@MathSymbol{\lbracklltick}             {\mathopen} {symbols2}{"2E}
+\stix@MathSymbol{\rbrackurtick}             {\mathclose}{symbols2}{"2F}
+\stix@MathSymbol{\langledot}                {\mathopen} {symbols2}{"30}
+\stix@MathSymbol{\rangledot}                {\mathclose}{symbols2}{"31}
+\stix@MathSymbol{\lparenless}               {\mathopen} {symbols2}{"32}
+\stix@MathSymbol{\rparengtr}                {\mathclose}{symbols2}{"33}
+\stix@MathSymbol{\Lparengtr}                {\mathopen} {symbols2}{"34}
+\stix@MathSymbol{\Rparenless}               {\mathclose}{symbols2}{"35}
+\stix@MathSymbol{\lblkbrbrak}               {\mathopen} {symbols2}{"36}
+\stix@MathSymbol{\rblkbrbrak}               {\mathclose}{symbols2}{"37}
+\stix@MathSymbol{\fourvdots}                {\mathord}  {symbols2}{"38}
+\stix@MathSymbol{\vzigzag}                  {\mathord}  {symbols2}{"39}
+\stix@MathSymbol{\measuredangleleft}        {\mathord}  {symbols2}{"3A}
+\stix@MathSymbol{\rightanglesqr}            {\mathord}  {symbols2}{"3B}
+\stix@MathSymbol{\rightanglemdot}           {\mathord}  {symbols2}{"3C}
+\stix@MathSymbol{\angles}                   {\mathord}  {symbols2}{"3D}
+\stix@MathSymbol{\angdnr}                   {\mathord}  {symbols2}{"3E}
+\stix@MathSymbol{\gtlpar}                   {\mathord}  {symbols2}{"3F}
+\stix@MathSymbol{\sphericalangleup}         {\mathord}  {symbols2}{"40}
+\stix@MathSymbol{\turnangle}                {\mathord}  {symbols2}{"5B}
+\stix@MathSymbol{\revangle}                 {\mathord}  {symbols2}{"5C}
+\stix@MathSymbol{\angleubar}                {\mathord}  {symbols2}{"5D}
+\stix@MathSymbol{\revangleubar}             {\mathord}  {symbols2}{"5E}
+\stix@MathSymbol{\wideangledown}            {\mathord}  {symbols2}{"5F}
+\stix@MathSymbol{\wideangleup}              {\mathord}  {symbols2}{"60}
+\stix@MathSymbol{\measanglerutone}          {\mathord}  {symbols2}{"7D}
+\stix@MathSymbol{\measanglelutonw}          {\mathord}  {symbols2}{"7E}
+
+\stix@MathSymbol{\measanglerdtose}          {\mathord}  {symbols2}{"99}
+\stix@MathSymbol{\measangleldtosw}          {\mathord}  {symbols2}{"9A}
+\stix@MathSymbol{\measangleurtone}          {\mathord}  {symbols2}{"9B}
+\stix@MathSymbol{\measangleultonw}          {\mathord}  {symbols2}{"9C}
+\stix@MathSymbol{\measangledrtose}          {\mathord}  {symbols2}{"9D}
+\stix@MathSymbol{\measangledltosw}          {\mathord}  {symbols2}{"9E}
+\stix@MathSymbol{\revemptyset}              {\mathord}  {symbols2}{"9F}
+
+\stix@MathSymbol{\emptysetobar}             {\mathord}  {symbols2}{"A0}
+\stix@MathSymbol{\emptysetocirc}            {\mathord}  {symbols2}{"A1}
+\stix@MathSymbol{\emptysetoarr}             {\mathord}  {symbols2}{"A2}
+\stix@MathSymbol{\emptysetoarrl}            {\mathord}  {symbols2}{"A3}
+\stix@MathSymbol{\circlehbar}               {\mathbin}  {symbols2}{"A4}
+\stix@MathSymbol{\circledvert}              {\mathbin}  {symbols2}{"A5}
+\stix@MathSymbol{\circledparallel}          {\mathbin}  {symbols2}{"A6}
+\stix@MathSymbol{\obslash}                  {\mathbin}  {symbols2}{"A7}
+\stix@MathSymbol{\operp}                    {\mathbin}  {symbols2}{"A8}
+\stix@MathSymbol{\obot}                     {\mathord}  {symbols2}{"A9}
+\stix@MathSymbol{\olcross}                  {\mathord}  {symbols2}{"AA}
+\stix@MathSymbol{\odotslashdot}             {\mathord}  {symbols2}{"AB}
+\stix@MathSymbol{\uparrowoncircle}          {\mathord}  {symbols2}{"AC}
+\stix@MathSymbol{\circledwhitebullet}       {\mathord}  {symbols2}{"AD}
+\stix@MathSymbol{\circledbullet}            {\mathord}  {symbols2}{"AE}
+\stix@MathSymbol{\olessthan}                {\mathbin}  {symbols2}{"AF}
+
+\stix@MathSymbol{\ogreaterthan}             {\mathbin}  {symbols2}{"B0}
+\stix@MathSymbol{\cirscir}                  {\mathord}  {symbols2}{"B1}
+\stix@MathSymbol{\cirE}                     {\mathord}  {symbols2}{"B2}
+\stix@MathSymbol{\boxdiag}                  {\mathbin}  {symbols2}{"B3}
+\stix@MathSymbol{\boxbslash}                {\mathbin}  {symbols2}{"B4}
+\stix@MathSymbol{\boxast}                   {\mathbin}  {symbols2}{"B5}
+\stix@MathSymbol{\boxcircle}                {\mathbin}  {symbols2}{"B6}
+\stix@MathSymbol{\boxbox}                   {\mathbin}  {symbols2}{"B7}
+\stix@MathSymbol{\boxonbox}                 {\mathord}  {symbols2}{"B8}
+\stix@MathSymbol{\triangleodot}             {\mathord}  {symbols2}{"B9}
+\stix@MathSymbol{\triangleubar}             {\mathord}  {symbols2}{"BA}
+\stix@MathSymbol{\triangles}                {\mathord}  {symbols2}{"BB}
+\stix@MathSymbol{\triangleserifs}           {\mathbin}  {symbols2}{"BC}
+\stix@MathSymbol{\rtriltri}                 {\mathrel}  {symbols2}{"BD}
+\stix@MathSymbol{\ltrivb}                   {\mathrel}  {symbols2}{"BE}
+\stix@MathSymbol{\vbrtri}                   {\mathrel}  {symbols2}{"BF}
+
+\stix@MathSymbol{\lfbowtie}                 {\mathrel}  {symbols2}{"C0}
+\stix@MathSymbol{\rfbowtie}                 {\mathrel}  {symbols2}{"C1}
+\stix@MathSymbol{\fbowtie}                  {\mathrel}  {symbols2}{"C2}
+\stix@MathSymbol{\lftimes}                  {\mathrel}  {symbols2}{"C3}
+\stix@MathSymbol{\rftimes}                  {\mathrel}  {symbols2}{"C4}
+\stix@MathSymbol{\hourglass}                {\mathbin}  {symbols2}{"C5}
+\stix@MathSymbol{\blackhourglass}           {\mathbin}  {symbols2}{"C6}
+\stix@MathSymbol{\lvzigzag}                 {\mathopen} {symbols2}{"C7}
+\stix@MathSymbol{\rvzigzag}                 {\mathclose}{symbols2}{"C8}
+\stix@MathSymbol{\Lvzigzag}                 {\mathopen} {symbols2}{"C9}
+\stix@MathSymbol{\Rvzigzag}                 {\mathclose}{symbols2}{"CA}
+\stix@MathSymbol{\iinfin}                   {\mathord}  {symbols2}{"CB}
+\stix@MathSymbol{\tieinfty}                 {\mathord}  {symbols2}{"CC}
+\stix@MathSymbol{\nvinfty}                  {\mathord}  {symbols2}{"CD}
+\stix@MathSymbol{\dualmap}                  {\mathrel}  {symbols2}{"CE}
+\stix@MathSymbol{\laplac}                   {\mathord}  {symbols2}{"CF}
+
+\stix@MathSymbol{\lrtriangleeq}             {\mathrel}  {symbols2}{"D0}
+\stix@MathSymbol{\shuffle}                  {\mathbin}  {symbols2}{"D1}
+\stix@MathSymbol{\eparsl}                   {\mathrel}  {symbols2}{"D2}
+\stix@MathSymbol{\smeparsl}                 {\mathrel}  {symbols2}{"D3}
+\stix@MathSymbol{\eqvparsl}                 {\mathrel}  {symbols2}{"D4}
+\stix@MathSymbol{\gleichstark}              {\mathrel}  {symbols2}{"D5}
+\stix@MathSymbol{\thermod}                  {\mathord}  {symbols2}{"D6}
+\stix@MathSymbol{\downtriangleleftblack}    {\mathord}  {symbols2}{"D7}
+\stix@MathSymbol{\downtrianglerightblack}   {\mathord}  {symbols2}{"D8}
+\stix@MathSymbol{\blackdiamonddownarrow}    {\mathord}  {symbols2}{"D9}
+\stix@MathSymbol{\blacklozenge}             {\mathord}  {symbols2}{"DA} \stix@MathSymbol{\mdlgblklozenge}{\mathbin}{symbols2}{"DA}
+\stix@MathSymbol{\circledownarrow}          {\mathord}  {symbols2}{"DB}
+\stix@MathSymbol{\blackcircledownarrow}     {\mathord}  {symbols2}{"DC}
+\stix@MathSymbol{\errbarsquare}             {\mathord}  {symbols2}{"DD}
+\stix@MathSymbol{\errbarblacksquare}        {\mathord}  {symbols2}{"DE}
+\stix@MathSymbol{\errbardiamond}            {\mathord}  {symbols2}{"DF}
+
+\stix@MathSymbol{\errbarblackdiamond}       {\mathord}  {symbols2}{"E0}
+\stix@MathSymbol{\errbarcircle}             {\mathord}  {symbols2}{"E1}
+\stix@MathSymbol{\errbarblackcircle}        {\mathord}  {symbols2}{"E2}
+\stix@MathSymbol{\ruledelayed}              {\mathrel}  {symbols2}{"E3}
+\stix@MathSymbol{\setminus}                 {\mathbin}  {symbols2}{"E4}
+\stix@MathSymbol{\dsol}                     {\mathbin}  {symbols2}{"E5}
+\stix@MathSymbol{\rsolbar}                  {\mathbin}  {symbols2}{"E6}
+\stix@MathSymbol{\doubleplus}               {\mathbin}  {symbols2}{"E7}
+\stix@MathSymbol{\tripleplus}               {\mathbin}  {symbols2}{"E8}
+\stix@MathSymbol{\lcurvyangle}              {\mathopen} {symbols2}{"E9}
+\stix@MathSymbol{\rcurvyangle}              {\mathclose}{symbols2}{"EA}
+\stix@MathSymbol{\tplus}                    {\mathbin}  {symbols2}{"EB}
+\stix@MathSymbol{\tminus}                   {\mathbin}  {symbols2}{"EC}
+\stix@MathSymbol{\Join}                     {\mathop}   {symbols2}{"ED}
+\stix@MathSymbol{\bigtriangleleft}          {\mathop}   {symbols2}{"EE}
+\stix@MathSymbol{\zcmp}                     {\mathop}   {symbols2}{"EF}
+
+\stix@MathSymbol{\zpipe}                    {\mathop}   {symbols2}{"F0}
+\stix@MathSymbol{\zproject}                 {\mathop}   {symbols2}{"F1}
+\stix@MathSymbol{\ringplus}                 {\mathbin}  {symbols2}{"F2}
+\stix@MathSymbol{\plushat}                  {\mathbin}  {symbols2}{"F3}
+\stix@MathSymbol{\simplus}                  {\mathbin}  {symbols2}{"F4}
+\stix@MathSymbol{\plusdot}                  {\mathbin}  {symbols2}{"F5}
+\stix@MathSymbol{\plussim}                  {\mathbin}  {symbols2}{"F6}
+\stix@MathSymbol{\plussubtwo}               {\mathbin}  {symbols2}{"F7}
+\stix@MathSymbol{\plustrif}                 {\mathbin}  {symbols2}{"F8}
+\stix@MathSymbol{\commaminus}               {\mathbin}  {symbols2}{"F9}
+\stix@MathSymbol{\minusdot}                 {\mathbin}  {symbols2}{"FA}
+\stix@MathSymbol{\minusfdots}               {\mathbin}  {symbols2}{"FB}
+\stix@MathSymbol{\minusrdots}               {\mathbin}  {symbols2}{"FC}
+\stix@MathSymbol{\opluslhrim}               {\mathbin}  {symbols2}{"FD}
+\stix@MathSymbol{\oplusrhrim}               {\mathbin}  {symbols2}{"FE}
+\stix@MathSymbol{\vectimes}                 {\mathbin}  {symbols2}{"FF}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\succneq}                  {\mathrel}{symbols3}{"26}
+\stix@MathSymbol{\preceqq}                  {\mathrel}{symbols3}{"27}
+\stix@MathSymbol{\succeqq}                  {\mathrel}{symbols3}{"28}
+\stix@MathSymbol{\precneqq}                 {\mathrel}{symbols3}{"29}
+\stix@MathSymbol{\succneqq}                 {\mathrel}{symbols3}{"2A}
+\stix@MathSymbol{\precapprox}               {\mathrel}{symbols3}{"2B}
+\stix@MathSymbol{\succapprox}               {\mathrel}{symbols3}{"2C}
+\stix@MathSymbol{\precnapprox}              {\mathrel}{symbols3}{"2D}
+\stix@MathSymbol{\succnapprox}              {\mathrel}{symbols3}{"2E}
+\stix@MathSymbol{\Prec}                     {\mathrel}{symbols3}{"2F}
+\stix@MathSymbol{\Succ}                     {\mathrel}{symbols3}{"3A}
+\stix@MathSymbol{\subsetdot}                {\mathrel}{symbols3}{"3B}
+\stix@MathSymbol{\supsetdot}                {\mathrel}{symbols3}{"3C}
+\stix@MathSymbol{\subsetplus}               {\mathrel}{symbols3}{"3D}
+\stix@MathSymbol{\supsetplus}               {\mathrel}{symbols3}{"3E}
+\stix@MathSymbol{\submult}                  {\mathrel}{symbols3}{"3F}
+\stix@MathSymbol{\supmult}                  {\mathrel}{symbols3}{"40}
+\stix@MathSymbol{\subedot}                  {\mathrel}{symbols3}{"5B}
+\stix@MathSymbol{\supedot}                  {\mathrel}{symbols3}{"5C}
+\stix@MathSymbol{\subseteqq}                {\mathrel}{symbols3}{"5D}
+\stix@MathSymbol{\supseteqq}                {\mathrel}{symbols3}{"5E}
+\stix@MathSymbol{\subsim}                   {\mathrel}{symbols3}{"5F}
+\stix@MathSymbol{\supsim}                   {\mathrel}{symbols3}{"60}
+\stix@MathSymbol{\subsetapprox}             {\mathrel}{symbols3}{"7D}
+\stix@MathSymbol{\supsetapprox}             {\mathrel}{symbols3}{"7E}
+
+\stix@MathSymbol{\Bbbk}                     {\mathord}{symbols3}{`k}
+
+\stix@MathSymbol{\capbarcup}                {\mathbin}{symbols3}{"99}
+\stix@MathSymbol{\twocups}                  {\mathbin}{symbols3}{"9A}
+\stix@MathSymbol{\twocaps}                  {\mathbin}{symbols3}{"9B}
+\stix@MathSymbol{\closedvarcup}             {\mathbin}{symbols3}{"9C}
+\stix@MathSymbol{\closedvarcap}             {\mathbin}{symbols3}{"9D}
+\stix@MathSymbol{\Sqcap}                    {\mathbin}{symbols3}{"9E}
+\stix@MathSymbol{\Sqcup}                    {\mathbin}{symbols3}{"9F}
+
+\stix@MathSymbol{\closedvarcupsmashprod}    {\mathbin}{symbols3}{"A0}
+\stix@MathSymbol{\wedgeodot}                {\mathbin}{symbols3}{"A1}
+\stix@MathSymbol{\veeodot}                  {\mathbin}{symbols3}{"A2}
+\stix@MathSymbol{\Wedge}                    {\mathbin}{symbols3}{"A3}
+\stix@MathSymbol{\Vee}                      {\mathbin}{symbols3}{"A4}
+\stix@MathSymbol{\wedgeonwedge}             {\mathbin}{symbols3}{"A5}
+\stix@MathSymbol{\veeonvee}                 {\mathbin}{symbols3}{"A6}
+\stix@MathSymbol{\bigslopedvee}             {\mathbin}{symbols3}{"A7}
+\stix@MathSymbol{\bigslopedwedge}           {\mathbin}{symbols3}{"A8}
+\stix@MathSymbol{\veeonwedge}               {\mathrel}{symbols3}{"A9}
+\stix@MathSymbol{\wedgemidvert}             {\mathbin}{symbols3}{"AA}
+\stix@MathSymbol{\veemidvert}               {\mathbin}{symbols3}{"AB}
+\stix@MathSymbol{\midbarwedge}              {\mathbin}{symbols3}{"AC}
+\stix@MathSymbol{\midbarvee}                {\mathbin}{symbols3}{"AD}
+\stix@MathSymbol{\doublebarwedge}           {\mathbin}{symbols3}{"AE}
+\stix@MathSymbol{\wedgebar}                 {\mathbin}{symbols3}{"AF}
+
+\stix@MathSymbol{\wedgedoublebar}           {\mathbin}{symbols3}{"B0}
+\stix@MathSymbol{\varveebar}                {\mathbin}{symbols3}{"B1}
+\stix@MathSymbol{\doublebarvee}             {\mathbin}{symbols3}{"B2}
+\stix@MathSymbol{\veedoublebar}             {\mathbin}{symbols3}{"B3}
+\stix@MathSymbol{\dsub}                     {\mathbin}{symbols3}{"B4}
+\stix@MathSymbol{\rsub}                     {\mathbin}{symbols3}{"B5}
+\stix@MathSymbol{\eqdot}                    {\mathrel}{symbols3}{"B6}
+\stix@MathSymbol{\dotequiv}                 {\mathrel}{symbols3}{"B7}
+\stix@MathSymbol{\equivVert}                {\mathrel}{symbols3}{"B8}
+\stix@MathSymbol{\equivVvert}               {\mathrel}{symbols3}{"B9}
+\stix@MathSymbol{\dotsim}                   {\mathrel}{symbols3}{"BA}
+\stix@MathSymbol{\simrdots}                 {\mathrel}{symbols3}{"BB}
+\stix@MathSymbol{\simminussim}              {\mathrel}{symbols3}{"BC}
+\stix@MathSymbol{\congdot}                  {\mathrel}{symbols3}{"BD}
+\stix@MathSymbol{\asteq}                    {\mathrel}{symbols3}{"BE}
+\stix@MathSymbol{\hatapprox}                {\mathrel}{symbols3}{"BF}
+
+\stix@MathSymbol{\approxeqq}                {\mathrel}{symbols3}{"C0}
+\stix@MathSymbol{\eqqplus}                  {\mathbin}{symbols3}{"C1}
+\stix@MathSymbol{\pluseqq}                  {\mathbin}{symbols3}{"C2}
+\stix@MathSymbol{\eqqsim}                   {\mathrel}{symbols3}{"C3}
+\stix@MathSymbol{\Coloneq}                  {\mathrel}{symbols3}{"C4}
+\stix@MathSymbol{\eqeq}                     {\mathrel}{symbols3}{"C5}
+\stix@MathSymbol{\eqeqeq}                   {\mathrel}{symbols3}{"C6}
+\stix@MathSymbol{\ddotseq}                  {\mathrel}{symbols3}{"C7}
+\stix@MathSymbol{\equivDD}                  {\mathrel}{symbols3}{"C8}
+\stix@MathSymbol{\ltcir}                    {\mathrel}{symbols3}{"C9}
+\stix@MathSymbol{\gtcir}                    {\mathrel}{symbols3}{"CA}
+\stix@MathSymbol{\ltquest}                  {\mathrel}{symbols3}{"CB}
+\stix@MathSymbol{\gtquest}                  {\mathrel}{symbols3}{"CC}
+\stix@MathSymbol{\leqslant}                 {\mathrel}{symbols3}{"CD}
+\stix@MathSymbol{\geqslant}                 {\mathrel}{symbols3}{"CE}
+\stix@MathSymbol{\lesdot}                   {\mathrel}{symbols3}{"CF}
+
+\stix@MathSymbol{\gesdot}                   {\mathrel}{symbols3}{"D0}
+\stix@MathSymbol{\lesdoto}                  {\mathrel}{symbols3}{"D1}
+\stix@MathSymbol{\gesdoto}                  {\mathrel}{symbols3}{"D2}
+\stix@MathSymbol{\lesdotor}                 {\mathrel}{symbols3}{"D3}
+\stix@MathSymbol{\gesdotol}                 {\mathrel}{symbols3}{"D4}
+\stix@MathSymbol{\lessapprox}               {\mathrel}{symbols3}{"D5}
+\stix@MathSymbol{\gtrapprox}                {\mathrel}{symbols3}{"D6}
+\stix@MathSymbol{\lneq}                     {\mathrel}{symbols3}{"D7}
+\stix@MathSymbol{\gneq}                     {\mathrel}{symbols3}{"D8}
+\stix@MathSymbol{\lnapprox}                 {\mathrel}{symbols3}{"D9}
+\stix@MathSymbol{\gnapprox}                 {\mathrel}{symbols3}{"DA}
+\stix@MathSymbol{\lesseqqgtr}               {\mathrel}{symbols3}{"DB}
+\stix@MathSymbol{\gtreqqless}               {\mathrel}{symbols3}{"DC}
+\stix@MathSymbol{\lsime}                    {\mathrel}{symbols3}{"DD}
+\stix@MathSymbol{\gsime}                    {\mathrel}{symbols3}{"DE}
+\stix@MathSymbol{\lsimg}                    {\mathrel}{symbols3}{"DF}
+
+\stix@MathSymbol{\gsiml}                    {\mathrel}{symbols3}{"E0}
+\stix@MathSymbol{\lgE}                      {\mathrel}{symbols3}{"E1}
+\stix@MathSymbol{\glE}                      {\mathrel}{symbols3}{"E2}
+\stix@MathSymbol{\lesges}                   {\mathrel}{symbols3}{"E3}
+\stix@MathSymbol{\gesles}                   {\mathrel}{symbols3}{"E4}
+\stix@MathSymbol{\eqslantless}              {\mathrel}{symbols3}{"E5}
+\stix@MathSymbol{\eqslantgtr}               {\mathrel}{symbols3}{"E6}
+\stix@MathSymbol{\elsdot}                   {\mathrel}{symbols3}{"E7}
+\stix@MathSymbol{\egsdot}                   {\mathrel}{symbols3}{"E8}
+\stix@MathSymbol{\eqqless}                  {\mathrel}{symbols3}{"E9}
+\stix@MathSymbol{\eqqgtr}                   {\mathrel}{symbols3}{"EA}
+\stix@MathSymbol{\eqqslantless}             {\mathrel}{symbols3}{"EB}
+\stix@MathSymbol{\eqqslantgtr}              {\mathrel}{symbols3}{"EC}
+\stix@MathSymbol{\simless}                  {\mathrel}{symbols3}{"ED}
+\stix@MathSymbol{\simgtr}                   {\mathrel}{symbols3}{"EE}
+\stix@MathSymbol{\simlE}                    {\mathrel}{symbols3}{"EF}
+
+\stix@MathSymbol{\simgE}                    {\mathrel}{symbols3}{"F0}
+\stix@MathSymbol{\Lt}                       {\mathrel}{symbols3}{"F1}
+\stix@MathSymbol{\Gt}                       {\mathrel}{symbols3}{"F2}
+\stix@MathSymbol{\partialmeetcontraction}   {\mathrel}{symbols3}{"F3}
+\stix@MathSymbol{\glj}                      {\mathrel}{symbols3}{"F4}
+\stix@MathSymbol{\gla}                      {\mathrel}{symbols3}{"F5}
+\stix@MathSymbol{\ltcc}                     {\mathrel}{symbols3}{"F6}
+\stix@MathSymbol{\gtcc}                     {\mathrel}{symbols3}{"F7}
+\stix@MathSymbol{\lescc}                    {\mathrel}{symbols3}{"F8}
+\stix@MathSymbol{\gescc}                    {\mathrel}{symbols3}{"F9}
+\stix@MathSymbol{\smt}                      {\mathrel}{symbols3}{"FA}
+\stix@MathSymbol{\lat}                      {\mathrel}{symbols3}{"FB}
+\stix@MathSymbol{\smte}                     {\mathrel}{symbols3}{"FC}
+\stix@MathSymbol{\late}                     {\mathrel}{symbols3}{"FD}
+\stix@MathSymbol{\bumpeqq}                  {\mathrel}{symbols3}{"FE}
+\stix@MathSymbol{\precneq}                  {\mathrel}{symbols3}{"FF}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\stix@MathSymbol{\ngeqq}                    {\mathrel}{symbols4}{"02}
+\stix@MathSymbol{\ngeqslant}                {\mathrel}{symbols4}{"03}
+\stix@MathSymbol{\nleqslant}                {\mathrel}{symbols4}{"04}
+\stix@MathSymbol{\nleqq}                    {\mathrel}{symbols4}{"05}
+\stix@MathSymbol{\nsubseteqq}               {\mathrel}{symbols4}{"06}
+\stix@MathSymbol{\nsupseteqq}               {\mathrel}{symbols4}{"07}
+
+\stix@MathSymbol{\mathsterling}             {\mathord}{symbols4}{"7D}
+
+\stix@MathSymbol{\ncongdot}                 {\mathrel}{symbols4}{"09}
+\stix@MathSymbol{\napproxeqq}               {\mathrel}{symbols4}{"0A}
+\stix@MathSymbol{\nll}                      {\mathrel}{symbols4}{"0B}
+\stix@MathSymbol{\ngg}                      {\mathrel}{symbols4}{"0C}
+\stix@MathSymbol{\nsqsubset}                {\mathrel}{symbols4}{"1A}
+\stix@MathSymbol{\npreceq}                  {\mathrel}{symbols4}{"16}
+\stix@MathSymbol{\nsucceq}                  {\mathrel}{symbols4}{"19}
+\stix@MathSymbol{\nsqsupset}                {\mathrel}{symbols4}{"1B}
+\stix@MathSymbol{\nBumpeq}                  {\mathrel}{symbols4}{"1C}
+\stix@MathSymbol{\nbumpeq}                  {\mathrel}{symbols4}{"1F}
+\stix@MathSymbol{\neqsim}                   {\mathrel}{symbols4}{"20}
+\stix@MathSymbol{\nvarisinobar}             {\mathrel}{symbols4}{"21}
+\stix@MathSymbol{\nvarniobar}               {\mathrel}{symbols4}{"22}
+\stix@MathSymbol{\neqslantless}             {\mathrel}{symbols4}{"25}
+\stix@MathSymbol{\neqslantgtr}              {\mathrel}{symbols4}{"26}
+
+\stix@MathSymbol{\subsetneqq}               {\mathrel}{symbols4}{"99}
+\stix@MathSymbol{\supsetneqq}               {\mathrel}{symbols4}{"9A}
+\stix@MathSymbol{\lsqhook}                  {\mathrel}{symbols4}{"9B}
+\stix@MathSymbol{\rsqhook}                  {\mathrel}{symbols4}{"9C}
+\stix@MathSymbol{\csub}                     {\mathrel}{symbols4}{"9D}
+\stix@MathSymbol{\csup}                     {\mathrel}{symbols4}{"9E}
+\stix@MathSymbol{\csube}                    {\mathrel}{symbols4}{"9F}
+
+\stix@MathSymbol{\csupe}                    {\mathrel}{symbols4}{"A0}
+\stix@MathSymbol{\subsup}                   {\mathrel}{symbols4}{"A1}
+\stix@MathSymbol{\supsub}                   {\mathrel}{symbols4}{"A2}
+\stix@MathSymbol{\subsub}                   {\mathrel}{symbols4}{"A3}
+\stix@MathSymbol{\supsup}                   {\mathrel}{symbols4}{"A4}
+\stix@MathSymbol{\suphsub}                  {\mathrel}{symbols4}{"A5}
+\stix@MathSymbol{\supdsub}                  {\mathrel}{symbols4}{"A6}
+\stix@MathSymbol{\forkv}                    {\mathrel}{symbols4}{"A7}
+\stix@MathSymbol{\topfork}                  {\mathrel}{symbols4}{"A8}
+\stix@MathSymbol{\mlcp}                     {\mathrel}{symbols4}{"A9}
+\stix@MathSymbol{\forks}                    {\mathrel}{symbols4}{"AA}
+\stix@MathSymbol{\forksnot}                 {\mathrel}{symbols4}{"AB}
+\stix@MathSymbol{\shortlefttack}            {\mathrel}{symbols4}{"AC}
+\stix@MathSymbol{\shortdowntack}            {\mathrel}{symbols4}{"AD}
+\stix@MathSymbol{\shortuptack}              {\mathrel}{symbols4}{"AE}
+\stix@MathSymbol{\perps}                    {\mathord}{symbols4}{"AF}
+
+\stix@MathSymbol{\vDdash}                   {\mathrel}{symbols4}{"B0}
+\stix@MathSymbol{\dashV}                    {\mathrel}{symbols4}{"B1}
+\stix@MathSymbol{\Dashv}                    {\mathrel}{symbols4}{"B2}
+\stix@MathSymbol{\DashV}                    {\mathrel}{symbols4}{"B3}
+\stix@MathSymbol{\varVdash}                 {\mathrel}{symbols4}{"B4}
+\stix@MathSymbol{\Barv}                     {\mathrel}{symbols4}{"B5}
+\stix@MathSymbol{\vBar}                     {\mathrel}{symbols4}{"B6}
+\stix@MathSymbol{\vBarv}                    {\mathrel}{symbols4}{"B7}
+\stix@MathSymbol{\barV}                     {\mathrel}{symbols4}{"B8}
+\stix@MathSymbol{\Vbar}                     {\mathrel}{symbols4}{"B9}
+\stix@MathSymbol{\Not}                      {\mathrel}{symbols4}{"BA}
+\stix@MathSymbol{\bNot}                     {\mathrel}{symbols4}{"BB}
+\stix@MathSymbol{\revnmid}                  {\mathrel}{symbols4}{"BC}
+\stix@MathSymbol{\cirmid}                   {\mathrel}{symbols4}{"BD}
+\stix@MathSymbol{\midcir}                   {\mathrel}{symbols4}{"BE}
+\stix@MathSymbol{\topcir}                   {\mathord}{symbols4}{"BF}
+
+\stix@MathSymbol{\nhpar}                    {\mathrel}{symbols4}{"C0}
+\stix@MathSymbol{\parsim}                   {\mathrel}{symbols4}{"C1}
+\stix@MathSymbol{\interleave}               {\mathbin}{symbols4}{"C2}
+\stix@MathSymbol{\nhVvert}                  {\mathbin}{symbols4}{"C3}
+\stix@MathSymbol{\threedotcolon}            {\mathbin}{symbols4}{"C4}
+\stix@MathSymbol{\lllnest}                  {\mathrel}{symbols4}{"C5}
+\stix@MathSymbol{\gggnest}                  {\mathrel}{symbols4}{"C6}
+\stix@MathSymbol{\leqqslant}                {\mathrel}{symbols4}{"C7}
+\stix@MathSymbol{\geqqslant}                {\mathrel}{symbols4}{"C8}
+\stix@MathSymbol{\trslash}                  {\mathbin}{symbols4}{"C9}
+\stix@MathSymbol{\biginterleave}            {\mathop} {symbols4}{"CA}
+\stix@MathSymbol{\sslash}                   {\mathbin}{symbols4}{"CB}
+\stix@MathSymbol{\talloblong}               {\mathbin}{symbols4}{"CC}
+\stix@MathSymbol{\squaretopblack}           {\mathord}{symbols4}{"CD}
+\stix@MathSymbol{\squarebotblack}           {\mathord}{symbols4}{"CE}
+\stix@MathSymbol{\squareurblack}            {\mathord}{symbols4}{"CF}
+
+\stix@MathSymbol{\squarellblack}            {\mathord}{symbols4}{"D0}
+\stix@MathSymbol{\diamondleftblack}         {\mathord}{symbols4}{"D1}
+\stix@MathSymbol{\diamondrightblack}        {\mathord}{symbols4}{"D2}
+\stix@MathSymbol{\diamondtopblack}          {\mathord}{symbols4}{"D3}
+\stix@MathSymbol{\diamondbotblack}          {\mathord}{symbols4}{"D4}
+\stix@MathSymbol{\dottedsquare}             {\mathord}{symbols4}{"D5}
+\stix@MathSymbol{\lgblksquare}              {\mathord}{symbols4}{"D6}
+\stix@MathSymbol{\lgwhtsquare}              {\mathord}{symbols4}{"D7}
+\stix@MathSymbol{\vysmblksquare}            {\mathord}{symbols4}{"D8}
+\stix@MathSymbol{\vysmwhtsquare}            {\mathord}{symbols4}{"D9}
+\stix@MathSymbol{\pentagonblack}            {\mathord}{symbols4}{"DA}
+\stix@MathSymbol{\pentagon}                 {\mathord}{symbols4}{"DB}
+\stix@MathSymbol{\varhexagon}               {\mathord}{symbols4}{"DC}
+\stix@MathSymbol{\varhexagonblack}          {\mathord}{symbols4}{"DD}
+\stix@MathSymbol{\hexagonblack}             {\mathord}{symbols4}{"DE}
+\stix@MathSymbol{\lgblkcircle}              {\mathord}{symbols4}{"DF}
+
+\stix@MathSymbol{\mdblkdiamond}             {\mathord}{symbols4}{"E0}
+\stix@MathSymbol{\mdwhtdiamond}             {\mathord}{symbols4}{"E1}
+\stix@MathSymbol{\mdblklozenge}             {\mathord}{symbols4}{"E2}
+\stix@MathSymbol{\mdwhtlozenge}             {\mathord}{symbols4}{"E3}
+\stix@MathSymbol{\smblkdiamond}             {\mathord}{symbols4}{"E4}
+\stix@MathSymbol{\smblklozenge}             {\mathord}{symbols4}{"E5}
+\stix@MathSymbol{\smwhtlozenge}             {\mathord}{symbols4}{"E6}
+\stix@MathSymbol{\blkhorzoval}              {\mathord}{symbols4}{"E7}
+\stix@MathSymbol{\whthorzoval}              {\mathord}{symbols4}{"E8}
+\stix@MathSymbol{\blkvertoval}              {\mathord}{symbols4}{"E9}
+\stix@MathSymbol{\whtvertoval}              {\mathord}{symbols4}{"EA}
+\stix@MathSymbol{\medwhitestar}             {\mathord}{symbols4}{"EB}
+\stix@MathSymbol{\medblackstar}             {\mathord}{symbols4}{"EC}
+\stix@MathSymbol{\smwhitestar}              {\mathord}{symbols4}{"ED}
+\stix@MathSymbol{\rightpentagonblack}       {\mathord}{symbols4}{"EE}
+\stix@MathSymbol{\rightpentagon}            {\mathord}{symbols4}{"EF}
+
+\stix@MathSymbol{\postalmark}               {\mathord}{symbols4}{"F0}
+\stix@MathSymbol{\hzigzag}                  {\mathord}{symbols4}{"F1}
+\stix@MathSymbol{\bbrktbrk}                 {\mathord}{symbols4}{"F2}
+\stix@MathSymbol{\obrbrak}                  {\mathord}{symbols4}{"F3}
+\stix@MathSymbol{\ubrbrak}                  {\mathord}{symbols4}{"F4}
+\stix@MathSymbol{\astrosun}                 {\mathord}{symbols4}{"F5}
+\stix@MathSymbol{\danger}                   {\mathord}{symbols4}{"F6}
+\stix@MathSymbol{\blacksmiley}              {\mathord}{symbols4}{"F7}
+\stix@MathSymbol{\sun}                      {\mathord}{symbols4}{"F8}
+\stix@MathSymbol{\rightmoon}                {\mathord}{symbols4}{"F9}
+\stix@MathSymbol{\leftmoon}                 {\mathord}{symbols4}{"FA}
+\stix@MathSymbol{\female}                   {\mathord}{symbols4}{"FB}
+\stix@MathSymbol{\male}                     {\mathord}{symbols4}{"FC}
+\stix@MathSymbol{\varspadesuit}             {\mathord}{symbols4}{"FD}
+\stix@MathSymbol{\varheartsuit}             {\mathord}{symbols4}{"FE}
+\stix@MathSymbol{\vardiamondsuit}           {\mathord}{symbols4}{"FF}
+%    \end{macrocode}
+%
+% Our fonts have no optical sizes, so were are loading |script| and
+% |scriptscript| fonts at bigger sizes than the default \LaTeX\ setup.
+%
+%    \begin{macrocode}
+    \DeclareMathSizes{10}{10}{7.5}{6}
+%    \end{macrocode}
+%
+% \subsection{Package compatibility}
+%
+%    \begin{macrocode}
+\AtBeginDocument{
+    \@ifpackageloaded{amsmath}{
+%    \end{macrocode}
+%
+% \pkg{amsmath} redefines |\big| etc. but they are small for us, so we revert
+% to the \LaTeX\ definition.
+%
+%    \begin{macrocode}
+        \renewcommand{\big}{\bBigg@{1.2}}
+        \renewcommand{\Bigg}{\bBigg@{2.7}}
+%    \end{macrocode}
+%
+% Keep \pkg{amsmath}'s definitions from persisting if it is loaded first.
+%
+%    \begin{macrocode}
+        \let\dotsb@\@cdots
+        \let\dotsb\cdots
+        \let\dotsm\cdots
+    }{
+%    \end{macrocode}
+%
+% For \pkg{amsmath}'s |*limits| options.
+%
+%    \begin{macrocode}
+        \let\ilimits@=\nolimits
+        \let\slimits@=\relax
+        \let\DOTSI\relax
+    }
+}
+%    \end{macrocode}
+%
+% \pkg{amsopn} changes the math code of some symbols inside its
+% |\DeclareMathOperator|, we fix them to match positions in our fonts.
+%
+%    \begin{macrocode}
+\@ifpackageloaded{amsopn}{
+    \begingroup \catcode`\"=12
+    \gdef\newmcodes@{%
+      \mathcode`\'="007F\relax%
+      \mathcode`\*="003C\relax%
+      \mathcode`\.="613A\relax%
+      \ifnum\mathcode`\-="002A \else
+        \mathchardef\std@minus\mathcode`\-\relax
+      \fi
+      \mathcode`\-="002A\relax%
+      \mathcode`\/="005F\relax%
+      \mathcode`\:="603A\relax%
+    }
+    \endgroup
+}{}
+%    \end{macrocode}
+%
+% For compatibility with \pkg{babel-spanish} that defines |\dotlessi| in a way
+% that breaks when |\i| is not defined for the encoding of the operators font
+% (|LS1| in our case), we define |\i| for |LS1|, and while at it we define |\j|
+% just in case\footnote{\url{http://sourceforge.net/p/stixfonts/tracking/41/}}.
+%
+%    \begin{macrocode}
+\DeclareTextSymbol{\i}{LS1}{123}
+\DeclareTextSymbol{\j}{LS1}{124}
+%    \end{macrocode}
+% \subsection{Precomposed negations}
+%
+% Here we define |\not| as a macros that looks ahead and if there is a
+% precomposed negation of its argument, it will be used.
+%
+%    \begin{macrocode}
+\@namedef{not=}{\ne}
+\@namedef{not>}{\ngtr}
+\@namedef{not<}{\nless}
+\let\ngets\nleftarrow
+\let\nsimeq\nsime
+\let\nforksnot\forks
+\let\nle\nleq
+\let\nge\ngeq
+\DeclareRobustCommand*{\not}[1]{%
+    \begingroup \escapechar\m@ne\xdef\@gtempa{not\string#1}\endgroup
+    \@ifundefined{\@gtempa}%
+        {\not@n@{#1}}%
+        {\@nameuse{\@gtempa}}}
+\def\not@n@#1{%
+    \begingroup \escapechar\m@ne\xdef\@gtempa{n\string#1}\endgroup
+    \@ifundefined{\@gtempa}%
+        {\notchar #1}%
+        {\@nameuse{\@gtempa}}}
+%    \end{macrocode}
+%
+% \subsection{Compatibility with Babel}
+%
+% Spanish babel defines a versions of |\dotlessi| that works for fonts other
+% than math italic, but this breaks when the \pkg{stix} package is loaded. Our |\imath|
+% does this already, so we just use it.
+%
+%    \begin{macrocode}
+\def\stix@dotlessi{\ifmmode\imath\else\i\fi}
+\@ifundefined{es@dotlessi}{}{\let\es@dotlessi\stix@dotlessi}
+
+\fi
+\endinput
+%    \end{macrocode}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.fdd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.fdd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.fdd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,239 @@
+% \iffalse
+%<*driver>
+\begingroup
+\input docstrip
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+Copyright (c) 2001-2013 by the STI Pub Companies, consisting of the
+American Chemical Society, the American Institute of Physics, the American
+Mathematical Society, the American Physical Society, Elsevier, Inc., and
+The Institute of Electrical and Electronic Engineers, Inc. Portions
+copyright (c) 1998-2003 by MicroPress, Inc. Portions copyright (c) 1990 by
+Elsevier, Inc. All rights reserved.
+
+This work may be distributed and/or modified under the conditions of the LaTeX
+Project Public License, either version 1.3 of this license or (at your option)
+any later version.  The latest version of this license is in
+  http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX version
+2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is the STI Pub Companies.
+
+This work consists of the files stix.fdd and and the derived files ls1stix.fd,
+ls1stixbb.fd, ls1stixfrak.fd, ls1stixscr.fd, ls1stixsf.fd, ls2stixcal.fd,
+ls2stixex.fd, ls2stix.fd, ls2stixtt.fd, ot1stix.fd, ot2stix.fd, t1stix.fd,
+ts1stix.fd.
+
+\endpreamble
+
+\generate{\file{ls1stix.fd}{\from{stix.fdd}{ls1stix}}}
+\generate{\file{ls1stixbb.fd}{\from{stix.fdd}{ls1stixbb}}}
+\generate{\file{ls1stixfrak.fd}{\from{stix.fdd}{ls1stixfrak}}}
+\generate{\file{ls1stixscr.fd}{\from{stix.fdd}{ls1stixscr}}}
+\generate{\file{ls1stixsf.fd}{\from{stix.fdd}{ls1stixsf}}}
+\generate{\file{ls2stixcal.fd}{\from{stix.fdd}{ls2stixcal}}}
+\generate{\file{ls2stixex.fd}{\from{stix.fdd}{ls2stixex}}}
+\generate{\file{ls2stix.fd}{\from{stix.fdd}{ls2stix}}}
+\generate{\file{ls2stixtt.fd}{\from{stix.fdd}{ls2stixtt}}}
+\generate{\file{ot1stix.fd}{\from{stix.fdd}{ot1stix}}}
+\generate{\file{ot2stix.fd}{\from{stix.fdd}{ot2stix}}}
+\generate{\file{t1stix.fd}{\from{stix.fdd}{t1stix}}}
+\generate{\file{ts1stix.fd}{\from{stix.fdd}{ts1stix}}}
+
+\endgroup
+\end
+%</driver>
+%\fi
+%<ls1stix>\ProvidesFile{ls1stix.fd}
+%<ls1stixbb>\ProvidesFile{ls1stixbb.fd}
+%<ls1stixfrak>\ProvidesFile{ls1stixfrak.fd}
+%<ls1stixscr>\ProvidesFile{ls1stixscr.fd}
+%<ls1stixsf>\ProvidesFile{ls1stixsf.fd}
+%<ls2stixcal>\ProvidesFile{ls2stixcal.fd}
+%<ls2stixex>\ProvidesFile{ls2stixex.fd}
+%<ls2stix>\ProvidesFile{ls2stix.fd}
+%<ls2stixtt>\ProvidesFile{ls2stixtt.fd}
+%<ot1stix>\ProvidesFile{ot1stix.fd}
+%<ot2stix>\ProvidesFile{ot2stix.fd}
+%<t1stix>\ProvidesFile{t1stix.fd}
+%<ts1stix>\ProvidesFile{ts1stix.fd}
+[2015/04/17 v1.1.2-latex STIX %
+%<ls1stix>LS1 %
+%<ls1stixbb>blackboard LS1 %
+%<ls1stixfrak>fraktur LS1 %
+%<ls1stixscr>script LS1 %
+%<ls1stixsf>sans-serif LS1 %
+%<ls2stixcal>calligraphic LS2 %
+%<ls2stixex>extentions LS2 %
+%<ls2stix>LS2 %
+%<ls2stixtt>typewriter LS2 %
+%<ot1stix>OT1 %
+%<ot2stix>OT2 %
+%<t1stix>T1 %
+%<ts1stix>TS1 %
+font definitions]
+%<*ls1stixbb>
+\DeclareFontFamily{LS1}{stixbb}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixbb}{m}{n} {<-> stix-mathbb}{}
+\DeclareFontShape{LS1}{stixbb}{m}{it}{<-> stix-mathbbit}{}
+\DeclareFontShape{LS1}{stixbb}{b}{n} {<-> stix-mathbb-bold}{}
+\DeclareFontShape{LS1}{stixbb}{b}{it}{<-> stix-mathbbit-bold}{}
+%</ls1stixbb>
+%
+%<*ls1stix>
+\DeclareFontFamily{LS1}{stix}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stix}{m}{n} {<-> stix-mathrm}{}
+\DeclareFontShape{LS1}{stix}{m}{it}{<-> stix-mathit}{}
+\DeclareFontShape{LS1}{stix}{b}{n} {<-> stix-mathrm-bold}{}
+\DeclareFontShape{LS1}{stix}{b}{it}{<-> stix-mathit-bold}{}
+
+\DeclareFontShape{LS1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</ls1stix>
+%
+%<*ls1stixfrak>
+\DeclareFontFamily{LS1}{stixfrak}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixfrak}{m}{n} {<-> stix-mathfrak}{}
+\DeclareFontShape{LS1}{stixfrak}{b}{n} {<-> stix-mathfrak-bold}{}
+%</ls1stixfrak>
+%
+%<*ls1stixscr>
+\DeclareFontFamily{LS1}{stixscr}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixscr}{m}{n} {<-> stix-mathscr}{}
+\DeclareFontShape{LS1}{stixscr}{b}{n} {<-> stix-mathscr-bold}{}
+\DeclareFontShape{LS1}{stixscr}{bx}{n} {<->ssub * stixscr/b/n}{}
+%</ls1stixscr>
+%
+%<*ls1stixsf>
+\DeclareFontFamily{LS1}{stixsf}{\skewchar\font127 }
+
+\DeclareFontShape{LS1}{stixsf}{m}{n} {<-> stix-mathsf}{}
+\DeclareFontShape{LS1}{stixsf}{m}{it}{<-> stix-mathsfit}{}
+\DeclareFontShape{LS1}{stixsf}{b}{n} {<-> stix-mathsf-bold}{}
+\DeclareFontShape{LS1}{stixsf}{b}{it}{<-> stix-mathsfit-bold}{}
+
+\DeclareFontShape{LS1}{stixsf}{bx}{it}{<->ssub * stixsf/b/it}{}
+%</ls1stixsf>
+%
+%<*ls2stixcal>
+\DeclareFontFamily{LS2}{stixcal}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stixcal}{m}{n} {<-> stix-mathcal}{}
+\DeclareFontShape{LS2}{stixcal}{b}{n} {<-> stix-mathcal-bold}{}
+%</ls2stixcal>
+%
+%<*ls2stixex>
+\DeclareFontFamily{LS2}{stixex}{}
+
+\DeclareFontShape{LS2}{stixex}{m}{n} {<-> stix-mathex}{}
+\DeclareFontShape{LS2}{stixex}{b}{n} {<-> stix-mathex-bold}{}
+%</ls2stixex>
+%
+%<*ls2stix>
+\DeclareFontFamily{LS2}{stix}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stix}{m}{n} {<-> stix-mathrm}{}
+\DeclareFontShape{LS2}{stix}{m}{it}{<-> stix-mathit}{}
+\DeclareFontShape{LS2}{stix}{b}{n} {<-> stix-mathrm-bold}{}
+\DeclareFontShape{LS2}{stix}{b}{it}{<-> stix-mathit-bold}{}
+
+\DeclareFontShape{LS2}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</ls2stix>
+%
+%<*ls2stixtt>
+\DeclareFontFamily{LS2}{stixtt}{\skewchar\font127 }
+
+\DeclareFontShape{LS2}{stixtt}{m}{n} {<-> stix-mathtt}{}
+\DeclareFontShape{LS2}{stixtt}{b}{n} {<-> stix-mathtt-bold}{}
+%</ls2stixtt>
+%
+%<*ot1stix>
+\DeclareFontFamily{OT1}{stix}{}
+
+\DeclareFontShape{OT1}{stix}{m}{n} {<-> ot1-stixgeneral}{}
+\DeclareFontShape{OT1}{stix}{b}{n} {<-> ot1-stixgeneral-bold}{}
+\DeclareFontShape{OT1}{stix}{m}{it}{<-> ot1-stixgeneral-italic}{}
+\DeclareFontShape{OT1}{stix}{b}{it}{<-> ot1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{OT1}{stix}{m}{sc}{<-> ot1-stixgeneralsc}{}
+\DeclareFontShape{OT1}{stix}{b}{sc}{<-> ot1-stixgeneralsc-bold}{}
+
+\DeclareFontShape{OT1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{OT1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{OT1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{OT1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{OT1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{OT1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</ot1stix>
+%
+%<*ot2stix>
+\DeclareFontFamily{OT2}{stix}{}
+
+\DeclareFontShape{OT2}{stix}{m}{n} {<-> ot2-stixgeneral}{}
+\DeclareFontShape{OT2}{stix}{b}{n} {<-> ot2-stixgeneral-bold}{}
+\DeclareFontShape{OT2}{stix}{m}{it}{<-> ot2-stixgeneral-italic}{}
+\DeclareFontShape{OT2}{stix}{b}{it}{<-> ot2-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{OT2}{stix}{m}{sc}{<-> ot2-stixgeneralsc}{}
+\DeclareFontShape{OT2}{stix}{b}{sc}{<-> ot2-stixgeneralsc-bold}{}
+
+\DeclareFontShape{OT2}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{OT2}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{OT2}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{OT2}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{OT2}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{OT2}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</ot2stix>
+%
+%<*t1stix>
+\DeclareFontFamily{T1}{stix}{}
+
+\DeclareFontShape{T1}{stix}{m}{n} {<-> t1-stixgeneral}{}
+\DeclareFontShape{T1}{stix}{b}{n} {<-> t1-stixgeneral-bold}{}
+\DeclareFontShape{T1}{stix}{m}{it}{<-> t1-stixgeneral-italic}{}
+\DeclareFontShape{T1}{stix}{b}{it}{<-> t1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{T1}{stix}{m}{sc}{<-> t1-stixgeneralsc}{}
+\DeclareFontShape{T1}{stix}{b}{sc}{<-> t1-stixgeneralsc-bold}{}
+
+\DeclareFontShape{T1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{T1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{T1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{T1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{T1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{T1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</t1stix>
+%
+%<*ts1stix>
+\DeclareFontFamily{TS1}{stix}{}
+
+\DeclareFontShape{TS1}{stix}{m}{n} {<-> ts1-stixgeneral}{}
+\DeclareFontShape{TS1}{stix}{b}{n} {<-> ts1-stixgeneral-bold}{}
+\DeclareFontShape{TS1}{stix}{m}{it}{<-> ts1-stixgeneral-italic}{}
+\DeclareFontShape{TS1}{stix}{b}{it}{<-> ts1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{TS1}{stix}{m}{sc}{<->ssub * stix/m/n}{}
+\DeclareFontShape{TS1}{stix}{b}{sc}{<->ssub * stix/b/n}{}
+
+\DeclareFontShape{TS1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{TS1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{TS1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{TS1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{TS1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{TS1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+%</ts1stix>
+%
+% \Finale
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.map
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.map	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.map	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,61 @@
+t1-stixgeneral             STIXGeneral-Regular    "stixt1  ReEncodeFont" <stix-t1.enc  <STIXGeneral-Regular.pfb
+t1-stixgeneral-bold        STIXGeneral-Bold       "stixt1  ReEncodeFont" <stix-t1.enc  <STIXGeneral-Bold.pfb
+t1-stixgeneral-italic      STIXGeneral-Italic     "stixt1  ReEncodeFont" <stix-t1.enc  <STIXGeneral-Italic.pfb
+t1-stixgeneral-bolditalic  STIXGeneral-BoldItalic "stixt1  ReEncodeFont" <stix-t1.enc  <STIXGeneral-BoldItalic.pfb
+
+ts1-stixgeneral            STIXGeneral-Regular    "stixts1 ReEncodeFont" <stix-ts1.enc <STIXGeneral-Regular.pfb
+ts1-stixgeneral-bold       STIXGeneral-Bold       "stixts1 ReEncodeFont" <stix-ts1.enc <STIXGeneral-Bold.pfb
+ts1-stixgeneral-italic     STIXGeneral-Italic     "stixts1 ReEncodeFont" <stix-ts1.enc <STIXGeneral-Italic.pfb
+ts1-stixgeneral-bolditalic STIXGeneral-BoldItalic "stixts1 ReEncodeFont" <stix-ts1.enc <STIXGeneral-BoldItalic.pfb
+
+ot1-stixgeneral            STIXGeneral-Regular    "stixot1 ReEncodeFont" <stix-ot1.enc <STIXGeneral-Regular.pfb
+ot1-stixgeneral-bold       STIXGeneral-Bold       "stixot1 ReEncodeFont" <stix-ot1.enc <STIXGeneral-Bold.pfb
+ot1-stixgeneral-italic     STIXGeneral-Italic     "stixot1 ReEncodeFont" <stix-ot1.enc <STIXGeneral-Italic.pfb
+ot1-stixgeneral-bolditalic STIXGeneral-BoldItalic "stixot1 ReEncodeFont" <stix-ot1.enc <STIXGeneral-BoldItalic.pfb
+
+ot2-stixgeneral            STIXGeneral-Regular    "stixot2 ReEncodeFont" <stix-ot2.enc <STIXGeneral-Regular.pfb
+ot2-stixgeneral-bold       STIXGeneral-Bold       "stixot2 ReEncodeFont" <stix-ot2.enc <STIXGeneral-Bold.pfb
+ot2-stixgeneral-italic     STIXGeneral-Italic     "stixot2 ReEncodeFont" <stix-ot2.enc <STIXGeneral-Italic.pfb
+ot2-stixgeneral-bolditalic STIXGeneral-BoldItalic "stixot2 ReEncodeFont" <stix-ot2.enc <STIXGeneral-BoldItalic.pfb
+
+stix-mathrm        STIXMath-Regular              <stix-mathrm.pfb
+stix-mathrm-bold   STIXMath-Bold                 <stix-mathrm-bold.pfb
+stix-mathit        STIXMath-Italic               <stix-mathit.pfb
+stix-mathit-bold   STIXMath-BoldItalic           <stix-mathit-bold.pfb
+
+stix-mathsf        STIXMathSans-Regular          <stix-mathsf.pfb
+stix-mathsfit      STIXMathSans-Italic           <stix-mathsfit.pfb
+stix-mathsf-bold   STIXMathSans-Bold             <stix-mathsf-bold.pfb
+stix-mathsfit-bold STIXMathSans-BoldItalic       <stix-mathsfit-bold.pfb
+
+stix-mathtt        STIXMathTyperwriter-Regular   <stix-mathtt.pfb
+stix-mathtt-bold   STIXMathTyperwriter-Bold      <stix-mathtt-bold.pfb
+
+stix-mathbb        STIXMathBlackboard-Regular    <stix-mathbb.pfb
+stix-mathbbit      STIXMathBlackboard-Italic     <stix-mathbbit.pfb
+stix-mathbb-bold   STIXMathBlackboard-Bold       <stix-mathbb-bold.pfb
+stix-mathbbit-bold STIXMathBlackboard-BoldItalic <stix-mathbbit-bold.pfb
+
+stix-mathscr       STIXMathScript-Regular        <stix-mathscr.pfb
+stix-mathscr-bold  STIXMathScript-Bold           <stix-mathscr-bold.pfb
+
+stix-mathcal       STIXMathCalligraphy-Regular   <stix-mathcal.pfb
+stix-mathcal-bold  STIXMathCalligraphy-Bold      <stix-mathcal-bold.pfb
+
+stix-mathfrak      STIXMathFraktur-Regular       <stix-mathfrak.pfb
+stix-mathfrak-bold STIXMathFraktur-Bold          <stix-mathfrak-bold.pfb
+
+stix-mathex        STIXMathExtensions-Regular    <stix-mathex.pfb
+stix-mathex-bold   STIXMathExtensions-Bold       <stix-mathex-bold.pfb
+
+stix-extra1      STIXGeneral-Regular "stixextra  ReEncodeFont" <stix-extra1.enc <STIXGeneral-Regular.pfb
+stix-extra2      STIXGeneral-Regular "stixextra2 ReEncodeFont" <stix-extra2.enc <STIXGeneral-Regular.pfb
+stix-extra3      STIXGeneral-Regular "stixextra3 ReEncodeFont" <stix-extra3.enc <STIXGeneral-Regular.pfb
+stix-extra1-bold STIXGeneral-Bold    "stixextra  ReEncodeFont" <stix-extra1.enc <STIXGeneral-Bold.pfb
+stix-extra2-bold STIXGeneral-Bold    "stixextra2 ReEncodeFont" <stix-extra2.enc <STIXGeneral-Bold.pfb
+stix-extra3-bold STIXGeneral-Bold    "stixextra3 ReEncodeFont" <stix-extra3.enc <STIXGeneral-Bold.pfb
+
+StixBd STIX-Bold "AutoEnc_axxd65ow2itmagzxgdtfjmwsmc ReEncodeFont" <[a_axxd65.enc <<STIX-Bold.pfb
+StixBdIt STIX-BoldItalic "AutoEnc_axxd65ow2itmagzxgdtfjmwsmc ReEncodeFont" <[a_axxd65.enc <<STIX-BoldItalic.pfb
+StixIt STIX-Italic "AutoEnc_axxd65ow2itmagzxgdtfjmwsmc ReEncodeFont" <[a_axxd65.enc <<STIX-Italic.pfb
+StixReg STIX-Regular "AutoEnc_axxd65ow2itmagzxgdtfjmwsmc ReEncodeFont" <[a_axxd65.enc <<STIX-Regular.pfb
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.sty
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.sty	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/stix.sty	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,2160 @@
+%%
+%% This is file `stix.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% stix.dtx  (with options: `package')
+%% 
+%% Copyright (c) 2001-2013 by the STI Pub Companies, consisting of the
+%% American Chemical Society, the American Institute of Physics, the American
+%% Mathematical Society, the American Physical Society, Elsevier, Inc., and
+%% The Institute of Electrical and Electronic Engineers, Inc. Portions
+%% copyright (c) 1998-2003 by MicroPress, Inc. Portions copyright (c) 1990 by
+%% Elsevier, Inc. All rights reserved.
+%% 
+%% This work may be distributed and/or modified under the conditions of the LaTeX
+%% Project Public License, either version 1.3 of this license or (at your option)
+%% any later version.  The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status `maintained'.
+%% 
+%% The Current Maintainer of this work is the STI Pub Companies.
+%% 
+%% This work consists of the files stix.dtx and and the derived file stix.sty.
+%% 
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{stix}
+    [2015/04/17 v1.1.2-latex STIX fonts support package]
+\newif\ifstix@text  \stix@texttrue
+\newif\ifstix@math  \stix@mathtrue
+\newif\ifstix@tenc  \stix@tenctrue
+\newif\ifstix@senc  \stix@senctrue
+\newif\ifstix@upint \stix@upintfalse
+\let\stix@lcgc\mathord
+\DeclareOption{notext}      {\stix@textfalse}
+\DeclareOption{nomath}      {\stix@mathfalse}
+\DeclareOption{not1}        {\stix@tencfalse}
+\DeclareOption{notextcomp}  {\stix@sencfalse}
+\DeclareOption{lcgreekalpha}{\let\stix@lcgc\mathalpha}
+\DeclareOption{upint}       {\stix@upinttrue}
+\ProcessOptions\relax
+\ifstix@text
+    \ifstix@tenc
+        \def\encodingdefault{T1}
+    \fi
+    \ifstix@senc
+        \RequirePackage[full]{textcomp}
+        \UndeclareTextCommand{\textpertenthousand}{T1}
+        \DeclareTextSymbolDefault{\textpertenthousand}{TS1}
+    \fi
+
+    \renewcommand{\rmdefault}{stix}
+\fi
+\ifstix@math
+\def\stix@undefine#1{%
+    \if\relax\noexpand#1\let#1=\@undefined\fi}
+\def\stix@MathSymbol#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathSymbol{#1}{#2}{#3}{#4}}
+\def\stix@MathDelimiter#1#2#3#4#5#6{%
+    \stix@undefine#1%
+    \DeclareMathDelimiter{#1}{#2}{#3}{#4}{#5}{#6}}
+\def\stix@MathAccent#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathAccent{#1}{#2}{#3}{#4}}
+\def\stix@MathRadical#1#2#3#4{%
+    \stix@undefine#1%
+    \DeclareMathRadical{#1}{#2}{#3}{#4}}
+\DeclareFontEncoding{LS1}{}{}
+\DeclareFontEncoding{LS2}{}{\noaccents@}
+\DeclareFontSubstitution{LS1}{stix}{m}{n}
+\DeclareFontSubstitution{LS2}{stix}{m}{n}
+\DeclareSymbolFont{letters}       {LS1}{stix}     {m}{it}
+\DeclareSymbolFont{operators}     {LS1}{stix}     {m} {n}
+\DeclareSymbolFont{bold-operators}{LS1}{stix}     {b} {n}
+\DeclareSymbolFont{symbols}       {LS1}{stixscr}  {m} {n}
+\DeclareSymbolFont{symbols2}      {LS1}{stixfrak} {m} {n}
+\DeclareSymbolFont{symbols3}      {LS1}{stixbb}   {m} {n}
+\DeclareSymbolFont{symbols4}      {LS1}{stixbb}   {m}{it}
+\DeclareSymbolFont{integrals}     {LS2}{stixcal}  {m} {n}
+\DeclareSymbolFont{largesymbols}  {LS2}{stixex}   {m} {n}
+\DeclareSymbolFont{arrows1}       {LS1}{stixsf}   {m} {n}
+\DeclareSymbolFont{arrows2}       {LS1}{stixsf}   {m}{it}
+\DeclareSymbolFont{arrows3}       {LS2}{stixtt}   {m} {n}
+\SetSymbolFont{letters}     {bold}{LS1}{stix}     {b}{it}
+\SetSymbolFont{operators}   {bold}{LS1}{stix}     {b} {n}
+\SetSymbolFont{symbols}     {bold}{LS1}{stixscr}  {b} {n}
+\SetSymbolFont{symbols2}    {bold}{LS1}{stixfrak} {b}{n}
+\SetSymbolFont{symbols3}    {bold}{LS1}{stixbb}   {b} {n}
+\SetSymbolFont{symbols4}    {bold}{LS1}{stixbb}   {b}{it}
+\SetSymbolFont{integrals}   {bold}{LS2}{stixcal}  {b} {n}
+\SetSymbolFont{largesymbols}{bold}{LS2}{stixex}   {b} {n}
+\SetSymbolFont{arrows1}     {bold}{LS1}{stixsf}   {b} {n}
+\SetSymbolFont{arrows2}     {bold}{LS1}{stixsf}   {b}{it}
+\SetSymbolFont{arrows3}     {bold}{LS2}{stixtt}   {b} {n}
+\DeclareSymbolFontAlphabet{\mathit}  {letters}
+\DeclareSymbolFontAlphabet{\mathrm}  {operators}
+\DeclareSymbolFontAlphabet{\mathscr} {symbols}
+\DeclareSymbolFontAlphabet{\mathfrak}{symbols2}
+\DeclareSymbolFontAlphabet{\mathbb}  {symbols3}
+\DeclareSymbolFontAlphabet{\mathbbit}{symbols4}
+\DeclareSymbolFontAlphabet{\mathcal} {integrals}
+\DeclareSymbolFontAlphabet{\mathsf}  {arrows1}
+\DeclareSymbolFontAlphabet{\mathsfit}{arrows2}
+\DeclareSymbolFontAlphabet{\mathtt}  {arrows3}
+\DeclareSymbolFontAlphabet{\mathbf}  {bold-operators}
+\DeclareMathAlphabet{\mathbfit}   {LS1}{stix}     {b}{it}
+\DeclareMathAlphabet{\mathbfsf}   {LS1}{stixsf}   {b} {n}
+\DeclareMathAlphabet{\mathbfsfit} {LS1}{stixsf}   {b}{it}
+\DeclareMathAlphabet{\mathbfbb}   {LS1}{stixbb}   {b} {n}
+\DeclareMathAlphabet{\mathbfbbit} {LS1}{stixbb}   {b}{it}
+\DeclareMathAlphabet{\mathbfscr}  {LS1}{stixscr}  {b} {n}
+\DeclareMathAlphabet{\mathbffrak} {LS1}{stixfrak} {b} {n}
+\stix@MathSymbol{\Gamma}      {\mathalpha}{operators}{"00}
+\stix@MathSymbol{\Delta}      {\mathalpha}{operators}{"01}
+\stix@MathSymbol{\Theta}      {\mathalpha}{operators}{"02}
+\stix@MathSymbol{\Lambda}     {\mathalpha}{operators}{"03}
+\stix@MathSymbol{\Xi}         {\mathalpha}{operators}{"04}
+\stix@MathSymbol{\Pi}         {\mathalpha}{operators}{"05}
+\stix@MathSymbol{\Sigma}      {\mathalpha}{operators}{"06}
+\stix@MathSymbol{\Upsilon}    {\mathalpha}{operators}{"07}
+\stix@MathSymbol{\Phi}        {\mathalpha}{operators}{"08}
+\stix@MathSymbol{\Psi}        {\mathalpha}{operators}{"09}
+\stix@MathSymbol{\Omega}      {\mathalpha}{operators}{"0A}
+\stix@MathSymbol{\alpha}     {\stix@lcgc}{letters}{"0B}
+\stix@MathSymbol{\beta}      {\stix@lcgc}{letters}{"0C}
+\stix@MathSymbol{\gamma}     {\stix@lcgc}{letters}{"0D}
+\stix@MathSymbol{\delta}     {\stix@lcgc}{letters}{"0E}
+\stix@MathSymbol{\epsilon}   {\stix@lcgc}{letters}{"0F}
+\stix@MathSymbol{\zeta}      {\stix@lcgc}{letters}{"10}
+\stix@MathSymbol{\eta}       {\stix@lcgc}{letters}{"11}
+\stix@MathSymbol{\theta}     {\stix@lcgc}{letters}{"12}
+\stix@MathSymbol{\iota}      {\stix@lcgc}{letters}{"13}
+\stix@MathSymbol{\kappa}     {\stix@lcgc}{letters}{"14}
+\stix@MathSymbol{\lambda}    {\stix@lcgc}{letters}{"15}
+\stix@MathSymbol{\mu}        {\stix@lcgc}{letters}{"16}
+\stix@MathSymbol{\nu}        {\stix@lcgc}{letters}{"17}
+\stix@MathSymbol{\xi}        {\stix@lcgc}{letters}{"18}
+\stix@MathSymbol{\pi}        {\stix@lcgc}{letters}{"19}
+\stix@MathSymbol{\rho}       {\stix@lcgc}{letters}{"1A}
+\stix@MathSymbol{\sigma}     {\stix@lcgc}{letters}{"1B}
+\stix@MathSymbol{\tau}       {\stix@lcgc}{letters}{"1C}
+\stix@MathSymbol{\upsilon}   {\stix@lcgc}{letters}{"1D}
+\stix@MathSymbol{\phi}       {\stix@lcgc}{letters}{"1E}
+\stix@MathSymbol{\chi}       {\stix@lcgc}{letters}{"1F}
+\stix@MathSymbol{\psi}       {\stix@lcgc}{letters}{"20}
+\stix@MathSymbol{\omega}     {\stix@lcgc}{letters}{"21}
+\stix@MathSymbol{\varepsilon}{\stix@lcgc}{letters}{"22}
+\stix@MathSymbol{\vartheta}  {\stix@lcgc}{letters}{"23}
+\stix@MathSymbol{\varpi}     {\stix@lcgc}{letters}{"24}
+\stix@MathSymbol{\varrho}    {\stix@lcgc}{letters}{"25}
+\stix@MathSymbol{\varsigma}  {\stix@lcgc}{letters}{"26}
+\stix@MathSymbol{\varphi}    {\stix@lcgc}{letters}{"27}
+\stix@MathSymbol{\nabla}     {\stix@lcgc}{operators}{"28}
+\stix@MathSymbol{\partial}   {\stix@lcgc}{letters}{"29}
+\stix@MathSymbol{0}     {\mathalpha}{operators}{`0}
+\stix@MathSymbol{1}     {\mathalpha}{operators}{`1}
+\stix@MathSymbol{2}     {\mathalpha}{operators}{`2}
+\stix@MathSymbol{3}     {\mathalpha}{operators}{`3}
+\stix@MathSymbol{4}     {\mathalpha}{operators}{`4}
+\stix@MathSymbol{5}     {\mathalpha}{operators}{`5}
+\stix@MathSymbol{6}     {\mathalpha}{operators}{`6}
+\stix@MathSymbol{7}     {\mathalpha}{operators}{`7}
+\stix@MathSymbol{8}     {\mathalpha}{operators}{`8}
+\stix@MathSymbol{9}     {\mathalpha}{operators}{`9}
+\stix@MathSymbol{A}     {\mathalpha}{letters}  {`A}
+\stix@MathSymbol{B}     {\mathalpha}{letters}  {`B}
+\stix@MathSymbol{C}     {\mathalpha}{letters}  {`C}
+\stix@MathSymbol{D}     {\mathalpha}{letters}  {`D}
+\stix@MathSymbol{E}     {\mathalpha}{letters}  {`E}
+\stix@MathSymbol{F}     {\mathalpha}{letters}  {`F}
+\stix@MathSymbol{G}     {\mathalpha}{letters}  {`G}
+\stix@MathSymbol{H}     {\mathalpha}{letters}  {`H}
+\stix@MathSymbol{I}     {\mathalpha}{letters}  {`I}
+\stix@MathSymbol{J}     {\mathalpha}{letters}  {`J}
+\stix@MathSymbol{K}     {\mathalpha}{letters}  {`K}
+\stix@MathSymbol{L}     {\mathalpha}{letters}  {`L}
+\stix@MathSymbol{M}     {\mathalpha}{letters}  {`M}
+\stix@MathSymbol{N}     {\mathalpha}{letters}  {`N}
+\stix@MathSymbol{O}     {\mathalpha}{letters}  {`O}
+\stix@MathSymbol{P}     {\mathalpha}{letters}  {`P}
+\stix@MathSymbol{Q}     {\mathalpha}{letters}  {`Q}
+\stix@MathSymbol{R}     {\mathalpha}{letters}  {`R}
+\stix@MathSymbol{S}     {\mathalpha}{letters}  {`S}
+\stix@MathSymbol{T}     {\mathalpha}{letters}  {`T}
+\stix@MathSymbol{U}     {\mathalpha}{letters}  {`U}
+\stix@MathSymbol{V}     {\mathalpha}{letters}  {`V}
+\stix@MathSymbol{W}     {\mathalpha}{letters}  {`W}
+\stix@MathSymbol{X}     {\mathalpha}{letters}  {`X}
+\stix@MathSymbol{Y}     {\mathalpha}{letters}  {`Y}
+\stix@MathSymbol{Z}     {\mathalpha}{letters}  {`Z}
+\stix@MathSymbol{a}     {\mathalpha}{letters}  {`a}
+\stix@MathSymbol{b}     {\mathalpha}{letters}  {`b}
+\stix@MathSymbol{c}     {\mathalpha}{letters}  {`c}
+\stix@MathSymbol{d}     {\mathalpha}{letters}  {`d}
+\stix@MathSymbol{e}     {\mathalpha}{letters}  {`e}
+\stix@MathSymbol{f}     {\mathalpha}{letters}  {`f}
+\stix@MathSymbol{g}     {\mathalpha}{letters}  {`g}
+\stix@MathSymbol{h}     {\mathalpha}{letters}  {`h}
+\stix@MathSymbol{i}     {\mathalpha}{letters}  {`i}
+\stix@MathSymbol{j}     {\mathalpha}{letters}  {`j}
+\stix@MathSymbol{k}     {\mathalpha}{letters}  {`k}
+\stix@MathSymbol{l}     {\mathalpha}{letters}  {`l}
+\stix@MathSymbol{m}     {\mathalpha}{letters}  {`m}
+\stix@MathSymbol{n}     {\mathalpha}{letters}  {`n}
+\stix@MathSymbol{o}     {\mathalpha}{letters}  {`o}
+\stix@MathSymbol{p}     {\mathalpha}{letters}  {`p}
+\stix@MathSymbol{q}     {\mathalpha}{letters}  {`q}
+\stix@MathSymbol{r}     {\mathalpha}{letters}  {`r}
+\stix@MathSymbol{s}     {\mathalpha}{letters}  {`s}
+\stix@MathSymbol{t}     {\mathalpha}{letters}  {`t}
+\stix@MathSymbol{u}     {\mathalpha}{letters}  {`u}
+\stix@MathSymbol{v}     {\mathalpha}{letters}  {`v}
+\stix@MathSymbol{w}     {\mathalpha}{letters}  {`w}
+\stix@MathSymbol{x}     {\mathalpha}{letters}  {`x}
+\stix@MathSymbol{y}     {\mathalpha}{letters}  {`y}
+\stix@MathSymbol{z}     {\mathalpha}{letters}  {`z}
+\stix@MathSymbol{\imath}{\mathalpha}{letters}  {"7B}
+\stix@MathSymbol{\jmath}{\mathalpha}{letters}  {"7C}
+\stix@MathSymbol{\aleph} {\mathord}{letters}{"2A}
+\stix@MathSymbol{\beth}  {\mathord}{letters}{"2B}
+\stix@MathSymbol{\gimel} {\mathord}{letters}{"2C}
+\stix@MathSymbol{\daleth}{\mathord}{letters}{"2D}
+\stix@MathSymbol{\hbar}  {\mathord}{letters}{"60}
+\stix@MathSymbol{\hslash}{\mathord}{letters}{"3D}
+\stix@MathSymbol{\ell}       {\mathord}  {symbols}{`l}
+\stix@MathSymbol{\wp}        {\mathord}  {symbols}{"7D}
+\stix@MathSymbol{\Re}        {\mathord}  {symbols2}{`R}
+\stix@MathSymbol{\Im}        {\mathord}  {symbols2}{`I}
+\stix@MathSymbol{-}          {\mathbin}  {operators}{"2A}
+\stix@MathSymbol{+}          {\mathbin}  {operators}{`+}
+\stix@MathSymbol{\pm}        {\mathbin}  {operators}{"2C}
+\stix@MathSymbol{\mp}        {\mathbin}  {operators}{"2D}
+\stix@MathSymbol{:}          {\mathrel}  {operators}{`:}
+\stix@MathSymbol{;}          {\mathpunct}{operators}{`;}
+\stix@MathSymbol{*}          {\mathrel}  {operators}{"3C}
+\stix@MathSymbol{\ast}       {\mathrel}  {operators}{"3C}
+\stix@MathSymbol{=}          {\mathrel}  {operators}{`=}
+\stix@MathSymbol{\mathdollar}{\mathord}  {operators}{"3E}
+\stix@MathSymbol{?}          {\mathclose}{operators}{`?}
+\stix@MathSymbol{!}          {\mathclose}{operators}{"40}
+\stix@MathSymbol{#}          {\mathord}  {operators}{"7D}
+\mathcode`\%="007E % can't use \stix@MathSymbol
+\stix@MathSymbol{&}          {\mathord}  {operators}{"99}
+\stix@MathSymbol{@}          {\mathord}  {operators}{"9A}
+\stix@MathSymbol{.}          {\mathord}  {letters}  {"3A}
+\stix@MathSymbol{\ldotp}     {\mathpunct}{letters}  {"3A}
+\stix@MathSymbol{,}          {\mathpunct}{letters}  {"3B}
+\stix@MathSymbol{\star}      {\mathbin}  {letters}  {"3F}
+\stix@MathSymbol{\flat}      {\mathord}  {letters}  {"5B}
+\stix@MathSymbol{\natural}   {\mathord}  {letters}  {"5C}
+\stix@MathSymbol{\sharp}     {\mathord}  {letters}  {"5D}
+\stix@MathSymbol{\smile}     {\mathrel}  {letters}  {"5E}
+\stix@MathSymbol{\frown}     {\mathrel}  {letters}  {"5F}
+\stix@MathSymbol{\triangleright} {\mathbin}{letters}{"2E}
+\stix@MathSymbol{\triangleleft}  {\mathbin}{letters}{"2F}
+\@ifpackageloaded{amsmath}{}{
+    \stix@MathSymbol{\colon}      {\mathpunct}{operators}{`:}
+}
+\stix@MathDelimiter{(}          {\mathopen} {operators}   {"2E}{largesymbols}{"00}
+\stix@MathDelimiter{)}          {\mathclose}{operators}   {"2F}{largesymbols}{"01}
+\stix@MathDelimiter{\lParen}    {\mathopen} {largesymbols}{"DE}{largesymbols}{"02}
+\stix@MathDelimiter{\rParen}    {\mathclose}{largesymbols}{"DF}{largesymbols}{"03}
+\stix@MathDelimiter{[}          {\mathopen} {operators}   {"5B}{largesymbols}{"04}
+\stix@MathDelimiter{]}          {\mathclose}{operators}   {"5D}{largesymbols}{"05}
+\stix@MathDelimiter{\lBrack}    {\mathopen} {largesymbols}{"E0}{largesymbols}{"06}
+\stix@MathDelimiter{\rBrack}    {\mathclose}{largesymbols}{"E1}{largesymbols}{"07}
+\stix@MathDelimiter{\lfloor}    {\mathopen} {largesymbols}{"E2}{largesymbols}{"08}
+\stix@MathDelimiter{\rfloor}    {\mathclose}{largesymbols}{"E3}{largesymbols}{"09}
+\stix@MathDelimiter{\lceil}     {\mathopen} {largesymbols}{"E4}{largesymbols}{"0A}
+\stix@MathDelimiter{\rceil}     {\mathclose}{largesymbols}{"E5}{largesymbols}{"0B}
+\stix@MathDelimiter{\lmoustache}{\mathopen} {largesymbols}{"E6}{largesymbols}{"EC}
+\stix@MathDelimiter{\rmoustache}{\mathclose}{largesymbols}{"E7}{largesymbols}{"ED}
+\stix@MathDelimiter{\lbrace}    {\mathopen} {operators}   {"5E}{largesymbols}{"0C}
+\stix@MathDelimiter{\rbrace}    {\mathclose}{operators}   {"60}{largesymbols}{"0D}
+\stix@MathDelimiter{\lBrace}    {\mathopen} {largesymbols}{"E8}{largesymbols}{"0E}
+\stix@MathDelimiter{\rBrace}    {\mathclose}{largesymbols}{"E9}{largesymbols}{"0F}
+\stix@MathDelimiter{\langle}    {\mathopen} {largesymbols}{"EA}{largesymbols}{"10}
+\stix@MathDelimiter{\rangle}    {\mathclose}{largesymbols}{"EB}{largesymbols}{"11}
+\stix@MathDelimiter{<}          {\mathopen} {largesymbols}{"EA}{largesymbols}{"10}
+\stix@MathDelimiter{>}          {\mathclose}{largesymbols}{"EB}{largesymbols}{"11}
+\stix@MathSymbol   {<}          {\mathrel}  {letters}{"3C}
+\stix@MathSymbol   {>}          {\mathrel}  {letters}{"3E}
+\stix@MathDelimiter{\lAngle}    {\mathopen} {largesymbols}{"EC}{largesymbols}{"12}
+\stix@MathDelimiter{\rAngle}    {\mathclose}{largesymbols}{"ED}{largesymbols}{"13}
+\stix@MathDelimiter{\lbrbrak}   {\mathopen} {largesymbols}{"EE}{largesymbols}{"14}
+\stix@MathDelimiter{\rbrbrak}   {\mathclose}{largesymbols}{"EF}{largesymbols}{"15}
+\stix@MathDelimiter{/}          {\mathord}  {operators}   {"5F}{largesymbols}{"16}
+\stix@MathDelimiter{\backslash} {\mathord}  {operators}   {"5C}{largesymbols}{"17}
+\expandafter\DeclareMathDelimiter\@backslashchar{\mathord}{operators}{"5C}{largesymbols}{"17}
+\stix@MathDelimiter{\lgroup}    {\mathopen} {largesymbols}{"DC}{largesymbols}{"6A}
+\stix@MathDelimiter{\rgroup}    {\mathclose}{largesymbols}{"DD}{largesymbols}{"6B}
+\stix@MathDelimiter{\bracevert} {\mathord}  {largesymbols}{"6E}{largesymbols}{"6E}
+\stix@MathDelimiter{|}          {\mathord}  {largesymbols}{"F0}{largesymbols}{"F3}
+\stix@MathDelimiter{\vert}      {\mathord}  {largesymbols}{"F0}{largesymbols}{"F3}
+\stix@MathDelimiter{\Vert}      {\mathord}  {largesymbols}{"F1}{largesymbols}{"F4}
+        \let\|=\Vert
+\stix@MathDelimiter{\Vvert}     {\mathord}  {largesymbols}{"F2}{largesymbols}{"F5}
+\@ifpackageloaded{amsmath}{
+    \stix@MathDelimiter{\lvert} {\mathopen}  {largesymbols}{"F0}{largesymbols}{"F3}
+    \stix@MathDelimiter{\rvert} {\mathclose} {largesymbols}{"F0}{largesymbols}{"F3}
+    \stix@MathDelimiter{\lVert} {\mathopen}  {largesymbols}{"F1}{largesymbols}{"F4}
+    \stix@MathDelimiter{\rVert} {\mathclose} {largesymbols}{"F1}{largesymbols}{"F4}
+}{}
+\stix@MathDelimiter{\uparrow}    {\mathrel}{arrows1}{"7E}{arrows1}{"7E}
+\stix@MathDelimiter{\downarrow}  {\mathrel}{arrows1}{"9A}{arrows1}{"9A}
+\stix@MathDelimiter{\updownarrow}{\mathrel}{arrows1}{"9C}{arrows1}{"9C}
+\stix@MathDelimiter{\Uparrow}    {\mathrel}{arrows1}{"D8}{arrows1}{"D8}
+\stix@MathDelimiter{\Downarrow}  {\mathrel}{arrows1}{"DA}{arrows1}{"DA}
+\stix@MathDelimiter{\Updownarrow}{\mathrel}{arrows1}{"DC}{arrows1}{"DC}
+\stix@MathDelimiter{\UUparrow}   {\mathrel}{arrows1}{"FE}{arrows1}{"FE}
+\stix@MathDelimiter{\DDownarrow} {\mathrel}{arrows1}{"FF}{arrows1}{"FF}
+\stix@MathDelimiter{\Uuparrow}   {\mathrel}{arrows1}{"5F}{arrows1}{"5F}
+\stix@MathDelimiter{\Ddownarrow} {\mathrel}{arrows1}{"60}{arrows1}{"60}
+\stix@MathDelimiter{\arrowvert}  {\mathrel}{arrows1}{"3C}{arrows1}{"3C}
+\stix@MathDelimiter{\Arrowvert}  {\mathrel}{arrows1}{"3D}{arrows1}{"3D}
+\stix@MathRadical{\sqrtsign}    {largesymbols}{"F9}{largesymbols}{"74}
+\stix@MathRadical{\longdivision}{largesymbols}{"FA}{largesymbols}{"FA}
+\def\surd{{\mathchar"13F9}}
+\stix@MathSymbol{\smallintsl}             {\mathop}{integrals}{"00}
+\stix@MathSymbol{\smalliintsl}            {\mathop}{integrals}{"01}
+\stix@MathSymbol{\smalliiintsl}           {\mathop}{integrals}{"02}
+\stix@MathSymbol{\smallointsl}            {\mathop}{integrals}{"03}
+\stix@MathSymbol{\smalloiintsl}           {\mathop}{integrals}{"04}
+\stix@MathSymbol{\smalloiiintsl}          {\mathop}{integrals}{"05}
+\stix@MathSymbol{\smallintclockwisesl}    {\mathop}{integrals}{"06}
+\stix@MathSymbol{\smallvarointclockwisesl}{\mathop}{integrals}{"07}
+\stix@MathSymbol{\smallointctrclockwisesl}{\mathop}{integrals}{"08}
+\stix@MathSymbol{\smallsumintsl}          {\mathop}{integrals}{"09}
+\stix@MathSymbol{\smalliiiintsl}          {\mathop}{integrals}{"0A}
+\stix@MathSymbol{\smallintbarsl}          {\mathop}{integrals}{"0B}
+\stix@MathSymbol{\smallintBarsl}          {\mathop}{integrals}{"0C}
+\stix@MathSymbol{\smallfintsl}            {\mathop}{integrals}{"0D}
+\stix@MathSymbol{\smallcirfnintsl}        {\mathop}{integrals}{"0E}
+\stix@MathSymbol{\smallawintsl}           {\mathop}{integrals}{"0F}
+\stix@MathSymbol{\smallrppolintsl}        {\mathop}{integrals}{"10}
+\stix@MathSymbol{\smallscpolintsl}        {\mathop}{integrals}{"11}
+\stix@MathSymbol{\smallnpolintsl}         {\mathop}{integrals}{"12}
+\stix@MathSymbol{\smallpointintsl}        {\mathop}{integrals}{"13}
+\stix@MathSymbol{\smallsqintsl}           {\mathop}{integrals}{"14}
+\stix@MathSymbol{\smallintlarhksl}        {\mathop}{integrals}{"15}
+\stix@MathSymbol{\smallintxsl}            {\mathop}{integrals}{"16}
+\stix@MathSymbol{\smallintcapsl}          {\mathop}{integrals}{"17}
+\stix@MathSymbol{\smallintcupsl}          {\mathop}{integrals}{"18}
+\stix@MathSymbol{\smallupintsl}           {\mathop}{integrals}{"19}
+\stix@MathSymbol{\smalllowintsl}          {\mathop}{integrals}{"1A}
+\stix@MathSymbol{\smallintup}             {\mathop}{integrals}{"1B}
+\stix@MathSymbol{\smalliintup}            {\mathop}{integrals}{"1C}
+\stix@MathSymbol{\smalliiintup}           {\mathop}{integrals}{"1D}
+\stix@MathSymbol{\smallointup}            {\mathop}{integrals}{"1E}
+\stix@MathSymbol{\smalloiintup}           {\mathop}{integrals}{"1F}
+\stix@MathSymbol{\smalloiiintup}          {\mathop}{integrals}{"20}
+\stix@MathSymbol{\smallintclockwiseup}    {\mathop}{integrals}{"21}
+\stix@MathSymbol{\smallvarointclockwiseup}{\mathop}{integrals}{"22}
+\stix@MathSymbol{\smallointctrclockwiseup}{\mathop}{integrals}{"23}
+\stix@MathSymbol{\smallsumintup}          {\mathop}{integrals}{"24}
+\stix@MathSymbol{\smalliiiintup}          {\mathop}{integrals}{"25}
+\stix@MathSymbol{\smallintbarup}          {\mathop}{integrals}{"26}
+\stix@MathSymbol{\smallintBarup}          {\mathop}{integrals}{"27}
+\stix@MathSymbol{\smallfintup}            {\mathop}{integrals}{"28}
+\stix@MathSymbol{\smallcirfnintup}        {\mathop}{integrals}{"29}
+\stix@MathSymbol{\smallawintup}           {\mathop}{integrals}{"2A}
+\stix@MathSymbol{\smallrppolintup}        {\mathop}{integrals}{"2B}
+\stix@MathSymbol{\smallscpolintup}        {\mathop}{integrals}{"2C}
+\stix@MathSymbol{\smallnpolintup}         {\mathop}{integrals}{"2D}
+\stix@MathSymbol{\smallpointintup}        {\mathop}{integrals}{"2E}
+\stix@MathSymbol{\smallsqintup}           {\mathop}{integrals}{"2F}
+\stix@MathSymbol{\smallintlarhkup}        {\mathop}{integrals}{"30}
+\stix@MathSymbol{\smallintxup}            {\mathop}{integrals}{"31}
+\stix@MathSymbol{\smallintcapup}          {\mathop}{integrals}{"32}
+\stix@MathSymbol{\smallintcupup}          {\mathop}{integrals}{"33}
+\stix@MathSymbol{\smallupintup}           {\mathop}{integrals}{"34}
+\stix@MathSymbol{\smalllowintup}          {\mathop}{integrals}{"35}
+\stix@MathSymbol{\intslop}                {\mathop}{integrals}{"94}
+\stix@MathSymbol{\iintslop}               {\mathop}{integrals}{"95}
+\stix@MathSymbol{\iiintslop}              {\mathop}{integrals}{"96}
+\stix@MathSymbol{\ointslop}               {\mathop}{integrals}{"97}
+\stix@MathSymbol{\oiintslop}              {\mathop}{integrals}{"98}
+\stix@MathSymbol{\oiiintslop}             {\mathop}{integrals}{"99}
+\stix@MathSymbol{\intclockwiseslop}       {\mathop}{integrals}{"9A}
+\stix@MathSymbol{\varointclockwiseslop}   {\mathop}{integrals}{"9B}
+\stix@MathSymbol{\ointctrclockwiseslop}   {\mathop}{integrals}{"9C}
+\stix@MathSymbol{\sumintslop}             {\mathop}{integrals}{"9D}
+\stix@MathSymbol{\iiiintslop}             {\mathop}{integrals}{"9E}
+\stix@MathSymbol{\intbarslop}             {\mathop}{integrals}{"9F}
+\stix@MathSymbol{\intBarslop}             {\mathop}{integrals}{"A0}
+\stix@MathSymbol{\fintslop}               {\mathop}{integrals}{"A1}
+\stix@MathSymbol{\cirfnintslop}           {\mathop}{integrals}{"A2}
+\stix@MathSymbol{\awintslop}              {\mathop}{integrals}{"A3}
+\stix@MathSymbol{\rppolintslop}           {\mathop}{integrals}{"A4}
+\stix@MathSymbol{\scpolintslop}           {\mathop}{integrals}{"A5}
+\stix@MathSymbol{\npolintslop}            {\mathop}{integrals}{"A6}
+\stix@MathSymbol{\pointintslop}           {\mathop}{integrals}{"A7}
+\stix@MathSymbol{\sqintslop}              {\mathop}{integrals}{"A8}
+\stix@MathSymbol{\intlarhkslop}           {\mathop}{integrals}{"A9}
+\stix@MathSymbol{\intxslop}               {\mathop}{integrals}{"AA}
+\stix@MathSymbol{\intcapslop}             {\mathop}{integrals}{"AB}
+\stix@MathSymbol{\intcupslop}             {\mathop}{integrals}{"AC}
+\stix@MathSymbol{\upintslop}              {\mathop}{integrals}{"AD}
+\stix@MathSymbol{\lowintslop}             {\mathop}{integrals}{"AE}
+\stix@MathSymbol{\intupop}                {\mathop}{integrals}{"AF}
+\stix@MathSymbol{\iintupop}               {\mathop}{integrals}{"B0}
+\stix@MathSymbol{\iiintupop}              {\mathop}{integrals}{"B1}
+\stix@MathSymbol{\ointupop}               {\mathop}{integrals}{"B2}
+\stix@MathSymbol{\oiintupop}              {\mathop}{integrals}{"B3}
+\stix@MathSymbol{\oiiintupop}             {\mathop}{integrals}{"B4}
+\stix@MathSymbol{\intclockwiseupop}       {\mathop}{integrals}{"B5}
+\stix@MathSymbol{\varointclockwiseupop}   {\mathop}{integrals}{"B6}
+\stix@MathSymbol{\ointctrclockwiseupop}   {\mathop}{integrals}{"B7}
+\stix@MathSymbol{\sumintupop}             {\mathop}{integrals}{"B8}
+\stix@MathSymbol{\iiiintupop}             {\mathop}{integrals}{"B9}
+\stix@MathSymbol{\intbarupop}             {\mathop}{integrals}{"BA}
+\stix@MathSymbol{\intBarupop}             {\mathop}{integrals}{"BB}
+\stix@MathSymbol{\fintupop}               {\mathop}{integrals}{"BC}
+\stix@MathSymbol{\cirfnintupop}           {\mathop}{integrals}{"BD}
+\stix@MathSymbol{\awintupop}              {\mathop}{integrals}{"BE}
+\stix@MathSymbol{\rppolintupop}           {\mathop}{integrals}{"BF}
+\stix@MathSymbol{\scpolintupop}           {\mathop}{integrals}{"C0}
+\stix@MathSymbol{\npolintupop}            {\mathop}{integrals}{"C1}
+\stix@MathSymbol{\pointintupop}           {\mathop}{integrals}{"C2}
+\stix@MathSymbol{\sqintupop}              {\mathop}{integrals}{"C3}
+\stix@MathSymbol{\intlarhkupop}           {\mathop}{integrals}{"C4}
+\stix@MathSymbol{\intxupop}               {\mathop}{integrals}{"C5}
+\stix@MathSymbol{\intcapupop}             {\mathop}{integrals}{"C6}
+\stix@MathSymbol{\intcupupop}             {\mathop}{integrals}{"C7}
+\stix@MathSymbol{\upintupop}              {\mathop}{integrals}{"C8}
+\stix@MathSymbol{\lowintupop}             {\mathop}{integrals}{"C9}
+
+\stix@MathSymbol{\circledS}               {\mathord}{integrals}{"3B}
+\stix@MathSymbol{\diagdown}               {\mathord}{integrals}{"3C}
+\stix@MathSymbol{\diagup}                 {\mathord}{integrals}{"3D}
+\stix@MathSymbol{\eth}                    {\mathord}{integrals}{"3E}
+\stix@MathSymbol{\smallfrown}             {\mathrel}{integrals}{"3F}
+\stix@MathSymbol{\smallsmile}             {\mathrel}{integrals}{"40}
+\stix@MathSymbol{\gvertneqq}              {\mathrel}{integrals}{"5B}
+\stix@MathSymbol{\lvertneqq}              {\mathrel}{integrals}{"5C}
+\stix@MathSymbol{\nshortmid}              {\mathrel}{integrals}{"5D}
+\stix@MathSymbol{\nshortparallel}         {\mathrel}{integrals}{"5E}
+\stix@MathSymbol{\shortmid}               {\mathrel}{integrals}{"5F}
+\stix@MathSymbol{\shortparallel}          {\mathrel}{integrals}{"60}
+\stix@MathSymbol{\varsubsetneq}           {\mathrel}{integrals}{"61}
+\stix@MathSymbol{\varsupsetneq}           {\mathrel}{integrals}{"62}
+\stix@MathSymbol{\varsubsetneqq}          {\mathrel}{integrals}{"63}
+\stix@MathSymbol{\varsupsetneqq}          {\mathrel}{integrals}{"64}
+\stix@MathSymbol{\varkappa}               {\mathord}{integrals}{"7A}
+\stix@MathSymbol{\digamma}                {\mathord}{integrals}{"7B}
+\stix@MathSymbol{\backepsilon}            {\mathord}{integrals}{"7C}
+\stix@MathSymbol{\varpropto}              {\mathrel}{integrals}{"7E}
+\stix@MathSymbol{\yenmath}                {\mathord}{integrals}{"7D}
+\stix@MathSymbol{\circledRmath}           {\mathord}{integrals}{"3A}
+\stix@MathSymbol{\maltesemath}            {\mathord}{arrows3}{"83}
+\stix@MathSymbol{\circledstar}            {\mathord}{arrows3}{"84}
+\DeclareRobustCommand\yen{%
+  \ifmmode\yenmath\else{\fontencoding{TS1}\selectfont\char"A5}\fi}
+\DeclareRobustCommand\circledR{%
+  \ifmmode\circledRmath\else{\fontencoding{TS1}\selectfont\char"AE}\fi}
+\DeclareRobustCommand\checkmark{\ensuremath{\checkmarkmath}}
+\DeclareRobustCommand\maltese{\ensuremath{\maltesemath}}
+\ifstix@upint
+    \let\smallint=\smallintup
+    \let\smalliint=\smalliintup
+    \let\smalliiint=\smalliiintup
+    \let\smalloint=\smallointup
+    \let\smalloiint=\smalloiintup
+    \let\smalloiiint=\smalloiiintup
+    \let\smallintclockwise=\smallintclockwiseup
+    \let\smallvarointclockwise=\smallvarointclockwiseup
+    \let\smallointctrclockwise=\smallointctrclockwiseup
+    \let\smallsumint=\smallsumintup
+    \let\smalliiiint=\smalliiiintup
+    \let\smallintbar=\smallintbarup
+    \let\smallintBar=\smallintBarup
+    \let\smallfint=\smallfintup
+    \let\smallcirfnint=\smallcirfnintup
+    \let\smallawint=\smallawintup
+    \let\smallrppolint=\smallrppolintup
+    \let\smallscpolint=\smallscpolintup
+    \let\smallnpolint=\smallnpolintup
+    \let\smallpointint=\smallpointintup
+    \let\smallsqint=\smallsqintup
+    \let\smallintlarhk=\smallintlarhkup
+    \let\smallintx=\smallintxup
+    \let\smallintcap=\smallintcapup
+    \let\smallintcup=\smallintcupup
+    \let\smallupint=\smallupintup
+    \let\smalllowint=\smalllowintup
+    \let\intop=\intupop
+    \let\iintop=\iintupop
+    \let\iiintop=\iiintupop
+    \let\ointop=\ointupop
+    \let\oiintop=\oiintupop
+    \let\oiiintop=\oiiintupop
+    \let\intclockwiseop=\intclockwiseupop
+    \let\varointclockwiseop=\varointclockwiseupop
+    \let\ointctrclockwiseop=\ointctrclockwiseupop
+    \let\sumintop=\sumintupop
+    \let\iiiintop=\iiiintupop
+    \let\intbarop=\intbarupop
+    \let\intBarop=\intBarupop
+    \let\fintop=\fintupop
+    \let\cirfnintop=\cirfnintupop
+    \let\awintop=\awintupop
+    \let\rppolintop=\rppolintupop
+    \let\scpolintop=\scpolintupop
+    \let\npolintop=\npolintupop
+    \let\pointintop=\pointintupop
+    \let\sqintop=\sqintupop
+    \let\intlarhkop=\intlarhkupop
+    \let\intxop=\intxupop
+    \let\intcapop=\intcapupop
+    \let\intcupop=\intcupupop
+    \let\upintop=\upintupop
+    \let\lowintop=\lowintupop
+\else
+    \let\smallint=\smallintsl
+    \let\smalliint=\smalliintsl
+    \let\smalliiint=\smalliiintsl
+    \let\smalloint=\smallointsl
+    \let\smalloiint=\smalloiintsl
+    \let\smalloiiint=\smalloiiintsl
+    \let\smallintclockwise=\smallintclockwisesl
+    \let\smallvarointclockwise=\smallvarointclockwisesl
+    \let\smallointctrclockwise=\smallointctrclockwisesl
+    \let\smallsumint=\smallsumintsl
+    \let\smalliiiint=\smalliiiintsl
+    \let\smallintbar=\smallintbarsl
+    \let\smallintBar=\smallintBarsl
+    \let\smallfint=\smallfintsl
+    \let\smallcirfnint=\smallcirfnintsl
+    \let\smallawint=\smallawintsl
+    \let\smallrppolint=\smallrppolintsl
+    \let\smallscpolint=\smallscpolintsl
+    \let\smallnpolint=\smallnpolintsl
+    \let\smallpointint=\smallpointintsl
+    \let\smallsqint=\smallsqintsl
+    \let\smallintlarhk=\smallintlarhksl
+    \let\smallintx=\smallintxsl
+    \let\smallintcap=\smallintcapsl
+    \let\smallintcup=\smallintcupsl
+    \let\smallupint=\smallupintsl
+    \let\smalllowint=\smalllowintsl
+    \let\intop=\intslop
+    \let\iintop=\iintslop
+    \let\iiintop=\iiintslop
+    \let\ointop=\ointslop
+    \let\oiintop=\oiintslop
+    \let\oiiintop=\oiiintslop
+    \let\intclockwiseop=\intclockwiseslop
+    \let\varointclockwiseop=\varointclockwiseslop
+    \let\ointctrclockwiseop=\ointctrclockwiseslop
+    \let\sumintop=\sumintslop
+    \let\iiiintop=\iiiintslop
+    \let\intbarop=\intbarslop
+    \let\intBarop=\intBarslop
+    \let\fintop=\fintslop
+    \let\cirfnintop=\cirfnintslop
+    \let\awintop=\awintslop
+    \let\rppolintop=\rppolintslop
+    \let\scpolintop=\scpolintslop
+    \let\npolintop=\npolintslop
+    \let\pointintop=\pointintslop
+    \let\sqintop=\sqintslop
+    \let\intlarhkop=\intlarhkslop
+    \let\intxop=\intxslop
+    \let\intcapop=\intcapslop
+    \let\intcupop=\intcupslop
+    \let\upintop=\upintslop
+    \let\lowintop=\lowintslop
+\fi
+\def\int{\DOTSI\intop\ilimits@}
+\def\iint{\DOTSI\iintop\ilimits@}
+\def\iiint{\DOTSI\iiintop\ilimits@}
+\def\oint{\DOTSI\ointop\ilimits@}
+\def\oiint{\DOTSI\oiintop\ilimits@}
+\def\oiiint{\DOTSI\oiiintop\ilimits@}
+\def\intclockwise{\DOTSI\intclockwiseop\ilimits@}
+\def\varointclockwise{\DOTSI\varointclockwiseop\ilimits@}
+\def\ointctrclockwise{\DOTSI\ointctrclockwiseop\ilimits@}
+\def\sumint{\DOTSI\sumintop\ilimits@}
+\def\iiiint{\DOTSI\iiiintop\ilimits@}
+\def\intbar{\DOTSI\intbarop\ilimits@}
+\def\intBar{\DOTSI\intBarop\ilimits@}
+\def\fint{\DOTSI\fintop\ilimits@}
+\def\cirfnint{\DOTSI\cirfnintop\ilimits@}
+\def\awint{\DOTSI\awintop\ilimits@}
+\def\rppolint{\DOTSI\rppolintop\ilimits@}
+\def\scpolint{\DOTSI\scpolintop\ilimits@}
+\def\npolint{\DOTSI\npolintop\ilimits@}
+\def\pointint{\DOTSI\pointintop\ilimits@}
+\def\sqint{\DOTSI\sqintop\ilimits@}
+\def\intlarhk{\DOTSI\intlarhkop\ilimits@}
+\def\intx{\DOTSI\intxop\ilimits@}
+\def\intcap{\DOTSI\intcapop\ilimits@}
+\def\intcup{\DOTSI\intcupop\ilimits@}
+\def\upint{\DOTSI\upintop\ilimits@}
+\def\lowint{\DOTSI\lowintop\ilimits@}
+\def\intsl{\DOTSI\intslop\ilimits@}
+\def\iintsl{\DOTSI\iintslop\ilimits@}
+\def\iiintsl{\DOTSI\iiintslop\ilimits@}
+\def\ointsl{\DOTSI\ointslop\ilimits@}
+\def\oiintsl{\DOTSI\oiintslop\ilimits@}
+\def\oiiintsl{\DOTSI\oiiintslop\ilimits@}
+\def\intclockwisesl{\DOTSI\intclockwiseslop\ilimits@}
+\def\varointclockwisesl{\DOTSI\varointclockwiseslop\ilimits@}
+\def\ointctrclockwisesl{\DOTSI\ointctrclockwiseslop\ilimits@}
+\def\sumintsl{\DOTSI\sumintslop\ilimits@}
+\def\iiiintsl{\DOTSI\iiiintslop\ilimits@}
+\def\intbarsl{\DOTSI\intbarslop\ilimits@}
+\def\intBarsl{\DOTSI\intBarslop\ilimits@}
+\def\fintsl{\DOTSI\fintslop\ilimits@}
+\def\cirfnintsl{\DOTSI\cirfnintslop\ilimits@}
+\def\awintsl{\DOTSI\awintslop\ilimits@}
+\def\rppolintsl{\DOTSI\rppolintslop\ilimits@}
+\def\scpolintsl{\DOTSI\scpolintslop\ilimits@}
+\def\npolintsl{\DOTSI\npolintslop\ilimits@}
+\def\pointintsl{\DOTSI\pointintslop\ilimits@}
+\def\sqintsl{\DOTSI\sqintslop\ilimits@}
+\def\intlarhksl{\DOTSI\intlarhkslop\ilimits@}
+\def\intxsl{\DOTSI\intxslop\ilimits@}
+\def\intcapsl{\DOTSI\intcapslop\ilimits@}
+\def\intcupsl{\DOTSI\intcupslop\ilimits@}
+\def\upintsl{\DOTSI\upintslop\ilimits@}
+\def\lowintsl{\DOTSI\lowintslop\ilimits@}
+\def\intup{\DOTSI\intupop\ilimits@}
+\def\iintup{\DOTSI\iintupop\ilimits@}
+\def\iiintup{\DOTSI\iiintupop\ilimits@}
+\def\ointup{\DOTSI\ointupop\ilimits@}
+\def\oiintup{\DOTSI\oiintupop\ilimits@}
+\def\oiiintup{\DOTSI\oiiintupop\ilimits@}
+\def\intclockwiseup{\DOTSI\intclockwiseupop\ilimits@}
+\def\varointclockwiseup{\DOTSI\varointclockwiseupop\ilimits@}
+\def\ointctrclockwiseup{\DOTSI\ointctrclockwiseupop\ilimits@}
+\def\sumintup{\DOTSI\sumintupop\ilimits@}
+\def\iiiintup{\DOTSI\iiiintupop\ilimits@}
+\def\intbarup{\DOTSI\intbarupop\ilimits@}
+\def\intBarup{\DOTSI\intBarupop\ilimits@}
+\def\fintup{\DOTSI\fintupop\ilimits@}
+\def\cirfnintup{\DOTSI\cirfnintupop\ilimits@}
+\def\awintup{\DOTSI\awintupop\ilimits@}
+\def\rppolintup{\DOTSI\rppolintupop\ilimits@}
+\def\scpolintup{\DOTSI\scpolintupop\ilimits@}
+\def\npolintup{\DOTSI\npolintupop\ilimits@}
+\def\pointintup{\DOTSI\pointintupop\ilimits@}
+\def\sqintup{\DOTSI\sqintupop\ilimits@}
+\def\intlarhkup{\DOTSI\intlarhkupop\ilimits@}
+\def\intxup{\DOTSI\intxupop\ilimits@}
+\def\intcapup{\DOTSI\intcapupop\ilimits@}
+\def\intcupup{\DOTSI\intcupupop\ilimits@}
+\def\upintup{\DOTSI\upintupop\ilimits@}
+\def\lowintup{\DOTSI\lowintupop\ilimits@}
+\stix@MathSymbol{\Bbbsumop}               {\mathop}{largesymbols}{"B0}
+\stix@MathSymbol{\prodop}                 {\mathop}{largesymbols}{"B1}
+\stix@MathSymbol{\coprodop}               {\mathop}{largesymbols}{"B2}
+\stix@MathSymbol{\sumop}                  {\mathop}{largesymbols}{"B3}
+\stix@MathSymbol{\bigwedgeop}             {\mathop}{largesymbols}{"B4}
+\stix@MathSymbol{\bigveeop}               {\mathop}{largesymbols}{"B5}
+\stix@MathSymbol{\bigcapop}               {\mathop}{largesymbols}{"B6}
+\stix@MathSymbol{\bigcupop}               {\mathop}{largesymbols}{"B7}
+\stix@MathSymbol{\xsolop}                 {\mathop}{largesymbols}{"B8}
+\stix@MathSymbol{\xbsolop}                {\mathop}{largesymbols}{"B9}
+\stix@MathSymbol{\bigodotop}              {\mathop}{largesymbols}{"BA}
+\stix@MathSymbol{\bigoplusop}             {\mathop}{largesymbols}{"BB}
+\stix@MathSymbol{\bigotimesop}            {\mathop}{largesymbols}{"BC}
+\stix@MathSymbol{\bigcupdotop}            {\mathop}{largesymbols}{"BD}
+\stix@MathSymbol{\biguplusop}             {\mathop}{largesymbols}{"BE}
+\stix@MathSymbol{\bigsqcapop}             {\mathop}{largesymbols}{"BF}
+\stix@MathSymbol{\bigsqcupop}             {\mathop}{largesymbols}{"C0}
+\stix@MathSymbol{\conjquantop}            {\mathop}{largesymbols}{"C1}
+\stix@MathSymbol{\disjquantop}            {\mathop}{largesymbols}{"C2}
+\stix@MathSymbol{\bigtimesop}             {\mathop}{largesymbols}{"C3}
+\stix@MathSymbol{\modtwosumop}            {\mathop}{largesymbols}{"C4}
+\stix@MathSymbol{\bigtalloblongop}        {\mathop}{largesymbols}{"C5}
+\def\Bbbsum{\DOTSI\Bbbsumop\slimits@}
+\def\prod{\DOTSI\prodop\slimits@}
+\def\coprod{\DOTSI\coprodop\slimits@}
+\def\sum{\DOTSI\sumop\slimits@}
+\def\bigwedge{\DOTSI\bigwedgeop\slimits@}
+\def\bigvee{\DOTSI\bigveeop\slimits@}
+\def\bigcap{\DOTSI\bigcapop\slimits@}
+\def\bigcup{\DOTSI\bigcupop\slimits@}
+\def\xsol{\DOTSI\xsolop\slimits@}
+\def\xbsol{\DOTSI\xbsolop\slimits@}
+\def\bigodot{\DOTSI\bigodotop\slimits@}
+\def\bigoplus{\DOTSI\bigoplusop\slimits@}
+\def\bigotimes{\DOTSI\bigotimesop\slimits@}
+\def\bigcupdot{\DOTSI\bigcupdotop\slimits@}
+\def\biguplus{\DOTSI\biguplusop\slimits@}
+\def\bigsqcap{\DOTSI\bigsqcapop\slimits@}
+\def\bigsqcup{\DOTSI\bigsqcupop\slimits@}
+\def\conjquant{\DOTSI\conjquantop\slimits@}
+\def\disjquant{\DOTSI\disjquantop\slimits@}
+\def\bigtimes{\DOTSI\bigtimesop\slimits@}
+\def\modtwosum{\DOTSI\modtwosumop\slimits@}
+\def\bigtalloblong{\DOTSI\bigtalloblongop\slimits@}
+\stix@MathAccent{\grave}                {\mathalpha}{letters}{"80}
+\stix@MathAccent{\acute}                {\mathalpha}{letters}{"81}
+\stix@MathAccent{\hat}                  {\mathalpha}{letters}{"82}
+\stix@MathAccent{\tilde}                {\mathalpha}{letters}{"83}
+\stix@MathAccent{\bar}                  {\mathalpha}{letters}{"84}
+\stix@MathAccent{\breve}                {\mathalpha}{letters}{"85}
+\stix@MathAccent{\dot}                  {\mathalpha}{letters}{"86}
+\stix@MathAccent{\ddot}                 {\mathalpha}{letters}{"87}
+\stix@MathAccent{\ovhook}               {\mathalpha}{letters}{"88}
+\stix@MathAccent{\mathring}             {\mathalpha}{letters}{"89}
+\stix@MathAccent{\check}                {\mathalpha}{letters}{"8A}
+\stix@MathAccent{\candra}               {\mathalpha}{letters}{"8B}
+\stix@MathAccent{\oturnedcomma}         {\mathalpha}{letters}{"8C}
+\stix@MathAccent{\ocommatopright}       {\mathalpha}{letters}{"8D}
+\stix@MathAccent{\droang}               {\mathalpha}{letters}{"8E}
+\stix@MathAccent{\leftharpoonaccent}    {\mathalpha}{letters}{"8F}
+\stix@MathAccent{\rightharpoonaccent}   {\mathalpha}{letters}{"90}
+\stix@MathAccent{\leftarrowaccent}      {\mathalpha}{letters}{"91}
+\stix@MathAccent{\vec}                  {\mathalpha}{letters}{"92}
+        % not \let because amsmath redefines \vec
+        \def\rightarrowaccent{\vec}
+\stix@MathAccent{\dddot}                {\mathalpha}{letters}{"93}
+\stix@MathAccent{\ddddot}               {\mathalpha}{letters}{"94}
+\stix@MathAccent{\leftrightarrowaccent} {\mathalpha}{letters}{"95}
+\stix@MathAccent{\annuity}              {\mathalpha}{letters}{"96}
+\stix@MathAccent{\widebridgeabove}      {\mathalpha}{letters}{"97}
+\stix@MathAccent{\asteraccent}          {\mathalpha}{letters}{"98}
+\begingroup
+  \def\set@mathaccent#1#2#3#4{%
+      \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
+  \stix@MathAccent{\widehat}            {\mathord}{letters}{"9A}
+  \stix@MathAccent{\widetilde}          {\mathord}{letters}{"9B}
+  \stix@MathAccent{\widecheck}          {\mathord}{letters}{"9C}
+\endgroup
+\stix@MathSymbol{\braceld}{\mathord}{letters}{"A9}
+\stix@MathSymbol{\bracerd}{\mathord}{letters}{"AA}
+\stix@MathSymbol{\bracelu}{\mathord}{letters}{"AB}
+\stix@MathSymbol{\braceru}{\mathord}{letters}{"AC}
+\stix@MathSymbol{\braceex}{\mathord}{letters}{"AD}
+\stix@MathSymbol{\bracemu}{\mathord}{letters}{"AE}
+\stix@MathSymbol{\bracemd}{\mathord}{letters}{"AF}
+\stix@MathSymbol{\parenld}{\mathord}{letters}{"B0}
+\stix@MathSymbol{\parenrd}{\mathord}{letters}{"B1}
+\stix@MathSymbol{\parenlu}{\mathord}{letters}{"B2}
+\stix@MathSymbol{\parenru}{\mathord}{letters}{"B3}
+\stix@MathSymbol{\bracketld}{\mathord}{letters}{"B4}
+\stix@MathSymbol{\bracketrd}{\mathord}{letters}{"B5}
+\stix@MathSymbol{\bracketlu}{\mathord}{letters}{"B6}
+\stix@MathSymbol{\bracketru}{\mathord}{letters}{"B7}
+\def\stix@braceglue{\hskip -.15em plus .15em}
+\def\downbracefill{$\m@th%
+    \braceld\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracemu\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracerd$}
+\def\upbracefill{$\m@th%
+    \bracelu\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\bracemd\stix@braceglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@braceglue\braceru$}
+\def\stix@parenglue{\hskip -.2em plus .2em}
+\def\downparenfill{$\m@th%
+    \parenld\stix@parenglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@parenglue\parenrd$}
+\def\upparenfill{$\m@th%
+    \parenlu\stix@parenglue%
+    \cleaders\hbox{$\braceex$}\hfill%
+    \stix@parenglue\parenru$}
+\def\stix@overbrace#1#2{%
+    \mathop {%
+        \vbox {%
+            \m@th%
+            \ialign{##\crcr%
+                \noalign{\kern.3\fontdimen5\textfont2}%
+                    \csname down#1fill\endcsname\crcr%
+                \noalign{\kern.5\fontdimen5\textfont2\nointerlineskip}%
+                $\hfil\displaystyle{#2}\hfil$\crcr%
+            }%
+        }%
+    }%
+    \limits%
+}
+\def\stix@underbrace#1#2{
+    \mathop {%
+        \vtop {%
+            \m@th%
+            \ialign{##\crcr%
+                $\hfil\displaystyle{#2}\hfil$\crcr%
+                \noalign{\kern.5\fontdimen5\textfont2\nointerlineskip}%
+                \csname up#1fill\endcsname\crcr%
+                \noalign{\kern.3\fontdimen5\textfont2}%
+            }%
+        }%
+    }%
+    \limits%
+}
+\def\overbrace#1{\stix@overbrace{brace}{#1}}
+\def\overparen#1{\stix@overbrace{paren}{#1}}
+\def\underbrace#1{\stix@underbrace{brace}{#1}}
+\def\underparen#1{\stix@underbrace{paren}{#1}}
+\AtBeginDocument{
+    \@ifpackageloaded{mathtools}{}{
+        \def\stix@bracketglue{\hskip -.85em plus .85em}
+        \def\downbracketfill{$\m@th%
+            \bracketld\stix@bracketglue%
+            \cleaders\hbox{$\braceex$}\hfill%
+            \stix@bracketglue\bracketrd$}
+        \def\upbracketfill{$\m@th%
+            \bracketlu\stix@bracketglue%
+            \cleaders\hbox{$\braceex$}\hfill%
+            \stix@bracketglue\bracketru$}
+        \def\underbracket#1{\stix@underbrace{bracket}{#1}}
+        \def\overbracket#1{\stix@overbrace{bracket}{#1}}
+    }
+}
+\stix@MathSymbol{\arrowaccentex}  {\mathord}{letters}{"99}
+\stix@MathSymbol{\harpoonaccentlt}{\mathord}{letters}{"8F}
+\stix@MathSymbol{\harpoonaccentrt}{\mathord}{letters}{"90}
+\stix@MathSymbol{\arrowaccentlt}  {\mathord}{letters}{"91}
+\stix@MathSymbol{\arrowaccentrt}  {\mathord}{letters}{"92}
+\def\stix@arrowaccentglue{\hskip -.23em plus .23em}
+\def\overleftarrowfill{$\m@th%
+    \arrowaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill$}
+\def\overrightarrowfill{$\m@th%
+    \cleaders\hbox{$\arrowaccentex$}\hfill%
+    \stix@arrowaccentglue\arrowaccentrt$}
+\def\overleftrightarrowfill{$\m@th%
+    \arrowaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill%
+    \stix@arrowaccentglue\arrowaccentrt$}
+\def\overleftharpoonfill{$\m@th%
+    \harpoonaccentlt\stix@arrowaccentglue%
+    \cleaders\hbox{$\arrowaccentex$}\hfill$}
+\def\overrightharpoonfill{$\m@th%
+   \cleaders\hbox{$\arrowaccentex$}\hfill%
+   \stix@arrowaccentglue\harpoonaccentrt$}
+\def\stix@overarrow#1#2#3{%
+    \vbox {%
+        \m@th%
+        \ialign{##\crcr%
+            \csname over#1fill\endcsname\crcr%
+            \noalign{\kern -1ex\nointerlineskip}%
+            $\hfil#2#3\hfil$\crcr%
+        }%
+    }%
+}
+\def\stix@underarrow#1#2#3{
+    \vtop {%
+        \m@th%
+        \ialign{##\crcr%
+            $\hfil#2#3\hfil$\crcr%
+            \noalign{\kern .2ex\nointerlineskip}%
+            \csname over#1fill\endcsname\crcr%
+            \noalign{\kern -1ex\nointerlineskip}%
+        }%
+    }%
+}
+\def\overleftarrow{\mathpalette{\stix@overarrow{leftarrow}}}
+\def\overrightarrow{\mathpalette{\stix@overarrow{rightarrow}}}
+\def\overleftrightarrow{\mathpalette{\stix@overarrow{leftrightarrow}}}
+\def\overleftharpoon{\mathpalette{\stix@overarrow{leftharpoon}}}
+\def\overrightharpoon{\mathpalette{\stix@overarrow{rightharpoon}}}
+\def\underleftarrow{\mathpalette{\stix@underarrow{leftarrow}}}
+\def\underrightarrow{\mathpalette{\stix@underarrow{rightarrow}}}
+\def\underleftrightarrow{\mathpalette{\stix@underarrow{leftrightarrow}}}
+\def\underleftharpoon{\mathpalette{\stix@underarrow{leftharpoon}}}
+\def\underrightharpoon{\mathpalette{\stix@underarrow{rightharpoon}}}
+\stix@MathSymbol{\lhook}                    {\mathrel}{arrows1}{"2A}
+\stix@MathSymbol{\rhook}                    {\mathrel}{arrows1}{"2B}
+\stix@MathSymbol{\relbar}                   {\mathrel}{arrows1}{"2C}
+\stix@MathSymbol{\Relbar}                   {\mathrel}{arrows1}{"2D}
+\stix@MathSymbol{\Rrelbar}                  {\mathrel}{arrows1}{"2E}
+\stix@MathSymbol{\RRelbar}                  {\mathrel}{arrows1}{"2F}
+
+\stix@MathSymbol{\mapsfromchar}             {\mathrel}{arrows1}{"3A}
+\stix@MathSymbol{\mapstochar}               {\mathrel}{arrows1}{"3B}
+\stix@MathSymbol{\rightarrowbackapprox}     {\mathrel}{arrows1}{"40}
+\stix@MathSymbol{\similarleftarrow}         {\mathrel}{arrows1}{"5B}
+\stix@MathSymbol{\leftarrowapprox}          {\mathrel}{arrows1}{"5C}
+\stix@MathSymbol{\leftarrowbsimilar}        {\mathrel}{arrows1}{"5D}
+\stix@MathSymbol{\rightarrowbsimilar}       {\mathrel}{arrows1}{"5E}
+\stix@MathSymbol{\leftarrow}                {\mathrel}{arrows1}{"7D} \let\gets=\leftarrow
+\stix@MathSymbol{\rightarrow}               {\mathrel}{arrows1}{"99} \let\to=\rightarrow
+\stix@MathSymbol{\leftrightarrow}           {\mathrel}{arrows1}{"9B}
+\stix@MathSymbol{\nwarrow}                  {\mathrel}{arrows1}{"9D}
+\stix@MathSymbol{\nearrow}                  {\mathrel}{arrows1}{"9E}
+\stix@MathSymbol{\searrow}                  {\mathrel}{arrows1}{"9F}
+
+\stix@MathSymbol{\swarrow}                  {\mathrel}{arrows1}{"A0}
+\stix@MathSymbol{\nleftarrow}               {\mathrel}{arrows1}{"A1}
+\stix@MathSymbol{\nrightarrow}              {\mathrel}{arrows1}{"A2}
+\stix@MathSymbol{\leftwavearrow}            {\mathrel}{arrows1}{"A3}
+\stix@MathSymbol{\rightwavearrow}           {\mathrel}{arrows1}{"A4}
+\stix@MathSymbol{\twoheadleftarrow}         {\mathrel}{arrows1}{"A5}
+\stix@MathSymbol{\twoheaduparrow}           {\mathrel}{arrows1}{"A6}
+\stix@MathSymbol{\twoheadrightarrow}        {\mathrel}{arrows1}{"A7}
+\stix@MathSymbol{\twoheaddownarrow}         {\mathrel}{arrows1}{"A8}
+\stix@MathSymbol{\leftarrowtail}            {\mathrel}{arrows1}{"A9}
+\stix@MathSymbol{\rightarrowtail}           {\mathrel}{arrows1}{"AA}
+\stix@MathSymbol{\mapsfrom}                 {\mathrel}{arrows1}{"AB}
+\stix@MathSymbol{\mapsup}                   {\mathrel}{arrows1}{"AC}
+\stix@MathSymbol{\mapsto}                   {\mathrel}{arrows1}{"AD}
+\stix@MathSymbol{\mapsdown}                 {\mathrel}{arrows1}{"AE}
+\stix@MathSymbol{\updownarrowbar}           {\mathord}{arrows1}{"AF}
+
+\stix@MathSymbol{\hookleftarrow}            {\mathrel}{arrows1}{"B0}
+\stix@MathSymbol{\hookrightarrow}           {\mathrel}{arrows1}{"B1}
+\stix@MathSymbol{\looparrowleft}            {\mathrel}{arrows1}{"B2}
+\stix@MathSymbol{\looparrowright}           {\mathrel}{arrows1}{"B3}
+\stix@MathSymbol{\leftrightsquigarrow}      {\mathrel}{arrows1}{"B4}
+\stix@MathSymbol{\nleftrightarrow}          {\mathrel}{arrows1}{"B5}
+\stix@MathSymbol{\downzigzagarrow}          {\mathrel}{arrows1}{"B6}
+\stix@MathSymbol{\Lsh}                      {\mathrel}{arrows1}{"B7}
+\stix@MathSymbol{\Rsh}                      {\mathrel}{arrows1}{"B8}
+\stix@MathSymbol{\Ldsh}                     {\mathrel}{arrows1}{"B9}
+\stix@MathSymbol{\Rdsh}                     {\mathrel}{arrows1}{"BA}
+\stix@MathSymbol{\linefeed}                 {\mathord}{arrows1}{"BB}
+\stix@MathSymbol{\carriagereturn}           {\mathord}{arrows1}{"BC}
+\stix@MathSymbol{\curvearrowleft}           {\mathrel}{arrows1}{"BD}
+\stix@MathSymbol{\curvearrowright}          {\mathrel}{arrows1}{"BE}
+\stix@MathSymbol{\barovernorthwestarrow}    {\mathord}{arrows1}{"BF}
+
+\stix@MathSymbol{\barleftarrowrightarrowbar}{\mathord}{arrows1}{"C0}
+\stix@MathSymbol{\acwopencirclearrow}       {\mathord}{arrows1}{"C1} \stix@MathSymbol{\circlearrowleft} {\mathrel}{arrows1}{"C1}
+\stix@MathSymbol{\cwopencirclearrow}        {\mathord}{arrows1}{"C2} \stix@MathSymbol{\circlearrowright}{\mathrel}{arrows1}{"C2}
+\stix@MathSymbol{\leftharpoonup}            {\mathrel}{arrows1}{"C3}
+\stix@MathSymbol{\leftharpoondown}          {\mathrel}{arrows1}{"C4}
+\stix@MathSymbol{\upharpoonright}           {\mathrel}{arrows1}{"C5} \let\restriction=\upharpoonright
+\stix@MathSymbol{\upharpoonleft}            {\mathrel}{arrows1}{"C6}
+\stix@MathSymbol{\rightharpoonup}           {\mathrel}{arrows1}{"C7}
+\stix@MathSymbol{\rightharpoondown}         {\mathrel}{arrows1}{"C8}
+\stix@MathSymbol{\downharpoonright}         {\mathrel}{arrows1}{"C9}
+\stix@MathSymbol{\downharpoonleft}          {\mathrel}{arrows1}{"CA}
+\stix@MathSymbol{\rightleftarrows}          {\mathrel}{arrows1}{"CB}
+\stix@MathSymbol{\updownarrows}             {\mathrel}{arrows1}{"CC}
+\stix@MathSymbol{\leftrightarrows}          {\mathrel}{arrows1}{"CD}
+\stix@MathSymbol{\leftleftarrows}           {\mathrel}{arrows1}{"CE}
+\stix@MathSymbol{\upuparrows}               {\mathrel}{arrows1}{"CF}
+
+\stix@MathSymbol{\rightrightarrows}         {\mathrel}{arrows1}{"D0}
+\stix@MathSymbol{\downdownarrows}           {\mathrel}{arrows1}{"D1}
+\stix@MathSymbol{\leftrightharpoons}        {\mathrel}{arrows1}{"D2}
+\stix@MathSymbol{\rightleftharpoons}        {\mathrel}{arrows1}{"D3}
+\stix@MathSymbol{\nLeftarrow}               {\mathrel}{arrows1}{"D4}
+\stix@MathSymbol{\nLeftrightarrow}          {\mathrel}{arrows1}{"D5}
+\stix@MathSymbol{\nRightarrow}              {\mathrel}{arrows1}{"D6}
+\stix@MathSymbol{\Leftarrow}                {\mathrel}{arrows1}{"D7}
+\stix@MathSymbol{\Rightarrow}               {\mathrel}{arrows1}{"D9}
+\stix@MathSymbol{\Leftrightarrow}           {\mathrel}{arrows1}{"DB}
+\stix@MathSymbol{\Nwarrow}                  {\mathrel}{arrows1}{"DD}
+\stix@MathSymbol{\Nearrow}                  {\mathrel}{arrows1}{"DE}
+\stix@MathSymbol{\Searrow}                  {\mathrel}{arrows1}{"DF}
+
+\stix@MathSymbol{\Swarrow}                  {\mathrel}{arrows1}{"E0}
+\stix@MathSymbol{\Lleftarrow}               {\mathrel}{arrows1}{"E1}
+\stix@MathSymbol{\Rrightarrow}              {\mathrel}{arrows1}{"E2}
+\stix@MathSymbol{\leftsquigarrow}           {\mathrel}{arrows1}{"E3}
+\stix@MathSymbol{\rightsquigarrow}          {\mathrel}{arrows1}{"E4} \let\leadsto=\rightsquigarrow
+\stix@MathSymbol{\nHuparrow}                {\mathord}{arrows1}{"E5}
+\stix@MathSymbol{\nHdownarrow}              {\mathord}{arrows1}{"E6}
+\stix@MathSymbol{\leftdasharrow}            {\mathord}{arrows1}{"E7}
+\stix@MathSymbol{\updasharrow}              {\mathord}{arrows1}{"E8}
+\stix@MathSymbol{\rightdasharrow}           {\mathord}{arrows1}{"E9}
+\stix@MathSymbol{\downdasharrow}            {\mathord}{arrows1}{"EA}
+\stix@MathSymbol{\barleftarrow}             {\mathrel}{arrows1}{"EB}
+\stix@MathSymbol{\rightarrowbar}            {\mathrel}{arrows1}{"EC}
+\stix@MathSymbol{\leftwhitearrow}           {\mathord}{arrows1}{"ED}
+\stix@MathSymbol{\upwhitearrow}             {\mathord}{arrows1}{"EE}
+\stix@MathSymbol{\rightwhitearrow}          {\mathord}{arrows1}{"EF}
+
+\stix@MathSymbol{\downwhitearrow}           {\mathord}{arrows1}{"F0}
+\stix@MathSymbol{\whitearrowupfrombar}      {\mathord}{arrows1}{"F1}
+\stix@MathSymbol{\circleonrightarrow}       {\mathrel}{arrows1}{"F2}
+\stix@MathSymbol{\downuparrows}             {\mathrel}{arrows1}{"F3}
+\stix@MathSymbol{\rightthreearrows}         {\mathrel}{arrows1}{"F4}
+\stix@MathSymbol{\nvleftarrow}              {\mathrel}{arrows1}{"F5}
+\stix@MathSymbol{\nvrightarrow}             {\mathrel}{arrows1}{"F6}
+\stix@MathSymbol{\nvleftrightarrow}         {\mathrel}{arrows1}{"F7}
+\stix@MathSymbol{\nVleftarrow}              {\mathrel}{arrows1}{"F8}
+\stix@MathSymbol{\nVrightarrow}             {\mathrel}{arrows1}{"F9}
+\stix@MathSymbol{\nVleftrightarrow}         {\mathrel}{arrows1}{"FA}
+\stix@MathSymbol{\leftarrowtriangle}        {\mathrel}{arrows1}{"FB}
+\stix@MathSymbol{\rightarrowtriangle}       {\mathrel}{arrows1}{"FC}
+\stix@MathSymbol{\leftrightarrowtriangle}   {\mathrel}{arrows1}{"FD}
+
+\stix@MathSymbol{\leftarrowonoplus}         {\mathrel}{arrows2}{"2A}
+\stix@MathSymbol{\longleftsquigarrow}       {\mathrel}{arrows2}{"2B}
+\stix@MathSymbol{\nvtwoheadleftarrow}       {\mathrel}{arrows2}{"2C}
+\stix@MathSymbol{\nVtwoheadleftarrow}       {\mathrel}{arrows2}{"2D}
+\stix@MathSymbol{\twoheadmapsfrom}          {\mathrel}{arrows2}{"2E}
+\stix@MathSymbol{\twoheadleftdbkarrow}      {\mathrel}{arrows2}{"2F}
+\stix@MathSymbol{\leftdotarrow}             {\mathrel}{arrows2}{"3A}
+\stix@MathSymbol{\nvleftarrowtail}          {\mathrel}{arrows2}{"3B}
+\stix@MathSymbol{\nVleftarrowtail}          {\mathrel}{arrows2}{"3C}
+\stix@MathSymbol{\twoheadleftarrowtail}     {\mathrel}{arrows2}{"3D}
+\stix@MathSymbol{\nvtwoheadleftarrowtail}   {\mathrel}{arrows2}{"3E}
+\stix@MathSymbol{\nVtwoheadleftarrowtail}   {\mathrel}{arrows2}{"3F}
+\stix@MathSymbol{\leftarrowx}               {\mathrel}{arrows2}{"40}
+\stix@MathSymbol{\leftcurvedarrow}          {\mathrel}{arrows2}{"5B}
+\stix@MathSymbol{\equalleftarrow}           {\mathrel}{arrows2}{"5C}
+\stix@MathSymbol{\bsimilarleftarrow}        {\mathrel}{arrows2}{"5D}
+\stix@MathSymbol{\leftarrowbackapprox}      {\mathrel}{arrows2}{"5E}
+\stix@MathSymbol{\rightarrowgtr}            {\mathrel}{arrows2}{"5F}
+\stix@MathSymbol{\rightarrowsupset}         {\mathrel}{arrows2}{"60}
+\stix@MathSymbol{\LLeftarrow}               {\mathrel}{arrows2}{"7D}
+\stix@MathSymbol{\RRightarrow}              {\mathrel}{arrows2}{"7E}
+
+\stix@MathSymbol{\nvtwoheadrightarrow}      {\mathrel}{arrows2}{"99}
+\stix@MathSymbol{\nVtwoheadrightarrow}      {\mathrel}{arrows2}{"9A}
+\stix@MathSymbol{\nvLeftarrow}              {\mathrel}{arrows2}{"9B}
+\stix@MathSymbol{\nvRightarrow}             {\mathrel}{arrows2}{"9C}
+\stix@MathSymbol{\nvLeftrightarrow}         {\mathrel}{arrows2}{"9D}
+\stix@MathSymbol{\twoheadmapsto}            {\mathrel}{arrows2}{"9E}
+\stix@MathSymbol{\Mapsfrom}                 {\mathrel}{arrows2}{"9F}
+
+\stix@MathSymbol{\Mapsto}                   {\mathrel}{arrows2}{"A0}
+\stix@MathSymbol{\downarrowbarred}          {\mathrel}{arrows2}{"A1}
+\stix@MathSymbol{\uparrowbarred}            {\mathrel}{arrows2}{"A2}
+\stix@MathSymbol{\circleonleftarrow}        {\mathrel}{arrows2}{"A3}
+\stix@MathSymbol{\leftthreearrows}          {\mathrel}{arrows2}{"A4}
+\stix@MathSymbol{\leftbkarrow}              {\mathrel}{arrows2}{"A5}
+\stix@MathSymbol{\rightbkarrow}             {\mathrel}{arrows2}{"A6}
+\stix@MathSymbol{\leftdbkarrow}             {\mathrel}{arrows2}{"A7} \let\dashleftarrow=\leftdbkarrow
+\stix@MathSymbol{\dbkarow}                  {\mathrel}{arrows2}{"A8} \let\dashrightarrow=\dbkarow \let\dasharrow=\dbkarow
+\stix@MathSymbol{\drbkarow}                 {\mathrel}{arrows2}{"A9}
+\stix@MathSymbol{\rightdotarrow}            {\mathrel}{arrows2}{"AA}
+\stix@MathSymbol{\baruparrow}               {\mathrel}{arrows2}{"AB}
+\stix@MathSymbol{\downarrowbar}             {\mathrel}{arrows2}{"AC}
+\stix@MathSymbol{\nvrightarrowtail}         {\mathrel}{arrows2}{"AD}
+\stix@MathSymbol{\nVrightarrowtail}         {\mathrel}{arrows2}{"AE}
+\stix@MathSymbol{\twoheadrightarrowtail}    {\mathrel}{arrows2}{"AF}
+
+\stix@MathSymbol{\nvtwoheadrightarrowtail}  {\mathrel}{arrows2}{"B0}
+\stix@MathSymbol{\nVtwoheadrightarrowtail}  {\mathrel}{arrows2}{"B1}
+\stix@MathSymbol{\lefttail}                 {\mathrel}{arrows2}{"B2}
+\stix@MathSymbol{\righttail}                {\mathrel}{arrows2}{"B3}
+\stix@MathSymbol{\leftdbltail}              {\mathrel}{arrows2}{"B4}
+\stix@MathSymbol{\rightdbltail}             {\mathrel}{arrows2}{"B5}
+\stix@MathSymbol{\diamondleftarrow}         {\mathrel}{arrows2}{"B6}
+\stix@MathSymbol{\rightarrowdiamond}        {\mathrel}{arrows2}{"B7}
+\stix@MathSymbol{\diamondleftarrowbar}      {\mathrel}{arrows2}{"B8}
+\stix@MathSymbol{\barrightarrowdiamond}     {\mathrel}{arrows2}{"B9}
+\stix@MathSymbol{\nwsearrow}                {\mathrel}{arrows2}{"BA}
+\stix@MathSymbol{\neswarrow}                {\mathrel}{arrows2}{"BB}
+\stix@MathSymbol{\hknwarrow}                {\mathrel}{arrows2}{"BC}
+\stix@MathSymbol{\hknearrow}                {\mathrel}{arrows2}{"BD}
+\stix@MathSymbol{\hksearow}                 {\mathrel}{arrows2}{"BE}
+\stix@MathSymbol{\hkswarow}                 {\mathrel}{arrows2}{"BF}
+
+\stix@MathSymbol{\tona}                     {\mathrel}{arrows2}{"C0}
+\stix@MathSymbol{\toea}                     {\mathrel}{arrows2}{"C1}
+\stix@MathSymbol{\tosa}                     {\mathrel}{arrows2}{"C2}
+\stix@MathSymbol{\towa}                     {\mathrel}{arrows2}{"C3}
+\stix@MathSymbol{\rdiagovfdiag}             {\mathord}{arrows2}{"C4}
+\stix@MathSymbol{\fdiagovrdiag}             {\mathord}{arrows2}{"C5}
+\stix@MathSymbol{\seovnearrow}              {\mathord}{arrows2}{"C6}
+\stix@MathSymbol{\neovsearrow}              {\mathord}{arrows2}{"C7}
+\stix@MathSymbol{\fdiagovnearrow}           {\mathord}{arrows2}{"C8}
+\stix@MathSymbol{\rdiagovsearrow}           {\mathord}{arrows2}{"C9}
+\stix@MathSymbol{\neovnwarrow}              {\mathord}{arrows2}{"CA}
+\stix@MathSymbol{\nwovnearrow}              {\mathord}{arrows2}{"CB}
+\stix@MathSymbol{\rightcurvedarrow}         {\mathrel}{arrows2}{"CC}
+\stix@MathSymbol{\uprightcurvearrow}        {\mathord}{arrows2}{"CD}
+\stix@MathSymbol{\downrightcurvedarrow}     {\mathord}{arrows2}{"CE}
+\stix@MathSymbol{\leftdowncurvedarrow}      {\mathrel}{arrows2}{"CF}
+
+\stix@MathSymbol{\rightdowncurvedarrow}     {\mathrel}{arrows2}{"D0}
+\stix@MathSymbol{\cwrightarcarrow}          {\mathrel}{arrows2}{"D1}
+\stix@MathSymbol{\acwleftarcarrow}          {\mathrel}{arrows2}{"D2}
+\stix@MathSymbol{\acwoverarcarrow}          {\mathrel}{arrows2}{"D3}
+\stix@MathSymbol{\acwunderarcarrow}         {\mathrel}{arrows2}{"D4}
+\stix@MathSymbol{\curvearrowrightminus}     {\mathrel}{arrows2}{"D5}
+\stix@MathSymbol{\curvearrowleftplus}       {\mathrel}{arrows2}{"D6}
+\stix@MathSymbol{\cwundercurvearrow}        {\mathrel}{arrows2}{"D7}
+\stix@MathSymbol{\ccwundercurvearrow}       {\mathrel}{arrows2}{"D8}
+\stix@MathSymbol{\acwcirclearrow}           {\mathrel}{arrows2}{"D9}
+\stix@MathSymbol{\cwcirclearrow}            {\mathrel}{arrows2}{"DA}
+\stix@MathSymbol{\rightarrowshortleftarrow} {\mathrel}{arrows2}{"DB}
+\stix@MathSymbol{\leftarrowshortrightarrow} {\mathrel}{arrows2}{"DC}
+\stix@MathSymbol{\shortrightarrowleftarrow} {\mathrel}{arrows2}{"DD}
+\stix@MathSymbol{\rightarrowplus}           {\mathrel}{arrows2}{"DE}
+\stix@MathSymbol{\leftarrowplus}            {\mathrel}{arrows2}{"DF}
+
+\stix@MathSymbol{\rightarrowx}              {\mathrel}{arrows2}{"E0}
+\stix@MathSymbol{\leftrightarrowcircle}     {\mathrel}{arrows2}{"E1}
+\stix@MathSymbol{\twoheaduparrowcircle}     {\mathrel}{arrows2}{"E2}
+\stix@MathSymbol{\leftrightharpoonupdown}   {\mathrel}{arrows2}{"E3}
+\stix@MathSymbol{\leftrightharpoondownup}   {\mathrel}{arrows2}{"E4}
+\stix@MathSymbol{\updownharpoonrightleft}   {\mathrel}{arrows2}{"E5}
+\stix@MathSymbol{\updownharpoonleftright}   {\mathrel}{arrows2}{"E6}
+\stix@MathSymbol{\leftrightharpoonupup}     {\mathrel}{arrows2}{"E7}
+\stix@MathSymbol{\updownharpoonrightright}  {\mathrel}{arrows2}{"E8}
+\stix@MathSymbol{\leftrightharpoondowndown} {\mathrel}{arrows2}{"E9}
+\stix@MathSymbol{\updownharpoonleftleft}    {\mathrel}{arrows2}{"EA}
+\stix@MathSymbol{\barleftharpoonup}         {\mathrel}{arrows2}{"EB}
+\stix@MathSymbol{\rightharpoonupbar}        {\mathrel}{arrows2}{"EC}
+\stix@MathSymbol{\barupharpoonright}        {\mathrel}{arrows2}{"ED}
+\stix@MathSymbol{\downharpoonrightbar}      {\mathrel}{arrows2}{"EE}
+\stix@MathSymbol{\barleftharpoondown}       {\mathrel}{arrows2}{"EF}
+
+\stix@MathSymbol{\rightharpoondownbar}      {\mathrel}{arrows2}{"F0}
+\stix@MathSymbol{\barupharpoonleft}         {\mathrel}{arrows2}{"F1}
+\stix@MathSymbol{\downharpoonleftbar}       {\mathrel}{arrows2}{"F2}
+\stix@MathSymbol{\leftharpoonupbar}         {\mathrel}{arrows2}{"F3}
+\stix@MathSymbol{\barrightharpoonup}        {\mathrel}{arrows2}{"F4}
+\stix@MathSymbol{\upharpoonrightbar}        {\mathrel}{arrows2}{"F5}
+\stix@MathSymbol{\bardownharpoonright}      {\mathrel}{arrows2}{"F6}
+\stix@MathSymbol{\leftharpoondownbar}       {\mathrel}{arrows2}{"F7}
+\stix@MathSymbol{\barrightharpoondown}      {\mathrel}{arrows2}{"F8}
+\stix@MathSymbol{\upharpoonleftbar}         {\mathrel}{arrows2}{"F9}
+\stix@MathSymbol{\bardownharpoonleft}       {\mathrel}{arrows2}{"FA}
+\stix@MathSymbol{\leftharpoonsupdown}       {\mathrel}{arrows2}{"FB}
+\stix@MathSymbol{\upharpoonsleftright}      {\mathrel}{arrows2}{"FC}
+\stix@MathSymbol{\rightharpoonsupdown}      {\mathrel}{arrows2}{"FD}
+\stix@MathSymbol{\downharpoonsleftright}    {\mathrel}{arrows2}{"FE}
+\stix@MathSymbol{\leftrightharpoonsup}      {\mathrel}{arrows2}{"FF}
+
+\stix@MathSymbol{\cwgapcirclearrow}         {\mathrel}{arrows3}{"00}
+\stix@MathSymbol{\rightarrowonoplus}        {\mathrel}{arrows3}{"01}
+\stix@MathSymbol{\longleftarrow}            {\mathrel}{arrows3}{"02}
+\stix@MathSymbol{\longrightarrow}           {\mathrel}{arrows3}{"03}
+\stix@MathSymbol{\longleftrightarrow}       {\mathrel}{arrows3}{"04}
+\stix@MathSymbol{\Longleftarrow}            {\mathrel}{arrows3}{"05}
+\stix@MathSymbol{\Longrightarrow}           {\mathrel}{arrows3}{"06}
+\stix@MathSymbol{\Longleftrightarrow}       {\mathrel}{arrows3}{"07}
+\stix@MathSymbol{\longmapsfrom}             {\mathrel}{arrows3}{"08}
+\stix@MathSymbol{\longmapsto}               {\mathrel}{arrows3}{"09}
+\stix@MathSymbol{\Longmapsfrom}             {\mathrel}{arrows3}{"0A}
+\stix@MathSymbol{\Longmapsto}               {\mathrel}{arrows3}{"0B}
+\stix@MathSymbol{\longrightsquigarrow}      {\mathrel}{arrows3}{"0C}
+\stix@MathSymbol{\acwgapcirclearrow}        {\mathrel}{arrows3}{"0D}
+\stix@MathSymbol{\bsimilarrightarrow}       {\mathrel}{arrows3}{"0E}
+\stix@MathSymbol{\spadesuit}                {\mathord}{arrows3}{"0F}
+
+\stix@MathSymbol{\heartsuit}                {\mathord}{arrows3}{"10}
+\stix@MathSymbol{\diamondsuit}              {\mathord}{arrows3}{"11}
+\stix@MathSymbol{\clubsuit}                 {\mathord}{arrows3}{"12}
+\stix@MathSymbol{\mathparagraph}            {\mathord}{arrows3}{"13}
+\stix@MathSymbol{\mathsection}              {\mathord}{arrows3}{"14}
+\stix@MathSymbol{\leftrightharpoonsdown}    {\mathrel}{arrows3}{"15}
+\stix@MathSymbol{\rightleftharpoonsup}      {\mathrel}{arrows3}{"16}
+\stix@MathSymbol{\rightleftharpoonsdown}    {\mathrel}{arrows3}{"17}
+\stix@MathSymbol{\leftharpoonupdash}        {\mathrel}{arrows3}{"18}
+\stix@MathSymbol{\dashleftharpoondown}      {\mathrel}{arrows3}{"19}
+\stix@MathSymbol{\rightharpoonupdash}       {\mathrel}{arrows3}{"1A}
+\stix@MathSymbol{\dashrightharpoondown}     {\mathrel}{arrows3}{"1B}
+\stix@MathSymbol{\updownharpoonsleftright}  {\mathrel}{arrows3}{"1C}
+\stix@MathSymbol{\downupharpoonsleftright}  {\mathrel}{arrows3}{"1D}
+\stix@MathSymbol{\rightimply}               {\mathrel}{arrows3}{"1E}
+\stix@MathSymbol{\equalrightarrow}          {\mathrel}{arrows3}{"1F}
+
+\stix@MathSymbol{\similarrightarrow}        {\mathrel}{arrows3}{"20}
+\stix@MathSymbol{\leftarrowsimilar}         {\mathrel}{arrows3}{"21}
+\stix@MathSymbol{\rightarrowsimilar}        {\mathrel}{arrows3}{"22}
+\stix@MathSymbol{\rightarrowapprox}         {\mathrel}{arrows3}{"23}
+\stix@MathSymbol{\ltlarr}                   {\mathrel}{arrows3}{"24}
+\stix@MathSymbol{\leftarrowless}            {\mathrel}{arrows3}{"25}
+\stix@MathSymbol{\gtrarr}                   {\mathrel}{arrows3}{"26}
+\stix@MathSymbol{\subrarr}                  {\mathrel}{arrows3}{"27}
+\stix@MathSymbol{\leftarrowsubset}          {\mathrel}{arrows3}{"28}
+\stix@MathSymbol{\suplarr}                  {\mathrel}{arrows3}{"29}
+\stix@MathSymbol{\leftfishtail}             {\mathrel}{arrows3}{"2A}
+\stix@MathSymbol{\rightfishtail}            {\mathrel}{arrows3}{"2B}
+\stix@MathSymbol{\upfishtail}               {\mathrel}{arrows3}{"2C}
+\stix@MathSymbol{\downfishtail}             {\mathrel}{arrows3}{"2D}
+\stix@MathSymbol{\varclubsuit}              {\mathord}{arrows3}{"2E}
+\stix@MathSymbol{\quarternote}              {\mathord}{arrows3}{"2F}
+
+\stix@MathSymbol{\eighthnote}               {\mathord}{arrows3}{"3A}
+\stix@MathSymbol{\twonotes}                 {\mathord}{arrows3}{"3B}
+\stix@MathSymbol{\dicei}                    {\mathord}{arrows3}{"3C}
+\stix@MathSymbol{\diceii}                   {\mathord}{arrows3}{"3D}
+\stix@MathSymbol{\diceiii}                  {\mathord}{arrows3}{"3E}
+\stix@MathSymbol{\diceiv}                   {\mathord}{arrows3}{"3F}
+\stix@MathSymbol{\dicev}                    {\mathord}{arrows3}{"40}
+
+\stix@MathSymbol{\dicevi}                   {\mathord}{arrows3}{"5B}
+\stix@MathSymbol{\circledrightdot}          {\mathord}{arrows3}{"5C}
+\stix@MathSymbol{\circledtwodots}           {\mathord}{arrows3}{"5D}
+\stix@MathSymbol{\blackcircledrightdot}     {\mathord}{arrows3}{"5E}
+\stix@MathSymbol{\blackcircledtwodots}      {\mathord}{arrows3}{"5F}
+\stix@MathSymbol{\Hermaphrodite}            {\mathord}{arrows3}{"60}
+
+\stix@MathSymbol{\mdwhtcircle}              {\mathord}{arrows3}{"7D}
+\stix@MathSymbol{\mdblkcircle}              {\mathord}{arrows3}{"7E}
+
+\stix@MathSymbol{\mdsmwhtcircle}            {\mathord}{arrows3}{"80}
+\stix@MathSymbol{\neuter}                   {\mathord}{arrows3}{"81}
+\stix@MathSymbol{\checkmarkmath}            {\mathord}{arrows3}{"82}
+\stix@MathSymbol{\varstar}                  {\mathord}{arrows3}{"85}
+\stix@MathSymbol{\dingasterisk}             {\mathord}{arrows3}{"86}
+\stix@MathSymbol{\squareulblack}            {\mathord}{arrows3}{"88}
+\stix@MathSymbol{\squarelrblack}            {\mathord}{arrows3}{"89}
+\stix@MathSymbol{\boxbar}                   {\mathbin}{arrows3}{"8A}
+\stix@MathSymbol{\trianglecdot}             {\mathord}{arrows3}{"8B}
+\stix@MathSymbol{\triangleleftblack}        {\mathord}{arrows3}{"8C}
+\stix@MathSymbol{\trianglerightblack}       {\mathord}{arrows3}{"8D}
+\stix@MathSymbol{\lgwhtcircle}              {\mathord}{arrows3}{"8E}
+\stix@MathSymbol{\squareulquad}             {\mathord}{arrows3}{"8F}
+
+\stix@MathSymbol{\squarellquad}             {\mathord}{arrows3}{"90}
+\stix@MathSymbol{\squarelrquad}             {\mathord}{arrows3}{"91}
+\stix@MathSymbol{\squareurquad}             {\mathord}{arrows3}{"92}
+\stix@MathSymbol{\circleulquad}             {\mathord}{arrows3}{"93}
+\stix@MathSymbol{\circlellquad}             {\mathord}{arrows3}{"94}
+\stix@MathSymbol{\circlelrquad}             {\mathord}{arrows3}{"95}
+\stix@MathSymbol{\circleurquad}             {\mathord}{arrows3}{"96}
+\stix@MathSymbol{\ultriangle}               {\mathord}{arrows3}{"97}
+\stix@MathSymbol{\urtriangle}               {\mathord}{arrows3}{"98}
+\stix@MathSymbol{\lltriangle}               {\mathord}{arrows3}{"99}
+\stix@MathSymbol{\mdwhtsquare}              {\mathord}{arrows3}{"9A}
+\stix@MathSymbol{\mdblksquare}              {\mathord}{arrows3}{"9B}
+\stix@MathSymbol{\mdsmwhtsquare}            {\mathord}{arrows3}{"9C}
+\stix@MathSymbol{\mdsmblksquare}            {\mathord}{arrows3}{"9D}
+\stix@MathSymbol{\lrtriangle}               {\mathord}{arrows3}{"9E}
+\stix@MathSymbol{\bigstar}                  {\mathord}{arrows3}{"9F}
+
+\stix@MathSymbol{\bigwhitestar}             {\mathord}{arrows3}{"A0}
+\stix@MathSymbol{\dottimes}                 {\mathbin}{arrows3}{"A1}
+\stix@MathSymbol{\timesbar}                 {\mathbin}{arrows3}{"A2}
+\stix@MathSymbol{\btimes}                   {\mathbin}{arrows3}{"A3}
+\stix@MathSymbol{\smashtimes}               {\mathbin}{arrows3}{"A4}
+\stix@MathSymbol{\otimeslhrim}              {\mathbin}{arrows3}{"A5}
+\stix@MathSymbol{\otimesrhrim}              {\mathbin}{arrows3}{"A6}
+\stix@MathSymbol{\otimeshat}                {\mathbin}{arrows3}{"A7}
+\stix@MathSymbol{\Otimes}                   {\mathbin}{arrows3}{"A8}
+\stix@MathSymbol{\odiv}                     {\mathbin}{arrows3}{"A9}
+\stix@MathSymbol{\triangleplus}             {\mathbin}{arrows3}{"AA}
+\stix@MathSymbol{\triangleminus}            {\mathbin}{arrows3}{"AB}
+\stix@MathSymbol{\triangletimes}            {\mathbin}{arrows3}{"AC}
+\stix@MathSymbol{\intprod}                  {\mathbin}{arrows3}{"AD}
+\stix@MathSymbol{\intprodr}                 {\mathbin}{arrows3}{"AE}
+\stix@MathSymbol{\fcmp}                     {\mathbin}{arrows3}{"AF}
+
+\stix@MathSymbol{\amalg}                    {\mathbin}{arrows3}{"B0}
+\stix@MathSymbol{\capdot}                   {\mathbin}{arrows3}{"B1}
+\stix@MathSymbol{\uminus}                   {\mathbin}{arrows3}{"B2}
+\stix@MathSymbol{\barcup}                   {\mathbin}{arrows3}{"B3}
+\stix@MathSymbol{\barcap}                   {\mathbin}{arrows3}{"B4}
+\stix@MathSymbol{\capwedge}                 {\mathbin}{arrows3}{"B5}
+\stix@MathSymbol{\cupvee}                   {\mathbin}{arrows3}{"B6}
+\stix@MathSymbol{\cupovercap}               {\mathbin}{arrows3}{"B7}
+\stix@MathSymbol{\capovercup}               {\mathbin}{arrows3}{"B8}
+\stix@MathSymbol{\cupbarcap}                {\mathbin}{arrows3}{"B9}
+\stix@MathSymbol{\neg}                      {\mathord}{operators}{"9B} \let\lnot=\neg
+\stix@MathSymbol{\cdotp}                    {\mathbin}{operators}{"9C} \let\centerdot=\cdotp
+\stix@MathSymbol{\times}                    {\mathbin}{operators}{"9D}
+\stix@MathSymbol{\preceq}                   {\mathrel}{operators}{"9E}
+\stix@MathSymbol{\div}                      {\mathbin}{operators}{"9F}
+
+\stix@MathSymbol{\Zbar}                     {\mathord}{operators}{"A0}
+\stix@MathSymbol{\notchar}                  {\mathrel}{operators}{"A1}
+\stix@MathSymbol{\upbackepsilon}            {\mathord}{operators}{"A2}
+\stix@MathSymbol{\dagger}                   {\mathbin}{operators}{"A3}
+\stix@MathSymbol{\ddagger}                  {\mathbin}{operators}{"A4}
+\stix@MathSymbol{\smblkcircle}              {\mathbin}{operators}{"A5}
+\stix@MathSymbol{\enleadertwodots}          {\mathord}{operators}{"A6}
+\stix@MathSymbol{\unicodeellipsis}          {\mathord}{operators}{"A7} \def\mathellipsis{\mathinner{\unicodeellipsis}}
+\stix@MathSymbol{\prime}                    {\mathord}{operators}{"A8}
+\stix@MathSymbol{\dprime}                   {\mathord}{operators}{"A9}
+\stix@MathSymbol{\trprime}                  {\mathord}{operators}{"AA}
+\stix@MathSymbol{\backprime}                {\mathord}{operators}{"AB}
+\stix@MathSymbol{\backdprime}               {\mathord}{operators}{"AC}
+\stix@MathSymbol{\backtrprime}              {\mathord}{operators}{"AD}
+\stix@MathSymbol{\caretinsert}              {\mathord}{operators}{"AE}
+\stix@MathSymbol{\Exclam}                   {\mathord}{operators}{"AF}
+
+\stix@MathSymbol{\hyphenbullet}             {\mathord}{operators}{"B0}
+\stix@MathSymbol{\fracslash}                {\mathbin}{operators}{"B1}
+\stix@MathSymbol{\Question}                 {\mathord}{operators}{"B2}
+\stix@MathSymbol{\closure}                  {\mathrel}{operators}{"B3}
+\stix@MathSymbol{\qprime}                   {\mathord}{operators}{"B4}
+\stix@MathSymbol{\vertoverlay}              {\mathrel}{operators}{"B5}
+\stix@MathSymbol{\enclosecircle}            {\mathord}{operators}{"B6}
+\stix@MathSymbol{\enclosesquare}            {\mathord}{operators}{"B7}
+\stix@MathSymbol{\enclosediamond}           {\mathord}{operators}{"B8}
+\stix@MathSymbol{\enclosetriangle}          {\mathord}{operators}{"B9}
+\stix@MathSymbol{\Eulerconst}               {\mathord}{operators}{"BA}
+\stix@MathSymbol{\mho}                      {\mathord}{operators}{"BB}
+\stix@MathSymbol{\turnediota}               {\mathord}{operators}{"BC}
+\stix@MathSymbol{\Angstrom}                 {\mathord}{operators}{"BD}
+\stix@MathSymbol{\Finv}                     {\mathord}{operators}{"BE}
+\stix@MathSymbol{\Game}                     {\mathord}{operators}{"BF}
+
+\stix@MathSymbol{\sansLturned}              {\mathord}{operators}{"C0}
+\stix@MathSymbol{\sansLmirrored}            {\mathord}{operators}{"C1}
+\stix@MathSymbol{\Yup}                      {\mathord}{operators}{"C2}
+\stix@MathSymbol{\PropertyLine}             {\mathord}{operators}{"C3}
+\stix@MathSymbol{\upand}                    {\mathbin}{operators}{"C4}
+\stix@MathSymbol{\forall}                   {\mathord}{operators}{"C5}
+\stix@MathSymbol{\complement}               {\mathord}{operators}{"C6}
+\stix@MathSymbol{\exists}                   {\mathord}{operators}{"C7}
+\stix@MathSymbol{\nexists}                  {\mathord}{operators}{"C8}
+\stix@MathSymbol{\varnothing}               {\mathord}{operators}{"C9}
+\stix@MathSymbol{\increment}                {\mathord}{operators}{"CA}
+\stix@MathSymbol{\in}                       {\mathrel}{operators}{"CB}
+\stix@MathSymbol{\notin}                    {\mathrel}{operators}{"CC}
+\stix@MathSymbol{\smallin}                  {\mathrel}{operators}{"CD}
+\stix@MathSymbol{\ni}                       {\mathrel}{operators}{"CE} \let\owns=\ni
+\stix@MathSymbol{\nni}                      {\mathrel}{operators}{"CF}
+
+\stix@MathSymbol{\smallni}                  {\mathrel}{operators}{"D0}
+\stix@MathSymbol{\QED}                      {\mathord}{operators}{"D1}
+\stix@MathSymbol{\dotplus}                  {\mathbin}{operators}{"D2}
+\stix@MathSymbol{\succeq}                   {\mathrel}{operators}{"D3}
+\stix@MathSymbol{\smallsetminus}            {\mathbin}{operators}{"D4}
+\stix@MathSymbol{\vysmwhtcircle}            {\mathbin}{operators}{"D5}
+\stix@MathSymbol{\vysmblkcircle}            {\mathbin}{operators}{"D6} \let\bullet=\vysmblkcircle
+\stix@MathSymbol{\propto}                   {\mathrel}{operators}{"D7}
+\stix@MathSymbol{\infty}                    {\mathord}{operators}{"D8}
+\stix@MathSymbol{\rightangle}               {\mathord}{operators}{"D9}
+\stix@MathSymbol{\angle}                    {\mathord}{operators}{"DA}
+\stix@MathSymbol{\measuredangle}            {\mathord}{operators}{"DB}
+\stix@MathSymbol{\sphericalangle}           {\mathord}{operators}{"DC}
+\stix@MathSymbol{\mid}                      {\mathrel}{operators}{"DD}
+\stix@MathSymbol{\nmid}                     {\mathrel}{operators}{"DE}
+\stix@MathSymbol{\parallel}                 {\mathrel}{operators}{"DF}
+
+\stix@MathSymbol{\nparallel}                {\mathrel}{operators}{"E0}
+\stix@MathSymbol{\wedge}                    {\mathbin}{operators}{"E1} \let\land=\wedge
+\stix@MathSymbol{\vee}                      {\mathbin}{operators}{"E2} \let\lor=\vee
+\stix@MathSymbol{\cap}                      {\mathbin}{operators}{"E3}
+\stix@MathSymbol{\cup}                      {\mathbin}{operators}{"E4}
+\stix@MathSymbol{\therefore}                {\mathord}{operators}{"E5}
+\stix@MathSymbol{\because}                  {\mathord}{operators}{"E6}
+\stix@MathSymbol{\emptyset}                 {\mathord}{operators}{"E7}
+\stix@MathSymbol{\Colon}                    {\mathrel}{operators}{"E8}
+\stix@MathSymbol{\dotminus}                 {\mathbin}{operators}{"E9}
+\stix@MathSymbol{\dashcolon}                {\mathrel}{operators}{"EA}
+\stix@MathSymbol{\dotsminusdots}            {\mathrel}{operators}{"EB}
+\stix@MathSymbol{\kernelcontraction}        {\mathrel}{operators}{"EC}
+\stix@MathSymbol{\sim}                      {\mathrel}{operators}{"ED} \stix@MathSymbol{\thicksim}{\mathrel}{bold-operators}{"ED}
+\stix@MathSymbol{\backsim}                  {\mathrel}{operators}{"EE}
+\stix@MathSymbol{\invlazys}                 {\mathbin}{operators}{"EF}
+
+\stix@MathSymbol{\sinewave}                 {\mathord}{operators}{"F0}
+\stix@MathSymbol{\wr}                       {\mathbin}{operators}{"F1}
+\stix@MathSymbol{\nsim}                     {\mathrel}{operators}{"F2}
+\stix@MathSymbol{\eqsim}                    {\mathrel}{operators}{"F3}
+\stix@MathSymbol{\simeq}                    {\mathrel}{operators}{"F4}
+\stix@MathSymbol{\nsime}                    {\mathrel}{operators}{"F5}
+\stix@MathSymbol{\cong}                     {\mathrel}{operators}{"F6}
+\stix@MathSymbol{\simneqq}                  {\mathrel}{operators}{"F7}
+\stix@MathSymbol{\ncong}                    {\mathrel}{operators}{"F8}
+\stix@MathSymbol{\approx}                   {\mathrel}{operators}{"F9} \stix@MathSymbol{\thickapprox}{\mathrel}{bold-operators}{"F9}
+\stix@MathSymbol{\napprox}                  {\mathrel}{operators}{"FA}
+\stix@MathSymbol{\approxeq}                 {\mathrel}{operators}{"FB}
+\stix@MathSymbol{\approxident}              {\mathrel}{operators}{"FC}
+\stix@MathSymbol{\backcong}                 {\mathrel}{operators}{"FD}
+\stix@MathSymbol{\asymp}                    {\mathrel}{operators}{"FE}
+\stix@MathSymbol{\Bumpeq}                   {\mathrel}{operators}{"FF}
+
+\stix@MathSymbol{\bumpeq}                   {\mathrel}{integrals}{"80}
+\stix@MathSymbol{\doteq}                    {\mathrel}{integrals}{"81}
+\stix@MathSymbol{\Doteq}                    {\mathrel}{integrals}{"82}
+        \let\doteqdot=\Doteq
+\stix@MathSymbol{\fallingdotseq}            {\mathrel}{integrals}{"83}
+\stix@MathSymbol{\risingdotseq}             {\mathrel}{integrals}{"84}
+\stix@MathSymbol{\coloneq}                  {\mathrel}{integrals}{"85}
+\stix@MathSymbol{\eqcolon}                  {\mathrel}{integrals}{"86}
+\stix@MathSymbol{\eqcirc}                   {\mathrel}{integrals}{"87}
+\stix@MathSymbol{\circeq}                   {\mathrel}{integrals}{"88}
+\stix@MathSymbol{\arceq}                    {\mathrel}{integrals}{"89}
+\stix@MathSymbol{\wedgeq}                   {\mathrel}{integrals}{"8A}
+\stix@MathSymbol{\veeeq}                    {\mathrel}{integrals}{"8B}
+\stix@MathSymbol{\stareq}                   {\mathrel}{integrals}{"8C}
+\stix@MathSymbol{\triangleq}                {\mathrel}{integrals}{"8D}
+\stix@MathSymbol{\eqdef}                    {\mathrel}{integrals}{"8E}
+\stix@MathSymbol{\measeq}                   {\mathrel}{integrals}{"8F}
+\stix@MathSymbol{\questeq}                  {\mathrel}{integrals}{"90}
+\stix@MathSymbol{\ne}                       {\mathrel}{integrals}{"91}
+        \let\neq=\ne
+\stix@MathSymbol{\equiv}                    {\mathrel}{integrals}{"92}
+\stix@MathSymbol{\nequiv}                   {\mathrel}{integrals}{"93}
+\stix@MathSymbol{\Equiv}                    {\mathrel}{integrals}{"65}
+\stix@MathSymbol{\leq}                      {\mathrel}{integrals}{"66}
+        \let\le=\leq
+\stix@MathSymbol{\geq}                      {\mathrel}{integrals}{"67}
+        \let\ge=\geq
+\stix@MathSymbol{\leqq}                     {\mathrel}{integrals}{"68}
+\stix@MathSymbol{\geqq}                     {\mathrel}{integrals}{"69}
+\stix@MathSymbol{\lneqq}                    {\mathrel}{letters}{"40}
+\stix@MathSymbol{\gneqq}                    {\mathrel}{letters}{"7D}
+\stix@MathSymbol{\ll}                       {\mathrel}{letters}{"7E}
+\stix@MathSymbol{\gg}                       {\mathrel}{letters}{"B8}
+\stix@MathSymbol{\between}                  {\mathrel}{letters}{"B9}
+\stix@MathSymbol{\nasymp}                   {\mathrel}{letters}{"BA}
+\stix@MathSymbol{\nless}                    {\mathrel}{letters}{"BB}
+\stix@MathSymbol{\ngtr}                     {\mathrel}{letters}{"BC}
+\stix@MathSymbol{\nleq}                     {\mathrel}{letters}{"BD}
+\stix@MathSymbol{\ngeq}                     {\mathrel}{letters}{"BE}
+\stix@MathSymbol{\lesssim}                  {\mathrel}{letters}{"BF}
+\stix@MathSymbol{\gtrsim}                   {\mathrel}{letters}{"C0}
+\stix@MathSymbol{\nlesssim}                 {\mathrel}{letters}{"C1}
+\stix@MathSymbol{\ngtrsim}                  {\mathrel}{letters}{"C2}
+\stix@MathSymbol{\lessgtr}                  {\mathrel}{letters}{"C3}
+\stix@MathSymbol{\gtrless}                  {\mathrel}{letters}{"C4}
+\stix@MathSymbol{\nlessgtr}                 {\mathrel}{letters}{"C5}
+\stix@MathSymbol{\ngtrless}                 {\mathrel}{letters}{"C6}
+\stix@MathSymbol{\prec}                     {\mathrel}{letters}{"C7}
+\stix@MathSymbol{\succ}                     {\mathrel}{letters}{"C8}
+\stix@MathSymbol{\preccurlyeq}              {\mathrel}{letters}{"C9}
+\stix@MathSymbol{\succcurlyeq}              {\mathrel}{letters}{"CA}
+\stix@MathSymbol{\precsim}                  {\mathrel}{letters}{"CB}
+\stix@MathSymbol{\succsim}                  {\mathrel}{letters}{"CC}
+\stix@MathSymbol{\nprec}                    {\mathrel}{letters}{"CD}
+\stix@MathSymbol{\nsucc}                    {\mathrel}{letters}{"CE}
+\stix@MathSymbol{\subset}                   {\mathrel}{letters}{"CF}
+\stix@MathSymbol{\supset}                   {\mathrel}{letters}{"D0}
+\stix@MathSymbol{\nsubset}                  {\mathrel}{letters}{"D1}
+\stix@MathSymbol{\nsupset}                  {\mathrel}{letters}{"D2}
+\stix@MathSymbol{\subseteq}                 {\mathrel}{letters}{"D3}
+\stix@MathSymbol{\supseteq}                 {\mathrel}{letters}{"D4}
+\stix@MathSymbol{\nsubseteq}                {\mathrel}{letters}{"D5}
+\stix@MathSymbol{\nsupseteq}                {\mathrel}{letters}{"D6}
+\stix@MathSymbol{\subsetneq}                {\mathrel}{letters}{"D7}
+\stix@MathSymbol{\supsetneq}                {\mathrel}{letters}{"D8}
+\stix@MathSymbol{\cupleftarrow}             {\mathbin}{letters}{"D9}
+\stix@MathSymbol{\cupdot}                   {\mathbin}{letters}{"DA}
+\stix@MathSymbol{\uplus}                    {\mathbin}{letters}{"DB}
+\stix@MathSymbol{\sqsubset}                 {\mathrel}{letters}{"DC}
+\stix@MathSymbol{\sqsupset}                 {\mathrel}{letters}{"DD}
+\stix@MathSymbol{\sqsubseteq}               {\mathrel}{letters}{"DE}
+\stix@MathSymbol{\sqsupseteq}               {\mathrel}{letters}{"DF}
+\stix@MathSymbol{\sqcap}                    {\mathbin}{letters}{"E0}
+\stix@MathSymbol{\sqcup}                    {\mathbin}{letters}{"E1}
+\stix@MathSymbol{\oplus}                    {\mathbin}{letters}{"E2}
+\stix@MathSymbol{\ominus}                   {\mathbin}{letters}{"E3}
+\stix@MathSymbol{\otimes}                   {\mathbin}{letters}{"E4}
+\stix@MathSymbol{\oslash}                   {\mathbin}{letters}{"E5}
+\stix@MathSymbol{\odot}                     {\mathbin}{letters}{"E6}
+\stix@MathSymbol{\circledcirc}              {\mathbin}{letters}{"E7}
+\stix@MathSymbol{\circledast}               {\mathbin}{letters}{"E8}
+\stix@MathSymbol{\circledequal}             {\mathbin}{letters}{"E9}
+\stix@MathSymbol{\circleddash}              {\mathbin}{letters}{"EA}
+\stix@MathSymbol{\boxplus}                  {\mathbin}{letters}{"EB}
+\stix@MathSymbol{\boxminus}                 {\mathbin}{letters}{"EC}
+\stix@MathSymbol{\boxtimes}                 {\mathbin}{letters}{"ED}
+\stix@MathSymbol{\boxdot}                   {\mathbin}{letters}{"EE}
+\stix@MathSymbol{\vdash}                    {\mathrel}{letters}{"EF}
+\stix@MathSymbol{\dashv}                    {\mathrel}{letters}{"F0}
+\stix@MathSymbol{\top}                      {\mathord}{letters}{"F1}
+\stix@MathSymbol{\bot}                      {\mathord}{letters}{"F2}
+\stix@MathSymbol{\assert}                   {\mathrel}{letters}{"F3}
+\stix@MathSymbol{\models}                   {\mathrel}{letters}{"F4}
+\stix@MathSymbol{\vDash}                    {\mathrel}{letters}{"F5}
+\stix@MathSymbol{\Vdash}                    {\mathrel}{letters}{"F6}
+\stix@MathSymbol{\Vvdash}                   {\mathrel}{letters}{"F7}
+\stix@MathSymbol{\VDash}                    {\mathrel}{letters}{"F8}
+\stix@MathSymbol{\nvdash}                   {\mathrel}{letters}{"F9}
+\stix@MathSymbol{\nvDash}                   {\mathrel}{letters}{"FA}
+\stix@MathSymbol{\nVdash}                   {\mathrel}{letters}{"FB}
+\stix@MathSymbol{\nVDash}                   {\mathrel}{letters}{"FC}
+\stix@MathSymbol{\prurel}                   {\mathrel}{letters}{"FD}
+\stix@MathSymbol{\scurel}                   {\mathrel}{letters}{"FE}
+\stix@MathSymbol{\trianglelefteq}           {\mathrel}{letters}{"FF}
+\stix@MathSymbol{\unlhd}                    {\mathbin}{letters}{"FF}
+\stix@MathSymbol{\trianglerighteq}          {\mathrel}{symbols}{"00}
+\stix@MathSymbol{\unrhd}                    {\mathbin}{symbols}{"00}
+\stix@MathSymbol{\origof}                   {\mathrel}{symbols}{"01}
+\stix@MathSymbol{\imageof}                  {\mathrel}{symbols}{"02}
+\stix@MathSymbol{\multimap}                 {\mathrel}{symbols}{"03}
+\stix@MathSymbol{\hermitmatrix}             {\mathord}{symbols}{"04}
+\stix@MathSymbol{\intercal}                 {\mathbin}{symbols}{"05}
+\stix@MathSymbol{\veebar}                   {\mathbin}{symbols}{"06}
+\stix@MathSymbol{\barwedge}                 {\mathbin}{symbols}{"07}
+\stix@MathSymbol{\barvee}                   {\mathbin}{symbols}{"08}
+\stix@MathSymbol{\measuredrightangle}       {\mathord}{symbols}{"09}
+\stix@MathSymbol{\varlrtriangle}            {\mathord}{symbols}{"0A}
+\stix@MathSymbol{\smwhtdiamond}             {\mathbin}{symbols}{"0B}
+        \let\diamond=\smwhtdiamond
+\stix@MathSymbol{\cdot}                     {\mathbin}{symbols}{"0C}
+\stix@MathSymbol{\divideontimes}            {\mathbin}{symbols}{"0D}
+\stix@MathSymbol{\bowtie}                   {\mathrel}{symbols}{"0E}
+\stix@MathSymbol{\ltimes}                   {\mathbin}{symbols}{"0F}
+\stix@MathSymbol{\rtimes}                   {\mathbin}{symbols}{"10}
+\stix@MathSymbol{\leftthreetimes}           {\mathbin}{symbols}{"11}
+\stix@MathSymbol{\rightthreetimes}          {\mathbin}{symbols}{"12}
+\stix@MathSymbol{\backsimeq}                {\mathrel}{symbols}{"13}
+\stix@MathSymbol{\curlyvee}                 {\mathbin}{symbols}{"14}
+\stix@MathSymbol{\curlywedge}               {\mathbin}{symbols}{"15}
+\stix@MathSymbol{\Subset}                   {\mathrel}{symbols}{"16}
+\stix@MathSymbol{\Supset}                   {\mathrel}{symbols}{"17}
+\stix@MathSymbol{\Cap}                      {\mathbin}{symbols}{"18}
+        \let\doublecap=\Cap
+\stix@MathSymbol{\Cup}                      {\mathbin}{symbols}{"19}
+        \let\doublecup=\Cup
+\stix@MathSymbol{\pitchfork}                {\mathrel}{symbols}{"1A}
+\stix@MathSymbol{\equalparallel}            {\mathrel}{symbols}{"1B}
+\stix@MathSymbol{\lessdot}                  {\mathrel}{symbols}{"1C}
+\stix@MathSymbol{\gtrdot}                   {\mathrel}{symbols}{"1D}
+\stix@MathSymbol{\lll}                      {\mathrel}{symbols}{"1E}
+        \let\llless=\lll
+\stix@MathSymbol{\ggg}                      {\mathrel}{symbols}{"1F}
+        \let\gggtr=\ggg
+\stix@MathSymbol{\lesseqgtr}                {\mathrel}{symbols}{"20}
+\stix@MathSymbol{\gtreqless}                {\mathrel}{symbols}{"21}
+\stix@MathSymbol{\eqless}                   {\mathrel}{symbols}{"22}
+\stix@MathSymbol{\eqgtr}                    {\mathrel}{symbols}{"23}
+\stix@MathSymbol{\curlyeqprec}              {\mathrel}{symbols}{"24}
+\stix@MathSymbol{\curlyeqsucc}              {\mathrel}{symbols}{"25}
+\stix@MathSymbol{\npreccurlyeq}             {\mathrel}{symbols}{"26}
+\stix@MathSymbol{\nsucccurlyeq}             {\mathrel}{symbols}{"27}
+\stix@MathSymbol{\nsqsubseteq}              {\mathrel}{symbols}{"28}
+\stix@MathSymbol{\nsqsupseteq}              {\mathrel}{symbols}{"29}
+\stix@MathSymbol{\sqsubsetneq}              {\mathrel}{symbols}{"2A}
+\stix@MathSymbol{\sqsupsetneq}              {\mathrel}{symbols}{"2B}
+\stix@MathSymbol{\lnsim}                    {\mathrel}{symbols}{"2C}
+\stix@MathSymbol{\gnsim}                    {\mathrel}{symbols}{"2D}
+\stix@MathSymbol{\precnsim}                 {\mathrel}{symbols}{"2E}
+\stix@MathSymbol{\succnsim}                 {\mathrel}{symbols}{"2F}
+\stix@MathSymbol{\nvartriangleleft}         {\mathrel}{symbols}{"30}
+\stix@MathSymbol{\nvartriangleright}        {\mathrel}{symbols}{"31}
+\stix@MathSymbol{\ntrianglelefteq}          {\mathrel}{symbols}{"32}
+\stix@MathSymbol{\ntrianglerighteq}         {\mathrel}{symbols}{"33}
+\stix@MathSymbol{\vdotsmath}                {\mathrel}{symbols}{"34}
+        \DeclareRobustCommand\vdots{%
+                \ifmmode\vdotsmath\else%
+                {\usefont{LS1}{stixscr}{\f@series}{n}\char"34}%
+                \fi}
+\stix@MathSymbol{\unicodecdots}             {\mathord}{symbols}{"35} \let\@cdots=\unicodecdots \DeclareRobustCommand\cdots{\mathinner{\unicodecdots}}
+\stix@MathSymbol{\adots}                    {\mathrel}{symbols}{"36}
+\stix@MathSymbol{\ddots}                    {\mathrel}{symbols}{"37}
+\stix@MathSymbol{\disin}                    {\mathrel}{symbols}{"38}
+\stix@MathSymbol{\varisins}                 {\mathrel}{symbols}{"39}
+\stix@MathSymbol{\isins}                    {\mathrel}{symbols}{"3A}
+\stix@MathSymbol{\isindot}                  {\mathrel}{symbols}{"3B}
+\stix@MathSymbol{\varisinobar}              {\mathrel}{symbols}{"3C}
+\stix@MathSymbol{\isinobar}                 {\mathrel}{symbols}{"3D}
+\stix@MathSymbol{\isinvb}                   {\mathrel}{symbols}{"3E}
+\stix@MathSymbol{\isinE}                    {\mathrel}{symbols}{"3F}
+\stix@MathSymbol{\nisd}                     {\mathrel}{symbols}{"40}
+\stix@MathSymbol{\varnis}                   {\mathrel}{symbols}{"5B}
+\stix@MathSymbol{\nis}                      {\mathrel}{symbols}{"5C}
+\stix@MathSymbol{\varniobar}                {\mathrel}{symbols}{"5D}
+\stix@MathSymbol{\niobar}                   {\mathrel}{symbols}{"5E}
+\stix@MathSymbol{\bagmember}                {\mathrel}{symbols}{"5F}
+\stix@MathSymbol{\diameter}                 {\mathord}{symbols}{"60}
+\stix@MathSymbol{\house}                    {\mathord}{symbols}{"7E}
+
+\stix@MathSymbol{\varbarwedge}              {\mathbin}{symbols}{"99}
+\stix@MathSymbol{\vardoublebarwedge}        {\mathbin}{symbols}{"9A}
+\stix@MathSymbol{\invnot}                   {\mathord}{symbols}{"9B}
+\stix@MathSymbol{\sqlozenge}                {\mathord}{symbols}{"9C}
+\stix@MathSymbol{\profline}                 {\mathord}{symbols}{"9D}
+\stix@MathSymbol{\profsurf}                 {\mathord}{symbols}{"9E}
+\stix@MathSymbol{\viewdata}                 {\mathord}{symbols}{"9F}
+
+\stix@MathSymbol{\turnednot}                {\mathord}{symbols}{"A0}
+\stix@MathSymbol{\ulcorner}                {\mathopen}{symbols}{"A1}
+\stix@MathSymbol{\urcorner}               {\mathclose}{symbols}{"A2}
+\stix@MathSymbol{\llcorner}                {\mathopen}{symbols}{"A3}
+\stix@MathSymbol{\lrcorner}               {\mathclose}{symbols}{"A4}
+\stix@MathSymbol{\varhexagonlrbonds}        {\mathord}{symbols}{"A5}
+\stix@MathSymbol{\conictaper}               {\mathord}{symbols}{"A6}
+\stix@MathSymbol{\topbot}                   {\mathord}{symbols}{"A7}
+\stix@MathSymbol{\obar}                     {\mathbin}{symbols}{"A8}
+\stix@MathSymbol{\APLnotslash}              {\mathrel}{symbols}{"A9}
+\stix@MathSymbol{\APLnotbackslash}          {\mathord}{symbols}{"AA}
+\stix@MathSymbol{\APLboxupcaret}            {\mathord}{symbols}{"AB}
+\stix@MathSymbol{\APLboxquestion}           {\mathord}{symbols}{"AC}
+\stix@MathSymbol{\rangledownzigzagarrow}    {\mathord}{symbols}{"AD}
+\stix@MathSymbol{\hexagon}                  {\mathord}{symbols}{"AE}
+\stix@MathSymbol{\varcarriagereturn}        {\mathord}{symbols}{"AF}
+
+\stix@MathSymbol{\trapezium}                {\mathord}{symbols}{"B0}
+\stix@MathSymbol{\benzenr}                  {\mathord}{symbols}{"B1}
+\stix@MathSymbol{\strns}                    {\mathord}{symbols}{"B2}
+\stix@MathSymbol{\fltns}                    {\mathord}{symbols}{"B3}
+\stix@MathSymbol{\accurrent}                {\mathord}{symbols}{"B4}
+\stix@MathSymbol{\elinters}                 {\mathord}{symbols}{"B5}
+\stix@MathSymbol{\mathvisiblespace}         {\mathord}{symbols}{"B6}
+\stix@MathSymbol{\mdlgblksquare}            {\mathord}{symbols}{"B7} \let\blacksquare=\mdlgblksquare
+\stix@MathSymbol{\mdlgwhtsquare}            {\mathord}{symbols}{"B8} \let\square=\mdlgwhtsquare \let\Box=\mdlgwhtsquare
+\stix@MathSymbol{\squoval}                  {\mathord}{symbols}{"B9}
+\stix@MathSymbol{\blackinwhitesquare}       {\mathord}{symbols}{"BA}
+\stix@MathSymbol{\squarehfill}              {\mathord}{symbols}{"BB}
+\stix@MathSymbol{\squarevfill}              {\mathord}{symbols}{"BC}
+\stix@MathSymbol{\squarehvfill}             {\mathord}{symbols}{"BD}
+\stix@MathSymbol{\squarenwsefill}           {\mathord}{symbols}{"BE}
+\stix@MathSymbol{\squareneswfill}           {\mathord}{symbols}{"BF}
+
+\stix@MathSymbol{\squarecrossfill}          {\mathord}{symbols}{"C0}
+\stix@MathSymbol{\smblksquare}              {\mathord}{symbols}{"C1}
+\stix@MathSymbol{\smwhtsquare}              {\mathord}{symbols}{"C2}
+\stix@MathSymbol{\hrectangleblack}          {\mathord}{symbols}{"C3}
+\stix@MathSymbol{\hrectangle}               {\mathord}{symbols}{"C4}
+\stix@MathSymbol{\vrectangleblack}          {\mathord}{symbols}{"C5}
+\stix@MathSymbol{\vrectangle}               {\mathord}{symbols}{"C6}
+\stix@MathSymbol{\parallelogramblack}       {\mathord}{symbols}{"C7}
+\stix@MathSymbol{\parallelogram}            {\mathord}{symbols}{"C8}
+\stix@MathSymbol{\bigblacktriangleup}       {\mathord}{symbols}{"C9}
+\stix@MathSymbol{\bigtriangleup}            {\mathbin}{symbols}{"CA} \let\varbigtriangleup=\bigtriangleup \let\triangle=\bigtriangleup
+\stix@MathSymbol{\blacktriangle}            {\mathord}{symbols}{"CB}
+\stix@MathSymbol{\vartriangle}              {\mathrel}{symbols}{"CC}
+\stix@MathSymbol{\blacktriangleright}       {\mathord}{symbols}{"CD}
+\stix@MathSymbol{\vartriangleright}         {\mathrel}{symbols}{"CE} \stix@MathSymbol{\rhd}{\mathbin}{symbols}{"CE}
+\stix@MathSymbol{\smallblacktriangleright}  {\mathord}{symbols}{"CF}
+
+\stix@MathSymbol{\smalltriangleright}       {\mathord}{symbols}{"D0}
+\stix@MathSymbol{\blackpointerright}        {\mathord}{symbols}{"D1}
+\stix@MathSymbol{\whitepointerright}        {\mathord}{symbols}{"D2}
+\stix@MathSymbol{\bigblacktriangledown}     {\mathord}{symbols}{"D3}
+\stix@MathSymbol{\bigtriangledown}          {\mathord}{symbols}{"D4} \let\varbigtriangledown=\bigtriangledown
+\stix@MathSymbol{\blacktriangledown}        {\mathord}{symbols}{"D5}
+\stix@MathSymbol{\triangledown}             {\mathord}{symbols}{"D6}
+\stix@MathSymbol{\blacktriangleleft}        {\mathord}{symbols}{"D7}
+\stix@MathSymbol{\vartriangleleft}          {\mathrel}{symbols}{"D8} \stix@MathSymbol{\lhd}{\mathbin}{symbols}{"D8}
+\stix@MathSymbol{\smallblacktriangleleft}   {\mathord}{symbols}{"D9}
+\stix@MathSymbol{\smalltriangleleft}        {\mathord}{symbols}{"DA}
+\stix@MathSymbol{\blackpointerleft}         {\mathord}{symbols}{"DB}
+\stix@MathSymbol{\whitepointerleft}         {\mathord}{symbols}{"DC}
+\stix@MathSymbol{\mdlgblkdiamond}           {\mathord}{symbols}{"DD}
+\stix@MathSymbol{\mdlgwhtdiamond}           {\mathord}{symbols}{"DE}
+\stix@MathSymbol{\blackinwhitediamond}      {\mathord}{symbols}{"DF}
+
+\stix@MathSymbol{\fisheye}                  {\mathord}{symbols}{"E0}
+\stix@MathSymbol{\mdlgwhtlozenge}           {\mathord}{symbols}{"E1} \let\lozenge=\mdlgwhtlozenge \let\Diamond=\mdlgwhtlozenge
+\stix@MathSymbol{\mdlgwhtcircle}            {\mathbin}{symbols}{"E2} \let\bigcirc=\mdlgwhtcircle
+\stix@MathSymbol{\dottedcircle}             {\mathord}{symbols}{"E3}
+\stix@MathSymbol{\circlevertfill}           {\mathord}{symbols}{"E4}
+\stix@MathSymbol{\bullseye}                 {\mathord}{symbols}{"E5}
+\stix@MathSymbol{\mdlgblkcircle}            {\mathord}{symbols}{"E6}
+\stix@MathSymbol{\circlelefthalfblack}      {\mathord}{symbols}{"E7}
+\stix@MathSymbol{\circlerighthalfblack}     {\mathord}{symbols}{"E8}
+\stix@MathSymbol{\circlebottomhalfblack}    {\mathord}{symbols}{"E9}
+\stix@MathSymbol{\circletophalfblack}       {\mathord}{symbols}{"EA}
+\stix@MathSymbol{\circleurquadblack}        {\mathord}{symbols}{"EB}
+\stix@MathSymbol{\blackcircleulquadwhite}   {\mathord}{symbols}{"EC}
+\stix@MathSymbol{\blacklefthalfcircle}      {\mathord}{symbols}{"ED}
+\stix@MathSymbol{\blackrighthalfcircle}     {\mathord}{symbols}{"EE}
+\stix@MathSymbol{\inversebullet}            {\mathord}{symbols}{"EF}
+
+\stix@MathSymbol{\inversewhitecircle}       {\mathord}{symbols}{"F0}
+\stix@MathSymbol{\invwhiteupperhalfcircle}  {\mathord}{symbols}{"F1}
+\stix@MathSymbol{\invwhitelowerhalfcircle}  {\mathord}{symbols}{"F2}
+\stix@MathSymbol{\ularc}                    {\mathord}{symbols}{"F3}
+\stix@MathSymbol{\urarc}                    {\mathord}{symbols}{"F4}
+\stix@MathSymbol{\lrarc}                    {\mathord}{symbols}{"F5}
+\stix@MathSymbol{\llarc}                    {\mathord}{symbols}{"F6}
+\stix@MathSymbol{\topsemicircle}            {\mathord}{symbols}{"F7}
+\stix@MathSymbol{\botsemicircle}            {\mathord}{symbols}{"F8}
+\stix@MathSymbol{\lrblacktriangle}          {\mathord}{symbols}{"F9}
+\stix@MathSymbol{\llblacktriangle}          {\mathord}{symbols}{"FA}
+\stix@MathSymbol{\ulblacktriangle}          {\mathord}{symbols}{"FB}
+\stix@MathSymbol{\urblacktriangle}          {\mathord}{symbols}{"FC}
+\stix@MathSymbol{\smwhtcircle}              {\mathord}{symbols}{"FD} \let\circ=\smwhtcircle
+\stix@MathSymbol{\squareleftblack}          {\mathord}{symbols}{"FE}
+\stix@MathSymbol{\squarerightblack}         {\mathord}{symbols}{"FF}
+\stix@MathSymbol{\acidfree}                 {\mathord}  {symbols2}{"00}
+\stix@MathSymbol{\draftingarrow}            {\mathord}  {symbols2}{"01}
+\stix@MathSymbol{\threedangle}              {\mathord}  {symbols2}{"02}
+\stix@MathSymbol{\whiteinwhitetriangle}     {\mathord}  {symbols2}{"03}
+\stix@MathSymbol{\perp}                     {\mathrel}  {symbols2}{"04}
+\stix@MathSymbol{\subsetcirc}               {\mathord}  {symbols2}{"05}
+\stix@MathSymbol{\supsetcirc}               {\mathord}  {symbols2}{"06}
+\stix@MathSymbol{\lbag}                     {\mathopen} {symbols2}{"07}
+\stix@MathSymbol{\rbag}                     {\mathclose}{symbols2}{"08}
+\stix@MathSymbol{\veedot}                   {\mathbin}  {symbols2}{"09}
+\stix@MathSymbol{\bsolhsub}                 {\mathrel}  {symbols2}{"0A}
+\stix@MathSymbol{\suphsol}                  {\mathrel}  {symbols2}{"0B}
+\stix@MathSymbol{\diamondcdot}              {\mathord}  {symbols2}{"0C}
+\stix@MathSymbol{\wedgedot}                 {\mathbin}  {symbols2}{"0D}
+\stix@MathSymbol{\upin}                     {\mathrel}  {symbols2}{"0E}
+\stix@MathSymbol{\pullback}                 {\mathrel}  {symbols2}{"0F}
+\stix@MathSymbol{\pushout}                  {\mathrel}  {symbols2}{"10}
+\stix@MathSymbol{\leftouterjoin}            {\mathop}   {symbols2}{"11}
+\stix@MathSymbol{\rightouterjoin}           {\mathop}   {symbols2}{"12}
+\stix@MathSymbol{\fullouterjoin}            {\mathop}   {symbols2}{"13}
+\stix@MathSymbol{\bigbot}                   {\mathop}   {symbols2}{"14}
+\stix@MathSymbol{\bigtop}                   {\mathop}   {symbols2}{"15}
+\stix@MathSymbol{\DashVDash}                {\mathrel}  {symbols2}{"16}
+\stix@MathSymbol{\dashVdash}                {\mathrel}  {symbols2}{"17}
+\stix@MathSymbol{\multimapinv}              {\mathrel}  {symbols2}{"18}
+\stix@MathSymbol{\vlongdash}                {\mathrel}  {symbols2}{"19}
+\stix@MathSymbol{\longdashv}                {\mathrel}  {symbols2}{"1A}
+\stix@MathSymbol{\cirbot}                   {\mathrel}  {symbols2}{"1B}
+\stix@MathSymbol{\lozengeminus}             {\mathbin}  {symbols2}{"1C}
+\stix@MathSymbol{\concavediamond}           {\mathbin}  {symbols2}{"1D}
+\stix@MathSymbol{\concavediamondtickleft}   {\mathbin}  {symbols2}{"1E}
+\stix@MathSymbol{\concavediamondtickright}  {\mathbin}  {symbols2}{"1F}
+\stix@MathSymbol{\whitesquaretickleft}      {\mathbin}  {symbols2}{"20}
+\stix@MathSymbol{\whitesquaretickright}     {\mathbin}  {symbols2}{"21}
+\stix@MathSymbol{\Lbrbrak}                  {\mathopen} {symbols2}{"22}
+\stix@MathSymbol{\Rbrbrak}                  {\mathclose}{symbols2}{"23}
+\stix@MathSymbol{\mdsmblkcircle}            {\mathord}  {symbols2}{"24}
+\stix@MathSymbol{\typecolon}                {\mathbin}  {symbols2}{"25}
+\stix@MathSymbol{\llparenthesis}            {\mathopen} {symbols2}{"26}
+\stix@MathSymbol{\rrparenthesis}            {\mathclose}{symbols2}{"27}
+\stix@MathSymbol{\llangle}                  {\mathopen} {symbols2}{"28}
+\stix@MathSymbol{\rrangle}                  {\mathclose}{symbols2}{"29}
+\stix@MathSymbol{\lbrackubar}               {\mathopen} {symbols2}{"2A}
+\stix@MathSymbol{\rbrackubar}               {\mathclose}{symbols2}{"2B}
+\stix@MathSymbol{\lbrackultick}             {\mathopen} {symbols2}{"2C}
+\stix@MathSymbol{\rbracklrtick}             {\mathclose}{symbols2}{"2D}
+\stix@MathSymbol{\lbracklltick}             {\mathopen} {symbols2}{"2E}
+\stix@MathSymbol{\rbrackurtick}             {\mathclose}{symbols2}{"2F}
+\stix@MathSymbol{\langledot}                {\mathopen} {symbols2}{"30}
+\stix@MathSymbol{\rangledot}                {\mathclose}{symbols2}{"31}
+\stix@MathSymbol{\lparenless}               {\mathopen} {symbols2}{"32}
+\stix@MathSymbol{\rparengtr}                {\mathclose}{symbols2}{"33}
+\stix@MathSymbol{\Lparengtr}                {\mathopen} {symbols2}{"34}
+\stix@MathSymbol{\Rparenless}               {\mathclose}{symbols2}{"35}
+\stix@MathSymbol{\lblkbrbrak}               {\mathopen} {symbols2}{"36}
+\stix@MathSymbol{\rblkbrbrak}               {\mathclose}{symbols2}{"37}
+\stix@MathSymbol{\fourvdots}                {\mathord}  {symbols2}{"38}
+\stix@MathSymbol{\vzigzag}                  {\mathord}  {symbols2}{"39}
+\stix@MathSymbol{\measuredangleleft}        {\mathord}  {symbols2}{"3A}
+\stix@MathSymbol{\rightanglesqr}            {\mathord}  {symbols2}{"3B}
+\stix@MathSymbol{\rightanglemdot}           {\mathord}  {symbols2}{"3C}
+\stix@MathSymbol{\angles}                   {\mathord}  {symbols2}{"3D}
+\stix@MathSymbol{\angdnr}                   {\mathord}  {symbols2}{"3E}
+\stix@MathSymbol{\gtlpar}                   {\mathord}  {symbols2}{"3F}
+\stix@MathSymbol{\sphericalangleup}         {\mathord}  {symbols2}{"40}
+\stix@MathSymbol{\turnangle}                {\mathord}  {symbols2}{"5B}
+\stix@MathSymbol{\revangle}                 {\mathord}  {symbols2}{"5C}
+\stix@MathSymbol{\angleubar}                {\mathord}  {symbols2}{"5D}
+\stix@MathSymbol{\revangleubar}             {\mathord}  {symbols2}{"5E}
+\stix@MathSymbol{\wideangledown}            {\mathord}  {symbols2}{"5F}
+\stix@MathSymbol{\wideangleup}              {\mathord}  {symbols2}{"60}
+\stix@MathSymbol{\measanglerutone}          {\mathord}  {symbols2}{"7D}
+\stix@MathSymbol{\measanglelutonw}          {\mathord}  {symbols2}{"7E}
+
+\stix@MathSymbol{\measanglerdtose}          {\mathord}  {symbols2}{"99}
+\stix@MathSymbol{\measangleldtosw}          {\mathord}  {symbols2}{"9A}
+\stix@MathSymbol{\measangleurtone}          {\mathord}  {symbols2}{"9B}
+\stix@MathSymbol{\measangleultonw}          {\mathord}  {symbols2}{"9C}
+\stix@MathSymbol{\measangledrtose}          {\mathord}  {symbols2}{"9D}
+\stix@MathSymbol{\measangledltosw}          {\mathord}  {symbols2}{"9E}
+\stix@MathSymbol{\revemptyset}              {\mathord}  {symbols2}{"9F}
+
+\stix@MathSymbol{\emptysetobar}             {\mathord}  {symbols2}{"A0}
+\stix@MathSymbol{\emptysetocirc}            {\mathord}  {symbols2}{"A1}
+\stix@MathSymbol{\emptysetoarr}             {\mathord}  {symbols2}{"A2}
+\stix@MathSymbol{\emptysetoarrl}            {\mathord}  {symbols2}{"A3}
+\stix@MathSymbol{\circlehbar}               {\mathbin}  {symbols2}{"A4}
+\stix@MathSymbol{\circledvert}              {\mathbin}  {symbols2}{"A5}
+\stix@MathSymbol{\circledparallel}          {\mathbin}  {symbols2}{"A6}
+\stix@MathSymbol{\obslash}                  {\mathbin}  {symbols2}{"A7}
+\stix@MathSymbol{\operp}                    {\mathbin}  {symbols2}{"A8}
+\stix@MathSymbol{\obot}                     {\mathord}  {symbols2}{"A9}
+\stix@MathSymbol{\olcross}                  {\mathord}  {symbols2}{"AA}
+\stix@MathSymbol{\odotslashdot}             {\mathord}  {symbols2}{"AB}
+\stix@MathSymbol{\uparrowoncircle}          {\mathord}  {symbols2}{"AC}
+\stix@MathSymbol{\circledwhitebullet}       {\mathord}  {symbols2}{"AD}
+\stix@MathSymbol{\circledbullet}            {\mathord}  {symbols2}{"AE}
+\stix@MathSymbol{\olessthan}                {\mathbin}  {symbols2}{"AF}
+
+\stix@MathSymbol{\ogreaterthan}             {\mathbin}  {symbols2}{"B0}
+\stix@MathSymbol{\cirscir}                  {\mathord}  {symbols2}{"B1}
+\stix@MathSymbol{\cirE}                     {\mathord}  {symbols2}{"B2}
+\stix@MathSymbol{\boxdiag}                  {\mathbin}  {symbols2}{"B3}
+\stix@MathSymbol{\boxbslash}                {\mathbin}  {symbols2}{"B4}
+\stix@MathSymbol{\boxast}                   {\mathbin}  {symbols2}{"B5}
+\stix@MathSymbol{\boxcircle}                {\mathbin}  {symbols2}{"B6}
+\stix@MathSymbol{\boxbox}                   {\mathbin}  {symbols2}{"B7}
+\stix@MathSymbol{\boxonbox}                 {\mathord}  {symbols2}{"B8}
+\stix@MathSymbol{\triangleodot}             {\mathord}  {symbols2}{"B9}
+\stix@MathSymbol{\triangleubar}             {\mathord}  {symbols2}{"BA}
+\stix@MathSymbol{\triangles}                {\mathord}  {symbols2}{"BB}
+\stix@MathSymbol{\triangleserifs}           {\mathbin}  {symbols2}{"BC}
+\stix@MathSymbol{\rtriltri}                 {\mathrel}  {symbols2}{"BD}
+\stix@MathSymbol{\ltrivb}                   {\mathrel}  {symbols2}{"BE}
+\stix@MathSymbol{\vbrtri}                   {\mathrel}  {symbols2}{"BF}
+
+\stix@MathSymbol{\lfbowtie}                 {\mathrel}  {symbols2}{"C0}
+\stix@MathSymbol{\rfbowtie}                 {\mathrel}  {symbols2}{"C1}
+\stix@MathSymbol{\fbowtie}                  {\mathrel}  {symbols2}{"C2}
+\stix@MathSymbol{\lftimes}                  {\mathrel}  {symbols2}{"C3}
+\stix@MathSymbol{\rftimes}                  {\mathrel}  {symbols2}{"C4}
+\stix@MathSymbol{\hourglass}                {\mathbin}  {symbols2}{"C5}
+\stix@MathSymbol{\blackhourglass}           {\mathbin}  {symbols2}{"C6}
+\stix@MathSymbol{\lvzigzag}                 {\mathopen} {symbols2}{"C7}
+\stix@MathSymbol{\rvzigzag}                 {\mathclose}{symbols2}{"C8}
+\stix@MathSymbol{\Lvzigzag}                 {\mathopen} {symbols2}{"C9}
+\stix@MathSymbol{\Rvzigzag}                 {\mathclose}{symbols2}{"CA}
+\stix@MathSymbol{\iinfin}                   {\mathord}  {symbols2}{"CB}
+\stix@MathSymbol{\tieinfty}                 {\mathord}  {symbols2}{"CC}
+\stix@MathSymbol{\nvinfty}                  {\mathord}  {symbols2}{"CD}
+\stix@MathSymbol{\dualmap}                  {\mathrel}  {symbols2}{"CE}
+\stix@MathSymbol{\laplac}                   {\mathord}  {symbols2}{"CF}
+
+\stix@MathSymbol{\lrtriangleeq}             {\mathrel}  {symbols2}{"D0}
+\stix@MathSymbol{\shuffle}                  {\mathbin}  {symbols2}{"D1}
+\stix@MathSymbol{\eparsl}                   {\mathrel}  {symbols2}{"D2}
+\stix@MathSymbol{\smeparsl}                 {\mathrel}  {symbols2}{"D3}
+\stix@MathSymbol{\eqvparsl}                 {\mathrel}  {symbols2}{"D4}
+\stix@MathSymbol{\gleichstark}              {\mathrel}  {symbols2}{"D5}
+\stix@MathSymbol{\thermod}                  {\mathord}  {symbols2}{"D6}
+\stix@MathSymbol{\downtriangleleftblack}    {\mathord}  {symbols2}{"D7}
+\stix@MathSymbol{\downtrianglerightblack}   {\mathord}  {symbols2}{"D8}
+\stix@MathSymbol{\blackdiamonddownarrow}    {\mathord}  {symbols2}{"D9}
+\stix@MathSymbol{\blacklozenge}             {\mathord}  {symbols2}{"DA} \stix@MathSymbol{\mdlgblklozenge}{\mathbin}{symbols2}{"DA}
+\stix@MathSymbol{\circledownarrow}          {\mathord}  {symbols2}{"DB}
+\stix@MathSymbol{\blackcircledownarrow}     {\mathord}  {symbols2}{"DC}
+\stix@MathSymbol{\errbarsquare}             {\mathord}  {symbols2}{"DD}
+\stix@MathSymbol{\errbarblacksquare}        {\mathord}  {symbols2}{"DE}
+\stix@MathSymbol{\errbardiamond}            {\mathord}  {symbols2}{"DF}
+
+\stix@MathSymbol{\errbarblackdiamond}       {\mathord}  {symbols2}{"E0}
+\stix@MathSymbol{\errbarcircle}             {\mathord}  {symbols2}{"E1}
+\stix@MathSymbol{\errbarblackcircle}        {\mathord}  {symbols2}{"E2}
+\stix@MathSymbol{\ruledelayed}              {\mathrel}  {symbols2}{"E3}
+\stix@MathSymbol{\setminus}                 {\mathbin}  {symbols2}{"E4}
+\stix@MathSymbol{\dsol}                     {\mathbin}  {symbols2}{"E5}
+\stix@MathSymbol{\rsolbar}                  {\mathbin}  {symbols2}{"E6}
+\stix@MathSymbol{\doubleplus}               {\mathbin}  {symbols2}{"E7}
+\stix@MathSymbol{\tripleplus}               {\mathbin}  {symbols2}{"E8}
+\stix@MathSymbol{\lcurvyangle}              {\mathopen} {symbols2}{"E9}
+\stix@MathSymbol{\rcurvyangle}              {\mathclose}{symbols2}{"EA}
+\stix@MathSymbol{\tplus}                    {\mathbin}  {symbols2}{"EB}
+\stix@MathSymbol{\tminus}                   {\mathbin}  {symbols2}{"EC}
+\stix@MathSymbol{\Join}                     {\mathop}   {symbols2}{"ED}
+\stix@MathSymbol{\bigtriangleleft}          {\mathop}   {symbols2}{"EE}
+\stix@MathSymbol{\zcmp}                     {\mathop}   {symbols2}{"EF}
+
+\stix@MathSymbol{\zpipe}                    {\mathop}   {symbols2}{"F0}
+\stix@MathSymbol{\zproject}                 {\mathop}   {symbols2}{"F1}
+\stix@MathSymbol{\ringplus}                 {\mathbin}  {symbols2}{"F2}
+\stix@MathSymbol{\plushat}                  {\mathbin}  {symbols2}{"F3}
+\stix@MathSymbol{\simplus}                  {\mathbin}  {symbols2}{"F4}
+\stix@MathSymbol{\plusdot}                  {\mathbin}  {symbols2}{"F5}
+\stix@MathSymbol{\plussim}                  {\mathbin}  {symbols2}{"F6}
+\stix@MathSymbol{\plussubtwo}               {\mathbin}  {symbols2}{"F7}
+\stix@MathSymbol{\plustrif}                 {\mathbin}  {symbols2}{"F8}
+\stix@MathSymbol{\commaminus}               {\mathbin}  {symbols2}{"F9}
+\stix@MathSymbol{\minusdot}                 {\mathbin}  {symbols2}{"FA}
+\stix@MathSymbol{\minusfdots}               {\mathbin}  {symbols2}{"FB}
+\stix@MathSymbol{\minusrdots}               {\mathbin}  {symbols2}{"FC}
+\stix@MathSymbol{\opluslhrim}               {\mathbin}  {symbols2}{"FD}
+\stix@MathSymbol{\oplusrhrim}               {\mathbin}  {symbols2}{"FE}
+\stix@MathSymbol{\vectimes}                 {\mathbin}  {symbols2}{"FF}
+\stix@MathSymbol{\succneq}                  {\mathrel}{symbols3}{"26}
+\stix@MathSymbol{\preceqq}                  {\mathrel}{symbols3}{"27}
+\stix@MathSymbol{\succeqq}                  {\mathrel}{symbols3}{"28}
+\stix@MathSymbol{\precneqq}                 {\mathrel}{symbols3}{"29}
+\stix@MathSymbol{\succneqq}                 {\mathrel}{symbols3}{"2A}
+\stix@MathSymbol{\precapprox}               {\mathrel}{symbols3}{"2B}
+\stix@MathSymbol{\succapprox}               {\mathrel}{symbols3}{"2C}
+\stix@MathSymbol{\precnapprox}              {\mathrel}{symbols3}{"2D}
+\stix@MathSymbol{\succnapprox}              {\mathrel}{symbols3}{"2E}
+\stix@MathSymbol{\Prec}                     {\mathrel}{symbols3}{"2F}
+\stix@MathSymbol{\Succ}                     {\mathrel}{symbols3}{"3A}
+\stix@MathSymbol{\subsetdot}                {\mathrel}{symbols3}{"3B}
+\stix@MathSymbol{\supsetdot}                {\mathrel}{symbols3}{"3C}
+\stix@MathSymbol{\subsetplus}               {\mathrel}{symbols3}{"3D}
+\stix@MathSymbol{\supsetplus}               {\mathrel}{symbols3}{"3E}
+\stix@MathSymbol{\submult}                  {\mathrel}{symbols3}{"3F}
+\stix@MathSymbol{\supmult}                  {\mathrel}{symbols3}{"40}
+\stix@MathSymbol{\subedot}                  {\mathrel}{symbols3}{"5B}
+\stix@MathSymbol{\supedot}                  {\mathrel}{symbols3}{"5C}
+\stix@MathSymbol{\subseteqq}                {\mathrel}{symbols3}{"5D}
+\stix@MathSymbol{\supseteqq}                {\mathrel}{symbols3}{"5E}
+\stix@MathSymbol{\subsim}                   {\mathrel}{symbols3}{"5F}
+\stix@MathSymbol{\supsim}                   {\mathrel}{symbols3}{"60}
+\stix@MathSymbol{\subsetapprox}             {\mathrel}{symbols3}{"7D}
+\stix@MathSymbol{\supsetapprox}             {\mathrel}{symbols3}{"7E}
+
+\stix@MathSymbol{\Bbbk}                     {\mathord}{symbols3}{`k}
+
+\stix@MathSymbol{\capbarcup}                {\mathbin}{symbols3}{"99}
+\stix@MathSymbol{\twocups}                  {\mathbin}{symbols3}{"9A}
+\stix@MathSymbol{\twocaps}                  {\mathbin}{symbols3}{"9B}
+\stix@MathSymbol{\closedvarcup}             {\mathbin}{symbols3}{"9C}
+\stix@MathSymbol{\closedvarcap}             {\mathbin}{symbols3}{"9D}
+\stix@MathSymbol{\Sqcap}                    {\mathbin}{symbols3}{"9E}
+\stix@MathSymbol{\Sqcup}                    {\mathbin}{symbols3}{"9F}
+
+\stix@MathSymbol{\closedvarcupsmashprod}    {\mathbin}{symbols3}{"A0}
+\stix@MathSymbol{\wedgeodot}                {\mathbin}{symbols3}{"A1}
+\stix@MathSymbol{\veeodot}                  {\mathbin}{symbols3}{"A2}
+\stix@MathSymbol{\Wedge}                    {\mathbin}{symbols3}{"A3}
+\stix@MathSymbol{\Vee}                      {\mathbin}{symbols3}{"A4}
+\stix@MathSymbol{\wedgeonwedge}             {\mathbin}{symbols3}{"A5}
+\stix@MathSymbol{\veeonvee}                 {\mathbin}{symbols3}{"A6}
+\stix@MathSymbol{\bigslopedvee}             {\mathbin}{symbols3}{"A7}
+\stix@MathSymbol{\bigslopedwedge}           {\mathbin}{symbols3}{"A8}
+\stix@MathSymbol{\veeonwedge}               {\mathrel}{symbols3}{"A9}
+\stix@MathSymbol{\wedgemidvert}             {\mathbin}{symbols3}{"AA}
+\stix@MathSymbol{\veemidvert}               {\mathbin}{symbols3}{"AB}
+\stix@MathSymbol{\midbarwedge}              {\mathbin}{symbols3}{"AC}
+\stix@MathSymbol{\midbarvee}                {\mathbin}{symbols3}{"AD}
+\stix@MathSymbol{\doublebarwedge}           {\mathbin}{symbols3}{"AE}
+\stix@MathSymbol{\wedgebar}                 {\mathbin}{symbols3}{"AF}
+
+\stix@MathSymbol{\wedgedoublebar}           {\mathbin}{symbols3}{"B0}
+\stix@MathSymbol{\varveebar}                {\mathbin}{symbols3}{"B1}
+\stix@MathSymbol{\doublebarvee}             {\mathbin}{symbols3}{"B2}
+\stix@MathSymbol{\veedoublebar}             {\mathbin}{symbols3}{"B3}
+\stix@MathSymbol{\dsub}                     {\mathbin}{symbols3}{"B4}
+\stix@MathSymbol{\rsub}                     {\mathbin}{symbols3}{"B5}
+\stix@MathSymbol{\eqdot}                    {\mathrel}{symbols3}{"B6}
+\stix@MathSymbol{\dotequiv}                 {\mathrel}{symbols3}{"B7}
+\stix@MathSymbol{\equivVert}                {\mathrel}{symbols3}{"B8}
+\stix@MathSymbol{\equivVvert}               {\mathrel}{symbols3}{"B9}
+\stix@MathSymbol{\dotsim}                   {\mathrel}{symbols3}{"BA}
+\stix@MathSymbol{\simrdots}                 {\mathrel}{symbols3}{"BB}
+\stix@MathSymbol{\simminussim}              {\mathrel}{symbols3}{"BC}
+\stix@MathSymbol{\congdot}                  {\mathrel}{symbols3}{"BD}
+\stix@MathSymbol{\asteq}                    {\mathrel}{symbols3}{"BE}
+\stix@MathSymbol{\hatapprox}                {\mathrel}{symbols3}{"BF}
+
+\stix@MathSymbol{\approxeqq}                {\mathrel}{symbols3}{"C0}
+\stix@MathSymbol{\eqqplus}                  {\mathbin}{symbols3}{"C1}
+\stix@MathSymbol{\pluseqq}                  {\mathbin}{symbols3}{"C2}
+\stix@MathSymbol{\eqqsim}                   {\mathrel}{symbols3}{"C3}
+\stix@MathSymbol{\Coloneq}                  {\mathrel}{symbols3}{"C4}
+\stix@MathSymbol{\eqeq}                     {\mathrel}{symbols3}{"C5}
+\stix@MathSymbol{\eqeqeq}                   {\mathrel}{symbols3}{"C6}
+\stix@MathSymbol{\ddotseq}                  {\mathrel}{symbols3}{"C7}
+\stix@MathSymbol{\equivDD}                  {\mathrel}{symbols3}{"C8}
+\stix@MathSymbol{\ltcir}                    {\mathrel}{symbols3}{"C9}
+\stix@MathSymbol{\gtcir}                    {\mathrel}{symbols3}{"CA}
+\stix@MathSymbol{\ltquest}                  {\mathrel}{symbols3}{"CB}
+\stix@MathSymbol{\gtquest}                  {\mathrel}{symbols3}{"CC}
+\stix@MathSymbol{\leqslant}                 {\mathrel}{symbols3}{"CD}
+\stix@MathSymbol{\geqslant}                 {\mathrel}{symbols3}{"CE}
+\stix@MathSymbol{\lesdot}                   {\mathrel}{symbols3}{"CF}
+
+\stix@MathSymbol{\gesdot}                   {\mathrel}{symbols3}{"D0}
+\stix@MathSymbol{\lesdoto}                  {\mathrel}{symbols3}{"D1}
+\stix@MathSymbol{\gesdoto}                  {\mathrel}{symbols3}{"D2}
+\stix@MathSymbol{\lesdotor}                 {\mathrel}{symbols3}{"D3}
+\stix@MathSymbol{\gesdotol}                 {\mathrel}{symbols3}{"D4}
+\stix@MathSymbol{\lessapprox}               {\mathrel}{symbols3}{"D5}
+\stix@MathSymbol{\gtrapprox}                {\mathrel}{symbols3}{"D6}
+\stix@MathSymbol{\lneq}                     {\mathrel}{symbols3}{"D7}
+\stix@MathSymbol{\gneq}                     {\mathrel}{symbols3}{"D8}
+\stix@MathSymbol{\lnapprox}                 {\mathrel}{symbols3}{"D9}
+\stix@MathSymbol{\gnapprox}                 {\mathrel}{symbols3}{"DA}
+\stix@MathSymbol{\lesseqqgtr}               {\mathrel}{symbols3}{"DB}
+\stix@MathSymbol{\gtreqqless}               {\mathrel}{symbols3}{"DC}
+\stix@MathSymbol{\lsime}                    {\mathrel}{symbols3}{"DD}
+\stix@MathSymbol{\gsime}                    {\mathrel}{symbols3}{"DE}
+\stix@MathSymbol{\lsimg}                    {\mathrel}{symbols3}{"DF}
+
+\stix@MathSymbol{\gsiml}                    {\mathrel}{symbols3}{"E0}
+\stix@MathSymbol{\lgE}                      {\mathrel}{symbols3}{"E1}
+\stix@MathSymbol{\glE}                      {\mathrel}{symbols3}{"E2}
+\stix@MathSymbol{\lesges}                   {\mathrel}{symbols3}{"E3}
+\stix@MathSymbol{\gesles}                   {\mathrel}{symbols3}{"E4}
+\stix@MathSymbol{\eqslantless}              {\mathrel}{symbols3}{"E5}
+\stix@MathSymbol{\eqslantgtr}               {\mathrel}{symbols3}{"E6}
+\stix@MathSymbol{\elsdot}                   {\mathrel}{symbols3}{"E7}
+\stix@MathSymbol{\egsdot}                   {\mathrel}{symbols3}{"E8}
+\stix@MathSymbol{\eqqless}                  {\mathrel}{symbols3}{"E9}
+\stix@MathSymbol{\eqqgtr}                   {\mathrel}{symbols3}{"EA}
+\stix@MathSymbol{\eqqslantless}             {\mathrel}{symbols3}{"EB}
+\stix@MathSymbol{\eqqslantgtr}              {\mathrel}{symbols3}{"EC}
+\stix@MathSymbol{\simless}                  {\mathrel}{symbols3}{"ED}
+\stix@MathSymbol{\simgtr}                   {\mathrel}{symbols3}{"EE}
+\stix@MathSymbol{\simlE}                    {\mathrel}{symbols3}{"EF}
+
+\stix@MathSymbol{\simgE}                    {\mathrel}{symbols3}{"F0}
+\stix@MathSymbol{\Lt}                       {\mathrel}{symbols3}{"F1}
+\stix@MathSymbol{\Gt}                       {\mathrel}{symbols3}{"F2}
+\stix@MathSymbol{\partialmeetcontraction}   {\mathrel}{symbols3}{"F3}
+\stix@MathSymbol{\glj}                      {\mathrel}{symbols3}{"F4}
+\stix@MathSymbol{\gla}                      {\mathrel}{symbols3}{"F5}
+\stix@MathSymbol{\ltcc}                     {\mathrel}{symbols3}{"F6}
+\stix@MathSymbol{\gtcc}                     {\mathrel}{symbols3}{"F7}
+\stix@MathSymbol{\lescc}                    {\mathrel}{symbols3}{"F8}
+\stix@MathSymbol{\gescc}                    {\mathrel}{symbols3}{"F9}
+\stix@MathSymbol{\smt}                      {\mathrel}{symbols3}{"FA}
+\stix@MathSymbol{\lat}                      {\mathrel}{symbols3}{"FB}
+\stix@MathSymbol{\smte}                     {\mathrel}{symbols3}{"FC}
+\stix@MathSymbol{\late}                     {\mathrel}{symbols3}{"FD}
+\stix@MathSymbol{\bumpeqq}                  {\mathrel}{symbols3}{"FE}
+\stix@MathSymbol{\precneq}                  {\mathrel}{symbols3}{"FF}
+\stix@MathSymbol{\ngeqq}                    {\mathrel}{symbols4}{"02}
+\stix@MathSymbol{\ngeqslant}                {\mathrel}{symbols4}{"03}
+\stix@MathSymbol{\nleqslant}                {\mathrel}{symbols4}{"04}
+\stix@MathSymbol{\nleqq}                    {\mathrel}{symbols4}{"05}
+\stix@MathSymbol{\nsubseteqq}               {\mathrel}{symbols4}{"06}
+\stix@MathSymbol{\nsupseteqq}               {\mathrel}{symbols4}{"07}
+
+\stix@MathSymbol{\mathsterling}             {\mathord}{symbols4}{"7D}
+
+\stix@MathSymbol{\ncongdot}                 {\mathrel}{symbols4}{"09}
+\stix@MathSymbol{\napproxeqq}               {\mathrel}{symbols4}{"0A}
+\stix@MathSymbol{\nll}                      {\mathrel}{symbols4}{"0B}
+\stix@MathSymbol{\ngg}                      {\mathrel}{symbols4}{"0C}
+\stix@MathSymbol{\nsqsubset}                {\mathrel}{symbols4}{"1A}
+\stix@MathSymbol{\npreceq}                  {\mathrel}{symbols4}{"16}
+\stix@MathSymbol{\nsucceq}                  {\mathrel}{symbols4}{"19}
+\stix@MathSymbol{\nsqsupset}                {\mathrel}{symbols4}{"1B}
+\stix@MathSymbol{\nBumpeq}                  {\mathrel}{symbols4}{"1C}
+\stix@MathSymbol{\nbumpeq}                  {\mathrel}{symbols4}{"1F}
+\stix@MathSymbol{\neqsim}                   {\mathrel}{symbols4}{"20}
+\stix@MathSymbol{\nvarisinobar}             {\mathrel}{symbols4}{"21}
+\stix@MathSymbol{\nvarniobar}               {\mathrel}{symbols4}{"22}
+\stix@MathSymbol{\neqslantless}             {\mathrel}{symbols4}{"25}
+\stix@MathSymbol{\neqslantgtr}              {\mathrel}{symbols4}{"26}
+
+\stix@MathSymbol{\subsetneqq}               {\mathrel}{symbols4}{"99}
+\stix@MathSymbol{\supsetneqq}               {\mathrel}{symbols4}{"9A}
+\stix@MathSymbol{\lsqhook}                  {\mathrel}{symbols4}{"9B}
+\stix@MathSymbol{\rsqhook}                  {\mathrel}{symbols4}{"9C}
+\stix@MathSymbol{\csub}                     {\mathrel}{symbols4}{"9D}
+\stix@MathSymbol{\csup}                     {\mathrel}{symbols4}{"9E}
+\stix@MathSymbol{\csube}                    {\mathrel}{symbols4}{"9F}
+
+\stix@MathSymbol{\csupe}                    {\mathrel}{symbols4}{"A0}
+\stix@MathSymbol{\subsup}                   {\mathrel}{symbols4}{"A1}
+\stix@MathSymbol{\supsub}                   {\mathrel}{symbols4}{"A2}
+\stix@MathSymbol{\subsub}                   {\mathrel}{symbols4}{"A3}
+\stix@MathSymbol{\supsup}                   {\mathrel}{symbols4}{"A4}
+\stix@MathSymbol{\suphsub}                  {\mathrel}{symbols4}{"A5}
+\stix@MathSymbol{\supdsub}                  {\mathrel}{symbols4}{"A6}
+\stix@MathSymbol{\forkv}                    {\mathrel}{symbols4}{"A7}
+\stix@MathSymbol{\topfork}                  {\mathrel}{symbols4}{"A8}
+\stix@MathSymbol{\mlcp}                     {\mathrel}{symbols4}{"A9}
+\stix@MathSymbol{\forks}                    {\mathrel}{symbols4}{"AA}
+\stix@MathSymbol{\forksnot}                 {\mathrel}{symbols4}{"AB}
+\stix@MathSymbol{\shortlefttack}            {\mathrel}{symbols4}{"AC}
+\stix@MathSymbol{\shortdowntack}            {\mathrel}{symbols4}{"AD}
+\stix@MathSymbol{\shortuptack}              {\mathrel}{symbols4}{"AE}
+\stix@MathSymbol{\perps}                    {\mathord}{symbols4}{"AF}
+
+\stix@MathSymbol{\vDdash}                   {\mathrel}{symbols4}{"B0}
+\stix@MathSymbol{\dashV}                    {\mathrel}{symbols4}{"B1}
+\stix@MathSymbol{\Dashv}                    {\mathrel}{symbols4}{"B2}
+\stix@MathSymbol{\DashV}                    {\mathrel}{symbols4}{"B3}
+\stix@MathSymbol{\varVdash}                 {\mathrel}{symbols4}{"B4}
+\stix@MathSymbol{\Barv}                     {\mathrel}{symbols4}{"B5}
+\stix@MathSymbol{\vBar}                     {\mathrel}{symbols4}{"B6}
+\stix@MathSymbol{\vBarv}                    {\mathrel}{symbols4}{"B7}
+\stix@MathSymbol{\barV}                     {\mathrel}{symbols4}{"B8}
+\stix@MathSymbol{\Vbar}                     {\mathrel}{symbols4}{"B9}
+\stix@MathSymbol{\Not}                      {\mathrel}{symbols4}{"BA}
+\stix@MathSymbol{\bNot}                     {\mathrel}{symbols4}{"BB}
+\stix@MathSymbol{\revnmid}                  {\mathrel}{symbols4}{"BC}
+\stix@MathSymbol{\cirmid}                   {\mathrel}{symbols4}{"BD}
+\stix@MathSymbol{\midcir}                   {\mathrel}{symbols4}{"BE}
+\stix@MathSymbol{\topcir}                   {\mathord}{symbols4}{"BF}
+
+\stix@MathSymbol{\nhpar}                    {\mathrel}{symbols4}{"C0}
+\stix@MathSymbol{\parsim}                   {\mathrel}{symbols4}{"C1}
+\stix@MathSymbol{\interleave}               {\mathbin}{symbols4}{"C2}
+\stix@MathSymbol{\nhVvert}                  {\mathbin}{symbols4}{"C3}
+\stix@MathSymbol{\threedotcolon}            {\mathbin}{symbols4}{"C4}
+\stix@MathSymbol{\lllnest}                  {\mathrel}{symbols4}{"C5}
+\stix@MathSymbol{\gggnest}                  {\mathrel}{symbols4}{"C6}
+\stix@MathSymbol{\leqqslant}                {\mathrel}{symbols4}{"C7}
+\stix@MathSymbol{\geqqslant}                {\mathrel}{symbols4}{"C8}
+\stix@MathSymbol{\trslash}                  {\mathbin}{symbols4}{"C9}
+\stix@MathSymbol{\biginterleave}            {\mathop} {symbols4}{"CA}
+\stix@MathSymbol{\sslash}                   {\mathbin}{symbols4}{"CB}
+\stix@MathSymbol{\talloblong}               {\mathbin}{symbols4}{"CC}
+\stix@MathSymbol{\squaretopblack}           {\mathord}{symbols4}{"CD}
+\stix@MathSymbol{\squarebotblack}           {\mathord}{symbols4}{"CE}
+\stix@MathSymbol{\squareurblack}            {\mathord}{symbols4}{"CF}
+
+\stix@MathSymbol{\squarellblack}            {\mathord}{symbols4}{"D0}
+\stix@MathSymbol{\diamondleftblack}         {\mathord}{symbols4}{"D1}
+\stix@MathSymbol{\diamondrightblack}        {\mathord}{symbols4}{"D2}
+\stix@MathSymbol{\diamondtopblack}          {\mathord}{symbols4}{"D3}
+\stix@MathSymbol{\diamondbotblack}          {\mathord}{symbols4}{"D4}
+\stix@MathSymbol{\dottedsquare}             {\mathord}{symbols4}{"D5}
+\stix@MathSymbol{\lgblksquare}              {\mathord}{symbols4}{"D6}
+\stix@MathSymbol{\lgwhtsquare}              {\mathord}{symbols4}{"D7}
+\stix@MathSymbol{\vysmblksquare}            {\mathord}{symbols4}{"D8}
+\stix@MathSymbol{\vysmwhtsquare}            {\mathord}{symbols4}{"D9}
+\stix@MathSymbol{\pentagonblack}            {\mathord}{symbols4}{"DA}
+\stix@MathSymbol{\pentagon}                 {\mathord}{symbols4}{"DB}
+\stix@MathSymbol{\varhexagon}               {\mathord}{symbols4}{"DC}
+\stix@MathSymbol{\varhexagonblack}          {\mathord}{symbols4}{"DD}
+\stix@MathSymbol{\hexagonblack}             {\mathord}{symbols4}{"DE}
+\stix@MathSymbol{\lgblkcircle}              {\mathord}{symbols4}{"DF}
+
+\stix@MathSymbol{\mdblkdiamond}             {\mathord}{symbols4}{"E0}
+\stix@MathSymbol{\mdwhtdiamond}             {\mathord}{symbols4}{"E1}
+\stix@MathSymbol{\mdblklozenge}             {\mathord}{symbols4}{"E2}
+\stix@MathSymbol{\mdwhtlozenge}             {\mathord}{symbols4}{"E3}
+\stix@MathSymbol{\smblkdiamond}             {\mathord}{symbols4}{"E4}
+\stix@MathSymbol{\smblklozenge}             {\mathord}{symbols4}{"E5}
+\stix@MathSymbol{\smwhtlozenge}             {\mathord}{symbols4}{"E6}
+\stix@MathSymbol{\blkhorzoval}              {\mathord}{symbols4}{"E7}
+\stix@MathSymbol{\whthorzoval}              {\mathord}{symbols4}{"E8}
+\stix@MathSymbol{\blkvertoval}              {\mathord}{symbols4}{"E9}
+\stix@MathSymbol{\whtvertoval}              {\mathord}{symbols4}{"EA}
+\stix@MathSymbol{\medwhitestar}             {\mathord}{symbols4}{"EB}
+\stix@MathSymbol{\medblackstar}             {\mathord}{symbols4}{"EC}
+\stix@MathSymbol{\smwhitestar}              {\mathord}{symbols4}{"ED}
+\stix@MathSymbol{\rightpentagonblack}       {\mathord}{symbols4}{"EE}
+\stix@MathSymbol{\rightpentagon}            {\mathord}{symbols4}{"EF}
+
+\stix@MathSymbol{\postalmark}               {\mathord}{symbols4}{"F0}
+\stix@MathSymbol{\hzigzag}                  {\mathord}{symbols4}{"F1}
+\stix@MathSymbol{\bbrktbrk}                 {\mathord}{symbols4}{"F2}
+\stix@MathSymbol{\obrbrak}                  {\mathord}{symbols4}{"F3}
+\stix@MathSymbol{\ubrbrak}                  {\mathord}{symbols4}{"F4}
+\stix@MathSymbol{\astrosun}                 {\mathord}{symbols4}{"F5}
+\stix@MathSymbol{\danger}                   {\mathord}{symbols4}{"F6}
+\stix@MathSymbol{\blacksmiley}              {\mathord}{symbols4}{"F7}
+\stix@MathSymbol{\sun}                      {\mathord}{symbols4}{"F8}
+\stix@MathSymbol{\rightmoon}                {\mathord}{symbols4}{"F9}
+\stix@MathSymbol{\leftmoon}                 {\mathord}{symbols4}{"FA}
+\stix@MathSymbol{\female}                   {\mathord}{symbols4}{"FB}
+\stix@MathSymbol{\male}                     {\mathord}{symbols4}{"FC}
+\stix@MathSymbol{\varspadesuit}             {\mathord}{symbols4}{"FD}
+\stix@MathSymbol{\varheartsuit}             {\mathord}{symbols4}{"FE}
+\stix@MathSymbol{\vardiamondsuit}           {\mathord}{symbols4}{"FF}
+    \DeclareMathSizes{10}{10}{7.5}{6}
+\AtBeginDocument{
+    \@ifpackageloaded{amsmath}{
+        \renewcommand{\big}{\bBigg@{1.2}}
+        \renewcommand{\Bigg}{\bBigg@{2.7}}
+        \let\dotsb@\@cdots
+        \let\dotsb\cdots
+        \let\dotsm\cdots
+    }{
+        \let\ilimits@=\nolimits
+        \let\slimits@=\relax
+        \let\DOTSI\relax
+    }
+}
+\@ifpackageloaded{amsopn}{
+    \begingroup \catcode`\"=12
+    \gdef\newmcodes@{%
+      \mathcode`\'="007F\relax%
+      \mathcode`\*="003C\relax%
+      \mathcode`\.="613A\relax%
+      \ifnum\mathcode`\-="002A \else
+        \mathchardef\std@minus\mathcode`\-\relax
+      \fi
+      \mathcode`\-="002A\relax%
+      \mathcode`\/="005F\relax%
+      \mathcode`\:="603A\relax%
+    }
+    \endgroup
+}{}
+\DeclareTextSymbol{\i}{LS1}{123}
+\DeclareTextSymbol{\j}{LS1}{124}
+\@namedef{not=}{\ne}
+\@namedef{not>}{\ngtr}
+\@namedef{not<}{\nless}
+\let\ngets\nleftarrow
+\let\nsimeq\nsime
+\let\nforksnot\forks
+\let\nle\nleq
+\let\nge\ngeq
+\DeclareRobustCommand*{\not}[1]{%
+    \begingroup \escapechar\m@ne\xdef\@gtempa{not\string#1}\endgroup
+    \@ifundefined{\@gtempa}%
+        {\not@n@{#1}}%
+        {\@nameuse{\@gtempa}}}
+\def\not@n@#1{%
+    \begingroup \escapechar\m@ne\xdef\@gtempa{n\string#1}\endgroup
+    \@ifundefined{\@gtempa}%
+        {\notchar #1}%
+        {\@nameuse{\@gtempa}}}
+\def\stix@dotlessi{\ifmmode\imath\else\i\fi}
+\@ifundefined{es@dotlessi}{}{\let\es@dotlessi\stix@dotlessi}
+
+\fi
+\endinput
+%%
+%% End of file `stix.sty'.
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/t1stix.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/t1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/t1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,21 @@
+\ProvidesFile{t1stix.fd}[2012/12/23 STIX T1 font definitions]
+
+\DeclareFontFamily{T1}{stix}{}
+
+\DeclareFontShape{T1}{stix}{m}{n} {<-> t1-stixgeneral}{}
+\DeclareFontShape{T1}{stix}{b}{n} {<-> t1-stixgeneral-bold}{}
+\DeclareFontShape{T1}{stix}{m}{it}{<-> t1-stixgeneral-italic}{}
+\DeclareFontShape{T1}{stix}{b}{it}{<-> t1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{T1}{stix}{m}{sc}{<-> t1-stixgeneralsc}{}
+\DeclareFontShape{T1}{stix}{b}{sc}{<-> t1-stixgeneralsc-bold}{}
+
+\DeclareFontShape{T1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{T1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{T1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{T1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{T1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{T1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/Stix-fonts/ts1stix.fd
===================================================================
--- doc/papers/general/AMA/AMA-stix/Stix-fonts/ts1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/Stix-fonts/ts1stix.fd	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,21 @@
+\ProvidesFile{t1stix.fd}[2012/12/23 STIX TS1 font definitions]
+
+\DeclareFontFamily{TS1}{stix}{}
+
+\DeclareFontShape{TS1}{stix}{m}{n} {<-> ts1-stixgeneral}{}
+\DeclareFontShape{TS1}{stix}{b}{n} {<-> ts1-stixgeneral-bold}{}
+\DeclareFontShape{TS1}{stix}{m}{it}{<-> ts1-stixgeneral-italic}{}
+\DeclareFontShape{TS1}{stix}{b}{it}{<-> ts1-stixgeneral-bolditalic}{}
+
+\DeclareFontShape{TS1}{stix}{m}{sc}{<->ssub * stix/m/n}{}
+\DeclareFontShape{TS1}{stix}{b}{sc}{<->ssub * stix/b/n}{}
+
+\DeclareFontShape{TS1}{stix}{m}{sl}{<->ssub * stix/m/it}{}
+\DeclareFontShape{TS1}{stix}{b}{sl}{<->ssub * stix/b/it}{}
+
+\DeclareFontShape{TS1}{stix}{bx}{n} {<->ssub * stix/b/n}{}
+\DeclareFontShape{TS1}{stix}{bx}{sc}{<->ssub * stix/b/sc}{}
+\DeclareFontShape{TS1}{stix}{bx}{sl}{<->ssub * stix/b/sl}{}
+\DeclareFontShape{TS1}{stix}{bx}{it}{<->ssub * stix/b/it}{}
+
+\endinput
Index: doc/papers/general/AMA/AMA-stix/ama/NJDnatbib.sty
===================================================================
--- doc/papers/general/AMA/AMA-stix/ama/NJDnatbib.sty	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/ama/NJDnatbib.sty	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,1262 @@
+%%
+%% This is file `NJDnatbib.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% natbib.dtx  (with options: `package,all')
+%% =============================================
+%% IMPORTANT NOTICE:
+%% 
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%% 
+%% This is a generated file.
+%% It may not be distributed without the original source file natbib.dtx.
+%% 
+%% Full documentation can be obtained by LaTeXing that original file.
+%% Only a few abbreviated comments remain here to describe the usage.
+%% =============================================
+%% Copyright 1993-2010 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@mps.mpg.de
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{NJDnatbib}
+        [2010/09/13 8.31b (PWD, AO)]
+
+ % This package reimplements the LaTeX \cite command to be used for various
+ % citation styles, both author-year and numerical. It accepts BibTeX
+ % output intended for many other packages, and therefore acts as a
+ % general, all-purpose citation-style interface.
+ %
+ % With standard numerical .bst files, only numerical citations are
+ % possible. With an author-year .bst file, both numerical and
+ % author-year citations are possible.
+ %
+ % If author-year citations are selected, \bibitem must have one of the
+ %   following forms:
+ %   \bibitem[Jones et al.(1990)]{key}...
+ %   \bibitem[Jones et al.(1990)Jones, Baker, and Williams]{key}...
+ %   \bibitem[Jones et al., 1990]{key}...
+ %   \bibitem[\protect\citeauthoryear{Jones, Baker, and Williams}{Jones
+ %       et al.}{1990}]{key}...
+ %   \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}...
+ %   \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
+ %   \bibitem[\protect\citename{Jones et al., }1990]{key}...
+ %   \harvarditem[Jones et al.]{Jones, Baker, and Williams}{1990}{key}...
+ %
+ % This is either to be made up manually, or to be generated by an
+ % appropriate .bst file with BibTeX.
+ %                            Author-year mode     ||   Numerical mode
+ % Then, \citet{key}  ==>>  Jones et al. (1990)    ||   Jones et al. [21]
+ %       \citep{key}  ==>> (Jones et al., 1990)    ||   [21]
+ % Multiple citations as normal:
+ % \citep{key1,key2}  ==>> (Jones et al., 1990; Smith, 1989) || [21,24]
+ %                           or  (Jones et al., 1990, 1991)  || [21,24]
+ %                           or  (Jones et al., 1990a,b)     || [21,24]
+ % \cite{key} is the equivalent of \citet{key} in author-year mode
+ %                         and  of \citep{key} in numerical mode
+ % Full author lists may be forced with \citet* or \citep*, e.g.
+ %       \citep*{key}      ==>> (Jones, Baker, and Williams, 1990)
+ % Optional notes as:
+ %   \citep[chap. 2]{key}    ==>> (Jones et al., 1990, chap. 2)
+ %   \citep[e.g.,][]{key}    ==>> (e.g., Jones et al., 1990)
+ %   \citep[see][pg. 34]{key}==>> (see Jones et al., 1990, pg. 34)
+ %  (Note: in standard LaTeX, only one note is allowed, after the ref.
+ %   Here, one note is like the standard, two make pre- and post-notes.)
+ %   \citealt{key}          ==>> Jones et al. 1990
+ %   \citealt*{key}         ==>> Jones, Baker, and Williams 1990
+ %   \citealp{key}          ==>> Jones et al., 1990
+ %   \citealp*{key}         ==>> Jones, Baker, and Williams, 1990
+ % Additional citation possibilities (both author-year and numerical modes)
+ %   \citeauthor{key}       ==>> Jones et al.
+ %   \citeauthor*{key}      ==>> Jones, Baker, and Williams
+ %   \citeyear{key}         ==>> 1990
+ %   \citeyearpar{key}      ==>> (1990)
+ %   \citetext{priv. comm.} ==>> (priv. comm.)
+ %   \citenum{key}          ==>> 11 [non-superscripted]
+ % Note: full author lists depends on whether the bib style supports them;
+ %       if not, the abbreviated list is printed even when full requested.
+ %
+ % For names like della Robbia at the start of a sentence, use
+ %   \Citet{dRob98}         ==>> Della Robbia (1998)
+ %   \Citep{dRob98}         ==>> (Della Robbia, 1998)
+ %   \Citeauthor{dRob98}    ==>> Della Robbia
+ %
+ %
+ % Citation aliasing is achieved with
+ %   \defcitealias{key}{text}
+ %   \citetalias{key}  ==>> text
+ %   \citepalias{key}  ==>> (text)
+ %
+ % Defining the citation mode and punctual (citation style)
+ %   \setcitestyle{<comma-separated list of keywords, same
+ %     as the package options>}
+ % Example: \setcitestyle{square,semicolon}
+ % Alternatively:
+ % Use \bibpunct with 6 mandatory arguments:
+ %    1. opening bracket for citation
+ %    2. closing bracket
+ %    3. citation separator (for multiple citations in one \cite)
+ %    4. the letter n for numerical styles, s for superscripts
+ %        else anything for author-year
+ %    5. punctuation between authors and date
+ %    6. punctuation between years (or numbers) when common authors missing
+ % One optional argument is the character coming before post-notes. It
+ %   appears in square braces before all other arguments. May be left off.
+ % Example (and default) \bibpunct[, ]{(}{)}{;}{a}{,}{,}
+ %
+ % To make this automatic for a given bib style, named newbib, say, make
+ % a local configuration file, natbib.cfg, with the definition
+ %   \newcommand{\bibstyle@newbib}{\bibpunct...}
+ % Then the \bibliographystyle{newbib} will cause \bibstyle@newbib to
+ % be called on THE NEXT LATEX RUN (via the aux file).
+ %
+ % Such preprogrammed definitions may be invoked anywhere in the text
+ %  by calling \citestyle{newbib}. This is only useful if the style specified
+ %  differs from that in \bibliographystyle.
+ %
+ % With \citeindextrue and \citeindexfalse, one can control whether the
+ % \cite commands make an automatic entry of the citation in the .idx
+ % indexing file. For this, \makeindex must also be given in the preamble.
+ %
+ % Package Options: (for selecting punctuation)
+ %   round  -  round parentheses are used (default)
+ %   square -  square brackets are used   [option]
+ %   curly  -  curly braces are used      {option}
+ %   angle  -  angle brackets are used    <option>
+ %   semicolon  -  multiple citations separated by semi-colon (default)
+ %   colon  - same as semicolon, an earlier confusion
+ %   comma  -  separated by comma
+ %   authoryear - selects author-year citations (default)
+ %   numbers-  selects numerical citations
+ %   super  -  numerical citations as superscripts
+ %   sort   -  sorts multiple citations according to order in ref. list
+ %   sort&compress   -  like sort, but also compresses numerical citations
+ %   compress - compresses without sorting
+ %   longnamesfirst  -  makes first citation full author list
+ %   sectionbib - puts bibliography in a \section* instead of \chapter*
+ %   merge - allows the citation key to have a * prefix,
+ %           signifying to merge its reference with that of the previous citation.
+ %   elide - if references are merged, repeated portions of later ones may be removed.
+ %   mcite - recognizes and ignores the * prefix for merging.
+ % Punctuation so selected dominates over any predefined ones.
+ % Package options are called as, e.g.
+ %        \usepackage[square,comma]{natbib}
+ % LaTeX the source file natbib.dtx to obtain more details
+ % or the file natnotes.tex for a brief reference sheet.
+ %-----------------------------------------------------------
+\providecommand\@ifxundefined[1]{%
+ \ifx#1\@undefined\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\@ifnum[1]{%
+ \ifnum#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\@ifx[1]{%
+ \ifx#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\appdef[2]{%
+ \toks@\expandafter{#1}\@temptokena{#2}%
+ \edef#1{\the\toks@\the\@temptokena}%
+}%
+\@ifclassloaded{agu2001}{\PackageError{natbib}
+  {The agu2001 class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+\@ifclassloaded{agutex}{\PackageError{natbib}
+  {The AGUTeX class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+\@ifclassloaded{aguplus}{\PackageError{natbib}
+  {The aguplus class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+\@ifclassloaded{nlinproc}{\PackageError{natbib}
+  {The nlinproc class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+\@ifclassloaded{egs}{\PackageError{natbib}
+  {The egs class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+\@ifclassloaded{egu}{\PackageError{natbib}
+  {The egu class already includes natbib coding,\MessageBreak
+   so you should not add it explicitly}
+  {Type <Return> for now, but then later remove\MessageBreak
+   the command \protect\usepackage{natbib} from the document}
+  \endinput}{}
+ % Define citation punctuation for some author-year styles
+ % One may add and delete at this point
+ % Or put additions into local configuration file natbib.cfg
+\newcommand\bibstyle@chicago{\bibpunct{(}{)}{;}{a}{,}{,}}
+\newcommand\bibstyle@named{\bibpunct{[}{]}{;}{a}{,}{,}}
+\newcommand\bibstyle@agu{\bibpunct{[}{]}{;}{a}{,}{,~}}%Amer. Geophys. Union
+\newcommand\bibstyle@copernicus{\bibpunct{(}{)}{;}{a}{,}{,}}%Copernicus Publications
+\let\bibstyle@egu=\bibstyle@copernicus
+\let\bibstyle@egs=\bibstyle@copernicus
+\newcommand\bibstyle@agsm{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
+\newcommand\bibstyle@kluwer{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
+\newcommand\bibstyle@dcu{\bibpunct{(}{)}{;}{a}{;}{,}\gdef\harvardand{and}}
+\newcommand\bibstyle@aa{\bibpunct{(}{)}{;}{a}{}{,}} %Astronomy & Astrophysics
+\newcommand\bibstyle@pass{\bibpunct{(}{)}{;}{a}{,}{,}}%Planet. & Space Sci
+\newcommand\bibstyle@anngeo{\bibpunct{(}{)}{;}{a}{,}{,}}%Annales Geophysicae
+\newcommand\bibstyle@nlinproc{\bibpunct{(}{)}{;}{a}{,}{,}}%Nonlin.Proc.Geophys.
+ % Define citation punctuation for some numerical styles
+\newcommand\bibstyle@cospar{\bibpunct{/}{/}{,}{n}{}{}%
+     \gdef\bibnumfmt##1{##1.}}
+\newcommand\bibstyle@esa{\bibpunct{(Ref.~}{)}{,}{n}{}{}%
+     \gdef\bibnumfmt##1{##1.\hspace{1em}}}
+\newcommand\bibstyle@nature{\bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
+     \gdef\bibnumfmt##1{##1.}}
+ % The standard LaTeX styles
+\newcommand\bibstyle@plain{\bibpunct{[}{]}{,}{n}{}{,}}
+\let\bibstyle@alpha=\bibstyle@plain
+\let\bibstyle@abbrv=\bibstyle@plain
+\let\bibstyle@unsrt=\bibstyle@plain
+ % The author-year modifications of the standard styles
+\newcommand\bibstyle@plainnat{\bibpunct{[}{]}{,}{a}{,}{,}}
+\let\bibstyle@abbrvnat=\bibstyle@plainnat
+\let\bibstyle@unsrtnat=\bibstyle@plainnat
+\newif\ifNAT@numbers \NAT@numbersfalse
+\newif\ifNAT@super \NAT@superfalse
+\let\NAT@merge\z@
+\DeclareOption{numbers}{\NAT@numberstrue
+   \ExecuteOptions{square,comma,nobibstyle}}
+\DeclareOption{super}{\NAT@supertrue\NAT@numberstrue
+   \renewcommand\NAT@open{}\renewcommand\NAT@close{}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{authoryear}{\NAT@numbersfalse
+   \ExecuteOptions{round,semicolon,bibstyle}}
+\DeclareOption{round}{%
+      \renewcommand\NAT@open{(} \renewcommand\NAT@close{)}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{square}{%
+      \renewcommand\NAT@open{[} \renewcommand\NAT@close{]}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{angle}{%
+      \renewcommand\NAT@open{$<$} \renewcommand\NAT@close{$>$}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{curly}{%
+      \renewcommand\NAT@open{\{} \renewcommand\NAT@close{\}}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{comma}{\renewcommand\NAT@sep{,}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{semicolon}{\renewcommand\NAT@sep{;}
+   \ExecuteOptions{nobibstyle}}
+\DeclareOption{colon}{\ExecuteOptions{semicolon}}
+\DeclareOption{nobibstyle}{\let\bibstyle=\@gobble}
+\DeclareOption{bibstyle}{\let\bibstyle=\@citestyle}
+\newif\ifNAT@openbib \NAT@openbibfalse
+\DeclareOption{openbib}{\NAT@openbibtrue}
+\DeclareOption{sectionbib}{\def\NAT@sectionbib{on}}
+\def\NAT@sort{\z@}
+\def\NAT@cmprs{\z@}
+\DeclareOption{sort}{\def\NAT@sort{\@ne}}
+\DeclareOption{compress}{\def\NAT@cmprs{\@ne}}
+\DeclareOption{sort&compress}{\def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}}
+\DeclareOption{mcite}{\let\NAT@merge\@ne}
+\DeclareOption{merge}{\@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}}
+\DeclareOption{elide}{\@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}}
+\@ifpackageloaded{cite}{\PackageWarningNoLine{natbib}
+  {The `cite' package should not be used\MessageBreak
+   with natbib. Use option `sort' instead}\ExecuteOptions{sort}}{}
+\@ifpackageloaded{mcite}{\PackageWarningNoLine{natbib}
+  {The `mcite' package should not be used\MessageBreak
+   with natbib. Use option `merge' instead}\ExecuteOptions{merge}}{}
+\@ifpackageloaded{citeref}{\PackageError{natbib}
+  {The `citeref' package must be loaded after natbib}%
+  {Move \protect\usepackage{citeref} to after \string\usepackage{natbib}}}{}
+\newif\ifNAT@longnames\NAT@longnamesfalse
+\DeclareOption{longnamesfirst}{\NAT@longnamestrue}
+\DeclareOption{nonamebreak}{\def\NAT@nmfmt#1{\mbox{\NAT@up#1}}}
+\def\NAT@nmfmt#1{{\NAT@up#1}}
+\renewcommand\bibstyle[1]{\csname bibstyle@#1\endcsname}
+\AtBeginDocument{\global\let\bibstyle=\@gobble}
+\let\@citestyle\bibstyle
+\newcommand\citestyle[1]{\@citestyle{#1}\let\bibstyle\@gobble}
+\newcommand\bibpunct[7][, ]%
+  {\gdef\NAT@open{#2}\gdef\NAT@close{#3}\gdef
+   \NAT@sep{#4}\global\NAT@numbersfalse
+     \ifx #5n\global\NAT@numberstrue\global\NAT@superfalse
+   \else
+     \ifx #5s\global\NAT@numberstrue\global\NAT@supertrue
+   \fi\fi
+   \gdef\NAT@aysep{#6}\gdef\NAT@yrsep{#7}%
+   \gdef\NAT@cmt{#1}%
+   \NAT@@setcites
+  }
+\newcommand\setcitestyle[1]{
+ \@for\@tempa:=#1\do
+ {\def\@tempb{round}\ifx\@tempa\@tempb
+    \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
+  \def\@tempb{square}\ifx\@tempa\@tempb
+    \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
+  \def\@tempb{angle}\ifx\@tempa\@tempb
+    \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
+  \def\@tempb{curly}\ifx\@tempa\@tempb
+    \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
+  \def\@tempb{semicolon}\ifx\@tempa\@tempb
+    \renewcommand\NAT@sep{;}\fi
+  \def\@tempb{colon}\ifx\@tempa\@tempb
+    \renewcommand\NAT@sep{;}\fi
+  \def\@tempb{comma}\ifx\@tempa\@tempb
+    \renewcommand\NAT@sep{,}\fi
+  \def\@tempb{authoryear}\ifx\@tempa\@tempb
+    \NAT@numbersfalse\fi
+  \def\@tempb{numbers}\ifx\@tempa\@tempb
+    \NAT@numberstrue\NAT@superfalse\fi
+  \def\@tempb{super}\ifx\@tempa\@tempb
+    \NAT@numberstrue\NAT@supertrue\fi
+  \expandafter\NAT@find@eq\@tempa=\relax\@nil
+  \if\@tempc\relax\else
+    \expandafter\NAT@rem@eq\@tempc
+    \def\@tempb{open}\ifx\@tempa\@tempb
+     \xdef\NAT@open{\@tempc}\fi
+    \def\@tempb{close}\ifx\@tempa\@tempb
+     \xdef\NAT@close{\@tempc}\fi
+    \def\@tempb{aysep}\ifx\@tempa\@tempb
+     \xdef\NAT@aysep{\@tempc}\fi
+    \def\@tempb{yysep}\ifx\@tempa\@tempb
+     \xdef\NAT@yrsep{\@tempc}\fi
+    \def\@tempb{notesep}\ifx\@tempa\@tempb
+     \xdef\NAT@cmt{\@tempc}\fi
+    \def\@tempb{citesep}\ifx\@tempa\@tempb
+     \xdef\NAT@sep{\@tempc}\fi
+  \fi
+ }%
+ \NAT@@setcites
+}
+ \def\NAT@find@eq#1=#2\@nil{\def\@tempa{#1}\def\@tempc{#2}}
+ \def\NAT@rem@eq#1={\def\@tempc{#1}}
+ \def\NAT@@setcites{\global\let\bibstyle\@gobble}
+\AtBeginDocument{\let\NAT@@setcites\NAT@set@cites}
+\newcommand\NAT@open{(} \newcommand\NAT@close{)}
+\newcommand\NAT@sep{;}
+\ProcessOptions
+\newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,}
+\newcommand\NAT@cmt{, }
+\newcommand\NAT@cite%
+    [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
+        #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
+\newcommand\NAT@citenum%
+    [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
+        #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
+%\newcommand\NAT@citesuper[3]{\ifNAT@swa
+%\if*#2*\else#2\NAT@spacechar\fi
+%\unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}%
+%   \if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand\NAT@citesuper[3]{\ifNAT@swa
+\if*#2*\else#2\NAT@spacechar\fi
+\unskip\kern\p@\textsuperscript{\NAT@@open#1\if*#3*\else,\NAT@spacechar#3\fi\NAT@@close}%
+   \else #1\fi\endgroup}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand\textsuperscript[1]{\mbox{$^{\mbox{\scriptsize#1}}$}}
+\begingroup \catcode`\_=8
+\gdef\NAT@ifcat@num#1{%
+ \ifcat_\ifnum\z@<0#1_\else A\fi
+  \expandafter\@firstoftwo
+ \else
+  \expandafter\@secondoftwo
+ \fi
+}%
+\endgroup
+\providecommand\@firstofone[1]{#1}
+\newcommand\NAT@citexnum{}
+\def\NAT@citexnum[#1][#2]#3{%
+  \NAT@reset@parser
+  \NAT@sort@cites{#3}%
+  \NAT@reset@citea
+  \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty
+    \@for\@citeb:=\NAT@cite@list\do
+    {\@safe@activestrue
+     \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+     \@safe@activesfalse
+     \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+       {\reset@font\bfseries?}
+        \NAT@citeundefined\PackageWarning{natbib}%
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+     {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm
+      \NAT@parse{\@citeb}%
+      \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
+        \let\NAT@name=\NAT@all@names
+        \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
+      \fi
+      \ifNAT@full\let\NAT@nm\NAT@all@names\else
+        \let\NAT@nm\NAT@name\fi
+      \ifNAT@swa
+       \@ifnum{\NAT@ctype>\@ne}{%
+        \@citea
+        \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}%
+       }{%
+        \@ifnum{\NAT@cmprs>\z@}{%
+         \NAT@ifcat@num\NAT@num
+          {\let\NAT@nm=\NAT@num}%
+          {\def\NAT@nm{-2}}%
+         \NAT@ifcat@num\NAT@last@num
+          {\@tempcnta=\NAT@last@num\relax}%
+          {\@tempcnta\m@ne}%
+         \@ifnum{\NAT@nm=\@tempcnta}{%
+          \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}%
+         }{%
+           \advance\@tempcnta by\@ne
+           \@ifnum{\NAT@nm=\@tempcnta}{%
+             \ifx\NAT@last@yr\relax
+               \def@NAT@last@yr{\@citea}%
+             \else
+               \def@NAT@last@yr{--\NAT@penalty}%
+             \fi
+           }{%
+             \NAT@last@yr@mbox
+           }%
+         }%
+        }{%
+         \@tempswatrue
+         \@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}%
+         \if@tempswa\NAT@citea@mbox\fi
+        }%
+       }%
+       \NAT@def@citea
+      \else
+        \ifcase\NAT@ctype
+          \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else
+            \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}%
+          \fi
+          \if*#1*\else#1\NAT@spacechar\fi
+          \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
+          \NAT@def@citea@box
+        \or
+          \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
+        \or
+          \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
+        \or
+          \NAT@hyper@citea@space\NAT@alias
+        \fi
+      \fi
+     }%
+    }%
+      \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}%
+      \ifNAT@swa\else
+        \@ifnum{\NAT@ctype=\z@}{%
+          \if*#2*\else\NAT@cmt#2\fi
+        }{}%
+        \NAT@mbox{\NAT@@close}%
+      \fi
+  }{#1}{#2}%
+}%
+\def\NAT@citea@mbox{%
+ \@citea\mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
+}%
+\def\NAT@hyper@#1{%
+ \hyper@natlinkstart{\@citeb\@extra@b@citeb}#1\hyper@natlinkend
+}%
+\def\NAT@hyper@citea#1{%
+ \@citea
+ \NAT@hyper@{#1}%
+ \NAT@def@citea
+}%
+\def\NAT@hyper@citea@space#1{%
+ \@citea
+ \NAT@hyper@{#1}%
+ \NAT@def@citea@space
+}%
+\def\def@NAT@last@yr#1{%
+ \protected@edef\NAT@last@yr{%
+  #1%
+  \noexpand\mbox{%
+   \noexpand\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
+   {\noexpand\citenumfont{\NAT@num}}%
+   \noexpand\hyper@natlinkend
+  }%
+ }%
+}%
+\def\NAT@last@yr@mbox{%
+ \NAT@last@yr\let\NAT@last@yr\relax
+ \NAT@citea@mbox
+}%
+\newcommand\NAT@test[1]{%
+ \@ifnum{#1=\@ne}{%
+  \ifx\NAT@nm\NAT@noname
+   \begingroup\reset@font\bfseries(author?)\endgroup
+   \PackageWarning{natbib}{%
+    Author undefined for citation`\@citeb' \MessageBreak on page \thepage%
+   }%
+  \else \NAT@nm
+  \fi
+ }{%
+  \if\relax\NAT@date\relax
+   \begingroup\reset@font\bfseries(year?)\endgroup
+   \PackageWarning{natbib}{%
+    Year undefined for citation`\@citeb' \MessageBreak on page \thepage%
+   }%
+  \else \NAT@date
+  \fi
+ }%
+}%
+\let\citenumfont=\@empty
+\newcommand\NAT@citex{}
+\def\NAT@citex%
+  [#1][#2]#3{%
+  \NAT@reset@parser
+  \NAT@sort@cites{#3}%
+  \NAT@reset@citea
+  \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty
+    \@for\@citeb:=\NAT@cite@list\do
+    {\@safe@activestrue
+     \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+     \@safe@activesfalse
+     \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea%
+       {\reset@font\bfseries ?}\NAT@citeundefined
+                 \PackageWarning{natbib}%
+       {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}%
+     {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year
+      \NAT@parse{\@citeb}%
+      \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
+        \let\NAT@name=\NAT@all@names
+        \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
+      \fi
+     \ifNAT@full\let\NAT@nm\NAT@all@names\else
+       \let\NAT@nm\NAT@name\fi
+     \ifNAT@swa\ifcase\NAT@ctype
+       \if\relax\NAT@date\relax
+         \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}%
+       \else
+         \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
+            \ifx\NAT@last@yr\NAT@year
+              \def\NAT@temp{{?}}%
+              \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
+               {Multiple citation on page \thepage: same authors and
+               year\MessageBreak without distinguishing extra
+               letter,\MessageBreak appears as question mark}\fi
+              \NAT@hyper@{\NAT@exlab}%
+            \else\unskip\NAT@spacechar
+              \NAT@hyper@{\NAT@date}%
+            \fi
+         \else
+           \@citea\NAT@hyper@{%
+             \NAT@nmfmt{\NAT@nm}%
+             \hyper@natlinkbreak{%
+               \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb
+             }%
+             \NAT@date
+           }%
+         \fi
+       \fi
+     \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+     \or\@citea\NAT@hyper@{\NAT@date}%
+     \or\@citea\NAT@hyper@{\NAT@alias}%
+     \fi \NAT@def@citea
+     \else
+       \ifcase\NAT@ctype
+        \if\relax\NAT@date\relax
+          \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+        \else
+         \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
+            \ifx\NAT@last@yr\NAT@year
+              \def\NAT@temp{{?}}%
+              \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
+               {Multiple citation on page \thepage: same authors and
+               year\MessageBreak without distinguishing extra
+               letter,\MessageBreak appears as question mark}\fi
+              \NAT@hyper@{\NAT@exlab}%
+            \else
+              \unskip\NAT@spacechar
+              \NAT@hyper@{\NAT@date}%
+            \fi
+         \else
+           \@citea\NAT@hyper@{%
+             \NAT@nmfmt{\NAT@nm}%
+             \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}%
+               {\@citeb\@extra@b@citeb}%
+             \NAT@date
+           }%
+         \fi
+        \fi
+       \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+       \or\@citea\NAT@hyper@{\NAT@date}%
+       \or\@citea\NAT@hyper@{\NAT@alias}%
+       \fi
+       \if\relax\NAT@date\relax
+         \NAT@def@citea
+       \else
+         \NAT@def@citea@close
+       \fi
+     \fi
+     }}\ifNAT@swa\else\if*#2*\else\NAT@cmt#2\fi
+     \if\relax\NAT@date\relax\else\NAT@@close\fi\fi}{#1}{#2}}
+\def\NAT@spacechar{\ }%
+\def\NAT@separator{\NAT@sep\NAT@penalty}%
+\def\NAT@reset@citea{\c@NAT@ctr\@ne\let\@citea\@empty}%
+\def\NAT@def@citea{\def\@citea{\NAT@separator\NAT@space}}%
+\def\NAT@def@citea@space{\def\@citea{\NAT@separator\NAT@spacechar}}%
+\def\NAT@def@citea@close{\def\@citea{\NAT@@close\NAT@separator\NAT@space}}%
+\def\NAT@def@citea@box{\def\@citea{\NAT@mbox{\NAT@@close}\NAT@separator\NAT@spacechar}}%
+\newif\ifNAT@par \NAT@partrue
+\newcommand\NAT@@open{\ifNAT@par\NAT@open\fi}
+\newcommand\NAT@@close{\ifNAT@par\NAT@close\fi}
+\newcommand\NAT@alias{\@ifundefined{al@\@citeb\@extra@b@citeb}{%
+  {\reset@font\bfseries(alias?)}\PackageWarning{natbib}
+  {Alias undefined for citation `\@citeb'
+  \MessageBreak on page \thepage}}{\@nameuse{al@\@citeb\@extra@b@citeb}}}
+\let\NAT@up\relax
+\newcommand\NAT@Up[1]{{\let\protect\@unexpandable@protect\let~\relax
+  \expandafter\NAT@deftemp#1}\expandafter\NAT@UP\NAT@temp}
+\newcommand\NAT@deftemp[1]{\xdef\NAT@temp{#1}}
+\newcommand\NAT@UP[1]{\let\@tempa\NAT@UP\ifcat a#1\MakeUppercase{#1}%
+  \let\@tempa\relax\else#1\fi\@tempa}
+\newcommand\shortcites[1]{%
+  \@bsphack\@for\@citeb:=#1\do
+  {\@safe@activestrue
+   \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+   \@safe@activesfalse
+   \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}\@esphack}
+\newcommand\NAT@biblabel[1]{\hfill}
+\newcommand\NAT@biblabelnum[1]{\bibnumfmt{#1}}
+\let\bibnumfmt\@empty
+\providecommand\@biblabel[1]{[#1]}
+\AtBeginDocument{\ifx\bibnumfmt\@empty\let\bibnumfmt\@biblabel\fi}
+\newcommand\NAT@bibsetnum[1]{\settowidth\labelwidth{\@biblabel{#1}}%
+   \setlength{\leftmargin}{\labelwidth}\addtolength{\leftmargin}{\labelsep}%
+   \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}%
+   \ifNAT@openbib
+     \addtolength{\leftmargin}{\bibindent}%
+     \setlength{\itemindent}{-\bibindent}%
+     \setlength{\listparindent}{\itemindent}%
+     \setlength{\parsep}{0pt}%
+   \fi
+}
+\newlength{\bibhang}
+\setlength{\bibhang}{1em}
+\newlength{\bibsep}
+ {\@listi \global\bibsep\itemsep \global\advance\bibsep by\parsep}
+
+\newcommand\NAT@bibsetup%
+   [1]{\setlength{\leftmargin}{\bibhang}\setlength{\itemindent}{-\leftmargin}%
+       \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}}
+\newcommand\NAT@set@cites{%
+  \ifNAT@numbers
+    \ifNAT@super \let\@cite\NAT@citesuper
+       \def\NAT@mbox##1{\unskip\nobreak\textsuperscript{##1}}%
+       \let\citeyearpar=\citeyear
+       \let\NAT@space\relax
+       \def\NAT@super@kern{\kern\p@}%
+    \else
+       \let\NAT@mbox=\mbox
+       \let\@cite\NAT@citenum
+       \let\NAT@space\NAT@spacechar
+       \let\NAT@super@kern\relax
+    \fi
+    \let\@citex\NAT@citexnum
+    \let\@biblabel\NAT@biblabelnum
+    \let\@bibsetup\NAT@bibsetnum
+    \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@num\NAT@close}%
+    \def\natexlab##1{}%
+    \def\NAT@penalty{\penalty\@m}%
+  \else
+    \let\@cite\NAT@cite
+    \let\@citex\NAT@citex
+    \let\@biblabel\NAT@biblabel
+    \let\@bibsetup\NAT@bibsetup
+    \let\NAT@space\NAT@spacechar
+    \let\NAT@penalty\@empty
+    \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}%
+    \def\natexlab##1{##1}%
+  \fi}
+\AtBeginDocument{\NAT@set@cites}
+\AtBeginDocument{\ifx\SK@def\@undefined\else
+\ifx\SK@cite\@empty\else
+  \SK@def\@citex[#1][#2]#3{\SK@\SK@@ref{#3}\SK@@citex[#1][#2]{#3}}\fi
+\ifx\SK@citeauthor\@undefined\def\HAR@checkdef{}\else
+  \let\citeauthor\SK@citeauthor
+  \let\citefullauthor\SK@citefullauthor
+  \let\citeyear\SK@citeyear\fi
+\fi}
+\newif\ifNAT@full\NAT@fullfalse
+\newif\ifNAT@swa
+\DeclareRobustCommand\citet
+   {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
+     \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\newcommand\NAT@citetp{\@ifnextchar[{\NAT@@citetp}{\NAT@@citetp[]}}
+\newcommand\NAT@@citetp{}
+\def\NAT@@citetp[#1]{\@ifnextchar[{\@citex[#1]}{\@citex[][#1]}}
+\DeclareRobustCommand\citep
+   {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\cite
+    {\begingroup\let\NAT@ctype\z@\NAT@partrue\NAT@swatrue
+      \@ifstar{\NAT@fulltrue\NAT@cites}{\NAT@fullfalse\NAT@cites}}
+\newcommand\NAT@cites{\@ifnextchar [{\NAT@@citetp}{%
+     \ifNAT@numbers\else
+     \NAT@swafalse
+     \fi
+    \NAT@@citetp[]}}
+\DeclareRobustCommand\citealt
+   {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citealp
+   {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citenum
+   {\begingroup
+     \NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse\let\textsuperscript\NAT@spacechar
+     \NAT@citexnum[][]}
+\DeclareRobustCommand\citeauthor
+   {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
+    \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citet
+   {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
+     \let\NAT@up\NAT@Up
+     \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citep
+   {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
+     \let\NAT@up\NAT@Up
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citealt
+   {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
+     \let\NAT@up\NAT@Up
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citealp
+   {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
+     \let\NAT@up\NAT@Up
+         \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citeauthor
+   {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
+     \let\NAT@up\NAT@Up
+    \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citeyear
+   {\begingroup\NAT@swafalse\let\NAT@ctype\tw@\NAT@parfalse\NAT@citetp}
+\DeclareRobustCommand\citeyearpar
+   {\begingroup\NAT@swatrue\let\NAT@ctype\tw@\NAT@partrue\NAT@citetp}
+\newcommand\citetext[1]{\NAT@open#1\NAT@close}
+\DeclareRobustCommand\citefullauthor
+   {\citeauthor*}
+\newcommand\defcitealias[2]{%
+   \@ifundefined{al@#1\@extra@b@citeb}{}
+   {\PackageWarning{natbib}{Overwriting existing alias for citation #1}}
+   \@namedef{al@#1\@extra@b@citeb}{#2}}
+\DeclareRobustCommand\citetalias{\begingroup
+   \NAT@swafalse\let\NAT@ctype\thr@@\NAT@parfalse\NAT@citetp}
+\DeclareRobustCommand\citepalias{\begingroup
+   \NAT@swatrue\let\NAT@ctype\thr@@\NAT@partrue\NAT@citetp}
+\renewcommand\nocite[1]{\@bsphack
+  \@for\@citeb:=#1\do{%
+    \@safe@activestrue
+    \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+    \@safe@activesfalse
+    \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+    \if*\@citeb\else
+    \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+       \NAT@citeundefined \PackageWarning{natbib}%
+       {Citation `\@citeb' undefined}}{}\fi}%
+  \@esphack}
+\newcommand\NAT@parse[1]{%
+  \begingroup
+   \let\protect=\@unexpandable@protect
+   \let~\relax
+   \let\active@prefix=\@gobble
+   \edef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}%
+   \aftergroup\NAT@split
+   \expandafter
+  \endgroup
+  \NAT@temp{}{}{}{}{}@@%
+  \expandafter\NAT@parse@date\NAT@date??????@@%
+  \ifciteindex\NAT@index\fi
+}%
+\def\NAT@split#1#2#3#4#5@@{%
+  \gdef\NAT@num{#1}\gdef\NAT@name{#3}\gdef\NAT@date{#2}%
+  \gdef\NAT@all@names{#4}%
+  \ifx\NAT@num\@empty\gdef\NAT@num{0}\fi
+  \ifx\NAT@noname\NAT@all@names \gdef\NAT@all@names{#3}\fi
+}%
+\def\NAT@reset@parser{%
+  \global\let\NAT@num\@empty
+  \global\let\NAT@name\@empty
+  \global\let\NAT@date\@empty
+  \global\let\NAT@all@names\@empty
+}%
+\newcommand\NAT@parse@date{}
+\def\NAT@parse@date#1#2#3#4#5#6@@{%
+  \ifnum\the\catcode`#1=11\def\NAT@year{}\def\NAT@exlab{#1}\else
+  \ifnum\the\catcode`#2=11\def\NAT@year{#1}\def\NAT@exlab{#2}\else
+  \ifnum\the\catcode`#3=11\def\NAT@year{#1#2}\def\NAT@exlab{#3}\else
+  \ifnum\the\catcode`#4=11\def\NAT@year{#1#2#3}\def\NAT@exlab{#4}\else
+    \def\NAT@year{#1#2#3#4}\def\NAT@exlab{{#5}}\fi\fi\fi\fi}
+\newcommand\NAT@index{}
+\let\NAT@makeindex=\makeindex
+\renewcommand\makeindex{\NAT@makeindex
+  \renewcommand\NAT@index{\@bsphack\begingroup
+     \def~{\string~}\@wrindex{\NAT@idxtxt}}}
+\newcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}
+\@ifxundefined\@indexfile{}{\let\NAT@makeindex\relax\makeindex}
+\newif\ifciteindex \citeindexfalse
+\newcommand\citeindextype{default}
+\newcommand\NAT@index@alt{{\let\protect=\noexpand\let~\relax
+  \xdef\NAT@temp{\NAT@idxtxt}}\expandafter\NAT@exp\NAT@temp\@nil}
+\newcommand\NAT@exp{}
+\def\NAT@exp#1\@nil{\index[\citeindextype]{#1}}
+
+\AtBeginDocument{%
+\@ifpackageloaded{index}{\let\NAT@index=\NAT@index@alt}{}}
+\newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd}
+\newcommand\NAT@ifxcmd{\ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi}
+\def\NAT@bare#1(#2)#3(@)#4\@nil#5{%
+  \if @#2
+    \expandafter\NAT@apalk#1, , \@nil{#5}%
+  \else
+  \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{#3}{#5}%
+\fi
+}
+\newcommand\NAT@wrout[5]{%
+\if@filesw
+      {\let\protect\noexpand\let~\relax
+       \immediate
+       \write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}\fi
+\ignorespaces}
+\def\NAT@noname{{}}
+\renewcommand\bibitem{\@ifnextchar[{\@lbibitem}{\@lbibitem[]}}%
+\let\NAT@bibitem@first@sw\@secondoftwo
+\def\@lbibitem[#1]#2{%
+  \if\relax\@extra@b@citeb\relax\else
+    \@ifundefined{br@#2\@extra@b@citeb}{}{%
+     \@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}}%
+    }%
+  \fi
+  \@ifundefined{b@#2\@extra@b@citeb}{%
+   \def\NAT@num{}%
+  }{%
+   \NAT@parse{#2}%
+  }%
+  \def\NAT@tmp{#1}%
+  \expandafter\let\expandafter\bibitemOpen\csname NAT@b@open@#2\endcsname
+  \expandafter\let\expandafter\bibitemShut\csname NAT@b@shut@#2\endcsname
+  \@ifnum{\NAT@merge>\@ne}{%
+   \NAT@bibitem@first@sw{%
+    \@firstoftwo
+   }{%
+    \@ifundefined{NAT@b*@#2}{%
+     \@firstoftwo
+    }{%
+     \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
+     \@secondoftwo
+    }%
+   }%
+  }{%
+   \@firstoftwo
+  }%
+  {%
+   \global\advance\c@NAT@ctr\@ne
+   \@ifx{\NAT@tmp\@empty}{\@firstoftwo}{%
+    \@secondoftwo
+   }%
+   {%
+    \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
+    \global\NAT@stdbsttrue
+   }{}%
+   \bibitem@fin
+   \item[\hfil\NAT@anchor{#2}{\NAT@num}]%
+   \global\let\NAT@bibitem@first@sw\@secondoftwo
+   \NAT@bibitem@init
+  }%
+  {%
+   \NAT@anchor{#2}{}%
+   \NAT@bibitem@cont
+   \bibitem@fin
+  }%
+  \@ifx{\NAT@tmp\@empty}{%
+    \NAT@wrout{\the\c@NAT@ctr}{}{}{}{#2}%
+  }{%
+    \expandafter\NAT@ifcmd\NAT@tmp(@)(@)\@nil{#2}%
+  }%
+}%
+\def\bibitem@fin{%
+ \@ifxundefined\@bibstop{}{\csname bibitem@\@bibstop\endcsname}%
+}%
+\def\NAT@bibitem@init{%
+ \let\@bibstop\@undefined
+}%
+\def\NAT@bibitem@cont{%
+ \let\bibitem@Stop\bibitemContinue
+ \let\bibitem@NoStop\bibitemContinue
+}%
+\def\BibitemOpen{%
+ \bibitemOpen
+}%
+\def\BibitemShut#1{%
+ \def\@bibstop{#1}%
+ \let\bibitem@Stop\bibitemStop
+ \let\bibitem@NoStop\bibitemNoStop
+ \@ifx{\bibitemShut\relax}{\let\@bibitemShut\@empty}{%
+  \expandafter\def\expandafter\@bibitemShut\expandafter{\bibitemShut}%
+ }%
+}%
+\def\@bibitemShut{}%
+\def\bibitemStop{\@bibitemShut}%
+\def\bibitemNoStop{%
+ \@ifx{\@empty\@bibitemShut}{.\spacefactor\@mmm\space}{\@bibitemShut}%
+}%
+\def\bibitemContinue{%
+ \@ifx{\@empty\@bibitemShut}{;\spacefactor\@mmm\space}{\@bibitemShut}%
+}%
+\mathchardef\@mmm=3000 %
+\let\bibitemOpen\relax
+\let\bibitemShut\relax
+\@ifnum{\NAT@merge>\@ne}{%
+\providecommand{\bibAnnote}[3]{%
+  \BibitemShut{#1}%
+  \def\@tempa{#3}\@ifx{\@tempa\@empty}{}{%
+   \begin{quotation}\noindent
+    \textsc{Key:}\ #2\\\textsc{Annotation:}\ \@tempa
+   \end{quotation}%
+  }%
+  \ignorespaces
+}%
+\providecommand{\bibAnnoteFile}[2]{%
+  \IfFileExists{#2}{%
+    \bibAnnote{#1}{#2}{\input{#2}}%
+  }{%
+    \bibAnnote{#1}{#2}{}%
+  }%
+}%
+}{}%
+\def\bibfield{\@ifnum{\NAT@merge>\tw@}{\@bibfield}{\@secondoftwo}}%
+\def\@bibfield#1#2{%
+ \begingroup
+  \let\Doi\@gobble
+  \let\bibinfo\relax
+  \let\restore@protect\@empty
+  \protected@edef\@tempa{#2}%
+  \aftergroup\def\aftergroup\@tempa
+ \expandafter\endgroup\expandafter{\@tempa}%
+ \expandafter\@ifx\expandafter{\csname @bib#1\endcsname\@tempa}{%
+  \expandafter\let\expandafter\@tempa\csname @bib@X#1\endcsname
+ }{%
+  \expandafter\let\csname @bib#1\endcsname\@tempa
+  \expandafter\let\expandafter\@tempa\csname @bib@Y#1\endcsname
+ }%
+ \@ifx{\@tempa\relax}{\let\@tempa\@firstofone}{}%
+ \@tempa{#2}%
+}%
+\def\bibinfo#1{%
+ \expandafter\let\expandafter\@tempa\csname bibinfo@X@#1\endcsname
+ \@ifx{\@tempa\relax}{\@firstofone}{\@tempa}%
+}%
+\def\@bib@Xauthor#1{\let\@bib@Xjournal\@gobble}%
+\def\@bib@Xjournal#1{\begingroup\let\bibinfo@X@journal\@bib@Z@journal#1\endgroup}%
+\def\@bibibid@#1{\textit{ibid}.}%
+\appdef\NAT@bibitem@init{%
+ \let\@bibauthor  \@empty
+ \let\@bibjournal \@empty
+ \let\@bib@Z@journal\@bibibid@
+}%
+\ifx\SK@lbibitem\@undefined\else
+   \let\SK@lbibitem\@lbibitem
+   \def\@lbibitem[#1]#2{%
+     \SK@lbibitem[#1]{#2}\SK@\SK@@label{#2}\ignorespaces}\fi
+\newif\ifNAT@stdbst \NAT@stdbstfalse
+
+\AtEndDocument{%
+  \ifNAT@stdbst\if@filesw
+   \immediate\write\@auxout{%
+    \string\providecommand\string\NAT@force@numbers{}%
+    \string\NAT@force@numbers
+   }%
+  \fi\fi
+ }
+\newcommand\NAT@force@numbers{%
+  \ifNAT@numbers\else
+  \PackageError{natbib}{Bibliography not compatible with author-year
+  citations.\MessageBreak
+  Press <return> to continue in numerical citation style}
+  {Check the bibliography entries for non-compliant syntax,\MessageBreak
+   or select author-year BibTeX style, e.g. plainnat}%
+  \global\NAT@numberstrue\fi}
+
+\providecommand\bibcite{}
+\renewcommand\bibcite[2]{%
+ \@ifundefined{b@#1\@extra@binfo}{\relax}{%
+   \NAT@citemultiple
+   \PackageWarningNoLine{natbib}{Citation `#1' multiply defined}%
+ }%
+ \global\@namedef{b@#1\@extra@binfo}{#2}%
+}%
+\AtEndDocument{\NAT@swatrue\let\bibcite\NAT@testdef}
+\newcommand\NAT@testdef[2]{%
+  \def\NAT@temp{#2}%
+  \expandafter \ifx \csname b@#1\@extra@binfo\endcsname\NAT@temp
+  \else
+    \ifNAT@swa \NAT@swafalse
+      \PackageWarningNoLine{natbib}{%
+        Citation(s) may have changed.\MessageBreak
+        Rerun to get citations correct%
+      }%
+    \fi
+  \fi
+}%
+\newcommand\NAT@apalk{}
+\def\NAT@apalk#1, #2, #3\@nil#4{%
+  \if\relax#2\relax
+    \global\NAT@stdbsttrue
+    \NAT@wrout{#1}{}{}{}{#4}%
+  \else
+    \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
+  \fi
+}%
+\newcommand\citeauthoryear{}
+\def\citeauthoryear#1#2#3(@)(@)\@nil#4{%
+  \if\relax#3\relax
+    \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
+  \else
+    \NAT@wrout{\the\c@NAT@ctr}{#3}{#2}{#1}{#4}%
+  \fi
+}%
+\newcommand\citestarts{\NAT@open}%
+\newcommand\citeends{\NAT@close}%
+\newcommand\betweenauthors{and}%
+\newcommand\astroncite{}
+\def\astroncite#1#2(@)(@)\@nil#3{%
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#3}%
+}%
+\newcommand\citename{}
+\def\citename#1#2(@)(@)\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}}
+\newcommand\harvarditem[4][]{%
+ \if\relax#1\relax
+   \bibitem[#2(#3)]{#4}%
+ \else
+   \bibitem[#1(#3)#2]{#4}%
+ \fi
+}%
+\newcommand\harvardleft{\NAT@open}
+\newcommand\harvardright{\NAT@close}
+\newcommand\harvardyearleft{\NAT@open}
+\newcommand\harvardyearright{\NAT@close}
+\AtBeginDocument{\providecommand{\harvardand}{and}}
+\newcommand\harvardurl[1]{\textbf{URL:} \textit{#1}}
+\providecommand\bibsection{}
+\@ifundefined{chapter}{%
+  \renewcommand\bibsection{%
+   \section*{\refname\@mkboth{\MakeUppercase{\refname}}{\MakeUppercase{\refname}}}%
+  }%
+}{%
+  \@ifxundefined\NAT@sectionbib{%
+    \renewcommand\bibsection{%
+      \chapter*{\bibname\@mkboth{\MakeUppercase{\bibname}}{\MakeUppercase{\bibname}}}%
+    }%
+  }{%
+    \renewcommand\bibsection{%
+      \section*{\bibname\ifx\@mkboth\@gobbletwo\else\markright{\MakeUppercase{\bibname}}\fi}%
+    }%
+  }%
+}%
+\@ifclassloaded{amsart}{\renewcommand\bibsection{\section*{\refname}}}{}%
+\@ifclassloaded{amsbook}{\renewcommand\bibsection{\chapter*{\bibname}}}{}%
+\@ifxundefined\bib@heading{}{\let\bibsection\bib@heading}%
+\newcounter{NAT@ctr}
+\renewenvironment{thebibliography}[1]{%
+ \bibsection
+ \parindent\z@
+ \bibpreamble
+ \bibfont
+ \list{\@biblabel{\the\c@NAT@ctr}}{\@bibsetup{#1}\global\c@NAT@ctr\z@}%
+ \ifNAT@openbib
+   \renewcommand\newblock{\par}%
+ \else
+   \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
+ \fi
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.\@m
+ \let\NAT@bibitem@first@sw\@firstoftwo
+    \let\citeN\cite \let\shortcite\cite
+    \let\citeasnoun\cite
+}{%
+ \bibitem@fin
+ \bibpostamble
+ \def\@noitemerr{%
+  \PackageWarning{natbib}{Empty `thebibliography' environment}%
+ }%
+ \endlist
+ \bibcleanup
+}%
+\let\bibfont\@empty
+\let\bibpreamble\@empty
+\let\bibpostamble\@empty
+\def\bibcleanup{\vskip-\lastskip}%
+\providecommand\reset@font{\relax}
+\providecommand\bibname{Bibliography}
+\providecommand\refname{References}
+\newcommand\NAT@citeundefined{\gdef \NAT@undefined {%
+    \PackageWarningNoLine{natbib}{There were undefined citations}}}
+\let \NAT@undefined \relax
+\newcommand\NAT@citemultiple{\gdef \NAT@multiple {%
+    \PackageWarningNoLine{natbib}{There were multiply defined citations}}}
+\let \NAT@multiple \relax
+\AtEndDocument{\NAT@undefined\NAT@multiple}
+\providecommand\@mkboth[2]{}
+\providecommand\MakeUppercase{\uppercase}
+\providecommand{\@extra@b@citeb}{}
+\gdef\@extra@binfo{}
+\def\NAT@anchor#1#2{%
+ \hyper@natanchorstart{#1\@extra@b@citeb}%
+  \def\@tempa{#2}\@ifx{\@tempa\@empty}{}{\@biblabel{#2}}%
+ \hyper@natanchorend
+}%
+\providecommand\hyper@natanchorstart[1]{}%
+\providecommand\hyper@natanchorend{}%
+\providecommand\hyper@natlinkstart[1]{}%
+\providecommand\hyper@natlinkend{}%
+\providecommand\hyper@natlinkbreak[2]{#1}%
+\AtBeginDocument{%
+  \@ifpackageloaded{babel}{%
+     \let\org@@citex\@citex}{}}
+\providecommand\@safe@activestrue{}%
+\providecommand\@safe@activesfalse{}%
+
+\newcommand\NAT@sort@cites[1]{%
+  \let\NAT@cite@list\@empty
+  \@for\@citeb:=#1\do{\expandafter\NAT@star@cite\@citeb\@@}%
+  \if@filesw
+    \expandafter\immediate\expandafter\write\expandafter\@auxout
+      \expandafter{\expandafter\string\expandafter\citation\expandafter{\NAT@cite@list}}%
+  \fi
+  \@ifnum{\NAT@sort>\z@}{%
+    \expandafter\NAT@sort@cites@\expandafter{\NAT@cite@list}%
+  }{}%
+}%
+\def\NAT@star@cite{%
+  \let\NAT@star@sw\@secondoftwo
+  \@ifnum{\NAT@merge>\z@}{%
+   \@ifnextchar*{%
+    \let\NAT@star@sw\@firstoftwo
+    \NAT@star@cite@star
+   }{%
+    \NAT@star@cite@nostar
+   }%
+  }{%
+   \NAT@star@cite@noextension
+  }%
+}%
+\def\NAT@star@cite@star*{%
+ \NAT@star@cite@nostar
+}%
+\def\NAT@star@cite@nostar{%
+ \let\nat@keyopt@open\@empty
+ \let\nat@keyopt@shut\@empty
+ \@ifnextchar[{\NAT@star@cite@pre}{\NAT@star@cite@pre[]}%
+}%
+\def\NAT@star@cite@pre[#1]{%
+ \def\nat@keyopt@open{#1}%
+ \@ifnextchar[{\NAT@star@cite@post}{\NAT@star@cite@post[]}%
+}%
+\def\NAT@star@cite@post[#1]#2\@@{%
+ \def\nat@keyopt@shut{#1}%
+ \NAT@star@sw{\expandafter\global\expandafter\let\csname NAT@b*@#2\endcsname\@empty}{}%
+ \NAT@cite@list@append{#2}%
+}%
+\def\NAT@star@cite@noextension#1\@@{%
+  \let\nat@keyopt@open\@empty
+  \let\nat@keyopt@shut\@empty
+  \NAT@cite@list@append{#1}%
+}%
+\def\NAT@cite@list@append#1{%
+  \edef\@citeb{\@firstofone#1\@empty}%
+  \if@filesw\@ifxundefined\@cprwrite{}{\expandafter\@cprwrite\@citeb=}\fi
+  \if\relax\nat@keyopt@open\relax\else
+   \global\expandafter\let\csname NAT@b@open@\@citeb\endcsname\nat@keyopt@open
+  \fi
+  \if\relax\nat@keyopt@shut\relax\else
+   \global\expandafter\let\csname NAT@b@shut@\@citeb\endcsname\nat@keyopt@shut
+  \fi
+  \toks@\expandafter{\NAT@cite@list}%
+  \ifx\NAT@cite@list\@empty
+    \@temptokena\expandafter{\@citeb}%
+  \else
+    \@temptokena\expandafter{\expandafter,\@citeb}%
+  \fi
+  \edef\NAT@cite@list{\the\toks@\the\@temptokena}%
+}%
+\newcommand\NAT@sort@cites@[1]{%
+  \count@\z@
+  \@tempcntb\m@ne
+  \let\@celt\delimiter
+  \def\NAT@num@list{}%
+  \let\NAT@cite@list\@empty
+  \let\NAT@nonsort@list\@empty
+  \@for \@citeb:=#1\do{\NAT@make@cite@list}%
+  \ifx\NAT@nonsort@list\@empty\else
+   \protected@edef\NAT@cite@list{\NAT@cite@list\NAT@nonsort@list}%
+  \fi
+  \ifx\NAT@cite@list\@empty\else
+   \protected@edef\NAT@cite@list{\expandafter\NAT@xcom\NAT@cite@list @@}%
+  \fi
+}%
+\def\NAT@make@cite@list{%
+  \advance\count@\@ne
+  \@safe@activestrue
+  \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+  \@safe@activesfalse
+  \@ifundefined{b@\@citeb\@extra@b@citeb}%
+   {\def\NAT@num{A}}%
+   {\NAT@parse{\@citeb}}%
+  \NAT@ifcat@num\NAT@num
+   {\@tempcnta\NAT@num \relax
+    \@ifnum{\@tempcnta<\@tempcntb}{%
+      \let\NAT@@cite@list=\NAT@cite@list
+      \let\NAT@cite@list\@empty
+      \begingroup\let\@celt=\NAT@celt\NAT@num@list\endgroup
+      \protected@edef\NAT@num@list{%
+       \expandafter\NAT@num@celt \NAT@num@list \@gobble @%
+      }%
+    }{%
+      \protected@edef\NAT@num@list{\NAT@num@list \@celt{\NAT@num}}%
+      \protected@edef\NAT@cite@list{\NAT@cite@list\@citeb,}%
+      \@tempcntb\@tempcnta
+    }%
+   }%
+   {\protected@edef\NAT@nonsort@list{\NAT@nonsort@list\@citeb,}}%
+}%
+\def\NAT@celt#1{%
+  \@ifnum{#1>\@tempcnta}{%
+    \xdef\NAT@cite@list{\NAT@cite@list\@citeb,\NAT@@cite@list}%
+    \let\@celt\@gobble
+  }{%
+    \expandafter\def@NAT@cite@lists\NAT@@cite@list\@@
+  }%
+}%
+\def\NAT@num@celt#1#2{%
+ \ifx#1\@celt
+  \@ifnum{#2>\@tempcnta}{%
+    \@celt{\number\@tempcnta}%
+    \@celt{#2}%
+  }{%
+    \@celt{#2}%
+    \expandafter\NAT@num@celt
+  }%
+ \fi
+}%
+\def\def@NAT@cite@lists#1,#2\@@{%
+  \xdef\NAT@cite@list{\NAT@cite@list#1,}%
+  \xdef\NAT@@cite@list{#2}%
+}%
+\def\NAT@nextc#1,#2@@{#1,}
+\def\NAT@restc#1,#2{#2}
+\def\NAT@xcom#1,@@{#1}
+\InputIfFileExists{natbib.cfg}
+       {\typeout{Local config file natbib.cfg used}}{}
+%% 
+%% <<<<< End of generated file <<<<<<
+%%
+%% End of file `natbib.sty'.
Index: doc/papers/general/AMA/AMA-stix/ama/WileyNJD-AMA.bst
===================================================================
--- doc/papers/general/AMA/AMA-stix/ama/WileyNJD-AMA.bst	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/ama/WileyNJD-AMA.bst	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,1100 @@
+% 
+% THIS IS AN ALPHA VERSION!!! 
+%
+% USE AT YOUR OWN RISK
+%
+% This should work for articles...I don't know if it works well for
+% books, etc (give it a try and see!).
+%
+% PLEASE COMPARE RESULTS WITH THE INSTRUCTIONS FOR AUTHORS FOR THE
+% JOURNAL YOU ARE SUBMITTING FOR...I CANNOT ACCEPT RESPONSIBILITY
+% FOR REJECTED MANUSCRIPTS (but I will try to fix it if you point out
+% a bug)
+%
+% AMA Manual of Style (JAMA, Cancer, many others..)
+%    -Up to 6 authors, otherwise 3 authors et al.
+%    -Title in italics
+%    -numeric labels
+%    -order-of-reference.
+%    
+%    Author L, Author S, Author D, et al. Title. Journal. 
+%    YYYY;VOL(NUM):PPP-PPP.
+%
+%
+%   History
+%    9/30/85    (HWT)   IEETR Original version, by Howard Trickey.
+%    1/29/88    (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik;
+%    3/27/02    IEETR style used as framework.  Formats heavily changed by
+%               Eric Kort (eric.kort@vai.org)
+%
+%           THIS VERSION DOES NOT WORK WITH BIBTEX 0.98i.
+%
+
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    month
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    title
+    type
+    volume
+    year
+  }
+  {}
+  { label }
+
+INTEGERS { output.state before.all mid.sentence after.quote after.sentence
+        after.quoted.block after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.quote :=
+  #3 'after.sentence :=
+  #4 'after.quoted.block :=
+  #5 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { "" * write$ }
+    { output.state after.quote =
+    { " " * write$ }
+    { output.state after.block =
+        { add.period$ write$
+          newline$
+          "\newblock " write$
+        }
+        { output.state before.all =
+        'write$
+        { output.state after.quoted.block =
+            { write$
+              newline$
+              "\newblock " write$
+            }
+            { add.period$ " " * write$ }
+          if$
+        }
+          if$
+        }
+      if$
+    }
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  ""
+  before.all 'output.state :=
+}
+
+FUNCTION {blank.sep}
+{ after.quote 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ output.state after.quoted.block =
+    'skip$
+    'add.period$
+  if$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { output.state after.quote =
+    { after.quoted.block 'output.state := }
+    { after.block 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+    'skip$
+    { after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\it " swap$ * "}" * }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames etal}
+
+FUNCTION {format.names}
+{ 's :=  % push the name s, pop s and author (already on stack), assign author to s
+  #1 'nameptr := 
+  #0 'etal :=
+
+  s num.names$ 'numnames :=
+  
+  numnames #6 >
+    {#3 'numnames :=
+     #1 'etal :=
+    }
+    {}
+    %end if 
+  if$
+  
+  numnames 'namesleft :=
+  { namesleft #0 > }
+
+  {s nameptr "{ll~}{ff}" format.name$ 't :=
+    namesleft #1 >
+    {t * ", " * }
+    {t}
+    %end if 
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
+
+  etal
+    {", et al. "}
+    {". "}
+  if$
+  *
+}
+
+FUNCTION {format.editors.names}
+{ 's :=  % push the name s, pop s and author (already on stack), assign author to s
+  #1 'nameptr := 
+  #0 'etal :=
+
+  s num.names$ 'numnames :=
+  
+  numnames #6 >
+    {#3 'numnames :=
+     #1 'etal :=
+    }
+    {}
+    %end if 
+  if$
+  
+  numnames 'namesleft :=
+  { namesleft #0 > }
+
+  {s nameptr "{ll~}{ff}" format.name$ 't :=
+    namesleft #1 >
+    {t * ", " * }
+    {t}
+    %end if 
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
+
+  etal
+    {", et al. "}
+    {""}
+  if$
+  *
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.editors.names
+      editor num.names$ #1 >
+    { ", eds." * }
+    { ", ed." * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title ". " *}% modified by SPi-Global on 12Jun2017
+  if$
+}
+
+FUNCTION {format.journal}
+{ journal empty$
+    { "" }
+    { journal ". " *}
+  if$
+}
+
+FUNCTION {format.title.p}
+{ title empty$
+    { "" }
+    { title " " *}
+  if$
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+    { t #1 #2 substring$ "--" = not
+        { "--" *
+          t #2 global.max$ substring$ 't :=
+        }
+        {   { t #1 #1 substring$ "-" = }
+        { "-" *
+          t #2 global.max$ substring$ 't :=
+        }
+          while$
+        }
+      if$
+    }
+    { t #1 #1 substring$ *
+      t #2 global.max$ substring$ 't :=
+    }
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.date}
+{ year empty$
+    { "" }
+    { " " * year }
+  if$
+}
+
+FUNCTION {inproformat.date}
+{ year empty$
+    { "" }
+    { "; " * year }
+  if$
+}
+
+FUNCTION {format.btitle}
+%%{ title emphasize
+{ title % modified by SPi-Global on 12Jun2017
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+    { "" }
+    { series empty$
+    'skip$
+    { " " * series * ", vol. " volume * ": " *}
+      if$
+      "volume and number" number either.or.check
+    }
+  if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+    { number empty$
+    { series field.or.null }
+    { output.state mid.sentence =
+        { "no.~" }
+        { "No.~" }
+      if$
+      number *
+      series empty$
+        { "there's a number but no series in " cite$ * warning$ }
+        { " in " * series * }
+      if$
+    }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { edition "l" change.case$ "~ed." * }
+  if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+    { #1 'multiresult := }
+    { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+    { "" }
+    {":" pages *}
+  if$
+}
+
+FUNCTION {incollecformat.pages}
+{ pages empty$
+    { "" }
+    {" (pp. " pages * ")" *}
+  if$
+}
+
+FUNCTION {format.volume}
+{ volume empty$
+    { "" }
+    { "" volume * }
+  if$
+}
+
+FUNCTION {format.number}
+{ number empty$
+    { "" }
+    { "(" number * ")" *}
+  if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+    { "ch.~" chapter * }
+    { type "l" change.case$ chapter tie.or.space.connect }
+      if$
+      pages empty$
+    'skip$
+    { ", " * format.pages * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "In: " }
+    { "In: " 
+      editor empty$
+      { booktitle emphasize * }
+      { " " * format.editors * " " * booktitle emphasize * ", " * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+    'skip$
+    { pop$
+      output.state after.block =
+    { type "t" change.case$ }
+    { type "l" change.case$ }
+      if$
+    }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$
+  and and and and and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+    %%{ "Tech. Rep." }% modified by SPi-Global - 16Jun2017
+    { "" }
+    'type
+  if$
+  number empty$
+    { "l" change.case$ }
+    { number tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.addr.pub}
+{ publisher empty$
+    { "" }
+    { address empty$
+    { "" }
+    { address ": " * }
+      if$
+      publisher * " " *
+    }
+  if$
+}
+
+FUNCTION {format.book.addr.pub}
+{ publisher empty$
+    { "" }
+    { address empty$
+    { "" }
+    { address ": " * }
+      if$
+      publisher * "; " *
+    }
+  if$
+}
+
+FUNCTION {format.paddress}
+{ address empty$
+    { "" }
+    { "(" address * ")" * }
+  if$
+}
+
+FUNCTION {format.ppaddress}
+{ address empty$
+    { "" }
+    { "; " address * "" * }
+  if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+    { journal empty$
+    { "need key or journal for " cite$ * " to crossref " * crossref *
+      warning$
+      ""
+    }
+    { "in {\em " journal * "\/}" * }
+      if$
+    }
+    { "in " key * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+  editor num.names$ duplicate$
+  #2 >
+    { pop$ " {\em et~al.}" * }
+    { #2 <
+    'skip$
+    { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+        { " {\em et~al.}" * }
+        { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+      if$
+    }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      "In "
+    }
+    { "Vol.~" volume *
+      " of " *
+    }
+  if$
+  editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+    { series empty$
+        { "need editor, key, or series for " cite$ * " to crossref " *
+          crossref * warning$
+          "" *
+        }
+        { "{\em " * series * "\/}" * }
+      if$
+    }
+    { key * }
+      if$
+    }
+    { format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+    { booktitle empty$
+        { "need editor, key, or booktitle for " cite$ * " to crossref " *
+          crossref * warning$
+          ""
+        }
+        { "in {\em " booktitle * "\/}" * }
+      if$
+    }
+    { "in " key * }
+      if$
+    }
+    { "in " format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {no.blank.or.punct}
+{  "" * before.all 'output.state :=
+}
+
+FUNCTION {add.semicolon}
+{
+  ";" *
+  no.blank.or.punct
+}
+
+FUNCTION {add.colon}
+{
+  ": " *
+  no.blank.or.punct
+}
+
+FUNCTION {add.space}
+{
+  " " *
+  no.blank.or.punct
+}
+
+FUNCTION {article}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title "title" output.check
+  blank.sep
+  crossref missing$
+    { format.journal emphasize "journal" output.check
+      format.date add.semicolon "year" output.check
+      format.volume output
+      format.number output
+      format.pages output
+    }
+    { format.article.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+    { "author and editor" editor either.or.check }
+    'skip$
+      if$
+    }
+  if$
+  format.btitle emphasize "title"  output.check
+  crossref missing$
+    { format.bvolume output
+      new.block
+      format.number.series output
+      format.book.addr.pub "publisher" output.check
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+  format.authors output
+  title empty$
+    { "empty title in " cite$ * warning$
+      howpublished new.sentence.checka
+    }
+    { howpublished empty$ not
+      address empty$ month empty$ year empty$ and and
+      or
+    { format.title.p output.nonnull }
+    { format.title output.nonnull }
+      if$
+      blank.sep
+    }
+  if$
+  howpublished output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+    { "author and editor" editor either.or.check }
+    'skip$
+      if$
+    }
+  if$
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.number.series output
+      format.addr.pub "publisher" output.check
+    }
+    { format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title "title" output.check
+  blank.sep
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.number.series add.period$ add.space output
+      format.bvolume output
+      format.addr.pub "publisher" output.check
+      format.edition output
+      format.date "year" output.check
+      %%format.chapter.pages output
+      incollecformat.pages output
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title "title" output.check
+  blank.sep
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      blank.sep
+      format.bvolume output
+      format.number.series output
+      new.block
+      format.pages output
+      organization output
+      publisher output
+      inproformat.date "year" output.check
+      format.ppaddress output
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+  author empty$
+    { new.block organization empty$
+    'skip$
+    { new.block organization output.nonnull
+      new.block address output
+    }
+      if$
+    }
+    { format.authors output.nonnull }
+  if$
+  format.btitle "title" output.check
+  author empty$
+    { new.block organization empty$
+    { new.block address new.block.checka
+      address output
+    }
+    'skip$
+      if$
+    }
+    { new.block organization new.block address new.block.checkb
+      organization output
+      address output
+    }
+  if$
+  new.block
+  format.edition output
+  new.block
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title "title" output.check
+  blank.sep
+  "Master's thesis" format.thesis.type output.nonnull
+  new.block
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {format.note}
+{ note empty$
+    { "" }
+    { note "; " *}
+  if$
+}
+
+FUNCTION {misc}
+{ output.bibitem
+  format.authors output
+  title empty$
+    { howpublished new.sentence.checka }
+    { howpublished empty$ not
+      month empty$ year empty$ and
+      or
+    { format.title.p output.nonnull }
+    { format.title emphasize output.nonnull }
+      if$
+      blank.sep
+    }
+  if$
+  howpublished output
+  new.block
+  format.note output 
+  new.block
+  format.date output
+  fin.entry
+  empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  format.btitle "title" output.check
+  new.block
+  "PhD thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+  editor empty$
+    { organization output }
+    { format.editors output.nonnull }
+  if$
+  format.btitle "title" output.check
+  format.bvolume output
+  format.number.series output
+  format.paddress output
+  editor empty$
+    'skip$
+    { organization output }
+  if$
+  publisher output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {add.spperiod}
+{
+  ". " *
+  no.blank.or.punct
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title emphasize "title" output.check
+  blank.sep
+  format.tr.number add.colon output.nonnull
+  institution "institution" output.check
+  address output
+  add.semicolon add.space format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+  format.authors "author" output.check
+  format.title.p "title" output.check
+  blank.sep
+  note "note" output.check
+  format.date output
+  fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications ACM"}
+
+MACRO {ibmjrd} {"IBM J. Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems~J."}
+
+MACRO {ieeese} {"IEEE Trans. Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Trans. Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Trans. Computer-Aided Design"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"J.~ACM"}
+
+MACRO {jcss} {"J.~Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM J. Computing"}
+
+MACRO {tocs} {"ACM Trans. Computer Systems"}
+
+MACRO {tods} {"ACM Trans. Database Systems"}
+
+MACRO {tog} {"ACM Trans. Graphics"}
+
+MACRO {toms} {"ACM Trans. Mathematical Software"}
+
+MACRO {toois} {"ACM Trans. Office Information Systems"}
+
+MACRO {toplas} {"ACM Trans. Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+STRINGS { longest.label }
+
+INTEGERS { number.label longest.label.width }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #1 'number.label :=
+  #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ number.label int.to.str$ 'label :=
+  number.label #1 + 'number.label :=
+  label width$ longest.label.width >
+    { label 'longest.label :=
+      label width$ 'longest.label.width :=
+    }
+    'skip$
+  if$
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {longest.label.pass}
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+    'skip$
+    { preamble$ write$ newline$ }
+  if$
+  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+  "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
Index: doc/papers/general/AMA/AMA-stix/ama/WileyNJD-v2.cls
===================================================================
--- doc/papers/general/AMA/AMA-stix/ama/WileyNJD-v2.cls	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/ama/WileyNJD-v2.cls	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,3458 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% This file is copyright by SPi Technologies Ltd. All rights reserved.
+%%
+%% Author:       SPi, LaTeX Development Team, Chennai (India)
+%% Created On: 
+%% Last Modified By:
+%% Last Modified On:
+%% Description:  Class file to support authoring template in LaTeX typesetting 
+%%               for Wiley Journals
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}[2009/09/24]
+\ProvidesClass{WileyNJD-v2}
+              [2017/06/23 v0.2 Standard LaTeX document class for Journal]
+
+\newif\if@cropmarkson\@cropmarksonfalse
+\newif\if@croppage\@croppagefalse
+\newif\if@draftruleson\@draftrulesonfalse
+\newif\if@exactptsize\@exactptsizefalse
+\newif\if@pagenum   \@pagenumfalse%
+\newif\if@purexml\global\@purexmlfalse
+\newif\if@xml\global\@xmlfalse
+\newif\if@hyperrefon  \@hyperrefonfalse%
+\newif\ifbibunnumbered\global\bibunnumberedtrue%
+\newif\ifproof\global\prooffalse%
+\newif\ifEqnSpan\global\EqnSpantrue% 
+\newif\if@dblspace\global\@dblspacefalse% 
+
+\newif\if@font@stix\global\@font@stixfalse%
+\newif\if@large@design\global\@large@designtrue%
+\newif\if@small@design\global\@small@designfalse%
+
+
+\newif\if@APArefstyle\global\@APArefstylefalse%
+\newif\if@AMSrefstyle\global\@AMSrefstylefalse%
+\newif\if@AMArefstyle\global\@AMArefstylefalse%
+\newif\if@Vancouverrefstyle\global\@Vancouverrefstylefalse%
+\newif\if@Chemistryrefstyle\global\@Chemistryrefstylefalse%
+
+\newif\if@STIXLargeOneCol\global\@STIXLargeOneColfalse%
+\newif\if@STIXSmall\global\@STIXSmallfalse%
+\newif\if@STIXLargeTwoCol\global\@STIXLargeTwoColfalse%
+
+\newif\if@LATOLargeOneCol\global\@LATOLargeOneColfalse%
+\newif\if@LATOSmall\global\@LATOSmallfalse%
+\newif\if@LATOLargeTwoCol\global\@LATOLargeTwoColfalse%
+
+\def\dummyalphabet{\vphantom{abcdefghijklmnopqrstuvwxyz0123456789}}
+
+\DeclareOption{STIX1COL}{\global\@STIXLargeOneColtrue\global\@font@stixtrue}
+\DeclareOption{STIX2COL}{\global\@STIXLargeTwoColtrue\global\@font@stixtrue}
+\DeclareOption{STIXSMALL}{\global\@STIXSmalltrue \global\@font@stixtrue}
+\DeclareOption{LATO1COL}{\global\@LATOLargeOneColtrue\global\@font@stixfalse}
+\DeclareOption{LATO2COL}{\global\@LATOLargeTwoColtrue\global\@font@stixfalse}
+\DeclareOption{LATOSMALL}{\global\@LATOSmalltrue\global\@font@stixfalse}
+
+
+\DeclareOption{APA}{\global\@APArefstyletrue}
+\DeclareOption{AMS}{\global\@AMSrefstyletrue}
+\DeclareOption{ACS}{\global\@Chemistryrefstyletrue}
+\DeclareOption{AMA}{\global\@AMArefstyletrue}
+\DeclareOption{VANCOUVER}{\global\@Vancouverrefstyletrue}
+
+\DeclareOption{doublespace}{\global\@dblspacetrue}
+
+\DeclareOption{draftrules}{\global\@draftrulesontrue}
+\DeclareOption{exactsize}{\global\@exactptsizetrue}%
+\DeclareOption{noexactsize}{\global\@exactptsizefalse}%
+\DeclareOption{croppage}{\global\@croppagetrue\global\@cropmarksontrue}%
+\DeclareOption{number}{\xdef\@biboptions{numbers}}
+\DeclareOption{numbers}{\xdef\@biboptions{numbers}}
+\DeclareOption{EqnSpan}{\global\EqnSpantrue}%%
+
+\DeclareOption{proof}{%
+\global\prooftrue%
+\global\@hyperrefontrue%
+}%
+
+\DeclareOption{final}{%
+\global\prooffalse%
+\global\@hyperrefontrue% links and bookmarks are removed through PDF action list post PDF creation
+}%
+
+\def\@JrnlID{}%
+\gdef\JrnlID#1{\gdef\@JrnlID{#1}}%
+
+\def\@YES{YES}%
+\def\@NO{NO}%
+
+%
+%%%%%%%%% From Boolean Package %%%%%%%%%
+%
+
+\newcommand {\TRUE}[2]{#1}
+\newcommand {\FALSE}[2]{#2}
+
+%% Public commands are also given inner hidden names
+
+\let \bln@true \TRUE
+\let \bln@false \FALSE
+
+\newcommand {\AND}[2]{#1{#2}{\bln@false}}
+\newcommand {\OR}[2]{#1{\bln@true}{#2}}
+\newcommand {\NOT}[1]{#1{\bln@false}{\bln@true}}
+\newcommand {\IF}[3]{#1{#2}{#3}}
+
+\let \bln@and \AND
+\let \bln@or  \OR
+\let \bln@not \NOT
+\let \bln@if  \IF
+
+
+%% To convert if.. macros into Booleans:
+
+\newcommand {\texbool}[1]
+    {#1\let \bln@do \bln@true \else \let \bln@do \bln@false\fi \bln@do}
+%% Does not work
+\let \bln@tex \texbool
+
+\newcommand {\ifxbool}[2]
+    {\ifx #1#2\let \bln@do \bln@true \else \let \bln@do \bln@false \fi \bln@do}
+\let \bln@ifx \ifxbool
+
+\newcommand {\ifybool}[2]
+    {\def \bln@testa{#1}\ifxbool{\bln@testa}{#2}}
+\let \bln@ify \ifybool
+
+\newcommand {\ifequalbool}[2]
+    {\def \bln@testa{#1}\def \bln@testb{#2}\ifxbool{\bln@testa}{\bln@testb}}
+\let \bln@ifequal \ifequalbool
+
+\def \bln@empty {}
+\newcommand {\ifemptybool}[1]
+    {\ifybool{#1}{\bln@empty}}
+\let \bln@ifempty \ifemptybool
+
+%% To force evaluation, e.g. if a blnlean expression is to be used several
+%% times. This takes a Boolean expression and returns a Boolean value, i.e.
+%% \True or \False.
+
+\newcommand* {\letboolval}[2]
+        {#2{\let #1\bln@true}{\let #1\bln@false}}
+\newcommand* {\newboolval}[2]
+        {\@ifdefinable #1{\letboolval{#1}{#2}}}
+
+%% We provide list versions of And and Or
+
+\def \bln@scan #1,#2\bln@to#3#4{%
+    \bln@ifempty{#2}{#3{#4}{#1}}
+          {\bln@scan #2\bln@to {#3}{#3{#4}{#1}}}%
+}
+\def \bln@eval #1#2#3{%
+    \bln@ifempty{#1}{#3}%
+          {\bln@scan #1,\bln@to {#2}{#3}}%
+}
+
+\newcommand*{\ANDL}[1]{\bln@eval {#1}{\bln@and}{\bln@true}}
+\newcommand*{\ORL} [1]{\bln@eval {#1}{\bln@or}{\bln@false}}
+
+%% In some contexts, shorter names may be more convenient
+
+\newcommand*{\ShorterBooleanNames}{%
+  \let \true  \bln@true
+  \let \false \bln@true
+  \let \or    \bln@or
+  \let \and   \bln@and
+  \let \not   \bln@not
+  \let \orl   \bln@orl
+  \let \andl  \bln@andl
+}
+
+%% Comparisson between strings
+
+\newcommand {\stringmatch}[3]{%
+   \def \@match ##1#2##2\str@sep ##3\str@sep ##4\str@end
+        {#1{##1}{##2}{\ifequalbool{#2}{##3}}}%
+   \@match #3\str@sep #2\str@sep \str@sep \str@end
+}
+\let \str@match \stringmatch
+
+%% The following commands takes in order Prefix Infix Suffix Left
+
+\def \str@infix  #1#2#3{#3}
+\def \str@prefix #1#2#3{\AND{#3}{\ifemptybool{#1}}}
+\def \str@suffix #1#2#3{\AND{#3}{\ifemptybool{#2}}}
+
+\newcommand {\ifstringinfix} {\str@match {\str@infix}}
+\newcommand {\ifstringsuffix}{\str@match {\str@suffix}}
+\newcommand {\ifstringprefix}{\str@match {\str@prefix}}
+
+%%%%%%%%%%% From ifjobname Package %%%%%%%%%%%%%
+
+\edef \@jobname {\jobname}
+
+%% Simple equality
+\def \job@eattwo #1#2{}
+\def \ifjobname #1{%
+   \edef \job@tmp {\expandafter \string \csname x#1\endcsname}%
+   \edef \job@name {\expandafter \job@eattwo \job@tmp}%
+   \ifxbool{\@jobname}{\job@name}%
+}
+
+%%
+
+\newtoks \job@temptoken
+
+\def \ifjob@iffix #1#2{%
+   \edef \@tmp {\expandafter \string \csname x#2\endcsname}%
+   \edef \job@name {\expandafter \job@eattwo \@tmp}%
+   \job@temptoken{\def \@match ##1}%
+   \@temptokena={##2\relax ##3\relax
+           {\def \tmp@prefix {##1}\def \tmp@suffix {##2}\def \tmp@left
+           {##3}}}%
+   \let \arg@one \job@name%
+   \edef \@tmp{\the \job@temptoken\job@name\the \@temptokena}\@tmp
+   \edef \@tmp{\noexpand\@match \@jobname \relax \job@name \relax \relax}\@tmp
+   #1}
+
+\def \job@infix {\ifxbool{\tmp@left}{\arg@one}}
+\def \job@suffix
+     {\AND{\ifxbool{\tmp@left}{\arg@one}}{\ifxbool{\empty}{\tmp@suffix}}}
+\def \job@prefix
+     {\AND{\ifxbool{\tmp@left}{\arg@one}}{\ifxbool{\empty}{\tmp@prefix}}}
+
+\newcommand {\ifjobinfix} {\ifjob@iffix {\job@infix}}
+\newcommand {\ifjobsuffix}{\ifjob@iffix {\job@suffix}}
+\newcommand {\ifjobprefix}{\ifjob@iffix {\job@prefix}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%\ExecuteOptions{twosidecrop,crop,centre,noinfo,a3paper,exactsize,croppage}%
+\ProcessOptions
+\LoadClass[twoside,fleqn,onecolumn]{article}%
+
+%\usepackage{etex}%
+%\reserveinserts{28}% included etex package and \reserveinserts{...} to avoid no room for \newinserts, \newcounts or \newskips etc.
+\RequirePackage{graphicx,multicol}%
+\RequirePackage{multirow}%
+\RequirePackage{cuted}%
+\RequirePackage{ifpdf}%
+\RequirePackage{url}\def\UrlFont{}%\urlstyle{sf}
+\RequirePackage[strict]{changepage}%
+\RequirePackage{calc}%
+\RequirePackage{xcolor}%
+\RequirePackage{float}%
+\RequirePackage{floatpag}%
+\floatpagestyle{headings}%
+\rotfloatpagestyle{headings}%modified from plain to headings to get header and footer for sidewaystable%
+\RequirePackage{dblfloatfix}%
+\RequirePackage[figuresright]{rotating}%
+\RequirePackage{longtable}%
+%%\RequirePackage{threeparttable}%
+\RequirePackage{ulem}%
+\RequirePackage{enumerate}%
+\RequirePackage{soul}
+\usepackage{caption}
+%%
+%\if@hyperrefon%
+%  \if@xml%
+     \RequirePackage{hyperref}%
+%  \else%
+%     \RequirePackage{hyperref}%
+%  \fi%
+%  \RequirePackage{breakurl}%
+  \hypersetup{bookmarksopen=true,%
+              bookmarksdepth=3}%
+  \RequirePackage{bookmark}% if bookmark package is commented bookmarks are getting printed at the beginning of the file in the output
+%\else%
+%  \RequirePackage{hyperref}%
+%  \RequirePackage{breakurl}%
+%  \hypersetup{bookmarksopen=true,%
+%              bookmarksdepth=3}%
+%  \RequirePackage{bookmark}% if bookmark package is commented bookmarks are getting printed at the beginning of the file in the output
+%\fi%
+\IfFileExists{subfigure.sty}{}{\RequirePackage[labelformat=empty]{subfig}}%
+
+\RequirePackage{twoopt}%
+\RequirePackage[bottom]{footmisc}% to place footnotes below floats
+
+%\if@xml%
+%\else%
+%%%%%%% For pagenumbering automations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\usepackage{alphalph}%
+%\usepackage[pagecontinue=true,alphMult=ab,AlphMulti=AB,fnsymbolmult=true,romanMult=true,RomanMulti=true]{pageslts}
+%\AtBeginDocument{\pagenumbering{arabic}}%% for pagesLTS package
+%%%%%%% end pagenumbering automations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\fi%
+
+\AtBeginDocument{\if@dblspace\usepackage{setspace}\doublespacing\fi}%
+
+\RequirePackage{tabularx}%%  COMPULSARILY HAS TO BE INPUTTED TO USE \tabpara% XMT: Update
+
+
+%\newcounter{boxcnt}%
+%\newcommand\boxsection[1]{\begingroup\vskip2pt%
+%\refstepcounter{boxcnt}%
+%\vbox{{\textcolor{black!75}{\bfseries BOX \theboxcnt.}}\quad {\bfseries#1}}\par%
+%\removelastskip\vskip4pt%
+%\endgroup}
+
+
+%\usepackage{mdframed}
+%\mdfsetup{linewidth=1pt,topline=true,bottomline=true,skipabove=\topskip,skipbelow=\topskip}
+%\newenvironment{boxtext}{\begingroup\begin{fcolorbox}{black}{white}%
+%}{\par\end{fcolorbox}\endgroup}
+
+%%%%%%%%%%%%%%%%%%%%%boxtext%%%%%%%%%%%%%%%%%%%%%
+\def\ColorDefns{%
+\definecolor{boxrulecol}{cmyk}{0,0,0,0}%
+\definecolor{boxbodycol}{cmyk}{0,0,0,0}}%
+
+\newdimen\tfboxrule%
+\newdimen\bfboxrule%
+
+\def\@spframeb@x#1{%
+  \@tempdima\fboxrule
+  \advance\@tempdima\fboxsep
+  \advance\@tempdima\dp\@tempboxa
+  \leavevmode
+  \hbox{%
+    \lower\@tempdima\hbox{%
+      \vbox{%
+        \hrule\@height\tfboxrule
+        \hbox{%
+          \vrule\@width\fboxrule
+          #1%
+          \vbox{%
+            \vskip\fboxsep
+            \box\@tempboxa
+            \vskip\fboxsep}%
+          #1%
+          \vrule\@width\fboxrule}%
+        \hrule\@height\bfboxrule}%
+                          }%
+        }%
+}%
+
+
+
+\newdimen\BXRuleThickness%
+\BXRuleThickness=0.25pt%
+
+\newdimen\BXleftrightskipdimen%
+\BXleftrightskipdimen=8pt%
+
+\newdimen\BXhsize%
+
+\advance\BXhsize by -2\BXRuleThickness%(rule thickness)
+\advance\BXhsize by -2\BXleftrightskipdimen%(rule thickness)
+
+\newdimen\FreePageSpace%To find out the FreeSpace
+\newdimen\ovsize%
+
+\newskip\adjustskip%
+\adjustskip=0pt plus10pt minus1pt%
+
+\gdef\ComputeFreeSpaceOnPage{%
+\par%
+\ifdim\pagetotal=0pt%
+   \global\FreePageSpace=\vsize%
+   \global\advance\FreePageSpace by -\adjustskip%
+\else%
+   \FreePageSpace=\pagegoal%
+  \ifvoid\footins%
+     \global\advance\FreePageSpace by -\pagetotal%
+     \global\advance\FreePageSpace by -\adjustskip%
+  \else%
+    \setbox3=\vbox{\unvbox\footins}%
+    \htftbox=\ht3%
+    \advance\htftbox by \dp3%
+    \global\advance\FreePageSpace by -\pagetotal%
+    \global\advance\FreePageSpace by -\htftbox%
+    \global\advance\FreePageSpace by -\adjustskip%
+  \fi%
+\fi%
+}%
+
+\newbox\BXbox%
+
+\gdef\overprinton{\special{ps:gsave
+true setoverprint}}
+
+\gdef\overprintoff{\special{ps:grestore
+false setoverprint}}
+
+\long\def\BXboxfirst#1{\begingroup%\undefined%
+\fboxsep=\BXleftrightskipdimen%
+\fboxrule=\BXRuleThickness\tfboxrule=\BXRuleThickness\bfboxrule=\BXRuleThickness%
+\setbox\BXbox=\vbox{\hsize=\BXhsize\hsize=\BXhsize\fbox{\vbox{#1}}}%
+\box\BXbox%
+\endgroup}%
+
+\long\def\BXboxmid#1{\begingroup%\undefined%
+\fboxsep=\BXleftrightskipdimen%
+\fboxrule=\BXRuleThickness\tfboxrule=\BXRuleThickness\bfboxrule=\BXRuleThickness%
+\setbox\BXbox=\vbox{\hsize=\BXhsize\hsize=\BXhsize\fbox{\vbox{#1}}}%
+\box\BXbox%
+\endgroup}%
+
+\long\def\BXboxlast#1{\begingroup%\undefined%
+\fboxsep=\BXleftrightskipdimen%
+\fboxrule=\BXRuleThickness\tfboxrule=\BXRuleThickness\bfboxrule=\BXRuleThickness%
+\setbox\BXbox=\vbox{\hsize=\BXhsize\hsize=\BXhsize\fbox{\vbox{#1}}}%
+\box\BXbox%
+\endgroup}%
+	
+\long\def\BXboxfull#1{\begingroup%
+\fboxsep=\BXleftrightskipdimen%
+\fboxrule=\BXRuleThickness\tfboxrule=\BXRuleThickness\bfboxrule=\BXRuleThickness%
+\setbox\BXbox=\vbox{\hsize=\BXhsize\hsize=\BXhsize\fbox{\vbox{#1}}}%
+\box\BXbox%
+\endgroup}%
+
+\newskip\xxptspaceamount%
+\xxptspaceamount=20pt plus10pt minus5pt%
+
+\newskip\BXboxoutbnewskip%
+\BXboxoutbnewskip=\xxptspaceamount%
+
+\def\BXboxoutbskip{\removelastskip\vskip\BXboxoutbnewskip}%
+
+\newdimen\BXdim%
+
+\def\boxejectdefns{\vfill\eject}%
+
+\long\def\BX#1{\begingroup%
+\ComputeFreeSpaceOnPage%
+\BXdim=\ht#1\advance\BXdim by \dp#1%
+\ifdim\BXdim>\FreePageSpace%
+\advance\FreePageSpace by -\BXboxoutbnewskip%outside space before definition
+\advance\FreePageSpace by -\BXleftrightskipdimen%bottom space in the first box
+  \setbox8=\vbox{\unvbox#1}%
+  \setbox1=\vsplit8to\FreePageSpace%
+  \setbox1=\vbox{\unvbox1}%
+  \setbox2=\vbox{\unvbox8}%
+  \BXboxfirst{\unvbox1}\boxejectdefns%
+\loop\ifdim\ht2>\vsize%
+  \ovsize=\vsize%
+  \advance\ovsize by -2\BXleftrightskipdimen%
+  \setbox1=\vsplit2to\ovsize%
+  \setbox1=\vbox{\unvbox1}%
+  \BXboxmid{\unvbox1}\boxejectdefns%
+\repeat%
+  \BXboxlast{\unvbox2}%
+\else%
+\BXboxfull{\unvbox#1}%
+\fi%
+\endgroup}%
+
+
+
+
+\newbox\BXgraybox%
+\newenvironment{boxtext}{\begingroup\parskip=0pt\parindent=0pt%
+%\let\section=\boxhead%
+\let\@frameb@x\@spframeb@x%
+\fboxsep=5pt\hsize=\BXhsize\parindent=0pt%
+\setbox\BXgraybox=\vbox\bgroup%\leftskip=1pt%
+\nointerlineskip\vskip0pt%%
+%\reset@font\tabbodyfont%
+\removelastskip\noindent}%
+{\egroup\hsize=\hsize\BXboxoutbskip\BX{\BXgraybox}\endgroup}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+%% ========================================================= %%
+%% If array package is included before dcolumn package,      %%
+%% array environment inside eqnarray throw errors            %%
+%% array package is included in dcolumn package; do not      %%
+%% include array.sty again in Wileyarticle.cls anywhere;     %%
+%% ========================================================= %%
+\RequirePackage{varwidth}%
+\RequirePackage{dcolumn}% 
+%
+%% Fonts Used
+%
+\if@STIXLargeOneCol%
+\RequirePackage[not1,notextcomp,lcgreekalpha]{stix}%
+\usepackage[T1]{fontenc}
+\BXhsize=170mm%
+\else%
+\if@STIXLargeTwoCol%
+\RequirePackage[not1,notextcomp,lcgreekalpha]{stix}%
+\usepackage[T1]{fontenc}
+\BXhsize=19pc%
+\else%
+\if@STIXSmall%
+\RequirePackage[not1,notextcomp,lcgreekalpha]{stix}%
+\usepackage[T1]{fontenc}
+\BXhsize=170mm%
+\else%
+\if@LATOLargeTwoCol%
+\usepackage[default]{lato}
+\usepackage[T1]{fontenc}
+  \fontfamily{fla}%
+ \renewcommand{\rmdefault}{fla}%
+  \renewcommand{\sfdefault}{fla}%
+\BXhsize=19pc%
+\else%
+\if@LATOLargeOneCol%
+\usepackage[default]{lato}
+\usepackage[T1]{fontenc}
+  \fontfamily{fla}%
+ \renewcommand{\rmdefault}{fla}%
+  \renewcommand{\sfdefault}{fla}%
+\everymath{\sf}%  \renewcommand*{\mathsf}{fla}%
+\BXhsize=170mm%
+\else%
+\if@LATOSmall%
+\usepackage[default]{lato}
+\usepackage[T1]{fontenc}
+  \fontfamily{fla}%
+ \renewcommand{\rmdefault}{fla}%
+  \renewcommand{\sfdefault}{fla}%
+\BXhsize=170mm%
+\else%
+\fi\fi\fi\fi\fi\fi%
+
+%\RequirePackage[not1,notextcomp,lcgreekalpha]{stix}%
+
+\captionsetup[figure]{labelformat=simple, labelsep=space, skip=10pt, labelfont=bf}
+\captionsetup[table]{labelformat=simple, labelsep=space, skip=10pt, labelfont=bf}
+\renewcommand{\thefigure}{\arabic{figure}}
+
+\renewcommand{\thetable}{\arabic{table}}
+
+\renewcommand\figurename{\textbf{FIGURE}}%%
+\renewcommand\tablename{\textbf{TABLE}} %%
+
+\def\fnum@figure{\figurenumfont{\figurename}\space\relax\textbf{\thefigure\hskip9pt}} %%LN
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Layout Settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\newlength\trimwidth
+\newlength\trimheight
+\newlength\typewidth
+\newlength\typeheight
+\newlength\normaltextheight
+\newlength\blindfoliodrop
+\newlength\figheight
+\newlength\figwidth
+\newlength\tabledim
+
+\if@STIXLargeOneCol%
+\setlength\paperwidth{210mm}%
+\setlength\paperheight{276mm}%
+
+\setlength\typeheight{62\baselineskip}
+\setlength\textheight{53\baselineskip}%
+\addtolength\textheight{-6.9\p@}%
+
+\setlength\typewidth{177.8mm}
+\setlength\textwidth{177.8mm}
+
+%%\addtolength\textwidth{1.8\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {15.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+\addtolength\topmargin{5\p@}%
+\setlength\oddsidemargin{45\p@}%
+\setlength\evensidemargin{45\p@}%
+
+\setlength\footskip{51\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+%\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+\setlength{\skip\footins}{18pt plus2pt minus2pt}%
+
+\newskip\abs@coli@hsize\abs@coli@hsize12pc%
+\newskip\abs@colii@hsize\abs@colii@hsize29pc%
+
+\RequirePackage[paperwidth=210mm,
+    paperheight=276mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+%    text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\if@STIXLargeTwoCol%
+\setlength\paperwidth{210mm}%
+\setlength\paperheight{276mm}%
+
+\setlength\typeheight{62\baselineskip}
+\setlength\textheight{53\baselineskip}%
+\addtolength\textheight{-6.9\p@}%
+
+\setlength\typewidth{177.8mm}
+\setlength\textwidth{177.8mm}
+
+%%\addtolength\textwidth{1.8\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {15.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+\addtolength\topmargin{5\p@}%
+\setlength\oddsidemargin{45\p@}%
+\setlength\evensidemargin{45\p@}%
+
+\setlength\footskip{51\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+%\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+\setlength{\skip\footins}{18pt plus2pt minus2pt}%
+
+\newskip\abs@coli@hsize\abs@coli@hsize12pc%
+\newskip\abs@colii@hsize\abs@colii@hsize29pc%
+
+\RequirePackage[paperwidth=210mm,
+    paperheight=276mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+%    text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,twocolumn,columnsep=1pc,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\if@STIXSmall%
+\setlength\paperwidth{171mm}%
+\setlength\paperheight{246mm}%
+
+\setlength\typeheight{56\baselineskip}
+\setlength\typewidth{177mm}
+%
+\setlength\textheight{47\baselineskip}%
+\addtolength\textheight{-5.1\p@}%
+\setlength\textwidth{33.8pc}
+%\addtolength\textwidth{2\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {21.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+%\addtolength\topmargin{4\p@}%
+\setlength\oddsidemargin{40.5\p@}%
+\setlength\evensidemargin{40.5\p@}%
+
+\setlength\footskip{22\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+%\setlength{\skip\footins}{22pt plus2pt minus2pt}%
+
+\setlength\parindent{15pt}% \z@
+
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+\renewcommand\baselinestretch{}
+\parskip=0pt%
+\newskip\abs@coli@hsize\abs@coli@hsize11pc%
+\newskip\abs@colii@hsize\abs@colii@hsize21.7pc%
+
+\RequirePackage[paperwidth=171mm,
+    paperheight=246mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+ %   text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\if@LATOLargeTwoCol%
+\setlength\paperwidth{210mm}%
+\setlength\paperheight{276mm}%
+
+\setlength\typeheight{62\baselineskip}
+\setlength\textheight{53\baselineskip}%
+\addtolength\textheight{-6.9\p@}%
+
+\setlength\typewidth{177.8mm}
+\setlength\textwidth{177.8mm}
+
+%%\addtolength\textwidth{1.8\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {15.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+\addtolength\topmargin{5\p@}%
+\setlength\oddsidemargin{45\p@}%
+\setlength\evensidemargin{45\p@}%
+
+\setlength\footskip{51\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+%\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+\setlength{\skip\footins}{18pt plus2pt minus2pt}%
+
+
+\newskip\abs@coli@hsize\abs@coli@hsize12pc%
+\newskip\abs@colii@hsize\abs@colii@hsize29pc%
+
+\RequirePackage[paperwidth=210mm,
+    paperheight=276mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+ %   text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,twocolumn,columnsep=1pc,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\if@LATOLargeOneCol%
+\setlength\paperwidth{210mm}%
+\setlength\paperheight{276mm}%
+
+\setlength\typeheight{62\baselineskip}
+\setlength\textheight{53\baselineskip}%
+\addtolength\textheight{-6.9\p@}%
+
+\setlength\typewidth{177.8mm}
+\setlength\textwidth{177.8mm}
+
+%%\addtolength\textwidth{1.8\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {15.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+\addtolength\topmargin{5\p@}%
+\setlength\oddsidemargin{45\p@}%
+\setlength\evensidemargin{45\p@}%
+
+\setlength\footskip{51\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+%\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+\setlength{\skip\footins}{18pt plus2pt minus2pt}%
+
+\newskip\abs@coli@hsize\abs@coli@hsize12pc%
+\newskip\abs@colii@hsize\abs@colii@hsize29pc%
+
+
+\RequirePackage[paperwidth=210mm,
+    paperheight=276mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+   % text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\if@LATOSmall%
+\setlength\paperwidth{171mm}%
+\setlength\paperheight{246mm}%
+
+\setlength\typeheight{56\baselineskip}
+\setlength\typewidth{177mm}
+%
+\setlength\textheight{47\baselineskip}%
+\addtolength\textheight{-5.1\p@}%
+\setlength\textwidth{33.8pc}
+%\addtolength\textwidth{2\p@}
+\setlength\normaltextheight{\textheight}
+%
+\setlength\headheight{12.5\p@}%
+\setlength\headsep   {21.2pt}%
+\setlength\topskip   {6\p@}%
+\setlength\splittopskip   {\topskip}
+%
+\setlength\columnsep{1pc}%
+\addtolength\columnsep{6\p@}%
+\setlength\columnseprule{0\p@}
+%
+\newdimen\columnhsizevalue%
+\columnhsizevalue=\textwidth%
+\advance\columnhsizevalue by -\columnsep%
+\divide\columnhsizevalue by 2%
+%
+\setlength\topmargin{2pc}%
+%\addtolength\topmargin{4\p@}%
+\setlength\oddsidemargin{40.5\p@}%
+\setlength\evensidemargin{40.5\p@}%
+
+\setlength\footskip{22\p@}
+\setlength\maxdepth{4\p@}
+
+\setlength{\marginparsep}{18\p@}%
+\setlength{\marginparwidth}{5mm}%
+
+\setlength\footnotesep{5.75\p@}
+\setlength{\skip\footins}{12pt plus2pt minus2pt}%
+%\setlength{\skip\footins}{22pt plus2pt minus2pt}%
+
+\setlength\parindent{15pt}% \z@
+
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+\renewcommand\baselinestretch{}
+\parskip=0pt%
+
+\newskip\abs@coli@hsize\abs@coli@hsize11pc%
+\newskip\abs@colii@hsize\abs@colii@hsize21.7pc%
+
+\RequirePackage[paperwidth=171mm,
+    paperheight=246mm,
+%%  top={26pt+21pt+11pt},
+    top={25.5pt+21pt+11pt},
+    headheight={21pt},% incl. rule
+    headsep={11pt},
+    left={\oddsidemargin},
+    right={\evensidemargin},
+ %   text={176.5mm,666.5pt}, %%(60 x 11 + 9 (point size) = 669pt)
+    marginparsep=0pt,
+    columnsep=0pt,
+    marginparwidth=0pc,
+    bindingoffset=0mm,
+    footskip=48.5pt,
+    bottom={10.5pt+48.5pt},
+    centering]{geometry}
+\else%
+\fi\fi\fi\fi\fi\fi%
+
+
+%
+\newdimen\parindentvalue%
+\parindentvalue=1em%
+%
+\setlength\parindent{\parindentvalue}%
+%
+\ifpdf%
+    \global\@cropmarksonfalse%
+\else%
+    \if@cropmarkson%
+        \RequirePackage{crop}%
+        \if@croppage%
+            \CROP@size{\paperwidth}{\paperheight}%
+        \fi%
+    \fi%
+\fi%
+
+%
+% Footnotes
+%
+%%\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+
+
+%
+
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% Pagination Settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Line spacing
+\setlength\lineskip{0\p@}%
+\setlength\normallineskip{0\p@}%
+\renewcommand\baselinestretch{}%
+\parskip=\z@%
+
+\pagenumbering{arabic}%
+\sloppy%
+\frenchspacing%
+%%\flushbottom
+
+%%% special parameters for TeX
+\adjdemerits=100
+\linepenalty=100
+
+
+% Page break penalties
+\@lowpenalty   51
+\@medpenalty  151
+\@highpenalty 301
+
+% Disallow widows and orphans
+\clubpenalty 10000
+\widowpenalty 10000
+
+% Disable page breaks before equations, allow pagebreaks after
+% equations and discourage widow lines before equations.
+\displaywidowpenalty 100
+\predisplaypenalty   10000
+\postdisplaypenalty  0
+
+% Set these global demerits
+\doublehyphendemerits 1000000% corresponds to badness 800
+\finalhyphendemerits  1000000% corresponds to badness 1000
+
+% Allow loose lines rather than overfull lines
+\vbadness=9999%
+\tolerance=9999%
+
+
+% Allow breaking the page in the middle of a paragraph
+\interlinepenalty 0%
+
+% Disallow breaking the page after a hyphenated line
+\brokenpenalty 10000%
+
+% Hyphenation; don't split words into less than three characters
+\lefthyphenmin=3%
+\righthyphenmin=3%
+
+% Float placement parameters
+
+% The total number of floats that can be allowed on a page.
+\setcounter{totalnumber}{10}%
+
+% The maximum number of floats at the top and bottom of a page.
+\setcounter{topnumber}{3}%
+\setcounter{bottomnumber}{3}%
+
+% The maximum part of the top or bottom of a text page that can be
+% occupied by floats. This is set so that at least four lines of text
+% fit on the page.
+\renewcommand\topfraction{.921}%
+\renewcommand\bottomfraction{.921}%
+
+% The minimum amount of a text page that must be occupied by text.
+% This should accomodate four lines of text.
+%%\renewcommand\textfraction{.13}%
+\renewcommand\textfraction{.1}%
+
+% The minimum amount of a float page that must be occupied by floats.
+%%\renewcommand\floatpagefraction{.887}%
+\renewcommand\floatpagefraction{.95}%
+
+% The same parameters repeated for double column output
+%%\renewcommand\dbltopfraction{.88}%
+%%\renewcommand\dblfloatpagefraction{.88}%
+\renewcommand\dbltopfraction{.95}%
+\renewcommand\dblfloatpagefraction{.95}%
+
+% Space between floats
+\setlength\floatsep{24\p@ \@plus 2.875\p@ \@minus 1.4375\p@}%
+
+% Space between floats and text
+\setlength\textfloatsep{24\p@ \@plus 2.875\p@ \@minus 1.4375\p@}%
+%
+%%\def\resettextfloatsep{\makeatletter\setlength\textfloatsep{13.5\p@ \@plus 2.875\p@ \@minus 1.4375\p@}\makeatother}%
+%
+% Space above and below an inline figure
+\setlength\intextsep{24\p@ \@plus 2.875\p@ \@minus 1.4375\p@}%
+
+% For double column floats
+\setlength\dblfloatsep{24\p@ \@plus 2.875\p@ \@minus 1.4375\p@}%
+\setlength\dbltextfloatsep{24\p@ \@plus 2.875\p@ \@minus 1.4375\p@}%
+
+\hyphenation{Figure Figures Table Tables Equation Equations Section Sections Appendix Theorem Lemma Proposition Corollary}% 
+\hyphenation{Claim Conjecture Property Remark Problem Example Definition Algorithm Assumption Axiom Case Hypotheses Note Proof}% 
+
+%%% miscellaneous macros %%%
+\def\zz#1{\vphantom{#1}}%
+\def\nobreaktie{\penalty\@M\hbox{\ }} % tie
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Draftrules %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%% To print grid lines on all pages
+\newdimen\pageheight\global\pageheight=\textheight%
+\newcount\rulecount\rulecount=1%
+%
+\newdimen\leftcolrulepos
+\newdimen\rightcolrulepos
+%
+\edef\slugtoday{\two@digits{\the\day}/\two@digits{\the\month}/\the\year}%
+%
+\def\PrintGridLines{%
+{\color{black!10}%
+    {%
+    \loop%
+    \ifdim\pageheight>0pt%
+        \ifnum\rulecount=1%
+            \advance\pageheight by -1.5pt%
+        \fi%
+        \AtTextUpperLeft{%x
+          \put(0,\LenToUnit{-\pageheight}){%
+            \line(1,0){\LenToUnit{\leftcolrulepos}}}}%
+%%14Mar16%%
+        \AtTextUpperLeft{%
+        \put(\LenToUnit{\rightcolrulepos},\LenToUnit{-\pageheight}){%
+           \line(1,0){\LenToUnit{\leftcolrulepos}}}}%
+        \advance\pageheight-11.5pt%baseline
+        \advance\rulecount\@ne%
+    \repeat%
+}}}%
+%
+\RequirePackage{showframe}
+\if@draftruleson%
+%
+\renewcommand\ShowFramePicture{%
+\leftcolrulepos\columnwidth%
+\rightcolrulepos\columnwidth%
+\advance\rightcolrulepos by \columnsep%
+  \begingroup
+    \normalcolor\thinlines%
+    \put(0,0){
+%    \if@watermarkon\AtTextUpperLeft{%
+%      \put(\LenToUnit{\textwidth},41){\llap{\fontsize{8}{10}\selectfont {\rm JrnlID\ \@JrnlID\_ArtID \@artid\_Proof\#1 - \slugtoday}}}}\fi%
+    \AtTextLowerLeft{%
+      \framebox(\LenToUnit{\textwidth},\LenToUnit{\textheight}){}}%
+      \linethickness{.1pt}%
+      \PrintGridLines%
+    \AtTextLowerLeft{%
+      \put(0,\LenToUnit{-\footskip}){%
+        \line(1,0){\LenToUnit{\textwidth}}}}%
+        \AtTextLowerLeft{%
+          \put(\LenToUnit{\columnwidth},0){%
+            \line(0,1){\LenToUnit{\textheight}}}}%
+            %%For marginpar
+%%14Mar16%%
+        \AtTextLowerLeft{%
+          \put(\LenToUnit{\rightcolrulepos},0){%
+            \line(0,1){\LenToUnit{\textheight}}}}%
+    \AtTextLowerLeft{%
+      \@tempdima=\textwidth\advance\@tempdima\marginparsep%
+      \if@twoside%
+        \ifodd\c@page
+          \if@mparswitch
+            \@tempdima=-\marginparsep\advance\@tempdima-\marginparwidth%
+          \fi
+        \else%
+          \@mparswitchfalse
+          \if@mparswitch
+            \@tempdima=-\marginparsep\advance\@tempdima-\marginparwidth%
+          \fi
+        \fi%
+      \fi%
+    }}%
+  \endgroup
+}%
+\else
+\renewcommand\ShowFramePicture{%
+\leftcolrulepos\columnwidth%
+\rightcolrulepos\columnwidth%
+\advance\rightcolrulepos by \columnsep%
+  \begingroup
+    \normalcolor\thinlines%
+    \put(0,0){
+%    \if@watermarkon\AtTextUpperLeft{%
+%      \put(\LenToUnit{\textwidth},41){\llap{\fontsize{8}{10}\selectfont {\rm JrnlID\ \@JrnlID\_ArtID \@artid\_Proof\#1 - \slugtoday}}}}\fi%
+    }%
+  \endgroup
+}%
+\fi%
+
+%% Miscellaneous macros %%
+
+\newdimen\artopleftskipdim%
+\artopleftskipdim=36.25pt%
+
+\def\hb{\hfill\break}%
+\def\uns{\ifmmode\,\else$\,$\fi}%
+\def\raggedcenter{\leftskip=0pt plus 0.5fil\rightskip=0pt plus 0.5fil\parfillskip=0pt}%
+\def\artopraggedright{\leftskip=\artopleftskipdim\rightskip=0pt plus 1fil\parfillskip=0pt\relax}%
+
+%% Metadata Info %%
+
+\def\@artid{xx}% pub-id
+\def\@jname{xxx}%
+\def\@jvol{\emph{xxx}}%
+\def\@eissn{xx}%
+\def\@pissn{xx}%
+%%\def\@copyyear{xxxx}%
+\def\copyyr{xxxx}%
+\def\@jnlyear{xxxx}%
+\def\@doi{}%
+\def\@pubname{ }%
+\def\@arteditor{}%
+
+\def\artid#1{\gdef\@artid{#1}}%
+\def\@jid{}%
+\def\jid#1{\gdef\@jid{#1}}%
+\def\jname#1{\gdef\@jname{#1}}%
+\def\jvol#1{\gdef\@jvol{#1}}%
+\def\eissn#1{\gdef\@eissn{#1}}%
+\def\pissn#1{\gdef\@pissn{#1}}%
+\def\copyyear#1{\gdef\copyyr{#1}}%
+\def\jyear#1{%%\gdef\copyyear{#1}
+\gdef\@jnlyear{#1}}%
+\def\doi#1{\gdef\@doi{#1}}%
+\def\pubname#1{\gdef\@pubname{#1}}%
+%%\def\arteditor#1{\gdef\@arteditor{\acadeditorfont Academic Editor:\ #1}}%
+%%\def\aceditor#1{\gdef\@arteditor{\acadeditorfont Academic Editor:\ #1}}%
+
+\def\jmonth#1{\gdef\@jmonth{#1}}%
+
+
+\def\@copyeditor{}%
+\def\copyeditor#1{\gdef\@copyeditor{#1}}%
+
+\def\orcid[#1]#2#3{}%
+\newcommand{\orgdiv}[1]{#1}%
+\newcommand{\orgname}[1]{#1}%
+\newcommand{\orgaddress}[1]{#1}%
+\newcommand{\street}[1]{#1}%
+\newcommand{\postcode}[1]{#1}%
+\newcommand{\city}[1]{#1}%
+\newcommand{\state}[1]{#1}%
+\newcommand{\country}[1]{#1}%
+
+%%\def\PI#1{{#1}}%
+%%\def\licenseVal#1{}%
+
+\def\@copyname{}%
+\newcommand\copyrightinfo[2][]{\if!#2!\gdef\@copyname{}\else\gdef\@copyname{\copyrightfont#2\ \@licenseVal}\fi}%
+
+%% Macros for firstpage %%
+
+\def\startpage#1{%
+  \gdef\temp{#1}%
+  \ifx\temp\@empty%
+    \def\@firstpage{1}%
+  \else%
+    \def\@firstpage{#1}%
+    \setcounter{page}{#1}%
+    \setcounter{spagecounter}{#1}%
+  \fi%
+}%
+\def\@firstpage{}
+
+\def\endpage#1{\gdef\@endpage{#1}}
+\def\@endpage{}
+
+%
+%% Cross Link for Author & Address
+%
+\def\jmkLabel#1{\@bsphack\protected@write\@auxout{}{\string\Newlabel{#1}{\@currentlabel}}\@esphack}%
+\def\Newlabel#1#2{\expandafter\xdef\csname X@#1\endcsname{#2}}%
+\def\jmkRef#1{\@ifundefined{X@#1}{0}{\csname X@#1\endcsname}}%
+
+%
+%%%%%%%%%%%%%%%%%% Updation for xml conversion
+%
+\gdef\@FirstPg{}%
+\gdef\@LastPg{}%
+%
+\def\FirstPg#1{\if!#1!\else\gdef\@FirstPg{#1}\fi}%
+\def\LastPg#1{\if!#1!\else\gdef\@LastPg{#1}\fi}%
+
+%\newcount\LastAQCnt%
+
+\newwrite\@xmlpage
+\openout\@xmlpage=\jobname.pag
+\newcounter{spagecounter}
+\newcounter{lpagecounter}
+%%\AtBeginDocument{\setcounter{spagecounter}{\c@page}}
+\AtEndDocument{\setcounter{lpagecounter}{\c@page}%
+\addtocounter{lpagecounter}{-1}%
+\immediate\write\@xmlpage{\string\FirstPg{\thespagecounter}\string\LastPg{\thelpagecounter}}%
+\immediate\write\@auxout{\string\FirstPg{\thespagecounter}\string\LastPg{\thelpagecounter}}%
+\immediate\closeout\@xmlpage%
+}%
+
+%% Fonts definitions %%
+
+\if@font@stix%
+  \def\footnotetextfont{\rmfamily\fontsize{8bp}{10bp}\selectfont}\else%
+  %%
+  \def\footnotetextfont{\rmfamily\fontsize{6bp}{8bp}\selectfont}
+\fi%
+%
+
+
+%\usepackage{microtype}
+%\DisableLigatures[f]{encoding = *, family = * }
+
+\newcommand{\sbdefault}{sb}
+\DeclareRobustCommand\sbseries{\not@math@alphabet\sbseries\mathbf\fontseries\sbdefault\selectfont}
+\DeclareTextFontCommand{\textsb}{\sbseries}
+\DeclareRobustCommand\sfitseries{\not@math@alphabet\sfitseries\normalfont\fontseries{m}\fontshape{it}\selectfont}
+\DeclareTextFontCommand{\textsfi}{\sfitseries}
+\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@exactptsize%
+  \def\set@fontsize#1#2#3{%
+    \@defaultunits\@tempdimb#2bp\relax\@nnil%
+    \edef\f@size{\strip@pt\@tempdimb}%
+    \@defaultunits\@tempskipa#3bp\relax\@nnil%
+    \edef\f@baselineskip{\the\@tempskipa}%
+    \edef\f@linespread{#1}%
+    \let\baselinestretch\f@linespread%
+    \def\size@update{%
+      \baselineskip\f@baselineskip\relax%
+      \baselineskip\f@linespread\baselineskip%
+      \normalbaselineskip\baselineskip%
+      \setbox\strutbox\hbox{\vrule\@height.7\baselineskip\@depth.3\baselineskip\@width\z@}%
+      \let\size@update\relax%
+    }%
+  }%
+\fi%
+\renewcommand\normalsize{%
+  \if@font@stix%
+    \@setfontsize\normalsize{10bp}{13bp}%
+  \else%
+    \@setfontsize\normalsize{8bp}{13bp}%
+  \fi%
+  \abovedisplayskip 5.5\p@ \@plus2\p@ \@minus0\p@
+  \abovedisplayshortskip \z@ \@plus3\p@%
+  \belowdisplayshortskip 3\p@ \@plus3\p@ \@minus3\p@%
+  \belowdisplayskip \abovedisplayskip%
+  \let\@listi\@listI}%
+\newcommand{\textbaselineskip}{\baselineskip13bp}%
+\normalsize\baselineskip13bp%
+\newcommand\medsize{%
+  \@setfontsize\small\@viipt{9}%
+  \abovedisplayskip 5\p@ \@plus3\p@ \@minus4\p@
+  \abovedisplayshortskip \z@ \@plus2\p@
+  \belowdisplayshortskip 3\p@ \@plus2\p@ \@minus2\p@
+  \def\@listi{%
+    \leftmargin\leftmargini
+    \topsep 4\p@ \@plus2\p@ \@minus2\p@
+    \parsep 2\p@ \@plus\p@ \@minus\p@
+    \itemsep \parsep}%
+  \belowdisplayskip\abovedisplayskip}
+\renewcommand\small{%
+  \@setfontsize\small\@vpt{7}%
+  \abovedisplayskip 5\p@ \@plus3\p@ \@minus4\p@
+  \abovedisplayshortskip \z@ \@plus2\p@
+  \belowdisplayshortskip 3\p@ \@plus2\p@ \@minus2\p@
+  \def\@listi{%
+    \leftmargin\leftmargini
+    \topsep 4\p@ \@plus2\p@ \@minus2\p@
+    \parsep 2\p@ \@plus\p@ \@minus\p@
+    \itemsep \parsep}%
+  \belowdisplayskip \abovedisplayskip}
+\renewcommand\footnotesize{%
+  \@setfontsize\footnotesize{7.5}{9}%
+  \abovedisplayskip 5\p@ \@plus2\p@ \@minus4\p@
+  \abovedisplayshortskip \z@ \@plus\p@
+  \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+  \def\@listi{%
+    \leftmargin\leftmargini
+    \topsep 3\p@ \@plus\p@ \@minus\p@
+    \parsep 2\p@ \@plus\p@ \@minus\p@
+    \itemsep \parsep}%
+  \belowdisplayskip \abovedisplayskip}
+\renewcommand\scriptsize{\@setfontsize\scriptsize\@ixpt\@ixpt}
+\newcommand\scrisize{\@setfontsize\scrisize{9.3}{9}}
+\renewcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\renewcommand\large{\@setfontsize\large{12}{14}}
+\newcommand\larg{\@setfontsize\larg{11}{13}}
+\renewcommand\Large{\@setfontsize\Large{16}{18}}
+\newcommand\fpe{\@setfontsize\fpe{19}{21}}
+\renewcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\newcommand\rke{\@setfontsize\rke{10}{10}}
+\newcommand\ke{\@setfontsize\ke{9}{10}}
+\newcommand\lke{\@setfontsize\lke{8.4}{8.25}}
+\newcommand\ffe{\@setfontsize\ffe{9}{12}}
+\newcommand\adf{\@setfontsize\adf{10.3}{12}}
+\newcommand\kes{\@setfontsize\kes{8}{9.5}}
+\newcommand\bis{\@setfontsize\bis{9}{10}}
+\newcommand\tdf{\@setfontsize\tdf{14}{16}}
+\newcommand\svo{\@setfontsize\svo{14.5}{16}}
+\renewcommand\huge{\@setfontsize\huge\@xxpt{25}}
+\renewcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
+%
+%\DeclareMathSizes{24bp}{24}{16.06}{10}%
+%\DeclareMathSizes{15bp}{15}{10}{5}%
+%\DeclareMathSizes{9bp}{9}{6.02}{5.5}
+%\DeclareMathSizes{8bp}{8}{5.35}{4.1}%
+%\DeclareMathSizes{7.5bp}{7.5}{5.35}{4.1}%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FONT DECLARATION Ends %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FONTS / COLOR DECLARATION Starts %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+\def\dummyalphabet{\vphantom{abcdefghijklmnopqrstuvwxyz0123456789}}
+%
+\sodef\letterspacetwty{}{.2em}{.4em plus1em}{.5em plus 1em minus1em }
+%
+\definecolor{Black}{gray}{0}
+\definecolor{White}{cmyk}{0.0,0.0,0.0,0.0}
+\definecolor{Tcolor}{cmyk}{1,0.8,0.0,0.0}%
+\definecolor{Jcolor}{cmyk}{0.0,0.85,1,0.0}%
+\definecolor{rgray}{cmyk}{0.0,0.0,0.0,0.4}%
+\definecolor{lightgray}{cmyk}{0.0,0.0,0.0,0.2}
+\definecolor{Blue}{cmyk}{1,0.77,0.0,0.0}
+%
+\gdef\@stix@font@defn{%
+  %
+%  \def\infoboxfont{\fontfamily{tim}\fontsize{8}{8}\selectfont}%
+  %
+%  \def\watermarkfont{\reset@font\fontfamily{\ffdefault}\fontsize{45}{45}\bfseries\selectfont}
+  %
+  \def\pagenumfont{\rmfamily\fontsize{7}{9}\bfseries\selectfont}%
+  \def\cnmpagenumfont{\rmfamily\fontsize{7}{9}\selectfont\bfseries}%
+%%%  \def\runningheadfont{\rmfamily\fontsize{7}{9}\scshape\selectfont}%
+  \def\runningheadfont{\rmfamily\fontsize{7}{9}\selectfont}%New updations 19aug2016
+  \def\runningfootfont{\rmfamily\fontsize{7}{9}\selectfont}%
+  \def\titlepageheadfont{\rmfamily\fontsize{7}{9}\selectfont}%
+  %
+  \def\BRarttypefont{\reset@font\rmfamily\fontsize{18}{18}\fontseries{b}\selectfont}%
+  \def\pubheadfont{\reset@font\rmfamily\fontsize{7}{9}\fontseries{b}\selectfont}%
+  \def\arttypefont{\rmfamily\fontsize{9}{9}\fontseries{b}\selectfont}%
+  \def\SParttypefont{\rmfamily\fontsize{9}{12}\fontseries{b}\selectfont}%
+  \def\titlefont{\rmfamily\fontsize{18}{23}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\subtitlefont{\rmfamily\fontsize{16}{21}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\Authorfont{\rmfamily\fontsize{12}{18}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\absheadfont{\hsize\abs@colii@hsize\rmfamily\fontsize{10}{10}\fontseries{b}\selectfont\bfseries\leftskip7\p@\rightskip\leftskip}% LN20FEB2016
+  \def\legalstatementfont{\rmfamily\fontsize{7}{10}\selectfont\leftskip0\p@\rightskip\leftskip}%
+    \def\BRsectionfont{\rmfamily\fontsize{10}{16}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\sectionfont{\rmfamily\fontsize{12}{13}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\subsectionfont{\rmfamily\fontsize{12}{13}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\subsubsectionfont{\rmfamily\fontsize{12}{13}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\paragraphfont{\rmfamily\fontsize{10.5}{13}\fontseries{b}\selectfont}%
+  \def\subparagraphfont{\rmfamily\fontsize{10}{13}\fontseries{b}\selectfont}%
+  \def\appsectionfont{\rmfamily\fontsize{10}{13}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  %
+  \def\boxheadfont{\rmfamily\fontsize{10}{13}\fontseries{b}\selectfont}
+  \def\boxtitlefont{\rmfamily\fontsize{10}{13}\bfseries\selectfont}
+  %
+  \def\GnSabsfont{\rmfamily\fontsize{9}{15}\selectfont}%
+  \def\GnSabsfootfont{\reset@font\rmfamily\fontsize{14}{0}\bfseries\selectfont}%
+  %
+  \def\suppinfofont{\noindent\rmfamily}%
+  \def\suppinfoheadfont{\noindent\fontsize{10}{13}\fontseries{b}\selectfont}%
+  \def\suppinfocaptionfont{\noindent\rmfamily}%
+  %
+  \def\figurenumfont{\rmfamily\fontsize{9bp}{12}\fontseries{b}\selectfont}%
+  \def\figurecaptionfont{\rmfamily\fontsize{8.5bp}{12}\selectfont}
+  \def\bwfiginfofont{\fontfamily{tim}\fontsize{10bp}{10bp}\selectfont}%
+  %
+  \def\tablenumfont{\rmfamily\fontsize{9bp}{11.5bp}\fontseries{b}\selectfont}%
+  \def\keypointheadfont{\reset@font\rmfamily\fontsize{10bp}{13bp}\fontseries{b}\selectfont}%
+  \def\tablecaptionfont{\rmfamily\fontsize{8.5bp}{12bp}\selectfont}
+  \def\tablebodyfont{\rmfamily\fontsize{8.5bp}{11.5bp}\selectfont}
+  \def\tablecolheadfont{\rmfamily\fontsize{8.5bp}{11.5bp}\selectfont\bfseries}
+  \def\tablefootnotefont{\rmfamily\fontsize{7.5bp}{10.5bp}\selectfont}
+  %
+%%  \def\footnotetextfont{\rmfamily\fontsize{8bp}{10bp}\selectfont}
+  %
+  \def\listfont{\normalsize}%
+  %
+  \def\refheadfont{\fontsize{10}{13}\fontseries{b}\selectfont}
+  \def\reflistfont{\fontsize{8.5}{11.5}\selectfont}
+  %
+  \def\biographyheadfont{\fontsize{10}{13}\fontseries{b}\selectfont}
+  %
+  \def\ackheadfont{\fontsize{10}{13}\selectfont\fontseries{b}\selectfont}
+  \def\addressfont{\hsize\abs@coli@hsize\rmfamily\fontsize{8}{11}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\corresfont{\hsize\abs@coli@hsize\rmfamily\fontsize{8}{11}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\FIfont{\hsize\abs@coli@hsize\rmfamily\fontsize{8}{11}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\JELfont{\hsize\abs@coli@hsize\rmfamily\fontsize{8}{11}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\keywordsheadfont{\hsize\abs@colii@hsize\rmfamily\fontsize{8}{8}\selectfont\ifAbstractexist\leftskip7\p@\rightskip\leftskip\fi}%
+  \def\abstractfont{\hsize\abs@colii@hsize\rmfamily\fontsize{10}{15}\selectfont\leftskip7\p@\rightskip\leftskip}%
+  \def\keywordsfont{\rmfamily\fontsize{8}{13}\selectfont\ifAbstractexist\leftskip7\p@\rightskip\leftskip\fi}%
+  %
+}%
+\gdef\@lato@font@defn{%
+  %
+%  \def\infoboxfont{\fontfamily{tim}\fontsize{8}{8}\selectfont}%
+  %
+%  \def\watermarkfont{\reset@font\fontfamily{\ffdefault}\fontsize{45}{45}\bfseries\selectfont}
+  %
+  \def\pagenumfont{\rmfamily\fontsize{7}{9}\bfseries\selectfont}%
+  \def\cnmpagenumfont{\rmfamily\fontsize{7}{9}\selectfont\bfseries}%
+%%%  \def\runningheadfont{\rmfamily\fontsize{7}{9}\scshape\selectfont}%
+  \def\runningheadfont{\rmfamily\fontsize{7}{9}\selectfont}%New updations 19aug2016
+  \def\runningfootfont{\rmfamily\fontsize{7}{9}\selectfont}%
+  \def\titlepageheadfont{\rmfamily\fontsize{7}{9}\selectfont}%
+  %
+  \def\BRarttypefont{\reset@font\rmfamily\fontsize{18}{18}\fontseries{b}\selectfont}%
+  \def\pubheadfont{\reset@font\rmfamily\fontsize{7}{9}\fontseries{b}\selectfont}%
+  \def\arttypefont{\rmfamily\fontsize{9}{9}\fontseries{b}\selectfont}%
+  \def\SParttypefont{\rmfamily\fontsize{9}{12}\fontseries{b}\selectfont}%
+  \def\titlefont{\rmfamily\fontsize{18}{23}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil\let\mathbcal\titmathbcal}%
+  \def\subtitlefont{\rmfamily\fontsize{16}{21}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\Authorfont{\rmfamily\fontsize{12}{18}\selectfont\bfseries\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\addressfont{\hsize\abs@coli@hsize\rmfamily\fontsize{7}{10}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\corresfont{\hsize\abs@coli@hsize\rmfamily\fontsize{7}{10}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  %
+  \def\FIfont{\hsize\abs@coli@hsize\rmfamily\fontsize{7}{10}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\JELfont{\hsize\abs@coli@hsize\rmfamily\fontsize{7}{10}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\abstractfont{\hsize\abs@colii@hsize\rmfamily\fontsize{8}{13}\selectfont\leftskip7\p@\rightskip\leftskip}%
+  \def\keywordsheadfont{\hsize\abs@colii@hsize\rmfamily\fontsize{7}{7}\selectfont\ifAbstractexist\leftskip7\p@\rightskip\leftskip\fi}%
+  \def\absheadfont{\hsize\abs@colii@hsize\rmfamily\fontsize{10}{10}\fontseries{b}\selectfont\bfseries\leftskip7\p@\rightskip\leftskip}% LN20FEB2016
+  \def\keywordsfont{\rmfamily\fontsize{8}{13}\selectfont\ifAbstractexist\leftskip7\p@\rightskip\leftskip\fi}%
+  \def\legalstatementfont{\rmfamily\fontsize{7}{10}\selectfont\leftskip0\p@\rightskip\leftskip}%
+  %
+  \def\BRsectionfont{\rmfamily\fontsize{10}{16}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\sectionfont{\rmfamily\fontsize{10}{13}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\subsectionfont{\rmfamily\fontsize{10}{14}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\subsubsectionfont{\rmfamily\fontsize{9}{12.5}\bfseries\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  \def\paragraphfont{\rmfamily\fontsize{8.5}{13}\fontseries{b}\selectfont}%
+  \def\subparagraphfont{\rmfamily\fontsize{8.5}{13}\fontseries{b}\selectfont}%
+  \def\appsectionfont{\rmfamily\fontsize{8}{11}\fontseries{b}\selectfont\leftskip\z@\rightskip\z@ plus1fil}%
+  %
+  \def\boxheadfont{\rmfamily\fontsize{8}{10}\fontseries{b}\selectfont}
+  \def\boxtitlefont{\rmfamily\fontsize{8}{10}\bfseries\selectfont}
+  %
+  \def\GnSabsfont{\rmfamily\fontsize{9}{15}\selectfont}%
+  \def\GnSabsfootfont{\reset@font\rmfamily\fontsize{14}{0}\bfseries\selectfont}%
+  %
+  \def\suppinfofont{\noindent\rmfamily}%
+  \def\suppinfoheadfont{\noindent\fontsize{8}{13}\fontseries{b}\selectfont}%
+  \def\suppinfocaptionfont{\noindent\rmfamily}%
+  %
+  \def\figurenumfont{\rmfamily\fontsize{7bp}{9}\fontseries{b}\selectfont}%
+  \def\figurecaptionfont{\rmfamily\fontsize{8bp}{11}\selectfont}
+  \def\bwfiginfofont{\fontfamily{tim}\fontsize{10bp}{10bp}\selectfont}%
+  %
+  \def\tablenumfont{\rmfamily\fontsize{7bp}{9bp}\fontseries{b}\selectfont}%
+  \def\keypointheadfont{\reset@font\rmfamily\fontsize{9bp}{11bp}\fontseries{b}\selectfont}%
+  \def\tablecaptionfont{\rmfamily\fontsize{8bp}{9bp}\selectfont}
+  \def\tablebodyfont{\rmfamily\fontsize{7.5bp}{9bp}\selectfont}
+  \def\tablecolheadfont{\rmfamily\fontsize{7.5bp}{9bp}\selectfont\bfseries}
+  \def\tablefootnotefont{\rmfamily\fontsize{7.5bp}{9bp}\selectfont}
+  %
+%%  \def\footnotetextfont{\rmfamily\fontsize{8bp}{10bp}\selectfont}
+  %
+  \def\listfont{\normalsize}%
+  %
+  \def\refheadfont{\fontsize{8}{10}\fontseries{b}\selectfont}
+  \def\reflistfont{\fontsize{7.5}{10}\selectfont}
+  %
+  \def\biographyheadfont{\fontsize{8}{10}\fontseries{b}\selectfont}
+  %
+  \def\ackheadfont{\fontsize{8}{9}\selectfont\fontseries{b}\selectfont}
+  %
+}%
+%%
+\gdef\largedesign@lato@font{\@lato@font@defn}%
+%%
+\gdef\largedesign@stix@font{\@stix@font@defn%
+}%
+%%
+\gdef\smalldesign@lato@font{\@lato@font@defn}%
+%%
+\gdef\smalldesign@stix@font{\@stix@font@defn}%
+
+
+\if@large@design%
+  \if@font@stix%
+    \largedesign@stix@font%
+  \else%
+    \largedesign@lato@font%
+  \fi%
+\else%
+  \if@font@stix%
+    \smalldesign@stix@font%
+  \else%
+    \smalldesign@lato@font%
+  \fi%
+\fi%
+%
+\def\listfont{\reset@font\fontfamily{\rmdefault}\normalsize}%
+\def\tablistfont{\tablebodyfont}% 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% article front matter elements %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% article opening Running headers %%
+
+\def\artoprunningheaders{\vbox{\OPRHfont\raggedright%
+\@pubname\par%
+\@jname\par%
+Volume\ \@jvol, Article ID\ \@artid, \thepage~pages\par%
+%%\if@hyperrefon\urlstyle{same}\burlalt{http://dx.doi.org/\@doi}{http://dx.doi.org/\@doi}\else{http://dx.doi.org/\@doi}\fi% this line is not required in the output
+}}
+
+\def\nullartoprunningheaders{\vbox{\OPRHfont\raggedright%
+\phantom{\@pubname}\par%
+\phantom{\@jname}\par%
+\phantom{Volume\ \@jvol, Article ID\ \@artid, \thepage pages}\par%
+%%\if@hyperrefon\urlstyle{same}\burlalt{http://dx.doi.org/\@doi}{http://dx.doi.org/\@doi}\else{http://dx.doi.org/\@doi}\fi%
+}}
+
+%% article category %%
+
+\def\@DocHead{}%
+\def\articletype#1{\gdef\@DocHead{\hsize=\textwidth\arttypefont\bfseries\uline{\uppercase{#1}}}}%
+
+%% article title %%
+
+\def\titlemark#1{\gdef\@titlemark{#1}}%
+\gdef\@titlemark{}%
+
+%%\def\titlefootnotemark#1{\textsuperscript{\hbox{\reset@font\fontsize{12.5}{0}\selectfont$\@fnsymbol{#1}$}}}%
+\def\titlefootnotemark#1{\textsuperscript{$\@fnsymbol{#1}$}}%
+
+\def\title#1{\gdef\@title{\hsize=\textwidth%
+\titlefont#1\addcontentsline{toc}{chapter}{#1}% for bookmarks
+}}%
+\def\shrttitle#1{\gdef\@shrttitle{#1}}\shrttitle{}%
+
+%% article authors %%
+
+\let\sep\@empty%
+\let\authorsep\@empty%
+\let\emailsep\@empty%
+
+\newcount\aucount%
+\newcount\corrauthcount%
+
+%%\def\au@and{\unskip\advance\punctcount by -1, }%
+\def\au@and{\ifnum\punctcount=1\else\ifnum\punctcount=2\ and\advance\punctcount by -1\else\advance\punctcount by -1 \fi \fi}%
+\def\artauthors{}
+
+\newif\if@auemail%
+
+\newcommand{\thecorrauthcount}{\the\corrauthcount}%
+\newcommand{\theaucount}{\the\aucount}%
+\newcommand{\thefnmCnt}{\the\fnmCnt}%
+
+\newcount\authfncnt%
+\authfncnt=0%
+
+\newcount\authfnTmpCnt%
+\authfnTmpCnt=1%
+%
+\gdef\StoreAuthFnText#1#2{%
+\edef\GetRoman{\romannumeral#1}%
+\expandafter\gdef\csname\GetRoman StoreAuthFnTxt\endcsname{#2}%
+}%
+%
+\def\authfndefns{%
+\loop\ifnum\authfncnt>0%
+   \csname\romannumeral\authfnTmpCnt StoreAuthFnTxt\endcsname\par%
+   \StepDownCounter{\authfncnt}%
+   \StepUpCounter{\authfnTmpCnt}%
+\repeat}%
+
+
+\def\author{\advance\aucount\@ne%
+%%\let\footnotetext\authfootnotetext%
+\@ifstar\@@corrauthor\@@author}%
+
+\newcommand{\@@corrauthor}[2][]{\g@addto@macro\artauthors{\undefined%
+\renewcommand{\email}[1]{}%
+\hsize=\textwidth\raggedright%
+\global\advance\aucount\@ne%%
+\global\advance\corrauthcount\@ne%%
+\def\@currentlabel{#2}
+\jmkLabel{corrauth\thecorrauthcount}%
+\Authorfont%
+\def\baselinestretch{1}%
+\authorsep{#2\ifnum\aucount=2\else\ifnum\punctcount=2,\else\ifnum\punctcount=1\relax\else\ifnum\punctcount=0\relax\else,\fi\fi\fi\fi}%
+\unskip\ifx#1\empty\else\textsuperscript{\smash{{%
+\@for\@@affmark:=#1\do{\edef\affnum{\@ifundefined{X@\@@affmark}{1}{\jmkRef{\@@affmark}}}%
+\unskip\sep\affnum\let\sep=,}}}}\fi%
+\def\authorsep{\au@and~}%
+\global\let\sep\@empty%
+}}%
+
+\newcommand\fnm[1]{{\StepUpCounter{\fnmCnt}#1\addtocontents{aq}{\protect{\bfseries Author\ \thefnmCnt}\hfill\protect\break Given Names: #1\hfill\protect\break}}}%
+\newcommand\sur[1]{{#1\addtocontents{aq}{Last Name: #1\protect\par}}}%
+
+\newbox\aufootnotemark%
+
+\newbox\authmarkbox%
+\newif\ifGApresent%
+
+\def\@filtername#1#2\@nil{#1.\ }%
+\def\filtername#1 #2\@nil{%
+\@filtername#1\@nil #2}%
+\newcommand{\@@author}[2][]{%
+\def\temp{#1}\g@addto@macro\artauthors{%
+\def\footnotemark##1{%
+\affilmarkdefns%
+\global\setbox\authmarkbox\hbox{\reset@font\fontfamily{\rmdefault}\fontsize{8.75pt}{0}\selectfont{##1}}}%
+\ifnum\aucount=1%
+    \global\@auemailtrue%
+    \else%
+    \global\@auemailfalse%
+    \fi%
+    \Authorfont%\baselineskip=12pt%
+    \def\baselinestretch{1}%
+   \authorsep{#2}\unskip\ifx\temp\@empty%
+      \@ifundefined{Xname@0}%
+        {\expandafter\xdef\csname Xname@0\endcsname{\filtername#2\@nil}}%
+        {\expandafter\protected@xdef\csname Xname@0\endcsname%
+             {\csname Xname@0\endcsname,\ \filtername#2\@nil}}%
+   \else%
+   \textsuperscript{\smash{{%
+      \@for\@@affmark:=#1\do{\edef\affnum{\@ifundefined{X@\@@affmark}{1}{\jmkRef{\@@affmark}}}%
+      \@ifundefined{Xname@\@@affmark}%
+        {\expandafter\xdef\csname Xname@\@@affmark\endcsname{\filtername#2\@nil}}%
+        {\expandafter\protected@xdef\csname Xname@\@@affmark\endcsname%
+             {\csname Xname@\@@affmark\endcsname,\ \filtername#2\@nil}}%
+     \unskip\sep\ifnum\addcount=1\else\affnum\fi\let\sep=,}}}\unhbox\authmarkbox}\fi%
+    \gdef\authorsep{\enspace|\enspace}%%% 
+    \global\let\sep\@empty\global\let\@corref\@empty%
+}}%
+
+%%\if@purexml\else%
+%
+\newcounter{affn}%
+\renewcommand\theaffn{\arabic{affn}}%
+%
+\def\jmkaddress{}%
+\def\miscjmkaddress{}%
+\def\addsep{\par\vskip0pt}%
+%
+\newcount\addcount% To check the count of address
+%
+\def\address{\advance\addcount\@ne\@ifstar\@@corraddress\@@address}%
+%
+\newcommand{\@@corraddress}[2][]{\gdef\@corresinfo{#2}}%
+%
+\newcommand{\@@address}[2][]{\def\temp{#1}%
+\g@addto@macro\jmkaddress{\hsize=\textwidth%
+\def\baselinestretch{1}%
+\stepcounter{affn}%
+\xdef\@currentlabel{\theaffn}%
+\jmkLabel{#1}%
+\addressfont\ifx#1\empty\else\@hangfrom{\textsuperscript{\smash{\theaffn}}}\fi%
+#2\vphantom{Thy}\par%
+}}%
+%%\fi%
+
+%% email details %%
+
+\newcount\emailcount%
+\newcount\punctcount%
+
+%\def\jmkemail{}%
+%\def\emailand{\ and\ }%
+%\def\@emailsep{\unskip\advance\emailcount by -1\emailand}%
+
+%\newcommand{\email}[1]{%%\global\advance\emailcount\@ne%
+%\let\emailcount\corrauthcount%
+%\g@addto@macro\jmkemail{%
+%\def\emailau{\jmkRef{corrauth\thecorrauthcount};}%
+%\emailsep{\emailau\ #1}\def\emailsep{\@emailsep}}}%
+
+\newcommand{\email}[1]{Email: #1}%
+
+%
+%% Correspondence details
+%
+
+%\def\corresinfotext{Correspondence should be addressed to }%
+%\newcommand{\corresinfo}{{\hsize=\textwidth\corresfont\corresinfotext\jmkemail\par}}%
+
+\gdef\@corresinfo{}%
+\def\corres#1{\gdef\@corresinfo{#1}}%
+
+\newcommand{\corresinfo}{{\corresfont\baselineskip11pt\textbf{Correspondence}\par \@corresinfo\par}}%
+
+\gdef\@presentaddress{}%
+\def\presentaddress#1{\gdef\@presentaddress{\hsize=\textwidth\corresfont\baselineskip11pt\textbf{Present Address}\par #1}}%
+
+%
+\def\received#1{\gdef\@received{Received #1;}}\gdef\@received{}%
+\def\revised#1{\gdef\@revised{Revised #1;}}\gdef\@revised{}%
+\def\accepted#1{\gdef\@accepted{Accepted #1}}\gdef\@accepted{}%
+\def\published#1{\gdef\@published{Published #1}}\gdef\@published{}%
+   \def\xmlreceived{\gdef\@received{\ifnum\artActypcnt=1\relax Received:\ref{MSSreceiveddate}\ReceivedMONTH\nobreakspace{}\kern.5pt\ReceivedYEAR,\else Received:\ref{MSSreceiveddate}\nobreakspace{}\kern.5pt\ReceivedDATE\nobreakspace{}\kern.5pt\ReceivedMONTH\nobreakspace{}\kern.5pt\ReceivedYEAR\fi}}\gdef\@received{}%
+   \def\xmlrevised{\gdef\@revised{Revised:\ref{MSSrevised}\nobreakspace{}\kern.5pt\RevisedDATE\nobreakspace{}\kern.5pt\RevisedMONTH\nobreakspace{}\kern.5pt\RevisedYEAR}}\gdef\@revised{}%
+   \def\xmlaccepted{\gdef\@accepted{\ifnum\artActypcnt=1\relax in final form\ref{ACCdate}\AccMONTH\nobreakspace{}\kern.5pt\AccYEAR\else Accepted:\ref{ACCdate}\nobreakspace{}\kern.5pt\AccDATE\nobreakspace{}\kern.5pt\AccMONTH\nobreakspace{}\kern.5pt\AccYEAR\fi}}\gdef\@accepted{}%
+   \def\xmlacceptedonline{\gdef\@acceptedonline{Accepted article online\ref{PUBaccptdate}\nobreakspace{}\kern.5pt\AccDATEi\nobreakspace{}\kern.5pt\AccMONTHi\nobreakspace{}\kern.5pt\AccYEARi}}\gdef\@acceptedonline{}%
+   \def\xmlpubdate{\gdef\@pubdate{Published on:\ref{PUBEVdate}\nobreakspace{}\kern.5pt\PubDATE\nobreakspace{}\kern.5pt\PubMONTH\nobreakspace{}\kern.5pt\PubYEAR}}\gdef\@pubdate{}%
+
+\newif\ifarticletype\global\articletypefalse
+
+\def\pagenumberalign#1{\hbox to 22.5\p@{#1}}%
+\def\rhvertbar{\smash{\raisebox{-2\p@}{\rule{.5\p@}{10\p@}}}}%
+\def\historydatesvertbar{\hspace*{7\p@}\smash{\raisebox{-4\p@}{\rule{.5\p@}{12\p@}}}\hspace*{7\p@}}%
+\def\foot@pagenumber@align#1{\hbox to 15.75\p@{#1}}%
+\def\foot@vertbar{\hspace*{7\p@}\smash{\raisebox{0\p@}{\rule{.5\p@}{9.25\p@}}}\hspace*{7\p@}}%
+\def\authorseprule#1{\gdef\author@seprule{\hspace*{7\p@}#1\hspace*{7\p@}}}\authorseprule{\smash{\raisebox{.1\p@}{\hbox{\rule{.5\p@}{8.5\p@}}}}}%
+%
+\def\thepagedef{{\pagenumfont\thepage}}%
+
+\def\headfootrule#1{\gdef\@headfootrule{#1}}\headfootrule{{\rule{\textwidth}{.5\p@}}}%
+
+\def\historykern#1{\gdef\history@kern{#1}}\historykern{\nobreakspace{}\kern.5pt}
+\def\@dummy@received{\textcolor{red}{Received:\history@kern{}00\history@kern{}Month\history@kern{}0000}}%
+\def\@dummy@revised{\textcolor{red}{Revised:\history@kern{}00\history@kern{}Month\history@kern{}0000}}%
+\def\@dummy@accepted{\textcolor{red}{Accepted:\history@kern{}00\history@kern{}Month\history@kern{}0000}}%
+\def\@dummy@pubdate{\textcolor{red}{Published\history@kern{}on:\history@kern{}00\history@kern{}Month\history@kern{}0000}}%
+\def\historydates#1{\gdef\@history@dates{#1}}%
+\historydates{{\titlepageheadfont%
+  \ifx\@received\@empty\@dummy@received\else\@received\fi\historydatesvertbar%
+  \ifx\@revised\@empty\@dummy@revised\else\@revised\fi\historydatesvertbar%
+  \ifx\@accepted\@empty\@dummy@accepted\else\@accepted\fi%\historydatesvertbar%
+%  \ifx\@pubdate\@empty\@dummy@pubdate\else\@pubdate\fi%
+}}%
+%
+\def\doiheadtext#1{\gdef\@DOI@text{#1}}\doiheadtext{DOI: xxx/xxxx\nobreakspace{}}%
+\def\head@titlepage@def#1#2{\vbox{%
+  \hbox to \textwidth{#1\dummyalphabet}\par\vspace*{2.5\p@}%
+  \@headfootrule\par\vspace*{9\p@}%
+  \smash{{\titlepageheadfont\@DOI@text#2}}\par\vspace*{9\p@}%
+  \vspace*{-2.5\p@}%
+%  \smash{\hbox to \textwidth{\hfill\rhlogo}}\par%
+}}%
+%
+\newskip\foot@titlepage@raise@skip\global\foot@titlepage@raise@skip23\p@%
+
+\def\oddhead@titlepage@info{\head@titlepage@def{\@history@dates\hfill}{\@doi}}%
+\def\evenhead@titlepage@info{\oddhead@titlepage@info}%
+%
+%\def\oddfoot@titlepage@info{\foot@titlepage@def{\runningfooter}}%
+%\def\evenfoot@titlepage@info{\oddfoot@titlepage@info}%
+%
+\def\ps@titlepage{%
+%  \def\@oddfoot{\oddfoot@titlepage@info}%
+ % \def\@evenfoot{\evenfoot@titlepage@info}%
+  \def\@oddhead{\oddhead@titlepage@info}%
+  \def\@evenhead{\evenhead@titlepage@info}%
+  \let\@mkboth\markboth%
+}%
+
+
+%% Abstract %%
+
+%% Article Abstract
+%% Author name in Running Head
+
+\newcount\lastauthorcnt
+
+\newif\if@suppimage \global\@suppimagefalse
+\newif\ifAbstractexist%
+\global\Abstractexistfalse%
+%% Article Abstract
+\renewcommand\abstract[2][]{\global\Abstractexisttrue%
+  \gdef\@abstract{%
+    \setlength{\parindent}{\z@}%
+    \vspace*{8.5\p@}%
+    \rightskip0pt\raggedright\hspace*{7\p@}\hbox{\reset@font\abstractfont{\absheadfont#1}}\par\vskip3pt% LN20feb2016
+    {\abstractfont\baselineskip15pt\ifFWabstract\hsize\textwidth\fi#2\par\vspace*{0\p@}}%
+    \addcontentsline{toc}{section}{\abstractname}%
+}}%\abstract{}%
+
+%% Correspondence
+\def\correspondencename{Correspondence}
+\def\correspondence#1{%
+  \gdef\@correspondence{%
+    \par\vspace*{3\p@}%
+    {\corresfont\correspondencename\par}%
+    {\corresfont#1\par}%
+  }%
+}\correspondence{}%
+
+%% Funding Information
+\def\fundingNumber#1{#1.}%
+\def\fundingAgency#1{#1,\space}%
+%
+\newcount\fundinginfocount\fundinginfocount0%
+\newcount\commafundinginfocount\commafundinginfocount0%
+\newcount\fundinginfotempcount\fundinginfotempcount0%
+\newcount\tempfundinginfocount\tempfundinginfocount0%
+%
+\def\fundingInfo#1{%
+  \expandafter\protected@xdef\csname fundinginfo\the\fundinginfocount\endcsname{#1}%
+  \global\advance\fundinginfocount1%
+}%
+%
+\def\fundinginfohead#1{\gdef\@fundinginfo@head{#1}}\fundinginfohead{Funding Information}%
+\def\fundinginfoheadtext#1{\gdef\@fundinginfo@head@text{#1}}\fundinginfoheadtext{This research was supported by the }%
+\gdef\@fundinginfo{{%
+  \reset@font\FIfont%
+  \ifnum\fundinginfocount<1\else%
+  \par\vspace*{3\p@}%
+  \@fundinginfo@head\par%
+  \@fundinginfo@head@text%
+  \global\tempfundinginfocount\fundinginfocount%
+  \global\advance\tempfundinginfocount-1%
+  \global\commafundinginfocount\tempfundinginfocount%
+  \global\advance\commafundinginfocount-1%
+  \ifnum\fundinginfocount=1%
+    \ignorespaces\csname fundinginfo0\endcsname%
+  \else%
+    \@whilenum\fundinginfotempcount<\tempfundinginfocount\do{%
+      \ignorespaces\csname fundinginfo\the\fundinginfotempcount\endcsname\ %
+      \global\advance\fundinginfotempcount1%
+    }%
+    \csname fundinginfo\the\fundinginfotempcount\endcsname\par%
+  \fi%
+  \fi%
+\vfill}}%
+
+%% JEL Classification
+\newcount\JELinfocount\JELinfocount0%
+\newcount\commaJELinfocount\commaJELinfocount0%
+\newcount\JELinfotempcount\JELinfotempcount0%
+\newcount\tempJELinfocount\tempJELinfocount0%
+%
+\def\JELinfo#1{%
+  \expandafter\protected@xdef\csname JELinfo\the\JELinfocount\endcsname{#1}%
+  \global\advance\JELinfocount1%
+}%
+%
+\def\JELinfohead#1{\gdef\@JELinfo@head{#1}}\JELinfohead{JEL Classification:\nobreakspace{}}%
+\gdef\@JELinfo{{%
+  \ifnum\JELinfocount<1\else%
+  \reset@font\JELfont%
+  \par\vspace*{3\p@}%
+  \@JELinfo@head%
+  \global\tempJELinfocount\JELinfocount%
+  \global\advance\tempJELinfocount-1%
+  \global\commaJELinfocount\tempJELinfocount%
+  \global\advance\commaJELinfocount-1%
+  \ifnum\JELinfocount=1%
+    \ignorespaces\csname JELinfo0\endcsname%
+  \else%
+    \@whilenum\JELinfotempcount<\tempJELinfocount\do{%
+      \ignorespaces\csname JELinfo\the\JELinfotempcount\endcsname\ %
+      \global\advance\JELinfotempcount1%
+    }%
+    \csname JELinfo\the\JELinfotempcount\endcsname\par\vspace*{-\baselineskip}%
+  \fi%
+  \fi%
+\vfill}}%
+
+%%
+\newbox\htftbox%
+\newdimen\ovsize%
+\newdimen\oovsize%
+\newdimen\FreePageSpace%
+\newdimen\FreePageSpaceTest%
+\newskip\fadjskip\fadjskip=0pt%
+\newskip\adjustskip\adjustskip=0pc%
+\newskip\titleskip%
+
+\gdef\ComputeFreeSpaceOnPage{%
+\par%
+\ifdim\pagetotal=0pt%
+   \global\FreePageSpace=\vsize%
+   \global\advance\FreePageSpace by -\adjustskip%
+\else%
+   \FreePageSpace=\pagegoal%
+  \ifvoid\footins%
+     \global\advance\FreePageSpace by -\pagetotal%
+     \global\advance\FreePageSpace by -\adjustskip%
+  \else%
+    \setbox3=\vbox{\unvbox\footins}%
+    \htftbox=\ht3%
+    \advance\htftbox by \dp3%
+    \global\advance\FreePageSpace by -\pagetotal%
+    \global\advance\FreePageSpace by -\htftbox%
+    \global\advance\FreePageSpace by -\adjustskip%
+  \fi%
+\fi%
+}%
+%%
+
+\definecolor{tenpercent}{cmyk}{0,0,0,0.10}
+\definecolor{thirtyfivepercent}{cmyk}{0,0,0,0.35}
+\definecolor{sixtyfivepercent}{cmyk}{0,0,0,0.65}
+\definecolor{seventyfivepercent}{cmyk}{0,0,0,0.75}
+%
+
+%\newskip\abs@coli@hsize\abs@coli@hsize12pc%
+%\newskip\abs@colii@hsize\abs@colii@hsize29pc%
+
+
+%
+\newbox\abs@boxa%
+\newbox\abs@boxb%
+\newbox\abs@boxc%
+%
+\newdimen\abs@dima%
+\newdimen\abs@dimb%
+\newdimen\abs@dimc%
+%
+\def\absCOvrule{\vrule width0.5pt}%
+\def\authCOvrule{{\color{tenpercent}\vrule width\abs@colii@hsize}}%
+
+\def\FWauthCOvrule{{\color{tenpercent}\vrule width\textwidth}}%
+
+%
+\long\def\absworkarea#1#2{%
+  \setbox\abs@boxa\vbox{\hsize\abs@coli@hsize#1\dummyalphabet}%
+  \abs@dima=\ht\abs@boxa%
+  \advance\abs@dima by \dp\abs@boxa%
+  \advance\abs@dima by -4.5\p@%
+  \setbox\abs@boxb\vbox{\hsize\abs@colii@hsize#2\dummyalphabet}%
+  \abs@dimb=\ht\abs@boxb%
+  \advance\abs@dimb by \dp\abs@boxb%
+  \ComputeFreeSpaceOnPage%
+  \stripsep\z@%
+  \ifdim\abs@dimb>\FreePageSpace%
+    \setbox8=\vbox{\unvbox\abs@boxb}%
+    \advance\FreePageSpace by -\@firstpage@foot@height%
+    %\advance\FreePageSpace by \baselineskip%
+    \setbox1=\vsplit8 to \FreePageSpace%
+    \setbox1=\vbox{\unvbox1}%
+    \setbox2=\vbox{\unvbox8}%
+    \ifdim\abs@dima>\FreePageSpace%
+      \setbox7=\vbox{\unvbox\abs@boxa}%
+      %\advance\FreePageSpace by -\@firstpage@foot@height%
+      %\advance\FreePageSpace by \baselineskip%
+      \setbox3=\vsplit7 to \FreePageSpace%
+      \setbox3=\vbox{\unvbox3}%
+      \setbox4=\vbox{\unvbox7}%
+    \fi%
+    \gdef\abs@dimchk{\ifdim\ht3>\ht1\ht3\else\ht1\fi}%
+    \parbox{\textwidth}{%
+      \begin{minipage}[t]{\abs@coli@hsize}%
+      \leavevmode\vbox to \abs@dimchk{\ifdim\abs@dima>\FreePageSpace\copy3\else\unvbox\abs@boxa\fi\vfill}%
+      \end{minipage}\hfill%
+      \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+      \begin{minipage}[t]{\abs@colii@hsize}%
+      \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox1\vfill}%
+      \end{minipage}%
+      \vspace*{\@firstpage@foot@height}%
+    }%\end{strip}%
+    \clearpage%\vfill\eject%
+    \loop%
+    \ifdim\ht2>\textheight%
+    \ovsize=\vsize%
+    \setbox1=\vsplit2 to \ovsize%
+    \setbox1=\vbox{\unvbox1}%
+    \setbox3=\vsplit4 to \ovsize%
+    \setbox3=\vbox{\unvbox3}%
+    %\ifdim\ht4>\textheight%
+    %\oovsize=\vsize%
+    %\setbox3=\vsplit4 to \oovsize%
+    %\setbox3=\vbox{\unvbox3}%
+     \parbox{\textwidth}{%
+      \begin{minipage}[t]{\abs@coli@hsize}%
+      \leavevmode\vbox{\unvbox3\vfill}%
+      \end{minipage}\hfill%
+      \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+      \begin{minipage}[t]{\abs@colii@hsize}%
+      \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox1\vspace*{7\p@}}%
+      \end{minipage}%
+   }%
+    \clearpage%
+    \repeat%
+    \gdef\abs@dimchk{\ifdim\ht4>\ht2\ht4\else\ht2\fi}%
+     \parbox{\textwidth}{%
+      \begin{minipage}[t]{\abs@coli@hsize}%
+      \leavevmode\vbox to \abs@dimchk{\copy4\vfill}%
+      \end{minipage}
+      \hfill%
+      \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+      \begin{minipage}[t]{\abs@colii@hsize}%
+      \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox2\vfill}%
+      \end{minipage}%
+      \vspace*{2pc}%
+      \vskip\titleskip%
+    }%
+  \else%
+    \ifdim\abs@dima>\FreePageSpace%
+      \setbox8=\vbox{\unvbox\abs@boxa}%
+      \advance\FreePageSpace by -\@firstpage@foot@height%
+      %\advance\FreePageSpace by \baselineskip%
+      \setbox1=\vsplit8 to \FreePageSpace%
+      \setbox1=\vbox{\unvbox1}%
+      \setbox2=\vbox{\unvbox8}%
+       \parbox{\textwidth}{%%
+        \begin{minipage}[t]{\abs@coli@hsize}%
+        \leavevmode\vbox{\copy1\vfill}%
+        \end{minipage}\hfill%
+        \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\abs@colii@hsize}%
+        \leavevmode\hspace*{-\textwidth}\vbox to \ht1{\unvbox\abs@boxb\vfill}%
+        \end{minipage}%
+        \vspace*{\@firstpage@foot@height}%
+      }%
+      \clearpage%\vfill\eject%
+      \loop\ifdim\ht2>\textheight%
+      \ovsize=\vsize%
+      \setbox1=\vsplit2 to \ovsize%
+      \setbox1=\vbox{\unvbox1}%
+       \parbox{\textwidth}{%%
+        \begin{minipage}[t]{\abs@coli@hsize}%
+        \leavevmode\vbox{\unvbox1\vfill}%
+        \end{minipage}\hfill%
+        \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\abs@colii@hsize}%
+        \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox1\vspace*{7\p@}}%
+        \end{minipage}%
+      }%
+      \clearpage%
+      \repeat%
+       \parbox{\textwidth}{%
+        \begin{minipage}[t]{\abs@coli@hsize}%
+        \leavevmode\vbox{\unvbox2\vfill}%
+        \end{minipage}
+        \hfill%
+        \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\abs@colii@hsize}%
+        \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox2\vspace*{-7\p@}}%
+        \end{minipage}%
+        \vspace*{2pc}%
+        \vskip\titleskip%
+      }%
+    \else%
+      \gdef\abs@dimchk{\ifdim\abs@dima>\abs@dimb\abs@dima\else\abs@dimb\fi}%
+       \parbox{\textwidth}{%%
+        \begin{minipage}[t]{\abs@coli@hsize}%
+        \leavevmode\vbox to \abs@dimchk{\copy\abs@boxa\vfill}%
+        \end{minipage}\hfill%
+        \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\abs@colii@hsize}%
+        \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox\abs@boxb\vfill}%
+        \end{minipage}%
+        \vspace*{2pc}%
+        \vskip\titleskip%
+      }%
+    \fi%
+  \fi%
+%%%  \ifx\@titlenotes\@empty\else\global\thankstrue\footnotetext{\@titlenotes\par\vspace*{-\baselineskip}}\fi%
+}%
+
+\long\def\FWabsworkarea#1#2{%
+%  \setbox\abs@boxa\vbox{\hsize\abs@coli@hsize#1\dummyalphabet}%
+%  \abs@dima=\ht\abs@boxa%
+%  \advance\abs@dima by \dp\abs@boxa%
+%  \advance\abs@dima by -4.5\p@%
+  \setbox\abs@boxb\vbox{\hsize\textwidth#2\dummyalphabet}%
+  \abs@dimb=\ht\abs@boxb%
+  \advance\abs@dimb by \dp\abs@boxb%
+  \ComputeFreeSpaceOnPage%
+  \stripsep\z@%
+  %\ifx\@titlenotes\@empty\else\footnotetext{\textsuperscript{1}\@titlenotes\par\vspace*{-2\baselineskip}}\par\vspace*{-2\baselineskip}\fi%
+%%  \ifx\@fundinginfo\@empty\else\footnotetext{\textsuperscript{1}\@fundinginfo\par\vspace*{-2\baselineskip}}\par\vspace*{-2\baselineskip}\fi%
+  \ifdim\abs@dimb>\FreePageSpace%
+    \setbox8=\vbox{\unvbox\abs@boxb}%
+    \advance\FreePageSpace by -\@firstpage@foot@height%
+    %\advance\FreePageSpace by \baselineskip%
+    \setbox1=\vsplit8 to \FreePageSpace%
+    \setbox1=\vbox{\unvbox1}%
+    \setbox2=\vbox{\unvbox8}%
+    \ifdim\abs@dima>\FreePageSpace%
+%      \setbox7=\vbox{\unvbox\abs@boxa}%
+      %\advance\FreePageSpace by -\@firstpage@foot@height%
+      %\advance\FreePageSpace by \baselineskip%
+      \setbox3=\vsplit7 to \FreePageSpace%
+      \setbox3=\vbox{\unvbox3}%
+      \setbox4=\vbox{\unvbox7}%
+    \fi%
+    \gdef\abs@dimchk{\ifdim\ht3>\ht1\ht3\else\ht1\fi}%
+   \parbox{\textwidth}{%
+%      \begin{minipage}[t]{\abs@coli@hsize}%
+%      \leavevmode\vbox to \abs@dimchk{\ifdim\abs@dima>\FreePageSpace\copy3\else\unvbox\abs@boxa\fi\vfill}%
+%      \end{minipage}\hfill%
+\FWauthCOvrule %     \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+      \begin{minipage}[t]{\textwidth}%
+      \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox1\vfill}%
+      \end{minipage}%
+      \vspace*{\@firstpage@foot@height}%
+   }% \end{strip}%
+    \vfill\eject%
+    \loop%
+    \ifdim\ht2>\textheight%
+    \ovsize=\vsize%
+    \setbox1=\vsplit2 to \ovsize%
+    \setbox1=\vbox{\unvbox1}%
+    \setbox3=\vsplit4 to \ovsize%
+    \setbox3=\vbox{\unvbox3}%
+    %\ifdim\ht4>\textheight%
+    %\oovsize=\vsize%
+    %\setbox3=\vsplit4 to \oovsize%
+    %\setbox3=\vbox{\unvbox3}%
+    \parbox{\textwidth}{%\begin{strip}%
+    %  \begin{minipage}[t]{\abs@coli@hsize}%
+     % \leavevmode\vbox{\unvbox3\vfill}%
+     % \end{minipage}\hfill%
+      \FWauthCOvrule%
+      \begin{minipage}[t]{\textwidth}%
+      \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox1\vspace*{7\p@}}%
+      \end{minipage}%
+    }%\end{strip}%
+    \clearpage%
+    \repeat%
+    \gdef\abs@dimchk{\ifdim\ht4>\ht2\ht4\else\ht2\fi}%
+    \parbox{\textwidth}{%\begin{strip}
+     % \begin{minipage}[t]{\abs@coli@hsize}%
+     % \leavevmode\vbox to \abs@dimchk{\copy4\vfill}%
+     % \end{minipage}
+     % \hfill%
+     \FWauthCOvrule% \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+      \begin{minipage}[t]{\textwidth}%
+      \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox2\vfill}%
+      \end{minipage}%
+      \vspace*{2pc}%
+      \vskip\titleskip%
+    }%\end{strip}
+  \else%
+    \ifdim\abs@dima>\FreePageSpace%
+%      \setbox8=\vbox{\unvbox\abs@boxa}%
+      \advance\FreePageSpace by -\@firstpage@foot@height%
+      %\advance\FreePageSpace by \baselineskip%
+%      \setbox1=\vsplit8 to \FreePageSpace%
+    %  \setbox1=\vbox{\unvbox1}%
+%      \setbox2=\vbox{\unvbox8}%
+      \parbox{\textwidth}{%\begin{strip}%
+%        \begin{minipage}[t]{\abs@coli@hsize}%
+ %       \leavevmode\vbox{\copy1\vfill}%
+  %      \end{minipage}\hfill%
+   %     \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\textwidth}%
+        \leavevmode\hspace*{-\textwidth}\vbox to \ht1{\unvbox\abs@boxb\vfill}%
+        \end{minipage}%
+        \vspace*{\@firstpage@foot@height}%
+      }%\end{strip}%
+      \vfill\eject%
+      \loop\ifdim\ht2>\textheight%
+      \ovsize=\vsize%
+      \setbox1=\vsplit2 to \ovsize%
+      \setbox1=\vbox{\unvbox1}%
+      \parbox{\textwidth}{%\begin{strip}%
+%        \begin{minipage}[t]{\abs@coli@hsize}%
+ %       \leavevmode\vbox{\unvbox1\vfill}%
+  %      \end{minipage}\hfill%
+   \FWauthCOvrule%     \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\textwidth}%
+        \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox1\vspace*{7\p@}}%
+        \end{minipage}%
+      }%\end{strip}%
+      \clearpage%
+      \repeat%
+      \parbox{\textwidth}{%\begin{strip}
+   %     \begin{minipage}[t]{\abs@coli@hsize}%
+   %     \leavevmode\vbox{\unvbox2\vfill}%
+   %     \end{minipage}
+   %     \hfill%
+   \FWauthCOvrule%     \hspace*{7\p@}\absCOvrule\hspace*{7\p@}\authCOvrule%
+        \begin{minipage}[t]{\textwidth}%
+        \leavevmode\hspace*{-\textwidth}\vbox{\vspace*{7\p@}\unvbox2\vspace*{-7\p@}}%
+        \end{minipage}%
+        \vspace*{2pc}%
+        \vskip\titleskip%
+      }%\end{strip}
+    \else%
+      \gdef\abs@dimchk{\ifdim\abs@dima>\abs@dimb\abs@dima\else\abs@dimb\fi}%
+     \parbox{\textwidth}{%\begin{strip}%
+       % \begin{minipage}[t]{\abs@coli@hsize}%
+       % \leavevmode\vbox to \abs@dimchk{\copy\abs@boxa\vfill}%
+       % \end{minipage}\hfill%
+        \FWauthCOvrule%
+        \begin{minipage}[t]{\textwidth}%
+        \leavevmode\hspace*{-\textwidth}\vbox to \abs@dimchk{\unvbox\abs@boxb\vfill}%
+        \end{minipage}%
+        \vspace*{2pc}%
+        \vskip\titleskip%
+      }%\end{strip}%
+    \fi%
+  \fi%
+  \ifx\@titlenotes\@empty\else\global\thankstrue\footnotetext{\@titlenotes\par\vspace*{-\baselineskip}}\fi%
+}%
+
+
+\newif\ifabstract\global\abstractfalse%
+\newif\ifFWabstract%
+%
+\gdef\printabstractpart{%
+  \absworkarea{%
+    \noindent{\reset@font\addressfont\jmkaddress\par}%\movedauaddress\@movedauaddress%\@corres%
+   % \noindent\ifx\movedauaddress\@empty\else{\addressfont\@movedauaddress\par}\fi%
+ \removelastskip\vskip8pt%
+   \ifx\@corresinfo\empty\else{\corresinfo\par}\fi%
+   \removelastskip\vskip8pt%
+   \ifx\@presentaddress\empty\else\@presentaddress\fi%
+   \removelastskip\vskip8pt%
+    \ifx\@fundinginfo\@empty\else\par\@fundinginfo\fi%
+    \ifx\@JELinfo\@empty\else\par\@JELinfo\fi%
+  }{%
+    \global\abstracttrue%
+    \ifx\@abstract\@empty\else\@abstract\fi%
+\removelastskip\vskip15pt%
+    \ifx\@keywords\@empty\else\@keywords\fi%
+    \global\abstractfalse%
+  }
+}
+
+%% Printing Abstract
+%% Printing Abstract
+\long\def\printabstract{%
+  \bgroup%
+    \setlength{\parindent}{\z@}%
+    \printabstractpart%
+  \egroup%
+}%
+
+%% Legal Statement
+\def\legalstatement#1{%
+  \gdef\@temp{#1}%
+  \ifx\@temp\@empty%
+    \gdef\@legalstatement{}%
+  \else%
+    \gdef\@legalstatement{%
+      \smash{{\color{thirtyfivepercent}\@headfootrule}}\par\vspace*{-.45\baselineskip}%
+      \parbox[t]{\textwidth}{{\color{seventyfivepercent}\legalstatementfont#1\dummyalphabet\par}}\par\vspace*{4.75\p@}%
+    }%
+  \fi%
+}\legalstatement{}%
+
+
+%% Keywords %%
+
+\def\keywords#1{\def\@keywords{{\keywordsheadfont\textbf{KEYWORDS:}\par\removelastskip\nointerlineskip\vskip6pt \keywordsfont#1\par}}}\def\@keywords{}%
+
+\def\@fnsymbol#1{\ifcase#1\or \dagger\or \ddagger\or
+   \S\or \P\or \#\or \|\or **\or \dagger\dagger
+   \or \ddagger\ddagger\or \S\S\or \P\P\or \#\#\or \|\|\else\@ctrerr\fi\relax}
+
+\renewcommand{\maketitle}{\par%
+  \@afterindentfalse%
+  \begingroup
+    \renewcommand{\thefootnote}{\fnsymbol{footnote}}%
+    \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
+    \long\def\@makefntext##1{\parindent 1em\noindent
+            \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
+    \if@twocolumn
+      \ifnum \col@number=\@ne
+         \twocolumn[\@maketitle]%
+      \else
+         \twocolumn[\@maketitle]%
+      \fi
+    \else
+      \newpage
+      \global\@topnum\z@   % Prevents figures from going at top of page.
+      \@maketitle
+    \fi
+    \thispagestyle{titlepage}\@thanks%
+    \insert\footins{\authfndefns}\par%
+  \endgroup
+%  \let\footnotetext\oldfootnotetext%
+  \setcounter{footnote}{0}%
+  \let\thanks\relax
+  \let\maketitle\relax\let\@maketitle\relax
+  \gdef\@thanks{}\gdef\@author{}\gdef\@title{}
+  \@afterheading%
+}
+
+\newskip\adjtitleskip%
+
+\adjtitleskip=10pt plus4pt minus2pt
+
+\renewcommand{\@maketitle}{{\unskip%
+\hsize=\textwidth\parindent=0pt%
+\thispagestyle{empty}%
+%%\let\footnote\thanks%
+%\removelastskip\vskip-21.13pt%
+%\ifproof\artoprunningheaders\else\nullartoprunningheaders\fi\par%
+\removelastskip\vspace*{5pt}%
+\ifx\@DocHead\empty%
+  \zz{\@DocHead\par}%
+\else%
+  {\@DocHead\par}%
+\fi%
+\removelastskip\vskip4pt%
+\ifx\@title\empty\else{\@title\par}\fi%
+\removelastskip\vskip18pt%
+\ifnum\aucount>0%
+   \global\punctcount\aucount%
+   {\artauthors\par}%
+   \removelastskip\vskip8.25pt%
+%   {\jmkaddress\par}%
+\fi%
+ %  \removelastskip\vskip9pt%
+  % \ifx\@corresinfo\empty\else{\corresinfo\par}\fi%
+   %\removelastskip\vskip8pt%
+   %\ifx\@presentaddress\empty\else\@presentaddress\fi%
+   %\removelastskip\vskip8pt%
+   %{\history\par}%
+   %\removelastskip\vskip12pt%
+%   \ifx\@abstract\empty\else{\@abstract\par}\fi%
+   \removelastskip\vskip19pt%
+%   \ifx\@keywords\empty\else{\@keywords\par}\fi%
+   \printabstract
+%%   \vspace*{10pt plus4pt minus2pt}%
+   \removelastskip\vskip\adjtitleskip%
+}}%
+
+%\renewcommand\thefootnote{\@arabic\c@footnote}%
+
+%
+%%
+
+%%%%%%%%%%%%%%%%%%%%%%%section defn%%%%%%%%%%%%%%%%%%%%%%
+
+%\setcounter{secnumdepth}{3}
+\newcounter {chapter}[part]% for bookmarks
+\renewcommand\thepart         {\@Roman\c@part}
+\renewcommand\thesection      {\@arabic\c@section}
+\renewcommand\thesubsection   {\thesection.\@arabic\c@subsection}
+\renewcommand\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}
+\renewcommand\theparagraph    {\thesubsubsection.\@arabic\c@paragraph}
+\renewcommand\thesubparagraph {\theparagraph\@arabic\c@subparagraph}
+%%
+\renewcommand\part{\par
+   \addvspace{4ex}%
+   \@afterindentfalse
+   \secdef\@part\@spart}
+%%
+\def\@part[#1]#2{%
+    \ifnum \c@secnumdepth >\m@ne
+      \refstepcounter{part}%
+      \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+    \else
+      \addcontentsline{toc}{part}{#1}%
+    \fi
+    {\parindent \z@ \raggedright
+     \interlinepenalty \@M
+     \normalfont
+     \ifnum \c@secnumdepth >\m@ne
+       \Large\bfseries \partname~\thepart
+       \par\nobreak
+     \fi
+     \huge \bfseries #2%
+     \markboth{}{}\par}%
+    \nobreak
+    \vskip 3ex
+    \@afterheading}
+
+\def\@spart#1{%
+    {\parindent \z@ \raggedright
+     \interlinepenalty \@M
+     \normalfont
+     \huge \bfseries #1\par}%
+     \nobreak
+     \vskip 3ex
+     \@afterheading}
+
+\renewcommand\section{\@startsection{section}{1}{\z@}{-27pt \@plus -2pt \@minus -2pt}{12\p@}{\sectionfont}}%
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}{-23pt \@plus -2pt \@minus -2pt}{5\p@}{\subsectionfont}}%
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{-20pt \@plus -2pt \@minus -2pt}{2\p@}{\subsubsectionfont}}%
+%
+\newskip\secruleskip\secruleskip8.5\p@%
+%\def\secrule{\color{sixtyfivepercent}\hspace*{\secruleskip}\raisebox{0pt}{\rule{.5\p@}{7.5\p@}}\hspace*{\secruleskip}}%
+%\def\subsecrule{\color{sixtyfivepercent}\secrule}%
+%\def\subsubsecrule{\color{sixtyfivepercent}\hspace*{\secruleskip}\raisebox{0pt}{\rule{.5\p@}{6.5\p@}}\hspace*{\secruleskip}}%
+
+\def\secrule{\hspace*{\secruleskip}\raisebox{0pt}{\rule{.5\p@}{7.5\p@}}\hspace*{\secruleskip}}%
+\def\subsecrule{\secrule}%
+\def\subsubsecrule{\hspace*{\secruleskip}\raisebox{0pt}{\rule{.5\p@}{6.5\p@}}\hspace*{\secruleskip}}%
+
+
+\def\@sectioncntformat#1{{\ifappendixsec\csname the#1\endcsname\ \else\csname the#1\endcsname\secrule\fi}}%
+\def\@subsectioncntformat#1{{\ifappendixsec\csname the#1\endcsname\ \else\csname the#1\endcsname\subsecrule\fi}}%
+\def\@subsubsectioncntformat#1{{\ifappendixsec\csname the#1\endcsname\ \else\csname the#1\endcsname\subsubsecrule\fi}}%
+
+\def\@paragraphcntformat#1{{\ifappendixsec\csname the#1\endcsname\ \else\csname the#1\endcsname.\ \fi}}%
+\def\@subparagraphcntformat#1{#1}
+%
+\if@font@stix\relax%
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{-10pt \@plus -2pt \@minus -2pt}{2\p@}{\paragraphfont}}%
+\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}{-10pt \@plus -2pt \@minus -2pt}{-12\p@}{\subparagraphfont}}%
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+   \ifnum #2>\c@secnumdepth%
+      \edef\@svsec{\noindent}%
+   \else%
+      \refstepcounter{#1}%
+      \let\@@protect\protect%
+      \def\protect{\noexpand\protect\noexpand}%
+      \edef\@svsec{\csname @#1cntformat\endcsname{#1}}%
+      \let\protect\@@protect%
+   \fi%
+   \@tempskipa #5\relax%
+   \ifdim \@tempskipa>\z@%
+      \ifnum#2=1%
+         \begingroup #6\relax%\@hangfrom%
+            {\noindent\hskip #3\relax{\@svsec}}%
+            {\interlinepenalty\@M{\uppercase{#8}}\par}%
+         \endgroup%
+      \else%
+         \ifnum#2=2%
+            \begingroup #6\relax%\@hangfrom%
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M{#8}\par}%
+            \endgroup%
+         \else%
+      \ifnum#2=3%
+            \begingroup #6\relax%\@hangfrom%
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M{#8}\par}%
+            \endgroup%
+         \else%
+      \ifnum#2=4%
+            \begingroup #6\relax%\@hangfrom%
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M{\textcolor{black!75}{#8}}\par}%
+            \endgroup%
+         \else%
+            \begingroup #6\relax%\@hangfrom
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M#8\par}%
+            \endgroup%
+         \fi%
+     \fi%
+     \fi%
+      \fi%
+      \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 \textcolor{black!75}{#8}\hspace*{4pt}}%
+      }%
+   \fi%
+   \@xsect{#5}%
+}%
+\else%
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{-20pt \@plus -2pt \@minus -2pt}{2\p@}{\paragraphfont}}%
+\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}{-20pt \@plus -2pt \@minus -2pt}{-12\p@}{\subparagraphfont}}%
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+   \ifnum #2>\c@secnumdepth%
+      \edef\@svsec{\noindent}%
+   \else%
+      \refstepcounter{#1}%
+      \let\@@protect\protect%
+      \def\protect{\noexpand\protect\noexpand}%
+      \edef\@svsec{\csname @#1cntformat\endcsname{#1}}%
+      \let\protect\@@protect%
+   \fi%
+   \@tempskipa #5\relax%
+   \ifdim \@tempskipa>\z@%
+      \ifnum#2=1%
+         \begingroup #6\relax%\@hangfrom%
+            {\noindent\hskip #3\relax{\@svsec}}%
+            {\interlinepenalty\@M{\uppercase{#8}}\par}%
+         \endgroup%
+      \else%
+         \ifnum#2=2%
+            \begingroup #6\relax%\@hangfrom%
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M{#8}\par}%
+            \endgroup%
+         \else%
+            \begingroup #6\relax%\@hangfrom
+               {\noindent\hskip #3\relax\@svsec}%
+               {\interlinepenalty\@M{#8}\par}%
+            \endgroup%
+         \fi%
+      \fi%
+      \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 #8.\hspace*{6pt}}%
+      }%
+   \fi%
+   \@xsect{#5}%
+}%
+\fi%
+
+\def\@ssect#1#2#3#4#5#6{%
+   %#1#2#3#4#5#6
+   \@tempskipa #4\relax%
+   \ifdim\@tempskipa>\z@%
+      \ifnum#1=1%
+         \begingroup%
+            #5{\@hangfrom{\hskip #2}%
+            \interlinepenalty \@M\uppercase{#6}\@@par}%
+         \endgroup%
+         \addcontentsline{toc}{section}{#6}%
+      \else%
+         \begingroup%
+            #5{\@hangfrom{\hskip #2}%
+            \interlinepenalty \@M#6\@@par}%
+         \endgroup%
+      \fi%
+   \else%
+      \def\@svsechd{#5{\hskip #2\relax #6}}%
+   \fi%
+   \@xsect{#4}%
+}%
+%
+\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
+      %\ifnum#2=2%
+      %   \vspace*{-2.4\p@}%
+      %\fi%
+      \everypar{}%
+   \else%
+      \addpenalty\@secpenalty%
+      \addvspace\@tempskipa%
+   \fi%
+   \@ifstar%
+      {\@ssect{#2}{#3}{#4}{#5}{#6}}%
+      {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%% Regular pagestyle %%
+%
+
+\def\@authormark{}% 
+\def\authormark#1{%
+\markboth{{{#1}}}{{{#1}}}\gdef\@authormark{\def\etal{\textit{ET AL.}}\let\AQ\AHAQ#1}\gdef\@authormarkforcite{\undefined\def\etal{\textit{et al.}}#1}}%
+\def\etal{\textit{et al.}}%
+
+\newskip\rhverticalsep\rhverticalsep11.5\p@%
+\def\oddpage@headings@def{\hspace*{\rhverticalsep}\rhvertbar\pagenumberalign{\hss\thepagedef}}%
+\def\evenpage@headings@def{\pagenumberalign{\thepagedef\hss}\rhvertbar\hspace*{\rhverticalsep}}%
+
+\def\leftmarkdef{{\runningheadfont\@authormark}}%
+\def\rightmarkdef{{\runningheadfont\@authormark}}%
+%
+\def\headfootrule#1{\gdef\@headfootrule{#1}}\headfootrule{{\rule{\textwidth}{.5\p@}}}%
+%
+\def\head@headings@def#1{\vbox{%
+  \strut\par\vspace*{-5pt}%
+\vspace*{2\p@}%\fi%
+  \@headfootrule\par%\vspace*{-8.25\p@}%
+\vspace*{-11\p@}%\fi%
+  \hbox to \textwidth{#1\dummyalphabet}\par\vspace*{\p@}%
+  }%
+}%
+%
+
+\def\oddhead@headings@info{\head@headings@def{\rightmarkdef\hfill\oddpage@headings@def}}%
+\def\evenhead@headings@info{\head@headings@def{\evenpage@headings@def\hfill\leftmarkdef}}%
+
+\def\ps@headings{%
+\let\@oddfoot\@empty\let\@evenfoot\@empty%
+  \def\@oddhead{\oddhead@headings@info}%
+  \def\@evenhead{\evenhead@headings@info}%
+\let\@mkboth\markboth%
+}%
+\pagestyle{headings}%
+%
+
+%% Macros for Section headings %%
+
+\setcounter{secnumdepth}{3}% 
+%
+
+\newif\if@FTSection%
+\global\@FTSectionfalse%
+
+\newif\if@unnumsection%
+\@unnumsectionfalse%
+
+
+%% Macros for Bibliography %%
+
+%\newif\ifbackmatter\newcommand{\backmatter}{\par\global\backmattertrue}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+
+\if@Vancouverrefstyle%
+   \IfFileExists{NJDnatbib.sty}{\usepackage[numbers,super,sort&compress]{NJDnatbib}}{\usepackage[numbers,super,sort&compress]{natbib}}%
+   \bibliographystyle{WileyNJD-VANCOUVER}%
+   \bibpunct{}{}{, }{s}{}{}%
+\renewcommand\@biblabel[1]{#1.} 
+%   \renewcommand{\bibfont}{\reset@font\fontfamily{\rmdefault}\fontsize{8bp}{10}\selectfont\baselineskip=10\p@}%
+\else%
+\if@AMArefstyle%
+   \IfFileExists{NJDnatbib.sty}{\usepackage[numbers,super]{NJDnatbib}}{\usepackage[numbers,super]{natbib}}%
+   \bibliographystyle{WileyNJD-AMA}%
+\renewcommand\@biblabel[1]{#1.} 
+%   \bibpunct{(}{)}{,}{n}{}{}%
+%   \renewcommand{\bibfont}{\reset@font\fontfamily{\rmdefault}\fontsize{8bp}{10}\selectfont\baselineskip=10\p@}%
+\else%
+\if@Chemistryrefstyle%
+   \IfFileExists{NJDnatbib.sty}{\usepackage[numbers,super,sort&compress]{NJDnatbib}}{\usepackage[numbers,super,sort&compress]{natbib}}%
+   \bibliographystyle{WileyNJD-ACS}%
+   \bibpunct{[}{]}{,}{n}{}{}%
+\setcitestyle{super,open={[},close={]}}
+%%  \renewcommand{\bibfont}{\reset@font\fontfamily{\rmdefault}\fontsize{8bp}{10}\selectfont\baselineskip=10\p@}%
+\else%
+\if@AMSrefstyle%
+   \usepackage[numbers]{natbib}%
+   \bibliographystyle{WileyNJD-AMS}%
+   \bibpunct{(}{)}{,}{}{}{}%
+\setcitestyle{numbers,square}
+ %  \renewcommand{\bibfont}{\reset@font\fontfamily{\rmdefault}\fontsize{8bp}{10}\selectfont\baselineskip=10\p@}%
+\else%
+\if@APArefstyle
+   \usepackage[natbibapa]{NJDapacite}%
+   \bibliographystyle{WileyNJD-APA}%
+   \renewcommand{\APACrefbtitle}[2]{\textit{#2}}
+   \bibpunct{(}{)}{; }{}{}{}%
+   %%
+ %  \renewcommand{\bibfont}{\reset@font\fontfamily{\rmdefault}\fontsize{8bp}{10}\selectfont\baselineskip=10\p@}%
+   %%
+   \renewcommand{\APACrefnote}[1]{%
+     \ifx\@empty#1\@empty
+     \else
+       {#1.}%
+     \fi}%
+   %%
+   \renewcommand{\BTR}{}%%
+   \renewcommand{\BNUM}{}% number (of a technical report)
+   %%
+   \renewcommand{\APACjournalVolNumPages}[4]{%
+     \textit{#1}%             journal
+     \ifx\@empty#2\@empty
+     \else
+       \unskip, \textit{#2}%  volume
+     \fi
+     \ifx\@empty#3\@empty
+     \else
+       \unskip({#3})%      issue number
+     \fi
+     \ifx\@empty#4\@empty
+     \else
+       \unskip, {#4}%      pages
+     \fi}
+   %%
+\fi\fi\fi\fi\fi%
+
+
+%
+%% Macros for Scheme %%
+%
+\def\ftype@scheme{1}%
+\def\ext@scheme{los}%
+\def\fps@scheme{tbp}%
+\newcounter{scheme}%
+\setcounter{scheme}{0}%
+\renewcommand{\thescheme}{\@arabic\c@scheme}%
+\newenvironment{scheme}%
+               {\@float{scheme}}%
+               {\end@float}
+\newenvironment{scheme*}%
+               {\@dblfloat{scheme}}%
+               {\end@dblfloat}
+%
+%% Macros for display equations %%
+
+\let\SplitEq\relax%
+
+\setlength\arraycolsep{2\p@}%
+\setlength\tabcolsep{6\p@}%
+\setlength\arrayrulewidth{.4\p@}%
+\setlength\doublerulesep{4\p@}%
+\setlength\tabbingsep{\labelsep}%
+
+\def\eqnarray{%%\initialset%%%introduced on 31Oct15%
+   \stepcounter{equation}%
+   \def\@currentlabel{\p@equation\theequation}%
+   \global\@eqnswtrue
+   \m@th
+   \global\@eqcnt\z@
+   \tabskip\@centering%
+   \let\\\@eqncr
+   $$\everycr{}\halign to\displaywidth\bgroup
+       \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel% for centered equations
+%%     \hskip\z@skip\hfil$\displaystyle\tabskip\z@skip{##}$\@eqnsel% for left aligned equations
+      &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil
+      &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
+         $\displaystyle{##}$\hfil\tabskip\@centering
+      &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
+       \tabskip\z@skip
+      \cr
+}
+\def\endeqnarray{%
+      \@@eqncr
+      \egroup
+      \global\advance\c@equation\m@ne
+   $$\@ignoretrue
+}
+%
+
+%
+
+%% Macros for Tables %%
+
+\RequirePackage{booktabs}%
+
+%%%%table notes%%%%
+\newenvironment{tablenotes}{\list{}{\setlength{\labelsep}{0pt}% 
+\setlength{\labelwidth}{0pt}%
+\setlength{\leftmargin}{0pt}%
+\setlength{\rightmargin}{0pt}%
+\setlength{\topsep}{2pt}%
+\setlength{\itemsep}{0pt}%
+\setlength{\partopsep}{0pt}%
+\setlength{\listparindent}{0em}%
+\setlength{\parsep}{0pt}}%
+\item\relax%
+}{\endlist}%
+
+\def\tnote#1{#1}%%
+
+%
+
+%
+%\renewenvironment{sidewaystable*}
+%               {\@rotdblfloat{table}}
+%               {\thisfloatpagestyle{headings}\end@rotdblfloat}%
+
+%\renewenvironment{sidewaysfigure*}
+%               {\@rotdblfloat{figure}}
+%               {\thisfloatpagestyle{headings}\end@rotdblfloat}
+
+%% Macros for Quote %%
+
+\renewenvironment{quote}{\list{}{\setlength{\labelsep}{0pt}% 
+\setlength{\labelwidth}{0pt}%
+\setlength{\leftmargin}{\parindentvalue}%
+\setlength{\rightmargin}{\parindentvalue}%
+\setlength{\topsep}{12.5pt \@plus2pt \@minus1pt}% 
+\setlength{\itemsep}{0pt}%
+\setlength{\partopsep}{0pt}%
+\setlength{\listparindent}{0em}%
+\setlength{\parsep}{0pt}}%
+\def\rightline##1{\undefined\vspace*{6pt}\@@line{\hss##1}}%
+\item\relax%
+}{\endlist}%
+
+%%
+%%%% Enunciations: Theorem-like styles %%
+%%
+
+\let\iint\undefined%
+\let\iiint\undefined%
+\let\iiiint\undefined%
+\let\dddot\undefined%
+\let\ddddot\undefined%
+\let\overleftrightarrow\undefined%
+\let\underrightarrow\undefined%
+\let\underleftarrow\undefined%
+\let\underleftrightarrow\undefined%
+
+\RequirePackage[intlimits,sumlimits,namelimits,centertags]{amsmath}%
+
+\RequirePackage{amsthm}
+
+\newif\ifeproof%
+
+%%introduced to make number in italics
+%\def\thmhead@plain#1#2#3{%
+%  \thmname{#1}\ifeproof\else\thmnumber{\@ifnotempty{#1}{ }\textit{#2}}%
+%  \thmnote{ {\the\thm@notefont\textit{(#3)}}}\fi}
+
+%\newtheorem{theorem}{Theorem}
+%\newtheorem{lemma}{Lemma}
+%\newtheorem{proposition}{Proposition}
+%\newtheorem{definition}{Definition}
+%\newtheorem{corollary}{Corollary}
+%\newtheorem{conjecture}{Conjecture}
+%\newtheorem{eremark}{Remark}
+%\newtheorem{case}{Case}
+%\newtheorem{eexample}{Example}
+%\newtheorem{estep}{Step}
+%\newtheorem{eproof}{Proof}
+\def\thm@space@setup{%
+  \thm@preskip=7\p@ \thm@postskip=7\p@
+}
+\thm@headpunct{}
+
+\def\thmsep{9pt}%
+
+\newif\ifOldenunciation%
+\newif\ifEnunciation%
+
+\newtheoremstyle{plain}% Numbered
+{8pt}% Space above
+{8pt}% Space below
+{\normalfont}% Body font
+{}% Indent amount
+{\itshape}% Theorem head font
+{}% Punctuation after theorem head
+{\newline}% Space after theorem headi
+{}% Theorem head spec (can be left empty, meaning `normal')
+
+%\renewenvironment{proof}[1][\proofname]{\par%
+%\pushQED{\qed}%
+%  \pushQED{\fontsize{9}{0}\selectfont{\qed}}%
+%\pushQED{\hfill\fontsize{9}{0}\selectfont{$\square$}}%
+%  \normalfont \topsep8\p@\@plus6\p@\relax
+%  \noindent\ignorespaces{\itshape#1}\newline%\itshape
+%}{%
+%\popQED\endtrivlist\@endpefalse
+%}
+%
+
+\newtheoremstyle{WBstyleone}
+  {6\p@} % Space above
+  {6\p@} % Space below
+  {\normalfont} % Body font
+  {\z@} % Indent amount
+  {\bfseries} % Theorem head font
+  {.} % Punctuation after theorem head
+  {5\p@} % Space after theorem head
+  {} % Theorem head spec (can be left empty, meaning `normal')
+
+%\renewenvironment{proof}[1][\proofname]{\par%%%%%%%%%%%%%commented as per author request
+ % \pushQED{\qed}%
+%  \normalfont \topsep6\p@\@plus6\p@\relax
+%  \trivlist
+%  \item[\hskip\labelsep
+%      %  \itshape
+%    #1\@addpunct{.}]\ignorespaces\Enunciationtrue%
+%\itshape}{%\vspace*{-\baselineskip}%
+%  \popQED\endtrivlist\@endpefalse
+%}
+
+
+\newtheoremstyle{WBstyletwo}
+  {6\p@} % Space above
+  {6\p@} % Space below
+  {\normalfont} % Body font
+  {\z@} % Indent amount
+  {\itshape} % Theorem head font
+  {.} % Punctuation after theorem head
+  {5\p@} % Space after theorem head
+  {\thmname{#1}\thmnumber{ #2}\thmnote{. #3}} % Theorem head spec (can be left empty, meaning `normal')
+  
+\newtheoremstyle{WBstylethree}
+  {6\p@} % Space above
+  {6\p@} % Space below
+  {\normalfont} % Body font
+  {\z@} % Indent amount
+  {\bfseries} % Theorem head font
+  {.} % Punctuation after theorem head
+  {5\p@} % Space after theorem head
+  {} % Theorem head spec (can be left empty, meaning `normal')
+
+\theoremstyle{WBstyleone}
+\newtheorem{theorem}{Theorem}
+\newtheorem{construction}{Construction}
+\newtheorem{estimate}{Estimate}
+\newtheorem{lemma}{Lemma}
+\newtheorem{corollary}{Corollary}
+\newtheorem{result}{Result}
+\newtheorem{algth}{Algorithm}
+\newtheorem{proposition}{Proposition}
+\newtheorem{hypothesis}{Hypothesis}
+\newtheorem{experiment}{Experiment}
+\newtheorem{LWrule}{Rule}
+\newtheorem{procedure}{Procedure}
+
+\newtheorem{assertion}{Assertion}
+\newtheorem{axiom}{Axiom}
+\newtheorem{conjecture}{Conjecture}
+\newtheorem{criterion}{Criterion}
+\newtheorem{reduction}{Reduction}
+\newtheorem{sublemma}{Sublemma}
+
+
+\theoremstyle{WBstyletwo}
+\newtheorem{case}{Case}
+\newtheorem{remark}{Remark}
+\newtheorem{notation}{Notation}
+
+\newtheorem{answer}{Answer}
+\newtheorem{base}{Base}
+\newtheorem{claim}{Claim}
+\newtheorem{ccomment}{Comment}
+\newtheorem{subproof}{Subproof}
+\newtheorem{conclusion}{Conclusion}
+\newtheorem{observation}{Observation}
+\newtheorem{subcase}{Subcase}
+\newtheorem{step}{Step}
+\newtheorem{summary}{Summary}
+
+
+
+\theoremstyle{WBstylethree}
+\newtheorem{definition}{Definition}
+\newtheorem{condition}{Condition}
+\newtheorem{property}{Property}
+\newtheorem{problem}{Problem}
+\newtheorem{fact}{Fact}
+\newtheorem{assumption}{Assumption}
+\newtheorem{eexample}{Example}
+\newtheorem{model}{Model}
+
+\newtheorem{affirmation}{Affirmation}
+\newtheorem{application}{Application}
+\newtheorem{convention}{Convention}
+\newtheorem{discussion}{Discussion}
+\newtheorem{exercise}{Exercise}
+\newtheorem{question}{Question}
+\newtheorem{scholium}{Scholium}
+\newtheorem{terminology}{Terminology}
+
+%
+%% Macros for Appendix %%
+%
+\newif\ifappendixsec%
+
+\newcounter{printcitcnt}
+
+%\newcounter{appcnt}
+%\newcounter{appseccnt}
+%\newcounter{appsubseccnt}
+%\newcounter{appsubsubseccnt}
+
+%\def\sappendix{\global\appendixsectrue\printjnlcitation%
+%  \setcounter{figure}{0}%
+%  \setcounter{table}{0}%
+%  \setcounter{equation}{0}%
+%  \renewcommand\thesection{\protect\refstepcounter{appcnt}\protect\refstepcounter{appseccnt}APPENDIX\ \protect\Alph{appcnt}\protect\arabic{appseccnt}:}%
+%  \renewcommand\thesubsection{\protect\refstepcounter{appsubseccnt}\Alph{appseccnt}.\arabic{appsubseccnt}}%
+%  \renewcommand\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}%
+%  \renewcommand\thefigure{\@Alph\c@section\arabic{figure}\enspace }%
+%  \renewcommand\thetable{\@Alph\c@section\arabic{table}\enspace }%
+%  \renewcommand\theequation{\@Alph\c@section\arabic{equation}}%
+%}%
+%
+
+%%%%%%%%%%%%%%%%%%%%appendix%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\if@chapter@pp\@chapter@ppfalse
+\newif\if@knownclass@pp\@knownclass@ppfalse
+\@ifundefined{chapter}{%
+  \@ifundefined{section}{}{\@knownclass@pptrue}}{%
+  \@chapter@pptrue\@knownclass@pptrue}
+\providecommand{\phantomsection}{}
+\newcounter{@pps}
+  \renewcommand{\the@pps}{\alph{@pps}}
+\newif\if@pphyper
+  \@pphyperfalse
+\AtBeginDocument{%
+  \@ifpackageloaded{hyperref}{\@pphypertrue}{}}
+
+\newif\if@dotoc@pp\@dotoc@ppfalse
+\newif\if@dotitle@pp\@dotitle@ppfalse
+\newif\if@dotitletoc@pp\@dotitletoc@ppfalse
+\newif\if@dohead@pp\@dohead@ppfalse
+\newif\if@dopage@pp\@dopage@ppfalse
+\DeclareOption{toc}{\@dotoc@pptrue}
+\DeclareOption{title}{\@dotitle@pptrue}
+\DeclareOption{titletoc}{\@dotitletoc@pptrue}
+\DeclareOption{header}{\@dohead@pptrue}
+\DeclareOption{page}{\@dopage@pptrue}
+\ProcessOptions\relax
+\newcommand{\@ppendinput}{}
+\if@knownclass@pp\else
+  \PackageWarningNoLine{appendix}%
+    {There is no \protect\chapter\space or \protect\section\space command.\MessageBreak
+     The appendix package will not be used}
+  \renewcommand{\@ppendinput}{\endinput}
+\fi
+\@ppendinput
+
+\newcommand{\appendixtocon}{\@dotoc@pptrue}
+\newcommand{\appendixtocoff}{\@dotoc@ppfalse}
+\newcommand{\appendixpageon}{\@dopage@pptrue}
+\newcommand{\appendixpageoff}{\@dopage@ppfalse}
+\newcommand{\appendixtitleon}{\@dotitle@pptrue}
+\newcommand{\appendixtitleoff}{\@dotitle@ppfalse}
+\newcommand{\appendixtitletocon}{\@dotitletoc@pptrue}
+\newcommand{\appendixtitletocoff}{\@dotitletoc@ppfalse}
+\newcommand{\appendixheaderon}{\@dohead@pptrue}
+\newcommand{\appendixheaderoff}{\@dohead@ppfalse}
+\newcounter{@ppsavesec}
+\newcounter{@ppsaveapp}
+\setcounter{@ppsaveapp}{0}
+\newcommand{\@ppsavesec}{%
+  \if@chapter@pp \setcounter{@ppsavesec}{\value{chapter}} \else
+                 \setcounter{@ppsavesec}{\value{section}} \fi}
+\newcommand{\@pprestoresec}{%
+  \if@chapter@pp \setcounter{chapter}{\value{@ppsavesec}} \else
+                 \setcounter{section}{\value{@ppsavesec}} \fi}
+\newcommand{\@ppsaveapp}{%
+  \if@chapter@pp \setcounter{@ppsaveapp}{\value{chapter}} \else
+                 \setcounter{@ppsaveapp}{\value{section}} \fi}
+\newcommand{\restoreapp}{%
+  \if@chapter@pp \setcounter{chapter}{\value{@ppsaveapp}} \else
+                 \setcounter{section}{\value{@ppsaveapp}} \fi}
+\providecommand{\appendixname}{Appendix}
+\newcommand{\appendixtocname}{Appendices}
+\newcommand{\appendixpagename}{Appendices}
+\newcommand{\appendixpage}{%
+  \if@chapter@pp \@chap@pppage \else \@sec@pppage \fi
+}
+\newcommand{\clear@ppage}{%
+  \if@openright\cleardoublepage\else\clearpage\fi}
+
+\newcommand{\@chap@pppage}{%
+  \clear@ppage
+  \thispagestyle{plain}%
+  \if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi
+  \null\vfil
+  \markboth{}{}%
+  {\centering
+   \interlinepenalty \@M
+   \normalfont
+   \Huge \bfseries \appendixpagename\par}%
+  \if@dotoc@pp
+    \addappheadtotoc
+  \fi
+  \vfil\newpage
+  \if@twoside
+    \if@openright
+      \null
+      \thispagestyle{empty}%
+      \newpage
+    \fi
+  \fi
+  \if@tempswa
+    \twocolumn
+  \fi
+}
+
+\newcommand{\@sec@pppage}{%
+  \par
+  \addvspace{4ex}%
+  \@afterindentfalse
+  {\parindent \z@ \raggedright
+   \interlinepenalty \@M
+   \normalfont
+   \huge \bfseries \appendixpagename%
+   \markboth{}{}\par}%
+  \if@dotoc@pp
+    \addappheadtotoc
+  \fi
+  \nobreak
+  \vskip 3ex
+  \@afterheading
+}
+
+\newif\if@pptocpage
+  \@pptocpagetrue
+\newcommand{\noappendicestocpagenum}{\@pptocpagefalse}
+\newcommand{\appendicestocpagenum}{\@pptocpagetrue}
+\newcommand{\addappheadtotoc}{%
+  \phantomsection
+  \if@chapter@pp
+    \if@pptocpage
+      \addcontentsline{toc}{chapter}{\appendixtocname}%
+    \else
+      \if@pphyper
+        \addtocontents{toc}%
+          {\protect\contentsline{chapter}{\appendixtocname}{}{\@currentHref}}%
+      \else
+        \addtocontents{toc}%
+          {\protect\contentsline{chapter}{\appendixtocname}{}}%
+      \fi
+    \fi
+  \else
+    \if@pptocpage
+      \addcontentsline{toc}{section}{\appendixtocname}%
+    \else
+      \if@pphyper
+        \addtocontents{toc}%
+          {\protect\contentsline{section}{\appendixtocname}{}{\@currentHref}}%
+      \else
+        \addtocontents{toc}%
+          {\protect\contentsline{section}{\appendixtocname}{}}%
+      \fi
+    \fi
+  \fi
+}
+
+\providecommand{\theH@pps}{\alph{@pps}}
+
+\newcommand{\@resets@pp}{\par
+  \@ppsavesec
+  \stepcounter{@pps}
+  \setcounter{section}{0}%
+  \if@chapter@pp
+    \setcounter{chapter}{0}%
+    \renewcommand\@chapapp{\appendixname}%
+    \renewcommand\thechapter{\@Alph\c@chapter}%
+  \else
+    \setcounter{subsection}{0}%
+\ifnum\c@secnumdepth=1
+    \renewcommand\thesection{Appendix\@Alph\c@section}%
+\else
+  \renewcommand\thesection{\@Alph\c@section}%
+\fi
+  \fi
+  \if@pphyper
+    \if@chapter@pp
+      \renewcommand{\theHchapter}{\theH@pps.\Alph{chapter}}%
+    \else
+      \renewcommand{\theHsection}{\theH@pps.\Alph{section}}%
+    \fi
+    \def\Hy@chapapp{\appendixname}%
+  \fi
+  \restoreapp
+}
+
+\renewenvironment{appendix}{\printjnlcitation\section*{Appendix}\global\appendixsectrue%
+  \setcounter{figure}{0}%
+  \setcounter{table}{0}%
+  \setcounter{equation}{0}%
+  \@resets@pp
+  \if@dotoc@pp
+    \if@dopage@pp              % both page and toc
+      \if@chapter@pp           % chapters
+        \clear@ppage
+      \fi
+      \appendixpage
+    \else                      % toc only
+       \if@chapter@pp          % chapters
+         \clear@ppage
+       \fi
+      \addappheadtotoc
+    \fi
+  \else
+    \if@dopage@pp              % page only
+      \appendixpage
+    \fi
+  \fi
+  \if@chapter@pp
+    \if@dotitletoc@pp \@redotocentry@pp{chapter} \fi
+  \else
+    \if@dotitletoc@pp \@redotocentry@pp{section} \fi
+    \if@dohead@pp
+      \def\sectionmark##1{%
+        \if@twoside
+          \markboth{\@formatsecmark@pp{##1}}{}
+        \else
+          \markright{\@formatsecmark@pp{##1}}{}
+        \fi}
+    \fi
+    \if@dotitle@pp
+      \def\sectionname{\appendixname}
+      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
+        \csname the##1\endcsname\quad}
+    \fi
+  \fi%
+  \renewcommand\thefigure{\@Alph\c@section\arabic{figure}}%
+  \renewcommand\thetable{\@Alph\c@section\arabic{table}}%
+  \renewcommand\theequation{\@Alph\c@section\arabic{equation}}%
+}{%
+  \@ppsaveapp\@pprestoresec}
+
+\newcommand{\setthesection}{\thechapter.\Alph{section}}
+\newcommand{\setthesubsection}{\thesection.\Alph{subsection}}
+
+\newcommand{\@resets@ppsub}{\par
+  \stepcounter{@pps}
+  \if@chapter@pp
+    \setcounter{section}{0}
+    \renewcommand{\thesection}{\setthesection}
+  \else
+    \setcounter{subsection}{0}
+    \renewcommand{\thesubsection}{\setthesubsection}
+  \fi
+  \if@pphyper
+    \if@chapter@pp
+      \renewcommand{\theHsection}{\theH@pps.\setthesection}%
+    \else
+      \renewcommand{\theHsubsection}{\theH@pps.\setthesubsection}%
+    \fi
+    \def\Hy@chapapp{\appendixname}%
+  \fi
+}
+
+\newenvironment{subappendices}{%
+  \@resets@ppsub
+  \if@chapter@pp
+    \if@dotitletoc@pp \@redotocentry@pp{section} \fi
+    \if@dotitle@pp
+      \def\sectionname{\appendixname}
+      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
+        \csname the##1\endcsname\quad}
+    \fi
+  \else
+    \if@dotitletoc@pp \@redotocentry@pp{subsection} \fi
+    \if@dotitle@pp
+      \def\subsectionname{\appendixname}
+      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
+        \csname the##1\endcsname\quad}
+    \fi
+  \fi}{}
+
+\newcommand{\@formatsecmark@pp}[1]{%
+  \MakeUppercase{\appendixname\space
+    \ifnum \c@secnumdepth >\z@
+      \thesection\quad
+    \fi
+    #1}}
+\newcommand{\@redotocentry@pp}[1]{%
+  \let\oldacl@pp=\addcontentsline
+  \def\addcontentsline##1##2##3{%
+    \def\@pptempa{##1}\def\@pptempb{toc}%
+    \ifx\@pptempa\@pptempb
+      \def\@pptempa{##2}\def\@pptempb{#1}%
+      \ifx\@pptempa\@pptempb
+\oldacl@pp{##1}{##2}{\appendixname\space ##3}%
+      \else
+        \oldacl@pp{##1}{##2}{##3}%
+      \fi
+    \else
+      \oldacl@pp{##1}{##2}{##3}%
+    \fi}
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\renewcommand\footnoterule{%%LN
+  \kern-3\p@%
+  \hrule height0.5pt%
+  \kern4.4\p@%
+}%
+
+%
+%%% Macros for float algorithm %%%
+
+%\usepackage[plain]{algorithm} %% wrapper
+%\usepackage{varwidth}%
+%\usepackage{algorithmicx}%
+%\usepackage{algpseudocode}%
+\usepackage{algorithm, algorithmicx, algpseudocode}
+
+\usepackage{listings}%
+\usepackage{alltt}%
+
+
+%%% Macros for upright lowercase greek characters %%%
+
+
+%% since small triangle symbol is not found used \triangleright and rotated to 90 degrees %%
+
+
+\def\@jissue{}%
+\def\jissue#1{\gdef\@jissue{#1}}%
+
+\def\@licenseVal{}%
+\def\licenseVal#1{\gdef\@licenseVal{#1}}%
+
+\def\@supplinks{}%
+\def\supplinks#1{\gdef\@supplinks{#1}}%
+
+\def\@coninterest{}%
+\def\coninterest#1{\gdef\@coninterest{#1}}%
+
+\def\@confinfo{}%
+\def\confinfo#1{\def\@confinfo{#1}}%
+
+\def\@cdate{}%
+\def\cdate#1{\gdef\@cdate{#1}}%
+
+\def\@cname{}%
+\def\cname#1{\gdef\@cname{#1}}%
+
+\def\@cloc{}%
+\def\cloc#1{\gdef\@cloc{#1}}%
+
+\def\tabheadfont{}%
+
+\let\fullpagewidth\textwidth%
+
+\def\jargon#1{#1}%
+
+\newenvironment{bm}[1][]{\begingroup%
+\if!#1!\else\section*{#1}\fi%
+}{\endgroup}
+
+\let\glosslist\description%
+\let\endglosslist\enddescription%
+
+\newenvironment{ack}[1][]{\begingroup%
+\if!#1!\else\section*{#1}\fi%
+}{\endgroup}
+
+\def\APLrightarrowbox{}% Use \usepackage{wasysym} to get this symbol
+\def\boxcircle{}%
+
+%% Macros for \citation tag %%
+
+\newbox\jnlcitationbox%
+
+\def\cname#1{\gdef\author##1{##1}#1}%
+\def\cyear#1{#1}%
+\def\ctitle#1{#1}%
+\def\cjournal#1{\textit{#1}}%
+\def\cvol#1{\textit{#1}}%
+
+\gdef\@jnlcitation{}%
+\def\jnlcitation#1{\gdef\@jnlcitation{\textbf{How to cite this article: }#1}}%
+
+\newdimen\jnlcithsize%
+%\jnlcithsize=\hsize%
+\advance\jnlcithsize-12pt% fbox sep x 2
+\advance\jnlcithsize-1pt% fbox rule x 2
+
+\gdef\printjnlcitation{\removelastskip\vskip18pt\fboxsep=6pt\fboxrule=0.5pt%
+\hskip-\parindentvalue\fbox{\vbox{\noindent\@jnlcitation}}}%
+
+\AtEndDocument{\ifappendixsec\else\printjnlcitation\fi}%
+
+%% Misc math macros %%
+
+\newcommand{\xleftrightarrow}[2][]{\ext@arrow 3399\leftrightarrowfill@{#1}{#2}}%
+
+%
+%%% Macros for Biography %%%
+%
+\RequirePackage{wrapfig}%
+%
+%  \begin{wrapfigure}[12]{r}[34pt]{5cm} <figure> \end{wrapfigure}
+%                     --  -  ----  ---
+%  [number of narrow lines] {placement} [overhang] {width of figure}
+\newcount\wraplines%
+\wraplines=5%
+%
+\newbox\@authorfigbox%
+\newskip\@authorfigboxdim%
+%
+
+\newskip\biofigadjskip%
+\biofigadjskip=0pt%
+%
+\newenvironment{biography}[2]{\par\addvspace{10.5pt plus3.375pt minus1.6875pt}%\lineno@off%
+\def\author##1{\textbf{##1}}%
+\def\@authorfig{{#1}}%
+\setbox\@authorfigbox=\hbox{#1}%%10Nov16%%
+\@authorfigboxdim=\wd\@authorfigbox%
+\advance\@authorfigboxdim by 10pt
+\if@dblspace\else\wraplines=7\fi%
+%14pt%
+\noindent{%
+\ifx\@authorfig\@empty\else\unskip%
+\begin{wrapfigure}[\wraplines]{l}[0pt]{\@authorfigboxdim}%{38.25mm}%
+\vskip-25pt\vskip\biofigadjskip%
+\@authorfig%
+\end{wrapfigure}%
+\fi%
+#2%
+\par%
+}}{\par\addvspace{10.5pt plus3.375pt minus1.6875pt}}
+
+\def\emph#1{\textit{#1}}
+
+%%% Macros for Bibliography %%%
+
+
+\endinput
+
+
Index: doc/papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.bbl
===================================================================
--- doc/papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.bbl	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.bbl	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,156 @@
+\begin{thebibliography}{10}
+
+\bibitem{Hirt1974}
+Hirt CW, Amsden AA, Cook JL. An arbitrary {L}agrangian-{E}ulerian computing
+  method for all flow speeds.  {\it J {C}omput {P}hys. }1974;14(3):227--253.
+
+\bibitem{Liska2010}
+Liska R, Shashkov M, Vachal P, Wendroff B. Optimization-based synchronized
+  flux-corrected conservative interpolation (remapping) of mass and momentum
+  for arbitrary {L}agrangian-{E}ulerian methods.  {\it J {C}omput {P}hys.
+  }2010;229(5):1467--1497.
+
+\bibitem{Taylor1937}
+Taylor GI, Green AE. Mechanism of the production of small eddies from large
+  ones.  {\it P {R}oy {S}oc {L}ond {A} {M}at. }1937;158(895):499--521.
+\newblock \url{https://doi.org/10.1098/rspa.1937.0036},
+  \url{http://rspa.royalsocietypublishing.org/content/158/895/499}.
+
+\bibitem{Knupp1999}
+Knupp PM. Winslow smoothing on two-dimensional unstructured meshes.  {\it Eng
+  {C}omput. }1999;15:263--268.
+
+\bibitem{Kamm2000}
+Kamm J. {\it Evaluation of the {S}edov-von {N}eumann-{T}aylor blast wave
+  solution. } Technical {R}eport LA-UR-00-6055: Los {A}lamos {N}ational
+  {L}aboratory; 2000.
+
+\bibitem{Kucharik2003}
+Kucharik M, Shashkov M, Wendroff B. An efficient linearity-and-bound-preserving
+  remapping method.  {\it J {C}omput {P}hys. }2003;188(2):462--471.
+
+\bibitem{Blanchard2015}
+Blanchard G, Loubere R. {\it High-Order {C}onservative {R}emapping with a
+  posteriori {MOOD} stabilization on polygonal meshes. }
+  \url{https://hal.archives-ouvertes.fr/hal-01207156}, the {HAL} {O}pen
+  {A}rchive, hal-01207156. Accessed January 13, 2016; 2015.
+
+\bibitem{Burton2013}
+Burton DE, Kenamond MA, Morgan NR, Carney TC, Shashkov MJ. An intersection
+  based {ALE} scheme {(xALE)} for cell centered hydrodynamics {(CCH)}.  In:
+  Talk at {M}ultimat 2013, {I}nternational {C}onference on {N}umerical
+  {M}ethods for {M}ulti-{M}aterial {F}luid {F}lows; September 2--6, 2013; San
+  {F}rancisco.
+\newblock LA-UR-13-26756.2.
+
+\bibitem{Berndt2011}
+Berndt M, Breil J, Galera S, Kucharik M, Maire PH, Shashkov M. Two-step hybrid
+  conservative remapping for multimaterial arbitrary {L}agrangian-{E}ulerian
+  methods.  {\it J {C}omput {P}hys. }2011;230(17):6664--6687.
+
+\bibitem{Kucharik2012}
+Kucharik M, Shashkov M. One-step hybrid remapping algorithm for multi-material
+  arbitrary {L}agrangian-{E}ulerian methods.  {\it J {C}omput {P}hys.
+  }2012;231(7):2851--2864.
+
+\bibitem{Breil2015}
+Breil J, Alcin H, Maire PH. A swept intersection-based remapping method for
+  axisymmetric {ReALE} computation.  {\it Int {J} {N}umer {M}eth {F}l.
+  }2015;77(11):694--706.
+\newblock Fld.3996.
+
+\bibitem{Barth1997}
+Barth TJ. Numerical methods for gasdynamic systems on unstructured meshes.  In:
+   Kroner D, Rohde C, Ohlberger M, eds. {\it An {I}ntroduction to {R}ecent
+  {D}evelopments in {T}heory and {N}umerics for {C}onservation {L}aws,
+  {P}roceedings of the {I}nternational {S}chool on {T}heory and {N}umerics for
+  {C}onservation {L}aws}, Lecture {N}otes in {C}omputational {S}cience and
+  {E}ngineering. Berlin: Springer 1997.
+\newblock ISBN 3-540-65081-4.
+
+\bibitem{Lauritzen2011}
+Lauritzen P, Erath C, Mittal R. On simplifying `incremental remap'-based
+  transport schemes.  {\it J {C}omput {P}hys. }2011;230(22):7957--7963.
+
+\bibitem{Klima2017}
+Klima M, Kucharik M, Shashkov M. Local error analysis and comparison of the
+  swept- and intersection-based remapping methods.  {\it Commun {C}omput
+  {P}hys. }2017;21(2):526--558.
+
+\bibitem{Dukowicz2000}
+Dukowicz JK, Baumgardner JR. Incremental remapping as a transport/advection
+  algorithm.  {\it J {C}omput {P}hys. }2000;160(1):318--335.
+
+\bibitem{Kucharik2011}
+Kucharik M, Shashkov M. Flux-based approach for conservative remap of
+  multi-material quantities in {2D} arbitrary {L}agrangian-{E}ulerian
+  simulations.  In:  Fo\v{r}t J, F{\"{u}}rst J, Halama J, Herbin R, Hubert F,
+  eds. {\it Finite {V}olumes for {C}omplex {A}pplications {VI} {P}roblems \&
+  {P}erspectives},  Springer {P}roceedings in {M}athematics, vol. 1: Springer
+  2011 (pp. 623--631).
+
+\bibitem{Kucharik2014}
+Kucharik M, Shashkov M. Conservative multi-material remap for staggered
+  multi-material arbitrary {L}agrangian-{E}ulerian methods.  {\it J {C}omput
+  {P}hys. }2014;258:268--304.
+
+\bibitem{Loubere2005}
+Loubere R, Shashkov M. A subcell remapping method on staggered polygonal grids
+  for arbitrary-{L}agrangian-{E}ulerian methods.  {\it J {C}omput {P}hys.
+  }2005;209(1):105--138.
+
+\bibitem{Caramana1998}
+Caramana EJ, Shashkov MJ. Elimination of artificial grid distortion and
+  hourglass-type motions by means of {L}agrangian subzonal masses and
+  pressures.  {\it J {C}omput {P}hys. }1998;142(2):521--561.
+
+\bibitem{Hoch2009}
+Hoch P. {\it An arbitrary {L}agrangian-{E}ulerian strategy to solve
+  compressible fluid flows. } Technical {R}eport: CEA; 2009.
+\newblock HAL: hal-00366858.
+  https://hal.archives-ouvertes.fr/docs/00/36/68/58/PDF/ale2d.pdf. Accessed
+  January 13, 2016.
+
+\bibitem{Shashkov1996}
+Shashkov M. {\it Conservative {F}inite-{D}ifference {M}ethods on {G}eneral
+  {G}rids}.
+\newblock Boca Raton, Florida: CRC {P}ress; 1996.
+\newblock ISBN 0-8493-7375-1.
+
+\bibitem{Benson1992}
+Benson DJ. Computational methods in {L}agrangian and {E}ulerian hydrocodes.
+  {\it Comput {M}ethod {A}ppl {M}. }1992;99(2--3):235--394.
+
+\bibitem{Margolin2003}
+Margolin LG, Shashkov M. Second-order sign-preserving conservative
+  interpolation (remapping) on general grids.  {\it J {C}omput {P}hys.
+  }2003;184(1):266--298.
+
+\bibitem{Kenamond2013}
+Kenamond MA, Burton DE. Exact intersection remapping of multi-material
+  domain-decomposed polygonal meshes.  In: Talk at {M}ultimat 2013,
+  {I}nternational {C}onference on {N}umerical {M}ethods for {M}ulti-{M}aterial
+  {F}luid {F}lows; September 2--6, 2013; San {F}rancisco.
+\newblock LA-UR-13-26794.
+
+\bibitem{Dukowicz1984}
+Dukowicz J. Conservative rezoning (remapping) for general quadrilateral meshes.
+   {\it J {C}omput {P}hys. }1984;54(3):411--424.
+
+\bibitem{Margolin2002}
+Margolin LG, Shashkov M. {\it Second-order sign-preserving remapping on general
+  grids. } Technical Report LA-UR-02-525: Los {A}lamos {N}ational {L}aboratory;
+  2002.
+
+\bibitem{Mavriplis2003}
+Mavriplis DJ. Revisiting the least-squares procedure for gradient
+  reconstruction on unstructured meshes.  In: AIAA 2003-3986. 16th {AIAA}
+  {C}omputational {F}luid {D}ynamics {C}onference; June 23--26, 2003; Orlando,
+  {F}lorida.
+
+\bibitem{Scovazzi2008}
+Scovazzi G, Love E, Shashkov M. Multi-scale {L}agrangian shock hydrodynamics on
+  {Q1/P0} finite elements: {T}heoretical framework and two-dimensional
+  computations.  {\it Comput {M}ethod {A}ppl {M}. }2008;197(9--12):1056--1079.
+
+\end{thebibliography}
Index: doc/papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.bib
===================================================================
--- doc/papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.bib	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.bib	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,299 @@
+%==Ref1
+@article{Hirt1974,
+      author = "Hirt, CW and Amsden, AA and Cook, JL",
+       title = "An arbitrary {L}agrangian-{E}ulerian computing method for all flow speeds",
+        year = "1974",
+     journal = "J {C}omput {P}hys",
+      volume = "14",
+      number = "3",
+       pages = "227--253"
+}
+
+%==Ref2
+@article{Benson1992,
+      author = "Benson, DJ",
+       title = "Computational methods in {L}agrangian and {E}ulerian hydrocodes",
+        year = "1992",
+     journal = "Comput {M}ethod {A}ppl {M}",
+      volume = "99",
+      number = "2--3",
+       pages = "235--394"
+}
+
+%==Ref3
+@article{Dukowicz1984,
+      author = "Dukowicz, J",
+       title = "Conservative rezoning (remapping) for general quadrilateral meshes",
+        year = "1984",
+     journal = "J {C}omput {P}hys",
+      volume = "54",
+      number = "3",
+       pages = "411--424"
+}
+
+%==Ref4
+@article{Margolin2003,
+      author = "Margolin, LG and Shashkov, M",
+       title = "Second-order sign-preserving conservative interpolation (remapping) on general grids",
+        year = "2003",
+     journal = "J {C}omput {P}hys",
+      volume = "184",
+      number = "1",
+       pages = "266--298"
+}
+
+%==Ref5
+@inproceedings{Kenamond2013,
+      author = "Kenamond, MA and Burton, DE",
+       title = "Exact intersection remapping of multi-material domain-decomposed polygonal meshes",
+      series = "Talk at {M}ultimat 2013, {I}nternational {C}onference on {N}umerical {M}ethods for {M}ulti-{M}aterial {F}luid {F}lows",
+     address = "San {F}rancisco",
+        year = "September 2--6, 2013",
+        note = "LA-UR-13-26794"
+}
+
+%==Ref6
+@inproceedings{Burton2013,
+      author = "Burton, DE and Kenamond, MA and Morgan, NR and Carney, TC and Shashkov, MJ",
+       title = "An intersection based {ALE} scheme {(xALE)} for cell centered hydrodynamics {(CCH)}",
+      series = "Talk at {M}ultimat 2013, {I}nternational {C}onference on {N}umerical {M}ethods for {M}ulti-{M}aterial {F}luid {F}lows",
+     address = "San {F}rancisco",
+        year = "September 2--6, 2013",
+        note = "LA-UR-13-26756.2"
+}
+
+%==Ref7
+@article{Berndt2011,
+      author = "Berndt, M and Breil, J and Galera, S and Kucharik, M and Maire, PH and Shashkov, M",
+       title = "Two-step hybrid conservative remapping for multimaterial arbitrary {L}agrangian-{E}ulerian methods",
+        year = "2011",
+     journal = "J {C}omput {P}hys",
+      volume = "230",
+      number = "17",
+       pages = "6664--6687"
+}
+
+%==Ref8
+@article{Kucharik2012,
+      author = "Kucharik, M and Shashkov, M",
+       title = "One-step hybrid remapping algorithm for multi-material arbitrary {L}agrangian-{E}ulerian methods",
+        year = "2012",
+     journal = "J {C}omput {P}hys",
+      volume = "231",
+      number = "7",
+       pages = "2851--2864"
+}
+
+%==Ref9
+@article{Breil2015,
+      author = "Breil, J and Alcin, H and Maire, PH",
+       title = "A swept intersection-based remapping method for axisymmetric {ReALE} computation",
+        year = "2015",
+     journal = "Int {J} {N}umer {M}eth {F}l",
+      volume = "77",
+      number = "11",
+       pages = "694--706",
+        note = "Fld.3996"
+}
+
+%==Ref10
+@incollection{Barth1997,
+      author = "Barth, TJ",
+       title = "Numerical methods for gasdynamic systems on unstructured meshes",
+   booktitle = "An {I}ntroduction to {R}ecent {D}evelopments in {T}heory and {N}umerics for {C}onservation {L}aws, {P}roceedings of the {I}nternational {S}chool on {T}heory and {N}umerics for {C}onservation {L}aws",
+      editor = "Kroner, D and Rohde, C and Ohlberger, M",
+     address = "Berlin",
+      series = "Lecture {N}otes in {C}omputational {S}cience and {E}ngineering",
+   publisher = "Springer",
+        year = "1997",
+        note = "ISBN 3-540-65081-4"
+}
+
+%==Ref11
+@article{Liska2010,
+      author = "Liska, R and Shashkov, M and Vachal, P and Wendroff, B",
+       title = "Optimization-based synchronized flux-corrected conservative interpolation (remapping) of mass and momentum for arbitrary {L}agrangian-{E}ulerian methods",
+        year = "2010",
+     journal = "J {C}omput {P}hys",
+      volume = "229",
+      number = "5",
+       pages = "1467--1497"
+}
+
+%==Ref12
+@article{Kucharik2003,
+      author = "Kucharik, M and Shashkov, M and Wendroff, B",
+       title = "An efficient linearity-and-bound-preserving remapping method",
+        year = "2003",
+     journal = "J {C}omput {P}hys",
+      volume = "188",
+      number = "2",
+       pages = "462--471"
+}
+
+%==Ref13
+@misc{Blanchard2015,
+      author = "Blanchard, G and Loubere, R",
+       title = "High-Order {C}onservative {R}emapping with a posteriori {MOOD} stabilization on polygonal meshes",
+        year = "2015",
+	note = "\url{https://hal.archives-ouvertes.fr/hal-01207156}, the {HAL} {O}pen {A}rchive, hal-01207156. Accessed January 13, 2016"
+}
+
+%==Ref14
+@article{Lauritzen2011,
+      author = "Lauritzen, P and Erath, C and Mittal, R",
+       title = "On simplifying `incremental remap'-based transport schemes",
+        year = "2011",
+     journal = "J {C}omput {P}hys",
+      volume = "230",
+      number = "22",
+       pages = "7957--7963"
+}
+
+%==Ref15
+@article{Klima2017,
+      author = "Klima, M and Kucharik, M and Shashkov, M",
+       title = "Local error analysis and comparison of the swept- and intersection-based remapping methods",
+        year = "2017",
+     journal = "Commun {C}omput {P}hys",
+      volume = "21",
+      number = "2",
+       pages = "526--558"
+}
+
+%==Ref16
+@article{Dukowicz2000,
+      author = "Dukowicz, JK and Baumgardner, JR",
+       title = "Incremental remapping as a transport/advection algorithm",
+        year = "2000",
+     journal = "J {C}omput {P}hys",
+      volume = "160",
+      number = "1",
+       pages = "318--335"
+}
+
+%==Ref17
+@incollection{Kucharik2011,
+      author = "Kucharik, M and Shashkov, M",
+       title = "Flux-based approach for conservative remap of multi-material quantities in {2D} arbitrary {L}agrangian-{E}ulerian simulations",
+   booktitle = "Finite {V}olumes for {C}omplex {A}pplications {VI} {P}roblems \& {P}erspectives",
+      editor = "Fo\v{r}t, J and F{\"{u}}rst, J and Halama, J and Herbin, R and Hubert, F",
+      series = "Springer {P}roceedings in {M}athematics",
+      volume = "1",
+   publisher = "Springer",
+        year = "2011",
+       pages = "623--631"
+}
+
+%==Ref18
+@article{Kucharik2014,
+      author = "Kucharik, M and Shashkov, M",
+       title = "Conservative multi-material remap for staggered multi-material arbitrary {L}agrangian-{E}ulerian methods",
+        year = "2014",
+     journal = "J {C}omput {P}hys",
+      volume = "258",
+       pages = "268--304"
+}
+
+%==Ref19
+@article{Loubere2005,
+      author = "Loubere, R and Shashkov, M",
+       title = "A subcell remapping method on staggered polygonal grids for arbitrary-{L}agrangian-{E}ulerian methods",
+        year = "2005",
+     journal = "J {C}omput {P}hys",
+      volume = "209",
+      number = "1",
+       pages = "105--138"
+}
+
+%==Ref20
+@techreport{Margolin2002,
+      author = "Margolin, LG and Shashkov, M",
+       title = "Second-order sign-preserving remapping on general grids",
+ institution = "Los {A}lamos {N}ational {L}aboratory",
+        year = "2002",
+      number = "Technical Report LA-UR-02-525"
+}
+
+%==Ref21
+@inproceedings{Mavriplis2003,
+      author = "Mavriplis, DJ",
+       title = "Revisiting the least-squares procedure for gradient reconstruction on unstructured meshes",
+        year = "June 23--26, 2003",
+      series = "AIAA 2003-3986. 16th {AIAA} {C}omputational {F}luid {D}ynamics {C}onference",
+     address = "Orlando, {F}lorida"
+}
+
+%==Ref22
+@article{Scovazzi2008,
+      author = "Scovazzi, G and Love, E and Shashkov, M",
+       title = "Multi-scale {L}agrangian shock hydrodynamics on {Q1/P0} finite elements: {T}heoretical framework and two-dimensional computations",
+        year = "2008",
+     journal = "Comput {M}ethod {A}ppl {M}",
+      volume = "197",
+      number = "9--12",
+       pages = "1056--1079"
+}
+
+%==Ref23
+@article{Caramana1998,
+      author = "Caramana, EJ and Shashkov, MJ",
+       title = "Elimination of artificial grid distortion and hourglass-type motions by means of {L}agrangian subzonal masses and pressures",
+        year = "1998",
+     journal = "J {C}omput {P}hys",
+      volume = "142",
+      number = "2",
+       pages = "521--561"
+}
+
+%==Ref24
+@techreport{Hoch2009,
+      author = "Hoch, P",
+       title = "An arbitrary {L}agrangian-{E}ulerian strategy to solve compressible fluid flows",
+      number = "Technical {R}eport",
+ institution = "CEA",
+        year = "2009",
+        note = "HAL: hal-00366858. https://hal.archives-ouvertes.fr/docs/00/36/68/58/PDF/ale2d.pdf. Accessed January 13, 2016"
+}
+
+%==Ref25
+@book{Shashkov1996,
+      author = "Shashkov, M",
+       title = "Conservative {F}inite-{D}ifference {M}ethods on {G}eneral {G}rids",
+   publisher = "CRC {P}ress",
+     address = "Boca Raton, Florida",
+        year = "1996",
+        note = "ISBN 0-8493-7375-1"
+}
+
+%==Ref26
+@article{Knupp1999,
+      author = "Knupp, PM",
+       title = "Winslow smoothing on two-dimensional unstructured meshes",
+        year = "1999",
+     journal = "Eng {C}omput",
+      volume = "15",
+       pages = "263--268"
+}
+
+%==Ref27
+@techreport{kamm2000,
+      author = "Kamm, J",
+       title = "Evaluation of the {S}edov-von {N}eumann-{T}aylor blast wave solution",
+ institution = "Los {A}lamos {N}ational {L}aboratory",
+        year = "2000",
+      number = "Technical {R}eport LA-UR-00-6055"
+}
+
+%==Ref28
+@article{Taylor1937,
+      author = "Taylor, GI and Green, AE",
+       title = "Mechanism of the production of small eddies from large ones",
+        year = "1937",
+     journal = "P {R}oy {S}oc {L}ond {A} {M}at",
+      volume = "158",
+      number = "895",
+       pages = "499--521",
+        note = "\url{https://doi.org/10.1098/rspa.1937.0036}, \url{http://rspa.royalsocietypublishing.org/content/158/895/499}"
+}
+
Index: doc/papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.tex
===================================================================
--- doc/papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ doc/papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,858 @@
+\documentclass[AMA,STIX1COL]{WileyNJD-v2}
+
+\articletype{Article Type}%
+
+\received{26 April 2016}
+\revised{6 June 2016}
+\accepted{6 June 2016}
+
+\raggedbottom
+
+\begin{document}
+
+\title{This is the sample article title\protect\thanks{This is an example for title footnote.}}
+
+\author[1]{Author One*}
+
+\author[2,3]{Author Two}
+
+\author[3]{Author Three}
+
+\authormark{AUTHOR ONE \textsc{et al}}
+
+
+\address[1]{\orgdiv{Org Division}, \orgname{Org Name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\address[2]{\orgdiv{Org Division}, \orgname{Org Name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\address[3]{\orgdiv{Org Division}, \orgname{Org Name}, \orgaddress{\state{State name}, \country{Country name}}}
+
+\corres{*Corresponding author name, This is sample corresponding address. \email{authorone@gmail.com}}
+
+\presentaddress{This is sample for present address text this is sample for present address text}
+
+\abstract[Summary]{This is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract tex
+
+t this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text this is sample abstract text.}
+
+\keywords{keyword1, keyword2, keyword3, keyword4}
+
+\jnlcitation{\cname{%
+\author{Williams K.}, 
+\author{B. Hoskins}, 
+\author{R. Lee}, 
+\author{G. Masato}, and 
+\author{T. Woollings}} (\cyear{2016}), 
+\ctitle{A regime analysis of Atlantic winter jet variability applied to evaluate HadGEM3-GC2}, \cjournal{Q.J.R. Meteorol. Soc.}, \cvol{2017;00:1--6}.}
+
+\maketitle
+
+\footnotetext{\textbf{Abbreviations:} ANA, anti-nuclear antibodies; APC, antigen-presenting cells; IRF, interferon regulatory factor}
+
+
+\section{Sample for first level head}\label{sec1}
+
+xLorem ipsum dolor sit amet, consectetuer adipiscing elit.\cite{Hirt1974} Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
+felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
+Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
+sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel
+leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur
+auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam.
+Duis eget orci sit amet orci dignissim rutrum.
+
+\begin{eqnarray}
+s(nT_{s}) &= &s(t)\times \sum\limits_{n=0}^{N-1} \delta (t-nT_{s}) \xleftrightarrow{\mathrm{DFT}}  S \left(\frac{m}{NT_{s}}\right) \nonumber\\
+&= &\frac{1}{N} \sum\limits_{n=0}^{N-1} \sum\limits_{k=-N/2}^{N/2-1} s_{k} e^{\mathrm{j}2\pi k\Delta fnT_{s}} e^{-j\frac{2\pi}{N}mn}
+\end{eqnarray}
+
+\section{Sample for another first level head}\label{sec2}
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra
+fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa ac
+quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo.\cite{Liska2010} Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+Example for bibliography citations cite\cite{Taylor1937}, cites\cite{Knupp1999,Kamm2000}
+
+Quisque ullamcorper placerat ipsum. Cras nibh.\cite{Kucharik2003,Blanchard2015} Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
+Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat
+quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor
+vitae risus porta vehicula.
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
+vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+
+
+\begin{figure}[t]
+\centerline{\includegraphics[width=342pt,height=9pc,draft]{empty}}
+\caption{This is the sample figure caption.\label{fig1}}
+\end{figure}
+
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu
+ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum
+eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et
+convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non,
+pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio.
+
+Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non
+odio. Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce
+sed justo eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor.
+Donec pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin
+et quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien
+turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.
+
+\begin{figure*}
+\centerline{\includegraphics[width=342pt,height=9pc,draft]{empty}}
+\caption{This is the sample figure caption.\label{fig2}}
+\end{figure*}
+
+\subsection{Example for second level head}
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec odio elit, dictum
+in, hendrerit sit amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam vestibulum
+fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. Nulla facilisi. Pellentesque
+eget lectus. Proin eu metus. Sed porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. Ut mi mi, lacinia
+sit amet, placerat et, mollis vitae, dui. Sed ante tellus, tristique ut, iaculis eu, malesuada ac, dui. Mauris nibh leo,
+facilisis non, adipiscing quis, ultrices a, dui.
+
+Morbi luctus, wisi viverra faucibus pretium, nibh est placerat odio, nec commodo wisi enim eget quam. Quisque
+libero justo, consectetuer a, feugiat vitae, porttitor eu, libero. Suspendisse sed mauris vitae elit sollicitudin malesuada.
+
+Maecenas ultricies eros sit amet ante. Ut venenatis velit. Maecenas sed mi eget dui varius euismod. Phasellus aliquet
+volutpat odio. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque sit
+amet pede ac sem eleifend consectetuer. Nullam elementum, urna vel imperdiet sodales, elit ipsum pharetra ligula,
+ac pretium ante justo a nulla. Curabitur tristique arcu eu metus. Vestibulum lectus. Proin mauris. Proin eu nunc eu
+urna hendrerit faucibus. Aliquam auctor, pede consequat laoreet varius, eros tellus scelerisque quam, pellentesque
+hendrerit ipsum dolor sed augue. Nulla nec lacus.
+
+\begin{quote}
+This is an example\cite{Burton2013,Berndt2011,Kucharik2012} for quote text. This is an example for quote text. This is an example for quote text. This is an example for quote text.\cite{Breil2015} This is an example for quote text. This is an example for quote text. This is an example for quote text. This is an example for quote text. This is an example for quote text. This is an example for quote text.\cite{Barth1997} This is an example for quote text. This is an example for quote text. This is an example for quote text. 
+\end{quote}
+
+\section{Sample for next first level head}\label{sec3}
+
+\subsection{Example for another second level head}
+
+Suspendisse vitae elit. Aliquam arcu neque, ornare in, ullamcorper quis, commodo eu, libero. Fusce sagittis erat at
+erat tristique mollis. Maecenas sapien libero, molestie et, lobortis in, sodales eget, dui. Morbi ultrices rutrum lorem.
+Nam elementum ullamcorper leo. Morbi dui. Aliquam sagittis. Nunc placerat. Pellentesque tristique sodales est.
+Maecenas imperdiet lacinia velit. Cras non urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros. Praesent
+malesuada, diam id pretium elementum, eros sem dictum tortor, vel consectetuer odio sem sed wisi.
+
+Sed feugiat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut pellentesque
+augue sed urna. Vestibulum diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam at lectus. In sagittis
+ultrices mauris. Curabitur malesuada erat sit amet massa. Fusce blandit. Aliquam erat volutpat. Aliquam euismod.
+Aenean vel lectus. Nunc imperdiet justo nec dolor.
+
+\subsection{Second level head text}
+
+Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In mi erat, cursus id, nonummy sed, ullamcorper
+eget, sapien. Praesent pretium, magna in eleifend egestas, pede pede pretium lorem, quis consectetuer tortor sapien
+facilisis magna. Mauris quis magna varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam porttitor quam
+a lacus. Praesent vel arcu ut tortor cursus volutpat. In vitae pede quis diam bibendum placerat. Fusce elementum
+convallis neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut, mi. Duis nec dui quis leo sagittis commodo.
+
+
+\subsubsection{Third level head text}
+
+Aliquam lectus. Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris porttitor pharetra tortor. Sed fringilla
+justo sed mauris. Mauris tellus. Sed non leo. Nullam elementum, magna in cursus sodales, augue est scelerisque
+sapien, venenatis congue nulla arcu et pede. Ut suscipit enim vel sapien. Donec congue. Maecenas urna mi, suscipit
+in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla et nisl.
+
+Etiam ac leo a risus tristique nonummy. Donec dignissim tincidunt nulla. Vestibulum rhoncus molestie odio. Sed
+lobortis, justo et pretium lobortis, mauris turpis condimentum augue, nec ultricies nibh arcu pretium enim. Nunc
+purus neque, placerat id, imperdiet sed, pellentesque nec, nisl. Vestibulum imperdiet neque non sem accumsan laoreet.
+In hac habitasse platea dictumst. Etiam condimentum facilisis libero. Suspendisse in elit quis nisl aliquam dapibus.
+Pellentesque auctor sapien. Sed egestas sapien nec lectus. Pellentesque vel dui vel neque bibendum viverra. Aliquam
+porttitor nisl nec pede. Proin mattis libero vel turpis. Donec rutrum mauris et libero. Proin euismod porta felis.
+Nam lobortis, metus quis elementum commodo, nunc lectus elementum mauris, eget vulputate ligula tellus eu neque.
+Vivamus eu dolor.
+
+Nulla in ipsum. Praesent eros nulla, congue vitae, euismod ut, commodo a, wisi. Pellentesque habitant morbi
+tristique senectus et netus et malesuada fames ac turpis egestas. Aenean nonummy magna non leo. Sed felis erat,
+ullamcorper in, dictum non, ultricies ut, lectus. Proin vel arcu a odio lobortis euismod. Vestibulum ante ipsum primis
+in faucibus orci luctus et ultrices posuere cubilia Curae; Proin ut est. Aliquam odio. Pellentesque massa turpis, cursus
+eu, euismod nec, tempor congue, nulla. Duis viverra gravida mauris. Cras tincidunt. Curabitur eros ligula, varius ut,
+pulvinar in, cursus faucibus, augue.
+
+
+
+\begin{boxtext}
+\section*{Example of Boxtext}%
+This is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext this is sample for boxtext.
+\end{boxtext}
+
+
+\paragraph{Fourth level head text}
+
+Sed feugiat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut pellentesque
+augue sed urna. Vestibulum diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam at lectus. In sagittis
+ultrices mauris. Curabitur malesuada erat sit amet massa. Fusce blandit. Aliquam erat volutpat. Aliquam euismod.
+Aenean vel lectus. Nunc imperdiet justo nec dolor.
+
+Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In mi erat, cursus id, nonummy sed, ullamcorper
+eget, sapien. Praesent pretium, magna in eleifend egestas, pede pede pretium lorem, quis consectetuer tortor sapien
+facilisis magna. Mauris quis magna varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam porttitor quam
+a lacus. Praesent vel arcu ut tortor cursus volutpat. In vitae pede quis diam bibendum placerat. Fusce elementum
+convallis neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut, mi. Duis nec dui quis leo sagittis commodo.
+
+\subparagraph{Fifth level head text}
+
+Aliquam lectus. Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris porttitor pharetra
+tortor. Sed fringilla justo sed mauris. Mauris tellus. Sed non leo. Nullam elementum, magna in cursus sodales, augue
+est scelerisque sapien, venenatis congue nulla arcu et pede. Ut suscipit enim vel sapien. Donec congue. Maecenas
+urna mi, suscipit in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla et nisl.
+
+Etiam ac leo a risus tristique nonummy. Donec dignissim tincidunt nulla. Vestibulum rhoncus molestie odio. Sed
+lobortis, justo et pretium lobortis, mauris turpis condimentum augue, nec ultricies nibh arcu pretium enim. Nunc
+purus neque, placerat id, imperdiet sed, pellentesque nec, nisl. Vestibulum imperdiet neque non sem accumsan laoreet.
+In hac habitasse platea dictumst. Etiam condimentum facilisis libero. Suspendisse in elit quis nisl aliquam dapibus.
+Pellentesque auctor sapien. Sed egestas sapien nec lectus. Pellentesque vel dui vel neque bibendum viverra. Aliquam
+porttitor nisl nec pede. Proin mattis libero vel turpis. Donec rutrum mauris et libero. Proin euismod porta felis.
+Nam lobortis, metus quis elementum commodo, nunc lectus elementum mauris, eget vulputate ligula tellus eu neque.
+Vivamus eu dolor.
+
+in faucibus orci luctus et ultrices posuere cubilia Curae; Proin ut est. Aliquam odio. Pellentesque massa turpis, cursus
+eu, euismod nec, tempor congue, nulla. Duis viverra gravida mauris. Cras tincidunt. Curabitur eros ligula, varius ut,
+pulvinar in, cursus faucibus, augue.
+
+Curabitur tellus magna, porttitor a, commodo a, commodo in, tortor. Donec interdum. Praesent scelerisque. Mae-
+cenas posuere sodales odio. Vivamus metus lacus, varius quis, imperdiet quis, rhoncus a, turpis. Etiam ligula arcu,
+elementum a, venenatis quis, sollicitudin sed, metus. Donec nunc pede, tincidunt in, venenatis vitae, faucibus vel,
+nibh. Pellentesque wisi. Nullam malesuada. Morbi ut tellus ut pede tincidunt porta. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Etiam congue neque id dolor.
+
+Donec et nisl at wisi luctus bibendum. Nam interdum tellus ac libero. Sed sem justo, laoreet vitae, fringilla at,
+adipiscing ut, nibh. Maecenas non sem quis tortor eleifend fermentum. Etiam id tortor ac mauris porta vulputate.
+Integer porta neque vitae massa. Maecenas tempus libero a libero posuere dictum. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Aenean quis mauris sed elit commodo placerat. Class aptent
+taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus rhoncus tincidunt libero.
+Etiam elementum pretium justo. Vivamus est. Morbi a tellus eget pede tristique commodo. Nulla nisl. Vestibulum
+sed nisl eu sapien cursus rutrum.
+
+Nulla non mauris vitae wisi posuere convallis. Sed eu nulla nec eros scelerisque pharetra. Nullam varius. Etiam
+dignissim elementum metus. Vestibulum faucibus, metus sit amet mattis rhoncus, sapien dui laoreet odio, nec ultricies
+nibh augue a enim. Fusce in ligula. Quisque at magna et nulla commodo consequat. Proin accumsan imperdiet sem.
+Nunc porta. Donec feugiat mi at justo. Phasellus facilisis ipsum quis ante. In ac elit eget ipsum pharetra faucibus.
+Maecenas viverra nulla in massa.
+
+Nulla in ipsum. Praesent eros nulla, congue vitae, euismod ut, commodo a, wisi. Pellentesque habitant morbi
+tristique senectus et netus et malesuada fames ac turpis egestas. Aenean nonummy magna non leo. Sed felis erat,
+ullamcorper in, dictum non, ultricies ut, lectus. Proin vel arcu a odio lobortis euismod. Vestibulum ante ipsum primis
+
+
+\begin{center}
+\begin{table*}[t]%
+\caption{This is sample table caption.\label{tab1}}
+\centering
+\begin{tabular*}{500pt}{@{\extracolsep\fill}lccD{.}{.}{3}c@{\extracolsep\fill}}
+\toprule
+&\multicolumn{2}{@{}c@{}}{\textbf{Spanned heading\tnote{1}}} & \multicolumn{2}{@{}c@{}}{\textbf{Spanned heading\tnote{2}}} \\\cmidrule{2-3}\cmidrule{4-5}
+\textbf{col1 head} & \textbf{col2 head}  & \textbf{col3 head}  & \multicolumn{1}{@{}l@{}}{\textbf{col4 head}}  & \textbf{col5 head}   \\
+\midrule
+col1 text & col2 text  & col3 text  & 12.34  & col5 text\tnote{1}   \\
+col1 text & col2 text  & col3 text  & 1.62  & col5 text\tnote{2}   \\
+col1 text & col2 text  & col3 text  & 51.809  & col5 text   \\
+\bottomrule
+\end{tabular*}
+\begin{tablenotes}%%[341pt]
+\item Source: Example for table source text.
+\item[1] Example for a first table footnote.
+\item[2] Example for a second table footnote.
+\end{tablenotes}
+\end{table*}
+\end{center}
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla
+facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
+vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+
+
+
+\begin{center}
+\begin{table}[t]%
+\centering
+\caption{This is sample table caption.\label{tab2}}%
+\begin{tabular*}{500pt}{@{\extracolsep\fill}lcccc@{\extracolsep\fill}}
+\toprule
+\textbf{col1 head} & \textbf{col2 head}  & \textbf{col3 head}  & \textbf{col4 head}  & \textbf{col5 head} \\
+\midrule
+col1 text & col2 text  & col3 text  & col4 text  & col5 text\tnote{$\dagger$}   \\
+col1 text & col2 text  & col3 text  & col4 text  & col5 text   \\
+col1 text & col2 text  & col3 text  & col4 text  & col5 text\tnote{$\ddagger$}   \\
+\bottomrule
+\end{tabular*}
+\begin{tablenotes}
+\item Source: Example for table source text.
+\item[$\dagger$] Example for a first table footnote.
+\item[$\ddagger$] Example for a second table footnote.
+\end{tablenotes}
+\end{table}
+\end{center}
+
+
+
+Below is the example\cite{Liska2010,Kucharik2003,Blanchard2015} for bulleted list. Below is the example for bulleted list. Below is the example for bulleted list. Below is the example for bulleted list. Below is the example for bulleted list. Below is the example for bulleted list\footnote{This is an example for footnote.}:
+\begin{itemize}
+\item bulleted list entry sample bulleted list entry.\cite{Lauritzen2011} sample list entry text. 
+\item bulleted list entry sample bulleted list entry. bulleted list entry sample bulleted list entry. bulleted list entry sample bulleted list entry.
+\item bulleted list entry sample bulleted list entry.\cite{Klima2017} bulleted list entry sample bulleted list entry.\cite{Dukowicz2000} sample list entry text.  bulleted list entry sample bulleted list entry.
+\item sample list entry text. sample list entry text.  
+\end{itemize}
+
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu
+ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum
+eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et
+convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non,
+pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio.
+
+Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non
+odio. Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce
+sed justo eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin
+et quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien
+turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.
+
+
+Below is the sample for description list. Below is the example for description list. Below is the example for description list. Below is the example for description list. Below is the example for description list. Below is the example for description list:\\[12pt]
+
+
+\noindent\textbf{Description sample:}
+
+\begin{description}
+\item[first entry] description text. description text.\cite{Kucharik2011,Kucharik2014,Loubere2005} description text. description text. description text. description text. description text. 
+\item[second long entry] description text. description text. description text. description text. description text. description text. description text. 
+\item[third entry] description text. description text. description text. description text. description text. 
+\item[fourth entry] description text. description text. 
+\end{description}
+
+
+\noindent\textbf{Numbered list items sample:}
+
+\begin{enumerate}[1.]
+\item First level numbered list entry. sample numbered list entry. 
+
+\item First numbered list entry. sample numbered list entry. Numbered list entry.\cite{Caramana1998} sample numbered list entry. Numbered list entry. sample numbered list entry. 
+
+\begin{enumerate}[a.]
+\item Second level alpabetical list entry. Second level alpabetical list entry. Second level alpabetical list entry.\cite{Hoch2009} Second level alpabetical list entry. 
+
+\item Second level alpabetical list entry. Second level alpabetical list entry.\cite{Shashkov1996,Knupp1999,Knupp1999}
+
+\begin{enumerate}[ii.]
+\item Third level lowercase roman numeral list entry. Third level lowercase roman numeral list entry. Third level lowercase roman numeral list entry. 
+
+\item Third level lowercase roman numeral list entry. Third level lowercase roman numeral list entry.\cite{Kamm2000}
+\end{enumerate}
+
+\item Second level alpabetical list entry. Second level alpabetical list entry.\cite{Taylor1937}
+\end{enumerate}
+
+\item First level numbered list entry. sample numbered list entry. Numbered list entry. sample numbered list entry. Numbered list entry. 
+
+\item Another first level numbered list entry. sample numbered list entry. Numbered list entry. sample numbered list entry. Numbered list entry. 
+\end{enumerate}
+
+\noindent\textbf{un-numbered list items sample:}
+
+\begin{enumerate}[]
+\item Sample unnumberd list text..
+\item Sample unnumberd list text.
+\item sample unnumberd list text. 
+\item Sample unnumberd list text.
+\end{enumerate}
+
+\section{Examples for enunciations}\label{sec4}
+
+\begin{theorem}[Theorem subhead]\label{thm1}
+Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text. 
+\end{theorem}
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
+Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat
+quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor
+vitae risus porta vehicula.
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla
+facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
+vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+
+\begin{proposition}
+Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text. 
+\end{proposition}
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
+Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat
+quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor
+vitae risus porta vehicula.
+
+\begin{definition}[Definition sub head]
+Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text.
+\end{definition}
+
+Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non
+odio. Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce
+sed justo eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor.
+Donec pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin
+et quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien
+turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec odio elit,
+dictum in, hendrerit sit amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam
+vestibulum fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. Nulla facilisi.
+Pellentesque eget lectus. Proin eu metus. Sed porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. Ut
+mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante tellus, tristique ut, iaculis eu, malesuada ac, dui.
+Mauris nibh leo, facilisis non, adipiscing quis, ultrices a, dui.
+
+\begin{proof}
+Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. 
+\end{proof}
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
+pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque
+a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt
+urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+\begin{proof}[Proof of Theorem~\ref{thm1}]
+Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. 
+\end{proof}
+
+Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In mi erat, cursus id, nonummy sed, ullamcorper
+eget, sapien. Praesent pretium, magna in eleifend egestas, pede pede pretium lorem, quis consectetuer tortor sapien
+facilisis magna. Mauris quis magna varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam porttitor quam
+a lacus. Praesent vel arcu ut tortor cursus volutpat. In vitae pede quis diam bibendum placerat. Fusce elementum
+convallis neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut, mi. Duis nec dui quis leo sagittis commodo.
+Aliquam lectus. Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris porttitor pharetra tortor. Sed fringilla
+justo sed mauris. Mauris tellus. Sed non leo. Nullam elementum, magna in cursus sodales, augue est scelerisque
+sapien, venenatis congue nulla arcu et pede. Ut suscipit enim vel sapien. Donec congue. Maecenas urna mi, suscipit
+in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla et nisl.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec odio elit,
+dictum in, hendrerit sit amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam
+vestibulum fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. Nulla facilisi.
+Pellentesque eget lectus. Proin eu metus. Sed porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. Ut Curabitur tellus magna, porttitor a, commodo a, commodo in, tortor. Donec interdum. Praesent scelerisque. Mae-
+cenas posuere sodales odio. Vivamus metus lacus, varius quis, imperdiet quis, rhoncus a, turpis. Etiam ligula arcu,
+elementum a, venenatis quis, sollicitudin sed, metus. Donec nunc pede, tincidunt in, venenatis vitae, faucibus vel,
+
+
+\begin{sidewaystable}%[h]
+\caption{Sideways table caption. For decimal alignment refer column 4 to 9 in tabular* preamble.\label{tab3}}%
+\begin{tabular*}{\textheight}{@{\extracolsep\fill}lccD{.}{.}{4}D{.}{.}{4}D{.}{.}{4}D{.}{.}{4}D{.}{.}{4}D{.}{.}{4}@{\extracolsep\fill}}%
+\toprule
+  & \textbf{col2 head} & \textbf{col3 head} & \multicolumn{1}{c}{\textbf{10}} &\multicolumn{1}{c}{\textbf{20}} &\multicolumn{1}{c}{\textbf{30}} &\multicolumn{1}{c}{\textbf{10}} &\multicolumn{1}{c}{\textbf{20}} &\multicolumn{1}{c}{\textbf{30}} \\
+\midrule
+  &col2 text &col3 text &0.7568&1.0530&1.2642&0.9919&1.3541&1.6108 \\
+  & &col2 text &12.5701 &19.6603&25.6809&18.0689&28.4865&37.3011 \\
+3 &col2 text  & col3 text &0.7426&1.0393&1.2507&0.9095&1.2524&1.4958 \\
+  & &col3 text &12.8008&19.9620&26.0324&16.6347&26.0843&34.0765 \\
+  & col2 text & col3 text &0.7285&1.0257&1.2374&0.8195&1.1407&1.3691\tnote{*} \\
+  & & col3 text &13.0360&20.2690&26.3895&15.0812&23.4932&30.6060\tnote{\dagger} \\
+\bottomrule
+\end{tabular*}
+\begin{tablenotes}%%[\textheight]
+\item[*] First sideways table footnote. Sideways table footnote. Sideways table footnote. Sideways table footnote.
+\item[$\dagger$] Second sideways table footnote. Sideways table footnote. Sideways table footnote. Sideways table footnote.
+\end{tablenotes}
+\end{sidewaystable}
+
+\begin{sidewaysfigure}
+\centerline{\includegraphics[width=542pt,height=9pc,draft]{empty}}
+\caption{Sideways figure caption. Sideways figure caption. Sideways figure caption. Sideways figure caption. Sideways figure caption. Sideways figure caption.\label{fig3}}
+\end{sidewaysfigure}
+
+nibh. Pellentesque wisi.\cite{Kucharik2012} Nullam malesuada. Morbi ut tellus ut pede tincidunt porta. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Etiam congue neque id dolor.
+
+\begin{algorithm}
+\caption{Pseudocode for our algorithm}\label{alg1}
+\begin{algorithmic}
+  \For each frame
+  \For water particles $f_{i}$
+  \State compute fluid flow\cite{Hirt1974}
+  \State compute fluid--solid interaction\cite{Benson1992}
+  \State apply adhesion and surface tension\cite{Margolin2003}
+  \EndFor
+   \For solid particles $s_{i}$
+   \For neighboring water particles $f_{j}$
+   \State compute virtual water film \\(see Section~\ref{sec3})
+   \EndFor
+   \EndFor
+   \For solid particles $s_{i}$
+   \For neighboring water particles $f_{j}$
+   \State compute growth direction vector \\(see Section~\ref{sec2})
+   \EndFor
+   \EndFor
+   \For solid particles $s_{i}$
+   \For neighboring water particles $f_{j}$
+   \State compute $F_{\theta}$ (see Section~\ref{sec1})
+   \State compute $CE(s_{i},f_{j})$ \\(see Section~\ref{sec3})
+   \If $CE(b_{i}, f_{j})$ $>$ glaze threshold
+   \State $j$th water particle's phase $\Leftarrow$ ICE
+   \EndIf
+   \If $CE(c_{i}, f_{j})$ $>$ icicle threshold
+   \State $j$th water particle's phase $\Leftarrow$ ICE
+   \EndIf
+   \EndFor
+   \EndFor
+  \EndFor
+\end{algorithmic}
+\end{algorithm}
+
+Donec et nisl at wisi luctus bibendum. Nam interdum tellus ac libero. Sed sem justo, laoreet vitae, fringilla at,
+adipiscing ut, nibh. Maecenas non sem quis tortor eleifend fermentum. Etiam id tortor ac mauris porta vulputate.
+Integer porta neque vitae massa.\cite{Hirt1974,Benson1992}  Maecenas tempus libero a libero posuere dictum. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Aenean quis mauris sed elit commodo placerat. Class aptent
+taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus rhoncus tincidunt libero.
+Etiam elementum pretium justo. Vivamus est. Morbi a tellus eget pede tristique commodo.\cite{Benson1992} Nulla nisl. Vestibulum
+sed nisl eu sapien cursus rutrum.
+
+Pellentesque wisi. Nullam malesuada. Morbi ut tellus ut pede tincidunt porta. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Etiam congue neque id dolor.
+
+Donec et nisl at wisi luctus bibendum. Nam interdum tellus ac libero. Sed sem justo, laoreet vitae, fringilla at,
+adipiscing ut, nibh. Maecenas non sem quis tortor eleifend fermentum. Etiam id tortor ac mauris porta vulputate.
+Integer porta neque vitae massa. Maecenas tempus libero a libero posuere dictum. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Aenean quis mauris sed elit commodo placerat. Class aptent
+taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus rhoncus tincidunt libero.
+Etiam elementum pretium justo. Vivamus est. Morbi a tellus eget pede tristique commodo. Nulla nisl. Vestibulum
+sed nisl eu sapien cursus rutrum.
+
+\begin{equation}\label{eq23}
+ \|\tilde{X}(k)\|^2
+ =\frac{\left\|\sum\limits_{i=1}^{p}\tilde{Y}_i(k)+\sum\limits_{j=1}^{q}\tilde{Z}_j(k) \right\|^2}{(p+q)^2}
+ \leq\frac{\sum\limits_{i=1}^{p}\left\|\tilde{Y}_i(k)\right\|^2+\sum\limits_{j=1}^{q}\left\|\tilde{Z}_j(k)\right\|^2 }{p+q}.
+\end{equation}
+
+Sed feugiat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut pellentesque
+augue sed urna. Vestibulum diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam at lectus. In sagittis
+ultrices mauris. Curabitur malesuada erat sit amet massa. Fusce blandit. Aliquam erat volutpat. Aliquam euismod.
+Aenean vel lectus. Nunc imperdiet justo nec dolor.
+
+Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In mi erat, cursus id, nonummy sed, ullamcorper
+eget, sapien. Praesent pretium, magna in eleifend egestas, pede pede pretium lorem, quis consectetuer tortor sapien
+facilisis magna. Mauris quis magna varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam porttitor quam
+a lacus. Praesent vel arcu ut tortor cursus volutpat. In vitae pede quis diam bibendum placerat. Fusce elementum
+convallis neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut, mi. Duis nec dui quis leo sagittis commodo.
+
+\begin{equation}\label{eq24}
+ \|\tilde{X}(k)\|^2
+ =\frac{\left\|\sum\limits_{i=1}^{p}\tilde{Y}_i(k)+\sum\limits_{j=1}^{q}\tilde{Z}_j(k) \right\|^2}{(p+q)^2}
+ \leq\frac{\sum\limits_{i=1}^{p}\left\|\tilde{Y}_i(k)\right\|^2+\sum\limits_{j=1}^{q}\left\|\tilde{Z}_j(k)\right\|^2 }{p+q}.
+\end{equation}
+
+Aliquam lectus. Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris porttitor pharetra
+tortor. Sed fringilla justo sed mauris. Mauris tellus. Sed non leo. Nullam elementum, magna in cursus sodales, augue
+est scelerisque sapien, venenatis congue nulla arcu et pede. Ut suscipit enim vel sapien. Donec congue. Maecenas
+urna mi, suscipit in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla et nisl.
+
+Etiam ac leo a risus tristique nonummy. Donec dignissim tincidunt nulla. Vestibulum rhoncus molestie odio. Sed
+lobortis, justo et pretium lobortis, mauris turpis condimentum augue, nec ultricies nibh arcu pretium enim. Nunc
+purus neque, placerat id, imperdiet sed, pellentesque nec, nisl. Vestibulum imperdiet neque non sem accumsan laoreet.
+In hac habitasse platea dictumst. Etiam condimentum facilisis libero. Suspendisse in elit quis nisl aliquam dapibus.
+Pellentesque auctor sapien. Sed egestas sapien nec lectus. Pellentesque vel dui vel neque bibendum viverra. Aliquam
+porttitor nisl nec pede. Proin mattis libero vel turpis. Donec rutrum mauris et libero. Proin euismod porta felis.
+Nam lobortis, metus quis elementum commodo, nunc lectus elementum mauris, eget vulputate ligula tellus eu neque.
+Vivamus eu dolor.
+
+
+
+
+\section{Conclusions}\label{sec5}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
+felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
+Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
+sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel
+leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur
+auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam.
+Duis eget orci sit amet orci dignissim rutrum.
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
+pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque
+a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt
+urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
+
+%\backmatter
+
+\section*{Acknowledgments}
+This is acknowledgment text.\cite{Kenamond2013} Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. This is acknowledgment text. Provide text here. 
+
+\subsection*{Author contributions}
+
+This is an author contribution text. This is an author contribution text. This is an author contribution text. This is an author contribution text. This is an author contribution text. 
+
+\subsection*{Financial disclosure}
+
+None reported.
+
+\subsection*{Conflict of interest}
+
+The authors declare no potential conflict of interests.
+
+
+\section*{Supporting information}
+
+The following supporting information is available as part of the online article:
+
+\noindent
+\textbf{Figure S1.}
+{500{\uns}hPa geopotential anomalies for GC2C calculated against the ERA Interim reanalysis. The period is 1989--2008.}
+
+\noindent
+\textbf{Figure S2.}
+{The SST anomalies for GC2C calculated against the observations (OIsst).}
+
+
+\appendix
+
+\section{Section title of first appendix\label{app1}}
+
+Use \verb+\begin{verbatim}...\end{verbatim}+ for program codes without math. Use \verb+\begin{alltt}...\end{alltt}+ for program codes with math. Based on the text provided inside the optional argument of \verb+\begin{code}[Psecode|Listing|Box|Code|+\hfill\break \verb+Specification|Procedure|Sourcecode|Program]...+ \verb+\end{code}+ tag corresponding boxed like floats are generated. Also note that \verb+\begin{code}[Code|Listing]...+ \verb+\end{code}+ tag with either Code or Listing text as optional argument text are set with computer modern typewriter font.  All other code environments are set with normal text font. Refer below example:
+
+\begin{lstlisting}[caption={Descriptive Caption Text},label=DescriptiveLabel]
+for i:=maxint to 0 do
+begin
+{ do nothing }
+end;
+Write('Case insensitive ');
+WritE('Pascal keywords.');
+\end{lstlisting}
+
+
+
+\subsection{Subsection title of first appendix\label{app1.1a}}
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
+pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque
+a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt
+urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+\subsubsection{Subsection title of first appendix\label{app1.1.1a}}
+
+\noindent\textbf{Unnumbered figure}
+
+
+\begin{center}
+\includegraphics[width=7pc,height=8pc,draft]{empty}
+\end{center}
+
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla
+facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
+vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu
+ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum
+eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et
+convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non,
+pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio.
+
+\section{Section title of second appendix\label{app2}}%
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla
+facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et
+vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu
+ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum
+eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et
+convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non,
+pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio.
+
+%== Figure 4 ==
+%% Example for figure inside appendix
+\begin{figure}[t]
+\centerline{\includegraphics[height=10pc,width=78mm,draft]{empty}}
+\caption{This is an example for appendix figure.\label{fig5}}
+\end{figure}
+
+\subsection{Subsection title of second appendix\label{app2.1a}}
+
+Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non odio.
+Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce sed justo
+eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor. Donec
+pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin et quam.
+Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien turpis,
+fermentum vel, eleifend faucibus, vehicula eu, lacus.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec odio elit,
+dictum in, hendrerit sit amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam
+vestibulum fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. Nulla facilisi.
+Pellentesque eget lectus. Proin eu metus. Sed porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. Ut
+mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante tellus, tristique ut, iaculis eu, malesuada ac, dui.
+Mauris nibh leo, facilisis non, adipiscing quis, ultrices a, dui.
+
+\subsubsection{Subsection title of second appendix\label{app2.1.1a}}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
+felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
+Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
+sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel
+leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur
+auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam.
+Duis eget orci sit amet orci dignissim rutrum.
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
+pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque
+a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt
+urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
+
+\begin{center}
+\begin{table}[b]%
+\centering
+\caption{This is an example of Appendix table showing food requirements of army, navy and airforce.\label{tab4}}%
+\begin{tabular*}{300pt}{@{\extracolsep\fill}lcc@{\extracolsep\fill}}%
+\toprule
+\textbf{col1 head} & \textbf{col2 head} & \textbf{col3 head} \\
+\midrule
+col1 text & col2 text & col3 text \\
+col1 text & col2 text & col3 text \\
+col1 text & col2 text & col3 text\\
+\bottomrule
+\end{tabular*}
+\end{table}
+\end{center}
+
+
+Example for an equation inside appendix
+\begin{equation}
+\mathcal{L}\quad \mathbf{\mathcal{L}} = i \bar{\psi} \gamma^\mu D_\mu \psi - \frac{1}{4} F_{\mu\nu}^a F^{a\mu\nu} - m \bar{\psi} \psi\label{eq25}
+\end{equation}
+
+\section{Example of another appendix section\label{app3}}%
+
+This is sample for paragraph text this is sample for paragraph text  this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text this is sample for paragraph text
+
+
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
+pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque
+a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt
+urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+
+\begin{equation}
+\mathcal{L} = i \bar{\psi} \gamma^\mu D_\mu \psi
+    - \frac{1}{4} F_{\mu\nu}^a F^{a\mu\nu} - m \bar{\psi} \psi
+\label{eq26}
+\end{equation}
+
+Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus
+viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum
+pellentesque felis eu massa.
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
+Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat
+quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor
+vitae risus porta vehicula.
+
+
+\begin{center}
+\begin{tabular*}{300pt}{@{\extracolsep\fill}lcc@{\extracolsep\fill}}%
+\toprule
+\textbf{col1 head} & \textbf{col2 head} & \textbf{col3 head} \\
+\midrule
+col1 text & col2 text & col3 text \\
+col1 text & col2 text & col3 text \\
+col1 text & col2 text & col3 text \\
+\bottomrule
+\end{tabular*}
+\end{center}
+
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit
+amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis.
+Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat
+quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor
+vitae risus porta vehicula.
+
+Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus, ac
+venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue
+quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla
+facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, evehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
+Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec odio elit,
+dictum in, hendrerit sit amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. Integer vitae justo. Aliquam
+vestibulum fringilla lorem. Sed neque lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. Nulla facilisi.
+Pellentesque eget lectus. Proin eu metus. Sed porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. Ut
+mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante tellus, tristique ut, iaculis eu, malesuada ac, dui.
+Mauris nibh leo, facilisis non, adipiscing quis, ultrices a, dui.
+
+\nocite{*}% Show all bib entries - both cited and uncited; comment this line to view only cited bib entries;
+\bibliography{wileyNJD-AMA}%
+
+\clearpage
+
+\section*{Author Biography}
+
+\begin{biography}{\includegraphics[width=66pt,height=86pt,draft]{empty}}{\textbf{Author Name.} This is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text this is sample author biography text.}
+\end{biography}
+
+\end{document}
Index: doc/papers/general/Makefile
===================================================================
--- doc/papers/general/Makefile	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/Makefile	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -3,10 +3,10 @@
 Build = build
 Figures = figures
-Macros = ../../LaTeXmacros
+Macros = AMA/AMA-stix/ama
 TeXLIB = .:${Macros}:${Build}:../../bibliography:
 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error -output-directory=${Build}
 BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
 
-MAKEFLAGS = --no-print-directory --silent #
+MAKEFLAGS = --no-print-directory # --silent
 VPATH = ${Build} ${Figures} evaluation
 
@@ -34,4 +34,5 @@
 
 DOCUMENT = Paper.pdf
+BASE = ${basename ${DOCUMENT}}
 
 # Directives #
@@ -42,22 +43,22 @@
 
 clean :
-	@rm -frv ${DOCUMENT} ${basename ${DOCUMENT}}.ps ${Build}
+	@rm -frv ${DOCUMENT} ${BASE}.ps WileyNJD-AMA.bst ${BASE}.out.ps ${Build}
 
 # File Dependencies #
 
-${DOCUMENT} : ${basename ${DOCUMENT}}.ps
+${DOCUMENT} : ${BASE}.ps
 	ps2pdf $<
 
-${basename ${DOCUMENT}}.ps : ${basename ${DOCUMENT}}.dvi
+${BASE}.ps : ${BASE}.dvi
 	dvips ${Build}/$< -o $@
 
-${basename ${DOCUMENT}}.dvi : Makefile ${Build} ${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} \
-		${Macros}/common.tex ${Macros}/indexstyle ../../bibliography/pl.bib
+${BASE}.dvi : Makefile ${Build} ${BASE}.out.ps WileyNJD-AMA.bst ${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} \
+		../../bibliography/pl.bib
 	# Must have *.aux file containing citations for bibtex
 	if [ ! -r ${basename $@}.aux ] ; then ${LaTeX} ${basename $@}.tex ; fi
-	-${BibTeX} ${Build}/${basename $@}
+	${BibTeX} ${Build}/${basename $@}
 	# Some citations reference others so run again to resolve these citations
 	${LaTeX} ${basename $@}.tex
-	-${BibTeX} ${Build}/${basename $@}
+	${BibTeX} ${Build}/${basename $@}
 	# Run again to finish citations
 	${LaTeX} ${basename $@}.tex
@@ -67,4 +68,10 @@
 ${Build}:
 	mkdir -p ${Build}
+
+${BASE}.out.ps:
+	ln -fs build/Paper.out.ps .
+
+WileyNJD-AMA.bst:
+	ln -fs AMA/AMA-stix/ama/WileyNJD-AMA.bst .
 
 ${GRAPHS} : timing.gp timing.dat
Index: doc/papers/general/Paper.tex
===================================================================
--- doc/papers/general/Paper.tex	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/Paper.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -1,28 +1,35 @@
-\documentclass{article}
-
-\usepackage{fullpage}
+\documentclass[AMA,STIX1COL]{WileyNJD-v2}
+
+\articletype{RESEARCH ARTICLE}%
+
+\received{26 April 2016}
+\revised{6 June 2016}
+\accepted{6 June 2016}
+
+\raggedbottom
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Latex packages used in the document.
+
 \usepackage{epic,eepic}
-\usepackage{xspace,calc,comment}
+\usepackage{xspace}
+\usepackage{comment}
 \usepackage{upquote}						% switch curled `'" to straight
 \usepackage{listings}						% format program code
-\usepackage{enumitem}
-\setlist[itemize]{topsep=3pt,itemsep=2pt,parsep=0pt}% global
-\usepackage[flushmargin]{footmisc}			% support label/reference in footnote
-\usepackage{rotating}
-\usepackage[usenames]{color}
-\usepackage{pslatex}						% reduce size of san serif font
-\usepackage[plainpages=false,pdfpagelabels,pdfpagemode=UseNone,pagebackref=true,breaklinks=true,colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue]{hyperref}
-\urlstyle{sf}
-\usepackage{breakurl}
-
-\setlength{\textheight}{9in}
-%\oddsidemargin 0.0in
-\renewcommand{\topfraction}{0.8}			% float must be greater than X of the page before it is forced onto its own page
-\renewcommand{\bottomfraction}{0.8}			% float must be greater than X of the page before it is forced onto its own page
-\renewcommand{\floatpagefraction}{0.8}		% float must be greater than X of the page before it is forced onto its own page
-\renewcommand{\textfraction}{0.0}			% the entire page maybe devoted to floats with no text on the page at all
+%\usepackage{enumitem}
+%\setlist[itemize]{topsep=3pt,itemsep=2pt,parsep=0pt}% global
+%\usepackage{rotating}
+
+\hypersetup{breaklinks=true}
+\definecolor{ForestGreen}{cmyk}{1, 0, 0.99995, 0}
+
+\usepackage[pagewise]{lineno}
+\renewcommand{\linenumberfont}{\scriptsize\sffamily}
 
 \lefthyphenmin=4							% hyphen only after 4 characters
 \righthyphenmin=4
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 % Names used in the document.
@@ -64,5 +71,5 @@
 \newlength{\gcolumnposn}					% temporary hack because lstlisting does not handle tabs correctly
 \newlength{\columnposn}
-\setlength{\gcolumnposn}{2.75in}
+\setlength{\gcolumnposn}{3.5in}
 \setlength{\columnposn}{\gcolumnposn}
 \newcommand{\C}[2][\@empty]{\ifx#1\@empty\else\global\setlength{\columnposn}{#1}\global\columnposn=\columnposn\fi\hfill\makebox[\textwidth-\columnposn][l]{\lst@basicstyle{\LstCommentStyle{#2}}}}
@@ -97,5 +104,5 @@
 }%
 \newcommand{\ETAL}{\abbrevFont{et}~\abbrevFont{al}}
-\newcommand*{\etal}{%
+\renewcommand*{\etal}{%
 	\@ifnextchar{.}{\protect\ETAL}%
 		{\protect\ETAL.\xspace}%
@@ -145,12 +152,9 @@
 belowskip=3pt,
 % replace/adjust listing characters that look bad in sanserif
-literate={-}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.8ex}{0.1ex}}}}1 {^}{\raisebox{0.6ex}{$\scriptscriptstyle\land\,$}}1
-	{~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1 {@}{\small{@}}1 % {`}{\ttfamily\upshape\hspace*{-0.1ex}`}1
-	{<-}{$\leftarrow$}2 {=>}{$\Rightarrow$}2 {->}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.8ex}{0.075ex}}}\kern-0.2ex\textgreater}2,
+literate={-}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.8ex}{0.1ex}}}}1 {^}{\raisebox{0.6ex}{$\scriptstyle\land\,$}}1
+	{~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1 % {`}{\ttfamily\upshape\hspace*{-0.1ex}`}1
+	{<-}{$\leftarrow$}2 {=>}{$\Rightarrow$}2 {->}{\makebox[1ex][c]{\raisebox{0.5ex}{\rule{0.8ex}{0.075ex}}}\kern-0.2ex{\textgreater}}2,
 moredelim=**[is][\color{red}]{`}{`},
 }% lstset
-
-% inline code @...@
-\lstMakeShortInline@%
 
 \lstnewenvironment{cfa}[1][]
@@ -161,29 +165,22 @@
 {}
 
-
-\title{\protect\CFA : Adding Modern Programming Language Features to C}
-
-\author{Aaron Moss, Robert Schluntz, Peter Buhr}
-% \email{a3moss@uwaterloo.ca}
-% \email{rschlunt@uwaterloo.ca}
-% \email{pabuhr@uwaterloo.ca}
-% \affiliation{%
-% 	\institution{University of Waterloo}
-% 	\department{David R. Cheriton School of Computer Science}
-% 	\streetaddress{Davis Centre, University of Waterloo}
-% 	\city{Waterloo}
-% 	\state{ON}
-% 	\postcode{N2L 3G1}
-% 	\country{Canada}
-% }
-
-%\terms{generic, tuple, variadic, types}
-%\keywords{generic types, tuple types, variadic types, polymorphic functions, C, Cforall}
-
-\begin{document}
-\maketitle
-
-
-\begin{abstract}
+% inline code @...@
+\lstMakeShortInline@%
+
+
+\title{\texorpdfstring{\protect\CFA : Adding Modern Programming Language Features to C}{Cforall : Adding Modern Programming Language Features to C}}
+
+\author[1]{Aaron Moss}
+\author[1]{Robert Schluntz}
+\author[1]{Peter A. Buhr*}
+\authormark{Aaron Moss \textsc{et al}}
+
+\address[1]{\orgdiv{David R. Cheriton School of Computer Science}, \orgname{University of Waterloo}, \orgaddress{\state{Ontario}, \country{Canada}}}
+
+\corres{*Peter A. Buhr, \email{pabuhr{\char`\@}uwaterloo.ca}}
+\presentaddress{David R. Cheriton School of Computer Science, University of Waterloo, Waterloo, ON, N2L 3G1, Canada}
+
+
+\abstract[Summary]{
 The C programming language is a foundational technology for modern computing with millions of lines of code implementing everything from commercial operating-systems to hobby projects.
 This installation base and the programmers producing it represent a massive software-engineering investment spanning decades and likely to continue for decades more.
@@ -195,5 +192,13 @@
 This paper presents a quick tour of \CFA features showing how their design avoids shortcomings of similar features in C and other C-like languages.
 Finally, experimental results are presented to validate several of the new features.
-\end{abstract}
+}%
+
+\keywords{generic types, tuple types, variadic types, polymorphic functions, C, Cforall}
+
+
+\begin{document}
+\linenumbers                                            % comment out to turn off line numbering
+
+\maketitle
 
 
@@ -217,5 +222,5 @@
 Love it or hate it, C is extremely popular, highly used, and one of the few systems languages.
 In many cases, \CC is often used solely as a better C.
-Nonetheless, C, first standardized over thirty years ago, lacks many features that make programming in more modern languages safer and more productive.
+Nevertheless, C, first standardized over thirty years ago, lacks many features that make programming in more modern languages safer and more productive.
 
 \CFA (pronounced ``C-for-all'', and written \CFA or Cforall) is an evolutionary extension of the C programming language that aims to add modern language features to C while maintaining both source compatibility with C and a familiar programming model for programmers.
@@ -230,5 +235,5 @@
 \CFA is currently implemented as a source-to-source translator from \CFA to the gcc-dialect of C~\cite{GCCExtensions}, allowing it to leverage the portability and code optimizations provided by gcc, meeting goals (1)--(3).
 Ultimately, a compiler is necessary for advanced features and optimal performance.
-All of the features discussed in this paper are working, unless a feature states it is a future feature for completion.
+All features discussed in this paper are working, unless otherwise stated as under construction.
 
 Finally, it is impossible to describe a programming language without usages before definitions.
@@ -258,12 +263,12 @@
 
 \begin{cfa}
-int max = 2147483647;						$\C[3.75in]{// (1)}$
+int max = 2147483647;					$\C[4in]{// (1)}$
 double max = 1.7976931348623157E+308;	$\C{// (2)}$
 int max( int a, int b ) { return a < b ? b : a; }  $\C{// (3)}$
 double max( double a, double b ) { return a < b ? b : a; }  $\C{// (4)}\CRT$
-max( 7, -max );								$\C{// uses (3) and (1), by matching int from constant 7}$
-max( max, 3.14 );							$\C{// uses (4) and (2), by matching double from constant 3.14}$
-max( max, -max );							$\C{// ERROR: ambiguous}$
-int m = max( max, -max );					$\C{// uses (3) and (1) twice, by matching return type}$
+max( 7, -max );						$\C[2.75in]{// uses (3) and (1), by matching int from constant 7}$
+max( max, 3.14 );					$\C{// uses (4) and (2), by matching double from constant 3.14}$
+max( max, -max );					$\C{// ERROR: ambiguous}$
+int m = max( max, -max );			$\C{// uses (3) and (1) twice, by matching return type}\CRT$
 \end{cfa}
 
@@ -292,5 +297,5 @@
 \begin{cfa}
 `forall( otype T )` T identity( T val ) { return val; }
-int forty_two = identity( 42 );				$\C{// T is bound to int, forty\_two == 42}$
+int forty_two = identity( 42 );		$\C{// T is bound to int, forty\_two == 42}$
 \end{cfa}
 This @identity@ function can be applied to any complete \newterm{object type} (or @otype@).
@@ -306,5 +311,5 @@
 For example, the function @twice@ can be defined using the \CFA syntax for operator overloading:
 \begin{cfa}
-forall( otype T `| { T ?+?(T, T); }` ) T twice( T x ) { return x `+` x; }	$\C{// ? denotes operands}$
+forall( otype T `| { T ?+?(T, T); }` ) T twice( T x ) { return x `+` x; }  $\C{// ? denotes operands}$
 int val = twice( twice( 3.7 ) );
 \end{cfa}
@@ -325,5 +330,5 @@
 }
 double key = 5.0, vals[10] = { /* 10 sorted float values */ };
-double * val = (double *)bsearch( &key, vals, 10, sizeof(vals[0]), comp );	$\C{// search sorted array}$
+double * val = (double *)bsearch( &key, vals, 10, sizeof(vals[0]), comp ); $\C{// search sorted array}$
 \end{cfa}
 which can be augmented simply with a generalized, type-safe, \CFA-overloaded wrappers:
@@ -335,7 +340,7 @@
 forall( otype T | { int ?<?( T, T ); } ) unsigned int bsearch( T key, const T * arr, size_t size ) {
 	T * result = bsearch( key, arr, size );	$\C{// call first version}$
-	return result ? result - arr : size;	$\C{// pointer subtraction includes sizeof(T)}$
-}
-double * val = bsearch( 5.0, vals, 10 );	$\C{// selection based on return type}$
+	return result ? result - arr : size; $\C{// pointer subtraction includes sizeof(T)}$
+}
+double * val = bsearch( 5.0, vals, 10 ); $\C{// selection based on return type}$
 int posn = bsearch( 5.0, vals, 10 );
 \end{cfa}
@@ -361,5 +366,5 @@
 forall( otype T | { int ?<?( T, T ); } ) void qsort( const T * arr, size_t size ) { /* use C qsort */ }
 {
-	int ?<?( double x, double y ) { return x `>` y; }	$\C{// locally override behaviour}$
+	int ?<?( double x, double y ) { return x `>` y; } $\C{// locally override behaviour}$
 	qsort( vals, size );					$\C{// descending sort}$
 }
@@ -367,4 +372,13 @@
 Within the block, the nested version of @?<?@ performs @?>?@ and this local version overrides the built-in @?<?@ so it is passed to @qsort@.
 Hence, programmers can easily form local environments, adding and modifying appropriate functions, to maximize reuse of other existing functions and types.
+
+Under construction is a mechanism to distribute @forall@ over routines/types, where each block declaration is prefixed with the initial @forall@ clause significantly reducing duplication (see @stack@ examples in Section~\ref{sec:eval}):
+\begin{cfa}
+forall( otype `T` ) {							$\C{// forall block}$
+	struct stack { stack_node(`T`) * head; };	$\C{// generic type}$
+	void push( stack(`T`) & s, `T` value ) ...	$\C{// generic operations}$
+	T pop( stack(`T`) & s ) ...
+}
+\end{cfa}
 
 
@@ -378,10 +392,11 @@
 	T ?+=?( T *, T );
 	T ++?( T * );
-	T ?++( T * ); };
-
+	T ?++( T * );
+};
 forall( otype T `| summable( T )` ) T sum( T a[$\,$], size_t size ) {  // use trait
 	`T` total = { `0` };					$\C{// instantiate T from 0 by calling its constructor}$
 	for ( unsigned int i = 0; i < size; i += 1 ) total `+=` a[i]; $\C{// select appropriate +}$
-	return total; }
+	return total;
+}
 \end{cfa}
 
@@ -392,5 +407,6 @@
 	void ?{}( T &, T );						$\C{// copy constructor}$
 	void ?=?( T &, T );						$\C{// assignment operator}$
-	void ^?{}( T & ); };					$\C{// destructor}$
+	void ^?{}( T & );						$\C{// destructor}$
+};
 \end{cfa}
 Given the information provided for an @otype@, variables of polymorphic type can be treated as if they were a complete type: stack-allocatable, default or copy-initialized, assigned, and deleted.
@@ -436,5 +452,5 @@
 One approach is to write bespoke data-structures for each context in which they are needed.
 While this approach is flexible and supports integration with the C type-checker and tooling, it is also tedious and error-prone, especially for more complex data structures.
-A second approach is to use @void *@ based polymorphism, \eg the C standard-library functions @bsearch@ and @qsort@, which allow reuse of code with common functionality.
+A second approach is to use @void *@-based polymorphism, \eg the C standard-library functions @bsearch@ and @qsort@, which allow reuse of code with common functionality.
 However, basing all polymorphism on @void *@ eliminates the type-checker's ability to ensure that argument types are properly matched, often requiring a number of extra function parameters, pointer indirection, and dynamic allocation that is not otherwise needed.
 A third approach to generic code is to use preprocessor macros, which does allow the generated code to be both generic and type-checked, but errors may be difficult to interpret.
@@ -526,5 +542,5 @@
 Results of these layout functions are cached so that they are only computed once per type per function. %, as in the example below for @pair@.
 Layout functions also allow generic types to be used in a function definition without reflecting them in the function signature.
-For instance, a function that strips duplicate values from an unsorted @vector(T)@ would likely have a pointer to the vector as its only explicit parameter, but use some sort of @set(T)@ internally to test for duplicate values.
+For instance, a function that strips duplicate values from an unsorted @vector(T)@ likely has a pointer to the vector as its only explicit parameter, but uses some sort of @set(T)@ internally to test for duplicate values.
 This function could acquire the layout for @set(T)@ by calling its layout function with the layout of @T@ implicitly passed into the function.
 
@@ -553,5 +569,5 @@
 struct litres {};
 
-forall( dtype U) scalar(U) ?+?( scalar(U) a, scalar(U) b ) {
+forall( dtype U ) scalar(U) ?+?( scalar(U) a, scalar(U) b ) {
 	return (scalar(U)){ a.value + b.value };
 }
@@ -592,7 +608,7 @@
 [ q, r ] = div( 13.5, 5.2 );				$\C{// assign into tuple}$
 \end{cfa}
-Clearly, this approach is straightforward to understand and use;
+This approach is straightforward to understand and use;
 therefore, why do few programming languages support this obvious feature or provide it awkwardly?
-The answer is that there are complex consequences that cascade through multiple aspects of the language, especially the type-system.
+To answer, there are complex consequences that cascade through multiple aspects of the language, especially the type-system.
 This section show these consequences and how \CFA handles them.
 
@@ -644,5 +660,5 @@
 p`->0` = 5;									$\C{// change quotient}$
 bar( qr`.1`, qr );							$\C{// pass remainder and quotient/remainder}$
-rem = [div( 13, 5 ), 42]`.0.1`;				$\C{// access 2nd component of 1st component of tuple expression}$
+rem = [div( 13, 5 ), 42]`.0.1`;				$\C{// access 2nd component of 1st component}$
 \end{cfa}
 
@@ -653,23 +669,14 @@
 Tuple flattening recursively expands a tuple into the list of its basic components.
 Tuple structuring packages a list of expressions into a value of tuple type, \eg:
-%\lstDeleteShortInline@%
-%\par\smallskip
-%\begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}}
 \begin{cfa}
 int f( int, int );
-int g( [int, int] );
-int h( int, [int, int] );
+[int] g( [int, int] );
+[int] h( int, [int, int] );
 [int, int] x;
 int y;
-f( x );			$\C{// flatten}$
-g( y, 10 );		$\C{// structure}$
-h( x, y );		$\C{// flatten and structure}$
-\end{cfa}
-%\end{cfa}
-%&
-%\begin{cfa}
-%\end{tabular}
-%\smallskip\par\noindent
-%\lstMakeShortInline@%
+f( x );										$\C{// flatten}$
+g( y, 10 );									$\C{// structure}$
+h( x, y );									$\C{// flatten and structure}$
+\end{cfa}
 In the call to @f@, @x@ is implicitly flattened so the components of @x@ are passed as the two arguments.
 In the call to @g@, the values @y@ and @10@ are structured into a single argument of type @[int, int]@ to match the parameter type of @g@.
@@ -682,7 +689,4 @@
 An assignment where the left side is a tuple type is called \newterm{tuple assignment}.
 There are two kinds of tuple assignment depending on whether the right side of the assignment operator has a tuple type or a non-tuple type, called \newterm{multiple} and \newterm{mass assignment}, respectively.
-%\lstDeleteShortInline@%
-%\par\smallskip
-%\begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}}
 \begin{cfa}
 int x = 10;
@@ -694,10 +698,4 @@
 [y, x] = 3.14;								$\C{// mass assignment}$
 \end{cfa}
-%\end{cfa}
-%&
-%\begin{cfa}
-%\end{tabular}
-%\smallskip\par\noindent
-%\lstMakeShortInline@%
 Both kinds of tuple assignment have parallel semantics, so that each value on the left and right side is evaluated before any assignments occur.
 As a result, it is possible to swap the values in two variables without explicitly creating any temporary variables or calling a function, \eg, @[x, y] = [y, x]@.
@@ -708,5 +706,5 @@
 This example shows mass, multiple, and cascading assignment used in one expression:
 \begin{cfa}
-void f( [int, int] );
+[void] f( [int, int] );
 f( [x, y] = z = 1.5 );						$\C{// assignments in parameter list}$
 \end{cfa}
@@ -723,7 +721,4 @@
 Here, the mass assignment sets all members of @s@ to zero.
 Since tuple-index expressions are a form of member-access expression, it is possible to use tuple-index expressions in conjunction with member tuple expressions to manually restructure a tuple (\eg rearrange, drop, and duplicate components).
-%\lstDeleteShortInline@%
-%\par\smallskip
-%\begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}}
 \begin{cfa}
 [int, int, long, double] x;
@@ -733,10 +728,4 @@
 [int, int, int] y = x.[2, 0, 2];			$\C{// duplicate: [y.0, y.1, y.2] = [x.2, x.0.x.2]}$
 \end{cfa}
-%\end{cfa}
-%&
-%\begin{cfa}
-%\end{tabular}
-%\smallskip\par\noindent
-%\lstMakeShortInline@%
 It is also possible for a member access to contain other member accesses, \eg:
 \begin{cfa}
@@ -796,5 +785,5 @@
 Since @void@ is effectively a 0-element tuple, (3) discards the first and third return values, which is effectively equivalent to @[(int)(g().1.0), (int)(g().1.1)]@).
 
-Note that a cast is not a function call in \CFA, so flattening and structuring conversions do not occur for cast expressions\footnote{User-defined conversions have been considered, but for compatibility with C and the existing use of casts as type ascription, any future design for such conversions would require more precise matching of types than allowed for function arguments and parameters.}.
+Note that a cast is not a function call in \CFA, so flattening and structuring conversions do not occur for cast expressions\footnote{User-defined conversions have been considered, but for compatibility with C and the existing use of casts as type ascription, any future design for such conversions requires more precise matching of types than allowed for function arguments and parameters.}.
 As such, (4) is invalid because the cast target type contains 4 components, while the source type contains only 3.
 Similarly, (5) is invalid because the cast @([int, int, int])(g().1)@ is invalid.
@@ -813,5 +802,5 @@
 where @[5, "hello"]@ is flattened, giving argument list @5, "hello"@, and @T@ binds to @int@ and @U@ binds to @const char@.
 Tuples, however, may contain polymorphic components.
-For example, a plus operator can be written to add two triples together.
+For example, a plus operator can be written to sum two triples.
 \begin{cfa}
 forall( otype T | { T ?+?( T, T ); } ) [T, T, T] ?+?( [T, T, T] x, [T, T, T] y ) {
@@ -825,5 +814,5 @@
 Flattening and restructuring conversions are also applied to tuple types in polymorphic type assertions.
 \begin{cfa}
-int f( [int, double], double );
+[int] f( [int, double], double );
 forall( otype T, otype U | { T f( T, U, U ); } ) void g( T, U );
 g( 5, 10.21 );
@@ -836,5 +825,5 @@
 % \end{cfa}
 % so the thunk provides flattening and structuring conversions to inferred functions, improving the compatibility of tuples and polymorphism.
-% These thunks are generated locally using gcc nested-functions, rather hositing them to the external scope, so they can easily access local state.
+% These thunks are generated locally using gcc nested-functions, rather hoisting them to the external scope, so they can easily access local state.
 
 
@@ -847,8 +836,8 @@
 As such, @ttype@ variables are also called \newterm{argument packs}.
 
-Like variadic templates, the main way to manipulate @ttype@ polymorphic functions is via recursion.
+Like variadic templates, @ttype@ polymorphic functions are primarily manipulated via recursion.
 Since nothing is known about a parameter pack by default, assertion parameters are key to doing anything meaningful.
 Unlike variadic templates, @ttype@ polymorphic functions can be separately compiled.
-For example, a generalized @sum@ function written using @ttype@:
+For example, a generalized @sum@ function:
 \begin{cfa}
 int sum$\(_0\)$() { return 0; }
@@ -1028,6 +1017,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
 \begin{cfa}
 case 2, 10, 34, 42:
@@ -1040,9 +1029,9 @@
 \lstMakeShortInline@%
 \end{cquote}
-for a contiguous list:\footnote{gcc has the same mechanism but awkward syntax, \lstinline@2 ...42@, because a space is required after a number, otherwise the period is a decimal point.}
+for a contiguous list:\footnote{gcc has the same mechanism but awkward syntax, \lstinline@2 ...42@, as a space is required after a number, otherwise the first period is a decimal point.}
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
 \begin{cfa}
 case 2~42:
@@ -1060,5 +1049,5 @@
 \end{cfa}
 
-C allows placement of @case@ clauses \emph{within} statements nested in the @switch@ body (see Duff's device~\cite{Duff83});
+C allows placement of @case@ clauses \emph{within} statements nested in the @switch@ body (called Duff's device~\cite{Duff83});
 \begin{cfa}
 switch ( i ) {
@@ -1071,5 +1060,5 @@
 }
 \end{cfa}
-\CFA precludes this form of transfer into a control structure because it causes undefined behaviour, especially with respect to missed initialization, and provides very limited functionality.
+\CFA precludes this form of transfer \emph{into} a control structure because it causes undefined behaviour, especially with respect to missed initialization, and provides very limited functionality.
 
 C allows placement of declaration within the @switch@ body and unreachable code at the start, resulting in undefined behaviour:
@@ -1136,6 +1125,10 @@
 \end{figure}
 
-Finally, @fallthrough@ may appear in contexts other than terminating a @case@ clause, and have an explicit transfer label allowing separate cases but common final-code for a set of cases:
-\begin{cquote}
+Finally, Figure~\ref{f:FallthroughStatement} shows @fallthrough@ may appear in contexts other than terminating a @case@ clause, and have an explicit transfer label allowing separate cases but common final-code for a set of cases.
+The target label must be below the @fallthrough@ and may not be nested in a control structure, \ie @fallthrough@ cannot form a loop, and the target label must be at the same or higher level as the containing @case@ clause and located at the same level as a @case@ clause;
+the target label may be case @default@, but only associated with the current @switch@/@choose@ statement.
+
+\begin{figure}
+\centering
 \lstDeleteShortInline@%
 \begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
@@ -1159,5 +1152,5 @@
   case 4:
 	... `fallthrough common;`
-  common:
+  `common`: // below fallthrough at same level as case clauses
 	...	 // common code for cases 3 and 4
 	// implicit break
@@ -1166,8 +1159,7 @@
 \end{tabular}
 \lstMakeShortInline@%
-\end{cquote}
-The target label may be case @default@.
-
-Collectively, these control-structure enhancements reduce programmer burden and increase readability and safety.
+\caption{\lstinline|fallthrough| Statement}
+\label{f:FallthroughStatement}
+\end{figure}
 
 
@@ -1299,5 +1291,5 @@
 	R r;
 	... `resume( r );` ...
-	... r.fix // control does return here after handler
+	... r.fix // control returns here after handler
 }
 `try` {
@@ -1412,6 +1404,6 @@
 
 
-\subsection{\texorpdfstring{\protect\lstinline{with} Clause / Statement}{with Clause / Statement}}
-\label{s:WithClauseStatement}
+\subsection{\texorpdfstring{\protect\lstinline{with} Statement}{with Statement}}
+\label{s:WithStatement}
 
 Grouping heterogeneous data into \newterm{aggregate}s (structure/union) is a common programming practice, and an aggregate can be further organized into more complex structures, such as arrays and containers:
@@ -1433,19 +1425,19 @@
 A similar situation occurs in object-oriented programming, \eg \CC:
 \begin{C++}
-class C {
+struct S {
 	char c;									$\C{// fields}$
 	int i;
 	double d;
-	int f() {								$\C{// implicit ``this'' aggregate}$
+	void f() {								$\C{// implicit ``this'' aggregate}$
 		`this->`c; `this->`i; `this->`d;	$\C{// access containing fields}$
 	}
 }
 \end{C++}
-Object-oriented nesting of member functions in a \lstinline[language=C++]@class@ allows eliding \lstinline[language=C++]@this->@ because of lexical scoping.
+Object-oriented nesting of member functions in a \lstinline[language=C++]@class/struct@ allows eliding \lstinline[language=C++]@this->@ because of lexical scoping.
 However, for other aggregate parameters, qualification is necessary:
 \begin{cfa}
 struct T { double m, n; };
-int C::f( T & t ) {							$\C{// multiple aggregate parameters}$
-	c; i; d;								$\C{\color{red}// this-\textgreater.c, this-\textgreater.i, this-\textgreater.d}$
+int S::f( T & t ) {							$\C{// multiple aggregate parameters}$
+	c; i; d;								$\C{\color{red}// this--{\textgreater}.c, this--{\textgreater}.i, this--{\textgreater}.d}$
 	`t.`m; `t.`n;							$\C{// must qualify}$
 }
@@ -1461,5 +1453,5 @@
 with the generality of opening multiple aggregate-parameters:
 \begin{cfa}
-int f( S & s, T & t ) `with ( s, t )` {		$\C{// multiple aggregate parameters}$
+void f( S & s, T & t ) `with ( s, t )` {		$\C{// multiple aggregate parameters}$
 	c; i; d;								$\C{\color{red}// s.c, s.i, s.d}$
 	m; n;									$\C{\color{red}// t.m, t.n}$
@@ -1527,10 +1519,10 @@
 \begin{cfa}
 struct S { int i, j; } sv;
-with ( sv ) {								$\C{implicit reference}$
+with ( sv ) {								$\C{// implicit reference}$
 	S & sr = sv;
-	with ( sr ) {							$\C{explicit reference}$
+	with ( sr ) {							$\C{// explicit reference}$
 		S * sp = &sv;
-		with ( *sp ) {						$\C{computed reference}$
-			i = 3; j = 4;					$\C{\color{red}// sp-{\textgreater}i, sp-{\textgreater}j}$
+		with ( *sp ) {						$\C{// computed reference}$
+			i = 3; j = 4;					$\C{\color{red}// sp--{\textgreater}i, sp--{\textgreater}j}$
 		}
 		i = 2; j = 3;						$\C{\color{red}// sr.i, sr.j}$
@@ -1539,4 +1531,6 @@
 }
 \end{cfa}
+
+Collectively, these control-structure enhancements reduce programmer burden and increase readability and safety.
 
 
@@ -1582,6 +1576,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
 \begin{cfa}
 `[5] *` int x1;
@@ -1598,6 +1592,6 @@
 \begin{cfa}
 // array of 5 pointers to int
-// pointer to an array of 5 int
-// function returning pointer to an array of 5 int and taking an int
+// pointer to array of 5 int
+// function returning pointer to array of 5 int and taking int
 \end{cfa}
 \end{tabular}
@@ -1610,6 +1604,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
 \begin{cfa}
 `*` int x, y;
@@ -1630,6 +1624,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{C}}	\\
 \begin{cfa}
 [ 5 ] int z;
@@ -1672,14 +1666,14 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{1em}}l@{\hspace{1em}}l@{}}
-\multicolumn{1}{c@{\hspace{1em}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{1em}}}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{C}}	\\
 \begin{cfa}
 extern const * const int x;
-static const * [ 5 ] const int y;
+static const * [5] const int y;
 \end{cfa}
 &
 \begin{cfa}
 int extern const * const x;
-static const int (* const y)[ 5 ]
+static const int (* const y)[5]
 \end{cfa}
 &
@@ -1697,6 +1691,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
 \begin{cfa}
 y = (* int)x;
@@ -1715,9 +1709,9 @@
 as well, parameter names are optional, \eg:
 \begin{cfa}
-[ int x ] f ( /* void */ );					$\C{// returning int with no parameters}$
-[ int x ] f (...);							$\C{// returning int with unknown parameters}$
-[ * int ] g ( int y );						$\C{// returning pointer to int with int parameter}$
-[ void ] h ( int, char );					$\C{// returning no result with int and char parameters}$
-[ * int, int ] j ( int );					$\C{// returning pointer to int and int, with int parameter}$
+[ int x ] f ( /* void */ );		$\C[2.5in]{// returning int with no parameters}$
+[ int x ] f (...);				$\C{// returning int with unknown parameters}$
+[ * int ] g ( int y );			$\C{// returning pointer to int with int parameter}$
+[ void ] h ( int, char );		$\C{// returning no result with int and char parameters}$
+[ * int, int ] j ( int );		$\C{// returning pointer to int and int with int parameter}$
 \end{cfa}
 This syntax allows a prototype declaration to be created by cutting and pasting source text from the function-definition header (or vice versa).
@@ -1725,6 +1719,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
 \begin{cfa}
 [double] foo(), foo( int ), foo( double ) {...}
@@ -1741,12 +1735,12 @@
 The syntax for pointers to \CFA functions specifies the pointer name on the right, \eg:
 \begin{cfa}
-* [ int x ] () fp;							$\C{// pointer to function returning int with no parameters}$
-* [ * int ] ( int y ) gp;					$\C{// pointer to function returning pointer to int with int parameter}$
-* [ ] ( int, char ) hp;						$\C{// pointer to function returning no result with int and char parameters}$
-* [ * int, int ] ( int ) jp;				$\C{// pointer to function returning pointer to int and int, with int parameter}$
+* [ int x ] () fp;				$\C{// pointer to function returning int with no parameters}$
+* [ * int ] ( int y ) gp;		$\C{// pointer to function returning pointer to int with int parameter}$
+* [ ] ( int, char ) hp;			$\C{// pointer to function returning no result with int and char parameters}$
+* [ * int, int ] ( int ) jp;	$\C{// pointer to function returning pointer to int and int with int parameter}$
 \end{cfa}
 Note, a function name cannot be specified:
 \begin{cfa}
-* [ int x ] f () fp;						$\C{// function name "f" is disallowed}$
+* [ int x ] f () fp;			$\C{// function name "f" is disallowed}\CRT$
 \end{cfa}
 
@@ -1863,7 +1857,7 @@
 \begin{cfa}
 struct S { double x, y; };
-int i, j;
+int x, y;
 void f( int & i, int & j, S & s, int v[] );
-f( 3, i + j, (S){ 1.0, 7.0 }, (int [3]){ 1, 2, 3 } );	$\C{// pass rvalue to lvalue \(\Rightarrow\) implicit temporary}$
+f( 3, x + y, (S){ 1.0, 7.0 }, (int [3]){ 1, 2, 3 } ); $\C{// pass rvalue to lvalue \(\Rightarrow\) implicit temporary}$
 \end{cfa}
 This allows complex values to be succinctly and efficiently passed to functions, without the syntactic overhead of explicit definition of a temporary variable or the runtime cost of pass-by-value.
@@ -1952,5 +1946,5 @@
 
 One of the strengths (and weaknesses) of C is memory-management control, allowing resource release to be precisely specified versus unknown release with garbage-collected memory-management.
-However, this manual approach is often verbose, and it is useful to manage resources other than memory (\eg file handles) using the same mechanism as memory.
+However, this manual approach is verbose, and it is useful to manage resources other than memory (\eg file handles) using the same mechanism as memory.
 \CC addresses these issues using Resource Aquisition Is Initialization (RAII), implemented by means of \newterm{constructor} and \newterm{destructor} functions;
 \CFA adopts constructors and destructors (and @finally@) to facilitate RAII.
@@ -2004,5 +1998,5 @@
 {
 	VLA  x,            y = { 20, 0x01 },     z = y;	$\C{// z points to y}$
-	//      ?{}( x );  ?{}( y, 20, 0x01 );  ?{}( z, y ); 
+	//    ?{}( x );   ?{}( y, 20, 0x01 );    ?{}( z, y ); 
 	^x{};									$\C{// deallocate x}$
 	x{};									$\C{// reallocate x}$
@@ -2052,5 +2046,5 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{\hspace{\parindentlnth}}l@{}}
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{}}
 \begin{cfa}
 20_`hh`     // signed char
@@ -2105,5 +2099,5 @@
 
 For readability, it is useful to associate units to scale literals, \eg weight (stone, pound, kilogram) or time (seconds, minutes, hours).
-The left of Figure~\ref{f:UserLiteral} shows the \CFA alternative call-syntax (literal argument before function name), using the backquote, to convert basic literals into user literals.
+The left of Figure~\ref{f:UserLiteral} shows the \CFA alternative call-syntax (postfix: literal argument before function name), using the backquote, to convert basic literals into user literals.
 The backquote is a small character, making the unit (function name) predominate.
 For examples, the multi-precision integer-type in Section~\ref{s:MultiPrecisionIntegers} has user literals:
@@ -2113,6 +2107,45 @@
 y = "12345678901234567890123456789"|`mp| + "12345678901234567890123456789"|`mp|;
 \end{cfa}
-Because \CFA uses a standard function, all types and literals are applicable, as well as overloading and conversions.
+Because \CFA uses a standard function, all types and literals are applicable, as well as overloading and conversions, where @?`@ denotes a postfix-function name and @`@ denotes a postfix-function call.
 }%
+\begin{cquote}
+\lstset{language=CFA,moredelim=**[is][\color{red}]{|}{|},deletedelim=**[is][]{`}{`}}
+\lstDeleteShortInline@%
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{postfix function}}	& \multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{constant}}	& \multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{variable/expression}}	& \multicolumn{1}{c}{\textbf{postfix pointer}}	\\
+\begin{cfa}
+int ?`h( int s );
+int ?`h( double s );
+int ?`m( char c );
+int ?`m( const char * s );
+int ?`t( int a, int b, int c );
+\end{cfa}
+&
+\begin{cfa}
+0 `h;
+3.5`h;
+'1'`m;
+"123" "456"`m;
+[1,2,3]`t;
+\end{cfa}
+&
+\begin{cfa}
+int i = 7;
+i`h;
+(i + 3)`h;
+(i + 3.5)`h;
+
+\end{cfa}
+&
+\begin{cfa}
+int (* ?`p)( int i );
+?`p = ?`h;
+3`p;
+i`p;
+(i + 3)`p;
+\end{cfa}
+\end{tabular}
+\lstMakeShortInline@%
+\end{cquote}
 
 The right of Figure~\ref{f:UserLiteral} shows the equivalent \CC version using the underscore for the call-syntax.
@@ -2136,7 +2169,7 @@
 	return (W){ l.stones + r.stones };
 }
-W |?`st|( double w ) { return (W){ w }; }
-W |?`lb|( double w ) { return (W){ w / 14.0 }; }
-W |?`kg|( double w ) { return (W) { w * 0.16 }; }
+W |?`st|(double w) { return (W){ w }; }
+W |?`lb|(double w) { return (W){ w/14.0 }; }
+W |?`kg|(double w) { return (W){ w*0.16 }; }
 
 
@@ -2154,17 +2187,17 @@
 \begin{cfa}
 struct W {
-    double stones;
-    W() { stones = 0.0; }
-    W( double w ) { stones = w; }
+	double stones;
+	W() { stones = 0.0; }
+	W( double w ) { stones = w; }
 };
 W operator+( W l, W r ) {
 	return W( l.stones + r.stones );
 }
-W |operator"" _st|( unsigned long long int w ) { return W( w ); }
-W |operator"" _lb|( unsigned long long int w ) { return W( w / 14.0 ); }
-W |operator"" _kg|( unsigned long long int w ) { return W( w * 0.16 ); }
-W |operator"" _st|( long double w ) { return W( w ); }
-W |operator"" _lb|( long double w ) { return W( w / 14.0 ); }
-W |operator"" _kg|( long double w ) { return W( w * 0.16 ); }
+W |operator""_st|(unsigned long long int w) {return W(w); }
+W |operator""_lb|(unsigned long long int w) {return W(w/14.0); }
+W |operator""_kg|(unsigned long long int w) {return W(w*0.16); }
+W |operator""_st|(long double w ) { return W( w ); }
+W |operator""_lb|(long double w ) { return W( w / 14.0 ); }
+W |operator""_kg|(long double w ) { return W( w * 0.16 ); }
 int main() {
 	W w, heavy = { 20 };
@@ -2199,6 +2232,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{Definition}}	& \multicolumn{1}{c}{\textbf{Usage}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{Definition}}	& \multicolumn{1}{c}{\textbf{Usage}}	\\
 \begin{cfa}
 const short int `MIN` = -32768;
@@ -2218,10 +2251,11 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\lstset{basicstyle=\linespread{0.9}\sf\small}
-\begin{tabular}{@{}l@{\hspace{0.5\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{0.5\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
 \begin{cfa}
 MIN
+
 MAX
+
 PI
 E
@@ -2229,6 +2263,8 @@
 &
 \begin{cfa}
-SCHAR_MIN, CHAR_MIN, SHRT_MIN, INT_MIN, LONG_MIN, LLONG_MIN, FLT_MIN, DBL_MIN, LDBL_MIN
-SCHAR_MAX, UCHAR_MAX, SHRT_MAX, INT_MAX, LONG_MAX, LLONG_MAX, FLT_MAX, DBL_MAX, LDBL_MAX
+SCHAR_MIN, CHAR_MIN, SHRT_MIN, INT_MIN, LONG_MIN, LLONG_MIN,
+		FLT_MIN, DBL_MIN, LDBL_MIN
+SCHAR_MAX, UCHAR_MAX, SHRT_MAX, INT_MAX, LONG_MAX, LLONG_MAX,
+		FLT_MAX, DBL_MAX, LDBL_MAX
 M_PI, M_PIl
 M_E, M_El
@@ -2245,6 +2281,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{Definition}}	& \multicolumn{1}{c}{\textbf{Usage}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{Definition}}	& \multicolumn{1}{c}{\textbf{Usage}}	\\
 \begin{cfa}
 float `log`( float x );
@@ -2264,6 +2300,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
 \begin{cfa}
 log
@@ -2292,6 +2328,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{Definition}}	& \multicolumn{1}{c}{\textbf{Usage}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{Definition}}	& \multicolumn{1}{c}{\textbf{Usage}}	\\
 \begin{cfa}
 unsigned int `abs`( int );
@@ -2311,6 +2347,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
 \begin{cfa}
 abs
@@ -2331,5 +2367,5 @@
 The following shows one example where \CFA \emph{extends} an existing standard C interface to reduce complexity and provide safety.
 C/\Celeven provide a number of complex and overlapping storage-management operation to support the following capabilities:
-\begin{description}[topsep=3pt,itemsep=2pt,parsep=0pt]
+\begin{description}%[topsep=3pt,itemsep=2pt,parsep=0pt]
 \item[fill]
 an allocation with a specified character.
@@ -2381,6 +2417,6 @@
 \end{cfa}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
 \begin{cfa}
 ip = alloc();
@@ -2403,6 +2439,6 @@
 ip = (int *)malloc( sizeof( int ) ); memset( ip, fill, dim * sizeof( int ) );
 ip = (int *)realloc( ip, 2 * dim * sizeof( int ) );
-ip = (int *)realloc( ip, 4 * dim * sizeof( int ) ); memset( ip, fill, 4 * dim * sizeof( int ) );
-
+ip = (int *)realloc( ip, 4 * dim * sizeof( int ) );
+			memset( ip, fill, 4 * dim * sizeof( int ) );
 ip = memalign( 16, sizeof( int ) );
 ip = memalign( 16, sizeof( int ) ); memset( ip, fill, sizeof( int ) );
@@ -2441,6 +2477,6 @@
 \begin{cquote}
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{\CC}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{\CC}}	\\
 \begin{cfa}
 int x = 1, y = 2, z = 3;
@@ -2525,9 +2561,11 @@
 The \CFA interface wraps GMP functions into operator functions to make programming with multi-precision integers identical to using fixed-sized integers.
 The \CFA type name for multi-precision signed-integers is @Int@ and the header file is @gmp@.
-The following multi-precision factorial programs contrast using GMP with the \CFA and C interfaces.
-\begin{cquote}
+Figure~\ref{f:GMPInterface} shows a multi-precision factorial-program contrasting the GMP interface in \CFA and C.
+
+\begin{figure}
+\centering
 \lstDeleteShortInline@%
-\begin{tabular}{@{}l@{\hspace{\parindentlnth}}@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{@{\hspace{\parindentlnth}}c}{\textbf{C}}	\\
+\begin{tabular}{@{}l@{\hspace{2\parindentlnth}}@{\hspace{2\parindentlnth}}l@{}}
+\multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{@{\hspace{2\parindentlnth}}c}{\textbf{C}}	\\
 \begin{cfa}
 #include <gmp>
@@ -2557,5 +2595,7 @@
 \end{tabular}
 \lstMakeShortInline@%
-\end{cquote}
+\caption{GMP Interface \CFA versus C}
+\label{f:GMPInterface}
+\end{figure}
 
 
@@ -2566,28 +2606,28 @@
 In fact, \CFA's features for generic programming can enable faster runtime execution than idiomatic @void *@-based C code.
 This claim is demonstrated through a set of generic-code-based micro-benchmarks in C, \CFA, and \CC (see stack implementations in Appendix~\ref{sec:BenchmarkStackImplementation}).
-Since all these languages share a subset essentially comprising standard C, maximal-performance benchmarks would show little runtime variance, other than in length and clarity of source code.
-A more illustrative benchmark measures the costs of idiomatic usage of each language's features.
-Figure~\ref{fig:BenchmarkTest} shows the \CFA benchmark tests for a generic stack based on a singly linked-list, a generic pair-data-structure, and a variadic @print@ function similar to that in Section~\ref{sec:variadic-tuples}.
-The benchmark test is similar for C and \CC.
-The experiment uses element types @int@ and @pair(_Bool, char)@, and pushes $N=40M$ elements on a generic stack, copies the stack, clears one of the stacks, finds the maximum value in the other stack, and prints $N/2$ (to reduce graph height) constants.
+Since all these languages share a subset essentially comprising standard C, maximal-performance benchmarks should show little runtime variance, differing only in length and clarity of source code.
+A more illustrative comparison measures the costs of idiomatic usage of each language's features.
+Figure~\ref{fig:BenchmarkTest} shows the \CFA benchmark tests for a generic stack based on a singly linked-list.
+The benchmark test is similar for the other languages.
+The experiment uses element types @int@ and @pair(short, char)@, and pushes $N=40M$ elements on a generic stack, copies the stack, clears one of the stacks, and finds the maximum value in the other stack.
 
 \begin{figure}
 \begin{cfa}[xleftmargin=3\parindentlnth,aboveskip=0pt,belowskip=0pt]
-int main( int argc, char * argv[] ) {
+int main() {
 	int max = 0, val = 42;
 	stack( int ) si, ti;
 
 	REPEAT_TIMED( "push_int", N, push( si, val ); )
-	TIMED( "copy_int", ti = si; )
+	TIMED( "copy_int", ti{ si }; )
 	TIMED( "clear_int", clear( si ); )
 	REPEAT_TIMED( "pop_int", N, int x = pop( ti ); if ( x > max ) max = x; )
 
-	pair( _Bool, char ) max = { (_Bool)0, '\0' }, val = { (_Bool)1, 'a' };
-	stack( pair( _Bool, char ) ) sp, tp;
+	pair( short, char ) max = { 0h, '\0' }, val = { 42h, 'a' };
+	stack( pair( short, char ) ) sp, tp;
 
 	REPEAT_TIMED( "push_pair", N, push( sp, val ); )
-	TIMED( "copy_pair", tp = sp; )
+	TIMED( "copy_pair", tp{ sp }; )
 	TIMED( "clear_pair", clear( sp ); )
-	REPEAT_TIMED( "pop_pair", N, pair(_Bool, char) x = pop( tp ); if ( x > max ) max = x; )
+	REPEAT_TIMED( "pop_pair", N, pair(short, char) x = pop( tp ); if ( x > max ) max = x; )
 }
 \end{cfa}
@@ -2600,10 +2640,9 @@
 hence runtime checks are necessary to safely down-cast objects.
 The most notable difference among the implementations is in memory layout of generic types: \CFA and \CC inline the stack and pair elements into corresponding list and pair nodes, while C and \CCV lack such a capability and instead must store generic objects via pointers to separately-allocated objects.
-For the print benchmark, idiomatic printing is used: the C and \CFA variants used @stdio.h@, while the \CC and \CCV variants used @iostream@; preliminary tests show this distinction has negligible runtime impact.
-Note, the C benchmark uses unchecked casts as there is no runtime mechanism to perform such checks, while \CFA and \CC provide type-safety statically.
+Note that the C benchmark uses unchecked casts as there is no runtime mechanism to perform such checks, while \CFA and \CC provide type-safety statically.
 
 Figure~\ref{fig:eval} and Table~\ref{tab:eval} show the results of running the benchmark in Figure~\ref{fig:BenchmarkTest} and its C, \CC, and \CCV equivalents.
 The graph plots the median of 5 consecutive runs of each program, with an initial warm-up run omitted.
-All code is compiled at \texttt{-O2} by gcc or g++ 6.2.0, with all \CC code compiled as \CCfourteen.
+All code is compiled at \texttt{-O2} by gcc or g++ 6.3.0, with all \CC code compiled as \CCfourteen.
 The benchmarks are run on an Ubuntu 16.04 workstation with 16 GB of RAM and a 6-core AMD FX-6300 CPU with 3.5 GHz maximum clock frequency.
 
@@ -2622,33 +2661,32 @@
 \begin{tabular}{rrrrr}
 									& \CT{C}	& \CT{\CFA}	& \CT{\CC}	& \CT{\CCV}		\\ \hline
-maximum memory usage (MB)			& 10001		& 2502		& 2503		& 11253			\\
-source code size (lines)			& 247		& 222		& 165		& 339			\\
-redundant type annotations (lines)	& 39		& 2			& 2			& 15			\\
-binary size (KB)					& 14		& 229		& 18		& 38			\\
+maximum memory usage (MB)			& 10,001	& 2,502		& 2,503		& 11,253		\\
+source code size (lines)			& 196		& 186		& 125		& 290			\\
+redundant type annotations (lines)	& 27		& 0			& 2			& 16			\\
+binary size (KB)					& 14		& 257		& 14		& 37			\\
 \end{tabular}
 \end{table}
 
 The C and \CCV variants are generally the slowest with the largest memory footprint, because of their less-efficient memory layout and the pointer-indirection necessary to implement generic types;
-this inefficiency is exacerbated by the second level of generic types in the pair-based benchmarks.
-By contrast, the \CFA and \CC variants run in roughly equivalent time for both the integer and pair of @_Bool@ and @char@ because the storage layout is equivalent, with the inlined libraries (\ie no separate compilation) and greater maturity of the \CC compiler contributing to its lead.
+this inefficiency is exacerbated by the second level of generic types in the pair benchmarks.
+By contrast, the \CFA and \CC variants run in roughly equivalent time for both the integer and pair of @short@ and @char@ because the storage layout is equivalent, with the inlined libraries (\ie no separate compilation) and greater maturity of the \CC compiler contributing to its lead.
 \CCV is slower than C largely due to the cost of runtime type-checking of down-casts (implemented with @dynamic_cast@);
-There are two outliers in the graph for \CFA: all prints and pop of @pair@.
-Both of these cases result from the complexity of the C-generated polymorphic code, so that the gcc compiler is unable to optimize some dead code and condense nested calls.
-A compiler designed for \CFA could easily perform these optimizations.
+The outlier in the graph for \CFA, pop @pair@, results from the complexity of the generated-C polymorphic code.
+The gcc compiler is unable to optimize some dead code and condense nested calls; a compiler designed for \CFA could easily perform these optimizations.
 Finally, the binary size for \CFA is larger because of static linking with the \CFA libraries.
 
-\CFA is also competitive in terms of source code size, measured as a proxy for programmer effort. The line counts in Table~\ref{tab:eval} include implementations of @pair@ and @stack@ types for all four languages for purposes of direct comparison, though it should be noted that \CFA and \CC have pre-written data structures in their standard libraries that programmers would generally use instead. Use of these standard library types has minimal impact on the performance benchmarks, but shrinks the \CFA and \CC benchmarks to 73 and 54 lines, respectively.
+\CFA is also competitive in terms of source code size, measured as a proxy for programmer effort. The line counts in Table~\ref{tab:eval} include implementations of @pair@ and @stack@ types for all four languages for purposes of direct comparison, though it should be noted that \CFA and \CC have pre-written data structures in their standard libraries that programmers would generally use instead. Use of these standard library types has minimal impact on the performance benchmarks, but shrinks the \CFA and \CC benchmarks to 39 and 42 lines, respectively.
+The difference between the \CFA and \CC line counts is primarily declaration duplication to implement separate compilation; a header-only \CFA library would be similar in length to the \CC version.
 On the other hand, C does not have a generic collections-library in its standard distribution, resulting in frequent reimplementation of such collection types by C programmers.
-\CCV does not use the \CC standard template library by construction, and in fact includes the definition of @object@ and wrapper classes for @bool@, @char@, @int@, and @const char *@ in its line count, which inflates this count somewhat, as an actual object-oriented language would include these in the standard library;
+\CCV does not use the \CC standard template library by construction, and in fact includes the definition of @object@ and wrapper classes for @char@, @short@, and @int@ in its line count, which inflates this count somewhat, as an actual object-oriented language would include these in the standard library;
 with their omission, the \CCV line count is similar to C.
 We justify the given line count by noting that many object-oriented languages do not allow implementing new interfaces on library types without subclassing or wrapper types, which may be similarly verbose.
 
-Raw line-count, however, is a fairly rough measure of code complexity;
-another important factor is how much type information the programmer must manually specify, especially where that information is not checked by the compiler.
-Such unchecked type information produces a heavier documentation burden and increased potential for runtime bugs, and is much less common in \CFA than C, with its manually specified function pointers arguments and format codes, or \CCV, with its extensive use of un-type-checked downcasts (\eg @object@ to @integer@ when popping a stack, or @object@ to @printable@ when printing the elements of a @pair@).
-To quantify this, the ``redundant type annotations'' line in Table~\ref{tab:eval} counts the number of lines on which the type of a known variable is re-specified, either as a format specifier, explicit downcast, type-specific function, or by name in a @sizeof@, struct literal, or @new@ expression.
+Line-count is a fairly rough measure of code complexity;
+another important factor is how much type information the programmer must specify manually, especially where that information is not compiler-checked.
+Such unchecked type information produces a heavier documentation burden and increased potential for runtime bugs, and is much less common in \CFA than C, with its manually specified function pointer arguments and format codes, or \CCV, with its extensive use of untype-checked downcasts, \eg @object@ to @integer@ when popping a stack.
+To quantify this manual typing, the ``redundant type annotations'' line in Table~\ref{tab:eval} counts the number of lines on which the type of a known variable is respecified, either as a format specifier, explicit downcast, type-specific function, or by name in a @sizeof@, struct literal, or @new@ expression.
 The \CC benchmark uses two redundant type annotations to create a new stack nodes, while the C and \CCV benchmarks have several such annotations spread throughout their code.
-The two instances in which the \CFA benchmark still uses redundant type specifiers are to cast the result of a polymorphic @malloc@ call (the @sizeof@ argument is inferred by the compiler).
-These uses are similar to the @new@ expressions in \CC, though the \CFA compiler's type resolver should shortly render even these type casts superfluous.
+The \CFA benchmark is able to eliminate all redundant type annotations through use of the polymorphic @alloc@ function discussed in Section~\ref{sec:libraries}.
 
 
@@ -2658,9 +2696,5 @@
 \subsection{Polymorphism}
 
-\CC is the most similar language to \CFA;
-both are extensions to C with source and runtime backwards compatibility.
-The fundamental difference is the engineering approach to maintain C compatibility and programmer expectation.
-While \CC provides good compatibility with C, it has a steep learning curve for many of its extensions.
-For example, polymorphism is provided via three disjoint mechanisms: overloading, inheritance, and templates.
+\CC provides three disjoint polymorphic extensions to C: overloading, inheritance, and templates.
 The overloading is restricted because resolution does not use the return type, inheritance requires learning object-oriented programming and coping with a restricted nominal-inheritance hierarchy, templates cannot be separately compiled resulting in compilation/code bloat and poor error messages, and determining how these mechanisms interact and which to use is confusing.
 In contrast, \CFA has a single facility for polymorphic code supporting type-safe separate-compilation of polymorphic functions and generic (opaque) types, which uniformly leverage the C procedural paradigm.
@@ -2717,4 +2751,21 @@
 
 
+\subsection{C Extensions}
+
+\CC is the best known C-based language, and is similar to \CFA in that both are extensions to C with source and runtime backwards compatibility.
+Specific difference between \CFA and \CC have been identified in prior sections, with a final observation that \CFA has equal or fewer tokens to express the same notion in many cases.
+The key difference in design philosophies is that \CFA is easier for C programmers to understand by maintaining a procedural paradigm and avoiding complex interactions among extensions.
+\CC, on the other hand, has multiple overlapping features (such as the three forms of polymorphism), many of which have complex interactions with its object-oriented design. 
+As a result, \CC has a steep learning curve for even experienced C programmers, especially when attempting to maintain performance equivalent to C legacy-code.
+
+There are several other C extension-languages with less usage and even more dramatic changes than \CC. 
+Objective-C and Cyclone are two other extensions to C with different design goals than \CFA, as discussed above. 
+Other languages extend C with more focused features. 
+$\mu$\CC~\cite{uC++book}, CUDA~\cite{Nickolls08}, ispc~\cite{Pharr12}, and Sierra~\cite{Leissa14} add concurrent or data-parallel primitives to C or \CC;
+data-parallel features have not yet been added to \CFA, but are easily incorporated within its design, while concurrency primitives similar to those in $\mu$\CC have already been added~\cite{Delisle18}.
+Finally, CCured~\cite{Necula02} and Ironclad \CC~\cite{DeLozier13} attempt to provide a more memory-safe C by annotating pointer types with garbage collection information; type-checked polymorphism in \CFA covers several of C's memory-safety issues, but more aggressive approaches such as annotating all pointer types with their nullability or requiring runtime garbage collection are contradictory to \CFA's backwards compatibility goals.
+
+
+\begin{comment}
 \subsection{Control Structures / Declarations / Literals}
 
@@ -2734,4 +2785,5 @@
 0/1 Literals \\
 user defined: D, Objective-C
+\end{comment}
 
 
@@ -2748,7 +2800,7 @@
 Finally, we demonstrate that \CFA performance for some idiomatic cases is better than C and close to \CC, showing the design is practically applicable.
 
-There is ongoing work on a wide range of \CFA feature extensions, including arrays with size, runtime type-information, virtual functions, user-defined conversions, concurrent primitives, and modules.
-(While all examples in the paper compile and run, a public beta-release of \CFA will take another 8--12 months to finalize these additional extensions.)
-In addition, there are interesting future directions for the polymorphism design.
+There is ongoing work on a wide range of \CFA features, including arrays with size, runtime type-information, virtual functions, user-defined conversions, concurrent primitives, and modules.
+While all examples in the paper compile and run, a public beta-release of \CFA will take another 8--12 months to finalize these extensions.
+There are also interesting future directions for the polymorphism design.
 Notably, \CC template functions trade compile time and code bloat for optimal runtime of individual instantiations of polymorphic functions.
 \CFA polymorphic functions use dynamic virtual-dispatch;
@@ -2761,11 +2813,8 @@
 \section{Acknowledgments}
 
-The authors would like to recognize the design assistance of Glen Ditchfield, Richard Bilson, Thierry Delisle, and Andrew Beach on the features described in this paper, and thank Magnus Madsen for feedback in the writing.
-This work is supported through a corporate partnership with Huawei Ltd.\ (\url{http://www.huawei.com}), and Aaron Moss and Peter Buhr are partially funded by the Natural Sciences and Engineering Research Council of Canada.
-
-% the first author's \grantsponsor{NSERC-PGS}{NSERC PGS D}{http://www.nserc-crsng.gc.ca/Students-Etudiants/PG-CS/BellandPostgrad-BelletSuperieures_eng.asp} scholarship.
-
-
-\bibliographystyle{plain}
+The authors would like to recognize the design assistance of Glen Ditchfield, Richard Bilson, Thierry Delisle, Andrew Beach and Brice Dobry on the features described in this paper, and thank Magnus Madsen for feedback on the writing.
+This work is supported by a corporate partnership with Huawei Ltd.\ (\url{http://www.huawei.com}), and Aaron Moss and Peter Buhr are partially funded by the Natural Sciences and Engineering Research Council of Canada.
+
+
 \bibliography{pl}
 
@@ -2776,28 +2825,79 @@
 \label{sec:BenchmarkStackImplementation}
 
-\lstset{basicstyle=\linespread{0.9}\sf\small}
-
-Throughout, @/***/@ designates a counted redundant type annotation.
+Throughout, @/***/@ designates a counted redundant type annotation; code reformatted for brevity.
 
 \smallskip\noindent
+C
+\begin{cfa}[xleftmargin=2\parindentlnth,aboveskip=0pt,belowskip=0pt]
+struct stack_node {
+	void * value;
+	struct stack_node * next;
+};
+struct stack { struct stack_node* head; };
+void clear_stack( struct stack * s, void (*free_el)( void * ) ) {
+	for ( struct stack_node * next = s->head; next; ) {
+		struct stack_node * crnt = next;
+		next = crnt->next;
+		free_el( crnt->value );
+		free( crnt );
+	}
+	s->head = NULL;
+}
+struct stack new_stack() { return (struct stack){ NULL }; /***/ }
+void copy_stack( struct stack * s, const struct stack * t, void * (*copy)( const void * ) ) {
+	struct stack_node ** crnt = &s->head;
+	for ( struct stack_node * next = t->head; next; next = next->next ) {
+		*crnt = malloc( sizeof(struct stack_node) ); /***/
+		(*crnt)->value = copy( next->value );
+		crnt = &(*crnt)->next;
+	}
+	*crnt = NULL;
+}
+struct stack * assign_stack( struct stack * s, const struct stack * t, 
+		void * (*copy_el)( const void * ), void (*free_el)( void * ) ) {
+	if ( s->head == t->head ) return s;
+	clear_stack( s, free_el ); /***/
+	copy_stack( s, t, copy_el ); /***/
+	return s;
+}
+_Bool stack_empty( const struct stack * s ) { return s->head == NULL; }
+void push_stack( struct stack * s, void * v ) {
+	struct stack_node * n = malloc( sizeof(struct stack_node) ); /***/
+	*n = (struct stack_node){ v, s->head }; /***/
+	s->head = n;
+}
+void * pop_stack( struct stack * s ) {
+	struct stack_node * n = s->head;
+	s->head = n->next;
+	void * v = n->value;
+	free( n );
+	return v;
+}
+\end{cfa}
+
+\medskip\noindent
 \CFA
 \begin{cfa}[xleftmargin=2\parindentlnth,aboveskip=0pt,belowskip=0pt]
-forall( otype T ) struct stack_node;
-forall( otype T ) struct stack {
-	stack_node(T) * head;
-};
 forall( otype T ) struct stack_node {
 	T value;
 	stack_node(T) * next;
 };
-forall( otype T) void ?{}( stack(T) & s ) { (s.head){ 0 }; }
-forall( otype T) void ?{}( stack(T) & s, stack(T) t ) {
+forall( otype T ) struct stack { stack_node(T) * head; };
+forall( otype T ) void clear( stack(T) & s ) with( s ) {
+	for ( stack_node(T) * next = head; next; ) {
+		stack_node(T) * crnt = next;
+		next = crnt->next;
+		^(*crnt){};
+		free(crnt);
+	}
+	head = 0;
+}
+forall( otype T ) void ?{}( stack(T) & s ) { (s.head){ 0 }; }
+forall( otype T ) void ?{}( stack(T) & s, stack(T) t ) {
 	stack_node(T) ** crnt = &s.head;
 	for ( stack_node(T) * next = t.head; next; next = next->next ) {
-		stack_node(T) * new_node = ((stack_node(T)*)malloc());
-		(*new_node){ next->value }; /***/
-		*crnt = new_node;
-		stack_node(T) * acrnt = *crnt;
-		crnt = &acrnt->next;
+		*crnt = alloc();
+		((*crnt)->value){ next->value };
+		crnt = &(*crnt)->next;
 	}
 	*crnt = 0;
@@ -2811,70 +2911,81 @@
 forall( otype T ) void ^?{}( stack(T) & s) { clear( s ); }
 forall( otype T ) _Bool empty( const stack(T) & s ) { return s.head == 0; }
-forall( otype T ) void push( stack(T) & s, T value ) {
-	stack_node(T) * new_node = ((stack_node(T)*)malloc());
-	(*new_node){ value, s.head }; /***/
-	s.head = new_node;
-}
-forall( otype T ) T pop( stack(T) & s ) {
-	stack_node(T) * n = s.head;
-	s.head = n->next;
+forall( otype T ) void push( stack(T) & s, T value ) with( s ) {
+	stack_node(T) * n = alloc();
+	(*n){ value, head };
+	head = n;
+}
+forall( otype T ) T pop( stack(T) & s ) with( s ) {
+	stack_node(T) * n = head;
+	head = n->next;
 	T v = n->value;
-	delete( n );
+	^(*n){};
+	free( n );
 	return v;
 }
-forall( otype T ) void clear( stack(T) & s ) {
-	for ( stack_node(T) * next = s.head; next; ) {
-		stack_node(T) * crnt = next;
-		next = crnt->next;
-		delete( crnt );
+\end{cfa}
+
+\begin{comment}
+forall( otype T ) {
+	struct stack_node {
+		T value;
+		stack_node(T) * next;
+	};
+	struct stack { stack_node(T) * head; };
+	void clear( stack(T) & s ) with( s ) {
+		for ( stack_node(T) * next = head; next; ) {
+			stack_node(T) * crnt = next;
+			next = crnt->next;
+			^(*crnt){};
+			free(crnt);
+		}
+		head = 0;
 	}
-	s.head = 0;
-}
-\end{cfa}
+	void ?{}( stack(T) & s ) { (s.head){ 0 }; }
+	void ?{}( stack(T) & s, stack(T) t ) {
+		stack_node(T) ** crnt = &s.head;
+		for ( stack_node(T) * next = t.head; next; next = next->next ) {
+			*crnt = alloc();
+			((*crnt)->value){ next->value };
+			crnt = &(*crnt)->next;
+		}
+		*crnt = 0;
+	}
+	stack(T) ?=?( stack(T) & s, stack(T) t ) {
+		if ( s.head == t.head ) return s;
+		clear( s );
+		s{ t };
+		return s;
+	}
+	void ^?{}( stack(T) & s) { clear( s ); }
+	_Bool empty( const stack(T) & s ) { return s.head == 0; }
+	void push( stack(T) & s, T value ) with( s ) {
+		stack_node(T) * n = alloc();
+		(*n){ value, head };
+		head = n;
+	}
+	T pop( stack(T) & s ) with( s ) {
+		stack_node(T) * n = head;
+		head = n->next;
+		T v = n->value;
+		^(*n){};
+		free( n );
+		return v;
+	}
+}
+\end{comment}
 
 \medskip\noindent
 \CC
 \begin{cfa}[xleftmargin=2\parindentlnth,aboveskip=0pt,belowskip=0pt]
-template<typename T> class stack {
+template<typename T> struct stack {
 	struct node {
 		T value;
 		node * next;
-		node( const T & v, node * n = nullptr ) : value(v), next(n) {}
+		node( const T & v, node * n = nullptr ) : value( v ), next( n ) {}
 	};
 	node * head;
-	void copy(const stack<T>& o) {
-		node ** crnt = &head;
-		for ( node * next = o.head;; next; next = next->next ) {
-			*crnt = new node{ next->value }; /***/
-			crnt = &(*crnt)->next;
-		}
-		*crnt = nullptr;
-	}
-  public:
-	stack() : head(nullptr) {}
-	stack(const stack<T>& o) { copy(o); }
-	stack(stack<T> && o) : head(o.head) { o.head = nullptr; }
-	~stack() { clear(); }
-	stack & operator= (const stack<T>& o) {
-		if ( this == &o ) return *this;
-		clear();
-		copy(o);
-		return *this;
-	}
-	stack & operator= (stack<T> && o) {
-		if ( this == &o ) return *this;
-		head = o.head;
-		o.head = nullptr;
-		return *this;
-	}
-	bool empty() const { return head == nullptr; }
-	void push(const T & value) { head = new node{ value, head };  /***/ }
-	T pop() {
-		node * n = head;
-		head = n->next;
-		T x = std::move(n->value);
-		delete n;
-		return x;
-	}
+	stack() : head( nullptr ) {}
+	stack( const stack<T> & o ) { copy( o ); }
 	void clear() {
 		for ( node * next = head; next; ) {
@@ -2885,46 +2996,29 @@
 		head = nullptr;
 	}
+	void copy( const stack<T> & o ) {
+		node ** crnt = &head;
+		for ( node * next = o.head; next; next = next->next ) {
+			*crnt = new node{ next->value }; /***/
+			crnt = &(*crnt)->next;
+		}
+		*crnt = nullptr;
+	}
+	~stack() { clear(); }
+	stack & operator= ( const stack<T> & o ) {
+		if ( this == &o ) return *this;
+		clear();
+		copy( o );
+		return *this;
+	}
+	bool empty() const { return head == nullptr; }
+	void push( const T & value ) { head = new node{ value, head };  /***/ }
+	T pop() {
+		node * n = head;
+		head = n->next;
+		T v = std::move( n->value );
+		delete n;
+		return v;
+	}
 };
-\end{cfa}
-
-\medskip\noindent
-C
-\begin{cfa}[xleftmargin=2\parindentlnth,aboveskip=0pt,belowskip=0pt]
-struct stack_node {
-	void * value;
-	struct stack_node * next;
-};
-struct stack new_stack() { return (struct stack){ NULL }; /***/ }
-void copy_stack(struct stack * s, const struct stack * t, void * (*copy)(const void *)) {
-	struct stack_node ** crnt = &s->head;
-	for ( struct stack_node * next = t->head; next; next = next->next ) {
-		*crnt = malloc(sizeof(struct stack_node)); /***/
-		**crnt = (struct stack_node){ copy(next->value) }; /***/
-		crnt = &(*crnt)->next;
-	}
-	*crnt = 0;
-}
-_Bool stack_empty(const struct stack * s) { return s->head == NULL; }
-void push_stack(struct stack * s, void * value) {
-	struct stack_node * n = malloc(sizeof(struct stack_node)); /***/
-	*n = (struct stack_node){ value, s->head }; /***/
-	s->head = n;
-}
-void * pop_stack(struct stack * s) {
-	struct stack_node * n = s->head;
-	s->head = n->next;
-	void * x = n->value;
-	free(n);
-	return x;
-}
-void clear_stack(struct stack * s, void (*free_el)(void *)) {
-	for ( struct stack_node * next = s->head; next; ) {
-		struct stack_node * crnt = next;
-		next = crnt->next;
-		free_el(crnt->value);
-		free(crnt);
-	}
-	s->head = NULL;
-}
 \end{cfa}
 
@@ -2932,46 +3026,46 @@
 \CCV
 \begin{cfa}[xleftmargin=2\parindentlnth,aboveskip=0pt,belowskip=0pt]
-stack::node::node( const object & v, node * n ) : value( v.new_copy() ), next( n ) {}
-void stack::copy(const stack & o) {
-	node ** crnt = &head;
-	for ( node * next = o.head; next; next = next->next ) {
-		*crnt = new node{ *next->value };
-		crnt = &(*crnt)->next;
+struct stack {
+	struct node {
+		ptr<object> value;
+		node * next;
+		node( const object & v, node * n = nullptr ) : value( v.new_copy() ), next( n ) {}
+	};
+	node * head;
+	void clear() {
+		for ( node * next = head; next; ) {
+			node * crnt = next;
+			next = crnt->next;
+			delete crnt;
+		}
+		head = nullptr;
 	}
-	*crnt = nullptr;
-}
-stack::stack() : head(nullptr) {}
-stack::stack(const stack & o) { copy(o); }
-stack::stack(stack && o) : head(o.head) { o.head = nullptr; }
-stack::~stack() { clear(); }
-stack & stack::operator= (const stack & o) {
-	if ( this == &o ) return *this;
-	clear();
-	copy(o);
-	return *this;
-}
-stack & stack::operator= (stack && o) {
-	if ( this == &o ) return *this;
-	head = o.head;
-	o.head = nullptr;
-	return *this;
-}
-bool stack::empty() const { return head == nullptr; }
-void stack::push(const object & value) { head = new node{ value, head }; /***/ }
-ptr<object> stack::pop() {
-	node * n = head;
-	head = n->next;
-	ptr<object> x = std::move(n->value);
-	delete n;
-	return x;
-}
-void stack::clear() {
-	for ( node * next = head; next; ) {
-		node * crnt = next;
-		next = crnt->next;
-		delete crnt;
+	void copy( const stack & o ) {
+		node ** crnt = &head;
+		for ( node * next = o.head; next; next = next->next ) {
+			*crnt = new node{ *next->value }; /***/
+			crnt = &(*crnt)->next;
+		}
+		*crnt = nullptr;
 	}
-	head = nullptr;
-}
+	stack() : head( nullptr ) {}
+	stack( const stack & o ) { copy( o ); }
+	~stack() { clear(); }
+	stack & operator= ( const stack & o ) {
+		if ( this == &o ) return *this;
+		clear();
+		copy( o );
+		return *this;
+	}
+	bool empty() const { return head == nullptr; }
+	void push( const object & value ) { head = new node{ value, head }; /***/ }
+	ptr<object> pop() {
+		node * n = head;
+		head = n->next;
+		ptr<object> v = std::move( n->value );
+		delete n;
+		return v;
+	}
+};
 \end{cfa}
 
Index: doc/papers/general/evaluation/c-bench.c
===================================================================
--- doc/papers/general/evaluation/c-bench.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/c-bench.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -5,13 +5,13 @@
 #include "c-stack.h"
 
-_Bool* new_bool( _Bool b ) {
-	_Bool* q = malloc(sizeof(_Bool)); /***/
-	*q = b;
+char* new_char( char c ) {
+	char* q = malloc(sizeof(char)); /***/
+	*q = c;
 	return q;
 }
 
-char* new_char( char c ) {
-	char* q = malloc(sizeof(char)); /***/
-	*q = c;
+short* new_short( short s ) {
+	short* q = malloc(sizeof(short)); /***/
+	*q = s;
 	return q;
 }
@@ -23,16 +23,16 @@
 }
 
-void* copy_bool( const void* p ) { return new_bool( *(const _Bool*)p ); } /***/
 void* copy_char( const void* p ) { return new_char( *(const char*)p ); } /***/
+void* copy_short( const void* p ) { return new_short( *(const short*)p ); } /***/
 void* copy_int( const void* p ) { return new_int( *(const int*)p ); } /***/
-void* copy_pair_bool_char( const void* p ) { return copy_pair( p, copy_bool, copy_char ); } /***/
-void free_pair_bool_char( void* p ) { free_pair( p, free, free ); } /***/
-
-int cmp_bool( const void* a, const void* b ) { /***/
-	return *(const _Bool*)a == *(const _Bool*)b ? 0 : *(const _Bool*)a < *(const _Bool*)b ? -1 : 1; 
-}
+void* copy_pair_short_char( const void* p ) { return copy_pair( p, copy_short, copy_char ); } /***/
+void free_pair_short_char( void* p ) { free_pair( p, free, free ); } /***/
 
 int cmp_char( const void* a, const void* b ) { /***/
 	return *(const char*)a == *(const char*)b ? 0 : *(const char*)a < *(const char*)b ? -1 : 1;
+}
+
+int cmp_short( const void* a, const void* b ) { /***/
+	return *(const short*)a == *(const short*)b ? 0 : *(const short*)a < *(const short*)b ? -1 : 1; 
 }
 
@@ -49,20 +49,20 @@
 		free(xi); )
 
-	struct pair * maxp = new_pair( new_bool(0), new_char('\0') ),
-		* valp = new_pair( new_bool(1), new_char('a') );
+	struct pair * maxp = new_pair( new_short(0), new_char('\0') ),
+		* valp = new_pair( new_short(42), new_char('a') );
 	struct stack sp = new_stack(), tp;
 
-	REPEAT_TIMED( "push_pair", N, push_stack( &sp, copy_pair_bool_char( valp ) ); )
-	TIMED( "copy_pair", copy_stack( &tp, &sp, copy_pair_bool_char ); /***/ )
-	TIMED( "clear_pair", clear_stack( &sp, free_pair_bool_char ); /***/ )
+	REPEAT_TIMED( "push_pair", N, push_stack( &sp, copy_pair_short_char( valp ) ); )
+	TIMED( "copy_pair", copy_stack( &tp, &sp, copy_pair_short_char ); /***/ )
+	TIMED( "clear_pair", clear_stack( &sp, free_pair_short_char ); /***/ )
 	REPEAT_TIMED( "pop_pair", N, 
 		struct pair * xp = pop_stack( &tp );
-		if ( cmp_pair( xp, maxp, cmp_bool, cmp_char /***/ ) > 0 ) {
-			free_pair_bool_char( maxp ); /***/
+		if ( cmp_pair( xp, maxp, cmp_short, cmp_char /***/ ) > 0 ) {
+			free_pair_short_char( maxp ); /***/
 			maxp = xp;
 		} else {
-			free_pair_bool_char( xp ); /***/
+			free_pair_short_char( xp ); /***/
 		} )
-	free_pair_bool_char( maxp ); /***/
-	free_pair_bool_char( valp ); /***/
+	free_pair_short_char( maxp ); /***/
+	free_pair_short_char( valp ); /***/
 }
Index: doc/papers/general/evaluation/c-stack.c
===================================================================
--- doc/papers/general/evaluation/c-stack.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/c-stack.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -3,43 +3,50 @@
 
 struct stack_node {
-	void* value;
-	struct stack_node* next;
+	void * value;
+	struct stack_node * next;
 };
 
-struct stack new_stack() { return (struct stack){ NULL }; /***/ }
-
-void copy_stack(struct stack* s, const struct stack* t, void* (*copy)(const void*)) {
-	struct stack_node** crnt = &s->head;
-	for ( struct stack_node* next = t->head; next; next = next->next ) {
-		*crnt = malloc(sizeof(struct stack_node)); /***/
-		**crnt = (struct stack_node){ copy(next->value) }; /***/
-		crnt = &(*crnt)->next;
-	}
-	*crnt = 0;
-}
-
-void clear_stack(struct stack* s, void (*free_el)(void*)) {
-    for ( struct stack_node* next = s->head; next; ) {
-		struct stack_node* crnt = next;
+void clear_stack( struct stack * s, void (*free_el)( void * ) ) {
+	for ( struct stack_node * next = s->head; next; ) {
+		struct stack_node * crnt = next;
 		next = crnt->next;
-		free_el(crnt->value);
-		free(crnt);
+		free_el( crnt->value );
+		free( crnt );
 	}
 	s->head = NULL;
 }
 
-_Bool stack_empty(const struct stack* s) { return s->head == NULL; }
+struct stack new_stack() { return (struct stack){ NULL }; /***/ }
 
-void push_stack(struct stack* s, void* value) {
-	struct stack_node* n = malloc(sizeof(struct stack_node)); /***/
-	*n = (struct stack_node){ value, s->head }; /***/
+void copy_stack( struct stack * s, const struct stack * t, void * (*copy)( const void * ) ) {
+	struct stack_node ** crnt = &s->head;
+	for ( struct stack_node * next = t->head; next; next = next->next ) {
+		*crnt = malloc( sizeof(struct stack_node) ); /***/
+		(*crnt)->value = copy( next->value );
+		crnt = &(*crnt)->next;
+	}
+	*crnt = NULL;
+}
+struct stack * assign_stack( struct stack * s, const struct stack * t, 
+		void * (*copy_el)( const void * ), void (*free_el)( void * ) ) {
+	if ( s->head == t->head ) return s;
+	clear_stack( s, free_el ); /***/
+	copy_stack( s, t, copy_el ); /***/
+	return s;
+}
+
+_Bool stack_empty( const struct stack * s ) { return s->head == NULL; }
+
+void push_stack( struct stack * s, void * v ) {
+	struct stack_node * n = malloc( sizeof(struct stack_node) ); /***/
+	*n = (struct stack_node){ v, s->head }; /***/
 	s->head = n;
 }
 
-void* pop_stack(struct stack* s) {
-	struct stack_node* n = s->head;
+void * pop_stack( struct stack * s ) {
+	struct stack_node * n = s->head;
 	s->head = n->next;
-	void* x = n->value;
-	free(n);
-	return x;
+	void * v = n->value;
+	free( n );
+	return v;
 }
Index: doc/papers/general/evaluation/c-stack.h
===================================================================
--- doc/papers/general/evaluation/c-stack.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/c-stack.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -8,4 +8,6 @@
 struct stack new_stack();
 void copy_stack(struct stack* dst, const struct stack* src, void* (*copy)(const void*));
+struct stack* assign_stack(struct stack* dst, const struct stack* src, 
+	void* (*copy_el)(const void*), void (*free_el)(void*));
 void clear_stack(struct stack* s, void (*free_el)(void*));
 
Index: doc/papers/general/evaluation/cfa-bench.c
===================================================================
--- doc/papers/general/evaluation/cfa-bench.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/cfa-bench.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -3,21 +3,19 @@
 #include "cfa-pair.h"
 
-int main( int argc, char * argv[] ) {
+int main() {
 	int max = 0, val = 42;
 	stack( int ) si, ti;
 
 	REPEAT_TIMED( "push_int", N, push( si, val ); )
-	TIMED( "copy_int", ti = si; )
+	TIMED( "copy_int", ti{ si }; )
 	TIMED( "clear_int", clear( si ); )
-	REPEAT_TIMED( "pop_int", N, 
-		int x = pop( ti ); if ( x > max ) max = x; )
+	REPEAT_TIMED( "pop_int", N, int x = pop( ti ); if ( x > max ) max = x; )
 
-	pair( _Bool, char ) max = { (_Bool)0 /***/, '\0' }, val = { (_Bool)1 /***/, 'a' };
-	stack( pair( _Bool, char ) ) sp, tp;
+	pair( short, char ) max = { 0h, '\0' }, val = { 42h, 'a' };
+	stack( pair( short, char ) ) sp, tp;
 
 	REPEAT_TIMED( "push_pair", N, push( sp, val ); )
-	TIMED( "copy_pair", tp = sp; )
+	TIMED( "copy_pair", tp{ sp }; )
 	TIMED( "clear_pair", clear( sp ); )
-	REPEAT_TIMED( "pop_pair", N,
-		pair(_Bool, char) x = pop( tp ); if ( x > max ) max = x; )
+	REPEAT_TIMED( "pop_pair", N, pair(short, char) x = pop( tp ); if ( x > max ) max = x; )
 }
Index: doc/papers/general/evaluation/cfa-stack.c
===================================================================
--- doc/papers/general/evaluation/cfa-stack.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/cfa-stack.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -2,17 +2,26 @@
 #include "cfa-stack.h"
 
-forall(otype T) struct stack_node {
+forall( otype T ) struct stack_node {
 	T value;
 	stack_node(T) * next;
 };
 
-forall(otype T) void ?{}( stack(T) & s ) { (s.head){ 0 }; }
+forall( otype T ) void clear( stack(T) & s ) with( s ) {
+	for ( stack_node(T) * next = head; next; ) {
+		stack_node(T) * crnt = next;
+		next = crnt->next;
+		^(*crnt){};
+		free(crnt);
+	}
+	head = 0;
+}
 
-forall(otype T) void ?{}( stack(T) & s, stack(T) t ) {
+forall( otype T ) void ?{}( stack(T) & s ) { (s.head){ 0 }; }
+
+forall( otype T ) void ?{}( stack(T) & s, stack(T) t ) {
 	stack_node(T) ** crnt = &s.head;
 	for ( stack_node(T) * next = t.head; next; next = next->next ) {
-		stack_node(T)* new_node = (stack_node(T)*)malloc(); /***/
-		(*new_node){ next->value };
-		*crnt = new_node;
+		*crnt = alloc();
+		((*crnt)->value){ next->value };
 		crnt = &(*crnt)->next;
 	}
@@ -20,5 +29,5 @@
 }
 
-forall(otype T) stack(T) ?=?( stack(T) & s, stack(T) t ) {
+forall( otype T ) stack(T) ?=?( stack(T) & s, stack(T) t ) {
 	if ( s.head == t.head ) return s;
 	clear( s );
@@ -27,17 +36,17 @@
 }
 
-forall(otype T) void ^?{}( stack(T) & s) { clear( s ); }
+forall( otype T ) void ^?{}( stack(T) & s) { clear( s ); }
 
-forall(otype T) _Bool empty( const stack(T) & s ) { return s.head == 0; }
+forall( otype T ) _Bool empty( const stack(T) & s ) { return s.head == 0; }
 
-forall(otype T) void push( stack(T) & s, T value ) {
-	stack_node(T)* new_node = (stack_node(T)*)malloc(); /***/
-	(*new_node){ value, s.head };
-	s.head = new_node;
+forall( otype T ) void push( stack(T) & s, T value ) with( s ) {
+	stack_node(T) * n = alloc();
+	(*n){ value, head };
+	head = n;
 }
 
-forall(otype T) T pop( stack(T) & s ) {
-	stack_node(T) * n = s.head;
-	s.head = n->next;
+forall( otype T ) T pop( stack(T) & s ) with( s ) {
+	stack_node(T) * n = head;
+	head = n->next;
 	T v = n->value;
 	^(*n){};
@@ -45,12 +54,2 @@
 	return v;
 }
-
-forall(otype T) void clear( stack(T) & s ) {
-	for ( stack_node(T) * next = s.head; next; ) {
-		stack_node(T) * crnt = next;
-		next = crnt->next;
-		^(*crnt){};
-		free(crnt);
-	}
-	s.head = 0;
-}
Index: doc/papers/general/evaluation/cfa-stack.h
===================================================================
--- doc/papers/general/evaluation/cfa-stack.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/cfa-stack.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -1,16 +1,16 @@
 #pragma once
 
-forall(otype T) struct stack_node;
-forall(otype T) struct stack {
+forall( otype T ) struct stack_node;
+forall( otype T ) struct stack {
 	stack_node(T) * head;
 };
 
-forall(otype T) void ?{}( stack(T) & s );
-forall(otype T) void ?{}( stack(T) & s, stack(T) t );
-forall(otype T) stack(T) ?=?( stack(T) & s, stack(T) t );
-forall(otype T) void ^?{}( stack(T) & s);
+forall( otype T ) void ?{}( stack(T) & s );
+forall( otype T ) void ?{}( stack(T) & s, stack(T) t );
+forall( otype T ) stack(T) ?=?( stack(T) & s, stack(T) t );
+forall( otype T ) void ^?{}( stack(T) & s);
 
-forall(otype T) _Bool empty( const stack(T) & s );
-forall(otype T) void push( stack(T) & s, T value );
-forall(otype T) T pop( stack(T) & s );
-forall(otype T) void clear( stack(T) & s );
+forall( otype T ) _Bool empty( const stack(T) & s );
+forall( otype T ) void push( stack(T) & s, T value );
+forall( otype T ) T pop( stack(T) & s );
+forall( otype T ) void clear( stack(T) & s );
Index: doc/papers/general/evaluation/cpp-bench.cpp
===================================================================
--- doc/papers/general/evaluation/cpp-bench.cpp	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/cpp-bench.cpp	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -13,6 +13,6 @@
 	REPEAT_TIMED( "pop_int", N, maxi = std::max( maxi, ti.pop() ); )
 
-	pair<bool, char> maxp = { false, '\0' }, valp = { true, 'a' };
-	stack<pair<bool, char>> sp, tp;
+	pair<short, char> maxp = { 0, '\0' }, valp = { 42, 'a' };
+	stack<pair<short, char>> sp, tp;
 	
 	REPEAT_TIMED( "push_pair", N, sp.push( valp ); )
Index: doc/papers/general/evaluation/cpp-stack.hpp
===================================================================
--- doc/papers/general/evaluation/cpp-stack.hpp	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/cpp-stack.hpp	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -2,25 +2,18 @@
 #include <utility>
 
-template<typename T> class stack {
+template<typename T> struct stack {
 	struct node {
 		T value;
-		node* next;
+		node * next;
+		node( const T & v, node * n = nullptr ) : value( v ), next( n ) {}
+	};
+	node * head;
 
-		node( const T& v, node* n = nullptr ) : value(v), next(n) {}
-	};
-	node* head;
+	stack() : head( nullptr ) {}
+	stack( const stack<T> & o ) { copy( o ); }
 
-	void copy(const stack<T>& o) {
-		node** crnt = &head;
-		for ( node* next = o.head; next; next = next->next ) {
-			*crnt = new node{ next->value }; /***/
-			crnt = &(*crnt)->next;
-		}
-		*crnt = nullptr;
-	}
-public:
 	void clear() {
-	    for ( node* next = head; next; ) {
-			node* crnt = next;
+		for ( node * next = head; next; ) {
+			node * crnt = next;
 			next = crnt->next;
 			delete crnt;
@@ -29,20 +22,19 @@
 	}
 
-	stack() : head(nullptr) {}
-	stack(const stack<T>& o) { copy(o); }
-	stack(stack<T>&& o) : head(o.head) { o.head = nullptr; }
+	void copy( const stack<T> & o ) {
+		node ** crnt = &head;
+		for ( node * next = o.head; next; next = next->next ) {
+			*crnt = new node{ next->value }; /***/
+			crnt = &(*crnt)->next;
+		}
+		*crnt = nullptr;
+	}
+
 	~stack() { clear(); }
 
-	stack& operator= (const stack<T>& o) {
+	stack & operator= ( const stack<T> & o ) {
 		if ( this == &o ) return *this;
 		clear();
-		copy(o);
-		return *this;
-	}
-
-	stack& operator= (stack<T>&& o) {
-		if ( this == &o ) return *this;
-		head = o.head;
-		o.head = nullptr;
+		copy( o );
 		return *this;
 	}
@@ -50,12 +42,12 @@
 	bool empty() const { return head == nullptr; }
 
-	void push(const T& value) { head = new node{ value, head };  /***/ }
+	void push( const T & value ) { head = new node{ value, head };  /***/ }
 
 	T pop() {
-		node* n = head;
+		node * n = head;
 		head = n->next;
-		T x = std::move(n->value);
+		T v = std::move( n->value );
 		delete n;
-		return x;
+		return v;
 	}
 };
Index: doc/papers/general/evaluation/cpp-vbench.cpp
===================================================================
--- doc/papers/general/evaluation/cpp-vbench.cpp	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/cpp-vbench.cpp	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -13,6 +13,6 @@
 	REPEAT_TIMED( "pop_int", N, maxi = std::max( maxi, ti.pop()->as<integer>() ); /***/ )
 
-	ptr<pair> maxp = make<pair>( make<boolean>(false), make<character>('\0') );
-	pair valp{ make<boolean>(true), make<character>('a') };
+	ptr<pair> maxp = make<pair>( make<short_integer>(0), make<character>('\0') );
+	pair valp{ make<short_integer>(42), make<character>('a') };
 	stack sp, tp;
 	
Index: doc/papers/general/evaluation/cpp-vstack.cpp
===================================================================
--- doc/papers/general/evaluation/cpp-vstack.cpp	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/cpp-vstack.cpp	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -2,37 +2,9 @@
 #include <utility>
 
-stack::node::node( const object& v, node* n ) : value( v.new_copy() ), next( n ) {}
-
-void stack::copy(const stack& o) {
-	node** crnt = &head;
-	for ( node* next = o.head; next; next = next->next ) {
-		*crnt = new node{ *next->value };
-		crnt = &(*crnt)->next;
-	}
-	*crnt = nullptr;
-}
-
-stack::stack() : head(nullptr) {}
-stack::stack(const stack& o) { copy(o); }
-stack::stack(stack&& o) : head(o.head) { o.head = nullptr; }
-stack::~stack() { clear(); }
-
-stack& stack::operator= (const stack& o) {
-	if ( this == &o ) return *this;
-	clear();
-	copy(o);
-	return *this;
-}
-
-stack& stack::operator= (stack&& o) {
-	if ( this == &o ) return *this;
-	head = o.head;
-	o.head = nullptr;
-	return *this;
-}
+stack::node::node( const object & v, node * n ) : value( v.new_copy() ), next( n ) {}
 
 void stack::clear() {
-    for ( node* next = head; next; ) {
-		node* crnt = next;
+	for ( node * next = head; next; ) {
+		node * crnt = next;
 		next = crnt->next;
 		delete crnt;
@@ -41,14 +13,33 @@
 }
 
+void stack::copy( const stack & o ) {
+	node ** crnt = &head;
+	for ( node * next = o.head; next; next = next->next ) {
+		*crnt = new node{ *next->value }; /***/
+		crnt = &(*crnt)->next;
+	}
+	*crnt = nullptr;
+}
+
+stack::stack() : head( nullptr ) {}
+stack::stack( const stack & o ) { copy( o ); }
+stack::~stack() { clear(); }
+
+stack & stack::operator=( const stack & o ) {
+	if ( this == &o ) return *this;
+	clear();
+	copy( o );
+	return *this;
+}
 
 bool stack::empty() const { return head == nullptr; }
 
-void stack::push(const object& value) { head = new node{ value, head }; /***/ }
+void stack::push( const object & value ) { head = new node{ value, head }; /***/ }
 
 ptr<object> stack::pop() {
-	node* n = head;
+	node * n = head;
 	head = n->next;
-	ptr<object> x = std::move(n->value);
+	ptr<object> v = std::move( n->value );
 	delete n;
-	return x;
+	return v;
 }
Index: doc/papers/general/evaluation/cpp-vstack.hpp
===================================================================
--- doc/papers/general/evaluation/cpp-vstack.hpp	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/cpp-vstack.hpp	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -2,25 +2,21 @@
 #include "object.hpp"
 
-class stack {
+struct stack {
 	struct node {
 		ptr<object> value;
-		node* next;
-
-		node( const object& v, node* n = nullptr );
+		node * next;
+		node( const object & v, node * n = nullptr );
 	};
-	node* head;
-
-	void copy(const stack& o);
-public:
-	stack();
-	stack(const stack& o);
-	stack(stack&& o);
-	~stack();
-	stack& operator= (const stack& o);
-	stack& operator= (stack&& o);
+	node * head;
 
 	void clear();
+	void copy( const stack & o );
+
+	stack();
+	stack( const stack & o );
+	~stack();
+	stack & operator=( const stack& o );
 	bool empty() const;
-	void push(const object& value);
+	void push( const object & value );
 	ptr<object> pop();
 };
Index: doc/papers/general/evaluation/object.hpp
===================================================================
--- doc/papers/general/evaluation/object.hpp	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/object.hpp	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -67,27 +67,4 @@
 };
 
-class boolean : public ordered, public printable {
-	bool x;
-public:
-	boolean() = default;
-	boolean(bool x) : x(x) {}
-	boolean(const boolean&) = default;
-	boolean(boolean&&) = default;
-	ptr<object> new_inst() const override { return make<boolean>(); }
-	ptr<object> new_copy() const override { return make<boolean>(*this); }
-	boolean& operator= (const boolean& that) {
-		x = that.x;
-		return *this;	
-	}
-	object& operator= (const object& that) override { return *this = that.as<boolean>(); } /***/
-	boolean& operator= (boolean&&) = default;
-	~boolean() override = default;
-
-	int cmp(const boolean& that) const { return x == that.x ? 0 : x == false ? -1 : 1; }
-	int cmp(const ordered& that) const override { return cmp( that.as<boolean>() ); } /***/
-
-	void print(std::ostream& out) const override { out << (x ? "true" : "false"); }
-};
-
 class character : public ordered, public printable {
 	char x;
@@ -116,4 +93,27 @@
 };
 
+class short_integer : public ordered, public printable {
+	short x;
+public:
+	short_integer() = default;
+	short_integer(short x) : x(x) {}
+	short_integer(const short_integer&) = default;
+	short_integer(short_integer&&) = default;
+	ptr<object> new_inst() const override { return make<short_integer>(); }
+	ptr<object> new_copy() const override { return make<short_integer>(*this); }
+	short_integer& operator= (const short_integer& that) {
+		x = that.x;
+		return *this;	
+	}
+	object& operator= (const object& that) override { return *this = that.as<short_integer>(); } /***/
+	short_integer& operator= (short_integer&&) = default;
+	~short_integer() override = default;
+
+	int cmp(const short_integer& that) const { return x == that.x ? 0 : x < that.x ? -1 : 1; }
+	int cmp(const ordered& that) const override { return cmp( that.as<short_integer>() ); } /***/
+
+	void print(std::ostream& out) const override { out << x; }
+};
+
 class integer : public ordered, public printable {
 	int x;
@@ -137,25 +137,4 @@
 
 	void print(std::ostream& out) const override { out << x; }
-};
-
-class c_string : public printable {
-	static constexpr const char* empty = "";
-	const char* s;
-public:
-	c_string() : s(empty) {}
-	c_string(const char* s) : s(s) {}
-	c_string(const c_string&) = default;
-	c_string(c_string&&) = default;
-	ptr<object> new_inst() const override { return make<c_string>(); }
-	ptr<object> new_copy() const override { return make<c_string>(s); }
-	c_string& operator= (const c_string& that) {
-		s = that.s;
-		return *this;
-	}
-	object& operator= (const object& that) override { return *this = that.as<c_string>(); } /***/
-	c_string& operator= (c_string&&) = default;
-	~c_string() override = default;
-
-	void print(std::ostream& out) const override { out << s; }
 };
 
@@ -188,5 +167,5 @@
 		return y->as<ordered>().cmp( that.y->as<ordered>() ); /***/
 	}
-	int cmp(const ordered& that) const override { return cmp( that.as<pair>() ); }
+	int cmp(const ordered& that) const override { return cmp( that.as<pair>() ); } /***/
 
 	void print(std::ostream& out) const override {
Index: doc/papers/general/evaluation/timing.dat
===================================================================
--- doc/papers/general/evaluation/timing.dat	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/timing.dat	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -1,10 +1,9 @@
 "400 million repetitions"	"C"	"\\CFA{}"	"\\CC{}"	"\\CC{obj}"
-"push\nint"	2976	2225	1522	3266
-"copy\nnt"	2932	7072	1526	3110
-"clear\nint"	1380	731	750	1488
-"pop\nint"	1444	1196	756	5156
-"push\npair"	3695	2257	953	6840
-"copy\npair"	6034	6650	994	7224
-"clear\npair"	2832	848	742	3297
-"pop\npair"	3009	5348	797	25235
-
+"push\nint"	3002	2459	1542	3269
+"copy\nint"	2985	2057	1539	3083
+"clear\nint"	1374	827	756	1469
+"pop\nint"	1416	1221	760	5098
+"push\npair"	4214	2752	950	6873
+"copy\npair"	6127	2105	987	7293
+"clear\npair"	2881	885	751	3460
+"pop\npair"	3046	5434	822	24962
Index: doc/papers/general/evaluation/timing.gp
===================================================================
--- doc/papers/general/evaluation/timing.gp	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/papers/general/evaluation/timing.gp	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -22,4 +22,7 @@
 SCALE=1000
 set ylabel "seconds"
+set yrange [0:10]
+
+set label "25.0" at 7.125,10.5
 
 # set datafile separator ","
Index: doc/refrat/keywords.tex
===================================================================
--- doc/refrat/keywords.tex	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/refrat/keywords.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -11,20 +11,20 @@
 %% Created On       : Sun Aug  6 08:17:27 2017
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Wed Aug 30 22:10:10 2017
-%% Update Count     : 5
+%% Last Modified On : Fri Apr  6 15:16:11 2018
+%% Update Count     : 7
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{tabular}{@{}llllll@{}}
 \begin{tabular}{@{}l@{}}
-©_At©			\\
 ©catch©			\\
 ©catchResume©	\\
 ©choose©		\\
 ©coroutine©		\\
+©disable©		\\
 \end{tabular}
 &
 \begin{tabular}{@{}l@{}}
-©disable©		\\
 ©dtype©			\\
 ©enable©		\\
+©exception©		\\
 ©fallthrough©	\\
 ©fallthru©		\\
@@ -35,28 +35,28 @@
 ©forall©		\\
 ©ftype©			\\
-©lvalue©		\\
 ©monitor©		\\
+©mutex©			\\
 \end{tabular}
 &
 \begin{tabular}{@{}l@{}}
-©mutex©			\\
 ©one_t©			\\
 ©otype©			\\
 ©throw©			\\
 ©throwResume©	\\
+©trait©			\\
 \end{tabular}
 &
 \begin{tabular}{@{}l@{}}
-©trait©			\\
 ©try©			\\
 ©ttype©			\\
 ©virtual©		\\
 ©waitfor©		\\
+©when©			\\
 \end{tabular}
 &
 \begin{tabular}{@{}l@{}}
-©when©			\\
 ©with©			\\
 ©zero_t©		\\
+				\\
 				\\
 				\\
Index: doc/user/user.tex
===================================================================
--- doc/user/user.tex	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ doc/user/user.tex	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -11,6 +11,6 @@
 %% Created On       : Wed Apr  6 14:53:29 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Tue Feb 13 08:31:21 2018
-%% Update Count     : 3161
+%% Last Modified On : Sat Apr 14 19:04:30 2018
+%% Update Count     : 3318
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -283,5 +283,5 @@
 
 double key = 5.0, vals[10] = { /* 10 sorted floating values */ };
-double * val = (double *)bsearch( &key, vals, 10, sizeof(vals[0]), comp );	$\C{// search sorted array}$
+double * val = (double *)bsearch( &key, vals, 10, sizeof(vals[0]), comp );	§\C{// search sorted array}§
 \end{lstlisting}
 which can be augmented simply with a polymorphic, type-safe, \CFA-overloaded wrappers:
@@ -292,8 +292,8 @@
 
 forall( otype T | { int ?<?( T, T ); } ) unsigned int bsearch( T key, const T * arr, size_t size ) {
-	T * result = bsearch( key, arr, size );	$\C{// call first version}$
-	return result ? result - arr : size; }	$\C{// pointer subtraction includes sizeof(T)}$
-
-double * val = bsearch( 5.0, vals, 10 );	$\C{// selection based on return type}$
+	T * result = bsearch( key, arr, size );	§\C{// call first version}§
+	return result ? result - arr : size; }	§\C{// pointer subtraction includes sizeof(T)}§
+
+double * val = bsearch( 5.0, vals, 10 );	§\C{// selection based on return type}§
 int posn = bsearch( 5.0, vals, 10 );
 \end{lstlisting}
@@ -353,5 +353,5 @@
 The 1999 C standard plus GNU extensions.
 \item
-\Indexc[deletekeywords=inline]{-fgnu89-inline}\index{compilation option!-fgnu89-inline@{\lstinline[deletekeywords=inline]$-fgnu89-inline$}}
+\Indexc[deletekeywords=inline]{-fgnu89-inline}\index{compilation option!-fgnu89-inline@{\lstinline[deletekeywords=inline]@-fgnu89-inline@}}
 Use the traditional GNU semantics for inline routines in C99 mode, which allows inline routines in header files.
 \end{description}
@@ -506,5 +506,5 @@
 
 C, \CC, and Java (and many other programming languages) have no exponentiation operator\index{exponentiation!operator}\index{operator!exponentiation}, \ie $x^y$, and instead use a routine, like \Indexc{pow}, to perform the exponentiation operation.
-\CFA extends the basic operators with the exponentiation operator ©?\?©\index{?\\?@\lstinline$?\?$} and ©?\=?©\index{?\\=?@\lstinline$?\=?$}, as in, ©x \ y© and ©x \= y©, which means $x^y$ and $x \leftarrow x^y$.
+\CFA extends the basic operators with the exponentiation operator ©?\?©\index{?\\?@\lstinline@?\?@} and ©?\=?©\index{?\\=?@\lstinline@?\=?@}, as in, ©x \ y© and ©x \= y©, which means $x^y$ and $x \leftarrow x^y$.
 The priority of the exponentiation operator is between the cast and multiplicative operators, so that ©w * (int)x \ (int)y * z© is parenthesized as ©((w * (((int)x) \ ((int)y))) * z)©.
 
@@ -524,9 +524,9 @@
 
 
-\section{\texorpdfstring{Labelled \LstKeywordStyle{continue} / \LstKeywordStyle{break}}{Labelled continue / break}}
+\section{\texorpdfstring{Labelled \protect\lstinline@continue@ / \protect\lstinline@break@}{Labelled continue / break}}
 
 While C provides ©continue© and ©break© statements for altering control flow, both are restricted to one level of nesting for a particular control structure.
 Unfortunately, this restriction forces programmers to use \Indexc{goto} to achieve the equivalent control-flow for more than one level of nesting.
-To prevent having to switch to the ©goto©, \CFA extends the \Indexc{continue}\index{continue@\lstinline $continue$!labelled}\index{labelled!continue@©continue©} and \Indexc{break}\index{break@\lstinline $break$!labelled}\index{labelled!break@©break©} with a target label to support static multi-level exit\index{multi-level exit}\index{static multi-level exit}~\cite{Buhr85}, as in Java.
+To prevent having to switch to the ©goto©, \CFA extends the \Indexc{continue}\index{continue@\lstinline@continue@!labelled}\index{labelled!continue@©continue©} and \Indexc{break}\index{break@\lstinline@break@!labelled}\index{labelled!break@©break©} with a target label to support static multi-level exit\index{multi-level exit}\index{static multi-level exit}~\cite{Buhr85}, as in Java.
 For both ©continue© and ©break©, the target label must be directly associated with a ©for©, ©while© or ©do© statement;
 for ©break©, the target label can also be associated with a ©switch©, ©if© or compound (©{}©) statement.
@@ -613,5 +613,5 @@
 \end{figure}
 
-Both labelled ©continue© and ©break© are a ©goto©\index{goto@\lstinline $goto$!restricted} restricted in the following ways:
+Both labelled ©continue© and ©break© are a ©goto©\index{goto@\lstinline@goto@!restricted} restricted in the following ways:
 \begin{itemize}
 \item
@@ -629,5 +629,5 @@
 
 
-\section{\texorpdfstring{\LstKeywordStyle{switch} Statement}{switch Statement}}
+\section{\texorpdfstring{\protect\lstinline@switch@ Statement}{switch Statement}}
 
 C allows a number of questionable forms for the ©switch© statement:
@@ -834,5 +834,5 @@
 
 
-\section{\texorpdfstring{\LstKeywordStyle{case} Clause}{case Clause}}
+\section{\texorpdfstring{\protect\lstinline@case@ Clause}{case Clause}}
 
 C restricts the ©case© clause of a ©switch© statement to a single value.
@@ -871,37 +871,14 @@
 \end{tabular}
 \end{cquote}
-In addition, two forms of subranges are allowed to specify case values: a new \CFA form and an existing GNU C form.\footnote{
-The GNU C form \emph{requires} spaces around the ellipse.}
-\begin{cquote}
-\begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
-\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{2em}}}{\textbf{GNU C}}	\\
+In addition, subranges are allowed to specify case values.\footnote{
+gcc has the same mechanism but awkward syntax, \lstinline@2 ...42@, because a space is required after a number, otherwise the period is a decimal point.}
 \begin{cfa}
 switch ( i ) {
-  case ®1~5:®
+  case ®1~5:®					§\C{// 1, 2, 3, 4, 5}§
 	...
-  case ®10~15:®
+  case ®10~15:®					§\C{// 10, 11, 12, 13, 14, 15}§
 	...
 }
 \end{cfa}
-&
-\begin{cfa}
-switch ( i )
-  case ®1 ... 5®:
-	...
-  case ®10 ... 15®:
-	...
-}
-\end{cfa}
-&
-\begin{cfa}
-
-// 1, 2, 3, 4, 5
-
-// 10, 11, 12, 13, 14, 15
-
-
-\end{cfa}
-\end{tabular}
-\end{cquote}
 Lists of subranges are also allowed.
 \begin{cfa}
@@ -910,6 +887,131 @@
 
 
-\section{\texorpdfstring{\LstKeywordStyle{with} Clause / Statement}{with Clause / Statement}}
-\label{s:WithClauseStatement}
+\section{\texorpdfstring{\protect\lstinline@with@ Statement}{with Statement}}
+\label{s:WithStatement}
+
+Grouping heterogeneous data into \newterm{aggregate}s (structure/union) is a common programming practice, and an aggregate can be further organized into more complex structures, such as arrays and containers:
+\begin{cfa}
+struct S {									§\C{// aggregate}§
+	char c;									§\C{// fields}§
+	int i;
+	double d;
+};
+S s, as[10];
+\end{cfa}
+However, functions manipulating aggregates must repeat the aggregate name to access its containing fields:
+\begin{cfa}
+void f( S s ) {
+	`s.`c; `s.`i; `s.`d;					§\C{// access containing fields}§
+}
+\end{cfa}
+which extends to multiple levels of qualification for nested aggregates.
+A similar situation occurs in object-oriented programming, \eg \CC:
+\begin{C++}
+struct S {
+	char c;									§\C{// fields}§
+	int i;
+	double d;
+	void f() {								§\C{// implicit ``this'' aggregate}§
+		`this->`c; `this->`i; `this->`d;	§\C{// access containing fields}§
+	}
+}
+\end{C++}
+Object-oriented nesting of member functions in a \lstinline[language=C++]@class/struct@ allows eliding \lstinline[language=C++]$this->$ because of lexical scoping.
+However, for other aggregate parameters, qualification is necessary:
+\begin{cfa}
+struct T { double m, n; };
+int S::f( T & t ) {							§\C{// multiple aggregate parameters}§
+	c; i; d;								§\C{\color{red}// this--{\textgreater}.c, this--{\textgreater}.i, this--{\textgreater}.d}§
+	`t.`m; `t.`n;							§\C{// must qualify}§
+}
+\end{cfa}
+
+To simplify the programmer experience, \CFA provides a @with@ statement (see Pascal~\cite[\S~4.F]{Pascal}) to elide aggregate qualification to fields by opening a scope containing the field identifiers.
+Hence, the qualified fields become variables with the side-effect that it is easier to optimizing field references in a block.
+\begin{cfa}
+void f( S & this ) `with ( this )` {		§\C{// with statement}§
+	c; i; d;								§\C{\color{red}// this.c, this.i, this.d}§
+}
+\end{cfa}
+with the generality of opening multiple aggregate-parameters:
+\begin{cfa}
+void f( S & s, T & t ) `with ( s, t )` {		§\C{// multiple aggregate parameters}§
+	c; i; d;								§\C{\color{red}// s.c, s.i, s.d}§
+	m; n;									§\C{\color{red}// t.m, t.n}§
+}
+\end{cfa}
+
+In detail, the @with@ statement has the form:
+\begin{cfa}
+§\emph{with-statement}§:
+	'with' '(' §\emph{expression-list}§ ')' §\emph{compound-statement}§
+\end{cfa}
+and may appear as the body of a function or nested within a function body.
+Each expression in the expression-list provides a type and object.
+The type must be an aggregate type.
+(Enumerations are already opened.)
+The object is the implicit qualifier for the open structure-fields.
+
+All expressions in the expression list are open in parallel within the compound statement.
+This semantic is different from Pascal, which nests the openings from left to right.
+The difference between parallel and nesting occurs for fields with the same name and type:
+\begin{cfa}
+struct S { int `i`; int j; double m; } s, w;
+struct T { int `i`; int k; int m; } t, w;
+with ( s, t ) {
+	j + k;									§\C{// unambiguous, s.j + t.k}§
+	m = 5.0;								§\C{// unambiguous, t.m = 5.0}§
+	m = 1;									§\C{// unambiguous, s.m = 1}§
+	int a = m;								§\C{// unambiguous, a = s.i }§
+	double b = m;							§\C{// unambiguous, b = t.m}§
+	int c = s.i + t.i;						§\C{// unambiguous, qualification}§
+	(double)m;								§\C{// unambiguous, cast}§
+}
+\end{cfa}
+For parallel semantics, both @s.i@ and @t.i@ are visible, so @i@ is ambiguous without qualification;
+for nested semantics, @t.i@ hides @s.i@, so @i@ implies @t.i@.
+\CFA's ability to overload variables means fields with the same name but different types are automatically disambiguated, eliminating most qualification when opening multiple aggregates.
+Qualification or a cast is used to disambiguate.
+
+There is an interesting problem between parameters and the function-body @with@, \eg:
+\begin{cfa}
+void ?{}( S & s, int i ) with ( s ) {		§\C{// constructor}§
+	`s.i = i;`  j = 3;  m = 5.5;			§\C{// initialize fields}§
+}
+\end{cfa}
+Here, the assignment @s.i = i@ means @s.i = s.i@, which is meaningless, and there is no mechanism to qualify the parameter @i@, making the assignment impossible using the function-body @with@.
+To solve this problem, parameters are treated like an initialized aggregate:
+\begin{cfa}
+struct Params {
+	S & s;
+	int i;
+} params;
+\end{cfa}
+and implicitly opened \emph{after} a function-body open, to give them higher priority:
+\begin{cfa}
+void ?{}( S & s, int `i` ) with ( s ) `with( §\emph{\color{red}params}§ )` {
+	s.i = `i`; j = 3; m = 5.5;
+}
+\end{cfa}
+Finally, a cast may be used to disambiguate among overload variables in a @with@ expression:
+\begin{cfa}
+with ( w ) { ... }							§\C{// ambiguous, same name and no context}§
+with ( (S)w ) { ... }						§\C{// unambiguous, cast}§
+\end{cfa}
+and @with@ expressions may be complex expressions with type reference (see Section~\ref{s:References}) to aggregate:
+% \begin{cfa}
+% struct S { int i, j; } sv;
+% with ( sv ) {								§\C{// implicit reference}§
+% 	S & sr = sv;
+% 	with ( sr ) {							§\C{// explicit reference}§
+% 		S * sp = &sv;
+% 		with ( *sp ) {						§\C{// computed reference}§
+% 			i = 3; j = 4;					§\C{\color{red}// sp--{\textgreater}i, sp--{\textgreater}j}§
+% 		}
+% 		i = 2; j = 3;						§\C{\color{red}// sr.i, sr.j}§
+% 	}
+% 	i = 1; j = 2;							§\C{\color{red}// sv.i, sv.j}§
+% }
+% \end{cfa}
 
 In \Index{object-oriented} programming, there is an implicit first parameter, often names \textbf{©self©} or \textbf{©this©}, which is elided.
@@ -935,5 +1037,5 @@
 \CFA provides a ©with© clause/statement (see Pascal~\cite[\S~4.F]{Pascal}) to elided the "©this.©" by opening a scope containing field identifiers, changing the qualified fields into variables and giving an opportunity for optimizing qualified references.
 \begin{cfa}
-int mem( S & this ) ®with this® { §\C{// with clause}§
+int mem( S & this ) ®with( this )® { §\C{// with clause}§
 	i = 1;						§\C{\color{red}// this.i}§
 	j = 2;						§\C{\color{red}// this.j}§
@@ -943,5 +1045,5 @@
 \begin{cfa}
 struct T { double m, n; };
-int mem2( S & this1, T & this2 ) ®with this1, this2® {
+int mem2( S & this1, T & this2 ) ®with( this1, this2 )® {
 	i = 1; j = 2;
 	m = 1.0; n = 2.0;
@@ -954,5 +1056,5 @@
 	struct S1 { ... } s1;
 	struct S2 { ... } s2;
-	®with s1® {					§\C{// with statement}§
+	®with( s1 )® {				§\C{// with statement}§
 		// access fields of s1 without qualification
 		®with s2® {				§\C{// nesting}§
@@ -971,16 +1073,10 @@
 struct S { int i; int j; double m; } a, c;
 struct T { int i; int k; int m } b, c;
-®with a, b® {
-	j + k;						§\C{// unambiguous, unique names define unique types}§
-	i;							§\C{// ambiguous, same name and type}§
-	a.i + b.i;					§\C{// unambiguous, qualification defines unique names}§
-	m;							§\C{// ambiguous, same name and no context to define unique type}§
-	m = 5.0;					§\C{// unambiguous, same name and context defines unique type}§
-	m = 1;						§\C{// unambiguous, same name and context defines unique type}§
-}
-®with c® { ... }				§\C{// ambiguous, same name and no context}§
-®with (S)c® { ... }				§\C{// unambiguous, same name and cast defines unique type}§
-\end{cfa}
-
+with( a, b )
+{
+}
+\end{cfa}
+
+\begin{comment}
 The components in the "with" clause
 
@@ -1007,4 +1103,5 @@
 the "with" to be implemented because I hate having to type all those object
 names for fields. It's a great way to drive people away from the language.
+\end{comment}
 
 
@@ -1595,5 +1692,5 @@
 
 \item
-lvalue to reference conversion: \lstinline[deletekeywords=lvalue]$lvalue-type cv1 T$ converts to ©cv2 T &©, which allows implicitly converting variables to references.
+lvalue to reference conversion: \lstinline[deletekeywords=lvalue]@lvalue-type cv1 T@ converts to ©cv2 T &©, which allows implicitly converting variables to references.
 \begin{cfa}
 int x, &r = ®x®, f( int & p ); // lvalue variable (int) convert to reference (int &)
@@ -6361,4 +6458,231 @@
 
 
+\section{Time}
+\label{s:TimeLib}
+
+
+%\subsection{\texorpdfstring{\protect\lstinline@Duration@}{Duration}}
+\subsection{\texorpdfstring{\LstKeywordStyle{\textmd{Duration}}}{Duration}}
+\label{s:Duration}
+
+\leavevmode
+\begin{cfa}[aboveskip=0pt,belowskip=0pt]
+struct Duration {
+	int64_t tv;							§\C{// nanoseconds}§
+};
+
+void ?{}( Duration & dur );
+void ?{}( Duration & dur, zero_t );
+
+Duration ?=?( Duration & dur, zero_t );
+
+Duration +?( Duration rhs );
+Duration ?+?( Duration & lhs, Duration rhs );
+Duration ?+=?( Duration & lhs, Duration rhs );
+
+Duration -?( Duration rhs );
+Duration ?-?( Duration & lhs, Duration rhs );
+Duration ?-=?( Duration & lhs, Duration rhs );
+
+Duration ?*?( Duration lhs, int64_t rhs );
+Duration ?*?( int64_t lhs, Duration rhs );
+Duration ?*=?( Duration & lhs, int64_t rhs );
+
+int64_t ?/?( Duration lhs, Duration rhs );
+Duration ?/?( Duration lhs, int64_t rhs );
+Duration ?/=?( Duration & lhs, int64_t rhs );
+double div( Duration lhs, Duration rhs );
+
+Duration ?%?( Duration lhs, Duration rhs );
+Duration ?%=?( Duration & lhs, Duration rhs );
+
+_Bool ?==?( Duration lhs, Duration rhs );
+_Bool ?!=?( Duration lhs, Duration rhs );
+_Bool ?<? ( Duration lhs, Duration rhs );
+_Bool ?<=?( Duration lhs, Duration rhs );
+_Bool ?>? ( Duration lhs, Duration rhs );
+_Bool ?>=?( Duration lhs, Duration rhs );
+
+_Bool ?==?( Duration lhs, zero_t );
+_Bool ?!=?( Duration lhs, zero_t );
+_Bool ?<? ( Duration lhs, zero_t );
+_Bool ?<=?( Duration lhs, zero_t );
+_Bool ?>? ( Duration lhs, zero_t );
+_Bool ?>=?( Duration lhs, zero_t );
+
+Duration abs( Duration rhs );
+
+forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Duration dur );
+
+Duration ?`ns( int64_t nsec );
+Duration ?`us( int64_t usec );
+Duration ?`ms( int64_t msec );
+Duration ?`s( int64_t sec );
+Duration ?`s( double sec );
+Duration ?`m( int64_t min );
+Duration ?`m( double min );
+Duration ?`h( int64_t hours );
+Duration ?`h( double hours );
+Duration ?`d( int64_t days );
+Duration ?`d( double days );
+Duration ?`w( int64_t weeks );
+Duration ?`w( double weeks );
+
+int64_t ?`ns( Duration dur );
+int64_t ?`us( Duration dur );
+int64_t ?`ms( Duration dur );
+int64_t ?`s( Duration dur );
+int64_t ?`m( Duration dur );
+int64_t ?`h( Duration dur );
+int64_t ?`d( Duration dur );
+int64_t ?`w( Duration dur );
+\end{cfa}
+
+
+%\subsection{\texorpdfstring{\protect\lstinline@\timeval@}{timeval}}
+\subsection{\texorpdfstring{\LstKeywordStyle{\textmd{timeval}}}{timeval}}
+\label{s:timeval}
+
+\leavevmode
+\begin{cfa}[aboveskip=0pt,belowskip=0pt]
+void ?{}( timeval & t );
+void ?{}( timeval & t, time_t sec, suseconds_t usec );
+void ?{}( timeval & t, time_t sec );
+void ?{}( timeval & t, zero_t );
+void ?{}( timeval & t, Time time );
+
+timeval ?=?( timeval & t, zero_t );
+timeval ?+?( timeval & lhs, timeval rhs );
+timeval ?-?( timeval & lhs, timeval rhs );
+_Bool ?==?( timeval lhs, timeval rhs );
+_Bool ?!=?( timeval lhs, timeval rhs );
+\end{cfa}
+
+
+\subsection{\texorpdfstring{\protect\lstinline@timespec@}{timespec}}
+\label{s:timespec}
+
+\leavevmode
+\begin{cfa}[aboveskip=0pt,belowskip=0pt]
+void ?{}( timespec & t );
+void ?{}( timespec & t, time_t sec, __syscall_slong_t nsec );
+void ?{}( timespec & t, time_t sec );
+void ?{}( timespec & t, zero_t );
+void ?{}( timespec & t, Time time );
+
+timespec ?=?( timespec & t, zero_t );
+timespec ?+?( timespec & lhs, timespec rhs );
+timespec ?-?( timespec & lhs, timespec rhs );
+_Bool ?==?( timespec lhs, timespec rhs );
+_Bool ?!=?( timespec lhs, timespec rhs );
+\end{cfa}
+
+
+\subsection{\texorpdfstring{\protect\lstinline@itimerval@}{itimerval}}
+\label{s:itimerval}
+
+\leavevmode
+\begin{cfa}[aboveskip=0pt,belowskip=0pt]
+void ?{}( itimerval & itv, Duration alarm );
+void ?{}( itimerval & itv, Duration alarm, Duration interval );
+\end{cfa}
+
+
+\subsection{\texorpdfstring{\protect\lstinline@Time@}{Time}}
+\label{s:Time}
+
+\leavevmode
+\begin{cfa}[aboveskip=0pt,belowskip=0pt]
+struct Time {
+	uint64_t tv;						§\C{// nanoseconds since UNIX epoch}§
+};
+
+void ?{}( Time & time );
+void ?{}( Time & time, zero_t );
+void ?{}( Time & time, int year, int month = 0, int day = 0, int hour = 0, int min = 0, int sec = 0, int nsec = 0 );
+Time ?=?( Time & time, zero_t );
+
+void ?{}( Time & time, timeval t );
+Time ?=?( Time & time, timeval t );
+
+void ?{}( Time & time, timespec t );
+Time ?=?( Time & time, timespec t );
+
+Time ?+?( Time & lhs, Duration rhs ) { return (Time)@{ lhs.tv + rhs.tv }; }
+Time ?+?( Duration lhs, Time rhs ) { return rhs + lhs; }
+Time ?+=?( Time & lhs, Duration rhs ) { lhs = lhs + rhs; return lhs; }
+
+Duration ?-?( Time lhs, Time rhs ) { return (Duration)@{ lhs.tv - rhs.tv }; }
+Time ?-?( Time lhs, Duration rhs ) { return (Time)@{ lhs.tv - rhs.tv }; }
+Time ?-=?( Time & lhs, Duration rhs ) { lhs = lhs - rhs; return lhs; }
+_Bool ?==?( Time lhs, Time rhs ) { return lhs.tv == rhs.tv; }
+_Bool ?!=?( Time lhs, Time rhs ) { return lhs.tv != rhs.tv; }
+_Bool ?<?( Time lhs, Time rhs ) { return lhs.tv < rhs.tv; }
+_Bool ?<=?( Time lhs, Time rhs ) { return lhs.tv <= rhs.tv; }
+_Bool ?>?( Time lhs, Time rhs ) { return lhs.tv > rhs.tv; }
+_Bool ?>=?( Time lhs, Time rhs ) { return lhs.tv >= rhs.tv; }
+
+forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Time time );
+
+char * yy_mm_dd( Time time, char * buf );
+char * ?`ymd( Time time, char * buf ) {	// short form
+	return yy_mm_dd( time, buf );
+} // ymd
+
+char * mm_dd_yy( Time time, char * buf );
+char * ?`mdy( Time time, char * buf ) {	// short form
+	return mm_dd_yy( time, buf );
+} // mdy
+
+char * dd_mm_yy( Time time, char * buf );
+char * ?`dmy( Time time, char * buf ) {	// short form
+	return dd_mm_yy( time, buf );;
+} // dmy
+
+size_t strftime( char * buf, size_t size, const char * fmt, Time time );
+\end{cfa}
+
+
+\section{Clock}
+
+\subsection{C time}
+\label{s:Ctime}
+
+\leavevmode
+\begin{cfa}[aboveskip=0pt,belowskip=0pt]
+char * ctime( time_t tp );
+char * ctime_r( time_t tp, char * buf );
+tm * gmtime( time_t tp );
+tm * gmtime_r( time_t tp, tm * result );
+tm * localtime( time_t tp );
+tm * localtime_r( time_t tp, tm * result );
+\end{cfa}
+
+
+%\subsection{\texorpdfstring{\protect\lstinline@Clock@}{Clock}}
+\subsection{\texorpdfstring{\LstKeywordStyle{\textmd{Clock}}}{Clock}}
+\label{s:Clock}
+
+\leavevmode
+\begin{cfa}[aboveskip=0pt,belowskip=0pt]
+struct Clock {
+	Duration offset;					§\C{// for virtual clock: contains offset from real-time}§
+	int clocktype;						§\C{// implementation only -1 (virtual), CLOCK\_REALTIME}§
+};
+
+void resetClock( Clock & clk );
+void resetClock( Clock & clk, Duration adj );
+void ?{}( Clock & clk );
+void ?{}( Clock & clk, Duration adj );
+Duration getRes();
+Time getTimeNsec();						§\C{// with nanoseconds}§
+Time getTime();							§\C{// without nanoseconds}§
+Time getTime( Clock & clk );
+Time ?()( Clock & clk );
+timeval getTime( Clock & clk );
+tm getTime( Clock & clk );
+\end{cfa}
+
+
 \section{Multi-precision Integers}
 \label{s:MultiPrecisionIntegers}
@@ -6658,5 +6982,4 @@
 \end{cfa}
 
-
 \bibliographystyle{plain}
 \bibliography{pl}
Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/CodeGen/CodeGenerator.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -203,6 +203,4 @@
 
 	void CodeGenerator::handleAggregate( AggregateDecl * aggDecl, const std::string & kind ) {
-		genAttributes( aggDecl->get_attributes() );
-
 		if( ! aggDecl->get_parameters().empty() && ! genC ) {
 			// assertf( ! genC, "Aggregate type parameters should not reach code generation." );
@@ -213,5 +211,7 @@
 		}
 
-		output << kind << aggDecl->get_name();
+		output << kind;
+		genAttributes( aggDecl->get_attributes() );
+		output << aggDecl->get_name();
 
 		if ( aggDecl->has_body() ) {
@@ -298,4 +298,12 @@
 			output << " }";
 		}
+	}
+
+	void CodeGenerator::postvisit( StaticAssertDecl * assertDecl ) {
+		output << "_Static_assert(";
+		assertDecl->condition->accept( *visitor );
+		output << ", ";
+		assertDecl->message->accept( *visitor );
+		output << ")";
 	}
 
@@ -928,5 +936,18 @@
 			output << "continue";
 			break;
+		  case BranchStmt::FallThrough:
+		  case BranchStmt::FallThroughDefault:
+			assertf( ! genC, "fallthru should not reach code generation." );
+		  output << "fallthru";
+			break;
 		} // switch
+		// print branch target for labelled break/continue/fallthru in debug mode
+		if ( ! genC && branchStmt->get_type() != BranchStmt::Goto ) {
+			if ( ! branchStmt->get_target().empty() ) {
+				output << " " << branchStmt->get_target();
+			} else if ( branchStmt->get_type() == BranchStmt::FallThrough ) {
+				output << " default";
+			}
+		}
 		output << ";";
 	}
Index: src/CodeGen/CodeGenerator.h
===================================================================
--- src/CodeGen/CodeGenerator.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/CodeGen/CodeGenerator.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -42,9 +42,10 @@
 		void postvisit( FunctionDecl * );
 		void postvisit( ObjectDecl * );
-		void postvisit( UnionDecl *aggregateDecl );
-		void postvisit( EnumDecl *aggregateDecl );
-		void postvisit( TraitDecl *aggregateDecl );
-		void postvisit( TypedefDecl *typeDecl );
-		void postvisit( TypeDecl *typeDecl );
+		void postvisit( UnionDecl * aggregateDecl );
+		void postvisit( EnumDecl * aggregateDecl );
+		void postvisit( TraitDecl * aggregateDecl );
+		void postvisit( TypedefDecl * typeDecl );
+		void postvisit( TypeDecl * typeDecl );
+		void postvisit( StaticAssertDecl * assertDecl );
 
 		//*** Initializer
Index: src/CodeGen/OperatorTable.cc
===================================================================
--- src/CodeGen/OperatorTable.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/CodeGen/OperatorTable.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -79,5 +79,5 @@
 	} // namespace
 
-	bool operatorLookup( std::string funcName, OperatorInfo &info ) {
+	bool operatorLookup( const std::string & funcName, OperatorInfo & info ) {
 		static bool init = false;
 		if ( ! init ) {
@@ -100,4 +100,9 @@
 			return true;
 		} // if
+	}
+
+	bool isOperator( const std::string & funcName ) {
+		OperatorInfo info;
+		return operatorLookup( funcName, info );
 	}
 
Index: src/CodeGen/OperatorTable.h
===================================================================
--- src/CodeGen/OperatorTable.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/CodeGen/OperatorTable.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -41,5 +41,6 @@
 	};
 
-	bool operatorLookup( std::string funcName, OperatorInfo &info );
+	bool isOperator( const std::string & funcName );
+	bool operatorLookup( const std::string & funcName, OperatorInfo & info );
 
 	bool isConstructor( const std::string & );
Index: src/Common/Debug.h
===================================================================
--- src/Common/Debug.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Common/Debug.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -28,23 +28,23 @@
 namespace Debug {
 	/// debug codegen a translation unit
-	static inline void codeGen( __attribute__((unused)) const std::list< Declaration * > & translationUnit, __attribute__((unused)) const std::string & label ) {
+	static inline void codeGen( __attribute__((unused)) const std::list< Declaration * > & translationUnit, __attribute__((unused)) const std::string & label, __attribute__((unused)) LinkageSpec::Spec linkageFilter = LinkageSpec::Compiler ) {
 	#ifdef DEBUG
 		std::list< Declaration * > decls;
 
-		filter( translationUnit.begin(), translationUnit.end(), back_inserter( decls ), []( Declaration * decl ) {
-			return ! LinkageSpec::isBuiltin( decl->get_linkage() );
+		filter( translationUnit.begin(), translationUnit.end(), back_inserter( decls ), [linkageFilter]( Declaration * decl ) {
+			return ! (decl->linkage & linkageFilter);
 		});
 
 		std::cerr << "======" << label << "======" << std::endl;
-		CodeGen::generate( decls, std::cerr, false, true );
+		CodeGen::generate( decls, std::cerr, true, true );
 	#endif
 	} // dump
 
-	static inline void treeDump( __attribute__((unused)) const std::list< Declaration * > & translationUnit, __attribute__((unused)) const std::string & label ) {
+	static inline void treeDump( __attribute__((unused)) const std::list< Declaration * > & translationUnit, __attribute__((unused)) const std::string & label, __attribute__((unused)) LinkageSpec::Spec linkageFilter = LinkageSpec::Compiler ) {
 	#ifdef DEBUG
 		std::list< Declaration * > decls;
 
-		filter( translationUnit.begin(), translationUnit.end(), back_inserter( decls ), []( Declaration * decl ) {
-			return ! LinkageSpec::isBuiltin( decl->get_linkage() );
+		filter( translationUnit.begin(), translationUnit.end(), back_inserter( decls ), [linkageFilter]( Declaration * decl ) {
+			return ! (decl->linkage & linkageFilter);
 		});
 
Index: src/Common/ErrorObjects.h
===================================================================
--- src/Common/ErrorObjects.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Common/ErrorObjects.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -35,5 +35,5 @@
 class SemanticErrorException : public std::exception {
   public:
-  	SemanticErrorException() = default;
+	SemanticErrorException() = default;
 	SemanticErrorException( CodeLocation location, std::string error );
 	~SemanticErrorException() throw() {}
Index: src/Common/PassVisitor.h
===================================================================
--- src/Common/PassVisitor.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Common/PassVisitor.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -66,4 +66,5 @@
 	virtual void visit( TypedefDecl * typeDecl ) override final;
 	virtual void visit( AsmDecl * asmDecl ) override final;
+	virtual void visit( StaticAssertDecl * assertDecl ) override final;
 
 	virtual void visit( CompoundStmt * compoundStmt ) override final;
@@ -161,4 +162,5 @@
 	virtual Declaration * mutate( TypedefDecl * typeDecl ) override final;
 	virtual AsmDecl * mutate( AsmDecl * asmDecl ) override final;
+	virtual StaticAssertDecl * mutate( StaticAssertDecl * assertDecl ) override final;
 
 	virtual CompoundStmt * mutate( CompoundStmt * compoundStmt ) override final;
Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Common/PassVisitor.impl.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -685,4 +685,26 @@
 
 //--------------------------------------------------------------------------
+// StaticAssertDecl
+template< typename pass_type >
+void PassVisitor< pass_type >::visit( StaticAssertDecl * node ) {
+	VISIT_START( node );
+
+	maybeAccept_impl( node->condition, *this );
+	maybeAccept_impl( node->message  , *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+StaticAssertDecl * PassVisitor< pass_type >::mutate( StaticAssertDecl * node ) {
+	MUTATE_START( node );
+
+	maybeMutate_impl( node->condition, *this );
+	maybeMutate_impl( node->message  , *this );
+
+	MUTATE_END( StaticAssertDecl, node );
+}
+
+//--------------------------------------------------------------------------
 // CompoundStmt
 template< typename pass_type >
@@ -1490,5 +1512,4 @@
 	indexerScopedAccept( node->result, *this );
 	maybeAccept_impl   ( node->type  , *this );
-	maybeAccept_impl   ( node->member, *this );
 
 	VISIT_END( node );
@@ -1502,5 +1523,4 @@
 	indexerScopedMutate( node->result, *this );
 	maybeMutate_impl   ( node->type  , *this );
-	maybeMutate_impl   ( node->member, *this );
 
 	MUTATE_END( Expression, node );
Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Common/SemanticError.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -38,8 +38,10 @@
 constexpr const char * const WarningFormats[] = {
 	"self assignment of expression: %s",
+	"rvalue to reference conversion of rvalue: %s",
 };
 
 enum class Warning {
 	SelfAssignment,
+	RvalueToReferenceConversion,
 	NUMBER_OF_WARNINGS, //This MUST be the last warning
 };
@@ -50,5 +52,6 @@
 );
 
-#define SemanticWarning(loc, id, ...) SemanticWarningImpl(loc, id, WarningFormats[(int)id], __VA_ARGS__)
+// ## used here to allow empty __VA_ARGS__
+#define SemanticWarning(loc, id, ...) SemanticWarningImpl(loc, id, WarningFormats[(int)id], ## __VA_ARGS__)
 
 void SemanticWarningImpl (CodeLocation loc, Warning warn, const char * const fmt, ...) __attribute__((format(printf, 3, 4)));
Index: src/ControlStruct/ExceptTranslate.cc
===================================================================
--- src/ControlStruct/ExceptTranslate.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/ControlStruct/ExceptTranslate.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -34,5 +34,5 @@
 #include "SynTree/Statement.h"        // for CompoundStmt, CatchStmt, ThrowStmt
 #include "SynTree/Type.h"             // for FunctionType, Type, noQualifiers
-#include "SynTree/VarExprReplacer.h"  // for VarExprReplacer, VarExprReplace...
+#include "SynTree/DeclReplacer.h"     // for DeclReplacer
 #include "SynTree/Visitor.h"          // for acceptAll
 
@@ -314,7 +314,7 @@
 			// Update variables in the body to point to this local copy.
 			{
-				VarExprReplacer::DeclMap mapping;
+				DeclReplacer::DeclMap mapping;
 				mapping[ handler_decl ] = local_except;
-				VarExprReplacer::replace( handler->body, mapping );
+				DeclReplacer::replace( handler->body, mapping );
 			}
 
Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/ControlStruct/MLEMutator.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug  4 11:21:32 2016
-// Update Count     : 202
+// Last Modified On : Thu Mar  8 17:08:25 2018
+// Update Count     : 219
 //
 
@@ -38,13 +38,33 @@
 	}
 	namespace {
-		Statement * isLoop( Statement * stmt ) { return dynamic_cast< WhileStmt * >( stmt ) ? stmt : dynamic_cast< ForStmt * >( stmt ) ? stmt : 0; }
-	}
+		bool isLoop( const MLEMutator::Entry & e ) { return dynamic_cast< WhileStmt * >( e.get_controlStructure() ) || dynamic_cast< ForStmt * >( e.get_controlStructure() ); }
+		bool isSwitch( const MLEMutator::Entry & e ) { return dynamic_cast< SwitchStmt *>( e.get_controlStructure() ); }
+
+		bool isBreakTarget( const MLEMutator::Entry & e ) { return isLoop( e ) || isSwitch( e ) || dynamic_cast< CompoundStmt *>( e.get_controlStructure() ); }
+		bool isContinueTarget( const MLEMutator::Entry & e ) { return isLoop( e ); }
+		bool isFallthroughTarget( const MLEMutator::Entry & e ) { return dynamic_cast< CaseStmt *>( e.get_controlStructure() );; }
+		bool isFallthroughDefaultTarget( const MLEMutator::Entry & e ) { return isSwitch( e ); }
+	} // namespace
 
 	// break labels have to come after the statement they break out of, so mutate a statement, then if they inform us
 	// through the breakLabel field tha they need a place to jump to on a break statement, add the break label to the
 	// body of statements
-	void MLEMutator::fixBlock( std::list< Statement * > &kids ) {
+	void MLEMutator::fixBlock( std::list< Statement * > &kids, bool caseClause ) {
+		SemanticErrorException errors;
+
 		for ( std::list< Statement * >::iterator k = kids.begin(); k != kids.end(); k++ ) {
-			*k = (*k)->acceptMutator(*visitor);
+			if ( caseClause ) {
+				// once a label is seen, it's no longer a valid fallthrough target
+				for ( Label & l : (*k)->labels ) {
+					fallthroughLabels.erase( l );
+				}
+			}
+
+			// aggregate errors since the PassVisitor mutate loop was unrollled
+			try {
+				*k = (*k)->acceptMutator(*visitor);
+			} catch( SemanticErrorException &e ) {
+				errors.append( e );
+			}
 
 			if ( ! get_breakLabel().empty() ) {
@@ -55,4 +75,8 @@
 			} // if
 		} // for
+
+		if ( ! errors.isEmpty() ) {
+			throw errors;
+		}
 	}
 
@@ -63,4 +87,5 @@
 			Label brkLabel = generator->newLabel("blockBreak", cmpndStmt);
 			enclosingControlStructures.push_back( Entry( cmpndStmt, brkLabel ) );
+			GuardAction( [this]() { enclosingControlStructures.pop_back(); } );
 		} // if
 
@@ -74,5 +99,4 @@
 				set_breakLabel( enclosingControlStructures.back().useBreakExit() );
 			} // if
-			enclosingControlStructures.pop_back();
 		} // if
 	}
@@ -112,9 +136,9 @@
 					if ( isContinue ) {
 						// continue target is outermost loop
-						targetEntry = std::find_if( enclosingControlStructures.rbegin(), enclosingControlStructures.rend(), [](Entry &e) { return isLoop( e.get_controlStructure() ); } );
+						targetEntry = std::find_if( enclosingControlStructures.rbegin(), enclosingControlStructures.rend(), isContinueTarget );
 					} else {
-						// break target is outmost control structure
-						if ( enclosingControlStructures.empty() ) SemanticError( branchStmt->location, "'break' outside a loop, switch, or labelled block" );
-						targetEntry = enclosingControlStructures.rbegin();
+						// break target is outermost loop, switch, or block control structure
+						if ( enclosingControlStructures.empty() ) SemanticError( branchStmt->location, "'break' outside a loop, 'switch', or labelled block" );
+						targetEntry = std::find_if( enclosingControlStructures.rbegin(), enclosingControlStructures.rend(), isBreakTarget );
 					} // if
 				} else {
@@ -123,9 +147,48 @@
 				} // if
 				// ensure that selected target is valid
-				if ( targetEntry == enclosingControlStructures.rend() || (isContinue && ! isLoop( targetEntry->get_controlStructure() ) ) ) {
+				if ( targetEntry == enclosingControlStructures.rend() || (isContinue && ! isContinueTarget( *targetEntry ) ) ) {
 					SemanticError( branchStmt->location, toString( (isContinue ? "'continue'" : "'break'"), " target must be an enclosing ", (isContinue ? "loop: " : "control structure: "), originalTarget ) );
 				} // if
 				break;
 			}
+			case BranchStmt::FallThrough:
+				targetEntry = std::find_if( enclosingControlStructures.rbegin(), enclosingControlStructures.rend(), isFallthroughTarget );
+				// ensure that selected target is valid
+				if ( targetEntry == enclosingControlStructures.rend() ) {
+					SemanticError( branchStmt->location, "'fallthrough' must be enclosed in a 'switch' or 'choose'" );
+				} // if
+				if ( branchStmt->get_target() != "" ) {
+					// labelled fallthrough
+					// target must be in the set of valid fallthrough labels
+					if ( ! fallthroughLabels.count( branchStmt->get_target() ) ) {
+						SemanticError( branchStmt->location, toString( "'fallthrough' target must be a later case statement: ", originalTarget ) );
+					}
+					return new BranchStmt( originalTarget, BranchStmt::Goto );
+				}
+				break;
+			case BranchStmt::FallThroughDefault: {
+				// fallthrough default
+				targetEntry = std::find_if( enclosingControlStructures.rbegin(), enclosingControlStructures.rend(), isFallthroughDefaultTarget );
+
+				// ensure that fallthrough is within a switch or choose
+				if ( targetEntry == enclosingControlStructures.rend() ) {
+					SemanticError( branchStmt->location, "'fallthrough' must be enclosed in a 'switch' or 'choose'" );
+				} // if
+
+				// ensure that switch or choose has a default clause
+				SwitchStmt * switchStmt = strict_dynamic_cast< SwitchStmt * >( targetEntry->get_controlStructure() );
+				bool foundDefault = false;
+				for ( Statement * stmt : switchStmt->statements ) {
+					CaseStmt * caseStmt = strict_dynamic_cast< CaseStmt * >( stmt );
+					if ( caseStmt->isDefault() ) {
+						foundDefault = true;
+					} // if
+				} // for
+				if ( ! foundDefault ) {
+					SemanticError( branchStmt->location, "'fallthrough default' must be enclosed in a 'switch' or 'choose' control structure with a 'default' clause" );
+				}
+				break;
+			}
+
 			default:
 				assert( false );
@@ -142,4 +205,16 @@
 				assert( targetEntry->useContExit() != "");
 				exitLabel = targetEntry->useContExit();
+				break;
+		  case BranchStmt::FallThrough:
+				assert( targetEntry->useFallExit() != "");
+				exitLabel = targetEntry->useFallExit();
+				break;
+		  case BranchStmt::FallThroughDefault:
+				assert( targetEntry->useFallDefaultExit() != "");
+				exitLabel = targetEntry->useFallDefaultExit();
+				// check that fallthrough default comes before the default clause
+				if ( ! targetEntry->isFallDefaultValid() ) {
+					SemanticError( branchStmt->location, "'fallthrough default' must precede the 'default' clause" );
+				}
 				break;
 		  default:
@@ -187,4 +262,5 @@
 		Label contLabel = generator->newLabel("loopContinue", loopStmt);
 		enclosingControlStructures.push_back( Entry( loopStmt, brkLabel, contLabel ) );
+		GuardAction( [this]() { enclosingControlStructures.pop_back(); } );
 	}
 
@@ -197,6 +273,5 @@
 
 		// this will take the necessary steps to add definitions of the previous two labels, if they are used.
-		loopStmt->set_body( mutateLoop( loopStmt->get_body(), e ) );
-		enclosingControlStructures.pop_back();
+		loopStmt->body = mutateLoop( loopStmt->get_body(), e );
 		return loopStmt;
 	}
@@ -224,4 +299,5 @@
 			Label brkLabel = generator->newLabel("blockBreak", ifStmt);
 			enclosingControlStructures.push_back( Entry( ifStmt, brkLabel ) );
+			GuardAction( [this]() { enclosingControlStructures.pop_back(); } );
 		} // if
 	}
@@ -233,5 +309,4 @@
 				set_breakLabel( enclosingControlStructures.back().useBreakExit() );
 			} // if
-			enclosingControlStructures.pop_back();
 		} // if
 		return ifStmt;
@@ -240,6 +315,39 @@
 	void MLEMutator::premutate( CaseStmt *caseStmt ) {
 		visit_children = false;
+
+		// mark default as seen before visiting its statements to catch default loops
+		if ( caseStmt->isDefault() ) {
+			enclosingControlStructures.back().seenDefault();
+		} // if
+
 		caseStmt->condition = maybeMutate( caseStmt->condition, *visitor );
-		fixBlock( caseStmt->stmts );
+		Label fallLabel = generator->newLabel( "fallThrough", caseStmt );
+		{
+			// ensure that stack isn't corrupted by exceptions in fixBlock
+			auto guard = makeFuncGuard( [&]() { enclosingControlStructures.push_back( Entry( caseStmt, fallLabel ) ); }, [this]() { enclosingControlStructures.pop_back(); } );
+
+			// empty case statement
+			if( ! caseStmt->stmts.empty() ) {
+				// the parser ensures that all statements in a case are grouped into a block
+				CompoundStmt * block = strict_dynamic_cast< CompoundStmt * >( caseStmt->stmts.front() );
+				fixBlock( block->kids, true );
+
+				// add fallthrough label if necessary
+				assert( ! enclosingControlStructures.empty() );
+				if ( enclosingControlStructures.back().isFallUsed() ) {
+					std::list<Label> ls{ enclosingControlStructures.back().useFallExit() };
+					caseStmt->stmts.push_back( new NullStmt( ls ) );
+				} // if
+			} // if
+		}
+		assert( ! enclosingControlStructures.empty() );
+		assertf( dynamic_cast<SwitchStmt *>( enclosingControlStructures.back().get_controlStructure() ), "Control structure enclosing a case clause must be a switch, but is: %s", toCString( enclosingControlStructures.back().get_controlStructure() ) );
+		if ( caseStmt->isDefault() ) {
+			if ( enclosingControlStructures.back().isFallDefaultUsed() ) {
+				// add fallthrough default label if necessary
+				std::list<Label> ls{ enclosingControlStructures.back().useFallDefaultExit() };
+				caseStmt->stmts.push_front( new NullStmt( ls ) );
+			} // if
+		} // if
 	}
 
@@ -247,5 +355,25 @@
 		// generate a label for breaking out of a labeled switch
 		Label brkLabel = generator->newLabel("switchBreak", switchStmt);
-		enclosingControlStructures.push_back( Entry(switchStmt, brkLabel) );
+		auto it = std::find_if( switchStmt->statements.rbegin(), switchStmt->statements.rend(), [](Statement * stmt) {
+			CaseStmt * caseStmt = strict_dynamic_cast< CaseStmt * >( stmt );
+			return caseStmt->isDefault();
+		});
+		CaseStmt * defaultCase = it != switchStmt->statements.rend() ? strict_dynamic_cast<CaseStmt *>( *it ) : nullptr;
+		Label fallDefaultLabel = defaultCase ? generator->newLabel( "fallThroughDefault", defaultCase ) : "";
+		enclosingControlStructures.push_back( Entry(switchStmt, brkLabel, fallDefaultLabel) );
+		GuardAction( [this]() { enclosingControlStructures.pop_back(); } );
+
+		// Collect valid labels for fallthrough. This is initially all labels at the same level as a case statement.
+		// As labels are seen during traversal, they are removed, since fallthrough is not allowed to jump backwards.
+		for ( Statement * stmt : switchStmt->statements ) {
+			CaseStmt * caseStmt = strict_dynamic_cast< CaseStmt * >( stmt );
+			if ( caseStmt->stmts.empty() ) continue;
+			CompoundStmt * block = dynamic_cast< CompoundStmt * >( caseStmt->stmts.front() );
+			for ( Statement * stmt : block->kids ) {
+				for ( Label & l : stmt->labels ) {
+					fallthroughLabels.insert( l );
+				}
+			}
+		}
 	}
 
@@ -272,5 +400,4 @@
 
 		assert ( enclosingControlStructures.back() == switchStmt );
-		enclosingControlStructures.pop_back();
 		return switchStmt;
 	}
Index: src/ControlStruct/MLEMutator.h
===================================================================
--- src/ControlStruct/MLEMutator.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/ControlStruct/MLEMutator.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:19:59 2017
-// Update Count     : 35
+// Last Modified On : Thu Mar  8 16:42:32 2018
+// Update Count     : 41
 //
 
@@ -19,4 +19,5 @@
 #include <map>                     // for map
 #include <string>                  // for string
+#include <set>                     // for unordered_set
 
 #include "Common/PassVisitor.h"
@@ -29,8 +30,7 @@
 	class LabelGenerator;
 
-	class MLEMutator : public WithVisitorRef<MLEMutator>, public WithShortCircuiting {
+	class MLEMutator : public WithVisitorRef<MLEMutator>, public WithShortCircuiting, public WithGuards {
+	  public:
 		class Entry;
-
-	  public:
 		MLEMutator( std::map<Label, Statement *> *t, LabelGenerator *gen = 0 ) : targetTable( t ), breakLabel(std::string("")), generator( gen ) {}
 		~MLEMutator();
@@ -52,29 +52,54 @@
 		Label &get_breakLabel() { return breakLabel; }
 		void set_breakLabel( Label newValue ) { breakLabel = newValue; }
-	  private:
+
 		class Entry {
 		  public:
-			explicit Entry( Statement *_loop, Label _breakExit, Label _contExit = Label("") ) :
-				loop( _loop ), breakExit( _breakExit ), contExit( _contExit ), breakUsed(false), contUsed(false) {}
+			// specialized constructors for each combination of statement with labelled break/continue/fallthrough that is valid to cleanup the use cases
+			explicit Entry( ForStmt *stmt, Label breakExit, Label contExit ) :
+				stmt( stmt ), breakExit( breakExit ), contExit( contExit ) {}
 
-			bool operator==( const Statement *stmt ) { return loop == stmt; }
-			bool operator!=( const Statement *stmt ) { return loop != stmt; }
+			explicit Entry( WhileStmt *stmt, Label breakExit, Label contExit ) :
+				stmt( stmt ), breakExit( breakExit ), contExit( contExit ) {}
 
-			bool operator==( const Entry &other ) { return loop == other.get_controlStructure(); }
+			explicit Entry( CompoundStmt *stmt, Label breakExit ) :
+				stmt( stmt ), breakExit( breakExit ) {}
 
-			Statement *get_controlStructure() const { return loop; }
+			explicit Entry( IfStmt *stmt, Label breakExit ) :
+				stmt( stmt ), breakExit( breakExit ) {}
+
+			explicit Entry( CaseStmt *stmt, Label fallExit ) :
+				stmt( stmt ), fallExit( fallExit ) {}
+
+			explicit Entry( SwitchStmt *stmt, Label breakExit, Label fallDefaultExit ) :
+				stmt( stmt ), breakExit( breakExit ), fallDefaultExit( fallDefaultExit ) {}
+
+			bool operator==( const Statement *other ) { return stmt == other; }
+			bool operator!=( const Statement *other ) { return stmt != other; }
+
+			bool operator==( const Entry &other ) { return stmt == other.get_controlStructure(); }
+
+			Statement *get_controlStructure() const { return stmt; }
 
 			Label useContExit() { contUsed = true; return contExit; }
 			Label useBreakExit() { breakUsed = true; return breakExit; }
+			Label useFallExit() { fallUsed = true; return fallExit; }
+			Label useFallDefaultExit() { fallDefaultUsed = true; return fallDefaultExit; }
 
 			bool isContUsed() const { return contUsed; }
 			bool isBreakUsed() const { return breakUsed; }
+			bool isFallUsed() const { return fallUsed; }
+			bool isFallDefaultUsed() const { return fallDefaultUsed; }
+			void seenDefault() { fallDefaultValid = false; }
+			bool isFallDefaultValid() const { return fallDefaultValid; }
 		  private:
-			Statement *loop;
-			Label breakExit, contExit;
-			bool breakUsed, contUsed;
+			Statement *stmt;
+			Label breakExit, contExit, fallExit, fallDefaultExit;
+			bool breakUsed = false, contUsed = false, fallUsed = false, fallDefaultUsed = false;
+			bool fallDefaultValid = true;
 		};
 
+	  private:
 		std::map< Label, Statement * > *targetTable;
+		std::set< Label > fallthroughLabels;
 		std::list< Entry > enclosingControlStructures;
 		Label breakLabel;
@@ -87,5 +112,5 @@
 		Statement * posthandleLoopStmt( LoopClass * loopStmt );
 
-		void fixBlock( std::list< Statement * > &kids );
+		void fixBlock( std::list< Statement * > &kids, bool caseClause = false );
 	};
 } // namespace ControlStruct
Index: src/GenPoly/GenPoly.cc
===================================================================
--- src/GenPoly/GenPoly.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/GenPoly/GenPoly.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -100,4 +100,6 @@
 		if ( dynamic_cast< TypeInstType * >( type ) ) {
 			return type;
+		} else if ( ArrayType * arrayType = dynamic_cast< ArrayType * >( type ) ) {
+			return isPolyType( arrayType->base, env );
 		} else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {
 			if ( hasPolyParams( structType->get_parameters(), env ) ) return type;
@@ -115,4 +117,6 @@
 				return type;
 			}
+		} else if ( ArrayType * arrayType = dynamic_cast< ArrayType * >( type ) ) {
+			return isPolyType( arrayType->base, tyVars, env );
 		} else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {
 			if ( hasPolyParams( structType->get_parameters(), tyVars, env ) ) return type;
Index: src/GenPoly/Lvalue.cc
===================================================================
--- src/GenPoly/Lvalue.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/GenPoly/Lvalue.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -45,4 +45,5 @@
 		Expression * mkDeref( Expression * arg ) {
 			if ( SymTab::dereferenceOperator ) {
+				// note: reference depth can be arbitrarily deep here, so peel off the outermost pointer/reference, not just pointer because they are effecitvely equivalent in this pass
 				VariableExpr * deref = new VariableExpr( SymTab::dereferenceOperator );
 				deref->result = new PointerType( Type::Qualifiers(), deref->result );
@@ -59,5 +60,5 @@
 		}
 
-		struct ReferenceConversions final {
+		struct ReferenceConversions final : public WithStmtsToAdd {
 			Expression * postmutate( CastExpr * castExpr );
 			Expression * postmutate( AddressExpr * addrExpr );
@@ -114,5 +115,5 @@
 	}
 
-	void convertLvalue( std::list< Declaration* >& translationUnit ) {
+	void convertLvalue( std::list< Declaration* > & translationUnit ) {
 		PassVisitor<ReferenceConversions> refCvt;
 		PassVisitor<ReferenceTypeElimination> elim;
@@ -150,6 +151,6 @@
 					// use type of return variable rather than expr result type, since it may have been changed to a pointer type
 					FunctionType * ftype = GenPoly::getFunctionType( func->get_type() );
-					Type * ret = ftype->get_returnVals().empty() ? nullptr : ftype->get_returnVals().front()->get_type();
-					return func->get_linkage() == LinkageSpec::Intrinsic && dynamic_cast<ReferenceType *>( ret );
+					Type * ret = ftype->returnVals.empty() ? nullptr : ftype->returnVals.front()->get_type();
+					return func->linkage == LinkageSpec::Intrinsic && dynamic_cast<ReferenceType *>( ret );
 				}
 			}
@@ -160,13 +161,12 @@
 			if ( isIntrinsicReference( appExpr ) ) {
 				// eliminate reference types from intrinsic applications - now they return lvalues
-				Type * result = appExpr->get_result();
-				appExpr->set_result( result->stripReferences()->clone() );
-				appExpr->get_result()->set_lvalue( true );
+				Type * result = appExpr->result;
+				appExpr->result = result->stripReferences()->clone();
+				appExpr->result->set_lvalue( true );
 				if ( ! inIntrinsic ) {
 					// when not in an intrinsic function, add a cast to
 					// don't add cast when in an intrinsic function, since they already have the cast
 					Expression * ret = new CastExpr( appExpr, result );
-					ret->set_env( appExpr->get_env() );
-					appExpr->set_env( nullptr );
+					std::swap( ret->env, appExpr->env );
 					return ret;
 				}
@@ -187,10 +187,10 @@
 				assertf( ftype, "Function declaration does not have function type." );
 				// can be of differing lengths only when function is variadic
-				assertf( ftype->get_parameters().size() == appExpr->get_args().size() || ftype->get_isVarArgs(), "ApplicationExpr args do not match formal parameter type." );
+				assertf( ftype->parameters.size() == appExpr->args.size() || ftype->isVarArgs, "ApplicationExpr args do not match formal parameter type." );
 
 
 				unsigned int i = 0;
-				const unsigned int end = ftype->get_parameters().size();
-				for ( auto p : unsafe_group_iterate( appExpr->get_args(), ftype->get_parameters() ) ) {
+				const unsigned int end = ftype->parameters.size();
+				for ( auto p : unsafe_group_iterate( appExpr->args, ftype->parameters ) ) {
 					if (i == end) break;
 					Expression *& arg = std::get<0>( p );
@@ -198,24 +198,30 @@
 					PRINT(
 						std::cerr << "pair<0>: " << arg << std::endl;
+						std::cerr << " -- " << arg->result << std::endl;
 						std::cerr << "pair<1>: " << formal << std::endl;
 					)
 					if ( dynamic_cast<ReferenceType*>( formal ) ) {
-						if ( isIntrinsicReference( arg ) ) { // do not combine conditions, because that changes the meaning of the else if
-							if ( function->get_linkage() != LinkageSpec::Intrinsic ) { // intrinsic functions that turn pointers into references
-								// if argument is dereference or array subscript, the result isn't REALLY a reference, so it's not necessary to fix the argument
-								PRINT(
-									std::cerr << "===is intrinsic arg in non-intrinsic call - adding address" << std::endl;
-								)
-								arg = new AddressExpr( arg );
-							}
-						} else if ( function->get_linkage() == LinkageSpec::Intrinsic ) {
-							// std::cerr << "===adding deref to arg" << std::endl;
-							// if the parameter is a reference, add a dereference to the reference-typed argument.
-							Type * baseType = InitTweak::getPointerBase( arg->get_result() );
-							assertf( baseType, "parameter is reference, arg must be pointer or reference: %s", toString( arg->get_result() ).c_str() );
+						PRINT(
+							std::cerr << "===formal is reference" << std::endl;
+						)
+						// TODO: it's likely that the second condition should be ... && ! isIntrinsicReference( arg ), but this requires investigation.
+						if ( function->get_linkage() != LinkageSpec::Intrinsic && isIntrinsicReference( arg ) ) {
+							// if argument is dereference or array subscript, the result isn't REALLY a reference, but non-intrinsic functions expect a reference: take address
+							PRINT(
+								std::cerr << "===is intrinsic arg in non-intrinsic call - adding address" << std::endl;
+							)
+							arg = new AddressExpr( arg );
+						} else if ( function->get_linkage() == LinkageSpec::Intrinsic && arg->result->referenceDepth() != 0 ) {
+							// argument is a 'real' reference, but function expects a C lvalue: add a dereference to the reference-typed argument
+							PRINT(
+								std::cerr << "===is non-intrinsic arg in intrinsic call - adding deref to arg" << std::endl;
+							)
+							Type * baseType = InitTweak::getPointerBase( arg->result );
+							assertf( baseType, "parameter is reference, arg must be pointer or reference: %s", toString( arg->result ).c_str() );
 							PointerType * ptrType = new PointerType( Type::Qualifiers(), baseType->clone() );
-							delete arg->get_result();
+							delete arg->result;
 							arg->set_result( ptrType );
 							arg = mkDeref( arg );
+							assertf( arg->result->referenceDepth() == 0, "Reference types should have been eliminated from intrinsic function calls, but weren't: %s", toCString( arg->result ) );
 						}
 					}
@@ -249,7 +255,7 @@
 		Expression * AddrRef::postmutate( AddressExpr * addrExpr ) {
 			if ( refDepth == 0 ) {
-				if ( ! isIntrinsicReference( addrExpr->get_arg() ) ) {
+				if ( ! isIntrinsicReference( addrExpr->arg ) ) {
 					// try to avoid ?[?]
-					refDepth = addrExpr->get_arg()->get_result()->referenceDepth();
+					refDepth = addrExpr->arg->result->referenceDepth();
 				}
 			}
@@ -280,131 +286,102 @@
 			// pointer casts in the right places.
 
-			// conversion to reference type
-			if ( ReferenceType * refType = dynamic_cast< ReferenceType * >( castExpr->get_result() ) ) {
-				(void)refType;
-				if ( ReferenceType * otherRef = dynamic_cast< ReferenceType * >( castExpr->get_arg()->get_result() ) ) {
-					// nothing to do if casting from reference to reference.
-					(void)otherRef;
-					PRINT( std::cerr << "convert reference to reference -- nop" << std::endl; )
-					if ( isIntrinsicReference( castExpr->get_arg() ) ) {
-						Expression * callExpr = castExpr->get_arg();
-						PRINT(
-							std::cerr << "but arg is deref -- &" << std::endl;
-							std::cerr << callExpr << std::endl;
-						)
-						callExpr = new AddressExpr( callExpr ); // this doesn't work properly for multiple casts
-						delete callExpr->get_result();
-						callExpr->set_result( refType->clone() );
-						// move environment out to new top-level
-						callExpr->set_env( castExpr->get_env() );
-						castExpr->set_arg( nullptr );
-						castExpr->set_env( nullptr );
-						delete castExpr;
-						return callExpr;
-					}
-					int depth1 = refType->referenceDepth();
-					int depth2 = otherRef->referenceDepth();
-					int diff = depth1-depth2;
-					if ( diff == 0 ) {
-						// conversion between references of the same depth
-						assertf( depth1 == depth2, "non-intrinsic reference with cast of reference to reference not yet supported: %d %d %s", depth1, depth2, toString( castExpr ).c_str() );
-						PRINT( std::cerr << castExpr << std::endl; )
-						return castExpr;
-					} else if ( diff < 0 ) {
-						// conversion from reference to reference with less depth (e.g. int && -> int &): add dereferences
-						Expression * ret = castExpr->arg;
-						for ( int i = 0; i < diff; ++i ) {
-							ret = mkDeref( ret );
-						}
-						ret->env = castExpr->env;
-						delete ret->result;
-						ret->result = castExpr->result;
-						ret->result->set_lvalue( true ); // ensure result is lvalue
-						castExpr->env = nullptr;
-						castExpr->arg = nullptr;
-						castExpr->result = nullptr;
-						delete castExpr;
-						return ret;
-					} else if ( diff > 0 ) {
-						// conversion from reference to reference with more depth (e.g. int & -> int &&): add address-of
-						Expression * ret = castExpr->arg;
-						for ( int i = 0; i < diff; ++i ) {
-							ret = new AddressExpr( ret );
-						}
-						ret->env = castExpr->env;
-						delete ret->result;
-						ret->result = castExpr->result;
-						castExpr->env = nullptr;
-						castExpr->arg = nullptr;
-						castExpr->result = nullptr;
-						delete castExpr;
-						return ret;
-					}
-
-					assertf( depth1 == depth2, "non-intrinsic reference with cast of reference to reference not yet supported: %d %d %s", depth1, depth2, toString( castExpr ).c_str() );
-					PRINT( std::cerr << castExpr << std::endl; )
+			// Note: reference depth difference is the determining factor in what code is run, rather than whether something is
+			// reference type or not, since conversion still needs to occur when both types are references that differ in depth.
+
+			Type * destType = castExpr->result;
+			Type * srcType = castExpr->arg->result;
+			int depth1 = destType->referenceDepth();
+			int depth2 = srcType->referenceDepth();
+			int diff = depth1 - depth2;
+
+			if ( diff > 0 && ! srcType->get_lvalue() ) {
+				// rvalue to reference conversion -- introduce temporary
+				// know that reference depth of cast argument is 0, need to introduce n temporaries for reference depth of n, e.g.
+				//   (int &&&)3;
+				// becomes
+				//   int __ref_tmp_0 = 3;
+				//   int & __ref_tmp_1 = _&_ref_tmp_0;
+				//   int && __ref_tmp_2 = &__ref_tmp_1;
+				//   &__ref_tmp_2;
+				// the last & comes from the remaining reference conversion code
+				SemanticWarning( castExpr->arg->location, Warning::RvalueToReferenceConversion, toCString( castExpr->arg ) );
+
+				static UniqueName tempNamer( "__ref_tmp_" );
+				ObjectDecl * temp = ObjectDecl::newObject( tempNamer.newName(), castExpr->arg->result->clone(), new SingleInit( castExpr->arg ) );
+				PRINT( std::cerr << "made temp: " << temp << std::endl; )
+				stmtsToAddBefore.push_back( new DeclStmt( temp ) );
+				for ( int i = 0; i < depth1-1; i++ ) { // xxx - maybe this should be diff-1? check how this works with reference type for srcType
+					ObjectDecl * newTemp = ObjectDecl::newObject( tempNamer.newName(), new ReferenceType( Type::Qualifiers(), temp->type->clone() ), new SingleInit( new AddressExpr( new VariableExpr( temp ) ) ) );
+					PRINT( std::cerr << "made temp" << i << ": " << newTemp << std::endl; )
+					stmtsToAddBefore.push_back( new DeclStmt( newTemp ) );
+					temp = newTemp;
+				}
+				// update diff so that remaining code works out correctly
+				castExpr->arg = new VariableExpr( temp );
+				PRINT( std::cerr << "update cast to: " << castExpr << std::endl; )
+				srcType = castExpr->arg->result;
+				depth2 = srcType->referenceDepth();
+				diff = depth1 - depth2;
+				assert( diff == 1 );
+			}
+
+			// handle conversion between different depths
+			PRINT (
+				if ( depth1 || depth2 ) {
+					std::cerr << "destType: " << destType << " / srcType: " << srcType << std::endl;
+					std::cerr << "depth: " << depth1 << " / " << depth2 << std::endl;
+				}
+			)
+			if ( diff > 0 ) {
+				// conversion to type with more depth (e.g. int & -> int &&): add address-of for each level of difference
+				Expression * ret = castExpr->arg;
+				for ( int i = 0; i < diff; ++i ) {
+					ret = new AddressExpr( ret );
+				}
+				if ( srcType->get_lvalue() && srcType->get_qualifiers() != strict_dynamic_cast<ReferenceType *>( destType )->base->get_qualifiers() ) {
+					// must keep cast if cast-to type is different from the actual type
+					castExpr->arg = ret;
 					return castExpr;
-				} else if ( castExpr->arg->result->get_lvalue() ) {
-					// conversion from lvalue to reference
-					// xxx - keep cast, but turn into pointer cast??
-					// xxx - memory
-					PRINT(
-						std::cerr << "convert lvalue to reference -- &" << std::endl;
-						std::cerr << castExpr->arg << std::endl;
-					)
-					AddressExpr * ret = new AddressExpr( castExpr->arg );
-					if ( refType->base->get_qualifiers() != castExpr->arg->result->get_qualifiers() ) {
-						// must keep cast if cast-to type is different from the actual type
-						castExpr->arg = ret;
-						return castExpr;
-					}
-					ret->env = castExpr->env;
-					delete ret->result;
-					ret->result = castExpr->result;
-					castExpr->env = nullptr;
-					castExpr->arg = nullptr;
-					castExpr->result = nullptr;
-					delete castExpr;
-					return ret;
-				} else {
-					// rvalue to reference conversion -- introduce temporary
-				}
-				assertf( false, "Only conversions to reference from lvalue are currently supported: %s", toString( castExpr ).c_str() );
-			} else if ( ReferenceType * refType = dynamic_cast< ReferenceType * >( castExpr->arg->result ) ) {
-				(void)refType;
-				// conversion from reference to rvalue
-				PRINT(
-					std::cerr << "convert reference to rvalue -- *" << std::endl;
-					std::cerr << "was = " << castExpr << std::endl;
-				)
+				}
+				ret->env = castExpr->env;
+				delete ret->result;
+				ret->result = castExpr->result;
+				castExpr->env = nullptr;
+				castExpr->arg = nullptr;
+				castExpr->result = nullptr;
+				delete castExpr;
+				return ret;
+			} else if ( diff < 0 ) {
+				// conversion to type with less depth (e.g. int && -> int &): add dereferences for each level of difference
+				diff = -diff; // care only about magnitude now
 				Expression * ret = castExpr->arg;
-				TypeSubstitution * env = castExpr->env;
-				castExpr->set_env( nullptr );
-				if ( ! isIntrinsicReference( ret ) ) {
-					// dereference if not already dereferenced
+				for ( int i = 0; i < diff; ++i ) {
 					ret = mkDeref( ret );
 				}
-				if ( ResolvExpr::typesCompatibleIgnoreQualifiers( castExpr->result, castExpr->arg->result->stripReferences(), SymTab::Indexer() ) ) {
-					// can remove cast if types are compatible, changing expression type to value type
-					ret->result = castExpr->result->clone();
-					ret->result->set_lvalue( true );  // ensure result is lvalue
-					castExpr->arg = nullptr;
-					delete castExpr;
-				} else {
+				if ( ! ResolvExpr::typesCompatibleIgnoreQualifiers( destType->stripReferences(), srcType->stripReferences(), SymTab::Indexer() ) ) {
 					// must keep cast if types are different
 					castExpr->arg = ret;
-					ret = castExpr;
-				}
-				ret->set_env( env );
-				PRINT( std::cerr << "now: " << ret << std::endl; )
-				return ret;
-			}
-			return castExpr;
+					return castExpr;
+				}
+				ret->env = castExpr->env;
+				delete ret->result;
+				ret->result = castExpr->result;
+				ret->result->set_lvalue( true ); // ensure result is lvalue
+				castExpr->env = nullptr;
+				castExpr->arg = nullptr;
+				castExpr->result = nullptr;
+				delete castExpr;
+				return ret;
+			} else {
+				assert( diff == 0 );
+				// conversion between references of the same depth
+				return castExpr;
+			}
 		}
 
 		Type * ReferenceTypeElimination::postmutate( ReferenceType * refType ) {
-			Type * base = refType->get_base();
+			Type * base = refType->base;
 			Type::Qualifiers qualifiers = refType->get_qualifiers();
-			refType->set_base( nullptr );
+			refType->base = nullptr;
 			delete refType;
 			return new PointerType( qualifiers, base );
@@ -414,18 +391,18 @@
 		Expression * GeneralizedLvalue::applyTransformation( Expression * expr, Expression * arg, Func mkExpr ) {
 			if ( CommaExpr * commaExpr = dynamic_cast< CommaExpr * >( arg ) ) {
-				Expression * arg1 = commaExpr->get_arg1()->clone();
-				Expression * arg2 = commaExpr->get_arg2()->clone();
+				Expression * arg1 = commaExpr->arg1->clone();
+				Expression * arg2 = commaExpr->arg2->clone();
 				Expression * ret = new CommaExpr( arg1, mkExpr( arg2 )->acceptMutator( *visitor ) );
-				ret->set_env( expr->get_env() );
-				expr->set_env( nullptr );
+				ret->env = expr->env;
+				expr->env = nullptr;
 				delete expr;
 				return ret;
 			} else if ( ConditionalExpr * condExpr = dynamic_cast< ConditionalExpr * >( arg ) ) {
-				Expression * arg1 = condExpr->get_arg1()->clone();
-				Expression * arg2 = condExpr->get_arg2()->clone();
-				Expression * arg3 = condExpr->get_arg3()->clone();
+				Expression * arg1 = condExpr->arg1->clone();
+				Expression * arg2 = condExpr->arg2->clone();
+				Expression * arg3 = condExpr->arg3->clone();
 				ConditionalExpr * ret = new ConditionalExpr( arg1, mkExpr( arg2 )->acceptMutator( *visitor ), mkExpr( arg3 )->acceptMutator( *visitor ) );
-				ret->set_env( expr->get_env() );
-				expr->set_env( nullptr );
+				ret->env = expr->env;
+				expr->env = nullptr;
 				delete expr;
 
@@ -436,6 +413,6 @@
 				AssertionSet needAssertions, haveAssertions;
 				OpenVarSet openVars;
-				unify( ret->get_arg2()->get_result(), ret->get_arg3()->get_result(), newEnv, needAssertions, haveAssertions, openVars, SymTab::Indexer(), commonType );
-				ret->set_result( commonType ? commonType : ret->get_arg2()->get_result()->clone() );
+				unify( ret->arg2->result, ret->arg3->result, newEnv, needAssertions, haveAssertions, openVars, SymTab::Indexer(), commonType );
+				ret->result = commonType ? commonType : ret->arg2->result->clone();
 				return ret;
 			}
@@ -444,13 +421,13 @@
 
 		Expression * GeneralizedLvalue::postmutate( MemberExpr * memExpr ) {
-			return applyTransformation( memExpr, memExpr->get_aggregate(), [=]( Expression * aggr ) { return new MemberExpr( memExpr->get_member(), aggr ); } );
+			return applyTransformation( memExpr, memExpr->aggregate, [=]( Expression * aggr ) { return new MemberExpr( memExpr->member, aggr ); } );
 		}
 
 		Expression * GeneralizedLvalue::postmutate( AddressExpr * addrExpr ) {
-			return applyTransformation( addrExpr, addrExpr->get_arg(), []( Expression * arg ) { return new AddressExpr( arg ); } );
+			return applyTransformation( addrExpr, addrExpr->arg, []( Expression * arg ) { return new AddressExpr( arg ); } );
 		}
 
 		Expression * CollapseAddrDeref::postmutate( AddressExpr * addrExpr ) {
-			Expression * arg = addrExpr->get_arg();
+			Expression * arg = addrExpr->arg;
 			if ( isIntrinsicReference( arg ) ) {
 				std::string fname = InitTweak::getFunctionName( arg );
@@ -458,7 +435,7 @@
 					Expression *& arg0 = InitTweak::getCallArg( arg, 0 );
 					Expression * ret = arg0;
-					ret->set_env( addrExpr->get_env() );
+					ret->set_env( addrExpr->env );
 					arg0 = nullptr;
-					addrExpr->set_env( nullptr );
+					addrExpr->env = nullptr;
 					delete addrExpr;
 					return ret;
@@ -487,8 +464,8 @@
 					// }
 					if ( AddressExpr * addrExpr = dynamic_cast< AddressExpr * >( arg ) ) {
-						Expression * ret = addrExpr->get_arg();
-						ret->set_env( appExpr->get_env() );
-						addrExpr->set_arg( nullptr );
-						appExpr->set_env( nullptr );
+						Expression * ret = addrExpr->arg;
+						ret->env = appExpr->env;
+						addrExpr->arg = nullptr;
+						appExpr->env = nullptr;
 						delete appExpr;
 						return ret;
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Makefile.in	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -249,5 +249,5 @@
 	SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT) \
 	SynTree/driver_cfa_cpp-Attribute.$(OBJEXT) \
-	SynTree/driver_cfa_cpp-VarExprReplacer.$(OBJEXT) \
+	SynTree/driver_cfa_cpp-DeclReplacer.$(OBJEXT) \
 	Tuples/driver_cfa_cpp-TupleAssignment.$(OBJEXT) \
 	Tuples/driver_cfa_cpp-TupleExpansion.$(OBJEXT) \
@@ -526,5 +526,5 @@
 	SynTree/NamedTypeDecl.cc SynTree/TypeDecl.cc \
 	SynTree/Initializer.cc SynTree/TypeSubstitution.cc \
-	SynTree/Attribute.cc SynTree/VarExprReplacer.cc \
+	SynTree/Attribute.cc SynTree/DeclReplacer.cc \
 	Tuples/TupleAssignment.cc Tuples/TupleExpansion.cc \
 	Tuples/Explode.cc Virtual/ExpandCasts.cc
@@ -912,5 +912,5 @@
 SynTree/driver_cfa_cpp-Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \
 	SynTree/$(DEPDIR)/$(am__dirstamp)
-SynTree/driver_cfa_cpp-VarExprReplacer.$(OBJEXT):  \
+SynTree/driver_cfa_cpp-DeclReplacer.$(OBJEXT):  \
 	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
 Tuples/$(am__dirstamp):
@@ -1039,4 +1039,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po@am__quote@
@@ -1060,5 +1061,4 @@
 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VarExprReplacer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ZeroOneType.Po@am__quote@
@@ -2498,17 +2498,17 @@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Attribute.obj `if test -f 'SynTree/Attribute.cc'; then $(CYGPATH_W) 'SynTree/Attribute.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Attribute.cc'; fi`
 
-SynTree/driver_cfa_cpp-VarExprReplacer.o: SynTree/VarExprReplacer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarExprReplacer.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarExprReplacer.Tpo -c -o SynTree/driver_cfa_cpp-VarExprReplacer.o `test -f 'SynTree/VarExprReplacer.cc' || echo '$(srcdir)/'`SynTree/VarExprReplacer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarExprReplacer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarExprReplacer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/VarExprReplacer.cc' object='SynTree/driver_cfa_cpp-VarExprReplacer.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarExprReplacer.o `test -f 'SynTree/VarExprReplacer.cc' || echo '$(srcdir)/'`SynTree/VarExprReplacer.cc
-
-SynTree/driver_cfa_cpp-VarExprReplacer.obj: SynTree/VarExprReplacer.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarExprReplacer.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarExprReplacer.Tpo -c -o SynTree/driver_cfa_cpp-VarExprReplacer.obj `if test -f 'SynTree/VarExprReplacer.cc'; then $(CYGPATH_W) 'SynTree/VarExprReplacer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarExprReplacer.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarExprReplacer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarExprReplacer.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/VarExprReplacer.cc' object='SynTree/driver_cfa_cpp-VarExprReplacer.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarExprReplacer.obj `if test -f 'SynTree/VarExprReplacer.cc'; then $(CYGPATH_W) 'SynTree/VarExprReplacer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarExprReplacer.cc'; fi`
+SynTree/driver_cfa_cpp-DeclReplacer.o: SynTree/DeclReplacer.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclReplacer.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Tpo -c -o SynTree/driver_cfa_cpp-DeclReplacer.o `test -f 'SynTree/DeclReplacer.cc' || echo '$(srcdir)/'`SynTree/DeclReplacer.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/DeclReplacer.cc' object='SynTree/driver_cfa_cpp-DeclReplacer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclReplacer.o `test -f 'SynTree/DeclReplacer.cc' || echo '$(srcdir)/'`SynTree/DeclReplacer.cc
+
+SynTree/driver_cfa_cpp-DeclReplacer.obj: SynTree/DeclReplacer.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-DeclReplacer.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Tpo -c -o SynTree/driver_cfa_cpp-DeclReplacer.obj `if test -f 'SynTree/DeclReplacer.cc'; then $(CYGPATH_W) 'SynTree/DeclReplacer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclReplacer.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclReplacer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='SynTree/DeclReplacer.cc' object='SynTree/driver_cfa_cpp-DeclReplacer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-DeclReplacer.obj `if test -f 'SynTree/DeclReplacer.cc'; then $(CYGPATH_W) 'SynTree/DeclReplacer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclReplacer.cc'; fi`
 
 Tuples/driver_cfa_cpp-TupleAssignment.o: Tuples/TupleAssignment.cc
Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Parser/DeclarationNode.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -71,4 +71,7 @@
 	attr.expr = nullptr;
 	attr.type = nullptr;
+
+	assert.condition = nullptr;
+	assert.message = nullptr;
 }
 
@@ -88,4 +91,7 @@
 	// asmName, no delete, passed to next stage
 	delete initializer;
+
+	delete assert.condition;
+	delete assert.message;
 }
 
@@ -117,4 +123,7 @@
 	newnode->attr.expr = maybeClone( attr.expr );
 	newnode->attr.type = maybeClone( attr.type );
+
+	newnode->assert.condition = maybeClone( assert.condition );
+	newnode->assert.message = maybeClone( assert.message );
 	return newnode;
 } // DeclarationNode::clone
@@ -434,4 +443,12 @@
 	return newnode;
 }
+
+DeclarationNode * DeclarationNode::newStaticAssert( ExpressionNode * condition, Expression * message ) {
+	DeclarationNode * newnode = new DeclarationNode;
+	newnode->assert.condition = condition;
+	newnode->assert.message = message;
+	return newnode;
+}
+
 
 void appendError( string & dst, const string & src ) {
@@ -1052,4 +1069,8 @@
 	} // if
 
+	if ( assert.condition ) {
+		return new StaticAssertDecl( maybeBuild< Expression >( assert.condition ), strict_dynamic_cast< ConstantExpr * >( maybeClone( assert.message ) ) );
+	}
+
 	// SUE's cannot have function specifiers, either
 	//
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Parser/ExpressionNode.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Mar  3 18:22:33 2018
-// Update Count     : 796
+// Last Modified On : Thu Mar 22 11:57:39 2018
+// Update Count     : 801
 //
 
@@ -94,12 +94,4 @@
 } // checkLNInt
 
-static void sepNumeric( string & str, string & units ) {
-	string::size_type posn = str.find_first_of( "`" );
-	if ( posn != string::npos ) {
-		units = "?" + str.substr( posn );				// extract units
-		str.erase( posn );								// remove units
-	} // if
-} // sepNumeric
-
 Expression * build_constantInteger( string & str ) {
 	static const BasicType::Kind kind[2][6] = {
@@ -108,7 +100,4 @@
 		{ BasicType::ShortUnsignedInt, BasicType::UnsignedChar, BasicType::UnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::UnsignedInt128, },
 	};
-
-	string units;
-	sepNumeric( str, units );							// separate constant from units
 
 	bool dec = true, Unsigned = false;					// decimal, unsigned constant
@@ -232,7 +221,4 @@
 	} // if
   CLEANUP:
-	if ( units.length() != 0 ) {
-		ret = new UntypedExpr( new NameExpr( units ), { ret } );
-	} // if
 
 	delete &str;										// created by lex
@@ -268,7 +254,4 @@
 	};
 
-	string units;
-	sepNumeric( str, units );							// separate constant from units
-
 	bool complx = false;								// real, complex
 	int size = 1;										// 0 => float, 1 => double, 2 => long double
@@ -303,7 +286,4 @@
 	if ( lnth != -1 ) {									// explicit length ?
 		ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[complx][size] ) );
-	} // if
-	if ( units.length() != 0 ) {
-		ret = new UntypedExpr( new NameExpr( units ), { ret } );
 	} // if
 
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Parser/ParseNode.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -246,4 +246,5 @@
 	static DeclarationNode * newAttribute( std::string *, ExpressionNode * expr = nullptr ); // gcc attributes
 	static DeclarationNode * newAsmStmt( StatementNode * stmt ); // gcc external asm statement
+	static DeclarationNode * newStaticAssert( ExpressionNode * condition, Expression * message );
 
 	DeclarationNode();
@@ -313,4 +314,10 @@
 	Attr_t attr;
 
+	struct StaticAssert_t {
+		ExpressionNode * condition;
+		Expression * message;
+	};
+	StaticAssert_t assert;
+
 	BuiltinType builtin;
 
@@ -392,5 +399,5 @@
 
 Statement * build_if( IfCtl * ctl, StatementNode * then_stmt, StatementNode * else_stmt );
-Statement * build_switch( ExpressionNode * ctl, StatementNode * stmt );
+Statement * build_switch( bool isSwitch, ExpressionNode * ctl, StatementNode * stmt );
 Statement * build_case( ExpressionNode * ctl );
 Statement * build_default();
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Parser/StatementNode.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Sep  1 23:25:23 2017
-// Update Count     : 346
+// Last Modified On : Thu Mar  8 14:31:32 2018
+// Update Count     : 348
 //
 
@@ -116,7 +116,16 @@
 }
 
-Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ) {
+Statement *build_switch( bool isSwitch, ExpressionNode *ctl, StatementNode *stmt ) {
 	std::list< Statement * > branches;
 	buildMoveList< Statement, StatementNode >( stmt, branches );
+	if ( ! isSwitch ) {										// choose statement
+		for ( Statement * stmt : branches ) {
+			CaseStmt * caseStmt = strict_dynamic_cast< CaseStmt * >( stmt );
+			if ( ! caseStmt->stmts.empty() ) {			// code after "case" => end of case list
+				CompoundStmt * block = strict_dynamic_cast< CompoundStmt * >( caseStmt->stmts.front() );
+				block->kids.push_back( new BranchStmt( "", BranchStmt::Break ) );
+			} // if
+		} // for
+	} // if
 	// branches.size() == 0 for switch (...) {}, i.e., no declaration or statements
 	return new SwitchStmt( maybeMoveBuild< Expression >(ctl), branches );
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Parser/lex.ll	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Sat Mar  3 18:38:16 2018
- * Update Count     : 640
+ * Last Modified On : Fri Apr  6 15:16:15 2018
+ * Update Count     : 670
  */
 
@@ -54,15 +54,7 @@
 
 void rm_underscore() {
-	// Remove underscores in numeric constant by copying the non-underscore characters to the front of the string.
+	// SKULLDUGGERY: remove underscores (ok to shorten?)
 	yyleng = 0;
-	for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
-		if ( yytext[i] == '`' ) {
-			// copy user suffix
-			for ( ; yytext[i] != '\0'; i += 1 ) {
-				yytext[yyleng] = yytext[i];
-				yyleng += 1;
-			} // for
-			break;
-		} // if
+	for ( int i = 0; yytext[i] != '\0'; i += 1 ) {		// copying non-underscore characters to front of string
 		if ( yytext[i] != '_' ) {
 			yytext[yyleng] = yytext[i];
@@ -71,5 +63,5 @@
 	} // for
 	yytext[yyleng] = '\0';
-}
+} // rm_underscore
 
 // Stop warning due to incorrectly generated flex code.
@@ -90,11 +82,9 @@
 attr_identifier "@"{identifier}
 
-user_suffix_opt ("`"{identifier})?
-
 				// numeric constants, CFA: '_' in constant
 hex_quad {hex}("_"?{hex}){3}
 size_opt (8|16|32|64|128)?
 length ("ll"|"LL"|[lL]{size_opt})|("hh"|"HH"|[hH])
-integer_suffix_opt ("_"?(([uU]({length}?[iI]?)|([iI]{length}))|([iI]({length}?[uU]?)|([uU]{length}))|({length}([iI]?[uU]?)|([uU][iI]))|[zZ]))?{user_suffix_opt}
+integer_suffix_opt ("_"?(([uU]({length}?[iI]?)|([iI]{length}))|([iI]({length}?[uU]?)|([uU]{length}))|({length}([iI]?[uU]?)|([uU][iI]))|[zZ]))?
 
 octal_digits ({octal})|({octal}({octal}|"_")*{octal})
@@ -118,5 +108,5 @@
 floating_length ([fFdDlL]|[lL]{floating_size})
 floating_suffix ({floating_length}?[iI]?)|([iI]{floating_length})
-floating_suffix_opt ("_"?({floating_suffix}|"DL"))?{user_suffix_opt}
+floating_suffix_opt ("_"?({floating_suffix}|"DL"))?
 decimal_digits ({decimal})|({decimal}({decimal}|"_")*{decimal})
 floating_decimal {decimal_digits}"."{exponent}?{floating_suffix_opt}
@@ -125,5 +115,5 @@
 
 binary_exponent "_"?[pP]"_"?[+-]?{decimal_digits}
-hex_floating_suffix_opt ("_"?({floating_suffix}))?{user_suffix_opt}
+hex_floating_suffix_opt ("_"?({floating_suffix}))?
 hex_floating_fraction ({hex_digits}?"."{hex_digits})|({hex_digits}".")
 hex_floating_constant {hex_prefix}(({hex_floating_fraction}{binary_exponent})|({hex_digits}{binary_exponent})){hex_floating_suffix_opt}
@@ -208,5 +198,4 @@
 __asm			{ KEYWORD_RETURN(ASM); }				// GCC
 __asm__			{ KEYWORD_RETURN(ASM); }				// GCC
-_At				{ KEYWORD_RETURN(AT); }					// CFA
 _Atomic			{ KEYWORD_RETURN(ATOMIC); }				// C11
 __attribute		{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
@@ -239,6 +228,6 @@
 exception		{ KEYWORD_RETURN(EXCEPTION); }			// CFA
 extern			{ KEYWORD_RETURN(EXTERN); }
+fallthrough		{ KEYWORD_RETURN(FALLTHROUGH); }		// CFA
 fallthru		{ KEYWORD_RETURN(FALLTHRU); }			// CFA
-fallthrough		{ KEYWORD_RETURN(FALLTHROUGH); }		// CFA
 finally			{ KEYWORD_RETURN(FINALLY); }			// CFA
 float			{ KEYWORD_RETURN(FLOAT); }
@@ -270,4 +259,5 @@
 __builtin_offsetof { KEYWORD_RETURN(OFFSETOF); }		// GCC
 one_t			{ NUMERIC_RETURN(ONE_T); }				// CFA
+or				{ QKEYWORD_RETURN(WOR); }				// CFA
 otype			{ KEYWORD_RETURN(OTYPE); }				// CFA
 register		{ KEYWORD_RETURN(REGISTER); }
@@ -306,5 +296,4 @@
 __volatile__	{ KEYWORD_RETURN(VOLATILE); }			// GCC
 waitfor			{ KEYWORD_RETURN(WAITFOR); }
-or				{ QKEYWORD_RETURN(WOR); }				// CFA
 when			{ KEYWORD_RETURN(WHEN); }
 while			{ KEYWORD_RETURN(WHILE); }
@@ -314,8 +303,9 @@
 				/* identifier */
 {identifier}	{ IDENTIFIER_RETURN(); }
+"`"{identifier}"`" {									// CFA
+	yytext[yyleng - 1] = '\0'; yytext += 1;				// SKULLDUGGERY: remove backquotes (ok to shorten?)
+	IDENTIFIER_RETURN();
+}
 {attr_identifier} { ATTRIBUTE_RETURN(); }
-"`"				{ BEGIN BKQUOTE; }
-<BKQUOTE>{identifier} { IDENTIFIER_RETURN(); }
-<BKQUOTE>"`"	{ BEGIN 0; }
 
 				/* numeric constants */
@@ -332,5 +322,5 @@
 ({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new string( yytext, yyleng ); }
 <QUOTE>[^'\\\n]* { strtext->append( yytext, yyleng ); }
-<QUOTE>['\n]{user_suffix_opt}	{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
+<QUOTE>['\n]	{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
 				/* ' stop editor highlighting */
 
@@ -338,5 +328,5 @@
 ({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new string( yytext, yyleng ); }
 <STRING>[^"\\\n]* { strtext->append( yytext, yyleng ); }
-<STRING>["\n]{user_suffix_opt}	{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
+<STRING>["\n]	{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
 				/* " stop editor highlighting */
 
@@ -348,4 +338,5 @@
 				/* punctuation */
 "@"				{ ASCIIOP_RETURN(); }
+"`"				{ ASCIIOP_RETURN(); }
 "["				{ ASCIIOP_RETURN(); }
 "]"				{ ASCIIOP_RETURN(); }
@@ -412,5 +403,5 @@
 "?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); }
 "^?{}"			{ IDENTIFIER_RETURN(); }
-"?`"{identifier} { IDENTIFIER_RETURN(); }				// unit operator
+"?`"{identifier} { IDENTIFIER_RETURN(); }				// postfix operator
 "?"{op_binary_over}"?"	{ IDENTIFIER_RETURN(); }		// binary
 	/*
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/Parser/parser.yy	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb 22 17:48:54 2018
-// Update Count     : 3028
+// Last Modified On : Wed Mar 28 17:52:24 2018
+// Update Count     : 3130
 //
 
@@ -126,4 +126,10 @@
 	} // if
 } // rebindForall
+
+NameExpr * build_postfix_name( const string * name ) {
+	NameExpr * new_name = build_varref( new string( "?`" + *name ) );
+	delete name;
+	return new_name;
+} // build_postfix_name
 
 bool forall = false;									// aggregate have one or more forall qualifiers ?
@@ -254,8 +260,7 @@
 %type<sn> statement_decl				statement_decl_list			statement_list_nodecl
 %type<sn> selection_statement
-%type<sn> switch_clause_list_opt		switch_clause_list			choose_clause_list_opt		choose_clause_list
+%type<sn> switch_clause_list_opt		switch_clause_list
 %type<en> case_value
 %type<sn> case_clause					case_value_list				case_label					case_label_list
-%type<sn> fall_through					fall_through_opt
 %type<sn> iteration_statement			jump_statement
 %type<sn> expression_statement			asm_statement
@@ -481,10 +486,20 @@
 	| '(' compound_statement ')'						// GCC, lambda expression
 		{ $$ = new ExpressionNode( new StmtExpr( dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >($2) ) ) ); }
+	| constant '`' IDENTIFIER							// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
+	| string_literal '`' IDENTIFIER						// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( $1 ) ) ); }
+	| IDENTIFIER '`' IDENTIFIER							// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( build_varref( $1 ) ) ) ); }
+	| tuple '`' IDENTIFIER								// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
+	| '(' comma_expression ')' '`' IDENTIFIER			// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $5 ) ), $2 ) ); }
 	| type_name '.' no_attr_identifier					// CFA, nested type
-		{ SemanticError( yylloc, "Qualified names are currently unimplemented." ); $$ = nullptr; } // FIX ME
+		{ SemanticError( yylloc, "Qualified names are currently unimplemented." ); $$ = nullptr; }
 	| type_name '.' '[' push field_list pop ']'			// CFA, nested type / tuple field selector
-		{ SemanticError( yylloc, "Qualified names are currently unimplemented." ); $$ = nullptr; } // FIX ME
+		{ SemanticError( yylloc, "Qualified names are currently unimplemented." ); $$ = nullptr; }
 	| GENERIC '(' assignment_expression ',' generic_assoc_list ')' // C11
-		{ SemanticError( yylloc, "_Generic is currently unimplemented." ); $$ = nullptr; } // FIX ME
+		{ SemanticError( yylloc, "_Generic is currently unimplemented." ); $$ = nullptr; }
 	;
 
@@ -535,4 +550,6 @@
 	| '(' type_no_function ')' '{' initializer_list comma_opt '}' // C99, compound-literal
 		{ $$ = new ExpressionNode( build_compoundLiteral( $2, new InitializerNode( $5, true ) ) ); }
+	| '(' type_no_function ')' '@' '{' initializer_list comma_opt '}' // CFA, explicit C compound-literal
+		{ $$ = new ExpressionNode( build_compoundLiteral( $2, (new InitializerNode( $6, true ))->set_maybeConstructed( false ) ) ); }
 	| '^' primary_expression '{' argument_expression_list '}' // CFA
 		{
@@ -670,8 +687,14 @@
 	| '(' type_no_function ')' cast_expression
 		{ $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
+	| '(' COROUTINE '&' ')' cast_expression				// CFA
+		{ SemanticError( yylloc, "coroutine cast is currently unimplemented." ); $$ = nullptr; }
+	| '(' THREAD '&' ')' cast_expression				// CFA
+		{ SemanticError( yylloc, "monitor cast is currently unimplemented." ); $$ = nullptr; }
+	| '(' MONITOR '&' ')' cast_expression				// CFA
+		{ SemanticError( yylloc, "thread cast is currently unimplemented." ); $$ = nullptr; }
 		// VIRTUAL cannot be opt because of look ahead issues
-	| '(' VIRTUAL ')' cast_expression
+	| '(' VIRTUAL ')' cast_expression					// CFA
 		{ $$ = new ExpressionNode( new VirtualCastExpr( maybeMoveBuild< Expression >( $4 ), maybeMoveBuildType( nullptr ) ) ); }
-	| '(' VIRTUAL type_no_function ')' cast_expression
+	| '(' VIRTUAL type_no_function ')' cast_expression	// CFA
 		{ $$ = new ExpressionNode( new VirtualCastExpr( maybeMoveBuild< Expression >( $5 ), maybeMoveBuildType( $3 ) ) ); }
 //	| '(' type_no_function ')' tuple
@@ -765,5 +788,5 @@
 	| logical_OR_expression '?' comma_expression ':' conditional_expression
 		{ $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
-		// FIX ME: this hack computes $1 twice
+		// FIX ME: computes $1 twice
 	| logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
 		{ $$ = new ExpressionNode( build_cond( $1, $1, $4 ) ); }
@@ -780,5 +803,5 @@
 		{ $$ = new ExpressionNode( build_binary_val( $2, $1, $3 ) ); }
 	| unary_expression '=' '{' initializer_list comma_opt '}'
-		{ SemanticError( yylloc, "Initializer assignment is currently unimplemented." ); $$ = nullptr; } // FIX ME
+		{ SemanticError( yylloc, "Initializer assignment is currently unimplemented." ); $$ = nullptr; }
 	;
 
@@ -850,5 +873,5 @@
 	| exception_statement
 	| enable_disable_statement
-		{ SemanticError( yylloc, "enable/disable statement is currently unimplemented." ); $$ = nullptr; } // FIX ME
+		{ SemanticError( yylloc, "enable/disable statement is currently unimplemented." ); $$ = nullptr; }
 	| asm_statement
 	;
@@ -917,8 +940,8 @@
 		{ $$ = new StatementNode( build_if( $4, $6, $8 ) ); }
 	| SWITCH '(' comma_expression ')' case_clause
-		{ $$ = new StatementNode( build_switch( $3, $5 ) ); }
+		{ $$ = new StatementNode( build_switch( true, $3, $5 ) ); }
 	| SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
 		{
-			StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
+			StatementNode *sw = new StatementNode( build_switch( true, $3, $8 ) );
 			// The semantics of the declaration list is changed to include associated initialization, which is performed
 			// *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
@@ -929,8 +952,8 @@
 		}
 	| CHOOSE '(' comma_expression ')' case_clause		// CFA
-		{ $$ = new StatementNode( build_switch( $3, $5 ) ); }
-	| CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
-		{
-			StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
+		{ $$ = new StatementNode( build_switch( false, $3, $5 ) ); }
+	| CHOOSE '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
+		{
+			StatementNode *sw = new StatementNode( build_switch( false, $3, $8 ) );
 			$$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
 		}
@@ -970,4 +993,10 @@
 	;
 
+//label_list_opt:
+//	// empty
+//	| identifier_or_type_name ':'
+//	| label_list_opt identifier_or_type_name ':'
+//	;
+
 case_label_list:										// CFA
 	case_label
@@ -990,39 +1019,4 @@
 	| switch_clause_list case_label_list statement_list_nodecl
 		{ $$ = (StatementNode *)( $1->set_last( $2->append_last_case( new StatementNode( build_compound( $3 ) ) ) ) ); }
-	;
-
-choose_clause_list_opt:									// CFA
-	// empty
-		{ $$ = nullptr; }
-	| choose_clause_list
-	;
-
-choose_clause_list:										// CFA
-	case_label_list fall_through
-		{ $$ = $1->append_last_case( $2 ); }
-	| case_label_list statement_list_nodecl fall_through_opt
-		{ $$ = $1->append_last_case( new StatementNode( build_compound( (StatementNode *)$2->set_last( $3 ) ) ) ); }
-	| choose_clause_list case_label_list fall_through
-		{ $$ = (StatementNode *)( $1->set_last( $2->append_last_case( $3 ))); }
-	| choose_clause_list case_label_list statement_list_nodecl fall_through_opt
-		{ $$ = (StatementNode *)( $1->set_last( $2->append_last_case( new StatementNode( build_compound( (StatementNode *)$3->set_last( $4 ) ) ) ) ) ); }
-	;
-
-fall_through_opt:										// CFA
-	// empty
-		{ $$ = new StatementNode( build_branch( BranchStmt::Break ) ); } // insert implicit break
-	| fall_through
-	;
-
-fall_through_name:										// CFA
-	FALLTHRU
-	| FALLTHROUGH
-	;
-
-fall_through:											// CFA
-	fall_through_name
-		{ $$ = nullptr; }
-	| fall_through_name ';'
-		{ $$ = nullptr; }
 	;
 
@@ -1050,4 +1044,11 @@
 		// whereas normal operator precedence yields goto (*i)+3;
 		{ $$ = new StatementNode( build_computedgoto( $3 ) ); }
+		// A semantic check is required to ensure fallthru appears only in the body of a choose statement.
+    | fall_through_name ';'								// CFA
+		{ $$ = new StatementNode( build_branch( BranchStmt::FallThrough ) ); }
+    | fall_through_name identifier_or_type_name ';'		// CFA
+		{ $$ = new StatementNode( build_branch( $2, BranchStmt::FallThrough ) ); }
+	| fall_through_name DEFAULT ';'						// CFA
+		{ $$ = new StatementNode( build_branch( BranchStmt::FallThroughDefault ) ); }
 	| CONTINUE ';'
 		// A semantic check is required to ensure this statement appears only in the body of an iteration statement.
@@ -1067,5 +1068,5 @@
 		{ $$ = new StatementNode( build_return( $2 ) ); }
 	| RETURN '{' initializer_list comma_opt '}'
-		{ SemanticError( yylloc, "Initializer return is currently unimplemented." ); $$ = nullptr; } // FIX ME
+		{ SemanticError( yylloc, "Initializer return is currently unimplemented." ); $$ = nullptr; }
 	| THROW assignment_expression_opt ';'				// handles rethrow
 		{ $$ = new StatementNode( build_throw( $2 ) ); }
@@ -1076,4 +1077,9 @@
 	;
 
+fall_through_name:										// CFA
+	FALLTHRU
+	| FALLTHROUGH
+	;
+
 with_statement:
 	WITH '(' tuple_expression_list ')' statement
@@ -1086,10 +1092,9 @@
 mutex_statement:
 	MUTEX '(' argument_expression_list ')' statement
-		{ SemanticError( yylloc, "Mutex statement is currently unimplemented." ); $$ = nullptr; } // FIX ME
+		{ SemanticError( yylloc, "Mutex statement is currently unimplemented." ); $$ = nullptr; }
 	;
 
 when_clause:
-	WHEN '(' comma_expression ')'
-		{ $$ = $3; }
+	WHEN '(' comma_expression ')'				{ $$ = $3; }
 	;
 
@@ -1115,6 +1120,5 @@
 
 timeout:
-	TIMEOUT '(' comma_expression ')'
- 		{ $$ = $3; }
+	TIMEOUT '(' comma_expression ')'	 		{ $$ = $3; }
 	;
 
@@ -1159,20 +1163,14 @@
 	//empty
 		{ $$ = nullptr; }
-	| ';' conditional_expression
-		{ $$ = $2; }
+	| ';' conditional_expression				{ $$ = $2; }
 	;
 
 handler_key:
-	CATCH
-		{ $$ = CatchStmt::Terminate; }
-	| CATCHRESUME
-		{ $$ = CatchStmt::Resume; }
+	CATCH										{ $$ = CatchStmt::Terminate; }
+	| CATCHRESUME								{ $$ = CatchStmt::Resume; }
 	;
 
 finally_clause:
-	FINALLY compound_statement
-		{
-			$$ = new StatementNode( build_finally( $2 ) );
-		}
+	FINALLY compound_statement					{ $$ = new StatementNode( build_finally( $2 ) ); }
 	;
 
@@ -1316,5 +1314,5 @@
 static_assert:
 	STATICASSERT '(' constant_expression ',' string_literal ')' ';' // C11
-		{ SemanticError( yylloc, "Static assert is currently unimplemented." ); $$ = nullptr; }	// FIX ME
+		{ $$ = DeclarationNode::newStaticAssert( $3, $5 ); }
 
 // C declaration syntax is notoriously confusing and error prone. Cforall provides its own type, variable and function
@@ -2413,5 +2411,5 @@
 			$$ = $2;
 		}
-	| forall '{' external_definition_list '}'			// CFA, namespace
+	| type_qualifier_list '{' external_definition_list '}'			// CFA, namespace
 	;
 
Index: src/ResolvExpr/CommonType.cc
===================================================================
--- src/ResolvExpr/CommonType.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/ResolvExpr/CommonType.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -28,4 +28,9 @@
 
 // #define DEBUG
+#ifdef DEBUG
+#define PRINT(x) x
+#else
+#define PRINT(x)
+#endif
 
 namespace ResolvExpr {
@@ -70,7 +75,11 @@
 		// need unify to bind type variables
 		if ( unify( t1, t2, env, have, need, newOpen, indexer, common ) ) {
-			// std::cerr << "unify success: " << widenFirst << " " << widenSecond << std::endl;
+			PRINT(
+				std::cerr << "unify success: " << widenFirst << " " << widenSecond << std::endl;
+			)
 			if ( (widenFirst || t2->get_qualifiers() <= t1->get_qualifiers()) && (widenSecond || t1->get_qualifiers() <= t2->get_qualifiers()) ) {
-				// std::cerr << "widen okay" << std::endl;
+				PRINT(
+					std::cerr << "widen okay" << std::endl;
+				)
 				common->get_qualifiers() |= t1->get_qualifiers();
 				common->get_qualifiers() |= t2->get_qualifiers();
@@ -78,5 +87,7 @@
 			}
 		}
-		// std::cerr << "exact unify failed: " << t1 << " " << t2 << std::endl;
+		PRINT(
+			std::cerr << "exact unify failed: " << t1 << " " << t2 << std::endl;
+		)
 		return nullptr;
 	}
@@ -94,5 +105,7 @@
 			// special case where one type has a reference depth of 1 larger than the other
 			if ( diff > 0 || diff < 0 ) {
-				// std::cerr << "reference depth diff: " << diff << std::endl;
+				PRINT(
+					std::cerr << "reference depth diff: " << diff << std::endl;
+				)
 				Type * result = nullptr;
 				ReferenceType * ref1 = dynamic_cast< ReferenceType * >( type1 );
@@ -109,8 +122,12 @@
 				if ( result && ref1 ) {
 					// formal is reference, so result should be reference
-					// std::cerr << "formal is reference; result should be reference" << std::endl;
+					PRINT(
+						std::cerr << "formal is reference; result should be reference" << std::endl;
+					)
 					result = new ReferenceType( ref1->get_qualifiers(), result );
 				}
-				// std::cerr << "common type of reference [" << type1 << "] and [" << type2 << "] is [" << result << "]" << std::endl;
+				PRINT(
+					std::cerr << "common type of reference [" << type1 << "] and [" << type2 << "] is [" << result << "]" << std::endl;
+				)
 				return result;
 			}
Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/ResolvExpr/ConversionCost.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -275,7 +275,6 @@
 			// xxx - not positive this is correct, but appears to allow casting int => enum
 			cost = Cost::unsafe;
-		} else if ( dynamic_cast< ZeroType* >( dest ) != nullptr || dynamic_cast< OneType* >( dest ) != nullptr ) {
-			cost = Cost::unsafe;
-		} // if
+		} // if
+		// no cases for zero_t/one_t because it should not be possible to convert int, etc. to zero_t/one_t.
 	}
 
@@ -309,6 +308,5 @@
 				// assignResult == 0 means Cost::Infinity
 			} // if
-		} else if ( dynamic_cast< ZeroType * >( dest ) ) {
-			cost = Cost::unsafe;
+			// case case for zero_t because it should not be possible to convert pointers to zero_t.
 		} // if
 	}
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/ResolvExpr/Resolver.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -59,4 +59,5 @@
 		void previsit( TypeDecl *typeDecl );
 		void previsit( EnumDecl * enumDecl );
+		void previsit( StaticAssertDecl * assertDecl );
 
 		void previsit( ArrayType * at );
@@ -361,4 +362,8 @@
 		GuardValue( inEnumDecl );
 		inEnumDecl = true;
+	}
+
+	void Resolver::previsit( StaticAssertDecl * assertDecl ) {
+		findIntegralExpression( assertDecl->condition, indexer );
 	}
 
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SymTab/Validate.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -89,4 +89,5 @@
 		void previsit( StructDecl * aggregateDecl );
 		void previsit( UnionDecl * aggregateDecl );
+		void previsit( StaticAssertDecl * assertDecl );
 
 	  private:
@@ -147,4 +148,5 @@
 		void previsit( ObjectDecl * object );
 		void previsit( FunctionDecl * func );
+		void previsit( FunctionType * ftype );
 		void previsit( StructDecl * aggrDecl );
 		void previsit( UnionDecl * aggrDecl );
@@ -296,6 +298,6 @@
 	}
 
-	bool isStructOrUnion( Declaration *decl ) {
-		return dynamic_cast< StructDecl * >( decl ) || dynamic_cast< UnionDecl * >( decl );
+	bool shouldHoist( Declaration *decl ) {
+		return dynamic_cast< StructDecl * >( decl ) || dynamic_cast< UnionDecl * >( decl ) || dynamic_cast< StaticAssertDecl * >( decl );
 	}
 
@@ -310,5 +312,5 @@
 		} // if
 		// Always remove the hoisted aggregate from the inner structure.
-		GuardAction( [aggregateDecl]() { filter( aggregateDecl->members, isStructOrUnion, false ); } );
+		GuardAction( [aggregateDecl]() { filter( aggregateDecl->members, shouldHoist, false ); } );
 	}
 
@@ -328,4 +330,10 @@
 		if ( inst->baseUnion ) {
 			declsToAddBefore.push_front( inst->baseUnion );
+		}
+	}
+
+	void HoistStruct::previsit( StaticAssertDecl * assertDecl ) {
+		if ( parentAggr ) {
+			declsToAddBefore.push_back( assertDecl );
 		}
 	}
@@ -626,14 +634,17 @@
 
 	void ForallPointerDecay::previsit( ObjectDecl *object ) {
-		forallFixer( object->type->forall, object );
-		if ( PointerType *pointer = dynamic_cast< PointerType * >( object->type ) ) {
-			forallFixer( pointer->base->forall, object );
-		} // if
+		// ensure that operator names only apply to functions or function pointers
+		if ( CodeGen::isOperator( object->name ) && ! dynamic_cast< FunctionType * >( object->type->stripDeclarator() ) ) {
+			SemanticError( object->location, toCString( "operator ", object->name.c_str(), " is not a function or function pointer." )  );
+		}
 		object->fixUniqueId();
 	}
 
 	void ForallPointerDecay::previsit( FunctionDecl *func ) {
-		forallFixer( func->type->forall, func );
 		func->fixUniqueId();
+	}
+
+	void ForallPointerDecay::previsit( FunctionType * ftype ) {
+		forallFixer( ftype->forall, ftype );
 	}
 
Index: src/SynTree/CompoundStmt.cc
===================================================================
--- src/SynTree/CompoundStmt.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/CompoundStmt.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -23,5 +23,5 @@
 #include "Statement.h"                // for CompoundStmt, Statement, DeclStmt
 #include "SynTree/Label.h"            // for Label
-#include "SynTree/VarExprReplacer.h"  // for VarExprReplacer, VarExprReplace...
+#include "SynTree/DeclReplacer.h"     // for DeclReplacer
 
 using std::string;
@@ -49,5 +49,5 @@
 	// recursively execute this routine. There may be more efficient ways of doing
 	// this.
-	VarExprReplacer::DeclMap declMap;
+	DeclReplacer::DeclMap declMap;
 	std::list< Statement * >::const_iterator origit = other.kids.begin();
 	for ( Statement * s : kids ) {
@@ -64,5 +64,5 @@
 	}
 	if ( ! declMap.empty() ) {
-		VarExprReplacer::replace( this, declMap );
+		DeclReplacer::replace( this, declMap );
 	}
 }
Index: src/SynTree/DeclReplacer.cc
===================================================================
--- src/SynTree/DeclReplacer.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/SynTree/DeclReplacer.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,82 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// VarExprReplacer.h --
+//
+// Author           : Rob Schluntz
+// Created On       : Wed Jan 13 16:29:30 2016
+// Last Modified By : Rob Schluntz
+// Last Modified On : Fri May 13 11:27:52 2016
+// Update Count     : 5
+//
+
+#include <iostream>       // for operator<<, basic_ostream, ostream, basic_o...
+
+#include "Common/PassVisitor.h"
+#include "Declaration.h"  // for operator<<, DeclarationWithType
+#include "Expression.h"   // for VariableExpr
+#include "DeclReplacer.h"
+
+namespace DeclReplacer {
+	namespace {
+		/// Visitor that replaces the declarations that VariableExprs refer to, according to the supplied mapping
+		struct DeclReplacer {
+		private:
+			const DeclMap & declMap;
+			const TypeMap & typeMap;
+			bool debug;
+		public:
+			DeclReplacer( const DeclMap & declMap, const TypeMap & typeMap, bool debug = false );
+
+			// replace variable with new node from decl map
+			void previsit( VariableExpr * varExpr );
+
+			// replace type inst with new node from type map
+			void previsit( TypeInstType * inst );
+		};
+	}
+
+	void replace( BaseSyntaxNode * node, const DeclMap & declMap, const TypeMap & typeMap, bool debug ) {
+		PassVisitor<DeclReplacer> replacer( declMap, typeMap, debug );
+		maybeAccept( node, replacer );
+	}
+
+	void replace( BaseSyntaxNode * node, const DeclMap & declMap, bool debug ) {
+		TypeMap typeMap;
+		replace( node, declMap, typeMap, debug );
+	}
+
+	void replace( BaseSyntaxNode * node, const TypeMap & typeMap, bool debug ) {
+		DeclMap declMap;
+		replace( node, declMap, typeMap, debug );
+	}
+
+	namespace {
+		DeclReplacer::DeclReplacer( const DeclMap & declMap, const TypeMap & typeMap, bool debug ) : declMap( declMap ), typeMap( typeMap ) , debug( debug ) {}
+
+		// replace variable with new node from decl map
+		void DeclReplacer::previsit( VariableExpr * varExpr ) {
+			// xxx - assertions and parameters aren't accounted for in this... (i.e. they aren't inserted into the map when it's made, only DeclStmts are)
+			if ( declMap.count( varExpr->var ) ) {
+				auto replacement = declMap.at( varExpr->var );
+				if ( debug ) {
+					std::cerr << "replacing variable reference: " << (void*)varExpr->var << " " << varExpr->var << " with " << (void*)replacement << " " << replacement << std::endl;
+				}
+				varExpr->var = replacement;
+			}
+		}
+
+		void DeclReplacer::previsit( TypeInstType * inst ) {
+			if ( typeMap.count( inst->baseType ) ) {
+				auto replacement = typeMap.at( inst->baseType );
+				if ( debug ) {
+					std::cerr << "replacing type reference: " << (void*)inst->baseType << " " << inst->baseType << " with " << (void*)replacement << " " << replacement << std::endl;
+				}
+				inst->baseType = replacement;
+			}
+		}
+	}
+} // namespace VarExprReplacer
Index: src/SynTree/DeclReplacer.h
===================================================================
--- src/SynTree/DeclReplacer.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/SynTree/DeclReplacer.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,38 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// VarExprReplacer.h --
+//
+// Author           : Rob Schluntz
+// Created On       : Wed Jan 13 16:29:30 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Jul 22 09:53:41 2017
+// Update Count     : 6
+//
+
+#pragma once
+
+#include <map>                // for map, map<>::value_compare
+
+#include "SynTree/Visitor.h"  // for Visitor
+
+class DeclarationWithType;
+class VariableExpr;
+
+namespace DeclReplacer {
+	typedef std::map< DeclarationWithType *, DeclarationWithType * > DeclMap;
+	typedef std::map< TypeDecl *, TypeDecl * > TypeMap;
+
+	void replace( BaseSyntaxNode * node, const DeclMap & declMap, bool debug = false );
+	void replace( BaseSyntaxNode * node, const TypeMap & typeMap, bool debug = false );
+	void replace( BaseSyntaxNode * node, const DeclMap & declMap, const TypeMap & typeMap, bool debug = false );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/SynTree/Declaration.cc
===================================================================
--- src/SynTree/Declaration.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/Declaration.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -81,4 +81,27 @@
 
 
+StaticAssertDecl::StaticAssertDecl( Expression * condition, ConstantExpr * message ) : Declaration( "", Type::StorageClasses(), LinkageSpec::C ), condition( condition ), message( message )  {
+}
+
+StaticAssertDecl::StaticAssertDecl( const StaticAssertDecl & other ) : Declaration( other ), condition( maybeClone( other.condition ) ), message( maybeClone( other.message ) )  {
+}
+
+StaticAssertDecl::~StaticAssertDecl() {
+	delete condition;
+	delete message;
+}
+
+void StaticAssertDecl::print( std::ostream &os, Indenter indent ) const {
+	os << "Static Assert with condition: ";
+	condition->print( os, indent+1 );
+	os << std::endl << indent << "and message: ";
+	message->print( os, indent+1 );
+os << std::endl;
+}
+
+void StaticAssertDecl::printShort( std::ostream &os, Indenter indent ) const {
+	print( os, indent );
+}
+
 // Local Variables: //
 // tab-width: 4 //
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/Declaration.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -365,4 +365,20 @@
 };
 
+class StaticAssertDecl : public Declaration {
+public:
+	Expression * condition;
+	ConstantExpr * message;   // string literal
+
+	StaticAssertDecl( Expression * condition, ConstantExpr * message );
+	StaticAssertDecl( const StaticAssertDecl & other );
+	virtual ~StaticAssertDecl();
+
+	virtual StaticAssertDecl * clone() const override { return new StaticAssertDecl( *this ); }
+	virtual void accept( Visitor &v ) override { v.visit( this ); }
+	virtual StaticAssertDecl * acceptMutator( Mutator &m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	virtual void printShort( std::ostream &os, Indenter indent = {} ) const override;
+};
+
 std::ostream & operator<<( std::ostream & os, const TypeDecl::Data & data );
 
Index: src/SynTree/FunctionDecl.cc
===================================================================
--- src/SynTree/FunctionDecl.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/FunctionDecl.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -26,5 +26,5 @@
 #include "Statement.h"           // for CompoundStmt
 #include "Type.h"                // for Type, FunctionType, Type::FuncSpecif...
-#include "VarExprReplacer.h"
+#include "DeclReplacer.h"
 
 extern bool translation_unit_nomain;
@@ -41,5 +41,5 @@
 		: Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ) {
 
-	VarExprReplacer::DeclMap declMap;
+	DeclReplacer::DeclMap declMap;
 	for ( auto p : group_iterate( other.type->parameters, type->parameters ) ) {
 		declMap[ std::get<0>(p) ] = std::get<1>(p);
@@ -49,5 +49,5 @@
 	}
 	if ( ! declMap.empty() ) {
-		VarExprReplacer::replace( this, declMap );
+		DeclReplacer::replace( this, declMap );
 	}
 	cloneAll( other.withExprs, withExprs );
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/Mutator.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -34,4 +34,5 @@
 	virtual Declaration * mutate( TypedefDecl * typeDecl ) = 0;
 	virtual AsmDecl * mutate( AsmDecl * asmDecl ) = 0;
+	virtual StaticAssertDecl * mutate( StaticAssertDecl * assertDecl ) = 0;
 
 	virtual CompoundStmt * mutate( CompoundStmt * compoundStmt ) = 0;
Index: src/SynTree/Statement.cc
===================================================================
--- src/SynTree/Statement.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/Statement.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -34,7 +34,7 @@
 Statement::Statement( const std::list<Label> & labels ) : labels( labels ) {}
 
-void Statement::print( std::ostream & os, Indenter ) const {
+void Statement::print( std::ostream & os, Indenter indent ) const {
 	if ( ! labels.empty() ) {
-		os << "Labels: {";
+		os << indent << "... Labels: {";
 		for ( const Label & l : labels ) {
 			os << l << ",";
@@ -223,7 +223,7 @@
 
 void CaseStmt::print( std::ostream &os, Indenter indent ) const {
-	if ( isDefault() ) os << "Default ";
+	if ( isDefault() ) os << indent << "Default ";
 	else {
-		os << "Case ";
+		os << indent << "Case ";
 		condition->print( os, indent );
 	} // if
@@ -231,4 +231,5 @@
 
 	for ( Statement * stmt : stmts ) {
+		os << indent+1;
 		stmt->print( os, indent+1 );
 	}
@@ -478,6 +479,7 @@
 }
 
-void NullStmt::print( std::ostream &os, Indenter ) const {
+void NullStmt::print( std::ostream &os, Indenter indent ) const {
 	os << "Null Statement" << endl;
+	Statement::print( os, indent );
 }
 
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/Statement.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Sep  3 20:46:46 2017
-// Update Count     : 77
+// Last Modified On : Thu Mar  8 14:53:02 2018
+// Update Count     : 78
 //
 
@@ -255,5 +255,5 @@
 class BranchStmt : public Statement {
   public:
-	enum Type { Goto = 0, Break, Continue };
+	enum Type { Goto = 0, Break, Continue, FallThrough, FallThroughDefault };
 
 	// originalTarget kept for error messages.
Index: src/SynTree/SynTree.h
===================================================================
--- src/SynTree/SynTree.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/SynTree.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -38,4 +38,5 @@
 class TypedefDecl;
 class AsmDecl;
+class StaticAssertDecl;
 
 class Statement;
Index: src/SynTree/TypeSubstitution.cc
===================================================================
--- src/SynTree/TypeSubstitution.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/TypeSubstitution.cc	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -149,12 +149,19 @@
 		return inst;
 	} else {
-///	    std::cerr << "found " << inst->get_name() << ", replacing with ";
-///	    i->second->print( std::cerr );
-///	    std::cerr << std::endl;
+		// cut off infinite loop for the case where a type is bound to itself.
+		// Note: this does not prevent cycles in the general case, so it may be necessary to do something more sophisticated here.
+		// TODO: investigate preventing type variables from being bound to themselves in the first place.
+		if ( TypeInstType * replacement = dynamic_cast< TypeInstType * >( i->second ) ) {
+			if ( inst->name == replacement->name ) {
+				return inst;
+			}
+		}
+		// std::cerr << "found " << inst->name << ", replacing with " << i->second << std::endl;
 		subCount++;
 		Type * newtype = i->second->clone();
 		newtype->get_qualifiers() |= inst->get_qualifiers();
 		delete inst;
-		return newtype;
+		// Note: need to recursively apply substitution to the new type because normalize does not substitute bound vars, but bound vars must be substituted when not in freeOnly mode.
+		return newtype->acceptMutator( *visitor );
 	} // if
 }
Index: src/SynTree/TypeSubstitution.h
===================================================================
--- src/SynTree/TypeSubstitution.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/TypeSubstitution.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -129,5 +129,5 @@
 
 // definitition must happen after PassVisitor is included so that WithGuards can be used
-struct TypeSubstitution::Substituter : public WithGuards {
+struct TypeSubstitution::Substituter : public WithGuards, public WithVisitorRef<Substituter> {
 		Substituter( TypeSubstitution & sub, bool freeOnly ) : sub( sub ), freeOnly( freeOnly ) {}
 
Index: c/SynTree/VarExprReplacer.cc
===================================================================
--- src/SynTree/VarExprReplacer.cc	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// VarExprReplacer.h --
-//
-// Author           : Rob Schluntz
-// Created On       : Wed Jan 13 16:29:30 2016
-// Last Modified By : Rob Schluntz
-// Last Modified On : Fri May 13 11:27:52 2016
-// Update Count     : 5
-//
-
-#include <iostream>       // for operator<<, basic_ostream, ostream, basic_o...
-
-#include "Common/PassVisitor.h"
-#include "Declaration.h"  // for operator<<, DeclarationWithType
-#include "Expression.h"   // for VariableExpr
-#include "VarExprReplacer.h"
-
-namespace VarExprReplacer {
-	namespace {
-		/// Visitor that replaces the declarations that VariableExprs refer to, according to the supplied mapping
-		struct VarExprReplacer {
-		private:
-			const DeclMap & declMap;
-			bool debug;
-		public:
-			VarExprReplacer( const DeclMap & declMap, bool debug = false );
-
-			// replace variable with new node from decl map
-			void previsit( VariableExpr * varExpr );
-		};
-	}
-
-	void replace( BaseSyntaxNode * node, const DeclMap & declMap, bool debug ) {
-		PassVisitor<VarExprReplacer> replacer( declMap, debug );
-		maybeAccept( node, replacer );
-	}
-
-	namespace {
-		VarExprReplacer::VarExprReplacer( const DeclMap & declMap, bool debug ) : declMap( declMap ), debug( debug ) {}
-
-		// replace variable with new node from decl map
-		void VarExprReplacer::previsit( VariableExpr * varExpr ) {
-			// xxx - assertions and parameters aren't accounted for in this... (i.e. they aren't inserted into the map when it's made, only DeclStmts are)
-			if ( declMap.count( varExpr->var ) ) {
-				if ( debug ) {
-					std::cerr << "replacing variable reference: " << (void*)varExpr->var << " " << varExpr->var << " with " << (void*)declMap.at( varExpr->var ) << " " << declMap.at( varExpr->var ) << std::endl;
-				}
-				varExpr->var = declMap.at( varExpr->var );
-			}
-		}
-	}
-} // namespace VarExprReplacer
-
-
-
-
-
-
-
Index: c/SynTree/VarExprReplacer.h
===================================================================
--- src/SynTree/VarExprReplacer.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ 	(revision )
@@ -1,35 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// VarExprReplacer.h --
-//
-// Author           : Rob Schluntz
-// Created On       : Wed Jan 13 16:29:30 2016
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:53:41 2017
-// Update Count     : 6
-//
-
-#pragma once
-
-#include <map>                // for map, map<>::value_compare
-
-#include "SynTree/Visitor.h"  // for Visitor
-
-class DeclarationWithType;
-class VariableExpr;
-
-namespace VarExprReplacer {
-	typedef std::map< DeclarationWithType *, DeclarationWithType * > DeclMap;
-
-	void replace( BaseSyntaxNode * node, const DeclMap & declMap, bool debug = false );
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/Visitor.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -36,4 +36,5 @@
 	virtual void visit( TypedefDecl * typeDecl ) = 0;
 	virtual void visit( AsmDecl * asmDecl ) = 0;
+	virtual void visit( StaticAssertDecl * assertDecl ) = 0;
 
 	virtual void visit( CompoundStmt * compoundStmt ) = 0;
Index: src/SynTree/module.mk
===================================================================
--- src/SynTree/module.mk	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/SynTree/module.mk	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -48,4 +48,4 @@
        SynTree/TypeSubstitution.cc \
        SynTree/Attribute.cc \
-       SynTree/VarExprReplacer.cc
+       SynTree/DeclReplacer.cc
 
Index: src/benchmark/bench.h
===================================================================
--- src/benchmark/bench.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/benchmark/bench.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,5 +10,5 @@
 #if defined(__cforall)
 }
-#include <bits/cfatime.h>
+//#include <bits/cfatime.h>
 #endif
 
Index: src/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/Makefile.am	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 08:54:01 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Fri Feb  9 15:51:24 2018
-## Update Count     : 223
+## Last Modified On : Thu Apr 12 14:38:34 2018
+## Update Count     : 231
 ###############################################################################
 
@@ -46,5 +46,5 @@
 CC = ${abs_top_srcdir}/src/driver/cfa
 
-headers = fstream iostream iterator limits rational stdlib \
+headers = fstream iostream iterator limits rational time stdlib \
 	  containers/maybe containers/pair containers/result containers/vector
 
@@ -100,6 +100,7 @@
 	math 				\
 	gmp 				\
+	time_t.h			\
+	clock			\
 	bits/align.h 		\
-	bits/cfatime.h 		\
 	bits/containers.h		\
 	bits/defs.h 		\
Index: src/libcfa/Makefile.in
===================================================================
--- src/libcfa/Makefile.in	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/Makefile.in	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -150,6 +150,6 @@
 am__libcfa_d_a_SOURCES_DIST = libcfa-prelude.c interpose.c \
 	bits/debug.c fstream.c iostream.c iterator.c limits.c \
-	rational.c stdlib.c containers/maybe.c containers/pair.c \
-	containers/result.c containers/vector.c \
+	rational.c time.c stdlib.c containers/maybe.c \
+	containers/pair.c containers/result.c containers/vector.c \
 	concurrency/coroutine.c concurrency/thread.c \
 	concurrency/kernel.c concurrency/monitor.c assert.c \
@@ -165,5 +165,5 @@
 	libcfa_d_a-iostream.$(OBJEXT) libcfa_d_a-iterator.$(OBJEXT) \
 	libcfa_d_a-limits.$(OBJEXT) libcfa_d_a-rational.$(OBJEXT) \
-	libcfa_d_a-stdlib.$(OBJEXT) \
+	libcfa_d_a-time.$(OBJEXT) libcfa_d_a-stdlib.$(OBJEXT) \
 	containers/libcfa_d_a-maybe.$(OBJEXT) \
 	containers/libcfa_d_a-pair.$(OBJEXT) \
@@ -184,11 +184,12 @@
 libcfa_a_LIBADD =
 am__libcfa_a_SOURCES_DIST = libcfa-prelude.c interpose.c bits/debug.c \
-	fstream.c iostream.c iterator.c limits.c rational.c stdlib.c \
-	containers/maybe.c containers/pair.c containers/result.c \
-	containers/vector.c concurrency/coroutine.c \
-	concurrency/thread.c concurrency/kernel.c \
-	concurrency/monitor.c assert.c exception.c virtual.c \
-	concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \
-	concurrency/invoke.c concurrency/preemption.c
+	fstream.c iostream.c iterator.c limits.c rational.c time.c \
+	stdlib.c containers/maybe.c containers/pair.c \
+	containers/result.c containers/vector.c \
+	concurrency/coroutine.c concurrency/thread.c \
+	concurrency/kernel.c concurrency/monitor.c assert.c \
+	exception.c virtual.c concurrency/CtxSwitch-@MACHINE_TYPE@.S \
+	concurrency/alarm.c concurrency/invoke.c \
+	concurrency/preemption.c
 @BUILD_CONCURRENCY_TRUE@am__objects_5 = concurrency/libcfa_a-coroutine.$(OBJEXT) \
 @BUILD_CONCURRENCY_TRUE@	concurrency/libcfa_a-thread.$(OBJEXT) \
@@ -197,6 +198,6 @@
 am__objects_6 = libcfa_a-fstream.$(OBJEXT) libcfa_a-iostream.$(OBJEXT) \
 	libcfa_a-iterator.$(OBJEXT) libcfa_a-limits.$(OBJEXT) \
-	libcfa_a-rational.$(OBJEXT) libcfa_a-stdlib.$(OBJEXT) \
-	containers/libcfa_a-maybe.$(OBJEXT) \
+	libcfa_a-rational.$(OBJEXT) libcfa_a-time.$(OBJEXT) \
+	libcfa_a-stdlib.$(OBJEXT) containers/libcfa_a-maybe.$(OBJEXT) \
 	containers/libcfa_a-pair.$(OBJEXT) \
 	containers/libcfa_a-result.$(OBJEXT) \
@@ -260,10 +261,10 @@
   esac
 am__nobase_cfa_include_HEADERS_DIST = fstream iostream iterator limits \
-	rational stdlib containers/maybe containers/pair \
+	rational time stdlib containers/maybe containers/pair \
 	containers/result containers/vector concurrency/coroutine \
 	concurrency/thread concurrency/kernel concurrency/monitor \
-	${shell find stdhdr -type f -printf "%p "} math gmp \
-	bits/align.h bits/cfatime.h bits/containers.h bits/defs.h \
-	bits/debug.h bits/locks.h concurrency/invoke.h
+	${shell find stdhdr -type f -printf "%p "} math gmp time_t.h \
+	clock bits/align.h bits/containers.h bits/defs.h bits/debug.h \
+	bits/locks.h concurrency/invoke.h
 HEADERS = $(nobase_cfa_include_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
@@ -419,5 +420,5 @@
 EXTRA_FLAGS = -g -Wall -Wno-unused-function -imacros libcfa-prelude.c @CFA_FLAGS@
 AM_CCASFLAGS = @CFA_FLAGS@
-headers = fstream iostream iterator limits rational stdlib \
+headers = fstream iostream iterator limits rational time stdlib \
 	containers/maybe containers/pair containers/result \
 	containers/vector $(am__append_3)
@@ -436,6 +437,7 @@
 	math 				\
 	gmp 				\
+	time_t.h			\
+	clock			\
 	bits/align.h 		\
-	bits/cfatime.h 		\
 	bits/containers.h		\
 	bits/defs.h 		\
@@ -611,4 +613,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-rational.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-stdlib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-time.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-virtual.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-assert.Po@am__quote@
@@ -622,4 +625,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-rational.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-stdlib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-time.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-virtual.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@bits/$(DEPDIR)/libcfa_a-debug.Po@am__quote@
@@ -786,4 +790,18 @@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
 
+libcfa_d_a-time.o: time.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-time.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-time.Tpo -c -o libcfa_d_a-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-time.Tpo $(DEPDIR)/libcfa_d_a-time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='time.c' object='libcfa_d_a-time.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
+
+libcfa_d_a-time.obj: time.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-time.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-time.Tpo -c -o libcfa_d_a-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-time.Tpo $(DEPDIR)/libcfa_d_a-time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='time.c' object='libcfa_d_a-time.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
+
 libcfa_d_a-stdlib.o: stdlib.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c
@@ -1079,4 +1097,18 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`
+
+libcfa_a-time.o: time.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-time.o -MD -MP -MF $(DEPDIR)/libcfa_a-time.Tpo -c -o libcfa_a-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-time.Tpo $(DEPDIR)/libcfa_a-time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='time.c' object='libcfa_a-time.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
+
+libcfa_a-time.obj: time.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-time.obj -MD -MP -MF $(DEPDIR)/libcfa_a-time.Tpo -c -o libcfa_a-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-time.Tpo $(DEPDIR)/libcfa_a-time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='time.c' object='libcfa_a-time.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
 
 libcfa_a-stdlib.o: stdlib.c
Index: c/libcfa/bits/cfatime.h
===================================================================
--- src/libcfa/bits/cfatime.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ 	(revision )
@@ -1,99 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// align.h --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Feb 12 18:06:59 2018
-// Last Modified By :
-// Last Modified On :
-// Update Count     : 0
-//
-// This  library is free  software; you  can redistribute  it and/or  modify it
-// under the terms of the GNU Lesser General Public License as published by the
-// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
-// option) any later version.
-//
-// This library is distributed in the  hope that it will be useful, but WITHOUT
-// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
-// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
-// for more details.
-//
-// You should  have received a  copy of the  GNU Lesser General  Public License
-// along  with this library.
-//
-
-#pragma once
-
-extern "C" {
-#include <time.h>
-}
-
-#include "bits/defs.h"
-
-struct timespec;
-struct itimerval;
-
-//=============================================================================================
-// time type
-//=============================================================================================
-
-struct __cfa_time_t {
-	uint64_t val;
-};
-
-// ctors
-static inline void ?{}( __cfa_time_t & this ) { this.val = 0; }
-static inline void ?{}( __cfa_time_t & this, const __cfa_time_t & rhs ) { this.val = rhs.val; }
-static inline void ?{}( __cfa_time_t & this, zero_t zero ) { this.val = 0; }
-
-static inline __cfa_time_t ?=?( __cfa_time_t & this, zero_t rhs ) {
-	this.val = 0;
-	return this;
-}
-
-// logical ops
-static inline bool ?==?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val == rhs.val; }
-static inline bool ?!=?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val != rhs.val; }
-static inline bool ?>? ( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val >  rhs.val; }
-static inline bool ?<? ( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val <  rhs.val; }
-static inline bool ?>=?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val >= rhs.val; }
-static inline bool ?<=?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val <= rhs.val; }
-
-static inline bool ?==?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val == rhs; }
-static inline bool ?!=?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val != rhs; }
-static inline bool ?>? ( __cfa_time_t lhs, zero_t rhs ) { return lhs.val >  rhs; }
-static inline bool ?<? ( __cfa_time_t lhs, zero_t rhs ) { return lhs.val <  rhs; }
-static inline bool ?>=?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val >= rhs; }
-static inline bool ?<=?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val <= rhs; }
-
-// addition/substract
-static inline __cfa_time_t ?+?( __cfa_time_t lhs, __cfa_time_t rhs ) {
-	__cfa_time_t ret;
-	ret.val = lhs.val + rhs.val;
-	return ret;
-}
-
-static inline __cfa_time_t ?-?( __cfa_time_t lhs, __cfa_time_t rhs ) {
-	__cfa_time_t ret;
-	ret.val = lhs.val - rhs.val;
-	return ret;
-}
-
-static inline __cfa_time_t ?`cfa_s ( uint64_t val ) { __cfa_time_t ret; ret.val = val * 1_000_000_000ul; return ret; }
-static inline __cfa_time_t ?`cfa_ms( uint64_t val ) { __cfa_time_t ret; ret.val = val *     1_000_000ul; return ret; }
-static inline __cfa_time_t ?`cfa_us( uint64_t val ) { __cfa_time_t ret; ret.val = val *         1_000ul; return ret; }
-static inline __cfa_time_t ?`cfa_ns( uint64_t val ) { __cfa_time_t ret; ret.val = val *             1ul; return ret; }
-
-static inline __cfa_time_t from_s  ( uint64_t val ) { __cfa_time_t ret; ret.val = val * 1_000_000_000ul; return ret; }
-static inline __cfa_time_t from_ms ( uint64_t val ) { __cfa_time_t ret; ret.val = val *     1_000_000ul; return ret; }
-static inline __cfa_time_t from_us ( uint64_t val ) { __cfa_time_t ret; ret.val = val *         1_000ul; return ret; }
-static inline __cfa_time_t from_ns ( uint64_t val ) { __cfa_time_t ret; ret.val = val *             1ul; return ret; }
-
-static inline uint64_t to_s  ( __cfa_time_t t ) { return t.val / 1_000_000_000ul; }
-static inline uint64_t to_ms ( __cfa_time_t t ) { return t.val /     1_000_000ul; }
-static inline uint64_t to_us ( __cfa_time_t t ) { return t.val /         1_000ul; }
-static inline uint64_t to_ns ( __cfa_time_t t ) { return t.val /             1ul; }
Index: src/libcfa/bits/locks.h
===================================================================
--- src/libcfa/bits/locks.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/bits/locks.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Tue Oct 31 15:14:38 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Dec  8 16:02:22 2017
-// Update Count     : 1
+// Last Modified On : Fri Mar 30 18:18:13 2018
+// Update Count     : 9
 //
 
@@ -64,6 +64,4 @@
 
 	extern void yield( unsigned int );
-	extern thread_local struct thread_desc *    volatile this_thread;
-	extern thread_local struct processor *      volatile this_processor;
 
 	static inline void ?{}( __spinlock_t & this ) {
@@ -76,8 +74,8 @@
 		if( result ) {
 			disable_interrupts();
-			__cfaabi_dbg_debug_do(
-				this.prev_name = caller;
-				this.prev_thrd = this_thread;
-			)
+			// __cfaabi_dbg_debug_do(
+			// 	this.prev_name = caller;
+			// 	this.prev_thrd = TL_GET( this_thread );
+			// )
 		}
 		return result;
@@ -107,8 +105,8 @@
 		}
 		disable_interrupts();
-		__cfaabi_dbg_debug_do(
-			this.prev_name = caller;
-			this.prev_thrd = this_thread;
-		)
+		// __cfaabi_dbg_debug_do(
+		// 	this.prev_name = caller;
+		// 	this.prev_thrd = TL_GET( this_thread );
+		// )
 	}
 
Index: src/libcfa/clock
===================================================================
--- src/libcfa/clock	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/libcfa/clock	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,88 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// clock -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Thu Apr 12 14:36:06 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Apr 12 16:53:31 2018
+// Update Count     : 3
+// 
+
+#include <time>
+
+
+//######################### C time #########################
+
+static inline char * ctime( time_t tp ) { char * buf = ctime( &tp ); buf[24] = '\0'; return buf; }
+static inline char * ctime_r( time_t tp, char * buf ) { ctime_r( &tp, buf ); buf[24] = '\0'; return buf; }
+static inline tm * gmtime( time_t tp ) { return gmtime( &tp ); }
+static inline tm * gmtime_r( time_t tp, tm * result ) { return gmtime_r( &tp, result ); }
+static inline tm * localtime( time_t tp ) { return localtime( &tp ); }
+static inline tm * localtime_r( time_t tp, tm * result ) { return localtime_r( &tp, result ); }
+
+
+//######################### Clock #########################
+
+struct Clock {											// private
+	Duration offset;									// for virtual clock: contains offset from real-time
+	int clocktype;										// implementation only -1 (virtual), CLOCK_REALTIME
+};
+
+static inline void resetClock( Clock & clk ) with( clk ) {
+	clocktype = CLOCK_REALTIME_COARSE;
+} // Clock::resetClock
+
+static inline void resetClock( Clock & clk, Duration adj ) with( clk ) {
+	clocktype = -1;
+	offset = adj + timezone`s;							// timezone (global) is (UTC - local time) in seconds
+} // resetClock
+
+static inline void ?{}( Clock & clk ) { resetClock( clk ); }
+static inline void ?{}( Clock & clk, Duration adj ) { resetClock( clk, adj ); }
+
+static inline Duration getRes() {
+	struct timespec res;
+	clock_getres( CLOCK_REALTIME_COARSE, &res );
+	return ((int64_t)res.tv_sec * TIMEGRAN + res.tv_nsec)`ns;
+} // getRes
+
+static inline Time getTimeNsec() {						// with nanoseconds
+	timespec curr;
+	clock_gettime( CLOCK_REALTIME_COARSE, &curr );
+	return (Time){ curr };
+} // getTime
+
+static inline Time getTime() {							// without nanoseconds
+	timespec curr;
+	clock_gettime( CLOCK_REALTIME_COARSE, &curr );
+	curr.tv_nsec = 0;
+	return (Time){ curr };
+} // getTime
+
+static inline Time getTime( Clock & clk ) with( clk ) {
+	return getTime() + offset;
+} // getTime
+
+static inline Time ?()( Clock & clk ) with( clk ) {		// alternative syntax
+	return getTime() + offset;
+} // getTime
+
+static inline timeval getTime( Clock & clk ) {
+	return (timeval){ clk() };
+} // getTime
+
+static inline tm getTime( Clock & clk ) with( clk ) {
+	tm ret;
+	localtime_r( getTime( clk ).tv_sec, &ret );
+	return ret;
+} // getTime
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/concurrency/alarm.c
===================================================================
--- src/libcfa/concurrency/alarm.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/alarm.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Fri Jun 2 11:31:25 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:35:18 2017
-// Update Count     : 1
+// Last Modified On : Mon Apr  9 13:36:18 2018
+// Update Count     : 61
 //
 
@@ -26,31 +26,16 @@
 #include "preemption.h"
 
-
-static inline void ?{}( itimerval & this, __cfa_time_t * alarm ) with( this ) {
-	it_value.tv_sec = alarm->val / (1`cfa_s).val;			// seconds
-	it_value.tv_usec = max( (alarm->val % (1`cfa_s).val) / (1`cfa_us).val, 1000 ); // microseconds
-	it_interval.tv_sec = 0;
-	it_interval.tv_usec = 0;
-}
-
-static inline void ?{}( __cfa_time_t & this, timespec * curr ) {
-	uint64_t secs  = curr->tv_sec;
-	uint64_t nsecs = curr->tv_nsec;
-	this.val = from_s(secs).val + nsecs;
-}
-
 //=============================================================================================
 // Clock logic
 //=============================================================================================
 
-__cfa_time_t __kernel_get_time() {
+Time __kernel_get_time() {
 	timespec curr;
-	clock_gettime( CLOCK_REALTIME, &curr );
-	return (__cfa_time_t){ &curr };
+	clock_gettime( CLOCK_MONOTONIC_RAW, &curr );		// CLOCK_REALTIME
+	return (Time){ curr };
 }
 
-void __kernel_set_timer( __cfa_time_t alarm ) {
-	itimerval val = { &alarm };
-	setitimer( ITIMER_REAL, &val, NULL );
+void __kernel_set_timer( Duration alarm ) {
+	setitimer( ITIMER_REAL, &(itimerval){ alarm }, NULL );
 }
 
@@ -59,5 +44,5 @@
 //=============================================================================================
 
-void ?{}( alarm_node_t & this, thread_desc * thrd, __cfa_time_t alarm = 0`cfa_s, __cfa_time_t period = 0`cfa_s ) with( this ) {
+void ?{}( alarm_node_t & this, thread_desc * thrd, Time alarm, Duration period ) with( this ) {
 	this.thrd = thrd;
 	this.alarm = alarm;
@@ -68,5 +53,5 @@
 }
 
-void ?{}( alarm_node_t & this, processor   * proc, __cfa_time_t alarm = 0`cfa_s, __cfa_time_t period = 0`cfa_s ) with( this ) {
+void ?{}( alarm_node_t & this, processor   * proc, Time alarm, Duration period ) with( this ) {
 	this.proc = proc;
 	this.alarm = alarm;
Index: src/libcfa/concurrency/alarm.h
===================================================================
--- src/libcfa/concurrency/alarm.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/alarm.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Fri Jun 2 11:31:25 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:59:27 2017
-// Update Count     : 3
+// Last Modified On : Mon Mar 26 16:25:41 2018
+// Update Count     : 11
 //
 
@@ -21,5 +21,5 @@
 #include <assert.h>
 
-#include "bits/cfatime.h"
+#include "time"
 
 struct thread_desc;
@@ -30,6 +30,6 @@
 //=============================================================================================
 
-__cfa_time_t __kernel_get_time();
-void __kernel_set_timer( __cfa_time_t alarm );
+Time __kernel_get_time();
+void __kernel_set_timer( Duration alarm );
 
 //=============================================================================================
@@ -38,6 +38,6 @@
 
 struct alarm_node_t {
-	__cfa_time_t alarm;		// time when alarm goes off
-	__cfa_time_t period;		// if > 0 => period of alarm
+	Time alarm;				// time when alarm goes off
+	Duration period;			// if > 0 => period of alarm
 	alarm_node_t * next;		// intrusive link list field
 
@@ -53,6 +53,6 @@
 typedef alarm_node_t ** __alarm_it_t;
 
-void ?{}( alarm_node_t & this, thread_desc * thrd, __cfa_time_t alarm = 0`cfa_s, __cfa_time_t period = 0`cfa_s );
-void ?{}( alarm_node_t & this, processor   * proc, __cfa_time_t alarm = 0`cfa_s, __cfa_time_t period = 0`cfa_s );
+void ?{}( alarm_node_t & this, thread_desc * thrd, Time alarm, Duration period );
+void ?{}( alarm_node_t & this, processor   * proc, Time alarm, Duration period );
 void ^?{}( alarm_node_t & this );
 
Index: src/libcfa/concurrency/coroutine
===================================================================
--- src/libcfa/concurrency/coroutine	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/coroutine	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Mon Nov 28 12:27:26 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 30 07:58:29 2017
-// Update Count     : 3
+// Last Modified On : Fri Mar 30 18:23:45 2018
+// Update Count     : 8
 //
 
@@ -60,7 +60,4 @@
 }
 
-// Get current coroutine
-extern thread_local coroutine_desc * volatile this_coroutine;
-
 // Private wrappers for context switch and stack creation
 extern void CoroutineCtxSwitch(coroutine_desc * src, coroutine_desc * dst);
@@ -69,5 +66,5 @@
 // Suspend implementation inlined for performance
 static inline void suspend() {
-	coroutine_desc * src = this_coroutine;		// optimization
+	coroutine_desc * src = TL_GET( this_coroutine );			// optimization
 
 	assertf( src->last != 0,
@@ -86,5 +83,5 @@
 forall(dtype T | is_coroutine(T))
 static inline void resume(T & cor) {
-	coroutine_desc * src = this_coroutine;		// optimization
+	coroutine_desc * src = TL_GET( this_coroutine );			// optimization
 	coroutine_desc * dst = get_coroutine(cor);
 
@@ -111,5 +108,5 @@
 
 static inline void resume(coroutine_desc * dst) {
-	coroutine_desc * src = this_coroutine;		// optimization
+	coroutine_desc * src = TL_GET( this_coroutine );			// optimization
 
 	// not resuming self ?
Index: src/libcfa/concurrency/coroutine.c
===================================================================
--- src/libcfa/concurrency/coroutine.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/coroutine.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Mon Nov 28 12:27:26 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  8 16:10:31 2018
-// Update Count     : 4
+// Last Modified On : Fri Mar 30 17:20:57 2018
+// Update Count     : 9
 //
 
@@ -99,5 +99,5 @@
 // Wrapper for co
 void CoroutineCtxSwitch(coroutine_desc* src, coroutine_desc* dst) {
-	verify( preemption_state.enabled || this_processor->do_terminate );
+	verify( TL_GET( preemption_state ).enabled || TL_GET( this_processor )->do_terminate );
 	disable_interrupts();
 
@@ -106,5 +106,5 @@
 
 	// set new coroutine that task is executing
-	this_coroutine = dst;
+	TL_SET( this_coroutine, dst );
 
 	// context switch to specified coroutine
@@ -117,5 +117,5 @@
 
 	enable_interrupts( __cfaabi_dbg_ctx );
-	verify( preemption_state.enabled || this_processor->do_terminate );
+	verify( TL_GET( preemption_state ).enabled || TL_GET( this_processor )->do_terminate );
 } //ctxSwitchDirect
 
@@ -172,5 +172,5 @@
 
 	void __leave_coroutine(void) {
-		coroutine_desc * src = this_coroutine;		// optimization
+		coroutine_desc * src = TL_GET( this_coroutine ); // optimization
 
 		assertf( src->starter != 0,
Index: src/libcfa/concurrency/invoke.h
===================================================================
--- src/libcfa/concurrency/invoke.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/invoke.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Feb  9 14:41:55 2018
-// Update Count     : 6
+// Last Modified On : Fri Mar 30 22:33:59 2018
+// Update Count     : 30
 //
 
@@ -17,4 +17,7 @@
 #include "bits/defs.h"
 #include "bits/locks.h"
+
+#define TL_GET( member ) kernelThreadData.member
+#define TL_SET( member, value ) kernelThreadData.member = value;
 
 #ifdef __cforall
@@ -30,28 +33,31 @@
 		static inline struct thread_desc             * & get_next( struct thread_desc             & this );
 		static inline struct __condition_criterion_t * & get_next( struct __condition_criterion_t & this );
+
+		extern thread_local struct KernelThreadData {
+			struct coroutine_desc * volatile this_coroutine;
+			struct thread_desc    * volatile this_thread;
+			struct processor      * volatile this_processor;
+
+			struct {
+				volatile unsigned short disable_count;
+				volatile bool enabled;
+				volatile bool in_progress;
+			} preemption_state;
+		} kernelThreadData;
 	}
+
+	static inline struct coroutine_desc * volatile active_coroutine() { return TL_GET( this_coroutine ); }
+	static inline struct thread_desc * volatile active_thread() { return TL_GET( this_thread ); }
+	static inline struct processor * volatile active_processor() { return TL_GET( this_processor ); }
 	#endif
 
 	struct coStack_t {
-		// size of stack
-		size_t size;
-
-		// pointer to stack
-		void *storage;
-
-		// stack grows towards stack limit
-		void *limit;
-
-		// base of stack
-		void *base;
-
-		// address of cfa_context_t
-		void *context;
-
-		// address of top of storage
-		void *top;
-
-		// whether or not the user allocated the stack
-		bool userStack;
+		size_t size;									// size of stack
+		void * storage;									// pointer to stack
+		void * limit;									// stack grows towards stack limit
+		void * base;									// base of stack
+		void * context;									// address of cfa_context_t
+		void * top;										// address of top of storage
+		bool userStack;									// whether or not the user allocated the stack
 	};
 
@@ -59,21 +65,10 @@
 
 	struct coroutine_desc {
-		// stack information of the coroutine
-		struct coStack_t stack;
-
-		// textual name for coroutine/task, initialized by uC++ generated code
-		const char *name;
-
-		// copy of global UNIX variable errno
-		int errno_;
-
-		// current execution status for coroutine
-		enum coroutine_state state;
-
-		// first coroutine to resume this one
-		struct coroutine_desc * starter;
-
-		// last coroutine to resume this one
-		struct coroutine_desc * last;
+		struct coStack_t stack;							// stack information of the coroutine
+		const char * name;								// textual name for coroutine/task, initialized by uC++ generated code
+		int errno_;										// copy of global UNIX variable errno
+		enum coroutine_state state;						// current execution status for coroutine
+		struct coroutine_desc * starter;				// first coroutine to resume this one
+		struct coroutine_desc * last;					// last coroutine to resume this one
 	};
 
Index: src/libcfa/concurrency/kernel
===================================================================
--- src/libcfa/concurrency/kernel	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/kernel	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:58:39 2017
-// Update Count     : 2
+// Last Modified On : Tue Apr 10 14:46:49 2018
+// Update Count     : 10
 //
 
@@ -19,5 +19,5 @@
 
 #include "invoke.h"
-#include "bits/cfatime.h"
+#include "time_t.h"
 
 extern "C" {
@@ -49,8 +49,8 @@
 
 	// Preemption rate on this cluster
-	__cfa_time_t preemption_rate;
+	Duration preemption_rate;
 };
 
-extern __cfa_time_t default_preemption();
+extern Duration default_preemption();
 
 void ?{} (cluster & this);
Index: src/libcfa/concurrency/kernel.c
===================================================================
--- src/libcfa/concurrency/kernel.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/kernel.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  8 23:52:19 2018
-// Update Count     : 5
+// Last Modified On : Mon Apr  9 16:11:46 2018
+// Update Count     : 24
 //
 
@@ -25,4 +25,5 @@
 
 //CFA Includes
+#include "time"
 #include "kernel_private.h"
 #include "preemption.h"
@@ -52,13 +53,14 @@
 // Global state
 
-thread_local coroutine_desc * volatile this_coroutine;
-thread_local thread_desc *    volatile this_thread;
-thread_local processor *      volatile this_processor;
-
 // volatile thread_local bool preemption_in_progress = 0;
 // volatile thread_local bool preemption_enabled = false;
 // volatile thread_local unsigned short disable_preempt_count = 1;
 
-volatile thread_local __cfa_kernel_preemption_state_t preemption_state = { false, false, 1 };
+thread_local struct KernelThreadData kernelThreadData = {
+	NULL,
+	NULL,
+	NULL,
+	{ 1, false, false }
+};
 
 //-----------------------------------------------------------------------------
@@ -172,7 +174,7 @@
 		terminate(&this);
 		verify(this.do_terminate);
-		verify(this_processor != &this);
+		verify(TL_GET( this_processor ) != &this);
 		P( terminated );
-		verify(this_processor != &this);
+		verify(TL_GET( this_processor ) != &this);
 		pthread_join( kernel_thread, NULL );
 	}
@@ -213,9 +215,9 @@
 			if(readyThread)
 			{
-				verify( !preemption_state.enabled );
+				verify( ! TL_GET( preemption_state ).enabled );
 
 				runThread(this, readyThread);
 
-				verify( !preemption_state.enabled );
+				verify( ! TL_GET( preemption_state ).enabled );
 
 				//Some actions need to be taken from the kernel
@@ -249,5 +251,5 @@
 
 	//Update global state
-	this_thread = dst;
+	TL_SET( this_thread, dst );
 
 	// Context Switch to the thread
@@ -257,6 +259,6 @@
 
 void returnToKernel() {
-	coroutine_desc * proc_cor = get_coroutine(this_processor->runner);
-	coroutine_desc * thrd_cor = this_thread->curr_cor = this_coroutine;
+	coroutine_desc * proc_cor = get_coroutine(TL_GET( this_processor )->runner);
+	coroutine_desc * thrd_cor = TL_GET( this_thread )->curr_cor = TL_GET( this_coroutine );
 	ThreadCtxSwitch(thrd_cor, proc_cor);
 }
@@ -266,5 +268,5 @@
 void finishRunning(processor * this) with( this->finish ) {
 	if( action_code == Release ) {
-		verify( !preemption_state.enabled );
+		verify( ! TL_GET( preemption_state ).enabled );
 		unlock( *lock );
 	}
@@ -273,10 +275,10 @@
 	}
 	else if( action_code == Release_Schedule ) {
-		verify( !preemption_state.enabled );
+		verify( ! TL_GET( preemption_state ).enabled );
 		unlock( *lock );
 		ScheduleThread( thrd );
 	}
 	else if( action_code == Release_Multi ) {
-		verify( !preemption_state.enabled );
+		verify( ! TL_GET( preemption_state ).enabled );
 		for(int i = 0; i < lock_count; i++) {
 			unlock( *locks[i] );
@@ -307,9 +309,9 @@
 void * CtxInvokeProcessor(void * arg) {
 	processor * proc = (processor *) arg;
-	this_processor = proc;
-	this_coroutine = NULL;
-	this_thread = NULL;
-	preemption_state.enabled = false;
-	preemption_state.disable_count = 1;
+	TL_SET( this_processor, proc );
+	TL_SET( this_coroutine, NULL );
+	TL_SET( this_thread, NULL );
+	TL_GET( preemption_state ).enabled = false;
+	TL_GET( preemption_state ).disable_count = 1;
 	// SKULLDUGGERY: We want to create a context for the processor coroutine
 	// which is needed for the 2-step context switch. However, there is no reason
@@ -323,6 +325,6 @@
 
 	//Set global state
-	this_coroutine = get_coroutine(proc->runner);
-	this_thread = NULL;
+	TL_SET( this_coroutine, get_coroutine(proc->runner) );
+	TL_SET( this_thread, NULL );
 
 	//We now have a proper context from which to schedule threads
@@ -352,13 +354,13 @@
 
 void kernel_first_resume(processor * this) {
-	coroutine_desc * src = this_coroutine;
+	coroutine_desc * src = TL_GET( this_coroutine );
 	coroutine_desc * dst = get_coroutine(this->runner);
 
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 
 	create_stack(&dst->stack, dst->stack.size);
 	CtxStart(&this->runner, CtxInvokeCoroutine);
 
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 
 	dst->last = src;
@@ -369,5 +371,5 @@
 
 	// set new coroutine that task is executing
-	this_coroutine = dst;
+	TL_SET( this_coroutine, dst );
 
 	// SKULLDUGGERY normally interrupts are enable before leaving a coroutine ctxswitch.
@@ -386,5 +388,5 @@
 	src->state = Active;
 
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 }
 
@@ -392,13 +394,13 @@
 // Scheduler routines
 void ScheduleThread( thread_desc * thrd ) {
-	// if( !thrd ) return;
+	// if( ! thrd ) return;
 	verify( thrd );
 	verify( thrd->self_cor.state != Halted );
 
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 
 	verifyf( thrd->next == NULL, "Expected null got %p", thrd->next );
 
-	with( *this_processor->cltr ) {
+	with( *TL_GET( this_processor )->cltr ) {
 		lock  ( ready_queue_lock __cfaabi_dbg_ctx2 );
 		append( ready_queue, thrd );
@@ -406,13 +408,13 @@
 	}
 
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 }
 
 thread_desc * nextThread(cluster * this) with( *this ) {
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 	lock( ready_queue_lock __cfaabi_dbg_ctx2 );
 	thread_desc * head = pop_head( ready_queue );
 	unlock( ready_queue_lock );
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 	return head;
 }
@@ -420,7 +422,7 @@
 void BlockInternal() {
 	disable_interrupts();
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 	returnToKernel();
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 	enable_interrupts( __cfaabi_dbg_ctx );
 }
@@ -428,10 +430,10 @@
 void BlockInternal( __spinlock_t * lock ) {
 	disable_interrupts();
-	this_processor->finish.action_code = Release;
-	this_processor->finish.lock        = lock;
-
-	verify( !preemption_state.enabled );
+	TL_GET( this_processor )->finish.action_code = Release;
+	TL_GET( this_processor )->finish.lock        = lock;
+
+	verify( ! TL_GET( preemption_state ).enabled );
 	returnToKernel();
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 
 	enable_interrupts( __cfaabi_dbg_ctx );
@@ -440,10 +442,10 @@
 void BlockInternal( thread_desc * thrd ) {
 	disable_interrupts();
-	this_processor->finish.action_code = Schedule;
-	this_processor->finish.thrd        = thrd;
-
-	verify( !preemption_state.enabled );
+	TL_GET( this_processor )->finish.action_code = Schedule;
+	TL_GET( this_processor )->finish.thrd        = thrd;
+
+	verify( ! TL_GET( preemption_state ).enabled );
 	returnToKernel();
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 
 	enable_interrupts( __cfaabi_dbg_ctx );
@@ -453,11 +455,11 @@
 	assert(thrd);
 	disable_interrupts();
-	this_processor->finish.action_code = Release_Schedule;
-	this_processor->finish.lock        = lock;
-	this_processor->finish.thrd        = thrd;
-
-	verify( !preemption_state.enabled );
+	TL_GET( this_processor )->finish.action_code = Release_Schedule;
+	TL_GET( this_processor )->finish.lock        = lock;
+	TL_GET( this_processor )->finish.thrd        = thrd;
+
+	verify( ! TL_GET( preemption_state ).enabled );
 	returnToKernel();
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 
 	enable_interrupts( __cfaabi_dbg_ctx );
@@ -466,11 +468,11 @@
 void BlockInternal(__spinlock_t * locks [], unsigned short count) {
 	disable_interrupts();
-	this_processor->finish.action_code = Release_Multi;
-	this_processor->finish.locks       = locks;
-	this_processor->finish.lock_count  = count;
-
-	verify( !preemption_state.enabled );
+	TL_GET( this_processor )->finish.action_code = Release_Multi;
+	TL_GET( this_processor )->finish.locks       = locks;
+	TL_GET( this_processor )->finish.lock_count  = count;
+
+	verify( ! TL_GET( preemption_state ).enabled );
 	returnToKernel();
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 
 	enable_interrupts( __cfaabi_dbg_ctx );
@@ -479,13 +481,13 @@
 void BlockInternal(__spinlock_t * locks [], unsigned short lock_count, thread_desc * thrds [], unsigned short thrd_count) {
 	disable_interrupts();
-	this_processor->finish.action_code = Release_Multi_Schedule;
-	this_processor->finish.locks       = locks;
-	this_processor->finish.lock_count  = lock_count;
-	this_processor->finish.thrds       = thrds;
-	this_processor->finish.thrd_count  = thrd_count;
-
-	verify( !preemption_state.enabled );
+	TL_GET( this_processor )->finish.action_code = Release_Multi_Schedule;
+	TL_GET( this_processor )->finish.locks       = locks;
+	TL_GET( this_processor )->finish.lock_count  = lock_count;
+	TL_GET( this_processor )->finish.thrds       = thrds;
+	TL_GET( this_processor )->finish.thrd_count  = thrd_count;
+
+	verify( ! TL_GET( preemption_state ).enabled );
 	returnToKernel();
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 
 	enable_interrupts( __cfaabi_dbg_ctx );
@@ -493,8 +495,8 @@
 
 void LeaveThread(__spinlock_t * lock, thread_desc * thrd) {
-	verify( !preemption_state.enabled );
-	this_processor->finish.action_code = thrd ? Release_Schedule : Release;
-	this_processor->finish.lock        = lock;
-	this_processor->finish.thrd        = thrd;
+	verify( ! TL_GET( preemption_state ).enabled );
+	TL_GET( this_processor )->finish.action_code = thrd ? Release_Schedule : Release;
+	TL_GET( this_processor )->finish.lock        = lock;
+	TL_GET( this_processor )->finish.thrd        = thrd;
 
 	returnToKernel();
@@ -507,5 +509,5 @@
 // Kernel boot procedures
 void kernel_startup(void) {
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 	__cfaabi_dbg_print_safe("Kernel : Starting\n");
 
@@ -531,7 +533,7 @@
 
 	//initialize the global state variables
-	this_processor = mainProcessor;
-	this_thread = mainThread;
-	this_coroutine = &mainThread->self_cor;
+	TL_SET( this_processor, mainProcessor );
+	TL_SET( this_thread, mainThread );
+	TL_SET( this_coroutine, &mainThread->self_cor );
 
 	// Enable preemption
@@ -545,5 +547,5 @@
 	// context. Hence, the main thread does not begin through CtxInvokeThread, like all other threads. The trick here is that
 	// mainThread is on the ready queue when this call is made.
-	kernel_first_resume( this_processor );
+	kernel_first_resume( TL_GET( this_processor ) );
 
 
@@ -552,7 +554,7 @@
 	__cfaabi_dbg_print_safe("Kernel : Started\n--------------------------------------------------\n\n");
 
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 	enable_interrupts( __cfaabi_dbg_ctx );
-	verify( preemption_state.enabled );
+	verify( TL_GET( preemption_state ).enabled );
 }
 
@@ -560,7 +562,7 @@
 	__cfaabi_dbg_print_safe("\n--------------------------------------------------\nKernel : Shutting down\n");
 
-	verify( preemption_state.enabled );
+	verify( TL_GET( preemption_state ).enabled );
 	disable_interrupts();
-	verify( !preemption_state.enabled );
+	verify( ! TL_GET( preemption_state ).enabled );
 
 	// SKULLDUGGERY: Notify the mainProcessor it needs to terminates.
@@ -602,5 +604,5 @@
 
 	// first task to abort ?
-	if ( !kernel_abort_called ) {			// not first task to abort ?
+	if ( ! kernel_abort_called ) {			// not first task to abort ?
 		kernel_abort_called = true;
 		unlock( kernel_abort_lock );
@@ -617,5 +619,5 @@
 	}
 
-	return this_thread;
+	return TL_GET( this_thread );
 }
 
@@ -626,6 +628,6 @@
 	__cfaabi_dbg_bits_write( abort_text, len );
 
-	if ( thrd != this_coroutine ) {
-		len = snprintf( abort_text, abort_text_size, " in coroutine %.256s (%p).\n", this_coroutine->name, this_coroutine );
+	if ( get_coroutine(thrd) != TL_GET( this_coroutine ) ) {
+		len = snprintf( abort_text, abort_text_size, " in coroutine %.256s (%p).\n", TL_GET( this_coroutine )->name, TL_GET( this_coroutine ) );
 		__cfaabi_dbg_bits_write( abort_text, len );
 	}
@@ -636,5 +638,5 @@
 
 int kernel_abort_lastframe( void ) __attribute__ ((__nothrow__)) {
-	return get_coroutine(this_thread) == get_coroutine(mainThread) ? 4 : 2;
+	return get_coroutine(TL_GET( this_thread )) == get_coroutine(mainThread) ? 4 : 2;
 }
 
@@ -666,5 +668,5 @@
 	if ( count < 0 ) {
 		// queue current task
-		append( waiting, (thread_desc *)this_thread );
+		append( waiting, (thread_desc *)TL_GET( this_thread ) );
 
 		// atomically release spin lock and block
Index: src/libcfa/concurrency/kernel_private.h
===================================================================
--- src/libcfa/concurrency/kernel_private.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/kernel_private.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Mon Feb 13 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:58:09 2017
-// Update Count     : 2
+// Last Modified On : Thu Mar 29 14:06:40 2018
+// Update Count     : 3
 //
 
@@ -66,7 +66,7 @@
 extern event_kernel_t * event_kernel;
 
-extern thread_local coroutine_desc * volatile this_coroutine;
-extern thread_local thread_desc *    volatile this_thread;
-extern thread_local processor *      volatile this_processor;
+//extern thread_local coroutine_desc * volatile this_coroutine;
+//extern thread_local thread_desc *    volatile this_thread;
+//extern thread_local processor *      volatile this_processor;
 
 // extern volatile thread_local bool preemption_in_progress;
Index: src/libcfa/concurrency/monitor.c
===================================================================
--- src/libcfa/concurrency/monitor.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/monitor.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Thd Feb 23 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Feb 16 14:49:53 2018
-// Update Count     : 5
+// Last Modified On : Fri Mar 30 14:30:26 2018
+// Update Count     : 9
 //
 
@@ -85,5 +85,5 @@
 		// Lock the monitor spinlock
 		lock( this->lock __cfaabi_dbg_ctx2 );
-		thread_desc * thrd = this_thread;
+		thread_desc * thrd = TL_GET( this_thread );
 
 		__cfaabi_dbg_print_safe( "Kernel : %10p Entering mon %p (%p)\n", thrd, this, this->owner);
@@ -134,5 +134,5 @@
 		// Lock the monitor spinlock
 		lock( this->lock __cfaabi_dbg_ctx2 );
-		thread_desc * thrd = this_thread;
+		thread_desc * thrd = TL_GET( this_thread );
 
 		__cfaabi_dbg_print_safe( "Kernel : %10p Entering dtor for mon %p (%p)\n", thrd, this, this->owner);
@@ -168,5 +168,5 @@
 
 			// Create the node specific to this wait operation
-			wait_ctx_primed( this_thread, 0 )
+			wait_ctx_primed( TL_GET( this_thread ), 0 )
 
 			// Some one else has the monitor, wait for him to finish and then run
@@ -179,5 +179,5 @@
 			__cfaabi_dbg_print_safe( "Kernel :  blocking \n" );
 
-			wait_ctx( this_thread, 0 )
+			wait_ctx( TL_GET( this_thread ), 0 )
 			this->dtor_node = &waiter;
 
@@ -199,7 +199,7 @@
 		lock( this->lock __cfaabi_dbg_ctx2 );
 
-		__cfaabi_dbg_print_safe( "Kernel : %10p Leaving mon %p (%p)\n", this_thread, this, this->owner);
-
-		verifyf( this_thread == this->owner, "Expected owner to be %p, got %p (r: %i, m: %p)", this_thread, this->owner, this->recursion, this );
+		__cfaabi_dbg_print_safe( "Kernel : %10p Leaving mon %p (%p)\n", TL_GET( this_thread ), this, this->owner);
+
+		verifyf( TL_GET( this_thread ) == this->owner, "Expected owner to be %p, got %p (r: %i, m: %p)", TL_GET( this_thread ), this->owner, this->recursion, this );
 
 		// Leaving a recursion level, decrement the counter
@@ -227,6 +227,6 @@
 	void __leave_dtor_monitor_desc( monitor_desc * this ) {
 		__cfaabi_dbg_debug_do(
-			if( this_thread != this->owner ) {
-				abort( "Destroyed monitor %p has inconsistent owner, expected %p got %p.\n", this, this_thread, this->owner);
+			if( TL_GET( this_thread ) != this->owner ) {
+				abort( "Destroyed monitor %p has inconsistent owner, expected %p got %p.\n", this, TL_GET( this_thread ), this->owner);
 			}
 			if( this->recursion != 1 ) {
@@ -297,8 +297,8 @@
 
 	// Save previous thread context
-	this.prev = this_thread->monitors;
+	this.prev = TL_GET( this_thread )->monitors;
 
 	// Update thread context (needed for conditions)
-	(this_thread->monitors){m, count, func};
+	(TL_GET( this_thread )->monitors){m, count, func};
 
 	// __cfaabi_dbg_print_safe( "MGUARD : enter %d\n", count);
@@ -322,5 +322,5 @@
 
 	// Restore thread context
-	this_thread->monitors = this.prev;
+	TL_GET( this_thread )->monitors = this.prev;
 }
 
@@ -332,8 +332,8 @@
 
 	// Save previous thread context
-	this.prev = this_thread->monitors;
+	this.prev = TL_GET( this_thread )->monitors;
 
 	// Update thread context (needed for conditions)
-	(this_thread->monitors){m, 1, func};
+	(TL_GET( this_thread )->monitors){m, 1, func};
 
 	__enter_monitor_dtor( this.m, func );
@@ -346,5 +346,5 @@
 
 	// Restore thread context
-	this_thread->monitors = this.prev;
+	TL_GET( this_thread )->monitors = this.prev;
 }
 
@@ -386,5 +386,5 @@
 
 	// Create the node specific to this wait operation
-	wait_ctx( this_thread, user_info );
+	wait_ctx( TL_GET( this_thread ), user_info );
 
 	// Append the current wait operation to the ones already queued on the condition
@@ -425,5 +425,5 @@
 	//Some more checking in debug
 	__cfaabi_dbg_debug_do(
-		thread_desc * this_thrd = this_thread;
+		thread_desc * this_thrd = TL_GET( this_thread );
 		if ( this.monitor_count != this_thrd->monitors.size ) {
 			abort( "Signal on condition %p made with different number of monitor(s), expected %zi got %zi", &this, this.monitor_count, this_thrd->monitors.size );
@@ -473,5 +473,5 @@
 
 	// Create the node specific to this wait operation
-	wait_ctx_primed( this_thread, 0 )
+	wait_ctx_primed( TL_GET( this_thread ), 0 )
 
 	//save contexts
@@ -566,5 +566,5 @@
 
 				// Create the node specific to this wait operation
-				wait_ctx_primed( this_thread, 0 );
+				wait_ctx_primed( TL_GET( this_thread ), 0 );
 
 				// Save monitor states
@@ -612,5 +612,5 @@
 
 	// Create the node specific to this wait operation
-	wait_ctx_primed( this_thread, 0 );
+	wait_ctx_primed( TL_GET( this_thread ), 0 );
 
 	monitor_save;
@@ -618,5 +618,5 @@
 
 	for( __lock_size_t i = 0; i < count; i++) {
-		verify( monitors[i]->owner == this_thread );
+		verify( monitors[i]->owner == TL_GET( this_thread ) );
 	}
 
@@ -812,5 +812,5 @@
 
 static inline void brand_condition( condition & this ) {
-	thread_desc * thrd = this_thread;
+	thread_desc * thrd = TL_GET( this_thread );
 	if( !this.monitors ) {
 		// __cfaabi_dbg_print_safe( "Branding\n" );
Index: src/libcfa/concurrency/preemption.c
===================================================================
--- src/libcfa/concurrency/preemption.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/preemption.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Mon Jun 5 14:20:42 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Feb  9 16:38:13 2018
-// Update Count     : 14
+// Last Modified On : Mon Apr  9 13:52:39 2018
+// Update Count     : 36
 //
 
@@ -23,12 +23,11 @@
 }
 
-#include "bits/cfatime.h"
 #include "bits/signal.h"
 
 #if !defined(__CFA_DEFAULT_PREEMPTION__)
-#define __CFA_DEFAULT_PREEMPTION__ 10`cfa_ms
+#define __CFA_DEFAULT_PREEMPTION__ 10`ms
 #endif
 
-__cfa_time_t default_preemption() __attribute__((weak)) {
+Duration default_preemption() __attribute__((weak)) {
 	return __CFA_DEFAULT_PREEMPTION__;
 }
@@ -78,5 +77,5 @@
 
 // Get next expired node
-static inline alarm_node_t * get_expired( alarm_list_t * alarms, __cfa_time_t currtime ) {
+static inline alarm_node_t * get_expired( alarm_list_t * alarms, Time currtime ) {
 	if( !alarms->head ) return NULL;                          // If no alarms return null
 	if( alarms->head->alarm >= currtime ) return NULL;        // If alarms head not expired return null
@@ -88,5 +87,5 @@
 	alarm_node_t * node = NULL;                     // Used in the while loop but cannot be declared in the while condition
 	alarm_list_t * alarms = &event_kernel->alarms;  // Local copy for ease of reading
-	__cfa_time_t currtime = __kernel_get_time();    // Check current time once so we everything "happens at once"
+	Time currtime = __kernel_get_time();			// Check current time once so we everything "happens at once"
 
 	//Loop throught every thing expired
@@ -102,5 +101,5 @@
 
 		// Check if this is a periodic alarm
-		__cfa_time_t period = node->period;
+		Duration period = node->period;
 		if( period > 0 ) {
 			node->alarm = currtime + period;    // Alarm is periodic, add currtime to it (used cached current time)
@@ -117,14 +116,14 @@
 
 // Update the preemption of a processor and notify interested parties
-void update_preemption( processor * this, __cfa_time_t duration ) {
+void update_preemption( processor * this, Duration duration ) {
 	alarm_node_t * alarm = this->preemption_alarm;
 
 	// Alarms need to be enabled
-	if ( duration > 0 && !alarm->set ) {
+	if ( duration > 0 && ! alarm->set ) {
 		alarm->alarm = __kernel_get_time() + duration;
 		alarm->period = duration;
 		register_self( alarm );
 	}
-	// Zero duraction but alarm is set
+	// Zero duration but alarm is set
 	else if ( duration == 0 && alarm->set ) {
 		unregister_self( alarm );
@@ -150,7 +149,7 @@
 	// Disable interrupts by incrementing the counter
 	void disable_interrupts() {
-		preemption_state.enabled = false;
-		__attribute__((unused)) unsigned short new_val = preemption_state.disable_count + 1;
-		preemption_state.disable_count = new_val;
+		TL_GET( preemption_state ).enabled = false;
+		__attribute__((unused)) unsigned short new_val = TL_GET( preemption_state ).disable_count + 1;
+		TL_GET( preemption_state ).disable_count = new_val;
 		verify( new_val < 65_000u );              // If this triggers someone is disabling interrupts without enabling them
 	}
@@ -159,14 +158,14 @@
 	// If counter reaches 0, execute any pending CtxSwitch
 	void enable_interrupts( __cfaabi_dbg_ctx_param ) {
-		processor   * proc = this_processor;      // Cache the processor now since interrupts can start happening after the atomic add
-		thread_desc * thrd = this_thread;         // Cache the thread now since interrupts can start happening after the atomic add
-
-		unsigned short prev = preemption_state.disable_count;
-		preemption_state.disable_count -= 1;
+		processor   * proc = TL_GET( this_processor ); // Cache the processor now since interrupts can start happening after the atomic add
+		thread_desc * thrd = TL_GET( this_thread );	  // Cache the thread now since interrupts can start happening after the atomic add
+
+		unsigned short prev = TL_GET( preemption_state ).disable_count;
+		TL_GET( preemption_state ).disable_count -= 1;
 		verify( prev != 0u );                     // If this triggers someone is enabled already enabled interruptsverify( prev != 0u );
 
 		// Check if we need to prempt the thread because an interrupt was missed
 		if( prev == 1 ) {
-			preemption_state.enabled = true;
+			TL_GET( preemption_state ).enabled = true;
 			if( proc->pending_preemption ) {
 				proc->pending_preemption = false;
@@ -182,9 +181,9 @@
 	// Don't execute any pending CtxSwitch even if counter reaches 0
 	void enable_interrupts_noPoll() {
-		unsigned short prev = preemption_state.disable_count;
-		preemption_state.disable_count -= 1;
+		unsigned short prev = TL_GET( preemption_state ).disable_count;
+		TL_GET( preemption_state ).disable_count -= 1;
 		verifyf( prev != 0u, "Incremented from %u\n", prev );                     // If this triggers someone is enabled already enabled interrupts
 		if( prev == 1 ) {
-			preemption_state.enabled = true;
+			TL_GET( preemption_state ).enabled = true;
 		}
 	}
@@ -236,6 +235,6 @@
 // If false : preemption is unsafe and marked as pending
 static inline bool preemption_ready() {
-	bool ready = preemption_state.enabled && !preemption_state.in_progress; // Check if preemption is safe
-	this_processor->pending_preemption = !ready;                        // Adjust the pending flag accordingly
+	bool ready = TL_GET( preemption_state ).enabled && !TL_GET( preemption_state ).in_progress; // Check if preemption is safe
+	TL_GET( this_processor )->pending_preemption = !ready;			// Adjust the pending flag accordingly
 	return ready;
 }
@@ -251,6 +250,6 @@
 
 	// Start with preemption disabled until ready
-	preemption_state.enabled = false;
-	preemption_state.disable_count = 1;
+	TL_GET( preemption_state ).enabled = false;
+	TL_GET( preemption_state ).disable_count = 1;
 
 	// Initialize the event kernel
@@ -291,5 +290,5 @@
 // Used by thread to control when they want to receive preemption signals
 void ?{}( preemption_scope & this, processor * proc ) {
-	(this.alarm){ proc, 0`cfa_s, 0`cfa_s };
+	(this.alarm){ proc, (Time){ 0 }, 0`s };
 	this.proc = proc;
 	this.proc->preemption_alarm = &this.alarm;
@@ -301,5 +300,5 @@
 	disable_interrupts();
 
-	update_preemption( this.proc, 0`cfa_s );
+	update_preemption( this.proc, 0`s );
 }
 
@@ -317,9 +316,9 @@
 	// before the kernel thread has even started running. When that happens an iterrupt
 	// we a null 'this_processor' will be caught, just ignore it.
-	if(!this_processor) return;
+	if(!TL_GET( this_processor )) return;
 
 	choose(sfp->si_value.sival_int) {
 		case PREEMPT_NORMAL   : ;// Normal case, nothing to do here
-		case PREEMPT_TERMINATE: verify(this_processor->do_terminate);
+		case PREEMPT_TERMINATE: verify(TL_GET( this_processor )->do_terminate);
 		default:
 			abort( "internal error, signal value is %d", sfp->si_value.sival_int );
@@ -331,11 +330,11 @@
 	__cfaabi_dbg_print_buffer_decl( " KERNEL: preempting core %p (%p).\n", this_processor, this_thread);
 
-	preemption_state.in_progress = true;                      // Sync flag : prevent recursive calls to the signal handler
+	TL_GET( preemption_state ).in_progress = true;  // Sync flag : prevent recursive calls to the signal handler
 	signal_unblock( SIGUSR1 );                          // We are about to CtxSwitch out of the signal handler, let other handlers in
-	preemption_state.in_progress = false;                     // Clear the in progress flag
+	TL_GET( preemption_state ).in_progress = false; // Clear the in progress flag
 
 	// Preemption can occur here
 
-	BlockInternal( (thread_desc*)this_thread );         // Do the actual CtxSwitch
+	BlockInternal( (thread_desc*)TL_GET( this_thread ) ); // Do the actual CtxSwitch
 }
 
Index: src/libcfa/concurrency/preemption.h
===================================================================
--- src/libcfa/concurrency/preemption.h	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/preemption.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Mon Jun 5 14:20:42 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:34:25 2017
-// Update Count     : 1
+// Last Modified On : Fri Mar 23 17:18:53 2018
+// Update Count     : 2
 //
 
@@ -21,5 +21,5 @@
 void kernel_start_preemption();
 void kernel_stop_preemption();
-void update_preemption( processor * this, __cfa_time_t duration );
+void update_preemption( processor * this, Duration duration );
 void tick_preemption();
 
Index: src/libcfa/concurrency/thread
===================================================================
--- src/libcfa/concurrency/thread	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/thread	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:59:40 2017
-// Update Count     : 3
+// Last Modified On : Thu Mar 29 14:07:11 2018
+// Update Count     : 4
 //
 
@@ -52,5 +52,5 @@
 }
 
-extern thread_local thread_desc * volatile this_thread;
+//extern thread_local thread_desc * volatile this_thread;
 
 forall( dtype T | is_thread(T) )
Index: src/libcfa/concurrency/thread.c
===================================================================
--- src/libcfa/concurrency/thread.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/concurrency/thread.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:34:46 2017
-// Update Count     : 1
+// Last Modified On : Fri Mar 30 17:19:52 2018
+// Update Count     : 8
 //
 
@@ -26,5 +26,5 @@
 }
 
-extern volatile thread_local processor * this_processor;
+//extern volatile thread_local processor * this_processor;
 
 //-----------------------------------------------------------------------------
@@ -75,5 +75,5 @@
 	coroutine_desc* thrd_c = get_coroutine(this);
 	thread_desc   * thrd_h = get_thread   (this);
-	thrd_c->last = this_coroutine;
+	thrd_c->last = TL_GET( this_coroutine );
 
 	// __cfaabi_dbg_print_safe("Thread start : %p (t %p, c %p)\n", this, thrd_c, thrd_h);
@@ -81,5 +81,5 @@
 	disable_interrupts();
 	create_stack(&thrd_c->stack, thrd_c->stack.size);
-	this_coroutine = thrd_c;
+	TL_SET( this_coroutine, thrd_c );
 	CtxStart(&this, CtxInvokeThread);
 	assert( thrd_c->last->stack.context );
@@ -92,5 +92,5 @@
 extern "C" {
 	void __finish_creation(void) {
-		coroutine_desc* thrd_c = this_coroutine;
+		coroutine_desc* thrd_c = TL_GET( this_coroutine );
 		ThreadCtxSwitch( thrd_c, thrd_c->last );
 	}
@@ -98,7 +98,7 @@
 
 void yield( void ) {
-	verify( preemption_state.enabled );
-	BlockInternal( this_thread );
-	verify( preemption_state.enabled );
+	verify( TL_GET( preemption_state ).enabled );
+	BlockInternal( TL_GET( this_thread ) );
+	verify( TL_GET( preemption_state ).enabled );
 }
 
@@ -116,8 +116,8 @@
 	// set new coroutine that the processor is executing
 	// and context switch to it
-	this_coroutine = dst;
+	TL_SET( this_coroutine, dst );
 	assert( src->stack.context );
 	CtxSwitch( src->stack.context, dst->stack.context );
-	this_coroutine = src;
+	TL_SET( this_coroutine, src );
 
 	// set state of new coroutine to active
Index: src/libcfa/iostream
===================================================================
--- src/libcfa/iostream	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/iostream	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jan 25 13:08:39 2018
-// Update Count     : 149
+// Last Modified On : Thu Apr 12 14:34:37 2018
+// Update Count     : 150
 //
 
@@ -159,4 +159,11 @@
 forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, _Istream_cstrC );
 
+
+#include <time_t.h>										// Duration (constructors) / Time (constructors)
+
+forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Duration dur );
+forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Time time );
+
+
 // Local Variables: //
 // mode: c //
Index: src/libcfa/stdlib.c
===================================================================
--- src/libcfa/stdlib.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/libcfa/stdlib.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -99,7 +99,7 @@
 	char * eeptr;
 	re = strtof( sptr, &eeptr );
-	if ( sptr == *eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
 	im = strtof( eeptr, &eeptr );
-	if ( sptr == *eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
 	if ( *eeptr != 'i' ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0f + 0.0f * _Complex_I; }
 	return re + im * _Complex_I;
@@ -110,7 +110,7 @@
 	char * eeptr;
 	re = strtod( sptr, &eeptr );
-	if ( sptr == *eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
 	im = strtod( eeptr, &eeptr );
-	if ( sptr == *eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
 	if ( *eeptr != 'i' ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0 + 0.0 * _Complex_I; }
 	return re + im * _Complex_I;
@@ -121,7 +121,7 @@
 	char * eeptr;
 	re = strtold( sptr, &eeptr );
-	if ( sptr == *eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
 	im = strtold( eeptr, &eeptr );
-	if ( sptr == *eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
+	if ( sptr == eeptr ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
 	if ( *eeptr != 'i' ) { if ( eptr != 0 ) *eptr = eeptr; return 0.0L + 0.0L * _Complex_I; }
 	return re + im * _Complex_I;
Index: src/libcfa/time
===================================================================
--- src/libcfa/time	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/libcfa/time	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,200 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// time -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Mar 14 23:18:57 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Apr 14 17:48:23 2018
+// Update Count     : 636
+// 
+
+#pragma once
+
+// http://en.cppreference.com/w/cpp/header/chrono
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r5.html#refcc
+
+#include <time.h>										// timespec
+extern "C" {
+#include <sys/time.h>									// timeval
+}
+#include <time_t.h>										// Duration/Time types
+
+enum { TIMEGRAN = 1_000_000_000LL };					// nanosecond granularity, except for timeval
+
+
+//######################### Duration #########################
+
+static inline Duration ?=?( Duration & dur, zero_t ) { return dur{ 0 }; }
+
+static inline Duration +?( Duration rhs ) with( rhs ) {	return (Duration)@{ +tv }; }
+static inline Duration ?+?( Duration & lhs, Duration rhs ) { return (Duration)@{ lhs.tv + rhs.tv }; }
+static inline Duration ?+=?( Duration & lhs, Duration rhs ) { lhs = lhs + rhs; return lhs; }
+
+static inline Duration -?( Duration rhs ) with( rhs ) { return (Duration)@{ -tv }; }
+static inline Duration ?-?( Duration & lhs, Duration rhs ) { return (Duration)@{ lhs.tv - rhs.tv }; }
+static inline Duration ?-=?( Duration & lhs, Duration rhs ) { lhs = lhs - rhs; return lhs; }
+
+static inline Duration ?*?( Duration lhs, int64_t rhs ) { return (Duration)@{ lhs.tv * rhs }; }
+static inline Duration ?*?( int64_t lhs, Duration rhs ) { return (Duration)@{ lhs * rhs.tv }; }
+static inline Duration ?*=?( Duration & lhs, int64_t rhs ) { lhs = lhs * rhs; return lhs; }
+
+static inline int64_t ?/?( Duration lhs, Duration rhs ) { return lhs.tv / rhs.tv; }
+static inline Duration ?/?( Duration lhs, int64_t rhs ) { return (Duration)@{ lhs.tv / rhs }; }
+static inline Duration ?/=?( Duration & lhs, int64_t rhs ) { lhs = lhs / rhs; return lhs; }
+static inline double div( Duration lhs, Duration rhs ) { return (double)lhs.tv / (double)rhs.tv; }
+
+static inline Duration ?%?( Duration lhs, Duration rhs ) { return (Duration)@{ lhs.tv % rhs.tv }; }
+static inline Duration ?%=?( Duration & lhs, Duration rhs ) { lhs = lhs % rhs; return lhs; }
+
+static inline _Bool ?==?( Duration lhs, Duration rhs ) { return lhs.tv == rhs.tv; }
+static inline _Bool ?!=?( Duration lhs, Duration rhs ) { return lhs.tv != rhs.tv; }
+static inline _Bool ?<? ( Duration lhs, Duration rhs ) { return lhs.tv <  rhs.tv; }
+static inline _Bool ?<=?( Duration lhs, Duration rhs ) { return lhs.tv <= rhs.tv; }
+static inline _Bool ?>? ( Duration lhs, Duration rhs ) { return lhs.tv >  rhs.tv; }
+static inline _Bool ?>=?( Duration lhs, Duration rhs ) { return lhs.tv >= rhs.tv; }
+
+static inline _Bool ?==?( Duration lhs, zero_t ) { return lhs.tv == 0; }
+static inline _Bool ?!=?( Duration lhs, zero_t ) { return lhs.tv != 0; }
+static inline _Bool ?<? ( Duration lhs, zero_t ) { return lhs.tv <  0; }
+static inline _Bool ?<=?( Duration lhs, zero_t ) { return lhs.tv <= 0; }
+static inline _Bool ?>? ( Duration lhs, zero_t ) { return lhs.tv >  0; }
+static inline _Bool ?>=?( Duration lhs, zero_t ) { return lhs.tv >= 0; }
+
+static inline Duration abs( Duration rhs ) { return rhs.tv >= 0 ? rhs : -rhs; }
+
+static inline Duration ?`ns( int64_t nsec ) { return (Duration)@{ nsec }; }
+static inline Duration ?`us( int64_t usec ) { return (Duration)@{ usec * (TIMEGRAN / 1_000_000LL) }; }
+static inline Duration ?`ms( int64_t msec ) { return (Duration)@{ msec * (TIMEGRAN / 1_000LL) }; }
+static inline Duration ?`s( int64_t sec ) { return (Duration)@{ sec * TIMEGRAN }; }
+static inline Duration ?`s( double sec ) { return (Duration)@{ sec * TIMEGRAN }; }
+static inline Duration ?`m( int64_t min ) { return (Duration)@{ min * (60LL * TIMEGRAN) }; }
+static inline Duration ?`m( double min ) { return (Duration)@{ min * (60LL * TIMEGRAN) }; }
+static inline Duration ?`h( int64_t hours ) { return (Duration)@{ hours * (60LL * 60LL * TIMEGRAN) }; }
+static inline Duration ?`h( double hours ) { return (Duration)@{ hours * (60LL * 60LL * TIMEGRAN) }; }
+static inline Duration ?`d( int64_t days ) { return (Duration)@{ days * (24LL * 60LL * 60LL * TIMEGRAN) }; }
+static inline Duration ?`d( double days ) { return (Duration)@{ days * (24LL * 60LL * 60LL * TIMEGRAN) }; }
+static inline Duration ?`w( int64_t weeks ) { return (Duration)@{ weeks * (7LL * 24LL * 60LL * 60LL * TIMEGRAN) }; }
+static inline Duration ?`w( double weeks ) { return (Duration)@{ weeks * (7LL * 24LL * 60LL * 60LL * TIMEGRAN) }; }
+
+static inline int64_t ?`ns( Duration dur ) { return dur.tv; }
+static inline int64_t ?`us( Duration dur ) { return dur.tv / (TIMEGRAN / 1_000_000LL); }
+static inline int64_t ?`ms( Duration dur ) { return dur.tv / (TIMEGRAN / 1_000LL); }
+static inline int64_t ?`s( Duration dur ) { return dur.tv / TIMEGRAN; }
+static inline int64_t ?`m( Duration dur ) { return dur.tv / (60LL * TIMEGRAN); }
+static inline int64_t ?`h( Duration dur ) { return dur.tv / (60LL * 60LL * TIMEGRAN); }
+static inline int64_t ?`d( Duration dur ) { return dur.tv / (24LL * 60LL * 60LL * TIMEGRAN); }
+static inline int64_t ?`w( Duration dur ) { return dur.tv / (7LL * 24LL * 60LL * 60LL * TIMEGRAN); }
+
+
+//######################### C timeval #########################
+
+static inline void ?{}( timeval & t ) {}
+static inline void ?{}( timeval & t, time_t sec, suseconds_t usec ) { t.tv_sec = sec; t.tv_usec = usec; }
+static inline void ?{}( timeval & t, time_t sec ) { t{ sec, 0 }; }
+static inline void ?{}( timeval & t, zero_t ) { t{ 0, 0 }; }
+static inline timeval ?=?( timeval & t, zero_t ) { return t{ 0 }; }
+static inline timeval ?+?( timeval & lhs, timeval rhs ) { return (timeval)@{ lhs.tv_sec + rhs.tv_sec, lhs.tv_usec + rhs.tv_usec }; }
+static inline timeval ?-?( timeval & lhs, timeval rhs ) { return (timeval)@{ lhs.tv_sec - rhs.tv_sec, lhs.tv_usec - rhs.tv_usec }; }
+static inline _Bool ?==?( timeval lhs, timeval rhs ) { return lhs.tv_sec == rhs.tv_sec && lhs.tv_usec == rhs.tv_usec; }
+static inline _Bool ?!=?( timeval lhs, timeval rhs ) { return lhs.tv_sec != rhs.tv_sec || lhs.tv_usec != rhs.tv_usec; }
+
+
+//######################### C timespec #########################
+
+static inline void ?{}( timespec & t ) {}
+static inline void ?{}( timespec & t, time_t sec, __syscall_slong_t nsec ) { t.tv_sec = sec; t.tv_nsec = nsec; }
+static inline void ?{}( timespec & t, time_t sec ) { t{ sec, 0}; }
+static inline void ?{}( timespec & t, zero_t ) { t{ 0, 0 }; }
+static inline timespec ?=?( timespec & t, zero_t ) { return t{ 0 }; }
+static inline timespec ?+?( timespec & lhs, timespec rhs ) { return (timespec)@{ lhs.tv_sec + rhs.tv_sec, lhs.tv_nsec + rhs.tv_nsec }; }
+static inline timespec ?-?( timespec & lhs, timespec rhs ) { return (timespec)@{ lhs.tv_sec - rhs.tv_sec, lhs.tv_nsec - rhs.tv_nsec }; }
+static inline _Bool ?==?( timespec lhs, timespec rhs ) { return lhs.tv_sec == rhs.tv_sec && lhs.tv_nsec == rhs.tv_nsec; }
+static inline _Bool ?!=?( timespec lhs, timespec rhs ) { return lhs.tv_sec != rhs.tv_sec || lhs.tv_nsec != rhs.tv_nsec; }
+
+
+//######################### C itimerval #########################
+
+static inline void ?{}( itimerval & itv, Duration alarm ) with( itv ) {
+	// itimerval contains durations but but uses time data-structure timeval.
+	it_value{ alarm`s, (alarm % 1`s)`us };				// seconds, microseconds
+	it_interval{ 0 };									// 0 seconds, 0 microseconds
+} // itimerval
+
+static inline void ?{}( itimerval & itv, Duration alarm, Duration interval ) with( itv ) {
+	// itimerval contains durations but but uses time data-structure timeval.
+	it_value{ alarm`s, (alarm % 1`s)`us };				// seconds, microseconds
+	it_interval{ interval`s, interval`us };				// seconds, microseconds
+} // itimerval
+
+
+//######################### Time #########################
+
+void ?{}( Time & time, int year, int month = 0, int day = 0, int hour = 0, int min = 0, int sec = 0, int nsec = 0 );
+static inline Time ?=?( Time & time, zero_t ) { return time{ 0 }; }
+
+static inline void ?{}( Time & time, timeval t ) with( time ) { tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_usec * 1000; }
+static inline Time ?=?( Time & time, timeval t ) with( time ) {
+	tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_usec * (TIMEGRAN / 1_000_000LL);
+	return time;
+} // ?=?
+
+static inline void ?{}( Time & time, timespec t ) with( time ) { tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_nsec; }
+static inline Time ?=?( Time & time, timespec t ) with( time ) {
+	tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_nsec;
+	return time;
+} // ?=?
+
+static inline Time ?+?( Time & lhs, Duration rhs ) { return (Time)@{ lhs.tv + rhs.tv }; }
+static inline Time ?+?( Duration lhs, Time rhs ) { return rhs + lhs; }
+static inline Time ?+=?( Time & lhs, Duration rhs ) { lhs = lhs + rhs; return lhs; }
+
+static inline Duration ?-?( Time lhs, Time rhs ) { return (Duration)@{ lhs.tv - rhs.tv }; }
+static inline Time ?-?( Time lhs, Duration rhs ) { return (Time)@{ lhs.tv - rhs.tv }; }
+static inline Time ?-=?( Time & lhs, Duration rhs ) { lhs = lhs - rhs; return lhs; }
+static inline _Bool ?==?( Time lhs, Time rhs ) { return lhs.tv == rhs.tv; }
+static inline _Bool ?!=?( Time lhs, Time rhs ) { return lhs.tv != rhs.tv; }
+static inline _Bool ?<?( Time lhs, Time rhs ) { return lhs.tv < rhs.tv; }
+static inline _Bool ?<=?( Time lhs, Time rhs ) { return lhs.tv <= rhs.tv; }
+static inline _Bool ?>?( Time lhs, Time rhs ) { return lhs.tv > rhs.tv; }
+static inline _Bool ?>=?( Time lhs, Time rhs ) { return lhs.tv >= rhs.tv; }
+
+char * yy_mm_dd( Time time, char * buf );
+static inline char * ?`ymd( Time time, char * buf ) {	// short form
+	return yy_mm_dd( time, buf );
+} // ymd
+
+char * mm_dd_yy( Time time, char * buf );
+static inline char * ?`mdy( Time time, char * buf ) {	// short form
+	return mm_dd_yy( time, buf );
+} // mdy
+
+char * dd_mm_yy( Time time, char * buf );
+static inline char * ?`dmy( Time time, char * buf ) {	// short form
+	return dd_mm_yy( time, buf );;
+} // dmy
+
+size_t strftime( char * buf, size_t size, const char * fmt, Time time );
+
+//------------------------- timeval (cont) -------------------------
+
+static inline void ?{}( timeval & t, Time time ) with( t, time ) {
+	tv_sec = tv / TIMEGRAN;								// seconds
+	tv_usec = tv % TIMEGRAN / (TIMEGRAN / 1_000_000LL);	// microseconds
+} // ?{}
+
+//------------------------- timespec (cont) -------------------------
+
+static inline void ?{}( timespec & t, Time time ) with( t, time ) {
+	tv_sec = tv / TIMEGRAN;								// seconds
+	tv_nsec = tv % TIMEGRAN;							// nanoseconds
+} // ?{}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/time.c
===================================================================
--- src/libcfa/time.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/libcfa/time.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,139 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// time.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Tue Mar 27 13:33:14 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Apr 12 14:41:00 2018
+// Update Count     : 22
+// 
+
+#include "time"
+#include "iostream"
+#include <stdio.h>										// snprintf
+
+static char * nanomsd( long int ns, char * buf ) {		// most significant digits
+	snprintf( buf, 16, ".%09ld", ns );
+	int i;
+	for ( i = 9; buf[i] == '0' ; i -= 1 );				// find least significant digit
+	buf[i + 1] = '\0';
+	return buf;
+} // nanomsd
+
+
+//######################### Duration #########################
+
+
+forall( dtype ostype | ostream( ostype ) )
+ostype & ?|?( ostype & os, Duration dur ) with( dur ) {
+	os | tv / TIMEGRAN;									// print seconds
+	long int ns = (tv < 0 ? -tv : tv) % TIMEGRAN;		// compute nanoseconds
+	if ( ns != 0 ) {									// some ?
+		char buf[16];
+		os | nanomsd( ns, buf );						// print nanoseconds
+	} // if
+	return os;
+} // ?|?
+
+
+//######################### Time #########################
+
+
+#ifdef __CFA_DEBUG__
+#define CreateFmt "Attempt to create Time( year=%d (>=1970), month=%d (1-12), day=%d (1-31), hour=%d (0-23), min=%d (0-59), sec=%d (0-60), nsec=%d (0-999_999_999), " \
+	"which exceeds range 00:00:00 UTC, January 1, 1970 to 03:14:07 UTC, January 19, 2038."
+#endif // __CFA_DEBUG__
+
+void ?{}( Time & time, int year, int month, int day, int hour, int min, int sec, int nsec ) with( time ) {
+	tm tm;
+
+	tm.tm_isdst = -1;									// let mktime determine if alternate timezone is in effect
+	tm.tm_year = year - 1900;							// mktime uses 1900 as its starting point
+#ifdef __CFA_DEBUG__
+	if ( month < 1 || 12 < month ) {
+		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+	} // if
+#endif // __CFA_DEBUG__
+	tm.tm_mon = month - 1;								// mktime uses range 0-11
+#ifdef __CFA_DEBUG__
+	if ( day < 1 || 31 < day ) {
+		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+	} // if
+#endif // __CFA_DEBUG__
+	tm.tm_mday = day;									// mktime uses range 1-31
+	tm.tm_hour = hour;
+	tm.tm_min = min;
+	tm.tm_sec = sec;
+	time_t epochsec = mktime( &tm );
+#ifdef __CFA_DEBUG__
+	if ( epochsec == (time_t)-1 ) {
+		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+	} // if
+#endif // __CFA_DEBUG__
+	tv = (int64_t)(epochsec) * TIMEGRAN + nsec;			// convert to nanoseconds
+#ifdef __CFA_DEBUG__
+	if ( tv > 2147483647LL * TIMEGRAN ) {				// between 00:00:00 UTC, January 1, 1970 and 03:14:07 UTC, January 19, 2038.
+		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+	} // if
+#endif // __CFA_DEBUG__
+} // ?{}
+
+char * yy_mm_dd( Time time, char * buf ) with( time ) {
+	time_t s = tv / TIMEGRAN;
+	tm tm;
+	gmtime_r( &s, &tm );
+	snprintf( buf, 9, "%02d/%02d/%02d", tm.tm_year % 99, tm.tm_mon + 1, tm.tm_mday );
+	return buf;
+} // yy_mm_dd
+
+char * mm_dd_yy( Time time, char * buf ) with( time ) {
+	time_t s = tv / TIMEGRAN;
+	tm tm;
+	gmtime_r( &s, &tm );
+	snprintf( buf, 9, "%02d/%02d/%02d", tm.tm_mon + 1, tm.tm_mday, tm.tm_year % 99 );
+	return buf;
+} // mm_dd_yy
+
+char * dd_mm_yy( Time time, char * buf ) with( time ) {
+	time_t s = tv / TIMEGRAN;
+	tm tm;
+	gmtime_r( &s, &tm );
+	snprintf( buf, 9, "%02d/%02d/%02d", tm.tm_mday, tm.tm_mon + 1, tm.tm_year % 99 );
+	return buf;
+} // dd_mm_yy
+
+size_t strftime( char * buf, size_t size, const char * fmt, Time time ) with( time ) {
+	time_t s = tv / TIMEGRAN;
+	tm tm;
+	gmtime_r( &s, &tm );
+	return strftime( buf, size, fmt, &tm );
+} // strftime
+
+forall( dtype ostype | ostream( ostype ) )
+ostype & ?|?( ostype & os, Time time ) with( time ) {
+	char buf[32];										// at least 26
+	time_t s = tv / TIMEGRAN;
+    ctime_r( &s, (char *)&buf );						// 26 characters: "Wed Jun 30 21:49:08 1993\n"
+	buf[24] = '\0';										// remove trailing '\n'
+	long int ns = (tv < 0 ? -tv : tv) % TIMEGRAN;		// compute nanoseconds
+	if ( ns == 0 ) {									// none ?
+		os | buf;										// print date/time/year
+	} else {
+		buf[19] = '\0';									// truncate to "Wed Jun 30 21:49:08"
+		os | buf;										// print date/time
+		char buf2[16];
+		nanomsd( ns, buf2 );							// compute nanoseconds
+		os | buf2 | ' ' | &buf[20];						// print nanoseconds and year
+	} // if
+	return os;
+} // ?|?
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/time_t.h
===================================================================
--- src/libcfa/time_t.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/libcfa/time_t.h	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,41 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// time_t.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Tue Apr 10 14:42:03 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Apr 13 07:51:47 2018
+// Update Count     : 6
+// 
+
+#pragma once
+
+
+//######################### Duration #########################
+
+struct Duration {										// private
+	int64_t tv;											// nanoseconds
+}; // Duration
+
+static inline void ?{}( Duration & dur ) with( dur ) { tv = 0; }
+static inline void ?{}( Duration & dur, zero_t ) with( dur ) { tv = 0; }
+
+
+//######################### Time #########################
+
+struct Time {											// private
+	uint64_t tv;										// nanoseconds since UNIX epoch
+}; // Time
+
+static inline void ?{}( Time & time ) with( time ) { tv = 0; }
+static inline void ?{}( Time & time, zero_t ) with( time ) { tv = 0; }
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/tests/.expect/attributes.x64.txt
===================================================================
--- src/tests/.expect/attributes.x64.txt	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/.expect/attributes.x64.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -3,5 +3,5 @@
     L: __attribute__ ((unused)) ((void)1);
 }
-__attribute__ ((unused)) struct __anonymous0 {
+struct __attribute__ ((unused)) __anonymous0 {
 };
 static inline void ___constructor__F_R13s__anonymous0_autogen___1(struct __anonymous0 *___dst__R13s__anonymous0_1);
@@ -20,6 +20,6 @@
     return ___ret__13s__anonymous0_1;
 }
-__attribute__ ((unused)) struct Agn1;
-__attribute__ ((unused)) struct Agn2 {
+struct __attribute__ ((unused)) Agn1;
+struct __attribute__ ((unused)) Agn2 {
 };
 static inline void ___constructor__F_R5sAgn2_autogen___1(struct Agn2 *___dst__R5sAgn2_1);
@@ -45,6 +45,6 @@
     __E2__C5eAgn3_1,
 };
-__attribute__ ((unused)) struct __anonymous2;
-__attribute__ ((unused)) struct __anonymous3;
+struct __attribute__ ((unused)) __anonymous2;
+struct __attribute__ ((unused)) __anonymous3;
 struct Fdl {
     __attribute__ ((unused)) signed int __f1__i_1;
@@ -314,5 +314,5 @@
     ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int (*)[10]));
     ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int ()));
-    __attribute__ ((unused)) struct __anonymous4 {
+    struct __attribute__ ((unused)) __anonymous4 {
         signed int __i__i_2;
     };
Index: src/tests/.expect/attributes.x86.txt
===================================================================
--- src/tests/.expect/attributes.x86.txt	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/.expect/attributes.x86.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -3,5 +3,5 @@
     L: __attribute__ ((unused)) ((void)1);
 }
-__attribute__ ((unused)) struct __anonymous0 {
+struct __attribute__ ((unused)) __anonymous0 {
 };
 static inline void ___constructor__F_R13s__anonymous0_autogen___1(struct __anonymous0 *___dst__R13s__anonymous0_1);
@@ -20,6 +20,6 @@
     return ___ret__13s__anonymous0_1;
 }
-__attribute__ ((unused)) struct Agn1;
-__attribute__ ((unused)) struct Agn2 {
+struct __attribute__ ((unused)) Agn1;
+struct __attribute__ ((unused)) Agn2 {
 };
 static inline void ___constructor__F_R5sAgn2_autogen___1(struct Agn2 *___dst__R5sAgn2_1);
@@ -45,6 +45,6 @@
     __E2__C5eAgn3_1,
 };
-__attribute__ ((unused)) struct __anonymous2;
-__attribute__ ((unused)) struct __anonymous3;
+struct __attribute__ ((unused)) __anonymous2;
+struct __attribute__ ((unused)) __anonymous3;
 struct Fdl {
     __attribute__ ((unused)) signed int __f1__i_1;
@@ -314,5 +314,5 @@
     ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int (*)[10]));
     ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int ()));
-    __attribute__ ((unused)) struct __anonymous4 {
+    struct __attribute__ ((unused)) __anonymous4 {
         signed int __i__i_2;
     };
Index: src/tests/.expect/fallthrough-ERROR.txt
===================================================================
--- src/tests/.expect/fallthrough-ERROR.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/tests/.expect/fallthrough-ERROR.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,7 @@
+fallthrough.c:87:1 error: 'fallthrough' must be enclosed in a 'switch' or 'choose'
+fallthrough.c:89:1 error: 'fallthrough' must be enclosed in a 'switch' or 'choose'
+fallthrough.c:91:1 error: 'fallthrough' must be enclosed in a 'switch' or 'choose'
+fallthrough.c:98:1 error: 'fallthrough default' must be enclosed in a 'switch' or 'choose' control structure with a 'default' clause
+fallthrough.c:100:1 error: 'fallthrough' target must be a later case statement: common3
+fallthrough.c:108:1 error: 'fallthrough' target must be a later case statement: common4
+fallthrough.c:110:1 error: 'fallthrough default' must precede the 'default' clause
Index: src/tests/.expect/fallthrough.txt
===================================================================
--- src/tests/.expect/fallthrough.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/tests/.expect/fallthrough.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,20 @@
+case 1
+case 2
+case 3
+default
+
+case 1
+case 1
+0
+1
+2
+common
+default
+
+case 5
+common2
+
+case 5
+check
+common
+default
Index: src/tests/.expect/literals.x64.txt
===================================================================
--- src/tests/.expect/literals.x64.txt	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/.expect/literals.x64.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -122,4 +122,74 @@
 struct _Istream_cstrC __cstr__F15s_Istream_cstrC_Pci__1(char *__anonymous_object1340, signed int __size__i_1);
 void *___operator_bitor__A0_1_0_0___fail__PFi_Rd0___eof__PFi_Rd0___open__PF_Rd0PCc___close__PF_Rd0___read__PFRd0_Rd0PcUl___ungetc__PFRd0_Rd0c___fmt__PFi_Rd0PCc__FRd0_Rd015s_Istream_cstrC__1(__attribute__ ((unused)) signed int (*__fail__PFi_R7tistype__1)(void *__anonymous_object1341), __attribute__ ((unused)) signed int (*__eof__PFi_R7tistype__1)(void *__anonymous_object1342), __attribute__ ((unused)) void (*__open__PF_R7tistypePCc__1)(void *__is__R7tistype_1, const char *__name__PCc_1), __attribute__ ((unused)) void (*__close__PF_R7tistype__1)(void *__is__R7tistype_1), __attribute__ ((unused)) void *(*__read__PFR7tistype_R7tistypePcUl__1)(void *__anonymous_object1343, char *__anonymous_object1344, unsigned long int __anonymous_object1345), __attribute__ ((unused)) void *(*__ungetc__PFR7tistype_R7tistypec__1)(void *__anonymous_object1346, char __anonymous_object1347), __attribute__ ((unused)) signed int (*__fmt__PFi_R7tistypePCc__1)(void *__anonymous_object1348, const char *__fmt__PCc_1, ...), void *__anonymous_object1349, struct _Istream_cstrC __anonymous_object1350);
+struct Duration {
+    signed long int __tv__l_1;
+};
+static inline void ___constructor__F_R9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1);
+static inline void ___constructor__F_R9sDuration9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1, struct Duration ___src__9sDuration_1);
+static inline void ___destructor__F_R9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1);
+static inline struct Duration ___operator_assign__F9sDuration_R9sDuration9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1, struct Duration ___src__9sDuration_1);
+static inline void ___constructor__F_R9sDurationl_autogen___1(struct Duration *___dst__R9sDuration_1, signed long int __tv__l_1);
+static inline void ___constructor__F_R9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1){
+    ((void)((*___dst__R9sDuration_1).__tv__l_1) /* ?{} */);
+}
+static inline void ___constructor__F_R9sDuration9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1, struct Duration ___src__9sDuration_1){
+    ((void)((*___dst__R9sDuration_1).__tv__l_1=___src__9sDuration_1.__tv__l_1) /* ?{} */);
+}
+static inline void ___destructor__F_R9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1){
+    ((void)((*___dst__R9sDuration_1).__tv__l_1) /* ^?{} */);
+}
+static inline struct Duration ___operator_assign__F9sDuration_R9sDuration9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1, struct Duration ___src__9sDuration_1){
+    struct Duration ___ret__9sDuration_1;
+    ((void)((*___dst__R9sDuration_1).__tv__l_1=___src__9sDuration_1.__tv__l_1));
+    ((void)___constructor__F_R9sDuration9sDuration_autogen___1((&___ret__9sDuration_1), (*___dst__R9sDuration_1)));
+    return ___ret__9sDuration_1;
+}
+static inline void ___constructor__F_R9sDurationl_autogen___1(struct Duration *___dst__R9sDuration_1, signed long int __tv__l_1){
+    ((void)((*___dst__R9sDuration_1).__tv__l_1=__tv__l_1) /* ?{} */);
+}
+static inline void ___constructor__F_R9sDuration__1(struct Duration *__dur__R9sDuration_1){
+    ((void)((*__dur__R9sDuration_1).__tv__l_1) /* ?{} */);
+    ((void)((*__dur__R9sDuration_1).__tv__l_1=((signed long int )0)));
+}
+static inline void ___constructor__F_R9sDurationZ__1(struct Duration *__dur__R9sDuration_1, long int __anonymous_object1351){
+    ((void)((*__dur__R9sDuration_1).__tv__l_1) /* ?{} */);
+    ((void)((*__dur__R9sDuration_1).__tv__l_1=((signed long int )0)));
+}
+struct Time {
+    unsigned long int __tv__Ul_1;
+};
+static inline void ___constructor__F_R5sTime_autogen___1(struct Time *___dst__R5sTime_1);
+static inline void ___constructor__F_R5sTime5sTime_autogen___1(struct Time *___dst__R5sTime_1, struct Time ___src__5sTime_1);
+static inline void ___destructor__F_R5sTime_autogen___1(struct Time *___dst__R5sTime_1);
+static inline struct Time ___operator_assign__F5sTime_R5sTime5sTime_autogen___1(struct Time *___dst__R5sTime_1, struct Time ___src__5sTime_1);
+static inline void ___constructor__F_R5sTimeUl_autogen___1(struct Time *___dst__R5sTime_1, unsigned long int __tv__Ul_1);
+static inline void ___constructor__F_R5sTime_autogen___1(struct Time *___dst__R5sTime_1){
+    ((void)((*___dst__R5sTime_1).__tv__Ul_1) /* ?{} */);
+}
+static inline void ___constructor__F_R5sTime5sTime_autogen___1(struct Time *___dst__R5sTime_1, struct Time ___src__5sTime_1){
+    ((void)((*___dst__R5sTime_1).__tv__Ul_1=___src__5sTime_1.__tv__Ul_1) /* ?{} */);
+}
+static inline void ___destructor__F_R5sTime_autogen___1(struct Time *___dst__R5sTime_1){
+    ((void)((*___dst__R5sTime_1).__tv__Ul_1) /* ^?{} */);
+}
+static inline struct Time ___operator_assign__F5sTime_R5sTime5sTime_autogen___1(struct Time *___dst__R5sTime_1, struct Time ___src__5sTime_1){
+    struct Time ___ret__5sTime_1;
+    ((void)((*___dst__R5sTime_1).__tv__Ul_1=___src__5sTime_1.__tv__Ul_1));
+    ((void)___constructor__F_R5sTime5sTime_autogen___1((&___ret__5sTime_1), (*___dst__R5sTime_1)));
+    return ___ret__5sTime_1;
+}
+static inline void ___constructor__F_R5sTimeUl_autogen___1(struct Time *___dst__R5sTime_1, unsigned long int __tv__Ul_1){
+    ((void)((*___dst__R5sTime_1).__tv__Ul_1=__tv__Ul_1) /* ?{} */);
+}
+static inline void ___constructor__F_R5sTime__1(struct Time *__time__R5sTime_1){
+    ((void)((*__time__R5sTime_1).__tv__Ul_1) /* ?{} */);
+    ((void)((*__time__R5sTime_1).__tv__Ul_1=((unsigned long int )0)));
+}
+static inline void ___constructor__F_R5sTimeZ__1(struct Time *__time__R5sTime_1, long int __anonymous_object1352){
+    ((void)((*__time__R5sTime_1).__tv__Ul_1) /* ?{} */);
+    ((void)((*__time__R5sTime_1).__tv__Ul_1=((unsigned long int )0)));
+}
+void *___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd09sDuration__1(__attribute__ ((unused)) _Bool (*__sepPrt__PFb_R7tostype__1)(void *__anonymous_object1353), __attribute__ ((unused)) void (*__sepReset__PF_R7tostype__1)(void *__anonymous_object1354), __attribute__ ((unused)) void (*__sepReset__PF_R7tostypeb__1)(void *__anonymous_object1355, _Bool __anonymous_object1356), __attribute__ ((unused)) const char *(*__sepGetCur__PFPCc_R7tostype__1)(void *__anonymous_object1357), __attribute__ ((unused)) void (*__sepSetCur__PF_R7tostypePCc__1)(void *__anonymous_object1358, const char *__anonymous_object1359), __attribute__ ((unused)) _Bool (*__getNL__PFb_R7tostype__1)(void *__anonymous_object1360), __attribute__ ((unused)) void (*__setNL__PF_R7tostypeb__1)(void *__anonymous_object1361, _Bool __anonymous_object1362), __attribute__ ((unused)) void (*__sepOn__PF_R7tostype__1)(void *__anonymous_object1363), __attribute__ ((unused)) void (*__sepOff__PF_R7tostype__1)(void *__anonymous_object1364), __attribute__ ((unused)) _Bool (*__sepDisable__PFb_R7tostype__1)(void *__anonymous_object1365), __attribute__ ((unused)) _Bool (*__sepEnable__PFb_R7tostype__1)(void *__anonymous_object1366), __attribute__ ((unused)) const char *(*__sepGet__PFPCc_R7tostype__1)(void *__anonymous_object1367), __attribute__ ((unused)) void (*__sepSet__PF_R7tostypePCc__1)(void *__anonymous_object1368, const char *__anonymous_object1369), __attribute__ ((unused)) const char *(*__sepGetTuple__PFPCc_R7tostype__1)(void *__anonymous_object1370), __attribute__ ((unused)) void (*__sepSetTuple__PF_R7tostypePCc__1)(void *__anonymous_object1371, const char *__anonymous_object1372), __attribute__ ((unused)) signed int (*__fail__PFi_R7tostype__1)(void *__anonymous_object1373), __attribute__ ((unused)) signed int (*__flush__PFi_R7tostype__1)(void *__anonymous_object1374), __attribute__ ((unused)) void (*__open__PF_R7tostypePCcPCc__1)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1), __attribute__ ((unused)) void (*__close__PF_R7tostype__1)(void *__os__R7tostype_1), __attribute__ ((unused)) void *(*__write__PFR7tostype_R7tostypePCcUl__1)(void *__anonymous_object1375, const char *__anonymous_object1376, unsigned long int __anonymous_object1377), __attribute__ ((unused)) signed int (*__fmt__PFi_R7tostypePCc__1)(void *__anonymous_object1378, const char *__fmt__PCc_1, ...), void *__os__R7tostype_1, struct Duration __dur__9sDuration_1);
+void *___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd05sTime__1(__attribute__ ((unused)) _Bool (*__sepPrt__PFb_R7tostype__1)(void *__anonymous_object1379), __attribute__ ((unused)) void (*__sepReset__PF_R7tostype__1)(void *__anonymous_object1380), __attribute__ ((unused)) void (*__sepReset__PF_R7tostypeb__1)(void *__anonymous_object1381, _Bool __anonymous_object1382), __attribute__ ((unused)) const char *(*__sepGetCur__PFPCc_R7tostype__1)(void *__anonymous_object1383), __attribute__ ((unused)) void (*__sepSetCur__PF_R7tostypePCc__1)(void *__anonymous_object1384, const char *__anonymous_object1385), __attribute__ ((unused)) _Bool (*__getNL__PFb_R7tostype__1)(void *__anonymous_object1386), __attribute__ ((unused)) void (*__setNL__PF_R7tostypeb__1)(void *__anonymous_object1387, _Bool __anonymous_object1388), __attribute__ ((unused)) void (*__sepOn__PF_R7tostype__1)(void *__anonymous_object1389), __attribute__ ((unused)) void (*__sepOff__PF_R7tostype__1)(void *__anonymous_object1390), __attribute__ ((unused)) _Bool (*__sepDisable__PFb_R7tostype__1)(void *__anonymous_object1391), __attribute__ ((unused)) _Bool (*__sepEnable__PFb_R7tostype__1)(void *__anonymous_object1392), __attribute__ ((unused)) const char *(*__sepGet__PFPCc_R7tostype__1)(void *__anonymous_object1393), __attribute__ ((unused)) void (*__sepSet__PF_R7tostypePCc__1)(void *__anonymous_object1394, const char *__anonymous_object1395), __attribute__ ((unused)) const char *(*__sepGetTuple__PFPCc_R7tostype__1)(void *__anonymous_object1396), __attribute__ ((unused)) void (*__sepSetTuple__PF_R7tostypePCc__1)(void *__anonymous_object1397, const char *__anonymous_object1398), __attribute__ ((unused)) signed int (*__fail__PFi_R7tostype__1)(void *__anonymous_object1399), __attribute__ ((unused)) signed int (*__flush__PFi_R7tostype__1)(void *__anonymous_object1400), __attribute__ ((unused)) void (*__open__PF_R7tostypePCcPCc__1)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1), __attribute__ ((unused)) void (*__close__PF_R7tostype__1)(void *__os__R7tostype_1), __attribute__ ((unused)) void *(*__write__PFR7tostype_R7tostypePCcUl__1)(void *__anonymous_object1401, const char *__anonymous_object1402, unsigned long int __anonymous_object1403), __attribute__ ((unused)) signed int (*__fmt__PFi_R7tostypePCc__1)(void *__anonymous_object1404, const char *__fmt__PCc_1, ...), void *__os__R7tostype_1, struct Time __time__5sTime_1);
 enum __anonymous0 {
     __sepSize__C13e__anonymous0_1 = 16,
@@ -401,26 +471,26 @@
 
 }
-_Bool __sepPrt__Fb_R9sofstream__1(struct ofstream *__anonymous_object1351);
-void __sepReset__F_R9sofstream__1(struct ofstream *__anonymous_object1352);
-void __sepReset__F_R9sofstreamb__1(struct ofstream *__anonymous_object1353, _Bool __anonymous_object1354);
-const char *__sepGetCur__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1355);
-void __sepSetCur__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1356, const char *__anonymous_object1357);
-_Bool __getNL__Fb_R9sofstream__1(struct ofstream *__anonymous_object1358);
-void __setNL__F_R9sofstreamb__1(struct ofstream *__anonymous_object1359, _Bool __anonymous_object1360);
-void __sepOn__F_R9sofstream__1(struct ofstream *__anonymous_object1361);
-void __sepOff__F_R9sofstream__1(struct ofstream *__anonymous_object1362);
-_Bool __sepDisable__Fb_R9sofstream__1(struct ofstream *__anonymous_object1363);
-_Bool __sepEnable__Fb_R9sofstream__1(struct ofstream *__anonymous_object1364);
-const char *__sepGet__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1365);
-void __sepSet__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1366, const char *__anonymous_object1367);
-const char *__sepGetTuple__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1368);
-void __sepSetTuple__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1369, const char *__anonymous_object1370);
-signed int __fail__Fi_R9sofstream__1(struct ofstream *__anonymous_object1371);
-signed int __flush__Fi_R9sofstream__1(struct ofstream *__anonymous_object1372);
-void __open__F_R9sofstreamPCcPCc__1(struct ofstream *__anonymous_object1373, const char *__name__PCc_1, const char *__mode__PCc_1);
-void __open__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1374, const char *__name__PCc_1);
-void __close__F_R9sofstream__1(struct ofstream *__anonymous_object1375);
-struct ofstream *__write__FR9sofstream_R9sofstreamPCcUl__1(struct ofstream *__anonymous_object1376, const char *__data__PCc_1, unsigned long int __size__Ul_1);
-signed int __fmt__Fi_R9sofstreamPCc__1(struct ofstream *__anonymous_object1377, const char *__fmt__PCc_1, ...);
+_Bool __sepPrt__Fb_R9sofstream__1(struct ofstream *__anonymous_object1405);
+void __sepReset__F_R9sofstream__1(struct ofstream *__anonymous_object1406);
+void __sepReset__F_R9sofstreamb__1(struct ofstream *__anonymous_object1407, _Bool __anonymous_object1408);
+const char *__sepGetCur__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1409);
+void __sepSetCur__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1410, const char *__anonymous_object1411);
+_Bool __getNL__Fb_R9sofstream__1(struct ofstream *__anonymous_object1412);
+void __setNL__F_R9sofstreamb__1(struct ofstream *__anonymous_object1413, _Bool __anonymous_object1414);
+void __sepOn__F_R9sofstream__1(struct ofstream *__anonymous_object1415);
+void __sepOff__F_R9sofstream__1(struct ofstream *__anonymous_object1416);
+_Bool __sepDisable__Fb_R9sofstream__1(struct ofstream *__anonymous_object1417);
+_Bool __sepEnable__Fb_R9sofstream__1(struct ofstream *__anonymous_object1418);
+const char *__sepGet__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1419);
+void __sepSet__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1420, const char *__anonymous_object1421);
+const char *__sepGetTuple__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1422);
+void __sepSetTuple__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1423, const char *__anonymous_object1424);
+signed int __fail__Fi_R9sofstream__1(struct ofstream *__anonymous_object1425);
+signed int __flush__Fi_R9sofstream__1(struct ofstream *__anonymous_object1426);
+void __open__F_R9sofstreamPCcPCc__1(struct ofstream *__anonymous_object1427, const char *__name__PCc_1, const char *__mode__PCc_1);
+void __open__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1428, const char *__name__PCc_1);
+void __close__F_R9sofstream__1(struct ofstream *__anonymous_object1429);
+struct ofstream *__write__FR9sofstream_R9sofstreamPCcUl__1(struct ofstream *__anonymous_object1430, const char *__data__PCc_1, unsigned long int __size__Ul_1);
+signed int __fmt__Fi_R9sofstreamPCc__1(struct ofstream *__anonymous_object1431, const char *__fmt__PCc_1, ...);
 void ___constructor__F_R9sofstream__1(struct ofstream *__os__R9sofstream_1);
 void ___constructor__F_R9sofstreamPCcPCc__1(struct ofstream *__os__R9sofstream_1, const char *__name__PCc_1, const char *__mode__PCc_1);
@@ -461,5 +531,5 @@
 struct ifstream *__read__FR9sifstream_R9sifstreamPcUl__1(struct ifstream *__is__R9sifstream_1, char *__data__Pc_1, unsigned long int __size__Ul_1);
 struct ifstream *__ungetc__FR9sifstream_R9sifstreamc__1(struct ifstream *__is__R9sifstream_1, char __c__c_1);
-signed int __fmt__Fi_R9sifstreamPCc__1(struct ifstream *__anonymous_object1378, const char *__fmt__PCc_1, ...);
+signed int __fmt__Fi_R9sifstreamPCc__1(struct ifstream *__anonymous_object1432, const char *__fmt__PCc_1, ...);
 void ___constructor__F_R9sifstream__1(struct ifstream *__is__R9sifstream_1);
 void ___constructor__F_R9sifstreamPCcPCc__1(struct ifstream *__is__R9sifstream_1, const char *__name__PCc_1, const char *__mode__PCc_1);
@@ -471,7 +541,7 @@
     struct ofstream *_tmp_cp_ret4;
     __attribute__ ((unused)) struct ofstream *_thunk0(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1379))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1380))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1381, _Bool __anonymous_object1382))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1383))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1384, const char *__anonymous_object1385))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1386))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1387, _Bool __anonymous_object1388))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1389))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1390))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1391))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1392))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1393))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1394, const char *__anonymous_object1395))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1396))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1397, const char *__anonymous_object1398))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1399))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1400))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1401, const char *__anonymous_object1402, unsigned long int __anonymous_object1403))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1404, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret4=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1405))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1406))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1407, _Bool __anonymous_object1408))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1409))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1410, const char *__anonymous_object1411))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1412))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1413, _Bool __anonymous_object1414))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1415))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1416))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1417))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1418))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1419))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1420, const char *__anonymous_object1421))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1422))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1423, const char *__anonymous_object1424))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1425))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1426))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1427, const char *__anonymous_object1428, unsigned long int __anonymous_object1429))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1430, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret3=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0c__1(((_Bool (*)(void *__anonymous_object1431))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1432))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1433, _Bool __anonymous_object1434))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1435))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1436, const char *__anonymous_object1437))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1438))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1439, _Bool __anonymous_object1440))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1441))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1442))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1443))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1444))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1445))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1446, const char *__anonymous_object1447))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1448))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1449, const char *__anonymous_object1450))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1451))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1452))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1453, const char *__anonymous_object1454, unsigned long int __anonymous_object1455))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1456, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret2=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1457))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1458))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1459, _Bool __anonymous_object1460))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1461))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1462, const char *__anonymous_object1463))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1464))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1465, _Bool __anonymous_object1466))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1467))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1468))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1469))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1470))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1471))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1472, const char *__anonymous_object1473))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1474))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1475, const char *__anonymous_object1476))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1477))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1478))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1479, const char *__anonymous_object1480, unsigned long int __anonymous_object1481))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1482, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "char ")))) , _tmp_cp_ret2)), __v__c_1)))) , _tmp_cp_ret3)), ((void *(*)(void *__anonymous_object1483))(&_thunk0)))))) , _tmp_cp_ret4));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1433))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1434))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1435, _Bool __anonymous_object1436))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1437))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1438, const char *__anonymous_object1439))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1440))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1441, _Bool __anonymous_object1442))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1443))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1444))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1445))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1446))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1447))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1448, const char *__anonymous_object1449))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1450))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1451, const char *__anonymous_object1452))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1453))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1454))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1455, const char *__anonymous_object1456, unsigned long int __anonymous_object1457))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1458, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret4=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1459))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1460))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1461, _Bool __anonymous_object1462))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1463))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1464, const char *__anonymous_object1465))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1466))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1467, _Bool __anonymous_object1468))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1469))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1470))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1471))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1472))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1473))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1474, const char *__anonymous_object1475))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1476))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1477, const char *__anonymous_object1478))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1479))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1480))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1481, const char *__anonymous_object1482, unsigned long int __anonymous_object1483))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1484, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret3=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0c__1(((_Bool (*)(void *__anonymous_object1485))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1486))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1487, _Bool __anonymous_object1488))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1489))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1490, const char *__anonymous_object1491))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1492))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1493, _Bool __anonymous_object1494))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1495))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1496))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1497))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1498))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1499))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1500, const char *__anonymous_object1501))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1502))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1503, const char *__anonymous_object1504))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1505))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1506))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1507, const char *__anonymous_object1508, unsigned long int __anonymous_object1509))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1510, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret2=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1511))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1512))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1513, _Bool __anonymous_object1514))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1515))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1516, const char *__anonymous_object1517))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1518))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1519, _Bool __anonymous_object1520))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1521))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1522))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1523))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1524))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1525))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1526, const char *__anonymous_object1527))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1528))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1529, const char *__anonymous_object1530))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1531))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1532))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1533, const char *__anonymous_object1534, unsigned long int __anonymous_object1535))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1536, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "char ")))) , _tmp_cp_ret2)), __v__c_1)))) , _tmp_cp_ret3)), ((void *(*)(void *__anonymous_object1537))(&_thunk0)))))) , _tmp_cp_ret4));
 }
 void __f__F_Sc__1(signed char __v__Sc_1){
@@ -480,7 +550,7 @@
     struct ofstream *_tmp_cp_ret7;
     __attribute__ ((unused)) struct ofstream *_thunk1(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1484))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1485))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1486, _Bool __anonymous_object1487))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1488))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1489, const char *__anonymous_object1490))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1491))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1492, _Bool __anonymous_object1493))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1494))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1495))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1496))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1497))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1498))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1499, const char *__anonymous_object1500))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1501))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1502, const char *__anonymous_object1503))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1504))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1505))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1506, const char *__anonymous_object1507, unsigned long int __anonymous_object1508))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1509, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret7=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1510))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1511))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1512, _Bool __anonymous_object1513))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1514))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1515, const char *__anonymous_object1516))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1517))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1518, _Bool __anonymous_object1519))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1520))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1521))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1522))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1523))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1524))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1525, const char *__anonymous_object1526))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1527))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1528, const char *__anonymous_object1529))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1530))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1531))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1532, const char *__anonymous_object1533, unsigned long int __anonymous_object1534))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1535, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret6=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Sc__1(((_Bool (*)(void *__anonymous_object1536))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1537))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1538, _Bool __anonymous_object1539))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1540))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1541, const char *__anonymous_object1542))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1543))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1544, _Bool __anonymous_object1545))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1546))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1547))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1548))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1549))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1550))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1551, const char *__anonymous_object1552))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1553))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1554, const char *__anonymous_object1555))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1556))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1557))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1558, const char *__anonymous_object1559, unsigned long int __anonymous_object1560))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1561, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret5=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1562))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1563))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1564, _Bool __anonymous_object1565))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1566))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1567, const char *__anonymous_object1568))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1569))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1570, _Bool __anonymous_object1571))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1572))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1573))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1574))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1575))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1576))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1577, const char *__anonymous_object1578))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1579))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1580, const char *__anonymous_object1581))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1582))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1583))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1584, const char *__anonymous_object1585, unsigned long int __anonymous_object1586))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1587, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed char ")))) , _tmp_cp_ret5)), __v__Sc_1)))) , _tmp_cp_ret6)), ((void *(*)(void *__anonymous_object1588))(&_thunk1)))))) , _tmp_cp_ret7));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1538))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1539))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1540, _Bool __anonymous_object1541))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1542))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1543, const char *__anonymous_object1544))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1545))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1546, _Bool __anonymous_object1547))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1548))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1549))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1550))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1551))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1552))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1553, const char *__anonymous_object1554))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1555))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1556, const char *__anonymous_object1557))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1558))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1559))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1560, const char *__anonymous_object1561, unsigned long int __anonymous_object1562))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1563, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret7=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1564))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1565))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1566, _Bool __anonymous_object1567))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1568))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1569, const char *__anonymous_object1570))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1571))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1572, _Bool __anonymous_object1573))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1574))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1575))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1576))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1577))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1578))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1579, const char *__anonymous_object1580))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1581))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1582, const char *__anonymous_object1583))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1584))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1585))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1586, const char *__anonymous_object1587, unsigned long int __anonymous_object1588))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1589, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret6=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Sc__1(((_Bool (*)(void *__anonymous_object1590))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1591))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1592, _Bool __anonymous_object1593))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1594))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1595, const char *__anonymous_object1596))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1597))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1598, _Bool __anonymous_object1599))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1600))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1601))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1602))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1603))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1604))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1605, const char *__anonymous_object1606))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1607))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1608, const char *__anonymous_object1609))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1610))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1611))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1612, const char *__anonymous_object1613, unsigned long int __anonymous_object1614))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1615, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret5=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1616))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1617))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1618, _Bool __anonymous_object1619))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1620))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1621, const char *__anonymous_object1622))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1623))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1624, _Bool __anonymous_object1625))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1626))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1627))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1628))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1629))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1630))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1631, const char *__anonymous_object1632))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1633))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1634, const char *__anonymous_object1635))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1636))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1637))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1638, const char *__anonymous_object1639, unsigned long int __anonymous_object1640))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1641, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed char ")))) , _tmp_cp_ret5)), __v__Sc_1)))) , _tmp_cp_ret6)), ((void *(*)(void *__anonymous_object1642))(&_thunk1)))))) , _tmp_cp_ret7));
 }
 void __f__F_Uc__1(unsigned char __v__Uc_1){
@@ -489,7 +559,7 @@
     struct ofstream *_tmp_cp_ret10;
     __attribute__ ((unused)) struct ofstream *_thunk2(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1589))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1590))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1591, _Bool __anonymous_object1592))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1593))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1594, const char *__anonymous_object1595))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1596))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1597, _Bool __anonymous_object1598))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1599))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1600))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1601))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1602))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1603))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1604, const char *__anonymous_object1605))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1606))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1607, const char *__anonymous_object1608))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1609))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1610))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1611, const char *__anonymous_object1612, unsigned long int __anonymous_object1613))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1614, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret10=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1615))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1616))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1617, _Bool __anonymous_object1618))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1619))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1620, const char *__anonymous_object1621))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1622))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1623, _Bool __anonymous_object1624))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1625))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1626))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1627))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1628))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1629))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1630, const char *__anonymous_object1631))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1632))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1633, const char *__anonymous_object1634))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1635))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1636))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1637, const char *__anonymous_object1638, unsigned long int __anonymous_object1639))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1640, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret9=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Uc__1(((_Bool (*)(void *__anonymous_object1641))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1642))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1643, _Bool __anonymous_object1644))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1645))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1646, const char *__anonymous_object1647))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1648))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1649, _Bool __anonymous_object1650))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1651))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1652))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1653))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1654))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1655))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1656, const char *__anonymous_object1657))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1658))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1659, const char *__anonymous_object1660))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1661))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1662))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1663, const char *__anonymous_object1664, unsigned long int __anonymous_object1665))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1666, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret8=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1667))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1668))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1669, _Bool __anonymous_object1670))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1671))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1672, const char *__anonymous_object1673))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1674))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1675, _Bool __anonymous_object1676))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1677))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1678))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1679))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1680))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1681))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1682, const char *__anonymous_object1683))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1684))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1685, const char *__anonymous_object1686))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1687))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1688))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1689, const char *__anonymous_object1690, unsigned long int __anonymous_object1691))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1692, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned char ")))) , _tmp_cp_ret8)), __v__Uc_1)))) , _tmp_cp_ret9)), ((void *(*)(void *__anonymous_object1693))(&_thunk2)))))) , _tmp_cp_ret10));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1643))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1644))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1645, _Bool __anonymous_object1646))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1647))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1648, const char *__anonymous_object1649))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1650))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1651, _Bool __anonymous_object1652))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1653))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1654))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1655))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1656))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1657))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1658, const char *__anonymous_object1659))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1660))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1661, const char *__anonymous_object1662))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1663))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1664))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1665, const char *__anonymous_object1666, unsigned long int __anonymous_object1667))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1668, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret10=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1669))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1670))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1671, _Bool __anonymous_object1672))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1673))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1674, const char *__anonymous_object1675))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1676))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1677, _Bool __anonymous_object1678))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1679))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1680))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1681))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1682))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1683))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1684, const char *__anonymous_object1685))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1686))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1687, const char *__anonymous_object1688))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1689))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1690))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1691, const char *__anonymous_object1692, unsigned long int __anonymous_object1693))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1694, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret9=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Uc__1(((_Bool (*)(void *__anonymous_object1695))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1696))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1697, _Bool __anonymous_object1698))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1699))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1700, const char *__anonymous_object1701))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1702))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1703, _Bool __anonymous_object1704))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1705))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1706))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1707))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1708))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1709))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1710, const char *__anonymous_object1711))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1712))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1713, const char *__anonymous_object1714))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1715))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1716))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1717, const char *__anonymous_object1718, unsigned long int __anonymous_object1719))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1720, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret8=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1721))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1722))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1723, _Bool __anonymous_object1724))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1725))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1726, const char *__anonymous_object1727))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1728))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1729, _Bool __anonymous_object1730))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1731))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1732))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1733))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1734))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1735))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1736, const char *__anonymous_object1737))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1738))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1739, const char *__anonymous_object1740))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1741))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1742))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1743, const char *__anonymous_object1744, unsigned long int __anonymous_object1745))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1746, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned char ")))) , _tmp_cp_ret8)), __v__Uc_1)))) , _tmp_cp_ret9)), ((void *(*)(void *__anonymous_object1747))(&_thunk2)))))) , _tmp_cp_ret10));
 }
 void __f__F_s__1(signed short int __v__s_1){
@@ -498,7 +568,7 @@
     struct ofstream *_tmp_cp_ret13;
     __attribute__ ((unused)) struct ofstream *_thunk3(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1694))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1695))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1696, _Bool __anonymous_object1697))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1698))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1699, const char *__anonymous_object1700))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1701))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1702, _Bool __anonymous_object1703))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1704))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1705))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1706))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1707))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1708))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1709, const char *__anonymous_object1710))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1711))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1712, const char *__anonymous_object1713))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1714))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1715))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1716, const char *__anonymous_object1717, unsigned long int __anonymous_object1718))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1719, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret13=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1720))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1721))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1722, _Bool __anonymous_object1723))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1724))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1725, const char *__anonymous_object1726))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1727))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1728, _Bool __anonymous_object1729))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1730))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1731))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1732))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1733))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1734))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1735, const char *__anonymous_object1736))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1737))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1738, const char *__anonymous_object1739))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1740))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1741))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1742, const char *__anonymous_object1743, unsigned long int __anonymous_object1744))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1745, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret12=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0s__1(((_Bool (*)(void *__anonymous_object1746))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1747))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1748, _Bool __anonymous_object1749))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1750))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1751, const char *__anonymous_object1752))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1753))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1754, _Bool __anonymous_object1755))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1756))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1757))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1758))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1759))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1760))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1761, const char *__anonymous_object1762))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1763))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1764, const char *__anonymous_object1765))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1766))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1767))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1768, const char *__anonymous_object1769, unsigned long int __anonymous_object1770))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1771, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret11=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1772))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1773))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1774, _Bool __anonymous_object1775))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1776))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1777, const char *__anonymous_object1778))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1779))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1780, _Bool __anonymous_object1781))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1782))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1783))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1784))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1785))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1786))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1787, const char *__anonymous_object1788))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1789))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1790, const char *__anonymous_object1791))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1792))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1793))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1794, const char *__anonymous_object1795, unsigned long int __anonymous_object1796))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1797, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed short int")))) , _tmp_cp_ret11)), __v__s_1)))) , _tmp_cp_ret12)), ((void *(*)(void *__anonymous_object1798))(&_thunk3)))))) , _tmp_cp_ret13));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1748))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1749))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1750, _Bool __anonymous_object1751))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1752))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1753, const char *__anonymous_object1754))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1755))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1756, _Bool __anonymous_object1757))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1758))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1759))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1760))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1761))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1762))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1763, const char *__anonymous_object1764))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1765))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1766, const char *__anonymous_object1767))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1768))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1769))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1770, const char *__anonymous_object1771, unsigned long int __anonymous_object1772))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1773, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret13=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1774))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1775))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1776, _Bool __anonymous_object1777))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1778))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1779, const char *__anonymous_object1780))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1781))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1782, _Bool __anonymous_object1783))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1784))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1785))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1786))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1787))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1788))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1789, const char *__anonymous_object1790))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1791))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1792, const char *__anonymous_object1793))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1794))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1795))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1796, const char *__anonymous_object1797, unsigned long int __anonymous_object1798))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1799, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret12=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0s__1(((_Bool (*)(void *__anonymous_object1800))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1801))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1802, _Bool __anonymous_object1803))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1804))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1805, const char *__anonymous_object1806))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1807))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1808, _Bool __anonymous_object1809))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1810))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1811))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1812))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1813))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1814))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1815, const char *__anonymous_object1816))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1817))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1818, const char *__anonymous_object1819))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1820))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1821))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1822, const char *__anonymous_object1823, unsigned long int __anonymous_object1824))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1825, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret11=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1826))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1827))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1828, _Bool __anonymous_object1829))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1830))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1831, const char *__anonymous_object1832))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1833))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1834, _Bool __anonymous_object1835))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1836))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1837))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1838))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1839))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1840))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1841, const char *__anonymous_object1842))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1843))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1844, const char *__anonymous_object1845))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1846))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1847))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1848, const char *__anonymous_object1849, unsigned long int __anonymous_object1850))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1851, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed short int")))) , _tmp_cp_ret11)), __v__s_1)))) , _tmp_cp_ret12)), ((void *(*)(void *__anonymous_object1852))(&_thunk3)))))) , _tmp_cp_ret13));
 }
 void __f__F_Us__1(unsigned short int __v__Us_1){
@@ -507,7 +577,7 @@
     struct ofstream *_tmp_cp_ret16;
     __attribute__ ((unused)) struct ofstream *_thunk4(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1799))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1800))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1801, _Bool __anonymous_object1802))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1803))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1804, const char *__anonymous_object1805))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1806))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1807, _Bool __anonymous_object1808))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1809))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1810))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1811))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1812))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1813))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1814, const char *__anonymous_object1815))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1816))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1817, const char *__anonymous_object1818))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1819))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1820))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1821, const char *__anonymous_object1822, unsigned long int __anonymous_object1823))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1824, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret16=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1825))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1826))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1827, _Bool __anonymous_object1828))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1829))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1830, const char *__anonymous_object1831))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1832))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1833, _Bool __anonymous_object1834))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1835))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1836))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1837))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1838))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1839))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1840, const char *__anonymous_object1841))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1842))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1843, const char *__anonymous_object1844))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1845))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1846))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1847, const char *__anonymous_object1848, unsigned long int __anonymous_object1849))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1850, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret15=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Us__1(((_Bool (*)(void *__anonymous_object1851))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1852))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1853, _Bool __anonymous_object1854))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1855))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1856, const char *__anonymous_object1857))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1858))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1859, _Bool __anonymous_object1860))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1861))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1862))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1863))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1864))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1865))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1866, const char *__anonymous_object1867))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1868))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1869, const char *__anonymous_object1870))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1871))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1872))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1873, const char *__anonymous_object1874, unsigned long int __anonymous_object1875))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1876, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret14=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1877))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1878))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1879, _Bool __anonymous_object1880))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1881))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1882, const char *__anonymous_object1883))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1884))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1885, _Bool __anonymous_object1886))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1887))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1888))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1889))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1890))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1891))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1892, const char *__anonymous_object1893))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1894))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1895, const char *__anonymous_object1896))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1897))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1898))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1899, const char *__anonymous_object1900, unsigned long int __anonymous_object1901))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1902, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned short int")))) , _tmp_cp_ret14)), __v__Us_1)))) , _tmp_cp_ret15)), ((void *(*)(void *__anonymous_object1903))(&_thunk4)))))) , _tmp_cp_ret16));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1853))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1854))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1855, _Bool __anonymous_object1856))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1857))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1858, const char *__anonymous_object1859))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1860))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1861, _Bool __anonymous_object1862))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1863))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1864))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1865))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1866))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1867))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1868, const char *__anonymous_object1869))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1870))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1871, const char *__anonymous_object1872))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1873))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1874))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1875, const char *__anonymous_object1876, unsigned long int __anonymous_object1877))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1878, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret16=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1879))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1880))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1881, _Bool __anonymous_object1882))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1883))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1884, const char *__anonymous_object1885))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1886))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1887, _Bool __anonymous_object1888))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1889))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1890))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1891))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1892))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1893))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1894, const char *__anonymous_object1895))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1896))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1897, const char *__anonymous_object1898))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1899))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1900))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1901, const char *__anonymous_object1902, unsigned long int __anonymous_object1903))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1904, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret15=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Us__1(((_Bool (*)(void *__anonymous_object1905))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1906))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1907, _Bool __anonymous_object1908))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1909))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1910, const char *__anonymous_object1911))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1912))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1913, _Bool __anonymous_object1914))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1915))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1916))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1917))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1918))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1919))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1920, const char *__anonymous_object1921))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1922))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1923, const char *__anonymous_object1924))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1925))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1926))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1927, const char *__anonymous_object1928, unsigned long int __anonymous_object1929))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1930, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret14=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1931))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1932))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1933, _Bool __anonymous_object1934))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1935))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1936, const char *__anonymous_object1937))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1938))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1939, _Bool __anonymous_object1940))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1941))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1942))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1943))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1944))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1945))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1946, const char *__anonymous_object1947))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1948))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1949, const char *__anonymous_object1950))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1951))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1952))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1953, const char *__anonymous_object1954, unsigned long int __anonymous_object1955))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1956, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned short int")))) , _tmp_cp_ret14)), __v__Us_1)))) , _tmp_cp_ret15)), ((void *(*)(void *__anonymous_object1957))(&_thunk4)))))) , _tmp_cp_ret16));
 }
 void __f__F_Ul__1(unsigned long int __v__Ul_1){
@@ -516,7 +586,7 @@
     struct ofstream *_tmp_cp_ret19;
     __attribute__ ((unused)) struct ofstream *_thunk5(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1904))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1905))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1906, _Bool __anonymous_object1907))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1908))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1909, const char *__anonymous_object1910))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1911))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1912, _Bool __anonymous_object1913))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1914))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1915))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1916))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1917))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1918))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1919, const char *__anonymous_object1920))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1921))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1922, const char *__anonymous_object1923))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1924))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1925))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1926, const char *__anonymous_object1927, unsigned long int __anonymous_object1928))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1929, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret19=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1930))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1931))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1932, _Bool __anonymous_object1933))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1934))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1935, const char *__anonymous_object1936))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1937))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1938, _Bool __anonymous_object1939))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1940))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1941))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1942))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1943))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1944))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1945, const char *__anonymous_object1946))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1947))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1948, const char *__anonymous_object1949))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1950))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1951))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1952, const char *__anonymous_object1953, unsigned long int __anonymous_object1954))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1955, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret18=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Ul__1(((_Bool (*)(void *__anonymous_object1956))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1957))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1958, _Bool __anonymous_object1959))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1960))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1961, const char *__anonymous_object1962))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1963))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1964, _Bool __anonymous_object1965))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1966))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1967))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1968))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1969))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1970))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1971, const char *__anonymous_object1972))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1973))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1974, const char *__anonymous_object1975))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1976))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1977))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1978, const char *__anonymous_object1979, unsigned long int __anonymous_object1980))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1981, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret17=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1982))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1983))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1984, _Bool __anonymous_object1985))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1986))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1987, const char *__anonymous_object1988))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1989))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1990, _Bool __anonymous_object1991))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1992))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1993))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1994))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1995))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1996))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1997, const char *__anonymous_object1998))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1999))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2000, const char *__anonymous_object2001))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object2002))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object2003))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object2004, const char *__anonymous_object2005, unsigned long int __anonymous_object2006))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object2007, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "size_t")))) , _tmp_cp_ret17)), __v__Ul_1)))) , _tmp_cp_ret18)), ((void *(*)(void *__anonymous_object2008))(&_thunk5)))))) , _tmp_cp_ret19));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1958))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1959))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1960, _Bool __anonymous_object1961))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1962))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1963, const char *__anonymous_object1964))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1965))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1966, _Bool __anonymous_object1967))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1968))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1969))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1970))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1971))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1972))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1973, const char *__anonymous_object1974))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1975))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1976, const char *__anonymous_object1977))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1978))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1979))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1980, const char *__anonymous_object1981, unsigned long int __anonymous_object1982))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1983, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret19=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1984))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1985))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1986, _Bool __anonymous_object1987))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1988))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1989, const char *__anonymous_object1990))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1991))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1992, _Bool __anonymous_object1993))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1994))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1995))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1996))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1997))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1998))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1999, const char *__anonymous_object2000))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object2001))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2002, const char *__anonymous_object2003))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object2004))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object2005))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object2006, const char *__anonymous_object2007, unsigned long int __anonymous_object2008))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object2009, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret18=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Ul__1(((_Bool (*)(void *__anonymous_object2010))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object2011))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object2012, _Bool __anonymous_object2013))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object2014))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2015, const char *__anonymous_object2016))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object2017))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object2018, _Bool __anonymous_object2019))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object2020))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object2021))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object2022))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object2023))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object2024))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2025, const char *__anonymous_object2026))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object2027))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2028, const char *__anonymous_object2029))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object2030))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object2031))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object2032, const char *__anonymous_object2033, unsigned long int __anonymous_object2034))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object2035, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret17=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object2036))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object2037))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object2038, _Bool __anonymous_object2039))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object2040))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2041, const char *__anonymous_object2042))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object2043))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object2044, _Bool __anonymous_object2045))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object2046))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object2047))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object2048))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object2049))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object2050))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2051, const char *__anonymous_object2052))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object2053))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2054, const char *__anonymous_object2055))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object2056))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object2057))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object2058, const char *__anonymous_object2059, unsigned long int __anonymous_object2060))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object2061, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "size_t")))) , _tmp_cp_ret17)), __v__Ul_1)))) , _tmp_cp_ret18)), ((void *(*)(void *__anonymous_object2062))(&_thunk5)))))) , _tmp_cp_ret19));
 }
 signed int __main__Fi___1(){
Index: src/tests/.expect/literals.x86.txt
===================================================================
--- src/tests/.expect/literals.x86.txt	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/.expect/literals.x86.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -122,4 +122,74 @@
 struct _Istream_cstrC __cstr__F15s_Istream_cstrC_Pci__1(char *__anonymous_object1340, signed int __size__i_1);
 void *___operator_bitor__A0_1_0_0___fail__PFi_Rd0___eof__PFi_Rd0___open__PF_Rd0PCc___close__PF_Rd0___read__PFRd0_Rd0PcUl___ungetc__PFRd0_Rd0c___fmt__PFi_Rd0PCc__FRd0_Rd015s_Istream_cstrC__1(__attribute__ ((unused)) signed int (*__fail__PFi_R7tistype__1)(void *__anonymous_object1341), __attribute__ ((unused)) signed int (*__eof__PFi_R7tistype__1)(void *__anonymous_object1342), __attribute__ ((unused)) void (*__open__PF_R7tistypePCc__1)(void *__is__R7tistype_1, const char *__name__PCc_1), __attribute__ ((unused)) void (*__close__PF_R7tistype__1)(void *__is__R7tistype_1), __attribute__ ((unused)) void *(*__read__PFR7tistype_R7tistypePcUl__1)(void *__anonymous_object1343, char *__anonymous_object1344, unsigned long int __anonymous_object1345), __attribute__ ((unused)) void *(*__ungetc__PFR7tistype_R7tistypec__1)(void *__anonymous_object1346, char __anonymous_object1347), __attribute__ ((unused)) signed int (*__fmt__PFi_R7tistypePCc__1)(void *__anonymous_object1348, const char *__fmt__PCc_1, ...), void *__anonymous_object1349, struct _Istream_cstrC __anonymous_object1350);
+struct Duration {
+    signed long long int __tv__q_1;
+};
+static inline void ___constructor__F_R9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1);
+static inline void ___constructor__F_R9sDuration9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1, struct Duration ___src__9sDuration_1);
+static inline void ___destructor__F_R9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1);
+static inline struct Duration ___operator_assign__F9sDuration_R9sDuration9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1, struct Duration ___src__9sDuration_1);
+static inline void ___constructor__F_R9sDurationq_autogen___1(struct Duration *___dst__R9sDuration_1, signed long long int __tv__q_1);
+static inline void ___constructor__F_R9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1){
+    ((void)((*___dst__R9sDuration_1).__tv__q_1) /* ?{} */);
+}
+static inline void ___constructor__F_R9sDuration9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1, struct Duration ___src__9sDuration_1){
+    ((void)((*___dst__R9sDuration_1).__tv__q_1=___src__9sDuration_1.__tv__q_1) /* ?{} */);
+}
+static inline void ___destructor__F_R9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1){
+    ((void)((*___dst__R9sDuration_1).__tv__q_1) /* ^?{} */);
+}
+static inline struct Duration ___operator_assign__F9sDuration_R9sDuration9sDuration_autogen___1(struct Duration *___dst__R9sDuration_1, struct Duration ___src__9sDuration_1){
+    struct Duration ___ret__9sDuration_1;
+    ((void)((*___dst__R9sDuration_1).__tv__q_1=___src__9sDuration_1.__tv__q_1));
+    ((void)___constructor__F_R9sDuration9sDuration_autogen___1((&___ret__9sDuration_1), (*___dst__R9sDuration_1)));
+    return ___ret__9sDuration_1;
+}
+static inline void ___constructor__F_R9sDurationq_autogen___1(struct Duration *___dst__R9sDuration_1, signed long long int __tv__q_1){
+    ((void)((*___dst__R9sDuration_1).__tv__q_1=__tv__q_1) /* ?{} */);
+}
+static inline void ___constructor__F_R9sDuration__1(struct Duration *__dur__R9sDuration_1){
+    ((void)((*__dur__R9sDuration_1).__tv__q_1) /* ?{} */);
+    ((void)((*__dur__R9sDuration_1).__tv__q_1=((signed long long int )0)));
+}
+static inline void ___constructor__F_R9sDurationZ__1(struct Duration *__dur__R9sDuration_1, long int __anonymous_object1351){
+    ((void)((*__dur__R9sDuration_1).__tv__q_1) /* ?{} */);
+    ((void)((*__dur__R9sDuration_1).__tv__q_1=((signed long long int )0)));
+}
+struct Time {
+    unsigned long long int __tv__Uq_1;
+};
+static inline void ___constructor__F_R5sTime_autogen___1(struct Time *___dst__R5sTime_1);
+static inline void ___constructor__F_R5sTime5sTime_autogen___1(struct Time *___dst__R5sTime_1, struct Time ___src__5sTime_1);
+static inline void ___destructor__F_R5sTime_autogen___1(struct Time *___dst__R5sTime_1);
+static inline struct Time ___operator_assign__F5sTime_R5sTime5sTime_autogen___1(struct Time *___dst__R5sTime_1, struct Time ___src__5sTime_1);
+static inline void ___constructor__F_R5sTimeUq_autogen___1(struct Time *___dst__R5sTime_1, unsigned long long int __tv__Uq_1);
+static inline void ___constructor__F_R5sTime_autogen___1(struct Time *___dst__R5sTime_1){
+    ((void)((*___dst__R5sTime_1).__tv__Uq_1) /* ?{} */);
+}
+static inline void ___constructor__F_R5sTime5sTime_autogen___1(struct Time *___dst__R5sTime_1, struct Time ___src__5sTime_1){
+    ((void)((*___dst__R5sTime_1).__tv__Uq_1=___src__5sTime_1.__tv__Uq_1) /* ?{} */);
+}
+static inline void ___destructor__F_R5sTime_autogen___1(struct Time *___dst__R5sTime_1){
+    ((void)((*___dst__R5sTime_1).__tv__Uq_1) /* ^?{} */);
+}
+static inline struct Time ___operator_assign__F5sTime_R5sTime5sTime_autogen___1(struct Time *___dst__R5sTime_1, struct Time ___src__5sTime_1){
+    struct Time ___ret__5sTime_1;
+    ((void)((*___dst__R5sTime_1).__tv__Uq_1=___src__5sTime_1.__tv__Uq_1));
+    ((void)___constructor__F_R5sTime5sTime_autogen___1((&___ret__5sTime_1), (*___dst__R5sTime_1)));
+    return ___ret__5sTime_1;
+}
+static inline void ___constructor__F_R5sTimeUq_autogen___1(struct Time *___dst__R5sTime_1, unsigned long long int __tv__Uq_1){
+    ((void)((*___dst__R5sTime_1).__tv__Uq_1=__tv__Uq_1) /* ?{} */);
+}
+static inline void ___constructor__F_R5sTime__1(struct Time *__time__R5sTime_1){
+    ((void)((*__time__R5sTime_1).__tv__Uq_1) /* ?{} */);
+    ((void)((*__time__R5sTime_1).__tv__Uq_1=((unsigned long long int )0)));
+}
+static inline void ___constructor__F_R5sTimeZ__1(struct Time *__time__R5sTime_1, long int __anonymous_object1352){
+    ((void)((*__time__R5sTime_1).__tv__Uq_1) /* ?{} */);
+    ((void)((*__time__R5sTime_1).__tv__Uq_1=((unsigned long long int )0)));
+}
+void *___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd09sDuration__1(__attribute__ ((unused)) _Bool (*__sepPrt__PFb_R7tostype__1)(void *__anonymous_object1353), __attribute__ ((unused)) void (*__sepReset__PF_R7tostype__1)(void *__anonymous_object1354), __attribute__ ((unused)) void (*__sepReset__PF_R7tostypeb__1)(void *__anonymous_object1355, _Bool __anonymous_object1356), __attribute__ ((unused)) const char *(*__sepGetCur__PFPCc_R7tostype__1)(void *__anonymous_object1357), __attribute__ ((unused)) void (*__sepSetCur__PF_R7tostypePCc__1)(void *__anonymous_object1358, const char *__anonymous_object1359), __attribute__ ((unused)) _Bool (*__getNL__PFb_R7tostype__1)(void *__anonymous_object1360), __attribute__ ((unused)) void (*__setNL__PF_R7tostypeb__1)(void *__anonymous_object1361, _Bool __anonymous_object1362), __attribute__ ((unused)) void (*__sepOn__PF_R7tostype__1)(void *__anonymous_object1363), __attribute__ ((unused)) void (*__sepOff__PF_R7tostype__1)(void *__anonymous_object1364), __attribute__ ((unused)) _Bool (*__sepDisable__PFb_R7tostype__1)(void *__anonymous_object1365), __attribute__ ((unused)) _Bool (*__sepEnable__PFb_R7tostype__1)(void *__anonymous_object1366), __attribute__ ((unused)) const char *(*__sepGet__PFPCc_R7tostype__1)(void *__anonymous_object1367), __attribute__ ((unused)) void (*__sepSet__PF_R7tostypePCc__1)(void *__anonymous_object1368, const char *__anonymous_object1369), __attribute__ ((unused)) const char *(*__sepGetTuple__PFPCc_R7tostype__1)(void *__anonymous_object1370), __attribute__ ((unused)) void (*__sepSetTuple__PF_R7tostypePCc__1)(void *__anonymous_object1371, const char *__anonymous_object1372), __attribute__ ((unused)) signed int (*__fail__PFi_R7tostype__1)(void *__anonymous_object1373), __attribute__ ((unused)) signed int (*__flush__PFi_R7tostype__1)(void *__anonymous_object1374), __attribute__ ((unused)) void (*__open__PF_R7tostypePCcPCc__1)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1), __attribute__ ((unused)) void (*__close__PF_R7tostype__1)(void *__os__R7tostype_1), __attribute__ ((unused)) void *(*__write__PFR7tostype_R7tostypePCcUl__1)(void *__anonymous_object1375, const char *__anonymous_object1376, unsigned long int __anonymous_object1377), __attribute__ ((unused)) signed int (*__fmt__PFi_R7tostypePCc__1)(void *__anonymous_object1378, const char *__fmt__PCc_1, ...), void *__os__R7tostype_1, struct Duration __dur__9sDuration_1);
+void *___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd05sTime__1(__attribute__ ((unused)) _Bool (*__sepPrt__PFb_R7tostype__1)(void *__anonymous_object1379), __attribute__ ((unused)) void (*__sepReset__PF_R7tostype__1)(void *__anonymous_object1380), __attribute__ ((unused)) void (*__sepReset__PF_R7tostypeb__1)(void *__anonymous_object1381, _Bool __anonymous_object1382), __attribute__ ((unused)) const char *(*__sepGetCur__PFPCc_R7tostype__1)(void *__anonymous_object1383), __attribute__ ((unused)) void (*__sepSetCur__PF_R7tostypePCc__1)(void *__anonymous_object1384, const char *__anonymous_object1385), __attribute__ ((unused)) _Bool (*__getNL__PFb_R7tostype__1)(void *__anonymous_object1386), __attribute__ ((unused)) void (*__setNL__PF_R7tostypeb__1)(void *__anonymous_object1387, _Bool __anonymous_object1388), __attribute__ ((unused)) void (*__sepOn__PF_R7tostype__1)(void *__anonymous_object1389), __attribute__ ((unused)) void (*__sepOff__PF_R7tostype__1)(void *__anonymous_object1390), __attribute__ ((unused)) _Bool (*__sepDisable__PFb_R7tostype__1)(void *__anonymous_object1391), __attribute__ ((unused)) _Bool (*__sepEnable__PFb_R7tostype__1)(void *__anonymous_object1392), __attribute__ ((unused)) const char *(*__sepGet__PFPCc_R7tostype__1)(void *__anonymous_object1393), __attribute__ ((unused)) void (*__sepSet__PF_R7tostypePCc__1)(void *__anonymous_object1394, const char *__anonymous_object1395), __attribute__ ((unused)) const char *(*__sepGetTuple__PFPCc_R7tostype__1)(void *__anonymous_object1396), __attribute__ ((unused)) void (*__sepSetTuple__PF_R7tostypePCc__1)(void *__anonymous_object1397, const char *__anonymous_object1398), __attribute__ ((unused)) signed int (*__fail__PFi_R7tostype__1)(void *__anonymous_object1399), __attribute__ ((unused)) signed int (*__flush__PFi_R7tostype__1)(void *__anonymous_object1400), __attribute__ ((unused)) void (*__open__PF_R7tostypePCcPCc__1)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1), __attribute__ ((unused)) void (*__close__PF_R7tostype__1)(void *__os__R7tostype_1), __attribute__ ((unused)) void *(*__write__PFR7tostype_R7tostypePCcUl__1)(void *__anonymous_object1401, const char *__anonymous_object1402, unsigned long int __anonymous_object1403), __attribute__ ((unused)) signed int (*__fmt__PFi_R7tostypePCc__1)(void *__anonymous_object1404, const char *__fmt__PCc_1, ...), void *__os__R7tostype_1, struct Time __time__5sTime_1);
 enum __anonymous0 {
     __sepSize__C13e__anonymous0_1 = 16,
@@ -401,26 +471,26 @@
 
 }
-_Bool __sepPrt__Fb_R9sofstream__1(struct ofstream *__anonymous_object1351);
-void __sepReset__F_R9sofstream__1(struct ofstream *__anonymous_object1352);
-void __sepReset__F_R9sofstreamb__1(struct ofstream *__anonymous_object1353, _Bool __anonymous_object1354);
-const char *__sepGetCur__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1355);
-void __sepSetCur__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1356, const char *__anonymous_object1357);
-_Bool __getNL__Fb_R9sofstream__1(struct ofstream *__anonymous_object1358);
-void __setNL__F_R9sofstreamb__1(struct ofstream *__anonymous_object1359, _Bool __anonymous_object1360);
-void __sepOn__F_R9sofstream__1(struct ofstream *__anonymous_object1361);
-void __sepOff__F_R9sofstream__1(struct ofstream *__anonymous_object1362);
-_Bool __sepDisable__Fb_R9sofstream__1(struct ofstream *__anonymous_object1363);
-_Bool __sepEnable__Fb_R9sofstream__1(struct ofstream *__anonymous_object1364);
-const char *__sepGet__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1365);
-void __sepSet__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1366, const char *__anonymous_object1367);
-const char *__sepGetTuple__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1368);
-void __sepSetTuple__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1369, const char *__anonymous_object1370);
-signed int __fail__Fi_R9sofstream__1(struct ofstream *__anonymous_object1371);
-signed int __flush__Fi_R9sofstream__1(struct ofstream *__anonymous_object1372);
-void __open__F_R9sofstreamPCcPCc__1(struct ofstream *__anonymous_object1373, const char *__name__PCc_1, const char *__mode__PCc_1);
-void __open__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1374, const char *__name__PCc_1);
-void __close__F_R9sofstream__1(struct ofstream *__anonymous_object1375);
-struct ofstream *__write__FR9sofstream_R9sofstreamPCcUl__1(struct ofstream *__anonymous_object1376, const char *__data__PCc_1, unsigned long int __size__Ul_1);
-signed int __fmt__Fi_R9sofstreamPCc__1(struct ofstream *__anonymous_object1377, const char *__fmt__PCc_1, ...);
+_Bool __sepPrt__Fb_R9sofstream__1(struct ofstream *__anonymous_object1405);
+void __sepReset__F_R9sofstream__1(struct ofstream *__anonymous_object1406);
+void __sepReset__F_R9sofstreamb__1(struct ofstream *__anonymous_object1407, _Bool __anonymous_object1408);
+const char *__sepGetCur__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1409);
+void __sepSetCur__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1410, const char *__anonymous_object1411);
+_Bool __getNL__Fb_R9sofstream__1(struct ofstream *__anonymous_object1412);
+void __setNL__F_R9sofstreamb__1(struct ofstream *__anonymous_object1413, _Bool __anonymous_object1414);
+void __sepOn__F_R9sofstream__1(struct ofstream *__anonymous_object1415);
+void __sepOff__F_R9sofstream__1(struct ofstream *__anonymous_object1416);
+_Bool __sepDisable__Fb_R9sofstream__1(struct ofstream *__anonymous_object1417);
+_Bool __sepEnable__Fb_R9sofstream__1(struct ofstream *__anonymous_object1418);
+const char *__sepGet__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1419);
+void __sepSet__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1420, const char *__anonymous_object1421);
+const char *__sepGetTuple__FPCc_R9sofstream__1(struct ofstream *__anonymous_object1422);
+void __sepSetTuple__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1423, const char *__anonymous_object1424);
+signed int __fail__Fi_R9sofstream__1(struct ofstream *__anonymous_object1425);
+signed int __flush__Fi_R9sofstream__1(struct ofstream *__anonymous_object1426);
+void __open__F_R9sofstreamPCcPCc__1(struct ofstream *__anonymous_object1427, const char *__name__PCc_1, const char *__mode__PCc_1);
+void __open__F_R9sofstreamPCc__1(struct ofstream *__anonymous_object1428, const char *__name__PCc_1);
+void __close__F_R9sofstream__1(struct ofstream *__anonymous_object1429);
+struct ofstream *__write__FR9sofstream_R9sofstreamPCcUl__1(struct ofstream *__anonymous_object1430, const char *__data__PCc_1, unsigned long int __size__Ul_1);
+signed int __fmt__Fi_R9sofstreamPCc__1(struct ofstream *__anonymous_object1431, const char *__fmt__PCc_1, ...);
 void ___constructor__F_R9sofstream__1(struct ofstream *__os__R9sofstream_1);
 void ___constructor__F_R9sofstreamPCcPCc__1(struct ofstream *__os__R9sofstream_1, const char *__name__PCc_1, const char *__mode__PCc_1);
@@ -461,5 +531,5 @@
 struct ifstream *__read__FR9sifstream_R9sifstreamPcUl__1(struct ifstream *__is__R9sifstream_1, char *__data__Pc_1, unsigned long int __size__Ul_1);
 struct ifstream *__ungetc__FR9sifstream_R9sifstreamc__1(struct ifstream *__is__R9sifstream_1, char __c__c_1);
-signed int __fmt__Fi_R9sifstreamPCc__1(struct ifstream *__anonymous_object1378, const char *__fmt__PCc_1, ...);
+signed int __fmt__Fi_R9sifstreamPCc__1(struct ifstream *__anonymous_object1432, const char *__fmt__PCc_1, ...);
 void ___constructor__F_R9sifstream__1(struct ifstream *__is__R9sifstream_1);
 void ___constructor__F_R9sifstreamPCcPCc__1(struct ifstream *__is__R9sifstream_1, const char *__name__PCc_1, const char *__mode__PCc_1);
@@ -471,7 +541,7 @@
     struct ofstream *_tmp_cp_ret4;
     __attribute__ ((unused)) struct ofstream *_thunk0(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1379))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1380))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1381, _Bool __anonymous_object1382))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1383))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1384, const char *__anonymous_object1385))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1386))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1387, _Bool __anonymous_object1388))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1389))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1390))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1391))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1392))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1393))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1394, const char *__anonymous_object1395))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1396))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1397, const char *__anonymous_object1398))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1399))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1400))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1401, const char *__anonymous_object1402, unsigned long int __anonymous_object1403))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1404, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret4=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1405))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1406))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1407, _Bool __anonymous_object1408))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1409))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1410, const char *__anonymous_object1411))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1412))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1413, _Bool __anonymous_object1414))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1415))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1416))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1417))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1418))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1419))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1420, const char *__anonymous_object1421))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1422))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1423, const char *__anonymous_object1424))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1425))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1426))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1427, const char *__anonymous_object1428, unsigned long int __anonymous_object1429))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1430, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret3=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0c__1(((_Bool (*)(void *__anonymous_object1431))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1432))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1433, _Bool __anonymous_object1434))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1435))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1436, const char *__anonymous_object1437))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1438))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1439, _Bool __anonymous_object1440))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1441))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1442))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1443))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1444))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1445))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1446, const char *__anonymous_object1447))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1448))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1449, const char *__anonymous_object1450))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1451))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1452))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1453, const char *__anonymous_object1454, unsigned long int __anonymous_object1455))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1456, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret2=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1457))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1458))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1459, _Bool __anonymous_object1460))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1461))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1462, const char *__anonymous_object1463))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1464))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1465, _Bool __anonymous_object1466))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1467))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1468))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1469))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1470))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1471))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1472, const char *__anonymous_object1473))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1474))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1475, const char *__anonymous_object1476))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1477))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1478))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1479, const char *__anonymous_object1480, unsigned long int __anonymous_object1481))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1482, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "char ")))) , _tmp_cp_ret2)), __v__c_1)))) , _tmp_cp_ret3)), ((void *(*)(void *__anonymous_object1483))(&_thunk0)))))) , _tmp_cp_ret4));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1433))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1434))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1435, _Bool __anonymous_object1436))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1437))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1438, const char *__anonymous_object1439))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1440))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1441, _Bool __anonymous_object1442))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1443))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1444))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1445))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1446))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1447))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1448, const char *__anonymous_object1449))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1450))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1451, const char *__anonymous_object1452))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1453))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1454))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1455, const char *__anonymous_object1456, unsigned long int __anonymous_object1457))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1458, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret4=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1459))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1460))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1461, _Bool __anonymous_object1462))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1463))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1464, const char *__anonymous_object1465))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1466))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1467, _Bool __anonymous_object1468))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1469))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1470))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1471))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1472))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1473))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1474, const char *__anonymous_object1475))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1476))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1477, const char *__anonymous_object1478))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1479))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1480))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1481, const char *__anonymous_object1482, unsigned long int __anonymous_object1483))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1484, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret3=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0c__1(((_Bool (*)(void *__anonymous_object1485))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1486))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1487, _Bool __anonymous_object1488))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1489))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1490, const char *__anonymous_object1491))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1492))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1493, _Bool __anonymous_object1494))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1495))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1496))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1497))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1498))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1499))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1500, const char *__anonymous_object1501))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1502))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1503, const char *__anonymous_object1504))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1505))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1506))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1507, const char *__anonymous_object1508, unsigned long int __anonymous_object1509))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1510, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret2=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1511))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1512))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1513, _Bool __anonymous_object1514))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1515))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1516, const char *__anonymous_object1517))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1518))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1519, _Bool __anonymous_object1520))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1521))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1522))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1523))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1524))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1525))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1526, const char *__anonymous_object1527))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1528))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1529, const char *__anonymous_object1530))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1531))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1532))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1533, const char *__anonymous_object1534, unsigned long int __anonymous_object1535))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1536, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "char ")))) , _tmp_cp_ret2)), __v__c_1)))) , _tmp_cp_ret3)), ((void *(*)(void *__anonymous_object1537))(&_thunk0)))))) , _tmp_cp_ret4));
 }
 void __f__F_Sc__1(signed char __v__Sc_1){
@@ -480,7 +550,7 @@
     struct ofstream *_tmp_cp_ret7;
     __attribute__ ((unused)) struct ofstream *_thunk1(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1484))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1485))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1486, _Bool __anonymous_object1487))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1488))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1489, const char *__anonymous_object1490))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1491))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1492, _Bool __anonymous_object1493))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1494))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1495))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1496))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1497))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1498))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1499, const char *__anonymous_object1500))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1501))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1502, const char *__anonymous_object1503))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1504))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1505))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1506, const char *__anonymous_object1507, unsigned long int __anonymous_object1508))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1509, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret7=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1510))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1511))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1512, _Bool __anonymous_object1513))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1514))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1515, const char *__anonymous_object1516))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1517))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1518, _Bool __anonymous_object1519))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1520))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1521))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1522))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1523))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1524))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1525, const char *__anonymous_object1526))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1527))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1528, const char *__anonymous_object1529))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1530))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1531))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1532, const char *__anonymous_object1533, unsigned long int __anonymous_object1534))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1535, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret6=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Sc__1(((_Bool (*)(void *__anonymous_object1536))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1537))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1538, _Bool __anonymous_object1539))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1540))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1541, const char *__anonymous_object1542))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1543))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1544, _Bool __anonymous_object1545))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1546))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1547))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1548))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1549))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1550))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1551, const char *__anonymous_object1552))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1553))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1554, const char *__anonymous_object1555))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1556))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1557))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1558, const char *__anonymous_object1559, unsigned long int __anonymous_object1560))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1561, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret5=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1562))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1563))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1564, _Bool __anonymous_object1565))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1566))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1567, const char *__anonymous_object1568))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1569))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1570, _Bool __anonymous_object1571))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1572))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1573))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1574))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1575))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1576))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1577, const char *__anonymous_object1578))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1579))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1580, const char *__anonymous_object1581))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1582))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1583))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1584, const char *__anonymous_object1585, unsigned long int __anonymous_object1586))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1587, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed char ")))) , _tmp_cp_ret5)), __v__Sc_1)))) , _tmp_cp_ret6)), ((void *(*)(void *__anonymous_object1588))(&_thunk1)))))) , _tmp_cp_ret7));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1538))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1539))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1540, _Bool __anonymous_object1541))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1542))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1543, const char *__anonymous_object1544))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1545))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1546, _Bool __anonymous_object1547))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1548))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1549))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1550))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1551))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1552))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1553, const char *__anonymous_object1554))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1555))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1556, const char *__anonymous_object1557))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1558))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1559))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1560, const char *__anonymous_object1561, unsigned long int __anonymous_object1562))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1563, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret7=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1564))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1565))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1566, _Bool __anonymous_object1567))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1568))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1569, const char *__anonymous_object1570))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1571))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1572, _Bool __anonymous_object1573))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1574))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1575))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1576))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1577))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1578))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1579, const char *__anonymous_object1580))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1581))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1582, const char *__anonymous_object1583))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1584))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1585))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1586, const char *__anonymous_object1587, unsigned long int __anonymous_object1588))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1589, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret6=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Sc__1(((_Bool (*)(void *__anonymous_object1590))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1591))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1592, _Bool __anonymous_object1593))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1594))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1595, const char *__anonymous_object1596))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1597))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1598, _Bool __anonymous_object1599))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1600))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1601))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1602))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1603))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1604))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1605, const char *__anonymous_object1606))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1607))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1608, const char *__anonymous_object1609))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1610))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1611))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1612, const char *__anonymous_object1613, unsigned long int __anonymous_object1614))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1615, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret5=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1616))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1617))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1618, _Bool __anonymous_object1619))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1620))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1621, const char *__anonymous_object1622))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1623))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1624, _Bool __anonymous_object1625))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1626))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1627))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1628))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1629))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1630))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1631, const char *__anonymous_object1632))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1633))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1634, const char *__anonymous_object1635))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1636))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1637))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1638, const char *__anonymous_object1639, unsigned long int __anonymous_object1640))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1641, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed char ")))) , _tmp_cp_ret5)), __v__Sc_1)))) , _tmp_cp_ret6)), ((void *(*)(void *__anonymous_object1642))(&_thunk1)))))) , _tmp_cp_ret7));
 }
 void __f__F_Uc__1(unsigned char __v__Uc_1){
@@ -489,7 +559,7 @@
     struct ofstream *_tmp_cp_ret10;
     __attribute__ ((unused)) struct ofstream *_thunk2(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1589))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1590))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1591, _Bool __anonymous_object1592))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1593))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1594, const char *__anonymous_object1595))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1596))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1597, _Bool __anonymous_object1598))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1599))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1600))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1601))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1602))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1603))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1604, const char *__anonymous_object1605))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1606))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1607, const char *__anonymous_object1608))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1609))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1610))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1611, const char *__anonymous_object1612, unsigned long int __anonymous_object1613))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1614, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret10=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1615))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1616))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1617, _Bool __anonymous_object1618))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1619))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1620, const char *__anonymous_object1621))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1622))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1623, _Bool __anonymous_object1624))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1625))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1626))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1627))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1628))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1629))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1630, const char *__anonymous_object1631))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1632))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1633, const char *__anonymous_object1634))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1635))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1636))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1637, const char *__anonymous_object1638, unsigned long int __anonymous_object1639))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1640, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret9=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Uc__1(((_Bool (*)(void *__anonymous_object1641))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1642))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1643, _Bool __anonymous_object1644))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1645))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1646, const char *__anonymous_object1647))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1648))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1649, _Bool __anonymous_object1650))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1651))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1652))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1653))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1654))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1655))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1656, const char *__anonymous_object1657))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1658))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1659, const char *__anonymous_object1660))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1661))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1662))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1663, const char *__anonymous_object1664, unsigned long int __anonymous_object1665))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1666, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret8=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1667))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1668))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1669, _Bool __anonymous_object1670))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1671))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1672, const char *__anonymous_object1673))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1674))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1675, _Bool __anonymous_object1676))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1677))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1678))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1679))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1680))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1681))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1682, const char *__anonymous_object1683))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1684))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1685, const char *__anonymous_object1686))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1687))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1688))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1689, const char *__anonymous_object1690, unsigned long int __anonymous_object1691))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1692, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned char ")))) , _tmp_cp_ret8)), __v__Uc_1)))) , _tmp_cp_ret9)), ((void *(*)(void *__anonymous_object1693))(&_thunk2)))))) , _tmp_cp_ret10));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1643))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1644))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1645, _Bool __anonymous_object1646))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1647))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1648, const char *__anonymous_object1649))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1650))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1651, _Bool __anonymous_object1652))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1653))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1654))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1655))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1656))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1657))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1658, const char *__anonymous_object1659))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1660))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1661, const char *__anonymous_object1662))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1663))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1664))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1665, const char *__anonymous_object1666, unsigned long int __anonymous_object1667))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1668, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret10=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1669))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1670))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1671, _Bool __anonymous_object1672))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1673))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1674, const char *__anonymous_object1675))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1676))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1677, _Bool __anonymous_object1678))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1679))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1680))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1681))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1682))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1683))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1684, const char *__anonymous_object1685))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1686))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1687, const char *__anonymous_object1688))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1689))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1690))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1691, const char *__anonymous_object1692, unsigned long int __anonymous_object1693))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1694, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret9=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Uc__1(((_Bool (*)(void *__anonymous_object1695))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1696))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1697, _Bool __anonymous_object1698))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1699))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1700, const char *__anonymous_object1701))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1702))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1703, _Bool __anonymous_object1704))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1705))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1706))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1707))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1708))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1709))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1710, const char *__anonymous_object1711))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1712))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1713, const char *__anonymous_object1714))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1715))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1716))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1717, const char *__anonymous_object1718, unsigned long int __anonymous_object1719))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1720, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret8=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1721))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1722))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1723, _Bool __anonymous_object1724))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1725))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1726, const char *__anonymous_object1727))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1728))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1729, _Bool __anonymous_object1730))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1731))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1732))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1733))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1734))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1735))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1736, const char *__anonymous_object1737))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1738))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1739, const char *__anonymous_object1740))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1741))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1742))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1743, const char *__anonymous_object1744, unsigned long int __anonymous_object1745))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1746, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned char ")))) , _tmp_cp_ret8)), __v__Uc_1)))) , _tmp_cp_ret9)), ((void *(*)(void *__anonymous_object1747))(&_thunk2)))))) , _tmp_cp_ret10));
 }
 void __f__F_s__1(signed short int __v__s_1){
@@ -498,7 +568,7 @@
     struct ofstream *_tmp_cp_ret13;
     __attribute__ ((unused)) struct ofstream *_thunk3(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1694))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1695))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1696, _Bool __anonymous_object1697))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1698))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1699, const char *__anonymous_object1700))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1701))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1702, _Bool __anonymous_object1703))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1704))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1705))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1706))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1707))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1708))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1709, const char *__anonymous_object1710))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1711))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1712, const char *__anonymous_object1713))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1714))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1715))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1716, const char *__anonymous_object1717, unsigned long int __anonymous_object1718))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1719, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret13=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1720))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1721))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1722, _Bool __anonymous_object1723))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1724))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1725, const char *__anonymous_object1726))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1727))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1728, _Bool __anonymous_object1729))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1730))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1731))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1732))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1733))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1734))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1735, const char *__anonymous_object1736))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1737))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1738, const char *__anonymous_object1739))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1740))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1741))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1742, const char *__anonymous_object1743, unsigned long int __anonymous_object1744))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1745, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret12=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0s__1(((_Bool (*)(void *__anonymous_object1746))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1747))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1748, _Bool __anonymous_object1749))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1750))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1751, const char *__anonymous_object1752))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1753))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1754, _Bool __anonymous_object1755))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1756))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1757))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1758))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1759))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1760))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1761, const char *__anonymous_object1762))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1763))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1764, const char *__anonymous_object1765))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1766))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1767))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1768, const char *__anonymous_object1769, unsigned long int __anonymous_object1770))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1771, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret11=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1772))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1773))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1774, _Bool __anonymous_object1775))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1776))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1777, const char *__anonymous_object1778))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1779))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1780, _Bool __anonymous_object1781))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1782))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1783))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1784))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1785))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1786))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1787, const char *__anonymous_object1788))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1789))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1790, const char *__anonymous_object1791))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1792))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1793))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1794, const char *__anonymous_object1795, unsigned long int __anonymous_object1796))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1797, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed short int")))) , _tmp_cp_ret11)), __v__s_1)))) , _tmp_cp_ret12)), ((void *(*)(void *__anonymous_object1798))(&_thunk3)))))) , _tmp_cp_ret13));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1748))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1749))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1750, _Bool __anonymous_object1751))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1752))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1753, const char *__anonymous_object1754))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1755))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1756, _Bool __anonymous_object1757))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1758))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1759))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1760))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1761))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1762))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1763, const char *__anonymous_object1764))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1765))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1766, const char *__anonymous_object1767))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1768))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1769))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1770, const char *__anonymous_object1771, unsigned long int __anonymous_object1772))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1773, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret13=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1774))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1775))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1776, _Bool __anonymous_object1777))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1778))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1779, const char *__anonymous_object1780))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1781))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1782, _Bool __anonymous_object1783))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1784))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1785))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1786))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1787))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1788))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1789, const char *__anonymous_object1790))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1791))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1792, const char *__anonymous_object1793))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1794))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1795))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1796, const char *__anonymous_object1797, unsigned long int __anonymous_object1798))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1799, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret12=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0s__1(((_Bool (*)(void *__anonymous_object1800))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1801))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1802, _Bool __anonymous_object1803))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1804))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1805, const char *__anonymous_object1806))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1807))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1808, _Bool __anonymous_object1809))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1810))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1811))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1812))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1813))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1814))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1815, const char *__anonymous_object1816))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1817))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1818, const char *__anonymous_object1819))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1820))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1821))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1822, const char *__anonymous_object1823, unsigned long int __anonymous_object1824))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1825, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret11=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1826))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1827))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1828, _Bool __anonymous_object1829))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1830))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1831, const char *__anonymous_object1832))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1833))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1834, _Bool __anonymous_object1835))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1836))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1837))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1838))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1839))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1840))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1841, const char *__anonymous_object1842))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1843))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1844, const char *__anonymous_object1845))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1846))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1847))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1848, const char *__anonymous_object1849, unsigned long int __anonymous_object1850))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1851, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed short int")))) , _tmp_cp_ret11)), __v__s_1)))) , _tmp_cp_ret12)), ((void *(*)(void *__anonymous_object1852))(&_thunk3)))))) , _tmp_cp_ret13));
 }
 void __f__F_Us__1(unsigned short int __v__Us_1){
@@ -507,7 +577,7 @@
     struct ofstream *_tmp_cp_ret16;
     __attribute__ ((unused)) struct ofstream *_thunk4(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1799))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1800))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1801, _Bool __anonymous_object1802))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1803))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1804, const char *__anonymous_object1805))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1806))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1807, _Bool __anonymous_object1808))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1809))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1810))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1811))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1812))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1813))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1814, const char *__anonymous_object1815))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1816))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1817, const char *__anonymous_object1818))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1819))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1820))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1821, const char *__anonymous_object1822, unsigned long int __anonymous_object1823))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1824, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret16=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1825))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1826))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1827, _Bool __anonymous_object1828))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1829))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1830, const char *__anonymous_object1831))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1832))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1833, _Bool __anonymous_object1834))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1835))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1836))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1837))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1838))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1839))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1840, const char *__anonymous_object1841))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1842))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1843, const char *__anonymous_object1844))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1845))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1846))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1847, const char *__anonymous_object1848, unsigned long int __anonymous_object1849))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1850, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret15=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Us__1(((_Bool (*)(void *__anonymous_object1851))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1852))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1853, _Bool __anonymous_object1854))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1855))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1856, const char *__anonymous_object1857))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1858))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1859, _Bool __anonymous_object1860))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1861))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1862))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1863))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1864))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1865))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1866, const char *__anonymous_object1867))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1868))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1869, const char *__anonymous_object1870))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1871))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1872))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1873, const char *__anonymous_object1874, unsigned long int __anonymous_object1875))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1876, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret14=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1877))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1878))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1879, _Bool __anonymous_object1880))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1881))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1882, const char *__anonymous_object1883))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1884))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1885, _Bool __anonymous_object1886))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1887))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1888))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1889))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1890))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1891))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1892, const char *__anonymous_object1893))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1894))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1895, const char *__anonymous_object1896))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1897))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1898))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1899, const char *__anonymous_object1900, unsigned long int __anonymous_object1901))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1902, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned short int")))) , _tmp_cp_ret14)), __v__Us_1)))) , _tmp_cp_ret15)), ((void *(*)(void *__anonymous_object1903))(&_thunk4)))))) , _tmp_cp_ret16));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1853))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1854))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1855, _Bool __anonymous_object1856))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1857))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1858, const char *__anonymous_object1859))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1860))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1861, _Bool __anonymous_object1862))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1863))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1864))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1865))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1866))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1867))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1868, const char *__anonymous_object1869))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1870))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1871, const char *__anonymous_object1872))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1873))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1874))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1875, const char *__anonymous_object1876, unsigned long int __anonymous_object1877))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1878, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret16=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1879))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1880))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1881, _Bool __anonymous_object1882))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1883))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1884, const char *__anonymous_object1885))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1886))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1887, _Bool __anonymous_object1888))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1889))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1890))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1891))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1892))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1893))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1894, const char *__anonymous_object1895))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1896))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1897, const char *__anonymous_object1898))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1899))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1900))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1901, const char *__anonymous_object1902, unsigned long int __anonymous_object1903))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1904, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret15=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Us__1(((_Bool (*)(void *__anonymous_object1905))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1906))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1907, _Bool __anonymous_object1908))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1909))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1910, const char *__anonymous_object1911))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1912))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1913, _Bool __anonymous_object1914))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1915))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1916))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1917))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1918))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1919))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1920, const char *__anonymous_object1921))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1922))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1923, const char *__anonymous_object1924))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1925))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1926))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1927, const char *__anonymous_object1928, unsigned long int __anonymous_object1929))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1930, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret14=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1931))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1932))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1933, _Bool __anonymous_object1934))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1935))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1936, const char *__anonymous_object1937))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1938))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1939, _Bool __anonymous_object1940))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1941))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1942))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1943))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1944))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1945))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1946, const char *__anonymous_object1947))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1948))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1949, const char *__anonymous_object1950))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1951))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1952))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1953, const char *__anonymous_object1954, unsigned long int __anonymous_object1955))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1956, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned short int")))) , _tmp_cp_ret14)), __v__Us_1)))) , _tmp_cp_ret15)), ((void *(*)(void *__anonymous_object1957))(&_thunk4)))))) , _tmp_cp_ret16));
 }
 void __f__F_Ui__1(unsigned int __v__Ui_1){
@@ -516,7 +586,7 @@
     struct ofstream *_tmp_cp_ret19;
     __attribute__ ((unused)) struct ofstream *_thunk5(struct ofstream *_p0){
-        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1904))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1905))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1906, _Bool __anonymous_object1907))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1908))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1909, const char *__anonymous_object1910))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1911))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1912, _Bool __anonymous_object1913))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1914))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1915))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1916))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1917))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1918))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1919, const char *__anonymous_object1920))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1921))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1922, const char *__anonymous_object1923))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1924))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1925))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1926, const char *__anonymous_object1927, unsigned long int __anonymous_object1928))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1929, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
-    }
-    ((void)(((void)(_tmp_cp_ret19=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1930))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1931))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1932, _Bool __anonymous_object1933))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1934))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1935, const char *__anonymous_object1936))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1937))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1938, _Bool __anonymous_object1939))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1940))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1941))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1942))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1943))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1944))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1945, const char *__anonymous_object1946))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1947))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1948, const char *__anonymous_object1949))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1950))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1951))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1952, const char *__anonymous_object1953, unsigned long int __anonymous_object1954))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1955, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret18=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Ui__1(((_Bool (*)(void *__anonymous_object1956))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1957))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1958, _Bool __anonymous_object1959))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1960))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1961, const char *__anonymous_object1962))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1963))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1964, _Bool __anonymous_object1965))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1966))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1967))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1968))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1969))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1970))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1971, const char *__anonymous_object1972))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1973))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1974, const char *__anonymous_object1975))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1976))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1977))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1978, const char *__anonymous_object1979, unsigned long int __anonymous_object1980))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1981, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret17=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1982))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1983))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1984, _Bool __anonymous_object1985))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1986))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1987, const char *__anonymous_object1988))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1989))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1990, _Bool __anonymous_object1991))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1992))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1993))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1994))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1995))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1996))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1997, const char *__anonymous_object1998))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1999))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2000, const char *__anonymous_object2001))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object2002))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object2003))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object2004, const char *__anonymous_object2005, unsigned long int __anonymous_object2006))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object2007, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "size_t")))) , _tmp_cp_ret17)), __v__Ui_1)))) , _tmp_cp_ret18)), ((void *(*)(void *__anonymous_object2008))(&_thunk5)))))) , _tmp_cp_ret19));
+        return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1958))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1959))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1960, _Bool __anonymous_object1961))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1962))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1963, const char *__anonymous_object1964))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1965))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1966, _Bool __anonymous_object1967))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1968))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1969))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1970))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1971))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1972))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1973, const char *__anonymous_object1974))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1975))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1976, const char *__anonymous_object1977))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1978))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1979))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1980, const char *__anonymous_object1981, unsigned long int __anonymous_object1982))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1983, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
+    }
+    ((void)(((void)(_tmp_cp_ret19=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1984))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1985))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1986, _Bool __anonymous_object1987))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1988))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1989, const char *__anonymous_object1990))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1991))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1992, _Bool __anonymous_object1993))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1994))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1995))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1996))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1997))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1998))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1999, const char *__anonymous_object2000))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object2001))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2002, const char *__anonymous_object2003))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object2004))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object2005))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object2006, const char *__anonymous_object2007, unsigned long int __anonymous_object2008))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object2009, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret18=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Ui__1(((_Bool (*)(void *__anonymous_object2010))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object2011))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object2012, _Bool __anonymous_object2013))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object2014))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2015, const char *__anonymous_object2016))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object2017))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object2018, _Bool __anonymous_object2019))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object2020))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object2021))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object2022))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object2023))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object2024))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2025, const char *__anonymous_object2026))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object2027))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2028, const char *__anonymous_object2029))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object2030))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object2031))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object2032, const char *__anonymous_object2033, unsigned long int __anonymous_object2034))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object2035, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret17=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object2036))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object2037))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object2038, _Bool __anonymous_object2039))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object2040))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2041, const char *__anonymous_object2042))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object2043))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object2044, _Bool __anonymous_object2045))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object2046))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object2047))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object2048))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object2049))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object2050))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2051, const char *__anonymous_object2052))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object2053))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2054, const char *__anonymous_object2055))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object2056))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object2057))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object2058, const char *__anonymous_object2059, unsigned long int __anonymous_object2060))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object2061, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "size_t")))) , _tmp_cp_ret17)), __v__Ui_1)))) , _tmp_cp_ret18)), ((void *(*)(void *__anonymous_object2062))(&_thunk5)))))) , _tmp_cp_ret19));
 }
 signed int __main__Fi___1(){
Index: src/tests/.expect/references.txt
===================================================================
--- src/tests/.expect/references.txt	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/.expect/references.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -4,4 +4,8 @@
 13 1 12
 14 14
+x = 6 ; x2 = 789
+x = 6 ; x2 = 999
+x = 12345 ; x2 = 999
+x = 22222 ; x2 = 999
 Default constructing a Y
 Copy constructing a Y
@@ -28,4 +32,8 @@
 Destructing a Y
 Destructing a Y
+3 3
+3
+3
+3 9 { 1, 7 }, [1, 2, 3]
 Destructing a Y
 Destructing a Y
Index: src/tests/.expect/time.x64.txt
===================================================================
--- src/tests/.expect/time.x64.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/tests/.expect/time.x64.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,19 @@
+10800 2 3.07 12 1.00001
+0 2 3.07
+7 7 7
+14
+false false false
+3.5
+
+Fri Jan  2 00:00:00.01 1970
+Fri Jan  2 00:00:14.01 1970 104414010000000
+Fri Jan  2 00:00:14.01 1970 104414010000000
+0 Fri Jan  2 00:00:15.01001 1970 104414010000000
+yy/mm/dd 70/01/02 mm/dd/yy 01/02/70 mm/dd/yy 01/02/70 dd/yy/mm 02/01/70
+Wed Jul  4 00:00:01 2001 994219201000000000
+Wed Jul  4 00:00:01 2001 994219201000000000
+
+1 hour + 2*10 min + 70/10 sec = 4807 seconds
+Dividing that by 2 minutes gives 40
+Dividing that by 2 gives 2403.5 seconds
+4807 seconds is 1 hours, 20 minutes, 7 seconds
Index: src/tests/.expect/time.x86.txt
===================================================================
--- src/tests/.expect/time.x86.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/tests/.expect/time.x86.txt	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,19 @@
+10800 2 3.069999999 12 1.00001
+0 2 3.069999999
+7 7 7
+14
+false false false
+3.5
+
+Fri Jan  2 00:00:00.01 1970
+Fri Jan  2 00:00:14.01 1970 104414010000000
+Fri Jan  2 00:00:14.01 1970 104414010000000
+0 Fri Jan  2 00:00:15.01001 1970 104414010000000
+yy/mm/dd 70/01/02 mm/dd/yy 01/02/70 mm/dd/yy 01/02/70 dd/yy/mm 02/01/70
+Wed Jul  4 00:00:01 2001 994219201000000000
+Wed Jul  4 00:00:01 2001 994219201000000000
+
+1 hour + 2*10 min + 70/10 sec = 4807 seconds
+Dividing that by 2 minutes gives 40
+Dividing that by 2 gives 2403.5 seconds
+4807 seconds is 1 hours, 20 minutes, 7 seconds
Index: src/tests/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/Makefile.am	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -110,4 +110,7 @@
 	${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
 
+fallthrough-ERROR: fallthrough.c @CFA_BINDIR@/@CFA_NAME@
+	${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
+
 # Constructor/destructor tests
 raii/dtor-early-exit-ERR1: raii/dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
Index: src/tests/Makefile.in
===================================================================
--- src/tests/Makefile.in	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/Makefile.in	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -787,4 +787,7 @@
 	${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
 
+fallthrough-ERROR: fallthrough.c @CFA_BINDIR@/@CFA_NAME@
+	${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
+
 # Constructor/destructor tests
 raii/dtor-early-exit-ERR1: raii/dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
Index: src/tests/concurrent/examples/datingService.c
===================================================================
--- src/tests/concurrent/examples/datingService.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/concurrent/examples/datingService.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -8,6 +8,6 @@
 // Created On       : Mon Oct 30 12:56:20 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jan  2 12:19:01 2018
-// Update Count     : 22
+// Last Modified On : Wed Mar 14 22:48:40 2018
+// Update Count     : 23
 //
 
@@ -88,6 +88,6 @@
 int main() {
 	DatingService TheExchange;
-	Girl *girls[NoOfPairs];
-	Boy  *boys[NoOfPairs];
+	Girl * girls[NoOfPairs];
+	Boy  * boys[NoOfPairs];
 
 	srandom( /*getpid()*/ 103 );
Index: src/tests/concurrent/preempt.c
===================================================================
--- src/tests/concurrent/preempt.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/concurrent/preempt.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -1,10 +1,11 @@
 #include <kernel>
 #include <thread>
+#include <time>
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/concurrent/signal/barge.c
===================================================================
--- src/tests/concurrent/signal/barge.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/concurrent/signal/barge.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -16,8 +16,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return 0;
 }
Index: src/tests/concurrent/signal/block.c
===================================================================
--- src/tests/concurrent/signal/block.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/concurrent/signal/block.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -12,6 +12,5 @@
 #include <stdlib>
 #include <thread>
-
-#include <time.h>
+#include <time>
 
 #ifdef LONG_TEST
@@ -22,8 +21,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
@@ -51,5 +50,5 @@
 //------------------------------------------------------------------------------
 void wait_op( global_data_t & mutex a, global_data_t & mutex b, unsigned i ) {
-	wait( cond, (uintptr_t)this_thread );
+    wait( cond, (uintptr_t)active_thread() );
 
 	yield( random( 10 ) );
@@ -60,5 +59,5 @@
 	}
 
-	a.last_thread = b.last_thread = this_thread;
+	a.last_thread = b.last_thread = active_thread();
 
 	yield( random( 10 ) );
@@ -76,5 +75,5 @@
 	yield( random( 10 ) );
 
-	[a.last_thread, b.last_thread, a.last_signaller, b.last_signaller] = this_thread;
+	[a.last_thread, b.last_thread, a.last_signaller, b.last_signaller] = active_thread();
 
 	if( !is_empty( cond ) ) {
@@ -106,5 +105,5 @@
 //------------------------------------------------------------------------------
 void barge_op( global_data_t & mutex a ) {
-	a.last_thread = this_thread;
+	a.last_thread = active_thread();
 }
 
Index: src/tests/concurrent/signal/disjoint.c
===================================================================
--- src/tests/concurrent/signal/disjoint.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/concurrent/signal/disjoint.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -3,6 +3,5 @@
 #include <monitor>
 #include <thread>
-
-#include <time.h>
+#include <time>
 
 #ifdef LONG_TEST
@@ -13,8 +12,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/concurrent/signal/wait.c
===================================================================
--- src/tests/concurrent/signal/wait.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/concurrent/signal/wait.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,5 @@
 #include <stdlib>
 #include <thread>
-
-#include <time.h>
+#include <time>
 
 #ifdef LONG_TEST
@@ -20,8 +19,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/concurrent/waitfor/simple.c
===================================================================
--- src/tests/concurrent/waitfor/simple.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/concurrent/waitfor/simple.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,8 +10,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/coroutine/fibonacci.c
===================================================================
--- src/tests/coroutine/fibonacci.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/coroutine/fibonacci.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Thu Jun  8 07:29:37 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Dec  5 22:27:54 2017
-// Update Count     : 14
+// Last Modified On : Thu Mar 22 22:45:44 2018
+// Update Count     : 15
 //
 
@@ -21,13 +21,11 @@
 void ?{}( Fibonacci & fib ) with( fib ) { fn = 0; }
 
+// main automatically called on first resume
 void main( Fibonacci & fib ) with( fib ) {
 	int fn1, fn2;										// retained between resumes
-
-	fn = 0; fn1 = fn;									// 1st case
+	fn = 0;  fn1 = fn;									// 1st case
 	suspend();											// restart last resume
-
-	fn = 1; fn2 = fn1;  fn1 = fn;						// 2nd case
+	fn = 1;  fn2 = fn1;  fn1 = fn;						// 2nd case
 	suspend();											// restart last resume
-
 	for ( ;; ) {
 		fn = fn1 + fn2; fn2 = fn1;  fn1 = fn;			// general case
Index: src/tests/fallthrough.c
===================================================================
--- src/tests/fallthrough.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/tests/fallthrough.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,124 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fallthrough.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Wed Mar 14 10:06:25 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Mar 14 22:45:13 2018
+// Update Count     : 13
+//
+
+void test(int choice) {
+	choose ( choice ) {
+		case 1:
+			printf("case 1\n");
+			fallthru;
+		case 2:
+			printf("case 2\n");
+			fallthru;
+			printf("did not fallthru\n");
+			if ( 7 ) fallthru common2;
+			fallthru common1;
+		case 3:
+			printf("case 3\n");
+			fallthru default;
+			fallthru common1;
+		common1:
+			printf("common1\n");
+		// break
+		case 4:
+			printf("case 4\n");
+			fallthru common2;
+		case 5:
+			printf("case 5\n");
+			fallthru common2;
+			fallthru default;
+		case 6:
+			printf("case 6\n");
+			fallthru common2;
+		common2:
+			printf("common2\n");
+		// break
+		default:
+			printf("default\n");
+			fallthru;
+	}
+
+	printf("\n");
+
+	switch ( choice ) {
+	  case 1:
+		printf("case 1\n");
+		switch ( choice ) {
+		  case 1:
+			printf("case 1\n");
+			for ( int i = 0; i < 4; i += 1 ) {
+				printf("%d\n", i);
+				if ( i == 2 ) fallthru common;
+			} // for
+		} // switch
+		break;
+	  case 5:
+		printf("case 5\n");
+		if ( choice == 5 ) {
+			if ( choice != 5 ) {
+				printf("error\n");
+			} else {
+				printf("check\n");
+				fallthru common;
+			} // if
+		} // if
+	  common:
+		printf( "common\n" );
+		fallthru;
+		break;
+	  default:
+		printf( "default\n" );
+		fallthru;
+	} // switch
+
+#if ERR1
+	// ERROR: fallthrough must be enclosed in switch or choose
+	fallthru;
+	// ERROR: fallthrough must be enclosed in switch or choose
+	fallthru common4;
+	// ERROR: fallthrough must be enclosed in switch or choose
+	fallthru default;
+	choose ( 3 ) {
+		case 2:
+			for ( ;; ) {
+				choose ( 2 ) {
+					case 1:
+						// ERROR: default is later, but in a different switch
+						fallthru default;
+						// ERROR: common3 is later, but not at the same level as a case clause
+						fallthru common3;
+				}
+				common3: ;
+			}
+		default:
+		case 1:
+		common4:
+			// ERROR: attempt to jump up with fallthrough
+			if ( 7 ) fallthru common4;
+			// ERROR: attempt to jump up with fallthrough
+			fallthru default;
+	}
+#endif
+}
+
+int main() {
+	test(1);
+	printf("\n");
+	test(5);
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fallthrough.c" //
+// End: //
Index: src/tests/minmax.c
===================================================================
--- src/tests/minmax.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/minmax.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -7,9 +7,9 @@
 // minmax.c -- 
 //
-// Author           : Richard C. Bilson
+// Author           : Peter A. Buhr
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Feb 29 23:45:16 2016
-// Update Count     : 49
+// Last Modified On : Tue Apr 10 17:29:09 2018
+// Update Count     : 50
 //
 
Index: src/tests/operators.c
===================================================================
--- src/tests/operators.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/operators.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -27,6 +27,4 @@
 	a(b);
 	a + b;
-	struct accumulator ?+?;	// why not, eh?
-	a + b;
 }
 
Index: src/tests/preempt_longrun/create.c
===================================================================
--- src/tests/preempt_longrun/create.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/preempt_longrun/create.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -5,8 +5,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/enter.c
===================================================================
--- src/tests/preempt_longrun/enter.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/preempt_longrun/enter.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -6,8 +6,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/enter3.c
===================================================================
--- src/tests/preempt_longrun/enter3.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/preempt_longrun/enter3.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -6,8 +6,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/processor.c
===================================================================
--- src/tests/preempt_longrun/processor.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/preempt_longrun/processor.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -5,8 +5,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/stack.c
===================================================================
--- src/tests/preempt_longrun/stack.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/preempt_longrun/stack.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -5,8 +5,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/yield.c
===================================================================
--- src/tests/preempt_longrun/yield.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/preempt_longrun/yield.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -9,8 +9,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/references.c
===================================================================
--- src/tests/references.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/references.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -46,5 +46,5 @@
 
 int main() {
-	int x = 123456, *p1 = &x, **p2 = &p1, ***p3 = &p2,
+	int x = 123456, x2 = 789, *p1 = &x, **p2 = &p1, ***p3 = &p2,
 		&r1 = x,    &&r2 = r1,   &&&r3 = r2;
 	***p3 = 3;                          // change x
@@ -52,5 +52,12 @@
 	*p3 = &p1;                          // change p2
 	int y = 0, z = 11, & ar[3] = { x, y, z };    // initialize array of references
+	// &ar[1] = &z;                        // change reference array element
+	// typeof( ar[1] ) p;                  // is int, i.e., the type of referenced object
+	// typeof( &ar[1] ) q;                 // is int &, i.e., the type of reference
+	// sizeof( ar[1] ) == sizeof( int );   // is true, i.e., the size of referenced object
+	// sizeof( &ar[1] ) == sizeof( int *); // is true, i.e., the size of a reference
 
+	((int*&)&r3) = &x;                  // change r1, (&*)**r3
+	x = 3;
 	// test that basic reference properties are true - r1 should be an alias for x
 	printf("%d %d %d\n", x, r1, &x == &r1);
@@ -68,4 +75,16 @@
 	printf("%d %d\n", r1, x);
 
+	((int&)r3) = 6;                       // change x, ***r3
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
+	((int*&)&r3) = &x2;                   // change r1 to refer to x2, (&*)**r3
+	((int&)r3) = 999;                     // modify x2
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x2 was changed
+	((int**&)&&r3) = p2;                  // change r2, (&(&*)*)*r3
+	((int&)r3) = 12345;                   // modify x
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
+	((int***&)&&&r3) = p3;                // change r3 to p3, (&(&(&*)*)*)r3
+	((int&)r3) = 22222;                   // modify x
+	printf("x = %d ; x2 = %d\n", x, x2);  // check that x was changed
+
 	// test that reference members are not implicitly constructed/destructed/assigned
 	X x1, x2 = x1;
@@ -76,5 +95,26 @@
 	&z1.r = &z1r;
 	&z2.r = &z2r;
+
 	z1 = z2;
+
+	// test rvalue-to-reference conversion
+	{
+		struct S { double x, y; };
+		void f( int & i, int & j, S & s, int v[] ) {
+			printf("%d %d { %g, %g }, [%d, %d, %d]\n", i, j, s.[x, y], v[0], v[1], v[2]);
+		}
+		void g(int & i) { printf("%d\n", i); }
+		void h(int &&& i) { printf("%d\n", i); }
+
+		int &&& r = 3;  // rvalue to reference
+		int i = r;
+		printf("%d %d\n", i, r);  // both 3
+
+		g( 3 );          // rvalue to reference
+		h( (int &&&)3 ); // rvalue to reference
+
+		int a = 5, b = 4;
+		f( 3, a + b, (S){ 1.0, 7.0 }, (int [3]){ 1, 2, 3 } ); // two rvalue to reference
+	}
 }
 
Index: src/tests/switch.c
===================================================================
--- src/tests/switch.c	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ src/tests/switch.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jul 12 06:50:22 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Aug 26 10:14:21 2017
-// Update Count     : 33
+// Last Modified On : Thu Mar  8 07:33:05 2018
+// Update Count     : 36
 // 
 
@@ -87,6 +87,6 @@
 		S s;
 	  case 19:
-	  case 'A' ... 'Z':
-	  case 0 ... 6:
+	  case 'A'...'Z':
+	  case 0 ...6:										// space required, or lexed as decimal point
 	  case 20, 30, 40:
 		i = 3;
@@ -96,5 +96,5 @@
 	  case 8~10:
 		f( 3 );
-		fallthru
+		fallthru;
 	  case 'd':
 		j = 5;
Index: src/tests/time.c
===================================================================
--- src/tests/time.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
+++ src/tests/time.c	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -0,0 +1,71 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// time.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Tue Mar 27 17:24:56 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Apr  6 11:27:23 2018
+// Update Count     : 16
+// 
+
+#include "time"
+#include <fstream>
+
+int main() {
+	Duration d1 = 3`h, d2 = 2`s, d3 = 3.07`s, d4 = 12`s, d5 = 1`s + 10_000`ns;
+	sout | d1 | d2 | d3 | d4 | d5 | endl;
+	int i;
+	d1 = 0;
+	sout | d1 | d2 | d3 | endl;
+	d1 = 7`s;
+	d3 = d2 = d1;
+	sout | d1 | d2 | d3 | endl;
+	d1 = d1 + d2;
+	sout | d1 | endl;
+	sout | d1 == 7`s | d1 == d2 | d1 == 0 | endl;
+	sout | div( 7`s, 2`s ) | endl;
+	sout | endl;
+
+	Time t = { 1970, 1, 2, 0, 0, 0, 10_000_000 };
+	sout | t | endl;
+	t = t + d1;
+	sout | t | t.tv | endl;
+	Time t1 = (timespec){ 104_414, 10_000_000 };
+	sout | t1 | t1.tv | endl;
+	sout | t - t  | t + d5 | t.tv | endl;
+	char buf[16];
+	sout | "yy/mm/dd" | [t, buf]`ymd;					// shared buf => separate calls
+	sout | "mm/dd/yy" | mm_dd_yy( t, buf );
+	strftime( buf, 16, "%D", t );						// %D => mm/dd/yy
+	sout | "mm/dd/yy" | buf;
+	sout | "dd/yy/mm" | [t, buf]`dmy | endl;
+	Time t2 = { 2001, 7, 4, 0, 0, 1, 0 }, t3 = (timeval){ 994_219_201 };
+	sout | t2 | t2.tv | endl | t3 | t3.tv | endl;
+	sout | endl;
+
+	// Clock Newfoundland = { -3.5`h }, PST = { -8`h };	// distance from GMT (UTC)
+	// sout | "Clock Resolution" | getRes() | endl
+	// 	 | "Newfoundland" | getTime( Newfoundland ) | endl
+	// 	 | "local" | getTime() | endl
+	// 	 | "local nsec" | getTimeNsec() | endl
+	// 	 | "PST" | PST() | endl;						// getTime short form
+	// sout | endl;
+
+	// http://en.cppreference.com/w/cpp/chrono/duration/operator_arith4
+	Duration s = 1`h + 2 * 10`m + 70`s / 10;
+	sout | "1 hour + 2*10 min + 70/10 sec = " | s | "seconds" | endl;
+	sout | "Dividing that by 2 minutes gives" | s / 2`m | endl;
+	sout | "Dividing that by 2 gives" | s / 2 | "seconds\n";
+	sout | s | "seconds is" | s`h | "hours," | (s % 1`h)`m | "minutes," | (s % 1`m)`s | "seconds" | endl;
+} // main
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// compile-command: "cfa time.c" //
+// End: //
Index: tools/prettyprinter/Makefile.am
===================================================================
--- tools/prettyprinter/Makefile.am	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ tools/prettyprinter/Makefile.am	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -11,6 +11,6 @@
 ## Created On       : Wed Jun 28 12:07:10 2017
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Wed Jun 28 23:11:56 2017
-## Update Count     : 15
+## Last Modified On : Mon Apr 16 09:43:23 2018
+## Update Count     : 20
 ###############################################################################
 
Index: tools/prettyprinter/lex.ll
===================================================================
--- tools/prettyprinter/lex.ll	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ tools/prettyprinter/lex.ll	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
  * Created On       : Sat Dec 15 11:45:59 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Tue Aug 29 17:33:36 2017
- * Update Count     : 268
+ * Last Modified On : Sun Apr 15 21:28:33 2018
+ * Update Count     : 271
  */
 
@@ -50,16 +50,16 @@
 <INITIAL,C_CODE>"/*" {									// C style comments */
 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT)
-    cerr << "\"/*\" : " << yytext << endl;
+		cerr << "\"/*\" : " << yytext << endl;
 #endif
-    if ( YYSTATE == C_CODE ) code_str += yytext;
-    else comment_str += yytext;
-    yy_push_state(C_COMMENT);
+		if ( YYSTATE == C_CODE ) code_str += yytext;
+		else comment_str += yytext;
+		yy_push_state(C_COMMENT);
 }
 <C_COMMENT>(.|"\n")	{									// C style comments
 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT)
-    cerr << "<C_COMMENT>(.|\\n) : " << yytext << endl;
+		cerr << "<C_COMMENT>(.|\\n) : " << yytext << endl;
 #endif
-    if ( yy_top_state() == C_CODE ) code_str += yytext;
-    else comment_str += yytext;
+		if ( yy_top_state() == C_CODE ) code_str += yytext;
+		else comment_str += yytext;
 }
 <C_COMMENT>"*/"	{										// C style comments
@@ -123,22 +123,24 @@
 <C_CODE>"%}"	{ RETURN_TOKEN( RCURL ) }
 
-^"%union"       { RETURN_TOKEN( UNION ) }
-^"%start"       { RETURN_TOKEN( START ) }
-^"%token"       { RETURN_TOKEN( TOKEN ) }
-^"%type"	    { RETURN_TOKEN( TYPE ) }
-^"%left"	    { RETURN_TOKEN( LEFT ) }
-^"%right"	    { RETURN_TOKEN( RIGHT ) }
-^"%nonassoc"    { RETURN_TOKEN( NONASSOC ) }
-^"%precedence"  { RETURN_TOKEN( PRECEDENCE ) }
+^"%define"[^\n]*"\n" { RETURN_TOKEN( DEFINE ) }
+^"%expect"		{ RETURN_TOKEN( EXPECT ) }
+^"%left"		{ RETURN_TOKEN( LEFT ) }
+^"%locations"	{ RETURN_TOKEN( LOCATIONS ) }
+^"%nonassoc"	{ RETURN_TOKEN( NONASSOC ) }
+^"%precedence"	{ RETURN_TOKEN( PRECEDENCE ) }
 ^"%pure_parser" { RETURN_TOKEN( PURE_PARSER ) }
+^"%right"		{ RETURN_TOKEN( RIGHT ) }
 ^"%semantic_parser"	{ RETURN_TOKEN( SEMANTIC_PARSER ) }
-^"%expect"  	{ RETURN_TOKEN( EXPECT ) }
-^"%thong" 	   	{ RETURN_TOKEN( THONG ) }
+^"%start"		{ RETURN_TOKEN( START ) }
+^"%thong" 		{ RETURN_TOKEN( THONG ) }
+^"%token"		{ RETURN_TOKEN( TOKEN ) }
+^"%type"		{ RETURN_TOKEN( TYPE ) }
+^"%union"		{ RETURN_TOKEN( UNION ) }
 
-"%prec" 	   	{ RETURN_TOKEN( PREC ) }
+"%prec" 		{ RETURN_TOKEN( PREC ) }
 
-{integer}	    { RETURN_TOKEN( INTEGER ); }
-[']{c_char}[']  { RETURN_TOKEN( CHARACTER ); }
-{identifier}    { RETURN_TOKEN( IDENTIFIER ); }
+{integer}		{ RETURN_TOKEN( INTEGER ); }
+[']{c_char}[']	{ RETURN_TOKEN( CHARACTER ); }
+{identifier}	{ RETURN_TOKEN( IDENTIFIER ); }
 
 <C_CODE>["]{s_char}*["]	{								// hide braces "{}" in strings
@@ -160,13 +162,13 @@
 %%
 void lexC(void) {
-    BEGIN(C_CODE);
+	BEGIN(C_CODE);
 }
 
 string lexYacc(void) {
-    BEGIN(INITIAL);
-    //cerr << "CODE: " << endl << code_str << endl;
-    string temp( code_str );
-    code_str = "";
-    return temp;
+	BEGIN(INITIAL);
+	//cerr << "CODE: " << endl << code_str << endl;
+	string temp( code_str );
+	code_str = "";
+	return temp;
 }
 
Index: ols/prettyprinter/parser.hh
===================================================================
--- tools/prettyprinter/parser.hh	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ 	(revision )
@@ -1,146 +1,0 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
-
-/* Bison interface for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
-
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-#ifndef YY_YY_PARSER_HH_INCLUDED
-# define YY_YY_PARSER_HH_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token type.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-  enum yytokentype
-  {
-    MARK = 258,
-    LCURL = 259,
-    RCURL = 260,
-    INTEGER = 261,
-    CHARACTER = 262,
-    IDENTIFIER = 263,
-    CODE = 264,
-    START = 265,
-    UNION = 266,
-    TOKEN = 267,
-    LEFT = 268,
-    RIGHT = 269,
-    NONASSOC = 270,
-    PRECEDENCE = 271,
-    TYPE = 272,
-    PURE_PARSER = 273,
-    SEMANTIC_PARSER = 274,
-    EXPECT = 275,
-    THONG = 276,
-    PREC = 277,
-    END_TERMINALS = 278,
-    _SECTIONS = 279,
-    _DEFSECTION_OPT = 280,
-    _LITERALBLOCK = 281,
-    _DECLARATION = 282,
-    _TAG_OPT = 283,
-    _NAMENOLIST = 284,
-    _NAMENO = 285,
-    _NAMELIST = 286,
-    _RULESECTION = 287,
-    _RULE = 288,
-    _LHS = 289,
-    _RHS = 290,
-    _PREC = 291,
-    _ACTION = 292,
-    _USERSECTION_OPT = 293
-  };
-#endif
-/* Tokens.  */
-#define MARK 258
-#define LCURL 259
-#define RCURL 260
-#define INTEGER 261
-#define CHARACTER 262
-#define IDENTIFIER 263
-#define CODE 264
-#define START 265
-#define UNION 266
-#define TOKEN 267
-#define LEFT 268
-#define RIGHT 269
-#define NONASSOC 270
-#define PRECEDENCE 271
-#define TYPE 272
-#define PURE_PARSER 273
-#define SEMANTIC_PARSER 274
-#define EXPECT 275
-#define THONG 276
-#define PREC 277
-#define END_TERMINALS 278
-#define _SECTIONS 279
-#define _DEFSECTION_OPT 280
-#define _LITERALBLOCK 281
-#define _DECLARATION 282
-#define _TAG_OPT 283
-#define _NAMENOLIST 284
-#define _NAMENO 285
-#define _NAMELIST 286
-#define _RULESECTION 287
-#define _RULE 288
-#define _LHS 289
-#define _RHS 290
-#define _PREC 291
-#define _ACTION 292
-#define _USERSECTION_OPT 293
-
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
-union YYSTYPE
-{
-#line 41 "parser.yy" /* yacc.c:1909  */
-
-	Token *tokenp;
-
-#line 134 "parser.hh" /* yacc.c:1909  */
-};
-
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-extern YYSTYPE yylval;
-
-int yyparse (void);
-
-#endif /* !YY_YY_PARSER_HH_INCLUDED  */
Index: tools/prettyprinter/parser.yy
===================================================================
--- tools/prettyprinter/parser.yy	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ tools/prettyprinter/parser.yy	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -10,6 +10,6 @@
 // Created On       : Sat Dec 15 13:44:21 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Aug 29 16:34:10 2017
-// Update Count     : 1047
+// Last Modified On : Sun Apr 15 21:40:30 2018
+// Update Count     : 1052
 // 
 
@@ -61,57 +61,59 @@
 %token<tokenp>	CODE									// C code
 
-%token<tokenp>	START									// %start
-%token<tokenp>	UNION									// %union
-%token<tokenp>	TOKEN									// %token
+%token<tokenp>	DEFINE									// %define
+%token<tokenp>	EXPECT									// %expect
 %token<tokenp>	LEFT									// %left
-%token<tokenp>	RIGHT									// %right
+%token<tokenp>	LOCATIONS								// %locations
 %token<tokenp>	NONASSOC								// %nonassoc
 %token<tokenp>	PRECEDENCE								// %precedence
+%token<tokenp>	PURE_PARSER								// %pure_parser
+%token<tokenp>	RIGHT									// %right
+%token<tokenp>	SEMANTIC_PARSER							// %semantic_parser
+%token<tokenp>	START									// %start
+%token<tokenp>	THONG									// %thong
+%token<tokenp>	TOKEN									// %token
 %token<tokenp>	TYPE									// %type
-%token<tokenp>	PURE_PARSER								// %pure_parser
-%token<tokenp>	SEMANTIC_PARSER							// %semantic_parser
-%token<tokenp>	EXPECT									// %expect
-%token<tokenp>	THONG									// %thong
+%token<tokenp>	UNION									// %union
 
 %token<tokenp>	PREC									// %prec
 
-%token		END_TERMINALS								// ALL TERMINAL TOKEN NAMES MUST APPEAR BEFORE THIS
+%token			END_TERMINALS							// ALL TERMINAL TOKEN NAMES MUST APPEAR BEFORE THIS
 
 %type<tokenp>	sections
-%token		_SECTIONS
+%token			_SECTIONS
 %type<tokenp>	mark
 %type<tokenp>	defsection_opt
-%token		_DEFSECTION_OPT
+%token			_DEFSECTION_OPT
 %type<tokenp>	declarations
 %type<tokenp>	literalblock
-%token		_LITERALBLOCK
+%token			_LITERALBLOCK
 %type<tokenp>	declaration
-%token		_DECLARATION
+%token			_DECLARATION
 %type<tokenp>	union
 %type<tokenp>	rword
 %type<tokenp>	tag_opt
-%token		_TAG_OPT
+%token			_TAG_OPT
 %type<tokenp>	namenolist
-%token		_NAMENOLIST
+%token			_NAMENOLIST
 %type<tokenp>	nameno
-%token		_NAMENO
+%token			_NAMENO
 %type<tokenp>	namelist
-%token		_NAMELIST
+%token			_NAMELIST
 %type<tokenp>	name
 %type<tokenp>	rulesection
-%token		_RULESECTION
+%token			_RULESECTION
 %type<tokenp>	rules
-%token		_RULE
+%token			_RULE
 %type<tokenp>	lhs
-%token		_LHS
+%token			_LHS
 %type<tokenp>	rhs
-%token		_RHS
+%token			_RHS
 %type<tokenp>	prod
 %type<tokenp>	prec
-%token		_PREC
+%token			_PREC
 %type<tokenp>	action
-%token		_ACTION
+%token			_ACTION
 %type<tokenp>	usersection_opt
-%token		_USERSECTION_OPT
+%token			_USERSECTION_OPT
 %type<tokenp>	ccode_opt
 %type<tokenp>	blocks
@@ -234,4 +236,6 @@
 		    $$ = $1;
 		}
+	| DEFINE											// bison
+	| LOCATIONS
 	| THONG												// bison
 	;
Index: tools/prettyprinter/test.y
===================================================================
--- tools/prettyprinter/test.y	(revision b2fe1c9d25e114799af78eb5b8a1aecb4313c62b)
+++ tools/prettyprinter/test.y	(revision 32cab5b7850de1e6632f51e472d84eee06963594)
@@ -6,5 +6,6 @@
 
 /* adsad2 */
-
+%locations
+%define parse.error verbose
 %%
 
