§
    B�’jŠN  ã            	       óú  — U d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZ erd dlmZ d dlZd dlZd d	lmZmZmZmZ d d
lmZ d dlmZ d dl m!Z" g d¢Z# ed¦  «        Z$ ed¦  «        Z% ee&¦  «        Z'e&e(e&ej)        j        ef         f         e*d<   e'd         Z+e'd         Z,e'd         Z-dej)        j        de.fd„Z/d„ Z0d„ Z1	 d$dddœdeee%e$f         gee%e$f         f         fd„Z2	 d%deej)        j        ez           de(de&ej)        j        ef         fd„Z3de&ej)        j        ef         deeez           ddfd „Z4d dl5Zd dl6Zd&d"„Z7de&ej)        j        ef         fd#„Z8dS )'é    N)Údefaultdict)ÚCallableÚSequence)Ú	lru_cacheÚpartialÚwraps)Úchain)ÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnion)Ú	ParamSpec)ÚCustomDecompTable)ÚHigherOrderOperatorÚOperatorBaseÚ
OpOverloadÚOpOverloadPacket)ÚCustomOutParamAnnotation)ÚFunctionalTensor)Ú_pytree)Údecomposition_tableÚ pre_autograd_decomposition_tableÚ
meta_tableÚregister_decompositionÚget_decompositionsÚcore_aten_decompositionsÚ#_should_decompose_because_unsafe_opÚ_TÚ_PÚglobal_decomposition_tableÚpost_autogradÚpre_autogradÚmetaÚopÚreturnc                 ó²   — t          | t          j        j        ¦  «        sdS t          j        j        | j        v rdS | t          j        j        j	        j
        u S )aì  
    Returns True if the op must always decompose in export/compile tracing system

    In export, we always decompose certain CIA ops that are tagged with
    maybe_aliasing_or_mutating because we statically need to know if the op is
    mutating or not. But these CIA ops could have different behaviour in runtime.

    native_batch_norm is a prim op which has a wrong schema and it needs to be replaced
    with correct schema. But until then, we will force decompose it via this tag.
    FT)Ú
isinstanceÚtorchÚ_opsr   ÚTagÚmaybe_aliasing_or_mutatingÚtagsÚopsÚatenÚnative_batch_normÚdefault)r$   s    úDC:\Projects\DSCons\.venv\Lib\site-packages\torch\_decomp\__init__.pyr   r   /   sL   € õ �b�%œ*Ô/Ñ0Ô0ð ØˆuÝ„yÔ+¨r¬wÐ6Ð6ØˆtØ•””Ô1Ô9Ð9Ð9ó    c                 óð  — g }t          |t          ¦  «        r|| |<   dS t          |t          ¦  «        r|                     |¦  «         n[t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|                     |                     ¦   «         ¦  «         |D ]N}|| v rt          d|› �¦  «        ‚t          j                             |                     ¦   «         ¦  «        r|| |<   ŒOdS )zú
    This is an internal API for adding an op to the decomposition table.

    If op is OpOverload, it will be added to the registry directly.
    If op is OpOverloadPacket, all the valid overload_ops in the packet will be added to the registry.
    Nzexpected OpOverloadPacket, got zduplicate registrations for )r'   r   r   Úappendr   ÚAssertionErrorÚtypeÚextendÚop_overloadsÚRuntimeErrorr(   Ú_CÚ_dispatch_has_kernelÚname)Úregistryr$   ÚfnÚ	overloadsÚop_overloads        r1   Ú_add_op_to_registryrA   A   s  € ð 02€IÝ�"Õ)Ñ*Ô*ð 	,àˆ�‰ØˆÝ	�B�
