ÿØÿà 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ÿÙ (icXddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ej dkrdZ ndZ d e ejZ e dzZejdkrddlZejdeZdZej d krnejjd krUe d zZ eejed ed ejddZnj#e$rYncwxYwn^ejdvrU dejn1#e$r)e dejdzZYnwxYwdZdD]6Z ejejeekre eZn #e$rY3wxYwej Z!dZ"dD]DZ e ej&#e$reje e zZ"YnwxYwere ezZ#ndZ#e#pe Z$dZ%da&dZ'dZ(da)dZ*dZ+da,dZ-dZ.da/dZ0dZ1dZ2d Z3ej4d!rd;d#Z5d$Z6d%Z7d&Z8d'Z9nej3Z6ej:Z7d(Z8d)Z9d*Z:d+Z;ej<dej<d=d/Z?d0Z@ej<d1ZAd2ZBGd3d4ZCd5ZDeEed6rej<d7ZFnej<d8ZFGd9d:ejGjHZIdS)>Njavaz$testz@testz {}_{}_tmpu -àòɘŁğdarwinNFDntu-共Ł♡ͣzWARNING: The filename z, CAN be encoded by the filesystem encoding (z.). Unicode filename tests may not be effective>wasir emscriptens-surrogateescape) æuİuŁuφuКuאu،uتuก u€)swr ssscttd} ||t tS#|t twxYw)z` Create an invalid file descriptor by opening and closing a file and return its fd. wb)openTESTFNfilenocloseunlinkfiles -/usr/lib/python3.11/test/support/os_helper.py make_bad_fdrs]   D{{}} v vs A*A=cttStjt}|dz} tj||d}tj|n#tttf$rd}YnwxYw|a|S)N can_symlinkTF) _can_symlinkospathabspathrsymlinkremoveOSErrorNotImplementedErrorAttributeError)src symlink_pathcans rrrs '//& ! !C&L  3 %%% , (. 9L JsA%%BBcdt}d}|r|ntj||S)z8Skip decorator for tests that require functional symlinkz*Requires functional symlink implementation)runittestskiptestokmsgs rskip_unless_symlinkr/s4 B 6C 344-8=--d333chddl}ttSttdsd}nddl}|}||\}} ttd5} tj |ddtj |dd tj | dd| }tj d |}|dup%t|d d k}n#t $rd}YnwxYwdddn #1swxYwYt#tt#|t%|n7#t#tt#|t%|wxYw|a|S) NrsetxattrFdirrs user.testr0s trusted.foos42z 2.6.(\d{1,2})')tempfile _can_xattrhasattrrplatformmkdtempmkstemprrr2rreleaserematchintgroupr"rrmdir) r7r'r:tmp_dirtmp_fptmp_namefpkernel_versionms r can_xattrrIsOOO 2z " """$$#+++88 fd## r  K c:::K.%@@@K \3???%-%5%5%7%7N!1>BBAt)sC  1 2     s ((winFc<|||r|}n&tj|\}}|pd}d}|dkr>tj|}|r|sn||vsdSt j||dz}|dk>t jd|ztddS)N.gMbP?g?rz)tests may fail, delete still pending for  stacklevel) rrsplitlistdirtimesleepwarningswarnRuntimeWarning)funcpathnamewaitalldirnamenametimeoutLs r_waitforr~Fs X  %GGGMM(33MGTnGmm 7##A  A  daii Jw    qLGmm  AHL$ 4 4 4 4 4 4r0c:ttj|dSrd)r~rrrhs rreregsH%%%%%r0c:ttj|dSrd)r~rrBrzs r_rmdirrjs7#####r0clddlmfdt|dtfd|dS)Nr _force_runc|tj|D]}tj||} tj|j}n:#t $r-}td|d|tj d}Yd}~nd}~wwxYwtj |r*t|d|tj ||tj|dS)Nzsupport.rmtree(): os.lstat(z) failed with rrTry)rrqrjoinlstatrQr"printsys __stderr__rPS_ISDIRr~rBr)rr{fullnamemodeexcr _rmtree_inners rrz_rmtree.._rmtree_innerps" 4T:: > >7<<d338H--5DDE%XXss,"~////DDDDDD  <%%>]HdCCCCJx8<<<<JxH==== > >sA B  #BB Trc2|tj|Srd)rrB)prs rz_rmtree..s::a155r0) test.supportrr~)rrrs @@r_rmtreermsk++++++ > > > > > > d33335555t<<<<._rmtree_inners / / / / / /" 4T:: : :7<<d338H--5DDDDD<%%:!M(+++JtRXx8888JtRY9999 : :sA A+*A+)shutilrmtreer"rrB)rrrs @rrrs   MM$    F    D  : : : : :  d s  ++c|Srdrs rrr r0cH t|dS#t$rYdSwxYwrd)rrfrs rrBrBs8 w       !!cH t|dS#t$rYdSwxYwrd)rrfrs rrrs8       rc#Kddl}d}|6|}d}tj|}nT tj|d}n<#t $r/}|stjd|d|tdYd}~nd}~wwxYw|rtj } |V|r(|tj krt|dSdSdS#|r'|tj krt|wwwxYw) aReturn a context manager that creates a temporary directory. Arguments: path: the directory to create temporarily. If omitted or None, defaults to creating a temporary directory using tempfile.mkdtemp. quiet: if False (the default), the context manager raises an exception on error. Otherwise, if the path is specified and cannot be created, only a warning is issued. rNFTz5tests may fail, unable to create temporary directory : rn) r7r;rrrealpathmkdirr"rtrurvgetpidr)rquietr7 dir_createdrpids rtemp_dirrsrOOOK |!! w%% 8 HTNNNKK 8 8 8  MA15AA;>AA(Q 8 8 8 8 8 8 8 8 8 8 ikk   3")++-- 4LLLLL  --; 3")++-- 4LLLL -s$A B#%B  B+C,D c#Ktj} tjtj|n<#t $r/}|st jd|d|tdYd}~nd}~wwxYw tjVtj|dS#tj|wxYw)agReturn a context manager that changes the current working directory. Arguments: path: the directory to use as the temporary current working directory. quiet: if False (the default), the context manager raises an exception on error. Otherwise, it issues only a warning and keeps the current working directory the same. zBtests may fail, unable to change the current working directory to rrrnN) rgetcwdchdirrrr"rtrurv)rr saved_dirrs r change_cwdrs I4 !!$''(((( 444   6&*660366$ 4 4 4 4 4 4 4 4 44 ikk s#1A B%A==BB11Ctempcwdc#Kt||5}t||5}|Vdddn #1swxYwYddddS#1swxYwYdS)a Context manager that temporarily creates and changes the CWD. The function temporarily changes the current working directory after creating a temporary directory in the current directory with name *name*. If *name* is None, the temporary directory is created using tempfile.mkdtemp. If *quiet* is False (default) and it is not possible to create or change the CWD, an error is raised. If *quiet* is True, only a warning is raised and the original CWD is used. )rr)rN)rr)r{r temp_pathcwd_dirs rtemp_cwdrs t5 ) ) )Y   / / / 7MMM               s,A7 A; A; AAActj|tjtjztjz}tj|dS)z>Create an empty file. If the file already exists, truncate it.N)rrO_WRONLYO_CREATO_TRUNCr)rifds rcreate_empty_filers4 2;3bj@ A ABHRLLLLLr0c#:Ktj|sJtj}t tdr|tjz}tj||} |Vtj|dS#tj|wxYw)z&Open a file descriptor to a directory. O_DIRECTORYN)rrisdirO_RDONLYr9rrr)rflagsdir_fds r open_dir_fdrs 7==   KEr=!!   WT5 ! !F  s *BBcNddl}||5}|j}|}||kr|} t j||cdddS#t$rYddddSwxYw#1swxYwYdS)zODetects if the file system for the specified directory is case-insensitive.rNr3F) r7NamedTemporaryFiler{upperlowerrrsamefilerf) directoryr7base base_path case_paths rfs_is_case_insensitiver*sOOO  $ $ $ 3 3tI OO%%  ! !!))I 7##Iy99 !    s/6BA>> BBBBB!Bc$eZdZdZdZdZdZdS)FakePathz.Simple implementing of the path protocol. c||_dSrdr)selfrs r__init__zFakePath.__init__<s  r0cd|jdS)Nz rrs r__repr__zFakePath.__repr__?s*DI****r0ct|jts4t|jtr!t |jtr|j|jSrd) isinstancer BaseExceptiontype issubclassrs r __fspath__zFakePath.__fspath__BsO ty- 0 0  ty$ ' ' 49m44 )O9 r0N)__name__ __module__ __qualname____doc__rrrrr0rrr9sK+++r0rctjdr7 tjd}t |dz S#t $rYnwxYwd}ttdr& tjd}n#t$rYnwxYwd}tjdkrV d dl }|j i}|j |j |jfD]}| |d ||<n#tt f$rYnwxYw d }t#|D]]} tj|}tj||dz }1#t$r }|jt(jkrYd}~Vd}~wwxYw |3|j |j |jfD]}| |||n;#|3|j |j |jfD]}| |||wwxYw|S) z/Count the number of open file descriptors. )linuxfreebsdr z /proc/self/fdr5r[sysconf SC_OPEN_MAXNwin32r)rr: startswithrrqrrfr9rr"msvcrtCrtSetReportModeCRT_WARN CRT_ERROR CRT_ASSERTr$rrangeduprerrnoEBADF) namesMAXFD old_modesr report_typecountrfd2rVs rfd_countrKs |ABB J//Eu::> !     D  Er9 J}--EE    D I |w D MMM  # # I & & 0 & 1 3 D D *0)@)@AB*D*D +&& D  ,    D M,,  B fRjj       7ek))*))))    & & 0 & 1 3 M M '' Y{5KLLLL  & & 0 & 1 3 M M '' Y{5KLLLL ! M Lsk%A AA/B BB' C%%C98C9=F#D?%F#? E) E$F#$E))F##8Gumaskc#Ktj|} dVtj|dS#tj|wxYw)z8Context manager that temporarily sets the process umask.N)rr)roldmasks r temp_umaskrsO(5//  EEE HW     BHW    s 2Ac#KdVdS)z"no-op on platforms without umask()Nr)rs rrrs r0cZeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdS)EnvironmentVarGuardz_Class to help protect the environment variable properly. Can be used as a context manager.c6tj|_i|_dSrd)renviron_environ_changedrs rrzEnvironmentVarGuard.__init__s   r0c|j|Srd)r renvvars r __getitem__zEnvironmentVarGuard.__getitem__s}V$$r0cp||jvr"|j||j|<||j|<dSrdr r getrrvalues r __setitem__zEnvironmentVarGuard.__setitem__s=  & &$(M$5$5f$=$=DM& ! % fr0c||jvr"|j||j|<||jvr |j|=dSdSrdrrs r __delitem__zEnvironmentVarGuard.__delitem__sP  & &$(M$5$5f$=$=DM& ! T] " " f%%% # "r0c4|jSrd)r keysrs rrzEnvironmentVarGuard.keyss}!!###r0c*t|jSrd)iterr rs r__iter__zEnvironmentVarGuard.__iter__sDM"""r0c*t|jSrd)rr rs r__len__zEnvironmentVarGuard.__len__s4=!!!r0c|||<dSrdrrs rsetzEnvironmentVarGuard.setsV r0c ||=dSrdrrs runsetzEnvironmentVarGuard.unsets LLLr0c t|Srd)dictrs rcopyzEnvironmentVarGuard.copysDzzr0c|Srdrrs r __enter__zEnvironmentVarGuard.__enter__rr0c|jD]#\}}|||jvr|j|=||j|<$|jt_dSrd)r itemsr rr )r ignore_exckvs r__exit__zEnvironmentVarGuard.__exit__s\m))++ % %FQy %% a(#$ a  ] r0N)rrrrrrrrrrrr!r#r&r(r.rr0rrrs%%%&&& &&&$$$###"""#####r0r)F)NF)rF)Jcollections.abc collections contextlibrrr>rPrrrr)rtr{ TESTFN_ASCIIformatrTESTFN_UNICODEr: unicodedata normalizeTESTFN_UNENCODABLEgetwindowsversionencodegetfilesystemencodingrUnicodeEncodeErrordecodeUnicodeDecodeError FS_NONASCII characterfsdecodefsencode UnicodeErrorrSAVEDCWDTESTFN_UNDECODABLETESTFN_NONASCIIrrrrr/r8rIrKrNrWrYr\r]r`rbrrr~rerrrrBrcontextmanagerrrrrrrrrr9rabcMutableMappingrrr0rrIsM 7fLLL!!,  <<  ==<8*[*5.AAN 7d??s'1,,*,MM &  % %&?c&?&A&A B B B EE''')B)B)D)D)D)DF G G G"&   "    D  - \999  0s022333  NNN)oo7c799;LMMNN  ++IB  2;{r{9-- . .) ; ;  <          29;; D" -C-//0000 (R[66= "[0OOO  (L    (444 B444 04440444 444    <5!!g4444B&&&$$$===*    iG XF0       %%%%P 6 &        $999x 72w  6#6#6#6#6#+/86#6#6#6#6#sH,"C00C87C8"D))+EE!$F  FF+"GG*)G*