Ë
    Ü_Ëiåt  ã                  ó¼  — d 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m
Z
mZmZmZmZ ddlmZmZmZ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mZ ddl m!Z!m"Z"m#Z# ddl$m%Z% 	 ddl&m'Z'm(Z( dZ)	 ddl+m,Z, dZ-ddl.m/Z/m0Z0m1Z1 erddl2m3Z3 ddl4m5Z5  ejl                  d«      jn                  Z8 ejl                  d«      jn                  Z9dZ:e;ge/¢ejx                  ¢­Z<d/d„Z=ej|                  dk7  r	 	 	 	 	 	 	 	 d0d„Z?	 d1	 	 	 	 	 	 	 	 	 d2d„Z@n	 	 	 	 	 	 	 	 d3d„Z?	 d1	 	 	 	 	 	 	 	 	 d4d„Z@d/d„ZAd5d„ZB	 	 	 	 	 	 d6d„ZC	 	 	 	 	 	 	 	 d7d „ZDd!ejŠ                  v ZFej|                  dk(  ZGd8d"„ZHd9d#„ZI G d$„ d%«      ZJ G d&„ d'eJ«      ZK G d(„ d)eJ«      ZL G d*„ d+e«      ZMd:d,„ZNef	 	 	 	 	 	 	 d;d-„ZOef	 	 	 	 	 	 	 d<d.„ZPy# e*$ r dZ)Y �ŒNw xY w# e*$ r dZ-e(Z,Y �ŒUw xY w)=z&Internal network layer helper methods.é    )ÚannotationsN)ÚAbstractEventLoopÚBaseTransportÚBufferedProtocolÚFutureÚ	Transport)ÚTYPE_CHECKINGÚAnyÚOptionalÚUnion)Ú_csotÚssl_support)Úcreate_task)ÚMAX_MESSAGE_SIZE)Ú
decompress)ÚProtocolErrorÚ_OperationCancelled)Ú_UNPACK_REPLYÚ_OpMsgÚ_OpReply)Ú_errno_from_exception)ÚSSLErrorÚ	SSLSocketTF)Ú_sslConn)ÚBLOCKING_IO_LOOKUP_ERRORÚBLOCKING_IO_READ_ERRORÚBLOCKING_IO_WRITE_ERROR)ÚAsyncConnection)Ú
Connectionz<iiiiz<iiBg      à?c              ƒ  ó  K  — | j                  «       }| j                  d«       t        j                  «       }	 t        rAt        | t        t        f«      r+t        j                  t        | ||«      |¬«      ƒ d {  –—†  n/t        j                  |j                  | |«      |¬«      ƒ d {  –—†  | j                  |«       y 7 ŒF7 Œ# t        j                  $ r}t        j                  d«      |‚d }~ww xY w# | j                  |«       w xY w­w)Nç        ©Útimeoutú	timed out)Ú
gettimeoutÚ
settimeoutÚasyncioÚget_running_loopÚ	_HAVE_SSLÚ
isinstancer   r   Úwait_forÚ_async_socket_sendall_sslÚsock_sendallÚTimeoutErrorÚsocketr#   )ÚsockÚbufr#   ÚloopÚexcs        úX/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/network_layer.pyÚasync_socket_sendallr5   K   sÓ   è ø€ Ø�o‰oÓ€GØ‡O�O�CÔÜ×#Ñ#Ó%€Dð	!Ýœ D¬9´hÐ*?Ô@Ü×"Ñ"Ô#<¸TÀ3ÈÓ#MÐW^Ô_×_Ñ_ä×"Ñ" 4×#4Ñ#4°T¸3Ó#?ÈÔQ×QÐQð
 	�‰˜Õ ð `øàQùÜ×Ñò 3ä�n‰n˜[Ó)¨sÐ2ûð3ûð 	�‰˜Õ üsY   ‚6D¹AC Á:CÁ;/C Â*CÂ+C Â/DÃC ÃC ÃC3ÃC.Ã.C3Ã3C6 Ã6D	Ä	DÚwin32c              ƒ  óì  K  — t        |«      }d}dd„}|t        |«      k  r(	 || j                  ||d  «      z  }|t        |«      k  rŒ'y y # t        $ �rœ}| j	                  «       }|dk(  rt        d«      d ‚t        |t        «      rW|j                  «       }|j                  |||«       	 |ƒ d {  –—†7   |j                  |«       n# |j                  |«       w xY wt        |t        «      rW|j                  «       }|j                  |||«       	 |ƒ d {  –—†7   |j                  |«       n# |j                  |«       w xY wt        rœt        |t        «      rŒ|j                  «       }|j                  |||«       	 |j                  |||«       |ƒ d {  –—†7   |j                  |«       |j                  |«       n'# |j                  |«       |j                  |«       w xY wY d }~�Œ²d }~ww xY w­w)Nr   c                óH   — | j                  «       ry | j                  d «       y ©N©ÚdoneÚ
set_result©Úfuts    r4   Ú	_is_readyz,_async_socket_sendall_ssl.<locals>._is_readyc   ó   € Ø�x‰xŒzØØ�N‰N˜4Õ ó    éÿÿÿÿú!Underlying socket has been closed©r>   zFuture[Any]ÚreturnÚNone)Ú
memoryviewÚlenÚsendÚBLOCKING_IO_ERRORSÚfilenor   r*   r   Úcreate_futureÚ
add_readerÚremove_readerr   Ú
add_writerÚremove_writerÚ_HAVE_PYOPENSSLr   )	r0   r1   r2   ÚviewÚsentr?   r3   Úfdr>   s	            r4   r,   r,   ]   s«  è ø€ ô ˜#‹ˆØˆó	!ð
 ”S˜“XŠoð/Ø˜Ÿ	™	 $ t u +Ó.Ñ.�ð ”S˜“X�oøô &ó /Ø—[‘[“]�à˜’8Ü"Ð#FÓGÈTÐQÜ˜cÔ#9Ô:Ø×,Ñ,Ó.�CØ—O‘O B¨	°3Ô7ð/Ø!Ÿ	™	à×*Ñ*¨2Õ.ø˜×*Ñ*¨2Õ.úÜ˜cÔ#:Ô;Ø×,Ñ,Ó.�CØ—O‘O B¨	°3Ô7ð/Ø!Ÿ	™	à×*Ñ*¨2Õ.ø˜×*Ñ*¨2Õ.úÝ"¤z°#Ô7OÔ'PØ×,Ñ,Ó.�CØ—O‘O B¨	°3Ô7ð/ØŸ™¨¨I°sÔ;Ø!Ÿ	™	à×*Ñ*¨2Ô.Ø×*Ñ*¨2Õ.øð ×*Ñ*¨2Ô.Ø×*Ñ*¨2Õ.ÿüð7/üs    ‚ G4£A ºG4Á	G4Á
G1ÁAG,Â*CÂ/B2Â0CÂ5G,ÃCÃ6G,ÄD.ÄDÄD.ÄG,Ä.EÅ<G,Å>F?ÆFÆF?Æ#G,Æ?$G#Ç#G,Ç&G4Ç,G1Ç1G4c              ƒ  ó  K  — t        t        |«      «      }d}dd„}||k  r7	 | j                  ||d  «      }|dk(  rt        d«      ‚|r|d | S ||z  }||k  rŒ7|S # t        $ �rœ}| j                  «       }	|	dk(  rt        d«      d ‚t        |t        «      rW|j                  «       }
|j                  |	||
«       	 |
ƒ d {  –—†7   |j                  |	«       n# |j                  |	«       w xY wt        |t        «      rW|j                  «       }
|j                  |	||
«       	 |
ƒ d {  –—†7   |j                  |	«       n# |j                  |	«       w xY wt        rœt        |t         «      rŒ|j                  «       }
|j                  |	||
«       	 |j                  |	||
«       |
ƒ d {  –—†7   |j                  |	«       |j                  |	«       n'# |j                  |	«       |j                  |	«       w xY wY d }~�Œ©d }~ww xY w­w)Nr   c                óH   — | j                  «       ry | j                  d «       y r9   r:   r=   s    r4   r?   z,_async_socket_receive_ssl.<locals>._is_readyŽ   r@   rA   úconnection closedrB   rC   rD   )rG   Ú	bytearrayÚ	recv_intoÚOSErrorrJ   rK   r   r*   r   rL   rM   rN   r   rO   rP   rQ   r   )ÚconnÚlengthr2   ÚonceÚmvÚ
total_readr?   Úreadr3   rT   r>   s              r4   Ú_async_socket_receive_sslra   ˆ   sÚ  è ø€ ô œ	 &Ó)Ó*ˆØˆ
ó	!ð
 ˜6Ò!ð#/Ø—~‘~ b¨¨ oÓ6�Ø˜1’9Ü!Ð"5Ó6Ð6áØ˜e˜t˜9Ð$Ø˜dÑ"�
ð ˜6Ó!ðJ ˆ	øô9 &ó /Ø—[‘[“]�à˜’8Ü"Ð#FÓGÈTÐQÜ˜cÔ#9Ô:Ø×,Ñ,Ó.�CØ—O‘O B¨	°3Ô7ð/Ø!Ÿ	™	à×*Ñ*¨2Õ.ø˜×*Ñ*¨2Õ.úÜ˜cÔ#:Ô;Ø×,Ñ,Ó.�CØ—O‘O B¨	°3Ô7ð/Ø!Ÿ	™	à×*Ñ*¨2Õ.ø˜×*Ñ*¨2Õ.úÝ"¤z°#Ô7OÔ'PØ×,Ñ,Ó.�CØ—O‘O B¨	°3Ô7ð/ØŸ™¨¨I°sÔ;Ø!Ÿ	™	à×*Ñ*¨2Ô.Ø×*Ñ*¨2Õ.øð ×*Ñ*¨2Ô.Ø×*Ñ*¨2Õ.ÿüð7/üs­   ‚ H£*A ÁHÁA ÁHÁHÁ
HÁ%AG<Â:CÂ?CÃ CÃG<ÃC*Ã*6G<Ä!D>Ä&D)Ä'D>Ä,G<Ä>EÅ<G<ÆGÆ&F)Æ'GÆ,#G<Ç$G3Ç3G<Ç6HÇ<HÈHc              ƒ  ó2  K  — t        |«      }t        |«      }d}d}||k  rE	 | j                  ||d  «      }|dkD  rt        |dz  d«      }nt        |dz  d«      }||z  }||k  rŒDy y # t        $ r# t	        j
                  |«      ƒ d {  –—†7   d}Y Œ\w xY w­w)Nr   çü©ñÒMbP?é   çü©ñÒMbà?)rG   rH   rI   rJ   r'   ÚsleepÚmaxÚmin)r0   r1   ÚdummyrR   Útotal_lengthÚ
total_sentÚbackoffrS   s           r4   r,   r,   ¾   s¬   è ø€ ô ˜#‹ˆÜ˜3“xˆØˆ
ð ˆØ˜<Ò'ðØ—y‘y  j kÐ!2Ó3�ð �aŠxÜ˜g¨™k¨5Ó1‘ä˜g¨™k¨5Ó1�Ø˜$ÑˆJð ˜<Õ'øô &ò Ü—m‘m GÓ,×,Ñ,Ø’ðüs9   ‚ B£A( ·.BÁ&BÁ(!BÂ	BÂ
BÂBÂBÂBc              ƒ  ó^  K  — t        t        |«      «      }d}d}||k  r\	 | j                  ||d  «      }|dk(  rt        d«      ‚|r|d | S 	 |dkD  rt        |dz  d«      }nt        |dz  d«      }||z  }||k  rŒ\|S # t        $ r# t        j                  |«      ƒ d {  –—†7   d}Y Œ\w xY w­w)Nr   rc   rW   rd   re   )	rG   rX   rY   rZ   rJ   r'   rf   rg   rh   )r[   r\   ri   r]   r^   r_   rl   r`   s           r4   ra   ra   Ó   sÖ   è ø€ ô œ	 &Ó)Ó*ˆØˆ
ð ˆØ˜6Ò!ð	Ø—~‘~ b¨¨ oÓ6�Ø˜1’9Ü!Ð"5Ó6Ð6áØ˜e˜t˜9Ð$ð ð
 �aŠxÜ˜g¨™k¨5Ó1‘ä˜g¨™k¨5Ó1�Ø˜$ÑˆJð ˜6Ó!ð  ˆ	øô &ò Ü—m‘m GÓ,×,Ñ,Ø’ðüs:   ‚B-¡*A> Á0B-Á<B-Á>!B*ÂB"Â B*Â'B-Â)B*Â*B-c                ó&   — | j                  |«       y r9   )Úsendall)r0   r1   s     r4   ro   ro   î   s   € Ø‡L�L�ÕrA   c              ƒ  ó‚   K  — 	 | j                   j                  ry t        j                  t        «      ƒ d {  –—†  Œ97 Œ­wr9   )Úcancel_contextÚ	cancelledr'   rf   Ú_POLL_TIMEOUT©r[   s    r4   Ú_poll_cancellationru   ò   s7   è ø€ Ø
Ø×Ñ×(Ò(Øä�m‰mœMÓ*×*Ð*ð	 ð 	+ús   ‚5?·=¸?c              ƒ  ó8  K  — | j                  «       }|}| j                  d«       t        j                  «       }	 t        rSt        | t        t        f«      r=t        j                  t        | ||d¬«      |¬«      ƒ d {  –—† | j                  |«       S t        j                  t        | ||«      |¬«      ƒ d {  –—† | j                  |«       S 7 ŒP7 Œ# t        j                  $ r}t        j                  d«      |‚d }~ww xY w# | j                  |«       w xY w­w)Nr!   T)r]   r"   r$   )r%   r&   r'   r(   r)   r*   r   r   r+   ra   Ú_async_socket_receiver.   r/   r#   )r0   r\   Úsock_timeoutr#   r2   Úerrs         r4   Úasync_receive_data_socketrz   ú   sï   è ø€ ð —?‘?Ó$€LØ€Gà‡O�O�CÔÜ×#Ñ#Ó%€Dð&Ýœ D¬9´hÐ*?Ô@Ü ×)Ñ)Ü)¨$°¸À4ÔHØô÷ ð 	�‰˜Õ%ô !×)Ñ)Ü% d¨F°DÓ9Øô÷ ð 	�‰˜Õ%ðøð
ùô ×Ñò 3Ü�n‰n˜[Ó)¨sÐ2ûð3ûð 	�‰˜Õ%üse   ‚8D»AC Á>CÁ?C ÂDÂ%C Â9CÂ:C Â=DÃC ÃC ÃDÃ&C<Ã<DÄD ÄDÄDc              ƒ  ó¸   K  — t        t        |«      «      }d}||k  r8|j                  | ||d  «      ƒ d {  –—† }|dk(  rt        d«      ‚||z  }||k  rŒ8|S 7 Œ!­w)Nr   rW   )rG   rX   Úsock_recv_intorZ   )r[   r\   r2   r^   Ú
bytes_readÚchunk_lengths         r4   rw   rw     st   è ø€ ô 
”I˜fÓ%Ó	&€BØ€JØ
�vÒ
Ø!×0Ñ0°°r¸*¸+°ÓG×GˆØ˜1ÒÜÐ-Ó.Ð.Ø�lÑ"ˆ
ð	 �vÓ
ð
 €Ið	 Hús   ‚4A¶A·AÁAÚPyPyc                óÖ  — | j                   j                  }d}|j                  «       dk(  ry	 t        |d«      r|j	                  «       dkD  rd}n_|r9|t        j                  «       z
  }|dk  rd}t        t        |t        «      d«      }nt        }| j                  j                  |d|¬«      }| j                  j                  rt        d«      ‚|ry|rt        j                   d	«      ‚Œ½)
