ó
    EñiZø  ã                   óÒ  • % 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J	r	  S SK
Jr  S SKJrJrJrJrJrJr  S SKJrJr  S SKrS SKJs  Jr  S SKJr  S SKJrJr  S SK J!r!J"r"  S S	K#J$r$   S S
KJ%r%  \(       a  S SK)J*r*  \" S\S9r+\" SSS9r,\-" \S5      =(       a	    \-" \S5      r.\R^                  S 5       r0 " S S5      r1S\1S\4S jr20 r3\4\5S4   \6S'   \Rn                  \Rp                  \Rr                  \Rt                  \Rv                  \Rx                  \Rz                  /r> " S S\1\ R~                  5      r@S rAS rBS rCS rD " S S 5      rE\E" 5       qFSCS! jrGS" rHS# rIS$ rJS% rKS& rLS' rM\N" 5       qO\NS(   \6S)'   S* rPS+ rQS, rR " S- S(\1\\,\+4   5      rS " S. S/\S\,\+4   5      rTS0\U4S1 jrVS0\U4S2 jrWS3\R°                  S0\U4S4 jrY " S5 S6\\,\+4   5      rZS\Z\,\+4   S7\,R¶                  S8\,R¸                  S0\+4S9 jr] " S: S;\R¼                  5      r_S< r`S= ra " S> S?\R¼                  5      rb " S@ SA\R¼                  5      rc\c" 5       rd\c\6SB'   g! \& a    \'" \(5      r% GNñf = f)Dé    N)ÚCallableÚIterator)Úcached_property)ÚAnyÚClassVarÚConcatenateÚfinalÚGenericÚTYPE_CHECKING)Ú	ParamSpecÚTypeVar)Ú_utils_internal)Ú_dispatch_is_included_in_aliasÚDispatchKey)Údispatch_functorchÚTransformType)ÚTorchDispatchMode)ÚNotImplementedType)ÚBaseFunctionalizeAPIÚ_T)ÚdefaultÚ_P.ÚgetdlopenflagsÚsetdlopenflagsc               #   ó  #   • [         (       d  Sv •  g[        R                  " 5       n [        R                  " U [        R
                  -  5         Sv •  [        R                  " U 5        g! [        R                  " U 5        f = f7f)zu
Context manager to set the RTLD_GLOBAL dynamic linker flag while we open a
shared library to load custom operators.
N)Ú_SET_GLOBAL_FLAGSÚsysr   r   ÚctypesÚRTLD_GLOBAL)Ú	old_flagss    ÚG/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_ops.pyÚdl_open_guardr"   (   s^   é € ÷ ÒÛØÜ×"Ò"Ó$€IÜ×Ò�y¤6×#5Ñ#5Ñ5Ô6ð&Ûä×Ò˜9Õ%øŒ×Ò˜9Õ%üs   ‚ABÁA+ ÁBÁ+BÂBc                   óÔ   • \ rS rSrSrS rS rS rS rS\	\
   \	\R                     -  \-  \-  S\\\\4   /\\\4   4   4S	 jrS
