Ë
    Ø]jÚ7  ã                   ó²  — d dl 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
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lmZ d dlmZ d)d„Ze�r G d„ dej6                  j8                  j:                  j<                  «      Z G d„ d«      Z  G d„ dejB                  jD                  «      Z# G d„ dejH                  «      Z%nd„ Z% G d„ de«      Z& G d„ de«      Z' G d„ de&e«      Z( G d„ dejR                  «      Z* G d „ d!ejV                  «      Z, G d"„ d#ejZ                  «      Z. G d$„ d%ej^                  «      Z0d&„ Z1 G d'„ d(ejZ                  «      Z2y)*é    N)Úimport_module)Úsettings©ÚImproperlyConfigured)ÚWSGIHandler)Úoverride_settingsÚ	testcases)ÚClient)ÚClientHandler)ÚRequestFactory)Úforce_bytes)Ú	urlencode)Úrequests)Úapi_settingsc                 ó    — || _         || _        y ©N)Ú_force_auth_userÚ_force_auth_token)ÚrequestÚuserÚtokens      úJ/var/www/zogu/zoguvenv/lib/python3.12/site-packages/rest_framework/test.pyÚforce_authenticater      s   € Ø#€GÔØ %€GÕó    c                   ó   — e Zd Zd„ Zy)Ú
HeaderDictc                 ó$   — | j                  |«      S r   )Ú
getheaders)ÚselfÚkeyÚdefaults      r   Úget_allzHeaderDict.get_all   s   € Ø—?‘? 3Ó'Ð'r   N)Ú__name__Ú
__module__Ú__qualname__r"   © r   r   r   r      s   „ ó	(r   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚMockOriginalResponsec                 ó2   — t        |«      | _        d| _        y ©NF)r   ÚmsgÚclosed)r   Úheaderss     r   Ú__init__zMockOriginalResponse.__init__   s   € Ü! 'Ó*ˆDŒHØˆD�Kr   c                 ó   — | j                   S r   ©r,   ©r   s    r   ÚisclosedzMockOriginalResponse.isclosed#   s   € Ø—;‘;Ðr   c                 ó   — d| _         y )NTr0   r1   s    r   ÚclosezMockOriginalResponse.close&   s	   € ØˆD�Kr   N)r#   r$   r%   r.   r2   r4   r&   r   r   r(   r(      s   „ ò	 ò	ó	r   r(   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚDjangoTestAdapterz¤
        A transport adapter for `requests`, that makes requests via the
        Django WSGI app, rather than making actual HTTP requests over the network.
        c                 ó@   — t        «       | _        t        «       | _        y r   )r   ÚappÚDjangoRequestFactoryÚfactoryr1   s    r   r.   zDjangoTestAdapter.__init__.   s   € Ü"“}ˆDŒHÜ/Ó1ˆD�Lr   c                 ó  — |j                   }|j                  }i }|j                  �Ct        |j                  d«      r|j                  j	                  «       |d<   n|j                  |d<   d|j
                  v r|j
                  d   |d<   |j
                  j                  «       D ]2  \  }}|j                  «       }|dv rŒ||d|j                  dd«      z  <   Œ4  | j                  j                  ||fi |¤Žj                  S )	zb
            Given a `requests.PreparedRequest` instance, return a WSGI environ dict.
            ÚreadÚdatazcontent-typeÚcontent_type)Ú
CONNECTIONzCONTENT-LENGTHzCONTENT-TYPEzHTTP_%sú-Ú_)ÚmethodÚurlÚbodyÚhasattrr<   r-   ÚitemsÚupperÚreplacer:   ÚgenericÚenviron)r   r   rB   rC   Úkwargsr    Úvalues          r   Úget_environzDjangoTestAdapter.get_environ2   sò   € ð —^‘^ˆFØ—+‘+ˆCØˆFð �|‰|Ð'Ü˜7Ÿ<™<¨Ô0Ø%,§\¡\×%6Ñ%6Ó%8�F˜6’Nà%,§\¡\�F˜6‘NØ §¡Ñ0Ø)0¯©¸Ñ)H��~Ñ&ð &Ÿo™o×3Ñ3Ó5ò B‘
��UØ—i‘i“k�ØÐJÑJØØ<A��y 3§;¡;¨s°CÓ#8Ñ8Ò9ð	Bð (�4—<‘<×'Ñ'¨°Ñ>°vÑ>×FÑFÐFr   c                 ó  ‡— i Šdˆfd„	}| j                  |«      }| j                  ||«      }t        j                  dj	                  |«      «      ‰d<   t        j                  j                  j                  di ‰¤Ž}| j                  ||«      S )zR
            Make an outgoing request to the Django WSGI application.
            c                 ó�   •— | j                  d«      \  }}}t        |«      ‰d<   |‰d<   |‰d<   d‰d<   d‰d<   t        |«      ‰d	<   y )
