ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ 'Yc@sdZdddgZddlZddlmZmZyDddlmZmZm Z m Z m Z m Z m Z e e fZWnEek rddlmZmZm Z m Z m Z m Z e ZnXddd Zddd Zdd Zd Zejd ejjZdddYZdZdZyddlmZWn!ek rjddlmZnXejdjZ ye!Wne"k re#Z!nXdZ$dS(s5External interface to the BeautifulSoup HTML parser. t fromstringtparset convert_treeiN(tetreethtml(t BeautifulSouptTagtCommenttProcessingInstructiontNavigableStringt DeclarationtDoctype(RRRRR R cKst||||S(sParse a string of HTML data into an Element tree using the BeautifulSoup parser. Returns the root ```` Element of the tree. You can pass a different BeautifulSoup parser through the `beautifulsoup` keyword, and a diffent Element factory function through the `makeelement` keyword. By default, the standard ``BeautifulSoup`` class and the default factory of `lxml.html` are used. (t_parse(tdatat beautifulsoupt makeelementtbsargs((s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyRs cKs@t|dst|}nt||||}tj|S(sYParse a file into an ElemenTree using the BeautifulSoup parser. You can pass a different BeautifulSoup parser through the `beautifulsoup` keyword, and a diffent Element factory function through the `makeelement` keyword. By default, the standard ``BeautifulSoup`` class and the default factory of `lxml.html` are used. tread(thasattrtopenR Rt ElementTree(tfileRRRtroot((s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyR$s cCs=t||}|j}x|D]}|j|q"W|S(sConvert a BeautifulSoup tree to a list of Element trees. Returns a list instead of a single root Element to support HTML-like soup with more than one root element. You can pass a different Element factory through the `makeelement` keyword. (t _convert_treet getchildrentremove(tbeautiful_soup_treeRRtchildrentchild((s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyR3s   cKs|dkrt}nt|dr@d|kr@d|ds(R1tdicttitemstlisttjoinRb(tbs_attrstattribsRdRe((s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyt map_attrsscSsMt|dkr+|jpd||_n|djp;d||d_dS(Niti(R"ttextttail(R`Rn((s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyt append_textscs|j}|dk rK|r'|nd}tj||jd|}n-|r]|ni}|jd|}xb|D]Z}yt|}Wntk rn X|dk r|||qq||qW|S(Ntattrib(R(R!Rt SubElementR'R]R^(R_R`R(RktresRRT(RKRVRRl(s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyt convert_tags      cSs/tj|}|dk r+|j|n|S(N(Rt HtmlCommentR!RS(R_R`Rs((s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pytconvert_comments cSsW|jdr|d }ntj|jdd}|dk rS|j|n|S(Nt?iRai(tendswithRRtsplitR!RS(R_R`Rs((s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyt convert_pi s   cs&|dk r"|t|ndS(N(R!Rb(R_R`(Rp(s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyt convert_texts (R!RR&RRR (RRZRtRvRzR{((RpRKRVR\RRlRWs:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyR5s ' (tname2codepoints&(\w+);cCs |s dSd}t||S(NRmcSs=ytt|jdSWntk r8|jdSXdS(Nii(tunichrR|tgroupR^(tm((s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pytunescape_entity5s (thandle_entities(R;R((s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyRb1s ((%t__doc__t__all__tretlxmlRRtbs4RRRRR R R R3t ImportErrorR!RRRR tcompilet IGNORECASERPR<R&RR5t html.entitiesR|thtmlentitydefstsubRR}t NameErrortchrRb(((s:/usr/lib64/python2.7/site-packages/lxml/html/soupparser.pyts: 4 .    U c