zABlock until at least one byte is read, or a timeout, or a cancel.FrB   NTÚpendingr   )r`   r#   úoperation cancelledr$   )r[   r0   rK   Úhasattrr�   ÚtimeÚ	monotonicrg   rh   rs   Úsocket_checkerÚselectrq   rr   r   r/   r#   )r[   Údeadliner0   Ú	timed_outÚreadableÚ	remainingr#   s          r4   Úwait_for_readrŒ   $  sÕ   € à�9‰9�>‰>€DØ€Ià‡{�{ƒ}˜ÒØØ
ä�4˜Ô#¨¯©«¸Ò(:Ø‰Hñ Ø$¤t§~¡~Ó'7Ñ7�	ð  ’>Ø $�IÜœc )¬]Ó;¸QÓ?‘ä'�Ø×*Ñ*×1Ñ1°$¸TÈ7Ð1ÓSˆHØ×Ñ×(Ò(Ü%Ð&;Ó<Ð<ÙØÙÜ—.‘. Ó-Ð-ð/ rA   c                óŒ  — t        |«      }t        |«      }d}| j                  j                  «       }	 ||k  râ	 t        st
        rSt        | |«       t        j                  «       r||�z| j                  t        |t        j                  «       z
  d«      «       nI|�0t        t        |t        j                  «       z
  d«      t        «      }nt        }| j                  |«       | j                  j                  ||d  «      }|dk(  rt/        d«      ‚||z  }||k  rŒâ| j                  |«       |S # t         $ r9 | j"                  j$                  rt'        d«      d ‚t)        j*                  d«      d ‚t(        j*                  $ r[ | j"                  j$                  rt'        d«      d ‚t        s.t
        s(| j,                  s|�|t        j                  «       z
  dk  r‚ Y �Œ§t.        $ rJ}	| j"                  j$                  rt'        d«      d ‚t1        |	«      t2        j4                  k(  rY d }	~	�Œó‚ d }	~	ww xY w# | j                  |«       w xY w)Nr   r‚   r$   rW   )rX   rG   r[   r%   Ú_PYPYÚ_WINDOWSrŒ   r   Úget_timeoutÚset_conn_timeoutrg   r„   r…   rh   rs   rY   rJ   rq   rr   r   r/   r#   Úis_sdamrZ   r   ÚerrnoÚEINTR)
r[   r\   rˆ   r1   r^   r}   Úorig_timeoutÚshort_timeoutr~   r3   s
             r4   Úreceive_datar—   E  sü  € Ü
�FÓ
€CÜ	�C‹€BØ€Jð —9‘9×'Ñ'Ó)€Lð.,Ø˜6Ò!ð&õ �HÜ! $¨Ô1Ü×(Ñ(Ô*¨xÐ/CØ×-Ñ-¬c°(¼T¿^¹^Ó=MÑ2MÈqÓ.QÕRàÐ+Ü(+¬C°¼4¿>¹>Ó;KÑ0KÈQÓ,OÔQ^Ó(_™ä(5˜Ø×)Ñ)¨-Ô8à#Ÿy™y×2Ñ2°2°j°k°?ÓC�ð2 ˜qÒ ÜÐ1Ó2Ð2à˜,Ñ&ˆJðW ˜6Ó!ðZ 	×Ñ˜lÔ+à€Iøô? &ò <Ø×&Ñ&×0Ò0Ü-Ð.CÓDÈ$ÐNä—n‘n [Ó1°tÐ;Ü—>‘>ò Ø×&Ñ&×0Ò0Ü-Ð.CÓDÈ$ÐNåÝØŸ<š<Ø Ð,Ø ¤4§>¡>Ó#3Ñ3°aÒ7ð ÚÜò Ø×&Ñ&×0Ò0Ü-Ð.CÓDÈ$ÐNÜ(¨Ó-´·±Ò<ÝØûðûð 	×Ñ˜lÕ+úsH   ´H0 ºCD. Ä H0 Ä.B*H-ÇH0 ÇH-Ç#>H(È!H0 È'H(È(H-È-H0 È0Ic                  ób   — e Zd Zd	d„Zed
d„«       Zdd„Zd
d„Zdd„Zed
d„«       Z	ed
d„«       Z
y)ÚNetworkingInterfaceBasec                ó   — || _         y r9   rt   )Úselfr[   s     r4   Ú__init__z NetworkingInterfaceBase.__init__…  s	   € Øˆ�	rA   c                ó   — t         ‚r9   ©ÚNotImplementedError©r›   s    r4   r%   z"NetworkingInterfaceBase.gettimeoutˆ  ó   € ä!Ð!rA   c                ó   — t         ‚r9   rž   ©r›   r#   s     r4   r&   z"NetworkingInterfaceBase.settimeoutŒ  ó   € Ü!Ð!rA   c                ó   — t         ‚r9   rž   r    s    r4   ÚclosezNetworkingInterfaceBase.close�  r¤   rA   c                ó   — t         ‚r9   rž   r    s    r4   Ú
is_closingz"NetworkingInterfaceBase.is_closing’  r¤   rA   c                ó   — t         ‚r9   rž   r    s    r4   Úget_connz NetworkingInterfaceBase.get_conn•  r¡   rA   c                ó   — t         ‚r9   rž   r    s    r4   r0   zNetworkingInterfaceBase.sock™  r¡   rA   N)r[   r
   )rE   r
   ©r#   úfloat | NonerE   rF   ©rE   Úbool)Ú__name__Ú
__module__Ú__qualname__rœ   Úpropertyr%   r&   r¦   r¨   rª   r0   © rA   r4   r™   r™   „  sR   „ óð ò"ó ð"ó"ó"ó"ð ò"ó ð"ð ò"ó ñ"rA   r™   c                  ón   ‡ — e Zd Zdˆ fd„Zed	d„«       Zd
d„Zdd„Zdd„Zedd„«       Z	edd„«       Z
ˆ xZS )ÚAsyncNetworkingInterfacec                ó$   •— t         ‰| �  |«       y r9   ©Úsuperrœ   ©r›   r[   Ú	__class__s     €r4   rœ   z!AsyncNetworkingInterface.__init__Ÿ  ó   ø€ Ü‰Ñ˜ÕrA   c                ó4   — | j                   d   j                  S ©Né   ©r[   r%   r    s    r4   r%   z#AsyncNetworkingInterface.gettimeout¢  s   € à�y‰y˜‰|×&Ñ&Ð&rA   c                ó@   — | j                   d   j                  |«       y r¾   ©r[   r&   r£   s     r4   r&   z#AsyncNetworkingInterface.settimeout¦  s   € Ø�	‰	�!‰×Ñ Õ(rA   c              ƒ  ó”   K  — | j                   d   j                  «        | j                   d   j                  «       ƒ d {  –—†  y 7 Œ­wr¾   )r[   r¦   Úwait_closedr    s    r4   r¦   zAsyncNetworkingInterface.close©  s4   è ø€ Ø�	‰	�!‰×ÑÔØ�i‰i˜‰l×&Ñ&Ó(×(Ò(ús   ‚>AÁ AÁAc                ó<   — | j                   d   j                  «       S )Nr   ©r[   r¨   r    s    r4   r¨   z#AsyncNetworkingInterface.is_closing­  s   € Ø�y‰y˜‰|×&Ñ&Ó(Ð(rA   c                ó    — | j                   d   S r¾   rt   r    s    r4   rª   z!AsyncNetworkingInterface.get_conn°  s   € à�y‰y˜‰|ÐrA   c                ó>   — | j                   d   j                  d«      S )Nr   r/   )r[   Úget_extra_infor    s    r4   r0   zAsyncNetworkingInterface.sock´  s   € à�y‰y˜‰|×*Ñ*¨8Ó4Ð4rA   )r[   z!tuple[Transport, PyMongoProtocol]©rE   r­   r¬   ©rE   rF   r®   )rE   ÚPyMongoProtocol)rE   úsocket.socket)r°   r±   r²   rœ   r³   r%   r&   r¦   r¨   rª   r0   Ú__classcell__©r»   s   @r4   r¶   r¶   ž  sS   ø„ õð ò'ó ð'ó)ó)ó)ð òó ðð ò5ó ô5rA   r¶   c                  ót   ‡ — e Zd Zd
ˆ fd„Zdd„Zdd„Zdd„Zdd„Zedd„«       Z	edd„«       Z
dd„Zdd	„Zˆ xZS )ÚNetworkingInterfacec                ó$   •— t         ‰| �  |«       y r9   r¸   rº   s     €r4   rœ   zNetworkingInterface.__init__º  r¼   rA   c                ó6   — | j                   j                  «       S r9   rÀ   r    s    r4   r%   zNetworkingInterface.gettimeout½  ó   € Ø�y‰y×#Ñ#Ó%Ð%rA   c                ó:   — | j                   j                  |«       y r9   rÂ   r£   s     r4   r&   zNetworkingInterface.settimeoutÀ  s   € Ø�	‰	×Ñ˜WÕ%rA   c                ó8   — | j                   j                  «        y r9   )r[   r¦   r    s    r4   r¦   zNetworkingInterface.closeÃ  s   € Ø�	‰	�‰ÕrA   c                ó6   — | j                   j                  «       S r9   rÆ   r    s    r4   r¨   zNetworkingInterface.is_closingÆ  rÔ   rA   c                ó   — | j                   S r9   rt   r    s    r4   rª   zNetworkingInterface.get_connÉ  ó   € à�y‰yÐrA   c                ó   — | j                   S r9   rt   r    s    r4   r0   zNetworkingInterface.sockÍ  rÙ   rA   c                ó6   — | j                   j                  «       S r9   )r[   rK   r    s    r4   rK   zNetworkingInterface.filenoÑ  s   € Ø�y‰y×ÑÓ!Ð!rA   c                ó8   — | j                   j                  |«      S r9   )r[   rY   )r›   Úbuffers     r4   rY   zNetworkingInterface.recv_intoÔ  s   € Ø�y‰y×"Ñ" 6Ó*Ð*rA   )r[   úUnion[socket.socket, _sslConn]rÊ   r¬   rË   r®   )rE   rÞ   )rE   Úint)rÝ   zbytes | memoryviewrE   rß   )r°   r±   r²   rœ   r%   r&   r¦   r¨   r³   rª   r0   rK   rY   rÎ   rÏ   s   @r4   rÑ   rÑ   ¹  sN   ø„ õó&ó&óó&ð òó ðð òó ðó"÷+rA   rÑ   c                  óŽ   — e Zd Zddd„Zdd„Zedd„«       Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zddd„Zddd„Zddd„Zdd„Zy)rÌ   Nc                ó  — d | _         t        t        d«      «      | _        d| _        t        t        d«      «      | _        d| _        d | _        d| _        d| _	        d| _
        d| _        d| _        d| _        d | _        || _        d| _        d | _        t$        | _        d | _        t+        j,                  «       j/                  «       | _        t3        j4                  «       | _        t3        j4                  «       | _        y )Né   r   é	   TF)Ú	transportrG   rX   Ú_headerÚ_header_indexÚ_compression_headerÚ_compression_indexÚ_messageÚ_message_indexÚ_expecting_headerÚ_expecting_compressionÚ_message_sizeÚ_op_codeÚ_connection_lostÚ_read_waiterÚ_timeoutÚ_is_compressedÚ_compressor_idr   Ú_max_message_sizeÚ_response_tor'   r(   rL   Ú_closedÚcollectionsÚdequeÚ_pending_messagesÚ_done_messagesr£   s     r4   rœ   zPyMongoProtocol.__init__Ù  sÜ   € Ø$(ˆŒô "¤)¨B£-Ó0ˆŒØˆÔÜ#-¬i¸«lÓ#;ˆÔ Ø"#ˆÔØ.2ˆŒØˆÔà!%ˆÔØ&+ˆÔ#ØˆÔØˆŒØ %ˆÔØ37ˆÔØˆŒØ#ˆÔØ-1ˆÔÜ!1ˆÔØ+/ˆÔÜ×/Ñ/Ó1×?Ñ?ÓAˆŒÜAL×ARÑARÓATˆÔÜ>I×>OÑ>OÓ>QˆÕrA   c                ó   — || _         y r9   ©rñ   r£   s     r4   r&   zPyMongoProtocol.settimeoutó  s	   € Øˆ�rA   c                ó   — | j                   S )zGThe configured timeout for the socket that underlies our protocol pair.rü   r    s    r4   r%   zPyMongoProtocol.gettimeoutö  s   € ð �}‰}ÐrA   c                óZ   — || _         | j                   j                  t        t        «       y)z–Called exactly once when a connection is made.
        The transport argument is the transport representing the write side of the connection.
        N)rä   Úset_write_buffer_limitsr   )r›   rä   s     r4   Úconnection_madezPyMongoProtocol.connection_madeû  s!   € ð #ˆŒØ�‰×.Ñ.Ô/?ÔAQÕRrA   c              ƒ  óÀ   K  — | j                   j                  «       rt        d«      ‚| j                   j                  |«       | j                   j	                  «        y­w)z/Write a message to this connection's transport.zConnection is closedN)rä   r¨   rZ   ÚwriteÚresume_reading)r›   Úmessages     r4   r  zPyMongoProtocol.write  sD   è ø€ à�>‰>×$Ñ$Ô&ÜÐ0Ó1Ð1Ø�‰×Ñ˜WÔ%Ø�‰×%Ñ%Õ'ùs   ‚AAc              ƒ  ó  K  — | j                   r	 | j                   j                  «        || _        | j
                  r#| j
                  j                  «       ƒ d{  –—† }n£| j                   r%| j                   j                  «       rt        d«      ‚t        j                  «       j                  «       }| j                  j                  |«       	 |ƒ d{  –—† }|| j
                  v r| j
                  j                  |«       	 |r1|\  }}}}|�||k7  rt        d|›d|›�«      ‚|�t        ||«      }||fS t        d«      ‚# t        $ r t        d«      d‚w xY w7 Œÿ7 Œ‡# || j
                  v r| j
                  j                  |«       w w xY w­w)zARead a single MongoDB Wire Protocol message from this connection.zconnection is already closedNúGot response id ú but expected rW   )rä   r  ÚAttributeErrorrZ   rô   rú   Úpopleftr¨   r'   r(   rL   rù   ÚappendÚremover   r   )	r›   Ú
request_idÚmax_message_sizer  Úread_waiterÚop_codeÚcompressor_idÚresponse_toÚdatas	            r4   r`   zPyMongoProtocol.read	  sƒ  è ø€ à�>Š>ðHØ—‘×-Ñ-Ô/ð "2ˆÔØ×ÒØ ×/Ñ/×7Ñ7Ó9×9‰Gà�~Š~ $§.¡.×";Ñ";Ô"=ÜÐ<Ó=Ð=Ü!×2Ñ2Ó4×BÑBÓDˆKØ×"Ñ"×)Ñ)¨+Ô6ð<Ø +×+�à $×"5Ñ"5Ñ5Ø×'Ñ'×.Ñ.¨{Õ;ÙØ8?Ñ5ˆG�] K°àÐ%Ø Ò,Ü'Ø*¨;¨/¸È
À~ÐVóð ð Ð(Ü! $¨Ó6�Ø˜�=Ð ÜÐ)Ó*Ð*øô5 "ò HÜÐ<Ó=À4ÐGðHúð :øð ,ùà $×"5Ñ"5Ñ5Ø×'Ñ'×.Ñ.¨{Õ;ð 6üsS   ‚F�E ª0FÁEÁA3FÃE ÃEÃE ÃA(FÅEÅFÅE Å,F
Æ
Fc                óB  — | j                   r1| j                  st        t        d«      «      | _        | j                  S | j                  r| j
                  | j                  d S | j                  r| j                  | j                  d S | j                  | j                  d S )a8  Called to allocate a new receive buffer.
        The asyncio loop calls this method expecting to receive a non-empty buffer to fill with data.
        If any data does not fit into the returned buffer, this method will be called again until
        either no data remains or an empty buffer is returned.
        i @  N)rï   ré   rG   rX   rë   rå   ræ   rì   rç   rè   rê   )r›   Úsizehints     r4   Ú
