!long!def!ifthenelse#1#2#3>!expandafter !@eval !ifnum !@gtempa!relax !def!@term!else !def!@term!fi !@endeval!global!let!@gtempa!@val>!if!@gtempa T#2!else#3!fi> !def!@eval!def!@orop!def!@negate> !def!@endeval!if!@term T!def!@term!else !def!@term!fi!fi !if!@orop T!if!@val F!let!@val!@term!fi !else !if!@val T!let!@val!@term!fi!fi> !def!@or!else !def!noexpand!@term!fi !noexpand!@endeval !def!noexpand!@orop!ifnum> !def!@and!else !def!noexpand!@term!fi !noexpand!@endeval!def!noexpand!@orop!ifnum> !def!@neg<1=1 !fi !def!noexpand!@negate!ifnum> !def!@lparen<1=1 !fi !begingroup !noexpand!@eval !ifnum> !def!@rparen!else !def!noexpand!@term!fi !noexpand!@endeval !if!noexpand!@val T!gdef!noexpand!@gtempb<1=1>!else !gdef!noexpand!@gtempb<1=0>!fi !endgroup !ifnum!noexpand!@gtempb> !def!equal#1#2<1=1 !fi !edef!noexpand!@tempa<#1>!edef!noexpand!@tempb<#2>!ifx !noexpand!@tempa!noexpand!@tempb !def!noexpand!@tempa<1=1>!else !def!noexpand!@tempa<1=0>!fi !ifnum !noexpand!@tempa> !long!def!whiledo#1#2>><>> !newif!if@whiledo