....................................../////.===Shadow-Here===./////................................................ > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < ------------------------------------------------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// RIFF¤ WEBPVP8 ˜ ðÑ *ôô>‘HŸK¥¤"§£±¨àð enü¹%½_F‘åè¿2ºQú³íªú`N¿­3ÿƒügµJžaÿ¯ÿ°~¼ÎùnúîÞÖô•òíôÁÉß®Sm¥Ü/ ‡ó˜f£Ùà<˜„xëJ¢Ù€SO3x<ªÔ©4¿+ç¶A`q@Ì“Úñè™ÍÿJÌ´ª-˜ÆtÊÛL]Ïq*‘Ý”ì#ŸÌÏãY]@ê`¿ /ªfkØB4·®£ó z—Üw¥Pxù–ÞLШKÇN¾AkÙTf½è'‰g gÆv›Øuh~ a˜Z— ïj*á¥t d£“uÒ ¨`K˜¹ßþ]b>˜]_ÏÔ6W—è2r4x•íÖ…"ƒÖNîä!¦å Ú}ýxGøÌ —@ ;ÆÚŠ=ɾ1ý8lªË¥ô ^yf®Œ¢u&2©nÙÇ›ñÂñŒ³ aPo['½»øFùà­+4ê“$!lövlüÞ=;N®3ð‚õ›DÉKòÞ>ÄÍ ¥ˆuߤ#ˆ$6ù™¥îЇy’ÍB¼ çxÛ;X"WL£R÷͝*ó-¶Zu}º.s¸sšXqù–DþÿvªhüïwyŸ ¯é³lÀ:KCûÄ£Ëá\…­ ~—ýóî ¼ûûÜTÓüÇy…ŽÆvc»¾×U ñ¸žþоP÷¦ó:Ò¨¨5;Ð#&#ÖúñläÿÁœ GxÉ­/ñ‡áQðìYÉtÒw޼GÔ´zàÒò ð*ëzƒ•4~H]Ø‹f ñÓÈñ`NåWçs'ÆÏW^ø¹!XžµmQ5ÃËoLœÎ: ÞËÍ¥J ù…î èo£ßPÎñ¶ž8.Œ]ʵ~5›ÙË-ù*8ÙÖß±~ ©¹rÓê‚j¶d¸{^Q'˜±Crß ÚH—#¥¥QlÀ×ëã‡DÜ«èî þ&Çæžî;ŽÏºò6ÒLÃXy&ZŒ'j‚¢Ù€IßÚù+–MGi‰*jE€‘JcÜ ÓÌ EÏÚj]o˜ Þr <¾U ûŪæÍ/šÝH¥˜b”¼ ÁñßX GP›ï2›4WŠÏà×£…íÓk†¦H·ÅíMh–*nó÷à]ÁjCº€b7<ب‹¨5車bp2:Á[UªM„QŒçiNMa#<5›áËó¸HýÊ"…×Éw¹¦ì2º–x<›»a±¸3Weü®FÝ⑱ö–î–³|LPÈ~çð~Çå‡|º kD¢µÏàÆAI %1À% ¹Ò – ”ϝS¦‰4&¶£°à Öý”û_Ò Áw°A«Å€?mÇÛgHÉ/8)á¾ÛìáöŽP í¨PŸNÙµº¦‡§Ùš"ÿ«>+ªÕ`Ê÷‡‚ß Õû˜þãÇ-PÍ.¾XV‘€ dÜ"þ4¹ ±Oú‘©t¥¦FªÄÃÄ•b‚znýu½—#cDs˜ÃiÑOˆñ×QO=*IAÊ,¶ŽZƒ;‡wøXè%EÐk:F±Ú” .Ѽ+Áu&Ç`."pÈÉw o&¿dE6‘’EqTuK@Ì¥ã™À(Êk(h‰,H}RÀIXÛš3µ1©_OqÚÒJAñ$ÊÙÜ;D3çŒ[þùœh¬Ã³™ö6ç†NY".Ú‰ï[ªŸŒ '²Ð öø_¨ÂÉ9ué¶³ÒŠõTàîMØ#û¯gN‡bÙ놚X„ö …ÉeüÌ^J ‹€.œ$Æ)βÄeæW#óüßĺŸ€ ÀzwV 9oä»f4V*uB «Ë†¹ì¯žR霓æHXa=&“I4K;¯ç‹h×·"UŠ~<•╪Vêª&ÍSÃÆÅ?ÔqÎ*mTM ˜›µwêd#[C¡©§‘D<©àb†–ÁœøvH/,í:¯( ²£|4-„Æövv„Yͼ™^Á$ˆ„¢Û[6yB.åH*V¨æ?$=˜Ñ€•ñ·­(VlŸ‘ nÀt8W÷´Bûba?q9ú¶Xƒl«ÿ\ù¶’þòUÐj/õ¢Ìµ³g$ƒÎR!¸»|Oߍë’BhîÚÑ¢ñåŒJ„®„£2Ð3•ô02Nt…!£Í]Ïc½Qÿ?ˆ<&ÃA¾Ú,JˆijÌ#5yz„‰Î|ÊŽ5QÏ:‹ÐaóVÔxW—CpeÏzÐïíçôÿÅ_[hãsÐ_/ŽTÝ?BîˆííV$<¿i>²F¬_Eß¿ †bÊŒº­ÿ®Z H“C}”¬,Mp ý/Bá£w>˜YV°aƒúh+cŠ- r/[%|üUMHäQ°X»|û/@|°¥Ð !BÔ Ç¢Ä©š+Õì D«7ìN¶ŽðÔ " ƶ’ÖçtA‰Û×}{tþz­¾GÍ›k¹OEJR$ Â׃ «ëÁ"oÉôž$oUK(Ä)Ãz³Ê-‹êN[Ò3Œñbï8P 4ƒ×q¢bo|?<ÛX¬òÄͰL–±›(™ûG?ýË©ÚÄ–ÂDØÐ_Ç¡ô ¾–ÄÏø ×e8Ë©$ÄF¹Å‹ì[©óìl:F¾f´‹‹Xì²ï®\¬ôùƒ ÿat¥óèÒùHß0äe‚;ü×h:ÆWðHž=Ã8骣"kœ'Y?³}Tûè€>?0l›e1Lòñ„aæKÆw…hÖŠùW…ÈÆÄ0ši·›[pcwËþñiêíY/~-Á5˜!¿†A›™Mÿþ(±“t@â“ö2­´TG5yé]çå僳 .·ÍïçÝ7UÚ±Ð/Nè»,_Ï ùdj7\ï Wì4›„»c¸àešg#ÒÊ⥭áØo5‘?ÌdÝô¯ ¹kzsƒ=´#ëÉK›Ø´±-¥eW?‡çßtòTã…$Ý+qÿ±ƒ÷_3Ô¥í÷:æ–ž<·Ö‡‰Å¢ š‡%Ô—utÌÈìðžgÖÀz²À—ï÷Óîäõ{K'´È÷³yaÏÁjƒô}ž§®æÊydÕÈë5¯èˆõvÕ©ã*çD„ “z„Ó‡^^xÂ3M§A´JG‚öï 3W'ˆ.OvXè¡ÊÕª?5º7†˜(˜Ç¶#çê’¶!ÌdZK§æ 0fãaN]òY³RV ™î$®K2R¨`W!1Ôó\;Ý ýB%qæK•&ÓÈe9È0êI±žeŸß -ú@žQr¦ ö4»M¼Áè¹µmw 9 EÆE_°2ó„ŸXKWÁ×Hóì^´²GѝF©óäR†¦‰ç"V»eØ<3ùd3ÿÚ¤Žú“Gi" —‘_ÙËÎ~Üö¯¥½Î»üŸEÚŽåmÞþí ;ÞólËΦMzA"Âf(´òá;Éï(/7½ûñÌ­cïÕçлþÝz¾-ÍvÑ“pH­–ðÓj$¸Äû¤‚‘ãUBË-n“2åPkS5&‹Â|+g^œ®Ì͆d!OïäîU«c;{Û!ÅŽ«ëZ9Ókóˆ]¯ƒ›né `ÇÒ+tÆš (ØKá¾—=3œ®•vuMñg²\ï Ec€ 05±d™‡×iÇ×›UúvÌ¢£Èþ¡ÕØô¶ßÎA"ß±#Ö²ˆÊŸ¦*Ä~ij|àø.-¼'»Ú¥£h ofº¦‡VsR=N½„Î v˜Z*SÌ{=jÑB‹tê…;’HžH¯8–îDù8ñ¢|Q•bÛçš–‹m³“ê¨ åÏ^m¬Žãþ©ïêO‡½6] µÆ„Ooòü ²x}N¦Ë3ïé¿»€›HA˜m%çÞ/¿í7Fø“‹léUk)É°Œµ8Q8›:ÀŠeT*šõ~ôڝG6 ¢}`ùH­–”¡k ‰P1>š†®9z11!X wKfmÁ¦xÑ,N1Q”–æB¶M…ÒÃv6SMˆhU¬ÊPŽï‘öj=·CŒ¯u¹ƒVIЃsx4’ömÛýcå¡¶7ßŠß 57^\wÒÐÆ k§h,Œý î«q^R½3]J¸ÇðN ‚çU¬ôº^Áì} ³f©Õœ§ˆã:FÄÈ‚é(€™?àýÓüè1Gô£¼éj‚OÅñ  #>×—ßtà 0G¥Åa뀐kßhc™À_ÉñÞ#±)GD" YîäË-ÿÙ̪ ¹™a¯´¢E\ÝÒö‚;™„ë]_ p8‰o¡ñ+^÷ 3‘'dT4œŽ ðVë½° :¬víÑ«£tßÚS-3¶“þ2 †üüʨòrš¹M{É_¤`Û¨0ìjœøJ‡:÷ÃáZ˜†@GP&œÑDGÏs¡þ¦þDGú‘1Yá9Ôþ¼ ûø…§÷8&–ÜÑnÄ_m®^üÆ`;ÉVÁJ£?â€-ßê}suÍ2sõA NÌúA磸‘îÿÚ»ƒìö·á¿±tÑÐ"Tÿü˜[@/äj¬€uüªìù¥Ý˜á8Ý´sõj 8@rˆð äþZÇD®ÿUÏ2ùôõrBzÆÏÞž>Ì™xœ“ wiÎ×7_… ¸ \#€MɁV¶¥üÕÿPÔ9Z‡ø§É8#H:ƒ5ÀÝå9ÍIŒ5åKÙŠ÷qÄ>1AÈøžj"µÂд/ªnÀ qªã}"iŸBå˜ÓÛŽ¦…&ݧ;G@—³b¯“•"´4í¨ôM¨åñC‹ïùÉó¯ÓsSH2Ý@ßáM‡ˆKÀªÛUeø/4\gnm¥‹ŸŒ qÄ b9ÞwÒNÏ_4Ég³ú=܆‚´ •â¥õeíþkjz>éÚyU«Íӝ݃6"8/ø{=Ô¢»G¥ äUw°W«,ô—¿ãㆅү¢³xŠUû™yŒ (øSópÐ 9\åTâ»—*oG$/×ÍT†Y¿1¤Þ¢_‡ ¼ „±ÍçèSaÓ 3ÛMÁBkxs‰’R/¡¤ˆÙçª(*õ„üXÌ´ƒ E§´¬EF"Ù”R/ÐNyÆÂ^°?™6¡œïJ·±$§?º>ÖüœcNÌù¯G ‹ñ2ЁBB„^·úìaz¨k:#¨Æ¨8LÎõލ£^§S&cŒÐU€ü(‡F±Š¼&P>8ÙÁ ‰ p5?0ÊÆƒZl¸aô š¼¡}gÿ¶zÆC²¹¬ÎÖG*HB¡O<º2#ñŒAƒ–¡B˜´É$¥›É:FÀÔx¾u?XÜÏÓvN©RS{2ʈãk9rmP¼Qq̳ è¼ÐFׄ^¡Öì fE“F4A…!ì/…¦Lƒ… … $%´¾yã@CI¬ á—3PþBÏNÿ<ý°4Ü ËÃ#ØÍ~âW«rEñw‹eùMMHß²`¬Öó½íf³:‹k˜¯÷}Z!ã¿<¥,\#öµÀ¯aÒNÆIé,Ћ–lŽ#Àæ9ÀÒS·I’½-Ïp Äz¤Š Â* ­íÄ9­< h>׍3ZkËU¹§˜ŒŠ±f­’¤º³Q ÏB?‹#µíÃ¥®@(Gs«†vI¥Mµ‹Á©e~2ú³ÁP4ìÕi‚²Ê^ö@-DþÓàlÜOÍ]n"µã:žpsŽ¢:! Aõ.ç~ÓBûH÷JCÌ]õVƒd «ú´QÙEA–¯¯Œ!.ˆˆëQ±ù œ·Ì!Õâ )ùL„ÅÀlÚè5@B…o´Æ¸XÓ&Û…O«˜”_#‡ƒ„ûÈt!¤ÁÏ›ÎÝŠ?c9 â\>lÓÁVÄÑ™£eØY]:fÝ–—ù+p{™ðè û³”g±OƒÚSù£áÁÊ„ä,ï7š²G ÕÌBk)~ÑiCµ|h#u¤¶îK¨² #²vݯGãeÖ϶ú…¾múÀ¶þÔñ‚Š9'^($¤§ò “š½{éúp÷J›ušS¹áªCÂubÃH9™D™/ZöØÁ‡¦ÝÙŸ·kð*_”.C‹{áXó€‡c¡c€§/šò/&éš÷,àéJþ‰X›fµ“C¨œ®r¬"kL‰Â_q…Z–.ÉL~O µ›zn‚¹À¦Öª7\àHµšÖ %»ÇníV[¥*Õ;ƒ#½¾HK-ÖIÊdÏEÚ#=o÷Óò³´Š: Ç?{¾+9›–‘OEáU·S€˜j"ÄaÜ ŒÛWt› á–c#a»pÔZÞdŽtWê=9éöÊ¢µ~ ë ;Öe‡Œ®:bî3±ýê¢wà¼îpêñ¹¾4 zc¾ðÖÿzdêŒÑÒŝÀ‰s6¤í³ÎÙB¿OZ”+F¤á‡3@Ñëäg©·Ž ˆèª<ù@É{&S„œÕúÀA)‰h:YÀ5^ÂÓŒ°õäU\ ùËÍû#²?Xe¬tu‰^zÒÔãë¼ÛWtEtû …‚g¶Úüâî*moGè¨7%u!]PhÏd™Ý%Îx: VÒ¦ôÊD3ÀŽKÛËãvÆî…N¯ä>Eró–ð`5 Œ%u5XkñÌ*NU%¶áœÊ:Qÿú»“úzyÏ6å-၇¾ ´ ÒÊ]y žO‘w2Äøæ…H’²f±ÎÇ.ª|¥'gîV•Ü .̘¯€šòü¤U~Ù†*¢!?ò wý,}´°ÔÞnïoKq5µb!áÓ3"vAßH¡³¡·G(ÐÎ0Îò¼MG!/ài®@—¬04*`…«é8ªøøló“ˆÊ”èù¤…ßÊoÿé'ËuÌÖ5×È¡§ˆˆfŽë9}hìâ_!!¯  B&Ëö¶‰ÀAÙNVŸ Wh›¸®XÑJì¨ú“¿÷3uj²˜¨ÍÎìë±aúŠÝå¯ð*Ó¨ôJ“yºØ)m°WýOè68†ŸÏ2—‰Ïüꪫٚ¥‹l1 ø ÏÄFjêµvÌbü¦èÝx:X±¢H=MÐß—,ˆÉÇ´(9ú¾^ÅÚ4¿m‡$âX‘å%(AlZo@½¨UOÌÕ”1ø¸jÎÀÃÃ_ µ‘Ü.œº¦Ut: Æï’!=¯uwû#,“pþÇúŒø(é@?³ü¥‘Mo §—s@Œ#)§ŒùkL}NOÆêA›¸~r½¼ÙA—HJ«eˆÖ´*¡ÓpÌŸö.m<-"³ûÈ$¬_6­åf£ïÚâj1y§ÕJ½@dÞÁr&Í\Z%D£Íñ·AZ Û³øüd/ªAi†/Й~  ‡âĮҮÏh§°b—›Û«mJžòG'[ÈYýŒ¦9psl ýÁ ®±f¦x,‰½tN ‚Xª9 ÙÖH.«Lo0×?͹m¡å†Ѽ+›2ƒF ±Ê8 7Hցϓ²Æ–m9…òŸï]Â1äN†VLâCˆU .ÿ‰Ts +ÅÎx(%¦u]6AF Š ØF鈄‘ |¢¶c±soŒ/t[a¾–û:s·`i햍ê›ËchÈ…8ßÀUÜewŒðNOƒõD%q#éû\9¤x¹&UE×G¥ Í—™$ð E6-‡¼!ýpãÔM˜ Âsìe¯ñµK¢Ç¡ùôléœ4Ö£”À Š®Ðc ^¨À}ÙËŸ§›ºê{ÊuÉC ×Sr€¤’fÉ*j!úÓ’Gsùìoîßîn%ò· àc Wp÷$¨˜)û»H ×8ŽÒ€Zj¤3ÀÙºY'Ql¦py{-6íÔCeiØp‘‡XÊîÆUߢ܂ž£Xé¼Y8þ©ëgñß}é.ÎógÒ„ÃØËø¯»™§Xýy M%@NŠ À(~áÐvu7&•,Ù˜ó€uP‡^^®=_E„jt’ 403WebShell
403Webshell
Server IP : 66.235.200.170  /  Your IP : 3.135.209.242
Web Server : Apache
System : Linux gator4410.hostgator.com 5.14.0-162.23.1.9991722448259.nf.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 31 18:11:45 UTC 2024 x86_64
User : bmgxafte ( 1214)
PHP Version : 8.2.28
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/texlive/texmf-dist/tex/plain/etex/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/texlive/texmf-dist/tex/plain/etex/etex.src
%% e-TeX V2.1;0
%% Revision-date:  01-FEB-1999 22:36:22 /PB
%% Revision-history: (at-end)

