€h’’’’’’’’’’’ž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’?ž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’APßPœ#ĄA `Pœ# €iPœ# €°Pœ# €³Pœ# ĄžyPœ#Ą !Pœ#/012€A$$Pœ#3456789;€Å'Pœ#>?@€“*Pœ#ABCDEFGIĄĄ-Pœ#JKLMNOP€/Pœ#QR€Ž0Pœ#S€āU7Pœ#TUVWXYZ\€V :Pœ#klmn€,;Pœ#o€?Pœ#pĄ.@CPœ#qrstuvwy€y GPœ#ƒ„…†Ą(JPœ#‡ˆ‰Š‹Œ€aMPœ#“€ÅOPœ#”•–Ą’OVPœ#—˜™š›œŸ€ÅXPœ#¬€W/_Pœ#­®Æ°±²³µ€`Pœ#ŗĄAŠÄPœ#»€>yPœ#¼½¾æ€zPœ#ĄĮ€˜{Pœ#Ā€_Pœ#ƀ”€Pœ#mPœ#Åʀ‚Pœ#ĒČɀBƒPœ#Ź€%…Pœ#Ė€€†Pœ#Ģ€zˆPœ#Ķ€b‰Pœ#Ī€ ‹Pœ#ĻŠŃ€[Pœ#ŅӀTPœ#ŌÕրQPœ#׀’Pœ#Ų€…“Pœ#Ł€`•Pœ#Ś€‹–Pœ#Ū€J˜Pœ#܀ŁšPœ#ŻĄA`¤Pœ#Ž€¬  Pœ#ßąį€m ”Pœ#āć䀁!£Pœ#åę瀁Ę„Pœ#čĄAp“Pœ#送;«Pœ#ꀁ“¬Pœ#ė쀁ÆPœ#ķīļšńņóõ€3³Pœ#ö÷ųłś€”¶Pœ#ūüżžĄApĮPœ#’€Ś¼Pœ#€^¾Pœ#€XæPœ#€]ĮPœ#€`ĀPœ#€GĆPœ#€„ÅPœ#ĄAPQœ#€įPœ#    €āPœ#€?ćPœ# €{ęPœ#€‹źPœ#€ƒģPœ#€,īPœ# !"#€>ļPœ#$€nņPœ#%&'()*+€DōPœ#,-€™öPœ#./0€)ųPœ#12€čśPœ#3€žPœ#4€V’Pœ#56€}Qœ#78€„Qœ#9€bQœ#:;€īQœ#<...toolsincludeEmm...profilemessagemakefilekernelinitbuild.c.Z at_makefile bootblok.s build changemem bootblokfsck.c.Zfsck1.sgroupttysfsckinit.c.Zmmpasswdpc_makefilefsrcmkfs.c.ZttytypeHOME=/usr/ast PATH=:/bin:/usr/bin:user/bin:$HOME/bin: umask 022 TERM=minix export PATH HOME PS1 PS2 TERM The MINIX documentation is contained in the appendices of the following book: Title: Operating Systems: Design and Implementation Author: Andrew S. Tanenbaum Publisher: Prentice-Hall (1987) Please see 'doc/Read_me' for instructions about unpacking the documentation. Then read 'doc/USER_GUIDE' before using the system. If your screen goes blank periodically, hit the F3 key (see 'doc/USER_GUIDE'). Welcome to MINIX. l=/usr/lib CFLAGS = -F -T. all: make init make bootblok make build init: $l/libc.a init.s $l/head.s asld -o init $l/head.s init.s $l/libc.a $l/end.s @echo init done. # bootblok.s is the source of the MINIX boot block. The bootblock is the # first 512 bytes on the image file and on the boot diskette. When bootblok.s # is assembled, it generates a short binary file (less than 400 bytes) that # must be stripped of its header and copied to the file bootblok. The dd # command below does this. If everything has been done right, the bootblok # file should begin with the following 8 words, in hex: # c0b8 8e07 33d8 b8f6 2fe0 c08e ff33 00b9 # The exact procedure for going from bootblok.s to the binary file stripped of # its header is somewhat operating system dependent. Some assemblers make # an object (.s) file; others make an a.out file directly. If your boot # diskette does not start out by printing 'Booting MINIX 1.0' the problem is # probably that you have not made a good boot block. bootblok: bootblok.s @asld bootblok.s @dd if=a.out of=bootblok bs=16w skip=1 count=16 2>/dev/null @rm a.out @echo bootblok done. build: build.s cc -o build build.s @echo build done. fsck: fsck.s fsck1.s @echo "Start linking fsck. " asld -o fsck fsck1.s fsck.s $l/libc.a $l/end.s @echo fsck done. fsck.s: fsck.c cc -c -Di8088 -DSTANDALONE -F -T. fsck.c # 'make image' combines the bootblock, kernel, memory manager, file # system, init and fsck into a single file, called image. Each of these pieces # appears in the image file just as the original does on the disk, except that # the header at the front is removed, and each piece is padded out to an # integral multiple of 16 bytes. Build also prints a message telling how big # the various pieces (except fsck) are. # # 'make net' does the same thing, only with the networking code from the # 'amoeba directory included # image: build bootblok @getlf "Insert blank diskette in drive 0 and hit return" @build bootblok kernel mm fs init fsck image @cp image /dev/fd0 net: build bootblok @getlf "Insert blank diskette in drive 0 and hit return" @build bootblok ../amoeba/kernel/kernel ../amoeba/mm/mm \ ../amoeba/fs/fs init fsck /dev/fd0  °k.F0ėśŒČŽŲ”ŽŲŽŠ‰„©¼‚Äč¾ėžč ‹.r”’v’v’6¬©’vč¬4éaččŸ?éXčżøPč;QéKčšøPč.Qé>čćčt[é5čŚĒ’©ø©Pøū’Pča3éčĆĒ’©ø©Pøś’PčJ3éč¬Ē’©ø©Pøż’Pč33éšč•čDéē茸éx胸ėpč{øėhčsøė`čkøėXčcøėPč[øėHčSøė@čKøė8čCø ė0č;ø ė(č3ø ė č+ø ėč#ø ėčøėčøėPčrė`ččČėXüŽĀkÄk‰Ąk‹r”ƒĆGG ŒW‰g‰ÜŒŪŽÓ’6ĀkŽĆUWVRQ’6ĄkP¼‚ÄĒfv‚ƒfvü”Äk’ą>¬©üt5ś‹&r”X[YZ^_‰Ęk‰ć‹o&‰.fv‹o‰.Čk]‹g ŽW’w’w’w ÅĘkĻū›ėżU‰åƒģVWčœ[‰FųĒFō`‹²k°k‰Nö‹FöFō‰FņĒF脿ų’¾t”žŠ¤véyĒFśƒ~ś }¹‹FśÓą‹^śŃćó‰’Fśėä ’}Aø ÷ē`‰Ć‹‡Ųu‰F깋Fź™÷ł‰ĆŃć^č‰^č‹Fč‰D‹Fź-™÷łŃą÷Ų‰Ć^č‰\2ė ĒD‹D‰D2ø ÷ē`‰Ć‹‡Öu‰Dƒ|u ’|VčX5[ĒDĒD ’};ĒD$ ™‹Fō‰D"ĒD* ™‹°kNō‰L(ĒD0 ™‹°kNō²k‰L.‹²k°k‰L,逸V÷ēZ‰Ć‹‡¢”‰Fš‰ųѹѹ‰Ć‹‡°k‰D$ ’u’vņė’všD"‰ųѹѹ‰Ć‹‡°k‰D*‰ųѹѹ‰Ć‹‡°kD"‰D(‰ųѹѹ‰Ć‹‡°k‰D,‰ųѹѹ‰Ć‹‡°kD(‰D.‹D"‰D‹D(‰D‹D(‰D‹D(‰DƒĘVGé~žĒ䣂ä£Ē¤‚ƒ¤¾&„ž„©s ĒDƒĘVėšč,Z£ˆ©č5Z£†©øPø’’PčW[[[˜%’‰Ē’üuĒŽ©ė ’śuĒŒ©øPøˆvPøPøĪ£Pčō.ƒÄ‰Fģ‰Vī1ĄPøP’vī’vģ1ĄPPč¢XƒÄ ƒ>Œ©tč„[1’ƒ’}‰ūŃć’vō’·ŚkWč:ƒÄGė濁’}’vōø=PWč ƒÄGėé’vōø"Pø Pč ƒÄ’vōø–PøPčūƒÄ’vōø<Pø PčźƒÄ’vōøRPø PčŁƒÄ’vōøEPø PčČƒÄ’vōøhPøPč·ƒÄ’vōø_PøPč¦ƒÄƒ>Ž©t5’vōøPøvPčŽƒÄ‹Fģ‹NīTƒŃ1ŅRŗR1ŅRŗTRQPč±WƒÄ ė’vōøPø PčYƒÄƒ>Œ©t’vōø<PøqPčAƒÄ1ĄPøt”PøPč0ƒÄĒp”Ī£č&2ƒ>Œ©t)øŠ©PøePčf[[øžPøePčńe[[ø<Pø!Pčäe[[ė1ĄPø!PčÖe[[øæPø”PčÉe[[čóūé•eU‰åƒ~u,øśkPč>_[øP’6¬©čd,[[øV÷&¬©°‰ĆĆt”Sč—2[ė ’vø4lPč_[[‹r”¹‹G*ÓąP’wøblPčö^ƒÄé9eU‰åø„lPčę^[‹r”¹‹G*ÓąP’wø¦lPčĪ^ƒÄøŹlPčÄ^[ømPč¼^[éeU‰åV‹v€<t%Vø:mPč¤^[[~€t ’vøLmPč‘^[[øPmPčˆ^[øRmPč€^[č­YéĮdU‰åƒģ V‹F‰Fü‹F‰FžFü‰Ę1Ą1ɋ°kVȹćŃāŃŠāś‰Vö‰Fų1Ą‹Nö‹Vųń‰Nö‰Vų‹F™¹ćŃąŃŅāś1ÉQ¹QRP’vų’vöčÜUƒÄ éRdU‰åéMdU‰åéGdU‰åƒģVčžGč÷OFčPøtPč”`[[ø¬÷fģ‰ĆĆų“‰Ž’vźėcFčPčc[ė֍FčPVčĪ[[ėŹFčPVčl [[ė¾FčPVčC [[ė²FčPVč× [[ė¦FčPVčö [[ėš1ĄPPPPøź’P’vī’včøDPčP ƒÄé}’»0qXé{`U‰åƒ>‹~ č»N Ątéœc’vč[é’cU‰åƒģVWčČU‰Fō‹^‹wæ$Œ‹‰Fü‹Fü‰Fś‹Fü‰ĮĮ‰NüƒĘ‹Fü’Nü Ą~ ‰óFŠˆGėģ‹^‹wĒ’vōč„U[ƒ~śué3cæ$Œ‹Fś’Nś Ą锉ūGŠˆFļ‰ūGŠ˜‰FüŠFļ˜P’vüč{[[ø¬÷fü‰ĆĆų“‰^ģ‹^샿š~¼‹^싇‚%"‰Fžƒæīƒ~žt¢‹^샿ģ~˜’vģč[‰Fž‹^ģŠ‡–˜‰FųЇ—˜‰Fö1ĄPPPP’vž’vö’vųøCPč* ƒÄé_’éŒbU‰åƒģ VWŠF˜‰Fųø¬÷f‰ĆĆų“‰Žƒ~uŠF˜=;|ŠF˜=D ŠF˜PčH[éKb¼ģč|é@b‹„‚%"‰Ē€¼uŠF˜PčĒ[‰Föƒ~ö’uéb‹FöˆFėƒ’ t ŠF˜%ˆF ’tƒ’té  ’téŠF˜PŠ„˜Y9Įu2€¼‹u+VčO[=’’tøPVčń[[ø PVčē[[øPVčŻ[[é°aŠF˜PŠ„˜Y9Įu+€¼‹u$Vč[ ĄuėõŠ„˜PVč­[[ø PVč£[[éva€¼‹u7€~\uʄ‹ŠF˜PVčƒ[[éVaŠF˜PŠ„•˜Y9ĮujĘF€‹„ī@‰„īė[ʄ‹ŠF˜PŠ„˜Y9ĮtGŠF˜PŠ„˜Y9Įt8ŠF˜PŠ„•˜Y9Įt)‹„č‰ĆƒĆ‰œč‰ĆĘ\‹„ģ@‰„ģ„č9„ču‰“č€~ u ö„‚tĘF ŠF˜PŠ„‘˜Y9ĮtŠF˜PŠ„’˜Y9Įu(ŠF˜PŠ„‘˜Y9ĮuøPėøPFś’vśVč_ [[é†`ŠF˜PŠ„”˜Y9ĮuʄŒéo`€¼ŒuʄŒ‹„€V’Š[éX`€~ u ‹„ī@‰„īƒ~t颃~ųG}陃~ųQ~鐃>"‹t醃> ‹té|ƒ>‹uu‹„č‰ĆƒĆ‰œč‰Ćʍ„č9„ču‰“č‹„ģ@‰„ģøEPVč [[‹„č‰ĆƒĆ‰œč‰ĆĘ[„č9„ču‰“č‹„ģ@‰„ģø[PVč×[[‹Fų-G‰ĆЇ$qˆF‹„č‰ĆƒĆ1ɊNQ‰œč‰ĆXˆ„č9„ču‰“č‹„ģ@‰„ģŠF˜PVčŽ[[éa_U‰åƒģVWŠF˜%‰ĒŠF˜Ø€t1ĄPėøPFüƒ>‹tƒ> ‹u ‰ūЇąy˜‰Ęė!ƒ>"‹uƒ> ‹t ‰ūЇŌm˜Pė‰ūЇjm˜P^ƒ>‹tƒ’} ‰ūЇŌm˜‰Ęƒ>‹t+ƒ’F~&ƒ’Vs!ƒ>"‹uƒ> ‹t ‰ūЇjm˜Pė‰ūЇŌm˜P^ę’ž€rž†rMƒ>‹tƒžA| ƒžZƒĘ ė ƒža|ƒžzƒī ƒ>‹t ƒ> ‹tĪ€ƒ>‹tęƒ~üu¾’’V邉š-€Pén‹Nü‰"‹ėl‹Nü‰ ‹ėc‹Nü‰‹ėZ‹Nü‰‹ėQƒ~ütƒ>‹t ø+‹£‹č`Aø+Fü£‹ė,ƒ~ütƒ>‹t ø+‹£‹č;Aø+Fü£‹ė»DqXé­Zø’’PXéŲ]U‰åV‹vö„‚uéČ]ŠF˜=€’uö„‚"t'‰š-ų“¹¬™÷ł Ą ŠF˜PVčR4[[ė ŠF˜PVčnG[[Vč/7[é‰]U‰åPV‹vWƒ¼ģuø’’Pė69“čt ‹œčƒĆ’Sė„ēP_€= t€= uø’’P뉼苄ģH‰„ģ1ĄPXé8]U‰åPPV‹vW‹~ƒ¼š~1ĄPPPPøū’P’u’5øDPč£ƒÄé]‹ˆ„–‹Eˆ„—‹E‰„˜‹E‰„šVč'[‰FžŠ„—˜‰Fü1ĄPPPP’vž’vü’5øDPč]ƒÄéĀ\U‰åƒģ V‹vWö„‚"t1ĄPėøPFžƒ¼ģt ƒ~žtƒ¼īuøüP鈊„—˜¹V÷ᰉÁĆt”‰^ą‹„˜‰Fš‹„š‰Fī’vī’všøP’vąč$ƒÄ‰Fź‰Vģ‹Fģ Fźuøö’Pé<øPø$‹PøPøt”Pčä#ƒÄ‰Fę‰VčĒFöĒFōĒFņƒ¼š龋„ģ9„š}’“šė’“ģFų~ų}’vųėøPFų1’ĒFā$‹‹Fų’Nų Ą~a‹„ź‰ĆƒĆ‰œź‰ĆŠˆF卄č9„źu‰“ź‹^āŠF划FāG€~å tŠFå˜=€’u¹ƒ~žt³‹„īH‰„īŠFå˜=€’u’Fņ’Fōƒ~žt•ƒ~ņt‰ųHPėWFś‹Fś™RP’vģ’vź’vč’vęčĢLƒÄ ‹Fś™FźVģ‰Fź‰Vģ‹FśFö‹„š)ų‰„š‹„ģ)ų‰„ģƒ¼ģt ƒ~ōuéųžĒ„š’vöXéżZU‰åƒģV‹vWĒ„pĒ„¤€¼ŽuéÜZ‰š-ų“¹¬™÷ł‰Ē ’øDPėøCPFüŠ„œ˜‰FśŠ„˜‰Fų1ĄPPPP’v’vų’vś’vüč.ƒÄʄŽéŽZU‰åƒģ V‹vW‹~ƒ¼¤~1ĄPPPPøū’P’u’5øDPčųƒÄé]Z‹ˆ„œ‹Eˆ„‹E‰„ž‹E‰„¤ʄŽĒ„¦Š„˜¹V÷ᰉÁĆt”‰^ś‹„ž‰Fž‹„¤‰Fü’vü’vžøP’vśč½!ƒÄ‰„ ‰”¢ ” u Ē„¦ö’Ē„¤‹„€V’Š[ƒ}t*Š„˜‰FųŠ„œ˜‰Fö1ĄPPPPøüP’vų’vöøDPčFƒÄé«YU‰åƒģ&V‹vW‹~ĒFŚĒFüĒFžĒFųĒFś’uéK¹‹E ‹U ćŃśŃŲāś%’āˆ„1ɋE ‹U ćŃśŃŲāś%’āˆ„‹E‰„‚ƒ}t‹E‰„„‰š-ų“¹¬™÷ł Ąéõ‰š-ų“¹¬™÷ł’“„’“‚Pč‰EƒÄéŲ¹‹E ‹U ćŃśŃŲāś%’āˆ„‘¹‹E ‹U ćŃśŃŲāś%’āˆ„’¹‹E ‹U ćŃśŃŲāś%’āˆ„“1ɋE ‹U ćŃśŃŲāś%’āˆ„”¹‹E‹UćŃśŃŲāś%’āˆ„•éJŠ„˜™%’ā‰Fō‰VöŠ„˜™%’ā‰Fš‰Vņ¹‹Fō‹VöćŃąŃŅāś Fš Vņ‰Fų‰Vś‹„„™¹ćŃąŃŅāśRP‹„‚™Y[ Į ӉNü‰^žéįŠ„‘˜™%’ā‰Fģ‰VīŠ„’˜™%’ā‰Fč‰VźŠ„“˜™%’ā‰Fä‰Vꊄ”˜™%’ā‰Fą‰VāŠ„•˜™%’ā‰F܉V޹‹Fč‹VźćŃąŃŅāśR¹‹Vģ‹^īćŃāŃÓāśY Š ŁQ¹‹Vä‹^ęćŃāŃÓāśY Š ŁQ1ɋVą‹^āćŃāŃÓāśY РىFų‰Nś¹‹F܋VŽćŃąŃŅāś‰Fü‰VžėĒFŚź’ė»VqXéT’vś’vų’vž’vü’vŚ’u’5øDP覃Äé WU‰åV‹vW‹~‹E‰„Ø1ĄPPPPP’u’5øDPč{ƒÄéąVU‰åPV‹vW‹~ƒ¼šu ƒ¼¤uéĆV‹E‰FžöFžt‰“艓źĒ„ģĒ„īĒ„šʄŒöFžt Ē„¤ʄŽ1ĄPPPPøü’P’u’5øDPčƒÄékVU‰åƒģ‹F‰Fź‹F‰Fģ‹F ‰Fī‹F ‹N‰Fö‰Nų‹F‹N‰Fņ‰NōFčP’vč“R[[é.VU‰åV‹vʄŒøü’PVčū[[‰“艓źĒ„ģĒ„īž¤šrVčA[ƒ¼Øt ’v’“ØčŃ[[éāUU‰åƒģVWøJzPøtPč5R[[ƒ>Jz} ’6JzøÜqP軚[[‹>Jz‹Pz‰Nś’6LzėøJzPč:[‰ĘėøJzPč.[‰Ęė ¾ź’ė»ŅqXéPRĒLzD‹Nś‰Nz‰6PzøJzPWčĢQ[[ėU‰åƒģVW‹~‹E‰Fųƒ~ų|ƒ~ų|øū’Péø÷fų‰ĆĆnz‰Ž‹Fų‰D‹E‰’u ’u 1ĄPøPčOS Ātøź’P鯒u ’u 1ĄPøPčR‰Fņ‰Vō’vō’vņ1ĄPø` PčņT Ą|ø˜’P鬊D˜£bz‹bzŃ拇¢qŃą1É’vō’vņQPč^R‰D‹bzŃ拇¢q™¹zqQ’vō’vņRPčÖR[ʘ‰D ‹bzŃ拇¢qŃą1É’vō’vņQPč>S‹bzŃć™÷æ¢q‰D ‹E‰D‹E‰D‹E‰D|tøź’PéĒFöƒ~ö~éÜ’Fö¹‹Fö™÷ł Ņuq‹bzA»‰Č™÷ū‰bzˆT‹bzŃ拇¢q‰Fś‹FśŃą1É’vō’vņQPč Q‰D‹Fś™¹zqQ’vō’vņRPčR[ʘ‰D ‹FśŃą1É’vō’vņQPčŽR™÷~ś‰D Ēfz‹bzŃ拇®q™’vō’vņRPčµS Ą|éY’ƒ>fztč¤Vči[VčÕ[VčŽ[‰Füƒ~üté4’Včt[‰Füƒ~üuė ƒ~üūté’Ējz øPø“Pčü[[ƒ~üu ƒ|~Ēdzƒ~üuøPėøū’PXé-SU‰åƒģVW‹~ƒ=uøFPėøJPFž‹E‰Fī‹uøV÷e°‰ĆV’vīøPĆt”Sč¦ƒÄ‰Fč‰Vź1ɋFč‹VźćŃśŃŲāś%’‰Fü¹‹Fč‹VźćŃśŃŲāś%’‰Fś¹‹Fč‹VźćŃśŃŲāś%’‰Fų‰š-1ÉÓč%’‰Fö‰š-¹Óč%’‰Fō‹Fź Fču ’vīøųqPčoķ[[1Ą‰ńNčFźƒéPQøPYXZćŃźŃŲāś%’ā‰Fņ‹Fų9Fņt ’vųørPč0ķ[[čmD‰Fš’vžø PčIR[[’vžø Pč=R[[’vüøPč1R[[’vśøPč%R[[’vųøPčR[[’vöøPč R[[’vōøPčR[[’vščD[øPø PčķQ[[é¼QU‰åƒģVWčōC‰Fś‹^‹G‰ĮøÓą‰Ę‰š G£jz‹lz…hzt‹hz jz‰š#lz‰Ē’6jzøņPč˜Q[[‹jz‰lz‰6hz’vśčŸC[ ’téPQ‹bzŃćøP’·Ęqčę[[øJzPøż’Pč™M[[é-QU‰å‹jzįš‹lzāš9Źt’6jzøņPč7Q[[‹jz‰lzéQU‰åPV‹vW€|uVčX[ Ątø’’PéŌ‹D9Du1ĄPéĘøPčź[¹‹D Óą DPčŚ[‹bzŃ拇ŗq÷dPčČ[ƒ>fztø’’PéŽøJzPø’’PčõL[[øPč„[Včż[‰ĒŠD˜%ų= tæ’’ŠD˜‹bzŃćP‹‡ŗq÷dY9Įtæ’’ ’tVč¹[ Ątø’’Pė6 ’u’tėø’’PD ’u!ƒ>Œ©tøPøPčĀ[[øJzPøż’PčuL[[WXéPU‰åƒģV‹vW€|uøž’Péh‹D‰Į‹lzÓśöĀuøž’PéNƒ>Ž©t‹bzŃć’·–qø÷PčéO[[ƒ<uøęPėøÅPFś’vśčĆ[¹‹D Óą DPč³[’tč¬[’t č„[’t čž[ nq˜Pč•[‹bzŃć’·¢qč‡[‹bzŃć’·Šqčy[ø’Pčq[ƒ>fztøž’P黸JzPø’’PčžK[[Vč®[‰Fžƒ~žt’vžéšŠD˜ØuŠD˜ØtĘDŠD˜Øt’tø>rPč“H[[øū’PėlŠD˜Øųtøž’Pė^ŠD˜PŠD˜Y Č Ątøž’PėHŠD˜+DŃą‹bzŃć÷§¢q‰ĒŠD˜+D ‹bzŃć÷§¢qų‰ĒŠD˜+D ų‰Ēø÷ē9Dtøž’Pė1ĄPXéƒNU‰åƒģ V‹vW1’ƒ’|é€ĒFöĒFüƒ~üd}/ĒFśƒ~ś }’FśėõFųPøōPčN[[öFų€tĒFöė’Füė˃~öuøż’Pė?öFųu1ĄPė4öFų@uøż’Pė(FųPøõPč=N[[‹Fų%’\ūˆGéx’Ēfzøż’PXéąMU‰åPPVƒ>fztéŃM¾d‰šN Ą~*FüPøōPč÷M[[füĄ~ü€tėŽ’vøõPčĶM[[éMĒfzé”MU‰åPV‹vWVčŹū[øPčž’[’tč—’[ƒ>fztø’’PėoøJzPø’’PčÅI[[øPču’[VčĶž[‰ĒĒD’’ ’uŠD˜%ų= u€|tĒfzĘDøü’Pė(ĘDƒ>Œ©tøPøPč³[[øJzPøż’PčfI[[1ĄPXéöLU‰åƒģ VWĒfzč(?‰FųĒlzĒjz1ĄPøņPčųL[[ø PøņPčėL[[’vųčž>[øJzPø’’PčI[[¾nzĘDøP軞[Včž[‰FüŠD0ä‰FśøPč£ž[øßP蛾[øP蓾[1’ƒ’}ø÷ē‰ĆʇˆzGėģéYLU‰åĒLzĒNzū’‹F™£Tz‰Vz‹N‰XzøJzPøż’Pč™H[[é*LU‰åøJzPøū’Pč|H[[éLU‰åƒģVWč*øĘ~PøtPčfH[[ƒ>Ę~}’6Ę~øtrPč¤E[[ėŻ‹>Ę~‹Ģ~‰Nś’6Č~ėøĘ~Pč.[‰Ęė ¾ź’ė»jrXé‹HĒČ~D‹Nś‰Ź~‰6Ģ~øĘ~PWčH[[ė—U‰åƒģ VW‹~ĒFų‹E‰Fśƒ~ś|ƒ~ś |øū’Pé@}tøź’Pé2ø÷fś‰Ć !"#$%&'()*+,-.Ćą~‰Ž¹‹Fś™÷ł‰D‹Ž~9L|øū’Pé‹E‰’u ’u 1ĄPøPčaI Ātøź’Péč’u ’u 1ĄPøPč$H‰Fō‰Vöø1ÉFōNöQP’t’tčžJ Ą~ø˜’P鱋Fō‹NöDL‰Fō‰Nöø÷d 1É’vö’vōQPčeH‰D’vö’vō1ĄPøPčqI‰Dø÷d 1É’vö’vōQPč[IRP1ĄPøPč0H‰D ‹E‰D‹E‰D‹E‰Dƒ~ų,’Fųƒ~ų|øū’Pė-ƒ>hrtčåVč#[Včq[‰Füƒ~üu΃~üuøPėøū’PXé4JU‰åƒģVW‹~ƒ=uøGPėøKPFž‹E‰Fī‹uøV÷e°‰ĆV’vīøPĆt”Sč­ƒÄ‰Fč‰Vź‹Fč%’‰Fü¹‹Fč‹VźćŃśŃŲāś%’‰Fś¹‹Fč‹VźćŃśŃŲāś%’‰Fų‰š-%’‰Fö‰š-¹Óč%’‰Fō‹Fź Fču ’vrPč‡ä[[1Ą‰ńNčFźƒéPQøPYXZćŃźŃŲāś%’ā‰Fņ‹Fų9Fņt ’vųøĀrPčHä[[č…;‰Fš’vžø PčaI[[’vžø PčUI[[’vüøPčII[[’vśøPč=I[[’vųø‚Pč1I[[’vöøPč%I[[’vōøPčI[[’všč,;[éįHU‰åV‹vƒ<uøPėø Pŗ~¹‹DÓą D £¼~‹D%¹Óč D£¾~‹D%’£Ą~ĒĀ~ĒÄ~øPčį[ Ątø’’PėCøPø Pč¢H[[øĘ~Pø’’PčŠD[[Vč)[ Ąu1ĄPėŠD˜%?=učėĒhrø’’PXé;HU‰åPPV‹vWFüPø PčaH[[1ĄPø#PčEH[[÷Füu1ĄPėiĒŗ~¹‹DÓą£¼~1ĄPčI[ Ątø’’PėG1’ƒ’}/øPčķ[ Ątø’’Pė.FüPø PčH[[‹Fü%’\ūˆGė̊D˜Ø?tø’’Pė1ĄPXéžGU‰åƒ>hrté“GøPčœ[ Ąu ’vø Pč§G[[éxGU‰åPPVĒFž’vžø!PčG[[1öž'}FžPø!PčˆG[[öFžuėFėā÷FžtøärPčź@[ø’’Pė ĒhrčPXéGU‰åPPVWĒŗ~ Ǽ~1ĄPčX[ Ątø’’Péuč79‰Ē¹‹°zÓśRčG’[‹°zį’Qč:’[’6²zč2’[¹‹“zÓśRč$’[‹“zį’Qč’[¹‹¶zÓśRč ’[‹¶zį’Qčüž[’6øzčōž[WčŌ8[č  Ąt Ēhrø’’Péöƒ>Ž~é–Ǽ~ 1ĄPč·[ Ątø’’PéŌč–8‰Ē¹‹¦zÓśR覞[‹¦zį’Q虾[’6Øz葾[¹‹ŖzÓśR胞[‹Ŗzį’Qčvž[¹‹¬zÓśRčhž[‹¬zį’Qč[ž[’6®zčSž[Wč38[čj Ąt Ēhrø’’PėV1ö96Ž~~KĒŗ~¹‰šÓࣼ~ĒÄ~øPč[ Ątø’’Pė&øĘ~Pø’’PčB[[č^ż Ąt Ēhrø’’PėFėÆ1ĄPXé~EU‰åPøPč…[ ĄuFžPø PčŸE[[÷Fžtø’’Pė1ĄPėéNEXéJEU‰åPĒŗ~ 1ĄPč[ Ąu?øPč>[ Ąu3FžPø PčXE[[øPč%[ ĄuFžPø Pč?E[[÷FžtĒhrø’’éšDU‰åPPVW‹~1öFüPø!PčE[[!~ü‰šF='}ƒ~ütāž'| Ēhrø’’Pė1ĄPXé«DU‰åƒģVW1ö’vø#PčĆD[[’vø"Pč·D[[1öž,}FüPø!Pč²D[[÷FütėFėįž,u Ēhrø’’Pėrč–6‰Ē1öƒž}^FüPø!Pč{D[[÷Fütė÷FüućĒhrWčj6[ø’’Pė8‹Fü%= tĒhrWčN6[ø’’Pė‰óŃć’·ŗ~ø PčD[[FėWč/6[1ĄPXéąCU‰åƒģVWFžPø"Pč D[[¹‹FžÓč%‰Fų‹Fž%‰Fö‹>Œw‹6Žw1Ą¹‰ņćŃāŃŠāś1ÉśȉVņ‰Fō1ĄPø@PPøŗzPøPø ¢Pč4 ƒÄRP’vō’vņčń4ƒÄ ‹^ų¹Óćø°zPĆŗzSč^[[‹^ö¹Óćø¦zPĆŗzSčH[[1ĄPøPPøŗzPøPø ¢Pčą ƒÄRP1ĄPøuPčœ4ƒÄ Šŗz0ķ‰Ž~ĒFžƒ~žsø÷fž‰Ć‹²z‰ģ~’FžėåDŽdž‹„‹†‰ī~‰š~”²z™RP”°z™čÖ@RPø1ŅčĢ@£ņ~‰ō~ĒFžƒ~ž sø÷fž‰Ć‹Øz‰ģ~’Fžė唨z™RP”¦z™č˜@RPø1ŅčŽ@£ˆ‰Šƒ>Ž~~ čLū ĄtĒŽ~ĒFž‹Ž~9NžsVø÷fž£Ź~ĒŠ~ĒŅ~ĒĪ~ĒŲ~ŗzĒĢ~ś’ĒČ~øĘ~Pč{ö[=t ’vžøürPč Ż[[ø÷fžPč7[’Fžė”é÷AU‰åV‹vW‹~‹‰ŠE0ä‰D‹E‰D‹E‰DŠE0ä‰DéÉAU‰åƒģ VW1öƒž|éĀĒFöĒFų‹Fš¹÷į‰ĆĆą~‰^ś¹‰šÓąĘ‰Ē‰ū’·¼z’·ŗz’vś[XY‰G‰O‹^ś’w’w1ĄPøPč˜? ĀtG‹^ś‹G‹O‰Fö‰Nų’w’w1ĄPøPčS>ƒŅŃąŃŅ‹^ś‰G‰W‹^ś‹G‹O+FöNų‰Fö‰Nų‰ų‰Ć‹‡ŗz‹¼z+FöNų‹^ś‰G‰OFé6’‹F@¹÷į‰ĆĆą~Sč[éŽ@U‰åPPV‹vWĒFžƒ~ž|éÆ1’ƒ’|韸÷ē‰Ćó‹G Gu2‰ų@¹÷į‰Ćó‹G Gt‰ų@¹÷į‰Ćóø÷ēS‰ĆóSči[[ėXø÷ē‰Ćó‰ų@¹÷į’w’wV[Ć’w’wč_@ Ą~0‰ų@¹÷į‰Ćó‹G Gt‰ų@¹÷į‰Ćóø÷ēS‰ĆóSč[[GéY’’FžéH’é@U‰åƒģV‹vW‹~‰ū¹čš=^ā¹č ?‰ó¹čß=‰ū¹čś>^ā¹čĪ=‰ó¹čé>éŃ?U‰åPVø€PøtPč(<[[’6€é~ø€Pč’[‰Ęéxø€Pč_[‰Ęėlø€Pčq[‰Ęė`ø€PčÉ[‰ĘėTø€PčÕ[‰ĘėHø€Pč[‰Ęė<ø€Pča[‰Ęė0ø€Pčh[‰Ęė$ø€Pč,[‰Ęėø€PčN[‰Ęė ¾÷’ė»&sXé<‰6€ø€P’6€č†;[[éS’U‰åƒģVW‹^‹G‰Fų‹G‰Fö‹G‰Fōƒ~ų|ƒ~ų} ƒ~ö|ƒ~ö|øõ’P隸V÷fö°‰ĆĆt”‰ŽøV÷fų°‰ĆĆt”‰ßøV÷fö°‰ĆĆt”‰^śĒFņV‹Fņ’Nņ Ąt‰ūG1ĄŠP‹^śXˆ’FśėćLdļ’ĒDT‹Fō‰D4ĒĒD6ĒD8ĒD:ĒD<ĒD>ĒD@ĒDBĒDD1ĄPXéE>U‰åƒģVW‹^‹‰Fč‹^‹G‰Fę‹G ‰Fāƒ~ęų|ƒ~ę|øõ’PéčøV÷f갉ƁĆt”‰ŽøV÷f谉ƁĆt”‰ßĒFź1Ą‹Nź‰Nš‰Fņ‹Fā‰FīD ‰Fģ’vź’vīøPWčƒÄ‰Fų‰Vś‹Fś Fųu ø€PøBsPč¬Ų[[’vź’vģøPøx£PčRƒÄ‰Fō‰Vö‹Fö Fōu ø€Pø`sPč}Ų[[’vņ’vš’vö’vō’vś’vųčź.ƒÄ ‹D"‰D‹D(‰D‹D(‰D‹D(‰D‹D‰Fädż’ƒ~ät ƒ|uVčī [1ĄPXé'=U‰åƒģVW‹^‹‹G ‰Fś ’|ƒ’|øõ’Pė=øV÷簉ÁĆt”‰Ž‹Fś‰DĒDĒDFĒDHd÷’uVč“ [’vśWčé4[[1ĄPXéƋL@D6L8E>M@‰E>‰M@‹DB‹LDD:L<EBMD‰EB‰MDĒDFĒDHƒ|uVč[ [1ĄP’vōč:4[[öDtTæt”’„©sKƒ}Juė>9uJu‹DL‰EJė6‹EJ‰Fś‹^ś‹GL‰Fųƒ~ųt9vųu‹^ų’wL‹^śX‰GLė‹Fų‰FśėՃĒVėÆöDt’Ø©ĒD1ĄPXé«;U‰åPPVW‹^‹ ’|ƒ’|øõ’PėøV÷簉ÁĆt”‰Ž‹L‰€1ĄPXéq;U‰åPPVW‹~‹E‰Füƒ~ü|ƒ~ü|øõ’PėDøV÷fü°‰ĆĆt”‰Ž‹D6‹L8‰E‰M‹D:‹L<‰E‰M ‹D>‹L@‰E ‰M‹DB‹LD‰E‰M1ĄPXé;U‰åø€Pø~sPčśÕ[[éö:U‰åƒģVW‹^‹G‰Fī‹G‰Fģ‹G‰Fźƒ~ī|ƒ~ī|øõ’P霸V÷fÁĆt”‰ŽĒFō €‹D‰Fš’vģVø €Pčķ,ƒÄæ‹Fš)ų‰FšW’vōøPøx£Pč:ƒÄ‰Fś‰VüW’všøPVč%ƒÄ‰Fö‰Vų‹Fų Föu ø€Pø€sPčPÕ[[1ĄPW’vų’vö’vü’vśčæ+ƒÄ ‹Fš‰D‹Fź‰D1ĄPXé$:U‰åPPVW‹^‹w‹ƒž|ƒž|øõ’Pė WVčź[[1ĄPXéö9U‰åƒģV‹vW‹|‹D‰FüŠD˜‰FśŠD˜‰Fų‹D ‰Fö‹D‰Fō‹D‹L‰Fč‰Nꁒüu‹D ‹L ‰Fš‰Nņė$øV÷簉Òvč’vö’vśĆt”SčGƒÄ‰Fš‰Vņ~üüu‹D‹L‰Fģ‰Nīė%øV÷fü°‰Ć’vč’vō’vųĆt”Sč ƒÄ‰Fģ‰Vī‹Fņ Fšt‹Fī Fģuøņ’Pė’vź’vč’vī’vģ’vņ’všč¤*ƒÄ 1ĄPXé9U‰åPPVWøV÷f°‰ĆĆt”‰ŽöDu’Ø©ƒ|uVč[L‹FH‰ĮøÓą DT‰DTæ$¤öEtƒ}PttéĄ8čéŗ8U‰åPV¾$¤ž„©scöDtXĒ€@‰š-t”¹V™÷ł-£€‹LT‰€’Ø©ø€P1ĄPø’’Pč„ƒÄ Ąt ø€PøœsPčeÓ[[ĒDTdļ’uVč[éO8ƒĘVė—éG8U‰åƒģ V‹vW‹~ƒ~ w1ĄPPéĮ‹F F-¹Óč‰Fž ’t‹D*D&9FžsøPėøP_¹‹FÓčPø÷ē\ Ćø÷ē’w\ ĆXY9Įr1ĄPPėhø÷ē\ Ć1Ą‹O‰Nś‰Fü¹‹Fś‹VüćŃąŃŅāś‰Fś‰Vü1Ą‹N‰Nö‰Fųø÷ē\ ù‹Óą1ɋVö‹^ų)ĀˉVö‰^ų‹Fö‹NųFśNüQPXZée7U‰åƒģVW‹~ƒ>Œ©tƒ’ūu ø Pø<Pčo7[[ø PPče7[[ƒ>Ž©tƒ’śu ø Pø PčL7[[‰ų÷Ų‰ĮøÓą‰Fų’vWø’’Pč4ƒÄ Ąt*‹b”‰Nśƒ’żu’®©ė'‹Fų b”‰ų÷Ų‰ĆŃć‹F‰‡P”ė‹Fų÷Š#b”£b”‰Fśƒ~śtF¾ƒž>‰ń‹FśÓųØt0‰óŃ批÷Ų’·P”Pø’’PčǃĉFüƒ~üu‰ńøÓą÷Š#b”£b”F뽃>j”tƒ>¬©}>¬©üuč¢é]6U‰åPPVWøV÷f°‰ĆĆt”‰Žƒ~ų| ƒ~| ƒ~ttĒž’é,6ƒ~t ƒ~|Ēų’é6÷Ft$’v ’v’vč5ƒÄ‰Ēƒ~t ’t‰< ’téī5÷Ft’v ’v’včXƒÄ‰Ē‰<éŃ5U‰åƒģVWƒ~|ƒ~t ƒ~tø’’Pé)øV÷f°‰ĆĆt”‰ßøV÷f°‰ĆĆt”‰ŽöDtø’’P鶋E*‰Fņ‹F‰Fų¹‹FųÓč‰Fö‹Fų-Óč‰Fō‹Fö9Fōr ‹Fō+E&9Fņwøö’Pé»öDt#‹EJ‰Fśƒ~śt9vśuø›’P靋^ś‹GL‰FśėćöDt7öDu1ƒ|Ptt‹F9DPu#’tN’t(’v’u(’vč 'ƒÄ d÷’uYVčž[ėRƒ~’uøü’PėI‹F‰ENƒ}uWčō[M‹DJ‰Fśƒ~śu‰|Jė‹^śƒLt ‹^ś‹GL‰Fśėģ‹^ś‰LĒEL1ĄPXéƒ4U‰åƒģVWøV÷f°‰ĆĆt”‰ß‹uJöEug ötc‰š-t”¹V™÷ł-‰Fųƒ~tt‹Fų9Fu<’v’u(’tN’t(’vųčI&ƒÄ dū’uVčŻ[9uJu‹DL‰EJė ‹^ś‹DL‰GL1ĄPė@‰vś‹tL뙋F‰EP‹F‰ENƒ}uWč[Mƒ>Ø©~ƒ~u ƒ~tučūč1ĄPXé¾3U‰åPVƒ>j”t1öėƒ>l”t¾ė¾‹¬©‰Ŗ©‰óŃヿj”t4‰óŃ拇j”-t”¹V™÷ł-£¬©‰óŃ拏j”‰r”ƒ>¬©|‹r”‰p”ėǬ©üĒr”Ī£‹r”‰p”éB3U‰åƒģV‹vWčv%‰Fś‰š-t”¹V™÷ł-‰Füƒ~ü}1ĄPėƒ~ü}øPėøP_‰ūŃヿj”u ‰ūŃ扷j”ė ‰ūŃ拟d”‰wR‰ūŃ扷d”ĒDR’vśč%[éĢ2U‰åƒģVW‹~č%‰Fų‰ų-t”¹V™÷ł-‰Füƒ~ü}1ĄPėƒ~ü}øPėøPFś‹^śŃć‹·j” öu ’vųčĄ$[éu29÷u‹^śŃć‹DR‰‡j”9>r”u8螾ė39|Rt‹tR öuō’vųč$[éD2‹\R‹GR‰DRƒ|Rt‹tRėõ‹^śŃ扷d”’vųčh$[é2U‰åPVčX$‰Ęƒ>n”uVčO$[é2‹h”‹n”‰OR‹n”‰h”‹n”‹OR‰n”‹h”ĒGRčžVč$[éÓ1U‰åPVčPø>€PøtPč&.[[‹6@€Vė-ø>€PčG[ė*č"ė%ø>€PčF[ėčoė’6@€ø¼sPčŽĢ[[ė»®sXéO.Ē@€ƒžt­ø>€P’6>€čĪ-[[ėžU‰åƒģ VW‹^‹‹G ‹O ‰Fų‰Nś‹G‰FöøV÷簉ÁĆt”‰Ž‹DH DFu1ĄPPė‹DF‹LH+°©²©QP1ĄPø<Pč$.RPH€J€‹Fś Fųu1ĄPPė‹Fų‹Nś°©²©QPDFDH ’}‰ų÷Ų‰ĆŃć‹Fö‰‡,€ĒX€’’ĒZ€’¾t”ž„©s0‹DH DFt#’tH’tF’6Z€’6X€č«0 Ą}‹LF‹TH‰X€‰Z€ƒĘVėŹé‡0U‰åĒ@€’6²©’6°©1ĄPø<Pč€-\€^€£H€‰J€é\0U‰å‹^’w ’w ’6²©’6°©1ĄPø<PčP-Y[)ĮӉ\€‰^€é-0U‰åƒģVW‹>®©‰ų@™°©²©£°©‰²©‹®©)ł‰®©’6Z€’6X€’6²©’6°©čł/ Ą~é§ĒX€’’ĒZ€’¾t”ž„©r鏋DH DFué~’tH’tF’6²©’6°©č¾/ Ą>‰š-t”¹V™÷ł-‰Fśƒ~ś|øP’vśčzö[[ė‹Fś÷Ų‰ĆŃ拇,€’ŠĒDFĒDH‹DH DFt#’tH’tF’6Z€’6X€čc/ Ą}‹LF‹TH‰X€‰Z€ƒĘVéh’č[ƒ>t ‹>°©÷Ēu謒¬su>‹V€9p”učśüǬs‹p”‰V€ƒ>ųtƒ>ś~ ‹ō9öuč…‹ö‰ōéć.U‰åPVƒ>Ŗ©|‹p”‹G6‹O8ƒŃ‰G6‰O8ėB‹p”‹G:‹O<ƒŃ‰G:‰O<øV÷&Ŗ©°‰ĆĆt”‰Ž>Ŗ©üt‹D:‹L<ƒŃ‰D:‰L<é{.U‰åƒģVW¾®M‰š%’‰Ē¹‰šÓč%’‰Fśø6PøCPč|.[[Wø@Pčr.[[’vśø@Pčf.[[é5.U‰åƒģVWčØ*1ÉQ¹ZćŃąŃŅāś£x€‰z€‹²k°kQ¹XÓą1É£h€‰j€Ēd€Ēf€ ø€€PøtPčL*[[ƒ>€€} ’6€€øäsPčŅČ[[‹>€€‹†€‰Nś’6‚€ė)ø€€PčF[‰Ęė$ø€€Pč:[‰Ęėø€€Pčė[‰Ęė ¾ź’ė»ŲsXé[*Ē‚€D‹Nś‰„€‰6†€ø€€PWč×)[[ėU‰åƒģV‹vW‹| ’|ƒ’|øś’P雃’uƒ|u1ĄP銒t鄃| }øś’Péw‰ūŃćŃ拇p€‹r€D L ‰Fō‰Nö‰ūŃćŃć’vö’vō’·b€’·`€č- Ą| ’uø˜’Pé71ĄPé1‹D‰Fü‹Fü™FōVö‰ūŃćŃćRP’·b€’·`€čŠ, Ą~‰ūŃćŃ拇`€‹b€+FōNö‰FüøV÷d°‰ĆĆt”‰^ī’vü’tøP’vīčCōƒÄ‰Fš‰Vņ‹Fņ Fšuøö’P鹉ūŃćŃć’·r€’·p€øP1ĄPčc, Ą};ƒ|u‹Fü™RP’vņ’vš’vö’vōčæƒÄ éy‹Fü™RP’vö’vō’vņ’všč¤ƒÄ ė_÷Füt ø€PøtPč Ē[[‹FüŃų‰Fśƒ|u’vś’vņ’vš’vö’vōč ƒÄ ‰Fųė’vś’vö’vō’vņ’vščöƒÄ ‰Fųƒ~ųtĒFü’’’vüXé“+U‰åPV‹vW‹| ’tøś’Pė9‰ūŃćŃć‹D ‹L ‰‡p€‰r€‹D™RPø1Ņč‘)D T ‰ūŃćŃ扇`€‰—b€1ĄPXéa+U‰åƒģ VWƒ>Œ©tFüPøhPčƒ+[[čÆė6FüPø`Pčq+[[FžPøaPčd+[[‹Fž €PøaPčD+[[’vžøaPč8+[[ƒ> ‹u,ƒ>˜€t‹ ‹9Nüu‹‹‰NüĒ˜€ė 1Ą~üąu@£˜€‹Fü-€‰Ę ö~+ƒžt`ƒž*t[ƒž6tVƒž8tQƒž:tLƒžEtGø PPčŃ*[[é *‹zšį ‰ĻŠŒšˆN÷ ’u%ƒ>‹tƒ~üu€~÷uĘ„šø PPč—*[[éf*ƒ>‹tƒ>‹t ƒ~üSučł‹ ‰Ī9~;ö‰š‰Ć‹Füˆ‡ ‰š‰Ćʇ ’ Ē¤€Ē“€ ø¢€Pøų’Pč§ņ[[ė ø PPč,*[[éū)U‰åƒģ V‹vW¹‹„ ‹”¢ćŃśŃŲāś%’’ā‰Fś‹„ ‹Œ¢%į‰Ē‰~öĒFžƒ¼¤~*€¼Œu#W’vśč[[ˆFżŠFż˜PVčJ[[G‹„¤H‰„¤ėĻVč([‰ų+Fö‰Fž‹Fž™„ ”¢‰„ ‰”¢‹Fž„¦ƒ¼¤u ’“¦VčUĪ[[éM)U‰åV‹vŠ„v˜ Ą~ŠF˜PVč|[[é0)ŠF˜Pé'é%)VčĆ[ø3Pč’ [é)‹„ˆHP’“†VčōƒÄé)‹„†@’“ˆPVčąƒÄéķ(‹„†@’“ˆPVčĢƒÄéŁ(‹„†H’“ˆPVčøƒÄéÅ(ö„‚t ø PVčh’[[ƒ¼ˆu 1ĄPVč¬[[ė ‹„ˆ@‰„ˆ’“ˆ’“†VčzƒÄé‡(’“ˆ1ĄPVčiƒÄév(‹„‚% = uø PVč’[[ö„†uļéV(éS(Včń[ʄvéF(ƒ¼†P|é<(¼p@uVčŅ[‹„~ŠN0ķ ȋŒp‰ŹB‰”p‰ĖŃ捌šˉ‹„†@‰„†é(»0tXéź$U‰åƒģV‹vWVč[ĒFśƒ>‹teƒ~u1ø€P1ĄPø P’6š€čeƒÄ‹„rFś¹PQP’6š€1ĄPč²ƒÄéFø€PøžPøžP’6š€čWƒÄøPP’“r’6š€1ĄPč„ƒÄéƒ>†©u鱃~uA‹„r@‰Ē9> €}!‹„r ¹€Q1ÉQP’6š€čćƒÄĒ„r끄r ‹„rFś‰ĒėF‹„r- ‰Ē ’}*‹ €I‹„ržŗ€RQP’6š€čŃċ €éŸ‰Œrė ‹„r- ‰„r‹¼røPPW’6š€1ĄPčŲƒÄ‹„rŃųPø Pčę[[ė]ƒ~uø Pėø`’PFž‹„rFž# €‰„rƒ~u‹„rFś# €‰Ē닼røPPW’6š€1ĄPčyƒÄ‹„rŃųPø Pč‡[[é]&U‰åV‹vƒ¼puéM&’“p’“t’6š€„šPč>ƒÄ‹„pŃą„t‹„tŃųPøPčB[[Ē„pé&U‰åV‹vW‹~V覒[ƒ~|ƒ~P} ’|ƒ’|éź%‹F‰„†‰¼ˆ‰ųŃą¹P÷į„r‹NŃįĮ‰ŒtŃłQøPčā[[éø%U‰åV‹vŠ„v˜PéµĘ„w„x‰„|Ē„z‹„z‰„xŠF˜Pė%ŠFˆ„wʄv鋊F˜PVč…[[é}ʄvéu»\tXéK"ŠF˜=0|+ŠF˜=9"„|9„|sR‹œ|ø ÷'PŠF˜-0YĮ‰ė:€~;uƒ„|„|9„|s%‹œ|ĒėŠF˜PVč[[ėʄvė»htXé¹!éź$U‰åƒģV‹vWVč}ž[€¼wu<ŠF˜Pė.ƒ¼ˆu øPVčĆü[[ė ‹„ˆH‰„ˆ’“ˆ’“†V葾ƒÄé\»rtXéc!€¼w[téK‹„x‰Fų‹„~‰FöŠF˜Pé.ƒ~ųuøPė’vų_‹„ˆ)ųP’“†VčEžƒÄéƒ~ųuøPė’vų_‹„ˆųP’“†Vč žƒÄéėƒ~ųuøPė’vų_‹„†ų’“ˆPVčūżƒÄéĘƒ~ųuøPė’vų_‹„†)ų’“ˆPVčÖżƒÄ锸Pƒ¼x~øPė’“xXY9Į~øPėƒ¼x~øPė’“xXHPøPƒ¼zP~øPPė’“zXY9Į~øPėƒ¼zP~øPPė’“zXHPVčbżƒÄé-ƒ~ųté$‹„ˆ@-÷Ų¹P÷įP+„†Ńą‰Ē‹„t‰Fś¹‰ų™÷łP’vś’6š€1ĄPčõƒÄéēƒ~ųtéŽøP+„†Ńą‰Ē¹‰ų™÷łP’“t’6š€1ĄPčƒÄé¶‹~ų ’æø+„ˆ9ų} ø+„ˆ‰Ēø)ų¹P÷įŃą„r-‰Fō‹„rž‰Fņø)ų+„ˆ÷į‰Fš’vš’vņ’vō’6š€č;ƒÄøP÷¤ˆŃą„r‰FņøP÷ēP’vņ’6š€1ĄPč<ƒÄé.‹~ų ’æø+„ˆ9ų} ø+„ˆ‰Ē‹„ˆų¹P÷įŃą„r‰FōøP÷¤ˆŃą„r‰Fņø)ų+„ˆ÷į‰Fš’vš’vņ’vō’6š€č.ƒÄø)ų¹P÷įŃą„r‰FņøP÷ēP’vņ’6š€1ĄPč­ƒÄ韋~ų ’æøP+„†9ų} øP+„†‰ĒøP÷¤ˆ„†ųŃą‰FōøP÷¤ˆ„†Ńą‰FņøP+„†)ų‰Fš‹Fō„r‰Fō‹Fņ„r‰Fņ’vš’vņ’vō’6š€čƒÄ‹FšŃąFņWP’6š€1ĄPč_ƒÄé‹~ų ’æøP+„†9ų} øP+„†‰ĒøP÷¤ˆP)ųŃą-‰FōøP÷¤ˆŃąž‰FņøP+„†)ų‰Fš‹Fō„r‰Fō‹Fņ„r‰Fņ’vš’vņ’vō’6š€č¦ƒÄøP÷¤ˆ„†Ńą‰Fņ‹Fņ„r‰FņW’vņ’6š€1ĄPč½ƒÄép’vųé\ƒ>ˆ©t‹Fö%’𠉄~éSŒ~éJƒ>ˆ©t‹Fö%’𠉄~é3‹Fö%‰‰„~é&ƒ>ˆ©t‹Fö%’𠉄~遌~€éƒ>ˆ©t$‹Fö%¹Óą‹NöįšPQ¹XÓčY ȉ„~éŪ÷Föpu‹Fö%ˆ p‰„~éċFö%ˆ ‰„~铃~ų|Hƒ~ų%B‹FųŃą-<‰Ć¹‹‡ tÓą‹Nöį’š ȉ„~‹FųŃą-<‰Ć¹‹‡ tÓą‹tį’š Č£tėfƒ~ų(|Hƒ~ų/B‹FųŃą-P‰Ć¹ ‹‡ tÓą‹Nöį’ ȉ„~‹FųŃą-P‰Ć¹ ‹‡ tÓą‹tį’ Č£tė‹t‰Œ~ė»ztX黎tXé2ʄvé9U‰åPVW‹~ƒ~ vF‹œ€Ńł9N s’v ė‹œ€ŃłQ^V’v’vWč ƒÄ ’t‰óŃćū‰ß‰šŃąF‰F‹F )š‰F ė“éįU‰åƒģVW‹~ ƒ>ˆ©t ƒ>†©uøPė1ĄPFśƒ’vTƒ~śt č8‰Fü’vüčģ[‹œ€Ńł9łvWė‹œ€ŃłQ^V’v’v’vč"ƒÄ‰šŃąF‰F‰šŃąF‰F‰ų)š‰Ēė§é`U‰åƒģVW‹~ ƒ>ˆ©t ƒ>†©uøPė1ĄPFśƒ’vXƒ~śt č·‰Fü’vüčk[‹œ€Ńł9łvWė‹œ€ŃłQ^V’v’v’včŃĉšŃą+F÷Ų‰F‰šŃą+F÷Ų‰F‰ų)š‰Ēė£éŪU‰åøž€’vPčö[[¹‹FÓų%’¹ž€PQčŻ[[‹F@¹ž€PQčĖ[[‹F%’¹ž€PQč·[[éˆU‰åƒģVƒ>Āttév赉Ƹ¶PøCPč‘[[‹F%’PøBPč[[¹‹FÓų%’PøBPčl[[FśPøaPčo[[‹Fś PøaPčO[[ĒĀtVč^[ĒFäĒFęų’ĒFģĒFīĒFšUNFāPøż’Pč^[[éīU‰åPPVč'‰ĘFüPøaPč[[‹Fü%ü’PøaPčó[[ĒĀtVč[éøU‰åƒģ VWƒ>Ž©u ƒ>Œ©uéž¹‹‹Óā‹‹Ńį Ź‰Vüƒ>Œ©t ¾hĒFž°ėĒFž€¾`øķPVč•[[FśPVč›[[1’9~ž~Gėų’vüVčx[[FśPVč~[[é=U‰åPVNjNjøPøÄPčM[[øPøÅPč@[[¾ų“ž¤šsH‰“艓źĒ„‚ Ē„€GAʄĒ„~ʄʄ@ʄ‘ʄ’ʄ“ʄ”ʄ•Ę¬벃>ˆ©tĒš€øĒ €’?Ēž€ŠĒœ€ėĒš€°Ē €’Ēž€°Ēœ€pƒ>†©t Ē €’?Ēœ€@ǐōøPø P艿[[1ĄPø Pč}ż[[øP1ĄPøų“Pč6õƒÄƒ>Œ©t 脾Ē‹’6„©ė)Ē ‹ė(Ē ‹čpėĒ ‹čėĒ ‹čŒė»ÄtXéšéżU‰åPV1öƒžis3‰ó1ĄŠ‡|oP‰óXˆ‡Ōm‰ó1ĄŠ‡oP‰óXˆ‡jm‰ó1ĄŠ‡ęoP‰óXˆ‡ąyFėČĒ ‹5Ē‹WéÆU‰åPV1öƒžis#‰ó1ĄŠ‡ØnP‰óXˆ‡Ōm‰ó1ĄŠ‡>nP‰óXˆ‡jmFėŲé}U‰åPV1öƒžis#‰ó1ĄŠ‡ŗpP‰óXˆ‡Ōm‰ó1ĄŠ‡PpP‰óXˆ‡jmFėŲéKU‰åŠF˜Pøų“Pčīš[[é8U‰å€~;učw€~‹t øŲtPč™[ėøütPč[€~Cuƒ>‹t ø Pøų“Pč‘Ć[[éŗU‰åƒģ V‹vWčķ ‰Fśø÷ę-‰ĆĆŗ€‰ß‹NžQPčĘ[[‹Fž%=uėv‹Fž%‰Fü’vüėaVčn[ėĻVč[ėČø÷ę-‰Ć‹‡ŗ€NųQPč‚[[’vųøHuPčó[[럸÷ę-‰Ć‹‡ŗ€NųQPčY[[’vųøfuPčŹ[[éu’»"uXéŅ’vśčF [éūU‰åƒģVWø÷f-‰Ć‹æŗ€1ĄųNžQPč[[‹ ‰Ī9~?ö‰š‰Ć‹Fžˆ‡ ‰š‰Ć‹Fˆ‡ ’ ƒ> }ø PPčÅ[[’éčė ø PPčÆ[[é~U‰åǁƒ> uémĒށĒī øÜPøų’Pčļą[[éQU‰åƒģVWƒ> uuĒ uø PPč^[[é-ø÷f-‰ĆĆŗ€‰Ž‹NžQPčK[[öFž u ø PPč+[[éśƒ|~Vč[ø PPč[[éāø¬÷f‰ĆĆų“‰ßĒDD‰Dƒ½¤~Wč’[ø PPčį[[é°€½Žu+ĒʁĒց ‹N‰ȁʅŽ’‹øÄPøų’Pčą[[ė ø PPč¢[[éqU‰åPV‹vƒ|~‹\ŠˆF’˜P’4č€[[’D‹DH‰DéFU‰åPVč€ ‰Ę’vč [Včw [é-U‰åƒģV‹vW€¼Œt鉚-ų“¹¬™÷ł‰Füø÷fü-‰ĆĆŗ€‰ß…ų‰Fų¹‹„ ‹”¢ćŃśŃŲāś%’’ā‰Fö‹„ ‹Œ¢%į‰Fō‹Fō‰Fņƒ¼¤~Z‹]]9^ųvO’vō’vöč‰ [[ˆFū’Fō‹„¤H‰„¤ŠFū˜= }ŠFū˜PWVčĮƒÄ뼋]]ŠFūˆ‹E@‰E‹„†@‰„†ėŸ‹Fō+Fņ‰Fž‹Fž„¦‹Fž™„ ”¢‰„ ‰”¢ƒ}u ĒEWč·ž[é$U‰åƒģVW‹~čY‰Fü‰ų-ų“¹¬™÷ł‰Fžø÷fž-‰ĆĆŗ€‰Ž‹\\„9ĆuéćŠF˜PVWčƒÄƒ|u ĒDVčVž[’vüč[é¼U‰åƒģV‹vW‹~‹„‚‰Fž‹]]‰^ųŠF˜P鎋„†-‰„†é‡Ē„†’’é~öFžuéu‹^ųĘ ’Fų‹E@‰EĒ„†’’ė]¹‹„†™÷łƒź÷ډVü‹Fü‰Fś‹Fž% = u%‹Fś’Nś Ąt ‹^ųĘ ’Fųėė‹FüE‹Fü„†é‹FüH„†‰„†ė»6uXéĪ‹^ųŠFˆ‹E@‰E‹„†@‰„†éęU‰åƒģVWč‰Ē¾¤šžP”sK€¼Žu>Š„œ˜‰FžŠ„˜‰Fü1ĄPPPP’“¦’vü’vžøCPč7¾ƒÄʄŽ’‹WčŁ[øPėĘ¬ėÆWčČ[1ĄPXéyU‰åPPVW‹F-ų“¹¬™÷ł‰Ēø÷ē-‰ĆĆŗ€‰ŽĒDĒDD‰DéAU‰åƒģVW¾¤šžP”sB‰“艓źĒ„‚ Ē„€żSʄʄ@ʄ‘ʄ’ʄ“ʄ”ʄ•ʄĘ¬ėøĒŗ€ųæŗ€’s[‰ų-ŗ€¹™÷ł@‰FśE‰EĒEĒEøPøPø’’Pø°PP’vśč“ƒÄ ‹¹ QPčÅ[[‹@¹QPčø[[ĒėŸéU‰åƒģ VW‹F%’¹d÷į‰Ęƒždu¾n¹‹FÓų%’¹d÷į‰Ēƒ’duænĒFś’’öF@tĒFśöF€tĒFśƒžnuøPėøPFų¹‹FÓų%‰Fö’vö’vų’vśWV’včƒÄ éõU‰åƒģVW1öø÷f-‰Ć‹æŗ€‰ų¹€QPčū[[ƒ~2}ĒF°ƒ~2}ĒF°‹F™¹Q¹ĀQRPčŗ‰Fś‹Fś%’1ÉłPQčĄ[[¹‹FśÓų%’‰łAPQč«[[¹d‹F™÷ł¹Óą¹dP‹F™÷łY ČPø¬÷f‰Ć‡|šƒ~ ’tĪ¹‹F Óą š‰Ęƒ~ tƒ~ u ‹F H¹Óą š‰Ęƒ~|ƒ~ ‹F- š‰Ę‰ųVPč2[[éU‰åƒģč@FčPøtPčT[[’vźėFčPč[ėäFčPč‰[ėŚFčPč5[ėŠ»„uXéŽU‰åƒģV‹vW1’ƒ>ųtæū’ƒ|æź’øV÷d°‰ĆĆt”‰^ō’t’tøP’vōč9كĉFš‰Vņ‹Fņ Fšuæö’ ’té­č¤‰Fö‹ ‰‚‹L‰‚‹L‰ś‹L‰‚¹‹Fš‹VņćŃśŃŲāś£ž‹Fš‹Nņ%į£üĒFž~žč}U‹‚AFųPQčB[[‹Fų%°=uĒųč‡æüė-‹Fų%°=uĒFü~üč}’Füėō’vųčŻ[æū’ė’Fžė¤’vöč’[‹Fų%°=uæū’W’t’4øDP艃Äé–U‰åPVW‹~ƒ}u’6‚ėøū’P^>‚ütV’6‚’6‚øCPčQƒÄƒžūu’učj[ĒųéLU‰åV‹vƒ>ųué<ĒųĒśĒ‚üøü’P’t’4øDPčƒÄéU‰åƒģ‹F‰Fź‹F ‰Fī‹F‰FģFčP’včS [[éīU‰åV‹v÷Ę tø”uPč‘ [÷Ęuø®uPčƒ [÷ĘuøĘuPču [é¹U‰åPVƒ>ˆ©tøxPėø¼P‚Ēųø‚¹QPčµ[[1öƒžd}Fėųø‚¹ QPčš[[éjU‰åƒģVW‹‚9śt ø PPč{[[ƒ>ųuéCƒ>ś運‚AFžPQčh[[‹Fž%°=uY’6ü’6žčü[[ˆFłŠFł0ä‰ĒW’6‚č,[[ø‚¹QPč[[ø‚¹QPč [[’ü’ś’ö1öƒžd}†Fėų‹Fž%°=uéøĒ’©ƒ>śu1ĄPė’vž–©ø©Pøł’Pč/×[[éU‰å1ĄPėė»ZvXéK é}œüUPSQRVW‰å‹F‹~¹ŃŲŃßāśŽĒ‹F‹v¹ŃŲŃŽāśŽŽ‹~ē‹vę‹V ‹N÷Į€u÷Ā’’uė¹€‰Č÷Įtņ¤ėŃéņ„‹V ‹N1Ū)ĮŚ Éu Ņu _^ZY[X]Ć‰V ‰NF^F^éu’‰ćœśVW‹Äw ÅG&‰ƒĘƒĒ¹ üņ„_^ÜśXĆU‰å’v]ĆU‰åSV‹^‹v‹F‰‹D‰G‹D‰G‹D‰G^[]Ć[U‰åWV)Ä;&fvv’ćĒfv‹r”ĒG2’6¬©øjvPčaØėäfü^_]ĆĶ$0<0tøĆ1ĄĆ³“Ķ€ūtøĆ1ĄĆU‰åQRW¹ŗšüŽF‹~óm_ZY‰ģ]ĆU‰åQRV¹ŗšüŽ^‹vóo^ZY‰ģ]ĆU‰åVWSQR‹v‹~#> €‹N ŗŚ‰ūĖĖ+ €ƒė~Ńū)ىhv÷ˆ©t ÷†©uģØtūœüŽFƒžt.š’dvņ„ƒū~‰^ ĒFƒ~tŸ‹6hvövė”ZY[_^]Ć”tņ«ėŅRœ‹ž€Ź ūśģØt÷XZĆU‰åVWQ‹v‹~‹N œü‹FŽĄŽŲņ„Y_^]ĆU‰åVWQ‹v‹~‹N œ‹FŽĄŽŲżņ„Y_^]ĆU‰åŽF‹^&Š0ä]Ɠ“U‰åVQ‹F.£N_‹F.¢P_‹F.£V_‹F .¢X_‹N ‰ČĄ.£T_.£L_.¾<_“‡œĶY^‰ģ]ĆRŗiģ5ī5īŗf“ģöŌ ąīėöŌąīėöŌ ąīZĆ1ĄŽĄ&”Ä£¤w&”Ę£¦wĆśø ę čü¦čxø@ŽŲø4£r÷Œ©’’uø’’ŽŲ”P”P˔Щŗeīŗ!ø¼īūĶśø ę 輦č81ĄĶø@ŽŲø4£r÷Œ©’’uø’’ŽŲ”P”P˔Щŗeīŗ!ø¼īūĶü¹Ž¾ˆv1’ŽĒņ„”¤w&£Ä”¦w&£ĘĆūėżU‰åƒģVWøØwPč][øPø¶©PøPøx£PčJ҃ĉFģ‰Vī¾t”ž„©rénöDté_‹D"‰Fö‹D0D.‰Fō1Ą¹‹VöćŃāŃŠāśĀ‰Vš‰Fņ’vņ’vš1ĄPøPčJ‰Fś1Ą¹‹VōćŃāŃŠāśĀ‰Vš‰Fņ’vņ’vš1ĄPøPč‰Fų‰š-t”¹V™÷łPčÉ[’vų’vś’t<’t:’t8’t6’t’t’t’t4øšwPč‡ƒÄƒ|u øxPčw[ė ‹DPPč†[‰š-t”¹V™÷ł-‰Fźƒ~źé{‹^źŃćŃ㋇Ω ‡Ģ©tj‹^źŃćŃć1ĄPøP’vī’vģ’·Ī©’·Ģ©čėśƒÄ ĒŖĒŖæ¶©’Ź©sŠ˜= ~Š˜=rĘGėäƒ~źu øxPčä[ė ø¶©Pø&xPčÖ[[ø*xPčĶ[ƒĘV鉾ø.xPčæ[é U‰åƒģVWø2xPč¬[¾$¤ž„©réøöDt驋|"‹D0D.‰Fö1Ą¹‰śćŃāŃŠāśĀ‰Vņ‰Fō’vō’vņ1ĄPøP蹉Fü‹Fö)ų1ÉQ¹ZćŃąŃŅāśƒŅ‰Fņ‰Vō’vō’vņ1ĄPøP膉Fś‰š-t”¹V™÷łPč5[’vś’vü’t0’t.’t,’t*’t(’t&’t$’t"’t øvxPčšƒÄƒĘVé?’é+U‰åV‹vƒž|u øŖxPčŃ[ė/ ö|ƒž ø ÷ę‰ĆĆŚuSø²xPč²[[ė‰š-Pø¶xPč”[[éäU‰åƒģV‹vW‹~ ’u‰óŃćŃćLJ̩LJΩé¼øV÷氉øPEPøPĆt”SčXσĉFü‰Vž‹Fž FüuéŠøPø“©PøPøx£Pč1σĉFų‰Vś1ĄPøP’vś’vų’vž’vüčŻųƒÄ øV÷氉øP’6“©øPĆt”Sčń΃ĉóŃćŃ㉇̩‰—Ī©é#U‰åPPVW‹^ƒĆ ‰Ž‹F1Ņ÷v‰×ƒĒ0ƒ’9~ƒĒN‰ųˆ‹F1Ņ÷v‰Fƒ~uՋ^)óƒĆ ‰ß‰óF1ĄŠP‹^Xˆ’FO ’uź‹FéĆU‰åPPVW‹^ƒĆ ‰Ž‹F ™’v’vRPče‰ĒƒĒ0ƒ’9~ƒĒN‰ųˆ‹F ™’v’vRPč%‰F‰V’v’v1ĄPPč Ąu¹‹^)óƒĆ ‰ß‰óF1ĄŠP‹^Xˆ’FO ’uź‹FéGU‰åƒģ&VWF‰Fņ‹^’FŠ˜‰Ē ’ué'ƒ’%tWčŌė[ėāFō‰ĘFō‰FīĒFā‹^€?-u’F’FāĒFą ‹^€?0u’FĒFą0ĒFč‹^’FŠ˜‰Ēƒ’0| ƒ’9ƒļ0ėƒ’*u‹^ņƒFņ‹?ø ÷fč‰Fč~čėŹĒFäĒFꃒ.u9‹^’FŠ˜‰Ēƒ’0| ƒ’9ƒļ0ėƒ’*u‹^ņƒFņ‹?ø ÷fę‰Fę~ę’FäėĒĒFރ’ltƒ’Lu’FŽ‹^€?t ‹^’FŠ˜‰ĒWé’FŽæė’FŽæ ė’FŽæƒ~Žt‹^ņƒFņW’w’7VčLžƒÄ‰Ęéé‹^ņƒFņW’7VčÖżƒÄ‰ĘéÓ’Fރ~Žt<‹^ņƒFņ‹‹O‰FډN܃~Ü}Ę-F÷^Ś÷^܃^Üø P’vÜ’vŚVčńżƒÄ‰Ę鎋^ņƒFņ‹‰Fźƒ~ź}Ę-F÷^źø P’vźVčeżƒÄ‰ĘėcĒFą Ę?FėXĒFą ‹^ņƒFņ‹ˆFėEĒFą ‹^ņƒFņ‹‰Fīƒ~īuĒFīōxƒ~ęuĒFę’‹vī€<t’Nę|Fėó‰ųˆF뻼xX鉚+Fī‰Fź‹Fč+Fź‰Fčƒ~č}ĒFčƒ~āu÷^čƒ~č}+‹^ī€?-uƒ~ą0u‹^ī’FīŠ˜PčŽé[’Nź’vąč„é[’Fčuō’Nź|‹^ī’FīŠ˜Pčlé[ėėƒ~čuéqż’vąčZé[’Nčėė¹ė ¹ė¹ėU‰å‹F‹^Ķ ]ÌŲĆø$ŖĆśWø@)’ŽĄ&Ǥ„1Ū&‹ū¤„u= uę_ūĆ[YZXV‰ę‡\^9Ówr9Čw tø’’Ć1ĄĆøƋ+G;Gw ŃąƋ_…Ūu ‰Ó…ŪuøPéE’ć‹‹OƒĆI|;uö‹_…ŪuøPé&’ć‰ÓėļVW‰ę‹\‹D™‰×9Āu6!Ņ}÷Ūt.1Ņ‹L ‹D !Ą}÷Ų÷ŁŠ÷×÷ó‘÷ó!’}÷Ł÷ŲƒŁ‰Ź_^[ƒÄ’ćR‰Ē1Ū!’}÷ß÷\ߋD ‹T !Ņ} ÷Ś÷ŲŚ÷Tž¹ŃąŃŅŃÓ9ßwr 9Tvāķė+Tū@āć_ė„VW‰ę‹\‹D Ąu1Ņ‹L ‹D ÷ó‘÷ó‰Ź_^[ƒÄ’ć‰Ē1Ū‹D ‹T ¹ŃąŃŅŃÓ9ßwr 9TvāķėŌ+Tū@āćėŹX‰ņ‰Ž‰Ć‰ČŃłs0䬉ÖP’ć)ĉų‰ēņ„‰Ö‰Ē’ć‰ćR‰Į÷gZP‰Š÷gZ‰ȉŃ÷gŹ[ƒÄ’ćVW‰ę‹\‹D™9Āu:!Ņ}÷Ūt21Ņ‹L ‹D !Ą}÷Ų÷ŁŠ÷ó‘÷ó1ۃ| }÷Ū÷ŚƒŪ‰Š‰Ś_^[ƒÄ’ć‰Ē1Ū!’}÷ß÷\ߋD ‹T !Ņ}÷Ś÷ŲڹŃąŃŅŃÓ9ßwr 9Tvāķė°+Tū@āćė¦VW‰ę‹\‹D Ąu1Ņ‹L ‹D ÷ó‘÷ó1ۉЉŚ_^[ƒÄ’ć‰Ē1Ū‹D ‹T ¹ŃąŃŅŃÓ9ßwr 9TvāķėŅ+Tū@āćėȉśX‰ß‰ĆŃłsXŖ‰×’批‰ęņ„‰ō‰×‰Ę’ćčYčĆøŗ&yė0øŗ=yė(øŗTyė øŗkyėøŗ‚yėøŗ˜yėøŗÆyė1Ū‡Üy…ŪtP’ÓXĆ»SRøPč;čŗõ‰ĀƒśsŃā»üxӋ…Ūt‰Śė»Ķy¹‰Āā0ˆKќќќāķŗæyėŖU‰åĒŖ‹^‰Ŗ‹^‰Ŗ‹^‰Ŗø ŖPøPø» Ŗ¹Ķ ‰ģ]ĆčJõ_^‰ģ]Ć^_ėų[YZXV‰ę‡\^9Ó|9Čw tø’’Ć1ĄĆøĆS‰ćPR‹W‹GīZX[ĆS‰ćPR‹Wģ0ä‹_‰ZX[ĆU‰åŽF‹^&Š0ä]ĆoRRS232 interrupt¶æĒĻ×ßēļ÷’'/Division overflow trap. SIGILL will be sent to process. Unexpected interrupt or trap: vector = %d. pc = 0x%x text+data+bss = 0x%x Unexpected trap: vector >= 16. pc = 0x%x text+data+bss = 0x%x This may be due to accidentally including a non-MINIX library routine that is trying to make a system call. Kernel panic: %s %d Type space to reboot 1234567890-= qwertyuiop[] ‚asdfghjkl;'`€\zxcvbnm,./*ƒ „”¢£¤„¦§Ø©Ŗ…ˆ·ø¹‰“µ¶Œ±²³0!@#$%^&*()_+ QWERTYUIOP{} ‚ASDFGHJKL:"~€|ZXCVBNM<>?*ƒ „‘’“”•–—˜™š„‹789‰456Œ1230.1234567890-^ qwertyuiop@[ ‚asdfghjkl;:]€\zxcvbnm,./*ƒ „”¢£¤„¦§Ø©Ŗˆ·ø¹‰“µ¶Œ±²³0. Š “²¶ø‹ /«¬­®ÆŽ!"#$%&'()_=~ QWERTYUIOP`{ ‚ASDFGHJKL+*}€|ZXCVBNM<>?*ƒ „‘’“”•–—˜™šø789‰456Œ123‡¹ ŗ  »¼/›œžŸ½¾æ1234567890/ų qwertyuiop* ‚asdfghjkl+'@€ZXCVBNM;:=*ƒ „…789‰456Œ1230,[/ż¬«œ{}\‚Ŗ€®Æƒ„…|`1234567890-= qwertyuiop[] ‚asdfghjkl;'€\zxcvbnm,./*ƒ ‚”¢£¤„¦§Ø©Ŗ…ˆ·ø¹‰“µ¶Œ±²³0!@#$%^&*()_+ QWERTYUIOP{} ‚ASDFGHJKL:"~€|ZXCVBNM<>?*ƒ ‚‘’“”•–—˜™š„‹789‰456Œ1230.HAVSDGCTYBUpd**4@LXb ķ ö ’   6 tĢ tÄt>t5’’’’’’’’’’’ ***##  Š` Š Š ---³›§disk task got message from FS gave floppy disk driver bad addrTrying to DMA across 64K boundaryDiskette in drive %d is write protected. xllwinchester task got message from %d FS gave winchester disk driver bad addrTrying to DMA across 64K boundaryHard disk won't reset Can't read partition table of winchester , Æ+»+ß+Š+—+÷+£+Ē+Ó+,ė+bad call to sys_newmap (src)bad call to sys_newmap (dst)do_sig can't signal; SP badcan't inform MMŖ9Œ9„9–9›9clock task got bad messageØ=„==œ=mem task got message from RAM disk got odd byte count żB BBjB ĶB ~B .B BB ¼BVBšBŁEMĖE[¼EHFšEčELMwFMK—JMKMK·JŪJMKūJL @ļIAĢFBńFCGD;GH`GJŌGKHLKHMÓHPbIm‘JCP P P1P &PSoftware scrolling enabled. Hardware scrolling enabled. «Q R«QÜQ«QÕQ«QćQAV¬UäUĆUAVAVŗURS 232 line status event %x RS 232 modem status event %x JYfYJYpYJY\YPrinter is out of paper Printer is not on line Printer error żTTY AYPRINTR-WINCHEaFLOPPY =RAMDSKp9CLOCK q+SYS IDLE MM FS INIT Ä\Ä\Ä\Kernel stack overrun, task = proc -pid- -pc- -sp- flag user -sys- base limit recv command %4d %4x %4x %4x %6D %7D %3dK %3dK /bin/sh%s PROC -----TEXT----- -----DATA----- ----STACK----- BASE SIZE %4x %4x %4x %4x %4x %4x %4x %4x %4x %3dK %3dK ANY %s%4d g DQfOfUfXfcĢfdTfeĮffĮfgĮfofsßfufx f(null)ky‚y&yÆy=y=yTyError: Division by 0 Illegal EM instruct'n Err in EM case instr Variable out of range Err in EM set instr Floating pt not impl. Heap overflow EM trap 0000000 octal $Ŗ$Ŗ ą vė‹&P čėžėžU‰åƒģVWčß čI Ąt FšPčW [ėB1ĄPøR Pč«[[ Ą}ø’’PčĖ’[øPøZ Pč’[[øPød Pč…[[øn PčÖ[øž’Pč”’[øx Pøv Pč$[[1ĄPøz Pč\[[‰Fņƒ~ņt逸PFöP1ĄPčZƒÄ‰Fźƒ~źt醊Fö˜-0‰FäŠF÷˜-a‰ĒŠFų˜-0‰Fģƒ~ä~Ąƒ~ä~ėø€~÷0uæœ’ė ’|©ƒ’~뢃~ģ|œƒ~ģ ~딋^ģŃ㉿śW’vģč[[뀸Pø„ PčĆ[[‰FņøPøŽ P’vņč‚ ƒÄėž’vņčF[¾ƒž øPVčÖ[[Fėīč„FīPč$ [‰Fš’ų1öƒž }ē‰óŃć‹Fš9‡u#‰š0¢N øŖ PøK Pč[[‰óŃć’·śVč[[FėČU‰åPPV‹vWč¼‰Ē ’t‹^Ń㉿’ųéŁ1ĄPč»[‹F0¢N øPøF Pč[[ Ątøż’Pč%ž[øPøF Pčģ[[=tøż’Pč ž[øPøF PčŅ[[=tøż’Pčńż[ƒžœtTøšPøtP1ĄPčoƒÄ‰Fü‰óŃćŃ拏š ˆš‰óŃćŃ拏š ˆń‰óŃćŃ拇ņ  £ōøšPø tP1ĄPč/ƒÄ‰Füø¬ Pč½[ø¼ Pčµ[øČ Pč­[øŠ Pč„[é( é% U‰åƒģVWøPø8 Pč1[[‰Ē ’}é øP1ĄPPWčŅƒÄ‰Ę1öƒž} ĘBšĘBčFėšøP’vFšPčŃƒÄøP’vFčPčĄƒÄFųPč[øPFšPWčŸƒÄøPFčPWčƒÄøPFųPWčƒÄWčI[é… U‰å’6öFP’včDƒÄép U‰åPVF‰Ę‰óƒĘƒ?tėō’4FP’včƒÄéG U‰å’6ö’v’včƒÄé2 U‰åģVWdžņ÷džš÷‹F‰†ž÷‹F‰†ü÷‹žž÷ƒ†ž÷ƒ?t’†ņ÷ėģ‹žü÷ƒ†ü÷ƒ?t’†š÷ė싆š÷†ņ÷ŃąžųÉދžņ÷óžš÷F9Ćr ĒHø’’Pé'†ų‰Ē‹†ņ÷‰ƒĒdžō÷‹†ņ÷9†ō÷}V†ų‰ń)Į‰Žģ÷‹†ģ÷‰ƒĒ‹^ƒF‹‰†ö÷‹žö÷€?t!‹žö÷’†ö÷ŠˆFF9ĘrćĒHø’’Pé¼ĘF’†ō÷ė ĒƒĒdžō÷‹†š÷9†ō÷}U†ų‰ń)Į‰Žģ÷‹†ģ÷‰ƒĒ‹^ƒF‹‰†ö÷‹žö÷€?t ‹žö÷’†ö÷ŠˆFF9ĘrćĒHø’’PėPĘF’†ō÷ė”ĒƒĒ†ų‰ń)ĮA»‰Č™÷ūŃą‰†ī÷1ĄP†ųP’v1ĄP’¶ī÷’vču[Pø;P1ĄPč¢ƒÄPXé‡U‰åV‹v1ĄPø"PV1ĄPøPVčG[Pø;P1ĄPčtƒÄé\U‰å1ĄPPPPPPøP1ĄPčYƒÄéBU‰å1ĄPPPPP’vøPøPč;ƒÄé$U‰åƒģ*V‹vW‹N‰ś ‹N‰ö ’véĻ1ĄŠL0ķ‰Nö‰Fų1ĄŠL0ķ‰Nņ‰Fō¹‹Fö‹VųćŃąŃŅāś Fņ Vō£ü ‰ž ‹D™£‰ŠD˜¹ÓąPŠ˜Y Č£ų ø6PøPč<[[‰ĒWém1ĄŠ 0ķ‰Nī‰Fš1ĄŠL0ķ‰Nź‰Fģ1ĄŠL0ķ‰Nę‰Fč1ĄŠL0ķ‰Nā‰Fä1ĄŠL0ķ‰NމFą1ĄŠL0ķ‰NډFܹ‹Fź‹VģćŃąŃŅāśR¹‹Vī‹^šćŃāŃÓāśY Š ŁQ¹‹Vę‹^čćŃāŃÓāśY Š ŁQ1ɋVā‹^äćŃāŃÓāśY Р٣ü ‰ž 1ɋFŚ‹VÜćŃąŃŅāśR¹‹VŽ‹^ąćŃāŃÓāśY Р٣‰ø6PøPčR[[‰ĒWéƒø6PøPč?[[‰Ē¹‹ü ‹ž ćŃūŃŚāśā’ćˆT1ɋü ‹ž ćŃūŃŚāśā’ćˆT‹‹į’’ā‰L¹‹‹ćŃūŃŚāśā’’ć‰V։^Ų‹F֋NŲ%’įˆ¹‹F֋VŲćŃśŃŲāś%’āˆDWé×ø6PøPč“[[‰Ē¹‹ü ‹ž ćŃūŃŚāśā’ćˆ¹‹ü ‹ž ćŃūŃŚāśā’ćˆT¹‹ü ‹ž ćŃūŃŚāśā’ćˆT1ɋü ‹ž ćŃūŃŚāśā’ćˆT¹‹‹ćŃūŃŚāśā’ćˆT¹‹‹ćŃūŃŚāśā’ćˆTWėæ’’ĒHź’Wė»Ü Xé?Xé)U‰åPV‹N‰ö ‹N‹V‰ü ‰ž ‹N ‰ų øPøPč—[[‰Ę öt‰š™RPė’6ž ’6ü XZéāU‰å’v’vøPøPčƒÄéÉU‰åPV1ĄPP’vP’v’vøPøPč¼ƒÄ‰Ę‰šé U‰åPPV‹vW‹FŃą-‰Ć‹æ(‹FŃą-‰Ć‰·(‹N‰ö ƒžt öuVėø— Pø0P1ĄPčī[[‰Fžƒ~žuæƒ~ž}’vžėWXé6PSQRVWU‰ć‹_‰ŲKŪ‹Ÿ(’6ō P’ÓXō ]_^ZY[Xš ĻU‰åPVW‹~‹vƒ~~%‰ūGŠˆF˜ Ąt’Ntėģƒ~t ’NtĘFėõ‹FéČU‰å1ĄPPPPPPø$PøPčŃÄé®U‰åƒģVW‹~1ĄPPPPPPø PøP蔃Ä‰Ęƒ>ō | öt‹ō ÷ىHø’’Pø’’Pė#‹ü ‹ž ‰Nś‰Vü ’t ‹Fś‹Nü‰‰M’vü’vśXZéBU‰åPVW‹~1ĄPPPPPPøP1ĄPč:ƒÄ‰Ę ö| ’t‹ö ‰ ‰šéU‰å1ĄPP’vP’v’vøPøPčƒÄéļU‰å‹N‰ö ‹N ‰ų ‹N ‰ś ‹N‰ü ‹N‰ž ‹N‰’v’včQ[[é“U‰åPPVW’v č[‰Ē‰>ö ‹N‰ų ‹N ‰ś ¾ü ƒ’‰ųO Ąt ‹^ ’F ŠˆFėģ’v’vč[[éfU‰åPV‹N‰ō øņ P’včP[[‰Ę ötVėƒ>ō }‹ō ÷ىHø’’Pė’6ō Xé'U‰åPV‹vW1’‰óF€?tGėõ‰ų@é ¹ė ¹ė¹ėU‰å‹F‹^Ķ ]Ƌ‹OƒĆI|;uö‹_…ŪuøPė’ć‰ÓėščYčĆøŗ4ė0øŗKė(øŗbė øŗyėøŗėøŗ¦ėøŗ½ė1Ū‡ź…ŪtP’ÓXĆ»SRøPč;č¼ó‰ĀƒśsŃā» Ӌ…Ūt‰Śė»Ū¹‰Āā0ˆKќќќāķŗĶėŖU‰åĒL‹^‰N‹^‰P‹^‰TøJPøPø»J¹Ķ ‰ģ]ĆčLó_^‰ģ]Ć^_ėųŚŚ 0`€€ €€0€`€@@ @@0@`@/usr/adm/wtmp/dev/tty?ų/etc/rc/dev/tty0/dev/tty0/bin/sh~/etc/ttys/dev/tty0Init can't open /etc/ttys /usr/bin/login/bin/login/bin/sh/usr/bin/sht tŹt3tÉy4½KKbError: Division by 0 Illegal EM instruct'n Err in EM case instr Variable out of range Err in EM set instr Floating pt not impl. Heap overflow EM trap 0000000 octal bb/T€ ‚&Ķpä¼9#'Lt¬)sš2唱“ęM9lņ€ó¦ œ4lʐĘĶJ6iÜL\y²ĢŠ ޘxQoą”iH'ęsņĢ”S¦ –.Ö”SńāC: ĖX ń 1uP® óõĶ: ČœH‡© Ÿ b4ƒg 4†ĪԜnxbc­Ś9l™‚ˆÉÓ`N9d†ź€ „åĖ„ĻŠaófŽĖ ·¦]«Uqf“ 6lS4ˆ‰rܔaóŁõeŃA‡†)źęhŅ„M_•ͦ5č6mjŪv-ŗMÓ7rD¶ięĢPć—ĶĢQ¾üöEtS"UŹ”õOŪ1ÓŠį¾\ōļņ‹ŻØO¦žėē]kć¹»÷¹uÜCc\Ä~*T&WYšq¶xžńNŒĶaVr€CN;‰vŚhˆ•V† –-˜QF X^eb”qFL©„Ńt„Ä’Le؉}qO!÷”vO„GĒS-­“߃waTFVĒ^‘­äZX±Bu°QāéB 6|•Ss ÕV‘äĘ»•įFœ+Ŕe•Ķa”xį ębLņõB 1Č`&šńe)ZŸ<.H—KŠ‘˜Ņݘ•¹Œ ”‡MS…±F$EŽ„¢ż8[£įå˜^]“W Q$'ożTY8råaa‹Mgh„qP‹r~–—O%ā$”LF5ŻDYh‡nŝ7%ā¤čwi `˜–X“éšh1ø Ę¢Ew@GĘAbžzÖWœńĒ^¢eģ©lpvĒvp%pŁś²„V 0Š CNŌŃF‹Rz!tyÅŁ^ ?ńnƒĀ`ĆÅDL‚õÕ1ׄrŌįF G-Y²eC&qŹ8\ Å/ĒB ”AĆīš•ži©@6{Pķžä@HNS–u\B¤ą„"0į šlBސ¢Į5 ŒpA¦!2åK]prJ.„Ugq Ń/H”¢ÅŽ„x¤E©ęb48B #éD(F†Ą„Š.a›HH‚vyŠI®S” ÕPS«Ł„&\&S]'./#ƒ¬Ö1 ó ß ¼Š\a  ™7¼ī…³c až27ńČ*2r QPZG$ø“ fpO_‚`œś”Ć]H,‚r…œ)*üśĪ…Šw3ģaĀA½µ±³BZø×ję _€Ā\&XĶn"³aĆAD9” – HLĄ¼~ŗļ „]'ˆ …/0”NAa +H¦$l¶£¼+WRŅ‹,ø±ä+F¼¾Ō®VC® å(ÓĢgŽz‘n†‚[Ē™R!ŽemxB[WńōƒeŒz#«]a SˆÆr]ūŚśBļXÖCŹyćZ¼ņדE@mą)zj2ŲPw)ZeĪ•ķbvҧėŠoJDĮˆnyKƒNS¤sA‰°Śi¦„æBhē;ÓJą×b#rNK„) ! ŗÕĖJŅ9 ŁX²9ž«TG 'µ˜Žv*cvŠc۲điŚŚą€!|¤ˆÆĖÉTürÅI3Ėc؃¾P) q¹ĒāMCĄ)ƒDP1uF1‚L¦F6Ī4h–Ļł…?SäĪxČ$uƜógµ²Pł Z »(Ė [øf6‹ĖMovŅĖįpĢ`®¤łJl†x¤Łé ŻG!”.6µYź"œZœ¹µ0‡t)d¦H †&łŠ"Mtö(qnĻ‹źłZsĮb:Ż ³ķ¬ĄH}6K6ķūT[³‚œ¶wRŌżQt«Į.—R3)ų>كOĢģ=A6+)o¹·ģĖq.ŲŅ”·elęo€§ep?w ’ߥ8Zįünx‘=‡ˆ3—ā·xĀ j™,[_ųØÄ?>¦Ÿų.qzʆDšŗI³÷¦Č,©G>NįŌp¬õOęäœ-tŽÜƒø “䉹)" āež$rźPwÕ”ŽÅŖ÷apœNLPp—3ŒIr8ƒR €,—} `ŗ Źn£ƒ]߂BPDā/“„Ą‘<ßcW0ƒ ÄSźA“•¬'4¼JHDuˆ ·Lž`$Ą>ødø–f"Hō Ū’ƒķP@ć)x^š–ƒ^˜’rsM^ķ[øA`omå?I1ˆ§C¬KÜģ_ ä^ł"?ō÷j­„$p‰‡Ń7©Ä·] Z×ā÷ž<ÄąłuĮōc’Z½§Ÿ€ƒ‡@†×kQb—¢."2–‘f(H§!\<`GxŌs}4+°žW2š€h}i°2°ūfZ3h`{`:kS>f z]6ƒ†Õ6hƒ¶qƒ6ČtÆv#c“dGG†ū–vƒ"šB"‚ĀAY P2Lä%Pl€<ųŃ6p\Ø1{Eų‚t€„LGgQ9c 5jįYMó ŽQ@ä[8nl†>Ųd[ä‚G(zJØdä„k…SŲbVXXp‡]HN_(mä$†~ƒ¢w†iˆ:׆uš†L#0sHvčT×nz8MU&Rpä}2&!” “įrxūć~²6)éBÉĀ!‹hp¤‰-Ų‹ą‚(‰ÄX 3Ą‚ūzt€0 †}GA·w÷×'_pzl'wŲxzw§y·wT86!Ri€f‚Fj¦}ŠW"ßQb‹Ss 6< #,2rM2AqŽdš6SØSe- -PbŽQøŒWr›f’Hi_ dĆ(t1qN[ cš$Oōt‘(’¹į(ŠQOeļ”žWŃųyxz"'nphQ’[‡’Ī!†ūF^”oŻqqIPØd'‘¹jO”‘ńVȈ’G”J0éyB1“Ļ(U9 Ń1QbTĒ“e•,4• W”{> !ž§6_p%čēŌ,i©dȈs¢ (@•FŁ–Ń8Œ(ų+ˆŒm(Le”ŅHˆn 1CR٘’l—eŁ+iųR{o D^qŠ-VĒ÷FÜ(™ŽØ™%–%:)Mx'ų?QQ•dŃ'\øw)²~ėČfį‘r0Œā¦£–pcŚoeZD)#_€_Z‘Å¢#t¹jłWOŁ‘Ćų‘!™”$)&I–+©‘.i•n)“4i“8™ŗu·8™=É‚$FIœŽ•!YbÄ²Ożtī1>·B9Į‹Jöź•”Oa[‘&p¦ —«&u§h’«'¬ó©Ś(Ŗk銗ø†J&~&Aś”Ź ©S*±z$ēr(°«»Å[(€¾Š(%  žwy—źyB¹YI“ŪŁ¤ŽŁb`%+ŗ†Z­_&;A&”ö›uńT·o4X°Ū€ŖI™Ć8–a§(šl)P®8QHĮś°…T¬7Œo;rēJ&‚‰r ± ˜ š#Zšū¹o;r+ąHq:Ćų±ˆ2³²&§ĆHsŽłžhVKЁ`Y:‹³¶oĮø`G{Ę:ŹŹN61īroµ0Ä`®ų6"„|97[p™]ąYŽD±P»oä¶bėĮj¶ęO;Œk¶3¶Å …޳hB·Ńi·m0¶'—r+qŽ“«Q dØ%Īa=Z-iĄ‚"žł§·;9W¢xp¢‹•!KĀ‹>{™–*“ģ ėFH‰"P[ĪŌWX–aR°[²Ė¦µ{»:Z»ˆxxP»X`¬»…§kX§ø]9+ś“iĢ˦ϋ“iR¼¾$½Oń­Ū¶ƒūQ)[uS£ņś¤"ūzyIŖHŖkÉ®xƕcRās˦;•S‚q^±ž¼Ų§tš§oš„»¼·s»o{);Iż ØU ˜ģJ½Éē›ęH ģ§ l”č”>*Ėæž ĄŸ”ĮP9Œ¶į—kéHH ‘ERØf›i– į³&¼W‰©[Ł•Āw)q%–‘™ Z–$|– 9Ćly©p)—KŁĀ‰—A |ĮkŁŽ¦å³°W*HW ž­ųééšīĒ‹Œ}i=O[Ä1Ł®¶AÅhAĮ|‹(j¼ÖMߤ²m|ŸǤ&Ē0|G<( l.\>{luLšS,Įt`ÅÉĒ¢˜`7pT«·ŖĀ'Ę„®Ūækz±æ ½kJ–•ł©ˆ«dśoE¤hū* ÉĆśuwƒśdł£ZŖß±_õk õĀ¢g©£1”Ić*c³“x0’)³£'K!¢wólō«9o0ūÄ0+¤!.‹C5000½„$±1³“óźS7įy—rQ“aßĪćÆqā¤,ĘvŁŪ üÜĻ6Ļt0fB”$uĮĪāĪżĢĻą<Ī Š:Š·ˆĻI2šÕ/÷Ŗl±Ź`wAƒeŃėfEōaEæ½i‡&m1k(&é™ŅįŃ5°Ļ ŻĻLąŃ+Ó;ŗ%ĻxųpĀē• ’å æü‘›ę pm7@Ó5 7}ó2;g «”™v+|ŗO \įhR7˜[g€aķ`dM/KžŽœ~G­¤Ģ&VŖĪÄfĶw°q"įĪł£ ·|Ŗ&¶9~]Ņts!6A*šhļŪS'MO!Jˆłµ•±/‚¤Z[Ų”e„ū&nwµ…t §§¦¼*ŠC[@¦„1¤Ģ_@]Q«¾mÖwó°b²_Č©8†M]g` +yŽy”…«Ä‘8P©źŚÜ6,zšhŲXQ‰µžźÉĆØ^µ,Ž„®=\Åu\NŪ>ĖŻŌeyŽDY€%‚e¼…ŽÉ¢®ģmYžĮŃ-Ó²ū%ÜÄ Ą™ŪĆešĆ>©ŠEąL aoōܝOź[¼(ʷŽßķŚ§_GĒ[>a_PaTpŪ¶¼Õ‘“{ƒø+ŗą`“AŃYÜ yÜ(œÜ”|WO!߁QšĶ®ß}ŖŻ}ć ŠÜųż®[éŪf×=ąČŖ°WŠŹ‡śN‰J@·hxŖ± 5Z|>ĪAi˜}ŪW¬ā©qŠ>Źvš܋L1}f0x‘Æ·²Ų|6­¦0k ;-'g¶™ÉbNx«‘ •ŃG-P|‘³?n`#y½ha“įÉ6Ōü¤€ÉdbŽż)āäŃ™ŅnŌÜ5aĄOå—[/š ķh”%Čę£Ę1Ą±"wp ŹqµžĒwßæźøžŸVē“jįHx¼MrLšŸVĄū°<€Āō޽ūÜŽ†‰Č‚uČbZ„hÉhŪq{>§\¬Ę6x|p°Øq°‹ŖŠß{ć·ju~Ų]¼(ń2ĖšåīŒ óˆŅö®k£†ļŽōĄ&Y,ģ¢aŁāQķźØ.¼hšŽh¦NĪrFgcēŸ6Č#‘wŃh«ĘŒ–ÉŖ˜ǃ-!Ёīīõēā䬚H·· ēyAręĆų°RĢIó„¼jeĢö}ėš{»jĆĘCœp’_HŽ$ņ$Æp>˜*h{„^óz’°8©o÷ÆÅLŌkąōshRN†iõsvNĢēmų$„Ÿõl×®ń"ä>±¬pĄˆ[o\†[ń†zļ½ök‡ļńs?łZnüō÷ō æųpĪ@æHvä‰Ī†Õxq‘/HP@Wä‚[õ{9Fķ¹ć‰“ón%ł‚7!¢}0kžI@bqhb'—[&Šb] ‘",Nax"k  ±š‚‘2ī…høLc€€¾22ŖCŗRāfIÄ„““§4Žj»n‹į܍ݱ/F~rģ” §Pg ’ńYhĮ„¬2”®b’=M¬$ąõ*ž…‡ŚW Ź_]œÖӃNPGó\ L¢II47©†¾Œ „°H‹šŻź@æŠthÖ„GĮ“%¢bTŠRłpŒŖn -Įu[> (dŠ„B‚½šĶ˜ƒdkyA5ŲąYqƒKń”ā•W`Ō"•Ē tŒ° PIIC±¤”“¼V ,ƒ[µE9闇 Ė ą3LąĄå‚²łų4r«†ś›Uø¾࿨v^«`$½‰ ō<„ ¶E OØHšž™Ł…½°üB}7ŽŽ#Łc ź¼8ę e0T.Ī0FCCÅ §a«†×P’D É‘łŲF+ģ|0šÅ¤ ß1Ź~q!4ĀSsųILLūJ4§źé™SׂŗČwس#ˆ“²ŅSVlC[Ń"ęJ¾źY:s Ną „˜PĪĢN¼dkČ1¤ĆÅąFÄ]$z[l7Ż—0P?*C[‘j˜ÜÅęA#"H$/^aÕ9†rĘfŠČqNP%d6“0ōa`øģ+ *ŠŃBā@ •NBh­Ņ(„R]83ń"”æØ>2!U03*pv؈«abH‚š¹§‘”dر`?i4Š+؇gw“8ćXKĶĆ („‡`ŅBH³ų Ų]Āč8ńb”:°ń “§ Jąž:¬ "0§f”¼œÉ@‹üBųxź˜Sڲ ā&Xéķ ¢ÖÉs9Ķ”:ų2 ČƒńuFĪ#0žićŖčVśq&'GbOz ”Xu Ŗ”·@čÉ Ŗ'A± ’ŅS¼¢`_ÄX”€ÉéĄ g/©A·B’"͊„8ū±` #ŸŌ•†t(-å„TĻōMų"€Dā—ņ`Ŗ•g<×s¾,Ć ŗh .K•y|޾ w‹ał¼ö0 ’V[e‹Śą·•pøĢäŲz[jr(•I?x&]@ފ“ĖĮgÕ­:¹½Š\‘ÄoŻAąŠGPˆ”!<*S ©,•&ęK‚Õ „X(ąĢ)¬–VBĘņ<†²ØĀDłåÖė²# 1Ķ"(aB|ƒ€r98JSyź „¤”XhĮb)1€)× ¦D”Šv†å®¦‚Šd‘°Š U»^„2-ŖĮ˜Ä[¾Ł øTĶüJ)!ceZ!–Ő Ėå5(Õ tk–3ąYFK_i#er–Ų²Čm ’V„²ōĢRC„Khé)„&“ 7ŅyåČsy-‹å`a—łRnuKš-儸“būF8V„éc4‰‚xDŒ{Qט k<aPņdȅ²!ūäŚsKkņ*øI2e䔋²£„rÖaN:ūŽ@åX†EŲ! ™™d“’ÉPФ pōnX`0šøÆØ`Ņža]7E1ą’åaRņ„ilO·Ø„<„ŌcC 8A>Ķõ7 vH¶Ė8ē1AŠH#ń§~ę}Xaźį ĄÉĖiE°ØI†20y-ó˜Ś$'Zø{ńĀŹ&zÖ¦{Q ¬ĪÆ šÅ h4 YŌ€ Qč”õ£œhpHtœą ¦……ˆšspÜ@łŠæŠ e‚—$gŗĪĢéŁ'ó„‚ļs ęLE2?U&‡h‘D;“€ņ1§×Ņ Tg¤*ŽÅ~‰zŗOŚR@ - ”i P\ņ=ż”vŅ|Šŗ=1B›ōƒBŠŻP Ś9'čœŌ9Q“ˆŹ­#ś·²hĶ KT‡…„@Ł’­<™¹ņĪ螣|°„Łc•GOvѰBQ…s$g æQN+Ŗ³(g­—~Ōr:Q “oxe 5 ăfĪ&jF…&ķ”ā1sZQEŚæ¬ØÉܔiōJ”N3' ‹ČjS,ž¾…×9’Ø3”ŌāŠÆ°! ¾ŲeóĢ=RŠ6)!,˜Usī”R|ńŽ ¦,…Y‹“‚©ĪFŠKēåÜ»ŽäŠX:÷žˆ05·”lśRu§ĖRT€©ĮÕ³^ ŁP°ˆ/ŌxRЇ‘°€X5_¦O²#­’Œō<4R+ØČu:8VUŪ‘’ēœŖ+–Q&ʐĢoT¤:ž”&éø)’,€JšÓź€N婍4āōE¦Bwśćą)“pØų¢‹2`OSaĻŹ§ uŸ˜~ S°’3’nƒQ$Ō'ł"¢ä”l‚WSEjT ±xI³xY”CifĶ™ŹQk»”ČHZ>Ԉj~Ŗ5FB5£FŌšS;RÕ©‰‰§®ŠKX€ AŖž¤ˆš~j `‡mgÓ¤Ó¬¹/éŪ7e•– # öĢģ ŌJ:–„d‹…‹I>zNååš]ó } ’©Uå§Q9σŹźa±&ސēpY 2ŗ|±”/éÕHŁIżda½Ÿē*¦€ ēKŁaR%«ÕņĪ}sV­_Z «słüµj脯[•-”Ń G×#ZĒAČWĮG$Lŗ0ĪQłøŽt OĄ›€ ƒn C$% µ`§nSą'>±ø5šĢ‹ISSčŠ¹½ŗó‚ß_e…5š@ĀZV_€fm¬ėšų±š-@YĒ+H2¬™5±öšĶjń$Čh5åł„×özSĄem‘ęU¾ź1ō Vą˜sĄ*¹s`UY‚żF“Ø ‰žB>ė^¢ˆ"أڌ“ ˆ`•mā¼KbK¬‰=±(6ÅŖŲ«b ŪĢšk)¢TĄ`#ØTgĆ)x=W²Ē«@õƒÅ Ł!Kd‹l‰M'"Å%”Sc¬Oœh>Zä$å9O£t<,„Ėö¦Łš@—¹‡Ėē$É@fGbz@ębG~YGR’Ĭra‡€µém†5@`Q«ūƒežf»&C Ó®Beč|kÄ:\/‰• ĻĆõģ”īOęąS„”­JŠwOA³Ŗ7ÄŹW«Iõ°śĶŌŃĀ’Ćäd‡K/°ĪŁ:»hŲĄĄ³BĻ XSa”u:<=“ębŠRŹB+ķš<£Ö-}T¤éЬAƑvÕ.ÖI+i‘dµk˜^ :|ŚGGfOķaW} ~¦ŃDB³”2”r³0Ł) M‚‘ż¶ą6Üöć@lė°›vńGDX»'¢¶-‰HfĘBĈµŠ\€±x—¢Ć“z{oႸż·Å^[É"Q°Ąh'T@ $"ą2@C :³Ī”Śxø+5ō« 6Ʋ`qūj Ū4Ō#rm™fK{˜§ķĮ=Ņv÷Č”å|O>^ÉfŠ(cŃpR«į °‰Q¹\˜+|l†de5 öb•gńT^ėlF”²xѹ¢ t™m$ƚ¶/™:IČΌųd~gźb<”cu;®bå³ S §0Rā@ęj2Fb?£iƒoDšŚn:4Čį•XĄć”?³Æö]©·÷8@aĮ=øŗDį2Üa”Ø—WŠ@¬¤*­Čµ±-š…Ö%°O㉱à ßHS ą»ēhØBŸ0/ž;]‘A+$®DPŒĀÓ ¹·üP]Ƥ į@ø‹”$ĆČĖ—Ņ@įS‘ŅBČ1ņPĄšsŗp$ŌF]Õkē¬.ÖœONÜ®»g[m(q›d×ģŽø"ēÉŚ5z^A]„ĮMćyÓDݽ»x•ŹźŻ"ōzUŽ’½Ā–ö"0ŪŪŽļ彉/÷1ł]ē®ß į Ž)@x߀į>ˆŁ4ĢÅ+roņ }* >@yy‹ ź¾›Wņt^­Šw…ī½¢ĒŲō†ÓĖxUńe¬ų*€Šk@¾ @½*©Ī\&,|ŽÆ †LBųœą*‹W‹Ø°;c荮"Ši£PŒčĄQčģˆK!,,˜z‘Į ? ūtR%R`Nxœ€ pXĄ Ęu÷ĘŸ•ø¼ŅŃQ„˜Ć¢¾, e‡Å·š²ė%mµ+”³M@#m0Ą¼iLŅvtŌÕ Š'ąŅ–` 6¬ N)©] “0ą4/įEĀ låaåĖ5ÜĀ'`׹mĮ6ąi”ūKlĆFƓœu`Ļ ąFTÉb€Zb3“:Ė5bŚ5vЁ1b ‹ d KJÉ䁧ćˆ÷ĶMu˜Ž°Ŗ‘U©‚či‚Līō`2„aŅĮo"ĄI&[OkœŗƒоŽAɤ]7Œ»ńrÅ8Ž(ęY…½qdąÄ5_ ćv|Ž÷?BI‚Ū†oÜS¶±>v j¤| 5“?ƒ=ÖŅ7RŠ›T ÷š‚C’4Œmõ ü±9ŽĒéxŸē Tb yꀾš³XlɖA¤®±ŽȔXB éü€€’«NĆ4ÆŃKŌdŅ»–,26¶²”! ¤N+ä1E.ę„m+Ml=/usr/lib CFLAGS = -F -T. all: make init make bootblok make build init: $l/libc.a init.s $l/head.s asld -o init $l/head.s init.s $l/libc.a $l/end.s @echo init done. # bootblok.s is the source of the MINIX boot block. The bootblock is the # first 512 bytes on the image file and on the boot diskette. When bootblok.s # is assembled, it generates a short binary file (less than 400 bytes) that # must be stripped of its header and copied to the file bootblok. The dd # command below does this. If everything has been done right, the bootblok # file should begin with the following 8 words, in hex: # c0b8 8e07 33d8 b8f6 2fe0 c08e ff33 00b9 # The exact procedure for going from bootblok.s to the binary file stripped of # its header is somewhat operating system dependent. Some assemblers make # an object (.s) file; others make an a.out file directly. If your boot # diskette does not start out by printing 'Booting MINIX 1.0' the problem is # probably that you have not made a good boot block. bootblok: bootblok.s @asld bootblok.s @dd if=a.out of=bootblok bs=16w skip=1 count=16 2>/dev/null @rm a.out @echo bootblok done. build: build.s cc -o build build.s @echo build done. fsck: fsck.s fsck1.s @echo "Start linking fsck. " asld -o fsck fsck1.s fsck.s $l/libc.a $l/end.s @echo fsck done. fsck.s: fsck.c cc -c -Di8088 -DSTANDALONE -F fsck.c # 'make image' combines the bootblock, kernel, memory manager, file # system, init and fsck into a single file, called image. Each of these pieces # appears in the image file just as the original does on the disk, except that # the header at the front is removed, and each piece is padded out to an # integral multiple of 16 bytes. Build also prints a message telling how big # the various pieces (except fsck) are. # # 'make net' does the same thing, only with the networking code from the # 'amoeba directory included # image: build bootblok @getlf "Insert blank diskette in drive 0 and hit return" @build bootblok ../kernel/kernel ../mm/mm ../fs/fs init fsck image @cp image /dev/fd0 net: build bootblok @getlf "Insert blank diskette in drive 0 and hit return" @build bootblok ../amoeba/kernel/kernel ../amoeba/mm/mm \ ../amoeba/fs/fs init fsck /dev/fd0 | When the PC is powered on, it reads the first block from the floppy | disk into address 0x7C00 and jumps to it. This boot block must contain | the boot program in this file. The boot program first copies itself to | address 192K - 512 (to get itself out of the way). Then it loads the | operating system from the boot diskette into memory, and then jumps to fsck. | Loading is not trivial because the PC is unable to read a track into | memory across a 64K boundary, so the positioning of everything is critical. | The number of sectors to load is contained at address 504 of this block. | The value is put there by the build program after it has discovered how | big the operating system is. When the bootblok program is finished loading, | it jumps indirectly to the program (fsck) which address is given by the | last two words in the boot block. | | Summary of the words patched into the boot block by build: | Word at 504: # sectors to load | Word at 506: # DS value for fsck | Word at 508: # PC value for fsck | Word at 510: # CS value for fsck | | This version of the boot block must be assembled without separate I & D | space. LOADSEG = 0x0060 | here the boot block will start loading BIOSSEG = 0x07C0 | here the boot block itself is loaded BOOTSEG = 0x2FE0 | here it will copy itself (192K-512b) DSKBASE = 120 | 120 = 4 * 0x1E = ptr to disk parameters final = 504 fsck_ds = 506 fsck_pc = 508 fsck_cs = 510 .globl begtext, begdata, begbss, endtext, enddata, endbss | asld needs these .text begtext: .data begdata: .bss begbss: .text | copy bootblock to bootseg mov ax,#BIOSSEG mov ds,ax xor si,si | ds:si - original block mov ax,#BOOTSEG mov es,ax xor di,di | es:di - new block mov cx,#256 | # words to move rep movw | copy loop | start boot procedure jmpi start, BOOTSEG | set cs to BOOTSEG start: mov dx,cs mov ds,dx | set ds to cs xor ax,ax mov es,ax | set es to 0 mov ss,dx | set ss to cs i.e., stack in high core mov sp,#1536 | initialize sp to high core | print greeting mov ax,#2 | reset video int 0x10 mov ax,#0x0200 | BIOS call in put cursor in ul corner xor bx,bx xor dx,dx int 0x10 mov bx,#greet call print | Initialize disk parameters | Try 1.2M diskette by trying to read sector 15 xor ax,ax mov es,ax mov dx,ds mov ax,#atpar seg es mov DSKBASE,ax seg es mov DSKBASE+2,dx xor ax,ax | reset drive int 0x13 xor ax,ax mov es,ax mov ax,#0x0201 | read sector, #sector = 1 mov bx,#0x0600 | es:bx buffer mov cx,#0x000F | track 0, sector 15 mov dx,#0x0000 | drive 0, head 0 int 0x13 jnb L1 | Error. It wasn't 1.2M. Now set up for 720K mov tracksiz,#9 xor ax,ax | ps disk parameters are in ROM F01520 mov es,ax mov ax,#0x1520 seg es mov DSKBASE,ax mov ax,#0xF000 seg es mov DSKBASE+2,ax | Try 720K by trying to read track 64. | 360K has 40 tracks, 720 has 80 tracks. xor ax,ax | diskette reset int 0x13 mov tracksiz,#9 xor ax,ax mov es,ax mov ax,#0x0201 | read sector, number of sectors is 1 mov bx,#0x0600 | es:bx buffer mov cx,#0x4001 | track 64, sector 1 mov dx,#0x0000 | drive 0, head 0 int 0x13 jnb L1 | Error. It wasn't 720K either. Now set up for 360K xor ax,ax mov es,ax mov dx,ds mov ax,#pcpar seg es mov DSKBASE,ax seg es mov DSKBASE+2,dx xor ax,ax | diskette reset int 0x13 L1: | Load the operating system from diskette. load: call setreg | set up ah, cx, dx mov bx,disksec | bx = number of next sector to read add bx,#2 | diskette sector 1 goes at 1536 ("sector" 3) shl bx,#1 | multiply sector number by 32 shl bx,#1 | ditto shl bx,#1 | ditto shl bx,#1 | ditto shl bx,#1 | ditto mov es,bx | core address is es:bx (with bx = 0) xor bx,bx | see above add disksec,ax | ax tells how many sectors to read movb ah,#2 | opcode for read int 0x13 | call the BIOS for a read jb error | jump on diskette error mov ax,disksec | see if we are done loading cmp ax,final | ditto jb load | jump if there is more to load | Loading done. Finish up. mov dx,#0x03F2 | kill the motor mov ax,#0x000C out cli mov bx,tracksiz | fsck expects # sectors/track in bx mov ax,fsck_ds | set segment registers mov ds,ax | when sep I&D DS != CS mov es,ax | otherwise they are the same. mov ss,ax | words 504 - 510 are patched by build seg cs jmpi @fsck_pc | jmp to fsck | Given the number of the next disk block to read, disksec, compute the | cylinder, sector, head, and number of sectors to read as follows: | ah = # sectors to read; cl = sector #; ch = cyl; dh = head; dl = 0 setreg: mov si,tracksiz | 9 (PC) or 15 (AT) sectors per track mov ax,disksec | ax = next sector to read xor dx,dx | dx:ax = 32-bit dividend div si | divide sector # by track size mov cx,ax | cx = track #; dx = sector (0-origin) mov bx,dx | bx = sector number (0-origin) mov ax,disksec | ax = next sector to read add ax,si | ax = last sector to read + 1 dec ax | ax = last sector to read xor dx,dx | dx:ax = 32-bit dividend div tracksiz | divide last sector by track size cmpb al,cl | is starting track = ending track je set1 | jump if whole read on 1 cylinder sub si,dx | compute lower sector count dec si | si = # sectors to read | Check to see if this read crosses a 64K boundary (128 sectors). | Such calls must be avoided. The BIOS gets them wrong. set1: mov ax,disksec | ax = next sector to read add ax,#2 | disk sector 1 goes in core sector 3 mov dx,ax | dx = next sector to read add dx,si | dx = one sector beyond end of read dec dx | dx = last sector to read shl ax,#1 | ah = which 64K bank does read start at shl dx,#1 | dh = which 64K bank foes read end in cmpb ah,dh | ah != dh means read crosses 64K boundary je set2 | jump if no boundary crossed shrb dl,#1 | dl = excess beyond 64K boundary xorb dh,dh | dx = excess beyond 64K boundary sub si,dx | adjust si dec si | si = number of sectors to read set2: mov ax,si | ax = number of sectors to read xor dx,dx | dh = head, dl = drive movb dh,cl | dh = track andb dh,#0x01 | dh = head movb ch,cl | ch = track to read shrb ch,#1 | ch = cylinder movb cl,bl | cl = sector number (0-origin) incb cl | cl = sector number (1-origin) xorb dl,dl | dl = drive number (0) ret | return values in ax, cx, dx |-------------------------------+ | error & print routines | |-------------------------------+ error: push ax mov bx,#fderr call print | print msg xor cx,cx err1: mul 0 | delay loop err1 int 0x19 print: | print string (bx) movb al,(bx) | al contains char to be printed testb al,al | null char? jne prt1 | no ret | else return prt1: movb ah,#14 | 14 = print char inc bx | increment string pointer push bx | save bx movb bl,#1 | foreground color xorb bh,bh | page 0 int 0x10 | call BIOS VIDEO_IO pop bx | restore bx jmp print | next character disksec:.word 1 pcpar: .byte 0xDF, 0x02, 25, 2, 9, 0x2A, 0xFF, 0x50, 0xF6, 1, 3 | for pc atpar: .byte 0xDF, 0x02, 25, 2,15, 0x1B, 0xFF, 0x54, 0xF6, 1, 8 | for at fderr: .asciz "Read error. Automatic reboot.\r\n" greet: .asciz "\rBooting MINIX 1.3. Copyright 1988 Prentice-Hall, Inc.\r\n" tracksiz:.word 15 | changed to 9 for ps and pc | Don't forget that words 504 - 510 are filled in by build. The regular | code had better not get that far. .text endtext: .data enddata: .bss endbss: H € R ‰ć‹ƒĆ‰Č@ŃąŲ£€PSQčƒÄPčÕU‰åPVW‹~ƒ~t øŠPø“Pč! [[čņ ’uč4 [’učr[1öƒž}‰šŃą‰Ćū’7VčĆ[[FėåčŽøŅPčę [’6Ī’6Ģ’6Ī’6ĢøPčĪ ƒÄ ’6Ź’6Čø:Pč¼ ƒÄ’6Ź’6Ččą[[č‘čV1ĄPč;[é“U‰åģVW‹~1ĄPWčO[[‰Fžƒ~ž} Wø^Pčw [[øP†üżP’vžčEƒÄ‰Ę ö} WøjPčU [[ ö~ V†üżPč–[[ öĖč-’vžč–[éJU‰åģV‹vW‹~1ĄPWčā[[‰Fžƒ~ž} Wø~Pč [[WFņPFōPFöPFüP’vžč«ƒÄ ƒ~üt¹‹Fö1Ņ÷ń Ņt WøŠPčŅ[[1Ą1ɋVöVōČVņȉVź‰Fģ’vģ’vź1ĄPøPč‰Fšƒ~šv ø+FšPė1ĄPFī‹FīFņ1Ą‹Nź‹VģNī‰Nź‰Vģƒž}‹Fź‹NģĢĪ‹Fź‹NģČŹ‰ó¹Óć‹Fö‰‡ ‰óÓć‹Fō‰‡¢‰óÓć‹Fņ‰‡¤‰óÓć‹Fü‰‡¦ƒž}?‰ó¹Óヿ¦tøPėøP‰óŃć’vģ’vź’vģ’vź’vņ’vō’vö’·‚øŹPčęƒÄ‹FōFö‰Fčƒ~čvU~čs’včėøPFų’vų†čżP’vžč“ƒÄ‰Fśƒ~ś} WøPč [[ƒ~ś~ ’vś†čżPčŻ[[‹Fč+Fų‰Fč넃~ņv*~ņs’vņėøPFų’vųøŠPč­[[‹Fņ+Fų‰FņėŠ’vžč© [é]U‰åƒģŠuøŠP’6ŅčŚ[[čU‹F9FśuéQ‹F+Fś‰F‹N‰Š¾Š‹F’N Ąt ‰ūGŠˆFėģé'U‰åƒ>ŠuéøŠP’6Ņčˆ[[čé U‰åPV¾ŠžŠsĘFėōĒŠ’ŅéēU‰åģ VW’6Ī’6Ģ1ĄPøPč  Āt øPønPč„[[‹Ģ‹ĪĮƒŅ‰Nü‰VžĒFś¹‹Fü‹VžćŃśŃŲāś‰Ęƒ>Ęt¹‹ĄÓźņ‰×ė‰÷’v’v1ĄPøPč» ‰†ōż†öżP1ĄPč‰[[‹†ōż@‰Fī‰~š‹Fś‰Fņ‰vō†öżP1ĄPč®[[é0U‰åƒģVW1Ą‹ Į‰Nģ‰Fīø1ÉFģNīQPčO[[¹ÓąP’vī’vģč>[[YĮ‰ĪžoRt ø°Pø’PčÅ[[1öƒž|é‰ó¹Ó拇 ‰Fś‰óÓ拇¢‰Fų‰óÓ拇¤‰Fö‰óÓヿ¦t&¹‹FśÓč‰Ē1Ą1ɋVöVųȹćŃčŃŚāś‰Vņė!1’1Ą1ɋVųVśČVöȹćŃčŃŚāś‰Vņ1ɉųÓč%’¹‰ņÓāP‰Š™FģVīRPčĘƒÄ¹‰ųÓč%’¹‰ņÓāP‰Š™FģVīƒŅRPčƒÄ1ɋFņÓč%’¹‰ņÓāP‰Š™FģVīƒŅRPčtƒÄ¹‹FņÓč%’¹‰ņÓāP‰Š™FģVīƒŅRPčJƒÄFéąžƒ>¦uĒFš`ė‹ ĮQ¹XÓč‰Fš‹Fš%’P1ĄPøPčƒÄ¹‹FšÓč%’P1ĄPøPčłƒÄéhU‰åģ*VWdžāżdžäż1Ą1ɋ ¢Č¤Č–āż†äż‰–āż‰†äż‹†āż‹Žäż-ƒŁ‰†Öż‰ŽŲż1Ą‹ŽÖż‹–ŲżØ‰ŽÖż‰–Ųż1ɋØŖČ¬Č–āż†äż‰–āż‰†äż‹†āż‹Žäż-ƒŁ‰†Žż‰Žąż1Ą‹ŽŽż‹–ąż°‰ŽŽż‰–ąż1ɋ°²Č“Č–āż†äż‰–āż‰†äż‹6ø‹¼ŗ‰Ļ¹‹†āż‹–äżćŃśŃŲāś‰†āż‰–äżƒ>¾u÷1ö¹‰šÓč‰Ę‰ųÓč‰Ē‹†āż‰†ųż‰¶öż‰¾ōż‹†ųż%’‰†ņż¹‹†ųżÓč%’‰†šż‹†öż%’‰†īż‹†öżÓč%’‰†ģż‹†ōż%’‰†źż‹†ōżÓč%’‰†čż‹†Žż‹Žąż‰†Śż‰ŽÜżø1ɆֿŽŲżQPč[[¹Óą1É1ŅŽÖż–ŲżPRQč[[YĮ‰Žęż¾ężŚŚt øĢPø²Pčƒ[[ø1É†ŚżŽÜżQPčŠ[[¹Óą1É1ŅŽŚż–ÜżPRQč·[[YĮ‰Žęż¾ężŚŚt øčPøĪPč:[[ø1É†ŚżŽÜż’¶ņżQPčăÄø1É†ŚżŽÜż’¶šżQP諃Äø1É†ŚżŽÜż’¶īżQP蒃Äø1É†ŚżŽÜż’¶ģżQPčyƒÄø1É†ŚżŽÜż’¶źżQPč`ƒÄø 1É†ŚżŽÜż’¶čżQPčGƒÄé¶ U‰åģ†žP’v’v1ĄPøPčšPčÉ[[†žP’v’v1ĄPøPčŌ [Ê0äéw U‰åģ†žP’v’v1ĄPøPčÆPčˆ[[’v†žP’v’v1ĄPøPč [ĆXˆ†žP’v’v1ĄPøPčvPč•[[é U‰å’v’vøźPčļƒÄøPč€[éū U‰åV‹vø¶PVčS[[£Ō’6Ōč&[øPVčƒ[[£ŌéĪ U‰å‹F™1ÉQRPø1ŅčķRP’6ŌčƒÄøP’v’6ŌčgƒÄ=t ø PøųPču’[[é‰ U‰å‹F™1ÉQRPø1Ņč§RP’6ŌčŠƒÄøP’v’6ŌčIƒÄ=t øPø Pč/’[[éC U‰åé= U‰åV‹vFP’vVčƒÄöD@tVč[é U‰åFP’v’6@čōƒÄ‹@öG@t’6@čę[éń U‰åPPVW‹^ƒĆ ‰Ž‹F1Ņ÷v‰×ƒĒ0ƒ’9~ƒĒN‰ųˆ‹F1Ņ÷v‰Fƒ~uՋ^)óƒĆ ‰ß‰óF1ĄŠP‹^Xˆ’FO ’uź‹Fé U‰åPPVW‹^ƒĆ ‰Ž‹F ™’v’vRPčP‰ĒƒĒ0ƒ’9~ƒĒN‰ųˆ‹F ™’v’vRPč3‰F‰V’v’v1ĄPPčN Ąu¹‹^)óƒĆ ‰ß‰óF1ĄŠP‹^Xˆ’FO ’uź‹Fé U‰åƒģ$VW‹^’FŠ˜‰Ē ’uéłƒ’%t ’vWč‘[[ėŽFō‰ĘFō‰FšĒFä‹^€?-u’F’FäĒFā ‹^€?0u’FĒFā0ĒFź‹^’FŠ˜‰Ēƒ’0| ƒ’9ƒļ0ėƒ’*u‹^ƒF‹?ø ÷fź‰Fź~źėŹĒFęĒF胒.u9‹^’FŠ˜‰Ēƒ’0| ƒ’9ƒļ0ėƒ’*u‹^ƒF‹?ø ÷fč‰Fč~č’FęėĒĒFąƒ’ltƒ’Lu’Fą‹^€?t ‹^’FŠ˜‰ĒWé’Fąæė’Fąæ ė’Fąæƒ~ąt‹^ƒFW’w’7VčNžƒÄ‰Ęéé‹^ƒFW’7VčŲżƒÄ‰ĘéÓ’Fąƒ~ąt<‹^ƒF‹‹O‰F܉Nރ~Ž}Ę-F÷^Ü÷^ރ^Žø P’vŽ’vÜVčóżƒÄ‰Ę鎋^ƒF‹‰Fģƒ~ģ}Ę-F÷^ģø P’vģVčgżƒÄ‰ĘėcĒFā Ę?FėXĒFā ‹^ƒF‹ˆFėEĒFā ‹^ƒF‹‰Fšƒ~šuĒFšžƒ~čuĒFč’‹vš€<t’Nč|Fėó‰ųˆFė»fX鉚+Fš‰Fģ‹Fź+Fģ‰Fźƒ~ź}ĒFźƒ~äu÷^źƒ~ź}3‹^š€?-uƒ~ā0u‹^š’FšŠ˜’vPčG[[’Nģ’v’vāč9[[’Fźuš’Nģ|‹^š’FšŠ˜’vPč[[ėēƒ~źuéaż’v’vāč[[’NźėēU‰åPPV‹vW1’öDtø’’PéØöDuø’’Pé›öDtøPFP’4čƒÄ‰FžĒDGėHĒÖ%:‹D‰ĆƒĆ1ɊNQ‰\‰ĆXˆ‹D@‰D||öD€u’t’t’4čŹƒÄ‰Fž‹D‰DG ’t+ƒ~ž~‹Fž9Dtƒ~ž}LėLø’’PėĒD1ĄPXé—U‰å’v’vøPøPčŠƒÄéU‰åƒ>Ö%t‹Ö%’Ń1ĄPPPPP’vøP1ĄPčkƒÄéUU‰å1ĄPPPPP’vøP1ĄPčNƒÄé8U‰åPV1öƒž}‰óŃヿ>t ‰óŃć’·>č[FėįéU‰åPV‹vWöDuöDu1ĄPė7ƒ|1ĄPė,’t’t’4č̓ĉĒ9|uĒD‹D‰DWė Lø’’PXéøU‰å1ĄPPPPP’vøPøP貃ÄéœU‰åPV‹N‰Ŗ‹N‹V‰°‰²‹N ‰¬øPøPč[[‰Ę öt‰š™RPė’6²’6°XZéSU‰å’v’vøPøP苃Äé:U‰åPV1ĄPP’vP’v’vøPøPč,ƒÄ‰Ę‰šéU‰å1ĄPP’vP’v’vøPøPčƒÄéšU‰å‹N‰Ŗ‹N ‰¬‹N ‰®‹N‰°‹N‰²‹N‰“’v’včQ[[éµU‰åPPVW’v č[‰Ē‰>Ŗ‹N‰¬‹N ‰®¾°ƒ’‰ųO Ąt ‹^ ’F ŠˆFėģ’v’vč[[égU‰åPV‹N‰Øø¦P’včP[[‰Ę ötVėƒ>Ø}‹Ø÷ىŲ%ø’’Pė’6ØXé(U‰åPV‹vW1’‰óF€?tGėõ‰ų@é ¹ė ¹ė¹ėU‰å‹F‹^Ķ ]Ć[YZXV‰ę‡\^9Ówr9Čw tø’’Ć1ĄĆøƋ‹OƒĆI|;uö‹_…ŪuøPéä’ć‰ÓėļVW‰ę‹\‹D™‰×9Āu6!Ņ}÷Ūt.1Ņ‹L ‹D !Ą}÷Ų÷ŁŠ÷×÷ó‘÷ó!’}÷Ł÷ŲƒŁ‰Ź_^[ƒÄ’ćR‰Ē1Ū!’}÷ß÷\ߋD ‹T !Ņ} ÷Ś÷ŲŚ÷Tž¹ŃąŃŅŃÓ9ßwr 9Tvāķė+Tū@āć_ė„VW‰ę‹\‹D Ąu1Ņ‹L ‹D ÷ó‘÷ó‰Ź_^[ƒÄ’ć‰Ē1Ū‹D ‹T ¹ŃąŃŅŃÓ9ßwr 9TvāķėŌ+Tū@āćėŹ‰ćR‰Į÷gZP‰Š÷gZ‰ȉŃ÷gŹ[ƒÄ’ćVW‰ę‹\‹D™9Āu:!Ņ}÷Ūt21Ņ‹L ‹D !Ą}÷Ų÷ŁŠ÷ó‘÷ó1ۃ| }÷Ū÷ŚƒŪ‰Š‰Ś_^[ƒÄ’ć‰Ē1Ū!’}÷ß÷\ߋD ‹T !Ņ}÷Ś÷ŲڹŃąŃŅŃÓ9ßwr 9Tvāķė°+Tū@āćė¦VW‰ę‹\‹D Ąu1Ņ‹L ‹D ÷ó‘÷ó1ۉЉŚ_^[ƒÄ’ć‰Ē1Ū‹D ‹T ¹ŃąŃŅŃÓ9ßwr 9TvāķėŅ+Tū@āćėČčYčĆøŗčė0øŗ’ė(øŗė øŗ-ėøŗDėøŗZėøŗqė1Ū‡ž…ŪtP’ÓXĆ»SRøPč;čóś‰ĀƒśsŃ⻾Ӌ…Ūt‰Śė»¹‰Āā0ˆKќќќāķŗėŖU‰åĒÜ%‹^‰Ž%‹^‰ą%‹^‰ä%øŚ%PøPø»Ś%¹Ķ ‰ģ]Ć胜_^‰ģ]Ć^_ėųŒ”œ¤¬ kernelmm fs init fsck seven file names expected. ----- ----- Operating system size %29D %5X Total size including fsck is %D. can't open read error on file can't open separate I & D but text size not multiple of 16 bytes. File: %s text=%5u data=%5u bss=%5u tot=%5D hex=%5X %s Separate I & Dread error on file file header too short: bad header length. File: header too short: MINIX is not multiple of 16 byteskernel data space: no magic #mm data space: no magic #fs data space: no magic #Build: %s%s block read errorblock write errorÖ!Ö!BÖÖ *4v D± Ov Un Xf c,d“ e!f!g!oy s?uq xi (null)-Dčq’’Error: Division by 0 Illegal EM instruct'n Err in EM case instr Variable out of range Err in EM set instr Floating pt not impl. Heap overflow EM trap 0000000 octal ņ%ņ%: Increase default stack size from 2K. b=/usr/bin l=/usr/lib t=../test chmem =50000 $b/ar chmem =16000 $b/ast chmem =60000 $b/asld chmem =3000 $b/cc chmem =35000 $l/cem chmem =30000 $l/cg chmem =16000 $b/cp chmem =60000 $b/cdiff chmem =64000 $b/compress chmem =64000 $b/cpdir chmem =30000 $l/cpp chmem =40000 $b/dd chmem =32000 $b/du chmem =60000 $b/diff chmem =8000 $b/df chmem =32000 $b/dosread chmem =60000 $b/ed chmem =8000 $b/fgrep chmem =50000 $b/file chmem =50000 $b/find chmem =60000 $b/fix chmem =8000 $b/grep chmem =8000 $b/gres chmem =8000 $b/head chmem =64000 $b/libpack chmem =64000 $b/libupack chmem =20000 $b/make chmem =64000 $b/mined chmem =8000 $b/mkdir chmem =40000 $b/mkfs chmem =8000 $b/mv chmem =16000 $b/nm chmem =40000 $l/opt chmem =8000 $b/paste chmem =32000 $b/pr chmem =8000 $b/prep chmem =50000 $b/readfs chmem =8000 $b/rm chmem =8000 $b/rmdir chmem =16000 $b/roff chmem =16000 $b/strings chmem =12000 $b/sh chmem =8000 $b/shar chmem =60000 $b/sort chmem =16000 $b/strip chmem =8000 $b/tail chmem =8000 $b/time chmem =60000 $b/treecmp chmem =8000 $t/t10a chmem =8000 $t/t11a chmem =8000 $t/t11b chmem =8000 $b/uniq chmem =8000 $b/uuencode chmem =8000 $b/uudecode chmem =8000 $b/wc for i in 1 2 3 4 5 6 7 8 9 10 do chmem =8000 ../test/test$i done øĄŽŲ1öøą/ŽĄ1’¹ņ„źą/ŒŹŽŚ1ĄŽĄŽŅ¼øĶø1Ū1ŅĶ»¢č1ĄŽĄŒŚøv&£x&‰z1ĄĶ1ĄŽĄø»¹ŗĶsLĒÜ 1ĄŽĄø &£xøš&£z1ĄĶĒÜ 1ĄŽĄø»¹@ŗĶs1ĄŽĄŒŚøk&£x&‰z1ĄĶčB‹iƒĆŃćŃćŃćŃćŃćŽĆ1Ūi“Ķrs”i;ųrÕŗņø īś‹Ü”śŽŲŽĄŽŠ.’.ü‹6Ü”i1Ņ÷ö‰Į‰Ó”išH1Ņ÷6Ü8Čt)ÖN”i‰ĀņJŃąŃā8ōtŠź0ö)ÖN‰š1ŅˆĪ€ęˆĶŠķˆŁžĮ0ŅĆP»č 1É÷&āśĶŠ„ĄuĆ“CS³0’Ķ[ėģß *’Pöß’TöRead error. Automatic reboot. Booting MINIX 1.3. Copyright 1988 Prentice-Hall, Inc. /T€03gĢ-¦aSĜX>q‹”f”-9»Ć+ƒ„A 4PĒr{Aœq’z1ä pxsš ø<ļp$œB¢aāMHĄh(ä…œąłŠ—ŃaŲäˆ :Q““pdŃ}wł.@Ļ '}pˆҋ˼$!_Yų‚ŌƒüłŽu.|Ā ¹!wøĖ@©+ 2zĶ{7ÉŖJQŠŖ!GĀ9šĆhźCķP™*‡ŽQÖ¶g,ŌĮ­ĘkšMż„‚hŸzø!3‡·×1ßju/œ¾`g/ēŁ’r·T‘H„,ōbDˆž’ÆöKŸu›ĀüR†+Mdöƒ™l’¹zµŖ©·„€ˆK#ä./8~ŁLę7C˜kó™NC†õĄ9\ęՐ19•—Ł”¾%Įøt‚«…"h/1§Ņ“@5( Qę_ˆ1œ oJż ZØśÕÅ0p&ĖŲÕ§÷Ō™˜ļėśš Ōó"a _h: 'ž„|µ`ŠuŻķŽw½ėšā†żz_ō2ö»ĀĢIˆĖuwÜhN1čļf“ŗ¹Żī]4ZAzŻ&¾„„ė™S`ŗÓß÷Äć’ō_ z՘ ūŌėš Pŗķžv+Ā>ģ³GģeąDsźUļ=¶†Ļv˜ Ÿ „~ńqÆté+?jŠ’Āäarl߆1£·¼dńŽ'ńćõ–öó[_~AJ E°B˜€D'°püł‚ŖŠN%Äž_@ųWśĒøwyĻ&čÖ›Ēnަr2ńʃé#ŌcEz°yų¦H ×}łv}˜”>˜kŌpłQGi€'ƒG€»ƒ{āöaš|„—ĶgCGoŲ3HPNpD(p=|‘;Š2€Ųķ7NŁĆƒ>„÷“;¤(ŁóEąö’k»ƒM/õ2*0+g *``i€`{ę…B<×( 'µicøs’`¼U>1-•8{¦i ”‡+B‡Ń5SČrvø‰#?3)¶b””Z††„Y9göcY¶‘t‰xd*`vpąˆ[1K&‰\ƒeA&b˜XdŠČĻ#Š\ó<>$=C_A!2„Če8±…¼!wą#f@j‘!!Ųʋf 2E—`øX»Xf[Ąw·;]0‰Ž3ÅćnD@5i¢+¦” īņ2D°) ąÆā0ĒØ‹¼(͈xå\#ŽŖń×”l™”ŒĆų27ņ%2*äˆĻqj.Ā‹éČ~Š8‰ƒć"óhõ3ķ"7¼‘§A¾(²Ų)^ó<_°^ŪUgR>{6æ…®=˜a@°č0€öe{č^l°{†m a¹Äés(wnōų.»%^/• ‘ę’s¦’ŪŃ@ÖHĪ-!`opˆ£‘/6l_ €‘PÉńĻĆY p•CŅ0YŁP\‰‹Yé3dر¦f0p^e`Nń Åg5Qk€U-i`vß8ćd-‚õ>o†©o‘±aį: ņ2C€6p1郘l°˜(W("=M/ĢV P—„™™{Éuї|é—ó‚[ā!^¢q)rš”l0+ŃåĮ<”¶“+”b .YZ‘a*Ŗ3œÉ²³s1!@Óå΁`Ÿ©”Yį…”†ę<31åń["C‰ao89”šJų:uøōTŸ ˜W‘“'’,z[!@)h+g]āåf€EŹįF\;:ÕXŹBEué*^Z_kdi»(E¶dĄY"Ū:=ś:I–KŹ!Ss+_pŗ–ƒ9šƒ,š#{·ö諼!9?'Ū—¶9‹²–9/+2TÉ¢…h+_R-Š\™!Å×é¹]idÜ^UI{Pr!B+Üõ%Ԙ6/ń?³¶–|»ŗ£«j±¼¹d¹ž“6i€O˜‹ŗæC£…ŗ»µ– “Ė|‹O£›/ἓ½Ńū»>°»Ōø¼„廲Ūā[Ł«½Ų‹ŗ„KŗžŪ…ųÄ]"Šk204P6p8A ÷SF [Ą·…› +ŗņkÉö–¹—œi”ĘS¤”[T—ė¹ō ²ĮŃ+¹ń ó»Æ-p\ŁĄ,9G“»Į0„” {©°‘®‰e*K›aµX “{;S)pÆĆ· Q³/ĖT|‹†dP‰TVT%!`³\PIä›.,Fė¹C[E;E\Yŗ× _ü³ ĖÆS Į])ØūŁÄ™{#5!J\@J:`Åd S£T°ä±œ£ėĘ ĮÆbps|ÅūĒ5„œaą’žĖĒp쯁\ĒX|žZČķƒČ:KpL°ü±vŒ³icȔœŠĢÆtČt¬É<Ź’¬Ē‰lÉüj¤,Č'ąŹ©|Č{ĢŹ\0ř\ÆfŒĒž<ŗv1£l@lPe‚—ÆT³2Ū†8 0 3I¤„ʱÅEKhü¾ÖģH2Į!EĆQ{ĆŌŃN„c@钘wų2ćįc`ŠN““YI!Ārć”j–AVKR›t°†"qĻ2ŠN2¬øČ–’lœe©nztäNt+“v[²‰ŪlŁž„•\yød.&¶ !·?'+¼khŃÜeĻĶf`ŅQü²i³Ņ÷”Ož+§³a(PŃK#ʕüĘüŹČĶįČ{³빿̠Ā‚ŒÓŌ½¼Ź<]€ ½ųŖųÓś*J%\½…fŃķ[ZÅ]8}Õw ‡8Ö$IŁ‹RĄ‹ŗ(¬†™¤bœ¤ŌUü¹œR*ąT¬[Zj½?ƒÓó›wœ½ļK¹7mÕF|l@;&@U«ōszÓUmтT¾aż3ČÄK­¤ŌŁKÄÜ„K˜Åšŗ4ż±£Ō:½Ó}<Q]Z”<€ #µµ³ŁNeä«hĆMĶŚ¬üĒ$QPŽ“ŖŹ4άQž4ÉŁŹBšŚ¾mĢĮķ-20ܤ•ŪØ-JźÓŪü4OØGĮŻĢ—ŻĘŗ”üŹ}Ż ÕÜńĮŻŌėŻŖ¬ŪĆrIĄZiąZ–f*¼YéĶĆ;āc+YPr†V›\¼‰4A Ń$«Ć Į*l@kĶŚš_®¬ņĆ\eu›Hėņ„ gĄ ż8ć*˜1ć𔳋”Ÿ8»*,€čQ\IŅ«ĪlÄķÖD(ó—6Ō®¼ž[¢[±Ōn§.ķ·üč“”įģņEsJŹ]1šģ~8ˆ‰Ćī\¹’Ź]Nš¬—/Gé1‚ųØC3aµIy€Ų§ JE­Ćš*œÕšļ¢ˆ®Ļń#¼ø]­ć(ŗné˜7ē+a*°#`Šāļq¹±ņ¦fšf™YčŠė戎µ.ĀŚÆ"šµŒó( 1_a<Į-ßĻ'ņPKš¦Ļ)ŒcµeŠ"ŽtG P·D[õӋÄ!ÖżJ;|Ä;k³œ¬–rµA )ē§:ź¦ė±ė§|z Ńm3:÷<†3Y2ųüņy0(ĄöøBE-ųøčo2ŗ§ńøų/åSÅ@/E?ŗŪŒé½ĄņUłĀzˆ=ß§uš§øįĮųz÷5zĻ”¹•’÷spłZĢ\ģH^Ģł„­²ļ(§ļ²²%²{tŲqöb/ÖQšÆ pō#wĀQ~1!0õlPõ“ ŹÜŲ¾ŸŃ²_› ( ÷»æÆžŹõÜ’2‡ķC Īžīŗ•±CĻ{‡®#‡*e`–5ŃR6ꦚVcfµ„ł‹IŠ5æ\=T‡øČÉZ“/o¬ń€¾ĘV²\'T’ÓöīZß]/Æa„æ&JHɃhYok‰†¹ą¬6“źK ń0hEl°…øģ8Įƒ'Åu J‰”S| #œ†±¤7SĆźp ä! Ȑ@E¢!܁łą&Ė„&Š$[Fpå b²ŠMDéčč„«—ųāPZ°čgD³"‡rx= Qq õpNÖqjzɆ;Č#™ä ą” JÜA"¼ 'ŠMų €CĘ”dD90ė‚}ʁ ¬¼,£h6ĆCŠ:`čNE-fŃ,•„Äō².Ba˜āš,ČBR”$U”/¤qÖ5Ŏé ~¼ōĻ£¾Ńå`Ž„`€S~y0Ŗdʲņ²b–ų³ņ=:@€1ó@čBņE¾\Ź™Ģģ&ތbµņ Ø@ €™FiČx‹§)7¢ęp©šĆCjā€nȤĒÕäJG1§Iķ3Y%čŒaÓt‘Ķjx6eŒźl3™śĮ¼…Ē“›«“n*³»y)iåTł+}óoÖĪų08sgį”Y‡³¤F^Ya.†øG'@;ѦŖą<øfélGēWn¹\šīB¾$—§į/}ĻrńĀ„™—åā[i˳äŸūpĻb60 Ģ3'ąĶō1i%„Ļwq.'„7GJį"źųēbQCŪ& °ŠĖUpD> ؒ"•ōń1'ŸHIö%3¤DW—rSD@\©.…)4µ»ŽHl(fŹvč:ÅßĻ™øĆ '¦Aq¤eĖ4,i L®m6ļph½Ū]”[ŖIo‰&Ķ'C<“÷ҊœK®˜F»#ī²zj‡xłęeCؗÓ`6„| »ųåDš—Ć`Jˆ9 ¦ĢHUŲR×-L!ś čøš±–©j8B–X™!„ÆP¶Ł9‡]w9Yt4‰Ÿ1Gq—SgŖaE“õóŒ@†QĮ£P„+EÆ@*!ŽŠ Ø5`Ō*Ø4rŽd`÷(}¬’#ņ€Rˆ#ƈ‹`RM Ķ!'©}šėųåN³É5C żZÆhŅ:zŃŚęģt"źhwšSf$ÄŻ•5‡ōŚäŠw1ļŅu›iwš¦^?Tz)čM¼¢wD<3aO/ÖŁ½ F¼Ž]kųziģ--æ@ܙąŪ{oÆ2R¼=7č5š t¹ičŗgśĮĖK|/ģ¼Č7ļjß"ę|«.÷E®Æ„š”皁9«1hÕÕ#ŚP.äBSŽ Ahh˜~ 5ŪØ±T7ęĮō+ˆi0„°j`ҹöJ Ļ€äsķW’FÕkAMą$›œmó޶mHźĆ2–Šöš!Dāåł Š€ab®,Ō¶u)ŃČ\Į]†OÕQĪ5Ū@eļbĻ >>`ēēžŲsƒøŅP}¤|d¤…Į^@0™)uŠ»d.oAPbtņŌ¦(‡*|…±°MY`Fx8 į* u)ѝņ\I A!"²SyY7“:³ż› ’ĆuxmˆĮ18śDŗFć…Å Sõ~]¶+Ex¬²»ŽA±€ÄŻSi"(@ <ö{īŻQAÄ-2Ä3Óš[üŃ"VFC¦šZX;pVep› [i·vW ؈±øū(LŹó"dńA‘XŠęŸŚ¼Ą:jy§ \–I7ęä‡71ɤ/Ą·Œ19Ģ–žf¦(ćå[¶@#ę.ßgĘb˜³J_4$¦Ä-Čž“©‚ %G“bóŠo4Š÷iC©Ųm®b°¹ŁqŅ6Xģ+‡ūĖD†~Ā@ ŗŒ‡!`X%:ōŚ„46Ņ”ÉÓøŲFbķ@źŠC˜øę8Ī€EĘ=,PY­6°‚ ĘE4·‡Pßźv÷Ņ·­|H@Ė4ŖG©@ĄvĮ%ƒ!l$·›ŒĆč{}n ®Ż¬Ė]¼Ģ­0X#²\°ŻXóŒI(ŝ’Øģr+"lŁÕ¼ßw å°Ūv§.īż¶É÷ PćŒŌ|YWåh&LX¦ ĢŽTŲæß2@–·ļ¢ķ¾XŁųRJą–Ēržéʈ÷łž¬§»_:Ō-/H9īŠ€ÆP˜Ł²S޼pyņ~]£k•3ļŁķ{™0Ąœ™¾²|Į:…—ŹōĶ*) įn„j@‘¤—W‹jÖ£FøóV^ѹņ.Ų-Ķ/$†¤f«”GSk+»¹†ÄęŁ;fj/ł„ADøķP°v”ó Š8ē7•¾lpTįgæ”ć/’ Ė”}l‚›BG•ž›}³ók‘Ī‚˜ą(ßźL;싵įĖn`°ć%¦ĄäĀ:ć·k$‡“øóŚŻ5†PgŽK<†3Ø15?c÷°ŖqnMb^¼PP ²Į—ŪKR(®†Ž–°…̇ņßh枋B·£w"9ĀūeĒń9+hq\óņ/@y†ÉнNß5q Ģ׌s «a=du‘“f“•GDÉņų šF~ É„ŅY‹€ä†ÕņX·B£ĒL&I6É$Z4™”Q¬SSōüÕ;,Z–ż £Œn½y¤GEiP½Dōü€„ ?‡½×Ņō`Š·FdtŹ ·ģBŒ©”Z(gMŚøQ"ÆāœÉi¤™9,ĄŒŹ<ł”øLF·P3ZŪĢvu7ó\{śQ“Č#©£Ź” y6w>ĀØ35¤Ž:‰|źōģy©Ģ¢^ž¦zS£źk˜’ ØĪ»Ŗw8`™E}yl… z4ĒĶą,3bĆVLÕµŚÅÜź3—ė²P(Õ”Ėüå&‚mņLŖ–Óx`Z;Z_ķØĒ«čNϐTĆżhž.›ŲŃ­&n¤©ö”<†EóŲ wĻeB¹s5äPģ\/øv'DS4ĒļÉŚ\äy2C]ę`šÕJpīĶ"8ӌŖ#œļrĄfĘsŠ%hś{§ƒ@ƒz:“öiĖš§ĒķĖH ‚š~"ėUŖ÷īØf‹ś0“ėPl’Ö”ŸsąZ^Q½cZZȃX¬ž>üpHB\śD·–›††Š o„Uč [Ÿ’GĘlč›óVKÉzŸw*/֒½u,ÆķŲ[7–&r°)&nĶ];gˆgUm«Y5ĶfH(S«lėĄ²m'‚Ł2›ņšģš=ćØ`¾ŻŁü¶€ą Ķ  r½9ŪF;AńČŠ'–vīUĢN["@m”=µeóܖ…šö‘l\M{WƑˆĻYŪėpkO¬£±fŪ Źu kR8¹™õz&Š !>c  1ģš7)ūW‹€fż—Wvč֕v@3_KsTp€ˆTĢś–g“„Ūm3Å2{VCo™œ.Ԙ“wi7XäJ›ł(gź“œSK4Īšēk‹ŻM—ĆNÖt$=ēź0°«ÉIģvŌūͤea¬'Eܞ9•[WK›}o£ÆĪŽ·łĮgļm“Į Ņ÷°–ė¬!ųķ£Ķ“åīRPÜ”A:čČĘMœƒå¦)p:?oē»ŃįOŽ Ļß+šgK#Eötnާ{wÓ÷ÜHįóŸĻ’ŁJošć¬Oå3} ŚĆĀUØĀ½õŲĘÖ¹„ßśó‚wŽžŁü{#†ŽpĄæ©T1Łśyóܜ)ø)¬ Ō$q» æĘ¤0¦³Äó\äķ€{TŒøø!Ø0Gvęz”tד‚ܽ7r—C¼Q&7b9ˆ•;š\®l(#JŠŁīŖ2¤ķF;“†v6豍6‘¾ }™±C•cFÄ‘1Ō ²3Wmš»’cėŌuɄ·YF½Q=ŽPŃ2¼/kŪ›¦É•×¹“¢ö“唝’”ōnĀ}÷2ķ.ANŌvni10:µćceųĀ4žĶ% ÆµŅ‚ŗ*ßDм:`±Ņjf#ė" ‚¼%Ų€7ąį€z\ĘDl ŗ^ļ«—=ķ|±ę>›7;Ää’¾²W[’ńKņ†”#m€äę×<æ,$±[ZünńE»ą·žƒóe¬ĪŻ;/æĢóeźŪ$mØęń\ųÖómž—ń¹7OūÜYsęŠ+Õ..ÆņSM1eŚÆ¬JõX~ņņ„B÷ńR"¢+až…Ö׀{_x‚`#€…K(y¤ŽÓÕą€yBę|c²įĪTbœUbDō``Cµ¤ŌJe`tH)9f6D«E ŁI<‘ckQ({Ėg‚[DX]Ĝ¬°Īœ‘a(]5LE„¾”Ć<ÖUd©<ÆO{ÉśhL@EŃJ$dąė=•Æ$B]ƒŖ>€&E JVė8( ²žÉé@äš)”œluųÕyYē,€ø†śq–¹«ź$ńĪrĒ.ÖӝƒHÄ+±E …¼š d®½9œŚ½QxVOC\ø¼²ZŅI‹nn]†‡ ®$œ¤ŗˆ‘ėEG ŒŽ?ƍq—~=FČVĮNŲiĒx@쨒pĄĘNÖ_ū„jIT¤Ŗ_ö jc m£„Ü³æ ŠĪ]Ę»iØ]-ŖvÉŽ’Zū xķ±]rh@Śžwl;āĮķ!Żk¦hĀīĖū1pw±%|øKØ5é ‹„k¦bŒ?÷ć˜SžŗZ·0ēęh¼V /“ūl°­0#¹p÷ēīSfĆw×””ż¬ƒõēŽŁgƗ›}½ļÄEDsĄP =YÄ“•…]D ‹*ē;„»W"4&6rcŗóCÜŐõ-bvĶŠ£6W7%ł%ĻÖ7< µpy¼`ŻDéäbK~h攕U•Ą B¼āmtÆbžX›Œ†ć˜ (©ū'łŗˆ±Z†f?÷ĘžŲłĢ.R»äEēńŸŠŠ;i'‰€ÜĻæč@`k^µķQ1>HIĻB­ķ¶¦ėµ nN°Ę>żøC }ōĮ”‡TT>i‡/§ļņ»ˆė5łŸčēZōŠėF¬•k­fĢĖ0 Ö‘G–gÆrxĪ3–¹õ°*ōéśb>"ż”t>)½‘R@+}_¼¾+yN"äALB`©ŽņÜuĄōasw󇎓FGU‚½ķ‚o6{õI>Fų¹ņ¶kš= @ųP‚µņ…įkŒĆĀ ʖ‚ßńĒĄĒ'>rĶ;̇ µäC°d“b]’Ģį'nĄ[WŸ‡}„€ļ‚ Ōaģ³žŁ•ū=ω¦įŠ·ų²>rżŸæē7¾ŅśLßāÆ"éÖ(Ōw ¼³fõeĄ;!ޔŧ¾, »h€ v~ÄL™Ōb”•éČ)(“œéa€‚L6¶a}¬«{¦Ć•ѹ)ųM”5@öyŠvĻ­M(©·£TքžČd}ž*=E‹¶ŌÅgP±±ųƒkbQaK¼(ƒčHZŚ0üoųt3 bV» wKÄØ8ʟWf%ś†·/ėƒ/€ų]Öq€ų䦯ģŚe9ņĘŽ@4TōϿ޶ŲP—·Šƒ:ģ©•÷ „ō'ĄTr|ŗŠ{ŚoõRž‰†Ī ;Ó%®Lćč§#=‰č~Ŗx öSżtsŠŠśŁMq½¦! 4Į< ÜŠSāÓź cŃėż’žGCyŠŸa’ŽÜÆF޽'JsąŁ’[”’oū!`®䊹 ŌJ•‘`>hф×4¤Ć€Šż%ū÷‹‡‘ČŸ3 >,“wÉ59ī]„$÷ @.÷zŚž™P-R4Ģė¬>ś<čóœn¬ČĪÖ;’e =į}Ę7¤>†$QęŸōŠ_²ÓņĢN”‚hAĆüčż³ĻųÅÅ]Č@ŸxÜe H"Į)^Īæy *Ž”;‡M„SęŖ±>O”";[/øƒNW¾!`®×@Œč¦‘c’o¦ŲÉc'}žBEv¶NMm9a[ƒ--āUÆĒQų»Šżæó_ž_VdBĒltēß’¬w«ńč`/öä F®ī2mÖŃqżž’öŲG žØæz&ī’ü/%ōJĢ«HÕ2”cb°āÆ7¬ד ƒłšß½xżv¦ÄOįóUķÄaeBĒ ©BÓrčóėƒL°I³·kwĘ>ś<…Šģl=ĀŹ„ŽIå°įˆ“k^ÖB.Sat×>ü`Ń³äkDÕB|B²°Åóz!ō(< y„/ņN¾Xķ0c4<c”TZscz|]ł†€¹^1ā˜+)(ˆń8Bō s…;$>ßŲ•ė2wæ&—‹ ]¾ĢMśo7DŒŗlNÜŅ?gkiiųŽUæ@qęš‘œķ˜ćzQZ^¾-vüŌŹE/ü*|B² ŗ|ōu,Ņuł¶įåšø ĮåĶXz[}r”ty¼øx™u¢žy#RLFܕčķŠKx'[„ń€×Õ1Gõ-Q$OēVĖ“.1ž¢„œdO!^śČ<7š51Q :čę9ąT: z„–(’§/Ā똯ŽōrÕȇ*ķČ„eŚž™P-ŹB ŒŠ@šŗ@„%ĄŁF Œž¹®b2ęēóœ»Ų§»˜>ŗF­•Ø+S+Ųaaa¬}Ź”–³D”i`ƒŪW-0Š6Xču§1gūiųŽUæ@qŽŲ*œ¤AĶˆ—9g91±¤Æc‘®Ė· //šiŻ‘[Hs\wб‚Æā¢Ņ\Če*G=BKÉSˆ0žc®ćfč˜&c:޳ŽyL«}:šįž?`Hqdr‹`„w௖ Ūō1CˈK=¦TP‡cØ |ˆ ^ō±¼ĻcŒ»ø?ß{,"|n”±®Ž¹¦!„¦b!Į‡Ÿ™œ,&Y4u@ ĄxÕæ“& Ü&Ѥ&(Q°O >E šĄSÄŗJ6-¢!€ėˆ‚ƒŅFGJ˜E;*ø æ®Lį™9$ø}Õb ĆLüöÉÅBžAł·E‹²¼{RØ‘WśĄżŃĖ>ŻÅō±T|'xóéLqšņh¼ė˜æBC`„7gÓ<Ėwˆź^""'ūōõÄd|y>#xŠ–ā‚ƒBMd÷"Ć>U}õq¤©8ę’óŠJpؕņ1œķbɑ¾Ō÷`ÖŖmF6J9Ņ—.Z†RŅFUWä¦<@E,ƒv˜1žˆŻ¼*ČŁ¶w¦iKtsļŠŒÉ*.«;m%čq¶ķiŚݼ’öø€¾;pYŻi H՜Ŗd(%ż»oØ }o@Wä¦<„±ĄŖ‚œm{gš¶D7ē³Ō˜¬xą²ŗÓ@®1čQėŹ8&c—Ū£x9‡h…<ƒr@†#GtŃKŻ-ÜÓ¦īzŌ“‘ǼBą^ĮgÖy|ųĖi –.ĻēĪų27ĀjģEBōxĪŁØJ¦Y é/E–†ÕØL ‹Ģ1+6"[€@ĢcBN‘„aüĮ†³Ą0SĢ–u–Q2E–†yP± Mēzų…a¦˜[ć,£dŠ, gÕ¦s=üĀ0SĢb@ ę1!Ē“ē˜‘?ąWZ1ƒR!Ś@҈čDL9€8ĮcAÕØ™CŅīQQŅā~žA©m iDt"ĶVŗqT_ AI»GEI‹ūy„B“¤щŲvM·f ä©IPك¶ßÜt{Ńū9ä6ĀjģEBōxĪŁØJ¦Y é/E–†yP± Mēzų…%q$O¾sØMēzų…%°Šy x€”°Mó©Q®=žCk¼TÄ ÕP+D™Ź¬sZ¾¾ZU®=žCk¼TÄŹ~X!Źt™®Üʓ—Ą¢’7ąV!ōpī¬#7֚švŽWŅ*S(ސŒf’1–W„ ×8~Ÿb\«Å/ß«X”Ķ*1įķ†Ī¬§)Š2— 8pųUĄ€•,Oū~–ōEĢ>ä"ƒ €s2|%Ē6~üņ ,PÉčŃۘ§h)[€ €s2L8ŗ@čŚcp`‰ō‘q\V8ŅVJdpĄĻō‘q<@H"GH‹eŗ….aÓP•G—ĒK³!Į°ńTĄ€1ąŻf>XZŗ ®A޵˜Ä5P0ąh‡ƒāˆvHƽ—s€8Ä:3qšė³±ĮĖ‹¢ł˜ ļgS‘BžAé *Üۜe_Ėąę h8‹UbĀŪ% Ł¤ Īɰ¤ii?›‡ói÷ŃMSCč#ą|@¦!č;!•t[āAƛjšäˆkq}č#ą|@¦” ĪÉš•<܋·‰—V®FBßĻFc«œ“$}³yJē§3mŚ÷³¤/bö1 dœ“į+9ŗV9'Iś"fr‘ń³Ń4ś|"ąUHAžķÓ ąœ Ž.ŗ²ēdXŅüŒŸ}Üä"ƒ €s2|%G×*ē$I_Äģc@.2~väĪ|µÆ\7éuÕyH6Ā.aŠÓyméĖĒh…<ƒr`•˜šv Cg6_o“ĪųŃń—°<ź=)..īBĄł€LC,t 6Sō89‰C "|¢œ]‰µ&¤ęƒn3mŚ÷³¤/bö1 OéüŌŌóĖ7Ą*„ «^7roĮŽR…¦\ƒ¾ÓŌĖÆhrŲ^ĄLƒ£×S4‹śp^O˜ā:•W„v„3(R‰@7Ń6ķūYŅ1ū§t~Jģ³dä.'`WZ1ž8?%8i( +ęJ²+£ąDx¬bQŹ0­fp©™t+]™Æö•ė&rDp§‡ hOŖč==ÆĮŌ……1FB®¤pTQ@.&XNfŅēŗ iÜlmœ<ަB2ĪkÉČĖ‹¢ł˜­gŠCó>æ>gŠ*1įķ†Ī,p(hc~0ą@埋‰„³;l2Īɰ¤i"ßø‚“ ®GĄ9–4ÜńPfœ­˜ūō1gįåˆ`w }'¤nK܀« OŃ,„.ü˜ąœ _Éýxć¾Ś•XĖ2’p> ÓP•dWF/ü*ųåX ’Ń£§Į1–HĒe…#m%šüLĒ„$ÖsīŅŗ­®Źim7¦æŁą€ Ųx*` Ąšn1½#9ø±ÓB8}ɼŃl)[€ €s2L8ģŌ ’lēŁgœ­˜W6Ą óÜ9Ņ—Č»XÉ8'ĆWņp/ŽģtƒI’Q”ģJ¬eÉ8i؀‹:Ÿ„͇°s§ŠwBj>Śy~łå`‹R†U/ƒ¹ķÓ ąœ Ž.ŠÕ>ŲĀaQ‚󙆮p ‘§ĶGžGDĆmŠRCh*y’ Āų8ōŁŲąåEŃ|Ģ„·Ģ#÷[c 3,Jp> ÓPĪ‚!ņ“łČ’ˆhø ZjM%OĘ'ö$CąćŠgcƒ—7Eó1}¬“ø‚“ vJ_ęéņö‘’1æĢ&)$©ä¼’‘;z…€ĒaéĖĒ”a;4įÜW4øC ķó]¹’pN†Æ$z É9Šą$\Ž€®`©aWb­ ©D Ūzq_ķJ¬eÉ8i؀‹€RB@čK“T#” €s2|%!`$°2…U,JYŗ2€A0uaaŒ‘E)Ć ņ0×įŪ 㑄͇°;ŽLŚ Hw{OLa©ĮT@ØØ–¹UVĖģ¢˜ÓŃĄi`HćA”–|‰ø²EÄ~śJõSšÆēax9‡Ix2˜D”ŠšR_>v%ƀˆ‘s–}-ƒ›ƒ¢į,^&ƒ¢ Z\•šUzj <”F„? ×P“JLx»„!’˜Æ7ŚęĀŽ_b )T…ģEø;ē 5*żŃ†žGVPļ‹Ćær؟q· ¾į§ßV›h “[ķ«I’ķσB)‡%ԃ~{Yį’42ĄŸk ’£‰˜€ēA”¶ĄjTś# 9čźÉnD’Ė A[®)T…®ŠUMƒVlDöi”]’°łvī”šY1ƒ2!Q@ā?ø Ż¢>š*˜pOp„= ƜißĻ’¾ˆŁĒ€<„óӅ Ńzó•Įė«*•¬ ļ¬Ü`3‘Zŗ &܃Ė[ō"ąœ K±ˆļŖŠ¢”!ąqHF^ŽXĶĒ”aZķydy—ž^ŃŌ€SØ ]”«Ÿ!zBēÆåKŗ½Æčõ<ģ-: šŽäز{‘ń<(”rXB=č”1ęŖ—PśA_ĢO0GCe°å‚č ]‰czBų•²Į$‹†#ļ!ų,|«ß_WĘĀ* ½¤ RÆcB¬ČnHTd§vEŃčńłA8‹—É č#ØĀ¼ĻĄÆĻYfD³Š¹›b™ŌśęMųyeB*č†f}½,¼—%ōŠ/ÅO?³{‘ŌŽ|)2`ŻFäā ·ÉiŻF侐”Ł{¬a* Eœß²dI¶ČoT&Ī—Ąk˜ DG›r’»R‹Wž“asŒ?ōĒÆ“b#²±ĶIœ=n,ŠĘ OŃ,"¼µRX&5Dxj„’1pęś 0ž‹¹Ž@[1ĉ¶Ą‡Ō`*HŃsÉĻa @^N¢";µk,ІŠņ zČ€—É č#ØĀ¼ĻĄÆĻYf$€\óKz\ČAĪe’‚jIœ¤FŚ5Ó*v!z<ēlT% S,Št0jĘlŲ 7’ņ•BĄćx†—sˆ'ƒI ­^u”¢©Šī„!–‚±éŻÕąo†—s˜„'ƒITd§vy˜ėƒP֝t`»pŽ“ź9?Æ!/ē0 O“(%…£bŽĀ0̆Šņ zČDŒœ³ģk¼ø gń2t)©H?!lŻįļģß-¦vĖÅ^‚ģBE³‰@ō„® s ī^z@IŻE;õ3"ķśž2ųŌŖķH0 ³Aca,z…Ė@œ /'QJź.ĘXjgf D]]Øhj@5 Ż †a6Ōģ Ųŗ¼ķĖ’ćƒ0ƒ—s˜„'ƒI”’ŗ‹1–ŚyŚ7`ė²f|:ō7‚€!`®B}×ā1–W4gāąļN¼œĆ “BžA¹ ƀˆ‘Gś ŃÖõŸĮ0ĢĘŻÜŠ&ŗ“/oĄÖ=ČĆĖ9LĀ32øŃAōxa¬qŒ@ˆüģŸ&ŻŽūšśH‘ŸżÓp†‘v£e-ęžūC~öO’±ļ8 Ć0ܽBĄć€<¼œĆ$< ƒDēę.ĘŲĆOķ<ķ°uY3¾śAĄ0×į1–W„| “6("= sv؆€¹>ėU\,wōd·1 óZór3Š y=ä € "Fé'"ūĢÓ¾ŸMż„×Ų•ė2Ū=”OŲ£r;^N[ÅŁĄoēosQ “¦§ŠwB¢€ÄKK×°u£;ńrĆ"£—öó‘’Ńp“ŌØ |BƒK<č½ ü/p`jŲ•XkB¢€ÄKĄ°u¬kŽ2æ5%’#¢į6h©!PųŸŠązī’Ė˜v%֚( ńĆŅšlė*]™ļ čŠß†€¹>M ³ų†ö]Š2š¦>€kńĖĒ+’PP±IĆö(ĢŁ¼&b¼œĆ “BžA¹ ƀˆ‘#ŗŃ¶Ę z<ēlT% S,Štȗ"KƍźT&E–„ęYRöŻn3ØX’?/ē0,RÄł-K–†ńĪKBs‰ąw»Ķ āĮ¼œĆ°HE–†³jÓ¹~aIh®b÷‰ŽmꃄŠ, ó ,bAšĪõš KBs!;Œšn3,åÉKBs-»‰ōn+ßĘDŅaWb­ ©D Ū—¾ć¼ōr„Ī™1„!šą†JØ5ĢõAĄÉx&ž‰ÄĖ9Ģ@+äō+2 ˆ9¢ó»6“$Lā Ņ‚hhŅˆčœŖ¤a*šĪ¹MĆųƒ gōž1%Ņ4¢4åˆ`wZĄE/o’;2v‰…ŁĖ•yd‡čń<›ÆŠś+ DēżœæGkŖ˜’Ń/–PNŽ…]‰µ&$ HüÓ;’ƒ[ŗBŌ™H”ĖOū~ֈ ŽęÄĖ|l›uE”Ņ#z?gHG…;³dŸq¶b^HFs÷ƒrv%֚Jŗ-q\)^„®³‡Ąū˜ĢĆóp.Ļ×9=ež¢„ÜÅō±TŠ— g;?h Œ®UĪI’¾ˆŁĒ€<„óSŪĒėķÓ]LK}] 2Ļù<_ēÓ»«ĮOÄx9‡q÷¢Ņ\„Öj>„]§ĶĮÖĘÉćH^9f`҆ń ą BcXcdQ4«Ä„·K:³U)‘‹E łaĪ ō…»pN† ‡zŸe’¤ĻĢ„·ĖW:’“1æ p ņ NńŅŁĮ2˜Y)’Ų•čĄœØęe ø„gē–’|D dÆžhp‡š‰ÄŃüx™óp`ķ)šÅ1בō”ĆšSž;!5ķ„ÓŸe3ˆŃNWÄŃüx™ķšYf0ƒžÜæŠåve1Ņwł27éæŻ‘[Hs\wб‚ē“Ō‹Ÿ ŌuléK£›HhZ~–Ģ Ü’ć˜H¼¼ŃM$4(ڦ}?Kś"fņ”ĪOÓ?ę—o€Uxō4Źīé‚^ pēŽ‚”W“ó 0 ąĄ!5™aǀȄn4ōJ€;÷B@]g(%=iŹĄĪƒĄ,`gŠ÷ …XĄĪHŚń”p—H’ōJ€;÷CĄWĮ«×ń‰”ō¤);_(_•”XĄĪHŚń”p§ź Քʰļ܏AÆøso!ÜĒDŚy˜ģ ÉŽ” . ŲI;>īé‚^ pēŽĀسó 0 ąĄ!Dµ3’v|(ÜśŃ!*…čy„> GVĢfY¼ 4«˜” z%Ą{ " ¾!Ģ΃Ą,€#oW1 ŲI;>īé‚^ pēŽb ˜JC>ĢGZŽy˜ģŒōc¢bĄwŻI;>īé‚^ pēŽĀׁwM>ĢGZŽy˜ģŒōc¢dĄwŻI;>nżxbüCŠ+īÜ[•–wf8„Ø12¢vFŅŽ…›\‹Js}Låyj`ū©1j8oZ]Łt¤F—ĻÜ-+ē5ł €m’LØ%Åb ¬…`6jhš £Ėgī–•‰ó ĮŒMSyąƒ’ź1q^ĢyŽęöUĖĄüXż~.?&mP`C×+ĻkżK59‡QR$jŠ:0¤49bDJ m"%…č¢ź«ž\JknYų(å=ę4'M’²–R÷5ēlšgł }PśÉƹF”®×A–^WčV˜&Ó<ĖO”/\5§>Ąī¦N’² ßē»rMŌH9`|ĘZ;'ŚĒ€|Yb¢,y^NåŹįį‡ü¹ŠRY~”YzéKüFq4 >ü]¹&źÄaņø»ūGM_ās¢} ČEĘ÷ŁĒ€|Yā¬K¢ņøšSŸ €eyŠ–ņ5AŁą_cäk‚²ĮŸÕ9Ńגųœhr‘ń}TPp>UG9<üŖqNĖ3äĖzg] aJäć°O_” ž¬Žˆ¤$jDGóbgƒ«†rĄųē“|1@¾¬va¶<'+ĮX“7e5^€Ÿi3ÅĀ`MåP\Ąx7Y Č yv1žń¤1ĮĢĮ¶ŠĖÕJ›¹±äĖēd%‹öą¦¬Ę š3M`¦X¬©ˆ³Ée ˆ$Ļ.Ę?ž4&˜9Ų–z¹Zi3J‹IŸėL-YąÅ֑B%¼#Ģ®W N¤Ó(9{\Ą³0p°0P±IĶu®W ¾Į:R؄w„Ąõ DĮI˜t%g x!H1 —pX¹­žv`+_Œ`)TÜp m=2ń}!MiJ+męĄ!„@Å&”äYV{ąz¢ąVśŻ@¹Ų•;‹]•˜Æ©³8 ²PĀ¢īÅŖkR˜Äį>TDŹbĒæ+ØŗxüW„zcŽ{‘IaF‡ååŌśpq Ąc!š‚zŠæę-? øMŃą&‚E“H;…YUbžÖMKu»ÜEbP ŃČA^Q°G,OžŽ@9‡wéłbwdÆŹ7ĢõRĻ!4 vą°ó šāÓ}SŠ{M`eh ź)ÖKÓKd,d+ 5ź…–wØ«©}Ū#)J\Ł’čõ‹w˜ė5#¤)W;/>Ż7³WÄ =Tv%ŃĄ0*§ ›“ex ™jv”åźjjN­%¶%Ńėļ0×k FHS®v^|ŗo ‚NŽĄż¹‹’ ŁsŻDsM‰IÜøFr £rźŗ9Y†ĒĮmßĶ©õ±6šŚˆ½bŽā1¢Žbp½Qp+­J\Sb7®‘\DĆØœz€nN–į1d¬×Ä%ņ.żSĪįqÕ¦ę\ćoB4$L:Ē*_Fټ š;ÖW!ß.^“>9Õh$9‚Sėc=ąµe¾|%V|·2]fµŒ§8’łņ•XńŻŹt™Õ²ööŚ2_¾+¾[™.3_6/Śņ’čõ‹7 øˆÖ‘3“ĀŒ ­”= + 9Āūz6Z„Ćj”ž¤dQRFI‘Ø<.%wįžÜEI…ģŸA„eÜøƒ_ÖIXĀZš:d†¢1Žć(“vr²|)wń„Ž–ĖuKĮDŲ®QxŚč4šMŁ)’ —ģä.¾“ņƒM®)1oHdH.¢aTN=@7'Ė_^A:5’ą4Ōēg®–ģͰ¦k;ŽnD¶ēįŚ&[åR—gōj'ÖŲN‘0ÅFUŚÉˆK…VŅŠv²d€ŗō-’“!Ū3°b@˜k”l–ŌWżw’hQF2æ©6ĄjmŁw8¶Ž.Łņȉ$E„ćiiąµ-„Õé饱utɖGN$(ā O³%$AX[vÅŽ­£K¶<ĀČS,)äņ&s”v÷–ņµāXYbŽ^zŃR¾V+kqĆ[Mk\/0ZT£‘ĢomąµQięąFKł:ró¢-/‰ņåWIĀiX5é%©óp„UO }^( -”'GžßX|6ŗH%Åa”‰ŹćĒĶŚŽ»znmĒ]iŃÖvÜŻr cēz,^!ĄĄ“+ōŖ€Ļq$AN€€-Š2ĖBh»B,•īŌJ‘,-]÷³¹”¾WįÜjĘjŽc!š‚zŠ'f|Q‰jOxĮĄ‚Ŗ‹õŘZFxm,˜p‘E؅p7kŖ˜ūUæ‚/’wĮ¦h0ŸLōe‘„ŠÖ¦bQ  Fr‘.K‚ČȌŹQA*'@Oµąn²Kķė `¤d¼€²BŚĻ ˜"*€‘:TńfČ ęsŃąŠ<åP@KŠ# `(Ö%ŠZ]PDŚ6±¤ ŖbšJŹyń`ßsISŹ3mØ0҆ĄżW±%°- ģ”Žü+- l5°bĄRńjw`źŚŲĄP1Ö“6°ŌĄ ˆ]…±čÕŲĄPK娓6°ŌĄ ˆ~…Ŗ“6°ŌĄ ˆKÅwж ŖkK`[@ ÄXŠŲĄP+ t‘'§DĢņCø“×f0ė˜3Ž#œŅ‡†b]rģ”88v&ęĒ Sóc¬ŒSŹ}F8„Üű“Ä-'ŌUĄ¹tSTACKSIZE = 8192 .globl _main, _exit, _edata, _end, _putc, _getc, _reset_diskette, _diskio .globl csv, cret, begtext, begdata, begbss .globl _cylsiz, _tracksiz, _drive .text begtext: start: mov dx,bx | bootblok puts # sectors/track in bx xor ax,ax mov bx,#_edata | prepare to clear bss mov cx,#_end sub cx,bx sar cx,*1 st.1: mov (bx),ax | clear bss add bx,#2 loop st.1 mov _tracksiz,dx | dx (was bx) is # sectors/track add dx,dx mov _cylsiz,dx | # sectors/cylinder mov sp,#kerstack+STACKSIZE call _main mov bx,ax | put scan code for '=' in bx cli mov dx,#0x60 mov ds,dx mov es,dx mov ss,dx jmpi 0,0x60 | jmp to kernel _exit: mov bx,_tracksiz jmp start _putc: xor ax,ax call csv movb al,4(bp) | al contains char to be printed movb ah,#14 | 14 = print char movb bl,*1 | foreground color push bp | not preserved int 0x10 | call BIOS VIDEO_IO pop bp jmp cret _getc: xorb ah,ah int 0x16 ret _reset_diskette: xor ax,ax call csv push es | not preserved int 0x13 | call BIOS DISKETTE_IO pop es jmp cret | handle diskio(RW, sector_number, buffer, sector_count) call | Do not issue a BIOS call that crosses a track boundary _diskio: xor ax,ax call csv mov tmp1,#0 | tmp1 = # sectors actually transferred mov di,10(bp) | di = # sectors to transfer mov tmp2,di | di = # sectors to transfer d0: mov ax,6(bp) | ax = sector number to start at xor dx,dx | dx:ax is dividend div _cylsiz | ax = cylinder, dx = sector within cylinder movb cl,ah | cl = hi-order bits of cylinder rorb cl,#1 | BIOS expects hi bits in a funny place rorb cl,#1 | ditto movb ch,al | cx = sector # in BIOS format mov ax,dx | ax = sector offset within cylinder xor dx,dx | dx:ax is dividend div _tracksiz | ax = head, dx = sector movb dh,al | dh = head orb cl,dl | cl = 2 high-order cyl bits || sector incb cl | BIOS counts sectors starting at 1 movb dl,_drive | dl = drive code (0-3 or 0x80 - 0x81) mov bx,8(bp) | bx = address of buffer movb al,cl | al = sector # addb al,10(bp) | compute last sector decb al | al = last sector to transfer cmpb al,_tracksiz | see if last sector is on next track jle d1 | jump if last sector is on this track mov 10(bp),#1 | transfer 1 sector at a time d1: movb ah,4(bp) | ah = READING or WRITING addb ah,*2 | BIOS codes are 2 and 3, not 0 and 1 movb al,10(bp) | al = # sectors to transfer mov tmp,ax | al is # sectors to read/write push es | BIOS ruins es int 0x13 | issue BIOS call pop es | restore es cmpb ah,*0 | ah != 0 means BIOS detected error jne d2 | exit with error mov ax,tmp | fetch count of sectors transferred xorb ah,ah | count is in ax add tmp1,ax | tmp1 accumulates sectors transferred mov si,tmp1 | are we done yet? cmp si,tmp2 | ditto je d2 | jump if done inc 6(bp) | next time around, start 1 sector higher add 8(bp),#0x200 | move up in buffer by 512 bytes jmp d0 d2: jmp cret csv: pop bx push bp mov bp,sp push di push si sub sp,ax jmp (bx) cret: lea sp,*-4(bp) pop si pop di pop bp ret .data begdata: tmp: .word 0 tmp1: .word 0 tmp2: .word 0 .bss begbss: kerstack: .zerow STACKSIZE/2 | kernel stack root:*:0: daemon:*:1: system:*:2: user:*:3: 100  š/‚,‰Ś1Ą»@¹l)ŁŃł‰ƒĆāł‰pl҉rl¼`čĮ'‰Ćśŗ`ŽŚŽĀŽŅź`‹plėÄ1ĄčŠF“³UĶ]é™0äĶĆ1Ąč…Ķéˆ1ĄčyĒņ/‹~ ‰>ō/‹F1Ņ÷6rlˆįŠÉŠÉˆÅ‰Š1Ņ÷6plˆĘŃžĮŠvl‹^ˆČF žČ:pl~ĒF Šf€ÄŠF £š/Ķ€üu”š/0äņ/‹6ņ/;6ō/t ’FFė–ė [U‰åWV)Ä’ćfü^_]ĆU‰åƒ~ uø Pč=’[’vč6’[é“.U‰åPVč=’%’‰Ęƒž u¾ VčĢ’[‰šé”.U‰åƒģ&VWF܉ʃ~ tƒ~}÷^÷^ƒ^’N ėĒF 1’ĒFžƒ~ž }2Ńēƒ~}G‹F‹NŃąŃщF‰N9~‰ų+F‰ĒƒFƒV’FžėȉūЇD1ˆF’N ‹F Fu­‹F ’N Ą~ ’vč6’[ėķƒ~ tĘ-FFÜ9Ęv NŠ˜Pč’[ėīéį-U‰åV‹vƒ~t‰š- =^wƒž\t Včōž[øP逸\Pčåž[Vėjø0P茞[ėgøbP芞[ė]ønPčĘž[ėSørPč¼ž[ėIøtPč²ž[ė?øfPčØž[ė5ø\P螾[ė+‰š%’1Éŗ0RŗR1ŅRŗRQPčŗžƒÄ øPė ».0Xé+øPXé6-U‰åƒģ VW‹v€<uéOŠ˜Pé=ø PčGž[Š˜Pč?ž[é1F€<-uF€<0uø0Pėø PFų1’Š˜-0= wø ÷ē‰Ē‰óFŠ˜-0ų‰Ēė߀`u øb1Pč&’[1ĄPėf’vød1Pč’[[ƒ>`tøj1Pč’[øPėEčū‰Ē‰žƒ’qtƒžQuøPč1ś[Vč…’[ Ąučųś‰Ęėšƒ’ntƒ’NuøPė1ĄPX1É ĄuAQXé†)U‰åPVW‹~1öŠ˜=0|Š˜=8}¹Óę‰ūGŠ˜-0š‰Ęė܉šéR)U‰åPVW‹~‹vøp1Pčož[ƒ>`tFør1Pč`ž[O ’t"čuśˆŠ˜Pčńž[ ĄtĘ1Ą9vs@PėFėŁĘčPśPčŃž[ ĄuėņøPė1ĄPXéź(U‰åPPVW‹>2`‹F-¹1Ņ÷ń÷f‰ĆŃć2`‰2`‰ž962`v ĒƒĘėń‰ųéŖ(U‰åPVW‹~¾€=uė$Š˜- =^wŠ˜Pėø?Pøx1P諿[[GN öuÕép(U‰åV‹vƒ|t’tčķ’[ø|1P腿[‹ƒĆSč”’[éH(U‰å‹4`ƒu ø~1Pčcż[ė’64`č¹’[’vė&‹4`‹’7ø€1PčDż[[ė‹4`‹’7øŽ1Pč1ż[[ė»š0Xé«%ƒ~tøš1Pčż[éē'U‰åƒģVW¾ĒFśĒplĒrlč^ųøP’6LløP’vśčXųƒÄ‰Ē÷Ē’t‰šN ĄuÜ÷Ē’tDĒpl Ērl¾č"ųøP’6LløP’vśčųƒÄ‰Ē÷Ē’t‰šN ĄuÜ÷Ē’tøœ1Pč ż[éU'U‰åƒģVW‹~1ĄPø1Ņ’včÅ%‰Fų‰Vś ’u ‹8`9Nué&'‹N‰8`¹ ‹Fų‹VśćŃśŃŲāś‰FōĒFņ‹Fō`1ɉFü‰Nž’vž’vü1ĄPø’’Pčī& Ą~øŗ1Pč ü[øPčK÷[‹Fō`¹Q’6LlPWč`÷ƒÄ‰Ę÷Ę’ué®&čC÷1ĄP’v ’uø2Pėø2PVøą1PčæūƒÄ ‹Fō`¹Q’6LlPWč÷ƒÄ‰Ę÷Ę’uéj&’Nņuŗ1ĄVP’v ’uø62Pėø<2P’6\lø2PčuūƒÄ øB2Pčģū[é7&U‰å1ĄP’v’vPøPč$P菞[[’v ’v’6Ll’v’v1ĄPøPč­$[ĆSč’ūƒÄéų%U‰åƒ>`uøD2Pč–ū[~ t1ĄP’v’vPøPčČ#Pčsž[[’v ’6Ll’v’v1ĄPøPčY$[ĆS’vč;ūƒÄøP’v’v1ĄPøPčŠ#Pč5ž[[Ē6`é%U‰åƒ~u’vė’v ’v’v蕶ƒÄéa%U‰åƒģP’6^lø^2Pč~ś[[øPPF°Pčļū[[ Ąt F°Pč]"[£^l’6`lør2PčUś[[øPPF°PčĘū[[ Ąt F°Pč4"[£`l’6blø†2Pč,ś[[øPPF°Pčū[[ Ąt F°Pč "[£bl’6dløš2Pčś[[øPPF°Pčtū[[ Ąt F°Pčā![£dl’6flø®2P茳[[øPPF°PčKū[[ Ąt F°Pč¹![£fl’6hløĀ2P豳[[øPPF°Pč"ū[[ Ąt F°Pč![£hl’6ll’6jløÖ2P脳ƒÄøPPF°Pčōś[[ ĄtF°Pčb![£jl‰lløź2Pčś[ ĄtøPø^lP1ĄPøPčžƒÄé$øņ2Pčūł[ Ąt鄞ƒ>`t1ĄPčkō[éļ#U‰åƒģVĒFüĒFž‹^lƒĮ ƒé» ‰Č1Ņ÷ó‹dlblĮ‰Ī‹`lƒéøPQčYü[[ĘL`øPøL`P’vž’vüč żƒÄĘL`FüƒVžN öuŁ‹fl‰Ņ0‹blƒĮdl1Ąŗ RŗÄ0RPø1ŅQčā!RPč^żƒÄ‹hl‹flÓā1Ą¹Q¹L`QPRø1Ņč¼!RPč8żƒÄ‹hl‹flÓā1Ą¹ Q¹¤0QPRø1Ņč–!RPčżƒÄé#U‰åƒģPø 3Pč%ų[‹ś/‰`l’6ś/ø63Pčų[[øPPF°P肳[[ Ąt F°Pčš[£`lĒhl’6hløN3Pčā÷[[øPPF°PčSł[[ Ąt F°PčĮ[£hl‹ü/‰^l’6^løj3Pč±÷[[øPPF°Pč"ł[[ Ąt F°Pč[£^l‹^lĮ ƒéQ¹ XÓč£bl‹`lĮ ƒéQ¹ XÓč£dl‹hløÓą‹^lƒĮ ƒé» P‰Č1Ņ÷ó‹blƒĮdlĮXČ-‹hlÓč£flĒjl’’Ēll’‹jl‹llƒéƒŚ”hlR™QPYXZćŃśŃŲāśRP1ĄPøPčÄRPøPøPčÅ! Ą|”hl™‰ĮøŗćŃąŃŅāś£jl‰llĒnlø‚3Pčæö[Ē`č&üĒ`ø„3Pčm÷[ ĄučüėøPø^lP1ĄPøPčfūƒÄčiżéU!U‰åƒ>`tčDžėøPø^lP1ĄPøPčūśƒÄƒ>`tčĘū>nltø3PčĒö[ƒ>^lø°3Pčøö[ƒ>`lwøŗ3Pč©ö[ƒ>bløÄ3Pčšö[ƒ>dløĢ3Pč‹ö[ƒ>fløŌ3Pč|ö[ƒ>hl}øī3Pčmö[’6ll’6jl1ĄPPč¶ Ąø4PčRö[éŸ U‰åƒģV‹^lĮ Q¹ XÓč‰Ę>nltø4Pč'ö[96bl}ø:4Pčö[96blt ør4Pøp4PVøN4PčŅśƒÄ’6bløt4Pčsõ[[‹`lĮ ƒéQ¹ XÓč‰Ę96dl}ø„4PčŃõ[96dlt ø¼4Pøŗ4PVø˜4P芶ƒÄ’6dlø¾4Pč+õ[[‹`l9flrøĪ4Pč™õ[ƒ>hlrøč4PčŠõ[ƒ>hl~ ’6hlø5Pčöō[[‹hløÓą‹^lƒĮ ƒé» P‰Č1Ņ÷ó‹blƒĮdlĮXČ-‹hlÓč‰Ę96fl}ø$5Pč0õ[96fltVø>5Pč ō[[’6fløj5Pč“ō[[ĒFś’’ĒFü’‹Fś‹Nü-ƒŁQP”hl™‰ĮXZćŃśŃŲāśRP1ĄPøPč)RPøPøPč* Ą|”hl™‰ĮøŗćŃąŃŅāś‰Fś‰Vü‹Fś‹Nü9jlu9llt"’vü’vśøz5PčōƒÄ’6ll’6jlø 5PčōƒÄéĢU‰åPVøP’včŅõ[[‰Ę ‰šé°U‰åPPVW‹v1’9~~%1Ą¹QVPø1Ņ’včRPčOųƒÄG’FĘė֋^éoU‰åPPVW‹v1’9~~%1Ą¹QVPø1Ņ’včŌRPčPųƒÄG’FĘėÖé6U‰åƒģVWöFt(¹‹FÓč‰ĆŃć^‰^ś‹F%‰ĮøÓą ‰’Fėҹ‹FÓč‰ĆŃć^‰Žø÷f‰ĆŃć^‰ß9÷v Ē’’ƒĘėóéŠU‰å’6blčūž[£Vl’6dlčšž[£Rl’6blčåž[£Tl’6dl茞[£Pl’6blčĻž[£Nlé•U‰åV‹vW‹~‰ų š Ąu驋F 9Fr鞉š1ųØtB‹^‹@‰‹^¹‹™÷ł Ņu+‹^ƒ?t#ƒ>`tƒ>`u ø°5Pč+ó[ Ąt ‹^ĒėB‹^ƒ?t:÷Ēt÷Ęu’v’v øĀ5Pč7ņƒÄė÷Ēu÷Ęt’v’v øŌ5PčņƒÄ‰ųŃč‰Ē‰šŃč‰Ę’FéL’éŃU‰åƒģVW‹v‹~ĒFśĒFųƒ>`t’v ’v ’vč7žƒÄé ’vøč5PčĘń[[’v ’v ’v裿ƒÄ‹9tFśPFųP’v’v’v’5’4čŌžƒÄƒĘƒĒƒF‹F9Fr̓>`tƒ>`tƒ~śuøś5Pčgń[ƒ~ųƒ~ų ~ ’vųø6PčPń[[ƒ~ųtø6Pčņ[ Ąt’v ’v ’v葿ƒÄƒ~ų~ø$6Pč ń[éģU‰åPPV¾ƒ>`téŚø&6Pčń[‰š%‰ĮøÓ้ņÓź‰ÓŃćVl…téŖ‹blƒĮdl1ĄŗRVüRPø1ŅQč‰ńƒé1ŪRPSQøPYXZćŃąŃŅāśY[ĮÓSQč4õƒÄƒ~üt]Vø<6P芹[[øV6PčFń[ ĄtG‹blƒĮdl1Ąŗ RŗL`RPø1ŅQ趉ńƒé1ŪRPSQøPYXZćŃąŃŅāśY[ĮÓSQčõƒÄF96^lré*’ø^6Pč$š[éńU‰å‹^lAøPQčöń[[£J`éŚU‰åƒģ"V‹vƒ>Xltø`6Pčšļ[ĒXl‹blƒĮdl1Ąŗ RVąRPø1ŅQč#‰ńƒé1ŪRPSQøPYXZćŃąŃŅāśY[ĮÓSQč>ōƒÄ‰óJ`‰^Ž‹^ފ˜PŠFķ˜YĮˆ‰óJ`Š˜PŠFķ˜PVøt6PčrļƒÄø€6Pč-š[ Ąt_‰óJ`ŠˆFķ˜ Ąuøˆ6PčĶļ[‹blƒĮdl1Ąŗ RVąRPø1ŅQč…‰ńƒé1ŪRPSQøPYXZćŃąŃŅāśY[ĮÓSQčįóƒÄéŅU‰åPV¾96^lr‰óJ`€?tVčÜž[Fėēƒ>Xluø¤6PčŅī[éŸU‰åV‹vW‹~‰ł‰šÓčØtø¦6PėøØ6Pč¬ī[‰ł‰šÓčØtøŖ6Pėø¬6Pč”ī[…vt’v ø®6Pč„ī[[ė‰ł‰šÓčØtø²6Pėø“6Pčiī[é5U‰åV‹vƒ>`tĒ`ø¶6PčJī[’vøŚ6Pč?ī[[‹%šPė2øą6Pč.ī[ė/øā6Pč$ī[ė%øä6Pčī[ėøę6Pčī[ėøč6Pčī[ė»ä0X鄸sPøPøP’4č’ƒÄøsPøPøP’4č ’ƒÄøtPøP1ĄP’4čöžƒÄŠD ˜Pøź6Pčµķ[[‹%šPė61ɋDÓč%’¹‹TÓźā’PRøš6PčŒķƒÄė’t’tøü6PčzķƒÄė»ų0XéøP1ĄPčķļ[[é0U‰åƒģV‹vW¹‹Óč‰ĆŃćTl‰^ų‹%‰ĮøÓą ‰ø7Pčšķ[ Ąt@‹J`‰^ų‹^ųŠ˜Hˆæ:`‰vśĒFž‹Fž’Nž Ąt‰ūG1ĄŠP‹^śXˆ’FśėćøPė1ĄPXéÆU‰åPV‹v W‹~ 9ļ[[’4DPø7Pč¦ģƒÄWø27Pč›ģ[[¹‹FÓč‰ĆŃćTl‰^ž‹F%‰ĮøÓą ‰¹‹Óč‰ĆŃćTl‰^ž‹%‰ĮøÓą ‰¹‰ųÓč‰ĆŃćTl‰^ž‰ų%‰ĮøÓą ‰øB7Pčļģ[ Ąuéč‹J`‰^ž‹^žŠ˜Hˆ‰<‰ūJ`‰^ž‹^žŠ˜@ˆ1ĄP饒v’v€|tøPė1ĄPX™Y[9Įu9Óu阒v’vDPøL7PčĮėƒÄ1ĄPøPč=ī[[’4DPøj7Pč„ėƒÄ¹‹FÓč‰ĆŃćTl‰^ž‹F%‰ĮøÓą ‰¹‹Óč‰ĆŃćTl‰^ž‹%‰ĮøÓą ‰¹‰ųÓč‰ĆŃćTl‰^ž‰ų%‰ĮøÓą ‰øPXéU‰åƒģVWæ‹^ƒĆ‰Ž€<uFø€7Pčė[1ĄPPč”ķ[[¹‹FÓč‰ĆŃćTl‰^ś‹F%‰ĮøÓą ‰’v耿[ Ąt1ĄPéyO ’tp€<tk‰óF€?/uīø”7P軟[1ĄPøPč9ķ[[¹‹FÓč‰ĆŃćTl‰^ś‹F%‰ĮøÓą ‰øø7P胟[‹^ƒĆSčžģ[øĀ7Pčpź[’vč ż[ Ąt1ĄPėøPXé'U‰åƒģV‹v W‹~ƒ<r ‹^l9 wé}øĘ7Pč2ź[1ĄPøPč°ģ[[’4øä7Pčź[[øö7Pčź[DPč1ģ[ø8Pčź[ø8P襟[ Ąt3ĒFž:`‰vüĒFś‹Fś’Nś Ąt‹^ž’Fž1ĄŠP‹^üXˆ’Füėą1ĄPéMøPéF‹J`Š˜=u>’4ø8Pč„é[[ø.8Pčœé[DPčŗė[øD8PčŒé[øP1ĄPč ģ[[Včü[ Ąt1ĄP鶋J`‰^ų‹^ųŠ˜@ˆøT8PDPč[[ Ąu!‹4`ŠG˜ ˆGWV’v’vWčTüƒÄ Pé¶øV8PDPčä[[ Ąu2‹4`ŠG˜ ˆGƒ’uWė ‹4`‹_‹’7V’v’vWčüƒÄ PėsVWč²ż[[ Ąu1ĄPėc‹%‰ĮøÓą¹‹Óź‰ÓŃćNl…t>øZ8Pč³č[1ĄPøPč1ė[[ø|8PčŸč[DPč½ź[’4ø†8Pčč[[Vč(ū[1É ĄuAQėVč™[PXéBU‰åģ VW‹hløÓą¹Óą‰Ē‹hl‹F Óą1ÉQPø1Ņč‰†öž‰–ųžøP†’P’¶ųž’¶öžčĮģƒÄdžśž†’‰ĘF9Ęréʋ^‹G‹O+FN QP1ĄPøPčĪ Ą}bø˜8Pčéē[1ĄPøPčgź[[ø²8Pčšč[ Ąt<¹‹FÓč‰ĆŃćTl‰žōž‹F%‰ĮøÓą ‰‹^‹F‹N ‰G‰Odžśžė1ĄP鐃<tV’v ’v’vč%żƒÄ ĄudžśžƒFƒV ‹^’v ’v’w’wč/ Ą|ėƒĘé0’ƒ¾śžtøP†’P’¶ųž’¶öžčģƒÄ†öžƒ–ųžO ’t‹^’v ’v’w’wčć Ą}éĘžøPXéŹU‰å’vø¾8Pčķę[[1ĄPøPčjé[[’vøŹ8PčÕę[[’vė(øÜ8PčĒę[ė%øā8Pč½ę[ėøņ8Pč³ę[ėø9Pč©ę[ė»1Xé$’v ’v ø9Pč’ęƒÄé^U‰åPPVW‹~‰ų+fl@‰Ę‹^ŃćĆ`‰^ü‹@‰9>flw9>`lw’v ’v ’vWø9PčQ’ƒÄ 1ĄP黉š%‰ĮøÓ้ņÓź‰ÓŃćRl…t;¹‰šÓč‰ĆŃćPl‰^ü‰š%‰ĮøÓą ‰’v ’v ’vWø,9PčöžƒÄ 1ĄPėa’$`‰š%‰ĮøÓ้ņÓź‰ÓŃćPl…tV’v ’v ’vW’vø69Pč¶žƒÄ¹‰šÓč‰ĆŃćRl‰^ü‰š%‰ĮøÓą ‰øPXéSU‰åģVW‹~¾‹hl‹F Óą1ÉQPø1Ņčø‰†śž‰–üžøP†’P’¶üž’¶śžčÜéƒÄ‹F HPø€P†’PW’v’včŽƒÄ Ąu1ĄPė)†śžƒ–üžN ötxz{|}~€‚‹^’u’5’w’wčÕ Ą| øPXéæU‰åPPV‹v‹hløÓą™‰Fü‰Vž ötø1Ņ’vž’vüč‰Fü‰VžN öuē‹Fü‹VžéU‰åV‹vW‹~ƒ~ u?‹%š=@u’v ’t’4W’včüƒÄ Ąu1ĄPė,‹hløÓą™T‰‰TøPė’v ’v VW’včĻžƒÄ PXéU‰åPPVWæ1ö9v é“‹^’w’7‹^’w’wčü Ą|陉óŃć^ ƒ?u!‹^’w’7’vč’[Y[ĮÓS‹^X‰‰Gėh‹^’w’7’v’v V[ŃćXĆ’7’včEżƒÄ Ąu#‹^’w’7’včĶž[Y[ĮÓS‹^X‰‰G1’ė!‰óŃć^ ’v’7’v’v’včßžƒÄ Ąu1’FéD’‰ųéMU‰åƒģ VWĒFöĒFų‹^1ĄPøPƒĆSFöP’v’vč’ƒÄ ‰Fž¾æƒž }1‹^WøPƒĆS‰óŃćXĆSFöP’v’včŌžƒÄ ĄuĒFžFGėŹ‹FžéŲ U‰åPPVW‹~¹‹FÓč‰ĆŃćNl‰^ü‹F%‰ĮøÓą ‰’u’u1ĄPøˆPč¤ Ą~ø<9Pčæā[øPøPč<å[[W’vč-’[[‰Ę‹4`ŠG˜ØuøV9Pč“ā[øPøPčå[[1ö‹4`ŠG˜Øuød9Pčpā[øPøPčķä[[1ö‰šé+ U‰åV‹v‹%šPė\’.`V’včÄž[[PėS’,`V’vč)’[[PėC’*`øPė9’(`øPė/’&`øt9Pč ā[1ĄPøPč‹ä[[’4ø‚9Pč÷į[[1ĄPė»1Xé’ Xé¶ U‰åPV‹vW‹~ƒ’u'‹%š=@tøŽ9PčĆį[’4Wø®9PčøįƒÄøĘ9Pč/ā[€| uøČ9Pč į[1ĄPøPčä[[1ĄPéŖ’0`¹‰ųÓč‰ĆŃćVl‰^ž‰ų%‰ĮøÓą ‰ŠD ˜=vZøÜ9PčWį[1ĄPøPčÕć[[ŠD ˜Pøō9Pč>į[[‰ūJ`‰^ž‹^žŠ˜-ˆ¹‰ųÓč‰ĆŃćTl‰^ž‰ų%‰ĮøÓą ‰ė‰ūJ`‰^ž‹^žŠ˜PŠD ˜Y)ĮˆVW苾[[PXéÆ U‰åƒģ2VW‹^‹7‹F‰F֋4`‰NŲN։4`‰š%‰ĮøÓ้ņÓź‰ÓŃćTl…tVø:P藱[[øP1ĄPčć[[‰š%‰ĮøÓ้ņÓź‰ÓŃćVl#‰Ē ’t ƒ>`uéf‹blƒĮdl1Ąŗ RVąRPø1ŅQč– ‰ńƒé1ŪRPSQøPYXZćŃąŃŅāśY[ĮÓSQč±äƒÄƒ>`t FąPVč”ń[[ ’téFąPVčž[[ Ątéö¹‰šÓč‰ĆŃćTl‰^Ήš%‰ĮøÓą ‰ø:P船[ ĄuéʼnóJ`‰^Ī‹^Ί˜PŠFķ˜HYĮˆ¹‰šÓč‰ĆŃćVl‰^Ήš%‰ĮøÓą÷Š#‰‹blƒĮdl1Ąŗ RŗL`RPø1ŅQč·‰ńƒé1ŪRPSQøPYXZćŃąŃŅāśY[ĮÓSQčäƒÄĒFŌ:`‹F‰FŅĒFŠ‹FŠ’NŠ Ąt‹^Ō’FŌ1ĄŠP‹^ŅXˆ’FŅėą‹4`‹O‰4`1ĄPė‹4`‹O‰4`øPXé³ U‰åƒģƒ>`u‹^l‰0`‹`l+flA‰$`ĒFšĘFņFšPčŅż[ Ąuø:Pč&ß[ø*:P蝮[ék U‰åøPø,:P苮[[‹hløÓąPøD:PčxŽ[[øV:PčoŽ[ør:Pøp:P’6.`øX:Pč¬ćƒÄøŠ:Pøˆ:P’6,`øt:Pč–ćƒÄø®:Pø¬:P’6*`øŽ:Pč€ćƒÄøŌ:PøŅ:P’6(`ø°:PčjćƒÄƒ>&`tøģ:Pøź:P’6&`øÖ:PčMćƒÄø;Pø;P’60`øī:Pč7ćƒÄø;Pø;P’6$`ø;Pč!ćƒÄéœU‰åƒ>`uƒ>`tĒ`‹N‰Zl軯č#ēčÖēč ź‹^lA’6blQ’6Vlč)źƒÄ‹`l+flA’6dlQ’6RlčźƒÄčQķ苾‹blƒĮ‹flƒźø ;P’6`l’6dlQR’6Pl’6RlčFėƒÄč@ī‹^lAø&;PQ’6bløP1ĄP’6Tl’6Vlč ėƒÄč’ėčžƒ>6`tø,;Pč Ż[éŲU‰åƒģ VW1ö1’ĒFśƒ>ö/t‹pl‰ų/Ēö/ƒ>pl |ƒ>rl}øX;PčĖÜ[ĒLlLhĒ\lt;øz;Pč·Ü[ø€;PčÆÜ[ø˜;Pč§Ü[øŹ;PčŸÜ[øtl}ø€P븁PvlĒrlDĒpløž/Pøv=Pč Ü[[čF Ą}éJ’Ē`雸ž/Pø=PčģŪ[[čŅŽĒ`邸ž/PøØ=PčÓŪ[[Ē`‹`‰`諎ėbøĄ=Pč·Ū[螮Ē`ƒ>pluJĒś/°Ēü/’ė<¹‹FųÓų%’PėV¹‹FųÓų%’PėH¹‹FųÓų%’Pė:øŚ=PčgŪ[é­ž»$1Xé’vśWVøģ=P膿ƒÄĒ`‹`‰`‰`‰`é~žXéU‰åPøų=Pč%Ū[č„ÖˆF’ŠF’˜PøH>PčŪ[[€~’ uøL>PčŪ[ƒ>tl~2éŹƒ>tl~ė&ŠF’˜=1|ŠF’˜=9€~’5uė ŠF’˜-0£tlė„Ētlė•U‰åƒģ&VW1’Gƒ’~øN>PčŖŚ[ø’’PésøP’6Ll1ĄPPčփĉFž÷Fž’uĻ1öƒž|é÷¹‰šÓąĘ‰ĆLl1ĄŠ0ķ‰Nę‰F蹉šÓąĒ‰ĆLl1ĄŠ0ķ‰Nā‰F义šÓąČ‰ĆLl1ĄŠ0ķ‰NމF้šÓąÉ‰ĆLl1ĄŠ0ķ‰NډFܹ‹FŽ‹VąćŃąŃŅāśR¹‹VŚ‹^ÜćŃāŃÓāśY Š ŁQ¹‹Vā‹^äćŃāŃÓāśY Š Ł Fę Nč‰óŃćŃćVźӉ‰O‰óŃćŃćFźĆ’w’71ĄPø’’Pčw Ą~øx>P蒣[øPčŌŌ[Fé’ƒ>tl| ‹tlƒéQė’6tl^FźPč=[¹‰šÓą-^źƋ‰`¹”`1Ņ÷ń Ņt¹”`1Ņ÷ńŃą£`1ĄPXéūU‰åPPV‹vWĒFžƒ~ž|é£1’ƒ’|铉ūŃćŃćó‹G u.‰ų@‰ĆŃćŃćó‹G t‰ų@‰ĆŃćŃćóS‰ūŃćŃćóSčc[[ėR‰ūŃćŃćó‰ų@’w’7VP[ŃćŃćXĆ’w’7č„ Ą~,‰ų@‰ĆŃćŃćó‹G t‰ų@‰ĆŃćŃćóS‰ūŃćŃćóSč[[Gée’’FžéT’é=U‰åPPV‹vW‹~‹‹M‰Fü‰Nž‹‹L‰‰M‹Fü‹Nž‰‰Lé U‰åV‹vW‹~Š˜PŠ˜Y9Įt Š˜PŠ˜Y)ĮQė€<u1ĄPėFGėŁXé×U‰åƒģV‹vWĒFüĒFž1’Š˜‰ĆЇ«>˜ØtFėļ€<-uFæ‰óFŠ˜-0‰Fśƒ~ś s)ø 1Ņ’vž’vüč‰Fü‰Vž1Ą‹Nü‹VžNś‰Nü‰VžėÅ ’t‹Fü‹Nž÷Ł÷؃ŁQPė’vž’vüXZéK‹+G;Gw ŃąƋ_…Ūu ‰Ó…ŪuøPé]’ć‹‹OƒĆI|;uö‹_…ŪuøPé>’ć‰ÓėļVW‰ę‹\‹D™‰×9Āu6!Ņ}÷Ūt.1Ņ‹L ‹D !Ą}÷Ų÷ŁŠ÷×÷ó‘÷ó!’}÷Ł÷ŲƒŁ‰Ź_^[ƒÄ’ćR‰Ē1Ū!’}÷ß÷\ߋD ‹T !Ņ} ÷Ś÷ŲŚ÷Tž¹ŃąŃŅŃÓ9ßwr 9Tvāķė+Tū@āć_넉ćR‰Į÷gZP‰Š÷gZ‰ȉŃ÷gŹ[ƒÄ’ćVW‰ę‹\‹D™9Āu:!Ņ}÷Ūt21Ņ‹L ‹D !Ą}÷Ų÷ŁŠ÷ó‘÷ó1ۃ| }÷Ū÷ŚƒŪ‰Š‰Ś_^[ƒÄ’ć‰Ē1Ū!’}÷ß÷\ߋD ‹T !Ņ}÷Ś÷ŲڹŃąŃŅŃÓ9ßwr 9Tvāķė°+Tū@āćė¦čYčĆøŗV?ė0øŗm?ė(øŗ„?ė øŗ›?ėøŗ²?ėøŗČ?ėøŗß?ė1Ū‡ @…ŪtP’ÓXĆ»SRøPč;蟊‰ĀƒśsŃā»,?Ӌ…Ūt‰Śė»ż?¹‰Āā0ˆKќќќāķŗļ?ėŖU‰åĒzl‹^‰|l‹^‰~l‹^‰‚løxlPøPø»xl¹Ķ ‰ģ]ĆčzŠ_^‰ģ]Ć^_ėų[YZXV‰ę‡\^9Ó|9Čw tø’’Ć1ĄĆøĆ h_Answer questions with y or n. Then hit RETURNT 6 " @ ,\J½ĪB]C!DęO”SU+Xnb;c!dĆosu xM© ”%“Ę™¬...ķA ß Ė@Į`Õ€·e A`A<(2Ō" Ź"@°"`Ą"€ "~)=T)dp)fõ(h±(l)m.)ub)0123456789ABCDEF%s fatal %s? yes --> %c// (ino = %u, (ino = %u) can't determine diskette-typeFsck cannot read beyond sector 65535 error 0x%x %s block %D, retry readingwriting%s: can't %s block %D (error = 0x%x) readwriteinternal error (devwrite)ninodes = %unzones = %uimap_blocks = %uzmap_blocks = %ufirstdatazone = %ulog_zone_size = %umaxsize = %Uok nowDo you want to try againHit RETURN key to select default values # zones (default: %d) log zonesize (default: %d) #inodes (default: %u) is this okbad magic number in super blockno inodesno zonesno imapno zmapfirst data zone too smallzone size < block sizemax. file size <= 0bad magic number in super blocktoo few imap blockswarning: expected %d imap_block%ss instead of %d too few zmap blockswarning: expected %d zmap_block%ss instead of %d first data zone too largelog_zone_size too largewarning: large log_zone_size (%d) first data zone too smallwarning: expected first data zone to be %d instead of %u warning: expected max size to be %D instead of %D stop this listing%s %u is missing %s %u is not free Checking %s map etc. %d errors found. install a new map Checking inode list mode inode %u not cleared. clear INODE NLINK COUNT %5u %5u %5u adjustinternal error (counterror) r-w-%cx- inode permission link size name %6u -dcb? %3u %2x,%2x %7D . remove entrybad %s in %s is linked to %u instead of %u). repairwarning: %s has offset %D in %s is linked to %u) null name found in found a '/' in entry of directory entry = '')bad inode found in directory ino found = %u, name = ''). remove entrytoo many links to ino %u discovered at entry '' in directory ...link to directory discovered in name = '', dir ino = %u)bad format in directory . truncate%s zone in zno = %u, type = DATASINGLE INDIRECTDOUBLE INDIRECTVERY INDIRECT, pos = %D) out-of-rangeduplicatefoundwarning: huge directory: . missing in .. missing in bad mode of mode = %o)root inode is not a directory (ino = %u, mode = %o) link count zero of link count too big in cnt = %u) found inode %u: removebad root inode blocksize = %5d zonesize = %5d %6u Regular file%s s%6u Director%s yies%6u Block special file%s s%6u Character special file%s s%6u Bad inode%s s%6u Free inode%s s%6u Free zone%s szoneinode----- FILE SYSTEM HAS BEEN MODIFIED ----- Bootblok gave bad tracksiz fsck Hit key as follows: = start MINIX (root file system in drive 0) u start MINIX on PS/2 Model 30, U.S. keyboard (root file sys in drive 0) d start MINIX on PS/2 Model 30, Dutch keyboard (root file sys in drive 0) f check the file system (first insert any file system diskette) l check and list file system (first insert any file system diskette) m make an (empty) file system (first insert blank, formatted diskette) h check hard disk file system # %c Checking hard disk. %s Checking diskette. %s Checking diskette. %s Making empty file system Illegal command disk(ette) Please enter partition number. Drive 0: 1-4, drive 1: 6-9, then hit RETURN: %c Disk errors. Can't read partition table Fsck can't handle partitions above sector 65535  AAAAAABBBBBB ›?²?V?ß?m?m?„?Error: Division by 0 Illegal EM instruct'n Err in EM case instr Variable out of range Err in EM set instr Floating pt not impl. Heap overflow EM trap 0000000 octal ll/T€ ‚&Ķpä¼SfĪAƒ č )ĀL‰eä€@Ńę F9)@¼1" 6 š$q’ ˆ:s2"TČŠaC @\™čF*Yŗó¦MƗpXD,ųš`Ā… ŹĄ " eš”S‡ĪQŒ ^””3ꅜ1 ęL‘‰$¤}ŅS³±ĘsŠŻ‡įrбĘsģń]ȇxB˜ ƒR9 ”ó8°@‰|&ćjžI©›…r8ŲOē’®ē髎pėÆĒ~Ū£‘®y» o*fh‡¼+@z 2쉺𬻻@Ō#ß§ņm2Ÿū”ѓ.ƒ£Ąƒ€=ńۃp¾÷µŠ»óŗ{k®ōBŠ€ƒõ©ÆĪ~ģśƒŸŸä'>ś‘ļ~¤Ė ų§>’i/v  ų*Õ‚ąƒ!!JȽźķ0…>Ä -(Dü½Æˆ««aq»+¢P)=¤ą„€XæņåoXģąmØD&‚ €O£ „HĘĀ0‚iœ‚oøÄöįń‹ £›ĘŲĀ2bpzgša×ų"”&œ]ņ9Ē7Į3A4£ ƒ·Č6ņ‘nŌ! Éō²’—¬%ĻČ@#ź”ķƒć/gĢLøŌ##wéĒĘQ–¤„3ĻÕĄéF#®‚U©Ź°…Šag"xŖTEV…"覾ł¦‘Óœ @ē d‡Ą ęńÜAū~c™yÕÓ(¹乐2lį` [XĆŗ Šö1”/"!É®čp‚ŚÜį.’q ņr….naĄŌ Õ 9<a cčč¶Š†ś†niĖČ] —9”Ē›hŲMZī3†5lįd)[Yˊ@ŃyU#*°Ooև«`ĒR-źQQ¦²±1•nōT Üc‡4(Ä mŸ€ŲÅ · /eˆCĢŚHy+8bą¼„®'”ē \’w•9ųk0żŁ 姀e]Fn @\NčÉ¢-œ‰¢ÅČ_Źņ/hżu>oØøE‘¼ę©€MäĪ¢”)e J‘*`ŅŚĮøAJń®4Ä 60ļ<'\Nb7„Żģµ1W٬Y<½œĢ!nĆß^×>3ˆˆ!Ŗƒ̐‘Ś8HBŗZ¼c5D/q±+‚Vøā•!…„SĖmĖ[præĒ‘֕ƒßR’ŃÅ »qĻUŌ“«ÜY“”oļŒ!˜` sKÜ劓|Jøķ–¶ŅQ÷%B"ƒbĄr­AĮŅKĆ}ß÷  š=‹”ƒš ;!ÉJƒ·į°ŲÅéä§?óƒKlnķ³gBK88?vƋ÷y©!y=HŽ’±"…@µwYي”Óy!7¼@-"豎适ČÉķƒŪ’ųP¤¾ čŗ† ”0¬19ÕRµŖV½*VŽ+ŠsņĪūaĘ"HsZcw¬“Ę+m€«Žą‘óņRŠ‹güßĪŹ.ŒÉÆyGB’hµ&Q¹IsÉtߍüK>Qžr©Yc䇤ة±…ŪX;佀1õ8QœČø)vņ²EJ”ƃm»}źMRo®ĻHf+ę‹iæ9īīŠä.z‘ h„Ćģ|X>•…AčZP'œ@ ±^ ”"ƒ jŪ@Š~?×>eČōźŻPž«ÄhØų©+ž%’šŠÄ„ōnX¶€%¤£%išS:%ĪÜEÕue5U®€`ƒ§„(ebF\™Ė\¤ ŸŹ‰@œą@_„LWag€Ī§%RŗrĪ&o«WaÖ±w€7Čb5qmP`r"ś—ņQé·]J”%¼"€˜ļg›FyŠa"Ā—€ß’ HZ'/"¢ut?F`VĄ—6˜%Įń2/s ƒx–_‘ņtĀ„9w1Rš,sVG&+°!Q„&i Uų8ć–8¹G»7lĻ]#=ę… ĘfXu³5=vQ¾Q|~;S g1BĀ71(o,BrPP÷G̦„^(0š„]‡wu…i…żÅv[×P[Köm €F±7“3T€OM+@&W×l‡ę`¢HNA34Ó¦'ilgo÷‘x‹÷…iA~+Õ[.ʼn=–zfŒ¦z†.ˆ7[‹Ē"·åx-µø'-E7ˆ;Y¢_EÖńč~`qß±złsųēiŠs°õ&Śwtń†·_!Įv‰Ä`‹ƒ@µֈOkPtxHYč8y†•7l&RåĆ.op}5Ö{šµk„Ėā-Ļ÷z‹¤ˆ3:ƒŠž¦Šźx[Ewt¹‹wł(+lÖ3ewr±žqNv„’-&e*é>,łskÖf1łrRU“r°d]‘“åƓ.ö“oų”.I”2 }Hé=„%taчWQˆ!‡#‹mw_\7•Sg5X£”(i°tĄÖ¦TO0Gą1K& Xvųrg0Ųh8ņp€é†õŃbu…O’9[u]ą‘ru‰¹˜é˜ć9šC™–Ł8l—™gšf 9”#C MŠHk„(#ƒDC€O°F‘ł™ĀX™§99•Ćvwqét Tp\Bfhįj!ØŅXį ƒ]y`)ėåaōĮlŌ9fź4h/Pf/ąjøˆuėežźÉžjöžS¦žhv•’|=""t +$ŃÖāz$qža‡įTžS¶Nö‰’Ö>łyū™9ž‰‘”µ8¶A Į,ń@y1[>5i!g)v6kz¶ŒęZUū±}ög%oHr\ŅB ģäN‡†bŖµ8¾hd€lć6­7£a“õTt—b ]f°_6^e‹-ڤŪ„`#6KÕT‰¤øÖ“(šNć“’yt^w!ń”u¢™EkqhŽńGŃ|²b §½Q-×2|xʄ=Py}ƒ_~L@¦mpŠ“£¦ćό解‰7„Zź2Oh‰Ćö/Vś¤œčˆE‹›ŗ‰ųōˆÉč\I]pŲ·©µõ‚¤CåScŖ(ŖNŹpö“&°ś6qct«”ē‚ŚŖ¬ŖYźUĄ*'£¤øŠ‚·j¬RŗTÉ*zĆź—ż™i ńgŒĒ_ ‘פ¦g  $^ė‹&"&čėžėžU‰åPVčłčkø(÷&>;‰ĆĆ6+‰t;1öĒr;Ē:;üƒ><;|ƒ><;F|¾š’ė‹<;Ń拇$&’Š‰Ęƒ>r;t듃><;;u öuė§’66;’68;V’6>;č9ƒÄė’U‰åøX;PøtPč×![[ Ąt ø€Pø°$Pč9[[‹X;‰>;‹Z;‰<;é®#U‰åPVø(÷f‰ĆĆ6+‰ŽöD&töD&té‹#‹N‰B;‹N‰D;‹N ‰R;ø@;P’včk![[ Ąt ø€PøĀ$PčŅ[[éV#U‰åčr!£(’6(č/[\+„+¬+Ēp;é+#U‰åƒģVWƒ>>;tø’’Pé‹\;‰Nģ‹^;‰Nź‹`;‰Nī‹>b;‹FźFģ‰Fō‹Fōų‰Fņ‹Fī+Fņ‰Fš’vīčR[1ĄP’6(Pø@PčX!‰Fž‹Fņ 1ÉQP1ĄPø@PčA!‰Fü1ĄP’všPø@Pč0!‰FśøPPøŅ$Pč“ƒÄ’vžøÜ$Pč†[[’vüøō$Pčz[[’vśø%Pčn[[‹Fž+Fü+FśPø%Pč[[[‹Fž+Fü+Fś= }ø€Pø.%Pč@[[čś¾†+‰|‹Fģ‰D‹Fģų‰D‹Fź‰D ‹Fōų‰D‹Fō‰D ƒ~ģtL& 1ĄPXé"U‰åƒģVW‹>t;ƒ>p;uøõ’Péćƒ>p;| ƒ}tøõ’PéĻ‹E‰Fš‹E +EFš‰FšöE& t ‹FšE‰Fš1Ą¹‹VšćŃāŃŠāś‰Vź‰Fģ’všč[‰Fīƒ~īuøõ’Pé1Ą¹‹VīćŃāŃŠāś‰Vā‰Fä1Ą¹‹UćŃāŃŠāś‰Vę‰Fč’vģ’vź’vä’vā1ĄPøüP’vč’vę1ĄPøüPč?ƒÄ‰Fśƒ~ś} ’vśøR%Pč˜[[¾6+ž¶-s öD&uėƒĘ(ėķ‰š-6+¹(™÷ł‰Fų’p;‰~ō‰vņĒFś(‹Fś’Nś Ąt‹^ō’Fō1ĄŠP‹^ņXˆ’Fņėą‹>;‰L‹Fī‰D‹DFī‰D‹E+ED‰DĘDĘDĒFö>P%0u}‹P%AQėøPP%æ6+’¶-s‹P%9Mt ‹P%9MuĒFöėƒĒ(ė܋P%‰Lƒ~öuƃ>>;u‹D‰D’t’vų’6>;čƒÄ’t’vų’6>;øPčƒÄV’vųč4[[1ĄPPP’vųč_üƒÄ’6P%Xé U‰å’6\;’6t;č [[Ēr;1ĄéēU‰åPPV‹vW‰š-6+¹(™÷ł‰Ē‹FˆDø(÷d‰Ćö‡\+tVč»[ėL&öD&t 1ĄPWčÓ[[W’tč[[1ĄPPWøPč…ƒÄ‹D‰Fž‹D +DFž‰FžöD& t ‹FžD‰Fž’vž’tč$[[éWU‰åPPVW1’¾6+ž¶-s+öD&t ‹>;9LuGöD&tVč1[Ēr;1ĄPė!ƒĘ(ėĻ ’~‹t;O&Ēr;1ĄPėøö’PXéśU‰åƒģ V‹vW‰š-6+¹(™÷ł‰Fųø(÷d‰ĆĆ6+‰^žŠD0ä‰FöŠD˜¹Óą Fö1ĄP’vö’t’tčūƒÄd&ū’d&÷’‹^žg&ż’d&ž’’p;÷¬+tøPė1ĄPFśæ6+’¶-s(‹Fų9EuĒEƒ~śtöE&t Wč]’[ĒFśƒĒ(ėŅéIU‰åƒģ VW‹6t;‹b;‰Nś1Ą‹NśƒĮƒéPQøPYXZćŃźŃŲāś‰Ē9|v Ē6;’’øō’Pė9‰ų+D‰ĒFųP’6>;čz[[’vųWVč!ƒÄ‰Füƒ~üu’6b;ėø’’P6;’vüXéÄU‰åƒģVW‹~E‰FüE ‰ĘĒFņ1Ą1ɋTȉVź‰F칋FÓč‰Fś1ĄP’vś’vģ’vźčĒ Ą|øō’Pé-1Ą1ɋ+VśȉVę‰Fč’vč’vę1ĄPPč_ Ą~’vśė’4Fö‹^ü‹F‰Fų‹Fų9Fösøō’Péē‹^ü‹G‰Fō‹G9Ft‹^ü‹F‰GNņ’vč’vę1ĄPPč  Ą~-1Ą‹ +NęFč‰ 1Ą‹L+NęFč‰L1Ą‹LNęFč‰LNņ‹E&% ‰Fī’u ’u’u’u ’u’vīčpƒÄ ‰Fšƒ~šuƒ~ņt‰ų-6+¹(™÷łWPč¬[[1ĄPėC÷Fņt ‹^ü‹Fō‰G÷Fņt(1Ą‹ NęFč‰ 1Ą‹LNęFč‰L1Ą‹L+NęFč‰Løō’PXéBU‰åƒģVW¹‹FÓą-¹1Ņ÷ń‰Ę¹‹FÓą-¹1Ņ÷ń‰Ē¹‹F Óą-¹1Ņ÷ń‰Fśƒ~ už ‹Fśų=~øō’Pė&‰ųšFś=~øō’Pė‹FF 9Fsøō’Pė1ĄPXé®U‰åƒģVWø(÷f‰ĆĆ6+‰Ž‰š-6+¹(™÷łNśQPč[[’vś’t V赿ƒÄ‰Ē ’uémĒD"ø PVčĶ [[é[U‰åģB VW‹6t;‹^;‰Žčó¾čóvøō’P鋃>\;~>\;€~øź’Péu‹b;‰Žņó†ö󉆹ó”\;™1É1ŪRPQ’¶šóøP1ĄPS’¶ņóøP’6>;čōƒÄ‰Ē ’tWé21ĄPP’6>;ø PčĖƒÄøP†¾óP†öóPčęƒÄ‰Fų1ĄPøP1ĄPø Pč ƒÄƒ~ų}’vųé鋆čó-¹Ó艆Üó’¶Ü󍆮óP†āóP†źóP†ģóP†īóPFöP’vųč³ƒÄ‰Füƒ~ü}’vųč2[øų’Pé•‹d;‰Žņó†ö÷‰†šó1Ą1É1ŅP’¶čóQ’¶šóøP1ĄPR’¶ņóøP’6>;čƒÄ‰Ē ’t’vųčä[øó’PéGøP†öóP’¶äó’¶āó’¶čó’¶źó’¶ģó’¶īóčŸƒÄ‰Ē ’t ’vųč©[W鹋D Óą‰†ęó‹DÓą†ęó‰†ęó‹†ęó+†čó‰†ęó’¶ęó†ö÷PčŖ[[†ö÷‰†ņó1Ą1É1ŅP’¶čóQ’¶ęóøP’6>;R’¶ņóP1ĄPčeƒÄ‰Ē ’t ø€Pøf%PčĄ[[’¶īó1ĄP’vųč ƒÄ’¶ģóøP’vųčƒÄ’vųč[÷†Āót‹†Ęó‰D’t’t’6>;øPčśƒÄ÷†Āót‹†ČóˆDŠD˜PŠD˜P’6>;ø.PčÓƒÄĒD"d&ß’‹Fö D&‹†ęó‰†ōó’¶ōó’6>;č­[[1ĄPXéØU‰åƒģ.V‹v W‹~ø PFŅP’vč­ƒÄ= tøų’PéIø’’¹’#FŅ#NŌ=ułtøų’Pé+1Ą¹ #FŅ#NŌ Įtø Pė1ĄP‹^‹Fډ‹Fމ‹Fā‹^ ‰‹^‹Fī‹Nš‰‰O‹^‹Fź‹N쉉O‹^‹G uøų’PéĻ‹^ƒ? t ‹‰Ē‹-¹Óč‰Fś‹^ ‹-Óč‰Fų‹^‹‹OƒŃ-ƒŁQ¹ZćŃźŃŲāś‰Fņ‹Fņ9Fųrøų’Pėi‹^ƒ? u1ĄPė’vśFō‹Fņ+FFō‰Fö‹^’vö’vō’v’vų’vś’7č%ūƒÄ ‰Fž‹F֋NŲ%’į‰Füƒ~ü ~‹Fü- PFŅP’vč[ƒÄ’vžXé0U‰åƒģ$VW‹F-¹Óč‰Fü‹FF-Óč‰Fś‹F -Óč‰Fö‹F ‹NƒŃ-ƒŁQ¹ZćŃźŃŲāś‰Fō‹Fō+Fś+Fö‰Fųƒ~ų}øō’P飋FōFüPčz Y9Įvøõ’PéĆ‹6t;‹D‰Fģ‹D +DFģ‰FģöD& t ‹FģD‰Fģ’vģ’tčA [[‹FōFüPčå [‰Fņƒ~ņu ø€Pø~%PčŠ [[‹Fü‰D‹Fņ‰D‹Fś‰D ‹FüFņ‰D‹Fö‰D‹DFśFų‰DĒĒD‹DFśFų‰D V’6>;č([[‹~‹^^9ūvĘGėš‹FųFśFö1ÉQ¹ZćŃąŃŅāś‰Fč‰Vź‹F‰Fī1Ą1ɋTTȉVä‰F湋Fä‹VęćŃąŃŅāś‰Fä‰V湋FÓčÓą1ɉF܉NŽ‹F܋NŽFäNę‹Fč‹Nź+FÜNމFč‰Nź’vź’vč1ĄPPčw Ąé‹F™’vź’včRPča Ą}’vź’včė‹F™RPFąFā1Ą’vā’vą’vę’vä1ÉQ¹üQP’vīøP1ĄPč% ƒÄ Ąt ø€Pøœ%Pč‚ [[‹Fą‹NāFäNę‹Fč‹Nź+FąNā‰Fč‰Nźém’1ĄPXéąU‰åƒģVWĘFż‹vƒĘŠFż˜=})‹^Ć9Žré·ƒ<t ‹<~‰<ėŠFż˜@ˆFżƒĘėĪé™U‰åƒģVW¹‹FÓą¹‹>;Óā Š F‰Fžø÷f‰Ćt;¹‹Óą‰Ēƒ~t,¾|9vs‹vVW’vžčkƒÄ9Ętė‰óū‰ß‹F)š‰FėĪé.U‰åPPVW‹t;‹ ƒ>\;~ƒ>\;~øź’P鉃>\; u1ĄPé|‹\;IøÓą‰Ęƒ>f;u‹t; w ‹t;‰š÷Š#G"‰G"ėEƒ>f;u‹t;‰š÷Š#G ‰G ‹t;‰š÷Š#G"‰G"ė ‹t;‰š÷Š#G ‰G ‹t; w"‹t;‹f;‰O$…÷tøPė1ĄPXé~U‰å‹t;’w’6^;’6\;čǃÄéeU‰åƒģVWƒ>>;’tø’’Pé§Ēr;‹\;‰Nöø(÷fö‰ĆĆ6+‰ŽöD&töD&t1ĄPéz‹D‰Fų‹^;‰NņĒt;6+‹t;‹D‰G~ņ€u’vöčH÷[ĒFüæƒ~ü}>ƒ’tƒ’u1ĄPė’vųFōƒ’ uĒFō’’‹Nü‹FņÓčØt 1ĄPW’vōčƒÄ’FüGė¼1ĄPXé¢U‰åƒģVWƒ~~ƒ~~øź’PéšĒFü‹FH‰ĮøÓą‰Fų¾®+ž¶-réØöD&u陿‹D9Ftƒ~t1’ƒ~~ ‹D9Ft1’öD&t1’ƒ~u‹t;‹D9Gt1’ƒ~u ƒ~’uæƒ~uöD&uė= ’td&ļ’ ’uė.’Fü‹Fų…D tė!’vVčM[[‰š-6+¹(™÷łPč•[ƒ~~ėƒĘ(éO’‹t;öG&t ‹t;öG&tĒr;ƒ~ü~1ĄPėøż’PXé“U‰åƒģV‹vWöD&ué‹FH‰ĮøÓą‰Ē…|"tT‰ų÷Š#D"‰D"‰š-6+¹(™÷łNśQPčŪ [[‹Fś-‰Fś’vś’t VčwóƒÄ Ąu‰š-6+¹(™÷ł’t$’vPčŃ ƒÄé‹FH‰Į‹ &Óźā‰Vü‹FˆDƒ~ütVč*[1ĄPVč ń[[ééU‰åPPVW‹>\;W’6>;č [[‰Ę‰šéĶU‰åPPVW‹~Ē(‰>(ø<÷f1É£ (‰(ƒ~tø(÷ē‰ĆĆ\+‰^ü‹^üėø(÷ē‰ĆĆ\+‰^ü‹^ü'ļ’ø(Pøż’Pčw[[ Ąt ø€Pø°%PčŌ[[‹6 (‰šéQU‰å‹t;O&Ēr;1Ąé<U‰åPVW‹~ø(÷ē‰ĆĆ6+‰ŽöD&töD&ud&÷’1ĄPPøü’PWč[ģƒÄéöD&töD&ud&ż’1ĄPPøü’PWč8ģƒÄéŽ1ĄPPWøAPčĪ ƒÄéĢU‰åģ\V‹vW‰š-6+¹(™÷ł‰†øž1ĄPP’¶øžø Pčž ƒÄ‹D9Dt1ĄPøP1ĄPø Pč‚ ƒÄ逋t;‰Ž¤ž‰6t;øPFāPø&PčƒÄ‰ĒøPFÄPøŗ%Pč|ƒÄ‰†¾ž‹Ž¤ž‰t; ’|Wč# [ƒ¾¾ž|’¶¾žč [ƒ|u1’ƒ¾¾ž}é• ’}ƒ’žt鉸’Pø&PčŖ [[‰Ē1ĄPøP1ĄPø Pčč ƒÄ ’}éāŠD˜ €ˆDøPVWč ƒÄ Ą}Wč­ [額†Äž‰†¶ž1Ą‹Ž¶ž‰Ž¦ž‰†ØžĒ†Āžƒ¾Āž|é3ø÷¦Āž‰Ćó1Ą¹‹ćŃāŃŠāś‰–²ž‰†“žø÷¦Āž‰Ćó1Ą¹‹WćŃāŃŠāś‰–®ž‰†°ž’¶°ž’¶®ž1ĄPPčP Ąéµ’¶°ž’¶®ž1ĄPøPč7 Ą} ’¶°ž’¶®žė1ĄPøP†Ŗž†¬ž’¶¬ž’¶Ŗž’¶Øž’¶¦žøP1ĄP’¶“ž’¶²ž’¶Āž’¶øžčļƒÄ‰†¼ž’¶Ŗž†ÄžPWč ƒÄ‰†ŗžƒ¾¼ž|ƒ¾ŗž}Wč¢[éµ ‹†Ŗž‹Ž¬ž†²žŽ“ž‹†®ž‹Ž°ž+†Ŗžެž‰†®ž‰Ž°žé5’’†Āžéßž1ĄPøP1ĄPø Pčn ƒÄWčT[ég WčL[é_ U‰åPPVW‹6t;’6<;鹋|‹L‰8;鳊D˜‰ĒŠD˜£8;飸(÷&>;‰Ć‹æJ+ø(÷d‰Ć‹J+‰8;郋\;9Lt ƒ|tø’’Pėo‹\;‰L‹\;‰L‹\;QQ’6>;øPčŲ ƒÄ1’ėHŠD˜P”\;˜Y9Įt ƒ|tø’’Pė/‹\;ˆL‹\;ˆL”\;˜P˜P’6>;ø.Pč— ƒÄ1’뻼%Xéų WXéˆ U‰åƒģVW‹6( öt9‹F9Dr*‹‰Fś‹F‹D+F‰Dƒ|t’vśėVWč[[’vśė ‰÷‹tėĆ1ĄPXé8 U‰åƒģVW‹(‰Ļ Éu ø€PøŌ%Pč“[[‹F‰‹F‰E‹M‰(‹6( öt‹9Fw‰u‰>(Wč^[éé öt‹9Fv‰vś‹tėķ‹^ś‹G‰E‹^ś‰’vśč2[é½ U‰åV‹vW‹~96(u ‹L‰(ė‹D‰E‹(‰L‰6(é U‰åPV‹vW‹| ’ué| ‹D9u‹DE‰DWV訒[[ė‰ž‹| ’uéU ‹D9u‹DE‰DWV聒[[é9 U‰åPPVW‹6(1’ öt 9|v‹|‹tėļ‰ųé U‰åPV¾(ž+s D‰DƒĘėļĒ"(Ē+Ē((Ē($(Ē(‹N‰ (éÖ U‰åƒģVW1ĄP’včĖ[[‰Ę ö} ‹ō;÷ŁQé·’vVčn[[ Ą} ø€Pøä%Pč[[‹^‹G%š‰Fśƒ~u~ś€t Včd[øó’Péx‹t;ƒuƒ~u ‹^öGItVė\‹t;’w‹^‹GY9Įuæė‹t;ŠG˜‹^9G uæė1’‹t;ƒu ƒ~tVė‹^‰ł‹GÓč…FtVė Včé[øó’PXé÷ U‰å‹F Fu1ĄPėR‹Nˆ"+‹N‰$+‹N‹V ‰(+‰*+‹Nˆ#+‹N ‰&+‹N‹V‰,+‰.+‹N‹V‰0+‰2+ø+PčÖ[’6 +Xé“ U‰åøź’éŠ U‰å’vøś%Pč{[[~€t ’vø&Pčh[[ø&Pč_[1ĄPPPø$PčNƒÄč éK U‰å‹ņ;’ņ;‰ĖŠFˆ‡Ž;ƒ>ņ;duč €~ učé! U‰åƒ>ņ;ué Ēx;Ē|;Ēz;Ēˆ;Ž;‹ņ;‰~;øv;Pøų’Pčń[[Ēņ;éŽU‰åPPVW‹^ƒĆ ‰Ž‹F1Ņ÷v‰×ƒĒ0ƒ’9~ƒĒN‰ųˆ‹F1Ņ÷v‰Fƒ~uՋ^)óƒĆ ‰ß‰óF1ĄŠP‹^Xˆ’FO ’uź‹Fé|U‰åPPVW‹^ƒĆ ‰Ž‹F ™’v’vRPč=‰ĒƒĒ0ƒ’9~ƒĒN‰ųˆ‹F ™’v’vRPčˉF‰V’v’v1ĄPPčs Ąu¹‹^)óƒĆ ‰ß‰óF1ĄŠP‹^Xˆ’FO ’uź‹FéU‰åƒģ&VWF‰Fņ‹^’FŠ˜‰Ē ’uéąƒ’%tW莾[ėāFō‰ĘFō‰FīĒFā‹^€?-u’F’FāĒFą ‹^€?0u’FĒFą0ĒFč‹^’FŠ˜‰Ēƒ’0| ƒ’9ƒļ0ėƒ’*u‹^ņƒFņ‹?ø ÷fč‰Fč~čėŹĒFäĒFꃒ.u9‹^’FŠ˜‰Ēƒ’0| ƒ’9ƒļ0ėƒ’*u‹^ņƒFņ‹?ø ÷fę‰Fę~ę’FäėĒĒFރ’ltƒ’Lu’FŽ‹^€?t ‹^’FŠ˜‰ĒWé’FŽæė’FŽæ ė’FŽæƒ~Žt‹^ņƒFņW’w’7VčLžƒÄ‰Ęéé‹^ņƒFņW’7VčÖżƒÄ‰ĘéÓ’Fރ~Žt<‹^ņƒFņ‹‹O‰FډN܃~Ü}Ę-F÷^Ś÷^܃^Üø P’vÜ’vŚVčńżƒÄ‰Ę鎋^ņƒFņ‹‰Fźƒ~ź}Ę-F÷^źø P’vźVčeżƒÄ‰ĘėcĒFą Ę?FėXĒFą ‹^ņƒFņ‹ˆFėEĒFą ‹^ņƒFņ‹‰Fīƒ~īuĒFīč&ƒ~ęuĒFę’‹vī€<t’Nę|Fėó‰ųˆFė»°&XéB‰š+Fī‰Fź‹Fč+Fź‰Fčƒ~č}ĒFčƒ~āu÷^čƒ~č}+‹^ī€?-uƒ~ą0u‹^ī’FīŠ˜PčHü[’Nź’vąč>ü[’Fčuō’Nź|‹^ī’FīŠ˜Pč&ü[ėėƒ~čuéqż’vąčü[’NčėėU‰å’v’vøPøPč›ƒÄé?U‰åPV1ĄPP’vPP’vøPøPč>ƒÄ‰Ę‰šéU‰å1ĄPPPPP’vøPøPčƒÄéūU‰å’v’vøPøPč=ƒÄéįU‰åPV1ĄPP’vP’v’vøPøPčŽƒÄ‰Ę‰šéøU‰å1ĄPP’vP’v’vøPøPčøƒÄé—U‰å1ސ‘’ĄPPPP’v’vøPøž’Pč˜ƒÄéwU‰å1ĄPPPPP’vøPøž’PčzƒÄ‹'‹^‰éPU‰å‹N‰'‹N‰ '‹N‰'øPøž’PčĻ[[é(U‰å1ĄPPP’v’v’vøPøž’Pč'ƒÄéU‰å1ĄPP’vPP’vøPøž’PčƒÄéęU‰å1ĄPP’vPP’vøPøž’PčēƒÄéĘU‰åV‹vĒDVøž’Pčŗ[[ Ąt ø€Pøš&Pčś[[é›U‰åV‹v1ĄPPVPP’vøPøž’P蛃Ä‹'‹ '‰ ‰T‹ '‹'‰L‰T‹'‹'‰L‰T ‹'‹'‰L ‰TéBU‰å1ĄPPPPPPø Pøž’PčHƒÄé'U‰å‹N‰'‹N‰ 'ø Pøž’Pč­[[éU‰å1ĄPPP’v ’v’v’vøPčƒÄéåU‰å‹N‰'‹N ‰ '‹N ‰ '‹N‰'‹N‰'‹N‰'’v’včQ[[éŖU‰åPPVW’v č[‰Ē‰>'‹N‰ '‹N ‰ '¾'ƒ’‰ųO Ąt ‹^ ’F ŠˆFėģ’v’vč[[é\U‰åPV‹N‰'ø'P’včP[[‰Ę ötVėƒ>'}‹'÷ىō;ø’’Pė’6'XéU‰åPV‹vW1’‰óF€?tGėõ‰ų@é¹ė ¹ė¹ėU‰å‹F‹^Ķ ]ÌŲĆø<ĆśWø@)’ŽĄ&Ǥ„1Ū&‹ū¤„u= uę_ūĆ[YZXV‰ę‡\^9Ówr9Čw tø’’Ć1ĄĆøƋ‹OƒĆI|;uö‹_…ŪuøP鬒ć‰ÓėļVW‰ę‹\‹D Ąu1Ņ‹L ‹D ÷ó‘÷ó‰Ź_^[ƒÄ’ć‰Ē1Ū‹D ‹T ¹ŃąŃŅŃÓ9ßwr 9TvāķėŌ+Tū@āćėŹVW‰ę‹\‹D Ąu1Ņ‹L ‹D ÷ó‘÷ó1ۉЉŚ_^[ƒÄ’ć‰Ē1Ū‹D ‹T ¹ŃąŃŅŃÓ9ßwr 9TvāķėŅ+Tū@āćėČčYčĆøŗF'ė0øŗ]'ė(øŗt'ė øŗ‹'ėøŗ¢'ėøŗø'ėøŗĻ'ė1Ū‡ü'…ŪtP’ÓXĆ»SRøPč;čÜ‰ĀƒśsŃā»'Ӌ…Ūt‰Śė»ķ'¹‰Āā0ˆKќќќāķŗß'ėŖU‰åĒų;‹^‰ś;‹^‰ü;‹^‰<øö;PøPø»ö;¹Ķ ‰ģ]ĆčØŪ_^‰ģ]Ć^_ėų[YZXV‰ę‡\^9Ó|9Čw tø’’Ć1ĄĆøĆŚŚMM receive errorMM can't reply%c[H%c[JMemory size = %3dK MINIX = %3dK RAM disk = %3dK Available = %dK Not enough memory to run MINIX do_fork can't copydo_exec stack copy errMM hole list is inconsistentnew_mem can't zeroalarm er.äAa$.œ/1Hole table fullallowed: fstat failedMemory manager panic: %s %d coreü6;ąqpąąąąąąąąąąąąą(ąąąąąąˆą ąąąąąąąóąąąąąąąąCąąąąąąąąąą ąąąąąHąąąŒ DĒOŒU„X|cBdŹe7f7g7osUu‡x(null)sys_copy can't send‹'¢'F'Ļ']']'t'Error: Division by 0 Illegal EM instruct'n Err in EM case instr Variable out of range Err in EM set instr Floating pt not impl. Heap overflow EM trap 0000000 octal <<root:ok9WLe10V{vdt:0:0::/: daemon:*:1:1::/etc: bin:*:2:2::/bin: ast:Oky||V|yoZ7vO:8:3::/usr/ast: l=/usr/lib CFLAGS = -F -T. all: make init make bootblok make build init: $l/libc.a init.s $l/head.s asld -o init $l/head.s init.s $l/libc.a $l/end.s @echo init done. # bootblok.s is the source of the MINIX boot block. The bootblock is the # first 512 bytes on the image file and on the boot diskette. When bootblok.s # is assembled, it generates a short binary file (less than 400 bytes) that # must be stripped of its header and copied to the file bootblok. The dd # command below does this. If everything has been done right, the bootblok # file should begin with the following 8 words, in hex: # c0b8 8e07 33d8 b8f6 2fe0 c08e ff33 00b9 # The exact procedure for going from bootblok.s to the binary file stripped of # its header is somewhat operating system dependent. Some assemblers make # an object (.s) file; others make an a.out file directly. If your boot # diskette does not start out by printing 'Booting MINIX 1.0' the problem is # probably that you have not made a good boot block. bootblok: bootblok.s @asld bootblok.s @dd if=a.out of=bootblok bs=16w skip=1 count=16 2>/dev/null @rm a.out @echo bootblok done. build: build.s cc -o build build.s @echo build done. fsck: fsck.s fsck1.s @echo "Start linking fsck. " asld -o fsck fsck1.s fsck.s $l/libc.a $l/end.s @echo fsck done. fsck.s: fsck.c cc -c -Di8088 -DSTANDALONE -F fsck.c # 'make image' combines the bootblock, kernel, memory manager, file # system, init and fsck into a single file, called image. Each of these pieces # appears in the image file just as the original does on the disk, except that # the header at the front is removed, and each piece is padded out to an # integral multiple of 16 bytes. Build also prints a message telling how big # the various pieces (except fsck) are. # # 'make net' does the same thing, only with the networking code from the # 'amoeba directory included # image: build bootblok @getlf "Insert blank diskette in drive 0 and hit return" @build bootblok ../kernel/kernel ../mm/mm ../fs/fs init fsck image @cp image /dev/fd0 net: build bootblok @getlf "Insert blank diskette in drive 0 and hit return" @build bootblok ../amoeba/kernel/kernel ../amoeba/mm/mm \ ../amoeba/fs/fs init fsck /dev/fd0  ĄH²–Šė‹&\MčėžėžU‰åPVč&čjøD÷&ĄX‰ĆĆY‰Yƒ0uøPė1ĄPžXĒüXƒ>¾X|ƒ>¾XF|¾š’닾XŃ拇^M’Š‰Ęƒ>üXtė©V’6ĄXč®[[ƒ>ņXt˜č‘ė“U‰åPVƒ>ųXtc¾YžB]sM€|=uB‰š-Y¹D™÷ł£ĄX‹D6%’£¾X¹‹D6Óų%’£ŽX‹L8‰äX‹L:‰ąXĘD<ĘD=’ųXé GƒĘDė­ø€PøŠHPčE=[[øŚXPøtPčD[[ Ąt ø€PøšHPč'=[[‹ŚX‰ĄX‹ÜX‰¾Xé]GU‰å‹N‰ÄXøĀXP’včŌC[[éEGU‰åPPVWčpčč÷1’ƒ’}`øD÷ē‰ĆĆY‰YøPøPč÷*[[‰Ę‹Y‰wVčQ-[‹Y‰w‹YĒG.‹YĒG0‹YĘG2‹YĘG3‹YĒ’’ƒĒė›éÉFU‰åƒģ VWĒĀ_ĒĘ_`ĒÄ_dÕ¾`žpŁs"DŽDŽ’’„ ‰„„ōū‰„Ę ėŲĒ dĒdپ`žpŁré“čC¹Óą1ɉFö‰Nų‰÷‰ų-‰Fś1Ą‰łNöFųį%’’1Ņ‹^ś^öVųćā’’PQRSčłB Ąt@ž`uĒĘ_dĒhė,ždÕuĒÄ_XŃĒXÕė‹œ„ ‰‡‹œ„ōū‰‡Ę éd’¾`žpŁs‹„‰„Ę ėģ‹Ę_‰Č_é·EU‰åƒģVW‹ÄH‰Nģ‹ĘH‰Nź‹ČH‰Nč1Ą1ɋVźVģČVčȉVä‰F湋Fä‹VęćŃąŃŅāś‰Fä‰VęĒFš1ĄPøP’všč¹+ƒÄ‰Ęø2PVøPPčū9ƒÄĒFōP‹^ōtLøPVčŪ,[[ĒFš1ĄPøP’vščz+ƒÄ‰Ęø2PVøPPč¼9ƒÄĒFōP‹^ōt ø€PøxIPč£:[[‹^ō’w‹O XÓą‰Fś~ś@~ ’vśø’IPč:[[¹‹FśÓą‰FīøPVčb,[[~ś’~ĒFīĒFäĒFęĒÄXB‹Nź‰ĘX‹Nč‰ČX‹FźFģFčFī£ŹX‹Nģ‰ĢXøĀXP1ĄPčA[[ Ąt ø€Pø“IPč:[[ĒÄXĒĘX‹Nä‹Vę‰ĢX‰ĪX‹Nś‰ŹXøĀXPøü’PčĮ@[[ Ąt ø€PøŹIPčŠ9[[ƒ~īu ’vśøäIPčV;[[øJPčM;[ĒFņ‹Fś9Fņré–1ĄP’vņ’vščA*ƒÄ‰ĘøP’vņøPč.*ƒÄ‰ĒøPVWčs8ƒÄʅ øĆPVč]+[[øĆPWčS+[[1ĄPø1Ņ’vņč³ARP1ĄPøPčÉ@‰Fö‰Vų’vų’vö1ĄPøPč²A Āu1ĄP’vų’vöøLJPčÆ:ƒÄ’Fņé_’~šu øZJPč˜:[ėøšJPčŽ:[éXPčƒÄ‰Ę‹> ’tVč'&[Wė$‹YG‹^öŃćƋFų‰‹^ųĒG‹^ų‰w’vöXé©AU‰åPVƒ>žXuø’’PėNøP’6ŽX’6äXčÉ6ƒÄ Ąt’6XPčƒÄPč %[’6ąX|ƒ>ąX~øź’PéĒøP’6ŽX’6āXčŒ5ƒÄ Ąt’6XPč„[‰Ę öu’6U‰åƒģV’6ŽXčM)[‰Ę öu’6U‰å1ĄPč[é&>U‰åƒģ$VWƒ>ĄXu0÷ŽX’t(¹‹ŽXÓśā’‰V之ŽXÓśā‰Vā&ŽX?ė ‹ĄX‰NäĒFāƒ>ĄXtƒ>ąX}øź’Péž’6ŽXč5([‰Ē ’u’6ąXu1ĄPé^‹E‹M‰Fģ‰Nīƒ~ī}øź’PéE‹u‹D‹L‰Fō‰NöĒFźĒFš‹%š‰Fę~ę uøPė1ĄPFށ~ę`uøPė1ĄPFąƒ~ąt‹Fö Fōu ĒFō’’ĒFö’Ē€Oƒ~ŽtH’6äX’6ĄX’6ąX’vī’vģ’t’včDƒÄ‰Fźƒ~ź}靋Fź‰Fš‹Fź™FģVī‰Fģ‰VīĒFźéƒ~uWƒ~ąuQ’vī’vģ’t č[‰Ć”ąX™’w‹O [)ĮÓSQč“< Ą~øå’PéX’vī’vģ’vö’vōčy< Ą~1ĄP’vö’vōVčVƒÄ€|'t#’vī’vģ’6ąX’vVč‰ ƒÄ ‰Fźƒ~ź’vźé ƒ>ąXuéļ’vī’vģ1ĄPøPčU:‰Fņø+Fņ9ąXs’6ąXėø+FņPFčƒ~č} ø+Fņ‰Fčƒ~t ƒ~ątEƒ~u?‹Fō‹Nö+FģNī‰Fų‰Nś’vś’vų1ĄPPčĆ; Ąéy‹Fč™RP’vś’vųč­; Ą~‹Fų‰Fč’vä’vā’6äX’v’vč’vņ’vī’vģVčZƒÄ‰Fźƒ~źtė5ƒ>€O}ė,‹^čäX‰äX‹ąX+N艹X‹FčFš™FģVī‰Fģ‰Vīé’ƒ~u@ƒ~Žt鄃~ąté{’vī’vģ’vö’vōč; Ą~ ‹Fģ‹Nī‰D‰Lč(/‰D‰T ĘD&ėM€|'tG’vī’vģ’t’tčč: Ą|4ĒDĒDĒFģĒFīøPVčf%[[‰F܃~Üt ‹^ÜĒGĒG‹Fģ‹Nī‰E‰Mƒ~u:€|)u4’vī’vģ1ĄPøPč»8 Āu ~ę€t~ę@u‰6ņX‹Nģ‹Vī‰ōX‰öX~ę€uĘD)ƒ>€Ot‹€O‰Nźƒ>€O˜u‹Fš‰Fźƒ~źu’všė’vźXé":U‰åƒģVW‹~‹%š1É=`uA‰Nöƒ~öt’v’v1ĄPøPč/7‰Fō‹E‰Fņė’v’vWč8ƒÄ‰Fō‹E ‰Fņƒ~öu>ƒ~ōu8ƒ~u1ĄPPø’’Pč ƒÄ‰ĘVč·[én’v’vWčƒÄ‰Ę öu[’63‰Fō‰Vö~ī|øå’Péį‹Nž‹FüÓą‰Fųƒ~čtøPė1ĄP’vų’t č)ƒÄ‰Ēƒ~čtWčČ[‹^īŃćū‰^ś‹^śƒ?u6’t’t č,[[‹^ś‰ĒFź ’tʅ ‹^śƒ?uøBPWč&[[’6śX~øPøPVč׃Ä1ĄPév’~øå’PėjøPVč÷[[ Ąu”Y-Y¹D™÷ł¹ QPčœ+[[øą’Pė@‰ų™F V RP1ĄPøPč"0 Ą~ 1ĄPč%[1ĄPė‹F F uøPøPVč_ƒÄøPXéé/U‰åƒ~u’śX‹YĘG<¹‹ŽXÓā ¾X‹Y‰W6‹Y‹äX‰O8‹Y‹ąX‰O:‹F÷Ų‹YˆG>ĒüXé—/U‰åPVW‹~¾YžB]sT€|<uI€|=uC‹D6%’9Fu8¹‹D6Óų‰ĆŃćDƋ9u ‰š-Y¹D™÷ł1ÉQPč[[’śX’Nué4/ƒĘDė¦é,/U‰åPVW‹~ ’|ƒ’| WødKPčČ$[[øD÷ē‰ĆĆY‰Ž€|<t€|=uéō.€|>u ĘD=’ųXėĘD<‹F‰D:’vWčwē[[éĪ.U‰åƒģ VWƒ>ĄX~ø’’P齋>ŽX ’|ƒ’| WøpKPčY$[[øD÷ē‰ĆĆY‰Ž€|<u1ĄP鍊D>˜÷Ų‰Fśƒ~śuéx¹‹D6Óų%’‰Fųƒ~ų|ƒ~ų| ø€Pø~KPč$[[‹^ųŃćDƋ‰Fö‹^ö‹_‹G‰Fō1ɋFōÓč%’£žO‰> O‹^ö‹‰¢OĒœOøšOP’vśčß[[øü’PWčŌž[[1ĄPXé÷-U‰å’včs[‹N‰¼O‹¶O¹Ó拇źM¹øOQ’6²O’Š[[”¾OéÉ-U‰å’včC[‹¶O¹Ó拇īM¹øOQ’6²O’Š[[é£-U‰å’vč[ƒ~uøPėøPŗO1ɋFÓč%’£¼O‹N‹V ‰ĀO‰ÄO‹N‰¾O‹N‰ŹO‹N ‰ĄO‹¶O¹Ó拇ģM¹øOQ’6²O’Š[[>¾Oüu’6²OčBż[”¾Oé&-U‰åPPVW’6ŽXčŽ[‰Ē ’u’6ŗOüu’6²Oč©ü[øĀOPøĢXP¹čk,’6¾OXé{,U‰å¹‹FÓč%’£¶O1ɋFÓč%’£“Oƒ>¶Ot ‹"N9¶O| ’6¶OøŒKPč÷![[‹¶O¹Ó拏šM‰²Oé-,U‰åƒģV’v’vč±([[‰Ęƒž›u*FęP’vč™([[ Ąt ø€PøšKPč­![[’vģ’vźčĄü[[ėÄ öt ø€Pø°KPč![[éÕ+U‰åPPV‹vW‹Yƒ4uĒDVøü’P舒[[é®+‹Y¹‹G4Óč%’‰Fü‹^ü¹Ó㋿šM‹Y1ɋG4Óč%’‰DVWčO’[[éu+U‰å‹^ĒGéi+U‰åPPVW‹~ĒE‹Y’w@‹GBY9ĮtéF+‹Yƒ4té9+¾ĪYžB]s‹E9D4ué%+ƒĘDėź‹Y‹E‰G4¹‹EÓų%’‰Fü1ɋEÓų%’‰EĒE‹ĄX‰M‹ĄX‰M‹^ü¹Ó拇ģMW’v’Š[[éŃ*U‰åPPVW‹Y‹4¾ĪYžB]s9|4uĒD4ƒĘDėėWč,ž[ĒŗO1ɉųÓč%’£¼O‹ĄX‰¾OĒĄO‹¶O¹Ó拇ģM¹øOQ’6²O’Š[[1Ąéh*U‰åƒģVWFīP’vč,[[‰Ę öu1ĄPė€~īuVėFīPVč[[‰ĒVč‚[WXé**U‰åƒģVW‹^€?/u ‹Y’wė‹Y’w^VčS[’v’včB[[‰Ē ’u VčA[1ĄPė,€=uVė$’vVč³[[‰FśVč#[ƒ~śu1ĄPė‰~‹vśė¹Xé¹)U‰åƒģVW‹~‹vŠ˜‰Fžƒ~ž/uFėń‹^Ć€9Žs%ƒ~ž/tƒ~žt‹^ƒĆ9ßs‹FžˆGFŠ˜‰FžėЃ~ž/u‹^Ć€9Žs FŠ˜‰Fžėę‹^ƒĆ9ßsĘGėš‹^Ć€9Žr Ē’[[‰Ē’vüč­ [ėƒĘ2ėø ’u1ĄPė/€}(u(¾PžüPsń9|*uWč„ [øP’t&č [[‰Ēė׃Ę2ėŪWXé(U‰åƒģVW‹~‹%š=@tøģ’Péįƒ~ uøPėøPFų1ĄP’vųWčzƒÄ‰Fśƒ~śt’vśé²’u’u1ĄPøPčś$‰FšĒFņĒFģĒFōĒFö’vö’vō’u’uč ' Ą|鯒vö’vōWčįīƒÄ‰Fī1ĄP’vī’u čŅ ƒÄ‰Fü‹vü‹^üĆ9Žr銒Fņ‹Fš9Fņvƒ~ tévĒFģénƒ~ tPƒ<tKøP’vDPčŖƒÄ Ąt6ƒ~ uĒ‹^üʇ č4‰E‰U ė‹‹^‰øAP’vüčž[[1ĄP銃~ u ƒ<uĒFģėƒĘéh’ƒ~ģtėøAP’vüčl[[FōƒVöé ’ƒ~ tøž’P鋃~ģu+’Fņuøå’Péy’u’uWč|óƒÄ‰Füƒ~üu’6žXuø’’PéīøP’6ŽX’6äXč2ƒÄ Ąt’6XPčŹ[‰Föƒ~ö’u’6XP讜[‰Ē ’u ĒD&’’’6žXuø’’PéāøP’6ŽX’6āXč*ƒÄ Ąt’6XPčĀ[‰Fųƒ~ų’u’6XPč<ų[‰Ę öu’6žXuæ’’ ’t Vč½[Wé¶øP’6ąX’6ęXč˜ƒÄ Ąt Včž[’6XPčų[[‰Fžƒ~žu‹>XPčR÷[[‰Ē ’u’6žXuĒFś’’ƒ~śuøPFųPFźPWčžųƒÄ‰Fśƒ~śu ŠD ˜HˆD ĘD&VčK[WčF[’vśXéģ U‰åƒģV‹vW‹%š‰Fī~ī t~ī`uéČ ‹D ‰FźVč[‰Fš‹Fš™‰Įø1ŅćŃąŃŅāś‰Fņ‰Vō€|'u ĒDĒDĒFöĒFų’vų’vö’t’tč‚ Ą}:’vų’vöVčĘēƒÄ‰Fžƒ~žt‹Nš‹FžÓč‰Fü’vü’vźčh [[‹Fņ‹NōFöNųė³’t’vźčO [[‹D‰Füƒ~ütQ‹Nš‹FüÓą‰Fž1ĄP’vž’vźčkƒÄ‰Fģ‹~ģ‹^ģĆ9ßs’5’vźč [[ƒĒėęøBP’vģč‹[[’vü’vźčņ[[Vč0[éŹU‰åƒģVW’vč«[‰Ę‹DĀ_D=rø’’P隃|wƒ|v ø€PøĪKPčB[[1’9|v ‰ų1ÉQP’včӃĉūŃćLˉGėŪ‹D‰Fś1’9|v ‰ųFś1ÉQP’vč£ƒÄ‰ūŃćLˉGėŪ‹D‰Fų‹^ų‹D‰Fų‹^ų‹DDĀ_£Ā_1ĄPXéU‰åPPVW’včē[‰Ę‹DD+Ā_÷Ų£Ā_1’9|v‰ūŃćDĆøĆP’7čy[[Gėä1’9|v‰ūŃćDĆøÄP’7č[[[Gėä1Ąé„U‰åƒģVW‹F9F rĒF ¹ ‹F Óč‰Fō‹FōÓą+F ÷Ų‰Fš¹‹Fš™÷ł‰Fņƒ~ņu’vė‹F@PFī‹Fī’Nī Ąu鳋^ōŃć^‹‰Fģ‹^ņŃć^ģ‰Ž‹^ģĆ‰ß9÷uét‹‰Fžƒ~ž’tdĒFųƒ~ų}Y‹Nų‹FžÓčØuH‰š+Fģ¹™÷ł¹ÓąFų¹ ‹VōÓā‰Vö‹F9FörEž‰Ęė‹NųøÓą ‰‹^ģʇ ’vöė%’Fų딃Ęė…’Fō‹F9FōuĒFōĒFņé@’1ĄPXé’U‰åƒģ VW¹ ‹FÓč‰Ē‰ųÓą+F÷Ų‰Fü¹‹Fü™÷ł‰Fś‹Fü™÷ł‰Vų‰ūŃć^‹7 öuéO‹^śŃćó‹Nų‹ÓųØu ’vøāKPčé[[‹^śŃćó‰^ō‹NųøÓą÷Š#‰ʄ éU‰åPV¾PžüPs‹F9D&uVėƒĘ2ėź’vøLPčŸ[[éåXéįU‰åPPVW‹~‹E‰Fü~üuøPė¾PžüPs‹Fü9D&uøPėƒĘ2ėē1ĄPXé U‰åPV‹^’w 聒[‰Ę‹D éŠU‰åPPV‹vWƒ~u,‹D&‰Fü1ĄPøP’t&čÅƒÄ‰Ēø2PWVč ƒÄ‹Fü‰D&ė!øPP’t&č”ƒÄ‰Ēø2PVWčęƒÄʅ ĘD1øÅPWčĢ[[éU‰åPPVW1’¾üPžLPčW[ė’vų’vśøhLPčGƒÄ1ĄPėO‹Fō‰Fö’vöø’’PčĘž[[‰Ę öu’vōEPč=ż[[ė(‹F‰ĘD ‹Y‹G0‰D‹YŠG3ˆD ‹F‰D Vč[VXéžU‰åPV‹vWĒDĒD豉D‰T ĘD&1’ƒ’ }‰ūŃćDĆĒGėėédU‰åPV’včHż[‰Ę’vDPčŗü[[éHU‰åƒģV‹vW’t č%ż[‰Fś‹D"-¹ 1Ņ÷ń‹^śGG‰Fų1ĄP’vų’t čiƒÄ‰Ē‹D"-¹ 1Ņ÷ń‰Ó¹Óćū‰^üƒ~uø P’vüVčƒÄėø PV’vüč}ƒÄʅ ø@PWčg[[ĘD&é²U‰åV‹v‹D$@‰D$é¢U‰åPPVW‹F%‰ĆŃć‹·Č_ƒ~’t5 öt1‹F9„u"‹F9„u€¼ u’Ā_Š„ ˜@ˆ„ Vé’‹“ė˃>Ā_u øPøˆLPčõ[[’Ā_‹6Ę_Š„ ˜ Ą~ ƒ¼t‹“ėź öt Š„ ˜ Ą~ ø€PøœLPč½[[‹„%‰ĆŃ㋿Č_9žu‹„%‰ĆŃ拄‰‡Č_ėƒ½t9µu ‹„‰…닽ė〼 uƒ¼’t øPVč÷[[‹F‰„‹F‰„Š„ ˜@ˆ„ ‹„%‰ĆŃ拇Č_‰„‹„%‰ĆŃ扷Č_ƒ~’tƒ~u 1ĄPVčØ[[VXéTU‰åPPV‹vW öuéCŠ„ ˜Hˆ„ Š„ ˜ Ą~é-’Ā_‹¼‹„‰Füƒ~üt ‹^ü‰æė‰>Ę_ ’t ‹Fü‰…ė‹Nü‰Ä_öF€t)Ē„‹Ę_‰Œƒ>Ę_u‰6Ä_ė‹Ę_‰·‰6Ę_ė'‹Ä_‰ŒĒ„ƒ>Ä_u‰6Ę_ė‹Ä_‰·‰6Ä_öF@t€¼ uƒ¼’t øPVčŅ[[~ÅuĒ„’’ésU‰åƒģ VW’včTś[‰Ę‹D-+F÷Ų‰Fü‹D+D@’vü’tPDPčšųƒÄ‰Ē ’uGĒ‹„‰Fųƒ’˜t(1ɋFųÓč%’¹‹VųÓźā’’“PRøźLPč‰ ƒÄėĒ„’’‰>€Oʄ é$U‰åPV¾`žpŁs‹F9„uĒ„’’Ę ėåé’U‰åPPVW‹^Ē’’1’ƒ’}‹YƒĆS‰ūŃćXƃ?u‹^‰?ėGėŻ‹^ƒ?}øč’Pė1¾B]žĀ_s$ƒ|u‹F‰ĒDĒD‹^‰71ĄPė ƒĘ ėÖøé’PXéˆU‰åV‹vĒĄXu\øD÷&ŽX‰ĆĆY‰Ž‹Y’wčRł[ƒ>ąXt ‹Y’wė’t‹YX‰G‹Y’wč(ū[ƒ>ąXt1ĄPė’t0‹YX‰G01ĄPė‹Y’6ŽX’6āXƒĆSč7ƒÄPXé£U‰åPVƒ>žXuø’’Pė‹Y’6ŽX’6āXƒĆSč ƒÄ‰ĘVXétU‰åPPVWøP’v’vč  ƒÄ Ąt’6XPčćé[‰Ē ’u’6XPčlé[‰Ę öu’6XPč2č[‰Ę öu’6žXuæ’’ėVčŌ[‰Ē ’tVčøö[Wė‹%ņ‹ąXį’ ȉĘD&Vč›ö[1ĄPXéAU‰åPPVWƒ>žXuø’’PėSøP’6ŽX’6äXč_ƒÄ Ąt’6XPč¢ē[‰Ę öu’6XPč$ē[‰Ē ’u’6XPčēå[‰Ę öu’6žXuæ’’V艒[ Ątæā’ ’u‹čX‹źX‰L‰T ĘD&VčVō[WXéžU‰åč!£ĢX‰ĪX1ĄéīU‰åPVƒ>žXuø’’Pė6ĒŅO‹äX‹ęX‰ŚO‰ÜOøŠOPøż’PčO [[‰Ę öt VøMPč_[[1ĄPXé”U‰åƒģFšP’6ĄXč [[‹Nš‹Vņ‰ĘX‰ČX‹Nō‹Vö‰ŹX‰ĢX‹Nų‹Vś‰ĪX‰ŠX‹Nü‹Vž‰ŅX‰ŌX1ĄéRU‰åƒģ VW‹ŽXįæ’‰Ļ‹6YW讳[ Ąu’6ŽXuFśPøąXP1ĄPčłƒÄ‰Fųƒ~ųt0’vųė_ƒ>ąX|ƒ>ąX|ø÷’PėK9>ąXu’6ąXė?‹ąX‰ŽXčKωūŃćDĆ’7‹ąXŃćDƏ‹ąXŃćDƋƒĆ‰^ö‹@‰’6ąXXé¢U‰åƒģVWøPč‚ń[‰Ē ’t貉E,‰U.€}0uĘE1ĒFžüP~žĄXtø’’P鬸D÷&ŽX‰ĆĆY‰ßøD÷&ąX‰ĆĆY‰^śĒFųD‹Fų’Nų Ąt‰ūG1ĄŠP‹^śXˆ’FśėćøD÷&ąX‰ĆĆY‰ŽĒFųƒ~ų}+‹^ųŃćDƃ?t‹^ųŃćDƋƒĆ‰^ö‹@‰’FųėĻ‹āX‰L@ƒ>ŽXu‹āX‰LB’tčGó[’tč@ó[1ĄPXéź U‰åPPVWƒ>ĄXtø’’Pé~øD÷&ŽX‰ĆĆY‰Y‹>ŽX’w@‹GBY9Įu ‹Yƒ4tč×į‹Y€<u‹Y€>u’śX‰>ŽX軯‹YĘG<1öƒž} ‰6ŽXčäĢFėń‹Y’wčøš[‹Y’wč­š[1ĄPXéS U‰åPVƒ>ĄXtø’’Pė<øD÷&ŽX‰ĆĆY‰Žƒ>¾Xu‹ąX‰L.‹āX‰L0ƒ>¾X.u‹āXˆL3‹ąXˆL21ĄPXé U‰åƒ>ĄX~ø’’Pė’6ąX’6ŽXčŗÜ[[ĒüX1ĄPXéŁ U‰åPPVWĒźOøčOPøż’PčU[[‰Ē ’t Wø.MPče[[øPč•ī[‰Ę öt‹ņO‹ōO‰L,‰T.€|0uĘD1”ņO‹ōOé} U‰åV‹vW‹~‰ūGŠ˜‰óFPŠ˜Y9Įt1ĄPė ’NuäøPXéN U‰åƒģV‹vW‹~ƒ~é7 ¹‹F™÷ł ŅuC¹‰ų™÷ł Ņu7¹‰š™÷ł Ņu+¹‹F™÷ł‰Fž‰~ü‰vś‹^śƒFś’7‹^üƒFü’Nžuéė%‹F‰Fž‰~ü‰vś‹^ś’Fś1ĄŠP‹^üXˆ’Fü’Nžuēéæ U‰åƒģVWƒ~uƒ~¾>XæäX‰ūGŠˆF’Nuó1ĄPė<~€~ ĒXP’v’vś’6ĄXøPčmÓƒÄ £Pté? ĒP’vø>MPč{[[~€t ’vøVMPčh[[øZMPč_[čkūčUé U‰å€~uč*éś ‹ģŁ’ģŁ‰ĖŠFˆ‡ˆŁƒ>ģŁduč €~ učéÓ U‰åƒ>ģŁuéĘ ĒrŁĒvŁĒtŁĒ‚ŁˆŁ‹ģŁ‰xŁøpŁPøų’PčnŻ[[ĒģŁé U‰åPPVW‹^ƒĆ ‰Ž‹F1Ņ÷v‰×ƒĒ0ƒ’9~ƒĒN‰ųˆ‹F1Ņ÷v‰Fƒ~uՋ^)óƒĆ ‰ß‰óF1ĄŠP‹^Xˆ’FO ’uź‹Fé. U‰åPPVW‹^ƒĆ ‰Ž‹F ™’v’vRPč×‰ĒƒĒ0ƒ’9~ƒĒN‰ųˆ‹F ™’v’vRPčŗ‰F‰V’v’v1ĄPPč± Ąu¹‹^)óƒĆ ‰ß‰óF1ĄŠP‹^Xˆ’FO ’uź‹Fé²U‰åƒģ&VWF‰Fņ‹^’FŠ˜‰Ē ’ué’ƒ’%tW肾[ėāFō‰ĘFō‰FīĒFā‹^€?-u’F’FāĒFą ‹^€?0u’FĒFą0ĒFč‹^’FŠ˜‰Ēƒ’0| ƒ’9ƒļ0ėƒ’*u‹^ņƒFņ‹?ø ÷fč‰Fč~čėŹĒFäĒFꃒ.u9‹^’FŠ˜‰Ēƒ’0| ƒ’9ƒļ0ėƒ’*u‹^ņƒFņ‹?ø ÷fę‰Fę~ę’FäėĒĒFރ’ltƒ’Lu’FŽ‹^€?t ‹^’FŠ˜‰ĒWé’FŽæė’FŽæ ė’FŽæƒ~Žt‹^ņƒFņW’w’7VčLžƒÄ‰Ęéé‹^ņƒFņW’7VčÖżƒÄ‰ĘéÓ’Fރ~Žt<‹^ņƒFņ‹‹O‰FډN܃~Ü}Ę-F÷^Ś÷^܃^Üø P’vÜ’vŚVčńżƒÄ‰Ę鎋^ņƒFņ‹‰Fźƒ~ź}Ę-F÷^źø P’vźVčeżƒÄ‰ĘėcĒFą Ę?FėXĒFą ‹^ņƒFņ‹ˆFėEĒFą ‹^ņƒFņ‹‰Fīƒ~īuĒFī\Nƒ~ęuĒFę’‹vī€<t’Nę|Fėó‰ųˆFė»$NX餉š+Fī‰Fź‹Fč+Fź‰Fčƒ~č}ĒFčƒ~āu÷^čƒ~č}+‹^ī€?-uƒ~ą0u‹^ī’FīŠ˜Pč<ü[’Nź’vąč2ü[’Fčuō’Nź|‹^ī’FīŠ˜Pčü[ėėƒ~čuéqż’vąčü[’NčėėU‰å1ĄPPPP’v’vøPøž’Pč˜ƒÄéėU‰å1ĄPPPPP’vøPøž’PčzƒÄ‹‚N‹^‰éÄU‰å‹N‰|N‹N‰~N‹N‰†NøPøž’PčĻ[[éœU‰å1ĄPPP’v’v’vøPøž’Pč'ƒÄézU‰å1ĄPP’vPP’vøPøž’PčƒÄéZU‰å1ĄPP’vPP’vøPøž’PčēƒÄé:U‰åV‹vĒDVøž’Pčŗ[[ Ąt ø€PødNPčÉś[[éU‰åV‹v1ĄPPVPP’vøPøž’P蛃Ä‹|N‹~N‰ ‰T‹€N‹‚N‰L‰T‹„N‹†N‰L‰T ‹ˆN‹ŠN‰L ‰Té¶U‰å1ĄPPPPPPø Pøž’PčHƒÄé›U‰å‹N‰|N‹N‰~Nø Pøž’Pč­[[ézU‰å1ĄPPP’v ’v’v’vøPčƒÄéYU‰å‹N‰|N‹N ‰~N‹N ‰€N‹N‰‚N‹N‰„N‹N‰†N’v’včQ[[éU‰åPPVW’v č[‰Ē‰>|N‹N‰~N‹N ‰€N¾‚Nƒ’‰ųO Ąt ‹^ ’F ŠˆFėģ’v’vč[[éŠU‰åPV‹N‰zNøxNP’včP[[‰Ę ötVėƒ>zN}‹zN÷ىīŁø’’Pė’6zNXé‘U‰åPV‹vW1’‰óF€?tGėõ‰ų@ét¹ė ¹ė¹ėU‰å‹F‹^Ķ ]ÌŲĆøŚĆśWø@)’ŽĄ&Ǥ„1Ū&‹ū¤„u= uę_ūĆ[YZXV‰ę‡\^9Ówr9Čw tø’’Ć1ĄĆøƋ+G;Gw ŃąƋ_…Ūu ‰Ó…ŪuøPé’ć‹‹OƒĆI|;uö‹_…ŪuøPéä’ć‰ÓėļVW‰ę‹\‹D™‰×9Āu6!Ņ}÷Ūt.1Ņ‹L ‹D !Ą}÷Ų÷ŁŠ÷×÷ó‘÷ó!’}÷Ł÷ŲƒŁ‰Ź_^[ƒÄ’ćR‰Ē1Ū!’}÷ß÷\ߋD ‹T !Ņ} ÷Ś÷ŲŚ÷Tž¹ŃąŃŅŃÓ9ßwr 9Tvāķė+Tū@āć_ė„VW‰ę‹\‹D Ąu1Ņ‹L ‹D ÷ó‘÷ó‰Ź_^[ƒÄ’ć‰Ē1Ū‹D ‹T ¹ŃąŃŅŃÓ9ßwr 9TvāķėŌ+Tū@āćėŹ‰ćR‰Į÷gZP‰Š÷gZ‰ȉŃ÷gŹ[ƒÄ’ćVW‰ę‹\‹D™9Āu:!Ņ}÷Ūt21Ņ‹L ‹D !Ą}÷Ų÷ŁŠ÷ó‘÷ó1ۃ| }÷Ū÷ŚƒŪ‰Š‰Ś_^[ƒÄ’ć‰Ē1Ū!’}÷ß÷\ߋD ‹T !Ņ}÷Ś÷ŲڹŃąŃŅŃÓ9ßwr 9Tvāķė°+Tū@āćė¦VW‰ę‹\‹D Ąu1Ņ‹L ‹D ÷ó‘÷ó1ۉЉŚ_^[ƒÄ’ć‰Ē1Ū‹D ‹T ¹ŃąŃŅŃÓ9ßwr 9TvāķėŅ+Tū@āćėČčYčĆøŗŗNė0øŗŃNė(øŗčNė øŗ’NėøŗOėøŗ,OėøŗCOė1Ū‡pO…ŪtP’ÓXĆ»SRøPč;čø‰ĀƒśsŃ⻐NӋ…Ūt‰Śė»aO¹‰Āā0ˆKќќќāķŗSOėŖU‰åĒņŁ‹^‰ōŁ‹^‰öŁ‹^‰śŁøšŁPøPø»šŁ¹Ķ ‰ģ]Ćč„·‰ć‰š‰ś‹‹wņ„‰Ę‰×[ƒÄ’ć_^‰ģ]Ć^_ėų[YZXV‰ę‡\^9Ó|9Čw tø’’Ć1ĄĆøĆŚŚget_work couldn't revive anyonefs receive errorZONE_NUM_SIZE != 2SUPER_SIZE > BLOCK_SIZEBLOCK_SIZE % INODE_SIZE != 0NR_FDS > 127NR_BUFS < 6inode size != 32Invalid root file systemRAM disk is too big. # blocks = FS Can't report to MMCan't report size to MEMRAM disk of %d blocks is in extended memory Loading RAM disk. Loaded: 0K %4DK %c RAM disk loaded. Please remove root diskette. RAM disk loaded. Root file system corrupted. Possibly wrong diskette.init: can't load root bit mapsÆ ‚@}`‚€bÕ Ć@²`Ć Ū ė  revive errunpause err 1unpause err 2bad major devrw_dev: can't receiverw_dev: can't senddo_umounttoo many map blocksfreeing unused block or inode--check file syscan't find superblock for device (in decimal)Out of i-nodes on root device (RAM disk) Out of i-nodes on device %d/%d All buffers in useNo free bufferNo space on root device (RAM disk) No space on device %d/%d Unrecoverable disk error on device %d/%d, block %d do_stime errorclock_time errFile system panic: %s %d ¢;Ü:[ jż9>ܼ%ą&9>g3Ž8ćČ5K69>Ž4© 9>v"~$9<9> 89>9>ß49>89>9>Ö69>9>ź99>9>9>9><9¾ģ89>9>9<9>9>9>9>9>9>9>h9>9>9>9>9>¶6ź39>9>9>¾9>‹<9>9>aü’aū’aś’%aų’øų’ał’õA D0AOõ@Uķ@Xå@c«Ad3Ae Af Ag Aoų@s¾Auš@xč@(null)sys_copy can't send’NOŗNCOŃNŃNčNError: Division by 0 Illegal EM instruct'n Err in EM case instr Variable out of range Err in EM set instr Floating pt not impl. Heap overflow EM trap 0000000 octal ŚŚ/bin/getlf "Please insert /usr diskette in drive 0. Then hit RETURN." echo "/dev/ram is root device" >/etc/mtab /etc/mount /dev/fd0 /usr /usr/bin/date -q õ0:aĘ:vžõ`i7ņŪ‚›ł!õūÜ9pQ^ō ZV[eō† 41E D<1Qu|¦Ćfc$DD…S€@A.tHUk¤ń† ^ń%²U‡`D®-ȚƒVaD!”aŽŃ!…:^$bAs”8`oČøŽTU]Å Mf<aEõųcŽ˜äN½ Ą˜#€5u¤m€•/pęH. įƒeŗqfš±é&œtäGuŽ™ēžjņ`PœŽŃi'žG„%ZXPQ„Ną))XQj)¦ „gl‚en…‚§—:K „čfbąFf•$ę”h&ŗh ƒЧ™½ö¹ču *‡°Ćš!éd«g± ˆšiˆ'S/€tāŠhˆ€gl|&-¢}z«¢°¼ņ¹¦Gs¼lGģė.švKG|ģĘt¢c6«R¢(š³EbéĄ¢YfˆŖ‚‚–į'škv14ĘU8RüšŗjJ0§ $<®Ji<‚æ),²F0PŃDńEA@ŠĪ<ļ,ĆĖ$ćŒÅT<±DN„Ų3Ļ1ĄŠ13Q‘ĶL ½tĻ2ĄŌ QŃÕ`ūĢ5^;q„:‡õŲ^SqsĪ_LDFPqu 3ŒķÄB0ńÄK(}õ Yk-±ˆ6'ĘCmą:–u ‰†CČĶ>kšm³R”öLž™¼łR$aéI<×0n¹Øa‚ę]wžyčoH dgļ:xNnžAŠ3F敱“ƒĀ®nŃß47pĮ …Ė ‚Zļl£ĻĻō©OS4øŅ;küU|<ū܏§$S%rŖw"ą±?’‡Įyʇ|ōē~ ń‹qgķ#'Ó'zÕ§aH[Øї3µö·| ($‚ó§4%[7&‘}ä2mŀ 0*My°8tÕjóOtj8Ą5ˆ5Įz˜ü¢yĢgQ±Š'}én˜}Rø& e rk&Cšұ@–“v¹„ÄÕ~Ś{=@īT\¤9BØUz!¦õ“ŁC[±1vŽ“$PŲdnp?S8IŚ÷“+8 b³C0dē3°z†ń“§OĮc*47Š&čią‹Q6£8R„xKes6P0ŠD‡‹fó#ƒc‚`op†ow<”‰ %l·‹«¶wĢv P?ŚwKŚpõ‹±QLÅk981ž¢tČ38*՘m”cd’2³#Ž6I!€s “BŠ6aŲ„Uhš pµBbŠDŽES EEŠ-É(0ļh)@T;ÖrĄwpi±ĮV4f‰¦®4ł±@ņ?‘Ž ˆårKؤJ„(p|N•ÉxfŠ71ddųH0°k*óØa·x@84PL„sóˆf1‰ŹdFfvbU‰“Dq’Q4EvŠõ˜”EPPś†( ŻåĘՁ~q±Ó&…8‘e>ʆó³‘(Š‘“’³"’[H’d’MyS¤’,‰“Ī“7)$hK‹ĮRuK•w–”e”d—ųȒN–…‡”rY Ą|Š’_u—€&“4Y™v©“•É“1ą“Tiį7~UY\wˆ•oB„Mč•V’bÉ~,i–hł‘¦Ä–ĒqnXŒ™’n–—.y—} œ“©“ĆYŽ( ”˜V”ņx”†©”‹łœO)šRI•r•³„•«Ł•Ó–±I–ł©$˜*ÉtÉhÄÓ2+¦”ÄÕŲ©c§dŅʒp0_Š|“>ŒQop`v—övq+¹‚zŖ×| 8?‚ä)ÓĆy8Mh[±õ?2w×sˆÉčÅń ŻCa§UÉR(°”Uˆi1÷×dĻg„QŸ÷ƒœųQ!E*(XŠ,I€t`€(ˆłh±čm¶’4_ą£@:¢ƒW1t~Nś±TósA‚TŠ`؟÷§ŪHsÅO&&.ĆMųt¦hŠOč”N=ƒ,ŹĀN.Õ(tpUYenZĶGOiŗ§| N:v§rp¢ĄĮQUP4Ø)jˆƒ]4'k”•Øiq>ÅYbA©„jŸ(j+r°©b@Uós‡ĮRĒYpōEĀ‘A$ƒ„ŖįAō0!uR«ĻEńQ«yt¼ULeJæQUsŠUĶØūY~*ą¦LõRVōųDN¹S*0ZÄØnŗż8¬Ye¬ü©†Vb#ś©$4‹kĀd£:oq37uSUÉŅ>0²  šŒ*Śī š*Æn°”t·šÆū*=qt¬¹łÆ“ų©iō©ÆĢS°ÉXÆ“äÆ «›IѰ Jˆ÷ć>ćóĶ6‹į¦KؚŒH²«»…(avƘJwū£÷z835£gPp)|S ‘±/ ³EĄ³>{’1{©lą|”bÆū> ˈœu?˜š“tąÆM›°ö9³˜k<Ą ”tfä”æÜ”LU?XK±Čø…f¶Žó°ņŖßÕ£ńT³nņUK‹³“_+·OŚŗq»=:·ś>4K±*[·Žå-yūHgF·_0gĄ<Š›Kø˜Ė?Ń!Y;UгRš6GC€H£RŠo•2,ؖxŁŲ»7ĄR«–gŠINŗAIŠ9C@Soѵ·ixĀėÄk¼ČXĮ»gŠ[¼Ep¼Sŗa€©šŸ p ­ÉTšYåz¶Ų¢X?¦•ŒośHņŁ1(@­ŹXbR;ü˜¬ÉĀJ›‘BęjĪŚ›SÄFÜmP9­p>L•ŸĖß¹Ę6¢£2SqTdn±Qi抹0»\Ų·U» ,šś)ĮõŸWŃ¢Č=4²ļ ±vK¹ūr=k›<Ėć{³v:čJ ó\[CÆ_sÅVÕx^¶Wg wš—\žź§…>¹:uó31Uąų|5Gy@_šĮ'’CzU+<[fŅ(TųĮZšqUń„Pą1t11;cV²Q:EŠ@,‘-pÆ $$É"ĪUДBs0óEƒ{øƒü[sĒ$$’7¹,4Éj2lE‘jĢÉŃ?¶¢z•Xyl%ŚĒZ‹¬Č00[Mؐ^±É„ĢŸóA‘Y|Éī©Éģ‹Pvqy¾q_K†dńFIĮYtGYœÅ-Ņ1‚|³D–µČ¢L[e±ĮU±Lżu KfŹLHĢvņsĒq±YMø©Žq™ńÓÖĶäČLW0Ţ̐āœ,yĶŹœĪĮ‡­Uœ%'‡o…XI€ą1§ōœj,Ōh…+nŃ&g€ͱ“ń1ĶCZģåŃ”ĢįœWšńH„䃏ĪHńÉ(‚XAĄŃ Ķ4rMjčm&’öµ÷tĪ_ō*ĄõZw0;oHńF„jѝAjŠlŅƒĶųQŖZ‹!Ŗ"gš1­z$ņlyĒĻQd4ˆ[A‡ÅĪ‹ÄU»–ÄӁ®üØQ—•šĮāׯu·qčBøõ pX_q͵’‹?¤]”ĒĶŹv±Į*ł|Į<̘GźkÆ“E(YL¦Är2R}ĎįK|17‹PĪ£Łuˆ…F ĢŁB>€J!S»¢)šĮ;_¶¾m“®ėJ7TĄToŌŖp¹‹µĶŪf†9«=«iŃĮ.–ŌŁ¼ E>~éń i“^x2ĪēW¬ep+īčéI½°_@ź·Qć+Eƒ^,Łh5'Žā«^į_¤’ Mz£ĢK^eŃA]°^ŖŁˆź»žF(šāģ ‰¾Wģ„Ü“ÕĪpd„>Ųģ9F¦ø^¦*Š§čŽ§kʦź?šĶöo‰d'@Ö’æśQ§­³—t@yXɵÉ2;Žuļ (³rÓÖBÜż̬1ł5CS4G“4ŅZ­.ÅEž÷SSóUćDušu5¶b£„(R9JYz@ėa “ō«N„UÉ1¢Žø”–Č)ĒĒ)”§|¢)`ˆÆaēd*Bmv$pd[npĄŸ|Շflj·Ä‰_€pPkņT("X}.XkŖ8ąU˜ż45/gÖż7±R…ÓIŹUšF*±4KgŚYƌ £›D£EŠ”ÕżĘ8*E°Õ‚Æž`õšKH.ÉĀņ`‡˜€Ņė‹ š‡å¹<pöżq6ĻCšō¼ļU* h³¦ ]°%2¦‹xŚ¢aņøX$’VI5«fř ųóP€<ę÷Ł7j“qb‚9h³Å.°@¤yĄĀ£B“ā-óHšLhjC°w=l õČxät<Skl œ€°*攼Xq$  ƒ"@攼 Ų…ĪsŖ„ V7XÉąøńzĻŹ ;Pą$сĮO œ€Ģ$Jvą Äoń ˜)åq‘”ō© š·hĄųüįś…  X.”q;N”ĀÉ\@ nHČ'D(ŲozBĻŔ6cšĆ”āLA%iTéūZh„x%n¦Ŗ8ŽłxgÕ ‡gĢģ9ø¦r5€f ą:ÆØać@†““‹įBVņ÷­eį1RÖ²ŪpF:có1• ļk±Æ“å=V„’š.®ņ[vA±Ā, ¤9“\'¢U†ć‡ƒ,%브–²ėĢ¢3•ˆĄŽ»zy ųžąs °v%”Ŗę Qs°%`ųCäå#~ŖNH ,в4ō@kqō½Šņ+t‰1”’Õ'ņŃl+"ĘąM£ˆēÉĀ›.ėQ2`²:“‚t¼Q%œ€¦B!٤”Có™I¼B>8‹Ņ(mĮ/JÕ"ŸWōŹ^Č (N<ßóū˜ŹŽ$d›DGnɝå%{d=Ŗ‘qa3Ś@#9“g—\’'ÉIn( ²˜ •üsXr½%IČYĀ$©ü—ksē=°[b'Ÿ|`šJ“· 74ńÕĘL£„ŌܕÅr¢f•²S‘V*&så&į¤Ķ˜“[1…ŃK ;e±L–>P_łHéSŽ'ĄŖ8žŅa†Ī Wq$¦, †³a‡‡™ņ`ŲØ(M?Ķk^°ÉŚęŠb¹b>»G£<™g؛·ņMĘÉ9ɗ eū¤xš“ČĻßYš\äs‹2f¹»Åp?eż(FĻķ9=žs»%`ĮŻ LŠ5?Ä$č¬(k€%IÅkeõ^ŲK{Ļ^Yi“Š –õ³/Cŗé<+Öö؝„R†ŠZø'„ź‚Ö“bŚ"„0šĀųģš8ź O“ŁŚX߬š ōcīLąč2č`γā‘bĪÄ×ÕóDĀ[©,9ĻüĄø°ēĪńX›Ņ)ŽČFrÆ'—ä‘Lp Nd)$Żćܜ_²IJ­É µ¶ƒå›Ń.Ķé8Ń(ŅŖ ŸSzŅ<žw?¶Ÿō“²źēĶ}™=#˜ ķž¤gŗĮį`9š‰¢K3‡XRü 5©čʰ¢ē§—qųä¹ųC}vŒŽæ9FSž%œœó‰¬QÅ©GÓ5œr42Ž+ŹiG§$ÅVµ4KŽŅ4ŗ<§#e ƒ4fŅCŖ:=ėܤR’‡jĻŚ@Ó%zÖŃ!FDŗÓ3`Š@ ^:ŃdQ³é¾Ó1ǀ޿„’@Iģ“ś}>ER¤ęń`A„(„Qé{ē0õ‘#Š=ŽčŃĆī#MΆDNUؾųń”×é49µ%ć2ŚG‹ 8-0lš”8iiMĄ’H²Nb*9wi¦l3~Ō=Ŗ%ĻčHż££ņ˜RÓdšė–©£D¤ĪÆŻeš éM-saĄÉS2ĄSß'3ż?aĄuæ6MUI5­yi ˜Ķ ĢųĆ;UpąƒA;'ķØ]Īx5įĪjkĀ5é4 Fśųö cŸ.Oš—e#ÉŲ¤*K •*0śŅ€ĀØ<ŒāŌÄ °P%ŚZ\(UĪ@šm_|[¹ üT'š‰*źvĀØu`£u "–ZšĀਲŅ*ī΁ y%T¢”d2.¬€¦ķŌØŠC )ˆ8(ä*ƒÜŖŖNP”­8b=‚Vcb!U=pV JŖćuĘ¢¬ŖGMÅcóY®ß±3pR¶:5q+µ¦f³É1³«*ånėA¹,€PU•¤8J̳zoI%~ō!ā“ ŅS¹²E Š;9čي\H™5"h:Bc_S{F9ˆ½%«}dśyķ†Į‚fÉ-7`×kmÆOŖÖ8«;`Kų¶R_“E”'i*SŖ|Œ=s8šÓ}ėŪy-`ņ¤žóĶX,x‘Žä“#ŽŲsJ¦Žō“~>V«):1äD)Vs*!»’£W){ķļ “ĶW!aŹ ec żCĀØžģ-ł}ƒ5Ź^Y8e+Q¼ä²+Ąr^K,ۈĀ €'ĄrrKQb'Ķ,šµœ^–Ķ–YjófēGN$oÚ+wų˜š,p˜‹(2)Ł/wæBŪb8=pó1¢Åne-R Z+”óc–1õ¬!‚˜“†öŗZŚ’ƒiæĄ@A uMMŪi?-r¢“¶·ø¹“‡ÖŚt’KĖhæ”A<©vŅrĖC[F­š(µS ø*ˆßP“ÖĖŚ3ąk°¶_`uŪ¶ĮTČ*':«³ļį!°÷r¬…ä¶ļÓ¦0¾œBT ßä*Bóu҉ń ķĀķI._§!(¶¼gUY{ĢuĶa'ŽG'kEŖÕķ„(€,vPa®Ä-NIu²WźĒĻ )¦Ä—V\€n-ŅHødņ½E¼4?"īs% &9\”‘8SI—‡ ĪŒĄyĘ|<8°^ĀW“õ`¤ĆSņūY¶Xņ h„Ź_“€ŠbńBՉ¹ŪųZjCį”åt ®\æ”s•.µ”¹o†Ģā„Bųt£ĆŹi9;€_‚Yō“1K.LųUµ,łyž“{+^Ź­4āĖā\'w»n"Ģ”rq’Ōݾ('ČC˜śä¾Oµøąb ¹\•ę)Ćø+gƒįmŌ6¢2Q™ĶPxNÖEO!¶čĶXŪBf#i ”Ä »yū8RŠx)¶ÄćVčc™p£dpÄ®B§€,WQ3LÅ x•³D܎W™ŒĀu;LĢ9ó{KLYm¾ŽĻ@BŒīå*ÕMĮxTŖš&“SĪų1ĘsÓĄ(w=“y[˜’¬¤&|œ~iCƲ‘ÅvM²Še•©“ ßĮŗž&‰¦EĄ<ˆ ņnKŖæü£Ų¬'Տ`|ʇ'·@ńCąÆŻĘtRV0’A2_ClX±D­½,‡óš†Ģž:TÖäÕ˜{ф?‚xRI\SĪp'‰ø m ōD×KŖąć nV„” MžJ]Ó%4e—‡^–„Ü)ųRSŖ Ü Ķē u"+ķ§eōŸΘÅBœUE@^/õpaU{=$y ‘m`Dr‘Näü˜A(/édd ‘b%¦–JR–-J ~‚ĄSéÕLe>, ’„Æ70vŠ4Ą‘iõc*•`ąB¬©Ćm±X²$ųŗ=Ū$¾Ć#暇öāHa­õuėŽÖŠ_1ÄPČŲkg%‰i©\²—ųįaģZYĢXdŸ',QĢ…Hń!ę˜"`7āj±ŠĶk+~Ą™8Ć] inɹLœęŹ‹PY))ńL…¤•rƒņbs%…ŸH)†3·ŽĄŅŒ‚ŠŒR‹ OQŖ›!24`·„Ę2ś,E‹ó‹æ‡ŅG`N¬&J€ …õ€X‡g=Ž5/xcaüPžA~”1ĪbQŠz€?v ¤¢"_d “²üh¾‘Uš‡BiR•ČÉ8ŪRćé1D(9öål,2hĄ!Ł}Zģ)'‰Ö*¤Łłį„FK²@Ļb3µönÆ'i}ਂƒ?ņ½؉d_ Żž9j˜ƒ)ŗ T$—e‘\ņĪŌ…+Ū°®ģ7_‘„’`é]¶€0–f(/}œ‡é?~yCÄL˜†ß2“ «}9\ „X)"®ć”³øƟɂXvFöWŒŁŌ1jøžG`½×ōxTžW§„Ćv€¢HSŠ*€QĶ2b‹+ę¬üø†Ź£QšCm p”£O[mx]sM-ŽÅbÖ[;ā<ų˜•ąĀ l!©ŃŻ N…ďĮa‚QšŖUH±q-e~üW[”FŖŹ@-ČĪz«gµJµŻŒ^ŒPŲóĒˆg\fb%1•ō¼Ö³……$¤Ś _Y‚ŗr$5w„—óš„„aAN@­CBPˆhAztšŅ1Æ×rD‹Ń,„D˜6Ū‘®h¹ātpę*“˜q z fĄ žšŃØŅ„PŠ b»”ؐ\sˆsA¼ŃņŚę鏧¢3gēņ©ža•łTė*a}† (Ņŗh’a ˜‰öŌƒŃ `ÄÕ;ĻŅØŲi8€²%7ų“žL{Ī_że+Ÿįź½@øsc¤N XgĮŻā*ž]”ĢlévÓÅ+‘ĻZ^Šm8r@"$¤¤ĮŽ~+ņ¬ŪiżśĀÖ<ƒa&š„`fˆŁCk(]ÆtĢ$ĀiĄ,šAHC0Øą¦‹D%,aŠ€Yą‚9ƒ1-šFg2Į; ˆx³1d‚1nŖĀ.Ą4š°‹Ü”Hši*SŽl!]“mø<&.ĀPˆhžż;Y€²ÕL{†®8 ±¦Ņˆ€£° ł< b!\'m­Ŗ}̶Ė#{$ØkphbÄr$óZŚŒ­ÅõĆ@Šr‡_oˆzmØ’.‰ÓVЧĄ3ęµxüz^“ksķb¤Y€‘Ēa+ėŠZ%"żŽ7$MH7¤/BŅPĄų)`^×_ ć8ęõ3ŒŲŁŗTĄ­Ą"¶—Ņ&#€v$€!N­ĶŠÕYĮd KŌĄŹkł.˚Cf•:­f¢įk>>ŃÅća‰Ų#ĪŽ%P\ķŃ6¦ė bŚļ“gūģh%Vʄ0’;ŁŖbü.fM~­ŹeXT€EĢYZbœ­„&Ą÷Ŗķ-ą‚#“į£B1”3;6ÄkŅf@>Īžʰ•Ū¦%0 'ųĀ1¶ØMH³—ŅRįŌWŽŽ2€ś¤€ĆŃe^Kmµ p‡&D$MäPkÅTB:(Ó2|4a¤HZ:Ūl€£*ĝ1 ”bTL “čWĪEg!-’ …yÜńOųK±Ēžé”“D ‘!t؋!OXC,‰gĢ /å2 “Aō0”y”°ÅóŠ’Ųŗ%¦"9³žéĀV~CaJ{:„;­Ä`HÅß¶ÕƆģœs’É#Ę/‘i»‰œ63ošĢę"OߝXp8Q*ˆ”˜¼ˆ^SIx÷ 3ŖQ1DOĒąOülĻ3ŠĄüŅĆøö»€ķ•x€ Ū[@l#Ÿ˜ż¦ĘĆÓ~Ć«ęĆ»‰•qŖCšūwć(Ņį>ąGtķ›fqP·E<”MŅĪ„‰jČjųdåi€j«óĘ>†„æ'CĀį•?( Ryžń'•˜ż»8Øw“ššĘ5ų@āO5„Ļo‰ RLE­XŸęHŒ/žQQ­­ųyĄ‹ĮW¦‰¤b Ū,`ŽÆšøŠĀ_ųŪ={†“mJ.<eWćiSr3ŹŁųÆćĮ{ą2īxxXmć·ŽQµļõ ¢Ͻ\ÜWsD4Įķw6”N‰wń]®ŽwĘē—£BŠ‹„ƶ2Ē#šh‹Ć«‰ŽŲ"x„„»W”Ü…Ć÷fNŁqøƒGd·Ä» Ū³œx= ėp8=ąņ€óN‘«ޫ>ą¤K‡3y…Ķ“ē$mHÄo‡Ļ¢ņń‚g87 Ś ”TüTbń•'Ö¼ł°źp³öÖąCÅ`žŽĮ7{Gļļżš’Äó}¦5ƒ~Ēü v่€Ÿ~žV y䕱ń-gó^~ąÓ/'č}ēūPzń×ŗŗ‹…Ų€½‹¼až7¾Rīy›Ąć Ū›$?^æł\mĮ³1īLį`E¶/łM~Ćzę>ó‡Hʃ÷핹o„ĮņZwłeOĮÖzęžAcށ”łīa˜'sA–“xČ/_„›ųҐóÄ0ńn©^oÖ ”žē÷, ĻłŻ1b¹«ó®[}°ū>4ٽµvļÕ¼$€Ŗ™Xt¢wž½ r@/s”æÕe!cŸ†dŅŗ+~DžĢ #į_|’įpöÅ (unsigned char) A_MINHDR) #define A_HASEXT(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 8)) #define A_HASLNS(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 16)) #define A_HASTOFF(X) ((X).a_hdrlen > (unsigned char) (A_MINHDR + 24)) #define A_TRELPOS(X) (A_DATAPOS(X) + (X).a_data) #define A_DRELPOS(X) (A_TRELPOS(X) + (X).a_trsize) #define A_SYMPOS(X) (A_TRELPOS(X) + (A_HASRELS(X) ? \ ((X).a_trsize + (X).a_drsize) : 0)) struct reloc { long r_vaddr; /* virtual address of reference */ unsigned short r_symndx; /* internal segnum or extern symbol num */ unsigned short r_type; /* relocation type */ }; /* r_tyep values: */ #define R_ABBS 0 #define R_RELLBYTE 2 #define R_PCRBYTE 3 #define R_RELWORD 4 #define R_PCRWORD 5 #define R_RELLONG 6 #define R_PCRLONG 7 #define R_REL3BYTE 8 #define R_KBRANCHE 9 /* r_symndx for internal segments */ #define S_ABS ((unsigned short)-1) #define S_TEXT ((unsigned short)-2) #define S_DATA ((unsigned short)-3) #define S_BSS ((unsigned short)-4) struct nlist { /* symbol table entry */ char n_name[8]; /* symbol name */ long n_value; /* value */ unsigned char n_sclass; /* storage class */ unsigned char n_numaux; /* number of auxiliary entries */ /* not used */ unsigned short n_type; /* language base and derived type */ /* not used */ }; /* low bits of storage class (section) */ #define N_SECT 07 /* section mask */ #define N_UNDF 00 /* undefined */ #define N_ABS 01 /* absolute */ #define N_TEXT 02 /* text */ #define N_DATA 03 /* data */ #define N_BSS 04 /* bss */ #define N_COMM 05 /* (common) */ /* high bits of storage class */ #define N_CLASS 0370 /* storage class mask */ #define C_NULL #define C_EXT 0020 /* external symbol */ #define C_STAT 0030 /* static */ /* there are many others, but they are not supported */ #define BUFSIZ 1024 #define NFILES 20 #define NULL 0 #define EOF (-1) #define CMASK 0377 #define READMODE 1 #define WRITEMODE 2 #define UNBUFF 4 #define _EOF 8 #define _ERR 16 #define IOMYBUF 32 #define PERPRINTF 64 #define STRINGS 128 #ifndef FILE extern struct _io_buf { int _fd; int _count; int _flags; char *_buf; char *_ptr; } *_io_table[NFILES]; #endif /* FILE */ #define FILE struct _io_buf #define stdin (_io_table[0]) #define stdout (_io_table[1]) #define stderr (_io_table[2]) #define getchar() getc(stdin) #define putchar(c) putc(c,stdout) #define getc(f) fgetc(f) #define putc(c,f) fputc(c,f) #define feof(p) (((p)->_flags & _EOF) != 0) #define ferror(p) (((p)->_flags & _ERR) != 0) #define fileno(p) ((p)->_fd) #define rewind(f) fseek(f, 0L, 0) #define testflag(p,x) ((p)->_flags & (x)) /* If you want a stream to be flushed after each printf use: * * perprintf(stream); * * If you want to stop with this kind of buffering use: * * noperprintf(stream); */ #define noperprintf(p) ((p)->_flags &= ~PERPRINTF) #define perprintf(p) ((p)->_flags |= PERPRINTF) extern FILE *fopen(); extern FILE *freopen(); extern long ftell(); extern char *fgets(); extern char *gets(); #ifndef NDEBUG #define assert(xxx) {if(!(xxx)){fprintf(stderr, "False assertion at line %d in file \"%s\"\n", __LINE__, __FILE__); exit(1);}} #endif /* For fcntl(3) */ #define F_DUPFD 0 #define F_GETFD 1 /* reserved for future use */ #define F_SETFD 2 /* reserved for future use */ #define F_GETFL 3 /* reserved for future use */ #define F_SETFL 4 /* reserved for future use */ /* For open(2) */ #define O_RDONLY 0 #define O_WRONLY 1 #define O_RDWR 2 extern char _ctype_[]; #define _U 0001 #define _L 0002 #define _N 0004 #define _S 0010 #define _P 0020 #define _C 0040 #define _X 0100 #define isalpha(c) ((_ctype_+1)[c]&(_U|_L)) #define isupper(c) ((_ctype_+1)[c]&_U) #define islower(c) ((_ctype_+1)[c]&_L) #define isdigit(c) ((_ctype_+1)[c]&_N) #define isxdigit(c) ((_ctype_+1)[c]&(_N|_X)) #define isspace(c) ((_ctype_+1)[c]&_S) #define ispunct(c) ((_ctype_+1)[c]&_P) #define isalnum(c) ((_ctype_+1)[c]&(_U|_L|_N)) #define isprint(c) ((_ctype_+1)[c]&(_P|_U|_L|_N)) #define iscntrl(c) ((_ctype_+1)[c]&_C) #define isascii(c) ((unsigned)(c)<=0177) #define toupper(c) ((c) - 'a' + 'A') #define tolower(c) ((c) - 'A' + 'a') #define OK 0 #define ERROR 1 #define EPERM 1 #define ENOENT 2 #define ESRCH 3 #define EINTR 4 #define EIO 5 #define ENXIO 6 #define E2BIG 7 #define ENOEXEC 8 #define EBADF 9 #define ECHILD 10 #define EAGAIN 11 #define ENOMEM 12 #define EACCES 13 #define EFAULT 14 #define ENOTBLK 15 #define EBUSY 16 #define EEXIST 17 #define EXDEV 18 #define ENODEV 19 #define ENOTDIR 20 #define EISDIR 21 #define EINVAL 22 #define ENFILE 23 #define EMFILE 24 #define ENOTTY 25 #define ETXTBSY 26 #define EFBIG 27 #define ENOSPC 28 #define ESPIPE 29 #define EROFS 30 #define EMLINK 31 #define EPIPE 32 #define EDOM 33 #define ERANGE 34 #define E_LOCKED 101 #define E_BAD_CALL 102 #define E_LONG_STRING 103 /* Error codes. They are negative since a few system calls, such as READ, can * either return a positive number indicating success, or an error code. */ #define NERROR 34 #define OK 0 #define ERROR -1 #define EPERM -1 #define ENOENT -2 #define ESRCH -3 #define EINTR -4 #define EIO -5 #define ENXIO -6 #define E2BIG -7 #define ENOEXEC -8 #define EBADF -9 #define ECHILD -10 #define EAGAIN -11 #define ENOMEM -12 #define EACCES -13 #define EFAULT -14 #define ENOTBLK -15 #define EBUSY -16 #define EEXIST -17 #define EXDEV -18 #define ENODEV -19 #define ENOTDIR -20 #define EISDIR -21 #define EINVAL -22 #define ENFILE -23 #define EMFILE -24 #define ENOTTY -25 #define ETXTBSY -26 #define EFBIG -27 #define ENOSPC -28 #define ESPIPE -29 #define EROFS -30 #define EMLINK -31 #define EPIPE -32 #define EDOM -33 #define ERANGE -34 #define E_LOCKED -101 #define E_BAD_CALL -102 #define E_LONG_STRING -103 #define EOF -104 /* End Of File - used by drivers */ /* The following error codes are generated by the kernel itself. */ #define E_BAD_DEST -1 /* destination address illegal */ #define E_BAD_SRC -2 /* source address illegal */ #define E_TRY_AGAIN -3 /* can't send-- tables full */ #define E_OVERRUN -4 /* interrupt for task that is not waiting */ #define E_BAD_BUF -5 /* message buf outside caller's addr space */ #define E_TASK -6 /* can't send to task */ #define E_NO_MESSAGE -7 /* RECEIVE failed: no message present */ #define E_NO_PERM -8 /* ordinary users can't send to tasks */ #define E_BAD_FCN -9 /* only valid fcns are SEND, RECEIVE, BOTH */ #define E_BAD_ADDR -10 /* bad address given to utility routine */ #define E_BAD_PROC -11 /* bad proc number given to utility */ struct group { char *gr_name; char *gr_passwd; int gr_gid; }; #include #include #include #include extern message M; #define MM 0 #define FS 1 extern int callm1(), callm3(), callx(), len(); extern int errno; extern int begsig(); /* interrupts all vector here */ struct passwd { char *pw_name; char *pw_passwd; int pw_uid; int pw_gid; char *pw_gecos; char *pw_dir; char *pw_shell; }; /* * Definitions etc. for regexp(3) routines. * * Caveat: this is V8 regexp(3) [actually, a reimplementation thereof], * not the System V one. */ #define void int #define CHARBITS 0377 #define strchr index #define NSUBEXP 10 typedef struct regexp { char *startp[NSUBEXP]; char *endp[NSUBEXP]; char regstart; /* Internal use only. */ char reganch; /* Internal use only. */ char *regmust; /* Internal use only. */ int regmlen; /* Internal use only. */ char program[1]; /* Unwarranted chumminess with compiler. */ } regexp; extern regexp *regcomp(); extern int regexec(); extern void regsub(); extern void regerror(); /* _JBLEN should be 3 for IBM PC, 13 for ATARI. */ #define _JBLEN 3 typedef int jmp_buf[_JBLEN]; /****************************************************************************/ /* */ /* (c) Copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands */ /* */ /* This product is part of the Amoeba distributed operating system. */ /* */ /* Permission to use, sell, duplicate or disclose this software must be */ /* obtained in writing. Requests for such permissions may be sent to */ /* */ /* */ /* Dr. Andrew S. Tanenbaum */ /* Dept. of Mathematics and Computer Science */ /* Vrije Universiteit */ /* Postbus 7161 */ /* 1007 MC Amsterdam */ /* The Netherlands */ /* */ /****************************************************************************/ /* ** If the host operating system for amoeba transactions is not amoeba ** then several things may need to be done to make the amoeba code ** compatible. These are provided in host_os.h. */ #include "host_os.h" #define PORTSIZE 6 #define OOBSIZE 20 #define HEADERSIZE 32 #define PRIVSIZE 10 #define CAPSIZE 16 #define FAIL ((unshort) -1) #define NOTFOUND ((unshort) -2) #define BADADDRESS ((unshort) -3) #define ABORTED ((unshort) -4) #define TRYAGAIN ((unshort) -5) #define sizeoftable(t) (sizeof(t) / sizeof((t)[0])) #define NILPORT ((port *) 0) #define NILBUF ((bufptr) 0) #define _FP(p) ((struct _fakeport *) (p)) #ifndef lint #define PortCmp(p, q) (_FP(p)->_p1==_FP(q)->_p1 && _FP(p)->_p2==_FP(q)->_p2) #define NullPort(p) (_FP(p)->_p1==0L && _FP(p)->_p2==0) #else #define PortCmp(p, q) ((p)->_portbytes[0] == (q)->_portbytes[0]) #define NullPort(p) ((p)->_portbytes[0] == 0) #endif typedef char *bufptr; #ifndef MAX_BLOCK_NR typedef unsigned short unshort; #endif typedef char *event_t; typedef struct { char _portbytes[PORTSIZE]; } port; struct _fakeport { long _p1; short _p2; }; typedef struct { /* private part of capability */ char prv_object[3]; char prv_rights; port prv_random; } private; typedef struct { port cap_port; private cap_priv; } capability; typedef struct { port h_port; port h_signature; private h_priv; unshort h_command; long h_offset; unshort h_size; unshort h_extra; } header; #define h_status h_command /* alias: reply status */ /* ** Some function declarations that people tend to forget ** because they are lazy. */ extern unshort trans(), getreq(), putrep(), timeout(); #define NSIG 16 /* number of signals used */ #define SIGHUP 1 /* hangup */ #define SIGINT 2 /* interrupt (DEL) */ #define SIGQUIT 3 /* quit (ASCII FS) */ #define SIGILL 4 /* illegal instruction (not reset when caught)*/ #define SIGTRAP 5 /* trace trap (not reset when caught) */ #define SIGIOT 6 /* IOT instruction */ #define SIGEMT 7 /* EMT instruction */ #define SIGFPE 8 /* floating point exception */ #define SIGKILL 9 /* kill (cannot be caught or ignored) */ #define SIGBUS 10 /* bus error */ #define SIGSEGV 11 /* segmentation violation */ #define SIGSYS 12 /* bad argument to system call */ #define SIGPIPE 13 /* write on a pipe with no one to read it */ #define SIGALRM 14 /* alarm clock */ #define SIGTERM 15 /* software termination signal from kill */ #define STACK_FAULT 16 /* used by kernel to signal stack fault */ #define NR_SIGS NSIG int (*signal())(); #define SIG_DFL (int (*)())0 #define SIG_IGN (int (*)())1 /* limits.h */ #define CHAR_BIT 8 /* number of bits in char */ #define WORD_BIT 16 /* number of bits in int */ #define CHAR_MAX 127 /* max value of char */ #define CHAR_MIN -128 /* min value of char */ #define SCHAR_MAX 127 /* max value of signed char */ #define SCHAR_MIN -128 /* min value of signed char */ #define UCHAR_MAX 255 /* max value of unsigned char */ #define SHRT_MAX 32767 /* max value of short */ #define SHRT_MIN -32768 /* min value of short */ #define USHRT_MAX 65535 /* max value of unsigned short */ #define INT_MAX 32767 /* max value of int */ #define INT_MIN -32768 /* min value of int */ #define UINT_MAX 65535 /* max value of unsigned int */ #define LONG_MAX 2147483647 /* max value of long */ #define LONG_MIN -2147483648 /* min value of long */ #define ULONG_MAX 4294967295 /* max value of unsigned long */ #define NAME_MAX 14 /* characters in a file name */ #define PATH_MAX 127 /* number chars in path name */ /* SHOULD BE >= 255 */ #define FCHR_MAX 67108864 /* max file size */ #define LINK_MAX 127 /* max links to a file */ #define LOCK_MAX 0 /* max number of file locks */ /* SHOULD BE >= 32 */ #define OPEN_MAX 20 /* max number open files */ #define SYS_OPEN 64 /* max open files per system */ #define STD_BLK 1024 /* bytes per block */ #define PIPE_MAX 7168 /* max size of write to pipe */ #define PIPE_BUF PIPE_MAX /* size of atomic write to pipe */ #define PID_MAX 30000 /* max process id */ #define PROC_MAX 16 /* max number of processes */ #define CHILD_MAX (PROC_MAX-1) /* number of process children */ #define NGROUPS_MAX 0 /* no multiple group ids */ #define UID_MAX 255 /* max user or group id */ /* SHOULD BE >= 32000 */ #define ARG_MAX 2048 /* execve() arg & environ space */ /* SHOULD BE >= 4096 */ #define CLK_TCK 60 /* clock ticks per second */ #define MAX_CHAR 256 /* characters for terminal i/p */ #define PASS_MAX 8 /* max number chars in password */ #define SYS_NMLN 9 /* length of uname() strings */ /* including '\0' */ char *memcpy(); char *memccpy(); char *memchr(); char *memset(); int memcmp(); /* string.h (a.k.a. strings.h) */ int strlen(); int strcmp(), strncmp(); int strspn(), strcspn(); char *strcpy(), *strncpy(); char *strcat(), *strncat(); char *index(), *rindex(); char *strchr(), *strrchr(); char *strpbrk(); char *strtok(); char *strstr(); #define ARMAG 0177545 struct ar_hdr { char ar_name[14]; long ar_date; char ar_uid; char ar_gid; int ar_mode; long ar_size; }; /* For access(2) */ #define R_OK 4 #define W_OK 2 #define X_OK 1 #define F_OK 0 /* For lockf() */ #define F_ULOCK 0 #define F_LOCK 1 #define F_TLOCK 2 #define F_TEST 3 /* For lseek(2) */ #define SEEK_SET 0 #define SEEK_CUR 1 #define SEEK_END 2 #define IN_PATH "/etc/include" struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; /* For utime(2) */ struct utimbuf { time_t actime; time_t modtime; }; /* utmp.h - Used by login(1), init, and who(1) */ #define WTMP "/usr/adm/wtmp" struct utmp { char ut_line[8]; /* terminal name */ char ut_name[8]; /* user name */ long ut_time; /* login/out time */ }; 2...3buf.h4const.h5super.h6type.h/* Buffer (block) cache. To acquire a block, a routine calls get_block(), * telling which block it wants. The block is then regarded as "in use" * and has its 'b_count' field incremented. All the blocks, whether in use * or not, are chained together in an LRU list, with 'front' pointing * to the least recently used block, and 'rear' to the most recently used * block. A reverse chain, using the field b_prev is also maintained. * Usage for LRU is measured by the time the put_block() is done. The second * parameter to put_block() can violate the LRU order and put a block on the * front of the list, if it will probably not be needed soon. If a block * is modified, the modifying routine must set b_dirt to DIRTY, so the block * will eventually be rewritten to the disk. */ EXTERN struct buf { /* Data portion of the buffer. */ union { char b__data[BLOCK_SIZE]; /* ordinary user data */ dir_struct b__dir[NR_DIR_ENTRIES]; /* directory block */ zone_nr b__ind[NR_INDIRECTS]; /* indirect block */ d_inode b__inode[INODES_PER_BLOCK]; /* inode block */ int b__int[INTS_PER_BLOCK]; /* block full of integers */ } b; /* Header portion of the buffer. */ struct buf *b_next; /* used to link bufs in a chain */ struct buf *b_prev; /* used to link bufs the other way */ struct buf *b_hash; /* used to link bufs on hash chains */ block_nr b_blocknr; /* block number of its (minor) device */ dev_nr b_dev; /* major | minor device where block resides */ char b_dirt; /* CLEAN or DIRTY */ char b_count; /* number of users of this buffer */ } buf[NR_BUFS]; /* A block is free if b_dev == NO_DEV. */ #define NIL_BUF (struct buf *) 0 /* indicates absence of a buffer */ /* These defs make it possible to use to bp->b_data instead of bp->b.b__data */ #define b_data b.b__data #define b_dir b.b__dir #define b_ind b.b__ind #define b_inode b.b__inode #define b_int b.b__int EXTERN struct buf *buf_hash[NR_BUF_HASH]; /* the buffer hash table */ EXTERN struct buf *front; /* points to least recently used free block */ EXTERN struct buf *rear; /* points to most recently used free block */ EXTERN int bufs_in_use; /* # bufs currently in use (not on free list) */ /* When a block is released, the type of usage is passed to put_block(). */ #define WRITE_IMMED 0100 /* block should be written to disk now */ #define ONE_SHOT 0200 /* set if block not likely to be needed soon */ #define INODE_BLOCK 0 + WRITE_IMMED /* inode block */ #define DIRECTORY_BLOCK 1 + WRITE_IMMED /* directory block */ #define INDIRECT_BLOCK 2 + WRITE_IMMED /* pointer block */ #define I_MAP_BLOCK 3 + WRITE_IMMED + ONE_SHOT /* inode bit map */ #define ZMAP_BLOCK 4 + WRITE_IMMED + ONE_SHOT /* free zone map */ #define ZUPER_BLOCK 5 + WRITE_IMMED + ONE_SHOT /* super block */ #define FULL_DATA_BLOCK 6 /* data, fully used */ #define PARTIAL_DATA_BLOCK 7 /* data, partly used */ /* Tables sizes */ #define NR_ZONE_NUMS 9 /* # zone numbers in an inode */ #define NR_BUFS 30 /* # blocks in the buffer cache */ #define NR_BUF_HASH 32 /* size of buf hash table; MUST BE POWER OF 2*/ #define NR_FDS 20 /* max file descriptors per process */ #define NR_FILPS 64 /* # slots in filp table */ #define I_MAP_SLOTS 4 /* max # of blocks in the inode bit map */ #define ZMAP_SLOTS 6 /* max # of blocks in the zone bit map */ #define NR_INODES 32 /* # slots in "in core" inode table */ #define NR_SUPERS 5 /* # slots in super block table */ #define NAME_SIZE 14 /* # bytes in a directory component */ #ifdef i8088 #define FS_STACK_BYTES 512 /* size of file system stack */ #endif #ifdef ATARI_ST #define FS_STACK_BYTES 2048 /* size of file system stack */ #endif /* Miscellaneous constants */ #define SUPER_MAGIC 0x137F /* magic number contained in super-block */ #define SU_UID (uid) 0 /* super_user's uid */ #define SYS_UID (uid) 0 /* uid for processes MM and INIT */ #define SYS_GID (gid) 0 /* gid for processes MM and INIT */ #define NORMAL 0 /* forces get_block to do disk read */ #define NO_READ 1 /* prevents get_block from doing disk read */ #define XPIPE 0 /* used in fp_task when suspended on pipe */ #define NO_BIT (bit_nr) 0 /* returned by alloc_bit() to signal failure */ #define DUP_MASK 0100 /* mask to distinguish dup2 from dup */ #define LOOK_UP 0 /* tells search_dir to lookup string */ #define ENTER 1 /* tells search_dir to make dir entry */ #define DELETE 2 /* tells search_dir to delete entry */ #define CLEAN 0 /* disk and memory copies identical */ #define DIRTY 1 /* disk and memory copies differ */ #define BOOT_BLOCK (block_nr) 0 /* block number of boot block */ #define SUPER_BLOCK (block_nr)1 /* block number of super block */ #define ROOT_INODE (inode_nr) 1 /* inode number for root directory */ /* Derived sizes */ #define ZONE_NUM_SIZE sizeof(zone_nr) /* # bytes in zone nr*/ #define NR_DZONE_NUM (NR_ZONE_NUMS-2) /* # zones in inode */ #define DIR_ENTRY_SIZE sizeof(dir_struct) /* # bytes/dir entry */ #define INODES_PER_BLOCK (BLOCK_SIZE/INODE_SIZE) /* # inodes/disk blk */ #define INODE_SIZE (sizeof (d_inode)) /* bytes in disk inode*/ #define NR_DIR_ENTRIES (BLOCK_SIZE/DIR_ENTRY_SIZE) /* # dir entries/blk*/ #define NR_INDIRECTS (BLOCK_SIZE/ZONE_NUM_SIZE) /* # zones/indir blk */ #define INTS_PER_BLOCK (BLOCK_SIZE/sizeof(int)) /* # integers/blk */ #define SUPER_SIZE sizeof(struct super_block) /* super_block size */ #define PIPE_SIZE (NR_DZONE_NUM*BLOCK_SIZE) /* pipe size in bytes*/ #define MAX_ZONES (NR_DZONE_NUM+NR_INDIRECTS+(long)NR_INDIRECTS*NR_INDIRECTS) /* max # of zones in a file */ #define printf printk /* Super block table. The root file system and every mounted file system * has an entry here. The entry holds information about the sizes of the bit * maps and inodes. The s_ninodes field gives the number of inodes available * for files and directories, including the root directory. Inode 0 is * on the disk, but not used. Thus s_ninodes = 4 means that 5 bits will be * used in the bit map, bit 0, which is always 1 and not used, and bits 1-4 * for files and directories. The disk layout is: * * Item # blocks * boot block 1 * super block 1 * inode map s_imap_blocks * zone map s_zmap_blocks * inodes (s_ninodes + 1 + INODES_PER_BLOCK - 1)/INODES_PER_BLOCK * unused whatever is needed to fill out the current zone * data zones (s_nzones - s_firstdatazone) << s_log_zone_size * * A super_block slot is free if s_dev == NO_DEV. */ EXTERN struct super_block { inode_nr s_ninodes; /* # usable inodes on the minor device */ zone_nr s_nzones; /* total device size, including bit maps etc */ unshort s_imap_blocks; /* # of blocks used by inode bit map */ unshort s_zmap_blocks; /* # of blocks used by zone bit map */ zone_nr s_firstdatazone; /* number of first data zone */ short int s_log_zone_size; /* log2 of blocks/zone */ file_pos s_max_size; /* maximum file size on this device */ short s_magic; /* magic number to recognize super-blocks */ /* The following items are only used when the super_block is in memory. */ struct buf *s_imap[I_MAP_SLOTS]; /* pointers to the in-core inode bit map */ struct buf *s_zmap[ZMAP_SLOTS]; /* pointers to the in-core zone bit map */ dev_nr s_dev; /* whose super block is this? */ struct inode *s_isup; /* inode for root dir of mounted file sys */ struct inode *s_imount; /* inode mounted on */ real_time s_time; /* time of last update */ char s_rd_only; /* set to 1 iff file sys mounted read only */ char s_dirt; /* CLEAN or DIRTY */ } super_block[NR_SUPERS]; #define NIL_SUPER (struct super_block *) 0 /* Type definitions local to the File System. */ typedef struct { /* directory entry */ inode_nr d_inum; /* inode number */ char d_name[NAME_SIZE]; /* character string */ } dir_struct; /* Declaration of the disk inode used in rw_inode(). */ typedef struct { /* disk inode. Memory inode is in "inode.h" */ mask_bits i_mode; /* file type, protection, etc. */ uid i_uid; /* user id of the file's owner */ file_pos i_size; /* current file size in bytes */ real_time i_modtime; /* when was file data last changed */ gid i_gid; /* group number */ links i_nlinks; /* how many links to this file */ zone_nr i_zone[NR_ZONE_NUMS]; /* block nums for direct, ind, and dbl ind */ } d_inode; 7...8blocksize.h9callnr.h:com.h;const.h<type.h#define BLOCK_SIZE 1024 /* file system data block size */ #define NCALLS 70 /* number of system calls allowed */ #define EXIT 1 #define FORK 2 #define READ 3 #define WRITE 4 #define OPEN 5 #define CLOSE 6 #define WAIT 7 #define CREAT 8 #define LINK 9 #define UNLINK 10 #define CHDIR 12 #define TIME 13 #define MKNOD 14 #define CHMOD 15 #define CHOWN 16 #define BRK 17 #define STAT 18 #define LSEEK 19 #define GETPID 20 #define MOUNT 21 #define UMOUNT 22 #define SETUID 23 #define GETUID 24 #define STIME 25 #define ALARM 27 #define FSTAT 28 #define PAUSE 29 #define UTIME 30 #define ACCESS 33 #define SYNC 36 #define KILL 37 #define DUP 41 #define PIPE 42 #define TIMES 43 #define SETGID 46 #define GETGID 47 #define SIGNAL 48 #define IOCTL 54 #define EXEC 59 #define UMASK 60 #define CHROOT 61 /* The following are not system calls, but are processed like them. */ #define KSIG 64 /* kernel detected a signal */ #define UNPAUSE 65 /* to MM or FS: check for EINTR */ #define BRK2 66 /* to MM: used to say how big FS & INIT are */ #define REVIVE 67 /* to FS: revive a sleeping process */ #define TASK_REPLY 68 /* to FS: reply code from tty task */ /* The following IS a system call for amoeba transactions */ #define AM_SYSCALL 69 /* System calls. */ #define SEND 1 /* function code for sending messages */ #define RECEIVE 2 /* function code for receiving messages */ #define BOTH 3 /* function code for SEND + RECEIVE */ #define ANY (NR_PROCS+100) /* receive(ANY, buf) accepts from any source */ /* Task numbers, function codes and reply codes. */ #define TTY -NR_TASKS /* terminal I/O class */ # define TTY_CHAR_INT 1 /* fcn code for tty input interrupt */ # define TTY_O_DONE 2 /* fcn code for tty output done */ # define TTY_READ 3 /* fcn code for reading from tty */ # define TTY_WRITE 4 /* fcn code for writing to tty */ # define TTY_IOCTL 5 /* fcn code for ioctl */ # define TTY_SETPGRP 6 /* fcn code for setpgrp */ # define SUSPEND -998 /* used in interrupts when tty has no data */ #ifdef AM_KERNEL #define AMOEBA #endif #ifdef AMOEBA /* there are AM_NTASK copies of the amoeba kernel task. ** If you change AM_NTASKS be sure to adjust kernel/table.c and fs/table.c */ #define AM_NTASKS 4 /* number of kernel tasks of this class */ #define AMINT_CLASS (TTY+1) /* Amoeba event handler */ #define AMOEBA_CLASS (AMINT_CLASS+AM_NTASKS) /* transaction handlers */ # define ETHER_ARRIV 1 /* fcn code for packet arrival */ # define AM_TRANS 2 /* amoeba transaction */ # define AM_GETREQ 3 /* amoeba getrequest */ # define AM_PUTREP 4 /* amoeba putrep */ # define AM_REVIVE 6 /* used by kernel task to revive luser task */ # define AM_TIMEOUT 8 /* used to talk to clock task */ # define AM_PUTSIG 9 /* when the luser hits the DEL ! */ # define AM_TASK_DIED 10 /* sent if task died during a transaction */ #else #define AMOEBA_CLASS TTY #endif AMOEBA /* ** New class definitions should go here and should be defined relative ** to AMOEBA_CLASS (ie. as AMOEBA_CLASS+n, for the nth task added). */ #define PRINTER -7 /* printer I/O class */ /* the printer uses the same commands as TTY */ #define WINCHESTER -6 /* winchester (hard) disk class */ #define FLOPPY -5 /* floppy disk class */ # define DISKINT 1 /* fcn code for disk interrupt */ # define DISK_READ 3 /* fcn code to DISK (must equal TTY_READ) */ # define DISK_WRITE 4 /* fcn code to DISK (must equal TTY_WRITE) */ # define DISK_IOCTL 5 /* fcn code for setting up RAM disk */ #define MEM -4 /* /dev/ram, /dev/(k)mem and /dev/null class */ # define RAM_DEV 0 /* minor device for /dev/ram */ # define MEM_DEV 1 /* minor device for /dev/mem */ # define KMEM_DEV 2 /* minor device for /dev/kmem */ # define NULL_DEV 3 /* minor device for /dev/null */ #define CLOCK -3 /* clock class */ # define SET_ALARM 1 /* fcn code to CLOCK, set up alarm */ # define CLOCK_TICK 2 /* fcn code for clock tick */ # define GET_TIME 3 /* fcn code to CLOCK, get real time */ # define SET_TIME 4 /* fcn code to CLOCK, set real time */ # define REAL_TIME 1 /* reply from CLOCK: here is real time */ #define SYSTASK -2 /* internal functions */ # define SYS_XIT 1 /* fcn code for sys_xit(parent, proc) */ # define SYS_GETSP 2 /* fcn code for sys_sp(proc, &new_sp) */ # define SYS_SIG 3 /* fcn code for sys_sig(proc, sig) */ # define SYS_FORK 4 /* fcn code for sys_fork(parent, child) */ # define SYS_NEWMAP 5 /* fcn code for sys_newmap(procno, map_ptr) */ # define SYS_COPY 6 /* fcn code for sys_copy(ptr) */ # define SYS_EXEC 7 /* fcn code for sys_exec(procno, new_sp) */ # define SYS_TIMES 8 /* fcn code for sys_times(procno, bufptr) */ # define SYS_ABORT 9 /* fcn code for sys_abort() */ # define SYS_FRESH 10 /* fcn code for sys_fresh() (Atari only) */ # define SYS_KILL 11 /* fcn code for sys_kill(proc, sig) */ #define HARDWARE -1 /* used as source on interrupt generated msgs */ /* Names of message fields for messages to CLOCK task. */ #define DELTA_TICKS m6_l1 /* alarm interval in clock ticks */ #define FUNC_TO_CALL m6_f1 /* pointer to function to call */ #define NEW_TIME m6_l1 /* value to set clock to (SET_TIME) */ #define CLOCK_PROC_NR m6_i1 /* which proc (or task) wants the alarm? */ #define SECONDS_LEFT m6_l1 /* how many seconds were remaining */ /* Names of message fields used for messages to block and character tasks. */ #define DEVICE m2_i1 /* major-minor device */ #define PROC_NR m2_i2 /* which (proc) wants I/O? */ #define COUNT m2_i3 /* how many bytes to transfer */ #define POSITION m2_l1 /* file offset */ #define ADDRESS m2_p1 /* core buffer address */ /* Names of message fields for messages to TTY task. */ #define TTY_LINE m2_i1 /* message parameter: terminal line */ #define TTY_SPEED m2_i2 /* low byte = input speed, next byte = output*/ #define TTY_REQUEST m2_i3 /* message parameter: ioctl request code */ #define TTY_SPEK m2_l1 /* message parameter: ioctl speed, erasing */ #define TTY_FLAGS m2_l2 /* message parameter: ioctl tty mode */ #define TTY_PGRP m2_i3 /* message parameter: process group */ /* Names of messages fields used in reply messages from tasks. */ #define REP_PROC_NR m2_i1 /* # of proc on whose behalf I/O was done */ #define REP_STATUS m2_i2 /* bytes transferred or error number */ /* Names of fields for copy message to SYSTASK. */ #define SRC_SPACE m5_c1 /* T or D space (stack is also D) */ #define SRC_PROC_NR m5_i1 /* process to copy from */ #define SRC_BUFFER m5_l1 /* virtual address where data come from */ #define DST_SPACE m5_c2 /* T or D space (stack is also D) */ #define DST_PROC_NR m5_i2 /* process to copy to */ #define DST_BUFFER m5_l2 /* virtual address where data go to */ #define COPY_BYTES m5_l3 /* number of bytes to copy */ /* Field names for accounting, SYSTASK and miscellaneous. */ #define USER_TIME m4_l1 /* user time consumed by process */ #define SYSTEM_TIME m4_l2 /* system time consumed by process */ #define CHILD_UTIME m4_l3 /* user time consumed by process' children */ #define CHILD_STIME m4_l4 /* sys time consumed by process' children */ #define PROC1 m1_i1 /* indicates a process */ #define PROC2 m1_i2 /* indicates a process */ #define PID m1_i3 /* process id passed from MM to kernel */ #define STACK_PTR m1_p1 /* used for stack ptr in sys_exec, sys_getsp */ #define PR m6_i1 /* process number for sys_sig */ #define SIGNUM m6_i2 /* signal number for sys_sig */ #define FUNC m6_f1 /* function pointer for sys_sig */ #define MEM_PTR m1_p1 /* tells where memory map is for sys_newmap */ #define CANCEL 0 /* general request to force a task to cancel */ #define SIG_MAP m1_i2 /* used by kernel for passing signal bit map */ #ifdef AMOEBA /* names of message fields for amoeba tasks */ #define AM_OP m2_i1 /* one of the above operators */ #define AM_PROC_NR m2_i2 /* process # of proc doing operation */ #define AM_COUNT m2_i3 /* size of buffer for operation */ #define AM_ADDRESS m2_p1 /* address of buffer for operation */ /* for communication between MM and AMOEBA_CLASS kernel tasks */ #define AM_STATUS m2_i3 /* same use as REP_STATUS but for amoeba */ #define AM_FREE_IT m2_l1 /* 1=not a getreq, 0=is a getreq */ /* and a special for passing a physical address from the ethernet driver */ #define AM_PADDR m2_l1 /* to the transaction layer */ #endif AMOEBA ō/* Copyright (C) 1987 by Prentice-Hall, Inc. Permission is hereby granted to * private individuals and educational institutions to modify and * redistribute the binary and source programs of this system to other * private individuals and educational institutions for educational and * research purposes. For corporate or commercial use, permission from * Prentice-Hall is required. In general, such permission will be granted, * subject to a few conditions. */ #ifndef i8088 #ifndef ATARI_ST #error Either i8088 or ATARI ST must be defined #endif #endif #define EXTERN extern /* used in *.h files */ #define PRIVATE static /* PRIVATE x limits the scope of x */ #define PUBLIC /* PUBLIC is the opposite of PRIVATE */ #define FORWARD /* some compilers require this to be 'static' */ #define TRUE 1 /* used for turning integers into Booleans */ #define FALSE 0 /* used for turning integers into Booleans */ #define HZ 60 /* clock freq (software settable on IBM-PC) */ #define BLOCK_SIZE 1024 /* # bytes in a disk block */ #define SUPER_USER (uid) 0 /* uid of superuser */ #define MAJOR 8 /* major device = (dev>>MAJOR) & 0377 */ #define MINOR 0 /* minor device = (dev>>MINOR) & 0377 */ #ifdef AM_KERNEL #define NR_TASKS 13 /* must be 5 more than without amoeba */ #else #define NR_TASKS 8 /* number of tasks in the transfer vector */ #endif #define NR_PROCS 16 /* number of slots in proc table */ #define NR_SEGS 3 /* # segments per process */ #define T 0 /* proc[i].mem_map[T] is for text */ #define D 1 /* proc[i].mem_map[D] is for data */ #define S 2 /* proc[i].mem_map[S] is for stack */ #define MAX_P_LONG 2147483647 /* maximum positive long, i.e. 2**31 - 1 */ /* Memory is allocated in clicks. */ #ifdef i8088 #define CLICK_SIZE 0020 /* unit in which memory is allocated */ #define CLICK_SHIFT 4 /* log2 of CLICK_SIZE */ #endif #ifdef ATARI_ST #define CLICK_SIZE 256 /* unit in which memory is allocated */ #define CLICK_SHIFT 8 /* log2 of CLICK_SIZE */ #endif /* Process numbers of some important processes */ #define MM_PROC_NR 0 /* process number of memory manager */ #define FS_PROC_NR 1 /* process number of file system */ #define INIT_PROC_NR 2 /* init -- the process that goes multiuser */ #define LOW_USER 2 /* first user not part of operating system */ /* Miscellaneous */ #define BYTE 0377 /* mask for 8 bits */ #define TO_USER 0 /* flag telling to copy from fs to user */ #define FROM_USER 1 /* flag telling to copy from user to fs */ #define READING 0 /* copy data to user */ #define WRITING 1 /* copy data from user */ #ifndef ATARI_ST #define ABS -999 /* this process means absolute memory */ #endif #define WORD_SIZE 2 /* number of bytes per word */ #define NIL_PTR (char *) 0 /* generally useful expression */ #define NO_NUM 0x8000 /* used as numerical argument to panic() */ #define MAX_PATH 128 /* max length of path names */ #define SIG_PUSH_BYTES 8 /* how many bytes pushed by signal */ #define MAX_ISTACK_BYTES 2048 /* maximum initial stack size for EXEC */ /* Device numbers of root (RAM) and boot (fd0) devices. */ #define ROOT_DEV (dev_nr) 256 /* major-minor device number of root dev */ #define BOOT_DEV (dev_nr) 512 /* major-minor device number of boot diskette */ /* Flag bits for i_mode in the inode. */ #define I_TYPE 0170000 /* this field gives inode type */ #define I_REGULAR 0100000 /* regular file, not dir or special */ #define I_BLOCK_SPECIAL 0060000 /* block special file */ #define I_DIRECTORY 0040000 /* file is a directory */ #define I_CHAR_SPECIAL 0020000 /* character special file */ #define I_SET_UID_BIT 0004000 /* set effective uid on exec */ #define I_SET_GID_BIT 0002000 /* set effective gid on exec */ #define ALL_MODES 0006777 /* all bits for user, group and others */ #define RWX_MODES 0000777 /* mode bits for RWX only */ #define R_BIT 0000004 /* Rwx protection bit */ #define W_BIT 0000002 /* rWx protection bit */ #define X_BIT 0000001 /* rwX protection bit */ #define I_NOT_ALLOC 0000000 /* this inode is free */ /* Macros */ #define MAX(a,b) (a > b ? a : b) #define MIN(a,b) (a < b ? a : b) /* Type definitions */ typedef unsigned short unshort; /* must be 16-bit unsigned */ typedef unshort block_nr; /* block number */ #define NO_BLOCK (block_nr) 0 /* indicates the absence of a block number */ #define MAX_BLOCK_NR (block_nr) 0177777 typedef unshort inode_nr; /* inode number */ #define NO_ENTRY (inode_nr) 0 /* indicates the absence of a dir entry */ #define MAX_INODE_NR (inode_nr) 0177777 typedef unshort zone_nr; /* zone number */ #define NO_ZONE (zone_nr) 0 /* indicates the absence of a zone number */ #define HIGHEST_ZONE (zone_nr) 0177777 typedef unshort bit_nr; /* if inode_nr & zone_nr both unshort, then also unshort, else long */ typedef long zone_type; /* zone size */ typedef unshort mask_bits; /* mode bits */ typedef unshort dev_nr; /* major | minor device number */ #define NO_DEV (dev_nr) ~0 /* indicates absence of a device number */ typedef char links; /* number of links to an inode */ #define MAX_LINKS 0177 typedef long real_time; /* real time in seconds since Jan 1, 1970 */ typedef long file_pos; /* position in, or length of, a file */ #define MAX_FILE_POS 017777777777L typedef short int uid; /* user id */ typedef char gid; /* group id */ #ifdef i8088 typedef unsigned vir_bytes; /* virtual addresses and lengths in bytes */ #endif #ifdef ATARI_ST typedef long vir_bytes; /* virtual addresses and lengths in bytes */ #endif typedef unsigned vir_clicks; /* virtual addresses and lengths in clicks */ typedef long phys_bytes; /* physical addresses and lengths in bytes */ typedef unsigned phys_clicks; /* physical addresses and lengths in clicks */ typedef int signed_clicks; /* same length as phys_clicks, but signed */ /* Types relating to messages. */ #define M1 1 #define M3 3 #define M4 4 #define M3_STRING 14 typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1; typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1;} mess_2; typedef struct {int m3i1, m3i2; char *m3p1; char m3ca1[M3_STRING];} mess_3; typedef struct {long m4l1, m4l2, m4l3, m4l4;} mess_4; typedef struct {char m5c1, m5c2; int m5i1, m5i2; long m5l1, m5l2, m5l3;} mess_5; typedef struct {int m6i1, m6i2, m6i3; long m6l1; int (*m6f1)();} mess_6; typedef struct { int m_source; /* who sent the message */ int m_type; /* what kind of message is it */ union { mess_1 m_m1; mess_2 m_m2; mess_3 m_m3; mess_4 m_m4; mess_5 m_m5; mess_6 m_m6; } m_u; } message; #define MESS_SIZE (sizeof(message)) #define NIL_MESS (message *) 0 /* The following defines provide names for useful members. */ #define m1_i1 m_u.m_m1.m1i1 #define m1_i2 m_u.m_m1.m1i2 #define m1_i3 m_u.m_m1.m1i3 #define m1_p1 m_u.m_m1.m1p1 #define m1_p2 m_u.m_m1.m1p2 #define m1_p3 m_u.m_m1.m1p3 #define m2_i1 m_u.m_m2.m2i1 #define m2_i2 m_u.m_m2.m2i2 #define m2_i3 m_u.m_m2.m2i3 #define m2_l1 m_u.m_m2.m2l1 #define m2_l2 m_u.m_m2.m2l2 #define m2_p1 m_u.m_m2.m2p1 #define m3_i1 m_u.m_m3.m3i1 #define m3_i2 m_u.m_m3.m3i2 #define m3_p1 m_u.m_m3.m3p1 #define m3_ca1 m_u.m_m3.m3ca1 #define m4_l1 m_u.m_m4.m4l1 #define m4_l2 m_u.m_m4.m4l2 #define m4_l3 m_u.m_m4.m4l3 #define m4_l4 m_u.m_m4.m4l4 #define m5_c1 m_u.m_m5.m5c1 #define m5_c2 m_u.m_m5.m5c2 #define m5_i1 m_u.m_m5.m5i1 #define m5_i2 m_u.m_m5.m5i2 #define m5_l1 m_u.m_m5.m5l1 #define m5_l2 m_u.m_m5.m5l2 #define m5_l3 m_u.m_m5.m5l3 #define m6_i1 m_u.m_m6.m6i1 #define m6_i2 m_u.m_m6.m6i2 #define m6_i3 m_u.m_m6.m6i3 #define m6_l1 m_u.m_m6.m6l1 #define m6_f1 m_u.m_m6.m6f1 struct mem_map { vir_clicks mem_vir; /* virtual address */ phys_clicks mem_phys; /* physical address */ vir_clicks mem_len; /* length */ }; struct copy_info { /* used by sys_copy(src, dst, bytes) */ int cp_src_proc; int cp_src_space; vir_bytes cp_src_vir; int cp_dst_proc; int cp_dst_space; vir_bytes cp_dst_vir; vir_bytes cp_bytes; }; =...>types.h?times.h@timeb.hAstat.hBdir.htypedef long off_t; typedef long time_t; typedef unsigned short ino_t; typedef short dev_t; #define makedev(maj, min) (((maj)<<8) | (min)) #define minor(dev) ((dev) & 0xFF) #define major(dev) (((dev)>>8) & 0xFF) struct tms { time_t tms_utime; time_t tms_stime; time_t tms_cutime; time_t tms_cstime; }; struct timeb { long time; unsigned short millitm; short timezone; short dstflag; }; struct stat { short int st_dev; unsigned short st_ino; unsigned short st_mode; short int st_nlink; short int st_uid; short int st_gid; short int st_rdev; long st_size; long st_atime; long st_mtime; long st_ctime; }; /* Some common definitions. */ #define S_IFMT 0170000 /* type of file */ #define S_IFDIR 0040000 /* directory */ #define S_IFCHR 0020000 /* character special */ #define S_IFBLK 0060000 /* block special */ #define S_IFREG 0100000 /* regular */ #define S_ISUID 04000 /* set user id on execution */ #define S_ISGID 02000 /* set group id on execution */ #define S_ISVTX 01000 /* save swapped text even after use */ #define S_IREAD 00400 /* read permission, owner */ #define S_IWRITE 00200 /* write permission, owner */ #define S_IEXEC 00100 /* execute/search permission, owner */ #ifndef DIRSIZ #define DIRSIZ 14 #endif struct direct { ino_t d_ino; char d_name[DIRSIZ]; }; /* ** parameters for trans, getreq and putrep are given to the kernel ** in a Trpar struct */ typedef struct { header * p_hdr; /* header pointer */ bufptr p_buf; /* buffer pointer */ unshort p_cnt; /* character count */ } Param; typedef struct { Param tp_par[2]; unshort tp_maxloc; /* trans locate timeout */ } Trpar; /* Data structures for IOCTL. */ struct sgttyb { char sg_ispeed; /* input speed */ char sg_ospeed; /* output speed */ char sg_erase; /* erase character */ char sg_kill; /* kill character */ int sg_flags; /* mode flags */ }; struct tchars { char t_intrc; /* SIGINT char */ char t_quitc; /* SIGQUIT char */ char t_startc; /* start output (initially CTRL-Q) */ char t_stopc; /* stop output (initially CTRL-S) */ char t_eofc; /* EOF (initially CTRL-D) */ char t_brkc; /* input delimiter (like nl) */ }; /* Field names */ #define XTABS 0006000 /* do tab expansion */ #define BITS8 0001400 /* 8 bits/char */ #define BITS7 0001000 /* 7 bits/char */ #define BITS6 0000400 /* 6 bits/char */ #define BITS5 0000000 /* 5 bits/char */ #define EVENP 0000200 /* even parity */ #define ODDP 0000100 /* odd parity */ #define RAW 0000040 /* enable raw mode */ #define CRMOD 0000020 /* map lf to cr + lf */ #define ECHO 0000010 /* echo input */ #define CBREAK 0000002 /* enable cbreak mode */ #define COOKED 0000000 /* neither CBREAK nor RAW */ /* Line speeds */ #define B110 1 #define B300 3 #define B1200 12 #define B2400 24 #define B4800 48 #define B9600 96 #define TIOCGETP (('t'<<8) | 8) #define TIOCSETP (('t'<<8) | 9) #define TIOCGETC (('t'<<8) | 18) #define TIOCSETC (('t'<<8) | 17) E...Falloc.c.ZGforkexit.hHbreak.c.ZIexec.c.ZJforkexit.c.ZKgetset.c.ZLmain.c.ZMputc.c.ZNsignal.c.ZOtable.c.ZPutility.c.ZQat_makefileRconst.hSglo.hTmakefileUmproc.hVparam.hWpc_makefileXtype.h/T€ ‚&ĶfҰ)Ā ˆ1o܌)#ĒM2 ƒD6lތ C'›3Ż`4#§L“(ĆȳQŽĢ<-ę¤ŃĆPLČ1k¾1£„@8hņčÉD›2mŽČÉ""1eŠ|4S•+G†FžHY’c,E†€˜£”Ō‡ŁĢqb †kŹP%C2LQsčČ©3†N– źĢ¹ŲšąWhŽ,A'ŒĻ2,2Ó±M“•M ‚A:]!K.sФSØRóøų " j‡yį ž#Õ-F×RÉPLmrLĖ0:O¾Ž:Õ#2-ē̵Ė0Ģóč‹ēŠŽų0bh7[šNē ¤JÓ0];s`™%•“ō(†7›:nCg}miøP† ™}E•L ¹ńj-±ARv0Tew­U™Ø BM¤@DÓZmAµ„ńŃNFT VØĮ_jO1GDn|7āc Q4˜n DX˜Ts°@[^•ĮFfaØ“a!&B\"‘t‘”™ē™kPųr (ˆZv|ęąeeeI[KQEčeÉńœE6™iĶfm1TFŽĶĮńh­åhG%4‚:ŠV•c|Q£ @j„G œįŸkķÄguøŃ„†5Ęęhœ.I „ –\uēµdGo(Ęʁ UéŪCh„:*W„Nuj_˜“„ʖ“"O^RfŁBŻq—OZ8cp _ŲY«eV‘c:(Ǭ”ęķC‡µ”ć­•©Š³eüõ‚ ŒPÜ} ‚ .¼€Ę 8ꉆłī[Gæ’<0yĄ1ąĮ KÄ/C"L‡ ē+\Bą„_ ńELQ׏,Ē  äŌ¶ ŒĀŸ‚„ĮZCŌ®[š*Ü;ĀĒ&1äDL”|r  Ų`…©6™ )€ąŸPH‘„APĮōӄ©»{u^Rs|1†i@„Ęb¼ŗC1 $-E ‘ńĘĪuŽ•¦nü`Ō½u”—öŚźŁ ¹1wŻŖŻqU(9Ō÷B‚m6ŲQÆ«ĀŪįAĒć2 Ś£Y†Y†č7J•Uį‰šę}H]Ę#+ņ]ģ€/ÖZsķµ…P‹=µ·ŻŗJĘÜ„š#yę%$G`¶üÖ]-XŲÕ«ĄRŖs„DĒĢ%Xź²§ŖbŒżÉÆŲÓ–Ģ©YßcHś3"éQ/!£ĪU~²Śģ4Bį iSĆ?M$58*ÉźP«ƒˆ!n)’fް˜Ņüé įŁC:Ųķ%S›¢ÖAp‚žąCA8ó܂ŗ =&ˆ@i Z".‹įC}š¢C›Ü! J© µHsĀ«ŌJ%7dA9M„ ‡aˆC˜²ŒÜZĮ¢ŠAhc‘‹0Ę RAXĘRŌ%-zš_]Z¢©Ą ‡sĘcČēą”² vų‚näą»Ā”ƒ‰ Č7¹į«.h€z`»äY§ššQCPN„€œGKšÉPVµ²% \a'Ząƒ·5> g ė©€ ä ĮeØ0BŸĮH‘4Aɟju4|Ø mÜ]4G7Ép3nm$g8łł6–”|‹„ T°‚ŗ»!†;ļĮļE·‘ö³›m\@éˆRšüš<:ūāPøĀŃŲԟœjĮN³‰R2ldBó3hmø².‡D^2¼ŲG†Ģ“•_Ō ³š„FĘ „é=óyTĘqźV«šY+‚ā“ )š]A!Iœ„1ėҊ]B-®&jB“҇:8(?I,ĶiŅŗWį°į š£ žĶif&œyŻė\ŻP×mŽ5“ č¾ĄYižO¤pšQÅ [’~!t£3›j‡®³¢Ą OųBŠŠ!ß©_õ“ r—Ė\%I<`č\0÷ŗŲ -ˆAµD„&ĶĢ@KxĶ^EnR5©~°“DviB‘Õœ é8G¦JÕ uhKĮH_ų¶D™÷Ņ”@¤ŠŪŠ`ʽ©‰l,Sw9%N¶.‘Ģj ĆEĒ(©).­×IEkaØPgKĻzLÖČM®r·™Žģė‡ “1d…Ö%»%+ÜY„w(GFÅdd#iŅĶšpš­Ė*/ł źžŌÕķ¤ų5ēbŒFāŲą^Śn.öśfJ‹IHāqĻsįl¦EīąZ94³µÓŌk]šŁ“¦¹ĢćDU0+¾9TĶ~"CšīŠP5”h (Ę澄:– "Č pæą„*×lož¦mÕKN“¢3Ņ‚±ķ?—Ś6tF7³!'¦å`[Ü¢³"]9—§e™Ż˜Bqļ Fsž(æO‘ƒzāBh‘Kȱ{ĆŅU½1“ g·2ŪÉd&ze&—lVŠ•£ÄcĖĮ]t€³ēu™Ģ45ˆrŪŲ`we Ĉ9JM•klnĀ5„­“…§žēÉ4>šį¼mäAmojR‚BNžV䌑3ģM(ŌB7 ›EćstŌ„^j`+[äŻÅ:qµls.Œµ£Eēqė"3€ORą -cō¶31eŹÕGhZBčņcqD€kA!Db=Cp‰„KØFś! x"w3rĮö„j@IäØ[S7U×‹a"l‚D( V.ȑL^µ’;PJ¦‹Q ĶA¼1iGy‡©‡Øę”Qķ֒męqW¹t8(q&™g(IO)ÕHčŌ‚m„^2Ł“œb“‰IjG·ž†™Ōņ“7™iCł'²5• R•_Yf”UŖEySų…²¹?WH7žĮ-ŽzŁ…³Ł›t/tAb‡C_·Ł-«$Ō‡SąŒ)H=%6Zģ(čāŽ«AYŽx†³ē|µ—LF}ى†Ø3_Ł43xP„^iqʳw4CN0€N87.Čsó–’;¹V:'„nE-Dw›Us›AØi¦É“N·˜Q'–¼ÕH(ąŸQˆ\–ē›Z› @,É¢›ɛź›Ū%œjA”(¢YćEžmS_&U-ōI Gbņr&S`ߗ*žR=²ƒ‹XWˆAw`5ŖWƒŹ“Žj¹’%*Aé£!qĮp«q(°>‹±T5®!‘%ŅqyJ?Bš#ĄXIEš‘¤^‘ĮwŒ2r–·QX‹Ńu)Āk/RurkHz&$˜‘SĮ$r“a}Ń2bņ4҉ˆ²”cw”>¦!*ĄØ­ø¤Į&Ÿ"ŹQhkQg€t †ƒŗ3ĢQ‚qgšĻóŌņqm¤!%ńM 2§<§ÕH9Õ#Ē”8ŲĀ3åAžįT1žØ’˜V)9ž jŌ¦:¶„ęŃĻ“éöm J¬ŖŅŗ¦•‘ ''čē`īØ<Œ±GZŚ„ öG+Č[āée¶w<±„e‚˜Ÿqf޲0Š;E<šsżš;ōĘ;qN+°Uc °2§¶žŚs[@x’{†RWE1pb£¼–vK2Ū1`±$ł°=Goƒ6HNüJ±’Ź„ąSgūŚÆ)ū²·óÆKiVó{±›F¢A…/T€ ‚¦ ˆ&Iœ$Į¢Ķ2eŲ€xc¦a‡rņ€Æ͛1ač¤yć„œ2sŹČ±ƒr#3iš”!³Ńa7t&VlsńMʗ>€H§ ˆ1oڈIćf&:ešŠa‚LČ0TĆø”9‡N˜1k@¤<Ćē  c'ˆ:)išńér š4lČGĪG”sŽž éTŒF#O¤,‘&pQƒsŲ ćŲ(œ0'Ż¢ C-ˆ$½›·ź”{7–,‚„ČlĖ”*ŗé±iōlü4̚2%ĶųmóŌhAĪ*u7“AÖ®OĢt±75Aƒ±ó¼©““©EŒ‘ŗ™Ó˜N`ŠĖŸFĶ9¶ģT ßÜ)¬Q“UÆ©Ū?7ž|š†¹tFp€€ĀMp9Åx)P՟G’ h]}–~8Q7”Z݆XeµgųuG`uĄqf4iE…^E¢‰‘!Ÿ+ŹAUs¼B_”q”V©yõŪw>i$\Ré ‡g -§Oe¼'Z_ĶXpå$†Akąå\gi]—–cĢTĒIyWoĶu¤Dw¤QT“&މž}W©ĘUŒ†čŽYÕmxŻ8żĒL™ĒN>¾Xœ¤CjiŁų…r¬”Ci ”Ų SˆŗŲytuѐ9ęc‰ņM$‡XhČĮTX|z¢ˆ8aŗjtłiZ)ķVчX.×®īżlWĶņĘ„3łJžn_¼į)Ø ›†ģåÖfĢIžĪY čf„Qtč0c¬0ZČģ~{½ €#05u@‚.øš/ˆ×• hˆĄÆæ L°Įӑe0ģpænü°Aü‚J~É”ńĆG rĮ"“w†Ģ±Ē+L‡Ģ<šᜲĪ"“¦Ļ4ƒ|™lĢ/D05APÄC „GADZ\§C½Ū ŲĮQŻQPIŽėֵلÕN© ļL3eŠR±ÕVc­u×iɶ@fŒ]öŁiÆ- øé6ŚÜuė«@@=d®łęœwīłē ‡.:č*ģ•Ąé hŹiX  Ī-ׄ5śģ“×n;ēv+EB0‘Äkš¶i§(¤ Ą— …JsÉAœh«£Ąr¤ VŖPRGĘ.Š”ŪKÄRB³‘HPXŸQķŽ‘SQ!MTR<5¤Ž”ń.P… 8ĄAƒŠd” ÉhQJHJ«Ū|I;[I(c=rąAŠ²:¤F+yĆC4ā†7ˆd L!›ŗĒ!M2P™ N0=9œ€1•1ˆmŹ–9Š”łõ󨧉å2iźžåŅr’3”'9]‘CÜ×4 Åyp؁P•9h1-včį¦ņ•ĄŲ*¶łĀ²øÅ0Źį ’:ß“Ę8‚eZÜ"AЃ*~±l|4ĒXFėÕšu4߉‚AŚqŽÖCPą7œĮzvĮ @0ßłķ SH‚Š‚€ Öó8éÉæM I0RšĒ4T‰”c`x`”µĄBScˆ¶@„.ø`A_p£õ—6}t˜UQ ·Y©Ąz-ˆ›Y„5¹EpĀšP„&Šr‹}Ųb.Ł‚>bń—Į 1‰L7žUsųŻĢØķ T1A×HĖĆmdałš"‘ęeM™aOĢ0ƒäމä̳č€,¢± w€£"ēųѐōĪ„¦4 $Ķ>>a1?ā¬äEĶĶX›ØDi7ŚŃ‚ž.l'łįBA°Ć‘.Łоҹ/ĢŻī©PŖ÷\§Ń.„Åu„ó^T·ŹÕŃånw½ūÕ„Ž *©.yć5ń‰³Šās"4æŒįŠBہA’™$ż„7_J!YUE†˜ęĪ‘#­ŃUŌzG½ ±ZŠ «« ŅĮG_"_ «ÆA¦ŒGt¬AwHQ“)gJ=^ņ@0…2x«m.zœ½Ą˜å4x(OV€Õ%Į>†8¶$Ŗk”±Ō4”'„cX2«i}„04”‹p† „ń@…3ŒéN`¦ēŗœÄ!,‘Ėp–“'IØJóNUś”ĮŲ0P¼ŗYZ¢$óĀķ¼šCjš2 ‘°„6kį-“F„ž¶Ńå½/ ^¶Įp޳œ84ÉN›Ņ™|틉!‚ėć¤HEd¶@CAę©¢d’`ć#³FĘ®*NŚ©B-¾!/.Ęćƒ'7KĪ„*24žXI²M0%Ł2ƒ…ÖˆxEÆa+ņvķĄ(š¤É‡ . –Šu‘Ąän‹&.PMšN`ĀA˜g˜'”łĀ(œ$ē²ė­¬ Fōį]ō;j3ČģK3£y Sčš]Ųę>ÅGĪ`S›–Ӎ&}„hƖ’œØM½e°SAā:g·8ŗrAŲZė­D‹ › ĢH¢Ć…$ ,1P\1¶ŚG’zC_į <į×F(˜ ¬wē#—!ÉK¶×4‹l=ĆžIf5i fćyŠnĆœć†{žł‘D­*Ył;WĀR–ƒ·x¼ĀĮ¢öĪĮEA‹Įķƒ>Łļµ^P½ Nq’ÓœƒFķe}t—3éĖi Ū’ī@ęŌč1ļ—萎łA.¶m£-Zī x}hŁ$¹äµŸ Ģh»±”Õ¹õę=R"Ė'9Óģø®V Ĕår¼œmiWļ16v ĆÜó“o2­+®å-k ^‚śžpæ pƒĀ6‚FJGŅš \Ō©īÓ”>qū wBøCTĘłC>q¢¬G’ón† AOōV޽U…oćśJĖÉć”GūÄ=ē¶Ņ „ōĂ }$zɵĶķe* ’G&·Łx]nóÓ4įC”&5Ą]-kDų#Sö±F¶2:ūbė“4Ƚ*¦…󧋈`ŗŁdŒfĢ-ež!š[óŃĘöä}^Ź>›<_>АŖęWÅÉa€~ņI®yõ®ĄłŲ’üf|ś>ņ-Ÿ¬Śéµ¦śP‡‘2ŹÆž§Łv:\ŗ™”Š(£jéˆ_±YĮ'dŒTfĮ”8apa¬UPR5EpNÕGp“-k€Bd}OĆDōmÜʁÜwfņTLĒ$‚ĄA[D8h‚Ćh)Hy+ŲK%ųg(XO=D‚šƒi&ƒ:ųs;vK-/u|ńz|—O¶Qg(€’fU ¦TWŃ 6؃hvNÜ$Tßt„ķ·Eać 9-a#np99į]euŠC1pöćqtóōVŖ"gR€—u.o·z{ö4Q35ź'8DŠl‡Ē}*X}4x9¶x5E94Į€ē—~ƒzĒ}AØIąēqڧmʇLÓW}ßw}¦xy¢8‰Ö÷|č¤GRē`’vNL•<]Ջ¾Ø9S…:Ø-W…:Yµ昌\õU¼ćIc5Œ'_`1Cc€V×(ŁHnÄ#>g<Į#ŌX“&Są€(²5wX*ęxt0åØRa†E“b©…XŗTņˆ:a“q§ęųčŽo„sŠ?%¦&9éxYxÜŲCŽ6nōCAä“r`^įCŹ‘q!’ļøłdO ÉC>D‘@Wن‘h™;Č£p!#pV,Ā÷-ā²]'ńę’\ę'ˆ²ē6^!uLJ1¤_åįOPņav”7¤i?b{h8°xˆ“±hu<‚A;©©3 K@1`myJpi=uŅ/a'T±v9”–3—1p~Ł—t)&m÷Ė„^TEł©Ń<<1+€e{t3+(`4°Ö?%!±A†V™‚éEĄ%Qw¢ń?T¼QF“!¼Ń3ńcøŃ1shō{ańa$ävQ‘&NA06p‰„DūŅ/f°eP‹(IJT°cnMT1vՉG%™ApÓ&Z–€-ńuŠÄHMĒKTn tn³Dm˜5 $J¤dJØōķYļ9J4vā‰dpW<`ž­”ž±“ž›TŸ÷Ÿ§”ōīJų¹EpÓd YžäöIÆ4 ÖS  jŸŠ ói šGioāx1‘9 ų€HĢoį¹JMXšõ9 Ą|ąB4±I 4j£8Ś”Su^8u¹Øz?Ā}£·ž@ś£.Cz£9Фü†‹åD N#d`K”o9+GwW«4’=¤„<Å„jūĘS`Ø»čTʘ§¶Œ§ó^ģā.šRŒ§sŒ²£§†:;ĢVÆį§ķņ.…&_ąÕ£Į©’:PŃ*Y$āvõ"#Ø2¹ZHą"ĪįŖ^¢ ä[dńõ8GaLAƒ+©A_wŃ&m"4ŗv.§šYīŅW«¼į&F±"y@ab—WbW€aœ¶čD}øasUEv…W(6V^ŌFbōY-1Pl¤GBH&`…c°–*‚¶Eų¤OU²FO…SˆrģŠ…RyvNČÉ4 МĻÉ7źäÆØÕNźJš9‘Įjęs&·7qgD±„£¹¦[A¦8XåQYčg'‚4č%õƘX„G(a^H¢`ĒZ“jRBćā#Éźž±„9­Yņ‡wö‚pvH’V’h؆CB")øń2Atg.óLv5…TJGpŽG`61ŌLńzhBD¹“N/T€ ‚&ĶfҰ)M7d¤ƒ†a,E†€˜“g2m@Œ Ɔ  ’ЧŒ3oä“™Xĝ˜k@„9³ä›;st(!%ˆĖ0LcE†-eœ“ę›ƒ$ŁütZ3įB§o@ˆaXO™1u>’Z%R9eĀįŹ°¢\—:!‚(KGN˜1+ŸnL£§Ģ¶F",Cg ŗ ŅøIC' IrĪ`Õ[ʍ4r¬¶é¼ŅL萂ėĢĮ;Īß2ˆ"ĶśfäGČ£ŪÄ̃0&d7eī° =Ęša¢‰‘Žy‡·`ɔ-³ŁHēoNÓoB6i2āĘc»Wnd7?āYłp.™0Փžķ†Īę¹Ė›wü½vxä²9Ę o4µu¤1W{IŃq†ƒbQv\[Š%„uĄĀ mō7Ę бxŠ}TŹÜtaˆńFZ \”[āĐUlšFš¼Įń†d+o|QÖY.°õ‚ Œ ŁlŌAC"øąĀ h¼°ÜUtø€†QNYå• d¹e—täђ˜dJé•Vb©%—^få†p–9ē™v®ł‚K”ń9¦Ÿt¢©&žĮ×§œ‰bł„GšYgšghU韗Š"q›Fš¦k~µŃg”W&MqD0ŠĆ­3Ą BaL8nŌŃĘXrŲDŁc2Th߯;8W‚M©šä©JĘŠE@‘J³Ž*Ć­äņź«$ÕĮLÉ®F*| %‚ AԵٮJÅETńķæFÉŠ«@ZŁVz :Å×`…×P\W&k-ŖeØŹAP„æ’;ĆĄ  ßĮ6õ^|T5,ŁĆwIŒoÅŚ‚ ÄSpÜń·4€,reV•,Ö„¼zvE|/ÅōDæ7’kƒĪµÜsĀt¼QŻtB;\4^c óŖSdфĶM£tŌO­`Ǿ5aC³lōÄeš‘*!E_LA…PT!°†lÕ!ÆVĘ(¤°C”‘Į”õ`łå˜g®łęœwīłē«ĄV¤'€¤’fQ:éߊNč°Ē.ūģ™Oųą…yd’KŽŃø{(ą+.±‹ZM½ŪQ n„1 ˜aōŁG "euŅ@5©†iˆįb5ČX!¶\ˆ ŻÖč9„ģe@o©än .$‘.Ķ}™ńß^<«PÆ1ŪÓu¬ƒ#å' e˜KÕtR>3˜/’” š¶ó?½<= p„³œÉ/XehŅцBž2LČ#¬éKó+E&pxJt×čÉzv"t(‡$ėXu0ĆZ……/$ĮoA¾ „,ģk ]ŲČÄÄ &‹] „_^ęR˜Šęh(©ĆdzV/Ž ±œW†/pQ‰Lü2†„,‚L„tō™`¼Ā öīhp4"ō †-h”Rx‚Ŗ`„¾%į‘~ō•÷$–2†E @C#śĄ!"ĘQb#üBkˆų9Ų1 šĘ=ōŃzź”Ć+cYKų„a—†(ēLzd ńžVÉB8 ”#Å‹.ÅKĆhńV»Lk^ӛdõē „²§š‡ø3„ĮCC‰Vņ·¶“• ł•Ņ栍ˆ‘Ć WŅ(~Ś1‰c”ƈ–9d‡!čŸäŚTij¬a'I'yB‚ŌŸt@&5cYQ  •ÅÄŽū4ZĶ9‘)=f4}ĄŖ 4ń‰“"­X„)`. r Šą„'4”MpČF –O¦qE) z÷…… ‡…ųĄ‡½¤®©KóøG* ᦌ©ƒN‹'X!Lp”Pā«#02‡$äG3ʤ,„)ƒTČRŅ»“Äh!}Ję0ĖŽ~4ž5 ö˜Ś¼Ńі†ib瀽:ø ±u¼#“eŃÜȓ9y@ĮŠščz(XēD:KčmG‘Āœ Ó¢VµŲ³åm·Ų«:U­;l ’‹>a `Ķ©†+T_ɳIJšĆ¼—¬“…A>ōY‰DUĆ/˜a(ˆ„ŚŚ„“ЃAz›+„(&ToępŹ8¦;Ō=ĮA$ĄģF”vė(mīAX³’4ōL@Ģ;BƉBHŲžčÕŖgń«‰ŹšQr×»ą/yĶ«^Ä`½Zō}ķū1X§;ŪŃ/‚ī€žž„jäKŖpĢĄ ¹b]®Ż(,×;ģ$ŗ+éku6¼B¶ D ƒŒ\·–,ńÅ/4ĢjęC†&°,œĆ°,Š•N+Į'Ó)\²Љö|ĄŅ5ĆjŠS@BŒ@"†Ä¢å!Ć،‚ ĪĖ ·œW.“9/ė2ŚĆd“VG:Tmš%]0GŚĄh172Ā IģĘISé «)4„:ԃRD2ˆ»ChŲY_ŠČkOJNƒ¼ÓžŚhŸīĆZAą+#0ę¾Z®Ž±s<†PW,‹ C®”Ļ7ä֐q~¤™ł„P”„³G%[R‘*™pčĖc=YĖūWše!g’Ļ6G“č­×nóĒZZ²Ŗ °}‚lik[āöHŁ÷j©CŅX~Z©Ä5.rK G­¤zČ×ōÕHÜp‚Ņū1D]Ŗ ĪpĻ„• ŗŒ\Č ģML×ak‡PÓ`ŪWAš‰m2Bzė†|‚ĖBv²£ół|7Ū3B6,Aˆ»,rɋĄŒ’y§27(Xōd{YFGzė gō„“9iJ'Ą²Œ„Ž##9ÉJŗł‘nÄAp\ģ½ńŌ_uĘ’Į.Ņ‚õ ·}óĶRµBHĶõ®uŚr" [ |īŪ”0ęBłį eršw§ē%\Š·©‚ezˆĢävųDįŠ„H•.Ü]ąŁV‚€=¶s›õĢgV¶ĶØw·źqŲś×oYö] }½zūܳϼļ3 M‹š¹¤DtMcŠš…tĖHTpé[óép·Ū•“Å^ų7ŪQĻfƅBlgkŽÓœ·iķyK«ļūó{üp pęÖpŠuRrÅEwē“į;"p:‡DT™·r "==5[UTåd eę±2¹TWօ]¤Q¢¤r{g jŠCøÄ!ED*(h[ꂿēhé÷8Rb7ƒ7³7}ó7ĮepŠĆ8†¶iŒ&g·ēc)0i)&„ā:ęQB5ƒį‡=£ö„ …X(G3‘39(w˃q„ć+HĀq+„aĆ"WĮ?ĒtćT0 @;¢ aå /° 2b`!¤§T –D.ą_ hB/|Ć-TšUD@Efw“F|®JbA 2֗`ØK£ų8 ša߅”x‰ö7Zü‡DrS!R| XUā ØU‹«‡‹”h£hsEXf¦čˆČ’Ų7EP‰Æ’‰6a牯W1fPˆµˆfpŠ_PˆŖČŠąE‰Ļ=²Ų‹õa‹¬÷‰_ ‹…hŽt€ŽĄh…hsJ·!•gPt""B" Qēs ³"-ņ"\rXa»¤G h÷U{×B ¢+2uphĄOGÕ¹†$YݱxčhÄb,Čr4©wF* uŲ‡™«Łš…°©0ėįe¶)|øy˜±4‘¬ÉMœŠQ$7īįKÄ91· ’_·› ³œ®Łœ_™˜Õł$ĪMg–›VóN¼É¾łšßyiŚ7G£ZD™Śé+Üł›-“›&#Ó±d_‘5ÖOóTOqOŖiyĹ2śPG<¾‚TTVWWöQ¹Äua L”ōtŁō6…ĮG`ĘB<=€O®“ įodąoÄŌJµŌJŁ÷LÄÄ¢ŅtO,$Ÿw“ć%–ōHƒ7 ’Z¼•E7÷dQ&Šy!F‚1?ō4›Ēā T4MPVI€·–,,„“bĻ’08`8ł#@GÖZBal :ąc“B1€+ŗĀR™‡s!/ōb/ŪTŲćįBć¹²+)Uļr‚Z/O(§ u.ä".0Ą§cŹ–2P§YC5 ³eŁu+3YŸš3 Ŗš™0Ļ)Ņy$ŌiŖ]–Ŗ%µŖ4ąŖ “0Ćä0Ŗj©5©“²©å²Ŗ6P§ī9¹ń_“±sœ4oNĪćQJ«ń!#…¢~Ŗ-«¶Ŗ7Ą«ŲNmӟ7ĮŠ”@Ŗ…ßa¤‡+s]Ąā1s%-]ĆŸ2”A ŃeųB50€8 LGe°a£° a {+*¤®ÜSp™,Fā¦?‡6="΁” !%h«õ!@²ø^vė‡ 0!ʃ"(”»±MjV18č` š£AZŲ“€FūvH›Ÿ¼ĘSOškqēQÕ£0ŠH9+F`0°µ^›VhQ­ņ*Ąę“cåklD„š+AfV‹µō¢’ Ša3ɒ}™©F”~!©Hi/¾įŅ•‡Ä&n+«- 7((Q¹)ƒg|č÷n=ŗ/XŠ/™Ō^„ ŸøŹQŒ‹œg¹!UA[€1#—‹­×•5›‹›M©ŁÉQ ›~¢;35sŗæŖŗčQž­KŸ°+ŗa36§»ŸnS"’©¹¹[R¢dž˜Ö»“»4¦ū’в5AĻj”`TxÕZ…( ¼Ńd9Nh¶ĖµRہ@»½²™€uŪ’œŲƒüŚy#„~3i¾’M1©„ź®i$€ĖOZ”ja?E‚iä$ėK'A|ŃRõr*ą¹±Õø…9YŖHĮĖū¹>ʃ¹ņ+: €TP•ĮN#xd%8%å±4ĮsąHR_ģōŹ#EÓ$!,UĄÆÉ";1ʒn$C‰½3Q/O=E¬ņäeY0ü2iČA`ك/l³‚1‚cA–UfQezÆF'"ĘńeT¼®ŖA#? !G!TUą_ VpG0B¬6!C( g8ŒH0²5 D¾Ń„v ¦‚>nŠ"GB!ū+­Ÿ&Ńyn]kÜ *3¢„L;%ŁĮšŒQH ÓÉ)‘³Ém +1NAĀqˆĀ¼ÉCżē ™S²I†‘ŅĀĀÉæ\VƒģĄ |D”›É9iܽ5ĶgFgjö|}}\č|w¶Ķ{&} šĄ¾M-0ĮŠlMŅü˜Č{ĪĻģøŲ9k,4–8Oš¤8@ė²¢˜±.qAFzaX֌¼i¦{xöfq6gu¦ĶyĪ%nŪŪĢięŗ@M -эLˆĶ νĒB—fŃÜ{fżĶLūŠZŃ,}čQ/ŖUuŅ@v¶Q›¶y{næ"ĖŠ¦+1tģ">b$Qd`{dʶeQéŪ—&UŹ:™ųōL}$¶—fYg5ƂžęgŁ7_šŒĆ¶øä¢0ź¢2ŗX ŸFCÕ£1·2CS9”Nu¶¦½4ÄRKūf`%C›D(ŗHŲp†s°žÉ!Ųs,w“_ ~j5–•s—œĶŁk¹:W”6—ÆÓ٦–¶³7| gŗŚmušĢKØėu½u×ĒKģĢKb `z@Y pĒŒžTŖ.”] z¼œū$Ą Į9ŖM«ŃYÓ«Ė”æmœńŗÖ”žĪ žÕ]œ‘ĖQ·½ŻCõŖĻ=Љ5>ķĻĄŠ¼3žŠ9½æ\Ÿķ½ĶJ>Ō«sš"N‰‚mę„NO2•»ķH$I”t“~“E]„ä=Ż“H.1$ģŌ²ÅŻe¦x½}™¤O.l޲Ū$21*9·3<Gtz!t]H5”m)žۃĻA?øqNuÆ1Aˆ!B(ŽtūQ Ū£ž(z݆B26LŠóßu5R*$øpńBŃ.2DCŸR7"**OHĶ ‹Ę¢ ęōōPO~Nf^OŠ3RkŽęŅōę&ÕL6*ēNyvDtDÄRĒuŽ£Ļśˆ Ń8{¾}ßv,x0hn³.÷-ć(QńTS4ĄdŹŹØe]+0L)ę°ŚźÓµpA›į—.äÓQ,Uš, Cę $%Œ8¹ +#jō@r„ÓFņ«¤ņ,6«O 4­Œ1ĘŹbk€»ų›BŸś$&-ƒ8JféĮŁĢŅmbń»GŃ,äh OÓå¬Ņ‰ÉŃߊäŅ"-Ń2fēfēd6Ž?Ņ- Ņļņ'c·ń]Į-ļŃ#ó/ņ$-}(ńß*ē8ŠæźŠįę,:Ó(ąQ¾(ō8Ś…ąŪk>TjUųģPŻĮĻ(õ&„ Ńčˆ7@3¢‘ŪCæ£LŽ}ˆŁŲJ)°,¾Ų&0®ä'dćcĮ. Q½ķŽäĀa“Ns°køĀ±yõµ"@<ÅAgWc¼WHFö‰>ōa¬b…šrŚ”J5ęHŸf5ō,„茾“Óįė*APVWƇ•ƐQöQģ>ģ‚gB£‡PFŌ.^tӐ7IQEźģéA8é,Ōź6č, źx|³ēYNEDŠ_śd&’ÖŸ|µŠįż±Gą_o­4µĆu‹ź˜“%‰”QŻ“Ūę hģo|±GēĻiŁĻB¦”‚æ3°ōŸņį4š zĢæzBdąĀš‹qcØ Ń³ztźBPŃE8ø ‡ųƒ„[ £ąĮ&{‡ ŒŽó6 įȌ…ΰų^ 3”%(‘°"b»9a"„†Ģ—·Ēx+•'č@Ŗwē šY%•Ģ:£s l+L8Źō§é†@·É{xHō %Htžš{_ą§g׀P€Ųaļ+€vc$LŁU0S¤į}A āäĶżEĒĒbæ¬rÓŽŖŪ,wĄż×}lTGį‚«¦#üGĶßÄ*čĮ¢=ś§Ńńq„ž¾§“MŸ¤„vpāĮŲsż–“<®.ZBRH5”ż…‚ÖM˜f&!J3PļÖ ę§7œ_Õ „yfµ8!|«„ÕÆü Cń÷ Wa#l…6 2Bäó‡!0d…Ę0BŽN§ “!ԃčn°n8 e!§Éj0@ŽBX Ļ”8$†ęš­%‹ZXĪ¢ąĶRsKOžIzé~¤Bašü榕|Č5<ØEś­ŗ€šYɋiįģŚ1&HCt4 Üų4’Ǝ`Y§é Ć£ė`ž®“Ņt ā/ņ†FDZ»"äęCrÓApł # ƒ“»‡(Ź­· §Ģ@ĄØ+Q µAĆTŁzŲŒ —Q×Q ¹Z;€<0Åć·@oĖ"R¬€ąrD]TJ‡ ƒJądqG¼ˆ(y\ŃÉ®†XKN“siFé-Äęćó&ZIC v€‘œŸŠµŪˆČ$3‡‚Chӌ`$„ż%üE±ŠqO]œy/×½2ćaŚÅć3Żģ1b<ÅŲ%Xd“ ŗŽ…œw†ė@#c _£åĀ €kö½īĪ'k[žgį(²Õˆ˜P€Z|7½M­$„ā~@ ü8ņGąŠŸ‚c¤žO^ŠccLō"L*b­;GaKy”Ą€č‰tmW¬ć@øŠ 3Ų@ŗ±Z”å`ėTŃhÆŃńčC34õĀ’Šleé“ÉGŚńŁJ‡öq ݧ/4&9E—棄©m/Õ¤ūČ}¼O™97Ķq5<”©4R–ˆKq"PD¦T‘+rŗöG}`pŧaĮWŠ Pį-Öé¹…rź€Ź!,Ē8ų ¢²3ˆƒp6«Įe²®@EØ1ĪŻ”‡¬„YžGf˜Äz`ČpI÷ˆ‘åC! įt,OAµę19ŖKų€ż£…¤Ź€]⺁”Ļ…›ķį~B«2ĖB^¹ƒ`gCøBŠJÓ>Č@Tō—tTg*”†V\%RegĮH— cü¤Š,T OpM% Ī ŃI_īĢŲņ垇D:PäńeQ©Ś”0`@ P“YRq ‰‚ćČĢ¢TęĘ:(§ˆŖŠ›t8Yä4āšŅ9يĪW(¾+I$&)ū‘[ąj‰’Ōų NjB2€ķFį‚ć|€©uØr^4Č<S¢Č™5„ ø>čõIĢĆĖQ*ŅC$ ;ĘōŹ2؁½(»Ā%Z—FBčŒ *e$éX—žqÖM$8i”6ĻĖg„R*ŗŖ†ąŲ<.&©åR)NؔørŅ›p+W€z„’1czŽśH:j ŚźŖ?jĢ‘‰9äj3+č%!Ņę\HHQ•‰ äJ W6SgśL= 8Efs4tĒ–¹L¾‚‰ł{"£É–n¾‚“‡C„8Œ„–į‰ŚåIŒøeDŠĀš %ˆgŗ²Ō””¾ę-Aīđ+8zA0hŒ |>…t]Ą X į†Ī?Œ]Ē2Āā2ējńgˆį&Ō£C˼Sše#'P±8ėŹŠ ÷ÅDŌ}–$k8xˆAš 5 RFƕjƒ¾² ¼©6¬’e£įÕL8ŠĄP*ōĄ,=1¬b9ŪÅĮ«+%ņD¦ČPā%å G€!!AP2ÉØ€ņ”³`ua²kNĆĄ™<Žé sa¢Ŗ 5(“Eī„(ņO^ˆóCĢCĀø.hŠP č;;‚{<ßīŒYōŸ &b(Y‹or$‰(…‰›ųaŲ ®T¦"dœ“6­ķ) ĘBeø#łQÆT`Ȍ,¢‹8{T•2ćBč¢  Af²šDØaY”Ų–IYāŲ2Ė0Y8F™‰±dō „®7‚g@ PyJŠ€‰U@Ą 7Ąč±o)\Žę™é1é§ģ EZtŽŒh<[–A‹°1P2=8ØH öSõ$ $J:ÄG\Xi ŁK+źAóåu¢…4Ę3” lO?t_Ķ n6’IG9&Ģ1q “(ˆL::2MfMŅü2 Š$B™eZ™é+ŲLēé ē\ą™cQj–%#*ŠČz¤„ŽĘŃ ä ƒÉĀ x%+‡%©«:Ÿ†$ …JI©7©sg†ZŒRPZé`V`9³T•R}¢ålHØC~„×A(‡HI†d€ œ';Ą®I‡V@ĀB c?,dLŻ2mƒčį"š¦@7a‚“Õ®®XP ¤’ļS,¢M›7õ¦Ę!5 vw¢$‘OL@Y½8ÓčĖčB¼ū¤n`2Ģ0¼²0ĄH^{CķptZ†NÉL M X©ņA¢‹–¤¦,vÉO€ŕ@‚ė“&ȧå6ŽTZœžAn3YN²‹œÕDfT˜€…Ę8ą\Š[š¢Gˆ“„5®IIż Ųfou*§dĘDSź*DŸQL­BĄ–S­*ųLӆ&4bå€Pš—D Ø_ńÓ§:QÅĄ8«hõ Š©Uå/ŒÄŹé€•³@ˆøx$#{  A>‰OɶŖāeU…U‰Y ‡Œ•®*£į!£vä€{0S”8”ŹėįL'ŗl? ™5Q"ę µ@3D!¹*ŌåśiЃ;¾•·dg^Ķ@q\-”Ņ7 €°ģ΁² ®)*\T«ŠHT€ve'زŗbĻ(K'RdÆīdĄW؀ "¢ĀµšVRóFHGTŠ7„#¶T[dµ”¹U7’„Ņlr®mé² W c\’åĄ#EhÅ4C/“–PEvX$ 9Ƙ¼č€€±ÕՙqÕ*1'R3Qe:ŚX0źc…˰ 4–t×[\-©½Ģ±ž‘•ŽOŖ\P@t°9ab2Äė/T€ ‚&ĶfҰ)‚L™0lŽIC ˆ1rŅIćę 8rތ)3gI(ģ¤ ĀČ)KR€ć†LĆ2 7vQ±L”*Ć(!°–$T^\ ‚4…  ® )ćfęǐ#K"|#gĶVŻ”¹b›7t@pä9ĉ6 EžąFĢBµs† „xvL:elšįŖ–Xš6YŽy'ˆ7fŲ2„&£:'.ĪØ¶M˜3 ‚šģp«Éz/dCę饩U{‚XSFŽX63k"TČpNž9€Vķf°œ6]¹*’äAŃŪ¼±8µ™?eæ;f.ŗwļĄęyē ˆ2Ō/D†ść1cźČÉHFŹ2)‚`° Ё=&Gjb”AÕl -d“ޱ4GgøŃaŗ” ƒL²QfYZü5ō†XV-…”kID–!VĪ„ęE%$p`é·ŲeÕqę‰_cV™…uЈ[†Ć]ęįI,‰H… z„FCTŃ!‡cp¼ĮĻ]f^E¢%t×p:¤o|aÜ:$GmĘeזK0•õ[pń%¦‡_“ŃĘ+Ņ‘ęšr“)F!%'p>ÕÉn(0Ø(y¤'Ÿ’сB )Ü9iŸi†1ušå™ƒöéd~qGżÉ&Wn2¤ä”tśµØ^/( ėĮF„‰ą‚ / ńŒĄ¹€† šź†ÆĄ2$,±ĘŅ‘ĒšŹ2ė,“Į[ģ±|¹!G¶Ķöśk·Ō¾P[Hć.[ī³ēJ‹,än/"œqV½ęF‹/\Xń Ææ"hFä6ėPB 2ÄT|aDW@eńÅː@@ °pUÖYX‚‘IrP'asŌh(•«PH‘„APQbįAĒp¤aS $įR_ŌüÄ_8!Å 1ģ°±@=§“M8‚PąL%A(–M*ĢĢńo Ā•ōB/š\Fu¤Įp„1ĘM¾VV÷‡e R#•Ö“Ü»½˜Ģe<¶®õąųćG.łä”Wnłå•« Wœ'ź™sޱęDanśéاłāPT!I }%žg^ŖĄ pü$sYTå•fķčvsuxfrP ‘Ń_ )¶šMÜ9§ųĢPet†A€œu|:wD‡Ō’~Ym<™§a”2åöõˆj/e÷i,RųmŒA¾@ęgŸ¾j [® 2»4€e Ļū‚øĄB‡ø•!Źą %°Ø€ ”ƒ”4üę ¾²›W˜sBj ^9`Åš±2lš<>«MU:ųĮ¢š |Iž|r)ņŹ 5)Cdr›}bī;ĖNāRBf/T¢GÖw™/Ōå+dÅÅfQ… i0ƒ®@Ą±ŃÅ.'i„А/įĘe ‘O¤Zņ’%€…Ln8AZŠs ŗÉ!-zC2²źLi?#T²*ĒT$$u8ƒEDÓ2†%ns ÉH˜“Hź™ . \^F”pg_ąČJ¢9-iRXŚd’PŁEĀ˜ā„22(8e*ݰJ“€Ą®”,e ‚€Ąa“Å@`|-š\ųd3ÄĶ&!  RPKłø—ŗä„/ĒHF” ŁS#ˆŠš²“”{AŽt™µś0ÓsM(ƒ-˜D„ ½BKøds›&9ƦŠčó qĆ ŗŠƒ¬ą ā{(¾щVō¢*93CŖĶ‘–”'õÉRŗĪqˆT(bŽH÷•,ݦįŠc<3>Ń:ęĖ–K„Ūˆ7¶ķUąiz„œųnĪ\±/§¶fžÕ” : ie3[ó•ŖDœ_8A))‚§QACĒǹņYé|§ńŪq3ć–ĻÅƆʠ£ i¢4T•ęß„ż—µŁr:ĶŻéóāÖé” AĮöč÷=¬ģ™cnųs łfÉ*ąó0œÅĆ”¤”-É3čć°Ŗ ŃrX4Ē Œ6›¶Ļ­~§ē>";÷ŪDϤĘgBrÅ&®öŻqŪgSĢjv§œ1UKŠU‹Ź”†¶Żm_]XīüķŪŖ[€©æ÷š° ¼·+Š·słŻ­| —(E.Żß„ÕÜEøĀ/Śšˆ+ s'Ęęľq’Ow„]¹DGžļ„&ø&v­žĮŪ'ŗŹ¶0x!Č] !ŸĆ,¬Aggƒl•ėč#Bk-”3Œ˜Ō!-śY‹l¾ƒF8“ w H‹8ŁĶg=ĪEœ`¦‰ļ¢œuūé‹K@ՀõƒĪżjų öü€gžłŽ#ŲĒhHĆqӤ¯3&_ŠWÜā_æ4Ɗ•‰c_ÓĒ@20ƒ:R¼?łīQēš»MīœAZ>}ąéN™€sbAŌNĪ91HفœėĆɇNū°¢ž ū挃"u¬™§Š³A@Ąģ» €•ķ¬•±=­¼ž .ƒóOÕ}XÄGLńN;5U]ūļ¼õB£²ö‚ÜŠĘ68éņnīāD G ą—²nPOeŃ=½ćMl p²õCö–S›ÕSPŃf`( n*“W $qšGØE—`Qīcµ£qցÄw57F €±(f2(Š€`”‚»Å‚ļWzBSYõ&D™%ųFķRPUņGķÅiś$f£Z–5÷wpfbqd†;(`A|õ‚vUeH؄ląHĻ—aY³*“QYggȅ ԁģÅ^GĆICR@_ncKēt|{–GoĶ×>ĀĒ8* :ŒŲˆŽŲ¤£”“*›R)”3:zńˆšø‰™“+­ó:±£FB‰{Ņ'¶ƒ;Ær„R)ŗö?'żW+|ń»³<øQ]"ŽR‰q),ĢfI¢sš|| āq ,Ń}Ļqk ā(ā5ĮIäĄh)pF7~ˆG?‡gV|XEĄnƒGzä6rˆ†€wēOĮ<Ѓ"Z}åtKOdW>!ažń‡ę”6„±8‰˜;‹Č‰鐑:Ż:„x1‘ų©‰¬ć:l5„čŠā}BR°3™b=؃>»ę=+†?”fiĄ“i[ŅŠų?[c¤³3’įȎq"ĶQsŃ'eQ’fZŅ–+Ø(ĖQ“¢G‰fōm¢±*1GF“4į†.#’%ˆHń€a:ÅS•Pf5BŽipkt…sŠōnŁQe!tV•’§1;Ü!gŹUg)×L½&Łw„H`€Yƒ“Ģƒlś7“ÕčĶŲ‚v(€Sį>Dįf¢aZŃ!±‰”É©u”qtęiķsW(Ay¤4ĒuR#edEEMQĮT`4Gd¾ņĮ)7ˆ“`iLßVu3ˆ|4%xš††&1|1'TDu|@4HNpŚ™|P0o›I}¬¢gąS3k¢ą³GhF²Ń'R“¤Éi€§‘ `Ō`1‹Rā7zó9õiAą0RŠ_š½TšdEsƒ„CˆA²|_#ćDe(„A€¢KPRąEĄ É¢²™3!eĄB»ĀĆ‹±(€£“}i{ cē>‘{ŌDy.¶cZ6c”wc±”c–{ `'d@eŖf2¢Öd4KÖdŌdM°·~óödźf{¼÷»n°h¼÷Sßė\šjł¹ŸŚI¾Ó4ŗ°‡°VQh¤I¹‰8N†\Ö!—ėW0 ­•š`$ ”"+sš”yõ<–qLP¶©v$¤+ŚĶćŽa¾½›+ š®#zŸ×‰żyr\Ą!ź| Œ ” 'įL/{a9›5F}ÓŸ&ØĄuKE0pÅD žTcĪōmā§ę‹ˆŗĀ Ūʖs±œCæßɱ™‰n|Ē«ć‰6ƒ3:ć¹Ž ŗ³u’}łµ+Y? :[ɗžQ–$•żQ)s“8Oy6D›e™ė¬āAZĻ™¬Y”¹›ģēŲ“RJtP©1#`„š<sS7s&Ÿy11`‹4ɧ¦aY(T ’«5RŖ ZÓ el #¼<‘9fü1½ØšŲ©©‘iAža± fū”1b"ģĮ!Ų r `źÄōROSń—ź¼Éņ™gü#ķ\`źZʃņnč3hm!ĢśĒ“|qĀøĀN^ė?…|˜w£¦eAdėSFĀ”*ś³+ØAīS£^“ŹFŅT‡sęl—ag…–gÜį‡čV¼56[ą»!/ö¦Q“GD²!pčpϳoEĒ›Ö3p7 t«G‡DU»yœ‘V €~hø4}nØŚ^ė'4_yø‡}ø¶Sp@ Æp–ÕōydPaDćļ˟ū™Č ‘1׌©5śį»A;#JMq­TLVD`×¶Al‘AŲHE|ŃgZE†½q­$żÉgXy~*EčS»į×O Ųn-Ų ąŚ[ŲÉνµuąŃ$chĀ”h&md-fd*KäĖŲl¾wdQĻśŃc•G3Ģ¢‘… %āēķŁŹEyę·LLć4Ņy½nmM–½Ÿ~§{†—_/4¼“WcĒk2É+ӚǼ²ō¼p½ø¢7d֋nDӅäėŽe{Ö¼j}cė|ĘÜ¾ķĄ­“pĘ9ėŪzį›d‰×¼‹—|-€:}Ӂ>ŃĒ9?õཕ;QMš=Ł× z½Ÿ2Qß Š9eÄÜi±*ŃŃgihóū¹ąyæ© 8ņń īŃ“.nį(žįŠt/|īĮP!|Ā/T€ ‚&ĶfҰ)M7d¤ƒ†! sņĢ”S¦ ˆ1aŲ°™čˆ3eL>$ƒ1%ˆ:iČ\y2ę @L¢r䛆+%žL '&Š.@ ¬ųń †fŽČQ&Ģ4 ŽøahćO:iÜäA1ŒÉ4&ʉ˜'§Ą9e:–ayG*Å;’żŁ&̆UƂÓN9f”Öq3¬Vœ:_(P0"ģ6už‚įĀÅ 4/ĘhŻčŹ–1kęģ4]™±j†¬?‡ÉʍœŁØmgĘŻYw9r¤Æ}yųfŃnH›Ž|õ6o–§v.¢ œäc“ _mqą öXϾ½ū÷šć˟O_¾ · ņ' óę J:pŃ”_JxŸNõ%Øą‚ ŗ§‚dPT!I BX&ńē_J„Ąé „DP QU$A ˜HÅ*²č"1‚0ʼn)®hć‰0‘ŌR Q$G\-žxАtŌ!‡n‘UQS}—F_rŒ5äu°ą…n€p‚'üčbŽƒATä‹*ęH*Ł%\Š‘qX[:±Y–Z„E€™aF„aC*Ī‘—^^™%2œĄ"^iÖU›Kε—“ Õ×onI–“gÄŃTÉQGc xžNrxB©Ā±Ć§C†ŗŃq\š$ǬŸĪqZW”ŠF_€$Ņ” &\g樃łMk«p“ąƒw_ LdĢķ‹Źš*›ŽY‹m~rėmbh»ÆŹ†Į¬‹=>ķøŌš G¶U±j·Š& Ø–āN[īµū¢kĘæė¶[Õ»“Å;ļ‰4aÆĄćŖśĘ[ąõF.`[ĄßāÉhĘßm¼E¾Q^nвČ15ģ.¼Ė2t#Š*^œ†  Ą2¶Śb!ĄŖ©_m‚ äVŪ²ĀÜ" ėU@Q„_Tq£),pJn¢P„ÖR4‘ĀŗCļ[tÕJĻĮtĶ·żÕGĒ=7É p$Ņf́ĀĪ9>ŠĘ,.Ż4‰Ė½ųŚuūÄ6?Œ³¼:óŲsĄ?mwŃ’Z}’#ƒštŌśŽīŃIۘõÖ]¶~”ŗa6Śj³}0Ńż†ė¤Óķī ūéūč#Æė7€ ¾s†#Ž|L,?2ä÷Ā:yå~ĶŖT“)U»Šƒ/T€ ‚&ĶfҰ)bĢ7t¤qs†m$ŗGĪ›3rĀ“ńĘ ‹Ė“y#'ˆŒnœ)#D7d@Ģyӆ”œ2lĀŠ)CFߌ!Zēē @\¹ø±I'I°čŒ(‡ĪĮ:pXœ¼b M7@AČ©C!K› Ų¤”Cg!ˆ;²0*pāÜ4a伙xÄÜ9@MŽĢyųd˜9kęˆ]<¶ĢƹjŁlŅ*Ī6éŒ5ČńĶD:|AySꠛ7¢×¼¾s÷āOF¦>8ń„J–.)£yC[LšĀ˜ zāŅ”;–é¤y(6wź6uęˆÖ¦kčŹ åŽYć– ā„?7»S}ƛŖ™.­M“!fī] M½š1ĻLE“XxY†›nkµeĘ[(!”†Ś”FOÕ閑Yśq„X«µ0F`lģuBH±„ bŃńĘI@±įŽpÅg˜hŹEEi ·Y'­˜ŠM1ōF¢xŪUIP‘šr|„FCѵTŚi¼A“¢E¤%dWwečZTM¤Cųyå^‚nö„ZeĄĮFcžä¦K*Ā•ŌRstazš6GŚ©ōžyk®ö…r¬!ƘplŲį‡ę¹USn=² K4š9Gz”Į× (0ĀDc°Į!C"øąĀ h¼ąœv. !‚ؤšJŖŖ²śyĄQF¬³ŽźF©§‚źŖ­BʆrK밶⊬«<9+,±·›k«4yŌ¬¬Ļb‹ź«’{m“ʞqžµµ+Bw² ­»pt'’³¢ŽšZ įÄU(Ą _”šĘxs¤ 0ä`CŁä†K#€ąĆKaą„›v*’TčÄi«źśNÄŠL$1Ä_PńÄK 2ŠĄÄ 0ĖLóIhQD  ätŽ)Ģp„9«*R$aETĮŃĮs$,^d=ŅńEOmģ @x %ĒF(Ø ģŠ±E) ‚Ł ŌĆŽ|÷ķ÷߀.ųą„ ®_ $ž@˜n(žxT~Tį”Wnłå~K EBÄ<ĒŁ­Ąy Ō„Fj )æ%G6pĒ4S³Gj”aŠ-KxƒŁĘ~Ńa÷ŠW<`‚„“’”0ÉD“cb,tŌ·W|#o;ž 'źē½G QĶT$KäQ¶ŚŒb-ųÓē¤~LC%uTx)Ä THQÅŃ ž“Tś|“'ēÉT ßī@¾į%®bw ¤,ęž?j$ŹŖō&€—G䆗7t”w ųßʰž0Ä A9ĆS4˜€ŻÕäƒOX‚ٰˆ|ANoņ n‚Ą„)a‡ŻJŲ²õĮ䱉xū_LŅ  ŗ”mĆóHc‡Ą¤ bń•Ō7’*‚č€LƒIPІße €ųĄ‡—øDū †@Ä"¦`ƒ5”ƒ·„X„/!Dų™Ą$²1€“”Ūö¶øm” ݆*Z&' rJŲ`&1„a<•jPvžW§‰aajOÜÄĀéø P#Įz(6 ęĮaĪY]Ź@¼Š½ĘRA`°¤öI%Ķ”Z.×ˆÉ ī­_X(ĀēL`Ż ņ-×Ģ!0"LbnŠ—((”Xl(Q’Elźč ‡»Ż® ĄgØō†¹~śóŸ’SćČĄD9rQ č?ŹŠĀi®jWĖŚĄ?ī!*„ fŲ “¤€spž3ŃFĻSŠf•f%īČ(["Ä##™ o§Küd)i€ ‚ą„,ˆ%„曈ĆB€Ć%8¬^i Dš›–!§Pś¦D –}Į Uh‚=é7!br".ųŻNš²āżÆ„:‰ŽėZŅ™hŠw™ŒŌæzĖßńŹWň‡‚A<^1‹Ļ“š>K׊Ā–ouœ/—„…/‡,C5Ē9Ļ!3į˜ÕĪ֌’<2Ļ?ž†#še–Y’w'¶VŹ—•’ŚiŻI‡ÕVŒ¶$”"Y2ˆ‚ģŌD.É!Ij"ɤ@¶¹sŠ l«×28‡ Żq n„64tē(¤­mń‚[]^ź4é*¶BœĄ¶u VY“Öęi¦QłÉ ¢¶­¬e ¢”RŽr§/ĢS(“ފ.Ц¾A ŁmC.‚Ź:!Ę>&¹•v&Ņ҇ģf+ q‘”ƒĘØō÷æB į¶Š_f¦k$Ų‡éŁĄė 0”ÉLp•/TĮˆ»¦éØbĶž·Å/ޱ M€žį*GHĆ~B‡¦øĮlńmӛ¾pW†|¶P¾,šb DåfŁ—žåņ•[3Ļ,×18ɬR6+‡ŸbRuC-źQo²°„‚ęCn8h|IUX«Z5Ū`ł)ŁB_.±Š£ė\ėX…śŃ”{ØÕ°¦5E Ļ¢MBš¤ćÅN­uy.iŽģą«»“eksŲØ"±‘Ķn“1Ϛ_mĻź Ä®$ ‘@£—Ō”ŗ¾µėNY~YW?ęEĢI;čŪdž e¬9›Ü¦^Ži]ƒžķ*“X‰]ų…a؉V÷·\’ć~Äט‰ósn™8W›ČŠĄĆu6ŠĆ÷H¢øˆęGµX„B8I×5ņę0t„‹pą‰’d@5a$ Zōóö:R’Œ]x‹V(6—˜ŠX„Ø(…1˜„¦„B¤ŒrPé8Ž$ų‰eņ|Ę؈ęNXŠTp™>žØ„ˆūgūę–#cŠn…$xp’ó+!ˆ 鈐ųl燢—;ąčĮRŅń!§‚BTpd4žC36ƒ3F§ł÷A6åŽK( P1 .)4_@4F“?935s3:ō?ˆŲNC‚Dp*q€W–„ņV”0‰”f3*fą”&5AP5A©$’t`KUrƒh¹J@U003 o9W1gp%xŁA­3cšB„R×ŗ~¹R3Ÿ¤F·Ó§a–LõRā|T3@9ƒP}¦‚[…ZigĆ(D”i™Ž•™4¹™Œ Ž™‘ Y™— 9¤ŁtYudé˜AŠE Ńce P–Éną›ÆÉeąÓ‚ 0œQ¹™5„’ĘŁł·œG3 ć?§Y–Kå›Nŗóuphl°S' "Œąē›ĄYU7höD&ƒ›˜ĀIQ”O‰q ·qR—$¹¹ō”!'šbG—t&—†*÷ešd-‡g°Tąs*į_\](„ś=.¶ eŠ VŗA”WHRax” ś ŗD”æÓŒ"*6ĖX#š…ģ_ š”(ŗ”*Ź¢_¢QńAź(`X£jq£/–¢SĄ£. ¤::Y„ģؕś^ –S –EŠ”GŖ£pvš ?š„'š¢]”Ķh¢8š¢+ꔿó„5ŃeFŖ” ŗ¦w¦1§9Ś Iʦp¦pŖ„rŗ{Z§\“•@I6 Øy*Ø<ź¦a „÷(*‰i(F0–H¢™h†0°dx*d0÷AF_Ii(Ädm(N‚*RZ]I_™aIXˆ7«=Šw ÄBTĘndCx‘Y“ŠxR©1Mń" ™.į|¤”l†8O ½ŃE¢‡›vqĶØ"ppčGyda3ŗ!­€±Ÿ'ŠnŲz²/–R×7AVDPOž-±­ ²9‹÷9͘Šėęj*!y·sn€cHMźp€YTdR@Wš•E D (°g0€0@ÓĒ’ć­ ®ŌŹäź=4Dršr+±›&{‘ū+|%išGQg N„Tu&ūŚn}ögYµ™¦ŗ6(P0<ųŒ6«14F9HF@J–Ŗˆ‰Š /T€hŅD›:sč€x3fL˜9iŽø ƆMpä¤q£pĪ›6e –™3'Ģ™2.@€H¢įHtŠ„LĘ ™0rȀ`“FŒœy€(ēM:CfÜøEŠ” PP‘ b"H"–r4#Dš9 ä””hDƒaĘA¦Œ™¤:bÕJgˆ§BBŃČqćÆ`ÉH )ę¢ĆŠ~aR„B% ̇kŲ¦;†ŽEUß(<ó&qĢ¢uĪ adŠ‹¼/(±q ›:m±ŗpńĶ‹1ŗ@#buė×±EĢ®ż‚N8(yūvćvHį“mćn³»÷ź¶oŻ„œB…Č—'UØ@ Ʋ¼y1ń–MȶsŌ¦CēööAŠ“‰S§Q:p5Tj#`—BTaÄS$”Eē 0Ø'] ˆQ‡f”qDz„¤Bj @!EVA„)¤”_ąVG;$`!#€08„E‡‡`m¤avx߈%ž˜āŠ:ņx]_¼øE‚ 6ų`5®÷_€ }•a‘–”“Lb ˜$Š*BI&)uŌŽ_“1ĒY ä’Nfä·fI'ĮōŒ9Fdf*Pˆ&Ŗč¢Œ6źč£FśØ yŁh#—cXjćy”%é§ †*ź¢HŽ'I Ń›(Œ‘‚;ā¤ć 씚JėŃP±ʏf¹”™MöX™‡P%a'pįĘ Ż÷¢‘ģÕQf¦AGJHŖ„”/ĘhG+¬Š=Ģ*”WĖ¢®Œ”›.• :XD ¤}ĮĘu|1Ēh8E«Ji“;†¼Ģ:{¾łīŪļæ§@kŖŖĀØg¬qŖ é‚ū °¦œęµńÉ(Ošš‰h2 2æ"G\«Å¤½6Ēh1)ŗ‹`JkY‰śŲkpK"Įķ¾;®Bˆ‚¾bŃQ‡n ¼*pŹy† m|arčŚŲWœø¢Õ˜¢ēœ.˜ųÄ_8!…JéĀ€ö›jkķB _ ź„uߍuŽlAR1Åtc“s” ž5ŪC€ēa+=#VĻQ†M”IÕf&¤½öÆ«y¼+@1/T€ ‚&ĶfҰ)M7dœ“ęŒ›0lę°q§ą4 ĀČafN7å¼qó¦ĪĮ2vŹø”sš!™#Aœ‘YFF6y€D›2sL†„¢Ž8 K>¤BŒĖ4nĪqĔŠ3‚ó°*ƝY}Ņ)sSLtŠ0\’„ ”MĪYŪfģĻoä TŁ7.Ć5eņˆy#ņ&Š)IŽ$qB%ˆĄƒß–;–Ķ›1k@<Ž„‰”&)\ą‘ÄMH6lüĪA:v%•±aʤSēē[8%g¤óf¬\Š_(žAa™8ˆŁ ;¦łŽŹ1Z‘®&ėZ CåaŁrČ9ĢŽŸƒÅˆõ ƒ ȬdčVż™/Ö?3W=t5A†»ÉńŪXŃōŽLÅÅ_B įT†«u%_rė±”CpōdF`›1ŁN”ö\{•ŃY°Eß_¬”…jČ!\œŃe׈%žų“Š®”܅ęaUE—^`aķHća=e eøp† }8Ye**‡ßuŲ“u y™`kÉц’k…d_x7å‡]R<²ˆ‘Hm\˜”Ŗł$„qŽ|ł[Uo”ČF“³Ńńŝj2×eŽBšgkjXgŸ…FGIž·—HTa¶×pøÉäQrŌ‰_.=#Ÿ3n EULQ”&ʆŠNė…•\¢–ĮPfTwVļMäR†±u™kå” gąõ‚ąŽ€ÕlŌAC"øąĀ h¼0ĘJ{¹€† ˆ‹R¹ē‚īŗķŅ‘G†ņŅk/¹ę¢«.»īžä†×;.¾óė®f  ±¾·;f`?\0ĘÉFĒ÷~¼/Ā£ŅA2ĮłŠš®ńĪėpÉ-ŸįŁŹ‹Š†œ8› œOm4\ļ¹ eU4ŐiQD ČPƒ TUf˜Ń“zz0Ōgm9‘QĒĪ©šķDcÅŠOHQÄMŲŁz8’Ü å=ĶŚ`E@ĄÄ|ąƒ}@ą8A L‹Ģ,3ŽČĮ ((Ād\Ē„‹¢Q›ų!Õm¬ĆQš„%Ų1s}¬ Œ†·°„*TdKĀpØĆń]‘ˆ”iāyŠE-ŗ§^<¤Õ(Ā­…Ē5»Ćę@r圅K]W¬Mä DɊhŸĪmJ ›c$piŖ:ˆa6qØĆnĘ('­“‡+ˆbs9†=z%2_ˆŒ,3Įģ ŠRŒ$›ˆÉÜyó‰Q„ĆZH4Ńå¼b@€=ńEԓ懾@#ü±›ßLē-āCøš•9*Ev‚ä  -āēYO†į$hN Ļs‚S'#%Ŗ 4ŸM¤ęDƒˆGO.Ń#])%H8ĘĄŽW ä ‰Ó>€‹‚*( P‡JŌüOüėыų׿ȵØPjż¾…@2Ё+jы$TXV䌋`ƒ8¤ +ng½JQŠüVNiśFćk ·+ėYÓś¢Ūm„”źTœĻŚÓŸ¦OŖˆEģQ“Ź"U„©“{jb'[Ō&p T^”ĆU« ”'ŸĀŹ›0¢‘ēԁ:%!įŽ2“%„a% °ĆkŁąZx-å&sc`䐤‹“I“†Y bވ½ń\At®”āC)ch§‰ČJĢF˜mQ°+Lž$ylSŪ„&D+$wĆꚔ•;p$0kŲȦ”‹=Bä åu“ģę@»Ś“+ķYͦš™”ēx†HLį®ąą0‚Ąpæż}—ģŅ“*uå? 0‚į¼B"¾¬†“ߍąs”<Ä …U…8Ā[ŗ¶bP b\cÖ d4G€B P„Ōq®g0Hšžs›ÓReg׊šąpGå„a#j؈œ¦ˆVg}ę ŪČYļč”9 !0œ«Čģ¼Ģa÷ 0(cP„˜Ŗ"łāšm`É+Zķ n čĮ½EpˆńAąjIiЦ#Å A‘ ("\AP=$]įXŸ§²ĶF•·4‘ RØBŹl5łøįTį“ž3ß(ÕW–V–CNŪaÅ«{ĀbpĒ%3Ń HžĢ¦¼°.49‹¢YņGæ`Śžį 0ĢriõQŒbD²Oźlhƒ€ŃNLø-3S7Ā‘§wœņY½m)š• wōŅ‚‚.Yt°Llķģ³ A€Āwök{ [€±Ÿg5ė4—)|­XDā5Ā€ æŃtā²åt9¤Ŗ‰ķV'Ē=ī<«ķ„*>HĒ[’*Žę*°¶Ś>u,3ĄŠ ¢xu‚c-3X<āĪÉoj‡Ys½”"ó¢ āzÅ{Ź; ×$;9*aKų‚pÅ*Ø9”)(騐có:༬י5Nķ,!'4e0Hø ܚ"‹„ĖjV‘VLĆāŲp63OņœÄ\q({Žj ä+VW÷¹‘µsIŲ½ō8e$“]ĖM¦ėfĮ%å‡' S€S`Ƥųāęķ|Ŗā™;4  ó ŖžöĖ`.˜+FĄŒ–(śŪ^óQØBذæ©ū&0Ų)±c³3 * I9müܐ0Ääī"ū”SæÕ•Æ” æN>Ōšk^懋fD懦šuó§a+€2ü¹YŅu7ä·öī½Ęńė32Į7|–ńצ±FeętOłĒG‘įG–ajĘk™Cm`vKr/ –”÷”Gb6o>PFi`0uSv…œµWć—%U`iÓ¦+R€i ąSsen„dH¹cƒ@EY>(T‹…?Å¢‚…?‘…?˜„t@¬ć:°ƒUCˆWœu|Ź'fYf_dšu@X  <ĒWf™ón—Ń,)‡}²[׆-šEˆ£<^²0`h5ŅAIē€ē1°†6`ˆ³…›W>Zøeųc5gµ›óo@†ĻR`wŲ$“bˆ3AžõvŲ§,xLšoi  b‡åCņzß±bŌē×WCe°€GĪQ+W&ckٱvK€Ō&“,všˆŃo±)~Ä+m°į{ :2‘\ŽētP,5q4Äs&—a‚!2\ń!„1(ÄńŽ%W]1AV"ŁXdēįDI¦KÖdIō.NAŹˆŹĮe0soG¦PWTx&®ao`8_pfVdhž4kč÷Eż÷†‚QFg”FG°F’†ƒrätDƒš˜DMq(I#0‹œ×Š…Så7u x Ó~k7K1q'Ō1`Iö)žč5˜!}Ć”bć“•k±5‘‚s.āT  =rŅJM±nІ…=ŃJaTÉCńH¦µ'±"ajØ&q”Ē”x42Ģ2“X`#‘LH”y¢‘.P%qrņnÆTF0°x)_#8шeŁ”zזį5Į#dšüø9l”eTĮc9Ų‘×7]…‰Gx™vgõJš‘fI§²z¢Å_G˜:”²ČBR™?Ń”Ē}—l×D''[0Ć÷¹6_pF °^dl€Dp]“›×±œS€œK @ˆlŚXĢÖmÅNƒÕ¶‘!dX”Lęt‡·ók &j%'ѳ9P¹uL +!A”˜ˆ {p–+1–I‡8יG€č‡ 0•!÷‚E &SčI S9/<ą9ƒč©= Ÿŗ’€Yt|dtm z€R rŚłnmE[ŌD:jõ—EŚlƒćmą&nGP¢‘ž(Z9!–T‘^¶)ēā˜zOjmiö”#z—*š¤Ÿ±¤4š…zt£ó©¢ŗAj|”hDmR`P0U¤M“†Qj£j*ZR2GL (©7‹BtŠ hi,ią“]q\Ķųy‹ųx°9„UäŅ)d 5Y"Į[×§.A$ĆĮ«²5šįŽXS֒ˆf0µ4o _v‡©%…xr_šNKь‘*g𓁩w‡e*Į$‚tŖaØßr„ łGŠØŻt„ø‰Qźä¢Ļ֝£ź;¦jF:ž3Qže`N¼j¢gĄFډ¬ŠöNĖZŖN`N6X­5:„TŖ+ŠjBęYR Z¬Ė&N0…Iē*­V$.fĄ;Aą;Ą#<Ä£¦ya‰ŃƒØzSbP·ńüuƅJ_fvmQŠ=)yس«TĄ<æ¶…yåk tpї¹3ås>žź”ųˆkjõ')'e›HžųŖ€¦Ćt ą%r’ūijgE™“ŠųŠĮ-M[·BmńhĆ'_ž"ei!A)cĄ˜wö¤2>±‚ß7)Ą³_wp) JI‰ ˜w¬™‰įc-Cŗ” y|i1wF”9+”g«W†”zBŁ7±ņÄRV#“¢(MR†Š™xū4=fĄŸ§–j³ Lg(­ÜmßImĪŗ‘Ų&šū¢Ż£“1£)`jŽ¢jž¶ž*:Ž“†Ł”iF€…XS C€……>A„„Ā[?÷ƒ?:{üs„4¼Ģk@TuYWu¼ś±dUؒrvä(d[³d’ާd;ӞÕA 3±5¬Ęe؊·ßā†V()q•ČĪQ†(‡1°‡–$‰/Š{—²Æˆ˜ćįvwU‰l‹²aq^źK”¤2«aøœŹxŃ7R6wp•L‘tn06Žįy9”¾pąrq¶‘ čŪ§'ĄŠ4·ćaø“Ā~į\¹rī…œšĮ• +/ĒW)‚x4I“IŽ,ųSīX™>Äl†sG²%©-“Ń^ÉĮdūŲQŅ÷¤S ØŁRīŹm¤Ė¹ął¹”Sn5%¾˘q÷˜Ģ嘝wrŽ[’˜t’œ”’¹f4xORń *Ö)s+ęe-Į{C/‡³¼$ķōNåÄpa>üu“!HŲ(qe³«zń'‡–`[ c˱źų~iTŒ–8•©œ*-Ą€Gœ¹‚_ Y;SŠ®(ą˜Œŗ<»:g°DŠ.p¶³n°­ŒĘ<%¬%•³$’Wa›odŪ±rā— ĢŁśA«œ:外§5'sąA±ńŸ»źS]aƒ.é…ܰˆ \‰ÜĮ•6ÄĄ‹|aahDssD¢°+q¹©=ō&gFFet+¹fÕi‚^ŌkŚ©Ÿs÷gb×ė³pŲtYŌÅL¼–!6 åC³”B×x2ŌNUԁ=¼–•ŌX5×MMl`IB Ō…I$Łń›¾Ń£SńØ$Qז“ÖYń‡g=ˆńeī%8nšf½WĶ\“õŽŃ'ŌĆź¬üKšįš»x^±"ŒYÕŌĶ‘,®X ½Ŗ- I‹É©M1d ` bw›²ŖcŲ,©Š-¬™2³ 1ŻiĄ*D–żcHD¹‚`Üʶ£Ēüž’!æ¦+TšĖ:p·ćCĄŗ–uĮ9œ_ŚD˜}I÷[V÷TĄ@KĄ~‹¦ˆgÖĒ& Õ4•}YR7liWlĒ|¬ÜÉMŌ­¦*¾ę(mJŖ¦ K°•qEį¼)ŁĘ,EŚjPÜ:āĢś­™ā~ŖÜ«1'×cK 1ØĒņ)Etwł![łņæ a„sŻ©µ!;ķt僙(ßū½ĒVŚDĻ n0( –BOr įO0œICƒ#qŽ_~B÷'ŹFqßŗĀ6N@SšLPF@{ƒm®^o~­~ ¼‹-ŲÅūÓÆ+ˆŻ’učJŲؘ…U",³įŌ^uARméeĄĘč+LwIĘŗ¤Ėį^…+ŗB ž©®±“ōÉ]§ŗ›V¹žv¦ģyƒ5•ƒæŪƒ鉞^;EŌĖŪė?ȄĒó„ĮŽéłv^Øń;‡ Q†Ü¼æ]ņŪwfa_®X|*ĶČĶņB(‡ÓFūAvBćŊZ­#°!ĮŸ.BøŻž&5}7ĮŻ P‘ 6Pš²øČEÉ®^MO nƒ•WĄ:°#ļ™7dtpÅń55FX)§$ā]–r`ļQˆGAlĪēu“ėžb­Žź»‚NK-Ü,$_ŲF0,ĄŠÅLÜń—·łšDPL1ńĆWødq_Z oō7±)‹‚D dŚ{ŽŻ{dr¾VœS¹ l+®ĘFøm§¶É¶e˜īHĖīŲš ^’ȳĖöā0•šD`‚0%÷dœ¬0eŗćfM} Ķą<ŗ|’Nvæźu«vKŹŗhשż¾%Rš±g^Ą j«Ī+Åv @ĄA~öx”ö‰©īI‹Ż3’ö÷-ŗ¹ 0ó§‹÷cģā¬ļ÷3 ųÖ¹śeüN®nˆļ°ŗūGĄų»źųł±ž>ł”SłLpł3hNš?øsƊÓ;æ<Ćsļüžœmō!1°+=kL²”y^јpĢ$ęc-²X,įzpŸE‹Õõ2²fĄłP€ī[łTĮņ„æØēķŠ!·óīΧ4EAö°°”)Ö ó@UĄ $<)£(_Lc)ĻO§6cGY›H)>¤Ńõ‡bĒ' ²sB»ā®’¶d°W(GC†{™RVMŲQųŹˆF|t1ęwĀd_ø­«4~FjÖ¤=œĮ ¹ bęBŸĄ»I”®+ČĄt”2žĆ@Āaé š;‚Ń®† fIci4"0öŹŪ{fʧjɁ e€ņ90NŒäE±”[“ąń '$ l 6äsŁ ńi½u„Ā×óGĘA$¤‹p¶ĄŲ#{åQā ń䀋8!ę31‹~ …É8sąĄŠQvĶh j€ĢfT9$@’ņ …üĻ‚,H8ŹĀ4h6䓘µąPźcQŚ©1•‹•œF]‚",‚>ĄŽÕ ‘Ÿųaƒ1-s“ŖŖ`BźJ™Š¹†·Šų&ĶJé …šć8‘ųõŽĄ` žNÖŖpvĘ+Yiā°ŵ&RĻ!]KŒ–,7“`ÓŖeˆ š%fŠtįę– ^,Ų`Ńaŗh‚& Y…ČÕśbeˆńäiCNhmŅBš…¶éė…ƧmȈxā—®Æq“ÜlĆmĄ ¹Ńc̉2T…ĢŠZ@h²¤”ß©†w§¼@%sčŹbÜJ6č'š=æĮ7ź(ڧą ĮŌ5£źĄEęŠ0%ÆGµ˜ŚV;LÄ6&³č'ØÖb `Ė-48ėžtÄN7Łd—C *[5ĘX…ŗF"Ņ{RD˜­ÄhĄ J‰ßl1†+«įĢa~/©".ø¦2wŌc1’éO3Ņ裌Ąl`1į č"œe“ ½ybs)Ų-¬aNĪ…½»?xšZÕĮ‰hN¼ųŁH;ąüt‘‡¤+"R||?+ 7…ūŠĄ4s CI6.a¶Ņ@‹3_ą‰”¤ü†ą˜H}ŽZUžčū!€Åp@¾Ąy “Y3Źc ė8Héē,cę`ȑF,GP$^ i K¦£Ilœ•¤Cƒ]“«7śFŖŠDšĄd]a2¦§ńĶ@Oų"äA¾ 86ȁŃ2Wi#”ą$t ’a).ķĮ|C­Œ¤æf5j›07B5 !\2š]©#™CWO“]$š «ēńYc‘gŽPMśüQV@9]²š¼²>H­ö$;«Aō$#X”’rWa3܋ m鄿ųł®”v¼…‘äu :©m2_žlg,…SŖDŸ/T€ ‚&ĶfҰ)bĢ7t¤qs†Å,QgN2 č¼Ń& sņĢ”S¦MĆ0lŲ€pS§˜2r>ņ¢弩Cgb™ŠhĀŠ§™7r\Zlé⧊ Œ˜8†M2 EøpńĶ ‡éø@#B+WÆ`Aˆ%k–Nž¦kŪnuÓõkX“+ófQĒ X3 Š`”RDŠ­‡&^Üų±[¾pƎ-{&7rļķWÄ6oDæõ+· ”cTcf-N9aŚVDƒcŹÄ ć¦ĢЃWŒI*§!Ō2_Üä.³„ ˆ öˆp(§Œˆ>;ōNøQz†w.vw¾>MÉ3GAÜfųś ™:ĮA&ßję0ˆ T!E_LAo*XĀŻ)5Ńģ1D^|@†Aahō ”Gpp,õTsS$qDU$A…|†PāIé¦N/(1q ›:dŠpįāš)ŅqFÄśöļÅĀ|õŻW’ZüłĒžīĮ'}öį‡šr$ųƒ>X ~Yø`ƒav‹y ƒBxßl}™ˆ!Š"ä7›‹ ŹwĘU4f8`p 4†… @!EVAE `4ĒĶ1¤×Jαƒzõ`å•Xf©å–\véå—]ę„Sd&€V/•IęTlŠ©˜pĘ)ēœYŖUĮDC Ž™Y‘‚a`ō…u˜Į‚`‡&ŗhČ­‘‚c· „ŠØ;”PZoµÖQF-ÅP¦ 9¶E`QÄ/į”ŽlŹ‹į©0G£œ’łé¦fŒŗŚvd„źĘܝTuČܱ‚Et+µęšQIFŚ©ÆIń…IP±č߆»(kX”K…¬ ģ”Ą§C$5ʤ V†W`™Śp11Yf½äĀTR,Ū¬XE1ÄELkE8ńDÄė~uTRc•µ¤ThõųFAb$šTI€EŅP-tĘuoØ%RJ)ä/tŹ2ėlSÉ B|sŒEUˆžzS=u†Aom‡­d,:GAfŠ1åTŲ¶ńF|Sc‡GŅbe—Ł”7šé._3SĄÅ&ķPū±K5X(€€Ó ōš°ĖƒZÆ‹ĀB š‚ß5ŒB ^æ‘BÖĻėÜM3ŗ)ą‚ž[pc   Z!„ku2“!Ā¢įDM,N“Ų=į&ķ‘S9/d櫖Gc„4²a[- Ż»nŚ‚³Ay5C&€ÄTdEŒĆ éōZ Bŗą®kBóĀ3‚ŻĻKQÄU0„€»›€{ol¹ź ĮgzŖyæü)ŒaSčž÷?*½‰N Ø@ݤ¦¹Ō„eyP›¦ā&:ō”`žōÄ'?%© tŃ å0†/xl ,˜G7S†38m¤vHw–¼²€ ÉۈIYȔ®T&˜¶DŚŃn+™±H³Ź’™…];©Lś)”r”!2ÅDt0Eį\Ūqš®-ž~Į¦L jJž ›2ė:a ž²$¹¹G8k8Ȱ@!ä©f„i }ź)š,<=*š°„W’ž!¬;cÉ­J*U:PU\ øźĆ²Ź.®"«°`ķkb™iÖ: U­l= Ž:/¹²¦®wŻźC…S–  XɖLŅZђ6®Üj MAX_PATH #define MM_STACK_BYTES MAX_ISTACK_BYTES + ZEROBUF_SIZE + 384 #else #define MM_STACK_BYTES MAX_ISTACK_BYTES + MAX_PATH + 384 #endif #endif #ifdef ATARI_ST #define MM_STACK_BYTES MAX_ISTACK_BYTES + ZEROBUF_SIZE + 2048 #endif #define NO_MEM (phys_clicks)0 /* returned by alloc_mem() with mem is up */ #ifdef i8088 #define PAGE_SIZE 16 /* how many bytes in a page */ #define MAX_PAGES 4096 /* how many pages in the virtual addr space */ #endif #define HDR_SIZE 32 /* # bytes in the exec file header */ #define printf printk /* Global variables. */ EXTERN struct mproc *mp; /* ptr to 'mproc' slot of current process */ EXTERN int dont_reply; /* normally 0; set to 1 to inhibit reply */ EXTERN int procs_in_use; /* how many processes are marked as IN_USE */ /* The parameters of the call are kept here. */ EXTERN message mm_in; /* the incoming message itself is kept here. */ EXTERN message mm_out; /* the reply message is built up here. */ EXTERN int who; /* caller's proc number */ EXTERN int mm_call; /* system call number */ /* The following variables are used for returning results to the caller. */ EXTERN int err_code; /* temporary storage for error number */ EXTERN int result2; /* secondary result */ EXTERN char *res_ptr; /* result, if pointer */ EXTERN char mm_stack[MM_STACK_BYTES]; /* MM's stack */ # On a PC, cpp and cem are in /lib and will be removed to make space while # linking the kernel. On an AT, they are in /usr/lib are are not removed. # This is because they have to be in /lib on a PC; the diskette is too small # for them to be in /usr/lib. # h=../h l=/usr/lib CFLAGS = -Di8088 -F -T. obj = main.s forkexit.s break.s exec.s signal.s getset.s \ alloc.s utility.s table.s putc.s mm: makefile $l/head.s $(obj) $l/libc.a $l/end.s @echo "Start linking MM." @echo "If disk fills up, remove some files" @asld -o mm -T. $l/head.s $(obj) $l/libc.a $l/end.s @echo "MM done. " clean: rm -f $(obj) alloc.s: const.h $h/const.h $h/type.h break.s: const.h $h/const.h $h/type.h break.s: $h/error.h break.s: $h/signal.h break.s: glo.h break.s: mproc.h break.s: param.h exec.s: const.h $h/const.h $h/type.h exec.s: $h/callnr.h exec.s: $h/error.h exec.s: $h/stat.h exec.s: glo.h exec.s: mproc.h exec.s: param.h forkexit.s: const.h $h/const.h $h/type.h forkexit.s: $h/callnr.h forkexit.s: $h/error.h forkexit.s: glo.h forkexit.s: mproc.h forkexit.s: param.h getset.s: const.h $h/const.h $h/type.h getset.s: $h/callnr.h getset.s: $h/error.h getset.s: glo.h getset.s: mproc.h getset.s: param.h main.s: const.h $h/const.h $h/type.h main.s: $h/callnr.h main.s: $h/com.h main.s: $h/error.h main.s: glo.h main.s: mproc.h main.s: param.h putc.s: $h/const.h $h/type.h putc.s: $h/com.h signal.s: const.h $h/const.h $h/type.h signal.s: $h/callnr.h signal.s: $h/com.h signal.s: $h/error.h signal.s: $h/signal.h signal.s: $h/stat.h signal.s: glo.h signal.s: mproc.h signal.s: param.h table.s: const.h $h/const.h $h/type.h table.s: $h/callnr.h table.s: glo.h table.s: mproc.h table.s: param.h utility.s: const.h $h/const.h $h/type.h utility.s: $h/callnr.h utility.s: $h/com.h utility.s: $h/error.h utility.s: $h/stat.h utility.s: glo.h utility.s: mproc.h /* This table has one slot per process. It contains all the memory management * information for each process. Among other things, it defines the text, data * and stack segments, uids and gids, and various flags. The kernel and file * systems have tables that are also indexed by process, with the contents * of corresponding slots referring to the same process in all three. */ EXTERN struct mproc { struct mem_map mp_seg[NR_SEGS]; /* points to text, data, stack */ char mp_exitstatus; /* storage for status when process exits */ char mp_sigstatus; /* storage for signal # for killed processes */ int mp_pid; /* process id */ int mp_parent; /* index of parent process */ int mp_procgrp; /* process group (used for signals) */ /* Real and effective uids and gids. */ uid mp_realuid; /* process' real uid */ uid mp_effuid; /* process' effective uid */ gid mp_realgid; /* process' real gid */ gid mp_effgid; /* process' effective gid */ /* Bit maps for signals. */ unshort mp_ignore; /* 1 means ignore the signal, 0 means don't */ unshort mp_catch; /* 1 means catch the signal, 0 means don't */ int (*mp_func)(); /* all signals vectored to a single user fcn */ unsigned mp_flags; /* flag bits */ } mproc[NR_PROCS]; /* Flag values */ #define IN_USE 001 /* set when 'mproc' slot in use */ #define WAITING 002 /* set by WAIT system call */ #define HANGING 004 /* set by EXIT system call */ #define PAUSED 010 /* set by PAUSE system call */ #define ALARM_ON 020 /* set when SIGALRM timer started */ #define SEPARATE 040 /* set if file is separate I & D space */ /* The following names are synonyms for the variables in the input message. */ #define addr mm_in.m1_p1 #define exec_name mm_in.m1_p1 #define exec_len mm_in.m1_i1 #define func mm_in.m6_f1 #define grpid (gid) mm_in.m1_i1 #define kill_sig mm_in.m1_i2 #define namelen mm_in.m1_i1 #define pid mm_in.m1_i1 #define seconds mm_in.m1_i1 #define sig mm_in.m6_i1 #define stack_bytes mm_in.m1_i2 #define stack_ptr mm_in.m1_p2 #define status mm_in.m1_i1 #define usr_id (uid) mm_in.m1_i1 /* The following names are synonyms for the variables in the output message. */ #define reply_type mm_out.m_type #define reply_i1 mm_out.m2_i1 #define reply_p1 mm_out.m2_p1 # On a PC, cpp and cem are in /lib and will be removed to make space while # linking the kernel. On an AT, they are in /usr/lib are are not removed. # This is because they have to be in /lib on a PC; the diskette is too small # for them to be in /usr/lib. # h=../h l=/usr/lib CFLAGS = -Di8088 -F -T. obj = main.s forkexit.s break.s exec.s signal.s getset.s \ alloc.s utility.s table.s putc.s mm: makefile $l/head.s $(obj) $l/libc.a $l/end.s @echo "Start linking MM." @echo "If disk fills up, remove some files" @asld -o mm -T. $l/head.s $(obj) $l/libc.a $l/end.s @mv /mm mm @echo "MM done. " clean: rm -f $(obj) alloc.s: const.h $h/const.h $h/type.h break.s: const.h $h/const.h $h/type.h break.s: $h/error.h break.s: $h/signal.h break.s: glo.h break.s: mproc.h break.s: param.h exec.s: const.h $h/const.h $h/type.h exec.s: $h/callnr.h exec.s: $h/error.h exec.s: $h/stat.h exec.s: glo.h exec.s: mproc.h exec.s: param.h forkexit.s: const.h $h/const.h $h/type.h forkexit.s: $h/callnr.h forkexit.s: $h/error.h forkexit.s: glo.h forkexit.s: mproc.h forkexit.s: param.h getset.s: const.h $h/const.h $h/type.h getset.s: $h/callnr.h getset.s: $h/error.h getset.s: glo.h getset.s: mproc.h getset.s: param.h main.s: const.h $h/const.h $h/type.h main.s: $h/callnr.h main.s: $h/com.h main.s: $h/error.h main.s: glo.h main.s: mproc.h main.s: param.h putc.s: $h/const.h $h/type.h putc.s: $h/com.h signal.s: const.h $h/const.h $h/type.h signal.s: $h/callnr.h signal.s: $h/com.h signal.s: $h/error.h signal.s: $h/signal.h signal.s: $h/stat.h signal.s: glo.h signal.s: mproc.h signal.s: param.h table.s: const.h $h/const.h $h/type.h table.s: $h/callnr.h table.s: glo.h table.s: mproc.h table.s: param.h utility.s: const.h $h/const.h $h/type.h utility.s: $h/callnr.h utility.s: $h/com.h utility.s: $h/error.h utility.s: $h/stat.h utility.s: glo.h utility.s: mproc.h /* If there were any type definitions local to the Memory Manager, they would * be here. This file is included only for symmetry with the kernel and File * System, which do have some local type definitions. */ #include "../h/type.h" öööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö