Ë
    g^(hEÞ  ã                   óÆ  — U 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mZ d dlmZmZ d dlZd dlmc mZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ erd dl m!Z!  ed	«      Z" ed
«      Z# e$ed«      xr	  e$ed«      Z%ejL                  d„ «       Z' G d„ d«      Z(de(defd„Z)i Z*e+e,df   e-d<   ej\                  ej^                  ej`                  ejb                  ejd                  ejf                  gZ4 G d„ de(e jj                  «      Z6d„ Z7d„ Z8d„ Z9d„ Z: G d„ d«      Z; e;«       a<d;d„Z=d„ Z>d„ Z?d„ Z@d „ ZAd!„ ZBd"„ ZC eD«       aEeDd#   e-d$<   d%„ ZFd&„ ZGd'„ ZH G d(„ d#e(«      ZI G d)„ d*eI«      ZJd+„ ZKd,ej˜                  d-eMfd.„ZN G d/„ d0«      ZOdeOfd1„ZP G d2„ d3ej¢                  «      ZRd4„ ZSd5„ ZT G d6„ d7eR«      ZU G d8„ d9ej¢                  «      ZV eV«       ZWeVe-d:<   y)<é    N)ÚAnyÚCallableÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnion)ÚConcatenateÚ	ParamSpec)Ú_utils_internal)Ú_dispatch_is_included_in_aliasÚDispatchKey)Údispatch_functorchÚTransformType)ÚTorchDispatchMode)ÚBaseFunctionalizeAPIÚ_TÚ_PÚgetdlopenflagsÚsetdlopenflagsc               #   óþ   K  — t         sd–— yt        j                  «       } t        j                  | t        j
                  z  «       	 d–— t        j                  | «       y# t        j                  | «       w xY w­w)z�
    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    úH/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_ops.pyÚdl_open_guardr       s\   è ø€ õ ÛØÜ×"Ñ"Ó$€IÜ×Ñ�y¤6×#5Ñ#5Ñ5Ô6ð&Ûä×Ñ˜9Õ%øŒ×Ñ˜9Õ%üs   ‚AA=Á	A# ÁA=Á#A:Á:A=c                   óÄ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zdee	e
   e	ej                     eef   deeeef   geeef   f   fd„Zd	eed
ef   ef   deed
ef   ef   fd„Zd„ Zy)ÚOperatorBasez·
    Base class for OpOverload (which represents C++ ATen operators) and HigherOrderOperator
    (which represents Python-only operators that are unrepresentable in TorchScript).
    c                 ó<   — i | _         i | _        i | _        i | _        y ©N)Ú_dispatch_cacheÚ
py_kernelsÚpython_key_tableÚfunctorch_table©Úselfs    r   Ú__init__zOperatorBase.__init__7   s1   € ð$ ð 	Ôð BDˆŒð ð 	Ôð  "ˆÕó    c                 ó   — t         ‚r!   ©ÚNotImplementedError©r'   ÚargsÚkwargss      r   Ú__call__zOperatorBase.__call__c   ó   € Ü!Ð!r)   c                 ó   — || j                   v S r!   )r#   )r'   Úks     r   Úhas_kernel_for_dispatch_keyz(OperatorBase.has_kernel_for_dispatch_keyf   s   € Ø�D—O‘OÐ#Ð#r)   c                 óŒ   — | j                   D ]5  }t        j                  j                  |«      rŒ#|j	                  |«      sŒ5 y y)NTF)r#   ÚtorchÚ_CÚ_dispatch_is_alias_keyÚhas)r'   Úksr3   s      r   Úhas_kernel_for_any_dispatch_keyz,OperatorBase.has_kernel_for_any_dispatch_keyi   s9   € Ø—‘ò 	ˆAÜ—8‘8×2Ñ2°1Õ5¸"¿&¹&À½)Ùð	ð r)   r3   Úreturnc                 ód   ‡ ‡— dt         t        t        f   dt         t        t        f   fˆˆ fd„}|S )NÚfnr<   c                 ób  •— t        j                  ‰«      ret        ‰t        «      st        ‰t        j
                  «      r;‰‰j                  vsJ ‚| ‰j                  ‰<   ‰j                  j                  «        | S t        ‰t        «      r!‰‰j                  vsJ ‚| ‰j                  ‰<   | S t        ‰t        «      sJ ‚‰t        j                  k7  sJ d«       ‚‰‰j                  v rt        d‰› d‰j!                  «       › �«      ‚| ‰j                  ‰<   ‰j                  j                  «        | S )Nz>Please register a mode for the DispatchKey.Python key instead.z%Trying to override a python impl for z on operator )ÚinspectÚisclassÚ
issubclassr   r6   ÚTensorr$   r"   ÚclearÚ
isinstancer   r%   r   ÚPythonr#   ÚRuntimeErrorÚname)r>   r3   r'   s    €€r   Úinnerz#OperatorBase.py_impl.<locals>.innerx   s  ø€ Ü�‰˜qÔ!Ü˜1Ô/Ô0´J¸qÄ%Ç,Á,Ô4Oà × 5Ñ 5Ñ5Ð5Ð5à+-�×%Ñ% aÑ(Ø×$Ñ$×*Ñ*Ô,Ø�	ä˜!œ]Ô+Ø × 4Ñ 4Ñ4Ð4Ð4Ø*,�×$Ñ$ QÑ'Ø�	ä˜a¤Ô-Ð-Ð-Øœ×*Ñ*Ò*ð ØPóÐ*ð �D—O‘OÑ#Ü"Ø;¸A¸3¸mÈDÏIÉIËKÈ=ÐYóð ð "$ˆD�O‰O˜AÑØ× Ñ ×&Ñ&Ô(ØˆIr)   )r   r   r   )r'   r3   rI   s   `` r   Úpy_implzOperatorBase.py_implo   s/   ù€ ð	”hœr¤2˜vÑ&ð 	¬8´B¼°FÑ+;ö 	ð8 ˆr)   r>   r   c                 ó  ‡‡‡‡— ddl mŠm}mŠmŠ dt
        j                  dt
        j                  dt        fˆˆfd„}dt        |   dt
        j                  dt
        j                  dt        fˆˆfd„}dt
        j                  dt
        j                  dt        fˆˆfd	„} | j                  t        j                  «      |«        | j                  |«      |«        | j                  t        j                  «      |«       ‰S )
Nr   )ÚCppFunctionalizeAPIÚFunctionalTensorModeÚFunctorchFunctionalizeAPIÚPythonFunctionalizeAPIr.   r/   r<   c                  ó&   •—  ‰ ‰«       g| ¢­i |¤ŽS r!   © )r.   r/   rL   r>   s     €€r   Úfunctionalize_dk_fnz?OperatorBase.py_functionalize_impl.<locals>.functionalize_dk_fn­   s   ø€ ÙÑ)Ó+Ð=¨dÒ=°fÑ=Ð=r)   Úmodec                 ó(   •—  ‰ ‰| «      g|¢­i |¤ŽS r!   rQ   )rS   r.   r/   rO   r>   s      €€r   Úfunctionalize_dispatch_mode_fnzJOperatorBase.py_functionalize_impl.<locals>.functionalize_dispatch_mode_fn°   s    ø€ ñ Ñ,¨TÓ2ÐD°TÒD¸VÑDÐDr)   c                 ó(   •—  ‰ ‰| «      g|¢­i |¤ŽS r!   rQ   )Úinterpreterr.   r/   rN   r>   s      €€r   Úfunctionalize_functorch_fnzFOperatorBase.py_functionalize_impl.<locals>.functionalize_functorch_fnµ   s    ø€ ñ Ñ/°Ó<ÐN¸tÒNÀvÑNÐNr)   )Ú#torch._subclasses.functional_tensorrL   rM   rN   rO   r   r.   r/   r   r   rJ   r   ÚFunctionalizer   )	r'   r>   rM   rR   rU   rX   rL   rN   rO   s	    `    @@@r   Úpy_functionalize_implz"OperatorBase.py_functionalize_impl¡   sà   û€ ÷	
ó 	
ð	>¤r§w¡wð 	>¼"¿)¹)ð 	>Ìö 	>ð	EÜÐ/Ñ0ð	EÜ9;¿¹ð	EÜLNÏIÉIð	Eäö	Eð
	OÜ "§¡ð	OÜ35·9±9ð	Oäö	Oð
 	0ˆ�‰”[×.Ñ.Ó/Ð0CÔDØ*ˆ�‰Ð)Ó*Ð+IÔJØ1ˆ�‰”]×0Ñ0Ó1Ð2LÔMàˆ	r)   c                 ó   — t         ‚r!   r+   r&   s    r   rH   zOperatorBase.nameÀ   r1   r)   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r0   r4   r;   r   Útyper   r6   rC   r   r   r   r   r   rJ   r	   r[   rH   rQ   r)   r   r   r   1   s¼   „ ñò
