mò
­fIc           @   s½  d  k  l Z l Z l Z l Z l Z y e ƒ  Wn e j
 o e d ƒ ‚ n Xd k l Z l	 Z	 l
 Z
 l Z l Z d k l Z d k l Z l Z l Z d k l Z d k l Z l Z l Z l Z d k Z d a g  Z d	 „  Z d
 „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 d Z2 d „  Z3 d  „  Z4 d! „  Z5 d" f  d# „  ƒ  YZ6 d$ „  Z7 d% f  d& „  ƒ  YZ8 d' „  Z9 d( e f d) „  ƒ  YZ: d* „  Z; d+ „  Z< d, „  Z= d- „  Z> e? e d. e i@ d/ e i@ d0 ƒ ƒ iA ƒ  ZB d1 „  ZC d2 „  ZD d3 „  ZE d4 „  ZF d5 „  ZG d6 „  ZH d7 „  ZI d8 „  ZJ d9 „  ZK d: „  ZL d; f  d< „  ƒ  YZM d= „  ZN d> „  ZO d? „  ZP d@ „  ZQ dA „  ZR dB „  ZS dC „  ZT dD „  ZU eV ƒ  iW ƒ  ZW eW iX ƒ  x9 eW D]1 \ ZY ZZ eY dE  dF j o e eZ ƒ  eY ƒ q.q.W[W e o dG t e[ e ƒ f GHn e o, e dH e[ e ƒ t dI i\ e ƒ f ƒ ‚ n d S(J   (   s   make_parsers   ContentHandlers   SAXExceptions   SAXReaderNotAvailables   SAXParseExceptions   no XML parsers available(   s   XMLGenerators   escapes   unescapes	   quoteattrs   XMLFilterBase(   s   create_parser(   s   InputSources   AttributesImpls   AttributesNSImpl(   s   StringIO(   s   verifys   verboses
   TestFaileds   findfileNi    c         C   s:   t  d a  |  o t o d G| GHq6 n t i | ƒ d  S(   Ni   t   Passed(   t   testst   outcomet   verboset   namet   failurest   append(   R   R   (    (    t*   /mit/python/lib/python2.4/test/test_sax.pyt   confirm   s     
c          C   sž   yˆ d k  l } | ƒ  }  d k  l } | ƒ  }  d k  l } | ƒ  }  d k  l } | ƒ  }  d k  l } | ƒ  }  d k  l } | ƒ  }  Wn d Sn X|  Sd  S(   N(   s   make_parseri    (   t   xml.saxt   make_parsert   p(   R   R
   (    (    R   t   test_make_parser2"   s     					c           C   s   t  d ƒ d j S(   Ns   Donald Duck & Cos   Donald Duck &amp; Co(   t   escape(    (    (    R   t   test_escape_basicA   s    c           C   s   t  d ƒ d j S(   Ns   <Donald Duck & Co>s   &lt;Donald Duck &amp; Co&gt;(   R   (    (    (    R   t   test_escape_allD   s    c           C   s   t  d h  d d <ƒ d j S(   Ns
   Hei på degt   ås   &aring;s   Hei p&aring; deg(   R   (    (    (    R   t   test_escape_extraG   s    c           C   s   t  d ƒ d j S(   Ns   Donald Duck &amp; Cos   Donald Duck & Co(   t   unescape(    (    (    R   t   test_unescape_basicL   s    c           C   s   t  d ƒ d j S(   Ns   &lt;Donald Duck &amp; Co&gt;s   <Donald Duck & Co>(   R   (    (    (    R   t   test_unescape_allO   s    c           C   s   t  d h  d d <ƒ d j S(   Ns
   Hei på degR   s   &aring;s   Hei p&aring; deg(   R   (    (    (    R   t   test_unescape_extraR   s    c           C   s   t  d h  d d <ƒ d j S(   Ns	   &amp;foo;s   &foo;t   splat(   R   (    (    (    R   t   test_unescape_amp_extraU   s    c           C   s   t  d ƒ d j S(   Ns   Donald Duck & Cos   "Donald Duck &amp; Co"(   t	   quoteattr(    (    (    R   t   test_quoteattr_basicZ   s    c           C   s   t  d ƒ d j S(   Ns   Includes "double" quotess   'Includes "double" quotes'(   R   (    (    (    R   t   test_single_quoteattr]   s    c           C   s   t  d ƒ d j S(   Ns   Includes 'single' quotess   "Includes 'single' quotes"(   R   (    (    (    R   t   test_double_quoteattra   s    c           C   s   t  d ƒ d j S(   Ns%   Includes 'single' and "double" quotess1   "Includes 'single' and &quot;double&quot; quotes"(   R   (    (    (    R   t   test_single_double_quoteattre   s    c          C   s)   y t  d g ƒ }  Wn d Sn X|  Sd  S(   Ns   xml.parsers.no_such_parseri    (   R
   R   (   R   (    (    R   t   test_make_parserk   s
    s,   <?xml version="1.0" encoding="iso-8859-1"?>
c          C   sZ   t  ƒ  }  t |  ƒ } | i ƒ  | i d h  ƒ | i d ƒ | i ƒ  |  i ƒ  t	 d j S(   Nt   docs   <doc></doc>(
   t   StringIOt   resultt   XMLGeneratort   gent   startDocumentt   startElementt
   endElementt   endDocumentt   getvaluet   start(   R    R"   (    (    R   t   test_xmlgen_basicz   s    	

c          C   sg   t  ƒ  }  t |  ƒ } | i ƒ  | i d h  ƒ | i d ƒ | i d ƒ | i ƒ  |  i	 ƒ  t
 d j S(   NR   t   huheis   <doc>huhei</doc>(   R   R    R!   R"   R#   R$   t
   charactersR%   R&   R'   R(   (   R    R"   (    (    R   t   test_xmlgen_content„   s    	

c          C   sj   t  ƒ  }  t |  ƒ } | i ƒ  | i d d ƒ | i d h  ƒ | i d ƒ | i ƒ  |  i	 ƒ  t
 d j S(   Nt   testt   dataR   s   <?test data?><doc></doc>(   R   R    R!   R"   R#   t   processingInstructionR$   R%   R&   R'   R(   (   R    R"   (    (    R   t   test_xmlgen_pi   s    	

c          C   sg   t  ƒ  }  t |  ƒ } | i ƒ  | i d h  ƒ | i d ƒ | i d ƒ | i ƒ  |  i	 ƒ  t
 d j S(   NR   s   <huhei&s   <doc>&lt;huhei&amp;</doc>(   R   R    R!   R"   R#   R$   R+   R%   R&   R'   R(   (   R    R"   (    (    R   t   test_xmlgen_content_escapeœ   s    	

c          C   sÕ   t  ƒ  }  t |  ƒ } | i ƒ  | i d h  d d <ƒ | i d h  d d <ƒ | i d ƒ | i d h  d d <ƒ | i d ƒ | i d h  d d <ƒ | i d ƒ | i d ƒ | i ƒ  |  i ƒ  t	 d j S(	   NR   t   at   "t   et   's   '"s   
	sK   <doc a='"'><e a="'"></e><e a="'&quot;"></e><e a="&#10;&#13;&#9;"></e></doc>(
   R   R    R!   R"   R#   R$   R%   R&   R'   R(   (   R    R"   (    (    R   t   test_xmlgen_attr_escape¨   s    	

c          C   sg   t  ƒ  }  t |  ƒ } | i ƒ  | i d h  ƒ | i d ƒ | i d ƒ | i ƒ  |  i	 ƒ  t
 d j S(   NR   t    s   <doc> </doc>(   R   R    R!   R"   R#   R$   t   ignorableWhitespaceR%   R&   R'   R(   (   R    R"   (    (    R   t   test_xmlgen_ignorable»   s    	

s%   http://www.python.org/xml-ns/saxtest/c          C   s°   t  ƒ  }  t |  ƒ } | i ƒ  | i d t ƒ | i t d f d h  ƒ | i d d  h  ƒ | i	 d d  ƒ | i	 t d f d ƒ | i
 d ƒ | i ƒ  |  i ƒ  t d t j S(   Nt   ns1R   s   ns1:doct   udocs/   <ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>(   NR;   (   NR;   (   R   R    R!   R"   R#   t   startPrefixMappingt   ns_urit   startElementNSt   Nonet   endElementNSt   endPrefixMappingR&   R'   R(   (   R    R"   (    (    R   t   test_xmlgen_nsÉ   s    	

c          C   sŠ   t  ƒ  } t | ƒ } t ƒ  }  |  i | ƒ |  i ƒ  |  i d h  ƒ |  i	 d ƒ |  i
 d ƒ |  i d ƒ |  i ƒ  | i ƒ  t d j S(   NR   t   contentR7   s   <doc>content </doc>(   R   R    R!   R"   t   XMLFilterBaset   filtert   setContentHandlerR#   R$   R+   R8   R%   R&   R'   R(   (   RE   R    R"   (    (    R   t   test_filter_basicÝ   s    		

c          C   s_   t  ƒ  } t ƒ  } t | ƒ }  | i |  ƒ | i t t	 d t
 i d ƒ ƒ ƒ | i ƒ  t j S(   NR-   t   xml(   t   create_parsert   parserR   R    R!   t   xmlgenRF   t   parset   opent   findfilet   ost   extsepR'   t   xml_test_out(   RK   RJ   R    (    (    R   t   test_expat_fileô   s    		$t   TestDTDHandlerc           B   s#   t  Z d „  Z d „  Z d „  Z RS(   Nc         C   s   g  |  _ g  |  _ d  S(   N(   t   selft
   _notationst	   _entities(   RT   (    (    R   t   __init__  s    	c         C   s   |  i i | | | f ƒ d  S(   N(   RT   RU   R   R   t   publicIdt   systemId(   RT   R   RX   RY   (    (    R   t   notationDecl  s    c         C   s    |  i i | | | | f ƒ d  S(   N(   RT   RV   R   R   RX   RY   t   ndata(   RT   R   RX   RY   R[   (    (    R   t   unparsedEntityDecl	  s    (   t   __name__t
   __module__RW   RZ   R\   (    (    (    R   RS      s   		c          C   s   t  ƒ  } t ƒ  }  | i |  ƒ | i d ƒ | i d ƒ | i d ƒ | i d ƒ | i d ƒ | i ƒ  |  i d
 g j o |  i	 d g j S(   Ns   <!DOCTYPE doc [
s-     <!ENTITY img SYSTEM "expat.gif" NDATA GIF>
sW     <!NOTATION GIF PUBLIC "-//CompuServe//NOTATION Graphics Interchange Format 89a//EN">
s   ]>
s   <doc></doc>t   GIFs;   -//CompuServe//NOTATION Graphics Interchange Format 89a//ENt   imgs	   expat.gif(   R_   s;   -//CompuServe//NOTATION Graphics Interchange Format 89a//ENN(   R`   Ns	   expat.gifR_   (
   RI   RJ   RS   t   handlert   setDTDHandlert   feedt   closeRU   R?   RV   (   Ra   RJ   (    (    R   t   test_expat_dtdhandler  s    		
t   TestEntityResolverc           B   s   t  Z d „  Z RS(   Nc         C   s    t  ƒ  } | i t d ƒ ƒ | S(   Ns	   <entity/>(   t   InputSourcet   inpsrct   setByteStreamR   (   RT   RX   RY   Rh   (    (    R   t   resolveEntity  s    	(   R]   R^   Rj   (    (    (    R   Rf     s   c          C   s‡   t  ƒ  }  |  i t ƒ  ƒ t ƒ  } |  i t | ƒ ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i	 ƒ  | i
 ƒ  t d j S(   Ns   <!DOCTYPE doc [
s#     <!ENTITY test SYSTEM "whatever">
s   ]>
s   <doc>&test;</doc>s   <doc><entity></entity></doc>(   RI   RJ   t   setEntityResolverRf   R   R    RF   R!   Rc   Rd   R'   R(   (   RJ   R    (    (    R   t   test_expat_entityresolver$  s    		
t   AttrGathererc           B   s   t  Z d „  Z d „  Z RS(   Nc         C   s   | |  _ d  S(   N(   t   attrsRT   t   _attrs(   RT   R   Rn   (    (    R   R$   6  s    c         C   s   | |  _ d  S(   N(   Rn   RT   Ro   (   RT   R   t   qnameRn   (    (    R   R>   9  s    (   R]   R^   R$   R>   (    (    (    R   Rm   4  s   	c          C   sC   t  ƒ  } t ƒ  }  | i |  ƒ | i d ƒ | i ƒ  t |  i ƒ S(   Ns   <doc/>(	   RI   RJ   Rm   t   gatherRF   Rc   Rd   t   verify_empty_attrsRo   (   Rq   RJ   (    (    R   t   test_expat_attrs_empty<  s    		
c          C   sC   t  ƒ  } t ƒ  }  | i |  ƒ | i d ƒ | i ƒ  t |  i ƒ S(   Ns   <doc attr='val'/>(	   RI   RJ   Rm   Rq   RF   Rc   Rd   t   verify_attrs_wattrRo   (   Rq   RJ   (    (    R   t   test_expat_attrs_wattrF  s    		
c          C   sF   t  d ƒ } t ƒ  }  | i |  ƒ | i d ƒ | i ƒ  t |  i ƒ S(   Ni   s   <doc/>(	   RI   RJ   Rm   Rq   RF   Rc   Rd   t   verify_empty_nsattrsRo   (   Rq   RJ   (    (    R   t   test_expat_nsattrs_emptyP  s    	
c          C   s†  t  d ƒ }  t ƒ  } |  i | ƒ |  i d t ƒ |  i ƒ  | i } | i
 ƒ  d j o-| i ƒ  t d f g j o| i ƒ  g  j p | i ƒ  d g j oè t | ƒ d j oÕ | i t d f ƒ o¿ | i ƒ  t d f g j o£ | i t d f ƒ d j o‡ | i t d f d ƒ d j oh | i ƒ  t d f d f g j oF | i ƒ  d g j o0 | i t d f ƒ d j o | t d f d j S(   Ni   s"   <doc xmlns:ns='%s' ns:attr='val'/>t   attrs   ns:attrt   vali   (   RI   RJ   Rm   Rq   RF   Rc   R=   Rd   Ro   Rn   t	   getLengtht   getNamest	   getQNamest   lent   has_keyt   keyst   gett   itemst   valuest   getValue(   RJ   Rq   Rn   (    (    R   t   test_expat_nsattrs_wattrZ  s    	
	R-   RH   t   outc          C   sY   t  ƒ  } t ƒ  } t | ƒ }  | i |  ƒ | i t d t	 i
 d ƒ ƒ | i ƒ  t j S(   NR-   RH   (   RI   RJ   R   R    R!   RK   RF   RL   RN   RO   RP   R'   RQ   (   RK   RJ   R    (    (    R   t   test_expat_inpsource_filenameu  s    		c          C   s_   t  ƒ  } t ƒ  } t | ƒ }  | i |  ƒ | i t t	 d t
 i d ƒ ƒ ƒ | i ƒ  t j S(   NR-   RH   (   RI   RJ   R   R    R!   RK   RF   RL   Rg   RN   RO   RP   R'   RQ   (   RK   RJ   R    (    (    R   t   test_expat_inpsource_sysid  s    		$c          C   su   t  ƒ  } t ƒ  } t | ƒ }  | i |  ƒ t ƒ  } | i	 t
 t d t i d ƒ ƒ ƒ | i | ƒ | i ƒ  t j S(   NR-   RH   (   RI   RJ   R   R    R!   RK   RF   Rg   Rh   Ri   RM   RN   RO   RP   RL   R'   RQ   (   RK   RJ   R    Rh   (    (    R   t   test_expat_inpsource_stream‰  s    			$c          C   sc   t  ƒ  } t | ƒ }  t ƒ  } | i |  ƒ | i d ƒ | i d ƒ | i ƒ  | i	 ƒ  t
 d j S(   Ns   <doc>s   </doc>s   <doc></doc>(   R   R    R!   RK   RI   RJ   RF   Rc   Rd   R'   R(   (   RK   RJ   R    (    (    R   t   test_expat_incremental—  s    		
c          C   s¶   t  ƒ  } t | ƒ }  t ƒ  } | i |  ƒ | i d ƒ | i d ƒ t  ƒ  } t | ƒ }  | i |  ƒ | i ƒ  | i d ƒ | i d ƒ | i d ƒ | i	 ƒ  | i
 ƒ  t d j S(   Ns   <doc>t   texts   </doc>s   <doc>text</doc>(   R   R    R!   RK   RI   RJ   RF   Rc   t   resetRd   R'   R(   (   RK   RJ   R    (    (    R   t   test_expat_incremental_reset£  s    			

c          C   s…   t  ƒ  } t | ƒ }  t ƒ  } | i |  ƒ | i d ƒ | i d ƒ | i ƒ  | i	 ƒ  d  j o# | i ƒ  d  j o | i ƒ  d j S(   Ns   <doc>s   </doc>i   (   R   R    R!   RK   RI   RJ   RF   Rc   Rd   t   getSystemIdR?   t   getPublicIdt   getLineNumber(   RK   RJ   R    (    (    R   t   test_expat_locator_noinfoº  s    		
c          C   sg   t  ƒ  } t | ƒ }  t ƒ  } | i |  ƒ | i t d ƒ ƒ | i	 ƒ  t d ƒ j o | i
 ƒ  d  j S(   Ns   test.xml(   R   R    R!   RK   RI   RJ   RF   RL   RN   R   RŽ   R?   (   RK   RJ   R    (    (    R   t   test_expat_locator_withinfoÈ  s    		c          C   s…   t  ƒ  } | i t ƒ  ƒ t ƒ  } | i t d ƒ ƒ d } | i	 | ƒ y | i
 | ƒ Wn% t j
 o }  |  i ƒ  | j Sn Xd  S(   Ns   <foo bar foobar>s   a file name(   RI   RJ   RF   t   ContentHandlerRg   t   sourceRi   R   R   t   setSystemIdRL   t   SAXExceptionR4   R   (   R4   R   RJ   R“   (    (    R   t   test_expat_inpsource_locationÙ  s    		c          C   sR   t  ƒ  }  |  i t ƒ  ƒ y |  i t d ƒ ƒ Wn t j
 o d Sn Xd Sd  S(   Ns   <foo>i   i    (   RI   RJ   RF   R’   RL   R   t   SAXParseException(   RJ   (    (    R   t   test_expat_incompleteå  s    		c           C   s€   t  t d d  t d d ƒ ƒ ƒ t  t d d  t d  d ƒ ƒ ƒ t  t d d  t d d  ƒ ƒ ƒ t  t d d  t d  d  ƒ ƒ ƒ d S(   Nt   messagei   (   t   strR—   R?   t   DummyLocator(    (    (    R   t   test_sax_parse_exception_strï  s    R›   c           B   s5   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc         C   s   | |  _ | |  _ d  S(   N(   t   linenoRT   t   _linenot   colnot   _colno(   RT   R   RŸ   (    (    R   RW     s    	c         C   s   d S(   Nt   pubid(    (   RT   (    (    R   RŽ     s    c         C   s   d S(   Nt   sysid(    (   RT   (    (    R   R   
  s    c         C   s   |  i S(   N(   RT   Rž   (   RT   (    (    R   R     s    c         C   s   |  i S(   N(   RT   R    (   RT   (    (    R   t   getColumnNumber  s    (   R]   R^   RW   RŽ   R   R   R£   (    (    (    R   R›     s
   				c         C   sß  y |  i d ƒ d } Wn t j
 o d } n Xy |  i d ƒ d } Wn t j
 o d } n Xy |  i d ƒ d } Wn t j
 o d } n Xy |  i d ƒ d } Wn t j
 o d } n Xy |  d d } Wn t j
 o d } n X|  i ƒ  d j oÒ |  i ƒ  g  j o¿ |  i ƒ  g  j o¬ t |  ƒ d j o™ |  i d ƒ oˆ |  i ƒ  g  j ou |  i d ƒ d  j o_ |  i d d ƒ d j oF |  i ƒ  g  j o3 |  i ƒ  g  j o  | o | o | o | o | S(   NRx   i    i   Rn   i   (   Rn   Rƒ   t   gvkt   KeyErrort   getValueByQNamet   gvqkt   getNameByQNamet   gnqkt   getQNameByNamet   gqnkt   gikRz   R{   R|   R}   R~   R   R€   R?   R   R‚   (   Rn   R¤   R§   R«   R©   R¬   (    (    R   Rr     s4    




c         C   s9  |  i ƒ  d j o&|  i ƒ  d g j o|  i ƒ  d g j oú t |  ƒ d j oç |  i d ƒ o× |  i ƒ  d g j oÁ |  i d ƒ d j o« |  i d d ƒ d j o’ |  i ƒ  d g j o| |  i	 ƒ  d g j of |  i
 d ƒ d j oP |  i d ƒ d j o: |  i d ƒ d j o$ |  d d j o |  i d ƒ d j S(   Ni   Rx   Ry   i   (   s   attrs   val(   Rn   Rz   R{   R|   R}   R~   R   R€   R   R‚   Rƒ   R¦   R¨   Rª   (   Rn   (    (    R   Rt   F  s    c           C   s   t  t h  ƒ ƒ S(   N(   Rr   t   AttributesImpl(    (    (    R   t   test_attrs_emptyW  s    c           C   s   t  t h  d d <ƒ ƒ S(   NRx   Ry   (   Rt   R­   (    (    (    R   t   test_attrs_wattrZ  s    c         C   s  y |  i t d f ƒ d } Wn t j
 o d } n Xy |  i d ƒ d } Wn t j
 o d } n Xy |  i d ƒ d } Wn t j
 o d } n Xy |  i	 t d f ƒ d } Wn t j
 o d } n Xy |  t d f d } Wn t j
 o d } n X|  i ƒ  d j oä |  i ƒ  g  j oÑ |  i ƒ  g  j o¾ t |  ƒ d j o« |  i t d f ƒ o” |  i ƒ  g  j o |  i t d f ƒ d  j oe |  i t d f d ƒ d j oF |  i ƒ  g  j o3 |  i ƒ  g  j o  | o | o | o | o | S(   NRx   i    i   s   ns:attri   (   Rn   Rƒ   R=   R¤   R¥   R¦   R§   R¨   R©   Rª   R«   R¬   Rz   R{   R|   R}   R~   R   R€   R?   R   R‚   (   Rn   R¤   R§   R«   R©   R¬   (    (    R   Rv   _  s4    




c           C   s   t  t h  h  ƒ ƒ S(   N(   Rv   t   AttributesNSImpl(    (    (    R   t   test_nsattrs_emptyŠ  s    c          C   s¨  t  h  t d f d <h  t d f d <ƒ }  |  i ƒ  d j oh|  i ƒ  t d f g j oL|  i ƒ  d g j o6t |  ƒ d j o#|  i t d f ƒ o|  i ƒ  t d f g j oñ |  i	 t d f ƒ d j oÕ |  i	 t d f d ƒ d j o¶ |  i
 ƒ  t d f d f g j o” |  i ƒ  d g j o~ |  i t d f ƒ d j ob |  i d ƒ d j oL |  i d ƒ t d f j o0 |  t d f d j o |  i t d f ƒ d j S(   NRx   Ry   s   ns:attri   i   (   R°   R=   Rn   Rz   R{   R|   R}   R~   R   R€   R   R‚   Rƒ   R¦   R¨   Rª   (   Rn   (    (    R   t   test_nsattrs_wattr  s    c          C   s•   t  ƒ  } t ƒ  } t | ƒ }  | i |  ƒ | i t d t	 i
 d ƒ ƒ t t d t	 i
 d t	 i
 d ƒ d ƒ } | i | i ƒ  ƒ | i ƒ  d  S(   NR-   RH   R…   t   w(   RI   RJ   R   R    R!   RK   RF   RL   RN   RO   RP   RM   t   outft   writeR'   Rd   (   RK   RJ   R´   R    (    (    R   t   make_test_output¤  s    		+i   t   test_s   %d tests, %d failuress   %d of %d tests failed: %ss   , (]   R	   R
   R’   R•   t   SAXReaderNotAvailableR—   t   ImportErrort   xml.sax.saxutilsR!   R   R   R   RD   t   xml.sax.expatreaderRI   t   xml.sax.xmlreaderRg   R­   R°   t	   cStringIOR   t   test.test_supportt   verifyR   t
   TestFailedRN   RO   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R(   R)   R,   R0   R1   R6   R9   R=   RB   RG   RR   RS   Re   Rf   Rl   Rm   Rs   Ru   Rw   R„   RM   RP   t   readRQ   R†   R‡   Rˆ   R‰   RŒ   R   R‘   R–   R˜   Rœ   R›   Rr   Rt   R®   R¯   Rv   R±   R²   R¶   t   localsR   t   sortR   t   valueR}   t   join(N   R9   R   RR   R   Rm   R   Rw   R   Re   R,   Rs   R   R0   R   R›   RB   R²   RN   R°   Rœ   R±   R   R   R¿   RG   R‰   R„   R’   Rg   R(   RS   R†   R   R!   R­   RÀ   R   R   R¯   R6   RQ   R   RI   R–   R   Rl   R   R1   Rt   RÄ   R‘   R   Rf   R—   R
   R)   RD   R¶   R˜   R   R   R   R¸   R   R=   Rˆ   R   R®   Ru   Rr   R•   R   R   RŒ   Rv   RO   R‡   R   (    (    R   t   ?   sš   %%		
														
											
	
	
	.	
	
							
		+				+			
 