ó
    F\h(%  ã                   óˆ  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrSSK	J
r
  / SQr\R                  S:H  =(       d3    \" \S5      =(       a#    \" \S5      =(       a    \" \R                  S	5      r " S
 S\R                  5      r\R"                  rS)S jr\R                  S:X  a)  \/ SQ-  rS SKrS*SS.S jjrS rS rS r " S S\5      rO)\/ SQ-  rS SKr\R                  S:H  rS rS rS rS rS rS r " S S5      r \" \!" \ " 5       RD                  5      \5        S r#\" \!" \$RJ                  5      \#5        \" \!" \&RN                  5      \#5        S  r(S! r)\" \RT                  \(5        \R                  S:X  a  S" r+S# r,\" \R                  \+5        OS$ r+S% r,\" \R                  \+5         " S& S'\S(9r-g)+é    )ÚABCMetaNé   )Úcontext)Úsend_handleÚrecv_handleÚForkingPicklerÚregisterÚdumpÚwin32ÚCMSG_LENÚ
SCM_RIGHTSÚsendmsgc                   ó„   ^ • \ rS rSrSr0 r\R                  rU 4S jr	\
S 5       r\
SS j5       r\R                  rSrU =r$ )r   é!   z)Pickler subclass used by multiprocessing.c                 ó¨   >• [         TU ]  " U6   U R                  R                  5       U l        U R                  R                  U R                  5        g ©N)ÚsuperÚ__init__Ú_copyreg_dispatch_tableÚcopyÚdispatch_tableÚupdateÚ_extra_reducers)ÚselfÚargsÚ	__class__s     €Ú0/usr/lib/python3.13/multiprocessing/reduction.pyr   ÚForkingPickler.__init__&   sA   ø€ Ü‰Ò˜$ÑØ"×:Ñ:×?Ñ?ÓAˆÔØ×Ñ×"Ñ" 4×#7Ñ#7Õ8ó    c                 ó    • X R                   U'   g)z&Register a reduce function for a type.N)r   )ÚclsÚtypeÚreduces      r   r	   ÚForkingPickler.register+   s   € ð %+×Ñ˜DÒ!r   c                 óz   • [         R                  " 5       nU " X25      R                  U5        UR                  5       $ r   )ÚioÚBytesIOr
   Ú	getbuffer)r!   ÚobjÚprotocolÚbufs       r   ÚdumpsÚForkingPickler.dumps0   s,   € ä�jŠj‹lˆÙˆCÓ×Ñ Ô$Ø�}‰}‹Ðr   )r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úcopyregr   r   r   Úclassmethodr	   r,   ÚpickleÚloadsÚ__static_attributes__Ú__classcell__)r   s   @r   r   r   !   sO   ø† Ù3Ø€OØ%×4Ñ4Ðõ9ð
 ñ+ó ð+ð óó ðð
 �L‰L†Er   r   c                 ó8   • [        X5      R                  U 5        g)z3Replacement for pickle.dump() using ForkingPickler.N)r   r
   )r)   Úfiler*   s      r   r
   r
   :   s   € ä�4Ó"×'Ñ'¨Õ,r   )Ú	DupHandleÚ	duplicateÚsteal_handle)Úsource_processc                ó�   • [         R                  " 5       nUc  UnUc  Un[         R                  " X0USU[         R                  5      $ )z<Duplicate a handle.  (target_process is a handle not a pid!)r   )Ú_winapiÚGetCurrentProcessÚDuplicateHandleÚDUPLICATE_SAME_ACCESS)ÚhandleÚtarget_processÚinheritabler>   Úcurrent_processs        r   r<   r<   G   sM   € ô "×3Ò3Ó5ˆØÑ!Ø,ˆNØÑ!Ø,ˆNÜ×&Ò&Ø NØˆ{œG×9Ñ9ó;ð 	;r   c           	      óJ  • [         R                  " [         R                  SU 5      n [         R                  " X![         R                  " 5       SS[         R
                  [         R                  -  5      [         R                  " U5        $ ! [         R                  " U5        f = f)z5Steal a handle from process identified by source_pid.Fr   )r@   ÚOpenProcessÚPROCESS_DUP_HANDLErB   rA   rC   ÚDUPLICATE_CLOSE_SOURCEÚCloseHandle)Ú
source_pidrD   Úsource_process_handles      r   r=   r=   S   s|   € ä '× 3Ò 3Ü×&Ñ&¨¨zó!;Ðð	7Ü×*Ò*Ø%Ü×)Ò)Ó+¨Q°Ü×-Ñ-´×0NÑ0NÑNóPô
 ×ÒÐ 5Õ6øŒG×ÒÐ 5Õ6ús   ¨AB
 Â
B"c                 ó\   • [        U[        R                  U5      nU R                  U5        g©z&Send a handle over a local connection.N)r;   r@   rC   Úsend)ÚconnrD   Údestination_pidÚdhs       r   r   r   _   s!   € ä�vœw×<Ñ<¸oÓNˆØ�	‰	�"�r   c                 ó>   • U R                  5       R                  5       $ )ú)Receive a handle over a local connection.)ÚrecvÚdetach)rR   s    r   r   r   d   s   € à�y‰y‹{×!Ñ!Ó#Ð#r   c                   ó(   • \ rS rSrSrSS jrS rSrg)r;   éh   zPicklable wrapper for a handle.Nc                 ó`  • Uc  [         R                  " 5       n[        R                  " [        R                  SU5      n [        R
                  " [        R                  " 5       XUSS5      U l        [        R                  " U5        X l	        X0l
        g ! [        R                  " U5        f = f)NFr   )ÚosÚgetpidr@   rI   rJ   rB   rA   Ú_handlerL   Ú_accessÚ_pid)r   rD   ÚaccessÚpidÚprocs        r   r   ÚDupHandle.__init__j   s†   € Ø‰{ô —i’i“k�Ü×&Ò&¤w×'AÑ'AÀ5È#ÓNˆDð*Ü&×6Ò6Ü×-Ò-Ó/Ø &¨%°ó 4�”ô ×#Ò# DÔ)Ø!ŒLØ�Iøô ×#Ò# DÕ)ús   Á 2B ÂB-c                 óÂ  • U R                   [        R                  " 5       :X  a  U R                  $ [        R
                  " [        R                  SU R                   5      n [        R                  " XR                  [        R                  " 5       U R                  S[        R                  5      [        R                  " U5        $ ! [        R                  " U5        f = f)z1Get the handle.  This should only be called once.F)r`   r\   r]   r^   r@   rI   rJ   rB   rA   r_   rK   rL   )r   rc   s     r   rX   ÚDupHandle.detachy   s—   € ð �y‰yœBŸIšI›KÓ'à—|‘|Ð#ä×&Ò&¤w×'AÑ'AÀ5Ø'+§y¡yó2ˆDð*Ü×.Ò.ØŸ,™,¬×(AÒ(AÓ(CØ—L‘L %¬×)GÑ)GóIô ×#Ò# DÕ)ø”×#Ò# DÕ)ús   Á!AC ÃC)r_   r^   r`   r   )r.   r/   r0   r1   r2   r   rX   r7   © r   r   r;   r;   h   s   † Ù-ô	õ	*r   r;   )ÚDupFdÚsendfdsÚrecvfdsÚdarwinc                 ó   • [         R                   " SU5      n[        [        U5      S-  /5      nU R                  U/[        R
                  [        R                  U4/5        [        (       a!  U R                  S5      S:w  a  [        S5      egg)z,Send an array of fds over an AF_UNIX socket.Úié   r   ó   Az%did not receive acknowledgement of fdN)
ÚarrayÚbytesÚlenr   ÚsocketÚ
SOL_SOCKETr   ÚACKNOWLEDGErW   ÚRuntimeError)ÚsockÚfdsÚmsgs      r   ri   ri   ‘   st   € ä�kŠk˜#˜sÓ#ˆÜ”S˜“X ‘^Ð$Ó%ˆØ�‰�c�Uœf×/Ñ/´×1BÑ1BÀCÐHÐIÔJßŠ;˜4Ÿ9™9 Q›<¨4Ó/ÜÐFÓGÐGð 0ˆ;r   c                 óâ  • [         R                   " S5      nUR                  U-  nU R                  S[        R                  " U5      5      u  pEpgU(       d  U(       d  [
        e [        (       a  U R                  S5        [        U5      S:w  a  [        S[        U5      -  5      eUS   u  p‰n
U[        R                  :X  aŽ  U	[        R                  :X  az  [        U
5      UR                  -  S:w  a  [        eUR                  U
5        [        U5      S-  US   :w  a'  [        SR                  [        U5      US   5      5      e[!        U5      $ [        S5      e! [        ["        4 a     Nf = f)	z/Receive an array of fds over an AF_UNIX socket.rm   r   ro   zreceived %d items of ancdatar   rn   z Len is {0:n} but msg[0] is {1!r}zInvalid data received)rp   ÚitemsizeÚrecvmsgrs   Ú
CMSG_SPACEÚEOFErrorru   rQ   rr   rv   rt   r   Ú
ValueErrorÚ	frombytesÚAssertionErrorÚformatÚlistÚ
IndexError)rw   ÚsizeÚaÚ
bytes_sizery   ÚancdataÚflagsÚaddrÚ
cmsg_levelÚ	cmsg_typeÚ	cmsg_datas              r   rj   rj   ™   sD  € ä�KŠK˜ÓˆØ—Z‘Z $Ñ&ˆ
Ø$(§L¡L°´F×4EÒ4EÀjÓ4QÓ$RÑ!ˆ�eÞž7ÜˆNð	ßŠ{Ø—	‘	˜$”Ü�7‹|˜qÓ Ü"Ð#AÜ#& w£<ñ$0ó 1ð 1à/6°q©zÑ,ˆJ 9Øœf×/Ñ/Ó/ØœV×.Ñ.Ó.Ü�y“> A§J¡JÑ.°!Ó3Ü$Ð$Ø—‘˜IÔ&Ü�q“6˜C‘< 3 q¡6Ó)Ü(Ø:×AÑAÜ ›F C¨¡Fó,ó-ð -ô ˜A“w�ô Ð2Ó3Ð3øô œJÐ'ó 	Ùð	ús   Á$C+E ÅE.Å-E.c                 óÔ   • [         R                  " U R                  5       [         R                  [         R                  5       n[        X1/5        SSS5        g! , (       d  f       g= frP   )rs   ÚfromfdÚfilenoÚAF_UNIXÚSOCK_STREAMri   )rR   rD   rS   Úss       r   r   r   µ   s<   € ä�]Š]˜4Ÿ;™;›=¬&¯.©.¼&×:LÑ:LÔMÐQRÜ�A�xÔ ÷ N×MÖMús   ÁAÁ
A'c                 óÚ   • [         R                  " U R                  5       [         R                  [         R                  5       n[        US5      S   sSSS5        $ ! , (       d  f       g= f)rV   r   r   N)rs   r�   r�   r‘   r’   rj   )rR   r“   s     r   r   r   º   s@   € ä�]Š]˜4Ÿ;™;›=¬&¯.©.¼&×:LÑ:LÔMÐQRÜ˜1˜a“= Ñ#÷ N×M×Mús   ÁAÁ
A*c                 óÌ   • [         R                  " 5       nUb   UR                  UR                  U 5      5      $ [        (       a  SSKJn  UR                  U 5      $ [        S5      e)zReturn a wrapper for an fd.r   )Úresource_sharerz&SCM_RIGHTS appears not to be available)r   Úget_spawning_popenrh   Úduplicate_for_childÚHAVE_SEND_HANDLEÚ r–   r   )ÚfdÚ	popen_objr–   s      r   rh   rh   ¿   sV   € ä×.Ò.Ó0ˆ	ØÑ Ø—?‘? 9×#@Ñ#@ÀÓ#DÓEÐEßÒÝ)Ø"×(Ñ(¨Ó,Ð,äÐEÓFÐFr   c                 ó¼   • U R                   c(  [        U R                  U R                  R                  44$ [        U R                   U R                  R                  44$ r   )Ú__self__Úgetattrr   Ú__func__r.   ©Úms    r   Ú_reduce_methodr£   Î   sH   € Ø‡z�zÑÜ˜Ÿ™ a§j¡j×&9Ñ&9Ð:Ð:Ð:ä˜Ÿ™ Q§Z¡Z×%8Ñ%8Ð9Ð9Ð9r   c                   ó   • \ rS rSrS rSrg)Ú_CéÓ   c                 ó   • g r   rg   )r   s    r   ÚfÚ_C.fÔ   s   € Ør   rg   N)r.   r/   r0   r1   r¨   r7   rg   r   r   r¥   r¥   Ó   s   † õr   r¥   c                 ó>   • [         U R                  U R                  44$ r   )rŸ   Ú__objclass__r.   r¡   s    r   Ú_reduce_method_descriptorr¬   Ù   s   € Ü�Q—^‘^ Q§Z¡ZÐ0Ð0Ð0r   c                 óf   • [         U R                  U R                  U R                  =(       d    0 44$ r   )Ú_rebuild_partialÚfuncr   Úkeywords)Úps    r   Ú_reduce_partialr²   ß   s%   € Ü˜aŸf™f a§f¡f¨a¯j©j×.>¸BÐ?Ð?Ð?r   c                 ó6   • [         R                  " U /UQ70 UD6$ r   )Ú	functoolsÚpartial)r¯   r   r°   s      r   r®   r®   á   s   € Ü×Ò˜TÐ5 DÒ5¨HÑ5Ð5r   c                 ó,   • SSK Jn  [        U" U 5      44$ )Nr   )Ú	DupSocket)r–   r·   Ú_rebuild_socket)r“   r·   s     r   Ú_reduce_socketr¹   ê   s   € Ý.Ü¡¨1£ Ð/Ð/r   c                 ó"   • U R                  5       $ r   )rX   )Údss    r   r¸   r¸   í   s   € Ø�y‰y‹{Ðr   c                 ó†   • [        U R                  5       5      n[        XR                  U R                  U R
                  44$ r   )rh   r�   r¸   Úfamilyr"   Úproto)r“   Údfs     r   r¹   r¹   ò   s0   € Ü�1—8‘8“:ÓˆÜ §X¡X¨q¯v©v°q·w±wÐ ?Ð?Ð?r   c                 óL   • U R                  5       n[        R                  " XX4S9$ )N)r�   )rX   rs   )r¿   r½   r"   r¾   r›   s        r   r¸   r¸   õ   s   € Ø�Y‰Y‹[ˆÜ�}Š}˜V¨5Ñ<Ð<r   c                   ó€   • \ rS rSrSr\r\r\r\r\	r	\
R                  S:X  a  \r\r\rO\r\r\r\r\r\r\r\rS rSrg)ÚAbstractReduceréû   z•Abstract base class for use in implementing a Reduction class
suitable for use in replacing the standard reduction mechanism
used in multiprocessing.r   c                 ón  • [        [        [        5       R                  5      [        5        [        [        [
        R                  5      [        5        [        [        [        R                  5      [        5        [        [        R                  [        5        [        [        R                  [        5        g r   )r	   r"   r¥   r¨   r£   rƒ   Úappendr¬   ÚintÚ__add__r´   rµ   r²   rs   r¹   )r   r   s     r   r   ÚAbstractReducer.__init__  s\   € Ü””b“d—f‘f“œ~Ô.Ü””d—k‘kÓ"Ô$=Ô>Ü””c—k‘kÓ"Ô$=Ô>Ü”×"Ñ"¤OÔ4Ü”—‘¤Õ/r   rg   N)r.   r/   r0   r1   r2   r   r	   r
   r   r   ÚsysÚplatformr=   r<   r;   ri   rj   rh   r£   r¬   r®   r¹   r¸   r   r7   rg   r   r   rÂ   rÂ   û   sl   † ñ ð $€NØ€HØ€DØ€KØ€Kà
‡|�|�wÓØ#ˆØˆ	Ø‰	àˆØˆØˆà#€NØ 9ÐØ'ÐØ#€NØ%€Oõ0r   rÂ   )Ú	metaclassr   )NF).Úabcr   r3   r´   r&   r\   r5   rs   rÉ   rš   r   Ú__all__rÊ   Úhasattrr™   ÚPicklerr   r	   r
   r@   r<   r=   r   r   Úobjectr;   rp   ru   ri   rj   rh   r£   r¥   r"   r¨   r¬   rƒ   rÅ   rÆ   rÇ   r²   r®   rµ   r¹   r¸   rÂ   rg   r   r   Ú<module>rÑ      sÇ  ðõ Û Û Û 	Û 	Û Û Û 
å â
N€ð —L‘L GÑ+÷ 8Ù˜V ZÓ0÷ 7Ù˜V \Ó2÷7á˜VŸ]™]¨IÓ6ð ô�V—^‘^ô ð. ×"Ñ"€ô-ð ‡<�<�7ÓàÒ9Ñ9€GÛð
;Ø$(ö
;ò
7òò
$ô*�Fõ *ðF Ò.Ñ.€GÛð —,‘, (Ñ*€KòHò4ò8!ò
$ò
	Gò:÷
ñ ñ 	‰‰b‹d�f‰f‹�~Ô &ò1á ‰ˆd�k‰kÓ	Ð5Ô 6Ù ‰ˆc�k‰kÓ	Ð5Ô 6ò@ò6á ˆ×	Ñ	˜OÔ ,ð ‡<�<�7Óò0òáˆV�]‰]˜NÕ+ò@ò=ñ ˆV�]‰]˜NÔ+ô0 ó 0r   