get_bufferzPyMongoProtocol.get_buffer+  s�   € ð × Ò Ø—=’=Ü *¬9°UÓ+;Ó <�”Ø—=‘=Ð ð ×!Ò!Ø—<‘< × 2Ñ 2Ð 4Ð5Ð5Ø×&Ò&Ø×+Ñ+¨D×,CÑ,CÐ,EÐFÐFØ�}‰}˜T×0Ñ0Ð2Ð3Ð3rA   c                óø  — |dk(  r| j                  t        d«      «       y| j                  ry| j                  ry| xj                  |z  c_        | j                  dk\  rTd| _        	 | j                  «       \  | _        | _        | _        | _	        t        t        | j                  «      «      | _        y| j                  rI| xj                  |z  c_        | j                  dk\  r$d| _	        | j                  «       \  | _        | _        y| xj"                  |z  c_        | j"                  | j                  k\  �rd| _        | j$                  j'                  «        | j(                  r| j(                  j+                  «       }n"t-        j.                  «       j1                  «       }|j3                  «       r| j                  d«       y|j5                  | j                  | j                   | j                  | j                  f«       | j6                  j9                  |«       d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        yy# t        $ r}| j                  |«       Y d}~yd}~ww xY w)z9Called when the buffer was updated with the received datar   rW   Nrâ   Frã   T)r¦   rZ   rï   rë   ræ   Úprocess_headerrí   rî   rõ   rì   r   rG   rX   ré   rè   Úprocess_compression_headerró   rê   rä   Úpause_readingrù   r	  r'   r(   rL   r;   r<   rú   r
  )r›   Únbytesr3   Úresults       r4   Úbuffer_updatedzPyMongoProtocol.buffer_updated@  s"  € ð �QŠ;Ø�J‰J”wÐ2Ó3Ô4ØØ× Ò ØØ×!Ò!Ø×Ò &Ñ(ÕØ×!Ñ! RÒ'Ø).�Ô&ð	ð ×+Ñ+Ó-ñØÔ*ØœØÔ)ØÔ3ô
 !+¬9°T×5GÑ5GÓ+HÓ I�”ØØ×&Ò&Ø×#Ò# vÑ-Õ#Ø×&Ñ&¨!Ò+Ø.3�Ô+Ø59×5TÑ5TÓ5VÑ2�”˜tÔ2Øà×Ò˜vÑ%ÕØ×Ñ $×"4Ñ"4Ó4Ø%)ˆDÔ"à�N‰N×(Ñ(Ô*Ø×%Ò%Ø×/Ñ/×7Ñ7Ó9‘ä ×1Ñ1Ó3×AÑAÓC�à�{‰{Œ}Ø—
‘
˜4Ô Øà×ÑØ—‘ × 3Ñ 3°T×5FÑ5FÈÏÉÐVôð ×Ñ×&Ñ& vÔ.à!"ˆDÔØ&'ˆDÔ#Ø"#ˆDÔØ!"ˆDÔØ ˆDŒMØˆDŒMØ"&ˆDÔØ $ˆDÕð3 5øô %ò Ø—J‘J˜s”OÜûðús   Á&)I É	I9ÉI4É4I9c                ó
  — t        | j                  «      \  }}}}d}|dk(  r|dk  rt        d|›d�«      ‚d}|dz  }|dk  rt        d|›d	�«      ‚|| j                  kD  rt        d|›d
