ó
    F\h¾  ã                   óÌ   • S r / SQr0 rSS jrS rS r\" \\\5        S r\" \" \	\
-  5      \5        S rSr\" \	R                  5      rS	 rS
 rS rS r0 r0 r0 rS rS rS rg)z¤Helper to provide extensibility for pickle.

This is only useful to add pickle support for extension types defined in
C, not for instances of user-defined classes.
)ÚpickleÚconstructorÚadd_extensionÚremove_extensionÚclear_extension_cacheNc                 ój   • [        U5      (       d  [        S5      eU[        U '   Ub  [        U5        g g )Nz$reduction functions must be callable)ÚcallableÚ	TypeErrorÚdispatch_tabler   )Úob_typeÚpickle_functionÚconstructor_obs      Ú/usr/lib/python3.13/copyreg.pyr   r      s8   € Ü�O×$Ñ$ÜÐ>Ó?Ð?Ø-„N�7Ñð Ñ!Ü�NÕ#ð "ó    c                 ó:   • [        U 5      (       d  [        S5      eg )Nzconstructors must be callable)r   r	   )Úobjects    r   r   r      s   € Ü�F×ÑÜÐ7Ó8Ð8ð r   c                 ó>   • [         U R                  U R                  44$ ©N)ÚcomplexÚrealÚimag)Úcs    r   Úpickle_complexr      s   € Ü�Q—V‘V˜QŸV™VÐ$Ð$Ð$r   c                 óZ   • SS K nSS KnUR                  UR                  U R                  44$ )Né    )Ú	functoolsÚoperatorÚreduceÚor_Ú__args__)Úobjr   r   s      r   Úpickle_unionr!   !   s#   € ßØ×Ñ˜hŸl™l¨C¯L©LÐ9Ð9Ð9r   c                 óÆ   • U[         L a  [         R                  U 5      nU$ UR                  X5      nUR                  [         R                  :w  a  UR                  X25        U$ r   )r   Ú__new__Ú__init__)ÚclsÚbaseÚstater    s       r   Ú_reconstructorr(   )   sO   € ØŒv‚~Ü�n‰n˜SÓ!ˆð
 €Jð �l‰l˜3Ó&ˆØ�=‰=œFŸO™OÓ+Ø�M‰M˜#Ô%Ø€Jr   i   c                 ó   • US:  d   eU R                   nUR                   Hb  n[        US5      (       a  UR                  [        -  (       d    O>UR
                  n[        U[        5      (       d  MQ  UR                  UL d  Mb    O   [        nU[        L a  S nO&X2L a  [        SUR                  < S35      eU" U 5      nX#U4n U R                  n[        U 5      R                  [        R                  L a  [        U SS 5      (       a  [        S5      eU" 5       nU(       a  ["        Xh4$ ["        U4$ ! [         aR    [        U SS 5      (       a  [        SUR                  < SU 35      S e U R                   n N_! [         a    S n  Nnf = ff = f)Né   Ú	__flags__zcannot pickle z objectÚ	__slots__zNa class that defines __slots__ without defining __getstate__ cannot be pickledzf object: a class that defines __slots__ without defining __getstate__ cannot be pickled with protocol )Ú	__class__Ú__mro__Úhasattrr+   Ú	_HEAPTYPEr#   Ú
isinstanceÚ	_new_typeÚ__self__r   r	   Ú__name__Ú__getstate__ÚtypeÚgetattrÚAttributeErrorÚ__dict__r(   )	ÚselfÚprotor%   r&   Únewr'   ÚargsÚgetstateÚdicts	            r   Ú
_reduce_exr@   7   sˆ  € Ø�1‹9Ðˆ9Ø
�.‰.€CØ—”ˆÜ�4˜×%Ñ%¨d¯n©n¼y×.HÙØ�l‰lˆÜ�cœ9×%Ó%¨#¯,©,¸$Ô*>Ùñ ô ˆØŒv‚~Ø‰àŠ;Ü˜n¨S¯\©\Ñ,<¸GÐDÓEÐEÙ�T“
ˆØ�uÐ€DðØ×$Ñ$ˆô �‹J×#Ñ#¤v×':Ñ':Ò:Ü�D˜+ t×,Ñ,Üð Fó Gð Gá‹zˆÞÜ˜tÐ)Ð)ä˜tÐ#Ð#øô' ó 	Ü�4˜ d×+Ñ+Ü˜n¨S¯\©\Ñ,<ð =-ð .3¨Gð5ó 6ð <@ð@ð	Ø—=‘=ŠDøÜó 	Ø‹Dð	úð	ús*   ÃD1 Ä19FÅ+E9Å9F	ÆFÆF	Æ	Fc                 ó(   • U R                   " U /UQ76 $ r   ©r#   )r%   r=   s     r   Ú
__newobj__rC   b   s   € Ø�;Š;�sÐ"˜TÒ"Ð"r   c                 ó.   • U R                   " U /UQ70 UD6$ )zwUsed by pickle protocol 4, instead of __newobj__ to allow classes with
keyword-only arguments to be pickled correctly.
rB   )r%   r=   Úkwargss      r   Ú__newobj_ex__rF   e   s   € ð �;Š;�sÐ,˜TÒ, VÑ,Ð,r   c                 ó^  • U R                   R                  S5      nUb  U$ / n[        U S5      (       d  OéU R                   HÙ  nSUR                   ;   d  M  UR                   S   n[	        U[
        5      (       a  U4nU H—  nUS;   a  M  UR                  S5      (       ae  UR                  S5      (       dO  UR                  R                  S5      nU(       a  UR                  SU< U< 35        Ms  UR                  U5        M†  UR                  U5        M™     MÛ      Xl        U$ !    U$ = f)a  Return a list of slot names for a given class.

This needs to find slots defined by the class and its bases, so we
can't simply return the __slots__ attribute.  We must walk down
the Method Resolution Order and concatenate the __slots__ of each
class found there.  (This assumes classes don't modify their
__slots__ attribute to misrepresent their slots after the class is
defined.)
Ú__slotnames__r,   )r9   Ú__weakref__Ú__Ú_)r9   Úgetr/   r.   r1   ÚstrÚ
startswithÚendswithr4   ÚlstripÚappendrH   )r%   Únamesr   ÚslotsÚnameÚstrippeds         r   Ú
_slotnamesrV   k   s  € ð �L‰L×Ñ˜_Ó-€EØÑØˆð €EÜ�3˜×$Ñ$àð —”ˆAØ˜aŸj™jÕ(ØŸ
™
 ;Ñ/�ä˜e¤S×)Ñ)Ø"˜H�EÛ!�DàÐ:Ó:Ù àŸ™¨×.Ñ.°t·}±}ÀT×7JÑ7JØ#$§:¡:×#4Ñ#4°SÓ#9˜Þ#Ø!ŸLšL²HºdÐ)CÖDà!ŸL™L¨Ö.àŸ™ TÖ*ó "ñ ð*Ø!Ôð €LøðØà€Lús   ÄD' Ä'D,c                 ón  • [        U5      nSUs=::  a  S::  d  O  [        S5      eX4n[        R                  U5      U:X  a  [        R                  U5      U:X  a  gU[        ;   a  [        SU< S[        U   < 35      eU[        ;   a  [        SU< S[        U   < 35      eU[        U'   U[        U'   g)	zRegister an extension code.é   iÿÿÿzcode out of rangeNúkey z! is already registered with code zcode z is already in use for key )ÚintÚ
ValueErrorÚ_extension_registryrL   Ú_inverted_registry©ÚmodulerT   ÚcodeÚkeys       r   r   r   ­   s¶   € äˆt‹9€DØ�Õ"˜
Õ"ÜÐ,Ó-Ð-Øˆ.€CÜ×Ñ Ó$¨Ó,Ü×Ñ˜tÓ$¨Ó+ØØ
Ô!Ó!ÝÛÔ2°3Ó7ð9ó :ð 	:àÔ!Ó!ÝÛÔ 2°4Ó 8ð:ó ;ð 	;à#Ô˜ÑØ"Ô�tÒr   c                 óÔ   • X4n[         R                  U5      U:w  d  [        R                  U5      U:w  a  [        SU< SU< 35      e[         U	 [        U	 U[        ;   a  [        U	 gg)z0Unregister an extension code.  For testing only.rY   z is not registered with code N)r\   rL   r]   r[   Ú_extension_cacher^   s       r   r   r   ¿   sl   € àˆ.€CÜ×Ñ Ó$¨Ó,Ü×Ñ˜tÓ$¨Ó+ÝÛštð%ó &ð 	&ä˜CÐ Ü˜4Ð ØÔÓÜ˜TÑ"ð  r   c                  ó,   • [         R                  5         g r   )rc   Úclear© r   r   r   r   Ë   s   € Ü×ÑÕr   r   )Ú__doc__Ú__all__r
   r   r   r   r   r!   r6   rZ   rM   r(   r0   r#   r2   r@   rC   rF   rV   r\   r]   rc   r   r   r   rf   r   r   Ú<module>ri      s¢   ðñòI€ð €ô$ò9ò%ñ €w� Ô (ò:ñ �tˆC�#‰Iƒ˜Ô %òð €	Ù�—‘Ó€	ò'$òV#ò-ò1ðx Ð ØÐ ØÐ ò#ò$
#ór   