IMD 1.17: 4/01/2010 22:38:44 NGEN High C Sample Programs 4/5/88 also Linker + Readme  ¸ÀArchiveÀâ¦gâ¦gÂÀÄKJ¾}9|M^‡¾ù E f „ › ¸ × ' T } ‘ CK¶ACTION BACK SPACEBOUNDCANCELCODECOPYDELETEFINISHGOHELPLOCKMARKMOVENEXT NEXT PAGE OVER TYPE PREV PAGERETURN SCROLL DOWN SCROLL UPSHIFTTAB#+17?GKQW]citŠ’ŸªGWÖÀŒà;“-¤à Œÿÿ XX€Xú@=„”ÿÿŒÿÿŒÿÿìPAåfºECopyright 1987 Convergent Technologies, Inc. All rights reserved.Ver x12.0-03/22/88-16:38 Linker x-03/22/88-16:36í   8 Ÿ r * Ö ˜ ª ~ ˆ – õ Ü s ‘ ¡ � Ñ [ � @ ã — . A &  0 J  ¢ û ÿ  n \ Æ ý ” M c , ú  L ’ 9  ( | Ð Ý = „ C  † • ½ Ç œ Ú º Ó Š á ß � ä E Ò 1 ¹ æ m ó G  Ï Â y [ ç  % Á / y é  a l I ê  H W } ] b € à D ™ q X ž ° > -  o 7 Í # ü  × k = 3 T 4  î 6 ¥ 8 ƒ g O þ ^ ¦ e Œ t Q “ Ë µ ð  š L j ‡ u v §  V � ’ ö  w » ;  ƒ F f È { ‰ ù B « ® ² è ¬ ¸ R À ï S  N Å · £  ¾ i ! ¡ ô Ô  Þ  +  Ì å Ù Õ h 2  › P ? ~ Z ´ à   $ d ø œ B U  © É â Ž x   3 < Ä ¯ ± z — Q ` V j e � ‚ … _ Î ¿ ë ³ "  ¤ K ò ' t p Ø   o ÷ Y ¼ ¶ ­ ‹ : ñ G ¨ �   5 ˆ  ¦ ` ì Û Ê )  O Z i  T Ã Û  1 " _ h p x } … Ž —  S \ Ù Þ î ý  ! - º à  í  & / 4 =  ‰ „‰ ‘‰ —‰ §‰ ë‰ X‰ ]‰ ˆ‰ –‰ ¤‰ ²‰ À‰ Ή ܉ ë‰ ‰ 5‰ z‰ ©‰ ‰ :‰ x‰ §‰ ø‰ ‰ ‰ ‰ Ê Ê 5Ê =Ê MÊ vÊ …Ê ™Ê ÄÊ ÌÊ ÜÊ Ê Ê $Ê 0Ê 8Ê @Ê SÊ xÊ ®Ê ÃÊ ËÊ ×Ê çÊ ðÊ ùÊ Ê Ê Ê Ê &Ê Ê 8Ê ]Ê ‰Ê ÄÊ èÊ iÊ ŸÊ ÓÊ ÿÊ Ê Ê &Ê /Ê 4Ê LÊ dÊ tÊ }Ê “Ê °Ê Ê #Ê ­Ê -Ê >Ê [Ê vÊ EÊ  Ê Œ Ê ñ Ê  Ê Ê O Ê W Ê ¿ Ê Ï Ê × Ê L Ê  Ê ) Ê 1 Ê € Ê £ Ê ¿ Ê Ê Ê UÊ ¥Ê ÇÊ Û=ÛÁÛAÛ^Û�ÛÜÛþÛ'ÛqÛ…ÛÛ{Û‘Û¼ÛÓÛ0Û`Û ((/(>(l(°(µ(Æ(Ö((((?(V(£(¨(Þ(ì(ô(ü(( ((:(x(½(v({(„(‰(r(§(¶(Ò(( (((&(E(T(|(Œ(•(ª(Ý(î(ó(û((E(l(ˆ((R(p(‰(“(œ(¡(¦(¹(Â(×((*(;(@(H(U(i(Ò( ( (] (n (s (€ ( ( (B (c (u (Ž (  (¥ (® (³ ( ( ( (³ ( ( (@ (N (… (“ (­ ( (ô (ù (%(1(=(P("']ks{ƒ‹“¶æ+>•¤Àðú%*7Éè/ex�–ÉÚßçô8„¢µ¾Ó .?DLYm‚ú+F—´× t Æ å   5 C Z Š � ” ¼ É à î    # r z ‰ • ¯ º Ò à ú  ) J k ‰ Ž ¸ Ä Ð ã . ÝÝ1Ý?ÝYÝ^݅ݑݜݥݳݸÝÇÝÏÝÔÝÝ?Ý\ÝlÝw݋ݚÝÃÝÈÝ4ݞݹÝïÝþ݈ݯÝëÝøÝ ÝÝÝ0Ý?ÝÝ�ݗݶÝÞÝúÝÝ Ý"ÝJÝg݂ݛݱÝÞÝøÝÝ Ý$Ý)ÝAÝJÝSÝ!H6H  |{š{®{;;$;2;@;.HcHwHËHßHøHpH»HãH HEHTHxHƒHÂH5HuHèHYHmHßHìH:HGHnH{H‰HÌH�HªH÷HH/ÉaÐ|лÐÔÐ�ЋË�˾Ëp˙ˤËñ š&•5Á5’Uå:åIåVå.åMå‚å±åæåõåå]%w%93L3l3ˆ3 >Ä>Ó>à>^�ý  ‰ Ê ÛÛ(ÝH£"%9…÷¡¢Û{©õ.7;@EHÉÐbË &5Uœ¾Îå%/3>�Š�  @  !R  ( , (  ,  Œ � â�Àø�ÀžÀ žÀžÀ"žÀ/žÀ6žÀ:žÀ>žÀBžÀFžÀKžÀOžÀSžÀWžÀ[žÀ`žÀdžÀhžÀlžÀpžÀužÀyžÀ}žÀ�žÀ…žÀŠžÀŽžÀ’žÀ–žÀšžÀŸžÀ£žÀ§žÀ«žÀ¯žÀ´žÀ¸žÀ¼žÀÀžÀÄžÀÉžÀÍžÀÑžÀÕžÀÙžÀÞžÀâžÀæžÀêžÀîžÀóžÀ÷žÀûžÀÿžÀŸÀŸÀ ŸÀŸÀŸÀGHuH“H®HÍHíHH4H[HxH˜HH>HŸH¾HÒHüH HGHdH³HÄHQH–H§HçHþHH.HLH\HsHœH£«£ƒ£:£g£„£ª£µ££5£4£c£¢£b£å£R  ( , (  ,  Œ � â�Àø�ÀžÀ žÀžÀ"žÀ/žÀ6žÀ:žÀ>žÀBžÀFžÀKžÀOžÀSžÀWžÀ[žÀ`žÀdžÀhžÀlžÀpžÀužÀyžÀ}žÀ�žÀ…žÀŠžÀŽžÀ’žÀ–žÀšžÀŸžÀ£žÀ§žÀ«žÀ¯žÀ´žÀ¸žÀ¼žÀÀžÀÄžÀÉžÀÍžÀÑžÀÕžÀÙžÀÞžÀâžÀæžÀêžÀîžÀóžÀ÷žÀûžÀÿžÀŸÀŸÀ ŸÀŸÀŸÀ~ŸÀ…ŸÀ#9Q99 9|9ª9]9…€…½… …A…³…ä…K…²…ý…¹…0…�…Ô…Y…Œ…î…%…™……: \ b z÷&÷5÷c÷z÷Ÿ÷Î÷ß÷]÷�÷�÷Í÷Ü÷W÷f÷‹÷‘÷W÷f÷ë÷û÷ ÷± ÷Œ ÷I¢y¢×¢Ÿ¢·¢Ë¢ä¢¢~ÛàÛñÛCÛŒÛ»ÛøÛ!ÛeÛ¦ÛÛqÛ¢Û¿ÛòÛtÛßÛÿÛ Û0 Û@ Û‡ Û{g{ü{M{–{Ð{ù{,{H{àŸÀäŸÀèŸÀìŸÀ‚©X©3õwõ8.G.‚.IH0HØHjHÅHÁHÙHgH˜ ž¢ÀÐ@Ð�бÐ&K_w†ËLgÒõ "F–ª?qŠÃqbbbb/b>bÆbÂbÖbåbõbSb|bb4bêb bgbwbݡ˱ËïË- š Ë e   ã&�5²5Ý5Ì Ð ×UóU"U‡U�UWUjU#U*U œÒœ¾K¾T¾l¾Ù¾ñ¾&ΉÎÎKå¢å"å8åKå­å%#/3¼>$>{>Ø>ô>>)�X�„�z� �²�B��¡�Ý�÷�G�•�Ó�á�ß/ß ì�í�ô ø° ϰ _€ï à¯Ð)¯€0ï06/ >?P>¿�?PDŸ pKV� Vÿ °Yß°c¿�fÏPk¿ m�àn?poO°oOp/Pp€po�x?yß@}� ‚ÿ°ˆ¯°Œï`ŽÿP�oP‘À•ÿà—oà˜ÿPšŸPž?ðž¯0Ÿ/àŸ�¤/ ¤ëФ�¬�»ŸÄ/ Û?0äï@úß ðþà ? €O@+€€*‚h€6‚€€7€-‚�€€8€'€0‚(€€&‚/‚.‚"€E€€€ ‚ €)€#‚+€i€€7‚*€€3‚€ €€ %‚‚+‚€,‚"‚€‚‚$‚1‚d€/€€m€Œ€€2‚!‚€4‚5‚)‚© ® ³ ¸ ½ Â Ç Ì Ñ Ö Û à å ê ï ô ù þ       ! & + 0 5 : ? D I N S X ] b g l q v { € … Š � ” ™ ž £ ¨ ­ ² · ¼ Á Æ Ë Ð Õ Ú ß ä é î ó ø ý        % * / 4 9 > C H M R W \ a f k p u z  ‰ |‰ Ÿ‰ ㉠P‰ Ÿ (¿ (ß ( (i (Ù (T (s (’ (õÝúݕݚݘ£ý£0£m£å£ £%£’£Ö£"p%E…£…ç…)…`…™…Ï……‚…Û…&…q…ã…]…·…ú…<…w…¨…Ù… …D…~…»…ø…q÷¥÷Ó÷¡÷¼÷î÷ ÷˜÷Î÷P ÷u ÷Á ÷× ÷ ÷1 ÷õ¢¢1¢ Û­{{                ÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿ(ÿ! þÿÿÿÿÿÿÿÿxøŒ[Kbd]äúŒ[Vid]lúŒ[Lpt]ÿóŒ[Nul]ûŒ[SysIn]HûŒ[SysOut]MûŒ‡óŒ´óŒ…úŒŠúŒ¹óŒ¯óŒ·úŒ…úŒŠúŒ¹óŒ‡óŒ·úŒ…úŒŠúŒ¹óŒéúŒ´óŒ¥óŒªóŒ¹óŒ¯óŒqúŒ¥óŒªóŒ¹óŒ¯óŒõóŒ×óŒôŒ,ôŒ ûŒûŒ¥óŒªóŒ¹óŒ ¯óŒ·úŒ…úŒ4ûŒ9ûŒ WûŒ´óŒ¥óŒªóŒ¹óŒ ¯óŒRûŒ\ûŒªóŒ¹óŒÿ²úŒ¨úŒÿ{úŒÿ/ûŒ �ÿÿ>€bÛŒgÛŒ�4]4�4�42Knn–È,X°` À€%K @€?ÿÿì?ÿ @€?ÿ @€ÿÿÿ[sys]ptrAconfig.sysÿÿÿÿÿ[sys]Com  û %379=KQ[]agou{…�‘™£¥¯±·»ÁÉÍÏÓßçëó÷ý Write error on symbol file „Write error on symbol file Symbol file hash table overflow €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€�‚��€€€€€€€€€€€€€€Á€€€€€€€€€€€€Á€€ÿÿÿÿÿÿÿÿWarning: Code reader confused at procedure startWarning: Code reader found illegal instructionWarning: IDIV of unfixable type foundWarning: IDIV instruction in overlayDistrixGdtProtectedGdtPmosLowDataGdtProtectedProtectedPmosRealSuppressStubsYesNoV4Run file mode is not unique No run file .mapLinker .symBad run file type parameter Bad OS version parameter Requested stack size exceeds 64K Warning: Odd size stack requested; rounded up.Bad max parameter noreportnone[Sys]Ctos.LibBad numeric parametermXconfig.sysToo many public procedures in resident/overlay @static0000Bad object module, data record too large Error: DUP record too complexWarning: Proc near in doesn't follow CALL/RET conventions DGroupCodeDataStaticsConstsbVerRun StaticsDesc StaticsDataConst Program entry point at (. Referenced in near module offset h.' .ŽError: Large-model overlay fixup failedError: Invalid Abs#1 FixupError: Invalid Abs#2 FixupError: Relocation offset of 'from group is too largeError: Relocation offset is too largeError: Relocation offset of near reference to 'is too largeError: Illegal segment address reference type Symbol table capacity exceeded Too many segment or class names CODEAQMCODE MQ_CEL_CODECOEDToo many segments Warning: Odd length STACK in , rounded up.Segment size exceeds 65520 Too many groups Multiply defined symbol in file High CMetaWareMS PASCAL[Sys]Pascal.LibFORTRAN 7[Sys]Fortran.LibBasic[Sys]BasCompiler.LibWarning: Module compiled with Publics is not residentFORT86[Sys]Fort86.LibWarning: no First.Obj found before Fortran-86 module PLM86 VASM86MWC86Warning: Non Fortran 86 module(s) in overlays Invalid object module Too many segments Too many groups Internal error 6 Line numbers for H Invalid object module ÄÔ Fatal Error: Input File: pos: Record Type: Status Code: Cannot open file An internal failure has occured. Module not found in in file(s): Linker Unresolved Externals: There were errors detected Input file read error, bad object module Write error on list file Bad object module, name index out of range Bad object module, external index out of range VM Read error [Scr]<$>Vm.TmpCannot open temporary file Write error in temporary file Attempt to access data outside of segment bounds, possibly bad object module ŸùŒToo many segments Too many segments Too many public, common, or external symbols in one module Too many areas Program size exceeds Linker capacityToo many PUBLIC symbolsÛùŒLIBRARY: Too many libraries úŒúŒ OverlayFaultWarning: No 'OverlayFault' procedure loaded Warning: No STACK segment Warning: Non 'CODE' class loaded into overlay Error: Non-contiguous GROUPS not pMode compatible (selectors h and h) Internal error while sorting data segmentsùùŒôùŒh (h) h Abs Res Start Stop Length Name Class Resident Overlay h h 10000h h (h) h Publics by name  Address Overlay Publics by value Address Overlay Linker Copyright 1987 Convergent Technologies, Inc. All rights reserved.Write error on run file Too many segments Too many segments Too many segments Too many segments Too many segments Too many segments Ver Ver Error: Group larger than 64K Error during legalese, status code: Write error on run file  %)+/5;=CGIOSYaegkmqƒ‰‹•—�£§­³µ¿ÁÅÇÓßãåéïñ  yesnoynBad yes/no parameter ÿÿÿVNÿVF     ÿ ÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ CûŒ>ûŒ=\z™¸Öõ2Qÿÿÿ[sys]LptConfig.Sysÿÿÿÿ[!Scr]$$.Tmp[KBD][VID]Press NEXT PAGE or SCROLL UP to continueñŒ(Press NEXT PAGE to continue�>ñŒpñŒ[PTR]& $ % * -  ,Ì[SYS]Config.sysCommPtr[8251] QÌÌ$,,à; ÿâ”Ö�Þã î0ó@þðà €@ Pê”êl”ꯔêœê*œêôœê¤êQ¤êU¤êò¤ê¬ê|¬ê¤¬ê¬ê›¬êõ¬ê…¬êÇ ¬ê@¬êñ¬ê¼ê$¼êO¼êç¼êy¼êð¼êŒÄê¯Äê' Äêl ÄêÏ ÄênÌê«ÌêJÌê4 Ìê0 Ìê ÔêÔê Ôê³ÔêÙÔêíÔêÄÔê(ÔêÜêOÜêžÜêØÜêÜêfÜê£ÜêIÜêÉÜêÖÜê%ÜêlÜêïÜêYÜêßÜêÜêUÜêäê“äê¥äê³äê@äêðäêJäê¼äêäêdäêwäêÆäêìêìêôêüêiüêìüêYüêÂüê!üê=üêaüêsüê…üê�üêê�êÈêêLêƒê¾êïêVê½êêSêžê ê�êáê"êfê—êÈêùê0êgê¤êáê ê† êÀ ê4 êE êêê@ê$êý$êA$êk$êª$êÅ$êC$êL $ê,êÖ,ê-,êr,êØ,êÛ4êÁ4ê-4êû4ê„4ê%4ê'4ê!4ê�4êJ4êB4êÔ4ê‰4êI4êf4ê–4êÆ4ê„4ê[4êm4êÎ4êŽ4ê©4êR4êò4êª4ê•4êÈ4ê¿4êE4ê¡4ê4ê4êö4ê 4ê¬4êé4ê�4ê…4ê4ê4êË4ê"4ê�4ê 4ê]4êê4ê)4êö4ê<4ê4ê�4êb4ê‡4ê<êDêLê Tê/TêTêTê\ê\ê\ê*\ê8\êF\ê)dêdêdêlêlê6têWtê©têÿtêÏtê„têÓtêOtêÝtê1têstêY|ê|ê„ê„êÜ„ê+„êŒêÙŒêŒê6Œê�ŒêHŒê÷Œê”ꈔêo”ê&œê�œê¤ê>¤ê¬êO¬ê´êe´ê¼ê[¼ê*¼êr¼ê¼ê.¼êÄêÚÄêQÌêÌê–ÌêoÌêÌêßÌêÃÌêÔê ÔêpÔêÔêÜêeÜê¸Üêäêìêìêìêìêìêôêôêüêoüêèüêê/ê^ê ê“ê+êPê€lê€tê*‚|êh€„ê6‚Œê€”ꀜê7€¤ê-‚¬ê€ê�´ê€¼êÄê1€ê$€ê€Ìê8€Ôê8€ê‹€ê'€Üê0‚äê(€ìê*€ê€ôê&‚üêM€ê/‚ê €ê.‚ ê"€êE€ê€$ê€ê€,ê ‚4ê<êP€ê €Dê)€Lê#‚Tê+€\êi€dêC€ê€lê7‚tê€ê*€|ê„ê€ê2€ê€Œê3‚”ê€œê €¤êQ€ê €ê€¬ê0€ê)€ê´ê ¼ê%‚Äê4€ê‚Ìê+‚Ôê€Üê,‚äê"‚ìê€ôê‚üê‚ê$‚ ê€ê1‚êd€ê/€$ê €ê€,êm€4ꌀ<ê€Dê2‚Lê6€êTê€ê#€ê€ê!‚\ê5€ê€dê(€ê4‚lê5‚tê)‚|ꉀšpš=šŒš|šêš{šïš€š™šÄšìš9šßš€š š š­ š¬ šs ší škššhš0$šÿ$š«$š¯$šÜ$šà$š0,šŸ,ší,šà,šÛ,š*,š|,šk,šd4šx4š•<šã <š|<š0Dš[Dš¢DšµDšØDš*DšˆDšsLšP Lš Lš) LšTšTš`\š@\š°\šÀ\š¤\šð\šÜ\š)\šb\š›\š`\šö\šr \š� \š« \š& \š) \š \š dš°dšàdš°dšdšadšðdšõdš3dš€dš¬dšÕdšsdšdšPdšªdšÞdš dš% dšZ dšº dš¸dšðdšKdšÐdšdšLdšzdš¸dšðdšdš›dš´dšÍdÿl¯à ÔxÁ Å b € ü $žuGÀq�´ßw €!ì"*‡+Ì,//.6k7 9ô9ð;Ð=´>P?c?‰?�?tBØB`D¯DþD8E{EÆEF©F)G6G…GÌGOH¹H?IoIµIJ£JµJÃKPMNZOÌOPtP‡QÖQRR0RpSÙS\UÉU2V‘W­WÑWãWõWÿW0X½XøXEY|Y³YîYZ†ZíZ8[ƒ[Î[P\Í\]R]–]Ç]ø])^`^—^Ô^_P_Ö_`„g•iðij@m�m�rÑsûs:uUuÓuÜv�wfx½xyhyK}1|�zk{ô}•}—|‘}{º|²|D}ù}¹{Ö}~6}ô|ËzÝ}>~þ|Â|b}{}8}/}µ}~zpzf}y{{Y}ý{õ|‡|w};~’}ý{{|Í~Z|™}f|¬|ƒ~}Ò{÷{0�À‚]ƒƒmƒPƒ�ƒžƒ¬ƒºƒÈƒÖƒ „ùƒàƒB„0„–„·… ‡_ˆ/‰ä‰3НŠ=‹‘‹Ó‹ÉŒpŒàŒùŒ¼� ‘ ‘ù‘9’V’¡’h“”–ˆšo›¶œ�� Î¡@¢�¢0£•£0¥‹¦Z§¢¨?©^© ©zª¬Ð«V¬/¬À«Ÿ¬ƒ¬À¬Í¬0­Á­0®•±è±0²Ð²Ð²Ð²Ð²Ð²³&³À³/´¨´ð·¸N¸€¸C¹Û¹  P°ÿPšy¼‰^üŒFþ‹6J>ÑæÑæ¡æF‹èFÄ&‡&‰&‰P¸áP°P°ÿPšy¼‰‡Œ‡¡ÖF‹ØFÄ^ü&‰G&‰W¡J>&‰G ²±Òâ&ˆW&ÆG ÿ‹D>&‰O &ÇG£R>ÿJ>‹å]ËU‹ìšƒøuÆl‘ÿš¤š(Ô]ËU‹ìƒìšÖ܈Fû¨@tfšÖ܈Fû¨t$´Ñà‹Ø‹‡ì=ë€~û_sšÖ܈FûšßÜÑà‹Ø‹‡nD‰FþšYÜ‹vþÑæÄ"‡&‰Füƒ>¾FuÄ*‡&‹‰¾F£”F𤬋å]ËU‹ìƒìšÖ܈Fù¨ÀtéÆo‘ÿšÖ܈Fù¨t$´Ñà‹Ø‹‡ì=ë&ŠFù±P"Á:Át€~ù_sšÖ܈FùšßÜÑà‹Ø‹‡nD‰FþšYÜ‹vþÑæÄ"‡&‰Füƒ>¾FuÄ*‡&‹‰¾F£”Fš¤¬ƒ>&>wé�šÖ܈Fù±@"Á:Áu$šÖ܈Fù¨ušß܉FúšY܉FúšÖ܈FùŠFù±€"Á:ÁuPšÖ܈Fù¨t$´Ñà‹Ø‹‡ì=ëŠFù±P"Á:ÁušßÜÑà‹Ø‹‡nD‰Fþ‹vþÑæÄ*‡&‹£ôF q‘ÐØsÆs‘ÿ‹å]ËU‹ì¸áPšOÜ‹6¾FÑæÄJ‡&ÿ0°Pš£ܰ:PšžÜÿ6”F°Pš£Ü g‘ÐØs7¸'áPšOÜÿ6¾FšÇ ¬P°Pš£ܰ:PšžÜÿ6”F°Pš£ܰ)PšžÜšÉÜ]ËU‹ìQQšß܉FþŠV±Òê±"шVü NÒu Ñà‹Ø‹‡nDë€~üu‹^þÑ㋟^@Ñ㋇^>‰FþŠFÐØsŠFüŠ^·ˆ‡>Ñã‹Fþ‰‡ä=ëŠFüŠ^·ˆ‡>Ñã‹Fþ‰‡ì=‹å]ÊU‹ìƒì m‘ÐØs ¡>>²FHë¡>>²F‰Fþ€>†‘¢u‹F +ÔFlF‰Fô‹Ø‹F‰ëe‹F Àt ;²Fv[;FþwV g‘ÐØsLÄ>‡‹v &€8ÿt ¸@PšÙÔ‹v ÑæÄJ‡&‹‰Fø‹F ƒè‰Fö¸P�FöPÿ6>¡0>ºRPšJäƒ0>é­Ä>‡‹v &€8ÿt z‘ÐØsé¸@PšÙÔļx12.0-03/22/88-16:38U‹ì‹v�æþÿ�þsRÄ.‡&‹‰‡ƒûÿt!ÿGt1Ñã¡G‰‡WÑãÄŸg‹F%ÿØ]Êÿ6 >¸PÑîVš¥ä‹‡ëɚ䋇ëĸ2PšÙÔËU‹ìÄ~Åv Š &: uµFGüöFu ó¦t3À]Ê ã¦áýt ŠDÿ&2Eÿ< tîëå¸ÿÿ]Ê U‹ì‹vŠ µüF‹Ù´ã ÑËÑˬ 3Øâõ´ŠÇÑàÑàÑàÑà2Ã]ÊU‹ìƒì¡T>@£T>=r ¸àP¸>Pš Ô‹^ Ñ㋇nD‰Fþ‹ðć&þÑæÄ*‡&‹‰NðÑàÑà‹ðÄ&‡&ÿp&ÿ0𔉇Œ‡&‹G‰Fô&ŠG ˆF劀‘ÐÙréØ<ÿuÿ:>ÇFî¡@>H‹Nî;Ásé’Ñáć‹ñ&‹;F u0ć&‹;Fuò‹vîÑæÑæÄ‡&ÿp&ÿ0𔉇Œ‡&ƒ ÿupÿ6‡š“ä¡\>ć&‰G ¡T>±Óè‰Fè‹T>�á²Òâ‹Ø—ã;‹vþÑæÑæÄ&‡&ÿp&ÿ0𔉇Œ‡&ƒÿuÿ6‡š“ä¡\>ć&‰Gÿ\>ëÿFîté8ÿéÕ �‘ÐØs"¡T>±Óè‰Fè‹T>�á²Òâ‹Ø„—ã;uÆFć‹vþ&Š´FôH‰Fì±ÓàƒÀ ‰Fö€~åÿu@¡>ºF‰Fò¡’FFö‹vðÑæÄJ‡&‹+šF‰Fê‹V±ÓêЉVæÓê‰VæŠÖˆVüÓàFë‹vþÑæ¡>Ä*‡&‰FòÆFü‹vþÑæ‹FÄ"‡&‰FŠNˆNý‰Fú¸P�FúPÿvò‹FöºRPšJä‹å]ÊU‹ì�ìÆ‚‘ÿ z‘ÐØs ‘ÐØr ~‘ÐØr h‘ÐØr  y‘ÐØr銚Ö܈†óþšß܉FþšÖÜ´PšïÜšY܉FüšY܈†óþšÖ܈†óþšY܈†òþö†óþ@uƆòþ €‘ÐØs  y‘ÐØr  ‘ÐØré ÇFú¡@>H‹Nú;Ár$Ñáć‹ñ&‹;Fþuć&‹;FüuéÜÿFúuÑ�¾ôþ¾0๠üò¤�†ôþP°P°ÿPšy¼‰^öŒFø j‘ÐØr4ÇFô ‹Fôƒøv‹ðŠŠõþþÁˆŠõþ€ù9vÅ‹vôÆ‚õþ0ÿNôëÚ¸>PšÙÔÿ6‡š“ä‹6@>ÑæÑæ¡æF‹èFć&‰&‰P‹6@>Ñæ‹Fþć&‰‹Nüć&‰Ä^ö&ÆG&‰OÑà‹ð‹„nD&‰G&ÇG &ÇG ÿÿÿvF¡@>@£@>;B>r6ÿ¾ùÿvþÿvüÿ¶òþšœšÖ܈†óþë ¡&>HPšïÜ‹å]ËU‹ìƒìšß܉FþšY܉Fü¡&>H‰Fø=v ¸<àP¸?Pš Ô¸e‰PÿvøšlÜ‹^þÑ㋇nD‰Fö£ÊF ÀtŠ€‘ÐÙrÑàÄ*‡‹ð&‹;²Fv ¸£òF¢†‘ë_‹vöÑæ‹FüÄ"‡&£ÔFÄ*‡&‹£òF‹Fø£ÈFŠd‰ˆ†‘²ˆVïˆV튀‘ÐÚr<€ù¢u7e‰£lF�>ÈFr¸fàPš Ôÿ6ÔFšõ¬é¹‹ÈFSC^�¼e‰‹Ë°üòª ~‘ÐØrâ h‘ÐØrÛ y‘ÐØrÔ ‘ÐØrÍ‹vöÑæÑæÄ&‡&ÿp&ÿ0𔉇Œ‡ z‘ÐØs§&‹G&‹W;ÜFu;ÚFu“ �‘ÐØr  q‘ÐØré€>e‰Uu€>f‰‹u€>g‰ìt€>e‰Èu‹Fü£à;ÿvþP°éî q‘ÐØs§ €‘ÐØs{ÇFò¡@>H‹Nò;ÁrhÑáć‹ñ&‹;FþuSć&‹‰Fú‹Nü;ÈwB‹ÈFÑ;Ðv8+Á‰Fô‹Ø€¿e‰u*Š�f‰€ù.t€ù6u‹^ô€¿g‰Žu‹Fú£à;ÿvþP°PšœÿFòu�銋^þÑã‹·nDÑæÄ"‡&‹‹NüÁ‰Fú‹�F;ÂwÛÈF;ÂvÓ‹~þÑç&+‰Vú+щVô‹Ú€¿e‰uºŠ‡f‰<.t<6u®‹^ô€¿g‰Žu¤‹Fú£à;ÿvþP°Pé a‰ÐØrF e‰<út€>g‰ûtƒ~øuÀu‚>f‰uÆ`‰ÿë Æâ; e‰ˆFî‹Nü‰à;<Èt ÆFíÿ €‘ÐØs3 r‘ÐØr,¸„àPš Ôÿ6à;°Pš£ܸ˜àPšOÜšÔ¸�àPšOܰ¢a‰¢`‰ë ŠFïöÐ `‰¢a‰ŠFïÐØrŠFíÐØs p‘ÐØr ‘ÐØrÿvþÿ6à;ÿ6â;šœ‹å]Ë‹ìûšò¤U‹ìƒì¸(P¸rFPš*€PšìÇFþèñ¸‰Fü‰FúˆFé âñþÈŠNé:ÁrµÑáÑá‹ñ‹^þ‹@Fü;Fúv‰FúþFéuÖ‹FüÑè‰Fü‹Nú;Ás�ÁX‰Nüÿvü�FöPš*€PšìÄ^öSÿvüš„Pšì�FðPš0€Pšì‹Fð¹€1Ò÷ñ‰FêÇFî‹Fê Àta¹;Áv‰Nìë‹Fê‰Fì‹Fì¹÷áP�FòPš*€Pšì‹^îÑã‹F쉇.Ó‹^îÑãÑãÄNò‰�BÓŒ‡DÓQ¹÷áP6ÿ–ù‹Fì)FêÿFî똋Fî£,Ó¸P6ÿ‡ùÄBÓS¡.Ó¹÷áP6ÿªù¸þP¸nFPš*€Pšìšd䯀‘ÿ¸£°F£¾F£´F£ºF¢†‘¸£J>£F>Ç>ÿÿš¼¸>P¸Pš¼ä¸>P¸Pš¼ä¸>P¸ Pš¼ä¸>P¸ Pš¼ä¸>P¸ Pš¼ä¸>P¸ Pš¼ä¸ÄàP°P°ÿPšy¼‰‡Œ‡¡F>&‰G£D>ÿF>¸ËàP°P°ÿPšy¼‰‡Œ‡¡ÖF‹ØF£ÚF‰ÜF¸ÐàP°P°ÿPšy¼‰‡Œ‡¡ÖF‹ØF£ÞF‰àF‹å]ËU‹ìQQ¡J>;L>r°P6ÿ´ù¡\>£X>¸ÕàP°P°ÿPšy¼‰^üŒFþ‹6J>ÑæÑæ¡æF‹èFÄ&‡&‰&‰P¸ÝàP°P°ÿPšy¼‰‡Œ‡¡ÖF‹ØFÄ^ü&‰G&‰W¡J>&‰G ²±Òâ&ˆW±ÿ&ˆO £P>¡D>&‰G ÿJ>¡¬F Àt5@&‰G¸ãàP°PQšy¼‰‡Œ‡¡æF‹èF£ÄF‰ÆF¡P>&‰G&ÇG ÿÿ‚>c‰t$¸ìàP°P°ÿPšy¼‰‡Œ‡¡P>&‰G&ÇG ÿÿ‹å]ËU‹ìQQ¡J>;L>r°P6ÿ´ù¸øàP° R‡‹v &Š$<u)ÆFë‰vì‹F ‰Fî�FëP° P°ÿPšy¼‰^ðŒFò j‘ÐØsW‹v ÑæÄJ‡&‹‰Fü‹F ‰Fú¸P�FúPÿ6>¡,>ºRPšJä¸,>ŠNÐÙsP�FúPÿ6>¡.>ºRPšJäƒ.>‹å]ÊU‹ìƒì‹v ÑæÄ*‡&‹‰Fþ±‹^ˆ;²Fv‹ÁéÓ z‘ÐØrÄ>‡‹vþ&€8ÿu麋F ;P>u?öF€té¨Ä>‡‹6òF&€8ÿu&‹6ÊFÑæÑæÄ&‡&ÿp&ÿ0š”‰^úŒFü&ŠGÐØsjënÄ>‡‹6òF°ÿ&8ue‹v ÑæÑæÄ&‡&ÿp&ÿ0š”‰^úŒFü&ŠGÐØs>ŠFÐØr7&€ ÿt0‹6ÊFÑæÑæÄ&‡&ÿp&ÿ0š”‰^úŒFü&ŠGÐØr‹^Æÿ°ÿë°‹å]ÂU‹ì¸*áPšOÜšÔ¸<áPšOÜ‹6ÊFÑæ‹FÄ"‡&+P°Pš£ܸQáPšOÜšÉÜ]ÊU‹ìQQƒ>ü=t9ÿvšOÜ‹6ü=ÑæÑæÄ‡&ÿp&ÿ0š”‰^üŒFþ�G PšܸTáPšOÜ‹å]ÂU‹ìƒì8ÇFúšÖÜ´‰Fþ‹V±Óâ£ö=ÔF‰FüšÖ܈FÕ‹ö=�Áe‰‰Nö±ˆNε‰ü=ˆNÊŠ>ÐÙsf‹°F;òFu4€~ u.ŠNÐÙr'ƒ>ö=u <\u¾e‰¿Wá¹ü‹Ñãó¦tø+ÑJƒúÿt¸]áPš Ôÿvüšõ¬ëÆf‰6¡ú=‹^ö‰Æ>é…Æ>ŠFÕ¨tS$ˆF×´Ñà‹Ø‹‡ì=‰FÞŠ^×·Š�>²"Ê:Êu0Ñà‹ðć&ƒ8ÿu"±ÿˆNÊć&‹‰VÚć&‹‰FúˆN΋FÞ£ü=ŠFÕ¨uK±"Á:ÁtCšU܉FÞŠVÕ±B"Ñ:Ñu0Ñà‹ðć&ƒ8ÿu"±ÿˆNÊć&‹‰VÚć&‹‰FúˆN΋FÞ£ü=ŠFÕ$°<0tŠFÕ$ <t ŠFÊÐØréÿŠFÕ±@"Á:ÁuÆFËÿëÆFËŠFÊÐØs¸…áë-šY܉FÜŠFÕ$ <u šY܉FÚëŠFÕ¨u±"Á:Át ¸ áPš ÔéËŠFËÐØs‹FÚ‰FÜöFÕu šY܉FøëÇFø‚~ u ‹^öŠ´Fúë‹Fú‹^öFø‰Fú‹Fü£ô=¡òF£°FŠF ¢>  >ÐØs衊^ ·Ñã.ÿ§Êe o Òã‹FÜ‹^ö‰ÿ6òFÿvüë‹Fú‹^ö‰¸؉^ö‹N܉ÿ6òFFüP¸PPé´ŠFÕ¨€t±Òè$ˆFÖ´Ñà‹ð‹´ä=ëHŠFÕ¨@uO±Òè±"ÁˆFÍ"NÕˆNÌ‹FÞ‰FàšU܉FÞ9FàuŠFÍ:FÌt#‚~Ít‹^àÑ㋟^@Ñã‹·^>ÑæÄ*‡&‹‰FØëÇFØŠFÕ¨t%$ˆF×´‹Ø€¿>uÑ㋇ì=ëŠ^×·Ñ㋇ì=ëPöFÕt*‹FÞ‰FòÑàć‹ð&‹‰Nôć&‹‰FúÆFÎÿ‹Fò£ü=ë#öFÕt‹^ÞÑ㋟^@Ñ㋇^>ë ‹^ÞÑ㋇nD‰FôöFÕu šY܉FøëÇFøƒ>òFtDƒ~ôÿt>‹vôÑæÄ*‡&‹£ø=ƒ~ôu,€~ uƒ>ö=v‹FöH‰Fö‹Ø€?šuÆÌë €~ té é` g‘ÐØsHƒ~ØuB¡²F;ø=r9‹vôÑæÑæÄ&‡&ÿp&ÿ0š”‰^ìŒFî&‹G ÀtÑà‹ð‹´^>ÑæÄ*‡&‹‰FØ‹FØ Àt`‹6ø=ÑæÑàÄJ‡&‹‹ð&+‰Nä‹Á±Óà‰Fæ‹NúÁ‰Fâ�~äs;Èv!¸»áPš Ô¸ÕáPè@û¸ÚáPšOÜÿvüšõ¬‹Fâ‰Fú‹FØ£ø=ŠFÎÐØrA‹vôÑæÄ"‡&‹‹NúÁ‰Fâ;Èv#‹Fô;N>u &‹;2>w¸òáPš Ôÿvüšõ¬‹Fâ‰FúŠFÐØré•‹FØ Àt‹6òFÑæÑàÄJ‡&‹‹ð&+‰Näë‹6òFÑæ‹>ø=ÑçÄJ‡&‹&+‰Fä‹Fä±Óà‰Fæ�~äsFüs!¸âPš Ô¸DâPèrú¸IâPšOÜÿvüšõ¬€~ u‹FüFæ‹Nú+ȃéë ‹FüFæ‹Nú+ÈI‰Nú‚~ u ‹^öŠ´Fúë‹Fú‹^öFø‰FúÆFÉ }‘ÐØs ŠF <t<téþÿvôÿvÕÿvÎ�FÏPè®øÐØréçÇFð°8F u4´‹Nü+È;ô=u*€>>u#‹°F;òFu)Fö‰Nü9ö=sÇFðƒ.ö=釠„‘ÐØs{ƒ>ö=ut‹vôÑæÄ*‡&‹‹®F+Á;<>s\Æ>ÿ‹>¼FÑç‹D>Ñã‹·^>ÑæÄ*‡&‹0ÑæÄJ‡&‹&+±Óâ‹6R>ÑæÄ"‡&‹vôÑæÑà£ú=‹Fü£ô=¡òF£°FŠF ¢>é®ÇFð‹Fô;P>tP€~ u‹^ö‹‰FúÆFЋFô‰FÑ‹Fú‰FÓ�FÐP°P°Pšy¼‰^èŒFêŒÀ ÃuÇFðë¡P>‰FôÄ^è&‹G‰Fúƒ>ö=s6ŠFÏÐØr/ ~‘ÐØs#ƒ>ÔFt°ÿ¢ƒ‘‹^öˆC‰^öÆC‰^ö‹Fú@éÌÇFðƒ~ðu]ŠFÏÐØs ‹D>Ñã‹·^>ÑæÄ*‡&‹£ø=ÆF ÆFÉÿë6‹FöH‰Fö‹Ø€?šu#Æ6@‰Fö‹ØÆÿ@‰Fö‹ØÆ@‰Fö‹NúA‹Ø‰ëaÇFðƒ~ðt¸VâPš Ôÿvð°ÿPš£Üÿvüšõ¬ëÕ‹Fü£ô=¡òF£°FŠF ¢>  >ÐØsèŠ^ ·Ñã.ÿ§] e o y � ŠFú‹^öˆëR‹Fú‹^ö‰ëHÿ6ø=šÇ ¬‹^ö‰ÿ6òFÿvüë%‹Fú‹^ö‰ƒFöÿ6ø=šÇ ¬‹^ö‰ÿ6òF‹FüƒÀPÿ6ø=ÿvÉš›¬‹å]ÊU‹ìQQ g‘ÐØs[ m‘ÐØs ¡>>²FHë¡>>²F‰Fü‹F;²Fv;Füw ¸APšÙÔ‹vÑæÄB‡&‹‰Fþ Àtƒ~þ}÷^þ‹FþH±Óà„ë ‹vÑæÄJ‡&‹‹å]ÊU‹ìƒìƒ~ u‹F ‹^‰‹^Çéû‹F ©té™-€±Óè‰FüÓèÑà‰Fþ± ÓàF ‹Vü�â± Óâ‰Fúƒ~þtƒøàr#‹Fú%øÿ±PÓà‹NúÑá�áÁ‹^‰X÷Øë<‹Fú%ÿ‰Fø%ø‹NþÑé Á‰F ƒø!v�N ð‹Fø%Ñà‹V ±Óâ+‹^‰‹F ‹^‰ëW‹F ©€t%ÿ‰F ±Óè±PÓà0‹N �áÑáÁë‹F ±Óè±PÓà‹V �â±Óâ‹^‰X±Óà¹ÿÿ+È‹^‰‹å]ÊU‹ìQ¡òF;ø=uI¸e‰Pÿ6ö=�FþP6ÿEúÐØsÿ6òF‹ÔF‹FþÈQ¿e‰WP6ÿTúëÑŠÿ=·Š‡ á´ö=P6ÿ@ú‹å]øe‰PŠÿ=·Š‡ á´ö=P�FþP6ÿEúÐØsÚÿ6òF‹ÔF‹FþÈQ¿e‰WP6ÿTúëÄU‹ìƒì Æ >‚>†‘tH ~‘ÐØsA‹6ÊFÑæÑæÄ&‡&ÿp&ÿ0š”‰^üŒFþ&ŠGÐØsÆ >ÿ¸e‰Pÿ6ÈFÿ6‚‘6ÿ;úÆ‚‘ƒ>&>vyšÖ܈Fù±Òè¢þ=ŠVù±Òê±"шÿ="NùˆNøÇø=´Ñà‹Ø.ÿ§‡�™©·ŠFù$P°ëŠFù$P°ÿPš¬ë¢ÿ6ÿ=ŠFø´P°ÿë ÿ6ÿ=ŠFø´P°Pš…¬ëÜ  >ÐØs/¸e‰Pÿ6ÈF�FúP6ÿEúÐØsÿ6òF‹ÔF‹FúÈQ¿e‰WP6ÿTúëÑ‹å]ËU‹ìQ¸ >P¸Pš¼丿’¹ üò«‹å]ËU‹ìƒì�fþ�fÿÿÿvÿvš”‰^ðŒFò‹F &=w鮋F‹V%�â¹ ãÑêÑØâú‰Fî‹N‹~�áÿ�ç‹ØÑãÑã‹·ˆ‘‹‡Š‘Îø‰Nø‰~ú9~u9NuT�Æ ƒÐ‰vô‰Föƒøu�þr¸“âP¸Pš Ôë-‹Fô‹Vö‹^îÑãÑ㉇ˆ‘‰—Š‘‹N‹~�áÿ�çÁ׉Fø‰Vú‹Fø‹Vú‰F‰Vé3ÿÄ^ð&ƒ?u&ÇÄ^ð&‹ºPFRV‰Fø‰Vú_^�£‡Œ‡Ä^ð‹F &ÿ6‡š“ä‹Fø‹Vú‹å]ÊU‹ìƒì ÿv ÿvš”‰^üŒFþ¡‡‰FöŠ^·Š‡†â´Pÿv ÿvš$¼£æF‰èFć‰FøŒFúŠ^·Š�†âµ‹ø°üòªŠFÄ^ø&ˆGÄvü&‹D&‹T&‰&‰W¡æF‹èFÄ^ü&‰G&‰Wÿvöš“äÄ^ø‹å]ÊU‹ìQQ‹F ‹V £ÖF‰ØFRPš”‰ÎFŒÐF&‹G&‹W£æF‰èFÆj‘ÿ6èFÿ6æFš”‰^üŒFþ&ŠG:Ft;Ä^ü&‹&‹W£æF‰èF&‚uÌ  ܈†õþ°8†öþvC±X8Ž÷þu;8Žøþu58Žùþu/ˆ†ôþІôþ:†öþs,´ŠŽôþµ‹ñŠŠ÷þ‹ðˆŠ÷þþ†ôþëÚ€®öþ€¾÷þ$u"¡ÒF±Ó芎öþµ‹ñˆ‚÷þ¡ÒF%ˆ‚øþ€†öþ�†öþP°P°Pšy¼‰^üŒFþ�†öþP° P°Pšy¼‰^øŒFúŒÀ Ãu ‹Fþ Füu�†öþP°P°ÿPšy¼‰^øŒFúë‹Fþ FüuÄ^ø&ÆGÿ6‡š“äéÆþ‹å]ËU‹ìƒìšY܉Fþ¸ 9&>wé �NíQPšlÜ�FíP¸‚ãP¸Pš€¼ƒøÿu°ÿ¢‘¢ Ó�FíP¸ˆãP¸Pš€¼ƒøÿu°ÿ¢‘¢ Ó�FíP¸�ãP¸ Pš€¼ƒøÿu¸™ã‰FúŒ^üÇFø¸ P6ÿhú Àt5ë8�FíP¸­ãP¸ Pš€¼ƒøÿu=¸¶ã‰FúŒ^üÇFø¸ P6ÿhú ÀuÆm‘ÿ°ÿ¢~‘¢ ÓŠ€‘ÐÙsmŠ ÓÐÙrl¢ Óën�FíP¸ËãP¸Pš€¼ƒøÿuX¸Ðã‰FúŒ^üÇFøÆh‘ÿ€~óPu*‚>c‰t# €‘ÐØs¸éãPš ÔšÔ¸úãPšOÜšÉÜ €‘ÐØsf  ÓÐØrg°ÿ¢ Óëe�FíP¸!äP¸Pš€¼ƒøÿuc¸'ä‰FúŒ^üÇFøƒ>ÒFu €‘ÐØs¸;äPš ÔšÔšÉܰÿ¢r‘¢q‘¢ ÓŠ€‘ÐÙsŠ ÓÐÙrz¢ ÓÄ^úSÿvø³SP6ÿæù‰Föëa�FíP¸qäP¸Pš€¼ƒøÿuÆ�‘ÿëB�FíP¸xäP¸Pš€¼ƒøÿuÆp‘ÿë#�FíP¸}äP¸Pš€¼ƒøÿu °ÿ¢y‘¢q‘¢ Ó¡&>ƒøvHPšïÜ ~‘ÐØs°öP°8P³þSP6ÿ6ú‹å]ËU‹ìQ¸£ÂF£@>£Ò£ÀF°¢a‰¢`‰¢ Ó¢h‘¢~‘¢y‘±ÿˆ‘¢�‘¢q‘¢p‘ˆNþÿÒFšÖÜ¢d‰šYÜ£&>€>d‰˜uèJôëy€>d‰€uŠFþÐØr#€>d‰zuš*œëk€>d‰ˆušl Äër€>d‰‚uè¤òëò€>d‰nu ÆFþè”ò麀>d‰šuè4÷ëÕ€>d‰ŒŠFÐØr»ŽÃëÆj‘ÿÿ6ØFÿ6ÖFÿvšO¼‹å]ÊU‹ìƒì ÿv 𝔉FúÑàÑà‹Ø‹‡’‹— ’£ÖF‰ØFÆj‘¡ØF ÖFtéÖŠFÐØréÅÆj‘ÿ‹^úÑãÑ㋇’‹— ’‰Fö‰Vø Ðu,‹Fú±Óè‰Fô‹Vú�‱Óâ¿ÑàÑà‹Ø—ˆ‘¿Š‘‰Vö‰~ø‹^ Š þÀ´Pÿvøÿvöš$¼£ÖF‰ØFć‰ÎFŒÐF‹vúÑæÑæ‹Œ’‹¼ ’&‰&‰&ÆG&‰G&‰W‰„’‰” ’‹v Š þÁµ� üò¤ŠFÀtÿ6ØFÿ6ÖFPšO¼ëV»ŽÃëOÿ6ØFÿ6ÖFš”‰ÎFŒÐF‹v V�G PŠF<±ÿuA< °ÿu@"ÁPšl”ÐØsÿ6ØFÿ6ÖFÿvÿvšç¼‹å]ÊÄÎF&‹&‹W£ÖF‰ØFé´þU‹ìƒìÇFþ‹Fþ=ÿvéÀÑàÑà‹Ø‹‡’‹— ’‰Fò‰Vô‹Fò‹Vô Ðué—ÿvôÿvòš”‰^öŒFøÆFäÿ&‹&‹W‰Fê‰Vì&‹G&‹W‰Fî‰Vðÿvðÿvîš”‰^úŒFü&‹&‹W‰Fæ‰Vè&ŠGˆFåŠN:ÈtÉuÄ^öSÄ^úSÿvôÿvòÿvðÿvîÿväÿ^‚~åt ÆFä‹Fæ‹Vè뜋Fê‹VìéVÿÿFþté5ÿ‹å]ÊU‹ì�ìšÖ܈†üþ�ŽýþQ´PšlÜ t‘ÐØsdÿ6ìFÿ6êFš”‰^üŒFþÿ6‡š“äÄ^ü&‹G& Gu;Іüþ´‹ðÆ‚ýþ!þ†üþ�†üþP°P°ÿPšy¼‰‡Œ‡¡ÖF‹ØFÄ^ü&‰G&‰W‹å]ÃU‹ì�ìƒ>&>wéÏ�>ÀFÿr ¸´âP¸3Pš ÔšÖ܈†ÿ�ŽÿQ´PšlÜ�†ÿP°P°ÿPšy¼‰‡Œ‡‹ÀFÑãÑã¡ÖF‹ØF‰‡r@‰—t@‹ÀFƇ Ò�†ÿP¸ÕâP°ÿPšl”ÐØrE�†ÿP¸ÚâP°ÿPšl”ÐØr.�†ÿP¸ââP°ÿPšl”ÐØr�†ÿP¸îâP°ÿPšl”ÐØs ‹ÀFƇ ÒÿÿÀFé'ÿ‹å]ËU‹ìƒì¡J>;L>r°P6ÿ´ù¡J>;L>s�>ÂFÿr ¸óâP¸4Pš ÔšÖ܈Fì±ÒèˆFë‚~ìt)<t%<t!<t‹ÂFÑãLJnDÿÂF¡&>HPšïÜ鯂~ìušY܉FðšÖ܈FíšY܉Fúš܉Fþš܉FüšÖ܈FíöFìué�‹^þÑãÑãÿ·t@ÿ·r@°P°ÿPšç¼‰^öŒFø j‘ÐØr9‹^üÑãÑ㋇r@‹—t@Ä^ö&;Wu&;Gt&‚t&ÿw&ÿ7š”‰^öŒFøëÇÄ^ö°&8Gt8Æj‘ÿ‹^þÑãÑãÿ·t@ÿ·r@ëÆj‘ÿ‹^þÑãÑãÿ·t@ÿ·r@°PšO¼‰^öŒFø j‘ÐØs¡J>Ä^ö&‰G ‹ðć&ÆÑæÑæ¡æF‹èFÄ&‡&‰&‰P c‰þÈÄ^ö&ˆG ‹vüÑæÑæ‹„r@‹”t@&‰G&‰WŠFì&ˆG¸ÿÿ&‰G&‰G¡êF‹ìF&‰G&‰WS‹^üЇ Ò[&ˆGÿJ>Ä^ö&‹G ‰FôŠNì€á€ùu]£N>°ˆFë´…Fút¸ãPš ÔšÔ¸$ãPšOÜšÉÜÿFúÆFê‹FúÄ^ö&G‰FîsÆFêÿƒFîsÆFêÿŠFêÐØs(ÇFúë!ŠFì$<uÄ^ö&‹G‰Fò&ÇG9Fús‰Fú€~ëu Ä^ö&‹G@%þÿë€~ëuÄ^ö&‹GƒÀ%ðÿëÄ^ö&‹G‰FòÄ^ö&ŠG±ÒèŠVë:Âs&ŠG$Òâ Â&ˆG‚~ìt@ÆFê‹FúFòÄ^ö&‰GsÆFêÿÄ^ö&‹GƒÀ‰FîsÆFêÿŠFêÐØs¸2ãP¸5Pš Ôë ‹FðÄ^ö&‰G‹vôÑæ‹FòÄ"‡&‰‹ÂFÑã‹Fô‰‡nDÿÂFÿ6‡š“ä‹å]ÃU‹ìƒì š܉FþÑàÑà‹Øÿ·t@ÿ·r@°P°ÿPšç¼‰^øŒFú j‘ÐØs ¡F>&‰GÿF>Ä^ø&‹G‰Föƒ>&>vlšÖ܈Fõ<ÿtšÖ܈FõšÖ܈FõšÖ܈FõëÓšß܉FüÑà‹ð‹´nDÑæÑæÄ&‡&ÿp&ÿ0š”‰^øŒFúÿ6‡š“äÄ^ø&ƒ u–‹Fö&‰G ë��>F>v ¸NãP¸6Pš Ô‹å]ÃU‹ì�ìšÖ܈†ñþšß܉Fþ Àu¸‰Fü‰FôšY܉Fòë‹^þÑ㋇nD‰FüÑàÄ"‡‹ð&‹‰FôÇFòƒ>&>wéÑšÖ܈†òþ�ŽóþQ´PšlÜšY܉FúšÖ܈†ñþ¨€t šÖ܈†ñþ€¾óþ$u"¡ÒF±Ó芎òþµ‹ñˆ‚óþ¡ÒF%ˆ‚ôþ€†òþ�†òþP°P°Pšy¼‰^öŒFøŒÀ ðÿu@ˆ†ðþÐØr2�†òþP°P°Pšy¼‰^öŒFøŒÀ Ãu�†òþP° P°ÿPšy¼‰^öŒFø j‘ÐØr ІðþÐØréà‹6@>ÑæÑæ¡æF‹èFć&‰&‰P‹6@>Ñæ‹Fþć&‰‹Fúć&‰Š†ðþÐØs Ä^ö&ÆGëÄ^ö&ÆG ‹FúFôÄ^ö&‰G‹Fü&‰G‹Fò&‰G &ÇG ÿÿÿ6‡š“äÿ@>ÿvF z‘ÐØsI p‘ÐØr ‘ÐØs;‹^þÑã‹·nDÑæÑæÄ&‡&ÿp&ÿ0𔉇Œ‡&ŠGÐØsÿvþÿvú°Pšœ¡@>;B>r-6ÿ¾ùë&¸_ãPš Ô�†òþPšØÜ¸xãPšOÜšÔšÉÜé%þ‹å]ÃU‹ì�ìšÖ܈†ëþšß܉Fþ Àu¸‰Fü‰FìšY܈†ëþë‹^þÑ㋇nD‰FüÑàÄ"‡‹ð&‹‰Fì‹vüÑæÑæÄ&‡&ÿp&ÿ0š”‰^îŒFð&‹G‰Føƒ>&>wéÌšÖ܈†ìþ�ŽíþQ´PšlÜšY܉FöšÖ܈†ëþ¨€t šÖ܈†ëþ�†ìþP°P°ÿPšy¼‰^òŒFô j‘ÐØs¥‹6@>ÑæÑæ¡æF‹èFć&‰&‰P‹6@>Ñæ‹Fþć&‰‹Fø+Fìć&‰Ä^ò&ÆG‹Fø&‰G‹Fü&‰G&ÇG ÿÿÿ6‡š“ä‹FöFø¡@>@£@>ÿvF;B>r6ÿ¾ùé*ÿ‹vüÑæÑæÄ&‡&ÿp&ÿ0š”‰^îŒFðÿ6‡š“ä‹FøÄ^î&‰G‹å]ËU‹ì�ì ƒ>&>wé0¡Ò@£Ò9B>s‹@>‰Nö£@>6ÿ¾ù‹Fö£@>šÖ܈†öþ�Ž÷þQ´PšlÜšÖ܈†õþ¨€t šÖ  uš' ÄëÇ€>d‰–ušŒÄë¹€>d‰�uèá÷ë­€>d‰Àuš¯Ä럀>d‰ u z‘ÐØsjšôœëm€>d‰Šu\ÆFþÿ y‘ÐØrz q‘ÐØs% t‘ÐØr n‘ÐØrÿ6&>šïÜš%ÜÐØséÑþëN r‘ÐØsG‚>c‰t@  ÓÐØr9Æ Óÿ¸‚äPš Ôë)¡&>HPšï܃>&>u šÖ܈FÿéÇþ¸±äP¸9Pš Ô‹å]ËU‹ìƒì¡J>;L>s�>ÂFÿr ¸ÈäP¸4Pš ÔšÖ܈Fê±ÒèˆFé‚~êt)<t%<t!<t‹ÂFÑãLJnDÿÂF¡&>HPšïÜé5‚~êušY܉FîšÖ܈FëšY܉Fúš܉Fþš܉FüšÖ܈FëöFêtL‹^þÑãÑãÿ·t@ÿ·r@°P°Pšç¼‰^öŒFø‹^üÑãÑ㋇r@‹—t@Ä^ö&;Wu&;GtS&ÿw&ÿ7š”ë΋^þÑãÑãÿ·t@ÿ·r@°P°Pšç¼‰^öŒFøÄ^ö&‹G&‹W;ìFu;êFt&ÿw&ÿ7š”ëÕ‹Fø Föu ¸:PšÙÔÄ^ö&‹G ‰FôŠFê$<u+÷FútÿFúÄ^ö&‹G+Fú‹vôÑæÄ*‡&‹8ÑçÄF‡&ëIŠFê$<tG‹vôÑæÄ"‡&‹Ä~ö&E‰Fð€~éu@%þÿë€~éu‹FðƒÀ%ðÿ‹vôÑæë‹vôÑæ‹FðÄ"‡&‰‹FúÄ^ö&‰G‹ÂFÑã‹Fô‰‡nDÑàÄ*‡‹ð&‹‰Fò‚~êuÑà‹ð‹FîÄJ‡&‰ëd‹vòÑæÄB‡&‹‰FìÄ^ö&ŠOÐÙrLÄ>‡‹~ò&€9ÿu? À~VÄN‡&ƒ8t;Ós£ÓŠFê$<u ‹Fì;Ós£Ó‹Fì÷Ø‹vòÑæÄB‡&‰ë‹Fì;Ós‹vòÑæÄN‡&ƒ8t£ÓÿÂFÿ6‡š“ä‹å]ÃU‹ìƒì š܉FþÑàÑà‹Øÿ·t@ÿ·r@°P°Pšç¼‰^øŒFú&‹G‰Fö‹ÓÑ㉇^@¡Ó@£Óƒø r ¸ÛäP¸6Pš Ô¡&>HPšïÜ‹å]ÃU‹ì�ìƒ>&>wéYšÖ܈†üþ�ŽýþQ´PšlÜšÖ܈†ûþ¨€t šÖ܈†ûþƆùþ°8†üþvH±X8Žýþu@8Žþþu:8Žÿþu4ˆ†úþƆùþÿІúþ:†üþs,´ŠŽúþµ‹ñŠŠýþ‹ðˆŠýþþ†úþëÚ€®üþ€¾ýþ$u"¡ÒF±Ó芎üþµ‹ñˆ‚ýþ¡ÒF%ˆ‚þþ€†üþ�†üþP°P°Pšy¼‰^üŒFþŒÀ Ãut°ÿ¢b‰�ŽüþQ³SPšy¼‰^üŒFþ&‹G& Guÿ4>ëÿ6ØFÿ6ÖF°PšO¼‰^üŒFþ¡êF‹ìFÄ^ü&‰G&‰Wÿ6‡š“ä‹6@>Ñæ¸Ä‡&‰Ä‡&‰éìÄ^ü&ƒ ÿtІùþÐØs醂>c‰u&‹G ÀtwÑàÄ*‡‹ð&‹0Ä>‡&€8ÿtb‹6@>Ñæ¡P>ć&‰Ä^ü&‹G ¹÷áŽFć&‰ g‘ÐØr–‹>ºFÑç‹D>ÑãV‹·^>ÑæÄ*‡&‹0ÑæÄJ‡&‹&+±Óà^ć&ëQ‹6@>ÑæÄ^ü&‹Gć&‰Ä^ü&ƒu ć&Çÿÿë‹6@>ÑæÄ^ü&‹Gć&‰‹6@>ÑæÄ^ü&‹G ć&‰‹6@>ÑæÑæ¡ÖF‹ØFć&‰&‰P¡@>@£@>;B>r ¸;PšÙÔé�ý‹å]ÃU‹ì�ìšÖ܈†ñþšß܉Fþ Àu¸‰Fü‰FôšY܉Fòë‹^þÑ㋇nD‰FüÑàÄ"‡‹ð&‹‰FôÇFòƒ>&>wéášÖ܈†òþ�ŽóþQ´PšlÜšY܉FúšÖ܈†ñþ¨€t šÖ܈†ñþ€¾óþ$u"¡ÒF±Ó芎òþµ‹ñˆ‚óþ¡ÒF%ˆ‚ôþ€†òþ q‘ÐØs*�†òþP°P°Pšy¼‰^öŒFøŒÀ Ãt&ƒ ÿt&‹G£�F z‘ÐØsI p‘ÐØr ‘ÐØs;‹^þÑã‹·nDÑæÑæÄ&‡&ÿp&ÿ0𔉇Œ‡&ŠGÐØsÿvþÿvú°Pšœéÿ‹å]ËU‹ì�ìšÖ܈†éþšß܉Fþ Àu¸‰Fü‰FêšY܈†éþë‹^þÑ㋇nD‰FüÑàÄ"‡‹ð&‹‰Fê‹vüÑæÑæÄ&‡&ÿp&ÿ0š”‰^ìŒFî‹Fê&G‰FöƆèþƒ>&>wéÔšÖ܈†êþ�ŽëþQ´PšlÜšY܉FôšÖ܈†éþ¨€t šÖ܈†éþ�†êþP°P°Pšy¼‰^ðŒFòŒÀ Ãu ¸<PšÙÔÄ^ð&‹G‰Fú‹NôÁ;Föv‰Fö+Fê‰FøÆ†èþÿ‹6@>ÑæÄ^ð&‹Gć&‰Ä^ð&‹Gć&‰‹6@>ÑæÑæ¡ÖF‹ØFć&‰&‰P¡@>@£@>;B>r ¸ìäP¸8Pš Ôé"ÿІèþÐØs0‹vüÑæÑæÄ&‡&ÿp&ÿ0š”‰^ìŒFîÿ6‡š“ä‹FøÄ^ì&‰G‹å]ËU‹ì¡&>HPšïÜ]ÃU‹ìƒì ƒ~té�‹^Š´‰FúC‰^‹N>;ÊFu*‹2>‹ÔF;ÑwÁ;Âw\P+ÙS¡>òFP¸PPšJäëDÿvúÿv¡>òFP¡ÔFºRPšJä‹FÈF‰F‹Ø‹ Étÿ6òFÿ6ÔFQ°P𛬡ÈF)F‹FúÔFFƒ~t<‹^‹‰Fü¸؉^‹‰NþFƒ~ütÿvÿvþšJ̉FøÿNüëç‹Fø‰FÿN뾋F‹å]ÊU‹ìƒì †‘< t<„t鉰¢†‘Šƒ‘ÐÙs!¢ƒ‘¸P¸üäP¡>òFP¡ÔFHºRPšJä¡N>;ÊFu,‹2>¡ÔF;Èw!‹ÈFÂ;Áw4P¸e‰+ÔFP¡>òFP¸Pëÿ6ÈF¸e‰P¡>òFP¡ÔFºRPšJä¡ÈFÔFë%ÇFüe‰Æ†‘ÿvü¸PšJ̉Fü‹ÈF�Áe‰;Árå‹å]ËU‹ìƒìšÖ܈FïšßÜÑà‹Ø‹‡nD‰FþÑàÄ*‡‹ð&‹‰Fô¡ÌF9Fþtt ÀtšÉܸýäP¸PšÜ‹vþÑæÑæÄ&‡&ÿp&ÿ0š”‰^öŒFøÄ^ö&‚t &ÿw&ÿ7ëâÄ^ö�G PÄ^ö&ŠG ´PšÜšÉÜšÉÜ‹Fþ£ÌFÇÓƒ>&>w逃>Ór ÇÓšÉÜ�FúP¸PšlÜ‹vþÑæÄ"‡&‹FüÿvúšIܸåP¸PšÜ‹vôÑæÄJ‡&ÿ0°Pš£ܰ:PšžÜÿvü°Pš£ܸåP¸PšÜÿÓévÿ‹å]ÃU‹ìQQ¸£ÂF£@>£Ó£ÀF°¢†‘¢a‰¢`‰¢h‘¢~‘¢y‘±ÿˆ‘¢�‘¢q‘¢p‘ˆ‚‘ÿÒFšÖÜ¢d‰šYÜ£&>€>d‰œušñ¬‚>†‘tvš4 Ìë}‚>†‘t¡&>‰FþÇ&>šñ¬‹Fþ£&>š4 Ì€>d‰˜uè:ôëv€>d‰ˆušl Äëh€>d‰zuš*œë{€>d‰šuè­öëò€>d‰–ušŒÄëä€>d‰ŒuèøöëØ€>d‰Àuš«ÌëÊ€>d‰ t€>d‰¢ušôœëµ€>d‰„t€>d‰†uèýû뢀>d‰puš|¬ën€>d‰”u  u‘ÐØs`è›ýëe€>d‰Šu1š¬ y‘ÐØrq q‘ÐØsj n‘ÐØrcÿ6&>šïÜš%ÜÐØséžþëL€>d‰�u q‘ÐØr p‘ÐØr ‘ÐØsšnÌë ¡&>HPšï܃>&>u šÖ܈Fýé—þ¸åP¸9Pš Ô‹å]ËU‹ì x‘öТ…‘¸0åPšOÜÿvšOÜ]ÂU‹ìÿ4>ƒ>ÌFt šÉÜÇÌFÿvšOÜ]ÊU‹ìƒì _‰ÐØsh¸?åPšOÜšÔ¸V‡P�FüP6ÿÌú‰Fú¡">º)FüVþ¸LåPšOÜ‹FþP°ÿPš£Üÿvü°Pš£ܸSåPšOÜ d‰´P°Pš£ÜšÉ܃~t¸båPšOÜÿvšIÜšÉÜ v‘ÐØs ¸Ø‡P6ÿ•ú‰Fú l‘ÐØsÿv𠀤š €D‹å]ÂU‹ìƒì ÿ6ìFÿ6êFš”‰^üŒFþ&‹G&‹W‰Fô‰VöÄ^ü&‚t&ÿw&ÿ7š”‰^üŒFþëâÄFü‰FøŒFú‹Ø�G PšÜ‹Fö Fôt6°(PšžÜÿvöÿvôš”‰^øŒFú&þO �G PšÜÄ^ø&þG °)PšžÜ‹å]ËU‹ìÿvèWþÿvè–þ]ÊU‹ì¸påPèCþÿvšfÜšÉÜÆ_‰ÿvèpþ]ÊU‹ì¸‚åPèþÿvè\þ]ÊU‹ìƒì"Æ_‰ÿ¸£ÒF‹–F‹˜F‰Næ‰VèˆFà‹Fæ‹Vè Ðu韊FàˆFß‹Fæ‹Vè£êF‰ìFR   ÑàÑÒâú‰Fô‰Vö¹¹æ‰NúŒ^ü»‰^øQS¹‹ùWQ¿WRPš€‰Fò=Ìu.Ä^ú�G‰FúŒFü¹‰NøPQ¸‹ÐRP¸Pÿvöÿvôš€‰Fò�~òàuÇ$Ó‹Fò Àt=àu$¸ ÓPÄ^úSÿvø¸‹ÐRP¸P¸mmPš€‰Fò‹Fò Àt ¿ÇæWPš Ô‹‡Ñ㋇G%ÿ‰‡GÑàÄ2‡‹ð&‹‰Nþ�ù€uG‹"Ó‰NþA‰"Ó‹>‡Ñç‹Fþ&‰¡$Ó;Èv(´£$ÓWÿ6 Óº¹ ãÑàÑÒâúRP𠀉Fò ÀYu:ÿ6 Ó‹‡ÑãÑãÄ¿gW¸P‹Fþº¹ ãÑàÑÒâúRP�FðPš$€‰Fò ÀtÆ_‰¸ãæPÿvòš Ô‹å]ËU‹ìQQ‹F Ñè‰Fþ‹v ÑæÄ ‡&9@w ¸çP¸0Pš Ô‹v ÑæÄ ‡&‹‰Fü=ÿu ¸1PšÙÔ‹vþ‹FüðÑæÄ.‡&‹‰‡ƒùÿu ÿv Pÿvþš¥äÿGušä‹‡Ñã¡G‰‡W‚~t��G€‹‡ÑãÑã‹F%ÿ‡g‹�g‹ØŽÁ‹å]ÊU‹ìƒì‹v ÑæÄ ‡&‹‰Fö=ÿu ¸1PšÙÔƒ~ué(‹v ÑæÄ ‡&‹@;Fw ¸0PšÙÔ‹vvöÑæÄ.‡&‹‰Fòƒøÿt)ÑàÑà‹ðÄ´g‹^ ‹û¹ŽFîüò¥�F ÿFÿN뜋vvöÑæÄ2‡&‹‰Fø=€u‹^ ‹û¸¹üò«ÿFÿN�F ëÊ‹Føº¹ ãÑàÑÒâú‰Fú‰VüÇFþÿNÿFƒ~t4‹Fø@‹v‹NöñÑæÄ2‡&;u‹~ùÄ.‡&ƒ8ÿuÿFþÿNÿFÿFøëÆÿ6 Ó‹^ S‹Fþ¹÷áPÿvüÿvú�FôPš#€‰Fð ÀtPšÙÔ‹Fþ¹÷áF éÏþ‹å]ÊU‹ìQƒ~tbÿv ÿvÿv°ÿPš@䉇Œ‡‹F‹V%ÿ�⹿+Èú‰Nþ‹F;Ás‰Fþ‹Fþ)FºFV‹^ ‹ó‹ÈÄ>‡üò¤‹FþF 똋å]Ê U‹ì¡ÓÄ^&‰@£Ó9>Pš”‰^üŒFþ&‹G&‹W‰Fæ‰Vè&‹G ‰Fðƒøÿ°ÿu@¢n‘&‹G ‰Fî&‹G&‹W‰Fê‰Vì&ŠGþÀ¢c‰&ŠGˆFàÄ^ü&‚t&‹&‹W£âF‰äFRPš”‰^üŒFþëÙ‚>c‰t ƒ>P>ušQ¤ÄFü£ÎFŒÐFŠFßÐØrZ‹FðƒøÿtP6ÿðùëJ‹Fì FêtDÿ6ìFÿ6êFš”‰^üŒFþÿ6‡š“äÄÎF�G PÄÎF&ŠG ´P°ÿP°P6ÿæùÄ^ü&‰G ëb¸V‡PÄÎF�G PÄÎF&ŠG ´P¸‹ÐRP¸P¸rmPÄrFS¸(P6ÿwú‰Fø Àt$ÄÎF�O ‰NòŒFôÄÎF&ŠO µ‰Nö�NòQPš³ÔÇ">‹Fê‹Vì Ðué°ƒ~îté§ÿvìÿvêš”‰ÎFŒÐF�G P6ÿáù‰Fî=€uZÄÎF&þO Æ_‰¸¤åPè!üÄÎF�G PšÜÿ6äFÿ6âFš”‰ÎFŒÐF¸¬åPšOÜÄÎF�G PšÜšÉܸPè üÿ6ìFÿ6êFš”‰^üŒFþÿ6‡š“ä‹FîÄ^ü&‰G ë4‹Fî Àt2º¹ ãÑàÑÒâú‰Fâ‰Vä¹V‡QRP6ÿÇú‰Fø ÀtPšÙÔÆn‘ÿ €‘ÐØsšÏ Äëš0 Ì‹Fì Fêu¸V‡P6ÿ•ú‰Fø ÀtPšÙÔéTýÆ_‰‹å]ËU‹ìÄ^&‹G& GtPŠFÐØs*šÉÜÄ^&€ $u&€o Ä^�G Pšܸ»åPšOܰ PšžÜÄ^&‹G&‹W£êF‰ìFšÔ]ÊU‹ìQQ l‘ÐØrS¸ ÛP¸ÉåP¸P�FüPšYü‰Fþ¸ ÛP¸çÿP æÿ´P�FüPšYü‰Fþ¸ ÛP¸ÐåP¸P�FüPšYü‰Fþ6ÿYú }‘ÐØrÆz‘šíÔ6ÿ×ùÿ6pF¡nFPþPšw䯆‘6ÿú6ÿ"ú6ÿÒù¸£T>¢€‘Ä>‡‹L>üòªšíÔ6ÿ'ú6ÿ,ú b‰ÐØs¸ÑåPšOÜÄ,åS°Pšð¼šÉܸZˆP6ÿ•ú‰Fþƒ>ÌFtšÉÜšÆäƒ>4>t# x‘öТ…‘¸êåPšOÜÿ64>šIܸ÷åPšOÜ v‘ÐØs ¸Ø‡P6ÿ•ú‰Fþ l‘ÐØs)ƒ>4>tÇ4>Ä¢FSÿ6¦Fÿ64>6ÿÑúÿ64>𠀤š €D‹å]ËU‹ìQQ v‘ÐØs=¸Ø‡PÄ^Sÿv�FüPšYü‰Fþ ÀtŠÓÐÙsPšìÆÓÿ¸4æPÿvþš Ô‹å]ÊU‹ìQQ‹^‹û°¹ÿü‹Ñãò®uø+ÑJ‰VþSRšÜ …‘ÐØs¸ ÛP‹^Sÿvþ�FüPšYü‰Fü‹å]ÊU‹ìQ�FP¸PšÜ …‘ÐØs¸ ÛP�FP¸P�FþPšYü‰Fþ‹å]ÊU‹ìQQ‹^�GPŠ´PšÜ …‘ÐØs¸ ÛP‹^�GPŠ´P�FþPšYü‰Fü‹å]ÊU‹ìQQÄ^�GPÄ^&Š´PšÜ …‘ÐØs#¸ ÛPÄ^�GPÄ^&Š´P�FþPšYü‰Fü‹å]ÊU‹ìQQ‹^Ä?WÿwšÜ …‘ÐØs¸ ÛP‹^Ä?Wÿw�FþPšYü‰Fü‹å]ÊU‹ìƒì ÆFô‚~tMŠFôþȈFô‹N�áˆNõ±ÓnŠNõ€ù s €Á0´‹ðˆJöëŠFõA, ŠNôµ‹ñˆBöƒ~u€~wþNë­±ŠFô*ȵ‰Nú´‹ð�BöPQšÜ …‘ÐØs!¸ ÛPŠFô´‹ð�BöPÿvú�FþPšYü‰Fü‹å]ÊU‹ìƒì ¸ ‰Fõ‰F÷ÆFôŠFôÀt0þȈFô‹F¹ 1Ò÷ñ‰Fþ÷á‹N+ȃÁ0ŠFô´‹ðˆJõ‹Fþ‰F ÀuÉ�FõP¸PšÜ …‘ÐØs¸ ÛP�FõP¸P�FüPšYü‰Fú‹å]ÊU‹ì° PšžÜ]ËU‹ìQQÿ&>ƒ>">u)¸V‡P¸ÿÿP¸ÓP¸">Pšü‰Fþ Àt ¿ æWPš ÔÄÓ&ŠˆFýÿ">ÿÓ‹å]ËU‹ìQQƒ>">u5¸V‡P¸ÿÿP¸ÓP¸">Pšü‰Fþƒøu°ë‹Fþ Àt ¿ æWPš Ô°ÿ‹å]ËU‹ìQ‹F)&>¡">9FvI‹^‹û‹ÈÄ6ÓŽFüüò¤¡">)FF¸V‡P¸ÿÿP¸ÓP¸">Pšü‰Fþ Àt»¿ æWPš Ô믋^‹ûÄ6Ó‹NŽFüüò¤‹FÓ)">‹å]ÊU‹ìƒì‹F)&>;">w )">ÓëG¡">)FÇ">¸V‡P�FüP6ÿÌú‰Fú¸V‡P‹FºFüVþRP6ÿÇú‰Fú Àt ¿ æWPš Ô‹å]ÊU‹ìƒì¸)&>‹">;ÈsXˆNûƒùu ÄÓ&ŠˆFþ¸V‡P¸ÿÿP¸ÓP¸">Pšü‰Fü Àt ¿ æWPš Ô€~ûuÄÓ&ŠˆFÿÿÓÿ">‹FþëÄÓ&‹‰Fþ¹Ó)">‹å]ËU‹ìQQšÖÜ´‰Fþ©€t%±ÓàPšÖÜ´YÁ‰Fþ‹Fþ‹å]ËU‹ìQQšÖÜ´‰Fþ©€t%±ÓàPšÖÜ´YÁ‰Fþ‹Fþ;ÀFr ¸NæP¸GPš Ô‹Fþ‹å]ËU‹ìQšÖÜ´‰Fþ©€t%±ÓàPšÖÜ´YÁ‰Fþ‹Fþ;@>r;ÂFrƒøv ¸zæP¸FPš Ô‹Fþ‹å]ËU‹ìQQÇFþÿÿÇFü¡úFH‹^ü;ÃrÑã�¿Gÿt ‹‡W;Fþs‰FþÿFüuÚ¸€9Fþs‰FþÇFü¡úFH‹^ü;Ãr?Ñã�¿Gÿt0‹‡W;FþsLJWë ‹^üÑã‹Fþ)‡W‹^üÑ㋇W;Gr@£GÿFüu¶‹å]ËU‹ì‹^Ñã��G€]ÊU‹ìƒì¿G¸ÿ‹úFùOùOýãò¯tI‰‡¸ÿÿ;ÈuV‹úF‰Nþ‰Fü‹Fþ ÀtH‰FþÑà‹Ø‹�W;Nüwè‹Vþ‰‡‰NüëÜ‹‡Ñã÷‡G€tš³ä‹‡Ñã‹·GÑæÄ.‡&Çÿÿ‹‡ÑãÑãćg‰FòŒFô‹vvVÑæ‹‡Ä.‡&‰Ñá‹ÙX‰‡GÄ2‡&‹‰Fø=€u¸Ä~ò¹üò«ë;ÿ6 ÓÄ^òS¸P‹Føº¹ ãÑàÑÒâúRP�FúPš#€‰Fö Àt ¿ªæWPš Ô‹å]ÊU‹ìƒìƒ>$Ót鸴£$Óº¹ ã  w°P6ÿÃù¡Ó9øFs£øF‹FþF£þF‹6ÓÑæÄ ‡&‰;Gv°P6ÿÈù]ÊU‹ìƒì‹vÑæÄ ‡&‹‰Fú&‹HI‰Nø‰Fü‹Fü;Føw'ÑàÄ.‡‹ð&‹‰Nþºÿÿ;Êt &‰Ñá‹ÙLJGÿÿFüuÑ‹å]ÊU‹ìƒì ÇFúÇüF‹Fú Àtn‹úF;üFsd¹÷áP�FöPš*€‰Fþ=�t=PšìÇFü‹Fü;FúsÄ‹úF;üFsº¹÷áFö‹NøÑãÑ㉇g‰�gÿúFÿFüë΋Fú¹1Ò÷ñ‰Fúë‹¡üF‹úF+Ã=ƒr\¡üF-£üFÑàÑãÑã‹ð�ŒG‰�gŒŸg�„W‰‡gŒŸ g‹6üFÑæÑæ�„g‰‡ gŒŸg‹6üF�Æ€ÑæÑæ�„g‰‡gŒŸgƒúFë–ƒ>úFs ¸�PšÙÔ¸ÿ¿G‹úFüò«‹å]ËU‹ì‹N‹F;Ès>+Áº;Âr5¡úF;üFs,‹^ ÑàÑà‹ð‰Œg‰œg‹úFÑãLJGÿLJWÿúFVë¸]ÊU‹ìQƒ>$Ótÿ6 Óš€‰Fþ ÀtPšÙÔ‹å]ËU‹ì‹F€>€ÛtÌë�P𠀤]ÊU‹ìƒ~uß]ÊU‹ìƒìÄ^&Ǹ‹ÐÄ^ &‰&‰WÄ^&ŠG :Út¸ ëÄ^&ŠGÐØs¸éøÄ^&‹Gº&G&W‰Fø‰Vú&ÿw&ÄSÄ^&ÿwRP�FþPš#€‰Fü‹Vø‹~ú‹Nþ¾Ñþ‰Vô‰~öƒøu/ ÉtÄ^&9u&9Wr&‰W&‰ÇFüë Ä^&ÆGÿÇFü‹Fü ÀupÄ^&ÇG‹Fø‹VúÄ^&‰G&‰W‹FþÄ^&‰GÄ^&‹G&‹W;Vöu;Fôw4&ÆGÿÄ^&‹G&‹W&+G&W‰Fð‰Vò‹Fð&‰GÄ^&ƒuÇFü‹Fü‹å]ÊU‹ìQÄ^&ŠG :=ÚtSÿvÄ^ SÄ^Sšiüë<Ä^S�FþPÿ;Û‹Fþ Àu'Ä^SÿvÄ^ SÄ^Sšiü‰Fþ =ÚÄ^&ˆG ‹Fþ‹å]ÊU‹ìƒì¸‹ÐÄ^ &‰&‰W¸Ä^&‰Ä^&ŠO :åÚvÄ^&‰ë}¸&ÛÄVŒÇŒÞ±‹ØÓëó‹ÚÓëû;÷u$€â:Âu3 6ÛÐØr,¸&ÛP¸øðP¸P¸‹ÐRP¹Q¿rmWRPQ6ÿwú‰Fú Àu(Ä^&ŠG :»Úu ÄnÛ‰FŒFÄ^Sš�üÀu¸ éÇÄ^&ŠG ÐØs<&ŠG ÐØs4ƒ~u Ä^&Çë"Ä^&ÆG Ä^�G Ä^ &‰Z&‰WÄ^&Çë}Ä^&‹G&;Gr$SÿvÄ^ SÄ^S6ÿšú‰Fú ÀuXÄ^&ƒ?uLÄ^&‹G&‹O+Á;Fs‰F‹FÄ^&‰Ä^&ĉFüŒFþÄv&‹tÄ^ü�Ä^ &‰Z&‰WÄ^‹F&G¸‹å]ÊU‹ìƒì ¸‰Fþ‰Fö‹N ‹Fþ;ÈvBƒ~öu<Ä^S+ÈQ�FúP�FøPšü‰FöÄ^ ‹vþ�8Ävú‹NøŽFôüò¤Y‹FøFþë´‹FþÄ^&‰‹Fö‹å]ÊU‹ìQÄ^&ŠG :=ÚtSÄ^ Sÿv Ä^SšÂüë<Ä^S�FþPÿ7Û‹Fþ Àu'Ä^SÄ^ Sÿv Ä^SšÂü‰Fþ =ÚÄ^&ˆG ‹Fþ‹å]ÊU‹ìƒì ¸Ä^&‰Ä^&ŠO :åÚvÄ^&‰ë}¸ ÛÄVŒÇŒÞ±‹ØÓëó‹ÚÓëû;÷u$€â:Âu3 $ÛÐØr,¸ ÛP¸ýðP¸P¸‹ÐRP¹Q¿wmWRPQ6ÿwú‰Fö Àu(Ä^&ŠG :ÐÚu ÄrÛ‰FŒFÄ^Sš�üÀu¸ 鲸‰Fþ‰Fö‹N ‹Fþ;Èwé�ƒ~öté‡Ä^&‹W&;WrS‹ðÄ^ �R+ÈQ�FøP6ÿ�ú‰FöëTÄ^&‹G&+G‰Fø‹V ‹Nþ+Ñ;Ðs‰VøÄ^&ĉFúŒFüÄ^ ‹vþ�0Ä~&‹}Ä^ú�9‹NøŽ^ôüò¤YÄ^‹Fø&G‹FøFþécÿ‹FþÄ^&‰‹Fö‹å]ÊU‹ìÄ^&ŠG :åÚv¸ ë¸]ÊU‹ìÄ^&ŠG :åÚv¸ ë Ä^&ÆG ÿ¸]ÊU‹ìÄ^&Ǹ]ÊU‹ìÄ^&Ǹ]ÊU‹ì¸]ÊU‹ìÄ^&€ ÿtÄ^&ŠG :Úu &‹G& u°ë°ÿ]ÊU‹ìQÄ^"S¸3Pšä‰Fþ Àu2Ä^"SÄ^SÿvÿvÄ^SÄ^SÿvÄ^ Sÿv ÿvÿvš3‚”ë< ?ÛÐØs2Ä^"SÄ^SÿvÿvÄ^SÄ^SÿvÄ^ Sÿv ÿvÿvšÀ 븋å]Ê U‹ìÄ^ &ŠGuÐØsSÄ^Sš.‚ ë ?ÛÐØsÄ^ SÄ^SšL $ë¸]ÊU‹ìÄ^&ŠGuÐØsSÿvÿv Ä^Sÿvš"‚ìë$ ?ÛÐØsÄ^Sÿvÿv Ä^Sÿvšk$ë¸]ÊU‹ìÄ^&ŠGuÐØs Sÿvš6‚Œë ?ÛÐØsÄ^Sÿvšª$ë¸]ÊU‹ìÄ^&ŠGuÐØs Sÿvš!‚\ë ?ÛÐØsÄ^Sÿv6ÿþúë¸]ÊU‹ìÄ^ &ŠGuÐØsSÄ^Sš1‚ë ?ÛÐØsÄ^ SÄ^Sš@ë¸]ÊU‹ìÄ^&ŠGuÐØs Sš/‚ë ?ÛÐØs Ä^SšÅ$ë¸]ÊU‹ìÄ^&ŠGuÐØs$SÿvÿvÄ^SÄ^Sÿv Ä^Sÿvš0‚äë1 ?ÛÐØs'Ä^SÿvÿvÄ^SÄ^Sÿv Ä^Sÿvšë¸]ÊU‹ìÄ^&ŠGuÐØs$SÄ^SÿvÿvÄ^Sÿv Ä^Sÿvš+‚Ôë1 ?ÛÐØs'Ä^SÄ^SÿvÿvÄ^Sÿv Ä^Sÿvšý$ë¸]ÊU‹ìÄ^&ŠGuÐØsSÄ^ Sÿv Ä^Sš ‚4ë# ?ÛÐØsÄ^SÄ^ Sÿv Ä^SšA$ë¸]ÊU‹ìÄ^&ŠGuÐØsSÄ^ Sÿv Ä^Sš‚üë# ?ÛÐØsÄ^SÄ^ Sÿv Ä^S6ÿôúë¸]ÊU‹ìÄ^&ŠGuÐØsSÿvÄ^ SÄ^Sš7‚të# ?ÛÐØsÄ^SÿvÄ^ SÄ^S6ÿùúë¸]ÊU‹ìQ°Ä~¹‚üòªÄ^S¸Pšä‰Fþ Àu'Ä^SÄ^SÿvÄ^Sÿvÿv Ä^Sÿvš‚ë1 ?ÛÐØs'Ä^SÄ^SÿvÄ^Sÿvÿv Ä^Sÿv6ÿïú븋å]ÊU‹ìQÄ^S¸Pšä‰Fþ Àu*Ä^SÄ^SÿvÄ^SÿvÿvÄ^ Sÿvÿvš‚Ìë4 ?ÛÐØs*Ä^SÄ^SÿvÄ^SÿvÿvÄ^ Sÿvÿvš�œë¸‹å]ÊU‹ìQÄ^ &ŠGuÐØsSÿv Ä^Sš,‚äë ?ÛÐØsÄ^ Sÿv Ä^SšD븋å]Ê U‹ìÄ^ &ŠGuÐØsSÿv Ä^Sš)‚|ë ?ÛÐØsÄ^ Sÿv Ä^S6ÿûë¸]Ê U‹ìQÄ^ &ŠGuÐØsSÿv Ä^Sš2‚Lë ?ÛÐØsÄ^ Sÿv Ä^Sšˆ”븋å]Ê U‹ìÄ^&ŠGuÐØs Sš$‚ ë ?ÛÐØs Ä^SšE ë¸]ÊU‹ìÄ^&ŠGuÐØs Sš#‚Të ?ÛÐØs Ä^S6ÿûë¸]ÊU‹ìÄ^&ŠGuÐØs Sš5‚të ?ÛÐØs Ä^SšC$ë¸]ÊU‹ìÄ^&ŠGuÐØs Sÿvš&‚üë ?ÛÐØsÄ^Sÿvš ë¸]ÊU‹ìÄ^&ŠGuÐØs Sÿvš%‚Äë ?ÛÐØsÄ^Sÿv6ÿûë¸]ÊU‹ìÄ^ &ŠGuÐØsSÿvÿvš-‚¬ë ?ÛÐØsÄ^ Sÿvÿvš”ë¸]ÊU‹ìÄ^ &ŠGuÐØsSÿvÿvš*‚|ë ?ÛÐØsÄ^ Sÿvÿv6ÿ ûë¸]ÊU‹ìÄ^ &ŠGuÐØsSÿvÿvš4‚lë ?ÛÐØsÄ^ Sÿvÿvšo”ë¸]ÊU‹ìQÄ^&ŠG ŠÛ:ÁtIŠÛ:ÂtAŠÛ:Át9ŠÛ:Át1:ÿÚt+:Ût%:Ût:þÚt:Ût:Ût :Ât :Át¸ ë$€~v¸ëúŠFÄ^&ˆG1Ä^Sš† û¸‹å]ÊU‹ìÄ^&‚1   ÇG*ƒ~ôuÆFíÿë Ä^ö&‹Ä^&G*Ä^&‹G^‰Fî&ÇG`ÿÿÄ^&ÄG‰FðŒFòÄ^‹Fî&9G*tC Àu&‹G"ƒÀ‰Fî‹vîNÄ^ð&€8ÿu‰vîëî‹vîƒîÄ^ð�‰FöŒFøÄ^&‰w`Ä^ö&‹)Fîë±ûŠFíÐØséþúÄ^&ŠG4ÐØsm&‹G"Ñè&;Gva&÷Gt$&ÿwx°PšlÄ^&€OpÄ^&ÿwx&ÿwpšlÄ^&÷Gt"¸Pš4Ä^&‰G@Ä^&ŠG0ÐØrSš-4Ä^&ÆG4û�FúPš€$‰Fü Àu:šdÐØs.¸P�FìPšh€„‰FüŠFìÐØsÄ^&ÿwÿvú�GPšd€ë‹Fþ‹å]ÊU‹ìÄ^ &ŠG :ÿÚt :Ût¸ ë'úÄ^ &‹GÄ^&‰¸Ä^ &‰GÄ^ &‰G*Ä^ &‰G&û]ÊU‹ì�ìÄ^&‹G<‰Fò&‹G$‰Fø&ÄG‰FüŒFþÄ^&ŠG/´‰F급FîˆFäÄ^&‹G ‰Fô‹N ;Nî±ÿwA À°ÿw@"ÈÐÙré8‹^òÑã.ÿ§9‹F +Fî‰Fð‹Nô;Èré‰NðÄ^&‹G(‰Fú‹Nø+ȉNö;Nðvé ‰Nð&ÇG(é Ä^‹Fð&G(Ä^ ‹vî�0Ä^ü‹~ú�9‹NðŽ^âüò¤Y‹FðFîúÄ^&)G ûél‹F +Fî‰Fð‹Nô;Èré‰NðÄ^&ŠGjÀuéH&8Gkté$Ä^ ‹vî&Š€ø u逸 uééèéÇFòÄ^&ŠGj&*Gk´‰Fæ9Fðwé‰FðÄ^&‹G(‰Fú‹Nø+ȉNö;Nðvé‰NðÄ^ ‹vî�PÄ^ü‹vú�Pÿvðš[4‰FìFîFú‰Fú;FøtéÇFú‹Fð;FìwéÇFò‹FúÄ^&‰G(úÄ^‹Fì&)G ûÄ^‹Fì&Gké{Ä^ ‹vî&ŠˆF倸 téVÄ^&ÆGk¸9FêtéÆFå ÆFäÿÿFî‰Fòé/�~êtéÆFå ÆFäÿÇFòéƒ~êté ÆFäÿÿFîÇFòéd€~å té)Ä^&ÆGkÆFäÿÿFî�~u&‚/u&‚lu&‚ju Ä^&ÇG<ë Ä^&ÇG<]ÊU‹ìƒì\Ä^"&‹GL‰Fâ&‹GJ‰Fà&‹Gx‰FÞ&‹Gz‰FÜ&‹G‰FÚ&ŠGuˆFÍ‹û°¹‚üòªŠFÍÄ^"&ˆGu°ÿÄ^"&ˆG Ä^"&ÇGÿÿÄ^"&ˆG öFt2‹FâÄ^"&‰GL‹FàÄ^"&‰GJ‹FÞÄ^"&‰Gx‹FÜÄ^"&‰Gz‹FÚÄ^"&‰Gƒ~ s‹F=wmtZ=amtU=mmu8ëNÄF‰FèŒFê‹Ø�G Ä^"&‰GZ&‰W‹F¹ +ÁÄ^"&‰G$‹F+ÁÄ^"&‰G ƒ~ s‹F=rmt =tmt=mmu[¸ éhÄF ‰FäŒFæ‹Ø�G Ä^"&‰GZ&‰W‹F ¹ +Áº+ÂÄ^"&‰G"‹F+Á+ÂÄ^"&‰GbÄ^"&ÇG`ÿÿÄ^"&‹G"±Óè&‰GfÄ^&ŠG<séì<wTÄ^&ŠG´Ä^"&‰GÄ^&€wzÄ^&ŠG´Ä^"&‰GÄ^&€w`Ä^&ŠG´Ä^"&‰GÄ^¸K&9Gwx&9GdwrÄ^&‹GÄ^"&‰GsÄ^&‹Gd Àt Äv"&‰Dqë Ä^"&‹Gs&‰GqÄ^&‹G ÀuéWƒøwJÄ^&ŠGÄ^"&ˆGvÄ^&‹GÄ^"&‰G6Ä^&‹G Ä^"&‰G8Ä^&€ wÄ^&ŠG Ä^"&ˆG.Ä^&€ véÄ^&ŠG Ä^"&ˆG/Ä^&ŠGÄ^"&ˆGhÄ^&ŠGÄ^"&ˆGiÄ^&ŠGÄ^"&ˆGjÄ^&ŠGÄ^"&ˆGlŠFÄ^"&ˆGw¸pñPÄ^S¸Pš€¼ƒøÿ°ÿt@ˆFÈÄ^&Š<t<uOŠFÈÐØs Ä^&€?t?ŠFÈÐØr Ä^&€?t/‹F ‰F=wmt=amuÄ^&€?u þÚë/ Ûë*Ä^&€?u¸' ë6�~mmu Ûë‹F=rmt=tmu ÿÚÄ^"&ˆG �~mmuÄ^"S°ë ¸éÄ^"S°Pš ‰Fô¸‰FþPš4Ä^"&‰G@Ä^"&ŠG :ÿÚt:ÛuÇFþëÇFþÿvþš4Ä^"&‰G>ÇFð‹Fðƒøvé�Ñà‹ðÄ^"&Ç@F‹vðÑæÄ^"&ƒx"ti&öGwub�@JPš(€‰Fô Àu,‹vðÑæÑæÄZä‰^ìŒFî¸&‰Ä^ì&‰G Ä^ìSš1€‰Fô Àtéö‹vðÑæÑæÄFìÄ^"&‰@VZ&‰PXÄ^ì&ÇGÿFðtéhÿÄ^"&öGwtéò‰^¥ŒF§Ä¾Û‰F©ŒF«ÄÂÛ‰F­ŒF¯ÄÆÛ‰F±ŒF³ÄÊÛ‰FµŒF·°ÿˆF¹ˆFºˆF»ˆF¼Ä^"&‹Gs‰F½&‹Gq‰F¿Ä^&ŠGcˆFÁ�FøP�FöPšô ÀtÇFøƒ~ø r ƒ~örÇFø ƒ~ø ršdöЈFÇÇFð$ëÇFðÄ^Sÿv�F¥Pÿvð�FÎP¸Pš,‰Fô ÀtÄ^"Sš4 ‰Fò‹FôéD‹FÎÄ^"&‰G‹FÐÄ^"&‰Gx‹FÒÄ^"&‰GzÄ^"&ƒs &‹_ƒëë Ä^"&‹_ƒëЇdñ´‰FÖÄ^"&‹wŠ„kñ´‰FØ&Š_vþË·Š‡hñ´‰FÔúÄ^"&ÿwx°Pšl‹FÔÑàÑàƒÀ@FØÄ^"&ˆGoÄ^"&ÿwx&ÿwošlÄ^"&ÿwx°PšlÄ^"&ŠG :Ût:þÚuÄ^"&‹G Àtƒøu Ä^"&ÿwx°ë Ä^"&ÿwx°PšlÄ^"&ÿwx°PšlÄ^"&ŠG :ÿÚt@Ä^"&ŠG :Ûu&‹G Àtƒøu1‹FÖ¹@÷á@ë2Ä^"&ƒu&ÆGnë(Ä^"&ƒu ‹FÖ¹@÷á@ë‹FÖ¹@÷á@ƒÀ Ä^"&ˆGnÄ^"&ÿwx&ÿwnšlÄ^"&ÿwx°Pšl‹FÖ¹ ÷ဃÀ Ä^"&ˆGpÄ^"&ÿwx&ÿwpšlûšdÐØs¸P�FÌPšh€„‰FôŠFÌÐØs|ÿv$¸P�F$PšP€‰Fô ÀugÄ^"&ÄG‰FúŒFüÄ^"&‹G& Gtÿvü¸P�FüPšP€‰Fô Àu5Ä^"&ÄG‰FúŒFüÄ^"&‹G& Gtÿvü¸P�FüPšP€‰Fô Àu¸‹å]Ê U‹ìƒìÇFøÄ^&ƒÿuéÏú&ÿwx°PšlÄ^&ÿwx°PšlûÄ^&ƒLtb&ÄGZŒÇ øtX‰FüŒFþ‹Ø&ÇGÄ^&ÿwL�FòPš< ÀtëúÄ^ü&ÇÄ^&‹GLÄ^ü&‰GÄ^ü&ÇGûÄ^&ÿwL�FòPš´‰FúúÄ^&€gp}Ä^&ÿwx°PšlÄ^&ÿwx&ÿwpšlûÄ^&öGwu&ÿwš-,‰Fú Àt‰FøÄ^&ÆG ÿÇFö‹Fö¹;Áw|Ñà‹ðÄ^&ƒx"tf&„Owu?&‹HJ ÉtQš)€‰Fú Àt‰Fø‹vöÑæÑæÄ^&Ä@VŒÇ øt4Pš2€‰Fú Àt&‰Føë!‹vöÑæÑæÄ^&ÄXV‰^üŒFþ¸&‰Ä^ü&‰GÿFötézÿšdÐØs¸P�FíPšh€„‰FúŠFíÐØsmÿv¸PšQ€‰Fú Àu]Ä^&ÄG‰FîŒFðÄ^&‹G& Gtÿvð¸PšQ€‰Fú Àu0Ä^&ÄG‰FîŒFðÄ^&‹G& Gtÿvð¸PšQ€‰Fú Àu‹Fø‹å]ÊU‹ìÄ^&ŠG :ÿÚt/:Ût):Ût#:þÚt:Ût:Ût:Ût :Ût¸ ë Ä^Sš4 ]ÊU‹ì¸]ËU‹ìƒì¸Ä^&‰‰Fþ¸‹ÐÄ^&‰&‰WÄ^&ŠG :Ût:ÛuÄ^SÿvÄ^SÄ^Sš<ëÄ^&ŠG :ÿÚt :Ût¸ éÔÄ^&ƒFtS¸Pš´‰Fþ ÀuáÄ^&‹Gb;Fs‰Fú°ˆFíÄ^&‹O*&‰OdÄ^&ƒ`ÿté—‹N&9Os.ûS´PÄ^&+Qÿv Ä^Sÿv¸ZPše´‰Fþ ÀuƒÆFíÿë^Ä^&ÄGÄ^&‰Z&‰WÄ^&‹G*Ä^&Ä^‹F&9GwÄ^&‹GÄ^&‰Ä^&‹Ä^&)GÄ^&‹Ä^&G*Ä^&‹G*&‰G^ëjÄ^&ÄGÄ^&‰Z&‰WÄ^&‹G*Ä^&Ä^&ÄG‰FöŒFøÄ^&‹G`FöÄ^ö&‹ƒè‰Fô‹N;Ès#&)Ä^‹F&)GÄ^‹F&G*‹FÄ^&‰é·Ä^‹Fô&)G‹FôÄ^&‰Ä^ö&Š_·Ñ㋇vñ‰Fþ ÀuÄ^&  êtéÇFòéÇFòé2€~å téÄ^&‚ltéÆFäÿÿFîÇFòéèÄ^&ŠOlµ&ŠGk´1Ò÷ñ+ʉNèté &ŠGl´‰FèÄ^&ŠGjÀué&ŠOkµNè´;Áréé6ÿFî‹Nô‹Fè;Èré+ÁÄ^&ˆGm‹Fô‰FèÇFòéÇFòÄ^&‹G(‰Fú‹Nø+ȉNöú‹Fè&)G ûÄ^‹Fè&Gk‹Fö;FèvéÄ^ü‹vú�8‹È° üòª‹Fö)FèÇFú‹Fè ÀuéÄ^ü‹vú�8‹È° üòª‹FèFú‹FúÄ^&‰G(é"€~å téÄ^&ÆGkÆFå ÆFäÿÇFòéÌéªÄ^ ‹vî&Š€ø u逸 téÄ^ ‹vî&ŠˆFåÆFäÿÿFîÇFòévÆFå ÆFäÿÄ^&þOmÄ^&‚mtéÇFòÄ^&þGkéKÆFå ÆFäÿÇFòé;Ä^&ÆGk¸9Fêté ÆFå ‰Fòé ÆFå ÇFòÆFäÿéfÛÌ�Ñü ŠFäÐØré@Ä^&‹G(‰Fú‹ðŠFåÄ^ü&ˆ‹Fú@‰Fú;FøtéÇFú‹FúÄ^&‰G(úÄ^&ÿO ûÆFäé£û‹FîÄ^&‰‹FòÄ^&‰G<úÄ^&ŠG0ÐØsé=&‹G &;G$ré0&ŠG2ÐØsé%&ŠG3ÐØsé¸Pš4Ä^&‰G@Ä^Sš-4û¸‹å]ÊU‹ì�ìÄ^&ÇÄ^&ŠG :Ûué:Ûué :ÛtéÄ^SÄ^SÿvÄ^SšL‹å]ÊÄ^&ŠG :Ûué:Ûué:þÚué ¸ ‹å]ÊÄ^&ƒHuéS¸Pš´‰Fþ Àué‹å]ÊÄ^&ÆG|Ä^SÄ^Sÿv�FúPš$‰Fþƒ~þtéf‹F;Fúwé[ÄFP¿W‹Ø&‹G$ÑèPÿv Ä^Sÿv¸,Pše´‰Fþ Àté(Ä^SÄ^‹vú�P‹F+ÆP�FüPš$‰Fþ‹FüFúé‘ÿ‹FúÄ^&‰‹Fþ‹å]ÊU‹ìÄFPÄ^ S‹N QQÄ^S¹QŽFþPQšý$]ÊU‹ìQQÄ^&ŠG :Ûué:Ûué:Ûué :ÛtéÄ^Sÿvš¤‹å]ÊÄ^&ŠG :ÿÚuéH:Ûué?:Ûué6:þÚué-:Ûué$:Ûué:Ûué:Ûué ¸ ‹å]ÊÄ^&ƒHuéS¸Pš´‰Fþ Àué‹å]ÊÄ^&ŠG :þÚtéEŠFÐØré;&‚1té1S¸„ñP¸PP�FüPÿv Ä^Sÿvšý$‰Fþ Àué‹å]ÊÄ^S¸P¸ÿÿPÿv Ä^Sÿv¸,Pše´‹å]ÊU‹ìÄFPÿv¹QPQšk$]ÊU‹ìÄ^&ŠG :Ûué:Ûué :ÛtéÄ^SšeÜ]ÊÄ^&ŠG :Ûué:Ûué:þÚué¸ ]ÊúÄ^&‹G$&‰G ¸Ä^&‰G,Ä^&‰G(û]ÊU‹ìQÄ^&ŠG :Ûué:Ûué :ÛtéÄ^S°Pš¤‹å]ÊÄ^&ŠG :ÿÚuéH:Ûué?:Ûué6:þÚué-:Ûué$:Ûué:Ûué:Ûué ¸ ‹å]ÊÄ^S°Pšª$‰Fþ Àué‹å]ÊúÄ^&ÿwx°PšlÄ^&ÿwx&ŠGp€ÈPšlû¸Pš€Œ‰FþúÄ^&ÿwx°PšlÄ^&ÿwx&ÿwpšlû‹Fþ‹å]ÊU‹ìÄ^ &ŠG :Ûué:Ûué:Ûué :ÛtéÄ^ SÄ^Sš¸Ü]ÊÄ^ &ŠG :ÿÚuéF:Ûué=:Ûué4:þÚué+:Ûué":Ûué:Ûué:Ûué¸ ]ÊÄ^ &ŠG|Ä^&ˆ°Ä^ &ˆG|´]ÊU‹ìƒì*¸–ÛP�FÖPšô ÀtÇ–Ûƒ>–Û u ƒ~ÖrÇ–Û ƒ>–Û s2Ä^SÿvèðÐØs#Ä^SÿvÄ^Sÿv Ä^Sÿv¸Pš\ëeƒ>–Û s¿ ÛÄv‹N ŽFÔüò¤¸ Û‰FŒ^ÆFÚÆFÛÇFâÄF‰FêŒFì‹F‰FîÄF‰FðŒFò‹F ‰FôÄF‰FöŒFø‹F‰Fú�FØPè’‹å]ÊU‹ìƒì(ƒ>–Û s‹F ŠÄÀuÿv ÿvÿv¸Pš\ë'°ˆFÚˆFÛÇFâ‹F ‰Fä‹F‰Fæ‹F‰Fè�FØPè;‹å]ÊU‹ìƒì(ƒ>–Û s‹FŠÄÀuÿv¸Pš\ë°ˆFÚˆFÛÇFâ‹F‰Fä�FØPèö‹å]ÊU‹ìƒìƒ>–Û s‹F ŠÄÀuÿv ÿv Ä^Sš*\ë8ƒ>–Û rÿv ÿv Ä^Sš7€¤ëĘۉFúŒFüÿv ÿv Ä^SÄ^úSšì‹å]ÊU‹ìQQƒ>–Û s‹F ŠÄÀuÿv ÿvÿvš8\ë1ƒ>–Û rÿv ÿvÿvš8€ÔëĜۉFüŒFþÿv ÿvÿvPšì‹å]ÊU‹ìQÄ^Sÿv�FþPšF\ Àt°ë ŠFÿÀ°ÿt@‹å]ÂU‹ìƒìÄ^&Ç&ÇG�FøPš€d‰Fþ ÀuF‹FøÄ^&‰G&ÇGSšÄ‰Fþ Àu(ÿvø�FúPš´‰Fþ Àu‹F;Fút¸ ëÄ^&‹G‹å]ÂU‹ì‹^Ñã.‹‡]ËU‹ì‹^Ñã.‹‡&]Ëû b‡Ž�ÎËU‹ìPSQRVWÅ^ö‡0u ‹—xÿ—@Ƈ0ÿ_^ZY[X]ÊU‹ìÅv Ä~‹Nãü¬< t< t < t< tªâì+~‹Ç]Ê U?ÿÃU°ëð>îÿ—@‹�Hã ;� w¿ë3ÀËÇ�FÑçıV&ƒ¼t&ƒ¼u#&ƒ¼t&Ç„&Ç„Ñï‹�BÑçÅ™NË ÿtƇ23ÀËU°(ëð>îÆ‡0ÃU‹� ;�$t6Ä·&‹”öÿ&‰”ôÿ‹Ö·,&ŠFA‰� +ò;·$r3ö‰·,‹—zëð>îÃULJ@ûƒ¿Hÿu‹� ‰�Hë›ÃU°‹� ;�$tö‡2uLJ@ ëÁLJ@ûë¹ÃU°ëÙÃU‹¯&°ëð>îëð>ìŠÈ‹—zëð>ìöÁpt‹—xŠà°0ëð>îŠÄöÁ tf‹¿ƒï.Š¥Š"Ä÷‡tP÷‡t,<t<u$èhöÁ tS´è¢ëLƇ2ÿ�¿@ uçLJ@ûëß‹—d+Õw—";—fw ƒ¿"tÆèìÿ—>‹�Fãƒùÿt;�w¿émþ3ÀËéEÿËU÷‡t2‹— ö‡2t'Ƈ2;—$t�¿@ûuLJ@ ö‡0uSš-4ÃÆ‡|ÿëøÃUÃUöÁpu3€¿1u,<t&<t"€¿.tö‡5u < u° Ƈ5ÿë Æ‡5< tY‹—d;êr‹—"ƒê;êwNöÁptöÁ@t´ë9öÁt´ë0´ë,ö‡ht :‡iu´ëÄ¿&ˆE‰¯&ÿ‡&‹•öÿ&‰•ôÿÃèâÿènÃ;¯d´rXƒ¿drQŠáƒ¿`ÿu‰¯`ƒÅ‹Õ+—^‹�"Ä¿&‰Sý&ÆCÿƒÁ+Ít&ÆÿEâù3퉯^‰¯&ƒ¿FtLJFÿÿŠÌéRÿ´èLJ>ÎÃUƒ¿`ÿu‰¯`ƒÅ‹Õ+—^‰¯^‰¯&Ä¿&‰Sý&ˆcÿƒ¿FtLJFÿÿÃÃU‹—d;êt&r‹—"ƒê;êv ;¯drƒ¿drLJ>�èQþé”þƒ¿tíÄ¿V&‹•&‰•ÃUƇ4ÿ÷‡tRP‹—x°ëð>p$ýˆ‡pëð>îXZ÷‡tLJ@‡ö‡0uSš-4ÃÃUëð>ìŠÈ°ëð>îöÁ€tJ‹—zëð>ìÆ‡|ÿƒ¿"t5‹¯&‹—dƒê;êw&‹—"ƒê;êw;¯^s‰¯^´èèþƒ¿Fÿu3ÿéõû3ÀËËU‹ìƒìÄ^&ÇÄ^&ŠG :Ût:ÛtSÿvÄ^ SÄ^Sš^ëVÄ^&ÄG?Ä^ &‰Z&‰WÄ^&ÄG?‰FüŒFþÇFú¸–9Fv‰FÄ^SÿvÄ^Sš©t‰FøÄ^&ƒ?t=Zu¸Zé3‹Fø ÀuöÄ^&€.téÖ&ŠG9ÐØs!Ä^ü&   Ü£@ÜŒBÜÇÒÛ°¢ÔÛ¢ÕÛ¸ÖÛPš€$‰Fþ ÀtPš€œ¡.Þ£ØÛÇÜÛ0¸£ÚÛŠxÞˆÞÛˆßÛÄ@Ü&ŠOˆàÛ¢áÛ‹^‚¿nÞuÆâÛëÆâÛ¸ÒÛPšÄ‰Fþ ÀtPš€œ‹å]ÊU ÿu. Ét!;Êv ÷ñ3ö‹ú3Òë@�‹ø‹Â3Ò÷ñ—÷ñ‡×3öë.�¸P𠀤‹é‹ß3ö‹þ¹ ÑçÑÖÑàÑÒƒ×+ýó@sýóHâç]ËU‹Ø‹ò÷ç–÷áð‹Ã÷áÖ]ËU‹ìÄ^S‹F±ÓèPš„]ÊU‹ìƒì¸1±ÓèƒÀ;Fv¸†ëT�FøP�FöPšô‰Fú Àu>ƒ~ø s¸‹Ð£²Þ‰´Þ�FüPš€œ‰Fú Àtëq¸ P¸P¸²ÞPš/€$‰Fú ÀtÔëVÄF£ŽÞŒ�Þ‹Ø&ÆGšdˆFïÄŽÞ&ˆGŠFïÐØs1Ä^S¸PšC€‰Fú ÀuÄŽÞ�G$P¸PšC€‰Fú Àt.éô¡ŽÞ¹PÁ±Óè�ÞX©tÿNÇŽÞ¡�ÞÄÊñ&‰GüŠâñ·ÑãÑã�‡èñ‰Fô‹FÄŽÞ&‰ÄŽÞ&ÇG Ä^ü&‹ÄŽÞ&‰GÄŽÞ&ÇGàñÄŽÞ&ÇG €Þ°¢�ÞÆ‚ÞÿÄŽÞ&ÇGèñ‹NôÄŽÞ&‰OŠNïÐÙsO´ÄŽÞ&‰GÄŽÞ�W$+ŽÞƒÂ±Óê‹N+ÊÄŽÞ&‰OÄŽÞ&‰G¸|ÞÄŽÞ&‰G&Œ_ ¸àñŒØÄŽÞ&‰G"ëj¸2±Óè�ÞÄŽÞ&‰GÄŽÞ&‹G&‰G¡�ÞÄŽÞ&‰G‹F�Þ-ÄŽÞ&‰GÄŽÞ&ÇG `Šâñ·ÑãÑã¡äñ¹÷áØ�‡èñÄŽÞ&‰G&Œ_ ãñÐØré–ÆFîÿ¸‰Fò‰Fð¡äñH‹Nð;Ár~‹Á¹÷á‹ð‹^ô€8šueŠVïÐÚsÆêëY‹Fð¹÷á‹^ô‹ð‹P;Vòt þFî‹@‰Fò¡˜ñŠNîµ+ÁP‹Fð¹÷á‹ðX‹^ô‰@ŠFî´±Óà–ñP‹Fð¹÷á‹ðX‹^ô‰@ÿFðtéwÿ¸‹å]ÊU‹ìƒìÄŽÞ&‹‰Fô9F ué.ÄŽÞ&ŠGˆFëö€? uÄ^&ÿÄ^ü�GÄ^ &‰Z&‰W°Ä^&ˆG9´‰Fò‰FôÄ^&‹H‰Fö¸ÿÿ9Fôu釋Nö+NòÄ^ü‹vò�8° ü‹Ñãò®uø+ÑJ‰VôƒúÿtщVò‹òÄ^ü&Æ ‹Fö;Fòu Ä^&ÆG9ÿë³Ä^ü‹vò&€x u¦Ä^&ÿ‹Fò@‹Nö;Ás•‹FòƒÀ+ÈAÄ^ü‹vò�pÄ^ü‹~ò�yŽ^îüò¤Yë¹Ä^&‹GE Àu>Ä^&ŠGGÐØs0&ŠGHÄ^&‹Äv &Ä<ü‹Ñãò®uø+ÑJ‰Vôƒúÿt BÄ^&‰¸ë¸‹å]ÊU‹ìQQÄ^ &ŠG :Ût:Ût :Ût:Ûué£Ä^ &ŠG :ÿÚt-:Ût':Ût!:þÚt:Ût:Ût:Ût :Ûtéîƒ~ wc‹^ Ñã.ÿ§q�–Ÿ÷,B]f~‡�™Ä^ &‹Gë~Ä^ &‹GëuÄ^ &ŠG :Ûu$&‹Gs&;Gqt'Ä^ &ƒsu$Ä^ &ƒqu¸éáÄ^ &ŠG :ÿÚuÇFþëÇFþ‹vþÑæÄ^ &‹@që3Ä^ &ŠGvë@Ä^ &ŠG :ÿÚtBÄ^ &‹G8ëßÄ^ &ŠG :Ût,Ä^ &‹G6ëvÄ^ &ŠG :ÛtÄ^ &ŠG.ë^Ä^ &ŠG :ÿÚu¸ ë]Ä^ &ŠG/ëCÄ^ &‹Gë<Ä^ &ŠGh´¹÷á&ŠOiµÁë$Ä^ &‹GqëÄ^ &‹GsëÄ^ &ŠGlëÄ^ &ŠGj´‰Fü‹FüÄ^&‰¸‹å]Ê U‹ìQQÄ^&ÇÄ^&ŠG :Ût?:Ût9:Ût3SÄ^ Sÿv Ä^Sš½ëMÄ^SÿvýšŒ‰Fþ‹Fþ Àu6Ä^&ÿÄ^&‹;F s"Ä^ ‹ð&ŠˆFýÄ^&ŠO :ÛuÀSPš÷Œëø‹å]ÊU‹ì‹F÷f]ÊU‹ì‹F‹V ÷v]ÊU‹ì‹F‹V ÷v‹Â]ÊU‹ì‹F‹V%þ]ÊU‹ì¸P𠀤]ËU‹ì¸P𠀤]ËU‹ì¸P𠀤]ËU‹ì¸P𠀤]ËU‹ì¸P𠀤]ËU‹ì¸]Ê U‹ì+ÀœZÑâr â÷ÂtH‹å]ËU‹ì+ÀœZÑârH‹å]ËU‹ì3À» ŽÃ&ÄLŒÂ&;Wt¸ÿ]ËU‹ì‹F‹Vëð>î]ÊU‹ì‹Vëð>ì]ÊU‹ìQQÄ’ñ&ĉ^üŒFþ&ŠG ¢zÞ&ŠO'ˆxÞ< t < t ¸Pš€œ‹å]ÃU‹ìƒì& yÞÐØs èºÿšÓtÆyÞÇFêÆFìÆFí�FîPš€$‰Fâ Àtéà�FäPš(€£ÐÛ ÀtéÉ‹Fä‰FðÇFô0¹‰NòÄ^&ŠWˆVøŠxÞˆVöˆV÷�VÞ‰VúŒ^üÇFþˆNù&‹_Ñ㉇ðÛ�FêPšÄ‰Fâ Àuÿvä�FæPš´‰Fâ Àu ‹Fò‰Fâ Àtÿväš)€£ÐÛÄ^&‹_ÑãLJðÛ‹Fâë>ÄF‹Ø&‹wÑæÑæ‰œDÜŒ„FÜÄ^ÞSš ‰^ÚŒFÜÄv&‹\ÑãÑãÄFÚ‰‡pÜŒ‡rܸ‹å]ÊU‹ìƒìÇFð°ˆFòˆFó�FôPš€$‰Fæ Àu|Ä^&‹wÑæ‹„ðÛ‰Fê‰FöÇFú0¸‰FøŠxÞˆNüˆNý&ŠOˆNþˆFÿ&‹GH‰Fè�FðPšÄ‰Fæ ÀuOÿvêÄ^&ÿw=S°PšÝtÿvê�FìPš´‰Fæ‹^èÆ‡dÞ‹Fø ÀutÇFð°ˆFòˆFó�FôPš€$‰Fæ Àuà‹Fê‰FöÇFú0¸‰FøŠxÞˆNüˆNýÄ^&ŠOˆNþˆFÿ�FðPšÄ‰Fæ Àtÿvêš)€£ÐÛÄ^&‹_ÑãLJðÛ‹Fæë4ÿvê�FìPš´‰Fæÿvêš)€£ÐÛÄ^&‹_ÑãLJðÛ‹Fæ Àu‹Fø‹å]ÊU‹ìƒì0ÇFâÆFäÆFå�FæPš€$‰FÜ ÀuqÄ^ &‹wÑæ‹„ðÛ‰FÚ‰FèÇFì0¸‰FêŠxÞˆNîˆNï&ŠOˆNðˆFñÆFò&ÄO?‰NúŒFü‹N ‰NþÇFøÄ^‰^ôŒFö&‰Ä^ &‹GH‰FÖ�FâPšÄ‰FÜ Àté¶Ä^ &ƒ;ÿu ÿvÚ¸PSëÿvÚÄ^ &ÿw;S°PšÝtÿvÚ�FÞPš´‰FÜ‹^ÖÆ‡dÞÄ^Þ&‹G‰FÜÄ^±&Ó‹FÜ=Ct=cuÇFÜZÄ^ &ÄG?‰FÒŒFÔÄ^&ƒ?t.ÇFØÄ^&‹H‹NØ;ÁrÄ^ &‹_ƒëЇ`Þ‹ñÄ^Ò& ÿFØu׋FÜÄ^ &‰GE‹FÜ‹å]Ê U‹ìQ°Ä^ &ˆGÄ^ &ˆGÄ^&ŠGÄ^ &ˆGÄ^&ŠGÄ^ &ˆGÄ^°&8Gt/Ä^&€u Ä^ &ÆGë"Ä^&‚u Ä^ &ÆGëÄ^&ŠGÄ^ &ˆGÄ^&ŠG<t<u°ÿë°Ä^ &ˆGÄ^ &ˆGÇFþ‹Fþƒø w"Ñà‹Ø‹‡@ÞÄ^&;Gu ‹Fþ@Ä^ &ˆë ÿFþuÖÄ^ &Æ ‹å]ÊU‹ìƒì&ÇFâ°ˆFäˆFå�FæPš€$‰FÚ ÀuoÄ^ &‹wÑæ‹„ðÛ‰F܉FèÇFì0¸‰FêŠxÞˆNîˆNï&ŠOˆNðˆFñŠFˆFò<uÇFø ÄF‰FôŒFöë‚~uÇFþ ÄF‰FúŒFü�FâPšÄ‰FÚ ÀuÿvÜ�FÞPš´‰FÚ Àu‹Fê‰FÚ‹å]Ê U‹ìƒìÇFø‹Føƒø w8ÑàÑà‹Ø‹¿rÜ ¿pÜt#ćD܉FúŒFüŒÇ øt‹Ø&ƒ t PšÚĉFþÿFøuÀ‹å]ËU‹ìƒì¸.ÞPš(€‰Fú ÀtPš€œ¸O‰FéŒNë¸.Þ‰FüŒ^þ‹Fþ‰Fí¸‰Fï¹,Þ‰NüŒ^þ‹Nþ‰Nñ¹(Þ‰NóÆFõ‚ˆFö‹.Þ‰N÷ˆFù�FéPšT‰Fú ÀtPš€œ‹å]ËU‹ìQ¸£0Þ£2ÞÇ4Þ¡.Þ£6Þ¸0ÞPš1€‰Fþ ÀtPš€œÿ6.Þ¸<ÞPš´‰Fþ¸ÒÛÄ<ތnjޱ‹ØÓëó‹ÚÓëû;÷u$€â:Âu�>ÜÛ0tÁš1t‹Fþ ÀtPš€œÇ4Þš„të¢U‹ìQÄ^&‹GH‰Fþƒ~ t9‹F ¹ ÷á‹^þÑ㉇Ü‹F‰‡ðÛ‹^þÑãÑãÄF‰‡ÜŒ‡ÜŠF‹^þˆ‡nÞÆ‡dÞÿ‹å]Ê U‹ìQúÇFþ‹Fþƒø w+‹ØŠ�dÞÐÙsÑã‹�ÜI‰�Ü Éu ‹ØÆ‡dÞPšstÿFþuÍû‹å]ËU‹ìQ‹^ÑãÑãć  ÐÐØs&‹G‰Fþ‹F ÄŽÞ&G-‰Fú‹F ;FôvNŠFëÐØséÂÄŽÞ&‹G ‰Fü‹Fü‰Fø¸`ÄŽÞ&+G ‰Fö¹1Ò÷ñ‹ÈÄvüÄ~øŽ^èñNñNùOùOýò¥ë|‹Fô+F ‰FòŠNëÐÙs¹‹ÑRQP¸Pši€d‰Fì ÀtV釸ÿÿPÿvÿv°PÿvòšP‰^îŒFðÄŽÞ&‹G ‰Fü‹Fü‰Fø¸`ÄŽÞ&+G ‰Fö¹1Ò÷ñ‹ÈÄvüÄ~øŽ^èüò¥YŠFëÐØs‹Fô+F ÄŽÞ&)G‹F ÄŽÞ&‰ŠFëÐØr ‹FúÄŽÞ&‰G¸‹å]ÊU‹ìÄŽÞ&‹]ËU‹ìƒìÄ^&‹G(‰Fü&‹G ‰Fú&‚1t SÿvšO¬é¨Ä^&€/ut€~ u@&ŠG:ÐØr8S° PšO¬‰Fþ ÀuÄ^S° PšO¬‰Fþ ÀthÄ^Sÿvü¸PšŒëUÄ^SÿvšO¬‰Fþ ÀuD€~ u Ä^&ÆG:ÿë1Ä^&ÆG:ë'Ä^&€/u €~ uS° PëÄ^SÿvšO¬‰Fþ‹Fþ‹å]ÊU‹ìQQÄ^&ŠOBµ‰Nþ&ŠGE´1Ò÷ñ+ʉNü&ŠGE´Á&ŠODµ;Ès¸ÿÿë‹Fü‹å]ÊU‹ì‹FÄ^ &‰G(úÄ^ ‹F&)G û]ÊU‹ìQÄ^&‚/tS° PšO¬‰Fþ Àu&Ä^&€/tS° PšO¬‰Fþ Àu °Ä^&ˆGE´‹å]ÊU‹ìƒì Ä^&‹G(‰Fú&ŠGE´‰Fü&ŠGB´‰Fø Àué•P&ŠGE´Y1Ò÷ñ+ʉNø&ŠGE´Á&ŠODµ;Ès Sš6ŒëlÇFö‹Fø;För\Ä^&ŠGE&:GDuSš6Œ‰Fþ ÀuDÄ^S° PšO¬‰Fþ Àt!Ä^Sÿvú‹FöHPšŒŠFüÄ^&ˆGE‹FþëÄ^&þGEÿFöuœ¸‹å]ÊU‹ìƒìÄ^ &‹wÑæÑæÄ„ºÞ‰FøŒFúÄ^ &‹_ÑãÑãćêÞ‰FôŒFö‹~ú ~øtŒÇ øu ¸Pš€œŠF ´ÑàÄ^ø‹ð&‹‰Nò�‰FüŒFþ÷Á€t(¸ÿ#ÈÄ^ô‹ñ�HÄ^&‰Z&‰W‹vò#ðÄ^ô&Š´ëÄ^ü&Š:F t Äv&‰Z&‰T¸‹å]Ê U‹ìƒìÄ^&‹G(‰Fö&‹G ‰Fô&‚1t SÿvšO¬é­Ä^&ŠGQÐØréË�F‰FüŒ^þSÿv�FüPšHŒ‰FúƒøwÄ^ü&Š:Fué�ÇFð‹FúH‹Nð;Ásé[Ä^ü‹ñ&ŠˆFÄ^&ŠOE&:ODu< t< tSš6Œ‰Fø Àu{Ä^SÿvšO¬‰Fø Àu~Ä^&‚/u€~ tÄ^&‚/t €~ u&ÆGEëŠF< t< t < tÄ^&þGEÿFðtékÿéÑ€~ uSÄ^&‚/t)S° PšO¬‰Fø Àu\°Ä^&ˆGEÄ^&€/u´é›Ä^S° PšO¬‰Fø ÀuÒÄ^&‚/uzë`Ä^&ŠGE&:GDuŠF< t< tSš6Œ‰Fø ÀuUŠF< t:Ä^SPšO¬‰Fø Àu<ŠF< t< t < t Ä^&þGEë!€~ uÄ^&ÆGEëÄ^Sš�Œ‰Fø Àu¸‹å]ÊU‹ìQÄ^ &ŠG :Ût:Ût :Ût:ÛuéàÄ^ &ŠG :ÿÚt-:Ût':Ût!:þÚt:Ût:Ût:Ût :ÛtéÕƒ~ wKÄ^ S°Pšª$£„Þ Àté‹^Ñã.ÿ§‡£GNvÖï(Où"8^j‹FƒøséXƒøvéPú‹FÄ^ &‰GÄ^ &ƒs5&ŠOn€á?µ&‹w¸+ðŠ„šñ²@öâ Á&ˆGnÄ^ &ŠOp€áŸµ&‹wƒîë6Ä^ &ŠOn€á?µ&‹w¸+ðŠ„šñ²@öâ Á&ˆGnÄ^ &ŠOp€áŸµ&‹wƒîŠ„šñ² öâ Á&ˆGpé˃~vé¶ú‹FÄ^ &‰GÄ^ &ŠGo$ü&‹w „¡ñ&ˆGoÄ^ &ƒs5&ŠOn€á?µ&‹w¸+ðŠ„šñ²@öâ Á&ˆGnÄ^ &ŠOp€áŸµ&‹wƒîë6Ä^ &ŠOn€á?µ&‹w¸+ðŠ„šñ²@öâ Á&ˆGnÄ^ &ŠOp€áŸµ&‹wƒîŠ„šñ² öâ Á&ˆGpÄ^ &ÿwx°PšlÄ^ &ÿwx&ÿwošlÄ^ &ÿwx°PšlÄ^ &ÿwx&ÿwnšlÄ^ &ÿwx°PšlÄ^ &ÿwx&ÿwpé¤�~Kw.‹FÄ^ &‰Gq‹FÄ^ &‰GsÄ^ &ÿw¸éÖ‹F Àu醃øvé~úŠFÄ^ &ˆGvÄ^ &ŠGo$ó´&Š_vþË·Š�žñµÑáÑá ÁÄ^ &ˆGoÄ^ &ÿwx°PšlÄ^ &ÿwx&ÿwoéÄ^ &ŠG :ÿÚtR‹FÄ^ &‰G8ë6Ä^ &ŠG :Ût9‹FÄ^ &‰G6ëÄ^ &ŠG :Ût ƒ~w8ŠFÄ^ &ˆG.éVÄ^ &ŠG :ÿÚu¸ éGƒ~wúŠFÄ^ &ˆG/é%ƒ~vé®ú‹FÄ^ &‰GÄ^ &ŠG :Ûu&‹Gƒøt ƒøtÆFÿëÆFÿÿÄ^ &ŠG :ÿÚt&‹Gƒøtƒøt Ä^ &€gnßëÄ^ &€On Ä^ &ÿwx°PšlÄ^ &ÿwxŠFÿ$PšlÄ^ &ÿwx°PšlÄ^ &ÿwx&ÿwnšlë'‹FŠÄÀt <ÿt¸ëwúŠFÄ^ &ˆGh‹FÄ^ &ˆGië\‹FÄ^ &‰GqÄ^ &ÿw¸ë‹FÄ^ &‰GsÄ^ &ÿw¸PÿvšÖ,£„Þ Àt"ë$ŠFÄ^ &ˆGlë ŠFÄ^ &ˆGjÄ^ Sš† û¸‹å]ÊU‹ìQQÄ^ &ŠG :Ût:Ût :Ût:Ûu¸ë:Ä^ &ŠG :ÿÚt/:Ût):Ût#:þÚt:Ût:Ût:Ût :Ût¸ ë|÷F àt¸# ëp‹F ¹#ÁtÄ^ &ÿwP�FüPšr,£„Þ ÀtëKÇFü÷F t3Ä^ &ÿwxšl´‰Fþ¹…N t©t Nü¸…F t ÷Fþ t Fü‹FüÄ^&‰¸‹å]Ê U‹ìÄ^ &ŠG :Ût:Ût :Ût:Ûu¸ëFÄ^ &ŠG :ÿÚt/:Ût):Ût#:þÚt:Ût:Ût:Ût :Ût¸ ë ÷Fÿøt¸# éžÄ^ S°Pšª$£„Þ Àué‹F¹#ÁtÄ^ &ÿwPÿvšØ,£„Þ Àui‹F©t^ú¹…Át…Nu Ä^ &€gpëÄ^ &€Op€¸…Ft…Fu Ä^ &€gpýëÄ^ &€OpÄ^ &ÿwx°PšlÄ^ &ÿwx&ÿwpšlû¸]ÊU‹ìƒì¸ÈP¸P�FúPš/€$‰FþÄ^ú&ŠG ‹å]ÃU‹ìQŠF ±A:Ár®Þÿ6°ÞŽ Þ�ËU]6£¢Þ6Œ ÞŒÐŽØ‰¤Þ‰¦Þ‰¨ÞŒªÞ‰6¬Þ‰>®Þœ�°ÞËU‹ì‹F±ÓèP�FP‹^SšÜ„]ÊU‹ì‹FP�FP‹^SšÜ„]ÊU‹ìIJÞ&Ä_]ËU‹ìƒì €ÞÐØsP¡´Þ ²ÞtGšÔ‰^üŒFþ‹Fü‰Fú‰Fü‹Fú´;Für(Ä^ü&‚ t&ŠG ÐØr&‹G;Fu‹F&‰GƒFü sÍ‹å]ÊU‹ìƒì  €ÞÐØs~¡´Þ ²ÞtušÔ‰^üŒFþ‹Fü‰Fö‰Fü‹Fö´;FürVÄ^ü&‚ tF&ŠG ÐØs>&‹G;Fu5‹F‰FúÄ^ü&‹‰FøÄ^ø&ŠÄ^ü&ˆGÄ^ø&ÆÌ‹FÄ^ü&‰GÄ^ü&ÆG ƒFü sŸ‹å]ÊU‹ìƒì  €ÞÐØsX¡´Þ ²ÞtOšÔ‰^üŒFþ‹Fü‰Fö‰Fü‹Fö´;Für0Ä^ü&‚ t &ŠG ÐØr&‹G;Fu‹F&‰GÄ^ü&ÆG ÿƒFü sÅ‹å]ÊU‹ìƒì¾ßÄ~¹Süò¤ÄÖñ&Ä7&Š< t< u ‹F =wmt =amt¸ëzÄ^SÄ^Sÿv�FþPšoü‰Fø Àu\ÄÖñ&Ä&€? u Ä^&ƒrÄÖñ&Ä&€? u.Ä^&ƒs$SÄ^SÿvÄ^Sÿvÿv Ä^Sÿvš/ë �~s¸ é¬ÄFÄ^&‰GZ&‰W‹FÄ^&‰G$ƒ~þÿuÄ^&‹GƒÀA¢zß�FúP¸mßP¸ë�FúPÄ^‹vþ�@PF‹F+ÆP¸‹ÐRP¸P¸rmPš€‰Føƒ~øu>ÿvúÄ^S¸P¸PP�FþPš#€‰Fø Àt ÿvú𠀉Føëÿvú𠀉Fø Àt¸( ë Ä^&€?t¸' éêÄ^&ŠG´Ä^&‰GÄ^&ŠG´Ä^&‰GÄ^&ŠG´Ä^&‰GÄ^&‹G Ä^&òÇFî�FôPÄ^øSÿvöÄ^Sÿv¸rmPš€‰Fâ Àtë?¸ëoÿvôÄ^ S¸P¸PP�FàPš#€‰Fâÿvô𠀉Fäƒ~âu Àu�~àt¸( ë0Ä^SÄ^SÿvÿvÄ^ SÄ^ðSÿvîÄ^êSÿvèÿvæ°PšÀ ‹å]ÊU‹ìƒì Ä^&ŠG :Ût:Ût:Ût:Ût SÿvšëÄ^&ŠG :Ût Ä^&ƒ$u¸éذˆF÷ˆFöÄ^&‹O,‰Nþ´‰FüŠFÐØslÄ^&ŠG :Ûu_&‚1uXŠF÷ÐØr S¸ÈñP¸P�FúPšL‰Fø Àu¨ÆF÷ÿŠF÷ÐØs*ŠFöÐØr#Ä^S¸ÉñP¸P�FúPšL‰Fø ÀuRÆFöÿÄ^&ƒ u °&ˆG5´ë:¸Pš€Œ‰FøÄ^&‹G,;Fþu(‹Fü@‰Fü&‹O= Ét(‘¹ ÷á;Füu&ÆG5ÿ¸,‹å]ÊÄ^&‹G,‰FþÇFüé'ÿU‹ìÄ^&ŠG :Ût:Ût:Ût:Ût Sšfë9úÄ^&‹wÑæÑæ¸‹Ð‰„D܉”Fܸ&‰G(Ä^&‰G,Ä^&‰G ûÄ^SšWt]ÊU‹ìQQúÄ^&ÄG‰FüŒFþÄv&‹t(‹ØŠF&ˆÄ^&‹G$H&;G(v&ÿG(ë Ä^&ÇG(Ä^&ÿG û‹å]ÊU‹ìƒìÄ^&ŠG5ÐØs&ÆG5ÇFþÿÿÄ^&‹G$H&;G w.&‹G=ƒøÿt¹ ÷á;Fþu &ÆG5ÿ¸,ëS¸Pš€Œ‰FüÿFþëÄÄ^&ƒu&‹_ƒëЇŠÞFëÄ^&ƒu&‹_ƒëЇ†Þ FÄ^Sÿv𬏋å]ÊU‹ìƒì‹vÑæÑæÄ^&ÄXV‰^üŒFþú&ƒt4Ä^ü&ƒu Ä^ü&ƒ?u!‹vÑæ¸Ä^&‰@FÄ^ü&‰Ä^ü&‰G‰FúëÇFú, û‹Fú‹å]ÊU‹ìƒìú‹vÑæÄ^‹F&9@sƒøÿuƒ~ÿté`Ä^&ŠG0ÐØréR‹vÑæÄ^&ƒx6u ‹F‰Füé?‹vÑæÑæÄ^&Ä@V‰FòŒFôƒ~u‹vÑæÄ^&‹@Jë ‹vÑæ‹FÄ^&‰@B‹vÑæÄ^&ƒx6ÿu Ä^ò&ÇGëT‹vÑæÄ^&‹@6¹ ÷á‰FþÄ^ò&‰G‹FþÄ^ò&‰‹vÑæÄ^&‹@BÄ^ò&‰GÄ^ò&ÇG‹FÄ^ò&‰G‹FÄ^ò&‰G ‹vÑæ‹FÄ^&‰@F‹vÑæÑæÄF Ä^&‰@NZ&‰PPûƒ~ua‹vÑæÄ^&ÿpB�FöPš´Pšì‹F ‹V ;Vøu;Föt<šdÐØsÿvø�FøPšm€4‰FüÄ^ö&‹G‰FüÄ^Sÿvš´‰Fúë ÇFü+ ëÇFüû‹Fü‹å]ÊU‹ìƒì‹F‹Êñ;ÁrU+Á‰Fþ©uK±ÓèF;Ìñu>ÄŽÞ&‹G‰Fü‹FþÓè¹÷áº`+Ð+щVúÄ^ú&‹GÄ^&‰°Ä^&ˆÄ^ &Æÿ騰Ä^ &ˆ´Ä^&‰ÄŽÞ&‹G‹N;Áw&;ÁwAÄ^&ÆÄŽÞ&ÄG‰FöŒFø‹F±Óè‹V+æñ‰Fì± ÓèˆFê‹Fì±Óà‹N�áÁëÄ^&Æÿ‹F‰Fø¸‰FöˆFê‹F‰FìÇFôÄ^ö&‹G H‰Fò‹Fò9FôvÑàÑà‹ðÄ^ö&Š@‹å]Ê‹FôFòÑè‰FðÑàÑàÄ^ö‹ð&‹H ‰NîÄ^ö&Š@ˆFë:Fêu;Nìv ëŠFë:Fês ‹Fð@‰Fô룋FðëšU‹ìƒì ÄŽÞ&‹G‰Fþ¸‰Fü&‹O‰Nú‹F ¹÷áº`+Ð+щVøÆF÷ŠF÷ÐØr2ÄŽÞ&‹G;Fþv%Ä^ü&‹Ä^ø&;GuÆF÷ÿë×Ä^ü&‹G±ÓèFþëÇŠF÷ÐØs Ä^üSšr¼ë Ä^ø&ÿw&ÿwÿv°ÿP¸PšP‰^üŒFþÄ^ø&ÇGÿÿÄ^ø&‹‹^‰‹Fü±ÓèFþ‹^‰GšoÌ‹å]ÊU‹ìƒì ÄŽÞ&‹G‰FøÇFöÄ^ö&‹;FtÄ6ŽÞ&‹D;FøvÄ^ö&‹G±ÓèFøëØÄŽÞ&‹G;Fø°ÿw@ˆFõÐØs Ä^öSšr¼ëÿvÿvÿv°P´PšP‰^öŒFø‹F ÄŽÞ&+G¹1Ò÷ñ‰FüŠ�ÞÐÙsÿvP&ÿ_Ä^ö&‹G)Fü¸‰Fþ‰FúÄ^ö&‹G H‹Nú;ÁrwÑáÑá‹ñ&Š@ˆFôÐØsÿFþëY‹FþFü;FúuN‹Fø‹^ ‰G‹vúÑæÑæÄ^ö&‹@ ‹^ ‰ŠFõÐØs$ ‚ÞÐØs‹^ ‹G‹^ ‰G‹^ ‹‹^ ‰G‹^ ÆêšoÌëÿFútézÿ¸ˆPšì‹å]Ê U‹ìQQÄŽÞ&ŠGÐØs¸‹ÐRPÿv¸Pši€d‰FüënÄÒñ&Ä&‹G‰FþÄ^&ƒÿt&‰GÄŽÞ&‹G ;Fþv:&‹G‰FÇFÄŽÞ&‹G;Fv!Ä^&ƒÿt‹Fþ&‰GÄ^&‹G±ÓèFëÒ‹FþÄŽÞ&‰G ‹å]ÊU‹ìÄŽÞ&ŠGÐØs]ËšÌSšr¼]ËU‹ìQÄŽÞ&ŠGÐØs¸ë$ÄFÄŽÞ&‰GZ&‰W аÿu@¢�ÞŠF¢‚Þ¸‹å]ÊU‹ìƒìÄ^&ÄG‰FøŒFú‹F ;F ré¤Ä^&ƒ ué—&‹G,&;G(r &‹O$+ȉNüë Ä^&‹G ‰Fü‹N ‹F +È;Nüs‰NüÄ^øÄv&‹t,�0Ä^‹~ �9‹NüŽ^öüò¤YÄ^‹Fü&úÄ^‹Fü&)G ûÄ^‹Fü&G,Ä^&‹G,&;G$u&ÇG,Ä^&ƒ t‹FüF éQÿÄ^&ƒ u¸) 븋å]ÊU‹ìƒìÄ^&‹_ÑãÑãÄŸp܉^üŒFþ&ŠGˆFúÄ^ü&ŠGˆFûÄ^ü&ŠGˆFöÄ^ü&ŠˆF÷Ä^ü&ŠGˆFôÄ^ü&ŠGˆFõúÄ^ü&ŠGˆFøÄ^ü&ŠGˆFùû‹FøH‹Nú;Át‹FôH;Áu‹Fø;Föu¸* é®ÇFð‹Nú‹Fø;ÈrE;FöuÄ^SÄ^üSQ‹Fôë@Ä^SÄ^üSÿvúÿvô�FðPšÄ‰Fî Àu.Ä^SÄ^üSÿvöë Ä^SÄ^üSÿvú‹FøHP�FðPšÄ‰Fî‹Nú‹FðÈ‹Vô;Êr +Vú+ÂFö‰Fúë‹FðFúúŠFûÄ^ü&ˆGŠFúÄ^ü&ˆGû¸‹å]ÊU‹ì‹F ŽÀ»]ËU‹ìš–Ì[ŒØŒÆ;Æt   ‰G=Ä^&ŠG Ä^&ˆG/Ä^&ŠGÄ^&ˆGDÄ^&ŠGÄ^&ˆGB ÛÄ^&ˆG ¸Ä^&‰G(Ä^&‰G,Ä^&‰G Ä^&ˆGQÄ^&‚uéÄ^&Š_ˆ^ê¸P·ÑãÑã�‡ºÞPš*€‰Fø Àu¸PŠ^ê·ÑãÑã�‡êÞPš*€‰Fø Àté�FúPÄ^�GPÄ^&ŠG´P¸‹ÐRP¸P¸rmPš€‰Fø ÀtéŠÿvúŠ^ê·ÑãÑãÄ¿ºÞW¸P¸PP�FþPš#€‰Fø Àu5¸‰FôÇFöÿvúŠ^ê·ÑãÑãÄ¿êÞWPÿvöÿvô�FþPš#€‰Fø Àt ÿvú𠀉Føëÿvú𠀉Fø Àt¸) ëMÄ^&ÆGQÿÄ^Sš6t‰Fø Àu)�FëPÄ^Sšÿt¸PÄ^S�FëPšÏt‰Fø ÀtÄ^&ÆG ÿ‹Fø‹å]ÊU‹ìƒìÄ^&ŠG :Ût¸ ë5¸Ä^&‰G(Ä^&‰G,Ä^&‰G Ä^&ˆG5¸PÄ^SÄ^üSšÏt‰Fú‹å]ÊU‹ìÄ^ &ŠG :Ût¸ ë&Ä^ &ŠGRÐØsÄ^&ÆÿÄ^ &ÆGRëÄ^&Ƹ]ÊU‹ìƒì Ä^&ÆGu�FöP�FøPšô ÀtÇFöƒ~ö u ƒ~ørÇFö ¸ 9Föu 9FørÇFö ƒ~ö s$¸P�FüP¸Pš€‰Fú Àu%ƒ~üu¸!ëÿvš�´‰Fú Àu Ä^&ÆGuÿ‹Fú‹å]ÊU]X[YZSPö†ß�t ö‡ß�tcÚRQËRQSšdˆ‡ß[YZƆßÿ�ëÜËU‹ìÄ^ SÄ^Sšô]ÊU‹ìƒìƒ>ˆßul¸‰FäˆFæÆFç‰Fì�FúPš€d‰Fþ‹Fú‰Fê�FèPš€$‰FþÇF߉FðŒ^òÇFô�FäPšÄ‰Füƒøt‹Fü Àu)ÿvú�FöPš´‰Fþ¡ˆß´Ä^&‰ ‰ß´Ä^ &‰¸‹å]ÊU‹ìŠF±A:Ár‹F =rmt=tmuTÄFÄ^&‰G?Z&‰WAÄ^�‡–Ä^&‰GZ&‰W‹F-–Ä^&‰G"ƒ~þÿu"Ä^&‹GƒÀAH¢áß�FúP¸ÓßP¸ë¸ëu�FúPÄ^‹vþ�@PF‹F+ÆP¸‹ÐRP¸P¸rmPš€‰Føƒ~øu>ÿvúÄ^S¸P¸PP�FþPš#€‰Fø Àt ÿvú𠀉Føëÿvú𠀉Fø Àt¸( ë Ä^&€?t¸' éÄ^&ŠG´Ä^&‰GÄ^&ŠG´Ä^&‰GÄ^&ŠG´Ä^&‰GÄ^&‹GÄ^&‰G;Ä^&‹G Ä^&‰G=Ä^&ŠG Ä^&ˆG.Ä^&ŠG Ä^&ˆG/Ä^&ŠGÄ^&ˆGGÄ^&ŠGÄ^&ˆGH‹F =wmt=amu Ûë�~ mmu Ûë‹F =rmt=tmu  ÛÄ^&ˆG ¸Ä^&‰G Ä^&‰G(Ä^&‰G,Ä^Sš6t‰Fø Àu/¸ì߉FôŒ^öPÄ^Sšÿt¸PÄ^SÄ^ôSšÏt‰Fø ÀtÄ^&ÆG ÿ‹Fø‹å]ÊU‹ìÄ^SÄ^SÿvÄ^Sÿvÿv Ä^Sÿv°Pš ]ÊU‹ìÄ^SÄ^SÿvÄ^Sÿvÿv Ä^Sÿv°Pš ]ÊU‹ìÄFP¿WÿvÄ^ SÄ^S¹QŽFþPQšï]ÊU‹ì‹^‹V†û†ò± Óã‹Â±Óè ØŽÃ�â‹Ú]ÊU‹ìƒì ‹F ± Óà‰Fü‹F ±Óè‰Fþ‹F Àtl=àvÇFúþë ‹F±Óà‰FúÇFöƒ~öt.ÄŽÞ&ÿwÄ^Sÿvúÿvþÿvü�FøPš#€‰Fö ÀtÓPÿ|ÞëÌ‹Fú±Óè)FtžÇFþ‹FúFüƒVþë�‹å]ÂU‹ìƒìÄ^ &‹G¹÷áÄŽÞ&G‰FþÇFüÄ^ &‹G H‹Nü;ÁraÑáÑá‹ñ&Š@ˆFûÐØrKƒ~u‹F‹^þ‰G‹vüÑæÄ^ &‹@ ë‹FÄ^ &+‹^þ‰GÄ^ &‹±ÓàF‹^þ‰GŠF ‹^þˆƒFþÿFüu�‹å]Ê U‹ìƒìŠFÐØs°ˆFíÆFéÿˆFì‹F ‰Fîë3‹^ ĉFúŒFü‹F;àñuéçÄ^úS�FìP�FéP�FîPš¼ˆFíÆFëÿŠFìÐØs&ŠFëÐØs‹Fü‰FòÇFðÄ^ð&ƒþt&‹G‹^ ‰GŠFéÐØréÆFëÿéÄŽÞ&‹G‰FøÇFöú_ÄŽÞ&‹G ;FöwÄ^ö&ƒÿt/ƒnöëã‹Fö±ÓèÄŽÞ&G&;Gs ¸†Pšì‹FöÄŽÞ&‰G ‹FúÄ^ö&‰Ä^ð&‹Ä^ö&‰GÄ^ö&ÇG¸`+Fö¹+Á1Ò÷ñ‰Fô±ÓàÊñ‹^ ‰¡Ìñ+Fô‹^ ‰G°8FíuO´Ä^ö&‰Gé<ÿ‹FƒÀ‰F ‹^ ‹‰Fú‹^‹+ÃÄ^ö&G‹^‹‰FÄ^úS�FìP�FéP�FîPš¼ˆFíŠFíÐØs³öFít°‹FƒÀ뮊Fí$À°ÿt@ˆFë°„Fíu´Fë‹FƒÀFî‰F ‹F9F v Àt ‹Ø‹‰FëëŠFëÐØs ‹^ ‹G‰Fü‹F;àñt'‹^ ‹‰FúÄ^úS�FìP�FéP�FîPš¼ˆFíé9þ‹å]ÊU‹ìƒìÄŽÞ&‹G‰FþÇFøƒ~ÿ°ÿt@ˆFãÐØs‹Fë‹vÑæÑæ‹^þ‹@ÿ%þ±Óè‰FìÄŽÞ&‹G ±Óè&G&+Gƒè‰Fî;Fìré­ÇFê‹FîFê;FìspÇFèþÿÄŽÞ&‹G‰FúÇFøÄŽÞ&‹G;Fúv)Ä^ø&‹G;Fès ‰^ôŒFö&‹G‰FèÄ^ø&‹G±ÓèFúëʃ~èþu ¸…PšìÄ^ô&‹G±ÓèFê&ÇGþÿë…ƒ~êuéUÿ¸‰FæÄŽÞ&‹O‰Nú‰FøÄŽÞ&‹G;Fúv4Ä^ø&ƒþu &‹G±ÓèFæë ‹Fú+FæÄ^ø&‰GÄ^ø&‹G±ÓèFúë¿ÿv ÿv ÿvš+ÄŽÞ&‹G‰FúÇFøÄŽÞ&‹G;Fúwé“Ä^ø&‹G‰Fä&ƒþuÿvú&ÿ7šÔÄ^øëUÄ^ø&‹G‹Nú;ÁtWQPš ÔÇFðÄ^ø&‹G‰FòÄvø&‹LÑéÄ~ðŽ^àüò¥YÄ^ð&ƒÿuS°êP¸‹ÐRPëÄ^ðS°šPÄÎñSš“‹Fä±ÓèFúé]ÿÄŽÞ‹Fê&)Gé1þÄŽÞ&‹G‰FúŠFãÐØrm‹vÑæÑæ‹^þÿ0Ä^øSÿvìèsúÄ^øSšr¼Ä^ø&‹G±ÓèÄŽÞ&GÄ^ø&ƒÿuS°êP¸‹ÐRPëÄ^øS°šPÄÎñSš“ÿvúÄ^ø&ÿ7špÔÄ^ø‹å]Ê    ùˆFù¸*‡Pÿvþ6ÿ¯ùˆFù¸"‡Pÿvþ6ÿ¯ùˆFù¸&‡P‹FþÑàP6ÿ¯ùˆFùÐØr ¸TçP¸BP6ÿÏò‹Nü¡L>;ÈsT+Á‰Fúć‹ñ�8‹È°üòª‹vüÑæÄ*‡�8¸‹Núüò«‹vüÑæÄ"‡�8¸‹Núüò«‹vüÑæÑæ‹NúÑáÄ&‡�8¸üò«‹å]ÊU‹ìƒì¡¸F‰FüŠFÐØr¡¸F¹€Á;¶Fw¡¶FƒÀ£¸F‹Fü;¸Fué‹¡¸FÑà‰Fþ¸R‡Pÿ6¸F6ÿ¯ùˆFû¸>‡Pÿ6¸F6ÿ¯ùˆFû¸J‡Pÿvþ6ÿ¯ùˆFû¸B‡Pÿvþ6ÿ¯ùˆFû¸F‡Pÿvþ6ÿ¯ùˆFû¸N‡Pÿvþ6ÿ¯ùˆFû¸:‡Pÿvþ6ÿ¯ùˆFûÐØr ¸gçP¸CP6ÿÏò‹å]ÊU‹ìQQ¡B>¹€Á;@>w¡@>£B>¡B>Ñà‰Fþ¹‡QP6ÿ¯ùˆFý¸‡Pÿvþ6ÿ¯ùˆFý¸‡P‹FþÑàP6ÿ¯ùˆFý¸‡P‹FþÑàP6ÿ¯ùˆFýÐØr ¸zçP¸7P6ÿÏò‹å]ËU‹ìƒì¡>‰FüŠFÐØr¡>¹€Á;øFw¡øFƒÀ£>‹Fü;>tE¡>Ñà‰Fþ¹ ‡QP6ÿ¯ùÐØr ¸¶çP¸DP6ÿÏò‹Nü¡>;Ès+Á‰FúÑáÄ ‡‹ñ�8‹È¸ÿüò«‹å]ÊU‹ìƒì¡G‰FüŠFÐØr¡G¹Á;þFw¡þF £G‹Fü;Gtj¡GÑà‰Fþ¹2‡QP6ÿ¯ùÐØs¸.‡Pÿvþ6ÿ¯ùÐØr ¸ÆçP¸P6ÿÏò‹Nü¡G;Ès++Á‰FúÑáÄ2‡‹ñ�8‹È¸€üò«‹vüÑæÄ.‡�8¸ÿÿ‹Núüò«‹å]ÊU‹ìQ¡xF‰FþŠFÐØr¡xF¹Á;vFw¡vFƒÀ £xF‹Fþ;xFt#¸6‡P¡xF±ÓàP6ÿ¯ùÐØr ¸ëçP¸P6ÿÏò‹å]ÊU‹ìQ°ÿP6ÿ´ù°ÿP6ÿÃù°ÿP6ÿÈù°ÿP6ÿÍù‹å]Ë�wp=Œ|ê{Äì9߀  ­ ¬ s í khU‹ìƒì *ÓÐØs6ÿ‚ù‹FƒÀƒÀ%øÿ‰FÄ&Ó‰FüŒFþ‹Ø&‹G‰Füƒ~üuéˆÄ^üSÿv6ÿsùÄ^ü&‹%øÿ‰Fø‹N;ÈwF+Á‰Fúu S6ÿ}ùë‹Fú Ä^ü&‰‹FúFü‹F Ä^ü&‰‹FüƒÀ‹(ÓÄ^&‰&‰O°ÿë$Ä^ü&‹G%øÿ‰FüÄ&Ó&‹G;FüuÇFüéoÿ°‹å]ÊU‹ìQQ *ÓÐØs6ÿ‚ùÄF‰FüŒFþ�füøÿÄ^ü&‹%ƒøt ¸eP6ÿ~óÄFüP‹Ø&‹%øÿP6ÿxù‹å]ÊU‹ìƒì *ÓÐØs6ÿ‚ùÄ^&ĉFüŒFþ�füøÿÄ^ü&‹%ƒøt ¸eP6ÿ~óÄ^ü&‹¹øÿ#Áº+‰Fò‹F‰FúƒÀ#Á‰FSP6ÿsùÄ^ü&‹%øÿ‰Fô‹N;Èw$;Èsl�É&‰‹FFüÄ^üS‹Fô+FP6ÿxùëL�FöPÿvú6ÿdùöÐÐØs°ë7‹NòAÑéÄ^&Ä7Ä~öŽ^ðüò¥YÄ^&ÄS6ÿiùÄFöÄ^&‰Z&‰W°ÿ‹å]ÊU‹ìƒìÄ^&‹%øÿ‰Fú‰^üŒFþFüÄ&Ó&‹G;Füv1‹F;Fúv)Ä^ü&‹%ƒøuÄ^ü&‹%øÿ‰FøS6ÿ}ù‹FøFúë¿Ä^&‹% Fú&‰‹å]ÊU‹ìƒìÄ&Ó‰FøŒFú‰FüŒFþ‹Ø&ƒu ‹F‰Fø‹FëÄ&Ó&‹G‰FøÄ^ø&‹G%øÿ‰Fü‹F¹ ÁÄ^ø&‰G‹Fº ÂÄ^ü&‰G‹F Ä^&‰ VøÄ^&‰W NüÄ^&‰O‹FÄ&Ó&‰G‹å]ÊU‹ìƒìÄ&Ó‰FüŒFþ‰FøŒFúÄ^&‹G¹øÿ#Á‰FüÄ^&#O‰Nø‹Fø Ä^ü&‰G‹Fü Ä^ø&‰G‹FÄ&Ó&9Gu;Füu&ÇGë ‹FüÄ&Ó&‰G‹å]ÊU‹ìƒìÄ&Ó&�?77t ¸fP6ÿ~óÄ&Ó‰FüŒFþ‰FüŒFþ‹Ø&‹G‰Füƒ~üuéÊÄ^ü&‹%ƒøt ¸gP6ÿ~óÄ^ü&‹%øÿ &‰Ä^ü&‹G%ƒøt ¸hP6ÿ~óÄ^ü&‹G%ƒøt ¸iP6ÿ~óÄ^ü&‹G¹øÿ#Á‹(Ó‰Fø‰Vú‹ØŽÂ&#O;Nüt ¸kP6ÿ~óÄ&Ó&‹G;FøuÄ^ø&‹%ƒøt ¸jP6ÿ~óÇFøëÄ^ø&‹%ƒøt ¸jP6ÿ~ó‹Føé*ÿÇFüÄ&Ó&‹G;FüvTÄ^ü&‹%ƒøu&‹%øÿ &‰ë*Ä^ü&‹%ƒøtÄ^ü&‹%ƒøu¸lë¸mP6ÿ~óÄ^ü&‹%øÿFüëŸÄ&Ó&‹G;Füt ¸nP6ÿ~ó‹å]ËU‹ì‹^ÑãÑãćBÓ£&ÓŒ(Ó]ÊU‹ìQÇFþ‹^þÑãÑ㋇DÓÄ^&;GtÿFþëç‹Fþ‹å]ÊU‹ìQÇFþ¡,ÓH‹Nþ;ÁrQ6ÿ‡ù6ÿ‚ùÿFþuå‹å]ËU‹ìQQÄF£&ÓŒ(Ó‹Ø&Ç77‹F%øÿÄ&Ó&‰GÄ&Ó&ÇG¡(Ó¹PQÄ&Ó&‹GƒèP6ÿxù‹å]ÊU‹ìƒì *ÓÐØs6ÿ‘ùÇFð¡,ÓH‹Nð;ÁrcQ6ÿ‡ùÇFøÄ&Ó‰FüŒFþÇFüÄ&Ó&‹G;Füv,Ä^ü&‹%øÿ‰Fú&‹%ƒøu ‹Fø&‰G‹FúFø‹FúFüëÇ‹FøÄ&Ó&‰GÿFðu’ÄPçS6ÿ¥ùÇFð¡,ÓH‹Nð;ÁséÿQ6ÿ‡ù¸‰FöÇFòÄ&Ó‰NüŒFþ‰FüÄ&Ó&‹G;FüvyÄ^ü&‹%øÿ‰Fú&‹%ƒøu.‹Fò ÀtRP&+G‹(ÓQ‹Nü_Z+ÊÑé—ÄvòŽÀüò¥ÇFòë+Ä^ü&‹%ƒøuƒ~òu‰^òŒFô‹FúFöë ¸mP6ÿ~ó‹FúFüézÿ‹Fò Àt$Ä&ÓP&+G‹(ÓQ‹Nü_Z+ÊÑé—ÄvòŽÀüò¥Ä&Ó&ÇGÄ&Ó&‹G‹Nö;Áv‹(ÓRQ+FöP6ÿxùÿFðtéóþ‹å]ËU‹ìƒìÄ^&‹G& t~Ä^S6ÿŒùP6ÿ‡ùÄ^&ĉFüŒFþ�füøÿÄ^ü&‹%ƒøt ¸eP6ÿ~óÄ&Ó&‹G;Füv%Ä^ü&‹%øÿ‰Fú&‹%ƒøu&‹Gë‹FúFüëÎÄ&Ó&‹G‰FøÄ^‹Fø&)‹å]ÊU‹ì¸‡Pÿ^¸*‡Pÿ^¸"‡Pÿ^¸&‡Pÿ^¸R‡Pÿ^¸>‡Pÿ^¸J‡Pÿ^¸B‡Pÿ^¸F‡Pÿ^¸:‡Pÿ^¸N‡Pÿ^¸‡Pÿ^¸‡Pÿ^¸‡Pÿ^¸‡Pÿ^¸ ‡Pÿ^¸2‡Pÿ^¸.‡Pÿ^¸6‡Pÿ^]ÊU‹ìƒì ‹F¹€1Ò÷ñ£L>£¸F£B>£>Ñà‰FþÑà‰Fü£G£xFÑà‰FúÑà‰Fø¸‡Pÿ6L>6ÿdùˆF÷¸*‡Pÿvþ6ÿdùˆF÷¸"‡Pÿvþ6ÿdùˆF÷¸&‡Pÿvü6ÿdùˆF÷¸R‡Pÿ6L>6ÿdùˆF÷¸>‡Pÿ6L>6ÿdùˆF÷¸J‡Pÿvþ6ÿdùˆF÷¸B‡Pÿvþ6ÿdùˆF÷¸F‡Pÿvþ6ÿdùˆF÷¸:‡Pÿvþ6ÿdùˆF÷¸N‡Pÿvþ6ÿdùˆF÷¸‡Pÿvþ6ÿdùˆF÷¸‡Pÿvþ6ÿdùˆF÷¸‡Pÿvü6ÿdùˆF÷¸‡Pÿvü6ÿdùˆF÷¸ ‡Pÿvþ6ÿdùˆF÷¸2‡Pÿvú6ÿdùˆF÷¸.‡Pÿvú6ÿdùˆF÷¸6‡Pÿvø6ÿdùˆF÷ÐØr ¸�P6ÿÙò°Ä>‡‹L>üòª¸Ä>*‡‹L>üò«¸Ä>"‡‹L>üò«¸Ä>&‡‹Nþüò«¸ÿÄ> ‡‹>üò«Ä ‡&Ǹ€Ä>2‡‹Güò«¸ÿÿÄ>.‡‹Güò«‹å]ÊU‹ìƒìÄ^S6ÿŒù‰FúP6ÿ‡ùÄ^Sÿv6ÿnùÐØrnÇFø¡,ÓH‹Nø;Árg9Nút]Q6ÿ‡ù�FüPÿv6ÿdùÐØsF‹NAÑéÄ^&Ä7Ä~üŽ^öüò¥Yÿvú6ÿ‡ùÄ^&ÄS6ÿiùÄFüÄ^&‰Z&‰W6ÿ›ù°ÿëÿFøuް‹å]ÊU‹ìƒìÿv6ÿ¹ù¡L>‰FüŠFÐØr¡L>¹€Á;J>w¡J>ƒÀ£L>‹Fü;L>u黡L>Ñà‰Fþ¸‡Pÿ6L>6ÿ¯ Ž0ÿ«¯ÜàU‹ìƒì¡J>£H>¡\>£Z> c‰ˆFøÆc‰°ÿ¢)Õ¢t‘¸‰FúˆFù )ÕÐØsz‹Fú;nÓsq‹ØŠ�Õµ;jÓt;‰jÓ‹ÙÑãÿ·ÀÓÄ>nFW‹‡pÓ± ÓàP‹‡ÔºµãÑàÑÒâúRP�FþP6ÿ2ù‰Fü°¢(Õ¢)ÕÄèS°P6ÿŽò (ÕÐØsÆFùÿë„ÿFúëù )ÕÐØs ŠFùÐØséeÿÆt‘ŠFø¢c‰‹å]ËU‹ì�ìÆ)ÕÿÄ^�G P6ÿáù‰Fþ=€ué‚‹jÓÑãÑãÿ·bÔÿ·`Ô6ÿò‰^ŒF&ŠO þÁµ�w �¾þþކüþüò¤�†þþP¸Pÿvþ‹jÓÑãÿ·ÀÓ³ÿSP6ÿëù¡ÖF‹ØF£âF‰äF¡îF‹ðF£êF‰ìF°ÿ¢(Õ¢_‰6ÿ§òÆ_‰‹å]ÊU‹ì�ì*Äv&Š þÁµ�¾ÚþކÔþüò¤‹jÓÑ㋇pÓ‰FÞŠ†Úþˆ†Øþ�ŽÚþ‰Nâ´Á‰FฉFê‰Fæ‰Fè‰F䂾ØþtT‹^⊱ Áˆ†×þ‹^à ˆŽÖþ‹Vê±Ó´3ЉVê‹VæÓŠžÖþ·3Ó‰Væ‹VèÓÊ3Ó‰Vè‹VäÓÊ3‰FäþŽØþÿFâÿNà륋Fê‹NÞ1Ò÷ñ‰Vþ‹Fè»%1Ò÷ó‰Vú‹Fæ1Ò÷ñ‰Vü‹Fä1Ò÷ó‰Vøƒ~üuÇFüƒ~øuÇFø‹FÞ‰F܃~Üt@‹Fþ± ÓànF‹pF‰Fò‰NôƆÙþ€¾Ùþ%réÁÄ^ò‹vú&Š´‰Fì Àu &€%ÿué¥é»‹vìÑæÄ^ò�P�†ÚþP°ÿP6ÿòÐØsj‹vìÑæŠ†Úþ´ðÄ^ò�@‰FîŒFð t‘ÐØs‹jÓÑãÿ·ÀÓ6ÿðù¸V‡PÄ^î&‹º¹ ãÑàÑÒâúRP6ÿÇú‰FÚ ÀtP6ÿÙòÇ">Ä^î&‹ë6þ†Ùþ‹FúFø‰Fú¹%;Ár)Núé5ÿ‹FþFü‰Fþ‹NÞ;Ár)NþÿNÜéüþ¸€‹å]ÊU‹ì�ì  t‘ÐØsé {‘ÐØs ŠFÐØréÄF ‰FæŒFè‹N ‰Nꈎàþ�¾áþ‹ðކÞúüò¤�†àþP° P°ÿP6ÿ‰ò‰^ìŒFî j‘ÐØréƒ>lÓ(ré§ÿ6‡6ÿGó¡lÓÄ^ì&‰GÑàÑà‹Ø¡ÖF‹ØF‰‡`Ô‰—bÔ�FøPÄ^ Sÿv ¸‹ÐRP¸P¸rmP6ÿyø‰Fú Àt ŠFÐØréAéW‹lÓÑã‹Fø‰‡ÀÓP�†àúP¸P¸PP�FþP6ÿ2ù‰Fú Àu%ÇFúI€¾àúðu‹†ãú‹–åú‰Fð‰Vò‹†çú뀾àú$>u¸£$>P¸èPÿ6>¸PP6ÿ`ó‹Nþ‹Fö+ÈQ‹ð�‚àúPÿ6>¡$>ºRP6ÿ`ó‹Fþ$>+Fö£$>ëÿFöé[ÿÿlÓŠFÐØseÄ^ì&‹_Ñ㋇ÀÓ‰FøP6ÿðùÄ^ì&‹G;jÓt=£jÓÿvøÄnFSÑà‹Ø‹—pÓ± ÓâR‹‡ÔºµãÑàÑÒâúRP�FþP6ÿ2ù‰Fú Àu!‹Føë8ƒ>nÓ(s!Ä^ì&ŠG‹nÓˆ‡ÕÿnÓë�FæPÿvú6ÿÔò¸èP¸P6ÿÏò¸ÿÿ‹å]Ê U‹ìƒì ¸‹Ð‰Fô‰Vö‹^ Ût"‚?tSP°ÿP6ÿ‰ò‰^üŒFþ¡ÖF‹ØF‰Fô‰Vöÿv°P°ÿP6ÿ‰ò‰^üŒFþ j‘ÐØrÿ6ØFÿ6ÖF°P6ÿò‰^üŒFþŠFÄ^ü&ˆG‹Fô‹Vö&‰G&‰WŠF&ˆG‹F &‰G ‹F &‰G ¡îF‹ðF‰Fø‰Vú¡æF‹èF£îF‰ðF‹>˜F >–Fu £–F‰˜Fë,ÿvúÿvø6ÿò‰^üŒFþÿ6‡6ÿGó¡îF‹ðFÄ^ü&‰G&‰W‹å]Ê U‹ìÄrF£*ÕŒ,Õ‹F£@Õ Ú¢7Õ¾*Õ¿V‡¹üò¤]Ê ”0ŸíàÛ*|kU‹ìÄ^&ŠG<t< uYÄ^&€ $tO‹6vFÑæÑæ‹F‹V Ä6‡&‰&‰P¡vF@£vF;xFu°P6ÿÍùÄ^&ŠG ´º> >ƒÀƒÒ£>‰ >]ÊU‹ìÄ^&ŠG<t< u8Ä^&€ $t.‹6vFÑæÑæ‹F ‹VÄ6‡&‰&‰P¡vF@£vF;xFu°P6ÿÍù]ÊU‹ìƒì*ÿv ÿv 6ÿò‰^üŒFþÿvÿv6ÿò‰^øŒFú‚>^‰ué9Ävü&‹|ÑçÄ*‡&‹‰FîÄvø&‹tÑæÄ*‡&‹‰Nì ÀuÄ^ü&ÿw&ÿw �FæP�FêP6ÿkòë‹vîÑæÄJ‡&‹‰FêÄ^ü&‹G‰Fæƒ~ìuÄ^ø&ÿw&ÿw �FäP�FèP6ÿkòë‹vìÑæÄJ‡&‹‰FèÄ^ø&‹G‰Fä‹Fî Àt ;Fìu‹Fæ;FäëuÄ>‡‹vî&Š‹vì&:ue‹Fê± Óè‰Fâ‹VèÓê‰VÞ‹^ê±Óã^æ‰^à¾Æ¿#ljFâ‹FèÓàFä‰FÜÖ#׉VÞ9Vâu;Øv鯋Fà;FÜt騋Fê;Fèë‹Fâ;FÞëöÄ>‡‹vî&ŠþÀ‹vì&ŠþÁ:ÁëzÄ^ü�G ‰FôŒFöÄ^ø�G ‰FðŒFòÄ^ø&ŠG Ävü&8D wÄ^ü&ŠG ˆF×ÇFÚŠN×µ‹FÚ;Èv)Ä^ô‹ð&в ʈNÙÄ^ð& ˆVØ:ÊwŠFÙ:FØrÿFÚëËÄ^ü&ŠG Ä^ø&:G v°ÿë°‹å]ÊU‹ìƒìÄ^&ŠG<t< ue m‘ÐØs ¡>>²FHë¡>>²F‰FôÄ^&‹G‰Fþ ÀtYÑàÄ*‡‹ð&‹‰Fü;²Fv+;Fôw& g‘ÐØsÄ^&ÆG¸&‰G&‰Gÿ6‡6ÿGóéxÿvü6ÿfò‰FìÄ>‡‹vü&ŠˆFîë<ÇFü g‘ÐØs"Ä^&ƒ u&ŠGÐØs&ÿw6ÿúÄ^&‰G Ä^&‹G ‰FìÆFîÿ‹vþÑæÄ"‡&‹Ä^&G‰Fê&‹O ‰Nø&‰Gÿ6‡6ÿGó‹Føƒøÿuéí;X>r‹Z>;Ás ¡\>+ÁFøë ¡Z>+X>)Fø‹FøÄ^&‰G ¹÷áŽF‰Fú€~îÿt g‘ÐØsJ g‘ÐØs€~îÿuÆFéêÿ6ºF‹FúƒÀPÿvü°P6ÿWòëÆF隸P�FéP¡>ºFP‹FúºRP6ÿ`óƒ~ütXÆFï‹Fþ‰Fð‹Fê‰Fò�FïP°P°ÿP6ÿ‰ò‰^ŒF‹6ºFÑæ‹>D>Ñ狽^>ÑçÄ*‡&‹9ÑçÄJ‡&‹&+±ÓàFúÄ^&‰G‹å]ÊU‹ìƒìÄ^&‹G‰Fú Àué2¡‡‰Fì‹vúÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^üŒFþ&‚té&‹G‰Fð Àu Ä^&ÆGëÄ^&ÆGÿ‹Fð±ÓàÄ^&‹OÁ‰Fö= r=.w‹Fð÷Ð�áÁÑè €ë#‹Fö=r)=w$‹Fð÷ÐÄ^&‹O�á Á±Óè‰Fô&‰GÇFðë[‹Fð%‰FòuÄ^&‹G%Ñè+Fðë‹Fò± Óà‹Nð�áøÁÄ^&‹O�áÑéÁ‰Fô‹Fô%ÿÄ^&‰G‹Fô±Óè%øÿ€‰Fð z‘ÐØs¡\  ó¡¬FÄ^à&‹O+ÈIć&‰OÄ6¨F�¾wÿ‹Èކrÿüò¤¡¬Fˆ†vÿ@P�†vÿP¡>ºFP‹6P>ÑæÄ"‡&‹Ä‡&GºRP6ÿ`óÄ&èS°P6ÿŽò }‘ÐØré ¡>ºF‰FÎP‹6P>ÑæÄ"‡&‹ºRP°ÿP6ÿV󉇌‡ c‰&ˆG g‘&ˆG¡\>&‰G‹6N>ÑæÄ*‡&‹0Ñæ¡2>ÄF‡&‹D>Ñã‹¿^>ÑçÄ*‡&‹9ÑçÄJ‡&‹&+±ÓâÂÄ6‡&‰‹vÀÑæÄJ‡&‹£šFÿvÀ6ÿfòć&‰Gÿ6ºF‹6P>ÑæÄ"‡&‹ƒÀP¸P°P6ÿWò z‘ÐØs?¡\>¹÷áŽF£’F‹:>‰NÚÇFÐÿ¹‰NÒ‰N؉NÔ‰NÖ¿ W�NÐQÿvκRP6ÿ`óÆF·ÿ z‘ÐØréóÇFþ¡H>H‹Nþ;ÁséàÑáÄ*‡‹ñ&‹‰Fð;²FvéÁÄ>‡‹ð&Š:N·t€ùÿué«‹vþÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^àŒFâ&‹Gƒøÿt,ŠN·€ùÿt ‹VÞR+ÂPQ6ÿúÄ^à&‹G‰FÞÄ>‡‹vð&ŠˆF·‹Fð>P¸PP°ÿP6ÿV󉇌‡SÄ>‡‹vð&Š´_[ŽÇ&‰ÑæSÄN‡&‹[ŽÇ&‰GSÄ:‡&‹[ŽÇ&‰G ‹FÞ&‰GÿFþtéÿŠF·<ÿué‹NÞQ‹\>+ÑRP6ÿú „‘ÐØréïÇ®FÿÿÇFþ¡J>H‹Nþ;ÁséÖÑáÑá‹ñÄ&‡&ÿp&ÿ06ÿò‰^àŒFâ&‹G&‹W;àFu;ÞFt雋vþÑæÄ*‡&‹‰Fðƒ>®Fÿu£®F‹Fð+®F;<>r ¸ûèP¸HP6ÿÏò‹Fð+®FÑà‹6R>ÑæÄ"‡&‰Fø g‘ÐØs ÿvð6ÿfòë ‹vðÑæÄJ‡&‹‰Fö¸P�FöP¡>¼FP‹FøºRP6ÿ`óÿ6¼Fÿvøÿvð°P6ÿWòÿFþtéÿ‹å]Ë>Ä^&‰G ÿ\>‹FðÄ^&‰G &ÇGÿvì6ÿGó‹å]ÊU‹ìƒì ‹F‰Fø¸‰FúˆFüÆFý‰Fþ¸P�FøPÿ6>¡*>ºRP6ÿ`ó¡V>H±Óà*>„‰Föƒ*>‹å]ÊU‹ìƒì g‘ÐØséÙ‹F ¹÷áŽF‰FþŠF´‰Fú÷^ú±Óà‰Fü¸.èP°P°P6ÿ‰ò‰^öŒFøŒÀ Ãu‚~u ¸;èP6ÿÅòÇFôë5Ävö&‹|ÑçÄ*‡&‹‰Fô‹NüÄ^ö&OÄ"‡& ‰NüÑàÄJ‡‹ð&‹FúÆFïš‹Fü‰Fð‹Fú‰Fòƒ~t<¸P�FïP¡>ºFP‹FþºRP6ÿ`óÿ6ºF‹FþƒÀPÿvô°P6ÿWòƒFþÿN뾋å]ÊU‹ì�쌠g‘ÐØsÄ*èS°P6ÿŽòÇFÌ‹J>A°ÿÄ>>‡üòªƒ>¬Ft ƒ>P>u6ÿ4ò }‘ÐØskÇFÀ‹6P>ÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^àŒFâÿ6‡6ÿGóÄ^à&‹GƒÀŠc‰µÑáÑáÁ&‰GŠz‘ÐÙs¡\>¹÷á&GƒÀ ‹:>ÑáÑáÁ&‰G r‘"z‘¢„‘ÐØré‡6ÿ9òÇ<>ÇFþ¡J>H‹Nþ;Ár9ÑáÑá‹ñÄ&‡&ÿp&ÿ06ÿò‰^àŒFâ&‹G&‹W;àFu;ÞFuÿ<>ÿFþu¼‹6R>ÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^àŒFâÿ6‡6ÿGó¡<>ÑàÄ^à&‰Gƒ>N>u ¸hèP6ÿÅòëD‹6N>ÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^àŒFâÿ6‡6ÿGóƒ>2>u Ä^à&‹G£2>ë ¡2>Ä^à&‰GÆF·ÿÇFÜÇFþ¡J>H‹Nþ;ÁséGÑá‹ñÄ*‡&ƒ8té.‹vþÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^àŒFâ‹Fþ@‰Fü&‚uéÄ^à&€ ÿué¿Ä^àŠF·&8G ué´<ÿt釋Fü;J>s~ÑàÑà‹ðÄ&‡&ÿp&ÿ06ÿò‰^àŒFâ&€ ÿuU‹vüÑæÄ*‡&ƒ8uFÄ~à&‚}t<¡²F@£²FÄ*‡&‰‹ðŠF·Ä>‡&ˆ‹FÜÄ^à&‰Gÿ6‡6ÿGóć‹vü&Š´FÜÿFüéyÿ‹vþÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^àŒFâÇFÜÿ²FÄ^à&ŠG ˆF·Ä>‡‹6²F&ˆ‹~þÑçÄ*‡&‰1Ä^à&‹G&‹W‰Fä‰Væ‹FÜ&‰Gÿ6‡6ÿGóć‹vþ&Š´F܃~ÀuÄ^à&ŠGÐØs¡²F‰FÀ€~·ÿt‹Fä‹Væ;ÜFu;ÚFt ¸ƒèP6ÿÅò餋Fü;J>sôÑàÑà‹ðÄ&‡&ÿp&ÿ06ÿò‰^àŒFâ&€ ÿt&ŠGÐØrjÄ^à&‹G&‹W;Væu;FäuU‹vüÑæÄ*‡&ƒ8uFÄ~à&‚}t<¡²F@£²FÄ*‡&‰‹ðŠF·Ä>‡&ˆ‹FÜÄ^à&‰Gÿ6‡6ÿGóć‹vü&Š´FÜÿFüé\ÿÿFþté«ýÇ>>ÇFþ¡J>H‹Nþ;Ár!Ñá‹ñÄ*‡&ƒ8uÿ>>¡²F@£²F&‰ÿFþuÔ m‘ÐØs6¡J>‰FÊ@£J>;L>v°P6ÿ´ùÿJ>ÿ>>¡²F@£²F‰FÈ‹vÊÑæÄ*‡&‰¡²F@£¶F;¸Fv°P6ÿ¹ù¸Ä>J‡‹¶Füò«¸Ä>F‡‹¶Füò«¸Ä>N‡‹¶Füò«¸Ä>:‡‹¶Füò«¸Ä>B‡‹¶Füò«°Ä>R‡‹¶Füòª¡>>)²F¸£V>ÆF·ÿ‹6P>ÑæÄ*‡&‹‰ºF‹6R>Ñæ&‹‰¼F‰Fþ¡J>H‹Nþ;Ásé›ÑáÄ*‡‹ñ&‹‰Fð‹vþÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^àŒFâÿ6‡6ÿGóÄ^à&‹G‰Fƃøÿt";X>r‹Z>;Ás ¡\>+ÁFÆë ¡Z>+X>)FÆ‹FÆÄ^à&‰G&‚u‹vðÑæ&‹GÄJ‡&‰Ä^à&‹G ‰Fú ÀtK‹vðÑæÄB‡&‰Ñà‹Ø‹‡^>‰F¾ ÀtÑàÄ*‡‹ð&‹;Fðv ‹^úÑã‹Fþ‰‡^>‹Fú;D>u ‹Fð;FÌv‰FÌ‹vðÑæÄN‡&‹‰Fè g‘ÐØsÆF¹ëÄ^à&ŠG±ÒèˆF¹Ä^à&ŠG$<uÆF¹ÄR‡‹vð&бÒèŠV¹:ÂsÒâÄ~à&ŠE$ ÂÄR‡&ˆ€~¹u ‹Fè@%þÿë ‹FèƒÀ%ðÿ‰Fè‹vþÑæ‹FèÄ"‡&‰Ä^à&G‹vðÑæÄN‡&‰Ä‡‹~þ&Š´Ä:‡&ÿFþtéWþ¸‰Fö‰Fô¹‰V>ˆF¸‰FîÆF·ÿ‰Nð‹Fð;²Fvé4Ñà‹ðÄB‡&ƒ8u ¡V>&‰éŒ‹Fð;Fîwé…Æ†uÿÑàÄB‡‹ð&‹‰Fú‹Fð‰F¼‹F¼;²Fw_ÑàÄB‡‹ð&‹;FúuEІuÿÐØs'ŠF¸ÐØrÆF¸ÿ‹Fð‰Fì‹F¼‰Fê‹v¼ÑæÄB‡&Çë‹F¼‰FîÑà‹ð¡V>ÄB‡&‰ëƆuÿÿÿF¼u˜ÿV>ÄR‡‹vð&бÒèˆF¹Ä>‡&Š:F·tzÇFö z‘ÐØsÑæÄ:‡&‹ÑàÑàƒÀ ‰FôëÇFô€~¹u ‹Fô@%þÿë€~¹u ‹FôƒÀ%ðÿ‰Fô‹vðÑæ‹FôÄN‡&ƒÀ%ðÿ&‰Ä>‡‹vð&ŠˆF·ƒ>´FuTN‰6´FëM€~¹u ‹Fô@%þÿë€~¹u ‹FôƒÀ%ðÿë‹Fô‰Fò‹vðNÑæÄN‡&‹‹NòÁ+Fô&‰‰NôƒùvƒnôÿFö‹vðÑæ‹FöÄJ‡&‰‹FôÄF‡&‰ÄN‡&‹ÁH‰FÄ;ÈvÇFÂ�ë#ÄR‡‹vð&öt ÇFÂ��Föë ‹Fı Óè‰FÂ�FÎPÿvÂ6ÿeóƒ>>ÿu‹FÎH£>‹vðÑæÄN‡&‹±ÓèFö€~·ÿu &‹%Fôƒ~ôvÿFöƒnôÿFðtéÀý g‘ÐØsDŠF¸ÐØs=¸²èP6ÿÅòÿvì6ÿfòP°P6ÿ ó¸ðèP6ÿòòÿvê6ÿfòP°P6ÿ ó¸÷èP6ÿòò m‘ÐØsU‹vÌÑæÄN‡&‹ÄF‡&ƒÀ±ÓèÄJ‡&‰Fº‹>D>Ñç‹Nʉ�^>-‹~ÈÑç&‰ÄB‡&‹÷Ø&‰Ñá‹ñÄ"‡&ǃ>P>t‹6ºFÑæÄB‡&ƒ8~&÷ „‘ÐØs‹6¼FÑæÄB‡&ƒ8~&÷ }‘ÐØr¡²F£´FÇFþ¡J>H‹Nþ;Ár ÑáÄ*‡‹ñ&‹8ÑçÄF‡&‹Ä"‡&ÿFþuÕ‹6P>ÑæÄ"‡&‹ƒÀŠc‰µÑáÑáÁ£ŽFƒ>¬Fu雋6P>ÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^àŒFâÿ6ÆFÿ6ÄF6ÿò‰‡Œ‡ÿ6‡6ÿG 0œdxU‹ìƒìÇFê‹Fê;vFré)ÑàÑà‹ðÄ6‡&ÿp&ÿ06ÿò‰^øŒFúÄ^ø&‚t &ÿw&ÿ7ëâÄFø‰FüŒFþ‹Ø�G P6ÿóÄ^ü&€ !r 6ÿóÆFÕ!ë °!Ä^ü&*G ¢FÕ¸FÕP6ÿüòÄ^ü&ÿw&ÿw6ÿò‰^øŒFúÄ^ø&ŠG<t < t &ÿw&ÿ7ëÝÄ^ø&‹G‰FìÑàÄ*‡‹ð&‹‰FèÄ^ø&‹O‰Nö‹Nì ÉttÑàÄJ‡‹ð&‹‰FòÄ>‡‹vè&ŠˆFç;6²FwxÑáÑá‹ñÄ&‡&ÿp&ÿ06ÿò‰^øŒFú¡D>&9G uSÑà‹ð‹´^>ÑæÄ*‡&‹0ÑæÄJ‡&‹‰Fî‹Vò+бÓâVö‰Fòë%Ä^ø&‹G ‰FòŠg‘ÐÙsÿvöP�FôP�FðP6ÿkòë ‹Fö‰Fô‹Fò‰Fðÿvð°P6ÿ ó°:P6ÿ÷òÿvô°P6ÿ ó g‘ÐØsR¸.éP6ÿòòƒ~ìt ‹Fè;²Fw P6ÿfòPë‹vèÑæÄJ‡&ÿ0ëÿvò°P6ÿ ó°:P6ÿ÷òÿvö°P6ÿ ó¸3éë¸8éP6ÿüòƒ~ìt ‹Fè;²Fv¸<éë €~çÿu ¸AéP6ÿüòëŠFç´P°ÿP6ÿ ó6ÿóÿFêéËý‹å]ÃU‹ìƒìh¸‰Fþ‹NI‰Nü‰Fè‹Nü‹Fþ+ȃùréµ Àu ƒ~üt騋Fþ@‰Fö‹Fö9FürvH‰Fô‹vöÑæÑæÄ^&‹&‹P‰Fê‰Vì‹vôÑæÑæÄ^&ÿp&ÿ0ÿvìÿvê6ÿÿùÐØs‹vôÑæÑæÄ^&‹&‹P&‰@&‰PÿNôë‹vôÑæÑæ‹Fê‹VìÄ^&‰@&‰PÿFö낃~èuéM‹FèH‰FèÑà‹ð‹JÀ‰Nþ‹B˜‰Füé;ÿ‹Nþ‹FüÈÑé‰NòÑáÑáÄ^‹ñ&‹&‹P‰Nê‰Vì‹Fþ‰Fú‹Fü‰FøÑàÑà‹ð&ÿp&ÿ0RQ6ÿÿùÐØs9‹vüÑæÑæ‹~òÑçÑçÄ^&‹&‹P&‰&‰Q‹Fê‹Vì&‰&‰P&‹&‹Q‰Fê‰Vìÿvìÿvê‹vþÑæÑæÄ^&ÿp&ÿ06ÿÿùÐØsP‹vþÑæÑæ‹~òÑçÑçÄ^&‹&‹P&‰&‰Q‹Fê‹Vì&‰&‰P&‹&‹Q‰Fê‰Vì‹vüÑæÑæ&ÿp&ÿ0RP6ÿÿùÐØs9‹vüÑæÑæ‹~òÑçÑçÄ^&‹&‹P&‰&‰Q‹Fê‹Vì&‰&‰P&‹&‹Q‰Fê‰Vì‹vøÑæÑæÄ^&‹&‹P‰Fî‰Vð‹Nú‹Fø;Èvé�ÑáÑáÑàÑàÄ^‹ñ&‹&‹x–&‰&‰x‹ð‹Fî‹Vð&‰&‰PÿNø‹vøÑæÑæÄ^&ÿp&ÿ0ÿvìÿvê6ÿÿùÐØrÝ‹vøÑæÑæÄ^&‹&‹P‰Fî‰VðÿFúÿvìÿvê‹vúÑæÑæÄ^&ÿp&ÿ06ÿÿùÐØréhÿëØ‹Fø+Fþ‹Vü‹Nú+Ñ;Âs‹vèÑæ‰JÀ‹Fü‰B˜‹Fø‰Füë‹vèÑæ‹Fþ‰BÀ‹Fø‰B˜‹Fú‰Fþ‹Fè@‰Fèƒør ¸EP6ÿÙòéý‹å]ÊU‹ìƒì¸FéP6ÿòò }‘ÐØs ¸ŠéP6ÿòòÇFþ‹Fþ;²Fvé±ÿˆNí‹ðÄ>‡&8t#¸”éP6ÿòòÄ>‡‹vþ&Š´P°ÿP6ÿ ó6ÿó‹vþÑæÄJ‡&‹º¹ãÑàÑÒâú‰Fô‰VöÇFø¡J>H‹Nø;Ásé™ÑáÄ*‡‹ñ&‹;Fþté~‹vøÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^úŒFü‰‡Œ‡Ä‡&‚t&ÿw&ÿ76ÿòëß‹vøÑæÄ"‡&‹ºFôVö‰Fð‰VòR°P6ÿ óÿvð°P6ÿ ó¸žéP6ÿòòÄ^ú&‹GPH‰FîX Àu&öGtÇFîÿÿëÇFî‹FîºFðVò‰Fð‰VòR°P6ÿ óÿvð°P6ÿ óÄ^ú&öGt ¸£éP6ÿòò븬éP6ÿòòÄ^ú&ÿw°P6ÿ ó g‘ÐØs*ŠFíÐØs#ÆFí¸±éP6ÿòòÿvþ6ÿfòP°P6ÿ ó¸·é븽éP6ÿòòć�G P6ÿóć&ŠG ±*ȈFÕ<vÆFÕ¸FÕP6ÿüòÄ^ú&ÿw&ÿw6ÿò‰‡Œ‡�G P6ÿó6ÿóÿFøtéYþÿFþtéíý w‘ÐØsm¸£vFÄ&éSP6ÿŽòƒ>vFtT¸ÌéP6ÿòòÆ^‰Ä6‡Sÿ6vF6ÿúè1øÇvF¸êP6ÿòòÄ*éS°P6ÿŽòÆ^‰ÿÄ6‡Sÿ6vF6ÿúèý÷‹å]Ë@ž•ã |U‹ìQQ¸ZˆPÄ^Sÿv�FüP6ÿœó‰Fþ Àt ¿ˆêWP6ÿÏò‹å]ÂU‹ì¸¡êP¸Pè¾ÿ]ÃU‹ìQŠFÐØsÿN Ä^&Š´±ÓàhÕÿF‹F Ñè‰Fþƒ~þtÄ^&‹hÕƒFÿNþëç‹F ÐØs Ä^&Š´hÕ‹å]ÂU‹ìƒì‹F± Óè‰Fö‹F‰Fþ�fÿÆFïÿŠFïÐØr韋F F¹;Áv‰Nøëƒ~ uÇFøë ‹F F‰Fø‹Fø¹ÁH1Ò÷ñ‰Fô‹^�Qÿv ÿvöP6ÿ[ó‹^‹v�‰FúŒ^ü‹Nø+ΉNøÇFŠVÐÚs QPÿvþèÿÄ^úSÿvøè¸þ‹FøFþ‹N +ȉN ‹FôFö ÉuÆFïéWÿÿv 6ÿjó‹å] U‹ì�윸Ä>rF¹üò«ÇhÕ g‘ÐØsÇFÞdžzÿÿ6ôF6ÿfòë s‘ÐØsdžzÿÇFÞ‹6ôFÑæÄJ‡&‹‰Føë džzÿÇFÞ i‘ÐØs ‹†zÿƒÀB닆zÿƒÀ‰†xÿ‹†xÿƒÀŠæÿþÁµ�áþÿÁ‰†xÿ g‘ÐØsƒ†xÿ:¡¬F Àt‹ŽxÿƒÁ@%þÿÁ‰†xÿ‹†xÿ¹#Át ¹+ȉŽd÷ëdžd÷ÇFÜGWÿ6¾F6ÿfò‰Fò¡”F‰Fð¡8>‰Fæ¡6>‰Fè¡,>¹1Ò÷ñ‰Fâ¡(>1Ò÷ñ‰FÚÇFÔÿÿ¡öF‰FÖ‹6N>ÑæÄ*‡&‹‰F„ÑàÄJ‡‹ð&‹‰N‚¡2>ÄF‡&‰F€‹D>Ñã‹·^>ÑæÄ*‡&‹‰†~ÿ o‘ÐØr g‘ÐØs%ÿ¶~ÿ6ÿfò‰Fê‹¶~ÿÑæ‹F‚ÄJ‡&+±ÓàF€ë ‹F‚‰Fê‹F€‰FìÇFxÿ†d÷‰Fô,>‰FØŠg‘ÐÙréW(>‰F¢s ¸¢êP¸4P6ÿÏò‹N¢*>¡V>Hº÷âÁ‰F¦s ¸µêP¸4P6ÿÏò‹F¦0>‰Fªs ¸ÈêP¸4P6ÿÏò¡V>HÑàFª‰FÎs ¸ÛêP¸4P6ÿÏò¡V>H‰F¬¡*>¹1Ò÷ñV>H‰F¤¡0>¹1Ò÷ñ‰F¨¡.>1Ò÷ñ‰FС†F‹ˆF‰Fš‰Vœ¡~F‹€F‰Fž‰V ¡‚F‹„F‰FƉVÈ¡zF‹|F‰FʉVÌÇF®„¡ÓºÂH±Óà» ÉF°¡ÓÂHÓà ÉF´ÓJÓâ Ó‰V¸¸ÿÿ‰F²‰F¶‰Fº¸‰Fĺ‰F¼‰V¾¸ŠFP6ÿjø‰Fþ¡ŠF‹ŒF‰FÀ‰V e‘ˆFÓ f‘ˆFÒ‹FÎ.>‰F–s¸îêë‹FØ(>‰F–s ¸ëP¸4P6ÿÏò‹F–¹ÿ#Áº+ЉV˜‹F–Á± Óè‰FŒ±Óà‰F”‰Fä g‘ÐØsOƒ>¬FtHÿ6ÆFÿ6ÄF6ÿò‰‡Œ‡‹6ºFÑæ‹F”ÄJ‡&º¹ãÑàÑÒâúć&‹O¿Á׉F¼‰V¾¸‰F’¢c‰ÇFú‹Fú;²Fvéä‹ðÄ>‡&€8ÿt}þc‰ƒ~’tÇF’ÿFŒ‹vúÑæÄN‡&‹‰FŠ‹FŒ‰Fˆ‹6P>ÑæÄ"‡&‹ƒÀÄ>‡‹vú&еÑáÑáÁ‰F†¿W�NˆQ‹>ºFQºRP6ÿ`ó‹FŒ±Óà+F”‹vúÑæÄJ‡&‰‹vúÑæÄN‡&‹F’r ÄR‡‹vú&ö  ^&ŠG ˆF¾�O ‰NàŒFâ‰NÜŒFÞ¹‰NÚ´‰F؉Nê‰Næ‰Nè‰Nä‚~¾t[‹FØH‰FØÄ^à‹vÚ&в ʈN½‹ðÄ^Ü& ˆV¼‹Fê±ÓÀŠ^½·3ÉFê‹FæÓÀ¶3‰Fæ‹FèÓÈ3‰Fè‹FäÓÈ3ÉFäþN¾ÿFÚ럋Fê‹lÕ1Ò÷ñ‰Vþ‹Fè»%1Ò÷ó‰Vú‹Fæ1Ò÷ñ‰Vü‹Fä1Ò÷ó‰Vøƒ~üuÇFüƒ~øuÇFøŠFÄ<ÿt <þtÆF¾ëÆF¾Ä^&ŠG þÀF¾þÀÐè´‰Fö¡lÕ‰F̃~Ìuéÿ6jÕ‹Fþº¹ ãÑàÑÒâúRP°ÿP6ÿVó‰^òŒFôÿvÿv6ÿò‰^ŒFÆFÇ€~Ç%s$Ä^ò‹vú&‚8t陸+Fö&ŠO%µ;Èr&ÆG%ÿéšÄ^ò&ŠG%´‹vú&ˆÑàÄv&ŠL þÁµ�t ‹øÄ^ò�9Ž^¸üò¤YÄ^ò&ŠG%´ÑàÄv&ŠL µÈ‹ñ�x�vÀŠN¾µüò¤Ä^ò&ŠG%ˆFÕ‹Fö&G%‹FþnÕ‰FÖ�FÐP¸Pè¼øë@þFÇ‹FúFø‰Fú¹%;Ár)Núé9ÿ‹FþFü‰Fþ‹lÕ;Ár)NþÿNÌéÜþ¸xìP¸P6ÿÏò‹å]Ê t�FŒ€ë ‹F’± ÓèFŒ‹F’%ÿ‰F’‹Nú;´Fu ÀtÇF’ÿFŒ‹FŒ‰FàÿFútéÿ c‰´‰Fö�FÜPÿ¶zÿèËùÿ¶zÿ�FÜP°Pèú�FÔP¸Pè°ù¸P�FÔP°Pèåù g‘ÐØs�FšP¸:PèŽù¸:P�FšP°PèÃù i‘ÐØs¸FêP¸BPèlù¸BP¸FêP°Pè¡ùƒ>¬FtB¸ëP¸PèJù¸P¸ëP°PèùĨFSÿ6¬Fè.ùÿ6¬FĨFS°Pèbù¡¬FÐØsèGù¸>êP¸Pèù¸P¸>êP°Pè=ù¸çÿP æÿ´Pèëø æÿ´P¸çÿP°Pèù æÿÐØsèùƒ¾d÷t èùøÿŽd÷ëð¡,> Àtÿ6>P¸P°ÿP�†v÷PèDù¡(> Àtÿ6>P¸P°ÿP�†v÷Pè)ù g‘ÐØr鸉†n÷¹‰N’‹V–�Âÿ± Óê‰VŒ»‰žf÷‰žl÷±Óꈖj÷‹VŒ± ÓâÓ‰–h÷žj÷ˆžk÷‰Fú‹Fú;²FvécÑà‹¶n÷ÑæÄB‡‹ø&‹&;ué�ƒ¾f÷uÄR‡‹¶n÷&öuƆk÷뀾k÷u ¸ÿÿ+†f÷‰†f÷ëÿŽf÷�†f÷P¸PèÔ÷¸P�†f÷P°Pèø‹FŒ±Ó舆j÷‹FŒ± ÓàF’‰†h÷°†j÷´‰†f÷ˆ†k÷‹Fú‰†n÷Ä>‡‹vú&€8ÿtƒ~’tÇF’ÿFŒ°8†k÷t6‹¶n÷ÑæÄB‡&‹ É} ‹¾~ÿÑç&; uŠm‘ÐÙsˆ†k÷ë Æ†k÷ëƆk÷‹vúÑæÄN‡&‹†f÷s ¸ëP6ÿÅò‹vúÑæÄN‡&‹F’r ÄR‡‹vú&öt�FŒ€ë ‹F’± ÓèFŒ‹F’%ÿ‰F’‹Nú;´Fu ÀtÇF’ÿFŒÿFúté‘þƒ¾f÷uÄR‡‹¶n÷&öuƆk÷뀾k÷u ¸ÿÿ+†f÷‰†f÷ëÿŽf÷�†f÷P¸PèŠö¸P�†f÷P°Pè¾ö¡*> Àtÿ6>P¸P°ÿP�†v÷Pèþö¡0> Àtÿ6>P¸P°ÿP�†v÷Pèãö¸‰†n÷‰Fú‹Fú;²FwkÑà‹¶n÷ÑæÄB‡&‹‹ø&9 tP‹¾~ÿÑç&; u m‘ÐØs ÄJ‡&‹ë ‹¶n÷ÑæÄJ‡&‹‰†p÷�†p÷P¸Pèâõ¸P�†p÷P°Pèö‹Fú‰†n÷ÿFúuŒ‹¶n÷ÑæÄJ‡�P¸Pè±õ¸P‹¶n÷ÑæÄJ‡�P°PèÝõ¡.> Àtÿ6>P¸P°ÿP�†v÷Pèö�~˜tƒ~˜tè¡õÿN˜ëò‹F”±Óè‰FŒÇF’ÇFú‹Fú;²Fv鮋ðÄ>‡&€8ÿu8ÑæÄN‡&ƒ8u ‹ðÄR‡&ötd‹>‹FúÈQÑà‹ðÄN‡&ÿ0ÄF‡&ÿ0°ÿë;¸+F’‰F˜=tƒ~˜tè!õÿN˜ëò¸‰F’ÿFŒ‹>‹NúÑRÑá‹ñÄN‡&ÿ0PP�†v÷Pè`õ‹vúÑæ‹F’ÄN‡&‰F’± ÓèFŒ�f’ÿÿFútéFÿ¸+F’‰F˜=tƒ~˜tè·ôÿN˜ëò |‘ÐØs¡$> Àtÿ6>P¸PP�†v÷Pèþô¡ F Àtp¹V‡QÄœFSP¸‹ÐRP¸P¸rmP�†v÷P¸P6ÿwú‰Fþ Àu;¸V‡P¸ÿÿP�FŽP�F’P6ÿ�ó‰Fþƒ~’t Ä^ŽSÿv’èûóëÒ¸V‡P6ÿ•ú‰Fþƒ~þt¸:ëP6ÿÅòÿvþ6ÿó¸_ëP6ÿòò÷hÕ¸º‰†r÷‰–t÷¹ZˆQRP6ÿÇú‰Fþ¸hÕP¸PèŸó¸ZˆP6ÿ•ú‰Füƒ~þu Àt‰Fþ‹Fþ Àt ¿aëWP6ÿÏò‹å]ËU‹ìQQ¸ÜˆPÄ^Sÿv�FüP6ÿœó‰Fþ Àt ¿:ìWP6ÿÏò‹å]ÂU‹ìƒì,¸Ä>rF¹üò«¸£vFº£>‰ >Ä*éSP6ÿŽò¡vF¹÷á¹ÁH1Ò÷ñ£nÕÇlÕƒ>vFué˜Æ^‰ÿÄ6‡Sÿ6vF6ÿú¡vF¹÷á¹%ÁH1Ò÷ñ£lÕ¡vF¹÷áº> >¹¿6ÿIö¹Ž¿6ÿNö‰FÚ;lÕv£lÕÆFÕŠ^Õ·Ñ㋇zë;lÕsŠFÕ´=¿sþFÕëàŠ^Õ·Ñ㋇zë£lÕ¹jÕQP6ÿeó¡lÕ‰Fþ¸‰Fø‰Fúƒ~þt-ÿ6jÕÿvúÿvø°ÿP6ÿV󉇌‡&ÆG%ÿNþ�FøƒVúëÍÇFð‹Fð;vFsxÑàÑà‹ðÄ6‡&ÿp&ÿ06ÿò‰^ìŒFîÄ^ì&‚t&‹&‹W‰Fä‰VæRPëÚÄFì‰FèŒFê‹vðÑæÑæÄ6‡&ÿp&ÿ06ÿò‰^ìŒFîÄ^èSÄ^ìSÿvæÿvä6ÿ1úÿFðéÿ¸ÜˆP¡nÕº¹ ãÑàÑÒâúRP6ÿÇú‰Fö¸‰Fø‰Fú¡lÕ‰Fþƒ~þt1ÿ6jÕÿvúÿvø°P6ÿV󉇌‡S¸Pè¾ý�FøƒVúÿNþëÉ g‘ÐØréÅ‹D>Ñã‹·^>ÑæÄ*‡&‹‰FÖ¸‰F܉FÞ‹FÞ;²FwUÑà‹vÜÑæÄB‡&‹‹ø&9 t;‹~ÖÑç&; u m‘ÐØs ÄJ‡&‹ë ‹vÜÑæÄJ‡&‹‰FØ�FØP¸Pè4ý‹FÞ‰FÜÿFÞu¢‹vÜÑæÄJ‡�P¸Pèý¸ÜˆP�FàP6ÿÌú‰Fö¸ÜˆP‹Fà‹VâÿƒÒ%þ�âÿÿRP6ÿÇú‰Fö¸nÕP¸PèÕü¸lÕP¸PèÉü¸vFP¸Pè½ü¸c‰P¸Pè±ü g‘ÐØsK¸V>P¸Pèžü¸VìP¸Pè’ü¡ÓƒÀH±Óà ‰Fô�FôP¸PèuüÇFò�FòP¸Pèdü¸ŠFë¸XìP¸PèSü¸ÜˆP6ÿ•ú‰Fö Àt ¿\ìWP6ÿÏò‹å]ËU‹ìƒìFÄ^&€ $ué§Ä^ &‹G‰FðÑàÄ*‡‹ð&‹‰FîÄ^ &‹O‰NÀ‰Nк‰VÒ°ÿˆFÔ&‹w ‰vʈV»ƒ~ðué½Ä>‡‹vî&ŠˆV¿ÑæÄJ‡&‹‰^Ò:Ðt"¡ºF‰Fî¡P>‰Fð‰NÅÄ^ &‹G ¹÷áŽF‰FÀÿvî6ÿfò‰F‹Fî;²Fwh‹vðÑæÑæÄ&‡&ÿp&ÿ06ÿò‰^ ŒF ¡D>&9G ukÑà‹ð‹´^>ÑæÄ*‡&‹‰FÈÑàÄJ‡‹ð&‹‰Fì‹vîÑæ&‹+бÓâVÀÿvÈ6ÿfò‰FÂÆF»ÿë' g‘ÐØsÿvÀÿvÊ�FÐP�FÒP6ÿkò‹FʉFÂëÇFƒ~ðt ‹Fî;²Fv°þë0€~¿ÿu'ŠF»ÐØs‹Fìë ‹vîÑæÄJ‡&‹‰FÒ‹FÀ‰FÐÆFÄÿë ŠF¿ˆFĈFÔÄ ð¡0[¢µØ*ˆU‹ìŠF¢vÕŠF¢wÕŠF ¢xÕŠF ¢yÕ¸£tÕ£pÕ£rÕ]ÊU‹ì¡pÕ+tÕ£pÕŠNÐÙs/ Àt¸ÚíP6ÿÅòÿ6ÔF6ÿ\òÇpÕ¸9Fr ‹^ €?èu£pÕ]ÊU‹ì‹F;pÕv£pÕ]ÊU‹ìƒì‹F£tÕ¡pÕ‰Fþ‹F;Fþéø¡rÕ Àt ˆFûÇrÕë ‹^ ‹vþŠˆFû‹^ ‹vþŠ@ˆFúŠ^û·Їšì´‰Fü Àu¸ îP6ÿÅò‹FþÔFP6ÿ\ò‹Fé¤÷Fü€tb‹Fþ@;Fu‹Fþ£pÕŠFû´ÿ£rÕ郊Fú$À±ÒèŠNú€áÁˆFù÷Fü@töFú8t´‹ØŠ‡ší´ë‹FüƒÀŠ^ù·Š�šíµÁ‰Fü‹Fþ‹^‰‹Nü�áÁ‰FþŠNû"vÕ:xÕu ŠNú"wÕ:yÕtéÿ£pÕ°ÿë‹Fþ£pÕ°‹å]ÊU‹ìQŠF$À±ÒèŠN€áÁˆFÿ´‹Ø€¿ºíÿt#Š^ÿ·‚¿ºít€~ ÷t¸:îP6ÿÅòÿv6ÿ\ò°ë°ÿ‹å]ÊU‹ìQQÄ>‡‹v&€8ÿt¸`îP6ÿÅòÿv6ÿ\òë3‹vÑæÄJ‡&‹‰Fþ‹F‰Fü¸P�FüPÿ6>¡(>ºRP6ÿ`óƒ(>‹å]ÊU‹ìƒìƒ~ÿu(‹F >P‹F ºRP°P6ÿVó‰^üŒFþ&ÿ7‹^ÿ7ë ‹^‹vÿ0ÿpÿv 6ÿJúÐØs ÿv ÿv 6ÿOú‹å]Êà ¨sP  ) U‹ìQ‹^ ‹G‰Fþ‹N;Ès‰Nþ‹^ Ä?WÄ^Sÿvþ6ÿÀ÷ƒøÿu zÙÐØs ¸ØîP¸P6ÿÏò°ÿ¢zÙë°‹å]ÂU‹ì�ì"¸P¸P¸¢FP6ÿ^ú‰Fê Àt ¸õîP¸P6ÿÏò¸ZˆPÄ¢FSÿ6¦F¸‹ÐRP¸P¸wmPÄrFS¸(P6ÿwú‰Fê Àt ¿¢FWP6ÿÔò¸P6ÿhú Àuo‹¦FÄ6¢F�¾åþކÜýüò¤¡¦F‰Fä‹Fä ÀtH‰Fä‹ð€ºåþ.t l‘ÐØså‹v䀺åþ/uÛ¡¦F‰Fä�¾åþ~ä¹¾ïüò¤�†åþ‰FúŒ^ü‹FäƒÀ‰Fþë¸P¸P�FúP6ÿ^ú‰Fê¸Ø‡PÄ^úSÿvþ¸‹ÐRP¸P¸wmP¸zÕP¸P6ÿwú‰Fê Àt �NúQP6ÿÔòÆv‘ÿ å‡:gÚ°ÿt@¢x‘ÐØr,¸ïP¸P6ÿíò¸çÿP æÿ´P6ÿíò¸ ïP¸P6ÿíò¸ P6ÿhú Àuo‹¦FÄ6¢F�¾åþކÜýüò¤¡¦F‰Fä‹Fä ÀtH‰Fä‹ð€ºåþ.t l‘ÐØså‹v䀺åþ/uÛ¡¦F‰Fä�¾åþ~ä¹¾ïüò¤�†åþ‰FúŒ^ü‹FäƒÀ‰Fþë¸ P¸P�FúP6ÿ^ú‰Fê¸ÜˆPÄ^úSÿvþ¸‹ÐRP¸P¸wmPÄrFS¸(P6ÿwú‰Fê Àt �NúQP6ÿÔò¸Pè×¢w‘¸PèÍ¢u‘¸ Pèâm‘¸Pè¹¢i‘Æz‘ÿ¸£öF±ˆŽÞýµQP�FúP6ÿ^ú À°ÿt@´‰Fêuƒ~þuÄ^ú&‹=V6t=v6uƆÞýÿ¸ P¸P�FúP6ÿ^ú ÀtéÆzÙ�FúP¸ÑîP¸PèÇüÐØr�FúP¸ÄîP¸ Pè³üÐØsÆz‘�FúP¸ÔîP¸PèšüÐØr�FúP¸ÀîP¸Pè†ü�FúP¸ÖîP¸PèvüÐØsƆÞý�FúP¸†îP¸Pè]üÐØsÇöF�FúP¸�îP¸ PèCüÐØsÇöF`�FúP¸™îP¸Pè)üÐØsÇöFÀ�FúP¸ îP¸PèüÐØsÇöFp�FúP¸³îP¸ PèõûÐØsÇöF �FúP¸¼îP¸PèÛûÐØsÇöF€ zÙÐØr ¸ïP¸P6ÿÏò÷öF uІÞýÐØsÆg‘ÿ g‘ÐØsN¡öF £öF© t~¸ P¸P�FúP6ÿ^ú Àuh‹NþÄ~ú°.ü‹Ñãò®uø+ÑJ‰–àýƒúÿu¸/ïP¸P6ÿÏòë<Ä^úSÿ¶àý¸ Pèà¢e‘Ä^ú‹¶àý�@P‹Fþ+ÆHP¸ Pèâf‘¡öF%ÿß £öF¸P6ÿhú Àt¸P¸P¸œFP6ÿ^ú‰Fê¸ P6ÿhú Àt!¸ P¸P¸¨FP6ÿ^ú‰Fê¸@9¬Fv£¬F¸P6ÿhú ÀtX¸P¸P�FúP6ÿ^ú‰FêÄ^úSÿvþ¸ Pè3‰Fö‰Vø Òt ¸IïP¸P6ÿÏò‹Fö£2>©t¸kïP6ÿÅò6ÿóÿ2>¸P¸P�FúP6ÿ^ú Àu Ä^úSÿvþ¸ PèÚ¹ãÑêÑØâú£8>£6>¸P¸P�FúP6ÿ^ú ÀuÄ^úSÿvþ¸ P褣†F‰ˆF£~F‰€F¸P¸P�FúP6ÿ^ú ÀuÄ^úSÿvþ¸ Pèq£‚F‰„F£zF‰|F¸P¸P�FúP6ÿ^ú ÀuÄ^úSÿvþ¸ Pè>¹ãÑêÑØâú£6>¸P¸P�FúP6ÿ^ú ÀuÄ^úSÿvþ¸ Pè £~F‰€F¸P¸P�FúP6ÿ^ú ÀuÄ^úSÿvþ¸ PèߣzF‰|F¡6>;8>r&¡~F‹€F;ˆFu;†Fr¡zF‹|F;„Fu;‚Fs ¸šïP¸P6ÿÏò¸P6ÿhú‰F渉F舆ßý‹Fè;Fær龿WP�FúP6ÿ^ú‰FꊆßýÐØs‹Fþˆ†äýÄvú�¾åý‹ÈކÜýüò¤éÒ‹Fþˆ†äþÄvú�¾åþ‹ÈކÜýüò¤‹NþÄ~ú°(ü‹Ñãò®uø+ÑJ‰Väƒúÿt+ŠŽäþµ+Ê�¶åþò�¾åýò¤Š†äþ´‹Nä+Áˆ†äýˆŽäþëKƆäý‹Fè@‰Fè;Fæs:¿WP�FúP6ÿ^ú‰Fê‹NþÄvú�¾åýކÜýüò¤€¾åý(u ŠFþˆ†äýëÿN芆äýÀt€¾åý(uþÈ´�¶åýVF‹È_üò¤þŽäý�†äýPèІäýÀt`þÈ´‹ð€ºåý)uƆßýˆ†äý�†äýPèႾäýtyë9Ɔßýÿ‹Fè@;Fæs&¿WP�FðP6ÿ^ú‰FêÄFð‰FìŒFî‹Ø&€?)uÿFèÆ†ßý�†äþPè—ІäýÀt ´‹ðÆ‚åý!þ†äý�†äþP�†äýP¸P¸ÿÿP c‰þÈPÿ¶ßý6ÿëùÿFèé7þÆ|‘ÿ¸ P6ÿhú‰Fæ Àué‚ÇFè‹FæH‹Nè;Árr¸ PQ�FúP6ÿ^ú‰Fê¸9FþuÄ^úS¹­ïQP6ÿÀ÷ƒøÿuÆ|‘ë7¸9FþuÄ^úS¹µïQP6ÿÀ÷ƒøÿuÆ{‘ÿÄ^úSÿvþ°PP6ÿæù‰†âýÿFèuƒ l‘ÐØr¸¹ïP¸P°P°ÿP6ÿæù‰†âý‹å]ËU‹ìƒì¸‰Fúº‰Fü‰Vþ‹Fú9FvuÄ^‹ð&ŠˆFù±0:Ár<9w‹Fº‹Nü‹~þ6ÿIöŠNù€é0ë$ŠFù±A:Ár/¸9FþuÄ^úS¹çïQP6ÿÀ÷ƒøÿu°ÿë.¸9FþuÄ^úS¹èïQP6ÿÀ÷ƒøÿu°ë ¸éïP¸P6ÿÏò‹å]ÂU‹ìƒì è<ÐØr"¸‹ÐÄ^&‰&‰W&ÇGÄ€Ù&‹G;F s¸ˆ ëW‹v ÑæÑæÄ€Ù�X‰^öŒFø&‹‰Fü&G‰FúÇFþ‹Fü;Fús‹N ;NþvÄ€Ù‹ð&еÁ@‰FüÿFþëÚ‹Fü;Fúr¸’ ë,Ä€Ù‹vü�@Ä^&‰Z&‰WSÄ€Ù&Š´_[  ȈNÐë €~ã0uÆFÐë€~ãTuÆFÐëÇFü é¬Ä^&ÿwè3ˆFã~Ùu¸|ÙP6ÿ§÷ Àu$ƒ>~ÙtÄ|Ù&ÄG£€ÙŒ‚Ùƒ>‚Ùtƒ>€Ùt°ÿ]ð]À¬U‹ìƒìÄ~ °]‹Nü‹Ñãò®uø+ÑJ‰Vþƒúÿt)ÿFþ‹^Ç‹Fþ9Fv@‹ðÄ^ &€80r Ä^ ‹vþ&€89v¸Íëz‹^‹¹ ÷áÄ^ ‹vþ&Š€é0µÁ‹^‰ÿFþ븡ŠÙ ˆÙu¸DP¸P¸ˆÙP6ÿù‰Fø ÀuKĈÙ&ŠG ´‹^;v ‹^‹¹÷áĈًð�X ‰^úŒFü&‚u¸ôëÄ^ú&€ ÿ°ÿu@‹^ˆ¸‹å] U‹ìƒì¸ ÛÄVŒÇŒÞ±‹ØÓëó‹ÚÓëû;÷u$€â:Âu Ä^&ÆGÿëZ¾ðÄ~¹üò¤‹F =amt =wmt¸ë?¡†Ù „Ùu¸ÈP¸P¸„ÙP6ÿù‰Fþ Àu~Ä„Ù&ŠG < r<w gÚÄ^&ˆG ¸ë_Ä^Sÿv�FüP�FóPèrþ‰Fþ ÀuE gÚÄ^&ˆG ŠFüÄ^&ˆGŠFóÐØs¸ðë¸ð‰FöŒ^øÇFôÄ^SÄ^öSÿvô�FúP6ÿœó‹å]ÊU‹ìƒì6Ä^&ÇÄ^&ŠG :gÚt¸ ëO¡ŽÙ ŒÙu¸ÈP¸P¸ŒÙP6ÿù‰Fü ÀtëÚÄŒÙ&ŠG < r6<w2‹F Ä^&‰ƒ~ tÄ^ &€?ÿu¸ëx¸PPPÄ^ Sÿv 6ÿÔ÷ëc€>”Ùþu!Æ”Ù�FôP6ÿñø‰Fü Àu €~õ rÆ”Ùÿ¡’Ù �Ùu¸P¸P¸�ÙP6ÿù‰Fü ÀtëÄ^&ŠGˆFïÄ�Ù&8G w ¸ô‹å]ÊŠFï´¹÷áÄ�Ù‹ð�X ‰^øŒFúÄv&ŠDˆFì‹Þ&ŠGˆFí&ŠGˆFî&ŠGˆFëÄ^ø&ŠGˆFæ&ŠGˆFç&ŠGˆFè&ŠGˆFé&ŠG ˆFê°ÿ&8G ±ÿuAˆNåÐÙsŠNïµQ´PP6ÿ‰÷‰Fü ÀtéX ¸‰Fü‰Fö‹F ;FöwéD ŠFìÐØréñ‹Fö9F wéæÄ^ ‹ð&ŠˆFãÿFöÄ^&ŠOµ‹ñ&ˆ@Ä^&þGÄ^&ÿwè’ ˆFã±A:Ár ë6Ä^ &€u Úë (ÚÄ^ &ˆG Ä^ SÄ^Sè‰Fþ =ÚÄ^ &ˆG ‹Fþ‹å]ÊU‹ìÄ^&ŠG :(Út:¦ÚuÄ^&‹Gº&G&WÄ^&‰&‰WëdÄ^&ŠG :ÚuY&ŠGÐØs&‹G&;Gv &‹G&‹WëÄ^&‹Gº&G&WÄ^&‰&‰WÄ^&ŠG ÐØs7&ŠG ÐØs/Ä^&ƒ/&ƒ_ë!Ä^&ŠG :‘ÚuÄ^¸&‰&‰Gë¸ ë¸]ÂU‹ì¸Ä^&‰Ä^SP6ÿ½ú]ÊU‹ì�ìÄ^&ŠG :(Út :¦Út¸ éUƆíýÿÄ^&‹G‰Füÿ¹1Ò÷ñ÷á‰Fú&ĉVôŒFö9Fütf°�¾îýüòª‹Fú¹+ÁºÄ^&G&W‰Fð‰Vò&ÿw�žîýSQRP�FîP6ÿ2ù‰Fþ Àtƒøu‡‹vü�æÿ‹Nú+Nü�²îýÄ^ô‹~ü�9üò¤Ä^&ÿwÄ^ôSÿvúÄ^&ÿw&ÿw�FîP6ÿÏ÷‰Fþ Àt%ƒøuÄ^Sÿv6ÿÂú‰Fþ ÀuƆíý뵋Fþës‹Fü¹1Ò÷ñ÷á‰FøºÄ^&G&W‹Fü+FøÄ^&‰G‹Nü+NøÄ^ô‹vø�0‹ûކêýüò¤YÄ^&‹G&‰GŠFÐØsІíýÐØsÄ^S°ÿP6ÿÂú븋å]ÊU‹ìƒìÄ^&ŠG :(Út :¦Út¸ éËÄ^&‹G&‹W‰Fø‰Vú&‹O¿&O&‰Nô‰~ö;×u;Áw‰Nø‰~úŠFÐØs ÇFð‹Fø%ÿë¸<‰FðÿvúÿvøP6ÿÑõ‰Fò‹Fò Àt‹Nð+ȺNøVúÄ^&ÿwÿvúÿvø6ÿœø‰Fþ=Ûu<ŠFÐØs5Ä^&ÿw¸P�FôP¸P6ÿ7ù‰Fü Àu‹Fø‹Vú;Vöu;FôwÇFþ‹Fþ‹å]ÊU‹ì]ÿ.æÚËU‹ì]ÿ.êÚË  ÿjø‰Fô ÀuIÄ^ &Š��µ�k°]ü‹Ñãò®uø+ÑJB‰VúÄ^ �GkPR°ÿP°P¸PÄ^üS¸|P¸óðP¸P6ÿ_ù‹å]Ê U‹ìƒìÄ^&ÆG ÿ‹F =wmt =amt¸ëIÄ~°]‹Nü‹Ñãò®uø+ÑJ‰VøÄ^SBR¸PPÄFP¹Q‹Ø�GPQ6ÿã÷‰Füƒø!t=‰u‹Füéî°Ä~¹‚üòªÄ^&ÆGiÄ^�GeP6ÿjø‰FüÄ^�kÄv‹NŽFöüò¤YŠFÄ^&ˆ‡�Ä^SÄ^SÿvÄ^S�FúPèfü‰Fü Àu–ÇFüà�~üàu;Ä^Sÿvú¸‹ÐRP¸PºRP6ÿ¶÷‰Fü=àuÔÄ^‹vú&ÆxÿFúÄ^&þGi뾋Fü Àu9Ä^SÄFPÿvú¹‹ÑRQ¿Wÿv Pÿv6ÿwú‰Fü Àu  ¦ÚÄ^&ˆG ¸‹å]ÊU‹ìƒì Ä^&ŠG :¦Út¸ éß (ÚÄ^&ˆG Ä^S6ÿŸú‰Fø ÀuâÄ^&ĉFüŒFþÄ^S�GkPŽFô&Ї�´PÄ^üS�FúPèpû‰Fø Àu­Ä^&ŠOiÉtÄ^ü‹vú�8µ°xüòªÄ^&ŠGi´FúÄ^SÄ^üSÿvú6ÿ+û‰Fø ÀtMÄ^�G8PÄ^üSÿvú¸‹ÐRP¸P¸mmP6ÿ�ú‰Fö Àu"Ä^&ÿw86ÿ-ù‰Fö ÀtÄ^&ÿw86ÿø‰Fö‹Fø‹å]ÊU‹ìÄ^&ŠG :¦Út¸ ë€~v¸ë ŠFÄ^&ˆGj¸]ÊU‹ìQQÄ^ &€t4S�FüP6ÿÌúÄ^&‰ Àu0Ä^ S¸wmPÿvþÿvü6ÿ&ûÄ^&‰ Àu (ÚÄ^ &ˆG Ä^&Ç‹å]ÊU‹ìQQÄ^ &ŠG<tO<uS°ÿP6ÿ†úÄ^&‰ ÀuIÄ^ S�FüP6ÿÌúÄ^&‰ Àu0Ä^ S¸rmPÿvþÿvü6ÿ&ûÄ^&‰ Àu ÚÄ^ &ˆG Ä^&Ç‹å]ÊU‹ìQ‹F =rmt =tmt¸ë"ÿ6»Ú¸rmP6ÿè÷‰nÛŒpÛ »ÚÄ^ PÀ" °à°aðõ3€¬ÕsPªÞ % Z º ¸ðKÐLz¸ð›´ÍU‹ì]ÊU‹ìƒì‹F ¹1Ò÷ñ‰Fþ¹µ1Ò÷ñ‰Fú‹Fþ1Ò÷ñ‰Vü�ú´u ÇFøÇFömë‹Fü¹m1Ò÷ñ‰Fø‹Fü1Ò÷ñ‰Vö‹Fö¹1Ò÷ñ‰Fô¹ ;Áv‰Nô‹^ôÑ㋇’ð;FövÿNô‹FúÑàÑà FøÄ^&‰‹Fô¹Á» 1Ò÷óÄ^&ˆWÄ^&8Os&ÿ‹^ôÑã‹Fö+‡’ð@Ä^&ˆG‹FþƒÀ¹1Ò÷ñÄ^&ˆW‹F ¹<1Ò÷ñÄ^&ˆW‹F 1Ò÷ñ‰Fò1Ò÷ñÄ^&ˆW‹F »1Ò÷ó‹Âº ÷âP‹Fò1Ò÷ñYÁÄ^&ˆG¸‹å]ÊU‹ì¸‹ÐÄ^&‰&‰W‹F F u2 NÛÐØr¸P¸P¸@ÛP6ÿù£DÛÆNÛÿ¡DÛ ÀuÄ@Û‰F ŒFÄ^ &�?TNt¸½4ëhÄF £HÛŒJÛ‹Ø&‹G£HÛÄ^ &‹OÄ>HÛ‹F ü‹Ñãò¯uø+ÑJ‰LÛƒúÿu¸¼4ë-Ä^ &‹G£HÛ‹6LÛÑæÄHÛ&‹£HÛÄHÛÄ^&‰Z&‰W¡FÛ]Ê U‹ì6�VÛP6ÿFù6�PÛP6ÿÅ÷ Àu%6�cÛ6ÿ6VÛP6ÿ°ø Àu6¡XÛ=t=!t3À]ËU‹ì¸&ÛÄVŒÇŒÞ±‹ØÓëó‹ÚÓëû;÷u$€â:Âu Ä^&ÆGÿë(¾ªðÄ~¹üò¤‹F =rmt =tmt¸ë  RÚÄ^&ˆG ¸]ÊU‹ìQQÄ^&Ǹ‹ÐÄ^ &‰&‰WÄ^&ŠG :RÚt¸ ëW�FýP6ÿAù‰Fþ ÀuCÆlÛÿ€~ýuÇFþë1€~ýuÇFþë$Ä^�GÄ^ &‰Z&‰WÄ^&ÇŠFýÄ^&ˆG‹Fþ‹å]ÊU‹ìƒìÄ~°]‹Nü‹Ñãò®uø+ÑJ‰VüÄ~°&‹N‹Ñãò®uø+ÑJ‰Vþƒúÿu ‹Fü@;Fsë ‹Fü@;Fþt¸ë �~s¸ 顃~þÿu¸¼ðÄ^&‰GM&Œ_OÄ^&ÆGLë&Ä^‹vþ�@Ä^&‰GMZ&‰WO‹Fþ@‹N+ÈÄ^&ˆOLÄ^SÄ^SÿvÄ^Sÿvÿv Ä^Sÿv6ÿ.ø‰Fø Àu1‹F =wmt=amu |Úë‹F =rmt=tmu Ûë ÛÄ^&ˆG ¸‹å]ÊU‹ìÄ^&ÇÄ^&ŠG :|Út :Ût¸ ëÄ^SÄ^ Sÿv Ä^S6ÿ¡ø]ÊU‹ì¸‹ÐÄ^ &‰&‰WÄ^&ÇÄ^&ŠG :Ût :Ût¸ ëÄ^SÿvÄ^ SÄ^S6ÿù]ÊU‹ìÄ^&ŠG :|Út :Ût¸ ë Ä^Sÿv6ÿ ù]ÊU‹ìÄ^&ŠG :|Út :Ût¸ ë Ä^S6ÿQø]ÊU‹ìQÄ^ &ŠG :|Út:Ût :Ût¸ ëvƒ~ wJ‹^ Ñã.ÿ§GGGG#,5>GGGGLUÄ^ &‹G=ë2Ä^ &‹G;ë)Ä^ &ŠG.ëÄ^ &ŠG/ë¸ë!Ä^ &ŠGBëÄ^ &ŠGD´‰Fþ‹FþÄ^&‰¸‹å]Ê U‹ìÄ^ &ŠG :|Út:Ût :Ût¸ ëxƒ~ wT‹^Ñã.ÿ§¤îîîî¾ÊÖâîîîóÿ‹FÄ^ &‰G=ë?‹FÄ^ &‰G;ë3ŠFÄ^ &ˆG.ë'ŠFÄ^ &ˆG/ë¸ëŠFÄ^ &ˆGBë ŠFÄ^ &ˆGD¸]ÊU‹ìÄ^&ŠG :|Út :Ût¸ ë€~v¸ë ŠFÄ^&ˆG1¸]ÊU‹ì¾ÔðÄ~¹üò¤‹F =amt=wmt=rmt=tmt =mmt¸ë& ‘ÚÄ^&ˆG ÄFÄ^&‰Z&‰W‹FÄ^&‰G¸]ÊU‹ìÄ^&ÇÄ^&ŠG :‘Út¸ ë¸Ä^&‰G‹N Ä^&‰]ÊU‹ìÄ^&Ǹ‹ÐÄ^ &‰&‰WÄ^&ŠG :‘Út¸ ë¸]ÊU‹ìQ¸Ä^ &‰G¹ÿÿ&‰O&ˆG &ˆG º&‰G&‰W�~ rmu Ú&ˆG &ÆG&‰O&ÆG ÿë (ÚÄ^ &ˆG &ÆG¸&‰G&ˆG Ä^ Sÿvÿv6ÿ®ú‰FþŠ=ÚÄ^ &ˆO ‹å]Ê U‹ìQŠF± :Ár´µ1Ò÷ñƒÀ0Ä^&ˆëŠFÐØrÄ^&Æ0ÇFþëÇFþŠF´¹ 1Ò÷ñƒÂ0Ä^‹vþ&ˆ‹Fþ@‹å]ÂU‹ìƒì ÿvÿv�FøP6ÿÖú‰FöÄ^Sÿvý°ÿPè}ÿ‰Fô‹ðÄ^&Æ:‹Fô@‰Fô‹ðÄ^�Pÿvþ°PèXÿFô‰Fô‹ðÄ^&Æ:‹Fô@‰Fô‹ðÄ^�Pÿvÿ°Pè0ÿFô‰Fô‹å]ÂU‹ìƒìÄ^&Š<{t<[té‘ÄF‰FüŒFþÄ^&ÇÄ^&€?{u>‹û°}‹N ü‹Ñãò®uø+ÑJ‰Vòƒú s\ƒúÿtW‹NòAÄvÄ~üŽ^ðüò¤Y‹Fò@Ä^&‰Ä^üÄv&‹4�8¾âð¹ üò¤Ä^&ƒ Ä~°]‹N ü‹Ñãò®uø+ÑJ‰Vöƒúÿu¸‰éå‹F H‹Nö;Áv9‹Á@‹N +ÈÄ^‹vö�pÄ^üÄ~&‹=�9Ž^ðüò¤Y‹Fö@‹N +ÈÄ^&ëC�FøP6ÿ§÷‰Fô Àu¨Ä^ø&ŠO@µ�wAÄ^üÄ~&‹=�9Ž^ðüò¤YÄ^ø&ŠG@´Ä^&Ä^üÄv&‹4�8¾íð¹üò¤Ä^&ƒÄv&‹4Ä^ü�PÄ^&ÿwg&ÿweèþÄ^&Ä^üÄv&‹4�8¾ïð¹üò¤Ä^&ƒ¸‹å]ÂU‹ìƒì Ä^‹v�‰FüŒFþ‹ø°¹üòªÄ^ü&ÆÿŠFÄ^ü&ˆGÄ^ü�Äv‹NŽFòüò¤YÄ^ü&ÇGwÄ^ &ŠGjÄ^ü&ˆGyŠFÄ^ü&ˆ‡�Ä^ü�¿‚Äv‹NŽFòüò¤Y�FöP6ÿ§÷‰Fô ÀuQÄ^ö&ŠG@Ä^ü&ˆ‡ÝÄ^ö&ŠO@µ�wAÄ^ü�¿ÞŽ^òüò¤YÄ^ü&ƇþÄ^ü&ƇÿÿÄ^ü�‡P6 &ˆG ¸‹å]ÊU‹ìQ‹F =wmt =mmt¸ë"ÿ6ÐÚ¸wmP6ÿè÷‰rÛŒtÛ ÐÚÄ^&ˆG ¸‹å]ÊU‹ìÄ^&ŠG :ÐÚt¸ ë¸Ä^&‰ÄrÛSP6ÿò÷]ÊU‹ìQÄ^&Ǹ‹ÐÄ^ &‰&‰WÄ^&ŠG :»Út¸ ë ÄnÛS6ÿGø‹å]ÊU‹ìƒìÄ^&ŠG :ÐÚuÄrÛSÿv6ÿoøë¸ ‹å]ÊU‹ìƒì ÿv¸P�FüP¸P6ÿ7ù‰Fú Àux‹Fü‹VþÄ^&‰&‰Wƒ~þuƒ~ütY÷FüÿuR‹Fü‹Vþ‰Fô‰Vö¸)Fôƒ^öÿvÄ^ SPÿvöÿvô�FøP6ÿ2ù‰Fú ÀuÄ^ &�?ËGu&‹G &‹WÄ^&‰&‰W¸‹å]Ê U‹ìƒì¸‹ÐRP¸P�FüP6ÿÛú‰Fú ÀuKƒ~þtEÄ^ü&ƒt6�G£8ñŒ:ñÄ^ü&ŠG´£<ñ&ƒv‹ð�H‰ZñŒ\ñÄ^ü&Š@´£^ñÆ~Ûÿ‹å]ÃU‹ìƒì¡xÛ vÛu¸ÈP¸P¸vÛP6ÿù‰Fø Àu{ÄvÛ&ŠG < r < w¸ëf ~ÛÐØrèHÿŠF ÐØsÄ8ñ‰FôŒFö¡<ñë ÄZñ‰FôŒFö¡^ñ‰Fò¡|Û zÛu¸P¸P¸zÛP6ÿù‰Fø ÀuoÄzÛ&ŠG Ä^ &:Gw¸ôëYÄ^ &ŠG´¹÷áÄzÛ‹ð�X ‰^üŒFþ&ŠG´;Fòs‰FòÄ^ &ŠG´P¸PÄ^ü&ŠGþÈ´PÄ^ôSÿvò6ÿÔ÷‰Fø Àtnë<€~ñu8ÇFø°¢lÛÄ^ &ŠOµQ´PÄ^ü&ŠOþɵQPÿvò6ÿÎø‰Fú‹Fø ÀtUëV€~ñuÇFøëÀ€~ñ tº€~ñuŠF ÐØr­€~ñŒt§6ÿ¿ø‰Fø¸P�FñP6ÿ#ù‰FøŠFñÄ^&ˆƒ~øuéqÿ븋Fú‹å]Ê U‹ìÄ^ S°ÿPÄ^S6ÿgû]ÊU‹ìÄ^ S°PÄ^S6ÿgû]ÊU‹ìƒìÄ^ &ŠG :gÚt¸ ëx¡xÛ vÛu¸ÈP¸P¸vÛP6ÿù‰Fú ÀuVÄvÛ&ŠG < rL< wH°Ä^&ˆÄ^&ÆGÄ^&ÆGPÄ^&ˆGÄ^&ˆGÄ^&ÆGÿÄ^&ˆGÄ^&ÆGAÄ^&ˆG´ë6¡|Û zÛu¸P¸P¸zÛP6ÿù‰Fú ÀuÄzÛ&ŠG Ä^ &:Gw¸ôé«Ä^ &ŠG´¹÷áÄzÛ‹ð�@ ‰FüŒFþÄ^ &ŠGÄ^&ˆÄ^ü&ŠGÄ^&ˆGÄ^ü&ŠGÄ^&ˆGÄ^ü&ŠGÄ^&ˆGÄ^ü&ŠGÄ^&ˆGÄ^ü°ÿ&8G ±ÿuAÄ^&ˆOÄ^ü&8G °ÿu@Ä^&ˆGÄ^ &ŠGAÄ^&ˆGÄ^ &ŠGÄ^&ˆG¸‹å]Ê LIBRARY: ctos.lib VERSION: x11.3-3/4 (friday march 4, 1988, 17:25) COPYRIGHT 1980, 1987 CONVERGENT TECHNOLOGIES, INC. ALL RIGHTS RESERVED THIS PROGRAM IS FURNISHED UNDER A LICENSE RESTRICTING ITS USE SOLELY FOR THE OPERATION OF A DESIGNATED COMPUTER FOR A PARTICULAR PURPOSE, AND MAY NOT BE COPIED OR OTHERWISE USED WITHOUT THE PRIOR WRITTEN CONSENT OF CONVERGENT TECHNOLOGIES, INC. TITLE TO AND OWNERSHIP OF THE PROGRAM, INCLUDING ITS SOURCE CODE, SHALL AT ALL TIMES REMAIN IN CONVERGENT TECHNOLOGIES. VERSION: 12.0 (tuesday march 1, 1988, 15:00) %' Video %'[Suppress pause between pages?]'y %'[Screen time out (in minutes)]' %'[Color (e.g., Green)]' %'[Narrow characters?]' %'[Background color]' Type %'File list'[kbd] %'[Confirm each?]' Install High C Libraries, and include files.  The submit form below defines parameters used to install the High C sample program files. The first parameter (defaulting to [sys]) tells this submit what volume to use to hold the sample files. The second parameter (defaulting to ) tells this submit what directory to use to hold the sample files. The third parameter (defaulting to [sys]) tells this submit what volume and directory has the system command file to be updated. If you are booted from a local disk, then [sys] is appropriate for this parameter. If you wish to update the master, then make sure that the samples are copied to a volume attached to the master, and set this parameter to [!sys]. Press GO to continue... Submit %'File list'[f0]continue.sub %'[Parameters]'[sys] [sys]Sys.cmds 1 [sys] 1Þ Þ Þ Þ Þ Þ Þ$ Þ) Þ. Þ3 Þ8 Þ= ÞB ÞG ÞL ÞQ ÞV Þ[ Þ` Þe Þ �O�—´—{—æ—¦—õ½ e½ …½ –½ ×½ (½ B½ W½ ¼½ ‹¯ 0 öÐ �p p §Å ‰Å ÇÅ 5Å x­ò˜þÈþC—Ù—x—ÙN�NíN8NzN Z$Z<ZTZlZ„ZýZ¥ZZZZZyZ¾ ZÞ Z Z Z1 ZF Zù Z6O6y6—6ä6)6Q6o6„6Û66Ú6&6¯6Ô6±  lib procedures. This file requires that CTOStypes.h be included first. The definition of the CTOS routines is in the new ANSI proposed standard that enforces type checking of parameters. Note that upper/lower case sensitivity is in effect for all C compilations. CTOSTypes.h C include file that defines some standard CTOS types. CTYPE.H hc.pro C profile. This file is automatically included in C compilations if visible to the compiler. It can be used set default parameters, switches ect. It is usefull for setting the memory model pragma, for example. This file should be taylored for the specific environment desired by the user. hc.run This is the High C compiler. HC.sym This is the compiler symbol file. It can be used to aid debugging. (Remember, the port for this compiler is not yet complete.) hcbc.lib High C library: Big memory model, math coprocessor or math service required. hcbe.lib High C library: Big memory model, with floating point emulation. hclc.lib High C library: Large memory model, math co%' Type %'File list'[kbd] %'[Confirm each?]'  Finished installing High C Samples ÕOðÚo@à?°áðåÿê�íO�ïàôß ÷o àP Ï `ß0o$߀'Ÿ`> F¿ O� àO�pYß\ àdo`qÿÐß Ð€_°Š�o ��’ß  •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü%' Copy [kbd] [Scr]<$>args.Tmp Yes '[File List]' '[Keyword List]' Copy [kbd] [Scr]<$>desc.Tmp Yes 'find keywords in files' %' New Command %'Command name''keyword' %'Run file'%0%1keyword.run %'[Field names]'@[Scr]<$>args.Tmp %'[Description]'@[Scr]<$>desc.Tmp %'[Overwrite ok?]'yes %'[Case (default 00)]' %'[Command file]'%2 Type [kbd] When the restore program prompts for (name).01, Press GO. If further diskettes in this series are needed, they will be prompted for by (name).02, etc. In each case, the .0n refers to the disk n of m in the series. Insert the nth diskette at the prompt and press GO. Press GO to begin... 1Restore %'[Archive file]'[f0]Samples %'[File list from]*'* %'[File list to]*'%0%1* %'[Overwrite ok?]'y %'[Confirm each?]' %'[Sequence number]' %'[Merge with existing file?]' %'[List files only?]' %'[Log file]' Submit %'File list'[f0]Prompt.sub %'[Parameters]' %'[Force Expansion?]' %'[Show Expansion?]' /€C ÞH ÞM ÞR Þ MetaWare High C Preliminary User Notes April 4, 1988 MetaWare High C is a professional developers tool. It has built in switches and parameters that allow the sophisticated user nearly complete control over the environment in which the output code is to be executed. It is a full featured compiler that supports such sophisticated constructs as >64k arrays in both real and protected mode on the segmented architecture of the 80x86. The first step in using the compiler is to read over the manual. This is essential to gaining an understanding of what is happening when the compiler is invoked, and compilation begins. Even without a detailed understanding of all the topics, reading the manual will make the user familiar with some new concepts, and, especially, it will define some terms that are used throughout the rest of this document. Included in the manual (the PROGRAM section) are definitions of the available memory models, what a pragma is, what a profile is and why to use one, etc. Let me emphasize that at least scanning this section of the manual should be done before continuing. Installing the compiler. Currently the compiler is distributed on a QIC tape. This is for convenience, because the compiler, libraries and include files would take about 5 floppies otherwise. All the files on the tape are in the directory . The following is a list of the files, and a brief description of anything that is out of the ordinary for a C environment. ASSERT.H CTOSlib.h C include file that defines all CTOS. processor or math service required. hcle.lib High C library: Large memory model, with floating point emulation. InstallHc.sub Creates the HC command, used to invoke the compiler. It may have to be modified to correctly reflect the volume on which the directory is placed. LIMITS.H linker.run This is a preliminary version of the standard software linker that is required to link High C modules. Older linkers won't work. MATH.H readme.doc This document. SETJMP.H SIGNAL.H STDARG.H STDEFS.H STDIO.H STDLIB.H STRING.H STRINGS.H TIME.H. After the files have been restored, edit and submit the file InstallHc.sub. This should let you begin working with the compiler. Note that the compiler is not yet overlayed. This means that a large partition is required if running under the context manager. A 1 megabyte partition is the minimum size reccommended. A larger partition may be required for extreemly large compilations. (Over 7,000 lines of source in a single compilation took 1.5 megabytes of memory to successfully compile. This is considered an extreemly large source file) Note that only one C source file can be compiled at a time. Multiple source files must be compiled using multiple invocations of the command. A submit file to do this can be made, but that makes setting switches and parameters difficult. KNOWN DIFFERENCES FROM WORK STATION C: POINTERS The first major difference that will present itself is in systax checking. The new compiler actually checks syntax. Many old programs that compiled and ran using the old C will no longer compile. This is due to changes in the language that have occured over the many years between the development of the two compilers. These changes have been worked out over years by the committee that is proposing the C ANSI standard. These differences are outlined in a book by PLUM HALL - <<>>. Many of the differences can be overcome by using the appropriate compiler toggles. For example, the hc.pro file contains the statement: pragma on(Pointers_compatible); This statement says that all pointers are to be considered equal in the eyes of the compiler. This was an implementation specific thing that just happened to work for the old C on CTOS, but could have effected portability of the program to another system. The ANSI standard says tha all pointers are not equal, and inforces pointer type checking. Including the above statement in the compilation allows old source to work unchanged. LINKING WITH CTOS MetaWare C libraries and programs default to using the stack in a manner similar to many UNIX systems. Parameters are pushed onto the stack in left to right order (CTOS assumes right to left), and the caller removes the arguments from the stack (in CTOS the callee removes the parameters). KNOWN PROBLEMS: 1. Overlays work in some cases, not in others. This restriction will only be overcome by major changes to the linker, which did not anticipate the INTEL OMF well enough. 2. The compiler requires a large partition. 3. Of the 5 memory models (small, compact, medium, big, large) only big and large are working at this time. Big corresponds to what PLM and old workstation C considered medium. Changes From Prior Version: 1. The .lst file will be created automatically. The prior version assumed output of the .lst file went to [vid]. The assumption is now (file).lst. 2. Fgets now works. Even if the input file is [kbd]. Note that input from [kbd] will echo on [vid]... (so you can see what you are typing). 3. The library date/time routines now work in leap years also. 4. Stack checking now works. (It must be turned on first) 5. The compiler no longer error exits with the number of errors encountered during the compile. 6. Subtle changes to ctoslib.h, ctostypes.h. 7. Code gen bug exhibited by oracle source file osdctb.c has been fixed. 8. fseek now works. 9. open in mode A now works. DOCUMENTATION NOTES: 1. The maximum amount of memory that can be allocated by malloc is 64,486 bytes. This is 1048 bytes less than the real limit in a segment. The 1048 bytes are used   \÷Æasm.fls-New C_SamplesÆ–‘–úfè™úf*Vÿfªªé   samgen.asm start.asm  •½@beeper.c c_samples@–íãfíãf*Vÿf¸ªªº  by the heap manager to keep track of allocated/free space. This is required for free() to work. It would be best to have an include that defined MAX_MALLOC_SIZE or some similar name with the appropriate limit. 2CÃÌ7ÃRÌkÃ4ÌdöÌÈÃìÌüÆÌ¢ÃFÌGÃÕù×ÿÿÈÈ(È6δÎOÎPÎRÎkÎÎÇ×Ð× ×K×S××£×+ ×� ×Ë ×# ×p × ×" ׯ ×¶ ×Ð ×Ù ×â ×ë ×ô ×ü × × × × Î¢ ÎCÎ4Î[Îdâ¦âYââæâ¶ÎÈâìÎüï§ïÓï†΢ï6ïÄïï=ï�ïÊïï'ïDïFÎ[ïÔïÕ@×ÿÆQÒo Ú3Þëê…óE÷Õ€×€,€,@   0ý€,@  @ Ѐ,€,@  Àô€,@H@€,H  ððð*Ð/à=    ÿÿÐÿÿÐÿÿÐÿÿÐÿÿÿÿÿÿÿÿÿÿÿÿ€€Courier CourierËG×ÕD9Imagen x2.0_11/62am e… $  #define AllocExch #define CheckErc #define ChangePriority #define ConvertToSys #define ChangePriority #define Check #define Crash #define ErrorExit #define ForwardRequest #define GetUserNumber #define GetPartitionHandle #define QueryRequestInfo #define RemovePartition #define Respond #define Send #define SetMsgRet #define SetPartitionLock #define SetPartitionName #define ServeRq #define VacatePartition #define Wait #include #include /* opt out not needed library routines to conserve0 r space */ #include #define BEEPRQ 52 typedef struct { Byte sCntInfo; /* 00 number of control info bytes */ Byte RtCode; /* 01 routing code (SRP) */ Byte nReqPbCb; /* 02 number of req pbcb's */ Byte nRespPbCb; /* 03 number of resp pbcb's */ Word UserNum; /* 04 user number */ Word ExchResp; /* 06 exchange */ Word ErcRet; /* 08 erc to return */ Word RqCode; /* 10 request code */ } RqType; /* 12 */ typedef struct { Word exch; <  Word lsc; } rqInfoType; Word erc; char *psName; char *pServerName; rqInfoType rqInfo; Word exchServe; Word usernum; Word PhRet; char rgServerName[11] = "Beep Server"; char rgmsg1[23] = "Beep Server deinstalled"; char rgmsg2[21] = "Beep Server Installed"; void CrashIfErcNotOk(erc) Word erc; { if (erc != ercOK) Crash(erc); } /* PROCESS A REQUEST Process each request that comes in. */ void ProcessRequest(pRq) RqType *pRq; { if (pRq->UserNum > usernum) { if ((erc = Respond(pRq)) != ercOK) CrH ash(erc); } else { if ((erc = ForwardRequest(rqInfo.exch, pRq)) != ercOK) Crash(erc); } } /* DEINSTALL: This routine returns controll of the request back to its original owner. Then any pending messages on the local service exchange are processed. Then the partition is unlocked, and the priority set to 0xFF, so that no more time is ever spent in this routine. It is then up to the program that sent the deinstallation message to vacate and remove the partition. */ void DeInstall() { RqType *T pRq; /* Serve request to 0 first to avoid SPR OS bug*/ CrashIfErcNotOk(ServeRq(BEEPRQ, 0)); CrashIfErcNotOk(ServeRq(BEEPRQ, rqInfo.exch)); /* Loop here to clear all messages on this exchange */ while (Check(exchServe, &pRq) == ercOK) { ProcessRequest(pRq); } /* All done, unlock partition, and wait for removal by deinstall program */ CrashIfErcNotOk (SetPartitionLock(FALSE)); /* unlock partition  */ CrashIfErcNotOk (ChangePriority(0xFF)); /* sleep here forever */ Crash(3); /* ` Os problem if we ever get here */ } /* MAIN ROUTINE Set up the partition as a server. First check for the server already being installed. If it is, then send a message for the service to clean up and wait for removal, then remove it. Otherwise, proceed with installation. */ void main(){ RqType *pRq; CheckErc(GetUserNumber(&usernum)); CheckErc(AllocExch(&exchServe)); CheckErc( QueryRequestInfo(BEEPRQ, &rqInfo, sizeof(rqInfo)) ); /* This is the deinstallation check. If the named server isl  already in a partition, then the server is assumed to be alive and well. A message is sent to the service exchange for the server. In this case, instead of a request, the message is a special value pased as if it were a pointer to a request. The server recieves the message, and because it is running at a higher priority than this program, this program won't execute again until the server has had time to clean up and wait for removal. If the server process could block during deinstallation (wax it), then this program would have to be modified to send a request for deinstallation, and wait for the response before proceeding. When this program regains control, it then uses the partition handle obtained to vacate and remove the server partition. this program then sets up an appropriate exit message, and exits */ if (GetPartitionHandle(&rgServerName, 11, &PhRet  etitle = { 0, 24 ,(Byte *)"Save Filename List To File" ,&SaveFilenameFileName }; static char Replace[2] = {'Y', 0}; static char FileName[70] ={0}; static InputType lkfReplace = {4, 40, 2, (void *) &Replace, NULL}; static InputType lkfFileInput = {2, 10, 70,(void *)&FileName, &lkfReplace}; static InputType lkfFileOutput = {2, 10, 70, (void *) &FileName, NULL}; static MenuType LoadFilenameMenu = { &lkfFiletitle ,&lkfFileInput }; static MØ# enuType SaveFilenameMenu = {  &skfFiletitle ,&lkfFileOutput }; static char FilenameName[80] ={0}; static InputType EnteredFilename = {3, 0, 80, (void *) &FilenameName, NULL }; static PromptType EnterFilenametitle = { 1, 30 ,(Byte *)"Enter Filename below" ,NULL }; static MenuType EnterFilenameMenu = { &EnterFilenametitle ,&EnteredFilename }; static FileListType *DeleteNode = NULL; static PromptType DeleteWord = { 3, 0, NULL, NULL }; static PromptType DeleteFilenaä% metitle = { ) == ercOK){ CheckErc(Send(rqInfo.exch, (Pointer) 0x0000FFFFl)); CheckErc(VacatePartition(PhRet)); CheckErc(RemovePartition(P„  hRet)); erc = SetMsgRet(&rgmsg1, 23); ErrorExit(erc); } /* BECOME A SERVER Since the server is not already installed, install now. Set up an appropriate exit message, and convert to sys (become a server). The ErrorExit call after the convertosys call allows the reloading of an exec in the primary partition. */ erc = SetMsgRet(&rgmsg2, 21); erc = ConvertToSys(); ErrorExit(erc); /* All servers must run at a priority higher than 40, else deadlocks can occur. */ CrashIfErcNotOk(ChangePriority(�  12)); /* Set the partition name so that the deinstallation program can obtain this partition handle. */ CrashIfErcNotOk(SetPartitionName(0, &rgServerName, 11)); /* Now serve the request to the service exchange for this program. */ CrashIfErcNotOk(ServeRq(BEEPRQ, exchServe)); /* Server loop... */ while (TRUE) { CrashIfErcNotOk(Wait(exchServe, &pRq)); if (pRq == (Pointer) 0x0000FFFFl) DeInstall(); ProcessRequest(pRq); } }œ p¡‘- filelist.c C_samples‘-˜¨Œúf¨Œúf+Vÿf‡2ªªV ¨ /* * Filename list manipulation */ #define Beep #define CheckErc #define CSubparams #define ErrorExit #define PutFrameChars #define PutFrameAttrs #define ReadKbd #define ResetFrame #define RgParam #include #include "keyword.h" #include #include #include /* Vidio Routines found in Vidio.c */ extern void DrawFunctionKeyBar(Word iLine, Pointer psFnckys); extern Word DisplayLines; extern Pointer pBlanks; extern Pointer pSep; extern void SetUpMenu(MenuType *Menu)´ ; extern char InputLine[LINEMAX]; /* State machine varaibles */ extern void DrawMainDisplay(); extern void InputInformation (Byte chr); extern void (*(pState[STATESTACKSIZE]))(Byte); extern Word oStateStack; extern void (*(pCancelRoutine))(); extern void (*(pGoRoutine))(); /* Define the Filename list variables */ FileListType *pFileList = NULL; static FileListType *columns[MAXDSPCOLUMNS]; static Word nFileCols; static Word nFilenames; /* Number of Filename entries */ static Word nColumnOffset; stÀ atic Word FileCursorLine; static Word FileCursorCol; /* Menu data */ static PromptType LoadFilenameReplace = { 4, 0 ,(Byte *)"[Replace Existing Filename List (y/n)?]" ,NULL }; static PromptType LoadFilenameFileName = { 2, 0 ,(Byte *)"File Name" ,&LoadFilenameReplace }; static PromptType lkfFiletitle = { 0, 25 ,(Byte *)"Load Filename List From File" ,&LoadFilenameFileName }; static PromptType SaveFilenameFileName = { 2, 0 ,(Byte *)"File Name" Ì!  ,NULL }; static PromptType skfFil 1, 22 ,(Byte *)"Press GO to delete the Filename below" ,&DeleteWord }; static MenuType DeleteFilenameMenu = { &DeleteFilenametitle ,NULL }; static Word nEntriesPerColumn() { return ( (nFilenames/nFileCols) + ( ((nFilenames%nFileCols) != 0) ?1:0) ); } static Word ColumnOffset( Word iCol) { if (iCol > nFileCols) return(0); return( (iCol *(nFilenames / nFileCols)) + (min(iCol, nFilenames % nFileCols)) ); } static void ShowFilenameCursor() { CheckErc (PutFrað' meAttrs( DISPLAYFRAME ,FileCursorCol * (80/nFileCols) ,FileCursorLine ,lUnderLine ,80/nFileCols )); } static void HideFilenameCursor() { CheckErc (PutFrameAttrs( DISPLAYFRAME ,FileCursorCol * (80/nFileCols) ,FileCursorLine ,lNormal ,80/nFileCols )); } static void EnableFilenameCursor() { FileCursorLine = FIRSTLINE; FileCursorCol = 0; ShowFilenameCursor(); } /* Define Filename list manipluation functions */ static void AddToFilenameList(FileListType *Node) { FileListType *Lisü) t; FileListType *Parent; Node->Prev = NULL; if (pFileList == NULL) { /* if */ pFileList = Node; Node->Next = NULL; } /* if */ else { /* outer else */ if (strcmp(Node->Filename, pFileList->Filename) == 0) { /* if */ free(Node->Filename); free(Node); return; } /* if */ if (strcmp(Node->Filename, pFileList->Filename) < 0) { /* if */ /* add in as first element */ Node->Next = pFileList; pFileList->Prev = Node; pFileList = Node; } /* if */ else { /* else */ /* Add ,  into middle of list */ for (List = pFileList; List != NULL; List = List->Next) { /* for */ if (strcmp(Node->Filename, List->Filename) == 0) { /* if */ free(Node->Filename); free(Node); return; } /* if */ if (strcmp(Node->Filename, List->Filename) < 0) { /* if */ Parent = List->Prev; Parent->Next = Node; List->Prev = Node; Node->Prev = Parent; Node->Next = List; return; } /* if */ Parent = List; /* Save this for adding to end of list */ .  } /* for */ /* Add to end of list */ Parent->Next = Node; Node->Prev = Parent; Node->Next = NULL; } /* else */ } /* outer else */ } /* end void */ static void ShowFilenameList() { Word i, j; FileListType *Showcolumns[MAXDSPCOLUMNS]; HideFilenameCursor(); for (j = 0; j < nFileCols; j++) { Showcolumns[j] = columns[j]; } for (i = FIRSTLINE; i < DisplayLines; i++) { CheckErc(PutFrameChars(DISPLAYFRAME, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(DISPLAYFRAME, 0, i, lNormal, 80) 0  ); if ( (i - FIRSTLINE) + nColumnOffset < nEntriesPerColumn()) { for (j = 0; j < nFileCols; j++) { if ( ((i - FIRSTLINE) + ColumnOffset(j) + nColumnOffset) < ColumnOffset(j+1)) { if (Showcolumns[j] != NULL) { CheckErc(PutFrameChars( DISPLAYFRAME ,j*(MAXCOLUMNS/nFileCols) ,i ,Showcolumns[j]->Filename ,strlen(Showcolumns[j]->Filename) )); Showcolumns[j] = Showcolumns[j]->Next; } }  } } } ShowFilenameCursor(); } stat,2  ic void ScrollFilenameList(int cLines) { Word i; if (columns[0] == NULL) return; if (cLines < 0) { /* Follow prev pointer */ while (cLines != 0) { if (nColumnOffset != 0) { for (i = 0; i < nFileCols; i++) { if (columns[i]->Prev != NULL) columns[i] = columns[i]->Prev; } nColumnOffset -= 1; } cLines += 1; } } else { /* Follow next pointer */ while (cLines != 0) { if ((nColumnOffset+(DisplayLines-FIRSTLINE))Next != NULL) columns[i] = columns[i]->Next; } nColumnOffset += 1; } cLines -= 1; } } ShowFilenameList(); } static void SizeFilenameList() { FileListType *pList; Word cbMax; cbMax = 0; nFilenames = 0; for (pList = pFileList; pList != NULL; pList = pList->Next) { if(strlen(pList->Filename) > cbMax) cbMax = strlen(pList->Filename); nFilenames += 1; } if (cbMax != 0) {    = LoadFilenameFile; oStateStack += 1; pState[oStateStack] = InputInformation; } static void ProcessFilenameEntry() { FileListType *NodeŒB ; oStateStack -= 1; if ((Node = malloc(sizeof(FileListType))) == NULL) ErrorExit(400); if ((Node->Filename = malloc(strlen(FilenameName)+1)) == NULL) ErrorExit(400); _move(FilenameName, Node->Filename, strlen(FilenameName)+1); AddToFilenameList(Node); DisplayFilenameList(); } static void EnterFilenameEntry() { FilenameName[0] = 0; /* Erase any old name entered previously */ HideFilenameCursor(); SetUpMenu(&EnterFilenameMenu); pCancelRoutine = FilenameCancel; pGoRoutine = ProcessFilenameEn˜D try; oStateStack += 1; pState[oStateStack] = InputInformation; } static void DeleteFilenameEntry() { oStateStack -= 1; if (DeleteNode->Prev == NULL) { /* First node in list */ pFileList = DeleteNode->Next; if (pFileList != NULL ) pFileList->Prev = NULL; } else { if (DeleteNode->Next != NULL) DeleteNode->Next->Prev = DeleteNode->nFileCols = (cbMax < 60) ? (MAXCOLUMNS / (cbMax + 1)): 1; } elseD6  nFileCols = 1; if (nFileCols > MAXDSPCOLUMNS) nFileCols = MAXDSPCOLUMNS; } void DisplayFilenameList() { Word i, j; Word Limit; /* SET UP WINDOW FOR DISPLAY Filename LIST */  CheckErc(ResetFrame(DISPLAYFRAME)); CheckErc(PutFrameChars(DISPLAYFRAME, 36, 1, "Filenames", 8)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 2, pSep, 80)); DrawFunctionKeyBar(2, " Add   Del Back    Load   Save "); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 0, pSep, 80)); CheckErc(PutFrP8 ameChars(FNCKEYFRAME, 0, 1, " ENTRY FILE ", 80)); SizeFilenameList(); if (nFilenames == 0){ columns[0] = NULL; } else { nColumnOffset = 0; for (i = 0; i < nFileCols; i++) { columns[i] = pFileList; Limit = ColumnOffset(i); for (j = 0; ((j < Limit) && (columns[i] != NULL)); j++) { columns[i] = columns[i]->Next; } } } EnableFilenameCursor(); ShowFilenameList(); } /* Get the initial Filename list. */ void I\: nputFilenameList() { Word i; sdType sdRet; FileListType *Node; nFilenames = CSubparams(FILELISTINDEX); for(i = 0; i < nFilenames; i++) { /* Pick up Filename. Put into Filename List Node */ RgParam(FILELISTINDEX, i, &sdRet); if ((Node = malloc(sizeof(FileListType))) == NULL) ErrorExit(400); if ((Node->Filename = malloc(sdRet.cbString+1)) == NULL) ErrorExit(400); _move(sdRet.pbString, Node->Filename, sdRet.cbString); Node->Filename[sdRet.cbString] = 0; AddToFilenameList(Node); } } voidh<  FilenameCancel() { DisplayFilenameList(); oStateStack -= 1; } extern void LoadFilenameList(); static void ParseLine() { FileListType *Node; Word i, j; j = 0; while (TRUE) { i = j; /* Start from end of last word found */ /* Find start of (next) Filename */ while(isWhiteSpace(InputLine[i])) { if (InputLine[i] == NEWLINE) return; i++; if (i == LINEMAX) return; } /* Find end of Filename */ for (j=i; !isWhiteSpace(InputLine[j]); j++) if (j == LINEMAX) return; if ((Node = malt> loc(sizeof(FileListType))) == NULL) ErrorExit(400); if ((Node->Filename = malloc((j-i)+1)) == NULL) ErrorExit(400); _move(&InputLine[i], Node->Filename, (j-i)); Node->Filename[(j-i)] = 0; AddToFilenameList(Node); } } static void LoadFilenameFile() { FileListType *Node; FILE *inp; oStateStack -= 1; if ((Replace[0] == 'Y') || (Replace[0] == 'y')) { /* Throw away current Filenames */ for (Node = pFileList; Node != NULL; Node = pFileList) { pFileList = pFileList->Next; free(Node€@ ->Filename); free(Node); } pFileList = NULL; } if ((inp = fopen(FileName, "r")) == NULL) { Beep(); LoadFilenameList(); return; } while (fgets(InputLine, 80, inp)) ParseLine(); fclose(inp); DisplayFilenameList(); } static void LoadFilenameList() { HideFilenameCursor(); SetUpMenu(&LoadFilenameMenu); pCancelRoutine = FilenameCancel; pGoRoutine Prev; DeleteNode->Prev->Next = DeleteNode->Next; } free(DeleteNode->Filename); free(DeleteNode); DisplayFilenameList(); } static void SetUpDeleteFilename¤F Entry() { Word nLines; for (DeleteNode = columns[FileCursorCol], nLines = FIRSTLINE; ((DeleteNode != NULL) && (nLines < FileCursorLine) ); DeleteNode = DeleteNode->Next, nLines++); if (DeleteNode == NULL) { Beep(); return; } DeleteWord.pString = (Byte *) DeleteNode->Filename; DeleteWord.Col = ( (80-strlen(DeleteNode->Filename)) /2); HideFilenameCursor(); SetUpMenu(&DeleteFilenameMenu); pCancelRoutine = FilenameCancel; pGoRoutine = DeleteFilenameEntry; oStateStack += 1; pState[oStat°H eStack] = InputInformation; } extern void SaveFilenameList(); static void SaveFilenameFile() { FileListType *Node; FILE *out; oStateStack -= 1; if ((out = fopen(FileName, "w")) == NULL) { Beep(); SaveFilenameList(); return; } for (Node = pFileList; Node != NULL; Node = Node->Next) { fputs(Node->Filename, out); fputs("\n", out); } fclose(out); ShowFilenameList(); ShowFilenameCursor(); } static void SaveFilenameList() { HideFilenameCursor(); SetUpMenu(&SaveFilenameMenu); pCancelR¼J outine = FilenameCancel; pGoRoutine = SaveFilenameFile;  oStateStack += 1; pState[oStateStack] = InputInformation; } void fncFilenameList (Byte chr) { switch (chr) { case SCROLLUP: ScrollFilenameList(1); break; case SCROLLDN: ScrollFilenameList(-1); break; case PAGEUP: ScrollFilenameList(-21);  break; case PAGEDN: ScrollFilenameList(21); break; case UPARROW: HideFilenameCursor(); if (FileCursorLine > FIRSTLINE) FileCursorLine -= 1; ShowFilenameCursor(); break; case DOWNARROÈL W: HideFilenameCursor(); if (FileCursorLine < (DisplayLines-1)) FileCursorLine += 1; ShowFilenameCursor(); break; case LEFTARROW: HideFilenameCursor(); if (FileCursorCol > 0) FileCursorCol -= 1; ShowFilenameCursor(); break; case RIGHTARROW: HideFilenameCursor(); if (FileCursorCol < (nFileCols - 1)) FileCursorCol += 1; ShowFilenameCursor(); break; case F1: EnterFilenameEntry(); break; case F3: SetUpDeleteFilenameEntry(); break; case F4: DrawMainDisplay(); oStateStackÔN  -= 1; break; case F8: LoadFilenameList(); break; case F10: SaveFilenameList(); break; default: Beep(); break; } } i++) { /* Pick up Filename. Put into Filename List Node */ RgParam(FILELISTINDEX, i, &sdRet); if ((Node = malloc(sizeof(FileListType))) == NULL) ErrorExit(400); if ((Node->Filename = malloc(sdRet.cbString+1)) == NULL) ErrorExit(400); _move(sdRet.pbString, Node->Filename, sdRet.cbString); Node->Filename[sdRet.cbString] = 0; AddToFilenameList(Node); } } voidàP œ#func1.c-New C_samplesœ#šá�úfÿ�úf+Vÿfݪª,ìQ #include  #define OutputToVid0 #include extern long a,b,c; extern int inmain(); long * func1() { PutLabels(); c = a + b; return &c; } PutLabels() {return;} kbin() {return;} long *NewScreen() {return;} long * funcx() { long *d; int i; i = inmain(); for (i=0; i<10; i++){ double d1; d1 = i; OutputToVid0("this is a test of output", 24); printf("%f %f %f %f\n",d1+1.3,d1-1.3,d1*1.3,d1/1.3); } c = a + b; return &c; } Ÿ�íO0ðÿ€ô? €üøS »™ü?func2.c C_samplesü?œãfãf,VÿfÞªªÞ U #include extern long *func1(); extern long a,b; long (*pf)(); double *gd; static long c; static char qq[]="hello"; long * func2() { char *pqq; double d1, d2=5.0; char *prest; if (gd != 0) d2 = *gd; d1 = d2 * 3   printf("%s, %s, %s\n", rgbnode[0][0][0], rgbnode[0][0][1], rgbnode[12][12][12]); } main () db { unsigned int j; for (j = 60000; j >= 1000 ; j -= 1000) { Chunky(j); } accessarray(); return(0); } Þ Þ Þ  Þ Þ Þ Þ Þ$ Þ) Þ. Þ3 Þ8 Þ= ÞB ÞG ÞL ÞQ ÞV Þ[ Þ` Þe Þ �O�—´—{—æ—¦—õ½ e½ …½ –½ ×½ (½ B½ W½ ¼½ ‹¯ 0 öÐ �p p §Å ‰Å ÇÅ 5Å x­ò˜þÈþC—Ù—x—ÙN�NíN8NzN Z$Z<ZTZlZ„ZýZ¥ZZZZZyZ¾ ZÞ Z Z Z1 ZF Zù Z6O6y6—6ä6)6Q6o6„6Û66Ú6&6¯6Ô6±pd h±>0 keylist.c C_samples>0š¢ŒúfØUÿf/Vÿf¸<ªªV |e /* * Keyword list manipulation */ #define Beep #define CheckErc #define CSubparams #define ErrorExit #define PutFrameC.0; d1 = d2 / 3.0; d1 = d2 + 3.0; d1 = d2 - 3.0; if (d1 == d2) d2 = 0.0; pqq = qq; c = strtol("1234", &prest, 0); c = *(func1()); c = b / a; c = (unsigned long)b / (unsigned long)a; c = a * b; return &c; } Ÿ�íO0ðÿ€ô? €üW izlCglider c_sampleslCœ8-ÿf9-ÿf-Vÿf�ªªÉX (Z Ö‘ @ HighC.fls-New C_Samples @šUžúfbžúf-Vÿfwªª84[ beeper.c filelist.c func1.c func2.c huge.c keylist.c keymain.c large.c life.c sample.c search.c swap.c vidio.c write.c o@à?°áðåÿê�íO�ïàôß ÷o àP Ï `ß0o$߀'Ÿ`> F¿ O� àO�pYß\ àdo`qÿÐß Ð€_°Š�o ��’ß  •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü@] dßï?huge.c-New C_samplesï?’ýãfãf.Vÿf†ªªá L^  #include #include typedef int harray[8192]; harray _huge c[13] = { {0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12} }; int _huge ca[13][8192] = { {0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12} }; typedef char *chrp; chrp _huge rgbnode[27][27][27] = {{ { {"this is string 1"}, {"This is string 2"} } }}; typedef void *biggie; biggie _huge a[32000]; void header(si) { printf("Size %u",si); } void Chunky(unsigned int si) { unsigned int i; i =X`  1; header(si); while ( (a[i] = malloc(si)) != 0) i++; printf(", chunks %u \n",i); for (i--; i != 0; i--) free(a[i]); } void accessarray () { int i,j; for (i = 0; i < 13; i++) { printf("Element=%d Address=%lx\n", c[i][0], &c[i][0]); } /* Should print values 0, 1, ..., 13, and their addresses. */ i = 12; rgbnode[12][12][12] = "this is another string"; *rgbnode[12][12][12] = 'T';  hars #define PutFrameAttrs #define ReadKbd #define ResetFrame #define RgParam #include #include "keyword.h" #include #include #include /* Vidio Routines found in Vidio.c */ extern void DrawFunctionKeyBar(Word iLine, Pointer psFnckys); extern Word DisplayLines; extern Pointer pBlanks; extern Pointer pSep; extern void SetUpMenu(MenuType *Menu);ˆg  extern char InputLine[LINEMAX]; /* State machine varaibles */ extern void DrawMainDisplay(); extern void InputInformation (Byte chr); extern void (*(pState[STATESTACKSIZE]))(Byte); extern Word oStateStack; extern void (*(pCancelRoutine))(); extern void (*(pGoRoutine))(); /* Define the Keyword list variables */ KeyListType *pKeyList = NULL; KeyListType *pSelectList = (void *) &pSelectList; static KeyListType *columns[MAXDSPCOLUMNS]; static Word nKeyCols; /* Number of columns of keyword data to be displaye”i d */ static Word nKeyWords; /* Number of keyword entries */ static Word nColumnOffset; static Word keyCursorLine; static Word keyCursorCol; /* Menu data */ static PromptType LoadKeywordReplace = { 4, 0 ,(Byte *)"[Replace Existing Keylist (y/n)?]" ,NULL }; static PromptType LoadKeyWordFileName = { 2, 0 ,(Byte *)"File Name"  ,&LoadKeywordReplace }; static PromptType lkfFiletitle = { 0, 25 ,(Byte *)"Load Keyword List From File" ,&LoadKeyWordFileName }; static  k PromptType SaveKeyWordFileName = { 2, 0 ,(Byte *)"File Name" ,NULL }; static PromptType skfFiletitle = { 0, 24 ,(Byte *)"Save Keyword List To File" ,&SaveKeyWordFileName }; static char Replace[2] = {'Y', 0}; static char FileName[70] ={0}; static InputType lkfReplace = {4, 34, 2, (void *) &Replace, NULL}; static InputType lkfFileInput = {2, 10, 70,(void *)&FileName, &lkfReplace}; static InputType lkfFileOutput = {2, 10, 70, (void *) &FileName, NULL}; static MenuType LoadKe¬m yWordMenu = { &lkfFiletitle ,&lkfFileInput }; static MenuType SaveKeyWordMenu = { &skfFiletitle ,&lkfFileOutput }; static char KeywordName[80] ={0}; static InputType EnteredKeyWord = {3, 0, 80, (void *) &KeywordName, NULL }; static PromptType EnterKeywordtitle = { 1, 30 ,(Byte *)"Enter keyword below" ,NULL }; static MenuType EnterKeyWordMenu = { &EnterKeywordtitle ,&EnteredKeyWord }; static KeyListType *DeleteNode = NULL; static PromptType DeleteWo¸o rd = { 3, 0, NULL, NULL }; static PromptType DeleteKeywordtitle = { 1, 22 ,(Byte *)"Press GO to delete the keyword below" ,&DeleteWord }; static MenuType DeleteKeyWordMenu = { &DeleteKeywordtitle ,NULL }; static Word nEntriesPerColumn() { return ( (nKeyWords/nKeyCols) + ( ((nKeyWords%nKeyCols) != 0) ?1:0) ); } static Word ColumnOffset( Word iCol) { if (iCol > nKeyCols) return(0); return( (iCol *(nKeyWords / nKeyCols)) + (min(iCol, nKeyWords % nKeyCols)) ); } static vÄq oid ShowKeywordCursor() { KeyListType *pThisNode; Word nLines; CheckErc (PutFrameAttrs( DISPLAYFRAME ,keyCursorCol * (80/nKeyCols) ,keyCursorLine ,lUnderLine ,80/nKeyCols )); /* Find out if this node is selected. Find the node first */ for (pThisNode = columns[keyCursorCol], nLines = FIRSTLINE; ((pThisNode != NULL) && (nLines < keyCursorLine) ); pThisNode = pThisNode->Next, nLines++); if (pThisNode == NULL) return; if (pThisNode->Selected == NULL) return; CheckErc(PutFrameAttrsÐs (DISPLAYFRAME ,keyCursorCol * (80/nKeyCols) ,keyCursorLine ,(lUnderLine | lReverse) ,strlen(pThisNode->KeyWord) )); } static void HideKeywordCursor() { KeyListType *pThisNode; Word nLines; CheckErc (PutFrameAttrs( DISPLAYFRAME ,keyCursorCol * (80/nKeyCols) ,keyCursorLine ,lNormal ,80/nKeyCols )); /* Find out if this node is selected. Find the node first */ for (pThisNode = columns[keyCursorCol], nLines = FIRSTLINE; ((pThisNode != NULL) && (nLines < keyCursorLine) Üu  ); pThisNode = pThisNod   columns[i] = columns[i]->Pre$‚ v; } nColumnOffset -= 1; } cLines += 1; } } else { /* Follow next pointer */ while (cLines != 0) { if ((nColumnOffset+(DisplayLines-FIRSTLINE))Next != NULL) columns[i] = columns[i]->Next; } nColumnOffset += 1; } cLines -= 1; } } ShowKeywordList(); } static void SizeKeywordList() { KeyListType *pList; Word cbMax; cbMax = 0; nKeyWords = 0; for (pList = pKeyList; pLi0„ st != NULL; pList = pList->Next) { if(strlen(pList->KeyWord) > cbMax) cbMax = strlen(pList->KeyWord); nKeyWords += 1; } if (cbMax != 0) { nKeyCols = (cbMax < 60) ? (MAXCOLUMNS / (cbMax + 1)): 1; } else nKeyCols = 1; if (nKeyCols > MAXDSPCOLUMNS) nKeyCols = MAXDSPCOLUMNS; } static void SelectKeyword() { KeyListType *pThisNode; Word nLines; HideKeywordCursor(); /* Find the node */ for (pThisNode = columns[keyCursorCol], nLines = Fe->Next, nLines++); if (pThisNode == NULL) return; if (pThisNode->Selected == NULL) return; CheckErc(PutFrameAttrs(DISPLAYFRAME ,keyCursorCol * (80/nKeyCols) ,keyCursorLine ,(lNormal | lReverse) ,strlen(pThisNode->KeyWord) )); } static void EnableKeywordCursor() { keyCursorLine = FIRSTLINE; keyCursorCol = 0; ShowKeywordCursor(); } /* Define Keyword list manipluation functions */ static void AddToKeyWordList(KeyListType *Node) { KeyListType *List; KeyLisèw  tType *Parent; Node->Prev = NULL; Node->Selected = NULL; if (pKeyList == NULL) { /* if */ pKeyList = Node; Node->Next = NULL; Node->Selected = NULL; } /* if */ else { /* outer else */ if (strcmp(Node->KeyWord, pKeyList->KeyWord) == 0) { /* if */ free(Node->KeyWord); free(Node); return; } /* if */ if (strcmp(Node->KeyWord, pKeyList->KeyWord) < 0) { /* if */ /* add in as first element */ Node->Next = pKeyList; pKeyList->Prev = Node; pKeyList = Node; } /* if */ eôy  lse { /* else */ /* Add into middle of list */ for (List = pKeyList; List != NULL; List = List->Next) { /* for */ if (strcmp(Node->KeyWord, List->KeyWord) == 0) { /* if */ free(Node->KeyWord); free(Node); return; } /* if */  if (strcmp(Node->KeyWord, List->KeyWord) < 0) { /* if */ Parent = List->Prev; Parent->Next = Node; List->Prev = Node; Node->Prev = Parent; Node->Next = List; return; } /* if */ Parent = List; /* Save this for adding|  to end of list */ } /* for */ /* Add to end of list */ Parent->Next = Node; Node->Prev = Parent; Node->Next = NULL; } /* else */ } /* outer else */ } /* end void */ static void ShowKeywordList() { Word i, j; KeyListType *Showcolumns[MAXDSPCOLUMNS]; HideKeywordCursor(); for (j = 0; j < nKeyCols; j++) { Showcolumns[j] = columns[j]; } for (i = FIRSTLINE; i < DisplayLines; i++) { CheckErc(PutFrameChars(DISPLAYFRAME, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(DISPLAYFRAME, 0 ~  , i, lNormal, 80)); if ( (i - FIRSTLINE) + nColumnOffset < nEntriesPerColumn()) { for (j = 0; j < nKeyCols; j++) { if ( ((i - FIRSTLINE) + ColumnOffset(j) + nColumnOffset) < ColumnOffset(j+1)) { if (Showcolumns[j] != NULL) { CheckErc(PutFrameChars( DISPLAYFRAME ,j*(MAXCOLUMNS/nKeyCols) ,i ,Showcolumns[j]->KeyWord ,strlen(Showcolumns[j]->KeyWord) )); if (Showcolumns[j]->Selected != NULL) CheckErc(PutFrameAttrs( DISPLA€ YFRAME ,j*(MAXCOLUMNS/nKeyCols) ,i ,lReverse ,strlen(Showcolumns[j]->KeyWord) )); Showcolumns[j] = Showcolumns[j]->Next; } } } } } ShowKeywordCursor(); } static void ScrollKeyWordList(int cLines) { Word i; if (columns[0] == NULL) return; if (cLines < 0) { /* Follow prev pointer */ while (cLines != 0) { if (nColumnOffset != 0) { for (i = 0; i < nKeyCols; i++) { if (columns[i]->Prev != NULL) IRSTLINE; ((pThisNode != NULL) && (nLines < keyCursorLine<† ) ); pThisNode = pThisNode->Next, nLines++); if (pThisNode == NULL) {ShowKeywordCursor(); return;} if (pThisNode->Selected != NULL) {ShowKeywordCursor(); return;} pThisNode->Selected = pSelectList; pSelectList = pThisNode; ShowKeywordCursor(); } static void deSelectKeyword() { KeyListType *pThisNode, *pSlist, *Parent; Word nLines; HideKeywordCursor(); /* Find the node */ for (pThisNode = columns[keyCursorCol], nLines = FIRSTLINE; ((pThisNode != NULL) && (nLines < keyCursorLine) ); pThiHˆ sNode = pThisNode->Next, nLines++); if (pThisNode == NULL) {ShowKeywordCursor(); return;} if (pThisNode->Selected == NULL) {ShowKeywordCursor(); return;} /* Special case for node at head of list */ if (pThisNode == pSelectList) { pSelectList = pThisNode->Selected; pThisNode->Selected = NULL; ShowKeywordCursor(); return; } for (pSlist = pSelectList; pSlist != (void *)&pSelectList; pSlist = pSlist->Selected) { if (pSlist == pThisNode) { /* Remove from list */ Parent->Selected = pTTŠ hisNode->Selected; pThisNode->Selected = NULL; ShowKeywordCursor(); return; } Parent = pSlist; } ShowKeywordCursor(); } void DisplayKeywordList() { Word i, j; Word Limit; /* SET UP WINDOW FOR DISPLAY KEYWORD LIST */ CheckErc(ResetFrame(DISPLAYFRAME)); CheckErc(PutFrameChars(DISPLAYFRAME, 36, 1, "Keywords", 8)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 2, pSep, 80)); DrawFunctionKeyBar(2, "  Add   Del Back    Load   Save "); CheckErc(Pu`Œ tFrameChars(FNCKEYFRAME, 0, 0, pSep, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 1, " ENTRY  FILE ", 80)); SizeKeywordList(); if (nKeyWords == 0){ columns[0] = NULL; } else { nColumnOffset = 0; for (i = 0; i < nKeyCols; i++) { columns[i] = pKeyList; Limit = ColumnOffset(i); for (j = 0; ((j < Limit) && (columns[i] != NULL)); j++) { columns[i] = columns[i]->Next; } } } EnableKeywordCursor(); ShowKeywordLislŽ t(); } /* Get the initial keyword list. */ void InputKeywordList() { Word i; sdType sdRet; KeyListType *Node; nKeyWords = CSubparams(KEYLISTINDEX); for(i = 0; i < nKeyWords; i++) { /* Pick up keyword. Put into Keyword List Node */ RgParam(KEYLISTINDEX, i, &sdRet); if ((Node = malloc(sizeof(KeyListType))) == NULL) ErrorExit(400); if ((Node->KeyWord = malloc(sdRet.cbString+1)) == NULL) ErrorExit(400); _move(sdRet.pbString, Node->KeyWord, sdRet.cbString); Node->KeyWord[sdRet.cbString] = 0;x�  AddToKeyWordList(Node); } } void KeywordCancel() { DisplayKeywordList(); oStateStack -= 1; } extern void LoadKeyWordList(); static void ParseLine() { KeyListType *Node; Word i, j; j = 0; while (TRUE) { i = j; /* Start from end of last word found */ /* Find start of (next) keyword */ while(isWhiteSpace(InputLine[i])) { if (InputLine[i] == NEWLINE) return;  i++; if (i == LINEMAX) return; } /* Find end of keyword */ for (j=i; !isWhiteSpace(InputLine[j]); j++) if (j == LIN„’ EMAX) return; if ((Node = malloc(sizeof(KeyListType))) == NULL) ErrorExit(400); if ((Node->KeyWord = malloc((j-i)+1)) == NULL) ErrorExit(400); _move(&InputLine[i], Node->KeyWord, (j-i)); Node->KeyWord[(j-i)] = 0; AddToKeyWordList(Node); } } static void LoadKeywordFile() { KeyListType *Node; FILE *inp; oStateStack -= 1; if ((Replace[0] == 'Y') || (Replace[0] == 'y')) { /* Throw away current keywords */ pSelectList = (void *) &pSelectList; for (Node = pKeyList; Node != NULL; No�” de = pKeyList) { pKeyList = pKeyList->Next; free(Node->KeyWord); free(Node); } pKeyList = NULL; } if ((inp = fopen(FileName, "r")) == NULL) { Beep(); LoadKeyWordList(); return; } while (fgets(InputLine, 80, inp)) ParseLine(); fclose(inp); DisplayKeywordList(); } static void LoadKeyWordList() { HideKeywordCursor(); SetUp  - 1)) keyCursorCol += 1; ShowKeywordCursor(); break; case MARK: SelectKeyword(); break; case CODE_MARK: deSelectKeyword(); break; case F1: EnterKeyWordEntry(); break; case F3: SetUpDeleteKeyWordEntry(); ä¢ break; case F4:  DrawMainDisplay(); oStateStack -= 1; break; case F8: LoadKeyWordList(); break; case F10: SaveKeyWordList(); break; default: Beep(); break; } } +) { /* Pick up keyword. Put into Keyword List Node */ RgParam(KEYLISTINDEX, i, &sdRet); if ((Node = malloc(sizeof(KeyListType))) == NULL) ErrorExit(400); if ((Node->KeyWord = malloc(sdRet.cbString+1)) == NULL) ErrorExit(400); _move(sdRet.pbString, Node->KeyWord, sdRet.cbString); Node->KeyWord[sdRet.cbString] = 0;ð¤  ÐÓ=0 keymain.c C_samples=0œ£Œúf¤Œúf/Vÿfl ªªV ü¥Menu(&LoadKeyWordMenu); pCancelRoutine = KeywordCancel; pGoRoutine = LoadKeywordFile; oStateStack += 1; pState[oStateStack] = InputInformation; } statœ– ic void ProcessKeywordEntry() { KeyListType *Node; oStateStack -= 1; if ((Node = malloc(sizeof(KeyListType))) == NULL) ErrorExit(400); if ((Node->KeyWord = malloc(strlen(KeywordName)+1)) == NULL) ErrorExit(400); _move(KeywordName, Node->KeyWord, strlen(KeywordName)+1); AddToKeyWordList(Node); DisplayKeywordList(); } static void EnterKeyWordEntry() { KeywordName[0] = 0; /* Erase any old name entered previously */ HideKeywordCursor(); SetUpMenu(&EnterKeyWordMenu); pCancelRoutine = KeywordCan¨˜ cel; pGoRoutine = ProcessKeywordEntry; oStateStack += 1; pState[oStateStack] = InputInformation; } static void DeleteKeywordEntry() { oStateStack -= 1; if (DeleteNode->Prev == NULL) { /* First node in list */ pKeyList = DeleteNode->Next; if (pKeyList != NULL ) pKeyList->Prev = NULL; } else { if (DeleteNode->Next != NULL) DeleteNode->Next->Prev = DeleteNode->Prev; DeleteNode->Prev->Next = DeleteNode->Next; } free(DeleteNode->KeyWord); free(DeleteNode); DisplayKeywordList(); } st´š atic void SetUpDeleteKeyWordEntry() { Word nLines; for (DeleteNode = columns[keyCursorCol], nLines = FIRSTLINE; ((DeleteNode != NULL) && (nLines < keyCursorLine) ); DeleteNode = DeleteNode->Next, nLines++); if (DeleteNode == NULL) { Beep(); return; } DeleteWord.pString = (Byte *) DeleteNode->KeyWord; DeleteWord.Col = ( (80-strlen(DeleteNode->KeyWord)) /2); HideKeywordCursor(); SetUpMenu(&DeleteKeyWordMenu); pCancelRoutine = KeywordCancel; pGoRoutine = DeleteKeywordEntry; oStateStackÀœ  += 1; pState[oStateStack] = InputInformation; } extern void SaveKeyWordList(); static void SaveKeywordFile() { KeyListType *Node; FILE *out; oStateStack -= 1; if ((out = fopen(FileName, "w")) == NULL) { Beep(); SaveKeyWordList(); return; } for (Node = pKeyList; Node != NULL; Node = Node->Next) { fputs(Node->KeyWord, out); fputs("\n", out); } fclose(out); DisplayKeywordList(); } static void SaveKeyWordList() { HideKeywordCursor(); SetUpMenu(&SaveKeyWordMenu); pCancelRoutine = KÌž eywordCancel; pGoRoutine = SaveKeywordFile; oStateStack += 1; pState[oStateStack] = InputInformation; } void fnckeywordList (Byte chr) { switch (chr) { case SCROLLUP: ScrollKeyWordList(1); break; case SCROLLDN: ScrollKeyWordList(-1); break; case PAGEUP: ScrollKeyWordList(-21);  break; case PAGEDN: ScrollKeyWordList(21); break; case UPARROW: HideKeywordCursor(); if (keyCursorLine > FIRSTLINE) keyCursorLine -= 1; ShowKeywordCursor(); break; case DOWNARROW: HideKeywordCursoØ  r(); if (keyCursorLine < (DisplayLines-1)) keyCursorLine += 1; ShowKeywordCursor(); break; case LEFTARROW: HideKeywordCursor(); if (keyCursorCol > 0) keyCursorCol -= 1; ShowKeywordCursor(); break; case RIGHTARROW: HideKeywordCursor(); if (keyCursorCol < (nKeyCols    /* * Keyword find program. * * Find a keyword in a file, display surrounding area * */ #define Beep #define CheckErc #define CSubparams #define ErrorExit #define PutFrameChars #define ReadKbd #define ResetFrame #define RgParam #include #include "keyword.h" #include #include /* Assumes no use of argc, argv */ /* Routines are actually called at init time, so must return valid values. */ _mwset_up_args() {return 0;} _mwcount_args() {return 0;} /* Vidio Routines found ¨  in Vidio.c */ extern void InitVideo(); extern Word DisplayLines; extern void DrawFunctionKeyBar(Word iLine, Pointer psFunckeys); extern void SetUpMenu(MenuType pMenu); extern Pointer pSep; extern Pointer pBlanks; extern Word InputCursorLine; extern Word InputCursorCol; /* Keyword list routines found in keylist.c */ extern void InputKeywordList(); extern void InputfilenameList(); /* Define the state machine that handles the user interface */ void (*(pState[STATESTACKSIZE]))(Byte); Word oStateStack; /* Deª  fine the state machine functions */ extern void fnckeywordList (Byte chr); extern void DisplayKeywordList(); extern void fncFileNameList (Byte chr); extern void DisplayFilenameList(); extern void fncSearch (Byte chr); extern void SearchSetUp(); extern void InputInformation (Byte chr); /* Set up initial screen display */ void DrawMainDisplay() { CheckErc(ResetFrame(DISPLAYFRAME)); CheckErc(PutFrameChars(DISPLAYFRAME, 30, 1, "Keyword Find Program", 20)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 2, pSep, 80 ¬  )); CheckErc(PutFrameChars(DISPLAYFRAME, 31, 10, "Choose a function", 17)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 0, pSep, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 1, pBlanks, 80)); DrawFunctionKeyBar(2, " Keys  Files  Search      "); } /* Initial display - choose function */ static void fncMainDisplay(Byte chr) { switch (chr) { case F1: oStateStack += 1; pState[oStateStack] = fnckeywordList; DisplayKeywordList(); break; case F2:,®   oStateStack += 1; pState[oStateStack] = fncFileNameList; DisplayFilenameList(); break; case F3: oStateStack += 1; pState[oStateStack] = fncSearch; SearchSetUp(); break; default: Beep(); break; } } void main() { Byte chr; /* Init the Vidio */ InitVideo(); /* Init the state machine */ oStateStack = 0; pState[oStateStack] = fncMainDisplay; /* Get initial Keyword, Filename lists */ InputKeywordList(); InputfilenameList(); DrawMainDisplay(); while (TRUE) { CheckErc(ReadKbd(&chr))8°  ; switch (chr) { case FINISH: ErrorExit(0); default: (*pState[oStateStack])(chr); break; } } } into Filename List Node */ RgParam(FILELISTINDEX, i, &sdRet); if ((Node = malloc(sizeof(FileListType))) == NULL) ErrorExit(400); if ((Node->Filename = malloc(sdRet.cbString+1)) == NULL) ErrorExit(400); _move(sdRet.pbString, Node->Filename, sdRet.cbString); Node->Filename[sdRet.cbString] = 0; AddToFilenameList(Node); } }  void FilenameCancel() { ShowFilenameList(); ShowFilenameCursor()D²  ¦Ø> keyword.h C_Samples>” �úf �úf0Vÿf—ªªV P³   #define min(x,y) (x 0x7F)) /* define vidio display equates */ #define lNormal 0 #define lDim 1 #define lUnderLine 2 #define lReverse 4 #define lReverseHB 5 #define lBlink 8 #define DISPLAYFRAME 0 #define FNCKEYFRAME 1 #define SIZEFNCFRAME 3 #define MAXDSPCOLUMNS 4 #define MAXCOLUMNS 80 #define FIRSTLINE 3 #define NEWLINE 0x0A #define LINEMAX 512 /* Define keystroke values */ #define CANCEL 0x07 #define BACKSPACE 0x08 #define NEXT \µ   0x0A #define GO 0x1B #define UPARROW 0x01 #define DOWNARROW 0x0B #define LEFTARROW 0x0E #define RIGHTARROW 0x12 #define SCROLLUP 0x11 #define SCROLLD  C_Samples/1œ†�úf@™úf2Vÿf¨ªª€ ¼Â  BEEPER.obj FILELIST.obj FUNC1.obj FUNC2.obj HUGE.obj KEYLIST.obj KEYMAIN.obj LARGE.obj LIFE.obj samgen.obj SAMPLE.obj SEARCH.obj start.obj SWAP.obj VIDIO.obj WRITE.obj ÈÄ c³þ"life.c-New c_samplesþ"�ß-ÿf.ÿf3Vÿf—,ªªÉÔÅ  #include #include  F¿ O� àO�pYß\ àdo`qÿÐß Ð€_°Š�o ��’ß  •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü˜¾  èì-1lib.fls-New C_Samples-1’m�úf��úf1Vÿf ªª€ ¤¿  Samples.lib¯_°ß`°@±¯P±o¹p¹Oð¿o@ðÊÿÐËŸÐÑpÕOðÚo@à?°áðåÿê�íO�ïàôß ÷o àP Ï `ß0o$߀'Ÿ`> F¿ O� àO�pYß\ àdo`qÿÐß Ð€_°Š�o ��’ß  •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü°Á  ñs/1libSamples.fls-New  dio.h> #define AllocExch #define beep #define Check #define CheckErc #define CreateProcess #define Delay #define ErrorExit #define InitCharMap #define InitVidFrame #define PutFrameAttrs #define PutFrameChars #define QueryVidHdw #define ReadKbd #define ResetFrame #define ResetVideo #define Send #define SetScreenVidAttr #define Wait #include #define kernelErc #include #define lNormal 0 #define lDim 1 #define lUnderLine 2 #define lReverse 4 #define lRevàÇ erseHB 5 #define lBlink 8 #define CANCEL 0x07 #define BACKSPACE 0x08 #define NEXT 0x0A #define GO 0x1B #define UPARROW 0x01 #define DOWNARROW 0x0B #define LEFTARROW 0x0E #define RIGHTARROW 0x12 #define MARK 0x02 #define BOUND 0x0D #define FINISH 0x04 #define F1 0x15 #define F2 0x16 #define F9 0x1E #define F10 0x1F #define HOFF 20 #define VOFF 4 #define DELAYTIME 3 typedef struct PromptType { Word Line; Word Col; Byte *pString; struct PromptType *Next; } PromptType; typìÉ edef struct InputType { Word Line; Word Col; Word Len; Byte *Data; struct InputType *Next; } InputType; typedef struct MenuType { PromptType *Prompt; InputType *Input; } MenuType; Word vcLines; Word vcCols; Byte old[20][20]; Byte new[20][20]; Word rgCol[6] = {0, 24, 56, 23, 31, 23}; char *psFunckeys; Word i, j; Word k, l; Word sum; MenuType *pActiveMenu; InputType *pActiveInputline; Byte *pActiveData; Word DisplayLines; Word InputCursorLine; Word InputCursorCol; PoiøË nter pBlanks = {" "}; Pointer pSep = {"ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ"}; /* Menu data */ PromptType LifeFileName = { 2, 0 ,(Byte *)"File Name" ,NULL }; PromptType lkfFiletitle = { 0, 25 ,(Byte *)"Load life game From File" ,&LifeFileName }; PromptType skfFiletitle = { 0, 24 ,(Byte *)"Save life game To File" ,&LifeFileName }; charÎ  FileName[70] ={0}; InputType lkfFileInput = {2, 10, 70, (void *) &FileName, NULL}; InputType lkfFileOutput = {2, 10, 70, (void *) &FileName, NULL}; MenuType LoadLifeMenu = {&lkfFiletitle, &lkfFileInput}; MenuType SaveLifeMenu = {&skfFiletitle, &lkfFileOutput}; /* Process variables */ #define STACKSIZE 100 Word rgKbdStack[STACKSIZE]; Word kbdDefExch; Word kbdMsgExch; typedef struct { Pointer pEntry; Word saData; Word saExtra; Word saStack; Word oStackInit; Byte priority; Byte fSys; Word exchÐ gDefaultResponse; Byte fDebug; } ProcDescType; void KbdProcess() { Byte chr; while(TRUE) { CheckErc(ReadKbd(&chr)); /* Be aware that because this routine does not wait for a reply from the process it sends the message to, that the chr may by changed by a subsequent readkbd request before the other process has acted on the chr sent. This is not likely for this program, but is likely in other circumstances!!! */ CheckErc(Send(kbdMsgExch, &chr)); } } void InitKbdProcess() { ProcDesÒ cType processDscrptr; Pointer pStack; CheckErc(AllocExch(&kbdDefExch)); CheckErc(AllocExch(&kbdMsgExch)); pStack = &rgKbdStack; processDscrptr.pEntry = (void *) KbdProcess; processDscrptr.saData = selectorof(pStack); processDscrptr.saExtra = 0; processDscrptr.saStack = selectorof(pStack); pStack = &rgKbdStack[STACKSIZE-2]; processDscrptr.oStackInit = offsetof(pStack); processDscrptr.priority = 70; processDscrptr.fSys = FALSE; processDscrptr.exchgDefaultResponse = kbdDefExch; processDscrptr.(Ô fDebug = FALSE; CheckErc(CreateProcess(&processDscrptr)); } void InitVideo() { ErcType erc; Word sMap; Byte rgbVidHdw[3]; CheckErc( QueryVidHdw (&rgbVidHdw, sizeof(rgbVidHdw)) ); vcLines = rgbVidHdw[1]; vcCols = rgbVidHdw[2]; CheckErc( ResetVideo (vcCols, vcLines, TRUE, 0x20, &sMap) ); /*Main frame*/ DisplayLines = vcLines - 3; CheckErc( InitVidFrame (0, 0, 0, vcCols, DisplayLines, 0, 0, 0, 0, 0) ); CheckErc( InitVidFrame (1, 0, DisplayLines  >Input->Line + (DisplayLines - 6); InputCursorCol = Menu->Input->Col; for (InputCursorCol = Menu->Input->Col; pActi|â veData[InputCursorCol-Menu->Input->Col] != 0; InputCursorCol++); CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); } } void InputName (){ char *pChr; while(TRUE) { CheckErc( Wait(kbdMsgExch, &pChr) ); switch (*pChr) { case CANCEL: FileName[0] = 0; return; case GO: return; case NEXT: CheckErc(PutFrameAttrs(0,  InputCursorCol, InputCursorLine, lReverseHB, 1)); pActiveInputline = pActiveInputline->Next; if (pActiveInputline == NULL) pActiveˆä Inputline = pActiveMenu->Input; pActiveData = pActiveInputline->Data; InputCursorLine = pActiveInputline->Line + (DisplayLines - 6); for (InputCursorCol = pActiveInputline->Col; pActiveData[InputCursorCol-pActiveInputline->Col] != 0; InputCursorCol++); CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); brea, vcCols, 3, 0, 0, 0, 0, 0) ); CheckErc( InitCha4Ö  rMap(0, sMap) ); CheckErc( SetScreenVidAttr(1, TRUE) ); /*refresh*/ CheckErc( ResetFrame(0) ); CheckErc( ResetFrame(1) ); return; } void DrawFunctionKeyBar(Pointer psFunckeys) { CheckErc( PutFrameChars (1, 0, 2, psFunckeys, strlen(psFunckeys)) ); for (i = 0; i < 3; i++) { CheckErc( PutFrameAttrs(1, rgCol[i], 2, lReverseHB, rgCol[i+3]) ); } } void DrawBorder() { Word i; for (i = 0; i < 20; i++) { CheckErc(PutFrameAttrs(0, (i*2)+HOFF,  VOFF, lReverseHB, 2) ); CheckErc(PutFrameAttrs(0, (i*2)+HOFF,@Ø  VOFF+20, lReverseHB, 2) ); } for (i = 0; i < 21; i++) { CheckErc(PutFrameAttrs(0, HOFF, i+VOFF, lReverseHB, 1) ); CheckErc(PutFrameAttrs(0, HOFF+40, i+VOFF, lReverseHB, 1) ); } } extern void LoadGeneration(); extern void SaveGeneration(); void InputGeneration(Word fTime) { char *pChr; if (fTime == TRUE) { for (i=0; i<20; i++) { /* clear out the arrays */ for (j=0; j<20; j++) { old[i][j] = 0; new[i][j] = 0; } }  } DrawFunctionKeyBar("  Run     LÚ   Load  Save "); i = 9; j = 9; while (TRUE) { CheckErc( PutFrameAttrs(0, (j*2)+HOFF, i+VOFF, lUnderLine, 1) ); CheckErc( Wait(kbdMsgExch, &pChr) ); CheckErc( PutFrameAttrs(0, (j*2)+HOFF, i+VOFF, lNormal, 1) ); switch (*pChr) { case F9: LoadGeneration(); break; case F10: SaveGeneration(); break; case UPARROW: i -= 1; if (i < 1) i = 1; break; case DOWNARROW: i += 1; if (i > 19) i = 19; break; case LEFTARROW: j -= 1; if (j < 1) j = 1; break; case RIGHTARROWXÜ  : j += 1; if (j > 19) j = 19; break; case MARK: old[i][j] = 1; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, "*", 1)); break; case BOUND: old[i][j] = 0; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, " ", 1)); break; case F2: DrawFunctionKeyBar(" Pause        "); return; case FINISH: ErrorExit(0); default: break; } } } void SetUpMenu(MenuType *Menu) { PromptType *Line; InputType *Data; Word i; pActiveMenudÞ  = Menu; for (i = DisplayLines - 7; i < DisplayLines; i++) { CheckErc(PutFrameChars(0, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(0, 0, i, lNormal, 80)); } CheckErc(PutFrameChars(0, 0, DisplayLines - 7, pSep, 80)); for (Line = Menu->Prompt; Line != NULL; Line = Line->Next) { CheckErc(PutFrameChars( 0 ,Line->Col ,Line->Line + (DisplayLines - 6) ,Line->pString ,strlen(Line->pString) )); } for (Data = Menu->Input; Data != NULL; Data = Data->Next) { CheckErc(PutFrameAttrspà ( 0 ,Data->Col ,Data->Line + (DisplayLines - 6) ,lReverseHB ,Data->Len )); CheckErc(PutFrameChars( 0 ,Data->Col ,Data->Line + (DisplayLines - 6) ,Data->Data ,strlen(Data->Data) )); } /* Set up cursor at first position */ pActiveInputline = Menu->Input; if (pActiveInputline != NULL) { pActiveData = Menu->Input->Data; InputCursorLine = Menu- k; case BACKSPACE: CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lReverseHB, 1)); if ((InputCursorCol-pActiveInputline->Col) ”æ != 0) InputCursorCol -= 1; CheckErc(PutFrameChars(0, InputCursorCol, InputCursorLine, pBlanks, 1)); pActiveData[InputCursorCol-pActiveInputline->Col] = 0; CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); break; default: if (*pChr < 0x80) { /* Assume data char if not caught elsewhere */ CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lReverseHB, 1)); if ((InputCursorCol-pActiveInputline->Col) < (pActiveInputline->Len - è  1) ) { CheckErc(PutFrameChars(0, InputCursorCol, InputCursorLine, pChr, 1)); pActiveData[InputCursorCol - pActiveInputline->Col] = *pChr; pActiveData[(InputCursorCol-pActiveInputline->Col)+1] = 0; InputCursorCol += 1; } CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); } else Beep(); break; } } } void reDrawGame() { Word i, j; for (i = DisplayLines - 7; i < DisplayLines; i++) { CheckErc(PutFrameChars(0, 0, i, pBlanks,¬ê  80)); CheckErc(PutFrameAttrs(0, 0, i, lNormal, 80)); } DrawBorder(); for (i=0; i < 20; i++) for (j = 0; j < 20; j++) { if (old[i][j] == 1) CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, "*", 1)); else CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, " ", 1)); } } void LoadGeneration() { FILE *inp; SetUpMenu(&LoadLifeMenu); InputName(); if (FileName[0] == 0) { reDrawGame(); return; } if ((inp = fopen(FileName, "r")) == NULL) { Beep(); reDrawGame(); return; } if(fread(¸ì old, 20, 20, inp) != 20) { Beep(); } fclose(inp); reDrawGame(); } void SaveGeneration() { FILE *out; SetUpMenu(&SaveLifeMenu); InputName(); reDrawGame(); if (FileName[0] == 0) return; if ((out = fopen(FileName, "w")) == NULL) { Beep(); return; } if(fwrite(old, 20, 20, out) != 20) { Beep();  } fclose(out); } void Play() { Word erc; Byte *pChr; erc = Check(kbdMsgExch, &pChr); if (erc != ercOK) { if (erc != ercNoMessage) { ErrorExit(erc); } } else { if (*pChr == (Byte) F1) { IÄî nputGeneration(FALSE); } if (*pChr == (Byte) FINISH) { ErrorExit(0); } } for (i = 1; i < 20; i ++) { for (j = 1; j < 20; j ++) { sum = 0; for (k = i-1; k < i+2; k++) { for (l = j-1; l < j+2; l++) { sum += old[k][l]; } } if (old[i][j]) sum -= 1; switch (sum) { case 2: new[i][j] = old[i][j]; break; case 3: new[i][j] = 1; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, "*", 1)); break; default: new[i][j] = 0; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, " "Ðð , 1)); break; } } } CheckErc(Delay(DELAYTIME)); for (i = 1; i < 20; i ++) { for (j = 1; j < 20; j ++) { sum = 0; for (k = i-1; k < i+2; k++) { for (l = j-1; l < j+2; l++) { sum += new[k][l]; } } if (new[i][j]) sum -= 1; switch (sum) { case 2: old[i][j] = new[i][j]; break; case 3: old[i][j] = 1; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, "*", 1)); break; default: old[i][j] = 0; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, " ", 1)); break; Üò  } } } CheckErc(Delay(DELAYTIME)); } void main() { InitKbdProcess(); InitVideo(); DrawBorder(); InputGeneration(TRUE); while (TRUE) Play(); }al, 80)); } CheckErc(PutFrameChars(0, 0, DisplayLines - 7, pSep, 80)); for (Line = Menu->Prompt; Line != NULL; Line = Line->Next) { CheckErc(PutFrameChars( 0 ,Line->Col ,Line->Line + (DisplayLines - 6) ,Line->pString ,strlen(Line->pString) )); } for (Data = Menu->Input; Data != NULL; Data = Data->Next) { CheckErc(PutFrameAttrsèô úÿžlink.fls C_Samplesž�5”úf6”úf3Vÿfqªª± ôõ l  T %' Bind %'Object modules'@linkHuge.fls %'Run file'huge.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'2000 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcbe.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]'   •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü` ²§–/linkKeyword.fls-New C_samples–/š¦Œúfy™úf6Vÿf:ªªV l samples.lib(keymain keylist filelist search vidio samgen) p¹Oð¿o@ðÊÿÐËŸÐÑpÕOðÚo@à?°áinkbeeper.sub linkHuge.sub linkKeyword.sub linklarge.sub linklife.sub linksample.sub linkswap.sub linkwrite.sub ø ¢Q@linkbeeper.fls-New C_Samples@–äãf—úf4Vÿfªª½  ù samples.lib(beeper start)UNC1.lst FUNC2.lst HUGE.lst KEYLIST.lst KEYMAIN.lst LARGE.lst LIFE.lst SAMPLE.lst START.lst SWAP.lst VIDIO.lst WRITE.lst û 8˜@linkbeeper.sub-New C_Samples@�lãfDãf4VÿfIªª½ $ü %' Bind %'Object modules'@linkbeeper.fls %'Run file'beeper.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'600 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]' %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]' pend]' %'[debug?]' ߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü0þ ¹·š# linkhuge.fls-New C_samplesš#’T”úfÊ”úf5Vÿfªªº <ÿ samples.lib(huge) H kº? linkHuge.sub-New C_samplesº?œ4ãfRãf5VÿfYªªâ  ðåÿê�íO�ïàôß ÷o àP Ï `ß0o$߀'Ÿ`> F¿ O� àO�pYß\ àdo`qÿÐß Ð€_°Š�o ��’ß  •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €üx A‘†linkKeyword.sub C_samples†”§Œúf§Œúf7VÿffªªV „ %' Bind %'Object modules'@linkKeyword.fls %'Run file'Keyword.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'2000 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[d1]hc\\big\\hcbe.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]' ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü�  »°Ô linklarge.fls-New C_samplesÔ–Y”úfË”úf8Vÿfªªº œ  samples.lib(Large) UNC1/o FUNC2/o ) ¨  !ó¯? linklarge.sub-New C_samples¯?�ÌãfÚãf9Vÿf[ªª´ %' Bind %'Object modules'@linkLarge.fls %'Run file'Large.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'2000 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcle.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]' •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €üÀ ·<=# linklife.fls-New C_Samples=#�Q”úfÌ”úf9Vÿfªª± Ì samples.lib(life) Ø OŠ@ linklife.sub-New C_Samples@šnãf�cñf:VÿfYªª½ ä %' Bind %'Object modules'@linklife.fls %'Run file'life.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'2000 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcbe.lib %'[DS allocation?]'   e]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcbe.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]'   •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €üP# Ä“ linkwrite.fls-New C_Samples“–[”úfË”úf=Vÿfªªº \$ samples.lib(write) UNC1/o FUNC2/o ) %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]'   •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €üð î linksample.fls-New C_Samples ”U”úfÊ”úf:Vÿfªªº ü samples.lib(sample) Re@linksample.sub-New C_Samples@ŽkãfFãf;Vÿf]ªª½  %' Bind %'Object modules'@linksample.fls %'Run file'sample.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'1200 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcbe.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]' ߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü  &nû? linkswap.fls-New C_samplesû?–&ãf—úfhcbe.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]' •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü€)  --ðlst.fls-New C_Samplesðšž–úf¹™úf>Vÿfžªªé Œ*  BEEPER.lst FILELIST.lst FUNC1.lst FUNC2.lst HUGE.lst KEYLIST.lst KEYMAIN.lst LARGE.lst LIFE.lst samgen.lst SAMPLE.lst SEARCH.lst SWAP.lst VIDIO.lst WRITE.lst ˜, !¯ç#1map.fls C_Samples#1�Ì™úfÍ™úf>VÿfQªªí ¤- !beeper.map huge.map Keyword.map Large.map life.map sample.map swap.map write.map °/ "lnƒ/obj.fls C_Samplesƒ/šæ“úf¯™úf?Vÿf¨ªª± ¼0 "BEEPER.obj FILELIST.obj FUNC1.obj FUNC2.obj HUGE.obj KEYLIST.obj KEYMAIN.obj LARGE.obj LIFE.obj samgen.obj SAMPLE.obj SEARCH.obj start.obj SWAP.obj VIDIO.obj WRITE.obj È2 #\dž/run.fls C_Samples†/ŽÍ“úfÙúf@VÿfQªª± Ô3 #beeper.run huge.run Keyword.run Large.run life.run sample.run swap.run write.run à5 $ßÄþ/sa  ial printer byte streams. 4B % * ;******************************************************************************; $INCLUDE ([sys]samgen.mdf) %Init ; %DeviceOpen([Kbd],OpenByteStreamK) %DeviceOpen([Vid],OpenByteStreamVid) %DeviceOpen([Disk],OpenByteStreamAD) ;***************************************************************************** ; %tagProcs(tagDiskRead,FillBufferAD,FlushBufIllegal,CheckPointBsAD,ReleaseByteStreamAD,SetImageModeIllegal) %tagProcs(tagDiskWrite,FillBufIllegal,FlushBufferAD,CheckPointBsAD,ReleaseByteStreamAD,@D %SetImageModeIllegal) %tagProcs(tagDiskModify,FillBufferAD,FlushBufferAD,CheckPointBsAD,ReleaseByteStreamAD,SetImageModeIllegal) %tagProcs(tagKbdRead,FillBufferK,FlushBufIllegal,ChkptNop,ReleaseEasy,SetImageModeIllegal) %tagProcs(tagVideoWrite,FillBufIllegal,FlushBufferVid,ChkptNop,ReleaseEasy,SetImageModeIllegal) ; ;***************************************************************************** ; %DevDepProc(QueryVidBs,QueryVideoBs) % c_samplesþ/–)-ÿf*-ÿf@Vÿf�ªªÉì6 $ø8 %w"1 samgen.asm-New C_Samples"1’Ý—úf.˜úfAVÿf ªªê : %;***************************************************************************** ; FILE SAMGENALL.ASM -- * ; * ; COPYRIGHT 1981, 1986 CONVERGENT TECHNOLOGIES, INC. ALL RIGHTS RESERVED * ; * ; THIS PROGRAM IS FURNISHED UNDER A LICENSE RESTRICTING ITS USE SOLELY FOR * ; THE OPERATION OF A DESIGNATED COMPUT< %ER FOR A PARTICULAR PURPOSE, AND MAY * ; NOT BE COPIED OR OTHERWISE USED WITHOUT THE PRIOR WRITTEN CONSENT OF * ; CONVERGENT TECHNOLOGIES, INC. TITLE TO AND OWNERSHIP OF THE PROGRAM, * ; INCLUDING ITS SOURCE CODE, SHALL AT ALL TIMES REMAIN IN CONVERGENT * ; TECHNOLOGIES. * ; * ;  > % * ; The file "SamGen.Mdf" contains all of the macro definitions for the macros * ; which are contained in this file, "SamGenAll.Asm". The Sequential Access * ; Method (SAM) implementation contained in CTOS.Lib may be reconfigured by * ; creating a tailored SAMGEN module. First, the SAMGEN.ASM source file must * ; be edited to reflect the new configuration. After editing, the SAMGEN.ASM * ; file must be assembled and then the resulting object file, SAMGEN.OBJ, must* ; be included in the list of object(@ % modules at link time. Alternately, if the* ; new SAM configuration is to be the default SAM configuration, the Librarian* ; utility may be used to overwrite the SAMGEN module contained in CTOS.Lib. * ; The default SAM configuration contained in CTOS.Lib includes disk, * ; keyboard, video, parallel printer, null, and spooler byte streams. * ; In addition, the user may wish to include other byte streams, e.g. * ; communication or ser DevDepProc(GetBsLfa,GetBsLfaAsync) %DevDepProc(SetBsLfa,SetBsLfaAsync) %FinLF %al "AHH$H)H3HUH^HqHvHƒH¸HÁHYH’H HªHÇHæHöHûHHH H7H<HÙHßH÷HýH HH'H9H]H‚HŠH£H¨H­HÊHãH H4HoHtH‡H”H¸HêH<HDHhHtH‰H�HÑHßHÀHåHêHöHȈÈÓÈùÈÈfÈtÈ�ÈÐÈ%ÈdȉÈÈ6ÈhȊȪÈu\ˆ\Þ\æ\\ \¼\ú\¦\¸\Ë\\D\£\¹\þ\ \+\=\Y\v\&´D´^´—´õÊÊgʀʑʖÊûÊÊCÊjÊvÊ—Ê©ÊÊÊâÊPÊhÊ$ÊIÊrʶÊXH &€˜P@sample.c c_samplesP@”ìãfíãfAVÿf�ªªº dI & #define ULCMPB #include #include #include #include int main(argc, argv) int argc; char *argv[]; { FILE *inp, *out; char *pIfilename; char *pOfilename; char line[256]; time_t t1, t2; long int l; l = clock() / CLK_TCK; printf("%ld seconds = %ld hours and %ld minutes", l, l/3600, (l%3600)/60); printf(" past midnight\n"); time(&t1); printf("Greenwich time: %s", asctime(gmtime(&t1))); printf("Local time : %s", ctime(&t1)); if ( argc < 2 ) pIfilenpK &ame = "[kbd]"; else pIfilename = argv[1]; printf("Input file name : %s\n", pIfilename); if ((inp = fopen(pIfilename, "r")) == NULL) { printf("openfail"); return(0); } if ( argc < 3 ) pOfilename = "[vid]"; else pOfilename = argv[2]; printf("Output file name : %s\n", pOfilename); if ((out = fopen(pOfilename, "w")) == NULL) { printf("openfail"); return(0); } while (fgets(line, 256, inp)) fputs(line, out); printf("*******************EOF******************\n"); if (ULCMPB(pIfilename, "[kbd|M &]", 5) != 0xFFFF) { printf("\n***Now seek back to beginning of file***\n"); fseek(inp,0l,SEEK_SET); while (fgets(line, 256, inp)) fputs(line, out); printf("*****************EOF***************\n"); } time(&t2); printf("New local time : %s",asctime(localtime(&t2))); printf("Difference between the two local times "); printf("(in seconds): %.0f\n", difftime(t2,t1)); return (0); }Z¥ZZZZZyZ¾ ZÞ Z Z Z1 ZF Zù Z6O6y6—6ä6)6Q6o6„6Û66Ú6&6¯6Ô6±ˆO '‹‚œ"search.c C_Samplesœ"œe—úff—úfBVÿf”ªªé ”P '/* * Search keylist routine. */ #define Beep #define CheckErc #define PutFrameChars #define PutFrameAttrs #define ResetFrame #include #include "keyword.h" #include #include #include /* Vidio Routines found in Vidio.c */ extern void DrawFunctionKeyBar(Word iLine, Pointer psFnckys); extern Word DisplayLines; extern Pointer pBlanks; extern Pointer pSep; /* State machine varaibles */ extern void DrawMainDisplay(); extern Word oStateStack; extern KeyListType * R 'pKeyList; extern KeyListType *pSelectList; extern FileListType *pFileList; /*****************************************************************************/ Word waitforack; Word searchdone; Word KeyWordSize; KeyListType *pKeys; FileListType *pFiles; FILE *input; #define LNLINES 23 #define LINESIZE 256 #define STARTLINE 11 Byte line[LNLINES][LINESIZE]; Byte *pDisplayline[LNLINES]; Word iLine; Word nLine; char filedisplay[] = "Searching file: "; char positiondisplay[80]; /************************¬T '*****************************************************/ void InitFileUse() { Word i; if (input != NULL) fclose(input); /* Done with old file */ input = NULL; /* Done with this handle. */ nLine = 1; for (i = 0, line[0][0] = 0; i < LNLINES; i++) pDisplayline[i] = &line[0][0]; /* clear display */ if (pFiles == NULL) ret   i, lNormal, 80)); } CheckErc(PutFrameChars(DISPLAYFRAME,33,10,"Search done...", 14)); searchdone++; } else { /* display data around this match */ for (i = 0; i < LNLINES; i++) { if (pDisplayline[i] != NULL) { linesize = strlen((char *)c ' pDisplayline[i]); CheckErc(PutFrameChars (DISPLAYFRAME, 0, i + FIRSTLINE, pDisplayline[i], linesize)); CheckErc(PutFrameChars (DISPLAYFRAME, linesize, i + FIRSTLINE, pBlanks, 80-linesize)); } else { CheckErc(PutFrameChars (DISPLAYFRAME, 0, i + FIRSTLINE, pBlanks, 80)); } } CheckErc(PutFrameAttrs( DISPLAYFRAME,0,STARTLINE+ FIRSTLINE,lUnderLine,80)); if (positionfoundat < 80) CheckErc(PutFrameAttrs( DISPLAYFRAME,positionfoundat,STARTLINE+ FIRSTLINE,  e ' lUnderLine +lReverseHB,KeyWordSize)); } } void SearchSetUp(){ waitforack = 0; searchdone = 0; CheckErc(ResetFrame(DISPLAYFRAME)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 2, pSep, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0urn; /* display file name on top line */ i = strlen(filedisplay); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 0, pBlanks, 80)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 1, pBlanks, 80¸V ')); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 0, filedisplay, i)); CheckErc(PutFrameChars(DISPLAYFRAME, i, 0, pFiles->Filename, ((strlen(pFiles->Filename)+i)<80) ? strlen(pFiles->Filename) : 80-i)); /* display current line number in file on next line */ sprintf(positiondisplay, "At line number: %d%n", nLine, &i); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 1, positiondisplay, i)); if ((input = fopen(pFiles->Filename, "r")) == NULL) { for (i = FIRSTLINE; i < DisplayLines; i++) { CheckErc(PutFrameChaÄX 'rs(DISPLAYFRAME, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(DISPLAYFRAME, 0, i, lNormal, 80)); } CheckErc(PutFrameChars(DISPLAYFRAME,0,10,"File not found:", 15)); CheckErc(PutFrameChars(DISPLAYFRAME,16,10, pFiles->Filename, strlen(pFiles->Filename))); Beep(); waitforack = 1; return; } for (i = STARTLINE, iLine = 0; i < DisplayLines-FIRSTLINE; i++, iLine++) { if (fgets((char *)&line[iLine][0], LINESIZE, input) == NULL) line[iLine][0] = 0; pDisplayline[i] = &(line[iLine][0]); ÐZ ' } } void FindNextFile() { if (pFiles != NULL) pFiles = pFiles->Next; InitFileUse(); } void ShiftLineBuffer() { Word i; nLine++; /* display this on top line */ sprintf(positiondisplay, "At line number: %d%n", nLine, &i); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 1, positiondisplay, i)); for (i = 0; i < LNLINES - 1; i++) pDisplayline[i] = pDisplayline[i+1]; if (++iLine == LNLINES) iLine = 0; if (fgets((char *)&line[iLine][0], LINESIZE, input) == NULL) line[iLine][0] = 0; pDisplayline[LNLINES - 1Ü\ '] = &(line[iLine][0]); }  Word FindMatchInFile() { KeyListType *pSearch; Word limit; Word i; if (pKeys == NULL) return(0xFF); /* kick out, let search end */ while (TRUE) { if ((limit = strlen(pDisplayline[STARTLINE])) == 0) { FindNextFile(); if (input == NULL) return(0xFF); } else { for (pSearch = pKeys; ( (pSearch != NULL) && (pSearch != (void *)&pSelectList) ); pSearch = (pSelectList == (void *) &pSelectList) ? pSearch->Next : pSearch->Selected) { KeyWordSize =è^ ' strlen(pSearch->KeyWord); if (KeyWordSize >= limit) continue; for (i = 0; (i+KeyWordSize) <= limit; i++) if (strncmp(pSearch->KeyWord, (char *)(&(pDisplayline[STARTLINE])[i]), KeyWordSize) == 0) return (i); } ShiftLineBuffer(); } } } void DisplayNext() { Word i, linesize; Word positionfoundat; if (waitforack != 0) { /* Any error to ack? */ waitforack = 0; return; } positionfoundat = FindMatchInFile(); if (waitforack != 0) { /* May have encountered new erroô` ' r to ack */ waitforack = 0; return; } if ((pKeys == NULL) || (pFiles == NULL)) { /* search done */ for (i = FIRSTLINE; i < DisplayLines; i++) { CheckErc(PutFrameChars(DISPLAYFRAME, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(DISPLAYFRAME, 0, , 0, pSep, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 1, pBlanks, 80)); DrawFunctionKeyBar(2, "   Back      Next "); pKeys = (pSelectList == (void *) &pSelectList) ? pKeyList : pSelectList; pFiles = pFileList; g ' if (pKeys == NULL) { CheckErc(PutFrameChars(DISPLAYFRAME,31,10,"Nothing to find...", 18)); Beep(); waitforack = 1; } input = NULL; InitFileUse(); DisplayNext(); } void fncSearch (Byte chr){ if ((searchdone != 0) && ((chr == F10) || (chr == NEXT))) { DrawMainDisplay(); oStateStack -= 1; if (input != NULL) fclose(input); return; } switch (chr) { case F4: DrawMainDisplay(); oStateStack -= 1; if (input != NULL) fclose(input); break; case F10: if (input != NULL) ShiftLineB$i ' uffer(); DisplayNext(); break; case NEXT: if (input != NULL) ShiftLineBuffer(); DisplayNext(); break; default: Beep(); break; } } nput = NULL; /* Done with this handle. */ nLine = 1; for (i = 0, line[0][0] = 0; i < LNLINES; i++) pDisplayline[i] = &line[0][0]; /* clear display */ if (pFiles == NULL) return; /* display file name on top line */ i = strlen(filedisplay); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 0, pBlanks, 80)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 1, pBlanks, 800k (˜q@server.h C_Samples@˜ºãf»ãfCVÿfªªÝ �@ @¿À@¯€Aÿ0B0CO@D? �KßÐVß°Xo�YŸZÿ ZO [Ÿð[¿�\�P^?à_ c/ 0gÿ`q`s?àvÿ x/ yPzOpzÊÀz�1|¯�­€€€€€1€€E€ €€ €0€F€€I€N€/€C ÞH ÞM ÞR ÞTp )èÅ'1 Source.fls C_Samples'1–ÿUÿf VÿfCVÿfõªªØ`q )asm.fls beeper.c filelist.c func1.c func2.c glider HighC.fls huge.c keylist.c keymain.c keyword.h large.c lib.fls libSamples.fls life.c link.fls linkbeeper.fls linkbeeper.sub linkhuge.fls linkHuge.sub linkKeyword.fls linkKeyword.sub linklarge.fls linklarge.sub linklife.fls linklife.sub linksample.fls linksample.sub linkswap.fls linkswap.sub linkwrite.fls linkwrite.sub lst.fls map.fls obj.fls run.fls sa samgen.asm sample.c search.c server.h Source.fls start.asm swap.c sym.fls tree vidio.c write.c ls *ˆü@ start.asm c_samples@˜ïãfïãfDVÿf½ªª» xt *; ;************************************************************************* ; This initialization routine is designed for use with MetaWare C routines ; that do not use any of the MetaWare C library routines. This allows ; system programmers to write services that do not suffer from the C runtime ; memory overhead - which is between 7k and 42k bytes, depending on what ; subsys  ); PutLabels(); }Þ§ Þ¬ Þ± Þ¶ Þ» ÞÀ ÞÅ ÞÊ ÞÏ ÞÔ ÞÙ ÞÞ Þã Þè Þí Þò Þ÷ Þü Þ Þ Þ Þ Þ Þ Þ Þ$ Þ) Þ. Þ3 Þ8 Þ= ÞB ÞG ÞL ÞQ ÞV Þ[ Þ` Þe Þ �O�—´—{—æ—¦—õ½ e½ …½ –½ ×½ (½ B½ W½ ¼½ ‹¯ 0 öÐ �p p §Å ‰Å ÇÅ 5Å x­ò˜þÈþC—Ù—x—ÙN�NíN8NzN Z$Z<ZTZlZ„ZýZ¥ZZZZZyZ¾ ZÞ Z Z Z1 ZF Zù Z6O6y6—6ä6)6Q6o6„6Û66Ú6&6¯6Ô6±؃ ,á 1sym.fls C_Samples 1–Õ™úfÖ™úfEVÿfQªªí ä„ ,beeper.sym huge.sym Keyword.sym Large.sym life.sym sample.sym swap.sym write.sym tems are cheated out of the link using dummy routine names. ; ; The additional memory recovered by avoiding the C runtime library c„v *ompletely ; is worth the trouble, but care must be taken to insure that none of the ; runtime features are used when initialized from this routine. ; ; Fortunately, link errors will result in all known cases so far... ; stack segment word 'stack' stack_start equ this byte db 'MetaWare ' db 'High C' db ' Run-time Library Copyright (C) 1983-1988 MetaWare Incorporated..' stack ends data segment 'data' zero db 0 pzero dw OFFSET dgroup:zero dw dgroup data ends const segment 'const' const ends memory se�x *gment 'memory' memory ends dgroup group stack,DATA,const,memory code segment 'code' code ends extrn main:FAR extrn exit:FAR init_code segment 'code' assume cs: init_code public _mwINIT _mwinit PROC FAR mwINIT: cli ; Wait 'til I have a stack. mov BP,0 ; Initialize stack frame pointer mov ax,dgroup mov ds,ax mov ss,ax assume ds:dgroup mov  sp, OFFSET dgroup:stack_start sti ; Stack in place, can handle interrupts now. ; ; set up argc, argv for no parameters from this initializer mov axœz *, dgroup mov bx, offset dgroup: pzero push ax push bx mov ax,1 push ax CALL main ; ; If the C program returned, call ctos exit. CALL exit _mwinit endp init_code ends end _mwinit H(ÊJÊíÊÊjÊœVüVyVãV…V.VPVVžVéVwVéHéXé¡éÀédé¼éÖéðéééWézéŠéËé€!‹”¹`¹Æ¹¹:¹`¹Œ¹à¹¹L¹¹ÿ¹¹M¹~¹ô¹J¹T¹­¹ß¹!K!b!¥!6#!3!€3!©3!cD!ÓD!²D!¹!Ú ¹!ó ¹!/™"¦ª"¿"p¿"RÉ"Uå"þ"!2#Z2#r2#Ü2#2#¨| +c¤þ?swap.c C_samplesþ?–ãfãfDVÿf>ªªÞ ´} +#ifdef __LARGE__ #include #include #include  #include #else $#include $#define AllocMemorySL $#define InitLargeOverlays $#include pragma Calling_convention(_FAR_CALL|_CALLEE_POPS_STACK|_DGROUP_MODEL); extern int OutputToVid0(void *, int); extern int AllocMemorySL(int, void *); extern int InitLargeOverlays(void *, int); pragma Calling_convention(); #endif long *func1(), *func2(); long a=2, b=3, c ; extern char * sbVerrun; int inmain(){À + return 1; } main() { int erc; char *poverlay; /* address of overlay area */ int i; /* Allocate Memory for overlays. */ if( erc = AllocMemorySL(4096, &poverlay) ) ErrorExit( erc ); /* Initialize overlays */ if( erc = InitLargeOverlays(poverlay, 256) ) ErrorExit( erc ); for (i=0; i<20; i++){ printf("%ld + %ld = %ld; %ld * %ld = %ld\n", a, b, *(func1()), a, b, *(func2())); a++; b++; } for (i=0; i<10; i++){ double d1; d1 = i; printf("%f %f %f %f\n",d1+1.0,d1-1.0,d1*Ì� +1.0,d1/1.0); } NewScreen(); funcx(  ð† -Ld0tree c_samples0Ž1-ÿf2-ÿfFVÿf�ªªÉü‡ -Š .ƒÂ vidio.c C_samples –©Œúf©ŒúfGVÿf´ªªV ‹ ./* * Define a selection of vidio manipulation routines */ #define Beep #define CheckErc #define InitCharMap #define InitVidFrame #define PutFrameAttrs #define PutFrameChars #define QueryVidHdw #define ReadKbd #define ResetFrame #define ResetVideo #define SetScreenVidAttr #include #include "keyword.h" #include #include Word vcLines; Word vcCols; Word rgCol[6] = {0, 24, 56, 23, 31, 23}; Word DisplayLines; char Inputline[LINEMAX]; MenuType *pActiveMenu; InputType * � .pActiveInputline; Byte *pActiveData; void (*(pCancelRoutine))(); void (*(pGoRoutine))(); Word InputCursorLine; Word InputCursorCol; Pointer pBlanks = {"  "}; Pointer pSep = {"ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ"}; void InitVideo() { Word sMap; Byte rgbVidHdw[3]; CheckErc( QueryVidHdw (&rgbVidHdw, sizeof(rgbVidHdw)) ); vcLines = rgbVidHdw[1]; vcCols = rgbVidHdw[2]; CheckEr,� .c( ResetVideo (vcCols, vcLines, TRUE, 0x20, &sMap) ); /*Main frame*/ DisplayLines = vcLines - SIZEFNCFRAME; CheckErc( InitVidFrame(DISPLAYFRAME, 0, 0, vcCols, DisplayLines, 0, 0, 0, 0, 0) ); /* function bar frame */ CheckErc( InitVidFrame(FNCKEYFRAME, 0, DisplayLines, vcCols, 3, 0, 0, 0, 0, 0) ); CheckErc( InitCharMap(0, sMap) ); CheckErc( SetScreenVidAttr(1, TRUE) ); /*refresh*/ CheckErc( ResetFrame(DISPLAYFRAME) ); CheckErc( ResetFrame(FNCKEYFRAME) ); return; } void DrawFunctionKeyB8‘ .ar(Word iLine, Pointer psFnckys) { Word i; CheckErc(PutFrameChars(FNCKEYFRAME, 0, iLine, psFnckys, strlen(psFnckys))); for (i = 0; i < 3; i++) { CheckErc( PutFrameAttrs(FNCKEYFRAME, rgCol[i], iLine, lReverseHB, rgCol[i+3]) ); } } void SetUpMenu(MenuType *Menu) { PromptType *Line; InputType *Data; Word i; pActiveMenu = Menu; for (i = DisplayLines - 7; i < DisplayLines; i++) { CheckErc(PutFrameChars(DISPLAYFRAME, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(DISPLAYFRAME, 0, i, lNormal, 80)); D“ . } CheckErc(PutFrameChars(DISPLAYFRAME, 0, DisplayLines - 7, pSep, 80)); for (Line = Menu->Prompt; Line != NULL; Line = Line->Next) { CheckErc(PutFrameChars( DISPLAYFRAME ,Line->Col ,Line->Line + (DisplayLines - 6) ,Line->pString ,strlen(Line->pString) )); } for (Data = Menu->Input; Data != NULL; Data = Data->Next) { CheckErc(PutFrameAttrs( DISPLAYFRAME ,Data->Col ,Data->Line + (DisplayLines - 6) ,lReverseHB ,Data->Len )); CheckErc(PutFrameChars( DISPLAP• .YFRAME ,Data->Col ,Data->Line + (DisplayLines - 6) ,Data->Data ,strlen(Data->Data) )); } /* Set up cursor at first position */ pActiveInputline =   uòfŠuòfHVÿf°ªªì¤¢ / #include #include doone(char *mode) { FILE *out; long i; char filename[100]; strcpy(filename, "Test."); strcat(filename, mode); strcat(filename, ".tst"); remove(filename); if ((out = fopen(filename, mode)) == NULL) { printf("Open fail"); return(0); } for (i = 0; i < 7; i += 2) { if(fseek(out, i, SEEK_SET) != 0) { printf("Write fail"); return(0); } if(fwrite("AC", 2, 1, out) != 1) { printf("Write fail"); return(0); } } for (i = 1; i < 8; i += 2°¤ /) { if(fseek(out, i, SEEK_SET) != 0) { printf("Write fail"); return(0); } if(fwrite("B", 1, 1, out) != 1) { printf("Write fail"); return(0); } } } int main() { char mode[4]; char *smodes[2] = {"w", "a"}; char *pmodes[5] = {"\0", "+", "+b", "+t", "+u"}; int i, j; for (i = 0; i < 2; i++) { for Menu->Input; if (pActiveInputline != NULL) { pActiveData = Menu->Input->Data; InputCursorLine = Menu->Input->Line + (DisplayLines - 6); InputCursorCol = Menu->Input->Col; for (InputCursorCol = Menu->Input->Col; pActiveData[InputCursorCol-Menu->Input->Col] != 0; InputCursorCol++); CheckErc(PutFrameAttrs(DISPLAYFRAME, InputC\— .ursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); } CheckErc(PutFrameChars(FNCKEYFRAME, 0, 0, pSep, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 1, pBlanks, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 2, pBlanks, 80)); CheckErc(PutFrameAttrs(FNCKEYFRAME, 0, 2, lNormal, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 18, 2, "Press GO to act, press cancel to exit menu.", 43)); } void InputInformation (Byte chr){ switch (chr) { case CANCEL: (*pCancelRoutine)(); break; case GO: (*pGoRoutineh™ .)(); break; case NEXT: CheckErc(PutFrameAttrs(DISPLAYFRAME, InputCursorCol, InputCursorLine, lReverseHB, 1)); pActiveInputline = pActiveInputline->Next; if (pActiveInputline == NULL) pActiveInputline = pActiveMenu->Input; pActiveData = pActiveInputline->Data; InputCursorLine = pActiveInputline->Line + (DisplayLines - 6); for (InputCursorCol = pActiveInputline->Col; pActiveData[InputCursorCol-pActiveInputline->Col] != 0; InputCursorCol++); CheckErc(PutFrameAttrs(DISPLAYFRAME, Inpt› . utCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); break; case BACKSPACE: CheckErc(PutFrameAttrs(DISPLAYFRAME, InputCursorCol, InputCursorLine, lReverseHB, 1)); if ((InputCursorCol-pActiveInputline->Col) != 0) InputCursorCol -= 1; CheckErc(PutFrameChars(DISPLAYFRAME, InputCursorCol, InputCursorLine, pBlanks, 1)); pActiveData[InputCursorCol-pActiveInputline->Col] = 0; CheckErc(PutFrameAttrs(DISPLAYFRAME, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); br€� . eak; default: /* Assume data char if not caught elsewhere */ if ((chr < 0x80) && (pActiveInputline != NULL)) {  CheckErc(PutFrameAttrs(DISPLAYFRAME, InputCursorCol, InputCursorLine, lReverseHB, 1)); if ((InputCursorCol-pActiveInputline->Col) < (pActiveInputline->Len - 1) ) { CheckErc(PutFrameChars(DISPLAYFRAME, InputCursorCol, InputCursorLine, &chr, 1)); pActiveData[InputCursorCol - pActiveInputline->Col] = chr; pActiveData[(InputCursorCol-pActiveInputline->Col)+1] =ŒŸ . 0; InputCursorCol += 1; } CheckErc(PutFrameAttrs(DISPLAYFRAME, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); } else Beep(); break; } } ine QueryVidHdw #define ReadKbd #define ResetFrame #define ResetVideo #define SetScreenVidAttr #include #include "keyword.h" #include #include Word vcLines; Word vcCols; Word rgCol[6] = {0, 24, 56, 23, 31, 23}; Word DisplayLines; char Inputline[LINEMAX]; MenuType *pActiveMenu; InputType *˜¡ /�1³Dwrite.c C_Samples³D–Š!  (j = 0; j < 5; j++){ strcpy(mode, smodes[i]); strcat(mode, pmodes[j]); doone(mode); } } } ¼¦ %' Copy [kbd] [Scr]<$>args.Tmp Yes '[File List]' '[Keyword List]' Copy [kbd] [Scr]<$>desc.Tmp Yes 'find keywords in files' %' New Command %'Command name''keyword' %'Run file'%0keyword.run %'[Field names]'@[Scr]<$>args.Tmp %'[Description]'@[Scr]<$>desc.Tmp %'[Overwrite ok?]'yes %'[Case (default 00)]' %'[Command file]'%1sys.cmds Type [kbd] When the restore program prompts for Samples.01, Press GO. Press GO to begin restore... 1Restore %'[Archive file]'[f0]Samples %'[File list from]*'* %'[File list to]*'%0* %'[Overwrite ok?]'y %'[Confirm each?]' %'[Sequence number]' %'[Merge with existing file?]' %'[List files only?]' %'[Log file]' Type %'File list'[kbd] %'[Confirm each?]'  Finished installing High C Samples  yPzOpzÊÀz�1|¯�­€€€€€1€€E€ €€ €0€F€€I€N€/€C ÞH ÞM ÞR Þ%' Video %'[Suppress pause between pages?]'y %'[Screen time out (in minutes)]' %'[Color (e.g., Green)]' %'[Narrow characters?]' %'[Background color]' Type %'File list'[kbd] %'[Confirm each?]' Install High C sample programs. The submit form below defines parameters used to install the High C sample program files. The first parameter (defaulting to [sys]) tells this submit what volume and directory to use to hold the sample files. The second parameter (defaulting to %#0:'[sys]':%0) tells this submit what volume and directory has the system command file to be updated. If you are booted from a local disk, then [sys] is appropriate for this parameter. If you wish to update the master, then make sure that the samples are copied to a volume attached to the master, and set this parameter to [!sys]. Press GO to continue... Submit %'File list'[f0]continue.sub %'[Parameters]'[sys] %#0:'[sys]':%0 1 1u Þz Þ Þ„ Þ‰ ÞŽ Þ“ Þ˜ Þ� Þ¢ Þ§ Þ¬ Þ± Þ¶ Þ» ÞÀ ÞÅ ÞÊ ÞÏ ÞÔ ÞÙ ÞÞ Þã Þè Þí Þò Þ÷ Þü Þ Þ Þ Þ Þ Þ Þ Þ$ Þ) Þ. Þ3 Þ8 Þ= ÞB ÞG ÞL ÞQ ÞV Þ[ Þ` Þe Þ �O�—´—{—æ—¦—õ½ e½ …½ –½ ×½ (½ B½ W½ ¼½ ‹¯ 0 öÐ �p p §Å ‰Å ÇÅ 5Å x­ò˜þÈþC—Ù—x—ÙN�NíN8NzN Z$Z<ZTZlZ„ZýZ¥ZZZZZyZ¾ ZÞ Z Z Z1 ZF Zù Z6O6y6—6ä6)6Q6o6„6Û66Ú6&6¯6Ô6±åååå!  åååååååååååååååå" åååååååååååååååå"  åååååååååååååååå# åååååååååååååååå#  åååååååååååååååå$ åååååååååååååååå$  åååååååååååååååå% åååååååååååååååå%  log.sys badBlk.sys Prompt.sub hdinstall.subààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååååååå crashDump.sysfileHeaders.sysmfd.sys sysImage.sys continue.sub & üü¸ÀArchiveÀâ¦g�€gÂÀÄK >¾: FSys¸ctZ( 9|M^Sys¸ctZ(9{8xfileHeaders.sysSysºï¦gï¦gï¦gÿÿ–Ä–ímfd.sysSysºð¦gð¦g ŸgÿÿÂÂülog.sysSys¼ñ¦gñ¦gñ¦gÿÿ]U sysImage.sysSysºó¦gó¦gó¦gÿÓØ badBlk.sysSys¼ó¦gó¦gó¦gÿÿ&  ] Samples.01ct ¢3‘gš€g°[;gȦª¨,n †¾ crashDump.sysSys¸õ¦gõ¦gõ¦gÿÿ⎠linker.runctšÛEgð§gEŸg)DFÐü hdinstall.subSys¼&‘gŒ€g“žg&ã Prompt.subSys ¼$2gõ§gõ§gkP—… continue.subSys º)‘g…€g žg"oY readme.docct nóEgû§gY‚ºg$V$MPBQÿfÏ×fÕAlansteve' +m*l)k(j'i&h%g$f'  _^#e"d!c ba`( ]\ [ !Z!"Y"#X#$W$%V%&(   O,- N-.U&'T'(S()R)*Q*+P+,)  M./ L/0 K01J12I23H34G45F56)  ý><=ü==>E67D78C89B9:ÿ@:;þ?;<* û<>?ú;?@ù:@Aø9AB÷8BCö7CDõ6DEô5EF*  ó4FGò3GHñ2HIð1IJï{J+  readme.doc +  , ,   linker.run-  Samples.01 2am e… ³Æasm.fls-New C_SamplesÆ–‘–úfè™úfÑ1gªªé   samgen.asm start.asm  ìá@beeper.c c_samples@–íãfíãfÑ1g¸ªªº -  estInfo(BEEPRQ, &rqInfo, sizeof(rqInfo)) ); /* This is the deinstallation check. If the named server isl  already in a partition, then the server is assumed to be alive and well. A message is sent to the service exchange for the server. In this case, instead of a request, the message is a special value pased as if it were a pointer to a request. The server recieves the message, and because it is running at a higher priority than this program, this program won't execute again until the server has had time to clean up and wait for removal. If the server process could block during deinstallation (wax it), then this program would have to be modified to send a request for deinstallation, and wait for the response before proceeding. When this program regains control, it then uses the partition handle obtained to vacate and remove the server partition. this program then sets up an appropriate exit message, and exits */ if (GetPartitionHandle(&rgServerName, 11, &PhRet$  #define AllocExch #define CheckErc #define ChangePriority #define ConvertToSys #define ChangePriority #define Check #define Crash #define ErrorExit #define ForwardRequest #define GetUserNumber #define GetPartitionHandle #define QueryRequestInfo #define RemovePartition #define Respond #define Send #define SetMsgRet #define SetPartitionLock #define SetPartitionName #define ServeRq #define VacatePartition #define Wait #include #include /* opt out not needed library routines to conserve0 r space */ #include #define BEEPRQ 52 typedef struct { Byte sCntInfo; /* 00 number of control info bytes */ Byte RtCode; /* 01 routing code (SRP) */ Byte nReqPbCb; /* 02 number of req pbcb's */ Byte nRespPbCb; /* 03 number of resp pbcb's */ Word UserNum; /* 04 user number */ Word ExchResp; /* 06 exchange */ Word ErcRet; /* 08 erc to return */ Word RqCode; /* 10 request code */ } RqType; /* 12 */ typedef struct { Word exch; <  Word lsc; } rqInfoType; Word erc; char *psName; char *pServerName; rqInfoType rqInfo; Word exchServe; Word usernum; Word PhRet; char rgServerName[11] = "Beep Server"; char rgmsg1[23] = "Beep Server deinstalled"; char rgmsg2[21] = "Beep Server Installed"; void CrashIfErcNotOk(erc) Word erc; { if (erc != ercOK) Crash(erc); } /* PROCESS A REQUEST Process each request that comes in. */ void ProcessRequest(pRq) RqType *pRq; { if (pRq->UserNum > usernum) { if ((erc = Respond(pRq)) != ercOK) CrH ash(erc); } else { if ((erc = ForwardRequest(rqInfo.exch, pRq)) != ercOK) Crash(erc); } } /* DEINSTALL: This routine returns controll of the request back to its original owner. Then any pending messages on the local service exchange are processed. Then the partition is unlocked, and the priority set to 0xFF, so that no more time is ever spent in this routine. It is then up to the program that sent the deinstallation message to vacate and remove the partition. */ void DeInstall() { RqType *T pRq; /* Serve request to 0 first to avoid SPR OS bug*/ CrashIfErcNotOk(ServeRq(BEEPRQ, 0)); CrashIfErcNotOk(ServeRq(BEEPRQ, rqInfo.exch)); /* Loop here to clear all messages on this exchange */ while (Check(exchServe, &pRq) == ercOK) { ProcessRequest(pRq); } /* All done, unlock partition, and wait for removal by deinstall program */ CrashIfErcNotOk (SetPartitionLock(FALSE)); /* unlock partition  */ CrashIfErcNotOk (ChangePriority(0xFF)); /* sleep here forever */ Crash(3); /* ` Os problem if we ever get here */ } /* MAIN ROUTINE Set up the partition as a server. First check for the server already being installed. If it is, then send a message for the service to clean up and wait for removal, then remove it. Otherwise, proceed with installation. */ void main(){ RqType *pRq; CheckErc(GetUserNumber(&usernum)); CheckErc(AllocExch(&exchServe)); CheckErc( QueryRequ. ) == ercOK){ CheckErc(Send(rqInfo.exch, (Pointer) 0x0000FFFFl)); CheckErc(VacatePartition(PhRet)); CheckErc(RemovePartition(P„  hRet)); erc = SetMsgRet(&rgmsg1, 23); ErrorExit(erc); } /* BECOME A SERVER Since the server is not already installed, install now. Set up an appropriate exit message, and convert to sys (become a server). The ErrorExit call after the convertosys call allows the reloading of an exec in the primary partition. */ erc = SetMsgRet(&rgmsg2, 21); erc = ConvertToSys(); ErrorExit(erc); /* All servers must run at a priority higher than 40, else deadlocks can occur. */ CrashIfErcNotOk(ChangePriority(�  12)); /* Set the partition name so that the deinstallation program can obtain this partition handle. */ CrashIfErcNotOk(SetPartitionName(0, &rgServerName, 11)); /* Now serve the request to the service exchange for this program. */ CrashIfErcNotOk(ServeRq(BEEPRQ, exchServe)); /* Server loop... */ while (TRUE) { CrashIfErcNotOk(Wait(exchServe, &pRq)); if (pRq == (Pointer) 0x0000FFFFl) DeInstall(); ProcessRequest(pRq); } }œ ÇÅ‘- filelist.c C_samples‘-˜¨Œúf¨ŒúfÒ1g‡2ªªV ¨ /* * Filename list manipulation */ #define Beep #define CheckErc #define CSubparams #define ErrorExit #define PutFrameChars #define PutFrameAttrs #define ReadKbd #define ResetFrame #define RgParam #include #include "keyword.h" #include #include #include /* Vidio Routines found in Vidio.c */ extern void DrawFunctionKeyBar(Word iLine, Pointer psFnckys); extern Word DisplayLines; extern Pointer pBlanks; extern Pointer pSep; extern void SetUpMenu(MenuType *Menu)´ ; extern char InputLine[LINEMAX]; /* State machine varaibles */ extern void DrawMainDisplay(); extern void InputInformation (Byte chr); extern void (*(pState[STATESTACKSIZE]))(Byte); extern Word oStateStack; extern void (*(pCancelRoutine))(); extern void (*(pGoRoutine))(); /* Define the Filename list variables */ FileListType *pFileList = NULL; static FileListType *columns[MAXDSPCOLUMNS]; static Word nFileCols; static Word nFilenames; /* Number of Filename entries */ static Word nColumnOffset; stÀ atic Word FileCursorLine; static Word FileCursorCol; /* Menu data */ static PromptType LoadFilenameReplace = { 4, 0 ,(Byte *)"[Replace Existing Filename List (y/n)?]" ,NULL }; static PromptType LoadFilenameFileName = { 2, 0 ,(Byte *)"File Name" ,&LoadFilenameReplace }; static PromptType lkfFiletitle = { 0, 25 ,(Byte *)"Load Filename List From File" ,&LoadFilenameFileName }; static PromptType SaveFilenameFileName = { 2, 0 ,(Byte *)"File Name" Ì!  ,NULL }; static PromptType skfFiletitle = { 0, 24 ,(Byte *)"Save Filename List To File" ,&SaveFilenameFileName }; static char Replace[2] = {'Y', 0}; static char FileName[70] ={0}; static InputType lkfReplace = {4, 40, 2, (void *) &Replace, NULL}; static InputType lkfFileInput = {2, 10, 70,(void *)&FileName, &lkfReplace}; static InputType lkfFileOutput = {2, 10, 70, (void *) &FileName, NULL}; static MenuType LoadFilenameMenu = { &lkfFiletitle ,&lkfFileInput }; static MØ# enuType SaveFilenameMenu = {  &skfFiletitle ,&lkfFileOutput }; static char FilenameName[80] ={0}; static InputType EnteredFilename = {3, 0, 80, (void *) &FilenameName, NULL }; static PromptType EnterFilenametitle = { 1, 30 ,(Byte *)"Enter Filename below" ,NULL }; static MenuType EnterFilenameMenu = { &EnterFilenametitle ,&EnteredFilename }; static FileListType *DeleteNode = NULL; static PromptType DeleteWord = { 3, 0, NULL, NULL }; static PromptType DeleteFilenaä% metitle = { .   } } } ShowFilenameCursor(); } stat,2  ic void ScrollFilenameList(int cLines) { Word i; if (columns[0] == NULL) return; if (cLines < 0) { /* Follow prev pointer */ while (cLines != 0) { if (nColumnOffset != 0) { for (i = 0; i < nFileCols; i++) { if (columns[i]->Prev != NULL) columns[i] = columns[i]->Prev; } nColumnOffset -= 1; } cLines += 1; } } else { /* Follow next pointer */ while (cLines != 0) { if ((nColumnOffset+(DisplayLines-FIRSTLINE))Next != NULL) columns[i] = columns[i]->Next; } nColumnOffset += 1; } cLines -= 1; } } ShowFilenameList(); } static void SizeFilenameList() { FileListType *pList; Word cbMax; cbMax = 0; nFilenames = 0; for (pList = pFileList; pList != NULL; pList = pList->Next) { if(strlen(pList->Filename) > cbMax) cbMax = strlen(pList->Filename); nFilenames += 1; } if (cbMax != 0) { 1, 22 ,(Byte *)"Press GO to delete the Filename below" ,&DeleteWord }; static MenuType DeleteFilenameMenu = { &DeleteFilenametitle ,NULL }; static Word nEntriesPerColumn() { return ( (nFilenames/nFileCols) + ( ((nFilenames%nFileCols) != 0) ?1:0) ); } static Word ColumnOffset( Word iCol) { if (iCol > nFileCols) return(0); return( (iCol *(nFilenames / nFileCols)) + (min(iCol, nFilenames % nFileCols)) ); } static void ShowFilenameCursor() { CheckErc (PutFrað' meAttrs( DISPLAYFRAME ,FileCursorCol * (80/nFileCols) ,FileCursorLine ,lUnderLine ,80/nFileCols )); } static void HideFilenameCursor() { CheckErc (PutFrameAttrs( DISPLAYFRAME ,FileCursorCol * (80/nFileCols) ,FileCursorLine ,lNormal ,80/nFileCols )); } static void EnableFilenameCursor() { FileCursorLine = FIRSTLINE; FileCursorCol = 0; ShowFilenameCursor(); } /* Define Filename list manipluation functions */ static void AddToFilenameList(FileListType *Node) { FileListType *Lisü) t; FileListType *Parent; Node->Prev = NULL; if (pFileList == NULL) { /* if */ pFileList = Node; Node->Next = NULL; } /* if */ else { /* outer else */ if (strcmp(Node->Filename, pFileList->Filename) == 0) { /* if */ free(Node->Filename); free(Node); return; } /* if */ if (strcmp(Node->Filename, pFileList->Filename) < 0) { /* if */ /* add in as first element */ Node->Next = pFileList; pFileList->Prev = Node; pFileList = Node; } /* if */ else { /* else */ /* Add ,  into middle of list */ for (List = pFileList; List != NULL; List = List->Next) { /* for */ if (strcmp(Node->Filename, List->Filename) == 0) { /* if */ free(Node->Filename); free(Node); return; } /* if */ if (strcmp(Node->Filename, List->Filename) < 0) { /* if */ Parent = List->Prev; Parent->Next = Node; List->Prev = Node; Node->Prev = Parent; Node->Next = List; return; } /* if */ Parent = List; /* Save this for adding to end of list */ .  } /* for */ /* Add to end of list */ Parent->Next = Node; Node->Prev = Parent; Node->Next = NULL; } /* else */ } /* outer else */ } /* end void */ static void ShowFilenameList() { Word i, j; FileListType *Showcolumns[MAXDSPCOLUMNS]; HideFilenameCursor(); for (j = 0; j < nFileCols; j++) { Showcolumns[j] = columns[j]; } for (i = FIRSTLINE; i < DisplayLines; i++) { CheckErc(PutFrameChars(DISPLAYFRAME, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(DISPLAYFRAME, 0, i, lNormal, 80) 0  ); if ( (i - FIRSTLINE) + nColumnOffset < nEntriesPerColumn()) { for (j = 0; j < nFileCols; j++) { if ( ((i - FIRSTLINE) + ColumnOffset(j) + nColumnOffset) < ColumnOffset(j+1)) { if (Showcolumns[j] != NULL) { CheckErc(PutFrameChars( DISPLAYFRAME ,j*(MAXCOLUMNS/nFileCols) ,i ,Showcolumns[j]->Filename ,strlen(Showcolumns[j]->Filename) )); Showcolumns[j] = Showcolumns[j]->Next; } } / nFileCols = (cbMax < 60) ? (MAXCOLUMNS / (cbMax + 1)): 1; } elseD6  nFileCols = 1; if (nFileCols > MAXDSPCOLUMNS) nFileCols = MAXDSPCOLUMNS; } void DisplayFilenameList() { Word i, j; Word Limit; /* SET UP WINDOW FOR DISPLAY Filename LIST */  CheckErc(ResetFrame(DISPLAYFRAME)); CheckErc(PutFrameChars(DISPLAYFRAME, 36, 1, "Filenames", 8)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 2, pSep, 80)); DrawFunctionKeyBar(2, " Add   Del Back    Load   Save "); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 0, pSep, 80)); CheckErc(PutFrP8 ameChars(FNCKEYFRAME, 0, 1, " ENTRY FILE ", 80)); SizeFilenameList(); if (nFilenames == 0){ columns[0] = NULL; } else { nColumnOffset = 0; for (i = 0; i < nFileCols; i++) { columns[i] = pFileList; Limit = ColumnOffset(i); for (j = 0; ((j < Limit) && (columns[i] != NULL)); j++) { columns[i] = columns[i]->Next; } } } EnableFilenameCursor(); ShowFilenameList(); } /* Get the initial Filename list. */ void I\: nputFilenameList() { Word i; sdType sdRet; FileListType *Node; nFilenames = CSubparams(FILELISTINDEX); for(i = 0; i < nFilenames; i++) { /* Pick up Filename. Put into Filename List Node */ RgParam(FILELISTINDEX, i, &sdRet); if ((Node = malloc(sizeof(FileListType))) == NULL) ErrorExit(400); if ((Node->Filename = malloc(sdRet.cbString+1)) == NULL) ErrorExit(400); _move(sdRet.pbString, Node->Filename, sdRet.cbString); Node->Filename[sdRet.cbString] = 0; AddToFilenameList(Node); } } voidh<  FilenameCancel() { DisplayFilenameList(); oStateStack -= 1; } extern void LoadFilenameList(); static void ParseLine() { FileListType *Node; Word i, j; j = 0; while (TRUE) { i = j; /* Start from end of last word found */ /* Find start of (next) Filename */ while(isWhiteSpace(InputLine[i])) { if (InputLine[i] == NEWLINE) return; i++; if (i == LINEMAX) return; } /* Find end of Filename */ for (j=i; !isWhiteSpace(InputLine[j]); j++) if (j == LINEMAX) return; if ((Node = malt> loc(sizeof(FileListType))) == NULL) ErrorExit(400); if ((Node->Filename = malloc((j-i)+1)) == NULL) ErrorExit(400); _move(&InputLine[i], Node->Filename, (j-i)); Node->Filename[(j-i)] = 0; AddToFilenameList(Node); } } static void LoadFilenameFile() { FileListType *Node; FILE *inp; oStateStack -= 1; if ((Replace[0] == 'Y') || (Replace[0] == 'y')) { /* Throw away current Filenames */ for (Node = pFileList; Node != NULL; Node = pFileList) { pFileList = pFileList->Next; free(Node€@ ->Filename); free(Node); } pFileList = NULL; } if ((inp = fopen(FileName, "r")) == NULL) { Beep(); LoadFilenameList(); return; } while (fgets(InputLine, 80, inp)) ParseLine(); fclose(inp); DisplayFilenameList(); } static void LoadFilenameList() { HideFilenameCursor(); SetUpMenu(&LoadFilenameMenu); pCancelRoutine = FilenameCancel; pGoRoutine = LoadFilenameFile; oStateStack += 1; pState[oStateStack] = InputInformation; } static void ProcessFilenameEntry() { FileListType *NodeŒB ; oStateStack -= 1; if ((Node = malloc(sizeof(FileListType))) == NULL) ErrorExit(400); if ((Node->Filename = malloc(strlen(FilenameName)+1)) == NULL) ErrorExit(400); _move(FilenameName, Node->Filename, strlen(FilenameName)+1); AddToFilenameList(Node); DisplayFilenameList(); } static void EnterFilenameEntry() { FilenameName[0] = 0; /* Erase any old name entered previously */ HideFilenameCursor(); SetUpMenu(&EnterFilenameMenu); pCancelRoutine = FilenameCancel; pGoRoutine = ProcessFilenameEn˜D try; oStateStack += 1; pState[oStateStack] = InputInformation; } static void DeleteFilenameEntry() { oStateStack -= 1; if (DeleteNode->Prev == NULL) { /* First node in list */ pFileList = DeleteNode->Next; if (pFileList != NULL ) pFileList->Prev = NULL; } else { if (DeleteNode->Next != NULL) DeleteNode->Next->Prev = DeleteNode->/   #define OutputToVid0 #include extern long a,b,c; extern int inmain(); long * func1() { PutLabels(); c = a + b; return &c; } PutLabels() {return;} kbin() {return;} long *NewScreen() {return;} long * funcx() { long *d; int i; i = inmain(); for (i=0; i<10; i++){ double d1; d1 = i; OutputToVid0("this is a test of output", 24); printf("%f %f %f %f\n",d1+1.3,d1-1.3,d1*1.3,d1/1.3); } c = a + b; return &c; } Ÿ�íO0ðÿ€ô? €üøS ¾ü?func2.c C_samplesü?œãfãfÓ1gÞªªÞ U #include extern long *func1(); extern long a,b; long (*pf)(); double *gd; static long c; static char qq[]="hello"; long * func2() { char *pqq; double d1, d2=5.0; char *prest; if (gd != 0) d2 = *gd; d1 = d2 * 3Prev; DeleteNode->Prev->Next = DeleteNode->Next; } free(DeleteNode->Filename); free(DeleteNode); DisplayFilenameList(); } static void SetUpDeleteFilename¤F Entry() { Word nLines; for (DeleteNode = columns[FileCursorCol], nLines = FIRSTLINE; ((DeleteNode != NULL) && (nLines < FileCursorLine) ); DeleteNode = DeleteNode->Next, nLines++); if (DeleteNode == NULL) { Beep(); return; } DeleteWord.pString = (Byte *) DeleteNode->Filename; DeleteWord.Col = ( (80-strlen(DeleteNode->Filename)) /2); HideFilenameCursor(); SetUpMenu(&DeleteFilenameMenu); pCancelRoutine = FilenameCancel; pGoRoutine = DeleteFilenameEntry; oStateStack += 1; pState[oStat°H eStack] = InputInformation; } extern void SaveFilenameList(); static void SaveFilenameFile() { FileListType *Node; FILE *out; oStateStack -= 1; if ((out = fopen(FileName, "w")) == NULL) { Beep(); SaveFilenameList(); return; } for (Node = pFileList; Node != NULL; Node = Node->Next) { fputs(Node->Filename, out); fputs("\n", out); } fclose(out); ShowFilenameList(); ShowFilenameCursor(); } static void SaveFilenameList() { HideFilenameCursor(); SetUpMenu(&SaveFilenameMenu); pCancelR¼J outine = FilenameCancel; pGoRoutine = SaveFilenameFile;  oStateStack += 1; pState[oStateStack] = InputInformation; } void fncFilenameList (Byte chr) { switch (chr) { case SCROLLUP: ScrollFilenameList(1); break; case SCROLLDN: ScrollFilenameList(-1); break; case PAGEUP: ScrollFilenameList(-21);  break; case PAGEDN: ScrollFilenameList(21); break; case UPARROW: HideFilenameCursor(); if (FileCursorLine > FIRSTLINE) FileCursorLine -= 1; ShowFilenameCursor(); break; case DOWNARROÈL W: HideFilenameCursor(); if (FileCursorLine < (DisplayLines-1)) FileCursorLine += 1; ShowFilenameCursor(); break; case LEFTARROW: HideFilenameCursor(); if (FileCursorCol > 0) FileCursorCol -= 1; ShowFilenameCursor(); break; case RIGHTARROW: HideFilenameCursor(); if (FileCursorCol < (nFileCols - 1)) FileCursorCol += 1; ShowFilenameCursor(); break; case F1: EnterFilenameEntry(); break; case F3: SetUpDeleteFilenameEntry(); break; case F4: DrawMainDisplay(); oStateStackÔN  -= 1; break; case F8: LoadFilenameList(); break; case F10: SaveFilenameList(); break; default: Beep(); break; } } i++) { /* Pick up Filename. Put into Filename List Node */ RgParam(FILELISTINDEX, i, &sdRet); if ((Node = malloc(sizeof(FileListType))) == NULL) ErrorExit(400); if ((Node->Filename = malloc(sdRet.cbString+1)) == NULL) ErrorExit(400); _move(sdRet.pbString, Node->Filename, sdRet.cbString); Node->Filename[sdRet.cbString] = 0; AddToFilenameList(Node); } } voidàP X,œ#func1.c-New C_samplesœ#šá�úfÿ�úfÒ1gݪª,ìQ #include 0 .0; d1 = d2 / 3.0; d1 = d2 + 3.0; d1 = d2 - 3.0; if (d1 == d2) d2 = 0.0; pqq = qq; c = strtol("1234", &prest, 0); c = *(func1()); c = b / a; c = (unsigned long)b / (unsigned long)a; c = a * b; return &c; } Ÿ�íO0ðÿ€ô? €üW ÀžlCglider c_sampleslCœ8-ÿf9-ÿfÔ1g�ªªÉX (Z -¶ @ HighC.fls-New C_Samples @šUžúfbžúfÔ1gwªª84[ beeper.c filelist.c func1.c func2.c huge.c keylist.c keymain.c large.c life.c sample.c search.c swap.c vidio.c write.c o@à?°áðåÿê�íO�ïàôß ÷o àP Ï `ß0o$߀'Ÿ`> F¿ O� àO�pYß\ àdo`qÿÐß Ð€_°Š�o ��’ß  •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü@] »ï?huge.c-New C_samplesï?’ýãfãfÕ1g†ªªá L^  #include #include typedef int harray[8192]; harray _huge c[13] = { {0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12} }; int _huge ca[13][8192] = { {0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12} }; typedef char *chrp; chrp _huge rgbnode[27][27][27] = {{ { {"this is string 1"}, {"This is string 2"} } }}; typedef void *biggie; biggie _huge a[32000]; void header(si) { printf("Size %u",si); } void Chunky(unsigned int si) { unsigned int i; i =X`  1; header(si); while ( (a[i] = malloc(si)) != 0) i++; printf(", chunks %u \n",i); for (i--; i != 0; i--) free(a[i]); } void accessarray () { int i,j; for (i = 0; i < 13; i++) { printf("Element=%d Address=%lx\n", c[i][0], &c[i][0]); } /* Should print values 0, 1, ..., 13, and their addresses. */ i = 12; rgbnode[12][12][12] = "this is another string"; *rgbnode[12][12][12] = 'T';  printf("%s, %s, %s\n", rgbnode[0][0][0], rgbnode[0][0][1], rgbnode[12][12][12]); } main () db { unsigned int j; for (j = 60000; j >= 1000 ; j -= 1000) { Chunky(j); } accessarray(); return(0); } Þ Þ Þ  Þ Þ Þ Þ Þ$ Þ) Þ. Þ3 Þ8 Þ= ÞB ÞG ÞL ÞQ ÞV Þ[ Þ` Þe Þ �O�—´—{—æ—¦—õ½ e½ …½ –½ ×½ (½ B½ W½ ¼½ ‹¯ 0 öÐ �p p §Å ‰Å ÇÅ 5Å x­ò˜þÈþC—Ù—x—ÙN�NíN8NzN Z$Z<ZTZlZ„ZýZ¥ZZZZZyZ¾ ZÞ Z Z Z1 ZF Zù Z6O6y6—6ä6)6Q6o6„6Û66Ú6&6¯6Ô6±pd ¿Õ>0 keylist.c C_samples>0š¢ŒúfØUÿfÖ1g¸<ªªV |e /* * Keyword list manipulation */ #define Beep #define CheckErc #define CSubparams #define ErrorExit #define PutFrameC0   Word nLines; CheckErc (PutFrameAttrs( DISPLAYFRAME ,keyCursorCol * (80/nKeyCols) ,keyCursorLine ,lUnderLine ,80/nKeyCols )); /* Find out if this node is selected. Find the node first */ for (pThisNode = columns[keyCursorCol], nLines = FIRSTLINE; ((pThisNode != NULL) && (nLines < keyCursorLine) ); pThisNode = pThisNode->Next, nLines++); if (pThisNode == NULL) return; if (pThisNode->Selected == NULL) return; CheckErc(PutFrameAttrsÐs (DISPLAYFRAME ,keyCursorCol * (80/nKeyCols) ,keyCursorLine ,(lUnderLine | lReverse) ,strlen(pThisNode->KeyWord) )); } static void HideKeywordCursor() { KeyListType *pThisNode; Word nLines; CheckErc (PutFrameAttrs( DISPLAYFRAME ,keyCursorCol * (80/nKeyCols) ,keyCursorLine ,lNormal ,80/nKeyCols )); /* Find out if this node is selected. Find the node first */ for (pThisNode = columns[keyCursorCol], nLines = FIRSTLINE; ((pThisNode != NULL) && (nLines < keyCursorLine) Üu  ); pThisNode = pThisNodhars #define PutFrameAttrs #define ReadKbd #define ResetFrame #define RgParam #include #include "keyword.h" #include #include #include /* Vidio Routines found in Vidio.c */ extern void DrawFunctionKeyBar(Word iLine, Pointer psFnckys); extern Word DisplayLines; extern Pointer pBlanks; extern Pointer pSep; extern void SetUpMenu(MenuType *Menu);ˆg  extern char InputLine[LINEMAX]; /* State machine varaibles */ extern void DrawMainDisplay(); extern void InputInformation (Byte chr); extern void (*(pState[STATESTACKSIZE]))(Byte); extern Word oStateStack; extern void (*(pCancelRoutine))(); extern void (*(pGoRoutine))(); /* Define the Keyword list variables */ KeyListType *pKeyList = NULL; KeyListType *pSelectList = (void *) &pSelectList; static KeyListType *columns[MAXDSPCOLUMNS]; static Word nKeyCols; /* Number of columns of keyword data to be displaye”i d */ static Word nKeyWords; /* Number of keyword entries */ static Word nColumnOffset; static Word keyCursorLine; static Word keyCursorCol; /* Menu data */ static PromptType LoadKeywordReplace = { 4, 0 ,(Byte *)"[Replace Existing Keylist (y/n)?]" ,NULL }; static PromptType LoadKeyWordFileName = { 2, 0 ,(Byte *)"File Name"  ,&LoadKeywordReplace }; static PromptType lkfFiletitle = { 0, 25 ,(Byte *)"Load Keyword List From File" ,&LoadKeyWordFileName }; static  k PromptType SaveKeyWordFileName = { 2, 0 ,(Byte *)"File Name" ,NULL }; static PromptType skfFiletitle = { 0, 24 ,(Byte *)"Save Keyword List To File" ,&SaveKeyWordFileName }; static char Replace[2] = {'Y', 0}; static char FileName[70] ={0}; static InputType lkfReplace = {4, 34, 2, (void *) &Replace, NULL}; static InputType lkfFileInput = {2, 10, 70,(void *)&FileName, &lkfReplace}; static InputType lkfFileOutput = {2, 10, 70, (void *) &FileName, NULL}; static MenuType LoadKe¬m yWordMenu = { &lkfFiletitle ,&lkfFileInput }; static MenuType SaveKeyWordMenu = { &skfFiletitle ,&lkfFileOutput }; static char KeywordName[80] ={0}; static InputType EnteredKeyWord = {3, 0, 80, (void *) &KeywordName, NULL }; static PromptType EnterKeywordtitle = { 1, 30 ,(Byte *)"Enter keyword below" ,NULL }; static MenuType EnterKeyWordMenu = { &EnterKeywordtitle ,&EnteredKeyWord }; static KeyListType *DeleteNode = NULL; static PromptType DeleteWo¸o rd = { 3, 0, NULL, NULL }; static PromptType DeleteKeywordtitle = { 1, 22 ,(Byte *)"Press GO to delete the keyword below" ,&DeleteWord }; static MenuType DeleteKeyWordMenu = { &DeleteKeywordtitle ,NULL }; static Word nEntriesPerColumn() { return ( (nKeyWords/nKeyCols) + ( ((nKeyWords%nKeyCols) != 0) ?1:0) ); } static Word ColumnOffset( Word iCol) { if (iCol > nKeyCols) return(0); return( (iCol *(nKeyWords / nKeyCols)) + (min(iCol, nKeyWords % nKeyCols)) ); } static vÄq oid ShowKeywordCursor() { KeyListType *pThisNode;1 e->Next, nLines++); if (pThisNode == NULL) return; if (pThisNode->Selected == NULL) return; CheckErc(PutFrameAttrs(DISPLAYFRAME ,keyCursorCol * (80/nKeyCols) ,keyCursorLine ,(lNormal | lReverse) ,strlen(pThisNode->KeyWord) )); } static void EnableKeywordCursor() { keyCursorLine = FIRSTLINE; keyCursorCol = 0; ShowKeywordCursor(); } /* Define Keyword list manipluation functions */ static void AddToKeyWordList(KeyListType *Node) { KeyListType *List; KeyLisèw  tType *Parent; Node->Prev = NULL; Node->Selected = NULL; if (pKeyList == NULL) { /* if */ pKeyList = Node; Node->Next = NULL; Node->Selected = NULL; } /* if */ else { /* outer else */ if (strcmp(Node->KeyWord, pKeyList->KeyWord) == 0) { /* if */ free(Node->KeyWord); free(Node); return; } /* if */ if (strcmp(Node->KeyWord, pKeyList->KeyWord) < 0) { /* if */ /* add in as first element */ Node->Next = pKeyList; pKeyList->Prev = Node; pKeyList = Node; } /* if */ eôy  lse { /* else */ /* Add into middle of list */ for (List = pKeyList; List != NULL; List = List->Next) { /* for */ if (strcmp(Node->KeyWord, List->KeyWord) == 0) { /* if */ free(Node->KeyWord); free(Node); return; } /* if */  if (strcmp(Node->KeyWord, List->KeyWord) < 0) { /* if */ Parent = List->Prev; Parent->Next = Node; List->Prev = Node; Node->Prev = Parent; Node->Next = List; return; } /* if */ Parent = List; /* Save this for adding|  to end of list */ } /* for */ /* Add to end of list */ Parent->Next = Node; Node->Prev = Parent; Node->Next = NULL; } /* else */ } /* outer else */ } /* end void */ static void ShowKeywordList() { Word i, j; KeyListType *Showcolumns[MAXDSPCOLUMNS]; HideKeywordCursor(); for (j = 0; j < nKeyCols; j++) { Showcolumns[j] = columns[j]; } for (i = FIRSTLINE; i < DisplayLines; i++) { CheckErc(PutFrameChars(DISPLAYFRAME, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(DISPLAYFRAME, 0 ~  , i, lNormal, 80)); if ( (i - FIRSTLINE) + nColumnOffset < nEntriesPerColumn()) { for (j = 0; j < nKeyCols; j++) { if ( ((i - FIRSTLINE) + ColumnOffset(j) + nColumnOffset) < ColumnOffset(j+1)) { if (Showcolumns[j] != NULL) { CheckErc(PutFrameChars( DISPLAYFRAME ,j*(MAXCOLUMNS/nKeyCols) ,i ,Showcolumns[j]->KeyWord ,strlen(Showcolumns[j]->KeyWord) )); if (Showcolumns[j]->Selected != NULL) CheckErc(PutFrameAttrs( DISPLA€ YFRAME ,j*(MAXCOLUMNS/nKeyCols) ,i ,lReverse ,strlen(Showcolumns[j]->KeyWord) )); Showcolumns[j] = Showcolumns[j]->Next; } } } } } ShowKeywordCursor(); } static void ScrollKeyWordList(int cLines) { Word i; if (columns[0] == NULL) return; if (cLines < 0) { /* Follow prev pointer */ while (cLines != 0) { if (nColumnOffset != 0) { for (i = 0; i < nKeyCols; i++) { if (columns[i]->Prev != NULL) columns[i] = columns[i]->Pre$‚ v; } nColumnOffset -= 1; } cLines += 1; } } else { /* Follow next pointer */ while (cLines != 0) { if ((nColumnOffset+(DisplayLines-FIRSTLINE))Next != NULL) columns[i] = columns[i]->Next; } nColumnOffset += 1; } cLines -= 1; } } ShowKeywordList(); } static void SizeKeywordList() { KeyListType *pList; Word cbMax; cbMax = 0; nKeyWords = 0; for (pList = pKeyList; pLi0„ st != NULL; pList = pList->Next) { if(strlen(pList->KeyWord) > cbMax) cbMax = strlen(pList->KeyWord); nKeyWords += 1; } if (cbMax != 0) { nKeyCols = (cbMax < 60) ? (MAXCOLUMNS / (cbMax + 1)): 1; } else nKeyCols = 1; if (nKeyCols > MAXDSPCOLUMNS) nKeyCols = MAXDSPCOLUMNS; } static void SelectKeyword() { KeyListType *pThisNode; Word nLines; HideKeywordCursor(); /* Find the node */ for (pThisNode = columns[keyCursorCol], nLines = F1   i++; if (i == LINEMAX) return; } /* Find end of keyword */ for (j=i; !isWhiteSpace(InputLine[j]); j++) if (j == LIN„’ EMAX) return; if ((Node = malloc(sizeof(KeyListType))) == NULL) ErrorExit(400); if ((Node->KeyWord = malloc((j-i)+1)) == NULL) ErrorExit(400); _move(&InputLine[i], Node->KeyWord, (j-i)); Node->KeyWord[(j-i)] = 0; AddToKeyWordList(Node); } } static void LoadKeywordFile() { KeyListType *Node; FILE *inp; oStateStack -= 1; if ((Replace[0] == 'Y') || (Replace[0] == 'y')) { /* Throw away current keywords */ pSelectList = (void *) &pSelectList; for (Node = pKeyList; Node != NULL; No�” de = pKeyList) { pKeyList = pKeyList->Next; free(Node->KeyWord); free(Node); } pKeyList = NULL; } if ((inp = fopen(FileName, "r")) == NULL) { Beep(); LoadKeyWordList(); return; } while (fgets(InputLine, 80, inp)) ParseLine(); fclose(inp); DisplayKeywordList(); } static void LoadKeyWordList() { HideKeywordCursor(); SetUpIRSTLINE; ((pThisNode != NULL) && (nLines < keyCursorLine<† ) ); pThisNode = pThisNode->Next, nLines++); if (pThisNode == NULL) {ShowKeywordCursor(); return;} if (pThisNode->Selected != NULL) {ShowKeywordCursor(); return;} pThisNode->Selected = pSelectList; pSelectList = pThisNode; ShowKeywordCursor(); } static void deSelectKeyword() { KeyListType *pThisNode, *pSlist, *Parent; Word nLines; HideKeywordCursor(); /* Find the node */ for (pThisNode = columns[keyCursorCol], nLines = FIRSTLINE; ((pThisNode != NULL) && (nLines < keyCursorLine) ); pThiHˆ sNode = pThisNode->Next, nLines++); if (pThisNode == NULL) {ShowKeywordCursor(); return;} if (pThisNode->Selected == NULL) {ShowKeywordCursor(); return;} /* Special case for node at head of list */ if (pThisNode == pSelectList) { pSelectList = pThisNode->Selected; pThisNode->Selected = NULL; ShowKeywordCursor(); return; } for (pSlist = pSelectList; pSlist != (void *)&pSelectList; pSlist = pSlist->Selected) { if (pSlist == pThisNode) { /* Remove from list */ Parent->Selected = pTTŠ hisNode->Selected; pThisNode->Selected = NULL; ShowKeywordCursor(); return; } Parent = pSlist; } ShowKeywordCursor(); } void DisplayKeywordList() { Word i, j; Word Limit; /* SET UP WINDOW FOR DISPLAY KEYWORD LIST */ CheckErc(ResetFrame(DISPLAYFRAME)); CheckErc(PutFrameChars(DISPLAYFRAME, 36, 1, "Keywords", 8)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 2, pSep, 80)); DrawFunctionKeyBar(2, "  Add   Del Back    Load   Save "); CheckErc(Pu`Œ tFrameChars(FNCKEYFRAME, 0, 0, pSep, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 1, " ENTRY  FILE ", 80)); SizeKeywordList(); if (nKeyWords == 0){ columns[0] = NULL; } else { nColumnOffset = 0; for (i = 0; i < nKeyCols; i++) { columns[i] = pKeyList; Limit = ColumnOffset(i); for (j = 0; ((j < Limit) && (columns[i] != NULL)); j++) { columns[i] = columns[i]->Next; } } } EnableKeywordCursor(); ShowKeywordLislŽ t(); } /* Get the initial keyword list. */ void InputKeywordList() { Word i; sdType sdRet; KeyListType *Node; nKeyWords = CSubparams(KEYLISTINDEX); for(i = 0; i < nKeyWords; i++) { /* Pick up keyword. Put into Keyword List Node */ RgParam(KEYLISTINDEX, i, &sdRet); if ((Node = malloc(sizeof(KeyListType))) == NULL) ErrorExit(400); if ((Node->KeyWord = malloc(sdRet.cbString+1)) == NULL) ErrorExit(400); _move(sdRet.pbString, Node->KeyWord, sdRet.cbString); Node->KeyWord[sdRet.cbString] = 0;x�  AddToKeyWordList(Node); } } void KeywordCancel() { DisplayKeywordList(); oStateStack -= 1; } extern void LoadKeyWordList(); static void ParseLine() { KeyListType *Node; Word i, j; j = 0; while (TRUE) { i = j; /* Start from end of last word found */ /* Find start of (next) keyword */ while(isWhiteSpace(InputLine[i])) { if (InputLine[i] == NEWLINE) return; 2 Menu(&LoadKeyWordMenu); pCancelRoutine = KeywordCancel; pGoRoutine = LoadKeywordFile; oStateStack += 1; pState[oStateStack] = InputInformation; } statœ– ic void ProcessKeywordEntry() { KeyListType *Node; oStateStack -= 1; if ((Node = malloc(sizeof(KeyListType))) == NULL) ErrorExit(400); if ((Node->KeyWord = malloc(strlen(KeywordName)+1)) == NULL) ErrorExit(400); _move(KeywordName, Node->KeyWord, strlen(KeywordName)+1); AddToKeyWordList(Node); DisplayKeywordList(); } static void EnterKeyWordEntry() { KeywordName[0] = 0; /* Erase any old name entered previously */ HideKeywordCursor(); SetUpMenu(&EnterKeyWordMenu); pCancelRoutine = KeywordCan¨˜ cel; pGoRoutine = ProcessKeywordEntry; oStateStack += 1; pState[oStateStack] = InputInformation; } static void DeleteKeywordEntry() { oStateStack -= 1; if (DeleteNode->Prev == NULL) { /* First node in list */ pKeyList = DeleteNode->Next; if (pKeyList != NULL ) pKeyList->Prev = NULL; } else { if (DeleteNode->Next != NULL) DeleteNode->Next->Prev = DeleteNode->Prev; DeleteNode->Prev->Next = DeleteNode->Next; } free(DeleteNode->KeyWord); free(DeleteNode); DisplayKeywordList(); } st´š atic void SetUpDeleteKeyWordEntry() { Word nLines; for (DeleteNode = columns[keyCursorCol], nLines = FIRSTLINE; ((DeleteNode != NULL) && (nLines < keyCursorLine) ); DeleteNode = DeleteNode->Next, nLines++); if (DeleteNode == NULL) { Beep(); return; } DeleteWord.pString = (Byte *) DeleteNode->KeyWord; DeleteWord.Col = ( (80-strlen(DeleteNode->KeyWord)) /2); HideKeywordCursor(); SetUpMenu(&DeleteKeyWordMenu); pCancelRoutine = KeywordCancel; pGoRoutine = DeleteKeywordEntry; oStateStackÀœ  += 1; pState[oStateStack] = InputInformation; } extern void SaveKeyWordList(); static void SaveKeywordFile() { KeyListType *Node; FILE *out; oStateStack -= 1; if ((out = fopen(FileName, "w")) == NULL) { Beep(); SaveKeyWordList(); return; } for (Node = pKeyList; Node != NULL; Node = Node->Next) { fputs(Node->KeyWord, out); fputs("\n", out); } fclose(out); DisplayKeywordList(); } static void SaveKeyWordList() { HideKeywordCursor(); SetUpMenu(&SaveKeyWordMenu); pCancelRoutine = KÌž eywordCancel; pGoRoutine = SaveKeywordFile; oStateStack += 1; pState[oStateStack] = InputInformation; } void fnckeywordList (Byte chr) { switch (chr) { case SCROLLUP: ScrollKeyWordList(1); break; case SCROLLDN: ScrollKeyWordList(-1); break; case PAGEUP: ScrollKeyWordList(-21);  break; case PAGEDN: ScrollKeyWordList(21); break; case UPARROW: HideKeywordCursor(); if (keyCursorLine > FIRSTLINE) keyCursorLine -= 1; ShowKeywordCursor(); break; case DOWNARROW: HideKeywordCursoØ  r(); if (keyCursorLine < (DisplayLines-1)) keyCursorLine += 1; ShowKeywordCursor(); break; case LEFTARROW: HideKeywordCursor(); if (keyCursorCol > 0) keyCursorCol -= 1; ShowKeywordCursor(); break; case RIGHTARROW: HideKeywordCursor(); if (keyCursorCol < (nKeyCols - 1)) keyCursorCol += 1; ShowKeywordCursor(); break; case MARK: SelectKeyword(); break; case CODE_MARK: deSelectKeyword(); break; case F1: EnterKeyWordEntry(); break; case F3: SetUpDeleteKeyWordEntry(); ä¢ break; case F4:  DrawMainDisplay(); oStateStack -= 1; break; case F8: LoadKeyWordList(); break; case F10: SaveKeyWordList(); break; default: Beep(); break; } } +) { /* Pick up keyword. Put into Keyword List Node */ RgParam(KEYLISTINDEX, i, &sdRet); if ((Node = malloc(sizeof(KeyListType))) == NULL) ErrorExit(400); if ((Node->KeyWord = malloc(sdRet.cbString+1)) == NULL) ErrorExit(400); _move(sdRet.pbString, Node->KeyWord, sdRet.cbString); Node->KeyWord[sdRet.cbString] = 0;ð¤  'ø=0 keymain.c C_samples=0œ£Œúf¤ŒúfÖ1gl ªªV ü¥2   void FilenameCancel() { ShowFilenameList(); ShowFilenameCursor()D²  ýü> keyword.h C_Samples>” �úf �úf×1g—ªªV P³   #define min(x,y) (x 0x7F)) /* define vidio display equates */ #define lNormal 0 #define lDim 1 #define lUnderLine 2 #define lReverse 4 #define lReverseHB 5 #define lBlink 8 #define DISPLAYFRAME 0 #define FNCKEYFRAME 1 #define SIZEFNCFRAME 3 #define MAXDSPCOLUMNS 4 #define MAXCOLUMNS 80 #define FIRSTLINE 3 #define NEWLINE 0x0A #define LINEMAX 512 /* Define keystroke values */ #define CANCEL 0x07 #define BACKSPACE 0x08 #define NEXT \µ   0x0A #define GO 0x1B #define UPARROW 0x01 #define DOWNARROW 0x0B #define LEFTARROW 0x0E #define RIGHTARROW 0x12 #define SCROLLUP 0x11 #define SCROLLD  /* * Keyword find program. * * Find a keyword in a file, display surrounding area * */ #define Beep #define CheckErc #define CSubparams #define ErrorExit #define PutFrameChars #define ReadKbd #define ResetFrame #define RgParam #include #include "keyword.h" #include #include /* Assumes no use of argc, argv */ /* Routines are actually called at init time, so must return valid values. */ _mwset_up_args() {return 0;} _mwcount_args() {return 0;} /* Vidio Routines found ¨  in Vidio.c */ extern void InitVideo(); extern Word DisplayLines; extern void DrawFunctionKeyBar(Word iLine, Pointer psFunckeys); extern void SetUpMenu(MenuType pMenu); extern Pointer pSep; extern Pointer pBlanks; extern Word InputCursorLine; extern Word InputCursorCol; /* Keyword list routines found in keylist.c */ extern void InputKeywordList(); extern void InputfilenameList(); /* Define the state machine that handles the user interface */ void (*(pState[STATESTACKSIZE]))(Byte); Word oStateStack; /* Deª  fine the state machine functions */ extern void fnckeywordList (Byte chr); extern void DisplayKeywordList(); extern void fncFileNameList (Byte chr); extern void DisplayFilenameList(); extern void fncSearch (Byte chr); extern void SearchSetUp(); extern void InputInformation (Byte chr); /* Set up initial screen display */ void DrawMainDisplay() { CheckErc(ResetFrame(DISPLAYFRAME)); CheckErc(PutFrameChars(DISPLAYFRAME, 30, 1, "Keyword Find Program", 20)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 2, pSep, 80 ¬  )); CheckErc(PutFrameChars(DISPLAYFRAME, 31, 10, "Choose a function", 17)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 0, pSep, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 1, pBlanks, 80)); DrawFunctionKeyBar(2, " Keys  Files  Search      "); } /* Initial display - choose function */ static void fncMainDisplay(Byte chr) { switch (chr) { case F1: oStateStack += 1; pState[oStateStack] = fnckeywordList; DisplayKeywordList(); break; case F2:,®   oStateStack += 1; pState[oStateStack] = fncFileNameList; DisplayFilenameList(); break; case F3: oStateStack += 1; pState[oStateStack] = fncSearch; SearchSetUp(); break; default: Beep(); break; } } void main() { Byte chr; /* Init the Vidio */ InitVideo(); /* Init the state machine */ oStateStack = 0; pState[oStateStack] = fncMainDisplay; /* Get initial Keyword, Filename lists */ InputKeywordList(); InputfilenameList(); DrawMainDisplay(); while (TRUE) { CheckErc(ReadKbd(&chr))8°  ; switch (chr) { case FINISH: ErrorExit(0); default: (*pState[oStateStack])(chr); break; } } } into Filename List Node */ RgParam(FILELISTINDEX, i, &sdRet); if ((Node = malloc(sizeof(FileListType))) == NULL) ErrorExit(400); if ((Node->Filename = malloc(sdRet.cbString+1)) == NULL) ErrorExit(400); _move(sdRet.pbString, Node->Filename, sdRet.cbString); Node->Filename[sdRet.cbString] = 0; AddToFilenameList(Node); } } 3 N 0x13 #define PAGEUP 0x05 #define PAGEDN 0x0C #define MARK 0x02 #define CODE_MARK 0x82 #define BOUND 0x0D #define FINISH 0x04 #define F1 0x15 #define F2 0x16 #define F3 0x17 #define F4 0x18 #define F8 0x1D #define F9 0x1E #define F10 0x1F #define SPACE 0x20 #define STATESTACKSIZE 10 #define FILELISTINDEX 1 #define KEYLISTINDEX 2 typedh·  ef struct { Byte *pbString; Word cbString; } sdType; typedef struct KeyListType { struct KeyListType *Next; struct KeyListType *Prev;  struct KeyListType *Selected; char *KeyWord; } KeyListType; typedef struct FileListType { struct FileListType *Next; struct FileListType *Prev; char *Filename; } FileListType; typedef struct PromptType { Word Line; Word Col; Byte *pString; struct PromptType *Next; } PromptType; typedef struct InputType { Word Line; Word Col; Wot¹  rd Len; Byte *Data; struct InputType *Next; } InputType; typedef struct MenuType { PromptType *Prompt; InputType *Input; } MenuType;  "); } /* Initial display - choose function */ static void fncMainDisplay(Byte chr) { switch (chr) { case F1: oStateStack += 1; pState[oStateStack] = fnckeywordList; break; case F2: oStateStack += 1; pState[oStateStack] = fncFileNameList; break; case F3: break; default: Beep(); break; } } void main() { Byte chr; /* I€»  l[µ?large.c-New C_samplesµ?–Âãfþãf×1g{ªªî Œ¼   /* This program remakes the huge.c sample program into large model. */ pragma memory_model(Large); #include "huge.c" à?°áðåÿê�íO�ïàôß ÷o àP Ï `ß0o$߀'Ÿ`> F¿ O� àO�pYß\ àdo`qÿÐß Ð€_°Š�o ��’ß  •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü˜¾  ?-1lib.fls-New C_Samples-1’m�úf��úfØ1g ªª€ ¤¿  Samples.lib¯_°ß`°@±¯P±o¹p¹Oð¿o@ðÊÿÐËŸÐÑpÕOðÚo@à?°áðåÿê�íO�ïàôß ÷o àP Ï `ß0o$߀'Ÿ`> F¿ O� àO�pYß\ àdo`qÿÐß Ð€_°Š�o ��’ß  •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü°Á  H˜/1libSamples.fls-New C_Samples/1œ†�úf@™úfÙ1g¨ªª€ ¼Â  BEEPER.obj FILELIST.obj FUNC1.obj FUNC2.obj HUGE.obj KEYLIST.obj KEYMAIN.obj LARGE.obj LIFE.obj samgen.obj SAMPLE.obj SEARCH.obj start.obj SWAP.obj VIDIO.obj WRITE.obj ÈÄ »×þ"life.c-New c_samplesþ"�ß-ÿf.ÿfÙ1g—,ªªÉÔÅ  #include #include #define AllocExch #define beep #define Check #define CheckErc #define CreateProcess #define Delay #define ErrorExit #define InitCharMap #define InitVidFrame #define PutFrameAttrs #define PutFrameChars #define QueryVidHdw #define ReadKbd #define ResetFrame #define ResetVideo #define Send #define SetScreenVidAttr #define Wait #include #define kernelErc #include #define lNormal 0 #define lDim 1 #define lUnderLine 2 #define lReverse 4 #define lRevàÇ erseHB 5 #define lBlink 8 #define CANCEL 0x07 #define BACKSPACE 0x08 #define NEXT 0x0A #define GO 0x1B #define UPARROW 0x01 #define DOWNARROW 0x0B #define LEFTARROW 0x0E #define RIGHTARROW 0x12 #define MARK 0x02 #define BOUND 0x0D #define FINISH 0x04 #define F1 0x15 #define F2 0x16 #define F9 0x1E #define F10 0x1F #define HOFF 20 #define VOFF 4 #define DELAYTIME 3 typedef struct PromptType { Word Line; Word Col; Byte *pString; struct PromptType *Next; } PromptType; typìÉ edef struct InputType { Word Line; Word Col; Word Len; Byte *Data; struct InputType *Next; } InputType; typedef struct MenuType { PromptType *Prompt; InputType *Input; } MenuType; Word vcLines; Word vcCols; Byte old[20][20]; Byte new[20][20]; Word rgCol[6] = {0, 24, 56, 23, 31, 23}; char *psFunckeys; Word i, j; Word k, l; Word sum; MenuType *pActiveMenu; InputType *pActiveInputline; Byte *pActiveData; Word DisplayLines; Word InputCursorLine; Word InputCursorCol; PoiøË nter pBlanks = {" "}; Pointer pSep = {"ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ"}; /* Menu data */ PromptType LifeFileName = { 2, 0 ,(Byte *)"File Name" ,NULL }; PromptType lkfFiletitle = { 0, 25 ,(Byte *)"Load life game From File" ,&LifeFileName }; PromptType skfFiletitle = { 0, 24 ,(Byte *)"Save life game To File" ,&LifeFileName }; charÎ  FileName[70] ={0}; InputType lkfFileInput = {2, 10, 70, (void *) &FileName, NULL}; InputType lkfFileOutput = {2, 10, 70, (void *) &FileName, NULL}; MenuType LoadLifeMenu = {&lkfFiletitle, &lkfFileInput}; MenuType SaveLifeMenu = {&skfFiletitle, &lkfFileOutput}; /* Process variables */ #define STACKSIZE 100 Word rgKbdStack[STACKSIZE]; Word kbdDefExch; Word kbdMsgExch; typedef struct { Pointer pEntry; Word saData; Word saExtra; Word saStack; Word oStackInit; Byte priority; Byte fSys; Word exchÐ gDefaultResponse; Byte fDebug; } ProcDescType; void KbdProcess() { Byte chr; while(TRUE) { CheckErc(ReadKbd(&chr)); /* Be aware that because this routine does not wait for a reply from the process it sends the message to, that the chr may by changed by a subsequent readkbd request before the other process has acted on the chr sent. This is not likely for this program, but is likely in other circumstances!!! */ CheckErc(Send(kbdMsgExch, &chr)); } } void4 , vcCols, 3, 0, 0, 0, 0, 0) ); CheckErc( InitCha4Ö  rMap(0, sMap) ); CheckErc( SetScreenVidAttr(1, TRUE) ); /*refresh*/ CheckErc( ResetFrame(0) ); CheckErc( ResetFrame(1) ); return; } void DrawFunctionKeyBar(Pointer psFunckeys) { CheckErc( PutFrameChars (1, 0, 2, psFunckeys, strlen(psFunckeys)) ); for (i = 0; i < 3; i++) { CheckErc( PutFrameAttrs(1, rgCol[i], 2, lReverseHB, rgCol[i+3]) ); } } void DrawBorder() { Word i; for (i = 0; i < 20; i++) { CheckErc(PutFrameAttrs(0, (i*2)+HOFF,  VOFF, lReverseHB, 2) ); CheckErc(PutFrameAttrs(0, (i*2)+HOFF,@Ø  VOFF+20, lReverseHB, 2) ); } for (i = 0; i < 21; i++) { CheckErc(PutFrameAttrs(0, HOFF, i+VOFF, lReverseHB, 1) ); CheckErc(PutFrameAttrs(0, HOFF+40, i+VOFF, lReverseHB, 1) ); } } extern void LoadGeneration(); extern void SaveGeneration(); void InputGeneration(Word fTime) { char *pChr; if (fTime == TRUE) { for (i=0; i<20; i++) { /* clear out the arrays */ for (j=0; j<20; j++) { old[i][j] = 0; new[i][j] = 0; } }  } DrawFunctionKeyBar("  Run     LÚ   Load  Save "); i = 9; j = 9; while (TRUE) { CheckErc( PutFrameAttrs(0, (j*2)+HOFF, i+VOFF, lUnderLine, 1) ); CheckErc( Wait(kbdMsgExch, &pChr) ); CheckErc( PutFrameAttrs(0, (j*2)+HOFF, i+VOFF, lNormal, 1) ); switch (*pChr) { case F9: LoadGeneration(); break; case F10: SaveGeneration(); break; case UPARROW: i -= 1; if (i < 1) i = 1; break; case DOWNARROW: i += 1; if (i > 19) i = 19; break; case LEFTARROW: j -= 1; if (j < 1) j = 1; break; case RIGHTARROWXÜ  : j += 1; if (j > 19) j = 19; break; case MARK: old[i][j] = 1; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, "*", 1)); break; case BOUND: old[i][j] = 0; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, " ", 1)); break; case F2: DrawFunctionKeyBar(" Pause        "); return; case FINISH: ErrorExit(0); default: break; } } } void SetUpMenu(MenuType *Menu) { PromptType *Line; InputType *Data; Word i; pActiveMenudÞ  = Menu; for (i = DisplayLines - 7; i < DisplayLines; i++) { CheckErc(PutFrameChars(0, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(0, 0, i, lNormal, 80)); } CheckErc(PutFrameChars(0, 0, DisplayLines - 7, pSep, 80)); for (Line = Menu->Prompt; Line != NULL; Line = Line->Next) { CheckErc(PutFrameChars( 0 ,Line->Col ,Line->Line + (DisplayLines - 6) ,Line->pString ,strlen(Line->pString) )); } for (Data = Menu->Input; Data != NULL; Data = Data->Next) { CheckErc(PutFrameAttrspà ( 0 ,Data->Col ,Data->Line + (DisplayLines - 6) ,lReverseHB ,Data->Len )); CheckErc(PutFrameChars( 0 ,Data->Col ,Data->Line + (DisplayLines - 6) ,Data->Data ,strlen(Data->Data) )); } /* Set up cursor at first position */ pActiveInputline = Menu->Input; if (pActiveInputline != NULL) { pActiveData = Menu->Input->Data; InputCursorLine = Menu->Input->Line + (DisplayLines - 6); InputCursorCol = Menu->Input->Col; for (InputCursorCol = Menu->Input->Col; pActi|â veData[InputCursorCol-Menu->Input->Col] != 0; InputCursorCol++); CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); } } void InputName (){ char *pChr; while(TRUE) { CheckErc( Wait(kbdMsgExch, &pChr) ); switch (*pChr) { case CANCEL: FileName[0] = 0; return; case GO: return; case NEXT: CheckErc(PutFrameAttrs(0,  InputCursorCol, InputCursorLine, lReverseHB, 1)); pActiveInputline = pActiveInputline->Next; if (pActiveInputline == NULL) pActiveˆä Inputline = pActiveMenu->Input; pActiveData = pActiveInputline->Data; InputCursorLine = pActiveInputline->Line + (DisplayLines - 6); for (InputCursorCol = pActiveInputline->Col; pActiveData[InputCursorCol-pActiveInputline->Col] != 0; InputCursorCol++); CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); brea4   new[i][j]; break; case 3: old[i][j] = 1; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, "*", 1)); break; default: old[i][j] = 0; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, " ", 1)); break; Üò  } } } CheckErc(Delay(DELAYTIME)); } void main() { InitKbdProcess(); InitVideo(); DrawBorder(); InputGeneration(TRUE); while (TRUE) Play(); }al, 80)); } CheckErc(PutFrameChars(0, 0, DisplayLines - 7, pSep, 80)); for (Line = Menu->Prompt; Line != NULL; Line = Line->Next) { CheckErc(PutFrameChars( 0 ,Line->Col ,Line->Line + (DisplayLines - 6) ,Line->pString ,strlen(Line->pString) )); } for (Data = Menu->Input; Data != NULL; Data = Data->Next) { CheckErc(PutFrameAttrsèô Q$žlink.fls C_Samplesž�5”úf6”úfÚ1gqªª± ôõ lk; case BACKSPACE: CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lReverseHB, 1)); if ((InputCursorCol-pActiveInputline->Col) ”æ != 0) InputCursorCol -= 1; CheckErc(PutFrameChars(0, InputCursorCol, InputCursorLine, pBlanks, 1)); pActiveData[InputCursorCol-pActiveInputline->Col] = 0; CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); break; default: if (*pChr < 0x80) { /* Assume data char if not caught elsewhere */ CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lReverseHB, 1)); if ((InputCursorCol-pActiveInputline->Col) < (pActiveInputline->Len - è  1) ) { CheckErc(PutFrameChars(0, InputCursorCol, InputCursorLine, pChr, 1)); pActiveData[InputCursorCol - pActiveInputline->Col] = *pChr; pActiveData[(InputCursorCol-pActiveInputline->Col)+1] = 0; InputCursorCol += 1; } CheckErc(PutFrameAttrs(0, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); } else Beep(); break; } } } void reDrawGame() { Word i, j; for (i = DisplayLines - 7; i < DisplayLines; i++) { CheckErc(PutFrameChars(0, 0, i, pBlanks,¬ê  80)); CheckErc(PutFrameAttrs(0, 0, i, lNormal, 80)); } DrawBorder(); for (i=0; i < 20; i++) for (j = 0; j < 20; j++) { if (old[i][j] == 1) CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, "*", 1)); else CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, " ", 1)); } } void LoadGeneration() { FILE *inp; SetUpMenu(&LoadLifeMenu); InputName(); if (FileName[0] == 0) { reDrawGame(); return; } if ((inp = fopen(FileName, "r")) == NULL) { Beep(); reDrawGame(); return; } if(fread(¸ì old, 20, 20, inp) != 20) { Beep(); } fclose(inp); reDrawGame(); } void SaveGeneration() { FILE *out; SetUpMenu(&SaveLifeMenu); InputName(); reDrawGame(); if (FileName[0] == 0) return; if ((out = fopen(FileName, "w")) == NULL) { Beep(); return; } if(fwrite(old, 20, 20, out) != 20) { Beep();  } fclose(out); } void Play() { Word erc; Byte *pChr; erc = Check(kbdMsgExch, &pChr); if (erc != ercOK) { if (erc != ercNoMessage) { ErrorExit(erc); } } else { if (*pChr == (Byte) F1) { IÄî nputGeneration(FALSE); } if (*pChr == (Byte) FINISH) { ErrorExit(0); } } for (i = 1; i < 20; i ++) { for (j = 1; j < 20; j ++) { sum = 0; for (k = i-1; k < i+2; k++) { for (l = j-1; l < j+2; l++) { sum += old[k][l]; } } if (old[i][j]) sum -= 1; switch (sum) { case 2: new[i][j] = old[i][j]; break; case 3: new[i][j] = 1; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, "*", 1)); break; default: new[i][j] = 0; CheckErc(PutFrameChars(0, (j*2)+HOFF, i+VOFF, " "Ðð , 1)); break; } } } CheckErc(Delay(DELAYTIME)); for (i = 1; i < 20; i ++) { for (j = 1; j < 20; j ++) { sum = 0; for (k = i-1; k < i+2; k++) { for (l = j-1; l < j+2; l++) { sum += new[k][l]; } } if (new[i][j]) sum -= 1; switch (sum) { case 2: old[i][j] =5 inkbeeper.sub linkHuge.sub linkKeyword.sub linklarge.sub linklife.sub linksample.sub linkswap.sub linkwrite.sub ø úu@linkbeeper.fls-New C_Samples@–äãf—úfÚ1gªª½  ù samples.lib(beeper start)UNC1.lst FUNC2.lst HUGE.lst KEYLIST.lst KEYMAIN.lst LARGE.lst LIFE.lst SAMPLE.lst START.lst SWAP.lst VIDIO.lst WRITE.lst û �¼@linkbeeper.sub-New C_Samples@�lãfDãfÛ1gIªª½ $ü %' Bind %'Object modules'@linkbeeper.fls %'Run file'beeper.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'600 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]' %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]' pend]' %'[debug?]' ߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü0þ Üš# linkhuge.fls-New C_samplesš#’T”úfÊ”úfÜ1gªªº <ÿ samples.lib(huge) H Â*º? linkHuge.sub-New C_samplesº?œ4ãfRãfÜ1gYªªâ T %' Bind %'Object modules'@linkHuge.fls %'Run file'huge.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'2000 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcbe.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]'   •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü`  Ì–/linkKeyword.fls-New C_samples–/š¦Œúfy™úfÝ1g:ªªV l samples.lib(keymain keylist filelist search vidio samgen) p¹Oð¿o@ðÊÿÐËŸÐÑpÕOðÚo@à?°á5  Ø ¤®@ linklife.sub-New C_Samples@šnãf�cñfã1gYªª½ ä %' Bind %'Object modules'@linklife.fls %'Run file'life.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'2000 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcbe.lib %'[DS allocation?]' ðåÿê�íO�ïàôß ÷o àP Ï `ß0o$߀'Ÿ`> F¿ O� àO�pYß\ àdo`qÿÐß Ð€_°Š�o ��’ß  •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €üx ™µ†linkKeyword.sub C_samples†”§Œúf§ŒúfÝ1gfªªV „ %' Bind %'Object modules'@linkKeyword.fls %'Run file'Keyword.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'2000 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[d1]hc\\big\\hcbe.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]' ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü�  ÕÔ linklarge.fls-New C_samplesÔ–Y”úfË”úfá1gªªº œ  samples.lib(Large) UNC1/o FUNC2/o ) ¨  v¯? linklarge.sub-New C_samples¯?�ÌãfÚãfâ1g[ªª´ %' Bind %'Object modules'@linkLarge.fls %'Run file'Large.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'2000 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcle.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]' •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €üÀ  a=# linklife.fls-New C_Samples=#�Q”úfÌ”úfã1gªª± Ì samples.lib(life) 6 %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]'   •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €üð B' linksample.fls-New C_Samples ”U”úfÊ”úfä1gªªº ü samples.lib(sample) §‰@linksample.sub-New C_Samples@ŽkãfFãfä1g]ªª½  %' Bind %'Object modules'@linksample.fls %'Run file'sample.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'1200 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcbe.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]' ߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü  {’û? linkswap.fls-New C_samplesû?–&ãf—úfå1g"ªªÞ , samples.lib(SWAP FUNC1/o FUNC2/o) st search vidio) t KEYLIST.lst KEYMAIN.lst LARGE.lst LIFE.lst SAMPLE.lst START.lst SWAP.lst VIDIO.lst WRITE.lst 8  Ggú? linkswap.sub C_samplesú?�'ãf(ãfæ1gYªªÞ D! %' Bind %'Object modules'@linkswap.fls %'Run file'swap.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'2000 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcbe.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]'   •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €üP# 3“ linkwrite.fls-New C_Samples“–[”úfË”úfæ1gªªº \$ samples.lib(write) UNC1/o FUNC2/o ) 6  È2 #±ë†/run.fls C_Samples†/ŽÍ“úfÙúfé1gQªª± Ô3 #beeper.run huge.run Keyword.run Large.run life.run sample.run swap.run write.run à5 $3éþ/sah& —±¥= linkwrite.sub-New C_Samples¥=�ªuòfIvòfç1g[ªªòt' %' Bind %'Object modules'@linkwrite.fls %'Run file'write.run %'[Map file]' %'[Publics?]' %'[Line numbers?]' %'[Stack size]'2000 %'[Max array, data, code]' %'[Min array, data, code]' %'[Run file mode]'prot %'[Version]'%0 %'[Libraries]'[s2]hcbe.lib %'[DS allocation?]' %'[Symbol file]' %'[Copyright Notice]' %'[File to append]' %'[debug?]' •߀¢ï`£P§_Шß0¸¿»ÏÐÁ ÂoÀÄŸ 0ÅßÐÐ_°ÕŸä°å_0éÿ�ëŸ�íO0ðÿ€ô? €ü€)  ‚Qðlst.fls-New C_Samplesðšž–úf¹™úfç1gžªªé Œ*  BEEPER.lst FILELIST.lst FUNC1.lst FUNC2.lst HUGE.lst KEYLIST.lst KEYMAIN.lst LARGE.lst LIFE.lst samgen.lst SAMPLE.lst SEARCH.lst SWAP.lst VIDIO.lst WRITE.lst ˜, ! #1map.fls C_Samples#1�Ì™úfÍ™úfè1gQªªí ¤- !beeper.map huge.map Keyword.map Large.map life.map sample.map swap.map write.map °/ "Á’ƒ/obj.fls C_Samplesƒ/šæ“úf¯™úfè1g¨ªª± ¼0 "BEEPER.obj FILELIST.obj FUNC1.obj FUNC2.obj HUGE.obj KEYLIST.obj KEYMAIN.obj LARGE.obj LIFE.obj samgen.obj SAMPLE.obj SEARCH.obj start.obj SWAP.obj VIDIO.obj WRITE.obj 7  c_samplesþ/–)-ÿf*-ÿfê1g�ªªÉì6 $ø8 %s›"1 samgen.asm-New C_Samples"1’Ý—úf.˜úfê1g ªªê : %;***************************************************************************** ; FILE SAMGENALL.ASM -- * ; * ; COPYRIGHT 1981, 1986 CONVERGENT TECHNOLOGIES, INC. ALL RIGHTS RESERVED * ; * ; THIS PROGRAM IS FURNISHED UNDER A LICENSE RESTRICTING ITS USE SOLELY FOR * ; THE OPERATION OF A DESIGNATED COMPUT< %ER FOR A PARTICULAR PURPOSE, AND MAY * ; NOT BE COPIED OR OTHERWISE USED WITHOUT THE PRIOR WRITTEN CONSENT OF * ; CONVERGENT TECHNOLOGIES, INC. TITLE TO AND OWNERSHIP OF THE PROGRAM, * ; INCLUDING ITS SOURCE CODE, SHALL AT ALL TIMES REMAIN IN CONVERGENT * ; TECHNOLOGIES. * ; * ;  > % * ; The file "SamGen.Mdf" contains all of the macro definitions for the macros * ; which are contained in this file, "SamGenAll.Asm". The Sequential Access * ; Method (SAM) implementation contained in CTOS.Lib may be reconfigured by * ; creating a tailored SAMGEN module. First, the SAMGEN.ASM source file must * ; be edited to reflect the new configuration. After editing, the SAMGEN.ASM * ; file must be assembled and then the resulting object file, SAMGEN.OBJ, must* ; be included in the list of object(@ % modules at link time. Alternately, if the* ; new SAM configuration is to be the default SAM configuration, the Librarian* ; utility may be used to overwrite the SAMGEN module contained in CTOS.Lib. * ; The default SAM configuration contained in CTOS.Lib includes disk, * ; keyboard, video, parallel printer, null, and spooler byte streams. * ; In addition, the user may wish to include other byte streams, e.g. * ; communication or serial printer byte streams. 4B % * ;******************************************************************************; $INCLUDE ([sys]samgen.mdf) %Init ; %DeviceOpen([Kbd],OpenByteStreamK) %DeviceOpen([Vid],OpenByteStreamVid) %DeviceOpen([Disk],OpenByteStreamAD) ;***************************************************************************** ; %tagProcs(tagDiskRead,FillBufferAD,FlushBufIllegal,CheckPointBsAD,ReleaseByteStreamAD,SetImageModeIllegal) %tagProcs(tagDiskWrite,FillBufIllegal,FlushBufferAD,CheckPointBsAD,ReleaseByteStreamAD,@D %SetImageModeIllegal) %tagProcs(tagDiskModify,FillBufferAD,FlushBufferAD,CheckPointBsAD,ReleaseByteStreamAD,SetImageModeIllegal) %tagProcs(tagKbdRead,FillBufferK,FlushBufIllegal,ChkptNop,ReleaseEasy,SetImageModeIllegal) %tagProcs(tagVideoWrite,FillBufIllegal,FlushBufferVid,ChkptNop,ReleaseEasy,SetImageModeIllegal) ; ;***************************************************************************** ; %DevDepProc(QueryVidBs,QueryVideoBs) %7  es; extern Pointer pBlanks; extern Pointer pSep; /* State machine varaibles */ extern void DrawMainDisplay(); extern Word oStateStack; extern KeyListType * R 'pKeyList; extern KeyListType *pSelectList; extern FileListType *pFileList; /*****************************************************************************/ Word waitforack; Word searchdone; Word KeyWordSize; KeyListType *pKeys; FileListType *pFiles; FILE *input; #define LNLINES 23 #define LINESIZE 256 #define STARTLINE 11 Byte line[LNLINES][LINESIZE]; Byte *pDisplayline[LNLINES]; Word iLine; Word nLine; char filedisplay[] = "Searching file: "; char positiondisplay[80]; /************************¬T '*****************************************************/ void InitFileUse() { Word i; if (input != NULL) fclose(input); /* Done with old file */ input = NULL; /* Done with this handle. */ nLine = 1; for (i = 0, line[0][0] = 0; i < LNLINES; i++) pDisplayline[i] = &line[0][0]; /* clear display */ if (pFiles == NULL) retDevDepProc(GetBsLfa,GetBsLfaAsync) %DevDepProc(SetBsLfa,SetBsLfaAsync) %FinLF %al "AHH$H)H3HUH^HqHvHƒH¸HÁHYH’H HªHÇHæHöHûHHH H7H<HÙHßH÷HýH HH'H9H]H‚HŠH£H¨H­HÊHãH H4HoHtH‡H”H¸HêH<HDHhHtH‰H�HÑHßHÀHåHêHöHȈÈÓÈùÈÈfÈtÈ�ÈÐÈ%ÈdȉÈÈ6ÈhȊȪÈu\ˆ\Þ\æ\\ \¼\ú\¦\¸\Ë\\D\£\¹\þ\ \+\=\Y\v\&´D´^´—´õÊÊgʀʑʖÊûÊÊCÊjÊvÊ—Ê©ÊÊÊâÊPÊhÊ$ÊIÊrʶÊXH &Ô¼P@sample.c c_samplesP@”ìãfíãfë1g�ªªº dI & #define ULCMPB #include #include #include #include int main(argc, argv) int argc; char *argv[]; { FILE *inp, *out; char *pIfilename; char *pOfilename; char line[256]; time_t t1, t2; long int l; l = clock() / CLK_TCK; printf("%ld seconds = %ld hours and %ld minutes", l, l/3600, (l%3600)/60); printf(" past midnight\n"); time(&t1); printf("Greenwich time: %s", asctime(gmtime(&t1))); printf("Local time : %s", ctime(&t1)); if ( argc < 2 ) pIfilenpK &ame = "[kbd]"; else pIfilename = argv[1]; printf("Input file name : %s\n", pIfilename); if ((inp = fopen(pIfilename, "r")) == NULL) { printf("openfail"); return(0); } if ( argc < 3 ) pOfilename = "[vid]"; else pOfilename = argv[2]; printf("Output file name : %s\n", pOfilename); if ((out = fopen(pOfilename, "w")) == NULL) { printf("openfail"); return(0); } while (fgets(line, 256, inp)) fputs(line, out); printf("*******************EOF******************\n"); if (ULCMPB(pIfilename, "[kbd|M &]", 5) != 0xFFFF) { printf("\n***Now seek back to beginning of file***\n"); fseek(inp,0l,SEEK_SET); while (fgets(line, 256, inp)) fputs(line, out); printf("*****************EOF***************\n"); } time(&t2); printf("New local time : %s",asctime(localtime(&t2))); printf("Difference between the two local times "); printf("(in seconds): %.0f\n", difftime(t2,t1)); return (0); }Z¥ZZZZZyZ¾ ZÞ Z Z Z1 ZF Zù Z6O6y6—6ä6)6Q6o6„6Û66Ú6&6¯6Ô6±ˆO 'জ"search.c C_Samplesœ"œe—úff—úfë1g”ªªé ”P '/* * Search keylist routine. */ #define Beep #define CheckErc #define PutFrameChars #define PutFrameAttrs #define ResetFrame #include #include "keyword.h" #include #include #include /* Vidio Routines found in Vidio.c */ extern void DrawFunctionKeyBar(Word iLine, Pointer psFnckys); extern Word DisplayLin8 urn; /* display file name on top line */ i = strlen(filedisplay); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 0, pBlanks, 80)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 1, pBlanks, 80¸V ')); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 0, filedisplay, i)); CheckErc(PutFrameChars(DISPLAYFRAME, i, 0, pFiles->Filename, ((strlen(pFiles->Filename)+i)<80) ? strlen(pFiles->Filename) : 80-i)); /* display current line number in file on next line */ sprintf(positiondisplay, "At line number: %d%n", nLine, &i); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 1, positiondisplay, i)); if ((input = fopen(pFiles->Filename, "r")) == NULL) { for (i = FIRSTLINE; i < DisplayLines; i++) { CheckErc(PutFrameChaÄX 'rs(DISPLAYFRAME, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(DISPLAYFRAME, 0, i, lNormal, 80)); } CheckErc(PutFrameChars(DISPLAYFRAME,0,10,"File not found:", 15)); CheckErc(PutFrameChars(DISPLAYFRAME,16,10, pFiles->Filename, strlen(pFiles->Filename))); Beep(); waitforack = 1; return; } for (i = STARTLINE, iLine = 0; i < DisplayLines-FIRSTLINE; i++, iLine++) { if (fgets((char *)&line[iLine][0], LINESIZE, input) == NULL) line[iLine][0] = 0; pDisplayline[i] = &(line[iLine][0]); ÐZ ' } } void FindNextFile() { if (pFiles != NULL) pFiles = pFiles->Next; InitFileUse(); } void ShiftLineBuffer() { Word i; nLine++; /* display this on top line */ sprintf(positiondisplay, "At line number: %d%n", nLine, &i); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 1, positiondisplay, i)); for (i = 0; i < LNLINES - 1; i++) pDisplayline[i] = pDisplayline[i+1]; if (++iLine == LNLINES) iLine = 0; if (fgets((char *)&line[iLine][0], LINESIZE, input) == NULL) line[iLine][0] = 0; pDisplayline[LNLINES - 1Ü\ '] = &(line[iLine][0]); }  Word FindMatchInFile() { KeyListType *pSearch; Word limit; Word i; if (pKeys == NULL) return(0xFF); /* kick out, let search end */ while (TRUE) { if ((limit = strlen(pDisplayline[STARTLINE])) == 0) { FindNextFile(); if (input == NULL) return(0xFF); } else { for (pSearch = pKeys; ( (pSearch != NULL) && (pSearch != (void *)&pSelectList) ); pSearch = (pSelectList == (void *) &pSelectList) ? pSearch->Next : pSearch->Selected) { KeyWordSize =è^ ' strlen(pSearch->KeyWord); if (KeyWordSize >= limit) continue; for (i = 0; (i+KeyWordSize) <= limit; i++) if (strncmp(pSearch->KeyWord, (char *)(&(pDisplayline[STARTLINE])[i]), KeyWordSize) == 0) return (i); } ShiftLineBuffer(); } } } void DisplayNext() { Word i, linesize; Word positionfoundat; if (waitforack != 0) { /* Any error to ack? */ waitforack = 0; return; } positionfoundat = FindMatchInFile(); if (waitforack != 0) { /* May have encountered new erroô` ' r to ack */ waitforack = 0; return; } if ((pKeys == NULL) || (pFiles == NULL)) { /* search done */ for (i = FIRSTLINE; i < DisplayLines; i++) { CheckErc(PutFrameChars(DISPLAYFRAME, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(DISPLAYFRAME, 0, i, lNormal, 80)); } CheckErc(PutFrameChars(DISPLAYFRAME,33,10,"Search done...", 14)); searchdone++; } else { /* display data around this match */ for (i = 0; i < LNLINES; i++) { if (pDisplayline[i] != NULL) { linesize = strlen((char *)c ' pDisplayline[i]); CheckErc(PutFrameChars (DISPLAYFRAME, 0, i + FIRSTLINE, pDisplayline[i], linesize)); CheckErc(PutFrameChars (DISPLAYFRAME, linesize, i + FIRSTLINE, pBlanks, 80-linesize)); } else { CheckErc(PutFrameChars (DISPLAYFRAME, 0, i + FIRSTLINE, pBlanks, 80)); } } CheckErc(PutFrameAttrs( DISPLAYFRAME,0,STARTLINE+ FIRSTLINE,lUnderLine,80)); if (positionfoundat < 80) CheckErc(PutFrameAttrs( DISPLAYFRAME,positionfoundat,STARTLINE+ FIRSTLINE,  e ' lUnderLine +lReverseHB,KeyWordSize)); } } void SearchSetUp(){ waitforack = 0; searchdone = 0; CheckErc(ResetFrame(DISPLAYFRAME)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 2, pSep, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 08  beeper.fls linkbeeper.sub linkhuge.fls linkHuge.sub linkKeyword.fls linkKeyword.sub linklarge.fls linklarge.sub linklife.fls linklife.sub linksample.fls linksample.sub linkswap.fls linkswap.sub linkwrite.fls linkwrite.sub lst.fls map.fls obj.fls run.fls sa samgen.asm sample.c search.c server.h Source.fls start.asm swap.c sym.fls tree vidio.c write.c ls *Ý @ start.asm c_samples@˜ïãfïãfí1g½ªª» xt *; ;************************************************************************* ; This initialization routine is designed for use with MetaWare C routines ; that do not use any of the MetaWare C library routines. This allows ; system programmers to write services that do not suffer from the C runtime ; memory overhead - which is between 7k and 42k bytes, depending on what ; subsys, 0, pSep, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 1, pBlanks, 80)); DrawFunctionKeyBar(2, "   Back      Next "); pKeys = (pSelectList == (void *) &pSelectList) ? pKeyList : pSelectList; pFiles = pFileList; g ' if (pKeys == NULL) { CheckErc(PutFrameChars(DISPLAYFRAME,31,10,"Nothing to find...", 18)); Beep(); waitforack = 1; } input = NULL; InitFileUse(); DisplayNext(); } void fncSearch (Byte chr){ if ((searchdone != 0) && ((chr == F10) || (chr == NEXT))) { DrawMainDisplay(); oStateStack -= 1; if (input != NULL) fclose(input); return; } switch (chr) { case F4: DrawMainDisplay(); oStateStack -= 1; if (input != NULL) fclose(input); break; case F10: if (input != NULL) ShiftLineB$i ' uffer(); DisplayNext(); break; case NEXT: if (input != NULL) ShiftLineBuffer(); DisplayNext(); break; default: Beep(); break; } } nput = NULL; /* Done with this handle. */ nLine = 1; for (i = 0, line[0][0] = 0; i < LNLINES; i++) pDisplayline[i] = &line[0][0]; /* clear display */ if (pFiles == NULL) return; /* display file name on top line */ i = strlen(filedisplay); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 0, pBlanks, 80)); CheckErc(PutFrameChars(DISPLAYFRAME, 0, 1, pBlanks, 800k (í•@server.h C_Samples@˜ºãf»ãfì1gªªÝ �@ @¿À@¯€Aÿ0B0CO@D? �KßÐVß°Xo�YŸZÿ ZO [Ÿð[¿�\�P^?à_ c/ 0gÿ`q`s?àvÿ x/ yPzOpzÊÀz�1|¯�­€€€€€1€€E€ €€ €0€F€€I€N€/€C ÞH ÞM ÞR ÞTp )<ê'1 Source.fls C_Samples'1–ÿUÿf Vÿfí1gõªªØ`q )asm.fls beeper.c filelist.c func1.c func2.c glider HighC.fls huge.c keylist.c keymain.c keyword.h large.c lib.fls libSamples.fls life.c link.fls link9 tems are cheated out of the link using dummy routine names. ; ; The additional memory recovered by avoiding the C runtime library c„v *ompletely ; is worth the trouble, but care must be taken to insure that none of the ; runtime features are used when initialized from this routine. ; ; Fortunately, link errors will result in all known cases so far... ; stack segment word 'stack' stack_start equ this byte db 'MetaWare ' db 'High C' db ' Run-time Library Copyright (C) 1983-1988 MetaWare Incorporated..' stack ends data segment 'data' zero db 0 pzero dw OFFSET dgroup:zero dw dgroup data ends const segment 'const' const ends memory se�x *gment 'memory' memory ends dgroup group stack,DATA,const,memory code segment 'code' code ends extrn main:FAR extrn exit:FAR init_code segment 'code' assume cs: init_code public _mwINIT _mwinit PROC FAR mwINIT: cli ; Wait 'til I have a stack. mov BP,0 ; Initialize stack frame pointer mov ax,dgroup mov ds,ax mov ss,ax assume ds:dgroup mov  sp, OFFSET dgroup:stack_start sti ; Stack in place, can handle interrupts now. ; ; set up argc, argv for no parameters from this initializer mov axœz *, dgroup mov bx, offset dgroup: pzero push ax push bx mov ax,1 push ax CALL main ; ; If the C program returned, call ctos exit. CALL exit _mwinit endp init_code ends end _mwinit H(ÊJÊíÊÊjÊœVüVyVãV…V.VPVVžVéVwVéHéXé¡éÀédé¼éÖéðéééWézéŠéËé€!‹”¹`¹Æ¹¹:¹`¹Œ¹à¹¹L¹¹ÿ¹¹M¹~¹ô¹J¹T¹­¹ß¹!K!b!¥!6#!3!€3!©3!cD!ÓD!²D!¹!Ú ¹!ó ¹!/™"¦ª"¿"p¿"RÉ"Uå"þ"!2#Z2#r2#Ü2#2#¨| +·Èþ?swap.c C_samplesþ?–ãfãfî1g>ªªÞ ´} +#ifdef __LARGE__ #include #include #include  #include #else $#include $#define AllocMemorySL $#define InitLargeOverlays $#include pragma Calling_convention(_FAR_CALL|_CALLEE_POPS_STACK|_DGROUP_MODEL); extern int OutputToVid0(void *, int); extern int AllocMemorySL(int, void *); extern int InitLargeOverlays(void *, int); pragma Calling_convention(); #endif long *func1(), *func2(); long a=2, b=3, c ; extern char * sbVerrun; int inmain(){À + return 1; } main() { int erc; char *poverlay; /* address of overlay area */ int i; /* Allocate Memory for overlays. */ if( erc = AllocMemorySL(4096, &poverlay) ) ErrorExit( erc ); /* Initialize overlays */ if( erc = InitLargeOverlays(poverlay, 256) ) ErrorExit( erc ); for (i=0; i<20; i++){ printf("%ld + %ld = %ld; %ld * %ld = %ld\n", a, b, *(func1()), a, b, *(func2())); a++; b++; } for (i=0; i<10; i++){ double d1; d1 = i; printf("%f %f %f %f\n",d1+1.0,d1-1.0,d1*Ì� +1.0,d1/1.0); } NewScreen(); funcx(); PutLabels(); }Þ§ Þ¬ Þ± Þ¶ Þ» ÞÀ ÞÅ ÞÊ ÞÏ ÞÔ ÞÙ ÞÞ Þã Þè Þí Þò Þ÷ Þü Þ Þ Þ Þ Þ Þ Þ Þ$ Þ) Þ. Þ3 Þ8 Þ= ÞB ÞG ÞL ÞQ ÞV Þ[ Þ` Þe Þ �O�—´—{—æ—¦—õ½ e½ …½ –½ ×½ (½ B½ W½ ¼½ ‹¯ 0 öÐ �p p §Å ‰Å ÇÅ 5Å x­ò˜þÈþC—Ù—x—ÙN�NíN8NzN Z$Z<ZTZlZ„ZýZ¥ZZZZZyZ¾ ZÞ Z Z Z1 ZF Zù Z6O6y6—6ä6)6Q6o6„6Û66Ú6&6¯6Ô6±؃ ,Ô 1sym.fls C_Samples 1–Õ™úfÖ™úfî1gQªªí ä„ ,beeper.sym huge.sym Keyword.sym Large.sym life.sym sample.sym swap.sym write.sym 9  ol[i], iLine, lReverseHB, rgCol[i+3]) ); } } void SetUpMenu(MenuType *Menu) { PromptType *Line; InputType *Data; Word i; pActiveMenu = Menu; for (i = DisplayLines - 7; i < DisplayLines; i++) { CheckErc(PutFrameChars(DISPLAYFRAME, 0, i, pBlanks, 80)); CheckErc(PutFrameAttrs(DISPLAYFRAME, 0, i, lNormal, 80)); D“ . } CheckErc(PutFrameChars(DISPLAYFRAME, 0, DisplayLines - 7, pSep, 80)); for (Line = Menu->Prompt; Line != NULL; Line = Line->Next) { CheckErc(PutFrameChars( DISPLAYFRAME ,Line->Col ,Line->Line + (DisplayLines - 6) ,Line->pString ,strlen(Line->pString) )); } for (Data = Menu->Input; Data != NULL; Data = Data->Next) { CheckErc(PutFrameAttrs( DISPLAYFRAME ,Data->Col ,Data->Line + (DisplayLines - 6) ,lReverseHB ,Data->Len )); CheckErc(PutFrameChars( DISPLAP• .YFRAME ,Data->Col ,Data->Line + (DisplayLines - 6) ,Data->Data ,strlen(Data->Data) )); } /* Set up cursor at first position */ pActiveInputline =ð† -¡ˆ0tree c_samples0Ž1-ÿf2-ÿfï1g�ªªÉü‡ -Š .Øæ vidio.c C_samples –©Œúf©Œúfð1g´ªªV ‹ ./* * Define a selection of vidio manipulation routines */ #define Beep #define CheckErc #define InitCharMap #define InitVidFrame #define PutFrameAttrs #define PutFrameChars #define QueryVidHdw #define ReadKbd #define ResetFrame #define ResetVideo #define SetScreenVidAttr #include #include "keyword.h" #include #include Word vcLines; Word vcCols; Word rgCol[6] = {0, 24, 56, 23, 31, 23}; Word DisplayLines; char Inputline[LINEMAX]; MenuType *pActiveMenu; InputType * � .pActiveInputline; Byte *pActiveData; void (*(pCancelRoutine))(); void (*(pGoRoutine))(); Word InputCursorLine; Word InputCursorCol; Pointer pBlanks = {"  "}; Pointer pSep = {"ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ"}; void InitVideo() { Word sMap; Byte rgbVidHdw[3]; CheckErc( QueryVidHdw (&rgbVidHdw, sizeof(rgbVidHdw)) ); vcLines = rgbVidHdw[1]; vcCols = rgbVidHdw[2]; CheckEr,� .c( ResetVideo (vcCols, vcLines, TRUE, 0x20, &sMap) ); /*Main frame*/ DisplayLines = vcLines - SIZEFNCFRAME; CheckErc( InitVidFrame(DISPLAYFRAME, 0, 0, vcCols, DisplayLines, 0, 0, 0, 0, 0) ); /* function bar frame */ CheckErc( InitVidFrame(FNCKEYFRAME, 0, DisplayLines, vcCols, 3, 0, 0, 0, 0, 0) ); CheckErc( InitCharMap(0, sMap) ); CheckErc( SetScreenVidAttr(1, TRUE) ); /*refresh*/ CheckErc( ResetFrame(DISPLAYFRAME) ); CheckErc( ResetFrame(FNCKEYFRAME) ); return; } void DrawFunctionKeyB8‘ .ar(Word iLine, Pointer psFnckys) { Word i; CheckErc(PutFrameChars(FNCKEYFRAME, 0, iLine, psFnckys, strlen(psFnckys))); for (i = 0; i < 3; i++) { CheckErc( PutFrameAttrs(FNCKEYFRAME, rgC:  Menu->Input; if (pActiveInputline != NULL) { pActiveData = Menu->Input->Data; InputCursorLine = Menu->Input->Line + (DisplayLines - 6); InputCursorCol = Menu->Input->Col; for (InputCursorCol = Menu->Input->Col; pActiveData[InputCursorCol-Menu->Input->Col] != 0; InputCursorCol++); CheckErc(PutFrameAttrs(DISPLAYFRAME, InputC\— .ursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); } CheckErc(PutFrameChars(FNCKEYFRAME, 0, 0, pSep, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 1, pBlanks, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 0, 2, pBlanks, 80)); CheckErc(PutFrameAttrs(FNCKEYFRAME, 0, 2, lNormal, 80)); CheckErc(PutFrameChars(FNCKEYFRAME, 18, 2, "Press GO to act, press cancel to exit menu.", 43)); } void InputInformation (Byte chr){ switch (chr) { case CANCEL: (*pCancelRoutine)(); break; case GO: (*pGoRoutineh™ .)(); break; case NEXT: CheckErc(PutFrameAttrs(DISPLAYFRAME, InputCursorCol, InputCursorLine, lReverseHB, 1)); pActiveInputline = pActiveInputline->Next; if (pActiveInputline == NULL) pActiveInputline = pActiveMenu->Input; pActiveData = pActiveInputline->Data; InputCursorLine = pActiveInputline->Line + (DisplayLines - 6); for (InputCursorCol = pActiveInputline->Col; pActiveData[InputCursorCol-pActiveInputline->Col] != 0; InputCursorCol++); CheckErc(PutFrameAttrs(DISPLAYFRAME, Inpt› . utCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); break; case BACKSPACE: CheckErc(PutFrameAttrs(DISPLAYFRAME, InputCursorCol, InputCursorLine, lReverseHB, 1)); if ((InputCursorCol-pActiveInputline->Col) != 0) InputCursorCol -= 1; CheckErc(PutFrameChars(DISPLAYFRAME, InputCursorCol, InputCursorLine, pBlanks, 1)); pActiveData[InputCursorCol-pActiveInputline->Col] = 0; CheckErc(PutFrameAttrs(DISPLAYFRAME, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); br€� . eak; default: /* Assume data char if not caught elsewhere */ if ((chr < 0x80) && (pActiveInputline != NULL)) {  CheckErc(PutFrameAttrs(DISPLAYFRAME, InputCursorCol, InputCursorLine, lReverseHB, 1)); if ((InputCursorCol-pActiveInputline->Col) < (pActiveInputline->Len - 1) ) { CheckErc(PutFrameChars(DISPLAYFRAME, InputCursorCol, InputCursorLine, &chr, 1)); pActiveData[InputCursorCol - pActiveInputline->Col] = chr; pActiveData[(InputCursorCol-pActiveInputline->Col)+1] =ŒŸ . 0; InputCursorCol += 1; } CheckErc(PutFrameAttrs(DISPLAYFRAME, InputCursorCol, InputCursorLine, lUnderLine | lReverseHB, 1)); } else Beep(); break; } } ine QueryVidHdw #define ReadKbd #define ResetFrame #define ResetVideo #define SetScreenVidAttr #include #include "keyword.h" #include #include Word vcLines; Word vcCols; Word rgCol[6] = {0, 24, 56, 23, 31, 23}; Word DisplayLines; char Inputline[LINEMAX]; MenuType *pActiveMenu; InputType *˜¡ /×U³Dwrite.c C_Samples³D–ŠuòfŠuòfð1g°ªªì¤¢ / #include #include doone(char *mode) { FILE *out; long i; char filename[100]; strcpy(filename, "Test."); strcat(filename, mode); strcat(filename, ".tst"); remove(filename); if ((out = fopen(filename, mode)) == NULL) { printf("Open fail"); return(0); } for (i = 0; i < 7; i += 2) { if(fseek(out, i, SEEK_SET) != 0) { printf("Write fail"); return(0); } if(fwrite("AC", 2, 1, out) != 1) { printf("Write fail"); return(0); } } for (i = 1; i < 8; i += 2°¤ /) { if(fseek(out, i, SEEK_SET) != 0) { printf("Write fail"); return(0); } if(fwrite("B", 1, 1, out) != 1) { printf("Write fail"); return(0); } } } int main() { char mode[4]; char *smodes[2] = {"w", "a"}; char *pmodes[5] = {"\0", "+", "+b", "+t", "+u"}; int i, j; for (i = 0; i < 2; i++) { for:  åååå (j = 0; j < 5; j++){ strcpy(mode, smodes[i]); strcat(mode, pmodes[j]); doone(mode); } } } ¼¦ åååååååååå; åååååååååååååååå;  åååååååååååååååå< åååååååååååååååå<  åååååååååååååååå= åååååååååååååååå=  åååååååååååååååå> åååååååååååååååå>  åååååååååååååååå? åååååååååååååååå?  åååååååååååååååå@ åååååååååååååååå@  ååååååååååååååååA ååååååååååååååååA  ååååååååååååååååB ååååååååååååååååB  ååååååååååååååååC ååååååååååååååååC  ååååååååååååååååD ååååååååååååååååD  ååååååååååååååååE ååååååååååååååååE  ååååååååååååååååF ååååååååååååååååF  ååååååååååååååååG ååååååååååååååååG  ååååååååååååååååH ååååååååååååååååH  ååååååååååååååååI ååååååååååååååååI  ååååååååååååååååJ ååååååååååååååååJ  ååååååååååååååååK ååååååååååååååååK  ååååååååååååååååL ååååååååååååååååL  åååååååååååååååå