Nú ÚstatusÚreasonr-   é   ÚversionFÚpreload_contentÚoriginal_response)Ú	partitionÚintr(   )Úwsgi_statusÚwsgi_headersÚexc_inforQ   rA   rR   Ú
raw_kwargss         €r   Ústart_responsez.DjangoTestAdapter.send.<locals>.start_responseR   sa   ø€ Ø$/×$9Ñ$9¸#Ó$>Ñ!�˜˜6Ü'*¨6£{�
˜8Ñ$Ø'-�
˜8Ñ$Ø(4�
˜9Ñ%Ø(*�
˜9Ñ%Ø05�
Ð,Ñ-Ü2FÀ|Ó2T�
Ð.Ò/r   r   rD   r   r&   )
rM   r8   ÚioÚBytesIOÚjoinr   ÚpackagesÚurllib3ÚHTTPResponseÚbuild_response)	r   r   ÚargsrK   r]   rJ   Úwsgi_responseÚrawr\   s	           @r   ÚsendzDjangoTestAdapter.sendL   s„   ø€ ð ˆJõUð ×&Ñ& wÓ/ˆGØ ŸH™H W¨nÓ=ˆMô "$§¡¨C¯H©H°]Ó,CÓ!DˆJ�vÑÜ×#Ñ#×+Ñ+×8Ñ8ÑF¸:ÑFˆCð ×&Ñ& w°Ó4Ð4r   c                  ó   — y r   r&   r1   s    r   r4   zDjangoTestAdapter.closef   s   € Ør   N)r#   r$   r%   Ú__doc__r.   rM   rh   r4   r&   r   r   r6   r6   )   s   „ ñ	ò	2ò	Gò4	5ó4	r   r6   c                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ÚRequestsClientc                 ó€   •— t        ‰| �  |i |¤Ž t        «       }| j                  d|«       | j                  d|«       y )Nzhttp://zhttps://)Úsuperr.   r6   Úmount)r   re   rK   ÚadapterÚ	__class__s       €r   r.   zRequestsClient.__init__j   s9   ø€ Ü‰GÑ˜dÐ- fÒ-Ü'Ó)ˆGØ�J‰J�y 'Ô*Ø�J‰J�z 7Õ+r   c                 ój   •— |j                  d«      st        d|z  «      ‚t        ‰| �  ||g|¢­i |¤ŽS )NÚhttpzPMissing "http:" or "https:". Use a fully qualified URL, eg "http://testserver%s")Ú
startswithÚ
ValueErrorrn   r   )r   rB   rC   re   rK   rq   s        €r   r   zRequestsClient.requestp   s<   ø€ Ø—>‘> &Ô)Ü Ð!sÐvyÑ!yÓzÐzÜ‘7‘? 6¨3Ð@°Ò@¸Ñ@Ð@r   )r#   r$   r%   r.   r   Ú__classcell__©rq   s   @r   rl   rl   i   s   ø„ ô	,÷	Að 	Ar   rl   c                  ó   — t        d«      ‚)Nz:requests must be installed in order to use RequestsClient.r   )re   rK   s     r   rl   rl   v   s   € Ü"Ð#_Ó`Ð`r   c                   ó¢   ‡ — e Zd Zej                  Zej                  Zdˆ fd„	Zdd„Z	dd„Z
dd„Zdd„Zdd„Zdd„Zdd„Z	 	 dˆ fd	„	Zˆ fd
„Zˆ xZS )ÚAPIRequestFactoryc                 ó”   •— || _         i | _        | j                  D ]  }|| j                  |j                  <   Œ t	        ‰| �  di |¤Ž y ©Nr&   )Úenforce_csrf_checksÚrenderer_classesÚrenderer_classes_listÚformatrn   r.   )r   r}   ÚdefaultsÚclsrq   s       €r   r.   zAPIRequestFactory.__init__~   sL   ø€ Ø#6ˆÔ Ø "ˆÔØ×-Ñ-ò 	4ˆCØ03ˆD×!Ñ! #§*¡*Ò-ð	4ä‰ÑÑ$˜8Ó$r   c                 óˆ  — |€d|fS |�	|�J d«       ‚|r1	 | j                  ||«      }t        |t        j                  «      }||fS |xs | j
                  }|| j                  v sDJ dj                  |dj                  | j                  D �cg c]
  }d|z   dz   ‘Œ c}«      «      «       ‚ | j                  |   «       }|j                  |«      }|j                  }|j                  rdj                  ||j                  «      }t        |t        «      r|j                  |j                  «      }||fS # t        $ r Y �Œw xY wc c}w )zP
        Encode the data returning a two tuple of (bytes, content_type)
        r   z1You may not set both `format` and `content_type`.zqInvalid format '{}'. Available formats are {}. Set TEST_REQUEST_RENDERER_CLASSES to enable extra request formats.z, ú'z{}; charset={})Ú_encode_jsonÚAttributeErrorr   r   ÚDEFAULT_CHARSETÚdefault_formatr~   r€   r`   ÚrenderÚ