\\S\4   \4   S\\S\4   \4   4S jrS rSrg)ÚOperatorBaseé9   z«
Base class for OpOverload (which represents C++ ATen operators) and HigherOrderOperator
(which represents Python-only operators that are unrepresentable in TorchScript).
c                 ó<   • 0 U l         0 U l        0 U l        0 U l        g ©N)Ú_dispatch_cacheÚ
py_kernelsÚpython_key_tableÚfunctorch_table©Úselfs    r!   Ú__init__ÚOperatorBase.__init__?   s0   € ð  UWˆÔð BDˆŒð ð 	Ôð  "ˆÕó    c                 ó   • [         er'   ©ÚNotImplementedError©r-   ÚargsÚkwargss      r!   Ú__call__ÚOperatorBase.__call__i   ó   € Ü!Ð!r0   c                 ó   • XR                   ;   $ r'   )r)   )r-   Úks     r!   Úhas_kernel_for_dispatch_keyÚ(OperatorBase.has_kernel_for_dispatch_keyl   s   € Ø—O‘OÑ#Ð#r0   c                 ó¦   • U R                    HA  n[        R                  R                  U5      (       a  M)  UR	                  U5      (       d  MA    g   g)NTF)r)   ÚtorchÚ_CÚ_dispatch_is_alias_keyÚhas)r-   Úksr;   s      r!   Úhas_kernel_for_any_dispatch_keyÚ,OperatorBase.has_kernel_for_any_dispatch_keyo   s9   € Ø—”ˆAÜ—8‘8×2Ñ2°1×5Ó5¸"¿&¹&À¿)»)Ùñ !ð r0   r;   Úreturnc                 óh   ^ ^• S[         [        [        4   S[         [        [        4   4UU 4S jjnU$ )NÚfnrF   c                 ó  >• [         R                  " T5      (       a}  [        T[        5      (       d  [        T[        R
                  5      (       aI  TTR                  ;   a  [        T S35      eU TR                  T'   TR                  R                  5         U $ [        T[        5      (       a/  TTR                  ;   a  [        T S35      eU TR                  T'   U $ [        T[        5      (       d  [        S[        T5       35      eT[        R                  :X  a  [        S5      eTTR                   ;   a  [#        ST STR%                  5        35      eU TR                   T'   TR                  R                  5         U $ )Nz' already registered in python_key_tablez& already registered in functorch_tablezexpected DispatchKey, got z>Please register a mode for the DispatchKey.Python key instead.z%Trying to override a python impl for z on operator )ÚinspectÚisclassÚ
issubclassr   r?   ÚTensorr*   ÚAssertionErrorr(   ÚclearÚ
isinstancer   r+   r   ÚtypeÚPythonr)   ÚRuntimeErrorÚname)rH   r;   r-   s    €€r!   ÚinnerÚ#OperatorBase.py_impl.<locals>.innery   sU  ø€ Ü�Š˜q×!Ñ!Ü˜1Ô/×0Ñ0´J¸qÄ%Ç,Á,×4OÑ4Oà˜×-Ñ-Ó-Ü(¨A¨3Ð.UÐ)VÓWÐWà+-�×%Ñ% aÑ(Ø×$Ñ$×*Ñ*Ô,Ø�	ä˜!œ]×+Ñ+Ø˜×,Ñ,Ó,Ü(¨A¨3Ð.TÐ)UÓVÐVØ*,�×$Ñ$ QÑ'Ø�	ä˜a¤×-Ñ-Ü$Ð'AÄ$ÀqÃ'ÀÐ%KÓLÐLØ”K×&Ñ&Ó&Ü$ØTóð ð �D—O‘OÓ#Ü"Ø;¸A¸3¸mÈDÏIÉIËKÈ=ÐYóð ð "$ˆD�O‰O˜AÑØ× Ñ ×&Ñ&Ô(ØˆIr0   )r   r   r   )r-   r;   rU   s   `` r!   Úpy_implÚOperatorBase.py_implu   s5   ù€ ð	”hœr¤2˜vÑ&ð 	¬8´B¼°FÑ+;÷ 	ð 	ð@ ˆr0   rH   r   c           	      ó  ^^^^• SSK JmJnJmJm  S[
        R                  S[
        R                  S[        4UU4S jjnSUS -  S[
        R                  S[
        R                  S[        [        -  4UU4S jjnS[
        R                  S[
        R                  S[        4UU4S	 jjnU R                  [        R                  5      " U5        U R                  U5      " U5        U R                  [        R                  5      " U5        T$ )
Nr   )ÚCppFunctionalizeAPIÚFunctionalTensorModeÚFunctorchFunctionalizeAPIÚPythonFunctionalizeAPIr5   r6   rF   c                  ó&   >• T" T" 5       /U Q70 UD6$ r'   © )r5   r6   rZ   rH   s     €€r!   Úfunctionalize_dk_fnÚ?OperatorBase.py_functionalize_impl.<locals>.functionalize_dk_fn²   s   ø€ ÙÑ)Ó+Ð=¨dÒ=°fÑ=Ð=r0   Úmodec                 ót   >• SSK Jn  SSKJn  SSKJn  U" X4XE4S9(       a  [        $ T" T" U 5      /UQ70 UD6$ )Nr   )Úhas_user_subclass)Ú
FakeTensor)ÚFunctionalTensor)Úallowed_subclasses)Útorch._higher_order_ops.utilsrd   Útorch._subclassesre   Ú#torch._subclasses.functional_tensorrf   ÚNotImplemented)rb   r5   r6   rd   re   rf   r]   rH   s         €€r!   Úfunctionalize_dispatch_mode_fnÚJOperatorBase.py_functionalize_impl.<locals>.functionalize_dispatch_mode_fnµ   sE   ø€ õ HÝ4ÝLá Ø�Ø$.Ð#A÷ô &Ð%ÙÑ,¨TÓ2ÐD°TÒD¸VÑDÐDr0   c                 ó(   >• T" T" U 5      /UQ70 UD6$ r'   r_   )Úinterpreterr5   r6   r\   rH   s      €€r!   Úfunctionalize_functorch_fnÚFOperatorBase.py_functionalize_impl.<locals>.functionalize_functorch_fnÃ   s    ø€ ñ Ñ/°Ó<ÐN¸tÒNÀvÑNÐNr0   )rj   rZ   r[   r\   r]   r   r5   r6   r   r   rW   r   ÚFunctionalizer   )	r-   rH   r[   r`   rl   rp   rZ   r\   r]   s	    `    @@@r!   Úpy_functionalize_implÚ"OperatorBase.py_functionalize_impl¦   sð   û€ ÷	
ó 	
ð	>¤r§w¡wð 	>¼"¿)¹)ð 	>Ì÷ 	>ð 	>ð	EØ&¨Ñ-ð	EÜ68·g±gð	EÜIKÏÉð	EäÔ$Ñ$÷	Eð 	Eð	OÜ "§¡ð	OÜ35·9±9ð	Oä÷	Oð 	Oð
 	�‰”[×.Ñ.Ô/Ð0CÔDØ�‰Ð)Ô*Ð+IÔJØ�‰”]×0Ñ0Ô1Ð2LÔMàˆ	r0   c                 ó   • [         er'   r2   r,   s    r!   rT   ÚOperatorBase.nameÎ   r9   r0   )r(   r+   r)   r*   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r.   r7   r<   rD   rQ   r   r?   rM   r   r   r   r   r   rW   r   rs   rT   Ú__static_attributes__r_   r0   r!   r$   r$   9   s¶   † ñò
("òT"ò$òð$àÐ!Ñ" T¨%¯,©,Ñ%7Ñ7¸-ÑGÈ+ÑUð$ð 
�8˜B ˜FÑ#Ð$ h¨r°2¨vÑ&6Ð6Ñ	7ô$ðb&Ø˜;Ð'=¸rÐ'AÑBÀBÐFÑGð&à	�+Ð4°bÐ8Ñ9¸2Ð=Ñ	>ô&õP"r0   r$   Úopr;   c                 ó>  • U R                  U5      (       a  U$ [        R                  nU[        R                  :X  d  [	        X5      (       a  U R                  U5      (       a  U$ [        R
                  nU[        R                  :X  d  [	        X5      (       a  U R                  U5      (       a  U$ U R                  [        R                  R                  U5      5      =(       d    U R                  [        R
                  5      n[        R                  nU[        R                  :w  a/  [	        X5      (       a  U R                  U5      (       a	  U(       d  U$ [        R                  nU[        R                  :X  d  [	        X5      (       al  U R                  U5      (       aV  U[        R                  :X  a9  U R                  [        R                  R                  5      (       a  [        S5      eU(       d  U$ [        R                  n[	        X5      (       a  U R                  U5      (       a  U$ [        R                   n[	        X5      (       a  U R                  U5      (       a  U$ [        R                  R#                  U5      (       a  U$ [%        SU  SU 35      e)Nzambiguous autogradother kernelzcould not find kernel for ú at dispatch key )r<   r   Ú&CompositeExplicitAutogradNonFunctionalÚ	UndefinedÚis_included_in_aliasÚCompositeExplicitAutogradrD   r?   r@   Ú*_dispatch_get_backend_keyset_from_autogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeImplicitAutogradÚAutogradOtherÚ _dispatch_autogradother_backendsrS   ÚAutogradÚFuncTorchBatchedDecompositionÚ_dispatch_has_backend_fallbackr3   )r}   r;   ÚcandÚhas_backend_kernels       r!   Úresolve_keyrŽ   Ó   s  € à	×%Ñ% a×(Ñ(Øˆä×=Ñ=€Dà	Œ[×"Ñ"Ó"Ô&:¸1×&CÑ&CØ
×
(Ñ
(¨×
.Ñ
.Øˆä×0Ñ0€Dà	Œ[×"Ñ"Ó"Ô&:¸1×&CÑ&CØ
×
(Ñ
(¨×
.Ñ
.ØˆØ×;Ñ;Ü�‰×;Ñ;¸AÓ>ó÷ Oà	×	'Ñ	'¬×(MÑ(MÓ	Nð ô ×<Ñ<€Dà	
Œk×#Ñ#Ó	#Ô(<¸Q×(EÑ(EØ×*Ñ*¨4×0Ñ0Þ"àˆÜ×0Ñ0€Dà	Œ[×"Ñ"Ó"Ô&:¸1×&CÑ&CØ
×
(Ñ
(¨×
.Ñ
.Ø”×)Ñ)Ó)¨b×.PÑ.PÜ�H‰H×5Ñ5÷/
ñ /
ô Ð?Ó@Ð@Þ#ØˆKä×Ñ€DÜ˜A×$Ñ$¨×)GÑ)GÈ×)MÑ)MØˆä×4Ñ4€DÜ˜A×$Ñ$¨×)GÑ)GÈ×)MÑ)MØˆä‡x�x×.Ñ.¨q×1Ñ1ð ˆÜ
Ð :¸2¸$Ð>OÐPQÈsÐSÓ
TÐTr0   ÚHigherOrderOperatorÚ_higher_order_opsc                   ó4  ^ • \ rS rSrSS.U 4S jjrS\\   \\R                     -  \	-  \
-  S\\\\4   /\\\4   4   4U 4S jjrS\\\4   S\\\4   4S	 jr\S
 5       r\S\4S j5       rS rS r\R0                  S 5       rS rS rS rSS jrSrU =r$ )r�   i  F)Ú	cacheablec                ó0  >• [         TU ]  5         [        U 5      [        L a  [	        S5      eXl        Xl        U [        U'   SU l        SU l	        X l
        [        R                  R                  5       U l        [         H  nU R!                  U5        M     g )NzODirect instantiation of HigherOrderOperator is not allowed. Please subclass it.Úhigher_orderútorch.ops.higher_order)Úsuperr.   rQ   r�   rS   Ú_namerw   r�   Ú_nsrx   Ú
_cacheabler?   r@   Ú_dispatch_keyset_fullÚnon_fallthrough_keysÚ2_HIGHER_ORDER_OP_DEFAULT_FALLTHROUGH_DISPATCH_KEYSÚfallthrough)r-   rT   r’   Údispatch_keyÚ	__class__s       €r!   r.   ÚHigherOrderOperator.__init__  s…   ø€ Ü‰ÑÔÜ�‹:Ô,Ò,ÜØaóð ð Œ
ð ŒØ"&Ô˜$ÑØ!ˆŒØ2ˆŒØ#Œä$)§H¡H×$BÑ$BÓ$DˆÔ!çNˆLØ×Ñ˜\Ö*ò Or0   r;   rF   c                 óÌ   >• [        U[        5      (       a@  U R                  R                  U5      (       d   U R                  R	                  U5      U l        [
        TU ]  U5      $ r'   )rP   r   r›   rB   Úaddr–   rW   ©r-   r;   rŸ   s     €r!   rW   ÚHigherOrderOperator.py_impl7  sP   ø€ ô �aœ×%Ñ%¨d×.GÑ.G×.KÑ.KÈA×.NÑ.NØ(,×(AÑ(A×(EÑ(EÀaÓ(HˆDÔ%Ü‰w‰˜qÓ!Ð!r0   rH   c                 ó²   ^ ^• S[         R                  S[         R                  S[        4UU 4S jjnT R	                  [
        R                  5      " U5        T$ )Nr5   r6   rF   c                  óò  >• [         R                  " 5       (       a1  [        R                  " [         R                  S / U QUP75      (       a0  [         R
                  R                  5          T" U 0 UD6sS S S 5        $ SSKJn  U" T5      (       aP  TR                  " U 0 UD6n[        S UR                   5       5      (       a  [        STR                  5        S35      eT" U 0 UD6$ ! , (       d  f       Ny= f)Nc                 ó$   • U R                   (       + $ r'   )Úrequires_grad)Úts    r!   Ú<lambda>ÚRHigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autograd.<locals>.<lambda>F  s   € ˜aŸo™oÕ-r0   r   )Ú_has_gen_schemac              3   ó8   #   • U  H  oR                   v •  M     g 7fr'   )Úis_write©Ú.0Úargs     r!   Ú	<genexpr>ÚSHigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autograd.<locals>.<genexpr>P  s   é € Ð@Ò/?¨—|–|Ò/?ùó   ‚zThe zå HigherOrderOperator does not currently support training with in-place input or buffer mutations If you require this feature, please submit an issue to PyTorch. Alternatively, consider creating your own custom autograd.Function. )r?   Úis_grad_enabledÚpytreeÚtree_all_onlyrM   r@   Ú_AutoDispatchBelowAutogradrh   r¬   Ú
gen_schemaÚanyÚ	argumentsrS   rT   )r5   r6   r¬   ÚschemarH   r-   s       €€r!   Úmaybe_run_autogradÚ@HigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autogradC  sÜ   ø€ Ü×(Ò(×*Ñ*¬f×.BÒ.BÜ—‘Ù-Ø�$�˜‘÷/ñ /ô
 —X‘X×8Ñ8Õ:Ù Ð0¨Ñ0÷ ;Ñ:õ Fá˜t×$Ñ$ØŸš¨$Ð9°&Ñ9�ÜÑ@¨v×/?Ò/?Ó@×@Ñ@Ü&Ø˜tŸy™y›{˜mð ,_ð _óð ñ �tÐ&˜vÑ&Ð&÷ ;Õ:ús   Á+C(Ã(
C6)r   r5   r6   r   rW   r   r‰   )r-   rH   r½   s   `` r!   Úpy_autograd_implÚ$HigherOrderOperator.py_autograd_impl?  sI   ù€ ð	'¤b§g¡gð 	'¼¿¹ð 	'Är÷ 	'ð 	'ð. 	�‰”[×)Ñ)Ô*Ð+=Ô>àˆ	r0   c                 ó   • U R                   $ r'   )r˜   r,   s    r!   Ú	namespaceÚHigherOrderOperator.namespace^  ó   € à�x‰xˆr0   c                 ó.  • SSK Jn  U R                  =(       d}    U R                   SU R                   3[
        R                  R                  R                  ;   =(       d6    [        X5      =(       a$    [
        R                  R                  R                  $ )Nr   )ÚAutogradFunctionApplyÚ.)Ú"torch._functorch.autograd_functionrÆ   r™   rx   rw   r?   Ú	_inductorÚconfigÚ!unsafe_marked_cacheable_functionsrP   Ú
_functorchÚ.autograd_cache_allow_custom_autograd_functions)r-   rÆ   s     r!   r’   ÚHigherOrderOperator.cacheableb  sr   € åLð �O‰O÷ Ø—/‘/Ð" ! D§M¡M ?Ð3Ü�‰×%Ñ%×GÑGñH÷ô ˜4Ó7÷ [Ü×$Ñ$×+Ñ+×ZÑZð	
r0   c                 óD   • U R                   R                  U5      U l         g r'   )r›   Úremove)r-   rž   s     r!   r�   ÚHigherOrderOperator.fallthroughp  s   € Ø$(×$=Ñ$=×$DÑ$DÀ\Ó$RˆÕ!r0   c                óÂ	  ^^• SSK Jn  XR                  ;   a:  U R                  U   n[        U[        5      (       a  [        SU 35      eU" U0 UD6$ U[        R                  :X  a  [        XU5      $ U[        R                  :X  Ga�  / mS mUU4S jn/ UQUR                  5       Q7 H9  nU" U5        [        U[        [        45      (       d  M(  U H  nU" U5        M     M;     [        T5      n	SSK Jn
  U" 5       nUbÀ  [        U5      U R                  ;   a5  U R                  [        U5         nU
" 5        nU" U/UQ70 UD6nS S S 5        OgUR                  (       a$  U
" 5        nUR!                  U / X#5      sS S S 5        $ [#        SU R$                   SU S	U S
U SU R$                   SU S35      eW[&        La  U$ U	 Hû  n[        U5      nUR                   [(        R*                  R,                  L a  M7  U[(        R.                  R0                  R2                  L aM  [(        R.                  R0                  R4                  nU R                  U   nU" UR6                  /UQ70 UD6nUs  $ XðR                  ;   a  U R                  U   nU" U0 UD6nO[#        SU R$                   SU S35      eU[&        Ld  Mù  Us  $    [9        SU R$                   SU SU	 Vs/ s H  n[        U5      R:                  PM     sn SU R$                   SU S35      e[(        R*                  R=                  U5      nU[        R>                  :X  a¼  SSK Jn
  [A        5       S:”  a¨  [(        R*                  RC                  [        R                  5      (       dv  [E        5       nUc  [        S5      e[        U5      U R                  ;  a  [        SU S35      eU R                  [        U5         nU
" U5       nU" U/UQ70 UD6sS S S 5        $ [G        X5      nUU RH                  ;  a  [#        SU R$                   SU SU S35      eU[        R>                  :w  a  U RH                  U   U R                  U'   U RH                  U   n[        U[        5      (       a  [        SU 35      eU" U0 UD6$ ! , (       d  f       GN= f! , (       d  f       GN= fs  snf ! , (       d  f       NÛ= f)Nr   ©Ú_get_current_dispatch_modez!unexpected DispatchKey in cache: c                 ó^   • [         R                  R                  U 5      R                  S5      $ )NrR   )r?   r@   Ú_dispatch_keysrB   )Útensors    r!   Úhas_python_keyÚ4HigherOrderOperator.dispatch.<locals>.has_python_key‡  s"   € Ü—x‘x×.Ñ.¨vÓ6×:Ñ:¸8ÓDÐDr0   c                 ó„   >• [        U [        R                  5      (       a   T" U 5      (       a  TR                  U 5        g g g r'   )rP   r?   rM   Úappend)r±   rØ   Úoverloaded_args_lists    €€r!   Úcheck_overloadedÚ6HigherOrderOperator.dispatch.<locals>.check_overloadedŠ  s5   ø€ Ü˜c¤5§<¡<×0Ñ0±^ÀC×5HÑ5HØ(×/Ñ/°Õ4ð 6IÐ0r0   )Ú_pop_mode_temporarilyz5There was no rule registered for HigherOrderOperator z
 and mode z.Hint: set zc's supports_higher_order_operators to True. This causes all higher order operators to pass through zk's __torch_dispatch__, so handle them accordingly by adding support for HigerOrderOperators (in this case, z) in zC.__torch_dispatch__ or returning NotImplemented when not supported.z%There was no rule registered for HOP z and subclass z. We recommend filing an issue.zHigherOrderOperator 'z¹' is not supported for the given input types. This typically happens when using custom tensor types or dispatch modes that don't have implementations for this operation.

Current mode: z
Input types: z$

To fix this, can add support for 'z' in z's __torch_dispatch__
zIIllegal invocation of dispatch on DispatchKey.PreDispatch without a mode.zCurrent active mode z not registeredz.could not find kernel for HigherOrderOperator r   z (resolved from Ú)z&unexpected DispatchKey in py_kernels: )%Útorch.utils._python_dispatchrÔ   r(   rP   r   rN   ÚFuncTorchDynamicLayerFrontModer   rR   ÚvaluesÚlistÚtuplerß   rQ   r*   Úsupports_higher_order_operatorsÚ__torch_dispatch__r3   r—   rk   r?   r@   Ú_disabled_torch_dispatch_implÚ_subclassesÚfake_tensorre   ÚFakeTensorModeÚ	fake_modeÚ	TypeErrorrw   Ú_to_functionality_keyÚPreDispatchÚ&_len_torch_dispatch_stack_pre_dispatchÚ&_dispatch_tls_is_dispatch_key_excludedÚ'_get_current_dispatch_mode_pre_dispatchrŽ   r)   )r-   rž   r5   r6   rÔ   ÚkernelrÝ   r±   ÚaÚoverloaded_argsrß   Ú	curr_modeÚhandlerrb   ÚresultÚsubclass_typeÚfunctionality_keyÚ	final_keyrØ   rÜ   s                     @@r!   ÚdispatchÚHigherOrderOperator.dispatchu  s   ù€ ÝKà×/Ñ/Ó/Ø×)Ñ)¨,Ñ7ˆFÜ˜&¤+×.Ñ.Ü$Ð'HÈÈÐ%QÓRÐRÙ˜4Ð* 6Ñ*Ð*àœ;×EÑEÓEÜ% d°&Ó9Ð9àœ;×-Ñ-Ô-ð $&Ð òEö5ð 1˜Ð0 §¡£Ô0�Ù  Ô%Ü˜c¤D¬% =×1Ó1Û ˜Ù(¨Ö+ó !ñ 1ô $Ð$8Ó9ˆOõ Ká2Ó4ˆIØÑ$Ü˜	“? d×&;Ñ&;Ó;Ø"×3Ñ3´D¸³OÑD�GÙ.Ô0°Dñ ")¨Ð!?°Ò!?¸Ñ!?˜÷ 1Ð0ð
 !×@×@Ù2Ô4¸Ø#,×#?Ñ#?ÀÀbÈ$Ó#W÷ 5Ñ4ô 2ØSÐTX×T^ÑT^ÐS_Ð_iÐjsÐitð u)Ø)2¨ð 4WØW`ÐVað bVàVZ×V`ÑV`ÐUað b Ø )˜{ð +LðMóð ð ¤Ò/Ø!�Mó '�Ü $ S£	�à!×4Ñ4Ü—x‘x×=Ñ=ò>ñ ð !¤E×$5Ñ$5×$AÑ$A×$LÑ$LÒLÜ$)×$5Ñ$5×$AÑ$A×$PÑ$P�MØ"×3Ñ3°MÑB�GÙ$ S§]¡]ÐD°TÒD¸VÑD�FØ!’Mà ×$9Ñ$9Ó9Ø"×3Ñ3°MÑB�Gñ % dÐ5¨fÑ5‘Fä-Ø?ÀÇ
Á
¸|È>ÐZgÐYhð i8ð 9óð ð ¤Ô/Ø!’Mñ= 'ôB Ø'¨¯
©
 |ð 4!ð "+ ð , Ù;JÓ Kº?°a¤ a£×!1Ô!1¹?Ñ KÐLð M5Ø59·Z±Z°LÀÀiÀ[ÐPgðióð ô "ŸH™H×:Ñ:¸<ÓHÐØ¤× 7Ñ 7Ó7ÝJô
 7Ó8¸1Ó<Ü—h‘h×EÑEÜ×"Ñ"÷ñ ô DÓE�	ØÑ$Ü(Øcóð ô ˜	“?¨$×*?Ñ*?Ó?Ü(Ø.¨y¨k¸ÐIóð ð ×/Ñ/´°Y³Ñ@�Ù*Ð+<Ô=ÀÙ" 4Ð9¨$Ò9°&Ñ9÷ >Ñ=ô   Ó3ˆ	ð ˜DŸO™OÓ+Ü%Ø@ÀÇÁÀð M#Ø#, +Ð-=¸l¸^È1ðNóð ð œ;×2Ñ2Ó2Ø15·±ÀÑ1KˆD× Ñ  Ñ.Ø—‘ Ñ+ˆô �fœk×*Ñ*Ü Ð#IÈ&ÈÐ!RÓSÐSÙ�tÐ&˜vÑ&Ð&÷[ 1Ö0ú÷ 5Ö4üòl !L÷2 >Õ=ús*   Ä8R'Å&R9ËSÏ-SÒ'
R6Ò9
SÓ
Sc                ó  • [        X5      n[        R                  R                  U5      (       a$  [        R                  R                  " X/UQ70 UD6$ [        XU R                  5      nU R                  " UR                  5       /UQ70 UD6$ r'   )	Ú_to_flat_tupler?   Ú	overridesÚhas_torch_functionÚhandle_torch_functionÚ_compute_keysetr›   rü   ÚhighestPriorityTypeId)r-   r5   r6   Ú	flat_argsÚdispatch_key_sets        r!   r7   ÚHigherOrderOperator.__call__  s„   € ä" 4Ó0ˆ	Ü�?‰?×-Ñ-¨i×8Ñ8Ü—?‘?×8Ò8ØðØ"&òØ*0ñð ô +¨4¸×9RÑ9RÓSÐØ�}Š}Ð-×CÑCÓEÐWÈÒWÐPVÑWÐWr0   c                 ó4   • [        SU R                   S35      e)NzHigherOrderOperator z¼ does not implement a gen_schema. This is OK as long as the hop is functional. e.g. it should not mutate its inputs and there are no input, output aliasing via views or direct referencing.)r3   r—   r4   s      r!   r¹   ÚHigherOrderOperator.gen_schema#  s$   € Ü!Ø" 4§:¡: ,ð //ð 0ó
ð 	
r0   c                 ó$   • U R                  5        $ r'   )rT   r,   s    r!   Ú__str__ÚHigherOrderOperator.__str__+  s   € Ø—)‘)“+�Ðr0   c                 ó   • U R                   $ r'   ©r—   r,   s    r!   rT   ÚHigherOrderOperator.name.  ó   € Ø�z‰zÐr0   c                 ó   • U $ r'   r_   ©r-   Úmemos     r!   Ú__deepcopy__Ú HigherOrderOperator.__deepcopy__2  ó   € Øˆr0   )rx   rw   r™   r—   r˜   r›   r'   ) rw   rx   ry   rz   r.   rQ   r   r?   rM   r   r   r   r   r   rW   r¿   ÚpropertyrÂ   r	   Úboolr’   r�   rü   ÚabcÚabstractmethodr7   r¹   r  rT   r  r|   Ú__classcell__©rŸ   s   @r!   r�   r�     s   ø† ð +0÷ +ð +ð8"àÐ!Ñ" T¨%¯,©,Ñ%7Ñ7¸-ÑGÈ+ÑUð"ð 
�8˜B ˜FÑ#Ð$ h¨r°2¨vÑ&6Ð6Ñ	7÷"ðà�R˜�VÑðð 
�"�b�&Ñ	ôð> ñó ðð ð
˜4ó 
ó ð
òSò
U'ðn 	×ÑñXó ðXò,
ò ò÷ò r0   c                 ó.   • [         R                  " U 0 UD6$ r'   )r¶   Úarg_tree_leaves©r5   r6   s     r!   rÿ   rÿ   6  s   € Ü×!Ò! 4Ð2¨6Ñ2Ð2r0   c                 ó.   • [        X5      n[        X25      $ r'   )Ú_get_tensorsÚkey_extractor)r5   r6   r›   Útensorss       r!   r  r  :  s   € Ü˜4Ó(€GÜ˜Ó7Ð7r0   c                 óž   • [        X5      nU Vs/ s H&  n[        U[        R                  5      (       d  M$  UPM(     nn[	        U5      $ s  snf r'   )rÿ   rP   r?   rM   rå   )r5   r6   Úflat_allr©   Útensor_argss        r!   r!  r!  ?  s>   € Ü˜dÓ+€HÙ&ÓFšh˜¬*°Q¼¿¹×*E—1™h€KÐFÜ�ÓÐùò Gs
   �#A
·A
c                 óâ   • [         R                  R                  5       nU  H%  nU[         R                  R                  U5      -  nM'     U[         R                  R	                  5       -
  nX!-  nU$ r'   )r?   r@   Ú_dispatch_tls_local_include_setrÖ   Ú_dispatch_tls_local_exclude_set)r#  Úkey_maskÚkey_setr×   s       r!   r"  r"  G  s[   € Ü�h‰h×6Ñ6Ó8€GÛˆØœEŸH™H×3Ñ3°FÓ;Ñ;Šñ àœŸ™×@Ñ@ÓBÑB€GØÑ €GØ€Nr0   c                   ó,   • \ rS rSrS rS rS rS rSrg)Ú_ModeStackStateForPreDispatchi]  c                 ó$   • S S /U l         S U l        g r'   )Ú*_ModeStackStateForPreDispatch__infra_modesÚ_schema_check_moder,   s    r!   r.   Ú&_ModeStackStateForPreDispatch.__init__^  s   € Ø" D˜\ˆÔØ"&ˆÕr0   c                 óš   • U[        U R                  5      :¼  a$  [        SU S[        U R                  5       35      eX R                  U'   g ©Nzindex z& out of bounds for infra_modes length ©Úlenr/  rN   )r-   Úindexrb   s      r!   ÚsetÚ!_ModeStackStateForPreDispatch.setb  sO   € Ø”C˜×*Ñ*Ó+Ó+Ü Ø˜˜ÐEÄcÈ$×J\ÑJ\ÓF]ÐE^Ð_óð ð %)×Ñ˜5Ò!r0   c                 óš   • U[        U R                  5      :¼  a$  [        SU S[        U R                  5       35      eU R                  U   $ r3  r4  )r-   r6  s     r!   ÚgetÚ!_ModeStackStateForPreDispatch.geti  sR   € Ø”C˜×*Ñ*Ó+Ó+Ü Ø˜˜ÐEÄcÈ$×J\ÑJ\ÓF]ÐE^Ð_óð ð ×!Ñ! %Ñ(Ð(r0   c                 ó�   • [        U R                   Vs/ s H	  oc  M  UPM     sn5      [        U R                  S L5      -   $ s  snf r'   )r5  r/  Úintr0  )r-   Úis     r!   ÚcountÚ#_ModeStackStateForPreDispatch.countp  sD   € Ü˜t×1Ò1ÓCÒ1˜!—AÑ1ÑCÓDÄsØ×#Ñ#¨4Ð/óH
ñ 
ð 	
ùÒCs
   ”AžA)Ú__infra_modesr0  N)	rw   rx   ry   rz   r.   r7  r:  r?  r|   r_   r0   r!   r-  r-  ]  s   † ò'ò)ò)õ
r0   r-  c                 ó¤  ^ ^• [        5       m[        R                  R                  R                  [        R                  R                  R
                  4nT b  T U;  a  [        SU ST  35      eU(       a  T b  [        S5      eUU 4S jnU" 5       n[        5       nUS:X  a.  [        R                  R                  [        R                  S5        U$ )Nz mode_key must be None or one of z, got z/mode_key must be None when schema_check is Truec                  óž  >• T[         R                  R                  R                  L a-  TR	                  S5      n [        5       R                  SS 5        U $ T[         R                  R                  R                  L a-  TR	                  S5      n [        5       R                  SS 5        U $ [        5       R                  n S [        5       l        U $ )Nr   é   )	r?   r@   Ú_TorchDispatchModeKeyÚPROXYr:  Ú!mode_stack_state_for_pre_dispatchr7  Ú
FUNCTIONALr0  )Úcurrent_modeÚcurrent_mode_stack_pre_dispatchÚmode_keys    €€r!   Ú_unset_modeÚ,unset_mode_pre_dispatch.<locals>._unset_mode‡  s§   ø€ ð ”u—x‘x×5Ñ5×;Ñ;Ò;Ø:×>Ñ>¸qÓAˆLÜ-Ó/×3Ñ3°A°tÔ<ØÐØœŸ™×7Ñ7×BÑBÒBØ:×>Ñ>¸qÓAˆLÜ-Ó/×3Ñ3°A°tÔ<ØÐä<Ó>×QÑQˆLØEIÔ-Ó/ÔBØÐr0   r   F)rG  r?   r@   rE  rF  rH  rN   rð   Ú'_dispatch_tls_set_dispatch_key_includedr   rï   )rK  Úschema_checkÚ
valid_keysrL  rI  Únew_pre_dispatch_lenrJ  s   `     @r!   Úunset_mode_pre_dispatchrR  y  s¾   ù€ Ü&GÓ&IÐ#ä�‰×&Ñ&×,Ñ,Ü�‰×&Ñ&×1Ñ1ð€Jð Ñ °
Ó :ÜØ.¨z¨l¸&ÀÀ
ÐKó
ð 	
ö ØÑÜ Ð!RÓSÐSö ñ  “=€LäAÓCÐð
 ˜qÓ Ü�‰×8Ñ8¼×9PÑ9PÐRWÔXàÐr0   c                 ó¸  • SSK Jn  SSKJn  SSKJn  [        U UUU45      (       d  [        S[        U 5       35      e[        5       n[        X5      (       a5  [        5       R                  nUS:”  a  [        S5      eU [        5       l        O™[        X5      (       aE  [        5       R                  S5      nUb  [        SU 35      e[        5       R                  SU 5        OD[        5       R                  S5      nUb  [        S	U 35      e[        5       R                  SU 5        US:X  a/  [        R                  R!                  ["        R$                  S
5        g g )Nr   )r[   )ÚSchemaCheckMode)ÚProxyTorchDispatchModezSmode must be FunctionalTensorMode, ProxyTorchDispatchMode, or SchemaCheckMode, got zYSchemaCheckMode for pre-dispatch must be used exclusively, found other modes on the stackrD  z.FunctionalTensorMode slot already occupied by z0ProxyTorchDispatchMode slot already occupied by T)rj   r[   Ú#torch._subclasses.schema_check_moderT  Ú"torch.fx.experimental.proxy_tensorrU  rP   rN   rQ   rð   rG  r0  r:  r7  r?   r@   rN  r   rï   )rb   r[   rT  rU  Úprevious_mode_stack_lenrI  s         r!   Ú_set_mode_pre_dispatchrY  ¤  sV  € ÝHÝCÝIäØà Ø"Øð	
÷ñ ô ØaÔbfÐgkÓblÐamÐnó
ð 	
ô EÓFÐÜ�$×(Ñ(Ü8Ó:×MÑMˆØ" QÓ&Ü Økóð ð BFÔ)Ó+Õ>Ü	�D×	/Ñ	/Ü8Ó:×>Ñ>¸qÓAˆØÑ#Ü Ø@ÀÀÐOóð ô 	*Ó+×/Ñ/°°4Õ8ä8Ó:×>Ñ>¸qÓAˆØÑ#Ü ØBÀ<À.ÐQóð ô 	*Ó+×/Ñ/°°4Ô8ð  !Ó#Ü�‰×8Ñ8¼×9PÑ9PÐRVÕWð $r0   c                  óx  • [        5       n [        5       nUS:X  a  [        S5      eU R                  b
  [	        S SS9$ U R                  S5      b-  [	        [        R                  R                  R                  5      $ U R                  S5      b-  [	        [        R                  R                  R                  5      $ g )Nr   zTrying to pop empty mode stackT)rO  rD  )rG  rð   rN   r0  rR  r:  r?   r@   rE  rH  rF  )Ú
mode_stackÚpre_dispatch_lens     r!   Ú_pop_mode_from_pre_dispatchr]  Ô  s™   € Ü2Ó4€JÜ=Ó?Ðà˜1ÓÜÐ=Ó>Ð>à×$Ñ$Ñ0Ü& t¸$Ñ?Ð?Ø‡~�~�aÓÑ$Ü&¤u§x¡x×'EÑ'E×'PÑ'PÓQÐQØ‡~�~�aÓÑ$Ü&¤u§x¡x×'EÑ'E×'KÑ'KÓLÐLð %r0   c                  ó2   • [        5       R                  5       $ r'   )rG  r?  r_   r0   r!   rð   rð   ã  s   € Ü,Ó.×4Ñ4Ó6Ð6r0   c                 ó  • U [         R                  R                  R                  L a  [	        5       R                  S5      $ U [         R                  R                  R                  La  [        SU  35      e[	        5       R                  S5      $ )Nr   z*mode_key must be PROXY or FUNCTIONAL, got rD  )r?   r@   rE  rF  rG  r:  rH  rN   )rK  s    r!   Ú_get_dispatch_mode_pre_dispatchr`  ç  ss   € à”5—8‘8×1Ñ1×7Ñ7Ò7Ü0Ó2×6Ñ6°qÓ9Ð9àœ5Ÿ8™8×9Ñ9×DÑDÒDÜ Ø<¸X¸JÐGóð ô 1Ó2×6Ñ6°qÓ9Ð9r0   c                  óh  • [        5       R                  b  [        5       R                  $ [        5       R                  5       n U S:X  a  [        5       R                  S5      $ U S:X  aL  [        5       R                  S5      b  [        5       R                  S5      $ [        5       R                  S5      $ g )Né   rD  r   )rG  r0  r?  r:  )Ú	stack_lens    r!   rò   rò   ó  sž   € Ü(Ó*×=Ñ=ÑIÜ0Ó2×EÑEÐEä5Ó7×=Ñ=Ó?ˆ	Ø˜‹>Ü4Ó6×:Ñ:¸1Ó=Ð=Ø˜‹>ô 5Ó6×:Ñ:¸1Ó=ÑIô 2Ó3×7Ñ7¸Ó:ðô 7Ó8×<Ñ<¸QÓ?ðð
 r0   c                  ó   • [         $ r'   )Ú"_mode_stack_state_for_pre_dispatchr_   r0   r!   rG  rG    s   € ä-Ð-r0   Ú
OpOverloadÚ
cached_opsc                 ó.   • [         R                  U 5        g r'   )rg  r¢   )Úop_overloads    r!   Úadd_cached_oprj    s   € ä‡N�N�;Õr0   c                  ó,   • [         R                  5         g r'   )rg  rO   r_   r0   r!   Úreset_cached_opsrl    s   € ä×ÑÕr0   c                  ó   • [         $ r'   )rg  r_   r0   r!   Úget_cached_opsrn    s   € äÐr0   c                   óê  ^ • \ rS rSrSSS\\\4   S\\\\4   \4   S\	R                  R                  S\\   SS	4U 4S
 jjr\S\4S j5       r\S\4S j5       r\S\	R                  R&                  4S j5       rS&S jrS rS\R.                  S\R0                  S\4S jrS\	R                  R4                  S\R.                  S\R0                  S\4S jrS rS rS\S\4U 4S jjrS\	R                  R4                  S\4U 4S jjr \!S\4S j5       r"S\4S jr#S\R.                  S\R0                  S\4S jr$S\SS	4S jr%S\S\\\\4   -  4S  jr&S! r'\!S" 5       r(\!S# 5       r)\!S$ 5       r*S%r+U =r,$ )'rf  i  ÚoverloadpacketÚOpOverloadPacketr}   Úop_dkr¼   ÚtagsrF   Nc                 óÔ  >• [         TU ]  5         X l        X0l        X@l        Xl        XPl        UR                  S:X  a  SOUR                  U l        U(       a"  [        R                  R                  U;   U l        U R                  R                  U l        UR                  (       a"  U =R                  SUR                  -   -  sl        U R                  R                  R                  S5      S    SU R                   3U l        UR"                  U l        UR"                  Ul        U R                  U l        0 U l        U R$                  [        R(                  R*                  ;   U l        S nU R                  R.                   HL  nUR0                  c  M  Uc  UR0                  R2                  nM-  UR0                  R2                  =(       d    UnMN     US L=(       a    U(       + U l        g )NÚ r   rÇ   ú::rD  )r–   r.   Ú_opÚ_op_dkÚ_schemaÚ_overloadpacketÚ_tagsÚoverload_nameÚ_overloadnamer?   ÚTagÚnondeterministic_seededÚ_nondeterministic_seededrT   r—   Úsplitrw   rx   ry   Ú__annotations__ÚlibraryÚ_defsÚ_defined_in_pythonr»   Ú
alias_infor®   Úis_view)	r-   rp  r}   rr  r¼   rs  r®   rô   rŸ   s	           €r!   r.   ÚOpOverload.__init__  sƒ  ø€ ô 	‰ÑÔØŒØŒØŒØ-ÔØŒ
à×-Ñ-°Ó3‰I¸×9MÑ9Mð 	Ôö Ü,1¯I©I×,MÑ,MÐQUÑ,UˆDÔ)Ø—\‘\×&Ñ&ˆŒ
Ø××Ø�JŠJ˜# × 4Ñ 4Ñ4Ñ4�JØŸ<™<×,Ñ,×2Ñ2°4Ó8¸Ñ;Ð<¸A¸d×>PÑ>PÐ=QÐRˆŒØ(×3Ñ3ˆŒØ&×1Ñ1ˆŒØ ŸJ™JˆÔØ!ˆÔð #'×"3Ñ"3´u·}±}×7JÑ7JÑ"JˆÔð ˆØ—‘×'Ô'ˆAØ�|‰|Ñ#ÙØÑØŸ<™<×0Ñ0’ð Ÿ<™<×0Ñ0×<°H’ñ (ð   tÐ+×<°H´ˆ�r0   c                 óP   • U R                   R                  R                  SSS9S   $ )Nrv  rD  ©Úmaxsplitr   ©ry  rT   r�  r,   s    r!   Ú
_namespaceÚOpOverload._namespaceI  ó'   € à�|‰|× Ñ ×&Ñ& t°aÐ&Ð8¸Ñ;Ð;r0   c                 óP   • U R                   R                  R                  SSS9S   $ )Nrv  rD  rŠ  rŒ  r,   s    r!   Ú_opnameÚOpOverload._opnameM  r�  r0   c                 ó’   • [         R                  R                  U R                  R                  U R                  R
                  5      $ r'   )r?   r@   Ú_dispatch_find_schema_or_throwry  rT   r|  r,   s    r!   Ú_handleÚOpOverload._handleQ  s2   € ä�x‰x×6Ñ6Ø�L‰L×Ñ˜tŸ|™|×9Ñ9ó
ð 	
r0   c                 ó   • U $ r'   r_   r  s     r!   r  ÚOpOverload.__deepcopy__X  r  r0   c                 óV   • SU R                    SU R                   SU R                   S3$ )Nz<OpOverload(op='rÇ   z', overload='z')>)r�  r‘  r}  r,   s    r!   Ú__repr__ÚOpOverload.__repr__[  s.   € Ø! $§/¡/Ð!2°!°D·L±L°>ÀÈt×OaÑOaÐNbÐbeÐfÐfr0   r5   r6   c                ó&   • U R                   " U0 UD6$ r'   ©rw  r4   s      r!   r7   ÚOpOverload.__call__`  s   € Ø�xŠx˜Ð( Ñ(Ð(r0   Úkeysetc                óB   • U R                   R                  " U/UQ70 UD6$ r'   )r•  Úredispatch_boxed)r-   rŸ  r5   r6   s       r!   Ú
redispatchÚOpOverload.redispatche  s#   € ð �|‰|×,Ò,¨VÐE°dÒE¸fÑEÐEr0   c                 ó,   • [        U R                  5      $ r'   ©Úhashrw  r,   s    r!   Ú__hash__ÚOpOverload.__hash__j  ó   € Ü�D—H‘H‹~Ðr0   c                 ó„   • SR                   " / U R                  R                  R                  S5      QU R                  P76 $ )Nz{}.{}.{}rv  )Úformatry  rT   r�  r}  r,   s    r!   r  ÚOpOverload.__str__n  s6   € Ø× Ò ÐT $§,¡,×"3Ñ"3×"9Ñ"9¸$Ó"?ÐTÀ×ASÑASÒTÐTr0   r;   c                 óŒ   >• [         TU ]  U5      =(       d.    [        R                  R	                  U R                  5       U5      $ r'   )r–   r<   r?   r@   Ú%_dispatch_has_kernel_for_dispatch_keyrT   r£   s     €r!   r<   Ú&OpOverload.has_kernel_for_dispatch_keyq  s9   ø€ Ü‰wÑ2Øó
÷ Lä�X‰X×;Ñ;¸D¿I¹I»KÈÓKð	Lr0   rC   c                 óŒ   >• [         R                  R                  U R                  5       U5      =(       d    [        TU ]  U5      $ r'   )r?   r@   Ú)_dispatch_has_kernel_for_any_dispatch_keyrT   r–   rD   )r-   rC   rŸ   s     €r!   rD   Ú*OpOverload.has_kernel_for_any_dispatch_keyv  s7   ø€ Ü�x‰x×AÑAØ�I‰I‹K˜ó
÷ 9ä‰WÑ4°RÓ8ð	9r0   c                 ó   • U R                   $ r'   )r�  r,   s    r!   rÂ   ÚOpOverload.namespace{  s   € à�‰Ðr0   c                 ó¨   • [         R                  nXR                  ;   =(       d.    [        R                  R                  U R                  5       U5      $ r'   )r   r†   r)   r?   r@   r®  rT   )r-   Údks     r!   Ú_can_decomposeÚOpOverload._can_decompose  s=   € Ü×2Ñ2ˆØ—_‘_Ñ$÷ 
¬¯©×(VÑ(VØ�I‰I‹K˜ó)
ð 	
r0   c                 ó  • [         R                  nX0R                  ;   a  U R                  U   " U0 UD6$ [        R                  R                  U R                  5       U5      (       a  U R                  " U/UQ70 UD6$ [        $ r'   )	r   r†   r)   r?   r@   r®  rT   rx  rk   )r-   r5   r6   r¶  s       r!   Ú	decomposeÚOpOverload.decompose…  sn   € Ü×2Ñ2ˆØ—‘Ó ð
 —?‘? 2Ò&¨Ð7°Ñ7Ð7Ü�X‰X×;Ñ;¸D¿I¹I»KÈ×LÑLØ—;’;˜rÐ3 DÒ3¨FÑ3Ð3ä!Ð!r0   Úkeyc                 ó<   • U R                   R                  US 5        g r'   )r(   Úpop)r-   r¼  s     r!   Ú_uncache_dispatchÚOpOverload._uncache_dispatchš  s   € Ø×Ñ× Ñ   dÕ+r0   c                 óT  ^ ^• TT R                   ;   a  [        T  ST S35      eT[        R                  :X  a�  [	        T [
        5      (       d-  T R                  (       d  TT R                   T'   [        T 5        T$ S[        R                  S[        R                  S[        4UU 4S jjnUT R                   T'   [        T 5        U$ [        R                  R                  T5      nU[        R                  :X  ar  [!        5       nUS:”  ab  [        R                  R#                  [        R                  5      (       d0  S[        R                  S[        R                  S[        4U 4S jjnU$ [%        T T5      nT[        R                  :g  nT[        R&                  :X  aO  SS KJs  Jn  UR.                  (       a5  UR1                  T U5      nU(       a  UT R                   T'   [        T 5        U$ T R2                  R5                  XU5      nU(       a  UT R                   T'   [        T 5        U$ )	NÚ z already in dispatch cacher5   r6   rF   c                  ó^  >• SSK Jn  [        U" 5       5      nUc  [        S5      eUTR                  ;  aŒ  [        T[        5      (       aa  [        R                  R                  R                  5        n[        R                  R                  R                  " UT/U Q70 UD6sS S S 5        $ TR                  " T/U Q70 UD6$ [        R                  R                  R                  5        nTR                  U   " U/U Q70 UD6sS S S 5        $ ! , (       d  f       NY= f! , (       d  f       g = f)Nr   rÓ   zDIllegal invocation of dispatch on DispatchKey.Python without a mode.)rá   rÔ   rQ   rN   r*   rP   ÚTorchBindOpOverloadr?   ÚutilsÚ_python_dispatchrß   Ú_libraryÚhandle_dispatch_moderx  )r5   r6   rÔ   rö   rb   r¼  r-   s        €€r!   r÷   Ú)OpOverload._get_dispatch.<locals>.handler©  s  ø€ ÝSô !Ñ!;Ó!=Ó>�	ØÑ$Ü(Ø^óð ð  D×$9Ñ$9Ó9Ü! $Ô(;×<Ñ<ä!ŸK™K×8Ñ8×NÑNÔPÐTXä#(§>¡>×#7Ñ#7×#LÒ#LØ $ dð$Ø-1ò$Ø5;ñ$÷ QÑPð  $Ÿ{š{¨3Ð@°Ò@¸Ñ@Ð@ä—[‘[×1Ñ1×GÑGÔIÈTØ×0Ñ0°Ò;¸DÐRÀ4ÒRÈ6ÑR÷ JÑI÷ QÕPú÷ JÕIús   Á3/DÃ*DÄ
DÄ
D,r   c                  óÒ   >• [         R                  S 5       nU" 5        n[        R                  R                  R
                  " UT/U Q70 UD6sS S S 5        $ ! , (       d  f       g = f)Nc               3   ó`   #   • [        5       n  U v •  [        U 5        g ! [        U 5        f = f7fr'   )r]  rY  )Útop_modes    r!   Ú(_temporarily_pop_modes_from_pre_dispatchÚ[OpOverload._get_dispatch.<locals>.handler.<locals>._temporarily_pop_modes_from_pre_dispatchÓ  s(   é € ä#>Ó#@˜ð=Ø"*šNä2°8Õ<øÔ2°8Õ<üs   ‚.Ž ’.ž+«.)Ú
contextlibÚcontextmanagerr?   rÇ  rÅ  rÈ  )r5   r6   rÍ  rö   r-   s       €r!   r÷   rÉ  Ò  s`   ø€ Ü×.Ñ.ñ=ó /ð=ñ BÔCÀyÜ$Ÿ~™~×3Ñ3×HÒHØ% tð Ø.2ò Ø6<ñ ÷ D×C×Cús   Ÿ/AÁ
A&)r(   rN   r   rR   rP   rÄ  r*   rj  r   r5   r6   r   r?   r@   rî   rï   rð   rñ   rŽ   rr   Útorch._dispatch.pythonÚ	_dispatchÚpythonÚCROSSREF_FUNCTIONALIZEÚmake_crossref_functionalizer)   r:  )	r-   r¼  r÷   rú   Úcurr_stack_lenrû   Úcache_resultÚ
pydispatchÚrs	   ``       r!   Ú_get_dispatchÚOpOverload._get_dispatchž  s×  ù€ à�$×&Ñ&Ó&Ü  D 6¨¨3¨%Ð/IÐ!JÓKÐKà”+×$Ñ$Ó$Ü˜dÔ$7×8Ñ8À×AV×AVØ,/�×$Ñ$ SÑ)Ü˜dÔ#Ø�
ðSœrŸw™wð S´"·)±)ð SÄ÷ Sð Sð2 )0ˆD× Ñ  Ñ%Ü˜$ÔØˆNä!ŸH™H×:Ñ:¸3Ó?ÐØ¤× 7Ñ 7Ó7ÜCÓEˆNð  Ó"ÜŸ™×GÑGÜ×&Ñ&÷ñ ð
¤2§7¡7ð ´b·i±ið ÄB÷ ð& �ä  cÓ*ˆ	ð œk×5Ñ5Ñ5ˆð
 ”+×+Ñ+Ó+ß7Ð7à×0×0Ø$×@Ñ@ÀÀyÓQ�ÞØ07�D×(Ñ(¨Ñ-Ü! $Ô'Ø�à�O‰O×Ñ 	Ó5ˆÞØ()ˆD× Ñ  Ñ%Ü˜$ÔØˆr0   c                 ó   • U R                   $ r'   r  r,   s    r!   rT   ÚOpOverload.nameÿ  r  r0   c                 ó   • U R                   $ r'   )rz  r,   s    r!   rp  ÚOpOverload.overloadpacket  s   € à×#Ñ#Ð#r0   c                 ó   • U R                   $ r'   r�  r,   s    r!   r}   ÚOpOverload.op  rÄ   r0   c                 ó   • U R                   $ r'   )r{  r,   s    r!   rs  ÚOpOverload.tags
  s   € à�z‰zÐr0   )r‚  rx   rw   ry   r…  r—   r€  rw  rx  r}  rz  ry  r{  r‡  r'   )-rw   rx   ry   rz   r   r   r   r   r   r?   r@   ÚFunctionSchemarä   r   r.   r   Ústrr�  r‘  Ú_DispatchOperatorHandler•  r  rš  r5   r6   r7   ÚDispatchKeySetr¢  r§  r  r  r<   rD   r  rÂ   r·  rº  r¿  rÚ  rT   rp  r}   rs  r|   r  r  s   @r!   rf  rf    s1  ø† ð*=à*ð*=ð �R˜�VÑð*=ð ˜ K° OÑ4°bÐ8Ñ9ð	*=ð
 —‘×'Ñ'ð*=ð �3‰ið*=ð 
÷*=ðX ð<˜Có <ó ð<ð ð<˜ó <ó ð<ð ð
˜Ÿ™×9Ñ9ó 
ó ð
ôògð
) §¡ð )°B·I±Ið )À"ô )ð
FØŸ™×0Ñ0ðFØ9;¿¹ðFØLNÏIÉIðFà	ôFò
òUðL¨[ð L¸T÷ Lð
9°%·(±(×2IÑ2Ið 9Èd÷ 9ð
 ð˜3ó ó ðð
 ô 
ð"˜rŸw™wð "°"·)±)ð "Àô "ð*, [ð ,°Tô ,ð_ ð _°¸xÈÈBÈÑ?OÑ1Oô _òBð ñ$ó ð$ð ñó ðð ñó ör0   c                   ó®   • \ rS rSrS\\   4S jrS\R                  S\R                  S\
4S jrS\\   S\R                  S\R                  S\
4S jrS	rg
)rÄ  i  rF   c                 ób  ^ • [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  [         R                  /nS[         4U 4S jjnU Vs/ s H  nU" U5      (       d  M  UPM     sn$ s  snf )Nr¼  c                 óD  >• [         R                  R                  TR                  5       U 5      (       a.  [         R                  R	                  TR                  5       U 5      $ U TR
                  ;  =(       d)    TR
                  U    [         R                  R                  L $ r'   )r?   r@   r®  rT   Ú0_dispatch_kernel_for_dispatch_key_is_fallthroughr)   rƒ  Úfallthrough_kernel)r¼  r-   s    €r!   Ú(_may_use_fallthrough_instead_of_fallbackÚWTorchBindOpOverload._fallthrough_keys.<locals>._may_use_fallthrough_instead_of_fallback$  sv   ø€ Ü�x‰x×=Ñ=¸d¿i¹i»kÈ3×OÑOÜ—x‘x×PÑPØ—I‘I“K óð ð
 ˜4Ÿ?™?Ñ*÷ LØ—?‘? 3Ñ'¬5¯=©=×+KÑ+KÐKðr0   )	r   r‰   ÚAutogradCPUÚAutogradCUDAÚADInplaceOrViewÚBackendSelectÚPythonTLSSnapshotÚPythonDispatcherrr   )r-   Ú_DEFAULT_FALLTHROUGH_KEYSrí  r¼  s   `   r!   Ú_fallthrough_keysÚ%TorchBindOpOverload._fallthrough_keys  s�   ø€ ô × Ñ Ü×#Ñ#Ü×$Ñ$Ü×'Ñ'Ü×%Ñ%Ü×)Ñ)Ü×(Ñ(Ü×%Ñ%ð	%
Ð!ð		¼+÷ 		ñ 1ó
â0�Ù7¸×<÷ Ù0ñ
ð 	
ùò 
s   ÂB,Â#B,r5   r6   c                óŽ   • [        X5      (       a$  U R                  " U R                  5       /UQ70 UD6$ U R                  " U0 UD6$ r'   )Ú_must_dispatch_in_pythonÚ_dispatch_in_pythonrö  rw  r4   s      r!   r7   ÚTorchBindOpOverload.__call__7  sG   € Ü# D×1Ñ1ð ×+Ò+¨D×,BÑ,BÓ,DÐVÀtÒVÈvÑVÐVØ�xŠx˜Ð( Ñ(Ð(r0   Úfallthrough_keysc           	      ó\  • [         R                  R                  5       nU H  nUR                  U5      nM     [	        X#U5      nUR                  5       nXpR                  ;  a  U R                  U5      OU R                  U   n[        U[        5      (       aa  [         R                  R                  U R                  5       U5      (       a  U R                  " X/-   /UQ70 UD6$ [        SU  SU SU S35      e[        U[        5      (       d  [        S[!        U5       35      eU" U0 UD6$ )NzTorchbind op z4 received a FakeScriptObject input when dispatching zÖ. but no python implementation is found. Please file an issue on this when you encounter this error. This error can happen when you export or compile the model. It can still happen even if a C++ implementation for zz.  has been registered. That's because FakeScriptObject purely lives in python and cannot work  with a C++ implementation.zhandler must be callable, got )r?   r@   rš   rÐ   r  r  r(   rÚ  rP   r   rë  rT   rú  rS   r   rN   rQ   )	r-   rü  r5   r6   r›   r¼  r  rž   r÷   s	            r!   rú  Ú'TorchBindOpOverload._dispatch_in_python?  sS  € ô  %Ÿx™x×=Ñ=Ó?ÐÛ#ˆCØ#7×#>Ñ#>¸sÓ#CÒ ñ $ô +¨4Ð9MÓNÐØ'×=Ñ=Ó?ˆð ×#7Ñ#7Ó7ð ×Ñ˜|Ô,à×%Ñ% lÑ3ð 	ô �gœ{×+Ñ+ô �x‰x×HÑHØ—	‘	“˜\÷ñ ð ×/Ò/Ø$ ~Ñ5ðàòð ñð ô Ø ˜vÐ%YÐZaÐYbð cIð JVÈð W.ð	/óð ô ˜'¤8×,Ñ,Ü Ð#AÄ$ÀwÃ-ÀÐ!QÓRÐRÙ˜Ð' Ñ'Ð'r0   r_   N)rw   rx   ry   rz   rä   r   rö  r   r5   r6   r   r7   rú  r|   r_   r0   r!   rÄ  rÄ    sh   † ð
 4¨Ñ#4ô 
ðB) §¡ð )°B·I±Ið )À"ô )ð((Ø $ [Ñ 1ð((Ø:<¿'¹'ð((ØMOÏYÉYð((à	÷((r0   rÄ  rF   c                 ó0  • [        U [        R                  R                  R                  5      (       a  g[        U [
        [        45      (       a  [        S U  5       5      $ [        U [        5      (       a   [        S U R                  5        5       5      $ g)z‰Check if obj is or contains a FakeScriptObject.
This is load-bearing for TorchBindOpOverloads so we avoid pytree
since it's much slower.
Tc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr'   ©Ú_contains_fake_script_object)r°   Úitems     r!   r²   Ú/_contains_fake_script_object.<locals>.<genexpr>r  s   é € ÐFÂ#¸$Ô/°×5Ð5Â#ùr´   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr'   r  ©r°   Úvs     r!   r²   r  t  s   é € ÐIºL°qÔ/°×2Ð2ºLùr´   F)
rP   r?   rÇ  Úfake_class_registryÚFakeScriptObjecträ   rå   rº   Údictrã   )Úobjs    r!   r  r  j  sm   € ô
 �#”u—~‘~×9Ñ9×JÑJ×KÑKØÜ	�Cœ$¤˜×	'Ñ	'ÜÑFÁ#ÓFÓFÐFÜ	�Cœ×	Ñ	ÜÑI¸C¿J¹J¼LÓIÓIÐIØr0   c                 ó˜   • [        S U  5       5      =(       d2    [        U5      =(       a     [        S UR                  5        5       5      $ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr'   r  r¯   s     r!   r²   Ú+_must_dispatch_in_python.<locals>.<genexpr>y  s   é € ÐAºD°SÔ+¨C×0Ð0ºDùr´   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr'   r  r  s     r!   r²   r  z  s   é € ÐVÂoÀÔ9¸!×<Ð<Âoùr´   )rº   r  rã   r  s     r!   rù  rù  x  s7   € ÜÑA¹DÓAÓA÷ ÜˆV‹×VœÑVÀfÇmÁmÄoÓVÓVðr0   r¼   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ój   #   • U  H)  n[        UR                  [        R                  5      v •  M+     g 7fr'   )rP   rQ   r?   Ú	ClassTyper¯   s     r!   r²   Ú)_has_script_object_arg.<locals>.<genexpr>  s$   é € ÐQÒ@P¸Œz˜#Ÿ(™(¤E§O¡O×4Ð4Ò@Pùs   ‚13)rº   r»   )r¼   s    r!   Ú_has_script_object_argr  ~  s   € ÜÑQÀ×@PÒ@PÓQÓQÐQr0   c            
       ó  • \ rS rSr% Sr\\   \S'   S\S\S\\	\
4   S\\   SS	4
S
 jrSS jrS rS rS r\S 5       r\S 5       rS\S\\	\
4   4S jrS\\   4S jrS\	R0                  S\	R2                  S\
4S jrS rSrg	)rq  i„  ú	torch.opsÚ__file__Úqualified_op_nameÚop_namer}   Úoverload_namesrF   Nc                 ó    • Xl         X l        X0l        X@l        / U l        [        S U R                  R                  5        5       5      U l        g )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr'   )r  )r°   r¼   s     r!   r²   Ú,OpOverloadPacket.__init__.<locals>.<genexpr>•  s   é € ð .
Ú9O¨vÔ" 6×*Ð*Ò9Oùr´   )	Ú_qualified_op_namerw   rw  Ú_overload_namesÚ_dirrº   Ú_schemasrã   Ú_has_torchbind_op_overload)r-   r  r  r}   r  s        r!   r.   ÚOpOverloadPacket.__init__‡  sH   € ð #4ÔØŒØŒØ-ÔØ!ˆŒ	Ü*-ñ .
Ø9=¿¹×9MÑ9MÔ9Oó.
ó +
ˆÕ'r0   c                 ó   • U $ r'   r_   r  s     r!   r  ÚOpOverloadPacket.__deepcopy__š  r  r0   c                 óR   • SR                   " U R                  R                  S5      6 $ )Nz<OpOverloadPacket(op='{}.{}')>rv  ©r«  r  r�  r,   s    r!   rš  ÚOpOverloadPacket.__repr__�  s)   € Ø/×6Ò6Ø×$Ñ$×*Ñ*¨4Ó0ð
ð 	
r0   c                 ó,   • [        U R                  5      $ r'   r¥  r,   s    r!   r§  ÚOpOverloadPacket.__hash__¢  r©  r0   c                 óR   • SR                   " U R                  R                  S5      6 $ )Nz{}.{}rv  r'  r,   s    r!   r  ÚOpOverloadPacket.__str__¥  s"   € Ø�~Š~˜t×6Ñ6×<Ñ<¸TÓBÐCÐCr0   c                 ó   • U R                   $ r'   r�  r,   s    r!   r}   ÚOpOverloadPacket.op¨  rÄ   r0   c                 ó˜   • U R                    Vs0 s H.  nU[        R                  R                  U R                  U5      _M0     sn$ s  snf r'   )r  r?   r@   Ú_get_schemar  )r-   r|  s     r!   r!  ÚOpOverloadPacket._schemas¬  sK   € ð "&×!5Ò!5ó
â!5�ð œ5Ÿ8™8×/Ñ/°×0GÑ0GÈÓWÒWÙ!5ñ
ð 	
ùò 
s   �5Ar¼  c           
      óÜ  •  UR                  S5      (       a  [        U R                  U5      $   US:X  a  SOUn[
        R                  R                  U R                  U5      nUc  [        S[	        U 5       S	U S35      eUu  pEn[
        R                  R                  U R                  U5      n[        U5      (       d  [        XXWU5      O[        XXWU5      n[        XU5        U R                  R                  U5        U$ ! [         a3    [        S[	        U 5       S[	        U R                  5       SU S35      S ef = f! [          a    [        S[	        U 5       S	U S35      S ef = f)
NÚ__Ú'zH' can't have an overload name beginning with '__' and the underlying op z has no attribute z either.r   ru  zThe underlying op of 'z' has no overload name ')Ú
startswithÚgetattrrw  ÚAttributeErrorrå  r?   r@   Ú_get_operation_overloadr  r0  r  rf  rÄ  Úsetattrr   rÛ   rS   )	r-   r¼  Úuse_keyÚ
op_dk_tagsÚop_Úop_dk_rs  r¼   Úoverloads	            r!   Ú__getattr__ÚOpOverloadPacket.__getattr__³  sŽ  € ð	Ø�~‰~˜d×#Ñ#Ü˜tŸx™x¨Ó-Ð-ð $ð	à 9Ó,‘b°#ˆGäŸ™×9Ñ9Ø×'Ñ'¨óˆJð Ñ!Ü$Ø,¬S°«Y¨KÐ7OÐPSÈuÐTUÐVóð ð !+ÑˆC˜Ü—X‘X×)Ñ)¨$×*AÑ*AÀ7ÓKˆFô .¨f×5Ñ5ô ˜4 f°dÔ;ä(¨°FÀDÓIð ô �D˜xÔ(Ø�I‰I×Ñ˜SÔ!ØˆOøôA ó 	ô
 !Ø”C˜“I�;ð !Ü!$ T§X¡X£ Ð/AÀ#ÀÀhðPóð ðð	ûôB ó 	Ü Ø(¬¨T«¨Ð3KÈCÈ5ÐPQÐRóàðð	ús   ‚+D °CE Ä=EÅ'E+c                 ó,   • [        U R                  5      $ r'   ©Úiterr   r,   s    r!   Ú__iter__ÚOpOverloadPacket.__iter__ä  ó   € Ü�D—I‘I‹Ðr0   r5   r6   c                ó†   • U R                   (       a  [        X5      (       a  [        U /UQ70 UD6$ U R                  " U0 UD6$ r'   )r"  rù  Ú!_call_overload_packet_from_pythonrw  r4   s      r!   r7   ÚOpOverloadPacket.__call__é  sA   € ð ×*×*Ô/GÈ×/UÑ/Uä4°TÐK¸DÒKÀFÑKÐKØ�xŠx˜Ð( Ñ(Ð(r0   c                 óV   • U R                    Vs/ s H  o(       a  UOSPM     sn$ s  snf )Nr   )r  )r-   Úns     r!   Ú	overloadsÚOpOverloadPacket.overloadsø  s)   € Ø/3×/CÒ/CÓDÒ/C¨!•Q‘˜IÒ%Ñ/CÑDÐDùÒDs   �&)rw   r   r"  rw  r  r  r'   )rw   rx   ry   rz   r  r   rå  r‚  r   r   r   rä   r.   r  rš  r§  r  r  r}   r!  rf  r?  r   rD  r5   r6   r7   rL  r|   r_   r0   r!   rq  rq  „  sä   ‡ Ø)€Hˆh�s‰mÓ)ð
àð
ð ð
ð �R˜�VÑð	
ð
 ˜S™	ð
ð 
ô
ô&ò
ò
òDð ñó ðð ñ
ó ð
ð/˜sð / z°"°b°&Ñ'9ô /ðb˜( 3™-ô ð
) §¡ð )°B·I±Ið )À"ô )õEr0   rq  r5   r6   c                 óÐ  • [         R                  R                  " U /UQ70 UD6u  p4U(       a  U$ 0 nS nU R                  5        H?  n[	        X5      n [         R                  R
                  " UR                  /UQ70 UD6n	Un  O   U(       a  U" U0 UD6$ SU  S3nUR                  5        H  u  pÍUSU SU S3-  nM     [        U5      e! [         a  n
X¥U'    S n
A
Mœ  S n
A
ff = f)Nz'Fail to match any TorchBindOverload of z with following exceptions:
zOverload name z:
 Ú
)	r?   r@   Ú(_maybe_call_torch_function_for_op_packetrL  r6  Ú&_check_schema_allow_fake_script_objectry  rS   Úitems)r}   r5   r6   Útorch_function_calledÚretÚ
exceptionsÚfound_opr|  ri  Ú_ÚeÚerr_msgr¼  Úmsgs                 r!   rH  rH  þ  s  € ô "'§¡×!RÒ!RØ
ð"Øò"Øñ"ÑÐö Øˆ
ð €JØ€HØŸ™žˆÜ˜bÓ0ˆð	*Ü—‘×?Ò?Ø×#Ñ#ðØ&*òØ.4ñˆAð #ˆHÙñ (ö Ù˜Ð( Ñ(Ð(ð 2°"°Ð5RÐSð ð ×$Ñ$Ö&‰ˆØ�^ C 5¨¨S¨E°Ð4Ñ4Šñ 'ä
�wÓ
Ðøô ó 	*Ø()�}×%ûð	*ús   Á0CÃ
C%ÃC Ã C%c                   ób   ^ • \ rS rSrSrSrS\SS4U 4S jjrS\\   4S jr	S	\S\
4S
 jrSrU =r$ )Ú_OpNamespacei5  aì  
An op namespace to dynamically bind Operators into Python.

Say a user has created a custom Operator called "my_namespace::my_op". To
call this op, the user will write torch.ops.my_namespace.my_op(...).
At startup, this operation will not yet be bound into Python. Instead, the
following sequence of magic tricks will occur:
1. `torch.ops.my_namespace` will invoke the `__getattr__` magic method
   on the `torch.ops` object, which will create a new `_OpNamespace`
   object called `my_namespace` and set it as an attribute on the `ops`
   object.
2. `torch.ops.my_namespace.my_op` will then invoke `__getattr__` on
   the `my_namespace` object, which will retrieve the operation via
   `torch.get_operation`, a function bound from C++, and then in a similar
   fashion bind this new object onto the `my_namespace` object.
3. `torch.ops.my_namespace.my_op(...)` then calls this new operation
    and subsequent accesses will incur no further lookup (the namespace and
    operation will already exist).
r  rT   rF   Nc                 óD   >• [         TU ]  SU-   5        Xl        / U l        g )Nz
torch.ops.)r–   r.   rT   r   )r-   rT   rŸ   s     €r!   r.   Ú_OpNamespace.__init__L  s!   ø€ Ü‰Ñ˜¨Ñ,Ô-ØŒ	Ø!ˆ�	r0   c                 ó,   • [        U R                  5      $ r'   rB  r,   s    r!   rD  Ú_OpNamespace.__iter__Q  rF  r0   r  c                 óî  • US;   a  [        SU SU R                   S35      eU R                  nU SU 3nU R                  S-   U-   n [        X45      u  pVUc  [        SU R                   SU S35      e XEl        [        X1XV5      nU R                  S-   U-   Ul        [        XU5        U R                  R                  U5        U$ ! [         a"  n[        SU R                   SU S35      UeS nAff = f)	N)Ú
__origin__Ú__self__zInvalid attribute 'z' for '_OpNamespace' 'r4  rv  rÇ   z'_OpNamespace' 'z' object has no attribute ')	r7  rT   rx   Ú_get_packetrS   rq  r9  r   rÛ   )	r-   r  Únamespace_namer  Úmodule_namer}   r  rX  Úopoverloadpackets	            r!   r?  Ú_OpNamespace.__getattr__T  s2  € ØÐ0Ó0Ü Ø% g YÐ.DÀTÇYÁYÀKÈqÐQóð ð Ÿ™ˆØ-Ð.¨b°°	Ð:ÐØ—o‘o¨Ñ+¨nÑ<ˆð	Ü!,Ð->Ó!LÑˆBØ‰zÜ$Ø& t§y¡y kÐ1LÈWÈIÐUVÐWóð ð ð $ŒÜ+Ø¨ó
Ðð '+§o¡o¸Ñ&;¸nÑ&LÐÔ#ô 	�Ð/Ô0Ø�	‰	×Ñ˜Ô!ØÐøô! ó 	ô !Ø" 4§9¡9 +Ð-HÈÈ	ÐQRÐSóàðûð	ús   Á	,C Ã
C4ÃC/Ã/C4)r   rT   )rw   rx   ry   rz   r{   r  rå  r.   r   rD  rq  r?  r|   r  r  s   @r!   r\  r\  5  sK   ø† ñð( €Hð"˜Sð " T÷ "ð
˜( 3™-ô ð"  3ð " Ð+;÷ " ò " r0   r\  c                 ó®   • [         R                  R                  U 5      u  p#Ub/  [         R                  R                  R                  X 5        Xl        X#4$ r'   )r?   r@   Ú_jit_get_operationÚjitÚ	_builtinsÚ_register_builtinrx   )ÚqualnameÚ	op_moduler}   r  s       r!   rd  rd  y  sF   € ÜŸ™×4Ñ4°XÓ>Ñ€BØ	�~ô 	�	‰	×Ñ×-Ñ-¨bÔ;Ø!ŒØÐÐr0   c                 óª   • [        U R                  U R                  R                  5      u  pUc  [	        SU R                   35      eXl        X l        g )Nzfailed to get packet for )rd  r  rw  rx   rN   r  )Úpacketr}   r  s      r!   Ú_refresh_packetrr  ƒ  sK   € Ü$ V×%>Ñ%>ÀÇ
Á
×@UÑ@UÓVÑ€BØ	�zÜÐ8¸×9RÑ9RÐ8SÐTÓUÐUØ„JØ+Õr0   c                   óV   ^ • \ rS rSrSrS	U 4S jjrS\\   4S jrS\S\	4S jr
SrU =r$ )
Ú_HigherOrderNamespacei‹  r  rF   c                 ó2   >• [         TU ]  S5        / U l        g )Nr•   )r–   r.   r   ©r-   rŸ   s    €r!   r.   Ú_HigherOrderNamespace.__init__Ž  s   ø€ Ü‰ÑÐ1Ô2Ø!ˆ�	r0   c                 ó,   • [        U R                  5      $ r'   rB  r,   s    r!   rD  Ú_HigherOrderNamespace.__iter__’  rF  r0   rT   c                 ó¢   • [         R                  U5      nUc  [        SU S35      e[        XU5        U R                  R                  U5        U$ )NzJ'_HigherOrderNamespace' 'torch.ops.higher_order' object has no attribute 'r4  )r�   r:  r7  r9  r   rÛ   )r-   rT   r}   s      r!   r?  Ú!_HigherOrderNamespace.__getattr__•  sV   € ä×"Ñ" 4Ó(ˆØ‰:Ü Ø\Ð]aÐ\bÐbcÐdóð ô 	�˜BÔØ�	‰	×Ñ˜ÔØˆ	r0   )r   )rF   N)rw   rx   ry   rz   r  r.   r   rå  rD  r�   r?  r|   r  r  s   @r!   rt  rt  ‹  s6   ø† Ø€H÷"ð˜( 3™-ô ð	 ð 	Ð(;÷ 	ò 	r0   rt  c                   ó^   ^ • \ rS rSrSrU 4S jrS\S\4S jrS\	\   4S jr
S rS	 rS
rU =r$ )Ú_Opsi¡  z_ops.pyc                 ón   >• [         TU ]  S5        [        5       U l        [	        5       U l        / U l        g )Nr  )r–   r.   r7  Úloaded_librariesrt  r”   r   rv  s    €r!   r.   Ú_Ops.__init__¤  s,   ø€ Ü‰Ñ˜Ô%Ü #£ˆÔÜ1Ó3ˆÔØˆ�	r0   rT   rF   c                 ój   • [        U5      n[        XU5        U R                  R                  U5        U$ r'   )r\  r9  r   rÛ   )r-   rT   rÂ   s      r!   r?  Ú_Ops.__getattr__ª  s.   € ä  Ó&ˆ	Ü�˜IÔ&Ø�	‰	×Ñ˜ÔØÐr0   c                 ó,   • [        U R                  5      $ r'   rB  r,   s    r!   rD  Ú_Ops.__iter__±  rF  r0   c                 ó0   • [         R                  " U5        g)a#  
Imports a Python module that has torch.library registrations.

Generally, to extend PyTorch with custom operators, a user will
create a Python module whose import triggers registration of
the custom operators via a torch.ops.load_library call or a call
to one or more torch.library.* APIs.

It is unexpected for Python modules to have side effects, so some
linters and formatters will complain. Use this API to import Python
modules that contain these torch.library side effects.

Args:
    module (str): The name of the Python module to import

N)Ú	importlibÚimport_module)r-   Úmodules     r!   r‡  Ú_Ops.import_module´  s   € ô" 	×Ò Õ'r0   c                 ó   • [         R                  " U5      n[        5           [        R                  " U5         SSS5        U R                  R                  U5        g! [
         a  n[        SU 35      UeSnAff = f! , (       d  f       NK= f)a£  
Loads a shared library from the given path into the current process.

The library being loaded may run global initialization code to register
custom operators with the PyTorch JIT runtime. This allows dynamically
loading custom operators. For this, you should compile your operator
and the static registration code into a shared library object, and then
call ``torch.ops.load_library('path/to/libcustom.so')`` to load the
shared object.

After the library is loaded, it is added to the
``torch.ops.loaded_libraries`` attribute, a set that may be inspected
for the paths of all libraries loaded using this function.

Args:
    path (str): A path to a shared library to load.
zCould not load this library: N)	r   Úresolve_library_pathr"   r   ÚCDLLÚ	ExceptionÚOSErrorr  r¢   )r-   ÚpathrX  s      r!   Úload_libraryÚ_Ops.load_libraryÇ  sw   € ô$ ×3Ò3°DÓ9ˆÜ�_ðMÜ—’˜DÕ!÷ ð 	×Ñ×!Ñ! $Õ'øô ó MÜÐ =¸d¸VÐDÓEÈ1ÐLûðMú÷ �_ús(   ¡A?£AÁ
A<Á(A7Á7A<Á<A?Á?
B)r   r”   r  )rw   rx   ry   rz   r  r.   rå  r\  r?  r   rD  r‡  r�  r|   r  r  s   @r!   r}  r}  ¡  s?   ø† Ø€Hõð ð ¨ô ð˜( 3™-ô ò(÷&(ð (r0   r}  Úops)F)er  rÏ  r   r†  rJ   r   ÚtypesÚcollections.abcr   r   Ú	functoolsr   Útypingr   r   r   r	   r
   r   Útyping_extensionsr   r   r?   Útorch.utils._pytreerÅ  Ú_pytreer¶   r   Útorch._Cr   r‚   r   Útorch._functorch.pyfunctorchr   r   rá   r   r   ÚImportErrorrQ   rk   rj   r   r   r   Úhasattrr   rÐ  r"   r$   rŽ   r�   r
  rå  r‚  rô  ró  rñ  rò  ÚAutocastCPUÚAutocastCUDAÚAutocastXPUrœ   ÚABCr�   rÿ   r  r!  r"  r-  re  rR  rY  r]  rð   r`  rò   rG  r7  rg  rj  rl  rn  rf  rÄ  r  r  rù  rä  r  rq  r5   r6   rH  Ú
ModuleTyper\  rd  rr  rt  r}  r’  r_   r0   r!   Ú<module>r£     sÒ  ðä 
Û Û Û Û Û 
Û ß .Ý %ß L× Lß 0ã ß $Ð $Ý !ß Xß JÝ :ð.Ý(ö
 ÝHñ ˆT˜3Ñ€Ùˆt˜SÑ!€ñ ˜CÐ!1Ó2×U±w¸sÐDTÓ7UÐ ð ×Ññ&ó ð&÷ V"ñ V"ðt2U�Lð 2U [ô 2Uðj 79Ð �4˜Ð2Ð2Ñ3Ó 8ð × Ñ Ø×!Ñ!Ø×ÑØ×ÑØ×ÑØ×ÑØ×Ñð6Ð 2ô^˜,¨¯©ô ^òB	3ò8ò
ò÷,
ñ 
ñ2 &CÓ%DÐ "ô(òV-Xò`Mò7ò	:òò .ñ
 !$£€
ˆC�ÑÓ %ò ò
ò
ôp�˜w r¨2 v™ô pôrR(˜* R¨ VÑ,ô R(ðj¨ô ð¨dô ðR 5×#7Ñ#7ð R¸Dô RôuE�w˜r 2˜v‘ô uEðt% Ø˜˜R˜Ñ ð% Ø)+¯©ð% Ø<>¿I¹Ið% àô% ônA �5×#Ñ#ô A òHò,ô˜E×,Ñ,ô ô,A(ˆ5×Ñô A(ñJ ‹F€€TÔ øð]. ó .Ù˜nÓ-Óð.ús   Á.I ÉI&É%I&