| j                  ›d�«      ‚|dz
  |||fS )z&Unpack a MongoDB Wire Protocol header.FéÜ  é   úMessage length (zA) not longer than standard OP_COMPRESSED message header size (25)Trã   râ   ú3) not longer than standard message header size (16)ú*) is larger than server max message size (ú))Ú_UNPACK_HEADERrå   r   rô   )r›   r\   Ú_r  r  Úexpecting_compressions         r4   r  zPyMongoProtocol.process_header{  sË   € ä*8¸¿¹Ó*FÑ'ˆ��; Ø %ÐØ�dŠ?Ø˜Š|Ü#Ø& v jÐ0qÐróð ð %)Ð!Ø�a‰KˆFØ�RŠ<ÜØ" 6 *Ð,_Ð`óð ð �D×*Ñ*Ò*ÜØ" 6 *ð -!Ø!%×!7Ñ!7Ð :¸!ð=óð ð
 ˜‰{˜G [Ð2GÐGÐGrA   c                ó<   — t        | j                  «      \  }}}||fS )z2Unpack a MongoDB Wire Protocol compression header.)Ú_UNPACK_COMPRESSION_HEADERrç   )r›   r  r%  r  s       r4   r  z*PyMongoProtocol.process_compression_header’  s$   € ä$>¸t×?WÑ?WÓ$XÑ!ˆ��MØ˜Ð%Ð%rA   c                óÜ   — t        | j                  «      }|D ]R  }|j                  «       s%|€|j                  d «       n|j	                  |«       | j
                  j                  |«       ŒT y r9   )Úlistrù   r;   r<   Úset_exceptionrú   r
  )r›   r3   r�   Úmsgs       r4   Ú_resolve_pending_messagesz)PyMongoProtocol._resolve_pending_messages—  s]   € Ü�t×-Ñ-Ó.ˆØò 	,ˆCØ—8‘8”:Ø�;Ø—N‘N 4Õ(à×%Ñ% cÔ*Ø×Ñ×&Ñ& sÕ+ñ	,rA   c                óh   — | j                   j                  «        | j                  |«       d| _        y )NT)rä   Úabortr-  rï   ©r›   r3   s     r4   r¦   zPyMongoProtocol.close¡  s(   € Ø�‰×ÑÔØ×&Ñ& sÔ+Ø $ˆÕrA   c                ó’   — | j                  |«       | j                  j                  «       s| j                  j                  d «       y y r9   )r-  rö   r;   r<   r0  s     r4   Úconnection_lostzPyMongoProtocol.connection_lost¦  s7   € Ø×&Ñ& sÔ+Ø�|‰|× Ñ Ô"Ø�L‰L×#Ñ# DÕ)ð #rA   c              ƒ  ó8   K  — | j                   ƒ d {  –—†  y 7 Œ­wr9   )rö   r    s    r4   rÄ   zPyMongoProtocol.wait_closed«  s   è ø€ Ø�l‰l×Òús   ‚’“r9   )r#   úOptional[float]r¬   rÊ   )rä   r   rE   rF   )r  ÚbytesrE   rF   )r  úOptional[int]r  rß   rE   ztuple[bytes, int])r  rß   rE   rG   )r  rß   rE   rF   )rE   ztuple[int, int, int, bool])rE   ztuple[int, int])r3   zOptional[Exception]rE   rF   rË   )r°   r±   r²   rœ   r&   r³   r%   r   r  r`   r  r  r  r  r-  r¦   r2  rÄ   r´   rA   r4   rÌ   rÌ   Ø  s\   „ ôRó4 ð òó ðóSó(ó +óD4ó*9%óvHó.&ô