*"òX"ò$òð%àØÐ"Ñ#Ø�—‘ÑØØðñ
ð%ð 
�8˜B ˜FÑ#Ð$ h¨r°2¨vÑ&6Ð6Ñ	7ó%ðdØ˜;Ð'=¸rÐ'AÑBÀBÐFÑGðà	�+Ð4°bÐ8Ñ9¸2Ð=Ñ	>óó>"r)   r   Úopr3   c                 óŒ  — | j                  |«      r|S t        j                  }|t        j                  k(  st	        ||«      r| j                  |«      r|S t        j
                  }|t        j                  k(  st	        ||«      r| j                  |«      r|S | j                  t        j                  j                  |«      «      xs | j                  t        j
                  «      }t        j                  }|t        j                  k7  r!t	        ||«      r| j                  |«      r|s|S t        j                  }|t        j                  k(  st	        ||«      r\| j                  |«      rK|t        j                  k(  r4| j                  t        j                  j                  «      rt        d«      ‚|s|S t        j                  }t	        ||«      r| j                  |«      r|S t        j                   }t	        ||«      r| j                  |«      r|S t        j                  j#                  |«      r|S t%        d| › d|› �«      ‚)Nzambiguous autogradother kernelzcould not find kernel for ú at dispatch key )r4   r   Ú&CompositeExplicitAutogradNonFunctionalÚ	UndefinedÚis_included_in_aliasÚCompositeExplicitAutogradr;   r6   r7   Ú*_dispatch_get_backend_keyset_from_autogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeImplicitAutogradÚAutogradOtherÚ _dispatch_autogradother_backendsrG   ÚAutogradÚFuncTorchBatchedDecompositionÚ_dispatch_has_backend_fallbackr,   )rb   r3   ÚcandÚhas_backend_kernels       r   Úresolve_keyrs   Å   sì  € à	×%Ñ% aÔ(Øˆä×=Ñ=€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.Øˆä×0Ñ0€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.ØˆØ×;Ñ;Ü�‰×;Ñ;¸AÓ>óò Oà	×	'Ñ	'¬×(MÑ(MÓ	Nð ô ×<Ñ<€Dà	
Œk×#Ñ#Ò	#Ô(<¸QÀÔ(EØ×*Ñ*¨4Ô0Ù"àˆÜ×0Ñ0€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.Ø”×)Ñ)Ò)¨b×.PÑ.PÜ�H‰H×5Ñ5ô/
ô Ð?Ó@Ð@Ù#ØˆKä×Ñ€DÜ˜A˜tÔ$¨×)GÑ)GÈÔ)MØˆä×4Ñ4€DÜ˜A˜tÔ$¨×)GÑ)GÈÔ)MØˆä‡x�x×.Ñ.¨qÔ1ð ˆÜ
Ð :¸2¸$Ð>OÐPQÈsÐSÓ
TÐTr)   ÚHigherOrderOperatorÚ_higher_order_opsc                   óØ   ‡ — e Zd Zddœˆ fd„
Zdeee   eej                     e	e
f   deeeef   geeef   f   fˆ fd„Zed„ «       Zd„ Zd	„ Zd
„ Zej*                  d„ «       Zd„ Zd„ Zˆ xZS )rt   F)Ú	cacheablec                ó0  •— t         ‰| �  «        t        | «      t        u rt	        d«      ‚|| _        || _        | t        |<   d| _        d| _	        || _
        t        j                  j                  «       | _        t        D ]  }| j!                  |«       Œ y )NzODirect instantiation of HigherOrderOperator is not allowed. Please subclass it.Úhigher_orderútorch.ops.higher_order)Úsuperr(   ra   rt   rG   Ú_namer]   ru   Ú_nsr^   Ú
_cacheabler6   r7   Ú_dispatch_keyset_fullÚnon_fallthrough_keysÚ2_HIGHER_ORDER_OP_DEFAULT_FALLTHROUGH_DISPATCH_KEYSÚfallthrough)r'   rH   rw   Údispatch_keyÚ	__class__s       €r   r(   zHigherOrderOperator.__init__  s�   ø€ Ü‰ÑÔÜ�‹:Ô,Ñ,ÜØaóð ð ˆŒ
ð ˆŒØ"&Ô˜$ÑØ!ˆŒØ2ˆŒØ#ˆŒä$)§H¡H×$BÑ$BÓ$DˆÔ!äNò 	+ˆLØ×Ñ˜\Õ*ñ	+r)   r3   r<   c                 ó¸   •— t        |t        «      r;| j                  j                  |«      s | j                  j	                  |«      | _        t
        ‰| �  |«      S r!   )rE   r   r€   r9   Úaddr{   rJ   ©r'   r3   r„   s     €r   rJ   zHigherOrderOperator.py_impl(  sJ   ø€ ô �aœÔ%¨d×.GÑ.G×.KÑ.KÈAÔ.NØ(,×(AÑ(A×(EÑ(EÀaÓ(HˆDÔ%Ü‰w‰˜qÓ!Ð!r)   c                 ó   — | j                   S r!   )r}   r&   s    r   Ú	namespacezHigherOrderOperator.namespace5  ó   € à�x‰xˆr)   c                 ó   — | j                   S r!   )r~   r&   s    r   rw   zHigherOrderOperator.cacheable9  s   € Ø�‰Ðr)   c                 óD   — | j                   j                  |«      | _         y r!   )r€   Úremove)r'   rƒ   s     r   r‚   zHigherOrderOperator.fallthrough<  s   € Ø$(×$=Ñ$=×$DÑ$DÀ\Ó$RˆÕ!r)   c                ó  ‡‡— ddl m} || j                  v r)| j                  |   }t        |t        «      rJ ‚ ||i |¤ŽS |t        j
                  k(  rt        | ||«      S |t        j                  k(  �rg Šd„ Šˆˆfd„}g |¢|j                  «       ¢­D ]0  } ||«       t        |t        t        f«      sŒ"|D ]
  } ||«       Œ Œ2 t        ‰«      }	ddl m}
  |«       }|�rt        |«      | j                  v r5| j                  t        |«         } |
«       5 } ||g|¢­i |¤Ž}d d d «       nt        d| j                  › d|› d�«      ‚t         ur|S |	D ]ö  }t        |«      }|j"                  t$        j&                  j(                  k(  rŒ6|t$        j*                  j,                  j.                  u rMt$        j*                  j,                  j0                  }| j                  |   } ||j2                  g|¢­i |¤Ž}|c S || j                  v r| j                  |   } ||i |¤Ž}nt        d| j                  › d	|› d�«      ‚|t         usŒô|c S  t5        d
| j                  › d|› d|	D �cg c]  }t        |«      ‘Œ c}› �«      ‚t$        j&                  j7                  |«      }|t        j8                  k(  r«ddl m}
 t;        «       dkD  r˜t$        j&                  j=                  t        j                  «      skt?        «       }|€J d«       ‚t        |«      | j                  v sJ d|› d�«       ‚| j                  t        |«         } |