Ñ	#Ô	#ð ,Ø×Ò˜ÑÔÐÐå˜"Õ.Ñ/Ô/ð 	OÝ Ð!MÅ4ÈÁ8Ä8Ð!MÐ!MÑNÔNÐNØ×Ò˜ŸšÑ*Ô*Ñ+Ô+Ð+à ð 'ð 'ˆØ˜(Ð"Ð"ÝÐK¸kÐKÐKÑLÔLÐLõ Œ8×(Ò(¨×)9Ò)9Ñ);Ô);Ñ<Ô<ð 	'Ø$&ˆH�[Ñ!øð'ð 'r2   c                 ó˜  ‡ ‡‡	— ‰ j                              d¦  «        }|s‰ S t          |dd ¦  «        t          u �rt	          j        ‰ ¦  «        }|j        j        Š	t          ‰ ¦  «        ˆ ˆ	fd„¦   «         }d„ t          ‰	t          j        |¦  «        ¦  «        D ¦   «         }t          d„ |j                             ¦   «         D ¦   «         |¦  «        }t	          j        ||j        ¬¦  «        |_        d„ ‰ j                              ¦   «         D ¦   «         |_         |D ]}|j        |j         |j        <   Œ‰ j        |_        |S ‰ j                              t*          d ¦  «        Š‰ræt          ‰ ¦  «        ˆˆ fd„¦   «         }t	          j        ‰t          j        j        d |¬	¦  «        }t	          j        ‰ ¦  «        }t          d
„ |j                             ¦   «         D ¦   «         |f¦  «        }t	          j        ||j        ¬¦  «        |_        d„ ‰ j                              ¦   «         D ¦   «         |_         |j        |j         |j        <   |S ‰ S )NÚoutÚ
__origin__c                  óÌ   •‡‡— t          ˆfd„‰D ¦   «         ¦  «        }|d         d u Št          ˆfd„|D ¦   «         ¦  «        st          d|› �¦  «        ‚ ‰| i ‰¤d‰rd n|i¤ŽS )Nc              3   óD   •K  — | ]}‰                      |d ¦  «        V — Œd S ©N©Úpop)Ú.0ÚoÚkwargss     €r1   ú	<genexpr>z3_convert_out_params.<locals>._fn.<locals>.<genexpr>n   s1   øè è € ÐFÐF°q˜vŸzšz¨!¨TÑ2Ô2ÐFÐFÐFÐFÐFÐFr2   r   c              3   ó(   •K  — | ]}|d u ‰k    V — Œd S rG   © )rJ   rK   Úis_nones     €r1   rM   z3_convert_out_params.<locals>._fn.<locals>.<genexpr>q   s,   øè è € ÐBÐB°!˜˜T˜	 gÒ-ÐBÐBÐBÐBÐBÐBr2   z0all out kwargs must be set or none of them, got rC   )ÚtupleÚallr5   )ÚargsrL   Ú
out_kwargsrP   ÚfÚ	out_namess    ` @€€r1   Ú_fnz _convert_out_params.<locals>._fnl   s¢   øøø€ åÐFÐFÐFÐF¸IÐFÑFÔFÑFÔFˆJà  ”m tÐ+ˆGÝÐBÐBÐBÐB°zÐBÑBÔBÑBÔBð Ý$ØSÀzÐSÐSñô ð ð �1�dÐJ˜fÐJÐJ°'Ð*I¨$¨$¸zÐJÐJÐJÐJr2   c                 ób   — g | ],\  }}t          j        |t           j        j        d |¬¦  «        ‘Œ-S )N©Úkindr0   Ú
annotation)ÚinspectÚ	ParameterÚKEYWORD_ONLY)rJ   rK   Úts      r1   ú
<listcomp>z'_convert_out_params.<locals>.<listcomp>w   sR   € ð 
ð 
ð 
ñ ��1õ ÔØÝÔ&Ô3ØØð	ñ ô ð
ð 
ð 
r2   c              3   ó,   K  — | ]\  }}|d k    ¯|V — ŒdS ©rC   NrO   ©rJ   ÚkÚvs      r1   rM   z&_convert_out_params.<locals>.<genexpr>�   s*   è è € ÐKÐK™d˜a ÀÀUÂ
À
˜À
À
À
À
ÐKÐKr2   )Ú
parametersÚreturn_annotationc                 ó&   — i | ]\  }}|d k    ¯||“ŒS ©rC   rO   rc   s      r1   ú
<dictcomp>z'_convert_out_params.<locals>.<dictcomp>‡   ó$   € ÐXÐXÐX©¨¨1ÈQÐRWÊZÈZ˜q !ÈZÈZÈZr2   c                  óH   •— |                      ‰d ¦  «        } ‰| i |¤d|i¤ŽS )NrC   rH   )rS   rL   Ú	out_kwargÚcustom_out_param_namerU   s      €€r1   rW   z _convert_out_params.<locals>._fn–   s7   ø€ àŸ
š
Ð#8¸$Ñ?Ô?ˆIØ�1�dÐ4˜fÐ4Ð4¨)Ð4Ð4Ð4Ð4r2   rY   c              3   ó,   K  — | ]\  }}|d k    ¯|V — ŒdS rb   rO   rc   s      r1   rM   z&_convert_out_params.<locals>.<genexpr>¥   s*   è è € Ð@Ð@‘4�1�a°Q¸%²Z°ZˆQ°Z°Z°Z°ZÐ@Ð@r2   c                 ó&   — i | ]\  }}|d k    ¯||“ŒS ri   rO   rc   s      r1   rj   z'_convert_out_params.<locals>.<dictcomp>­   rk   r2   )Ú__annotations__ÚgetÚgetattrrQ   r\   Ú	signaturerg   Ú_fieldsr   ÚzipÚtypingÚget_argsr	   rf   ÚitemsÚ	SignatureÚ__signature__r[   r<   Ú!_torch_decompositions_out_wrapperrI   r   r]   r^   )
rU   Úout_annotationÚsigrW   Ú
out_paramsÚparamsrK   Ú	out_paramrn   rV   s
   `       @@r1   Ú_convert_out_paramsr‚   ^   s   øøø€ ØÔ&×*Ò*¨5Ñ1Ô1€Nð ð Øˆõ ˆ~˜|¨TÑ2Ô2µeÐ;Ñ;ÝÔ Ñ"Ô"ˆØÔ)Ô1ˆ	õ 