,ô%ô
*ô
rA   rÌ   c              ƒ  óä   K  — 	 t        j                  | j                  |«      | j                  ¬«      ƒ d {  –—†  y 7 Œ# t         j                  $ r}t        j                  d«      |‚d }~ww xY w­w)Nr"   r$   )r'   r+   r  r%   r.   r/   r#   )r[   r1   r3   s      r4   Úasync_sendallr8  ¯  sS   è ø€ ð3Ü×Ñ˜tŸz™z¨#›¸¿¹ÔH×HÒHùÜ×Ñò 3ä�n‰n˜[Ó)¨sÐ2ûð3üs1   ‚A0„3? ·=¸? ¼A0½? ¿A-ÁA(Á(A-Á-A0c              ƒ  ó  K  — | j                   j                  }t        j                  «       rt        j                  «       }n|rt        j                  «       |z   }nd}|r!t        |t        j                  «       z
  d«      }t        t        | «      «      }t        | j                   j                  j                  ||«      «      }||g}	 t        j                  ||t        j                  ¬«      ƒ d{  –—† \  }}	|	D ]  }
|
j                  «        Œ |	rt        j                  |	«      ƒ d{  –—†  t!        |«      dk(  rt#        j$                  d«      ‚||v r%|j'                  «       \  }}	 t(        |   } ||«      S t1        d«      ‚7 Œ”7 Œ]# t*        $ r% t-        d|›dt)        j.                  «       ›�«      d‚w xY w# t        j2                  $ r7 |D ]  }
|
j                  «        Œ t        j                  |«      ƒ d{  –—†7   ‚ w xY w­w)ú1Receive a raw BSON message or raise socket.error.Nr   )r#   Úreturn_whenr$   úGot opcode r  r‚   )r[   r%   r   r�   Úget_deadliner„   r…   rg   r   ru   rª   r`   r'   ÚwaitÚFIRST_COMPLETEDÚcancelrH   r/   r#   r  r   ÚKeyErrorr   Úkeysr   ÚCancelledError)r[   r  r  r#   rˆ   Úcancellation_taskÚ	read_taskÚtasksr;   r�   Útaskr  r  Úunpack_replys                 r4   Úasync_receive_messagerI  ·  sá  è ø€ ð �i‰i×"Ñ"€GÜ×ÑÔÜ×%Ñ%Ó'‰áÜ—~‘~Ó'¨'Ñ1‰HàˆHÙô �h¤§¡Ó!1Ñ1°1Ó5ˆä#Ô$6°tÓ$<Ó=ÐÜ˜DŸI™I×.Ñ.×3Ñ3°JÐ@PÓQÓR€IØÐ)Ð*€EðÜ%Ÿl™lØ˜7´×0GÑ0Gô
÷ 
‰ˆˆgð ò 	ˆDØ�K‰K�Mð	áÜ—,‘,˜wÓ'×'Ð'Üˆt‹9˜Š>Ü—.‘. Ó-Ð-Ø˜ÑØ%×,Ñ,Ó.‰MˆD�'ðÜ,¨WÑ5�ñ
   Ó%Ð%Ü!Ð"7Ó8Ð8ð%
øð (ùô ò Ü#Ø! ' ¨N¼=×;MÑ;MÓ;OÐ:RÐSóàððûô ×!Ñ!ò Øò 	ˆDØ�K‰K�Mð	ä�l‰l˜5Ó!×!Ñ!Øð	üsg   ‚CH	Ã	)F< Ã2FÃ38F< Ä+F	Ä,>F< Å+	F Å4F< Å;H	Å<F< Æ	F< Æ.F9Æ9F< Æ<AHÇ>HÇ?HÈH	c                ó–  — t        j                  «       rt        j                  «       }n6| j                  j	                  «       }|rt        j                  «       |z   }nd}t        t        | d|«      «      \  }}}}|�||k7  rt        d|›d|›�«      ‚|dk  rt        d|›d�«      ‚||kD  rt        d|›d|›d�«      ‚|d	k(  r5t        t        | d
|«      «      \  }}}	t        t        | |dz
  |«      |	«      }