|«      5 } ||g|¢­i |¤Žcd d d «       S tA        | |«      }|| jB                  vrt        d| j                  › d|› d|› d�«      ‚|t        j8                  k7  r| jB                  |   | j                  |<   | jB                  |   }t        |t        «      rJ ‚ ||i |¤ŽS # 1 sw Y   �Œ²xY wc c}w # 1 sw Y   Œ¬xY w)Nr   ©Ú_get_current_dispatch_modec                 ó^   — t         j                  j                  | «      j                  d«      S )NrF   )r6   r7   Ú_dispatch_keysr9   )Útensors    r   Úhas_python_keyz4HigherOrderOperator.dispatch.<locals>.has_python_keyR  s"   € Ü—x‘x×.Ñ.¨vÓ6×:Ñ:¸8ÓDÐDr)   c                 óp   •— t        | t        j                  «      r ‰| «      r‰j                  | «       y y y r!   )rE   r6   rC   Úappend)Úargr”   Úoverloaded_args_lists    €€r   Úcheck_overloadedz6HigherOrderOperator.dispatch.<locals>.check_overloadedU  s/   ø€ Ü˜c¤5§<¡<Ô0±^ÀCÔ5HØ(×/Ñ/°Õ4ð 6IÐ0r)   )Ú_pop_mode_temporarilyz%There was no rule registered for HOP z
 and mode z. We recommend filing an issue.z and subclass zMultiple dispatch failed for zl. There was no registered that did not return NotImplemented. Use HOP.py_impl to register some. Tried mode: z) and subclasses: zIIllegal invocation of dispatch on DispatchKey.PreDispatch without a mode.zCurrent active mode z not registeredz.could not find kernel for HigherOrderOperator rd   z (resolved from ú))"Útorch.utils._python_dispatchr�   r"   rE   r   ÚFuncTorchDynamicLayerFrontModer   rF   ÚvaluesÚlistÚtuplerš   ra   r$   r,   r|   ÚNotImplementedÚ__torch_dispatch__r6   r7   Ú_disabled_torch_dispatch_implÚ_subclassesÚfake_tensorÚ
FakeTensorÚFakeTensorModeÚ	fake_modeÚ	TypeErrorÚ_to_functionality_keyÚPreDispatchÚ&_len_torch_dispatch_stack_pre_dispatchÚ&_dispatch_tls_is_dispatch_key_excludedÚ'_get_current_dispatch_mode_pre_dispatchrs   r#   )r'   rƒ   r.   r/   r�   Úkernelr™   r—   ÚaÚoverloaded_argsrš   Ú	curr_modeÚhandlerrS   ÚresultÚsubclass_typeÚfunctionality_keyÚ	final_keyr”   r˜   s                     @@r   ÚdispatchzHigherOrderOperator.dispatchA  sm  ù€ ÝKà˜4×/Ñ/Ñ/Ø×)Ñ)¨,Ñ7ˆFÜ! &¬+Ô6Ð6Ð6Ù˜4Ð* 6Ñ*Ð*àœ;×EÑEÒEÜ% d¨D°&Ó9Ð9àœ;×-Ñ-Ó-ð $&Ð òEõ5ð 1˜Ð0 §¡£Ñ0ò ,�Ù  Ô%Ü˜c¤D¬% =Õ1Ø ò ,˜Ù(¨Õ+ñ,ð,ô $Ð$8Ó9ˆOõ Ká2Ó4ˆIØÐ$Ü˜	“? d×&;Ñ&;Ñ;Ø"×3Ñ3´D¸³OÑD�GÙ.Ó0ð @°Dñ ")¨Ð!?°Ò!?¸Ñ!?˜÷@ð @ô
 .Ø?ÀÇ
Á
¸|È:ÐV_ÐU`ð a8ð 9óð ð ¤Ñ/Ø!�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à  D×$9Ñ$9Ñ9Ø"×3Ñ3°MÑB�Gñ % dÐ5¨fÑ5‘Fä-Ø?ÀÇ
Á
¸|È>ÐZgÐYhð i8ð 9óð ð ¤Ò/Ø!’Mð="ôB Ø/°·
±
¨|ð <à(˜kÐ);Ø%4Ö5 ”D˜•GÒ5Ð6ð8óð ô "ŸH™H×:Ñ:¸<ÓHÐØ¤× 7Ñ 7Ò7ÝJô
 7Ó8¸1Ò<Ü—h‘h×EÑEÜ×"Ñ"ôô DÓE�	Ø Ð,ð Ø_óÐ,ô ˜I“¨$×*?Ñ*?Ñ?ð Ø*¨9¨+°_ÐEóÐ?ð ×/Ñ/´°Y³Ñ@�Ù*Ð+<Ó=ð :ÀÙ" 4Ð9¨$Ò9°&Ñ9÷:ñ :ô    lÓ3ˆ	ð ˜DŸO™OÑ+Ü%Ø@ÀÇÁÀð M#Ø#, +Ð-=¸l¸^È1ðNóð ð œ;×2Ñ2Ò2Ø15·±ÀÑ1KˆD× Ñ  Ñ.Ø—‘ Ñ+ˆô ˜f¤kÔ2Ð2Ð2Ù�tÐ&˜vÑ&Ð&÷@ñ @üòd 6÷,:ð :ús   ÄO1É(O>Í
PÏ1O;ÐPc                ó$   ‡ ‡‡— ˆˆˆ fd„} |«       S )Nc                  ó  •— t        ‰‰«      } t        j                  j                  | «      r$t        j                  j                  ‰| g‰¢­i ‰¤ŽS t        ‰‰‰j                  «      } ‰j                  |j                  «       g‰¢­i ‰¤ŽS r!   )	Ú_to_flat_tupler6   Ú	overridesÚhas_torch_functionÚhandle_torch_functionÚ_compute_keysetr€   r¸   ÚhighestPriorityTypeId)Ú	flat_argsÚdispatch_key_setr.   r/   r'   s     €€€r   Úwrapperz-HigherOrderOperator.__call__.<locals>.wrapperË  s“   ø€ Ü& t¨VÓ4ˆIÜ�‰×1Ñ1°)Ô<Ü—‘×<Ñ<Ø˜)ðØ&*òØ.4ñð ô  /¨t°V¸T×=VÑ=VÓWÐØ �4—=‘=Ø ×6Ñ6Ó8ðØ;?òØCIñð r)   rQ   )r'   r.   r/   rÃ   s   ``` r   r0   zHigherOrderOperator.__call__É  s   ú€ ö
	ñ ‹yÐr)   c                 ó$   — | j                  «       › S r!   )rH   r&   s    r   Ú__str__zHigherOrderOperator.__str__Ù  s   € Ø—)‘)“+�Ðr)   c                 ó   — | j                   S r!   ©r|   r&   s    r   rH   zHigherOrderOperator.nameÜ  ó   € Ø�z‰zÐr)   )r]   r^   r_   r(   r   ra   r   r6   rC   r   r   r   r   r   rJ   Úpropertyr‰   rw   r‚   r¸   ÚabcÚabstractmethodr0   rÅ   rH   Ú__classcell__©r„   s   @r   rt   rt     s²   ø„ ð +0ö +ð8"àØÐ"Ñ#Ø�—‘ÑØØðñ
ð"ð 
�8˜B ˜FÑ#Ð$ h¨r°2¨vÑ&6Ð6Ñ	7õ"ð ñó ðòòSò
F'ðP 	×Ññó ðò ör)   c                 ó,   — t        j                  | i |¤ŽS r!   )ÚpytreeÚarg_tree_leaves©r.   r/   s     r   r»   r»   à  s   € Ü×!Ñ! 4Ð2¨6Ñ2Ð2r)   c                 ó2   — t        | |«      }t        ||«      S r!   )Ú_get_tensorsÚkey_extractor)r.   r/   r€   Útensorss       r   r¿   r¿   ä  s   € Ü˜4 Ó(€GÜ˜Ð"6Ó7Ð7r)   c                 óŽ   — t        | |«      }|D �cg c]  }t        |t        j                  «      sŒ|‘Œ! }}t	        |«      S c c}w r!   )r»   rE   r6   rC   r    )r.   r/   Úflat_allÚtÚtensor_argss        r   rÓ   rÓ   é  s?   € Ü˜d FÓ+€HØ&ÖF˜¬*°Q¼¿¹Õ*E’1ÐF€KÐFÜ�ÓÐùò Gs
   ‘A±Ac                 óà   — t         j                  j                  «       }| D ]$  }|t         j                  j                  |«      z  }Œ& |t         j                  j	                  «       z
  }||z  }|S r!   )r6   r7   Ú_dispatch_tls_local_include_setr’   Ú_dispatch_tls_local_exclude_set)rÕ   Úkey_maskÚkey_setr“   s       r   rÔ   rÔ   ñ  sb   € Ü�h‰h×6Ñ6Ó8€GØò <ˆØœEŸH™H×3Ñ3°FÓ;Ñ;‰ð<àœŸ™×@Ñ@ÓBÑB€GØ˜Ñ €GØ€Nr)   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú_ModeStackStateForPreDispatchc                 ó$   — d d g| _         d | _        y r!   )Ú*_ModeStackStateForPreDispatch__infra_modesÚ_schema_check_moder&   s    r   r(   z&_ModeStackStateForPreDispatch.__init__  s   € Ø" D˜\ˆÔØ"&ˆÕr)   c                 óV   — |t        | j                  «      k  sJ ‚|| j                  |<   y r!   ©Úlenrâ   )r'   ÚindexrS   s      r   Úsetz!_ModeStackStateForPreDispatch.set  s+   € Ø”s˜4×-Ñ-Ó.Ò.Ð.Ð.Ø$(ˆ×Ñ˜5Ò!r)   c                 óT   — |t        | j                  «      k  sJ ‚| j                  |   S r!   rå   )r'   rç   s     r   Úgetz!_ModeStackStateForPreDispatch.get  s,   € Ø”s˜4×-Ñ-Ó.Ò.Ð.Ð.Ø×!Ñ! %Ñ(Ð(r)   c                 óˆ   — t        | j                  D �cg c]  }|€Œ|‘Œ	 c}«      t        | j                  d u«      z   S c c}w r!   )ræ   râ   Úintrã   )r'   Úis     r   Úcountz#_ModeStackStateForPreDispatch.count  sB   € Ü˜t×1Ñ1ÖC˜!°Q±]’AÒCÓDÄsØ×#Ñ#¨4Ð/óH
