ÿØÿà JFIF      ÿÛ „ 	 ( %!1"%)+...383-7(-.+



-%%--------+------------/----------------------------ÿÀ  ¶" ÿÄ               ÿÄ @       !1AQaq‘¡"±ÁÑð2’BRráS‚ñ3b¢CT²Ò #cÿÄ             ÿÄ '        1!AQ2a"‘±#ÿÚ   ? ò(/p‘—–¢·,M|¯G»R£üešT. ôŸEoCFñ‡ 4ÔkåóxR|µÁ¨ÓDà!Ç´µ˜‡p ÍQ‹§!þž^õWsŒy  åÁ§$á«%ºq˜™JyyË0y«^Ï
-3ÃÏËÈ£Æ\P’ä„s&•‹Üs üô'àWt¹pñCp$bÚF`·7.^)¾!)ÒÙ˜–ÅÏš^h¾ø³·ìe±ŒaeÖ—Í,e=B}Jéß¦$$½—šÙÜCC¯¶è8Î²–Åkèwx
LÉngT±æ¹£Ócœ¿Í/©Éÿ ‰ÚCÒ­mq;Tt¶–}0"zÖPcd1š­¤tˆ„ÐÓâqú[™öUCŠ2Þ¿Ø¯­É(¸ßúçšmW,Ò ºf‹Ån™ÄLêÃ8üÁkÁ€L¥ÍuJ1œôrÂSŒÓöt!7EUíïb)AËi¬â-ÙHk8òÁiXYwÅ)O^"ÇØriÛô{»wRUKÙÏÚlÓ¬€‚’×©T]
ªb—ÊîKC^×M“xùäñz¬zJ×{4[¹M'IÆeH1LCWÕ]œûº WDæà°OÅ‚¹c²ÞuA–rL`HšpCez‡V’— Ž‚Ë„–ñ­'µR0ÕÖ=À:±G»C\nÆÉ5*¢ †3šhQ4ýÒi$Õ1"Ü]¢p-q3zcQ$ªö¨¥æf›‘»´ÝÚHá„e²JÇ–iÊ:·à¬Øc5Åk»Laª*wi
[0Ówk ¦a¦0Õ²ÅÅ‚T¸’³q:Æ<¹ú	Ò˜Æ}2VE•Ð€p¡Ô3Úº …h³^Ç‡ºçì¥Ánó|˜ÖˆÎˆ+«¦dø‘Mº–d\ªDðÛ„Ì×LÝ——Ð9Ç|•FèçVm™¨€™3õS–9Äå¢<Ì‰Ìm¢±`·º˜&Z²ž Ë®D«¶»6™‰©­HÈÀá«h­i³04æ’hxœi3ï¨(ÓL·†‹¶ËpŒ
ƒÜÒ?	:õdsÀ–3æÓ·Üjâ¬9—]8n¼&]I F£¼…ì–—Œ0v°LÇÅfÛ2TÖ’aµ˜N@ÖBSÏ^à´4-±°b×nÈÈœÆD=KdŒø…ÄÈK,›ÖR§fjü$^ÔÎ!„6^ s:Üun\ôkCÞò÷<—Lúl
Í›G¹ÀPá¼Nc¡šÒ…ÙWÍ³œ±vÊáÐ„×9‹P‰cEØ‘™›µŸP<×g1
º©Ø¬wiÁ^l5×I/';Ë+´Z‡ÓÄFÕp[Èð’
HÄ	ó
9¬Dl4“é±Ï”V=^Hð;žLädÉa‚°Ë,#/Ž~²BÔÛ
QãñQtIeórVB,ÏÂf‹4#Îœc‹É3ZIÖ Œ¢¥·üxa‡Ãçè„jŠ[5 Ä!U?,3žÎ×…ðdÓ÷háŠA‰ìÄ4÷ÃÜZÃE{‰®+W\ZÍE[‰»µk»MÝ­`¢©†˜ÃV‹-f¢¡†¢a«eŠ%«Y¨©q%jâd,Ôq`) ¤¦…šˆ ¦E>0Ùb²t–Ÿ
÷jsÏ‚Ò’KÈcø(é›;k(’#ôŒQ
™C>
õ³M9óºÆµ¤çâ;uÀ)5>RÔ¸fÓ~È¦—’-$fe«"FâUˆÊwµPÏu
w+"åÉoÌ¨6s™Û9(À¨ù©hE°½†n`m~“@©›p!Vkhµ Á1šbEqqÊ@ºèl›2 –Yã%‘‚hÛ{a¶‡ÅÞM²¬çL34®Çl]®‹ŽØŒm'RÜe35æöˆ­Á­ cP9šeÁköo´L³Ì=p8]”‡B¶,šº|ÉdzXˆØk*ÇÚ{#ñ‰pã(€¶‡9ý'šÜ³½¯kƒ†Â’ëSOƒ•Å®H6+a¢µˆ‹Y¨b˜b+XˆÖ!°u!¢"µˆˆn2ˆ Å0Ä`Å Ô®c(ÓÜGº•Ä»Œ âWî%q.áÐÄ÷î%umÍ£+ÜQ,Vn¦-GphU¸¢X­&,Gt
·K¢ÅÅ·¥RÄÊÉbKn
N­R2g$VµÕó
Qr#–ÓZUÏð0ÎtÙÀœz
ëöo“Îk¯n„T°"SÞ+³/…€½"ižãO%Í%&Î”â‘ËØ´IˆÓ°Ë‰ÞM<J•›C=ìu*Ü§„Ã¤GËŠô;5ŒÁ£ñùä¬6Ì2¦‘žh¸Rº<Õš%÷ …Ç	‚g‡.
>3.™yçÁzit›`4C`k¢¼á!álÄï sÂ[×!¤l¾æo"ƒIÔ'@ªu)3›ô®“@Z
à¾]
üœ'‡4¸PÞkÁ-qÄH‰ÓÍBd´ÿ —¹°ÄA&ÊUC„öz‚‚RæŠtf¬>˜ÑidšEçÑL÷áý¡V±h§­c¿¥¨ƒ@g¼…Ýö^ÞËc.Å¾„æ“I[ª+·zÐÒÚ,½Ð»¶€C›7jk$à¹–€Ž¾ÅÙpp¶ÍþéÎ¤ ½ØÎŒq ñpæžÅ¥#Øâ49ÃÂK^MYV“,¶Éz_òæ:…;Õ«¦I3âJ£¤û5$7Èxün\â]Êe¯(Ÿ&Ž‹¶2<6Ä†f× æ¢Æ±qWÄ±[(ÙÂŽç‚T7¨@ÈÉÍß‚ïÙ"&3TYlGŽ†)†#5ŠA©^T2ÆÁ†)©†©†¤yGXÁ†©"†)©¼ÅV WS†#©]R–r‹q5ÕbâWþBh¯u+ªÅÄ×ü„nÑ^êkªÁj‰jeœWˆÕÕ`µDµ2Ì+Ä µDµµ5Ô{¤Þ0RF’H÷AÛ<ÊÁ§ Æˆæ0Ñ£ê4 öÚµ[¬/1²€â<-¬šö²r×0o×w ´xÐÒË„
g01¬„åEMè›‡Ã\6µE›‘fÙO	k÷CºnÓ1`iîÒ²áÂ!ÑLÄÿ 
³¬\õ*:M=Ç»c‹2[‰ØsÕLò\ŒK L^™üÄN\¶#»
Ç\……ßïIœÉ$¸ÎñÍ®ÔHÃ‡	Ûí/´>Li”„†g^$ 7NÍÑÑ2M2ªNg=k½Ð}Ÿl6‡	—JWˆ”ÞéT·+µ¦üÂFè¢Vs6ýÆ4»2+2IÝ9ô9®ÇGÙÇ1+Ä8;*Õ§ž½D*îÑWÚçá3Ma¤·ˆ¥t}š²Ü…Q+Æüµ8HíS”üxGéÁˆ¦Ël„éÈ	5 µÄƒ6äÜ(kIš¯S†fÖ&¸®×v|Äyˆ*ç¦ŒÉù@7-®Ä[]ÎÖ¿ê`º…=:…žJVnÝ³vðÖKE¼‚ »mà ÷f®:Ë™–4rð¡4` Ü¹çž~‹C=œ…¾Ïj|VDtK.ƒ"9	Ï
­–éXá³6WÒïIL-Ð‡
Ç
usr/lib/python2.7/site-packages/bs4/diagnose.pyc                                                    0000644                 00000021677 15267246740 0015443 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ó
†?J[c           @   so  d  Z  d Z d d l Z d d l m Z d d l m Z d d l Z d d l m Z m Z d d l m	 Z	 d d l
 Z
 d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d „  Z e d	 „ Z d
 e f d „  ƒ  YZ d „  Z d Z d Z d d „ Z d d „ Z d d „ Z d d „ Z d d d „ Z e d k rke e j j ƒ  ƒ n  d S(   s=   Diagnostic functions, mainly for use when doing tech support.t   MITiÿÿÿÿN(   t   StringIO(   t
   HTMLParser(   t   BeautifulSoupt   __version__(   t   builder_registryc         C   sV  d t  GHd t j GHd d d g } xK | D]C } x: t j D] } | | j k r; Pq; q; W| j | ƒ d | GHq+ Wd | k rÛ | j d ƒ y2 d d	 l m	 } d
 d j
 t t | j ƒ ƒ GHWqÛ t k
 r× } d GHqÛ Xn  d | k r!y d d l } d | j  GHWq!t k
 r} d GHq!Xn  t |  d ƒ r?|  j ƒ  }  nˆ |  j d ƒ s]|  j d ƒ rod |  GHd GHd SyC t j j |  ƒ r±d |  GHt |  ƒ � } | j ƒ  }  Wd QXn  Wn t k
 rÅn XHxˆ | D]€ } d | GHt }	 y t |  d | ƒ}
 t }	 Wn& t k
 r'} d | GHt j ƒ  n X|	 rEd | GH|
 j ƒ  GHn  d d GHqÎWd S(   s/   Diagnostic suite for isolating common problems.s'   Diagnostic running on Beautiful Soup %ss   Python version %ss   html.parsert   html5libt   lxmls;   I noticed that %s is not installed. Installing it may help.s   lxml-xmliÿÿÿÿ(   t   etrees   Found lxml version %st   .s.   lxml is not installed or couldn't be imported.Ns   Found html5lib version %ss2   html5lib is not installed or couldn't be imported.t   reads   http:s   https:s<   "%s" looks like a URL. Beautiful Soup is not an HTTP client.sp   You need to use some other library to get the document behind the URL, and feed that document to Beautiful Soup.s7   "%s" looks like a filename. Reading data from the file.s#   Trying to parse your markup with %st   featuress   %s could not parse the markup.s#   Here's what %s did with the markup:t   -iP   (   R   t   syst   versionR   t   buildersR   t   removet   appendR   R   t   joint   mapt   strt   LXML_VERSIONt   ImportErrorR   t   hasattrR
   t
   startswitht   ost   patht   existst   opent
   ValueErrort   FalseR   t   Truet	   Exceptiont	   tracebackt	   print_exct   prettify(   t   datat   basic_parserst   namet   builderR   t   eR   t   fpt   parsert   successt   soup(    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   diagnose   sd    	
"			
		c         K   s[   d d l  m } xD | j t |  ƒ d | | �D]$ \ } } d | | j | j f GHq/ Wd S(   s—   Print out the lxml events that occur during parsing.

    This lets you see how lxml parses a document when no Beautiful
    Soup code is running.
    iÿÿÿÿ(   R   t   htmls   %s, %4s, %sN(   R   R   t	   iterparseR   t   tagt   text(   R$   R.   t   kwargsR   t   eventt   element(    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt
   lxml_traceZ   s    +t   AnnouncingParserc           B   sh   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   s?   Announces HTMLParser parse events, without doing anything else.c         C   s	   | GHd  S(   N(    (   t   selft   s(    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   _pg   s    c         C   s   |  j  d | ƒ d  S(   Ns   %s START(   R9   (   R7   R&   t   attrs(    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   handle_starttagj   s    c         C   s   |  j  d | ƒ d  S(   Ns   %s END(   R9   (   R7   R&   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   handle_endtagm   s    c         C   s   |  j  d | ƒ d  S(   Ns   %s DATA(   R9   (   R7   R$   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   handle_datap   s    c         C   s   |  j  d | ƒ d  S(   Ns
   %s CHARREF(   R9   (   R7   R&   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   handle_charrefs   s    c         C   s   |  j  d | ƒ d  S(   Ns   %s ENTITYREF(   R9   (   R7   R&   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   handle_entityrefv   s    c         C   s   |  j  d | ƒ d  S(   Ns
   %s COMMENT(   R9   (   R7   R$   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   handle_commenty   s    c         C   s   |  j  d | ƒ d  S(   Ns   %s DECL(   R9   (   R7   R$   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   handle_decl|   s    c         C   s   |  j  d | ƒ d  S(   Ns   %s UNKNOWN-DECL(   R9   (   R7   R$   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   unknown_decl   s    c         C   s   |  j  d | ƒ d  S(   Ns   %s PI(   R9   (   R7   R$   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt	   handle_pi‚   s    (   t   __name__t
   __module__t   __doc__R9   R;   R<   R=   R>   R?   R@   RA   RB   RC   (    (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyR6   d   s   									c         C   s   t  ƒ  } | j |  ƒ d S(   s£   Print out the HTMLParser events that occur during parsing.

    This lets you see how HTMLParser parses a document when no
    Beautiful Soup code is running.
    N(   R6   t   feed(   R$   R*   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   htmlparser_trace…   s    	t   aeiout   bcdfghjklmnpqrstvwxyzi   c         C   sS   d } xF t  |  ƒ D]8 } | d d k r2 t } n t } | t j | ƒ 7} q W| S(   s#   Generate a random word-like string.t    i   i    (   t   ranget   _consonantst   _vowelst   randomt   choice(   t   lengthR8   t   it   t(    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   rword‘   s    	i   c         C   s   d j  d „  t |  ƒ Dƒ ƒ S(   s'   Generate a random sentence-like string.t    c         s   s'   |  ] } t  t j d  d ƒ ƒ Vq d S(   i   i	   N(   RT   RO   t   randint(   t   .0RR   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pys	   <genexpr>ž   s    (   R   RL   (   RQ   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt	   rsentenceœ   s    iè  c         C   së   d d d d d d d g } g  } x² t  |  ƒ D]¤ } t j d d	 ƒ } | d k ru t j | ƒ } | j d
 | ƒ q. | d k r£ | j t t j d d ƒ ƒ ƒ q. | d k r. t j | ƒ } | j d | ƒ q. q. Wd d j | ƒ d S(   s+   Randomly generate an invalid HTML document.t   pt   divt   spanRR   t   bt   scriptt   tablei    i   s   <%s>i   i   i   s   </%s>s   <html>s   
s   </html>(   RL   RO   RV   RP   R   RX   R   (   t   num_elementst	   tag_namest   elementsRR   RP   t   tag_name(    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   rdoc    s    "i † c   
      C   sS  d t  GHt |  ƒ } d t | ƒ GHxœ d d d g d d g D]‚ } t } y1 t j ƒ  } t | | ƒ } t j ƒ  } t } Wn& t k
 r¢ } d | GHt j	 ƒ  n X| r= d | | | f GHq= q= Wd	 d
 l
 m } t j ƒ  } | j | ƒ t j ƒ  } d | | GHd	 d l }	 |	 j ƒ  } t j ƒ  } | j | ƒ t j ƒ  } d | | GHd S(   s.   Very basic head-to-head performance benchmark.s1   Comparative parser benchmark on Beautiful Soup %ss3   Generated a large invalid HTML document (%d bytes).R   R.   R   s   html.parsers   %s could not parse the markup.s"   BS4+%s parsed the markup in %.2fs.iÿÿÿÿ(   R   s$   Raw lxml parsed the markup in %.2fs.Ns(   Raw html5lib parsed the markup in %.2fs.(   R   Rc   t   lenR   t   timeR   R   R    R!   R"   R   R   t   HTMLR   R   t   parse(
   R_   R$   R*   R+   t   aR,   R\   R(   R   R   (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   benchmark_parsers²   s4    	
	R   c         C   s‚   t  j ƒ  } | j } t |  ƒ } t d t d | d | ƒ } t j d | | | ƒ t j	 | ƒ } | j
 d ƒ | j d d ƒ d  S(   Nt   bs4R$   R*   s   bs4.BeautifulSoup(data, parser)t
   cumulatives   _html5lib|bs4i2   (   t   tempfilet   NamedTemporaryFileR&   Rc   t   dictRj   t   cProfilet   runctxt   pstatst   Statst
   sort_statst   print_stats(   R_   R*   t
   filehandlet   filenameR$   t   varst   stats(    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   profileÒ   s    	t   __main__(    RF   t   __license__Ro   R   R   Rj   R   R   t   bs4.builderR   R   Rq   RO   Rl   Re   R!   R   R-   R   R5   R6   RH   RN   RM   RT   RX   Rc   Ri   Ry   RD   t   stdinR
   (    (    (    s0   /usr/lib/python2.7/site-packages/bs4/diagnose.pyt   <module>   s8   	C
!		                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  