media_typeÚcharsetÚ
isinstanceÚstrÚencode)r   r=   r€   r>   ÚretÚfmtÚrenderers          r   Ú_encode_datazAPIRequestFactory._encode_data…   sj  € ð ˆ<Ø˜Ð&Ð&àˆ~ Ð!5ð 	
Ø?ó	
Ð5ñ ðØ×(Ñ(¨¨|Ó<�ô
 ˜d¤H×$<Ñ$<Ó=ˆCð: �LÐ Ð ð5 Ò2˜t×2Ñ2ˆFà˜T×2Ñ2Ñ2ð ð)ç)/©ØØ—I‘I¸$×:OÑ:OÖP°3˜s S™y¨3›ÒPÓQó*óÐ2ð 5�t×,Ñ,¨VÑ4Ó6ˆHØ—/‘/ $Ó'ˆCð $×.Ñ.ˆLØ×ÒØ/×6Ñ6Ø  (×"2Ñ"2ó �ô
 ˜#œsÔ#Ø—j‘j ×!1Ñ!1Ó2�à�LÐ Ð øôC "ò Úðüò Qs   •D/ Â	D?Ä/	D<Ä;D<c                 óä   — dt        |xs i d¬«      i}|s7d|v r3t        |j                  d«      d   «      }|j                  d«      }||d<   |j	                  |«        | j
                  d|fi |¤ŽS )NÚQUERY_STRINGT)Údoseqú?é   z