ñ 
ð 	
ùÒCs   ”?œ?N)r]   r^   r_   r(   rè   rê   rî   rQ   r)   r   rà   rà     s   „ ò'ò)ò)ó
r)   rà   c                 óZ  ‡ ‡— t        «       Š‰ �L‰ t        j                  j                  j                  t        j                  j                  j
                  fv sJ ‚|r‰ �J ‚ˆˆ fd„} |«       }t        «       }|dk(  r.t        j                  j                  t        j                  d«       |S )Nc                  óž  •— ‰t         j                  j                  j                  k(  r-‰j	                  d«      } t        «       j                  dd «       | S ‰t         j                  j                  j                  k(  r-‰j	                  d«      } t        «       j                  dd «       | S t        «       j                  } d t        «       _        | S ©Nr   é   )	r6   r7   Ú_TorchDispatchModeKeyÚPROXYrê   Ú!mode_stack_state_for_pre_dispatchrè   Ú
FUNCTIONALrã   )Úcurrent_modeÚcurrent_mode_stack_pre_dispatchÚmode_keys    €€r   Ú_unset_modez,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ØÐr)   r   F)
rõ   r6   r7   ró   rô   rö   r¬   Ú'_dispatch_tls_set_dispatch_key_includedr   r«   )rù   Úschema_checkrú   r÷   Únew_pre_dispatch_lenrø   s   `    @r   Úunset_mode_pre_dispatchrþ     s¡   ù€ Ü&GÓ&IÐ#ØÐ˜xÜ�‰×&Ñ&×,Ñ,Ü�‰×&Ñ&×1Ñ1ð,ñ  ð ð ñ ØÐÐÐõ ñ “=€LäAÓCÐð
 ˜qÒ Ü�‰×8Ñ8¼×9PÑ9PÐRWÔXàÐr)   c                 ó<  — ddl m} ddlm} ddlm} t        | |||f«      sJ ‚t        «       }t        | |«      r4t        «       j                  }|dkD  rt        d«      ‚| t        «       _	        n{t        | |«      r8t        «       j                  d«      }|�J ‚t        «       j                  d| «       n7t        «       j                  d«      }|�J ‚t        «       j                  d| «       |dk(  r/t        j                  j                  t         j"                  d«       y y )Nr   )rM   )ÚSchemaCheckMode)ÚProxyTorchDispatchModezYSchemaCheckMode for pre-dispatch must be used exclusively, found other modes on the stackrò   T)rY   rM   Ú#torch._subclasses.schema_check_moder   Ú"torch.fx.experimental.proxy_tensorr  rE   r¬   rõ   rã   ÚAssertionErrorrê   rè   r6   r7   rû   r   r«   )rS   rM   r   r  Úprevious_mode_stack_lenr÷   s         r   Ú_set_mode_pre_dispatchr  A  s  € ÝHÝCÝIäØà Ø"Øð	