ˆq‰Œð	Kð 	Kð 	Kð 	Kð 	Kñ 
Œð	Kð
ð 
õ ˜I¥v¤°~Ñ'FÔ'FÑGÔGð
ñ 
ô 
ˆ
õ ÐKÐK c¤n×&:Ò&:Ñ&<Ô&<ÐKÑKÔKÈZÑXÔXˆÝ#Ô-ØØ!Ô3ð
ñ 
ô 
ˆÔð
 YÐX°Ô0A×0GÒ0GÑ0IÔ0IÐXÑXÔXˆÔØð 	7ð 	7ˆAØ*+¬,ˆCÔ ¤Ñ'Ð'ð 12Ô0SˆÔ-àˆ
ð
 Ô-×1Ò1Õ2JÈDÑQÔQÐØð å	ˆq‰Œð	5ð 	5ð 	5ð 	5ð 	5ñ 
Œð	5õ Ô%Ø!ÝÔ"Ô/ØØ%ð	
ñ 
ô 
ˆ	õ Ô Ñ"Ô"ˆÝØ@Ð@˜3œ>×/Ò/Ñ1Ô1Ð@Ñ@Ô@À9À,ñ
ô 
ˆõ $Ô-ØØ!Ô3ð
ñ 
ô 
ˆÔð YÐX°Ô0A×0GÒ0GÑ0IÔ0IÐXÑXÔXˆÔØ.7Ô.BˆÔ˜IœNÑ+àˆ
à€Hr2   F)r6   Úunsafec                ó°   ‡ ‡‡‡— ‰dvrt          d‰› �¦  «        ‚dt          t          t          f         dt          t          t          f         fˆ ˆˆˆfd„}|S )az  
    A decorator to register a function as a decomposition to the Python
    decomposition table.  Use it like this::

        @register_decomposition(torch.ops.aten.clamp_min)
        def clamp_min(x):
            return torch.clamp(self, min=min)

    If you are writing a new decomposition, consider contributing it
    directly to PyTorch in torch._decomp.decompositions.

    This API is experimental; we are almost certainly going to extend
    the API when we make decompositions eligible for use in transforms (e.g.,
    autograd) and not just backend tracing, where we then need to know if a
    decomposition can be used to simulate a transform.

    By default, we also will register it to the Meta key of dispatcher,
    and replace the c++ Meta implementation if there is already one.

    unsafe kwarg is for reuse of this function for registering non-function
    things
    >   r#   r"   r!   ú>type must be one of post_autograd, pre_autograd, or meta, got r>   r%   c                 ó„   •‡ — ‰ }‰st          ‰ ¦  «        Š ‰€t          ‰         Šˆ ˆfd„}t          j        |‰¦  «         |S )Nc                 ó*   •— t          ‰| ‰¦  «         d S rG   )rA   )r$   r>   r=   s    €€r1   ÚregisterzIregister_decomposition.<locals>.decomposition_decorator.<locals>.registerÝ   s   ø€ Ý ¨"¨bÑ1Ô1Ð1Ð1Ð1r2   )r‚   r    ÚpytreeÚ	tree_map_)r>   Úorig_fnrˆ   Úaten_opr=   r6   rƒ   s   `  €€€€r1   Údecomposition_decoratorz7register_decomposition.<locals>.decomposition_decoratorÔ   sh   øø€ ØˆØð 	)Ý$ RÑ(Ô(ˆBð ÐÝ1°$Ô7ˆHð	2ð 	2ð 	2ð 	2ð 	2ð 	2õ 	Ô˜ 7Ñ+Ô+Ð+Øˆr2   )r5   r   r   r   )rŒ   r=   r6   rƒ   r�   s   ```` r1   r   r   µ   s†   øøøø€ ð4 Ð<Ð<Ð<ÝØSÈTÐSÐSñ