iso-8859-1ÚGET)r   r   ÚsplitÚdecodeÚupdaterI   )r   Úpathr=   ÚextraÚrÚquery_strings         r   ÚgetzAPIRequestFactory.get¶   sz   € àœI d¢j¨b¸Ô=ð
ˆñ ˜˜t™ô ' t§z¡z°#£°qÑ'9Ó:ˆLØ'×.Ñ.¨|Ó<ˆLØ ,ˆAˆnÑØ	�‰�ŒØˆt�|‰|˜E 4Ñ-¨1Ñ-Ð-r   c                 óZ   — | j                  |||«      \  }} | j                  d|||fi |¤ŽS )NÚPOST©r’   rI   ©r   rœ   r=   r€   r>   r�   s         r   ÚpostzAPIRequestFactory.postÃ   s7   € Ø!×.Ñ.¨t°V¸\ÓJÑˆˆlØˆt�|‰|˜F D¨$°ÑFÀÑFÐFr   c                 óZ   — | j                  |||«      \  }} | j                  d|||fi |¤ŽS )NÚPUTr£   r¤   s         r   ÚputzAPIRequestFactory.putÇ   s7   € Ø!×.Ñ.¨t°V¸\ÓJÑˆˆlØˆt�|‰|˜E 4¨¨|ÑE¸uÑEÐEr   c                 óZ   — | j                  |||«      \  }} | j                  d|||fi |¤ŽS )NÚPATCHr£   r¤   s         r   ÚpatchzAPIRequestFactory.patchË   s7   € Ø!×.Ñ.¨t°V¸\ÓJÑˆˆlØˆt�|‰|˜G T¨4°ÑGÀÑGÐGr   c                 óZ   — | j                  |||«      \  }} | j                  d|||fi |¤ŽS )NÚDELETEr£   r¤   s         r   ÚdeletezAPIRequestFactory.deleteÏ   s7   € Ø!×.Ñ.¨t°V¸\ÓJÑˆˆlØˆt�|‰|˜H d¨D°,ÑHÀ%ÑHÐHr   c                 óZ   — | j                  |||«      \  }} | j                  d|||fi |¤ŽS )NÚOPTIONSr£   r¤   s         r   ÚoptionszAPIRequestFactory.optionsÓ   s7   € Ø!×.Ñ.¨t°V¸\ÓJÑˆˆlØˆt�|‰|˜I t¨T°<ÑIÀ5ÑIÐIr   c                 óL   •— |�t        |«      |d<   t        ‰| �  |||||fi |¤ŽS )NÚCONTENT_TYPE)r�   rn   rI   )r   rB   rœ   r=   r>   Úsecurer�   rq   s          €r   rI   zAPIRequestFactory.generic×   s>   ø€ ð Ð#Ü$'¨Ó$5ˆE�.Ñ!ä‰w‰Ø�D˜$ ¨fñ?Ø8=ñ?ð 	?r   c                 óJ   •— t        ‰| �  di |¤Ž}| j                   |_        |S r|   )rn   r   r}   Ú_dont_enforce_csrf_checks)r   rK   r   rq   s      €r   r   zAPIRequestFactory.requestà   s*   ø€ Ü‘'‘/Ñ+ FÑ+ˆØ04×0HÑ0HÐ,HˆÔ)Øˆr   ©F©NNr   )NNN)Ú zapplication/octet-streamF)r#   r$   r%   r   ÚTEST_REQUEST_RENDERER_CLASSESr   ÚTEST_REQUEST_DEFAULT_FORMATrˆ   r.   r’   r    r¥   r¨   r«   r®   r±   rI   r   rv   rw   s   @r   rz   rz   z   s_   ø„ Ø(×FÑFÐØ!×=Ñ=€Nõ%ó/!ób.óGóFóHóIóJð *,Ø@Eõ?÷ð r   rz   c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚForceAuthClientHandlerzj
    A patched version of ClientHandler that can enforce authentication
    on the outgoing requests.
    c                 ó@   •— d | _         d | _        t        ‰| �  |i |¤Ž y r   )Ú_force_userÚ_force_tokenrn   r.   )r   re   rK   rq   s      €r   r.   zForceAuthClientHandler.__init__ì   s%   ø€ ØˆÔØ ˆÔÜ‰Ñ˜$Ð) &Ó)r   c                 ód   •— t        || j                  | j                  «       t        ‰| �  |«      S r   )r   r¿   rÀ   rn   Úget_response)r   r   rq   s     €r   rÂ   z#ForceAuthClientHandler.get_responseñ   s-   ø€ ô 	˜7 D×$4Ñ$4°d×6GÑ6GÔHÜ‰wÑ# GÓ,Ð,r   )r#   r$   r%   rj   r.   rÂ   rv   rw   s   @r   r½   r½   æ   s   ø„ ñô
*÷
-ð -r   r½   c                   óž   ‡ — e Zd Zdˆ fd„	Zd„ Zdd„Zˆ fd„Zdˆ fd„	Z	 	 dˆ fd„	Z	 	 dˆ fd„	Z		 	 dˆ fd„	Z
	 	 dˆ fd	„	Z	 	 dˆ fd