nt        | |dz
  |«      }
	 t        |   } ||
«      S # t        $ r% t        d|›dt        j                  «       ›�«      d‚w xY w)r:  Nrâ   r  r  r   r!  r"  r#  r  rã   r  r<  )r   r�   r=  r[   r%   r„   r…   r$  r—   r   r(  r   r   rA  rB  )r[   r  r  rˆ   r#   r\   r%  r  r  r  r  rH  s               r4   Úreceive_messagerK  ê  s†  € ô ×ÑÔÜ×%Ñ%Ó'‰à—)‘)×&Ñ&Ó(ˆÙÜ—~‘~Ó'¨'Ñ1‰HàˆHä&4´\À$ÈÈHÓ5UÓ&VÑ#€FˆAˆ{˜GàÐØ˜Ò$ÜÐ"2°;°/ÀÐPZÈ~Ð ^Ó_Ð_Ø�‚|ÜØ˜v˜jÐ([Ð\ó
ð 	
ð Ð Ò ÜØ˜v˜jð )Ø-Ð0°ð3ó
ð 	
ð
 �$‚Ü$>¼|ÈDÐRSÐU]Ó?^Ó$_Ñ!ˆ��MÜœ, t¨V°b©[¸(ÓCÀ]ÓS‰ä˜D &¨2¡+¨xÓ8ˆðÜ$ WÑ-ˆñ
 ˜ÓÐøô	 ò ÜØ˜'˜ N´=×3EÑ3EÓ3GÐ2JÐKó
àð	ðús   Ä		D Ä.E)r0   rÞ   r1   r5  rE   rF   )r0   rÞ   r1   r5  r2   r   rE   rF   )F)
r[   r   r\   rß   r2   r   r]   úOptional[bool]rE   rG   )r0   rÞ   r1   r5  ri   r   rE   rF   )
r[   r   r\   rß   ri   r   r]   rL  rE   rG   )r[   r   rE   rF   )r0   rÞ   r\   rß   rE   rG   )r[   rÍ   r\   rß   r2   r   rE   rG   )r[   r   rˆ   r4  rE   rF   )r[   r   r\   rß   rˆ   r4  rE   rG   )r[   rÌ   r1   r5  rE   rF   )r[   r   r  r6  r  rß   rE   úUnion[_OpReply, _OpMsg])r[   r   r  r6  r  rß   rE   rM  )QÚ__doc__Ú
__future__r   r'   r÷   r“   r/   ÚstructÚsysr„   r   r   r   r   r   Útypingr	   r
   r   r   Úpymongor   r   Úpymongo._asyncio_taskr   Úpymongo.commonr   Úpymongo.compression_supportr   Úpymongo.errorsr   r   Úpymongo.messager   r   r   Úpymongo.socket_checkerr   Ússlr   r   r)   ÚImportErrorÚpymongo.pyopenssl_contextr   rQ   Úpymongo.ssl_supportr   r   r   Úpymongo.asynchronous.poolr   Úpymongo.synchronous.poolr   ÚStructÚunpackr$  r(  rs   ÚBlockingIOErrorrJ   r5   Úplatformr,   ra   ro   ru   rz   rw   ÚversionrŽ   r�   rŒ   r—   r™   r¶   rÑ   rÌ   r8  rI  rK  r´   rA   r4   ú<module>re     sÉ  ðñ -Ý "ã Û Û Û Û Û 
Û ß YÕ Y÷ó ÷ 'Ý -Ý +Ý 2ß =ß ;Ñ ;Ý 8ðß'à€IðÝ2à€O÷
ñ ñ Ý9Ý3à�—‘˜wÓ'×.Ñ.€Ø*˜VŸ]™]¨6Ó2×9Ñ9Ð Ø€à%ÐbÐ(@ÐbÀ;×CaÑCaÑbÐ ó
!ð  ‡<�<�7Òð)/Ø,ð)/Ø38ð)/Ø@Qð)/à	ó)/ðX V[ð0Øð0Ø #ð0Ø+<ð0ØDRð0à	ô0ðlØ,ðØ38ðØARðà	óð, W\ðØðØ #ðØ,=ðØESðà	óó6ó+ð&Ø
(ð&Ø25ð&àó&ð2
Ø
ð
Ø!$ð
Ø,=ð
àó
ð 	�#—+‘+Ð€Ø�<‰<˜7Ñ"€ó.óB<÷~"ñ "ô45Ð6ô 5ô6+Ð1ô +ô>TÐ&ô Tón3ð -ð0Ø
ð0àð0ð ð0ð ó	0ðh JZð(Ø
ð(Ø"/ð(ØCFð(àô(øð{ ò ØƒIðûð ò Ø€OØƒHðús$   Á2
G  Á=G Ç GÇ
GÇ	GÇG