ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3g3@s>dZddlZddlZddlZddlZddlZddlZddlZddlZddl Zddl Zddl Z ddl Z ddl mZz ddlZWneydZYn0gdZejdZGdddZGdd d eZGd d d eZGd d d eZGdddeZGdddeZGdddeZGdddeZGdddejjZGdddeZGdddeZGdddeZ GdddeZ!Gd d!d!eZ"Gd"d#d#eZ#Gd$d%d%Z$Gd&d'd'e$Z%d?d)d*Z&d+d,Z'd-d.Z(d/d0Z)d1d2Z*d3d4Z+Gd5d6d6e,Z-Gd7d8d8e-Z.Gd9d:d:e-Z/Gd;d<dd>e-Z1dS)@zDRead/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes.N) GenericAlias)MailboxMaildirmboxMHBabylMMDFMessageMaildirMessage mboxMessage MHMessage BabylMessage MMDFMessageErrorNoSuchMailboxError NotEmptyErrorExternalClashError FormatErrorasciic@seZdZdZdCddZddZdd Zd d Zd d ZddZ dDddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/ZdEd0d1Zd2d3ZdFd4d5Zd6d7Zd8d9Zd:d;Zdd?Z!d@Z"dGdAdBZ#e$e%Z&dS)Hrz*A group of messages in a particular place.NTcCs tjtj||_||_dS)zInitialize a Mailbox instance.N)ospathabspath expanduser_path_factoryselfrfactorycreater&/opt/python39/lib/python3.9/mailbox.py__init__%szMailbox.__init__cCs tddS)$Add message and return assigned key.&Method must be implemented by subclassNNotImplementedErrorrmessagerrr add*sz Mailbox.addcCs tddS)=Remove the keyed message; raise KeyError if it doesn't exist.r#Nr$rkeyrrr remove.szMailbox.removecCs||dSN)r,r*rrr __delitem__2szMailbox.__delitem__cCs&z||Wnty Yn0dSz'If the keyed message exists, remove it.N)r,KeyErrorr*rrr discard5s zMailbox.discardcCs tddS)>Replace the keyed message; raise KeyError if it doesn't exist.r#Nr$rr+r'rrr __setitem__<szMailbox.__setitem__cCs(z ||WSty"|YS0dS)z9Return the keyed message, or default if it doesn't exist.N) __getitem__r0)rr+defaultrrr get@s  z Mailbox.getcCsN|js||St||}||WdS1s@0YdS)z=Return the keyed message; raise KeyError if it doesn't exist.N)r get_message contextlibclosingget_file)rr+filerrr r5Gs zMailbox.__getitem__cCs tddS)4Return a Message representation or raise a KeyError.r#Nr$r*rrr r8OszMailbox.get_messagecCst||S)zReturn a string representation or raise a KeyError. Uses email.message.Message to create a 7bit clean string representation of the message.emailmessage_from_bytes get_bytesZ as_stringr*rrr get_stringSszMailbox.get_stringcCs tddS)z8Return a byte string representation or raise a KeyError.r#Nr$r*rrr rAZszMailbox.get_bytescCs tddS)6Return a file-like representation or raise a KeyError.r#Nr$r*rrr r;^szMailbox.get_filecCs tddS)Return an iterator over keys.r#Nr$rrrr iterkeysbszMailbox.iterkeyscCs t|S)zReturn a list of keys.)listrFrErrr keysfsz Mailbox.keysc cs<|D].}z ||}Wnty.YqYn0|VqdS)z%Return an iterator over all messages.NrFr0rr+valuerrr itervaluesjs     zMailbox.itervaluescCs|Sr-)rLrErrr __iter__sszMailbox.__iter__cCs t|S)z,Return a list of messages. Memory intensive.)rGrLrErrr valuesvszMailbox.valuesc cs@|D]2}z ||}Wnty.YqYn0||fVqdS)z.Return an iterator over (key, message) tuples.NrIrJrrr iteritemszs     zMailbox.iteritemscCs t|S)z9Return a list of (key, message) tuples. Memory intensive.)rGrOrErrr itemssz Mailbox.itemscCs tddS)9Return True if the keyed message exists, False otherwise.r#Nr$r*rrr __contains__szMailbox.__contains__cCs tddS)*Return a count of messages in the mailbox.r#Nr$rErrr __len__szMailbox.__len__cCs|D]}||qdS)zDelete all messages.N)rHr1r*rrr clears z Mailbox.clearcCs2z ||}Wnty"|YS0|||S)z3Delete the keyed message and return it, or default.)r0r1)rr+r6resultrrr pops     z Mailbox.popcCs*|D]}|||fStddS)z6Delete an arbitrary (key, message) pair and return it.zNo messages in mailboxN)rFrWr0r*rrr popitems zMailbox.popitemc Csrt|dr|}nt|dr(|}n|}d}|D],\}}z |||<Wq4ty^d}Yq40q4|rntddS)z4Change the messages that correspond to certain keys.rOrPFTzNo message with key(s)N)hasattrrOrPr0)rargsourceZbad_keyr+r'rrr updates        zMailbox.updatecCs tddS)&Write any pending changes to the disk.r#Nr$rErrr flushsz Mailbox.flushcCs tddS)Lock the mailbox.r#Nr$rErrr locksz Mailbox.lockcCs tddS)#Unlock the mailbox if it is locked.r#Nr$rErrr unlockszMailbox.unlockcCs tddS)Flush and close the mailbox.r#Nr$rErrr closesz Mailbox.closecCs,z |dWSty&tdYn0dS)Nrz?String input must be ASCII-only; use bytes or a Message instead)encode UnicodeError ValueErrorr&rrr _string_to_bytess  zMailbox._string_to_bytesFc Cst|tjjrvt}tj||d}||| d| }| dt }| ||jrr|t sr| t nt|tttjfrt|tjrtdtd|}t|tr||}|r| dd}| dt }| ||jr|t s| t nt|drt|dr2td td|j}d }|}|d r\|d d d}n|d rx|d dd}|sq|r|drd|dd }| dt }| ||}q6|jr|r|t s| t ntdt|d S)z%Dump message contents to target file.r 8Use of StringIO input is deprecated, use BytesIO insteads From s >From readbufferDUse of text mode files is deprecated, use a binary mode file insteadN  From s>From Invalid message type: %s) isinstancer?r'r ioBytesIO generatorBytesGeneratorflattenseekrlreplacelinesepwrite_append_newlineendswithstrbytesStringIOwarningswarnDeprecationWarninggetvaluerhrYrmreadline startswith TypeErrortype) rr'targetZ mangle_from_rmgendataZlastlinelinerrr _dump_messages\                  zMailbox._dump_message)NT)N)N)N)F)'__name__ __module__ __qualname____doc__r!r(r,r.r1r4r7r5r8rBrAr;rFrHrLrMrNrOrPrRrTrUrWrXr\r^r`rbrdrhrr classmethodr__class_getitem__rrrr r"sD        6rc@seZdZdZdZd6ddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-Zd.d/Zd0d1Zd2d3Zd4d5ZdS)7rzA qmail-style Maildir mailbox.:NTcCst||||tj|jdtj|jdtj|jdd|_tj|js|rt|jd|j D]}t|dqln t |ji|_ ddd|_ d|_ d|_d S) zInitialize a Maildir instance.tmpnewcur)rrrr)rrg?N)rr!rrjoinr_pathsexistsmkdirrNr_toc _toc_mtimes _last_read _skewfactor)rdirnamerrrrrr r!s  zMaildir.__init__c Cs||}z|||Wn(ty@|t|jYn0t|t|t rz| }|j | }||j krd}nd}d}tj |j|j d}tj |j|||}t|t rt|jtj |j|fzJzt|j|Wn&ttfyt|j|Yn0t|jWnPtyv}z6t|j|jtjkr`td|nWYd}~n d}~00|S)r"rrz$Name clash with existing message: %sN) _create_tmpr BaseExceptionrdrr,name _sync_closervr get_subdircolonget_inforbasenamesplitrrutimegetatimeget_datelinkAttributeErrorPermissionErrorrenameOSErrorerrnoEEXISTr)rr'Ztmp_filesubdirsuffixuniqdesterrr r($sF      z Maildir.addcCs ttj|j||dSr)N)rr,rrr_lookupr*rrr r,NszMaildir.removec Cs*z||Wnttfy$Yn0dSr/)r,r0FileNotFoundErrorr*rrr r1RszMaildir.discardc Cs||}||}||}t|tr.|}n|}tj|}|j|vr`|j||jd}nd}| |tj |j |} tj |j |||} t|trt | tj | |ft| | dS)r2rrrN)rr(rvr rrrrrr1rrrrrr) rr+r'Z old_subpathZtemp_keyZ temp_subpathZdominant_subpathrrZtmp_pathnew_pathrrr r4Zs$        zMaildir.__setitem__cCs||}ttj|j|d*}|jr4||}nt|}Wdn1sP0Ytj|\}}| ||j |vr| ||j d| tj tj|j||S)r=rbNrr)ropenrrrrrr r set_subdirrset_infoset_dategetmtime)rr+subpathfmsgrrrrr r8us  &  zMaildir.get_messagecCsPttj|j||d }|tdWdS1sB0YdS)2Return a bytes representation or raise a KeyError.rriN) rrrrrrrlr}r~rr+rrrr rAszMaildir.get_bytescCs$ttj|j||d}t|S)rCr)rrrrrr _ProxyFilerrrr r;szMaildir.get_filec csD||jD]0}z||Wnty6YqYn0|VqdSrDN)_refreshrrr0r*rrr rFs   zMaildir.iterkeyscCs|||jvSrQ)rrr*rrr rRszMaildir.__contains__cCs|t|jSrS)rlenrrErrr rTszMaildir.__len__cCsdS)"Write any pending changes to disk.NrrErrr r^sz Maildir.flushcCsdS)r_NrrErrr r`sz Maildir.lockcCsdS)raNrrErrr rbszMaildir.unlockcCsdSrcNrrErrr rdsz Maildir.closecCs\g}t|jD]F}t|dkr|ddkrtjtj|j|r||ddq|S)Return a list of folder names.r.N)rlistdirrrrisdirrappendrrVentryrrr list_foldersszMaildir.list_folderscCs ttj|jd||jddS)z/Return a Maildir instance for the named folder.rFrr)rrrrrrrfolderrrr get_folderszMaildir.get_foldercCs\tj|jd|}t||jd}tj|d}tj|sXtt|tj tj Bd|S)z>Create a folder and return a Maildir instance representing it.rrZ maildirfolder) rrrrrrrrdrO_CREATO_WRONLY)rrrrVZmaildirfolder_pathrrr add_folders zMaildir.add_foldercCstj|jd|}ttj|dttj|dD](}t|dksX|ddkr)rr+from_rrr rBs  z_mboxMMDF.get_stringcCsJ||\}}|j||s(|j|j||j}|tdS)r2ri)rr r|rrlrr}r~)rr+r4rr r1rrr rAs   z_mboxMMDF.get_bytescCs<||\}}|j||s(|jt|j|j|S)rC)rr r|r _PartialFiler)rr+r4rr rrr r;!s   z_mboxMMDF.get_filecCs d}t|tr||}t|trf|drf|d}|dkr\|d|}||dd}q|}d}nJt|tr|d}d|}n(t|t j j r| }|dur|d}|durdt t }|j}|j|t|||j|j|j}||fS) z1Format a message and blindly write to self._file.Nrsrirrrr,rsFrom MAILER-DAEMON )rvrrhrrfind_mboxMMDFMessageget_fromrer?r'r get_unixfromrasctimegmtimer rrr~r _mangle_from_)rr'r0newlineZauthorrr rrr r()s0         z_mboxMMDF._install_messageN)F)F)F) rrrrr<r8rBrAr;r(rrrr r+s  r+c@s2eZdZdZdZdZd ddZddZdd ZdS) rzA classic mbox mailbox.TNcCst|_t||||dS)zInitialize an mbox mailbox.N)r r-r+r!rrrr r!Osz mbox.__init__cCs|tdSr%rr~r#rrr rTszmbox._post_message_hookcCsgg}}d}|jd|j}|j}|drzt|t|krj|r`||ttn ||||d}q|s|r||ttq||qq|tkrd}qd}qtt t |||_ t|j |_ |j|_ dS)0Generate key-to-(start, stop) table of contents.FrrsTN)r r|rrrrrr~dict enumerateziprr r)rstartsstopsZlast_was_emptyline_posrrrr r'Xs.         zmbox._generate_toc)NT) rrrrr<rr!rr'rrrr rFs  rc@s2eZdZdZd ddZddZdd Zd d ZdS) rzAn MMDF mailbox.NTcCst|_t||||dS)zInitialize an MMDF mailbox.N)rr-r+r!rrrr r!}sz MMDF.__init__cCs|dtdS)r$Nr>r#rrr rszMMDF._pre_message_hookcCs|tdtdS)r&rFNr>r#rrr rszMMDF._post_message_hookcCsgg}}|jdd}|}|j}|j}|dtr|||}|j}|j}|dtkr||ttqqJ|sJ||qqJq|sqqtt t |||_ t|j |_ |jdd|j|_ dS)r?rrFrN)r r|rrrr~rrr@rArBrr r)rrCrDnext_posrErrrr r's.          zMMDF._generate_toc)NT)rrrrr!rrr'rrrr rzs  rc@seZdZdZd0ddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/ZdS)1rzAn MH mailbox.NTcCstt||||tj|jsj|r`t|jdtttj |jdtj tj Btj Bdn t |jd|_dS)zInitialize an MH instance.r .mh_sequencesiFN)rr!rrrrrrdrrrO_EXCLrrr rrrr r!s z MH.__init__cCs|}t|dkrd}n t|d}tj|jt|}t|}d}z|j rVt |zrz| ||Wn8t y|j rt |t|d}t|Yn0t|tr|||W|j rt |n|j rt |0W|st|n|st|0|S)r"rrFT)rHrmaxrrrrrrr rrrrrr,rvr _dump_sequences)rr'rHZnew_keyrrclosedrrr r(s>         zMH.addc Csztj|jt|}zt|d}Wn@tyb}z(|jtjkrLt d|nWYd}~nd}~00| t |dS)r)rrN) rrrrrrrrrr0rdr,)rr+rrrrrr r,s z MH.removec Cstj|jt|}zt|d}Wn@tyb}z(|jtjkrLt d|nWYd}~n d}~00zz|j rtt |zNt t|tj tjB|||t|tr|||W|j rt|n|j rt|0Wt|n t|0dS)r2rrN)rrrrrrrrrr0r rrdrO_TRUNCrrvr rKrr)rr+r'rrrrrr r4s(     zMH.__setitem__c Cs z@|jr$ttj|jt|d}nttj|jt|d}Wn@ty}z(|jtj krjt d|nWYd}~n d}~00|J|jrt |zt |}W|jrt |n|jrt |0Wdn1s0Y|D]\}}||vr||q|S)r=rrrN)r rrrrrrrrrr0rr r get_sequencesrP add_sequence)rr+rrrrkey_listrrr r8s*   ( zMH.get_messagec Csz@|jr$ttj|jt|d}nttj|jt|d}Wn@ty}z(|jtj krjt d|nWYd}~n d}~00|`|jrt |z0| tdW|jrt|WdSn|jrt|0Wdn1s0YdS)rrrrNri)r rrrrrrrrrr0rrlr}r~rrr+rrrrr rAs( z MH.get_bytesc Cshzttj|jt|d}Wn@ty^}z(|jtjkrHt d|nWYd}~n d}~00t |S)rCrrN) rrrrrrrrrr0rrQrrr r;,s z MH.get_filecCsttddt|jDS)rDcss|]}|rt|VqdSr-)isdigitr).0rrrr 9szMH.iterkeys..)iterrrrrrErrr rF7sz MH.iterkeyscCstjtj|jt|Sr)rrrrrrr*rrr rR<szMH.__contains__cCstt|Sr)rrGrFrErrr rT@sz MH.__len__cCs2|js.ttj|jdd|_t|jd|_dS)r_rHrTN)r rrrrrr rrErrr r`Ds zMH.lockcCs(|jr$t|jt|j|`d|_dSr)r rr rrErrr rbKs   z MH.unlockcCsdS)r]NrrErrr r^SszMH.flushcCs|jr|dSr)r rbrErrr rdWszMH.closecCs<g}t|jD]&}tjtj|j|r||q|S)r)rrrrrrrrrrr r\s  zMH.list_folderscCsttj|j||jddS)z+Return an MH instance for the named folder.Frrrrrrrrrrr rdsz MH.get_foldercCsttj|j||jdS)z:Create a folder and return an MH instance representing it.rrVrrrr risz MH.add_foldercCs`tj|j|}t|}|dgkr:ttj|dn|gkrDntd|jt|dS)rrHzFolder not empty: %sN)rrrrrr,rr)rrrentriesrrr rns  zMH.remove_folderc si}ttj|jdddd}t||D]}z|d\}}t}|D]H}|rn| t |qRdd|dD\}} | t || d qRfd d t |D||<t||d kr||=Wq0tytd |Yq00q0Wdn1s 0Y|S)z=Return a name-to-key-list dictionary to define each sequence.rHrASCIIencodingrcss|]}t|VqdSr-)r)rSxrrr rTr,z#MH.get_sequences..-rcsg|]}|vr|qSrr)rSr+Zall_keysrr sz$MH.get_sequences..rz"Invalid sequence specification: %sN)rrrrrsetrHrrRr(rr\rangerrrgrrstrip) rresultsrrrcontentsrHspecrr rr^r rNzs(    .zMH.get_sequencescCs ttj|jdddd}ztt|jtjtjB| D]\}}t |dkrVq@| |dd}d}t t |D]R}|d |kr|sd }| d n*|rd}| d ||fn| d ||}qx|r| t|dq@| dq@Wt|n t|0dS)z:Set sequences using the given name-to-key-list dictionary.rHzr+rYrZrrNFrTr]z%s %sz %s )rrrrrrdrrrMrPrrrr`rr)r sequencesrrrHprevZ completingr+rrr set_sequencess.   zMH.set_sequencesc Cs<|}d}g}|D]}|d|kr|||dfz4ttj|jt|tj|jt|dWnFt t fyt tj|jt|tj|jt|dYn0t tj|jt||d7}q|d|_ t|dkrdS|D]0\}}|D]"\}}||vr||||<qq||dS)z?Re-name messages to eliminate numbering gaps. Invalidates keys.rrN)rNrFrrrrrrrrrrunlinkr rrPindexri) rrgrhZchangesr+rrPoldrrrr packs0        zMH.packcCst|}|}|D]0\}}||vr4||q||vr|||=q|D]}||vrN|g||<qN||dS)z;Inspect a new MHMessage and update sequences appropriately.N)rNrPrrkri)rr'r+Zpending_sequencesZ all_sequencesrrPsequencerrr rKs  zMH._dump_sequences)NT)rrrrr!r(r,r4r8rAr;rFrRrTr`rbr^rdrrrrrNrirmrKrrrr rs. "  rc@seZdZdZehdZdddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdS) rzAn Rmail-style Babyl mailbox.>ZfiledZeditedresent forwardeddeletedunseenansweredNTcCst||||i|_dS)zInitialize a Babyl mailbox.N)rr!_labelsrrrr r!szBabyl.__init__cCs(t||}t|tr$||j|<|S)r")rr(rvr get_labelsrt)rr'r+rrr r(s  z Babyl.addcCs"t||||jvr|j|=dSr)rr,rtr*rrr r,s  z Babyl.removecCs*t|||t|tr&||j|<dS)r2N)rr4rvr rurtr3rrr r4s zBabyl.__setitem__c Cs||\}}|j||jt}|j}|dtks\|sHq\||tdq,t}|j}|tks|s|q||tdqd||j }|dksJ|j |}|td}t | |} | | ||jvr| |j|| S)r= *** EOOH ***rir)rr r|rrwrxr~rr}rrlr r set_visiblert set_labels) rr+rr original_headersrZvisible_headersnbodyrrrr r8s,         zBabyl.get_messagec Cs||\}}|j||jt}|j}|dtks\|sHq\||tdq,|j}|tksv|s\qvq\| }||j }|dksJ|j |}|td}||S)r2rvrir) rr r|rrwrxr~rr}rrrl) rr+rr ryrZheadersrzrrrr rAs"        zBabyl.get_bytescCst||dtS)rCri)rwrxrAr}r~r*rrr r;(szBabyl.get_filecCs<|t}|jD]}||q||jt|S)z4Return a list of user-defined labels in the mailbox.)rr`rtrNr\difference_update_special_labelsrG)rlabelsZ label_listrrr ru,s   zBabyl.get_labelscCs:gg}}|jdd}g}|}|j}|j}|dtkrt|t|krd||tt||dd|jdddD}||q|dks|dtkrt|t|kr||ttq|s||ttqqtt t |||_ tt ||_ t|j |_ |jdd |j|_dS) r?rs cSsg|]}|r|qSr)striprSlabelrrr r_Csz'Babyl._generate_toc..rN,r)r r|rrr~rrrr@rArBrrtr r)rrCrDrGZ label_listsrErr~rrr r'5s4        zBabyl._generate_toccCsVdt}|dt7}|}dd|D}|dd|t7}|d7}||dS) r"sBABYL OPTIONS:s Version: 5css|]}|VqdSr-)rerrrr rTXr,z*Babyl._pre_mailbox_hook..sLabels:rrN)r~rurr)rrZbabylr~rrr rSs zBabyl._pre_mailbox_hookcCs|dtdS)r$ Nr>r#rrr r]szBabyl._pre_message_hookcCs|tddS)r&rNr>r#rrr raszBabyl._post_message_hookcCsx|j}t|trg}g}|D]$}||jvr>||q$||q$|jd|D]}|jd|qZ|jd|D]}|jd|dq|jt n|jdt t|t j j rt }t j|dd}|||d|}|j|d t |d ks,|sq,q|jd t t|trt } t j| dd} | || }|j|d t |d ks|snqqnn>|d|}|j|d t |d ks|sqq|d } | sqf|j| d t qnTt|ttt jfrt|t jrJtd td |}t|tr`||}|dd} | ddkr|j|d| d t |jd t |j|d| d t |j|| dd t n(|jd t t |j|d t nXt |drVt |dr:tdtd |j!}|} d}|}|"drl|ddd }n|"dr|ddd }|j|d t |d ks|sF|rd}|jd t || nqڐqF|}|sqf|"dr |ddt }n:|"dr(|ddt }n|"d rD|ddt }|j|qnt#dt$||j}||fS)z0Write message contents and return (start, stop).1s, s,, rs1,,Frrirvrrjrks rrrNrrmrnTrorprqru)%r rrvr rur}rrrer~r?r'r rwrxryrzr{r|rr} get_visiblerlrrrrrrrrhr6rYrmrrr)rr'rZspecial_labelsr~rZ orig_bufferZorig_generatorrZ vis_bufferZ vis_generatorrmZ body_startZ original_posZ first_passr rrr r(es                         zBabyl._install_message)NT)rrrr frozensetr}r!r(r,r4r8rAr;rur'rrrr(rrrr rs    rc@s*eZdZdZd ddZddZddZdS) r z0Message with mailbox-format-specific properties.NcCst|tjjr4|t|t|tr||nt|trP|t |n~t|t rl|t |nbt|t j r|t|nDt|dr|t|n(|durtjj|ntdt|dS)zInitialize a Message instance.rlNru)rvr?r'r _become_messagecopydeepcopy _explain_torr@rZmessage_from_stringrw TextIOWrapperZmessage_from_filerYZmessage_from_binary_filer!rrr&rrr r!s      zMessage.__init__cCs4t|dg}|jD]}||vr|j||j|<qdS)z0Assume the non-format-specific state of message._type_specific_attributesN)getattr__dict__)rr'Z type_specificrrrr rs  zMessage._become_messagecCst|trdStddS)z:Copy format-specific state to message insofar as possible.Nz Cannot convert to specified type)rvr rr&rrr rs zMessage._explain_to)N)rrrrr!rrrrrr r s r c@szeZdZdZgdZdddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdS)r z)Message with Maildir-specific properties.)_subdir_info_dateNcCs&d|_d|_t|_t||dS)z%Initialize a MaildirMessage instance.rrN)rrrrr r!r&rrr r!s zMaildirMessage.__init__cCs|jS)zReturn 'new' or 'cur'.)rrErrr rszMaildirMessage.get_subdircCs(|dks|dkr||_n td|dS)zSet subdir to 'new' or 'cur'.rrz!subdir must be 'new' or 'cur': %sN)rrg)rrrrr rszMaildirMessage.set_subdircCs"|jdr|jddSdSdS)*Return as a string the flags that are set.2,rNr)rrrErrr get_flags s zMaildirMessage.get_flagscCsddt||_dS))Set the given flags and unset all others.rrN)rrr)rflagsrrr set_flagsszMaildirMessage.set_flagscCs$|dt|t|BdSz.Set the given flag(s) without changing others.rNrrr`rrflagrrr add_flagszMaildirMessage.add_flagcCs,|r(|dt|t|dS)7Unset the given string flag(s) without changing others.rN)rrrr`rrrr remove_flagszMaildirMessage.remove_flagcCs|jS)zSet "From " line, formatting and appending time_ if specified.NT )rr;r:r)rr4Ztime_rrr r.us z_mboxMMDFMessage.set_fromcCs|dd|ddS)rStatusrX-Status)r7rErrr r}sz_mboxMMDFMessage.get_flagscCst|}d\}}dD]}||vr||7}||qdD]}||vr8||7}||q8|dt|7}z|d|Wnty|d|Yn0z|d|Wnty|d|Yn0dS)r)rr)rr)rrrrrrN)r`r,rrreplace_headerr0Z add_header)rrZ status_flagsZ xstatus_flagsrrrr rs&    z_mboxMMDFMessage.set_flagscCs$|dt|t|BdSrrrrrr rsz_mboxMMDFMessage.add_flagcCs4d|vsd|vr0|dt|t|dS)rrrrNrrrrr rsz_mboxMMDFMessage.remove_flagc Cst|trt|}d|vr(|dd|vr:|dd|vrL|dd|vr^|dd|vrp|d|d =|d =d |d d }z| t t |dWnttfyYn0n t|tr||||nt|trXt|}d|vr"|dd|vr6|dd|vrJ|d|d =|d =nt|trt|}d|vr|dd|vr|dd|vr|d|d =|d =nt|trntdt|d S)zACopy mbox- or MMDF-specific state to message insofar as possible.rrrrrrrrstatuszx-statusrNz%a %b %d %H:%M:%S %Yrrrrrqrsr)rvr r`rrrrr8rrcalendarZtimegmrstrptimerg OverflowErrorr7rr.r rOr rr rr)rr'rZ maybe_daterrr rsb                           z_mboxMMDFMessage._explain_to)N)N) rrrrrr!r8r.rrrrrrrrr r7cs  r7c@seZdZdZdS)r z&Message with mbox-specific properties.Nrrrrrrrr r sr c@sHeZdZdZdgZdddZddZdd Zd d Zd d Z ddZ dS)r z$Message with MH-specific properties. _sequencesNcCsg|_t||dS)z!Initialize an MHMessage instance.N)rr r!r&rrr r!szMHMessage.__init__cCs|jddS)z4Return a list of sequences that include the message.N)rrErrr rNszMHMessage.get_sequencescCst||_dS)z3Set the list of sequences that include the message.N)rGr)rrgrrr riszMHMessage.set_sequencescCs6t|tr"||jvr2|j|ntdt|dS)z8Add sequence to list of sequences including the message.zsequence type must be str: %sN)rvrrrrrrrnrrr rOs  zMHMessage.add_sequencecCs(z|j|Wnty"Yn0dS)zARemove sequence from the list of sequences including the message.N)rr,rgrrrr remove_sequences zMHMessage.remove_sequencecCsFt|trdt|}d|vr*|dn|d|dd|vrP|dd|vrb|dnt|trt|}d|vr|dn |d d|vr|dd|vr|d nt|tr|D]}||qn`t|t r$t|}d|vr| dd|vrB| d nt|t r2nt d t |d S)z6Copy MH-specific state to message insofar as possible.rrrrrrrrROrrrsrN)rvr r`rNrrr7r rOr rr rr)rr'rgrnrrr rsB                      zMHMessage._explain_to)N) rrrrrr!rNrirOrrrrrr r s r c@sbeZdZdZddgZdddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)r z'Message with Babyl-specific properties.rt_visibleNcCsg|_t|_t||dS)z#Initialize a BabylMessage instance.N)rtr rr!r&rrr r!%szBabylMessage.__init__cCs|jddS)z'Return a list of labels on the message.N)rtrErrr ru+szBabylMessage.get_labelscCst||_dS)z&Set the list of labels on the message.N)rGrt)rr~rrr rx/szBabylMessage.set_labelscCs6t|tr"||jvr2|j|ntdt|dS)z+Add label to list of labels on the message.zlabel must be a string: %sN)rvrrtrrrrrrrr r3s  zBabylMessage.add_labelcCs(z|j|Wnty"Yn0dS)z4Remove label from the list of labels on the message.N)rtr,rgrrrr remove_label;s zBabylMessage.remove_labelcCs t|jS)z3Return a Message representation of visible headers.r rrErrr rBszBabylMessage.get_visiblecCst||_dS)z2Set the Message representation of visible headers.Nr)rZvisiblerrr rwFszBabylMessage.set_visiblecCsb|jD](}||vr*|j|||q |j|=q dD]$}||vr8||jvr8|||j|<q8dS)z9Update and/or sensibly generate a set of visible headers.)ZDateZFromzReply-ToZToZCCZSubjectN)rrHr)rheaderrrr update_visibleJs zBabylMessage.update_visiblecCsrt|tr~t|}d|vr*|dn|d|dd|vsNd|vrX|dd|vrj|dd |vr||d nt|trt|}d|vr|d n |d d |vr|d d|vr|dnt|trt|}d|vr|dd|vrn|dnTt|t rP| | |D]}| |qThe specified mailbox is not empty and deletion was requested.Nrrrrr r`src@seZdZdZdS)rz)Another process caused an action to fail.Nrrrrr rcsrc@seZdZdZdS)rz)A file appears to have an invalid format.Nrrrrr rfsr)T)2rrrrrrrrr?Z email.messageZemail.generatorrwr9typesrr ImportError__all__r~rerrrr+rrrrr'r r r7r r r rrr5rrrrrr Exceptionrrrrrrrrr sl     j8DB4-3z%mqH_e' *