„	Zˆ fd„Zˆ xZS )Ú	APIClientc                 óR   •— t        ‰| �  di |¤Ž t        |«      | _        i | _        y r|   )rn   r.   r½   ÚhandlerÚ_credentials)r   r}   r�   rq   s      €r   r.   zAPIClient.__init__ù   s(   ø€ Ü‰ÑÑ$˜8Ò$Ü-Ð.AÓBˆŒØˆÕr   c                 ó   — || _         y)zK
        Sets headers that will be used on every outgoing request.
        N)rÇ   )r   rK   s     r   ÚcredentialszAPIClient.credentialsþ   s   € ð #ˆÕr   c                 ót   — || j                   _        || j                   _        |€|€| j                  «        yyy)zd
        Forcibly authenticates outgoing requests with the given
        user and/or token.
        N)rÆ   r¿   rÀ   Úlogout)r   r   r   s      r   r   zAPIClient.force_authenticate  s5   € ð
 $(ˆ�‰Ô Ø$)ˆ�‰Ô!Øˆ<˜E˜MØ�K‰K�Mð *ˆ<r   c                 óX   •— |j                  | j                  «       t        ‰| �  di |¤ŽS r|   )r›   rÇ   rn   r   )r   rK   rq   s     €r   r   zAPIClient.request  s'   ø€ à�‰�d×'Ñ'Ô(Ü‰w‰Ñ( Ñ(Ð(r   c                 óZ   •— t        ‰| �  |fd|i|¤Ž}|r | j                  |fd|i|¤Ž}|S )Nr=   )rn   r    Ú_handle_redirects)r   rœ   r=   Úfollowr�   Úresponserq   s         €r   r    zAPIClient.get  s?   ø€ Ü‘7‘;˜tÑ8¨$Ð8°%Ñ8ˆÙØ-�t×-Ñ-¨hÑK¸TÐKÀUÑKˆHØˆr   c                 ób   •— t        ‰| �  |f|||dœ|¤Ž}|r | j                  |f|||dœ|¤Ž}|S ©N)r=   r€   r>   )rn   r¥   rÎ   ©	r   rœ   r=   r€   r>   rÏ   r�   rÐ   rq   s	           €r   r¥   zAPIClient.post  sU   ø€ ä‘7‘<ØðPØ F¸ñPØINñPˆáØ-�t×-Ñ-¨hÐu¸TÈ&Ð_kÑuÐotÑuˆHØˆr   c                 ób   •— t        ‰| �  |f|||dœ|¤Ž}|r | j                  |f|||dœ|¤Ž}|S rÒ   )rn   r¨   rÎ   rÓ   s	           €r   r¨   zAPIClient.put!  sU   ø€ ä‘7‘;ØðPØ F¸ñPØINñPˆáØ-�t×-Ñ-¨hÐu¸TÈ&Ð_kÑuÐotÑuˆHØˆr   c                 ób   •— t        ‰| �  |f|||dœ|¤Ž}|r | j                  |f|||dœ|¤Ž}|S rÒ   )rn   r«   rÎ   rÓ   s	           €r   r«   zAPIClient.patch)  sU   ø€ ä‘7‘=ØðPØ F¸ñPØINñPˆáØ-�t×-Ñ-¨hÐu¸TÈ&Ð_kÑuÐotÑuˆHØˆr   c                 ób   •— t        ‰| �  |f|||dœ|¤Ž}|r | j                  |f|||dœ|¤Ž}|S rÒ   )rn   r®   rÎ   rÓ   s	           €r   r®   zAPIClient.delete1  sU   ø€ ä‘7‘>ØðPØ F¸ñPØINñPˆáØ-�t×-Ñ-¨hÐu¸TÈ&Ð_kÑuÐotÑuˆHØˆr   c                 ób   •— t        ‰| �  |f|||dœ|¤Ž}|r | j                  |f|||dœ|¤Ž}|S rÒ   )rn   r±   rÎ   rÓ   s	           €r   r±   zAPIClient.options9  sU   ø€ ä‘7‘?ØðPØ F¸ñPØINñPˆáØ-�t×-Ñ-¨hÐu¸TÈ&Ð_kÑuÐotÑuˆHØˆr   c                 óŽ   •— i | _         d | j                  _        d | j                  _        | j                  rt
        ‰| �  «        y y r   )rÇ   rÆ   r¿   rÀ   Úsessionrn   rË   )r   rq   s    €r   rË   zAPIClient.logoutA  s;   ø€ ØˆÔð $(ˆ�‰Ô Ø$(ˆ�‰Ô!à�<Š<Ü‰G‰NÕð r   r·   r¸   r*   )NNNF)r#   r$   r%   r.   rÉ   r   r   r    r¥   r¨   r«   r®   r±   rË   rv   rw   s   @r   rÄ   rÄ   ø   so   ø„ õò