ô 
ð 	
ð¥H­Rµ¨VÔ$4ð ½Å"ÅbÀ&Ô9Ið ð ð ð ð ð ð ð ð ð  #Ð"r2   Úaten_opsr6   c                 óÀ  — |dvrt          d|› �¦  «        ‚t          |         }t          t          ¦  «        }|D ]>}t	          |t
          t          f¦  «        r ||j                                      |¦  «         Œ?i }| D ]`}t	          |t          ¦  «        r||v r||         D ]}||         ||<   ŒŒ2t	          |t          j
        j        ¦  «        r||v r||         ||<   Œa|S )a,  
    Retrieve a dictionary of decompositions corresponding to the list of
    operator overloads and overload packets passed as input.  Overload
    packets will include all decomposed overloads in the packet.  If there is
    no decomposition for a requested operator, it is silently ignored.

    This API is experimental; we are almost certainly going to give an alternate,
    more recommended formulation, where a user provides the set of operators
    they know how to implement, and we provide decompositions for everything
    not in this set.
    >   r#   r"   r!   r…   )r5   r    r   Úlistr'   r   r   Úoverloadpacketr4   r(   r)   r   )rŽ   r6   r=   Úpackets_to_overloadsÚopoÚdecompositionsr$   r@   s           r1   r   r   ç   s"  € ð Ð<Ð<Ð<ÝØSÈTÐSÐSñ
ô 
ð 	
õ *¨$Ô/€HÝ&¥tÑ,Ô,Ðàð Að AˆÝ�c�JÕ(8Ð9Ñ:Ô:ð 	AØ  Ô!3Ô4×;Ò;¸CÑ@Ô@Ð@øØ>@€NØð .ð .ˆÝ�bÕ*Ñ+Ô+ð 	.°Ð6JÐ0JÐ0JØ3°BÔ7ð Dð D�Ø.6°{Ô.C�˜{Ñ+Ð+ðDå˜�UœZÔ4Ñ6Ô6ð 	.¸2À¸>¸>Ø!)¨"¤ˆN˜2ÑøØÐr2   r”   c                 óì   — |D ]p}t          |t          ¦  «        r.|                     ¦   «         D ]}|                      |d¦  «         ŒŒEt          |t          ¦  «        r|                      |d¦  «         ŒqdS )a=  
    Given a dictionary of decompositions obtained from get_decompositions(), removes
    operators associated with a list of operator overloads and overload packets passed
    as input. If the decomposition dictionary does not contain a decomposition that is
    specified to be removed, it is silently ignored.
    N)r'   r   r8   rI   r   )r”   rŽ   r$   r“   s       r1   Úremove_decompositionsr–     s�   € ð ð )ð )ˆÝ�bÕ*Ñ+Ô+ð 	)Ø—’Ñ(Ô(ð .ð .�Ø×"Ò" 3¨Ñ-Ô-Ð-Ð-ð.å˜�JÑ'Ô'ð 	)Ø×Ò˜r 4Ñ(Ô(Ð(øð)ð )r2   r   c                  ó"   — ddl m}   | ¦   «         S )Nr   ©Údefault_decompositions)Útorch.export.exported_programr™   r˜   s    r1   r   r   "  s#   € ØDÐDÐDÐDÐDÐDà!Ð!Ñ#Ô#Ð#r2   c                  ó@  — t           j        j        } t          g | j        ‘| j        ‘| j        ‘| j        ‘| j        ‘| j	        ‘| j
        ‘| j        ‘| j        ‘| j        j        ‘| j        j        ‘| j        ‘| j        ‘| j        ‘| j        ‘| j        ‘| j        ‘| j        j        ‘| j        j        ‘| j        ‘| j        ‘| j        ‘| j        ‘| j        ‘| j        ‘| j        ‘| j        ‘| j         ‘| j!        ‘| j"        ‘| j#        ‘| j$        ‘| j%        ‘| j&        ‘| j'        ‘| j(        ‘| j)        ‘| j*        ‘| j+        ‘| j,        ‘| j-        ‘| j.        ‘| j/        ‘| j0        j        ‘| j1        ‘| j2        ‘| j3        ‘| j4        ‘| j5        ‘| j6        ‘| j7        ‘| j8        ‘| j9        ‘| j:        ‘| j;        ‘| j<        ‘| j=        ‘| j>        ‘| j?        ‘| j@        ‘| jA        ‘| jB        ‘| jC        ‘| jD        ‘| jE        ‘| jF        ‘| jG        ‘| jH        ‘| jI        ‘| jJ        ‘| jK        ‘| jL        ‘| jM        jN        ‘| jM        j        ‘| jO        ‘| jP        jN        ‘| jP        j        ‘| jQ        ‘| jR        jS        ‘| jR        jT        ‘| jR        jU        ‘| jR        jV        ‘| jW        ‘| jX        ‘| jY        ‘| jZ        ‘| j[        ‘| j\        ‘| j]        ‘| j^        ‘| j_        ‘| j`        ‘| ja        ‘| jb        ‘| jc        ‘| jd        ‘| je        ‘| jf        ‘| jg        ‘| jh        ‘| ji        ‘| jj        ‘| jk        ‘| jl        j        ‘| jm        ‘| jn        ‘| jo        ‘| jp        ‘| jq        ‘| jr        ‘| js        ‘| jt        ‘| ju        ‘| jv        ‘| jw        ‘| jx        ‘| jy        ‘| jz        ‘| j{        ‘| j|        ‘| j}        ‘| j~        ‘| j        ‘| j€        ‘| j�        ‘| j‚        ‘| jƒ        ‘| j„        ‘| j…        ‘| j†        ‘| j‡        ‘| jˆ        ‘| j‰        ‘| jŠ        ‘| j‹        ‘| jŒ        ‘| j�        jŽ        ‘| j�        j�        ‘| j�        j�        ‘| j�        j‘        ‘| j�        j’        ‘| j�        jN        ‘| j�        j“        ‘| j�        j”        ‘| j•        ‘| j–        ‘| j—        ‘| j˜        ‘| j™        ‘| jš        ‘| j›        ‘| jœ        ‘| j�        ‘| jž        ‘| jŸ        ‘| j         ‘| j¡        ‘| j¢        ‘| j£        ‘| j¤        ‘| j¥        ‘| j¦        ‘| j§        ‘| j¨        ‘| j¥        ‘| j©        ‘| jª        ‘| j«        ‘| j¬        ‘| j­        ‘| j®        ‘| j¯        ‘| j°        j        ‘| j±        ‘| j²        ‘| j³        ‘| j´        ‘| jµ        ‘| j¶        ‘| j·        ‘| j¸        j¹        ‘| j¸        ‘| jº        ‘| j»        ‘| j¼        ‘| j½        ‘| j¾        ‘| j¿        ‘| jÀ        ‘| jÁ        ‘| jÂ        ‘| jÃ        ‘| jÄ        ‘| jÅ        ‘| jÆ        ‘| jÇ        ‘| jÈ        jÉ        ‘| jÊ        ‘| jË        ‘| jÌ        j        ‘| jÌ        jÍ        ‘| jÎ        jÏ        ‘| jÎ        jN        ‘| jÎ        jÐ        ‘| jÑ        jÏ        ‘| jÑ        jÐ        ‘| jÒ        ‘| jÓ        j        ‘| jÓ        jN        ‘| jÔ        ‘| jÕ        ‘| jÖ        ‘| j×        ‘| jØ        ‘| jÙ        ‘| jÚ        ‘| jÛ        ‘| jÜ        jÝ        ‘| jÞ        ‘| jß        ‘| jà        ‘| já        ‘| jâ        ‘| jã        ‘| jä        ‘| jå        ‘| jæ        ‘| jç        ‘| jè        ‘| jé        ‘| jê        jÉ        ‘| jë        ‘| jì        ‘| jí        ‘| jî        ‘| jï        jN        ‘| jð        jN        ‘| jñ        ‘| jò        ‘| jó        ‘| jô        ‘| jõ        ‘| jö        ‘| j÷        ‘| jø        ‘| jù        ‘| jú        ‘¦  «        S rG   )ûr(   r-   r.   r   ÚaddcdivÚaddcdiv_ÚaddcmulÚaddcmul_ÚaddrÚaffine_grid_generatorÚ
alias_copyrR   ÚaminmaxÚaranger0   ÚstartÚavg_pool2d_backwardÚbaddbmmÚbinary_cross_entropyÚbinary_cross_entropy_backwardÚ binary_cross_entropy_with_logitsÚ
block_diagÚ	bernoulliÚpÚceluÚcelu_Úchannel_shuffleÚ	clamp_maxÚ	clamp_minÚcol2imÚcount_nonzeroÚlinalg_crossÚcudnn_batch_normÚcudnn_batch_norm_backwardÚmiopen_batch_norm_backwardÚdeg2radÚdeg2rad_ÚdetachÚ
diag_embedÚdiagonal_backwardÚdiagonal_copyÚdotÚvdotÚelu_Úelu_backwardÚ_embedding_bagÚembedding_dense_backwardÚ
empty_likeÚ_euclidean_distÚ	expand_asÚexpand_copyÚeyeÚfillÚfill_Úfloor_divideÚfracÚfrac_Ú_fused_moving_avg_obs_fq_helperÚgelu_Úgelu_backwardÚgluÚglu_backwardÚ
hardshrinkÚhardsigmoidÚhardsigmoid_Úhardsigmoid_backwardÚ	hardswishÚ
hardswish_Úhardswish_backwardÚ	hardtanh_Úhardtanh_backwardÚhann_windowÚ	heavisideÚ
heaviside_Ú
huber_lossÚhuber_loss_backwardÚim2colÚ	index_addrC   Ú
index_add_Ú
index_copyÚindex_copy_Ú
index_fillÚ
int_ScalarÚ
int_TensorÚint_Scalar_outÚint_Tensor_outÚindex_fill_ÚisinÚisneginfÚisposinfÚl1_lossÚ_lazy_cloneÚ_test_parallel_materializeÚleaky_relu_Úleaky_relu_backwardÚlerpÚlerp_ÚlinspaceÚ	logaddexpÚ
logaddexp2ÚlogitÚlogit_Úlogit_backwardÚlog_sigmoid_backwardÚlog_sigmoid_forwardÚ_log_softmax_backward_dataÚlogspaceÚ	logsumexpÚmasked_fillÚmasked_fill_Úmax_unpool2dÚmax_unpool3dÚmishÚmish_Úmish_backwardÚmse_lossÚmse_loss_backwardÚmulti_margin_lossÚmultilabel_margin_loss_forwardÚmvÚmvlgammaÚ	mvlgamma_ÚnansumÚ
nan_to_numÚnan_to_num_ÚnarrowÚnative_batch_norm_backwardÚnative_dropout_backwardÚnative_group_norm_backwardÚnative_layer_norm_backwardÚ_fused_rms_normÚ_fused_rms_norm_backwardÚ	new_emptyÚnew_fullÚnew_onesÚ	new_zerosÚnll_loss2d_forwardÚnll_loss2d_backwardÚnll_loss_backwardÚnll_loss_forwardÚnormÚScalarOpt_dtypeÚScalarÚScalarOpt_dim_dtypeÚScalarOpt_dimÚ	dtype_outÚScalarOpt_dtype_outÚ
Scalar_outÚonesÚ	ones_likeÚpixel_shuffleÚpixel_unshuffleÚ_prelu_kernelÚ_prelu_kernel_backwardÚ_reshape_aliasÚrad2degÚrad2deg_Úreflection_pad1dÚreflection_pad1d_backwardÚreflection_pad2dÚreflection_pad2d_backwardÚreflection_pad3dÚreflection_pad3d_backwardÚreplication_pad1dÚreplication_pad2dÚreplication_pad3dÚrenormÚrenorm_Ú	resize_asÚrollÚrot90Úrrelu_with_noiseÚrrelu_with_noise_ÚrsubÚ_safe_softmaxÚ+_scaled_dot_product_flash_attention_for_cpuÚselect_backwardÚselect_scatterÚsgnÚsgn_Úsigmoid_backwardÚsiluÚsilu_Úsilu_backwardÚ
grad_inputÚsincÚsinc_Úslice_backwardÚsmooth_l1_lossÚsmooth_l1_loss_backwardÚsoft_margin_lossÚsoft_margin_loss_backwardÚ_softmax_backward_dataÚsoftplusÚsoftplus_backwardÚ
softshrinkÚspecial_entrÚspecial_log_ndtrÚspecial_xlog1pyÚsplitÚTensorÚsplit_with_sizes_copyÚsqueeze_copyÚsqueezeÚdimÚstdÚ
correctionÚcorrection_outÚstd_meanÚstackÚsumr_   Út_copyÚtakeÚtanh_backwardÚ	thresholdÚ
threshold_Úthreshold_backwardÚtraceÚ	transposeÚintÚtranspose_copyÚtrilÚtril_ÚtriuÚtriu_ÚunbindÚunfold_backwardÚunfold_copyÚ_unsafe_indexÚ_unsafe_index_putÚ_unsafe_masked_indexÚ#_unsafe_masked_index_put_accumulateÚunsafe_splitÚunsafe_split_with_sizesÚunsqueeze_copyÚ_unsafe_viewÚupsample_linear1dÚupsample_bilinear2dÚupsample_trilinear3dÚupsample_nearest2d_backwardÚview_as_complexÚxlogyÚxlogy_ÚzeroÚzero_ÚzerosÚ
zeros_likeÚ
_chunk_catÚ_weight_norm_interface)r.   s    r1   Ú'_core_aten_decompositions_post_autogradr�  -  s?  € õ Œ9Œ>€DÝðx	
ØŒLðx	
àŒMðx	
ð ŒLðx	
ð ŒMð	x	
ð
 ŒIðx	
