ÿØÿà 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/urllib3/poolmanager.pyo                                             0000644                 00000035165 15267246730 0017052 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ó
nf·\c           @@  s”  d  d l  m Z d  d l Z d  d l Z d  d l Z d d l m Z d d l m Z m	 Z	 d d l m
 Z
 d d l m Z m Z m Z d d l m Z d d	 l m Z d d
 l m Z d d l m Z d d l m Z d d d g Z e j e ƒ Z d6 Z d7 Z e j d/ e ƒ Z  d0 „  Z! i e j" e! e  ƒ d1 6e j" e! e  ƒ d2 6Z# i e d1 6e	 d2 6Z$ d e f d3 „  ƒ  YZ% d e% f d4 „  ƒ  YZ& d5 „  Z' d S(8   i    (   t   absolute_importNi   (   t   RecentlyUsedContainer(   t   HTTPConnectionPoolt   HTTPSConnectionPool(   t   port_by_scheme(   t   LocationValueErrort   MaxRetryErrort   ProxySchemeUnknown(   t   six(   t   urljoin(   t   RequestMethods(   t	   parse_url(   t   Retryt   PoolManagert   ProxyManagert   proxy_from_urlt   key_filet	   cert_filet	   cert_reqst   ca_certst   ssl_versiont   ca_cert_dirt   ssl_contextt
   key_schemet   key_hostt   key_portt   key_timeoutt   key_retriest
   key_strictt	   key_blockt   key_source_addresst   key_key_filet   key_cert_filet   key_cert_reqst   key_ca_certst   key_ssl_versiont   key_ca_cert_dirt   key_ssl_contextt   key_maxsizet   key_headerst
   key__proxyt   key__proxy_headerst   key_socket_optionst   key__socks_optionst   key_assert_hostnamet   key_assert_fingerprintt   key_server_hostnamet   PoolKeyc         C@  s  | j  ƒ  } | d j ƒ  | d <| d j ƒ  | d <xG d D]? } | | k r; | | d	 k	 r; t | | j ƒ  ƒ | | <q; q; W| j d ƒ } | d	 k	 r¬ t | ƒ | d <n  x1 t | j ƒ  ƒ D] } | j	 | ƒ | d | <q¿ Wx* |  j
 D] } | | k rê d	 | | <qê qê W|  | �  S(
   s÷  
    Create a pool key out of a request context dictionary.

    According to RFC 3986, both the scheme and host are case-insensitive.
    Therefore, this function normalizes both before constructing the pool
    key for an HTTPS request. If you wish to change this behaviour, provide
    alternate callables to ``key_fn_by_scheme``.

    :param key_class:
        The class to use when constructing the key. This should be a namedtuple
        with the ``scheme`` and ``host`` keys at a minimum.
    :type  key_class: namedtuple
    :param request_context:
        A dictionary-like object that contain the context for a request.
    :type  request_context: dict

    :return: A namedtuple that can be used as a connection pool key.
    :rtype:  PoolKey
    t   schemet   hostt   headerst   _proxy_headerst   _socks_optionst   socket_optionst   key_(   R2   R3   R4   N(   t   copyt   lowert   Nonet	   frozensett   itemst   gett   tuplet   listt   keyst   popt   _fields(   t	   key_classt   request_contextt   contextt   keyt   socket_optst   field(    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyt   _default_key_normalizer;   s    !t   httpt   httpsc           B@  s’   e  Z d  Z d Z d d d „ Z d „  Z d „  Z d d „ Z d „  Z	 d d d d „ Z
 d	 „  Z d d
 „ Z d d „ Z d „  Z e d „ Z RS(   s$  
    Allows for arbitrary requests while transparently keeping track of
    necessary connection pools for you.

    :param num_pools:
        Number of connection pools to cache before discarding the least
        recently used pool.

    :param headers:
        Headers to include with all requests, unless other headers are given
        explicitly.

    :param \**connection_pool_kw:
        Additional parameters are used to create fresh
        :class:`urllib3.connectionpool.ConnectionPool` instances.

    Example::

        >>> manager = PoolManager(num_pools=2)
        >>> r = manager.request('GET', 'http://google.com/')
        >>> r = manager.request('GET', 'http://google.com/mail')
        >>> r = manager.request('GET', 'http://yahoo.com/')
        >>> len(manager.pools)
        2

    i
   c         K@  sM   t  j |  | ƒ | |  _ t | d d „  ƒ|  _ t |  _ t j ƒ  |  _ d  S(   Nt   dispose_funcc         S@  s
   |  j  ƒ  S(   N(   t   close(   t   p(    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyt   <lambda>�   t    (   R
   t   __init__t   connection_pool_kwR   t   poolst   pool_classes_by_schemet   key_fn_by_schemeR7   (   t   selft	   num_poolsR2   RQ   (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyRP   ™   s    			c         C@  s   |  S(   N(    (   RU   (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyt	   __enter__¤   s    c         C@  s   |  j  ƒ  t S(   N(   t   cleart   False(   RU   t   exc_typet   exc_valt   exc_tb(    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyt   __exit__§   s    
c         C@  sŒ   |  j  | } | d k r+ |  j j ƒ  } n  x d D] } | j | d ƒ q2 W| d k r| x! t D] } | j | d ƒ q_ Wn  | | | | � S(   s·  
        Create a new :class:`ConnectionPool` based on host, port, scheme, and
        any additional pool keyword arguments.

        If ``request_context`` is provided, it is provided as keyword arguments
        to the pool class used. This method is used to actually create the
        connection pools handed out by :meth:`connection_from_url` and
        companion methods. It is intended to be overridden for customization.
        R0   R1   t   portRI   N(   R0   R1   R^   (   RS   R9   RQ   R7   R@   t   SSL_KEYWORDS(   RU   R0   R1   R^   RC   t   pool_clsRE   t   kw(    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyt	   _new_pool¬   s    
c         C@  s   |  j  j ƒ  d S(   s´   
        Empty our store of pools and direct them all to close.

        This will not affect in-flight connections, but they will not be
        re-used after completion.
        N(   RR   RX   (   RU   (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyRX   Ç   s    RI   c         C@  sz   | s t  d ƒ ‚ n  |  j | ƒ } | p- d | d <| sY t j | d j ƒ  d ƒ } n  | | d <| | d <|  j | ƒ S(   s�  
        Get a :class:`ConnectionPool` based on the host, port, and scheme.

        If ``port`` isn't given, it will be derived from the ``scheme`` using
        ``urllib3.connectionpool.port_by_scheme``. If ``pool_kwargs`` is
        provided, it is merged with the instance's ``connection_pool_kw``
        variable and used to create the new connection pool, if one is
        needed.
        s   No host specified.RI   R0   iP   R^   R1   (   R   t   _merge_pool_kwargsR   R<   R8   t   connection_from_context(   RU   R1   R^   R0   t   pool_kwargsRC   (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyt   connection_from_hostÐ   s    

c         C@  s<   | d j  ƒ  } |  j | } | | ƒ } |  j | d | ƒS(   sâ   
        Get a :class:`ConnectionPool` based on the request context.

        ``request_context`` must at least contain the ``scheme`` key and its
        value must be a key in ``key_fn_by_scheme`` instance variable.
        R0   RC   (   R8   RT   t   connection_from_pool_key(   RU   RC   R0   t   pool_key_constructort   pool_key(    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyRd   ç   s    c      
   C@  sy   |  j  j �g |  j  j | ƒ } | r) | S| d } | d } | d } |  j | | | d | ƒ} | |  j  | <Wd QX| S(   sû   
        Get a :class:`ConnectionPool` based on the provided pool key.

        ``pool_key`` should be a namedtuple that only contains immutable
        objects. At a minimum it must have the ``scheme``, ``host``, and
        ``port`` fields.
        R0   R1   R^   RC   N(   RR   t   lockR<   Rb   (   RU   Ri   RC   t   poolR0   R1   R^   (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyRg   ô   s    


c         C@  s4   t  | ƒ } |  j | j d | j d | j d | ƒS(   sÖ  
        Similar to :func:`urllib3.connectionpool.connection_from_url`.

        If ``pool_kwargs`` is not provided and a new pool needs to be
        constructed, ``self.connection_pool_kw`` is used to initialize
        the :class:`urllib3.connectionpool.ConnectionPool`. If ``pool_kwargs``
        is provided, it is used instead. Note that if a new pool does not
        need to be created for the request, the provided ``pool_kwargs`` are
        not used.
        R^   R0   Re   (   R   Rf   R1   R^   R0   (   RU   t   urlRe   t   u(    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyt   connection_from_url  s    !c         C@  sq   |  j  j ƒ  } | rm xU | j ƒ  D]D \ } } | d k r\ y | | =Wqf t k
 rX qf Xq" | | | <q" Wn  | S(   s  
        Merge a dictionary of override values for self.connection_pool_kw.

        This does not modify self.connection_pool_kw and returns a new dict.
        Any keys in the override dictionary with a value of ``None`` are
        removed from the merged dictionary.
        N(   RQ   R7   R;   R9   t   KeyError(   RU   t   overridet   base_pool_kwargsRE   t   value(    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyRc     s    c         K@  s  t  | ƒ } |  j | j d | j d | j ƒ} t | d <t | d <d | k rf |  j j ƒ  | d <n  |  j d k	 rœ | j d k rœ | j
 | | | � } n | j
 | | j | � } | oÃ | j ƒ  } | sÐ | St | | ƒ } | j d k r÷ d } n  | j d	 ƒ }	 t |	 t ƒ s-t j |	 d | ƒ}	 n  |	 j rŸ| j | ƒ rŸt t j | d ƒ ƒ }
 x= |
 D]2 } | j ƒ  |	 j k rf| d j | d ƒ qfqfWn  y" |	 j | | d
 | d | ƒ}	 Wn! t k
 rä|	 j rà‚  n  | SX|	 | d	 <| | d <t j d | | ƒ |  j
 | | | � S(   s]  
        Same as :meth:`urllib3.connectionpool.HTTPConnectionPool.urlopen`
        with custom cross-host redirect logic and only sends the request-uri
        portion of the ``url``.

        The given ``url`` parameter must be absolute, such that an appropriate
        :class:`urllib3.connectionpool.ConnectionPool` can be chosen for it.
        R^   R0   t   assert_same_hostt   redirectR2   RI   i/  t   GETt   retriest   responset   _pools   Redirecting %s -> %sN(   R   Rf   R1   R^   R0   RY   R2   R7   t   proxyR9   t   urlopent   request_urit   get_redirect_locationR	   t   statusR<   t
   isinstanceR   t   from_intt   remove_headers_on_redirectt   is_same_hostR>   R   t   iterkeysR8   R@   t	   incrementR   t   raise_on_redirectt   logt   info(   RU   t   methodRl   Rt   Ra   Rm   t   connRw   t   redirect_locationRv   R2   t   header(    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyRz   /  sD    	$

		"	

N(   t   __name__t
   __module__t   __doc__R9   Ry   RP   RW   R]   Rb   RX   Rf   Rd   Rg   Rn   Rc   t   TrueRz   (    (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyR   {   s   						c           B@  sJ   e  Z d  Z d d d d „ Z d d d d „ Z d d „ Z e d „ Z RS(   sx  
    Behaves just like :class:`PoolManager`, but sends all requests through
    the defined proxy, using the CONNECT method for HTTPS URLs.

    :param proxy_url:
        The URL of the proxy to be used.

    :param proxy_headers:
        A dictionary containing headers that will be sent to the proxy. In case
        of HTTP they are being sent with each request, while in the
        HTTPS/CONNECT case they are sent only once. Could be used for proxy
        authentication.

    Example:
        >>> proxy = urllib3.ProxyManager('http://localhost:3128/')
        >>> r1 = proxy.request('GET', 'http://google.com/')
        >>> r2 = proxy.request('GET', 'http://httpbin.org/')
        >>> len(proxy.pools)
        1
        >>> r3 = proxy.request('GET', 'https://httpbin.org/')
        >>> r4 = proxy.request('GET', 'https://twitter.com/')
        >>> len(proxy.pools)
        3

    i
   c         K@  sà   t  | t ƒ r. d | j | j | j f } n  t | ƒ } | j sm t j | j d ƒ } | j d | ƒ } n  | j d k rŽ t	 | j ƒ ‚ n  | |  _
 | p  i  |  _ |  j
 | d <|  j | d <t t |  ƒ j | | | � d  S(	   Ns
   %s://%s:%iiP   R^   RI   RJ   t   _proxyR3   (   RI   RJ   (   R~   R   R0   R1   R^   R   R   R<   t   _replaceR   Ry   t   proxy_headerst   superR   RP   (   RU   t	   proxy_urlRV   R2   R‘   RQ   Ry   R^   (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyRP   ˆ  s    		RI   c         C@  sb   | d k r. t  t |  ƒ j | | | d | ƒSt  t |  ƒ j |  j j |  j j |  j j d | ƒS(   NRJ   Re   (   R’   R   Rf   Ry   R1   R^   R0   (   RU   R1   R^   R0   Re   (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyRf   Ÿ  s
    c         C@  sI   i d d 6} t  | ƒ j } | r/ | | d <n  | rE | j | ƒ n  | S(   s�   
        Sets headers needed by proxies: specifically, the Accept and Host
        headers. Only sets headers not provided by the user.
        s   */*t   Acceptt   Host(   R   t   netloct   update(   RU   Rl   R2   t   headers_R–   (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyt   _set_proxy_headers§  s    c         K@  sk   t  | ƒ } | j d k rI | j d |  j ƒ } |  j | | ƒ | d <n  t t |  ƒ j | | d | | �S(   s@   Same as HTTP(S)ConnectionPool.urlopen, ``url`` must be absolute.RI   R2   Rt   (   R   R0   R<   R2   R™   R’   R   Rz   (   RU   R‡   Rl   Rt   Ra   Rm   R2   (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyRz   ¶  s
    N(	   R‹   RŒ   R�   R9   RP   Rf   R™   RŽ   Rz   (    (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyR   m  s   c         K@  s   t  d |  | � S(   NR“   (   R   (   Rl   Ra   (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyR   Ä  s    (   R   R   R   R   R   R   R   (   R   R   R   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   ((   t
   __future__R    t   collectionst	   functoolst   loggingt   _collectionsR   t   connectionpoolR   R   R   t
   exceptionsR   R   R   t   packagesR   t   packages.six.moves.urllib.parseR	   t   requestR
   t   util.urlR   t
   util.retryR   t   __all__t	   getLoggerR‹   R…   R_   t   _key_fieldst
   namedtupleR/   RH   t   partialRT   RS   R   R   R   (    (    (    s7   /usr/lib/python2.7/site-packages/urllib3/poolmanager.pyt   <module>   sf                           	5
òW                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           