% The version  number in the first line is compared with the corresponding
% element in e-TeX, and an error reported if incompatibility is detected.
% The cycle and revision numbers (that is, the element(s) following the
% period) are not used in this comparison, allowing enhancements to be made to
% this module and recorded in its header without introducing a risk of conflict.
%
% This allows to use this file with e-TeX versions 2.0 and 2.1!
%
% Other files whose headers must be kept in synch include "etexdefs.lib" and
% "language.def".

% This is "etex.src", the (e-TeX) source file for the "etex" format file.
% To build the format from it, use one of the following commands or the
% local equivalent:

% Generic: einitex *etex.src \dump
% emTeX:   etex -i *etex.src \dump
% VMS:     etex /init /noformat *"etex.src \dump"

% Assume a purely IniTeX environment and set up a minimal \catcode r\'egime

\catcode `\{=1
\catcode `\}=2
\catcode `\#=6
\catcode `\^=7
\catcode `\@=\catcode `\A

% Define the basic error-reporting and abort mechanisms:

\def \et@xmsg #1#2%
   {\begingroup
    \def \n {^^J}%
    \def \ { }%
    \newlinechar=\expandafter `\n
    \if E#1%
          \errorcontextlines=0
          \errmessage {e-TeX error: #2}%
    \else
          \message {\n ! e-TeX \if I#1 message%
                               \else \if W#1 warning%
                                     \else \if F#1 fatal error%
                                           \else
                                               \ unknown (#1)%
                                           \fi
                                     \fi
                               \fi: #2%
                   }%
    \fi
    \endgroup
   }

% Note: a future version may report errors in the %<fac>-<s>-<code>[, <text>]
% format, allowing the more verbose <text>s to be read from file rather than
% stored in the format.

\def \et@xabort #1%
    {\et@xmsg {F}{#1}%
     \batchmode
     \end
    }

% Make sure this file is being read by e-TeX in extended mode;
% If it is, prepare to check version/revision compatibility, otherwise abort.

\ifx \undefined \eTeXversion
     \et@xabort {this file can be processed only in extended mode;\n
                 \ \ did you perhaps forget the asterisk?%
                }%
\else
     \begingroup
     \catcode `\%=12
     \catcode `\?=14
     \xdef \et@xfilehdr
          {\detokenize {%% e-TeX V}\the \eTeXversion \eTeXrevision}?
     \xdef \et@xlibhdr
          {\detokenize {%% e-TeXlib V}\the \eTeXversion \eTeXrevision}?
     \endgroup
\fi

% Assume extended mode, but no additional \catcodes/\defs yet;
% set up a simple e-TeX condition-reporting system:

\def \et@xinf #1{\et@xmsg {I}{#1}} %%% not currently used
\def \et@xwarn #1{\et@xmsg {W}{#1}}
\def \et@xerr   #1#2{{\errhelp={#2}\et@xmsg {E}{#1}}}

% deactivate the processing of patterns and exceptions; these will be
% reinstated later, after the \uselanguage mechanism has been defined.

\let \et@xpatterns=\patterns
\def \patterns
    {\begingroup
     \everyeof={\fi \endgroup}%
     \message {[skipping from \noexpand \patterns to end-of-file...]}%
     \iffalse
    }

% Read "plain.tex" (\patterns & \hyphenation will be skipped)

\input plain

% restore the catcode of commercial-at (@), which will just have been clobbered

\catcode `\@=\catcode `\A

% Assume an extended Plain environment (i.e. there are no longer any
% restrictions on the coding techniques we can use).  First prepare to
% carry out consistency checks on the file headers and the current e-TeX
% version/revision levels:

\newread \et@xinput

\def \etexhdrchk #1#2%
    {\openin \et@xinput=#2
     \ifeof \et@xinput
            \chardef \etexstatus=0 % V1.0-1
     \else
            \begingroup
            \endlinechar=-1
            \readline \et@xinput to \et@xbuf
            \closein \et@xinput
            \def \p@rtition ##1.##2\endp@rtition {##1}%            V2.1%0
            \xdef \et@xbuf
                {\expandafter \p@rtition \et@xbuf .\endp@rtition}% V2.1;0
            \xdef \et@xtmp {\csname et@x#1hdr\endcsname}%
            \xdef \et@xtmp
                {\expandafter \p@rtition \et@xtmp .\endp@rtition}% V2.1;0
            \endgroup
            \ifx \et@xtmp \et@xbuf
                 \chardef \etexstatus=2 % V1.1;4
            \else
                 \chardef \etexstatus=1 % V1.1;4
            \fi
     \fi
    }

% Check the version number of this file:

\def \et@xfmtsrc {etex.src}
\etexhdrchk {file} {\et@xfmtsrc}
\ifcase \etexstatus
        \et@xerr {unable to open format source file "\et@xfmtsrc";}
                   {This should not happen; please ensure that your system
                    allows a file to be opened for reading more than once
                    concurrently.%
                   }%
\or
        \et@xwarn {format source file "\et@xfmtsrc" has wrong header;\n
                    \ \ expected: "\et@xfilehdr"; found: "\et@xbuf";%
                  }%
                  {You are using a version of e-TeX which may be incompatible
                   with the source for the format file you are trying to
                   compile; please ensure that you have the most recent
                   version of each.  I will proceed, but you should treat
                   the results with caution...%
                  }%
\fi

% Module handling now implemented (V1.0-2)

\def \module #1{\iftrue}
\let \endmodule=\fi

\newtoks \et@xtoks

\def \et@xl@@d #1 #2\endl@ad %%% the "#1 #2" code avoids trailing spaces
    {\ifcsname module:#1\endcsname
             \et@xwarn {duplicate module name "#1"}%
     \else
        \csname module:#1\endcsname %%% we exploit the side-effect explicitly
        \et@xtoks=\expandafter
                {\the \et@xtoks
                 \expandafter \let \csname module:#1\endcsname=\undefined
                }%
     \fi
    }

\def \et@xl@ad #1#2,#3\endl@ad %%% the #1#2 code avoids spurious leading spaces
    {\et@xl@@d #1#2 \endl@ad
     \if *#3*
        \let \n@xt=\relax
     \else
        \def \n@xt {\et@xl@ad #3\endl@ad}%
     \fi
     \n@xt
    }

\def \et@xload #1 %%% needed because of the embedded \ifs...
    {\def \module ##1%
         {\unless
          \ifcsname module:##1\endcsname
                 \message {Skipping module "##1";}%
          \else
                 \message {Loading module "##1";}%
         }%
     \input #1
     \def \module ##1{\iftrue}%
    }

\def \load #1 from #2 %%% selective module loading from an e-TeX library file
    {\etexhdrchk {lib} {#2}%
     \ifcase \etexstatus
        \et@xerr {unable to open library file "#2"; load aborted.}
                   {I got an <eof> on trying to open your library file;
                    please make sure it exists, is readable and is not locked.%
                   }%
     \or
        \et@xerr {library file "#2" has wrong header;\n
                    \ \ expected: "\et@xlibhdr"; found: "\et@xbuf";\n
                    \ \ load aborted.%
                 }%
                 {The first line of your library does not start with
                  the correct e-TeX header; you may need to update the
                  file to be compatible with the current version of
                  e-TeX, or you may simply have specified the wrong file.%
                 }%
     \else
        \et@xtoks={\et@xtoks={}}%
        \et@xl@ad #1,\endl@ad
        \et@xload {#2}
        \the \et@xtoks
     \fi
    }

\load interactionmodes from etexdefs.lib %%% \load <foo>[, <bar>...] from <baz>

\def \@sk #1#2#3%
    {\ifnum \interactionmode=\interactionmodes {errorstop} %%% V2.0;15
        \def \pr@mpt {\csname #1 \endcsname}%
        \edef \pr@mptloop {{\escapechar=-1 \global \readline 16 to \pr@mpt}}%
        \loop \pr@mptloop
           \ch@ckforyn \pr@mpt {#2}%
        \ifb@dresponse
           \message {Please answer Y[es] or N[o]}%
        \repeat
     \else
        \def \pr@mpt {#3}%
        \ch@ckforyn \pr@mpt {#2}%
     \fi
    }

\def \ch@ckforyn #1#2% Bernd Raichle's improved version, V1.0-1
    {\edef \@nswer {#1}%
     \def \p@rse ##1##2\endp@rse
         {\lowercase {\if y##1}\b@dresponsefalse \csname #2true\endcsname
          \else \lowercase {\if n##1}\b@dresponsefalse \csname #2false\endcsname
                \else
                      \b@dresponsetrue
                \fi
          \fi
         }%
     \expandafter \p@rse \@nswer \endp@rse
    }

\def \usef@llback %%% V1.0-3
    {\message {Using fallback mode (USenglish)}%
     \addlanguage {USenglish}{hyphen}{}{2}{3}%
    }

% OK, that's all the utilities defined; on with the real work:
% First, re-instate \patterns:

\let \patterns=\et@xpatterns

% Define the language-handling commands

\def \et@xlang {\csname newlanguage\endcsname}

\def \uselanguage #1%
    {\ifcsname lang@#1\endcsname
        \language=\csname lang@#1\endcsname
        \lefthyphenmin=\csname lhm@#1\endcsname
        \righthyphenmin=\csname rhm@#1\endcsname
        \ifdefined \uselanguage@hook % V1.0-1
            \uselanguage@hook {#1}%  % V1.0-1
        \fi
     \else
        \et@xerr {language #1 undefined.}%
                 {You are trying to use a language which has not previously
                  been defined; remember that any language you want to use
                  will need to have been specified at the time the format
                  was created.%
                 }%
     \fi
    }

\def \addlanguage #1#2#3#4#5% language patterns exceptions lhm rhm
    {\expandafter \et@xlang \csname lang@#1\endcsname
     \def\paramD{#4}\ifx\paramD\empty\def\paramD{1}\fi % Default value lhm is 1 % V2.1-1
     \def\paramE{#5}\ifx\paramD\empty\def\paramE{1}\fi % Default value rhm is 1 % V2.1-1
     \expandafter \chardef \csname lhm@#1\endcsname=\paramD % V2.1-1
     \expandafter \chardef \csname rhm@#1\endcsname=\paramE % V2.1-1
     \uselanguage {#1}%
     \input #2
     \if *#3*\else \input #3 \fi
     \ifdefined \addlanguage@hook % V1.0-4
        \addlanguage@hook {#1}%  % V1.0-4
     \fi
     \edef \fmtversion {\fmtversion/#1}%
    }

% Decrement \count 19, because \newlanguage will increment it again

\advance \count 19 by -1

% We are about to try to process a user/site-specific file "language.def",
% which establishes a Babel-like language selection environment.  Since
% there is always a risk of a spurious file of that name being found,
% we look for an e-TeX header in the first line.  If the file can be opened,
% but doesn't have the right header, we interrogate the user as to whether
% to use fallback mode; in this mode, we simply establish USenglish as the
% sole language, with the et@x patterns, exceptions and left- and right-
% hyphen minima for TeX.  If we can't interrogate the user (e.g. not in
% \errorstopmode), or if the user elects not to use fallback, we abort;
% if the file can't be found/opened, we use fallback unconditionally.

\newif \ifb@dresponse
\newif \ifusef@llback

\def \l@ngdefnfile {language.def}

\etexhdrchk {file} {\l@ngdefnfile}
\ifcase \etexstatus
        \et@xwarn {unable to open file "\l@ngdefnfile";}%
        \usef@llback                      % unable to open "language.def"
\or
        \et@xwarn {file "\l@ngdefnfile" has wrong header;\n
                      \ \ expected: "\et@xfilehdr"; found: "\et@xbuf";%
     		  }%
        \@sk {Use fallback?} {usef@llback} {y}%
        \ifusef@llback
                \usef@llback
        \else
                \input \l@ngdefnfile    % use "language.def" after warning
        \fi
\else
        \input \l@ngdefnfile    % "language.def" open & valid
\fi

% All that was just to set up natural language handling...
% The "real" work of "etex.src", however, is to augment the non-primitives
% of Plain.TeX to incorporate e-TeX specific features, and to add new
% non-primitives to simplify access to new e-TeX specific primitives.

\message {Augmenting the Plain TeX definitions:}
\message {\string \tracingall;}

\def \tracingall
    {\tracingonline=\@ne
     \tracingcommands=\thr@@ % plain.tex has \tw@
     \tracingstats=\tw@
     \tracingpages=\@ne
     \tracingoutput=\@ne
     \tracinglostchars=\tw@ % plain.tex has \@ne
     \tracingmacros=\tw@
     \tracingparagraphs=\@ne
     \tracingrestores=\@ne
     \showboxbreadth=\maxdimen
     \showboxdepth=\maxdimen
     \errorstopmode
     \tracinggroups=\@ne
     \tracingifs=\@ne
     \tracingscantokens=\@ne
     \tracingnesting=\@ne
     \tracingassigns=\tw@
     }

\message {Adding new e-TeX definitions:}

\message {\string \eTeX,}
\def \eTeX {$\varepsilon$-\TeX} %%% the simple version, not suitable for maths;
                                %%% a more sophisticated one may find its way
                                %%% into "etexdefs.lib" in due course.

\message {\string \loggingall,}
\def \loggingall {\tracingall \tracingonline=\z@}

\message {\string \tracingnone,}
\def \tracingnone
    {\tracingassigns=\z@
     \tracingnesting=\z@
     \tracingscantokens=\z@
     \tracingifs=\z@
     \tracinggroups=\z@
     \showboxdepth=\thr@@
     \showboxbreadth=5
     \tracingrestores=\z@
     \tracingparagraphs=\z@
     \tracingmacros=\z@
     \tracinglostchars=\@ne
     \tracingoutput=\z@
     \tracingpages=\z@
     \tracingstats=\z@
     \tracingcommands=\z@
     \tracingonline=\z@
    }

\message {register allocation;}

\newcount \et@xins % our insertion counter (\insc@unt is used differently)

% We have to adjust the Plain TeX register allocation counts for our
% slightly modified book-keeping:

\advance \count 10 by 1 % \count 10=23 % allocates \count registers 23, 24, ...
\advance \count 11 by 1 % \count 11=10 % allocates \dimen registers 10, 11, ...
\advance \count 12 by 1 % \count 12=10 % allocates \skip registers 10, 11, ...
\advance \count 13 by 1 % \count 13=10 % allocates \muskip registers 10, 11, ...
\advance \count 14 by 1 % \count 14=10 % allocates \box registers 10, 11, ...
\advance \count 15 by 1 % \count 15=10 % allocates \toks registers 10, 11, ...
\advance \count 16 by 1 % \count 16=0  % allocates input streams 0, 1, ...
\advance \count 17 by 1 % \count 17=0  % allocates output streams 0, 1, ...
\advance \count 18 by 1 % \count 18=4  % allocates math families 4, 5, ...
\advance \count 19 by 1 % \count 19=0  % allocates \language codes 0, 1, ...

\et@xins=\insc@unt % \et@xins=255 % allocates insertions 254, 253, ...

% We don't change the Plain TeX definitions of \newcount, etc., but the
% \alloc@ macro doing the actual work is redefined.

% When the normal register pool for \count, \dimen, \skip, \muskip,
% \box, or \toks registers is exhausted, we switch to the extended pool.

\def \alloc@ #1#2#3#4#5%
    {\ifnum \count 1#1 < #4% make sure there's still room
     	 \allocationnumber=\count 1#1
	 \global \advance \count 1#1 by \@ne
	 \global #3#5=\allocationnumber
	 \wlog {\string #5=\string #2\the \allocationnumber}%
     \else \ifnum #1 < 6
    		  \begingroup \escapechar=\m@ne
		  \expandafter \alloc@@ \expandafter {\string #2}#5%
	   \else	
	 	  \errmessage {No room for a new #2}%
	   \fi
     \fi
  }

% The \expandafter construction used here allows the generation of
% \newcount and \globcount from #1=count. Moreover (and more important)
% this construction avoids the appearance of \outer macros inside
% macro definitions or conditionals.

\def \alloc@@ #1#2%
    {\endgroup % restore \escapechar
     \message {Normal \csname#1\endcsname register pool exhausted,
						switching to extended pool.}%
     \global \expandafter 
     \let \csname new#1\expandafter \endcsname \csname glob#1\endcsname
     \csname new#1\endcsname#2%
    }

% We do change the Plain TeX definition of \newinsert

\outer \def \newinsert #1%make sure there's still room for ...
      {\ch@ck 0 \et@xins \count % ... a \count, ...
        {\ch@ck 1 \et@xins \dimen % ... \dimen, ...
     	  {\ch@ck 2 \et@xins \skip % ... \skip, ...
       	    {\ch@ck 4 \et@xins \box % ... and \box register
              {\global \advance \et@xins by \m@ne
	       \unless 
               \ifnum \insc@unt < \et@xins 
	      	      \global \insc@unt=\et@xins 
	       \fi
	       \allocationnumber=\et@xins
	       \global \chardef #1=\allocationnumber
	       \wlog {\string #1=\string \insert \the \allocationnumber}%
	      }%
            }%
          }%
        }%
      }

\def \ch@ck #1#2#3#4%
    {\ifnum \count 1#1 < #2#4\else \errmessage {No room for a new #3}\fi}

% And we define \reserveinserts, so that you can say \reserveinserts{17} 
% in order to reserve room for up to 17 additional insertion classes that will
% not be taken away by \newcount, \newdimen, \newskip, or \newbox.

\outer \def \reserveinserts#1%
      {\global \insc@unt=\numexpr \et@xins \ifnum #1 > \z@ -#1\fi \relax}

\message {extended register allocation;}

% Now, we define \globcount, \globbox, etc., so that you can say
% \globcount\foo and \foo will be defined (with \countdef) to be the
% next count register from the vastly larger but somewhat less efficient
% extended register pool. We also define \loccount, etc., but these
% register definitions are local to the current group.

\count 260=277     % globally allocates \count registers 277, 278, ...
\count 261=\@cclvi % globally allocates \dimen registers 256, 257, ...
\count 262=\@cclvi % globally allocates \skip registers 256, 257, ...
\count 263=\@cclvi % globally allocates \muskip registers 256, 257, ...
\count 264=\@cclvi % globally allocates \box registers 256, 257, ...
\count 265=\@cclvi % globally allocates \toks registers 256, 257, ...
\count 266=\@ne    % globally allocates \marks classes 1, 2, ...

\def \et@xmaxregs {32768}

\count 270=\et@xmaxregs % locally allocates \count registers 32767, 32766, ...
\count 271=\et@xmaxregs % ditto for \dimen registers
\count 272=\et@xmaxregs % ditto for \skip registers
\count 273=\et@xmaxregs % ditto for \muskip registers
\count 274=\et@xmaxregs % ditto for \box registers
\count 275=\et@xmaxregs % ditto for \toks registers
\count 276=\et@xmaxregs % ditto for \marks classes

% \count registers 256-259 and 267-269 are not (yet) used

\outer \def \globcount  {\et@xglob 0 \count  \countdef}
       \def \loccount   {\et@xloc  0 \count  \countdef}
\outer \def \globdimen  {\et@xglob 1 \dimen  \dimendef}
       \def \locdimen   {\et@xloc  1 \dimen  \dimendef}
\outer \def \globskip   {\et@xglob 2 \skip   \skipdef}
       \def \locskip    {\et@xloc  2 \skip   \skipdef}
\outer \def \globmuskip {\et@xglob 3 \muskip \muskipdef}
       \def \locmuskip  {\et@xloc  3 \muskip \muskipdef}
\outer \def \globbox    {\et@xglob 4 \box    \mathchardef}
       \def \locbox     {\et@xloc  4 \box    \mathchardef}
\outer \def \globtoks   {\et@xglob 5 \toks   \toksdef}
       \def \loctoks    {\et@xloc  5 \toks   \toksdef}
\outer \def \globmarks  {\et@xglob 6 \marks  \mathchardef}
       \def \locmarks   {\et@xloc  6 \marks  \mathchardef}

\let\newmark=\globmarks %%% 2.0;14
\let\newmarks=\globmarks

\def \et@xglob #1#2#3#4%
    {\et@xchk #1#2% make sure there's still room
    	{\allocationnumber=\count 26#1
	 \global \advance \count 26#1 by \@ne
	 \global #3#4=\allocationnumber
	 \wlog {\string #4=\string #2\the \allocationnumber}%
        }%
 }

\def \et@xloc#1#2#3#4%
    {\et@xchk #1#2% make sure there's still room
        {\advance \count 27#1 by \m@ne
         \allocationnumber=\count 27#1
 	 #3#4=\allocationnumber 
	 \wlog {\string #4=\string #2\the \allocationnumber \space (local)}%
       }%
 }

\def \et@xchk #1#2#3%
    {\ifnum \count 26#1 < \count 27#1 
        #3%
     \else 
	\errmessage {No room for a new #2}%
     \fi
    }

% Next we define \globcountblk, \loccountblk, etc., so that one can
% write \globcountblk\foo{17} and \foo will be defined (with \mathchardef)
% as the first (the zeroth?) of a block of 17 consecutive registers.
% Thus the user is intended to reference elements <\foo+0> to <\foo+n-1>,
% where n is the length of the block allocated.

\outer \def \globcountblk  {\et@xgblk 0 \count}
       \def \loccountblk   {\et@xlblk 0 \count}
\outer \def \globdimenblk  {\et@xgblk 1 \dimen}
       \def \locdimenblk   {\et@xlblk 1 \dimen}
\outer \def \globskipblk   {\et@xgblk 2 \skip}
       \def \locskipblk    {\et@xlblk 2 \skip}
\outer \def \globmuskipblk {\et@xgblk 3 \muskip}
       \def \locmuskipblk  {\et@xlblk 3 \muskip}
\outer \def \globboxblk    {\et@xgblk 4 \box}
       \def \locboxblk     {\et@xlblk 4 \box}
\outer \def \globtoksblk   {\et@xgblk 5 \toks}
       \def \loctoksblk    {\et@xlblk 5 \toks}
\outer \def \globmarksblk  {\et@xgblk 6 \marks}
       \def \locmarksblk   {\et@xlblk 6 \marks}

% And, both to provide a higher-level interface to the block allocation
% scheme, and to demonstrate possible applications of the new \...expr
% primitives, we also define \globcountvector and \loccountvector (etc)
% which allow the user to access elements with embedded arithmetic, as in

% \globcountvector \foo {12}
% \foo {\count 0 + 3} = \foo {\count 1 * 2}

\outer \def \globcountvector  {\et@xgvec 0 \count}
       \def \loccountvector   {\et@xlvec 0 \count}
\outer \def \globdimenvector  {\et@xgvec 1 \dimen}
       \def \locdimenvector   {\et@xlvec 1 \dimen}
\outer \def \globskipvector   {\et@xgvec 2 \skip}
       \def \locskipvector    {\et@xlvec 2 \skip}
\outer \def \globmuskipvector {\et@xgvec 3 \muskip}
       \def \locmuskipvector  {\et@xlvec 3 \muskip}
\outer \def \globboxvector    {\et@xgvec 4 \box}
       \def \locboxvector     {\et@xlvec 4 \box}
\outer \def \globtoksvector   {\et@xgvec 5 \toks}
       \def \loctoksvector    {\et@xlvec 5 \toks}
\outer \def \globmarksvector  {\et@xgvec 6 \marks}
       \def \locmarksvector   {\et@xlvec 6 \marks}

\def \et@xgblk #1#2#3#4%
    {\et@xchkblk #1#2{#4}% make sure there's still room
        {\allocationnumber=\count 26#1
         \global \advance \count 26#1 by #4%
         \global \mathchardef #3=\allocationnumber
         \wlog {\string #3=\string #2blk{\number #4} at \the \allocationnumber}%
      }%
    }

\def \et@xlblk #1#2#3#4%
    {\et@xchkblk #1#2{#4}% make sure there's still room
        {\advance \count 27#1 by -#4%
         \allocationnumber=\count 27#1
         \mathchardef #3=\allocationnumber
         \wlog {\string #3=\string #2blk{\number #4} 
       		at \the \allocationnumber \space (local)%
       	       }%
      }%
    }

\begingroup
\catcode `\# = 12
\gdef \et@xhash {#}
\endgroup

\def \et@xgvec #1#2#3#4%
    {\et@xchkblk #1#2{#4}% make sure there's still room
        {\allocationnumber=\count 26#1
         \global \advance \count 26#1 by #4%
         \ifx    #2\box
                 \def \2{}%
         \else   \ifx #2\marks
                      \def \2{}%
                 \else
                      \def \2{\string #2}%
                 \fi
         \fi
         \xdef #3##1{\2 \noexpand \numexpr \the \allocationnumber+##1\relax}%
         \wlog {\string #3 {\et@xhash 1} =
                  \2 {\the \allocationnumber+\et@xhash 1} (global #2 vector)%
      	     }%
      }%
    }

\def \et@xlvec #1#2#3#4%
    {\et@xchkblk #1#2{#4}% make sure there's still room
        {\advance \count 27#1 by -#4%
 	 \allocationnumber=\count27#1 
	 \mathchardef #3=\allocationnumber
	 \ifx  #2\box
               \def \2{}%
	 \else \ifx #2\marks
               	   \def \2{}%
               \else
               	   \def \2{\string #2}%
               \fi
	 \fi
	 \edef #3##1{\2 \noexpand \numexpr \the \allocationnumber+##1\relax}%
	 \wlog {\string #3 {\et@xhash 1} =
                   \2 {\the \allocationnumber+\et@xhash 1} (local #2 vector)%
               }%
        }%
    }

\def \et@xchkblk #1#2#3#4%
    {\ifnum #3 < \z@
     	   \errmessage {Negative register block size \number #3}%
     \else \ifnum \numexpr \count 26#1+#3 > \count 27#1
     		\errmessage {No room for new #2block of size \number#3}%
     	   \else 
	 	 #4%
     	   \fi 
     \fi
    }

% In an attempt to reduce the overheads of e-TeX, we recycle all possible
% resources, including (as a penultimate step) the recycler itself...
% The user can circumvent (or force) this during format creation,
% by \letting \ifrecycle=\iffalse (or \iftrue, to force it).

% As this file has grown by accretion, it is possible that we are no
% longer recycling all the resources we could; this will be investigated.

\def \mayber@cycle {\expandafter \ifrecycle}
\def \forcer@cycle {\expandafter \iftrue}

\ifdefined \ifrecycle
        \mayber@cycle
\else
        \forcer@cycle
\fi

% There's a concealed \if... lurking here, which explains the
% strange indentation of the code that follows (V1.0-1)

        \def \r@cycle #1%
            {\ifdefined #1
                 \message {\string #1,}\let #1=\und@fined
             \else
                 \message {\string #1 (not defined),}
             \fi
            }
        {\newlinechar=`\! \message {!Recycling:}}

        \r@cycle \addlanguage
        \r@cycle \@nswer
        \r@cycle \@sk
        \r@cycle \b@dresponsetrue
        \r@cycle \b@dresponsefalse
        \r@cycle \ch@ckforyn
        \r@cycle \mayber@cycle
        \r@cycle \et@xabort
        \r@cycle \et@xbuf
        \r@cycle \et@xfmtsrc
        \r@cycle \et@xfilehdr
        \r@cycle \et@xinf
        \r@cycle \et@xpatterns
%       \r@cycle \ifb@dresponse
%       \r@cycle \ifusef@llback
        \r@cycle \l@ngdefnfile
        \r@cycle \n@xt
        \r@cycle \p@rse
        \r@cycle \pr@mpt
        \r@cycle \pr@mptloop
        \r@cycle \forcer@cycle
        \r@cycle \usef@llback
        \r@cycle \usef@llbacktrue
        \r@cycle \usef@llbackfalse

% The following are retained, since they may be needed by user code; with a few
% (regrettable) exceptions, all of these are given the \etex or \et@x prefix,
% to reduce as far as possible the risk of them clashing with other used-defined
% names.

% The e-TeX team are willing to change the names of the remaining, at-risk,
% control sequences if it is demonstrated that the current names cause problems
% or difficulties.

        \def \r@tain #1%
            {\ifdefined #1
                 \message {\string #1,}
             \else
                 \message {\string #1 (not defined),}
             \fi
            }
        {\newlinechar=`\! \message {!Retaining:}}

        \r@tain \et@xerr
        \r@tain \et@xinput
        \r@tain \et@xlibhdr
        \r@tain \et@xmsg
        \r@tain \et@xtoks
        \r@tain \et@xwarn
        \r@tain \et@xl@@d
        \r@tain \et@xl@ad
        \r@tain \et@xload
        \r@tain \et@xlang
        \r@tain \et@xhash
        \r@tain \eTeX
        \r@tain \etexhdrchk
%       \r@tain \endmodule
        \r@tain \etexstatus
        \r@tain \module
        \r@tain \uselanguage

        \r@cycle \r@tain
        \r@cycle \r@cycle

\fi

% And finally re-catcode commercial-at

\catcode `\@=12
\endinput

%% Revision-history:

24-ARP-2015: 2.1;1  Allow empty values on \addlanguages for parameters 4 and 5
                         Changed by Edgar Hoch

01-FEB-1999: 2.1;0  Allow file to be used with e-TeX versions 2.0 and 2.1

25-MAR-1998: 2.0;19 Improved log message for \{glob|loc}{marks|box}vector (PEB)

24-MAR-1998: 2.0;18 Optimisation of one section made (DC & PEB),
			a couple of \if tests made more robust,
			and spacing improved in one macro.

24-MAR-1998: 2.0;17 Coding styles unified and all references to Peter
     			Breitenlohner eliminated from main code

23-MAR-1998: 2.0;16 Continued from 2.0;15

20-MAR-1998: 2.0;15 Changes made here and in "etexdefs.lib" to
			improve compatibility with LaTeX, and
			\{glob,loc}{marks,box}vector re-thought.

11-MAR-1998: 2.0;14 \newmark made synonym for \newmarks / PT

10-MAR-1998: 2.0;13 Missing brace re-inserted in \...lvec /PT

10-MAR-1998: 2.0;12 Typo corrected in Peter's name /PT

10-MAR-1998: 2.0;11 "\...lvec" failed to use \et@xhash; fixed / PT

10-MAR-1998: 2.0;10 \h@sh -> \et@xhash /PT

06-MAR-1998: 2.0;9 Final tweaks by PEB !

05-MAR-1998: <missing version number> Final tweaks by PT

28-Feb-1998: 2.0;8 Major re-work by PEB

24-Feb-1998: 2.0;7 \tracingnesting -> \tw@

24-FEB-1998: 2.0;6 version-mismatch reduced in severity;
                   \tracingall and ...none improved;
                   aesthetic spaces around "=" removed

24-Jan-1998: 2.0;5: block allocation of registers added

21-Jan-1998: 2.0;4: released to e-TeX team for testing/comments

20-Jan-1998: \glob... implemented, and coding simplified by
             the implementation and use of of \max@xpr

06-Jan-1998: Alpha-testing complete of extended and local register allocation.

29-Dec-1997: The "%!" convention replaced by a corresponding "%%":
             this should avoid any inadvertent conflict with Adobe conventions.

             \tracingall augmented with
                \tracinglostchars=\tw@ %%% Q -- should this be default?
                \tracingnesting=\@ne

             \tracingnone augmented.

05-DEC-1997: A long-standing bug removed: left- and right- hyphenmin
             were transposed in fallback mode :-(((((

24-APR-1997: An interim release, to provide compatibility with Peter's
             naming conventions for beta-test versions of e-TeX V2.
             Consistency checking is now restricted to \eTeXversion,
             and \eTeXrevision is ignored.

01-NOV-1996: V1.1;5: Final stage? Checking that everything possible
             is recycled whilst nothing that is needed is lost.  Retained
             names given \etex or \et@x prefix wherever possible.  Some
             potentially dangerous cs-names commented out of the recycle/retain
             lists because they were synonyms of members of the if-else-fi set.
             The definition of the e-TeX logo added: this had somehow slipped
             through the net!  Intended to be the final revision before public
             release, but awaiting comments from other members of the team.

31-OCT-1996: V1.1;4: errors noticed while proof-reading corrected; far
             greater use made of concealed control sequences with
             commercial-at (@); library file headers differentiated
             from ordinary file headers; return-values for header-check
             altered to allow fall-thru' if ok; fallback-use algorithm
             significantly modified (major semantic shift).

29-OCT-1996: V1.1;3: tidying up prior to release; careful check on
             which control words can be re-cycled; \recycle made more
             robust, to check whether one is trying to re-cycle something
             that was never 'cycled' in the first place (PEB suggestion);
             \et@xmsg re-written to use \message or \errmessage as necessary;
             \errhelps provided for all places they might be referenced.

27-OCT-1996: V1.1;2: minor version numbers re-introduced, using semi-colon
             as delimiter and stopping pattern matching at the semi-colon;
             \et@xfilehdr defined dynamically, based in \eTeXversion and
             \eTeXrevision;  \load now uses \etexhdrchk, so library
             files are required to start with an e-TeX header; this will
             have implications when e-TeX -> V2+, so this code should be
             re-considered at this point.

17-OCT-1996: V1.1: minor version numbers eliminated, to reduce the
             need for users to update their "language.def" files.

17-OCT-1996: V1.0-4: \addlanguage@hook added, version history moved to end.

17-OCT-1996: Version 1.0-3 does away with the "fallback" file.

16-OCT-1996: Version 1.0-2 implements module handling, so constant "3"
             no longer used (see below).

13-Oct-1996: Replaced \def by \chardef where possible;
             eliminated dependency on "etexdefs.def", hard-coding
             in the constant "3" (with comment) instead;
             used Bernd's \ch@ckforyn;
             re-catcoded `\@ earlier, to reduce number of \[if]csnames;
             commented the strange indentation of the \recycles at end.

11-Oct-1996: language handling commands modified (V1.0): PT/BR

Youez - 2016 - github.com/yon3zu
LinuXploit