ð Ô&ðx	
ð ŒOðx	
ð ŒHðx	
ð ŒLðx	
ð ŒKÔðx	
ð ŒKÔðx	
ð Ô$ðx	
ð ŒLðx	
ð Ô%ðx	
ð Ô.ðx	
ð  Ô1ð!x	
ð" ŒOð#x	
ð$ ŒNÔð%x	
ð& ŒNÔ"ð'x	
ð( ŒIð)x	
ð* ŒJð+x	
ð, Ô ð-x	
ð. ŒNð/x	
ð0 ŒNð1x	
ð2 ŒKð3x	
ð4 Ôð5x	
ð6 Ôð7x	
ð8 Ô!ð9x	
ð: Ô*ð;x	
ð< Ô+ð=x	
ð> ŒLð?x	
ð@ ŒMðAx	
ðB ŒKðCx	
ðD ŒOðEx	
ðF Ô"ðGx	
ðH ÔðIx	
ðJ ŒHðKx	
ðL ŒIðMx	
ðN ŒIðOx	
ðP ÔðQx	
ðR ÔðSx	
ðT Ô)ðUx	
ðV ŒOðWx	
ðX Ô Ô(ðYx	
ðZ ŒNð[x	
ð\ Ôð]x	
ð^ ŒHð_x	
ð` ŒIðax	
ðb ŒJðcx	
ðd Ôðex	
ðf ŒIðgx	
ðh ŒJðix	
ðj Ô0ðkx	
ðl ŒJðmx	
ðn Ôðox	
ðp ŒHðqx	
ðr Ôðsx	
ðt ŒOðux	
ðv Ôðwx	
ðx Ôðyx	
ðz Ô%ð{x	
ð| ŒNð}x	
ð~ ŒOðx	
ð@ Ô#ðAx	
ðB ŒNðCx	
ðD Ô"ðEx	
ðF ÔðGx	
ðH ŒNðIx	
ðJ ŒOðKx	
ðL ŒOðMx	
ðN Ô$ðOx	
ðP ŒKðQx	
ðR ŒNÔðSx	
ðT ŒNÔ"ðUx	
ðV ŒOðWx	
ðX ŒOÔðYx	
ðZ ŒOÔ#ð[x	
ð\ Ôð]x	
ð^ ŒOÔ&ð_x	
ð` ŒOÔ&ðax	
ðb ŒOÔ*ðcx	
ðd ŒOÔ*ðex	
ðf Ôðgx	
ðh ŒIðix	
ðj ŒMðkx	
ðl ŒMðmx	
ðn ŒLðox	
ðp Ôðqx	
ðr Ô+ðsx	
ðt Ôðux	
ðv Ô$ðwx	
ðx ŒIðyx	
ðz ŒJð{x	
ð| ŒMð}x	
ð~ ŒNðx	
ð@ ŒOðAx	
ðB ŒJðCx	
ðD ŒKðEx	
ðF ÔðGx	
ðH Ô%ðIx	
ðJ Ô$ðKx	
ðL Ô+ðMx	
ðN ŒMðOx	
ðP ŒNÔ"ðQx	
ðR ÔðSx	
ðT ÔðUx	
ðV ÔðWx	
ðX ÔðYx	
ðZ ŒIð[x	
ð\ ŒJð]x	
ð^ Ôð_x	
ð` ŒMðax	
ðb Ô"ðcx	
ðd Ô"ðex	
ðf Ô/ðgx	
ðh ŒGðix	
ðj ŒMðkx	
ðl ŒNðmx	
ðn ŒKðox	
ðp ŒOðqx	
ðr Ôðsx	
ðt ŒKðux	
ðv Ô+ðwx	
ðx Ô(ðyx	
ðz Ô+ð{x	
ð| Ô+ð}x	
ð~ Ô ðx	
ð@ Ô)ðAx	
ðB ŒNðCx	
ðD ŒMðEx	
ðF ŒMðGx	
ðH ŒNðIx	
ðJ Ô#ðKx	
ðL Ô$ðMx	
ðN Ô"ðOx	
ðP Ô!ðQx	
ðR ŒIÔ%ðSx	
ðT ŒIÔðUx	
ðV ŒIÔ)ðWx	
ðX ŒIÔ#ðYx	
ðZ ŒIÔð[x	
ð\ ŒIŒMð]x	
ð^ ŒIÔ)ð_x	
ð` ŒIÔ ðax	
ðb ŒIðcx	
ðd ŒNðex	
ðf Ôðgx	
ðh Ô ðix	
ðj Ôðkx	
ðl Ô'ðmx	
ðn Ôðox	
ðp ŒLðqx	
ðr ŒMðsx	
ðt Ô!ðux	
ðv Ô*ðwx	
ðx Ô!ðyx	
ðz Ô*ð{x	
ð| Ô!ð}x	
ð~ Ô*ðx	
ð@ Ô"ðAx	
ðB Ô"ðCx	
ðD Ô"ðEx	
ðF ŒKðGx	
ðH ŒLðIx	
ðJ Ô"ðKx	
ðL ŒNðMx	
ðN ŒIðOx	
ðP ŒJðQx	
ðR Ô!ðSx	
ðT Ô"ðUx	
ðV ŒIðWx	
ðX ÔðYx	
ðZ Ô<ÔDð[x	
ð\ Ô ð]x	
ð^ Ôð_x	
ð` ŒHðax	
ðb ŒIðcx	
ðd Ô!ðex	
ðf ŒIðgx	
ðh ŒJðix	
ðj ÔÔ)ðkx	
ðl Ôðmx	
ðn ŒIðox	
ðp ŒJðqx	
ðr Ôðsx	
ðt Ôðux	
ðv Ô(ðwx	
ðx Ô!ðyx	
ðz Ô*ð{x	
ð| Ô'ð}x	
ð~ ŒMðx	
ð@ Ô"ðAx	
ðB ŒOðCx	
ðD ÔðEx	
ðF Ô!ðGx	
ðH Ô ðIx	
ðJ ŒJÔðKx	
ðL Ô&ðMx	
ðN ÔðOx	
ðP ŒLÔ ðQx	
ðR ŒLÔðSx	
ðT ŒHÔðUx	
ðV ŒHŒLðWx	
ðX ŒHÔ#ðYx	
ðZ ŒMÔ$ð[x	
ð\ ŒMÔ(ð]x	
ð^ ŒJð_x	
ð` ŒHÔðax	
ðb ŒHŒLðcx	
ðd ŒFðex	
ðf ŒKðgx	
ðh ŒIðix	
ðj Ôðkx	
ðl ŒNðmx	
ðn ŒOðox	
ðp Ô#ðqx	
ðr ŒJðsx	
ðt ŒNÔðux	
ðv Ôðwx	
ðx ŒIðyx	
ðz ŒJð{x	
ð| ŒIð}x	
ð~ ŒJðx	
ð@ ŒKðAx	
ðB Ô ðCx	
ðD ÔðEx	
ðF ÔðGx	
ðH Ô"ðIx	
ðJ Ô%ðKx	
ðL Ô4ðMx	
ðN ÔÔ$ðOx	
ðP Ô(ðQx	
ðR ÔðSx	
ðT ÔðUx	
ðV Ô"ðWx	
ðX Ô$Ô(ðYx	
ðZ Ô%Ô)ð[x	
ð\ Ô,ð]x	
ð^ Ô ð_x	
ð` ŒJðax	
ðb ŒKðcx	
ðd ŒIðex	
ðf ŒJðgx	
ðh ŒJðix	
ðj ŒOðkx	
ðl ŒOðmx	
ðn Ô'ðox	
ñzô zð zr2   rG   )r!   )r%   r   )9r\   rw   Úcollectionsr   Úcollections.abcr   r   Ú	functoolsr   r   r   Ú	itertoolsr	   r
   r   r   r   Útyping_extensionsr   Útorch.export.decomp_utilsr   r(   Útorch.libraryÚ
torch._opsr   r   r   r   Útorch._prims_commonr   Ú#torch._subclasses.functional_tensorr   Útorch.utilsr   r‰   Ú__all__r   r   Údictr    Ústrr)   rq   r   r   r   Úboolr   rA   r‚   r   r   r–   Útorch._decomp.decompositionsÚtorch._refsr   r�  rO   r2   r1   ú<module>r¡     sk  ðà €€€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ð ð <Ø;Ð;Ð;Ð;Ð;Ð;à €€€Ø Ð Ð Ð Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø @Ð @Ð @Ð @Ð @Ð @Ø )Ð )Ð )Ð )Ð )Ð )ðð ð €ð €WˆT�]„]€Ø€Yˆt�_„_€ð
 €K�ÑÔð ˜D  d¨5¬:Ô+BÀHÐ+LÔ&MÐ!MÔNð ð ñ ð 1°ÔAÐ Ø#=¸nÔ#MÐ  Ø'¨Ô/€
ð:¨E¬JÔ,Cð :Èð :ð :ð :ð :ð$'ð 'ð 'ð:Tð Tð Tðp ð/#Ø$3¸Eð/#ð /#ð /#àˆx˜˜B˜ÔÐ  (¨2¨r¨6Ô"2Ð2Ô3ð/#ð /#ð /#ð /#ðh  ð!ð !Ø�u”zÔ.Ð1AÑAÔBð!à
ð!ð 
ˆ%Œ*Ô
! 8Ð
+Ô,ð!ð !ð !ð !ðH)Ø˜œÔ0°(Ð:Ô;ð)à�zÐ$4Ñ4Ô5ð)ð 
ð)ð )ð )ð )ð& $Ð #Ð #Ð #Ø Ð Ð Ð ð$ð $ð $ð $ð~°Ø	„JÔ˜XÐ%ô2ð ~ð ~ð ~ð ~ð ~ð ~r2   