ôð ð ô EÓFÐÜ�$˜Ô(Ü8Ó:×MÑMˆØ" QÒ&Ü Økóð ð BFÔ)Ó+Õ>Ü	�DÐ.Ô	/Ü8Ó:×>Ñ>¸qÓAˆØÐ#Ð#Ð#Ü)Ó+×/Ñ/°°4Õ8ä8Ó:×>Ñ>¸qÓAˆØÐ#Ð#Ð#Ü)Ó+×/Ñ/°°4Ô8ð  !Ò#Ü�‰×8Ñ8¼×9PÑ9PÐRVÕWð $r)   c                  óv  — t        «       } t        «       }|dk(  rt        d«      ‚| j                  �t	        d d¬«      S | j                  d«      �-t	        t        j                  j                  j                  «      S | j                  d«      �-t	        t        j                  j                  j                  «      S y )Nr   zTrying to pop empty mode stackT)rü   rò   )rõ   r¬   r  rã   rþ   rê   r6   r7   ró   rö   rô   )Ú
mode_stackÚpre_dispatch_lens     r   Ú_pop_mode_from_pre_dispatchr
  h  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ð %r)   c                  ó2   — t        «       j                  «       S r!   )rõ   rî   rQ   r)   r   r¬   r¬   w  s   € Ü,Ó.×4Ñ4Ó6Ð6r)   c                 óL  — | t         j                  j                  j                  t         j                  j                  j                  fv sJ ‚| t         j                  j                  j                  k(  rt        «       j                  d«      S t        «       j                  d«      S rñ   )r6   r7   ró   rô   rö   rõ   rê   )rù   s    r   Ú_get_dispatch_mode_pre_dispatchr  {  s�   € ØÜ�‰×&Ñ&×,Ñ,Ü�‰×&Ñ&×1Ñ1ðñ ð ð ð ”5—8‘8×1Ñ1×7Ñ7Ò7Ü0Ó2×6Ñ6°qÓ9Ð9ä0Ó2×6Ñ6°qÓ9Ð9r)   c                  ó`  — t        «       j                  �t        «       j                  S t        «       j                  «       } | dk(  rt        «       j                  d«      S | dk(  rKt        «       j                  d«      �t        «       j                  d«      S t        «       j                  d«      S y )Né   rò   r   )rõ   rã   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Ó?ðð
 r)   c                  ó   — t         S r!   )Ú"_mode_stack_state_for_pre_dispatchrQ   r)   r   rõ   rõ   –  s   € ä-Ð-r)   Ú
OpOverloadÚ
cached_opsc                 ó.   — t         j                  | «       y r!   )r  r†   )Úop_overloads    r   Úadd_cached_opr  ž  s   € ä‡N�N�;Õr)   c                  ó,   — t         j                  «        y r!   )r  rD   rQ   r)   r   Úreset_cached_opsr  £  s   € ä×ÑÕr)   c                  ó   — t         S r!   )r  rQ   r)   r   Úget_cached_opsr  ¨  s   € äÐr)   c                   óæ   ‡ — e Zd Zˆ fd„Zed„ «       Zed„ «       Zed„ «       Zdd„Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zˆ fd„Zˆ fd„Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zˆ xZS )r  c                 óª  •— t         ‰| �  «        || _        || _        || _        || _        || _        |j                  dk(  rdn|j                  | _        |r!t        j                  j                  |v | _        | j                  j                  | _        |j                  r"| xj                  d|j                  z   z  c_        | j                  j                  j                  d«      d   › d| j                  › �| _        |j"                  | _        |j"                  |_        | j                  | _        i | _        d | _        | j$                  t        j*                  j,                  v | _        d }| j                  j0                  D ]B  }|j2                  €Œ|€|j2                  j4                  }Œ)|j2                  j4                  xs |}ŒD |d uxr | | _        y )NÚ Údefaultú.ú::rò   )r{   r(   Ú_opÚ_op_dkÚ_schemaÚ_overloadpacketÚ_tagsÚoverload_nameÚ_overloadnamer6   ÚTagÚnondeterministic_seededÚ_nondeterministic_seededrH   r|   Úsplitr]   r^   r_   Ú__annotations__Ú_lazy_handleÚlibraryÚ_defsÚ_defined_in_pythonÚ	argumentsÚ
alias_infoÚis_writeÚis_view)	r'   Úoverloadpacketrb   Úop_dkÚschemaÚtagsr4  r°   r„   s	           €r   r(   z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°ˆ�r)   c                 óR   — | j                   j                  j                  d«      d   S ©Nr!  r   ©r$  rH   r,  r&   s    r   Ú
_namespacezOpOverload._namespaceØ  ó"   € à�|‰|× Ñ ×&Ñ& tÓ,¨QÑ/Ð/r)   c                 óR   — | j                   j                  j                  d«      d   S )Nr!  rò   r<  r&   s    r   Ú_opnamezOpOverload._opnameÜ  r>  r)   c                 óÌ   — | j                   €Mt        j                  j                  | j                  j
                  | j                  j                  «      | _         | j                   S r!   )r.  r6   r7   Ú_dispatch_find_schema_or_throwr$  rH   r'  r&   s    r   Ú_handlezOpOverload._handleà  sL   € à×ÑÐ$Ü %§¡× GÑ GØ—‘×!Ñ! 4§<¡<×#=Ñ#=ó!ˆDÔð × Ñ Ð r)   c                 ó   — | S r!   rQ   ©r'   Úmemos     r   Ú__deepcopy__zOpOverload.__deepcopy__é  ó   € Øˆr)   c                 ó„   —  dj                   g | j                  j                  j                  d«      ¢| j                  ‘­Ž S )Nz'<OpOverload(op='{}.{}', overload='{}')>r!  ©Úformatr$  rH   r,  r(  r&   s    r   Ú__repr__zOpOverload.__repr__ì  sC   € Ø?Ð8×?Ñ?ð 
Ø�\‰\×Ñ×$Ñ$ TÓ*ð
Ø,0×,>Ñ,>ò
ð 	
r)   c                ó&   —  | j                   |i |¤ŽS r!   ©r"  r-   s      r   r0   zOpOverload.__call__ó  s   € Øˆt�x‰x˜Ð( Ñ(Ð(r)   c                óB   —  | j                   j                  |g|¢­i |¤ŽS r!   )rC  Úredispatch_boxed)r'   Úkeysetr.   r/   s       r   Ú
redispatchzOpOverload.redispatchø  s#   € Ø,ˆt�|‰|×,Ñ,¨VÐE°dÒE¸fÑEÐEr)   c                 ó,   — t        | j                  «      S r!   ©Úhashr"  r&   s    r   Ú__hash__zOpOverload.__hash__û  ó   € Ü�D—H‘H‹~Ðr)   c                 ó„   —  dj                   g | j                  j                  j                  d«      ¢| j                  ‘­Ž S )Nz{}.{}.{}r!  rJ  r&   s    r   rÅ   zOpOverload.__str__ÿ  s8   € Ø ˆz× Ñ ÐT $§,¡,×"3Ñ"3×"9Ñ"9¸$Ó"?ÐTÀ×ASÑASÒTÐTr)   c                 ó‚   •— t         ‰| �  |«      xs. t        j                  j	                  | j                  «       |«      S r!   )r{   r4   r6   r7   Ú%_dispatch_has_kernel_for_dispatch_keyrH   r‡   s     €r   r4   z&OpOverload.has_kernel_for_dispatch_key  s9   ø€ Ü‰wÑ2Øó
ò Lä�X‰X×;Ñ;¸D¿I¹I»KÈÓKð	Lr)   c                 ó‚   •— t         j                  j                  | j                  «       |«      xs t        ‰| �  |«      S r!   )r6   r7   Ú)_dispatch_has_kernel_for_any_dispatch_keyrH   r{   r;   )r'   r:   r„   s     €r   r;   z*OpOverload.has_kernel_for_any_dispatch_key  s7   ø€ Ü�x‰x×AÑAØ�I‰I‹K˜ó
ò 9ä‰WÑ4°RÓ8ð	9r)   c                 óR   — | j                   j                  j                  d«      d   S r;  r<  r&   s    r   r‰   zOpOverload.namespace  r>  r)   c                 óž   — t         j                  }|| j                  v xs. t        j                  j                  | j                  «       |«      S r!   )r   rk   r#   r6   r7   rZ  rH   )r'   Údks     r   Ú_can_decomposezOpOverload._can_decompose  s?   € Ü×2Ñ2ˆØ�T—_‘_Ð$ò 
¬¯©×(VÑ(VØ�I‰I‹K˜ó)
ð 	
r)   c                 óü   — t         j                  }|| j                  v r | j                  |   |i |¤ŽS t        j                  j                  | j                  «       |«      r | j                  |g|¢­i |¤ŽS t        S r!   )	r   rk   r#   r6   r7   rZ  rH   r#  r¡   )r'   r.   r/   r_  s       r   Ú	decomposezOpOverload.decompose  sq   € Ü×2Ñ2ˆØ�—‘Ñ ð
 '�4—?‘? 2Ñ&¨Ð7°Ñ7Ð7Ü�X‰X×;Ñ;¸D¿I¹I»KÈÔLØ�4—;‘;˜rÐ3 DÒ3¨FÑ3Ð3ä!Ð!r)   c                 ó<   — | j                   j                  |d «       y r!   )r"   Úpop)r'   Úkeys     r   Ú_uncache_dispatchzOpOverload._uncache_dispatch+  s   € Ø×Ñ× Ñ   dÕ+r)   c                 ó`  ‡ ‡— ‰‰ j                   vsJ ‰ › d‰› �«       ‚‰t        j                  k(  rZt        ‰ t        «      s(‰ j
                  s‰‰ j                   ‰<   t        ‰ «       ‰S ˆˆ fd„}|‰ j                   ‰<   t        ‰ «       |S t        j                  j                  ‰«      }|t        j                  k(  rCt        «       }|dkD  r4t        j                  j                  t        j                  «      sˆ fd„}|S t        ‰ ‰«      }‰t        j                  k7  }‰t        j                  k(  rEdd lmc m} |j$                  r0|j'                  ‰ |«      }|r|‰ j                   ‰<   t        ‰ «       |S ‰ j(                  j+                  ||«      }|r|‰ j                   ‰<   t        ‰ «       |S )Nú c                  ó0  •— ddl m} t         |«       «      }|€J d«       ‚|‰j                  vr†t	        ‰t
        «      r`t        j                  j                  j                  «       5 }t        j                  j                  j                  |‰g| ¢­i |¤Žcd d d «       S  ‰j                  ‰g| ¢­i |¤ŽS t        j                  j                  j                  «       5 } ‰j                  |   |g| ¢­i |¤Žcd d d «       S # 1 sw Y   ŒTxY w# 1 sw Y   y xY w)Nr   r�   zDIllegal invocation of dispatch on DispatchKey.Python without a mode.)rœ   r�   ra   r$   rE   ÚTorchBindOpOverloadr6   ÚutilsÚ_python_dispatchrš   Ú_libraryÚhandle_dispatch_moder#  )r.   r/   r�   r²   rS   re  r'   s        €€r   r³   z)OpOverload._get_dispatch.<locals>.handler9  s  ø€ ÝSô !Ñ!;Ó!=Ó>�	Ø Ð,ð ØZóÐ,ð  D×$9Ñ$9Ñ9Ü! $Ô(;Ô<ä!ŸK™K×8Ñ8×NÑNÓPðØTXä#(§>¡>×#7Ñ#7×#LÑ#LØ $ dð$Ø-1ò$Ø5;ñ$÷ñ ð  +˜tŸ{™{¨3Ð@°Ò@¸Ñ@Ð@ä—[‘[×1Ñ1×GÑGÓIð SÈTØ;˜4×0Ñ0°Ñ;¸DÐRÀ4ÒRÈ6ÑR÷Sñ S÷ð ú÷Sð Sús   Á'.D ÃDÄ D	ÄDr   c                  óÆ   •— t         j                  d„ «       } |«       5 }t        j                  j                  j
                  |‰g| ¢­i |¤Žcd d d «       S # 1 sw Y   y xY w)Nc               3   ó`   K  — t        «       } 	 | –— t        | «       y # t        | «       w xY w­wr!   )r
  r  )Útop_modes    r   Ú(_temporarily_pop_modes_from_pre_dispatchz[OpOverload._get_dispatch.<locals>.handler.<locals>._temporarily_pop_modes_from_pre_dispatchb  s)   è ø€ ä#>Ó#@˜ð=Ø"*šNä2°8Õ<øÔ2°8Õ<üs   ‚.Ž ’.ž+«.)Ú
contextlibÚcontextmanagerr6   rm  rk  rn  )r.   r/   rr  r²   r'   s       €r   r³   z)OpOverload._get_dispatch.<locals>.handlera  sh   ø€ Ü×.Ñ.ñ=ó /ð=ñ BÓCð ÀyÜ$Ÿ~™~×3Ñ3×HÑHØ% tð Ø.2ò Ø6<ñ ÷÷ ò ús   Ÿ.AÁA )r"   r   rF   rE   rj  r$   r  r6   r7   rª   r«   r¬   r­   rs   rZ   Útorch._dispatch.pythonÚ	_dispatchÚpythonÚCROSSREF_FUNCTIONALIZEÚmake_crossref_functionalizer#   rê   )	r'   re  r³   r¶   Úcurr_stack_lenr·   Úcache_resultÚ
pydispatchÚrs	   ``       r   Ú_get_dispatchzOpOverload._get_dispatch/  sŠ  ù€ à˜$×.Ñ.Ñ.Ð?°4°&¸¸#¸°Ó?Ð.à”+×$Ñ$Ò$Ü˜dÔ$7Ô8À×AVÒAVØ,/�×$Ñ$ SÑ)Ü˜dÔ#Ø�
õSð0 )0ˆD× Ñ  Ñ%Ü˜$ÔØˆNä!ŸH™H×:Ñ:¸3Ó?ÐØ¤× 7Ñ 7Ò7ÜCÓEˆNð  Ò"ÜŸ™×GÑGÜ×&Ñ&ôô
ð& �ä  cÓ*ˆ	ð œk×5Ñ5Ñ5ˆð
 ”+×+Ñ+Ò+ß7Ð7à×0Ò0Ø$×@Ñ@ÀÀyÓQ�ÙØ07�D×(Ñ(¨Ñ-Ü! $Ô'Ø�à�O‰O×Ñ 	¨9Ó5ˆÙØ()ˆD× Ñ  Ñ%Ü˜$ÔØˆr)   c                 ó   — | j                   S r!   rÇ   r&   s    r   rH   zOpOverload.nameŽ  rÈ   r)   c                 ó   — | j                   S r!   )r%  r&   s    r   r6  zOpOverload.overloadpacket‘  s   € à×#Ñ#Ð#r)   c                 ó   — | j                   S r!   rN  r&   s    r   rb   zOpOverload.op•  rŠ   r)   c                 ó   — | j                   S r!   )r&  r&   s    r   r9  zOpOverload.tags™  s   € à�z‰zÐr)   r!   )r]   r^   r_   r(   rÉ   r=  r@  rC  rG  rL  r0   rR  rV  rÅ   r4   r;   r‰   r`  rb  rf  r~  rH   r6  rb   r9  rÌ   rÍ   s   @r   r  r  ¯  sÛ   ø„ ô&=ðP ñ0ó ð0ð ñ0ó ð0ð ñ!ó ð!óò
ò)ò
FòòUôLô
9ð
 ñ0ó ð0ò
ò"ò*,ò]ò~ð ñ$ó ð$ð ñó ðð ñó ôr)   c                   óN   — e Zd Zdee   fd„Zej                  d„ «       Zd„ Z	d„ Z
y)rj  r<   c                 ó,  ‡ — t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  g}dt         fˆ fd„}|D �cg c]  } ||«      r|‘Œ c}S c c}w )Nre  c                 ó.  •— t         j                  j                  ‰j                  «       | «      r.t         j                  j	                  ‰j                  «       | «      S | ‰j
                  vxs) ‰j
                  |    t         j                  j                  u S r!   )r6   r7   rZ  rH   Ú0_dispatch_kernel_for_dispatch_key_is_fallthroughr#   r/  Úfallthrough_kernel)re  r'   s    €r   Ú(_may_use_fallthrough_instead_of_fallbackzWTorchBindOpOverload._fallthrough_keys.<locals>._may_use_fallthrough_instead_of_fallback²  ss   ø€ Ü�x‰x×=Ñ=¸d¿i¹i»kÈ3ÔOÜ—x‘x×PÑPØ—I‘I“K óð ð
 ˜4Ÿ?™?Ð*ò LØ—?‘? 3Ñ'¬5¯=©=×+KÑ+KÐKðr)   )r   rn   ÚAutogradCPUÚAutogradCUDAÚADInplaceOrViewÚBackendSelectÚPythonTLSSnapshotÚPythonDispatcher)r'   Ú_DEFAULT_FALLTHROUGH_KEYSrˆ  re  s   `   r   Ú_fallthrough_keysz%TorchBindOpOverload._fallthrough_keys¥  s‚   ø€ ô × Ñ Ü×#Ñ#Ü×$Ñ$Ü×'Ñ'Ü×%Ñ%Ü×)Ñ)Ü×(Ñ(ð%
Ð!ð		¼+õ 		ð 1ö
àÙ7¸Ô<ò ò
ð 	
ùò 
s   Á=Bc              #   ó‚   K  — ddl m}m}m} 	 | |vr || |j                  «       d –— | |v r|| = y y # | |v r|| = w w xY w­w)Nr   )Ú_EffectTypeÚ_register_effectful_opÚSIDE_EFFECTS)Útorch._higher_order_ops.effectsr’  r“  r”  ÚORDERED)r'   r’  r“  r”  s       r   Ú%_register_as_effectful_op_temporarilyz9TorchBindOpOverload._register_as_effectful_op_temporarilyÃ  sZ   è ø€ ÷	
ñ 	
ð	'Ø˜<Ñ'Ù& t¨[×-@Ñ-@ÔAÛà�|Ñ#Ø  Ñ&ð $øˆt�|Ñ#Ø  Ñ&ð $üs   ‚?Ž2 ©	?²
<¼?c                óÌ   — t        ||«      r;| j                  «       5  | j                  ||| j                  «       «      cd d d «       S  | j                  |i |¤ŽS # 1 sw Y   ŒxY wr!   )Ú_must_dispatch_in_pythonr—  Ú_dispatch_in_pythonr�  r"  r-   s      r   r0   zTorchBindOpOverload.__call__Õ  sj   € Ü# D¨&Ô1ð ×;Ñ;Ó=ñ XØ×/Ñ/°°f¸d×>TÑ>TÓ>VÓW÷Xñ Xàˆt�x‰x˜Ð( Ñ(Ð(÷Xð Xús   �!AÁA#c           	      ó  — t         j                  j                  «       }|D ]  }|j                  |«      }Œ t	        |||«      }|j                  «       }|| j                  vr| j                  |«      n| j                  |   }t        |t        «      rZt         j                  j                  | j                  «       |«      r| j                  ||||gz   «      S t        d| › d|› d|› d�«      ‚t        |t        «      sJ ‚ ||i |¤ŽS )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 happpen 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.)r6   r7   r   r�   r¿   rÀ   r"   r~  rE   r   r†  rH   rš  rG   r   )	r'   r.   r/   Úfallthrough_keysr€   re  rÂ   rƒ   r³   s	            r   rš  z'TorchBindOpOverload._dispatch_in_pythonå  s5  € Ü$Ÿx™x×=Ñ=Ó?ÐØ#ò 	DˆCØ#7×#>Ñ#>¸sÓ#CÑ ð	Dô +¨4°Ð9MÓNÐØ'×=Ñ=Ó?ˆð  4×#7Ñ#7Ñ7ð ×Ñ˜|Ô,à×%Ñ% lÑ3ð 	ô �gœ{Ô+ô �x‰x×HÑHØ—	‘	“˜\ôð ×/Ñ/Ø˜&Ð"2°l°^Ñ"Cóð ô Ø ˜vÐ%YÐZaÐYbð cJð KWÈð X.ð	/óð ô ˜'¤8Ô,Ð,Ð,Ù˜Ð' Ñ'Ð'r)   N)r]   r^   r_   rŸ   r   r�  rs  rt  r—  r0   rš  rQ   r)   r   rj  rj  ¤  s7   „ ð
 4¨Ñ#4ó 
ð< ×Ññ'ó ð'ò")ó #(r)   rj  c                 ó4   — t        j                  d„ | |f«      S )Nc                 ó^   — t        | t        j                  j                  j                  «      S r!   )rE   r6   rm  Úfake_class_registryÚFakeScriptObject)Úobjs    r   ú<lambda>z*_must_dispatch_in_python.<locals>.<lambda>  s    € ”JØ”—‘×3Ñ3×DÑDó
€ r)   )rÏ   Útree_anyrÑ   s     r   r™  r™    s!   € Ü�?‰?ñ	
ð 
ˆvˆó	ð r)   r8  r<   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ód   K  — | ](  }t        |j                  t        j                  «      –— Œ* y ­wr!   )rE   ra   r6   Ú	ClassType)Ú.0r—   s     r   ú	<genexpr>z)_has_script_object_arg.<locals>.<genexpr>  s   è ø€ ÒQ¸Œz˜#Ÿ(™(¤E§O¡O×4ÑQùs   ‚.0)Úanyr2  )r8  s    r   Ú_has_script_object_argrª    s   € ÜÑQÀ×@PÑ@PÔQÓQÐQr)   c                   ód   — e Zd Zd„ Zdd„Zd„ Zd„ Zd„ Zed„ «       Z	ed„ «       Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚOpOverloadPacketc                 ó¨   — || _         || _        || _        || _        g | _        t        d„ | j                  j                  «       D «       «      | _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr!   )rª  )r§  r8  s     r   r¨  z,OpOverloadPacket.__init__.<locals>.<genexpr>#  s   è ø€ ò .
Ø/5Ô" 6×*ñ.
ùs   ‚)	Ú_qualified_op_namer]   r"  Ú_overload_namesÚ_dirr©  Ú_schemasrž   Ú_has_torchbind_op_overload)r'   Úqualified_op_nameÚop_namerb   Úoverload_namess        r   r(   zOpOverloadPacket.__init__  sP   € ð #4ˆÔØˆŒØˆŒØ-ˆÔØˆŒ	Ü*-ñ .
Ø9=¿¹×9MÑ9MÓ9Oô.
ó +
ˆÕ'r)   Nc                 ó   — | S r!   rQ   rE  s     r   rG  zOpOverloadPacket.__deepcopy__(  rH  r)   c                 óR   —  dj                   | j                  j                  d«      Ž S )Nz<OpOverloadPacket(op='{}.{}')>r!  ©rK  r¯  r,  r&   s    r   rL  zOpOverloadPacket.__repr__+  s,   € Ø6Ð/×6Ñ6Ø×$Ñ$×*Ñ*¨4Ó0ð
ð 	
r)   c                 ó,   — t        | j                  «      S r!   rT  r&   s    r   rV  zOpOverloadPacket.__hash__0  rW  r)   c                 óR   —  dj                   | j                  j                  d«      Ž S )Nz{}.{}r!  r¹  r&   s    r   rÅ   zOpOverloadPacket.__str__3  s$   € Øˆw�~‰~˜t×6Ñ6×<Ñ<¸TÓBÐCÐCr)   c                 ó   — | j                   S r!   rN  r&   s    r   rb   zOpOverloadPacket.op6  rŠ   r)   c                 ó’   — | j                   D �ci c]-  }|t        j                  j                  | j                  |«      “Œ/ c}S c c}w r!   )r°  r6   r7   Ú_get_schemar¯  )r'   r'  s     r   r²  zOpOverloadPacket._schemas:  sF   € ð "&×!5Ñ!5ö
àð œ5Ÿ8™8×/Ñ/°×0GÑ0GÈÓWÑWò
ð 	
ùò 
s   �2Ac           
      óØ  — |dk(  ry	 |j                  d«      rt        | j                  |«      S 	 	 |dk(  rd	n|}t
        j                  j                  | j                  |«      }|€t        d
t	        | «      › d|› d�«      ‚|\  }}}t
        j                  j                  | j                  |«      }t        |«      st        | ||||«      nt        | ||||«      }t        | ||«       | j                  j                  |«       |S # t        $ r3 t        dt	        | «      › dt	        | j                  «      › d|› d�«      d ‚w xY w# t         $ r t        d
t	        | «      › d|› d�«      d ‚w xY w)NÚ__file__ú	torch.opsÚ__ú'zH' can't have an overload name beginning with '__' and the underlying op z has no attribute z either.r  r  zThe underlying op of 'z' has no overload name ')Ú
startswithÚgetattrr"  ÚAttributeErrorÚstrr6   r7   Ú_get_operation_overloadr¯  r¾  rª  r  rj  Úsetattrr±  r–   rG   )	r'   re  Úuse_keyÚ
op_dk_tagsÚop_Úop_dk_r9  r8  Úoverloads	            r   Ú__getattr__zOpOverloadPacket.__getattr__A  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ô ˜4  f¨f°dÔ;ä(¨¨s°F¸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                 ó,   — t        | j                  «      S r!   ©Úiterr±  r&   s    r   Ú__iter__zOpOverloadPacket.__iter__v  ó   € Ü�D—I‘I‹Ðr)   c                óx   — | j                   rt        ||«      rt        | ||«      S  | j                  |i |xs i ¤ŽS r!   )r³  r™  Ú!_call_overload_packet_from_pythonr"  r-   s      r   r0   zOpOverloadPacket.__call__{  s@   € ð ×*Ò*Ô/GÈÈfÔ/UÜ4°T¸4ÀÓHÐHØˆt�x‰x˜Ð0 &¢,¨BÑ0Ð0r)   c                 óH   — | j                   D �cg c]  }|r|nd‘Œ
 c}S c c}w )Nr  )r°  )r'   Úns     r   Ú	overloadszOpOverloadPacket.overloads‰  s#   € Ø/3×/CÑ/CÖD¨!‘Q‘˜IÑ%ÒDÐDùÒDs   �r!   )r]   r^   r_   r(   rG  rL  rV  rÅ   rÉ   rb   r²  rÏ  rÓ  r0   rÙ  rQ   r)   r   r¬  r¬    sZ   „ ò

óò
ò
òDð ñó ðð ñ
ó ð
ò3òjò
1óEr)   r¬  c                 ó¶  — t        j                  j                  | g|¢­i |¤Ž\  }}|r|S i }d }| j                  «       D ]?  }t	        | |«      }	 t        j                  j
                  |j                  g|¢­i |¤Ž}	|} n |r ||i |¤ŽS d| › d�}|j                  «       D ]  \  }}|d|› d|› d�z  }Œ t        |«      ‚# t        $ r}
|
||<   Y d }
~
Œ”d }
~
ww xY w)Nz'Fail to match any TorchBindOverload of z with following exceptions:
zOverload name z:
 ú
)	r6   r7   Ú(_maybe_call_torch_function_for_op_packetrÙ  rÅ  Ú&_check_schema_allow_fake_script_objectr$  rG   Úitems)rb   r.   r/   Útorch_function_calledÚretÚ
exceptionsÚfound_opr'  r  Ú_ÚeÚerr_msgre  Úmsgs                 r   rÖ  rÖ  �  s)  € ä!&§¡×!RÑ!RØ
ð"Øò"Øñ"ÑÐ˜3ñ Øˆ
ð €JØ€HØŸ™›ò 	*ˆÜ˜b -Ó0ˆð	*Ü—‘×?Ñ?Ø×#Ñ#ðØ&*òØ.4ñˆAð #ˆHÙð	*ñ Ù˜Ð( Ñ(Ð(ð 2°"°Ð5RÐSð ð ×$Ñ$Ó&ò 5‰ˆˆSØ�^ C 5¨¨S¨E°Ð4Ñ4‰ð5ä
�wÓ
Ðøô ò 	*Ø()ˆJ�}Ö%ûð	*ús   Á/C Ã 	CÃ	CÃCc                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )Ú_OpNamespacea0  
    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).
    c                 óF   •— t         ‰| �  d|z   «       || _        g | _        y )Nz
torch.ops.)r{   r(   rH   r±  )r'   rH   r„   s     €r   r(   z_OpNamespace.__init__Ù  s#   ø€ Ü‰Ñ˜¨Ñ,Ô-ØˆŒ	Øˆ�	r)   c                 ó,   — t        | j                  «      S r!   rÑ  r&   s    r   rÓ  z_OpNamespace.__iter__Þ  rÔ  r)   c                 óþ  — |dk(  ry|dv rt        d|› d| j                  › d�«      ‚| j                  }|› d|› �}| j                  dz   |z   }	 t        ||«      \  }}|€t        d	| j                  › d
|› d�«      ‚	 ||_        t        ||||«      }| j                  dz   |z   |_        t        | ||«       | j                  j                  |«       |S # t        $ r"}t        d	| j                  › d
|› d�«      |‚d }~ww xY w)NrÀ  rÁ  )Ú
__origin__Ú__self__zInvalid attribute 'z' for '_OpNamespace' 'rÃ  r!  r   z'_OpNamespace' 'ú' object has no attribute ')	rÆ  rH   r^   Ú_get_packetrG   r¬  rÉ  r±  r–   )	r'   rµ  Únamespace_namer´  Úmodule_namerb   r¶  rä  Úopoverloadpackets	            r   rÏ  z_OpNamespace.__getattr__á  sI  € à�jÒ ØØÐ2Ñ2Ü Ø% 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óð ð ð $ˆŒÜ+Ø˜w¨¨Nó
Ðð '+§o¡o¸Ñ&;¸nÑ&LÐÔ#ô 	��gÐ/Ô0Ø�	‰	×Ñ˜Ô!ØÐøô! ò 	ô !Ø" 4§9¡9 +Ð-HÈÈ	ÐQRÐSóàðûð	ús   Á-C Ã	C<ÃC7Ã7C<)r]   r^   r_   r`   r(   rÓ  rÏ  rÌ   rÍ   s   @r   rè  rè  Ä  s   ø„ ñô(ò
ö% r)   rè  c                 ó´   — t         j                  j                  | «      \  }}|�1t         j                  j                  j                  || «       ||_        ||fS r!   )r6   r7   Ú_jit_get_operationÚjitÚ	_builtinsÚ_register_builtinr^   )ÚqualnameÚ	op_modulerb   r¶  s       r   rï  rï  	  sN   € ÜŸ™×4Ñ4°XÓ>Ñ€BˆØ	€~ô 	�	‰	×Ñ×-Ñ-¨b°(Ô;Ø!ˆŒØˆ~ÐÐr)   c                 ó‚   — t        | j                  | j                  j                  «      \  }}|€J ‚|| _        || _        y r!   )rï  r¯  r"  r^   r°  )Úpacketrb   r¶  s      r   Ú_refresh_packetrü    s<   € Ü$ V×%>Ñ%>ÀÇ
Á
×@UÑ@UÓVÑ€BˆØˆ>Ðˆ>Ø€F„JØ+€FÕr)   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú_PyOpNamespacec                 ó2   •— t         ‰| �  |«       || _        y r!   )r{   r(   Ú_ops)r'   rH   Úopsr„   s      €r   r(   z_PyOpNamespace.__init__  s   ø€ Ü‰Ñ˜ÔØˆ�	r)   c                 ó”   — | j                   j                  |d «      }|€t        d| j                  › d|› d�«      ‚t	        | ||«       |S )Nz'_PyOpNamespace' 'rî  rÃ  )r   rê   rÆ  rH   rÉ  )r'   rH   rb   s      r   rÏ  z_PyOpNamespace.__getattr__  sS   € à�Y‰Y�]‰]˜4 Ó&ˆØˆ:Ü Ø$ T§Y¡Y KÐ/JÈ4È&ÐPQÐRóð ô 	��d˜BÔØˆ	r)   )r]   r^   r_   r(   rÏ  rÌ   rÍ   s   @r   rþ  rþ    s   ø„ ôör)   rþ  c                   ó:   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZ	S )Ú_Opsz_ops.pyc                 óz   •— t         ‰| �  d«       t        «       | _        t	        dt
        «      | _        g | _        y )NrÁ  rz   )r{   r(   rè   Úloaded_librariesrþ  ru   Ú_higher_order_op_namespacer±  )r'   r„   s    €r   r(   z_Ops.__init__-  s6   ø€ Ü‰Ñ˜Ô%Ü #£ˆÔÜ*8Ø$Ô&7ó+
ˆÔ'ð ˆ�	r)   c                 óŽ   — |dk(  r| j                   S t        |«      }t        | ||«       | j                  j	                  |«       |S )Nry   )r  rè  rÉ  r±  r–   )r'   rH   r‰   s      r   rÏ  z_Ops.__getattr__5  sF   € à�>Ò!Ø×2Ñ2Ð2ô ! Ó&ˆ	Ü��d˜IÔ&Ø�	‰	×Ñ˜ÔØÐr)   c                 ó,   — t        | j                  «      S r!   rÑ  r&   s    r   rÓ  z_Ops.__iter__@  rÔ  r)   c                 ó.   — t        j                  |«       y)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  z_Ops.import_moduleC  s   € ô" 	×Ñ Õ'r)   c                 óö   — t        j                  «       ryt        j                  |«      }t	        «       5  t        j                  |«       ddd«       | j                  j                  |«       y# 1 sw Y   Œ%xY w)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.
        N)	r6   Ú_running_with_deployr   Úresolve_library_pathr   r   ÚCDLLr  r†   )r'   Úpaths     r   Úload_libraryz_Ops.load_libraryV  sa   € ô$ ×%Ñ%Ô'Øä×3Ñ3°DÓ9ˆÜ‹_ñ 	ô �K‰K˜Ô÷		ð
 	×Ñ×!Ñ! $Õ'÷	ð 	ús   µA/Á/A8)
