ÿØÿà 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 3gX@sddlZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z GdddZ e e_GdddZ d d Zd ed fd ed fded fdifdifdd dgifded fded fdedfdddgifdddgifdddgifdddgifded fded fd!d"gd#gd$fd%dd"d&gifd'd(gd)gd*gd+fd,d-gd.gd/gd0gd1gd2gd3gd4gd5fd6d7gd8gd9gd(gd:gd;gd<fgZd=d>Zd?d@ZdAdBZdCdDZGdEdFdFejZdGZdHZdIZdJZdKZedLkredS)MN) namedtuple)StringIOBytesIO)supportc@seZdZgZejZdS)HackedSysModuleN)__name__ __module__ __qualname__argvsysstdinr r ,/opt/python39/lib/python3.9/test/test_cgi.pyr src@s,eZdZddZddZddZddZd S) ComparableExceptioncCs ||_dSN)err)selfrr r r__init__szComparableException.__init__cCs t|jSr)strrrr r r__str__szComparableException.__str__cCs*t|tstS|jj|jko(|jj|jkSr) isinstance ExceptionNotImplementedr __class__args)rZanExcr r r__eq__s   zComparableException.__eq__cCs t|j|Sr)getattrr)rattrr r r __getattr__szComparableException.__getattr__N)rrr rrrrr r r rrsrc Csi}|dkr"d}d|d<||d<nD|dkrZt|d}d|d<d|d<tt||d<n td |ztj||d d WSty}zt|WYd}~Sd}~00dS) NGETREQUEST_METHOD QUERY_STRINGPOSTlatin-1!application/x-www-form-urlencoded CONTENT_TYPECONTENT_LENGTHzunknown method: %s)strict_parsing) rencoderlen ValueErrorcgiparserr)bufmethodenvfprr r rdo_test"s  r3bad query field: ''&z&&=z=&=z=aaz&=az=a&z=&abad query field: 'a'zb=abzb+=azb za=b=aza=+b=az b=az&b=azb&=abad query field: 'b'z a=a+b&b=b+ca bb cr8r:z a=a+b&a=b+ab azx=1&y=2.0&z=2-3.%2b012.02-3.+0xyzzHbc5161168c542333633315dee1182227:key_store_seqid=400006&cuyer=r&view=bustomer&order_id=0bb2e248638833d48cb7fed300000f1b&expire=964546263&lobale=en-US&kid=130003.300038&ss=envZ400006rZ 964546263z 130003.300038zen-USZ 0bb2e248638833d48cb7fed300000f1br1Zbustomer)z1Hbc5161168c542333633315dee1182227:key_store_seqidZcuyerZexpireZkidZlobaleZorder_idssviewzQgroup_id=5470&set=custom&_assigned_to=31392&_status=1&_category=100&SUBMIT=BrowseZBrowseZ31392Z100Z5470Zcustom)ZSUBMITZ _assigned_toZ _categoryZ_statusZgroup_idsetcCs t|tdS)N)key)sortedrepr)seqr r rnorm^srOcCsdd|DS)NcSsg|] }|dqS)rr .0pr r r bzfirst_elts..r listr r r first_eltsasrWcCsdd|DS)NcSs g|]}|d|ddfqS)rr(r rPr r rrSerTz%first_second_elts..r rUr r rfirst_second_eltsdsrXcCshd}t||}|dtj|||d}i}t|D]&\}}t|trX| |p\|j ||<q<|S)Nr$r)r2environencoding) rr*seekr- FieldStoragedictitemsrrVZgetlistvalue)datarYrZZ fake_stdinZformresultkvr r r gen_resultgs  rdc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$d%gd&d'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5S)6CgiTestscCsPttd}tddd}t||}dgdgdgdgd}|||dS) Nlatin1558boundaryzCONTENT-LENGTH Add 1234 Testing 123. r4)submitidfiletitle)rPOSTDATAr*BOUNDARYr-parse_multipart assertEqual)rr2r1raexpectedr r rtest_parse_multipartus zCgiTests.test_parse_multipartcCsFd}t|d}dddi}t||}ddgi}|||dS)NzY--JfISa01 Content-Disposition: form-data; name="submit-name" just a string --JfISa01-- rfriJfISa01 submit-namezjust a string )rr*r-rsrt)rrqr2r1rarur r r+test_parse_multipart_without_content_length~s   z4CgiTests.test_parse_multipart_without_content_lengthcCsd}d}t|d}|dtt|dd}tj||ddd}d d gi}||||d d|d d dddS) Nrwu]--JfISa01 Content-Disposition: form-data; name="submit-name" Content-Length: 3 ☃ --JfISa01utf8rfrhasciisurrogateescape)rZerrorsrxu u☃r)rr*rr+r-rsrt)rrrrqr2r1rarur r r%test_parse_multipart_invalid_encodings    z.CgiTests.test_parse_multipart_invalid_encodingcCs^t}|||dt||t|t||jt ddd| |dS)Nr\ZMockFieldStoragenameZ fieldvalue) r-r\ assertFalseassertInrMrtrVkeysappendr assertTruerfsr r rtest_fieldstorage_propertiess  z%CgiTests.test_fieldstorage_propertiescCsL|jttjdddid|ttjddtjddid }|tt|dS) Nznot-a-file-objr!PUTrYZfooZbarz content-type text/plain)Zheaders) assertRaises TypeErrorr-r\boolrr r rtest_fieldstorage_invalids  z"CgiTests.test_fieldstorage_invalidcCstD]\}}t|d}|||dt|t|d}|||dt|d|i}tj|d}t|tr|t|t|| | | || ddd| D]N}||}| ||t|d kr|| ||q|| ||d qqdS) Nr zError parsing %s method GETr#zError parsing %s method POSTr"rznonexistent fielddefaultr(r) parse_strict_test_casesr3rtrMr-r\rr]r+ZassertCountEqualrgetvaluer)rorigexpectdr1rrK expect_valr r r test_stricts"        zCgiTests.test_strictc Csddgdgdfddgdgdgdfdtd fd td fd td fd td fdtdfddgdgdfddddgifg }|D]\}}d|i}tjd|d}t|tr||D]N}||}|||t|dkr|| ||q|| ||dqq|dS)Nz x=1;y=2.0r@rA)rDrEzx=1;y=2.0;z=2-3.%2b0rBrC;r5z;;z=;ar9z;b=azb;=ar;z a=a+b;b=b+cr<r=r>z a=a+b;a=b+ar8r?r") separatorrYr(r) r,r-r\rr]rrr+rtr)rZparse_semicolonrrr1rrKrr r rtest_separators(          zCgiTests.test_separatorcCs~tdtt_tddtdd|tjdtj tj rzdt_tj t_ tdd| tj tddS)NZTestingz%szTesting initlog 1z Testing log 2z Testing initlog 1 Testing log 2 z Testing log 3z Testing log 4)r-logrlogfpinitlogrtrospathexistsdevnulllogfile addCleanupcloselogrr r rtest_logs     zCgiTests.test_logcCs~Gddd}|td}||j|dd|dddi}tj||d }||jj| |j d |dS) Nc@s&eZdZddZdddZddZdS) z=CgiTests.test_fieldstorage_readline..TestReadlineFilecSs||_d|_dS)Nr)ronumcalls)rror r rrszFCgiTests.test_fieldstorage_readline..TestReadlineFile.__init__NcSs,|jd7_|r|j|S|jSdS)Nr()rroreadline)rsizer r rrs zFCgiTests.test_fieldstorage_readline..TestReadlineFile.readlinecSs.|jd}t||}t|ts*t||||S)Nro)__dict__rrintsetattr)rrror8r r rrs     zICgiTests.test_fieldstorage_readline..TestReadlineFile.__getattr__)N)rrr rrrr r r rTestReadlineFiles rzwb+sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxirr!rr2rY) tempfile TemporaryFilerclosewriter[r-r\roZ assertGreaterr)rrfr1rr r rtest_fieldstorage_readlines  z#CgiTests.test_fieldstorage_readlinec Csddtdd}ttd}tj||dd}|t|j dddd d d dd d d ddd dddd g}t t|j D]6}|| D]$\}}t |j ||}|||qq|dS)Nr# multipart/form-data; boundary={}rgr!r&r'r$rYrZrnrkrfilenamer_rpr4rotest.txtrlrmrj formatrrrrqr*r-r\rtr+rVranger^r rr1r2rrrDrbexpgotr r rtest_fieldstorage_multiparts     z$CgiTests.test_fieldstorage_multipartc Csddtdd}tdtd}tj||dd}|t|j dd dd d d dd d dddd dddd g}t t|j D]6}|| D]$\}}t |j ||}|||qqdS)Nr#rZ560rs r$rrrnrkrrpr4rorrlrmrjrrr r r.test_fieldstorage_multipart_leading_whitespace$s     z7CgiTests.test_fieldstorage_multipart_leading_whitespacec Csddtdd}dD]}tt|}tj|||d}|t|j dddd d g}t t|j D]6}|| D]$\}}t |j ||} || |qvqfqdS) Nr#rrgr)z iso-8859-1zutf-8rr(rnuçñ€r) rrrrPOSTDATA_NON_ASCIIr*r-r\rtr+rVrr^r) rr1rZr2rrrDrbrrr r r%test_fieldstorage_multipart_non_ascii7sz.CgiTests.test_fieldstorage_multipart_non_asciics^d}d_fdd}|d|d|d|dd|d|ddd|ddS)NicsDddd|}tt|ddd}t||d|didS) Nzp---123 Content-Disposition: form-data; name="upload"; filename="fake.txt" Content-Type: text/plain %s ---123--  z "multipart/form-data; boundary=-123r#r'r&r!uploadrf)replacerr+rtrdr*)contentr`rYrr rcheckJs   z;CgiTests.test_fieldstorage_multipart_maxline..checkrDr( rE)ZmaxDiff)rZmaxlinerr rr#test_fieldstorage_multipart_maxlineFs  z,CgiTests.test_fieldstorage_multipart_maxlinec Csddttttd}ttd}tj||dd}| t|j d| |j dj d| |j dj d | |j d j d |j d j }| t|ddd d dddddg}t t|D]4}||D]"\}}t|||} | | |qqdS)Nr#rrr$rrrrxLarryr(filesz file1.txts... contents of file1.txt ...rz file2.gifs...contents of file2.gif...)r BOUNDARY_W3rr+ POSTDATA_W3rr*r-r\rtrVrr_rr^r) rr1r2rrrrDrbrrr r rtest_fieldstorage_multipart_w3c]s&    z(CgiTests.test_fieldstorage_multipart_w3ccCs~d}d}dd|tt|d}t|d}tj||dd}|t|jd||jd j d ||jd j d dS) Nrwz_--JfISa01 Content-Disposition: form-data; name="submit-name" Content-Length: 5 Larry --JfISa01r#rrr$rr(rrxr) rrr+rr*r-r\rtrVrr_)rrrrqr1r2rr r r%test_fieldstorage_part_content_lengthrs z.CgiTests.test_fieldstorage_part_content_lengthcCs@td}dd|d}tj||d}|t|djddS)Nsa--MyBoundary Content-Disposition: form-data; name="my-arg"; filename="foo" Test --MyBoundary-- r#z(multipart/form-data; boundary=MyBoundary)r!r&z wsgi.inputrzmy-arg)rr-r\rtr+roread)rr2r1fieldsr r r.test_field_storage_multipart_no_content_lengthsz7CgiTests.test_field_storage_multipart_no_content_lengthcCstd}ddi}tj||d(}|j}||jjWdn1sL0Y||jj||d| t d|jWdn1s0YdS)Ns xxxxxxxxxxr!rrZ xxxxxxxxxxzI/O operation on closed file) rr-r\rorrclosedrrtZassertRaisesRegexr,)rr2r1rrr r r$test_fieldstorage_as_context_managers , z-CgiTests.test_fieldstorage_as_context_managerZvalue1Zvalue2xZvalue2yZvalue3Zvalue4)Zkey1Zkey2Zkey3Zkey4cCs6d}tt|dddd}t||}||j|dS)Nz$key2=value2x&key3=value3&key4=value4r%zkey1=value1&key2=value2yr#r'r&r"r!rr+rdrt _qs_resultrr`rYrcr r rtestQSAndUrlEncodes  zCgiTests.testQSAndUrlEncodecCsddgd}tt|ddd}|t(tjt||ddWdn1s\0Yd }tt|d d dd }|t(tjt||d dWdn1s0Ytjt||dddS)Nr6za=a r%r#r )r2rYmax_num_fieldsz---123 Content-Disposition: form-data; name="a" 3 ---123 Content-Type: application/x-www-form-urlencoded a=4 ---123 Content-Type: application/x-www-form-urlencoded a=5 ---123-- rza=1&a=2rrr) joinrr+rr,r-r\rr*)rr`rYr r rtest_max_num_fieldss8   $   $ zCgiTests.test_max_num_fieldscCs6d}tt|dddd}t||}||j|dS)Nz---123 Content-Disposition: form-data; name="key2" value2y ---123 Content-Disposition: form-data; name="key3" value3 ---123 Content-Disposition: form-data; name="key4" value4 ---123-- rkey1=value1&key2=value2xr#rrrr r rtestQSAndFormDatas  zCgiTests.testQSAndFormDatacCsLd}tt|dddd}|j}|ddit||}|||dS)NaE---123 Content-Disposition: form-data; name="key2" value2y ---123 Content-Disposition: form-data; name="key3" value3 ---123 Content-Disposition: form-data; name="key4" value4 ---123 Content-Disposition: form-data; name="upload"; filename="fake.txt" Content-Type: text/plain this is the content of the fake file ---123-- rrr#rrs%this is the content of the fake file )rr+rcopyupdaterdrt)rr`rYrarcr r rtestQSAndFormDataFiles   zCgiTests.testQSAndFormDataFilecCs|tddif|tddif|tddddif|tddddif|tdddd d f|td d d dif|tdd d dif|tdd dddf|tdddddfdS)Nrztext/vnd.just.made.this.up ; ztext/vnd.just.made.this.upztext/plain;charset=us-asciicharsetzus-asciiztext/plain ; charset="us-ascii"z,text/plain ; charset="us-ascii"; another=optopt)rZanotherz attachment; filename="silly.txt"Z attachmentrz silly.txtz#attachment; filename="strange;name"z strange;namez-attachment; filename="strange;name";size=123;Z123)rrz-form-data; name="files"; filename="fo\"o;bar"z form-datarzfo"o;bar)rr)rtr-Z parse_headerrr r rtest_parse_header!sH       zCgiTests.test_parse_headercCshd}tj|t|ddS)N> rZnologrmaxlenZvalid_boundaryrrZdologr) blacklist)rZ check__all__r-)rrr r rtest_all>szCgiTests.test_allN)rrr rvryr~rrrrrrrrrrrrrrrrrrrrrr r r rress8 %  6"rez6---------------------------721837373350705526688164684a-----------------------------721837373350705526688164684 Content-Disposition: form-data; name="id" 1234 -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="title" -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="file"; filename="test.txt" Content-Type: text/plain Testing 123. -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="submit" Add -----------------------------721837373350705526688164684-- u-----------------------------721837373350705526688164684 Content-Disposition: form-data; name="id" çñ€ -----------------------------721837373350705526688164684 ZAaB03xa--AaB03x Content-Disposition: form-data; name="submit-name" Larry --AaB03x Content-Disposition: form-data; name="files" Content-Type: multipart/mixed; boundary=BbC04y --BbC04y Content-Disposition: file; filename="file1.txt" Content-Type: text/plain ... contents of file1.txt ... --BbC04y Content-Disposition: file; filename="file2.gif" Content-Type: image/gif Content-Transfer-Encoding: binary ...contents of file2.gif... --BbC04y-- --AaB03x-- __main__)r-rr rZunittest collectionsriorrtestrrrr3r,rrOrWrXrdZTestCasererrrqrrrrmainr r r rs                * T