#óô)õ
ð ?CØõð >BØõð @DØõð AEØõð BFØõ÷ð r   rÄ   c                   ó   — e Zd ZeZy)ÚAPITransactionTestCaseN©r#   r$   r%   rÄ   Úclient_classr&   r   r   rÛ   rÛ   L  ó   „ Ø�Lr   rÛ   c                   ó   — e Zd ZeZy)ÚAPITestCaseNrÜ   r&   r   r   rà   rà   P  rÞ   r   rà   c                   ó   — e Zd ZeZy)ÚAPISimpleTestCaseNrÜ   r&   r   r   râ   râ   T  rÞ   r   râ   c                   ó   — e Zd ZeZy)ÚAPILiveServerTestCaseNrÜ   r&   r   r   rä   rä   X  rÞ   r   rä   c                 ól   — t        | d«      r| j                  | j                  _        y | j                  `y )NÚ_module_urlpatterns)rE   ræ   Ú_moduleÚurlpatterns)r‚   s    r   Úcleanup_url_patternsré   \  s)   € ÜˆsÐ)Ô*Ø"%×"9Ñ"9ˆ�‰Õà�K‰KÑ#r   c                   ó,   ‡ — e Zd ZdZeˆ fd„«       Zˆ xZS )ÚURLPatternsTestCaseaC  
    Isolate URL patterns on a per-TestCase basis. For example,

    class ATestCase(URLPatternsTestCase):
        urlpatterns = [...]

        def test_something(self):
            ...

    class AnotherTestCase(URLPatternsTestCase):
        urlpatterns = [...]

        def test_something_else(self):
            ...
    c                 óÎ  •— t        | j                  «      | _        t        | j                  ¬«      | _        t        | j                  d«      r| j                  j                  | _        | j                  | j                  _        | j                  j                  «        | j                  | j                  j                  «       | j                  t        | «       t        ‰| �5  «        y )N)ÚROOT_URLCONFrè   )r   r$   rç   r   Ú	_overriderE   rè   ræ   ÚenableÚaddClassCleanupÚdisableré   rn   Ú
setUpClass)r‚   rq   s    €r   rò   zURLPatternsTestCase.setUpClasss  s™   ø€ ô $ C§N¡NÓ3ˆŒÜ)°s·~±~ÔFˆŒä�3—;‘; Ô.Ø&)§k¡k×&=Ñ&=ˆCÔ#à"%§/¡/ˆ�‰Ôà�‰×ÑÔà×Ñ˜CŸM™M×1Ñ1Ô2Ø×ÑÔ0°#Ô6ä‰ÑÕr   )r#   r$   r%   rj   Úclassmethodrò   rv   rw   s   @r   rë   rë   c  s   ø„ ñð óó ôr   rë   r¸   )3r^   Ú	importlibr   Údjango.confr   Údjango.core.exceptionsr   Údjango.core.handlers.wsgir   Údjango.testr   r	   Údjango.test.clientr
   ÚDjangoClientr   r   r9   Údjango.utils.encodingr   Údjango.utils.httpr   Úrest_framework.compatr   Úrest_framework.settingsr   r   ra   rb   Ú_collectionsÚHTTPHeaderDictr   r(   ÚadaptersÚHTTPAdapterr6   ÚSessionrl   rz   r½   rÄ   ÚTransactionTestCaserÛ   ÚTestCaserà   ÚSimpleTestCaserâ   ÚLiveServerTestCaserä   ré   rë   r&   r   r   ú<module>r     s)  ðó 
Ý #å  Ý 7Ý 1ß 4Ý 5Ý ,Ý EÝ -Ý 'å *Ý 0ó&ð
 Ðô(�X×&Ñ&×.Ñ.×;Ñ;×JÑJô (÷	ñ 	ô>˜H×-Ñ-×9Ñ9ô >ô@
A˜×)Ñ)õ 
AòaôiÐ,ô iôX-˜]ô -ô$QÐ! <ô Qôh˜Y×:Ñ:ô ô�)×$Ñ$ô ô˜	×0Ñ0ô ô˜I×8Ñ8ô ò$ô ˜)×2Ñ2õ  r   