r]   r^   r_   rÀ  r(   rÏ  rÓ  r  r  rÌ   rÍ   s   @r   r  r  *  s!   ø„ Ø€Hôò	òò(ö&(r)   r  r  )F)XrÊ   rs  r   r  r@   r   ÚtypesÚtypingr   r   r   r   r   r   Útyping_extensionsr	   r
   r6   Útorch.utils._pytreerk  Ú_pytreerÏ   r   Útorch._Cr   rg   r   Útorch._functorch.pyfunctorchr   r   rœ   r   rY   r   r   r   Úhasattrr   rt  r   r   rs   ru   ÚdictrÇ  r-  rŽ  r�  r‹  rŒ  ÚAutocastCPUÚAutocastCUDAr�   ÚABCrt   r»   r¿   rÓ   rÔ   rà   r  rþ   r  r
  r¬   r  r®   rõ   rè   r  r  r  r  r  rj  r™  ÚFunctionSchemaÚboolrª  r¬  rÖ  Ú
ModuleTyperè  rï  rü  rþ  r  r  rQ   r)   r   ú<module>r#     s9  ðä 
Û Û Û Û Û 
Û ß I× Iß 4ã ß $Ð $Ý !ß Xß JÝ :ñ ÝHñ ˆTƒ]€Ùˆtƒ_€ñ ˜CÐ!1Ó2ÒU±w¸sÐDTÓ7UÐ ð ×Ññ&ó ð&÷ P"ñ P"ðh2U�Lð 2U [ó 2Uðj 79Ð �4˜Ð2Ð2Ñ3Ó 8ð × Ñ Ø×!Ñ!Ø×ÑØ×ÑØ×ÑØ×Ñð6Ð 2ôW˜,¨¯©ô Wòt3ò8ò
ò÷,
ñ 
ñ& &CÓ%DÐ "ó!òH$XòNMò7ò:òò .ñ
 !$£€
ˆC�ÑÓ %ò ò
ò
ôl�ô lôjd(˜*ô d(òNðR 5×#7Ñ#7ð R¸Dó R÷pEñ pEðj# Ð*:ó # ôjB �5×#Ñ#ô B òJò,ô�\ô ô G(ˆ5×Ñô G(ñV ‹F€€TÔ r)   