§
    Ì²Åj÷Ñ ã                  óF  — U d dl m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
 d dlmZmZ d dlmZ d dlmZmZmZmZmZ d dlZd dlmc mZ d dlmc mZ d dlmc mZ d dlmc mZ d dl m!Z! d dl"m#Z# d dl$m%Z% d d	l&m'Z' d d
l(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[ d dl\m]Z]m^Z^m_Z_m`Z` d dlambZb d dlcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZk d dllmmZmmnZn erd dlompZp  ed¦  «        Zq G d„ den¦  «        Zr e	dddg¦  «        Zsi atdeud<   i avdeud<   dÀd&„Zw	 	 	 dÁdÂd3„ZxdÃdÄd4„Zyejz        dÅd5„¦   «         Z{	 dÆd(dd6œdÇd:„Z|dÈd>„Z}dÉd@„Z~dÊdD„ZdËdJ„Z€dÌdL„Z�dÍdN„Z‚dÎdS„ZƒdÏdT„Z„dÐdU„Z…dÐdV„Z† edW¬X¦  «         G dY„ dZ¦  «        ¦   «         Z‡ edW¬X¦  «         G d[„ d\¦  «        ¦   «         Zˆ edW¬X¦  «         G d]„ d^¦  «        ¦   «         Z‰ edW¬X¦  «         G d_„ d`¦  «        ¦   «         ZŠ edW¬X¦  «         G da„ db¦  «        ¦   «         Z‹e3dÑdc„¦   «         ZŒdÒdf„Z�dÓdi„ZŽ edW¬X¦  «         G dj„ dk¦  «        ¦   «         Z�dÔdm„Z�dÕdn„Z‘dÖdq„Z’d×dt„Z“dØdv„Z”dÙd~„Z•dÚd�„Z–e3dÛd‚„¦   «         Z—dÜdƒ„Z˜e4dÝd…„¦   «         Z™dÞd‰„Zšdßd‹„Z›dàd�„Zœe!j�        dŽœdád“„Zždâd•„ZŸe!j�        dŽœdãd–„Z däd™„Z¡dådŸ„Z¢dæd „Z£dçd£„Z¤dèd¬„Z¥déd®„Z¦dêd±„Z§dëdº„Z¨dìd»„Z©díd½„Zªdîd¾„Z«e¬d¿k    r e«¦   «          dS dS )ïé    )ÚannotationsN)ÚdefaultdictÚ
namedtupleÚOrderedDict)Ú	dataclassÚfield)ÚPath)ÚAnyÚCallableÚLiteralÚTYPE_CHECKINGÚTypeVar)Úinductor_fallback_ops)Úcpp)Ú	translate)ÚBindingÚCppSignatureÚCppSignatureGroupÚDispatcherSignatureÚ
NamedCTypeÚNativeSignatureÚSpecialArgName)Úmethod_with_native_functionÚnative_function_managerÚwith_native_functionÚ with_native_function_and_indices)Úgen_aoti_c_shimÚ*gen_static_dispatch_backend_call_signatureÚget_fallback_op_nameÚget_header_for_aoti)Ú gen_functionalization_definitionÚ"gen_functionalization_registrationÚ.gen_functionalization_view_inverse_declarationÚGenCompositeViewCopyKernel©Úgen_all_vmap_plumbing)ÚArgumentÚBackendIndexÚBackendMetadataÚBaseOperatorNameÚDEFAULT_KERNEL_NAMESPACEÚdispatch_device_mapÚDispatchKeyÚFRAGMENT_NAMESPACESÚFunctionSchemaÚis_cuda_dispatch_keyÚis_generic_dispatch_keyÚis_ufunc_dispatch_keyÚis_xpu_dispatch_keyÚLocationÚNativeFunctionÚNativeFunctionsGroupÚNativeFunctionsViewGroupÚOperatorNameÚOptionalTypeÚ
SchemaKindÚSelfArgumentÚSTRUCTURED_DISPATCH_KEYSÚTensorOptionsArgumentsÚTypeÚVariantÚViewSchemaKind)Úadd_generated_native_functionsÚgen_composite_functional_kernelÚgen_composite_out_kernelÚpre_group_native_functions)ÚSelectiveBuilder)Úassert_neverÚ	concatMapÚcontextÚFileManagerÚmake_file_managerÚmapMaybeÚNamespaceHelperÚTarget)Ú
YamlDumperÚ
YamlLoader)ÚSequenceÚTc                  ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )Ú
LineLoaderFc                ór   •— t          ¦   «                              ||¬¦  «        }|j        j        dz   |d<   |S )N)Údeepé   Ú__line__)ÚsuperÚconstruct_mappingÚ
start_markÚline)ÚselfÚnoderU   ÚmappingÚ	__class__s       €ú=C:\Projects\Historical\venv\Lib\site-packages\torchgen/gen.pyrY   zLineLoader.construct_mapping‰   s8   ø€ Ý‘'”'×+Ò+¨D°tÐ+Ñ<Ô<ˆà"œoÔ2°QÑ6ˆ�
ÑØˆó    )F)Ú__name__Ú
__module__Ú__qualname__rY   Ú__classcell__)r_   s   @r`   rS   rS   ˆ   s=   ø€ € € € € ðð ð ð ð ð ð ð ð ð ra   rS   Ú
ParsedYamlÚnative_functionsÚbackend_indiceszdict[str, ParsedYaml]Ú_GLOBAL_PARSE_NATIVE_YAML_CACHEzdict[str, set[str]]Ú_GLOBAL_PARSE_TAGS_YAML_CACHEÚdispatch_keyr-   Ú
device_fmsúdict[str, FileManager]Ú
default_fmrI   Úreturnc                óŠ   ‡ — |                      t          ˆ fd„t          j        ¦   «         D ¦   «         d¦  «        |¦  «        }|S )Nc              3  ó8   •K  — | ]\  }} |‰¦  «        ¯|V — Œd S ©N© )Ú.0ÚcheckÚdevicerk   s      €r`   ú	<genexpr>z1file_manager_from_dispatch_key.<locals>.<genexpr>Ÿ   sK   øè è € ð ð á!�E˜6Ø�5˜Ñ&Ô&ðØðð ð ð ð ð ra   Ú )ÚgetÚnextr,   Úitems)rk   rl   rn   Úfms   `   r`   Úfile_manager_from_dispatch_keyr}   ˜   se   ø€ ð
 
�ŠÝðð ð ð å%8Ô%>Ñ%@Ô%@ðñ ô ð
 ñ	
ô 	
ð 	ñ

ô 

€Bð €Ira   ú<stdin>FÚesÚobjectÚ
valid_tagsúset[str]Úignore_keysúset[DispatchKey] | NoneÚpathÚstrÚskip_native_fns_genÚboolc           	     ó„  ‡‡— t          | t          ¦  «        sJ ‚g }t          t          ¦  «        }| D �] }t          |t          ¦  «        sJ d|› �¦   «         ‚t          |                     d¦  «        t
          ¦  «        s
J |¦   «         ‚t          ||d         ¦  «        Š|                     d¦  «        Š‰€J d|› �¦   «         ‚t          ˆˆfd„¦  «        5  t          j	        |‰||¦  «        \  }}	| 
                    |¦  «         t          j        ||	¦  «         d d d ¦  «         n# 1 swxY w Y   �Œt          |¦  «         t          d„ ¦  «        }
|st          ||¦  «         |                     ¦   «         D ]8\  }}t          |ddt!          |¦  «        pt#          |¦  «        |¬	¦  «        |
|<   Œ9t%          ||
¦  «        S )
Nzexpected to be dict: rW   Úfunczmissed 'func' in c                 ó   •— d‰› d‰ › �S ©Nzin z:
  rs   )ÚfuncsÚlocs   €€r`   ú<lambda>z*parse_native_yaml_struct.<locals>.<lambda>»   s   ø€ Ð4 3Ð4Ð4¨UÐ4Ð4€ ra   c                 ó>   — t          t          j        dddi ¬¦  «        S )NTF©rk   Úuse_out_as_primaryÚexternalÚdevice_guardÚindex)r(   r-   Ú	Undefinedrs   ra   r`   r�   z*parse_native_yaml_struct.<locals>.<lambda>Â   s)   € •Ý$Ô.Ø#ØØð ð
ñ 
ô 
€ ra   TFr‘   )Ú
isinstanceÚlistr   Údictry   Úintr4   rH   r5   Ú	from_yamlÚappendr(   Ú
grow_indexÚerror_check_native_functionsrA   r{   r0   r3   rf   )r   r�   rƒ   r…   r‡   ÚrsÚbsÚerŠ   ÚmÚindicesÚkÚvr�   rŽ   s                @@r`   Úparse_native_yaml_structr¦   «   s)  øø€ õ �b�$ÑÔÐÐÐØ!€BÝALÍTÑARÔAR€BØð 	+ñ 	+ˆÝ˜!�TÑ"Ô"Ð?Ð?Ð$?¸AÐ$?Ð$?Ñ?Ô?Ð"Ý˜!Ÿ%š% 
Ñ+Ô+­SÑ1Ô1Ð4Ð4°1Ñ4Ô4Ð1Ý�t˜Q˜zœ]Ñ+Ô+ˆØ—’�f‘”ˆØÐ Ð Ð"9°aÐ"9Ð"9Ñ Ô Ð ÝÐ4Ð4Ð4Ð4Ð4Ñ5Ô5ð 	+ð 	+Ý$Ô.¨q°#°zÀ;ÑOÔO‰GˆD�!Ø�IŠI�d‰OŒOˆOÝÔ# B¨Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ùõ ! Ñ$Ô$Ð$å/:ð	
ð 	
ñ
0ô 
0€Gð ð /Ý& r¨2Ñ.Ô.Ð.Ø—’‘
”
ð 	
ð 	
‰ˆˆ1å!ØØ#Øå-¨aÑ0Ô0ÐJÕ4GÈÑ4JÔ4JØð
ñ 
ô 
ˆ�‰
ˆ
õ �b˜'Ñ"Ô"Ð"s   ÃAD'Ä'D+	Ä.D+	c                ó&  ‡‡— t          | t          ¦  «        sJ ‚t          ¦   «         }| D ]æ}t          |                     d¦  «        t          ¦  «        s
J |¦   «         ‚t          ||d         ¦  «        Š|                     d¦  «        Št          ˆˆfd„¦  «        5  |                     ¦   «         }|                     d¦  «        }|                     dd¦  «        }|dk    sJ ‚| 	                    |¦  «         d d d ¦  «         n# 1 swxY w Y   Œç|S )NrW   Útagc                 ó   •— d‰ › d‰› �S rŒ   rs   )rŽ   Útagss   €€r`   r�   z(parse_tags_yaml_struct.<locals>.<lambda>â   s   ø€ Ð3 3Ð3Ð3¨TÐ3Ð3€ ra   Údescrx   )
r—   r˜   Úsetry   rš   r4   rH   ÚcopyÚpopÚadd)	r   r…   rŸ   r¡   Úe_iÚnamer«   rŽ   rª   s	          @@r`   Úparse_tags_yaml_structr²   Û   sA  øø€ Ý�b�$ÑÔÐÐÐÝ‘5”5€BØð 
ð 
ˆÝ˜!Ÿ%š% 
Ñ+Ô+­SÑ1Ô1Ð4Ð4°1Ñ4Ô4Ð1Ý�t˜Q˜zœ]Ñ+Ô+ˆØ�uŠu�U‰|Œ|ˆÝÐ3Ð3Ð3Ð3Ð3Ñ4Ô4ð 	ð 	Ø—&’&‘(”(ˆCØ—7’7˜5‘>”>ˆDØ—7’7˜6 2Ñ&Ô&ˆDà˜2’:�:�:�:Ø�FŠF�4‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øð €Is   ÂADÄD		ÄD		c                óä   — | t           vr[t          | ¦  «        5 }t          j        |t          ¬¦  «        }t          || ¬¦  «        t           | <   d d d ¦  «         n# 1 swxY w Y   t           |          S )N©ÚLoader)r…   )rj   ÚopenÚyamlÚloadrS   r²   )r…   Úfr   s      r`   Úparse_tags_yamlrº   ì   s¸   € ð Õ0Ð0Ð0Ý�$‰ZŒZð 	X˜1Ý”˜1¥ZÐ0Ñ0Ô0ˆBÝ2HÈÐRVÐ2WÑ2WÔ2WÕ)¨$Ñ/ð	Xð 	Xð 	Xñ 	Xô 	Xð 	Xð 	Xð 	Xð 	Xð 	Xð 	Xøøøð 	Xð 	Xð 	Xð 	Xõ )¨Ô.Ð.s   ™5AÁAÁ!A)r‡   Úloaded_yamlÚtags_yaml_pathr»   úobject | Nonec               ó  — | t           vrrt          |¦  «        }|€Ct          | ¦  «        5 }t          j        |t
          ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   n|}t          |||| |¬¦  «        t           | <   t           |          S )Nr´   )r…   r‡   )ri   rº   r¶   r·   r¸   rS   r¦   )r…   r¼   rƒ   r‡   r»   r�   r¹   r   s           r`   Úparse_native_yamlr¿   ÷   sÕ   € ð Õ2Ð2Ð2Ý$ ^Ñ4Ô4ˆ
ð ÐÝ�d‘”ð 5˜qÝ”Y˜q­Ð4Ñ4Ô4�ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5øð ˆBå0HØØØØØ 3ð1
ñ 1
ô 1
Õ'¨Ñ-õ +¨4Ô0Ð0s   ªAÁAÁAr�   úSequence[NativeFunction]ÚNonec           	     ór  — i }t          t          ¦  «        }| D ];}|||j        j        <   ||j        j        j                                      |¦  «         Œ<| D �]Þ}|j        �q|                     |j        ¦  «        }|€'J |j        j        › d|j        › d|j        › d�¦   «         ‚|j        s'J |j        j        › d|j        › d|j        › d�¦   «         ‚t          t          j
        ¦  «        }h d£}|j        j        j        D ]R}|j        |v rGt          |j        j        ¦  «        |j        f|vr%t          d|j        › d|j        j        › d�¦  «        ‚ŒSd	|j        v rÙt          |j        j        ¦  «        d
k    r¼t          |j        j        ¦  «        dk    rŸt          |j        j        j        ¦  «        dk    r}|j        j        j        }|j        sJ |j        j        › d�¦   «         ‚t#          |j        d|j        ¦  «        }	t)          ||	         ¦  «        dk    sJ |j        j        › d|› d�¦   «         ‚�Œàd S )Nz0 is marked as a structured_delegate pointing to z, but z is missing.zY is not marked as structured. Consider adding 'structured=True' to the delegated operator>   ©zrandom_.fromÚfrom©Úuniform_rÄ   ©Ú!_has_compatible_shallow_copy_typerÄ   zArgument name 'z' in function 'z' is a reserved Python keyword.Úinplace_viewÚresize_Ú
resize_as_Úset_z¢ is marked with tag: inplace_view, but it doesn't follow the naming convention for inplace ops - the codegen expects the base name to have a trailing underscore. Fr   zw is marked with tag: inplace_view. The codegen expects there to be a corresponding out-of-place view op with the name 'z/' and matching schema, but it didn't find one. )r   r˜   rŠ   r±   rœ   Ústructured_delegatery   Ú
structuredr¬   ÚkeywordÚkwlistÚ	argumentsÚflat_allr†   ÚAssertionErrorrª   Úinplacer*   ÚbaseÚdunder_methodÚlen)
r�   Úfunc_mapÚbase_func_mapr¹   Údelegate_funcÚPYTHON_RESERVED_KEYWORDSÚEXCLUSION_LISTÚargÚ	base_nameÚout_of_place_base_names
             r`   rž   rž     sÙ  € Ø35€HÝBMÍdÑBSÔBS€MØð 2ð 2ˆØ !ˆ�””ÑØ�a”f”kÔ&Ô'×.Ò.¨qÑ1Ô1Ð1Ð1Øð 3ñ 3ˆØÔ Ð,Ø$ŸLšL¨Ô)>Ñ?Ô?ˆMØ Ð,Ð,Ø”6”;ð Tð TØÔ(ðTð TØ01Ô0EðTð Tð Tñ -Ô,Ð,ð !Ô+ð ð Ø”6”;ð Oð OØÔ(ðOð OØ01Ô0EðOð Oð Oñô Ð+õ $'¥w¤~Ñ#6Ô#6Ð ð
ð 
ð 
ˆð ”6Ô#Ô,ð 	ð 	ˆCØŒxÐ3Ð3Ð3Ý˜œœÑ$Ô$ c¤hÐ/°~ÐEÐEÝ(Øo¨#¬(ÐoÐoÀ1Ä6Ä;ÐoÐoÐoñô ð øð ˜aœfÐ$Ð$Ý�A”F”KÑ Ô  IÒ-Ð-Ý�A”F”KÑ Ô  LÒ0Ð0Ý�A”F”KÔ$Ñ%Ô%¨Ò/Ð/àœœÔ(ˆIØÔ$ð ð Ø”6”;ð qð qð qñô Ð$õ &6Ø”  yÔ'>ñ&ô &Ð"õ �}Ð%;Ô<Ñ=Ô=ÀÒAÐAÐAØ”6”;ð rð rØ7@ðrð rð rñ BÔAÐAùða3ð 3ra   Úsc                ón  — |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } |                       d	d
¦  «        } |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } d| › d�S )z1Convert a python string into a c++ string literalú\z\\ú"z\"úz\aúz\búz\fú
z\núz\vú	z\t)Úreplace©rà   s    r`   Ú
cpp_stringrì   S  s§   € à	�	Š	�$˜ÑÔ€AØ	�	Š	�#�uÑÔ€AØ	�	Š	�$˜ÑÔ€AØ	�	Š	�$˜ÑÔ€AØ	�	Š	�$˜ÑÔ€AØ	�	Š	�$˜ÑÔ€AØ	�	Š	�$˜ÑÔ€AØ	�	Š	�$˜ÑÔ€AØˆqˆ8ˆ8ˆ8€Ora   Úbackendsúlist[BackendIndex]úlist[DispatchKey]c                ó¢   — t          | ¦  «        dk    rg S d„ | D ¦   «         t          j        t          j        t          j        t          j        gz   S )Nr   c                ó   — g | ]	}|j         ‘Œ
S rs   )rk   )rt   Úbackends     r`   ú
<listcomp>z(static_dispatch_keys.<locals>.<listcomp>q  s   € Ð=Ð=Ð=¨�Ô$Ð=Ð=Ð=ra   )r×   r-   ÚCompositeImplicitAutogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeExplicitAutogradÚ&CompositeExplicitAutogradNonFunctional©rí   s    r`   Ústatic_dispatch_keysrù   m  sQ   € Ý
ˆ8�}„}˜ÒÐØˆ	à=Ð=°HÐ=Ñ=Ô=ÝÔ1ÝÔ=ÝÔ1ÝÔ>ð	A
ñ 
ð 	
ra   r¹   r5   Úbackend_indexr(   úDispatchKey | Nonec                óä   — | j         €|                     | ¦  «        r|j        S | j        rt          j        S | j        rt          j        S | j        rt          j	        S | j
        rt          j        S d S rr   )rÍ   Ú
has_kernelrk   Ú&has_composite_explicit_autograd_kernelr-   rö   Ú5has_composite_explicit_autograd_non_functional_kernelr÷   Ú&has_composite_implicit_autograd_kernelrô   Ú4has_composite_implicit_autograd_nested_tensor_kernelrõ   )r¹   rú   s     r`   Úget_static_dispatch_backendr  y  s„   € ð 	ÔÐ(¨M×,DÒ,DÀQÑ,GÔ,GÐ(ð
 Ô)Ð)Ø	
Ô	1ð AÝÔ4Ð4Ø	
Ô	@ð AÝÔAÐAØ	
Ô	1ð AÝÔ4Ð4Ø	
Ô	?ð AÝÔ@Ð@Øˆ4ra   ú
str | Nonec                óÚ   — |�| j         rd S g }|D ]G}t          | |¦  «        }|�3|                     d| j        › d|                     ¦   «         › d�¦  «         ŒHd                     |¦  «        S )Nú#include <ATen/ops/Ú_ú_dispatch.h>rç   )Úmanual_kernel_registrationr  rœ   Ú	root_nameÚlowerÚjoin)r¹   rú   Úoutputr•   rk   s        r`   Ústatic_dispatch_ops_headerr  �  s�   € ð Ð Ô <ÐØˆtà€FØð ð ˆÝ2°1°eÑ<Ô<ˆØÐ#Ø�MŠMØV a¤kÐVÐV°L×4FÒ4FÑ4HÔ4HÐVÐVÐVñô ð øð �9Š9�VÑÔÐra   ú	list[str]c                ó4   — d„ t          | ¦  «        D ¦   «         S )Nc                ó   — g | ]}d |› d�‘Œ	S )ú#include <ATen/úFunctions.h>rs   )rt   rk   s     r`   ró   z1static_dispatch_extra_headers.<locals>.<listcomp>ž  s3   € ð ð ð àð 	5˜,Ð4Ð4Ð4ðð ð ra   )rù   rø   s    r`   Ústatic_dispatch_extra_headersr  �  s+   € ðð å0°Ñ:Ô:ðñ ô ð ra   Úsigú"CppSignature | DispatcherSignatureÚcpp_sigr   c                óD  — dd„}t          |                      ¦   «         ¦  «        }t          |                     ¦   «         ¦  «        }|D ])}|j        j        t          j        k    r ||¦  «        } nŒ*t          ||¦  «        }d                     d„ |D ¦   «         ¦  «        S )NÚinput_bindingsúlist[Binding]ro   c                ó  — g }| D ]|}|j         dk    rZt          t          t          j        |j        j        ¦  «        |j         |j        |j        ¬¦  «        }| 	                    |¦  «         Œg| 	                    |¦  «         Œ}|S )NÚmemory_format)Únctyper±   ÚdefaultÚargument)
r±   r   r   r   Ú possibly_redundant_memory_formatr  Útyper  r  rœ   )r  Úoutput_bindingsÚbindingÚspl_mem_format_bindings       r`   Úadd_spl_memory_format_bindingz5translate_args.<locals>.add_spl_memory_format_binding¬  sœ   € Ø)+ˆØ%ð 	0ð 	0ˆGØŒ|˜Ò.Ð.Ý)0Ý%Ý&ÔGØœÔ+ñô ð !œØ#œOØ$Ô-ð*ñ *ô *Ð&ð  ×&Ò&Ð'=Ñ>Ô>Ð>Ð>à×&Ò& wÑ/Ô/Ð/Ð/ØÐra   ú, c              3  ó$   K  — | ]}|j         V — Œd S rr   ©Úexpr©rt   Úas     r`   rw   z!translate_args.<locals>.<genexpr>Ç  s$   è è € Ð+Ð+ �Q”VÐ+Ð+Ð+Ð+Ð+Ð+ra   )r  r  ro   r  )r˜   rÑ   r  r±   r   r  r   r  )r  r  r$  Úsrc_bindingsÚgoal_bindingsrÝ   Úexprss          r`   Útranslate_argsr.  §  s¶   € ð
ð ð ð õ$ ˜Ÿš™œÑ(Ô(€LÝ˜×*Ò*Ñ,Ô,Ñ-Ô-€Mð ð ð ˆØŒ:Œ?�nÔMÒMÐMØ8Ð8¸ÑFÔFˆLØˆEð Nõ �l MÑ2Ô2€EØ�9Š9Ð+Ð+ UÐ+Ñ+Ô+Ñ+Ô+Ð+ra   c           	     ó:  — t          | |¦  «        }|                     ¦   «         }t          | |¦  «        }|                     |¦  «        }|r|j        r|j        nt
          }|                     dd¦  «        }d|› d|j                             ¦   «         › d|› d|› d�	S )Nú::nativerx   úreturn ú::ú(ú);)	r   r±   r.  Ú
get_kernelÚcpp_namespacer+   rê   rk   r
  )	r  r¹   rú   r  r±   r-  Úbackend_metadataÚ	kernel_nsÚnss	            r`   Ú%generate_static_dispatch_backend_callr:  Ê  s¸   € õ
 9¸¸aÑ@Ô@€GØ�<Š<‰>Œ>€DÝ˜3 Ñ(Ô(€EØ$×/Ò/°Ñ2Ô2Ðð ð	&Ø 0Ô >ð	&ÐÔ&Ð&å%ð ð
 
×	Ò	˜: rÑ	*Ô	*€BØQ�RÐQÐQ˜=Ô5×;Ò;Ñ=Ô=ÐQÐQÀÐQÐQÈÐQÐQÐQÐQra   c           	     óä  — t          j        |dd¬¦  «        }| j        r!|j                             ¦   «         r|j        }n|j        }|€J ‚|                     ¦   «         }t          | |¦  «        }t          j
        dd¦  «        }|j        r+d|› dt          j                             ¦   «         › d|› d|› d�	S |j        r+d|› dt          j                             ¦   «         › d|› d|› d�	S |j        r+d|› dt          j                             ¦   «         › d|› d|› d�	S |j        r+d|› dt          j                             ¦   «         › d|› d|› d�	S d	|› d
d                     d„ |D ¦   «         ¦  «        › d�S )NF©ÚmethodÚfallback_bindingr0  rx   r1  r2  r3  r4  z5TORCH_CHECK(false, "Static dispatch does not support z forr%  c                ó6   — g | ]}t          |j        ¦  «        ‘ŒS rs   )r†   rk   )rt   r•   s     r`   ró   z:generate_static_dispatch_fallback_call.<locals>.<listcomp>ö  s#   € Ð@Ð@Ð@ u�C�Ô"Ñ#Ô#Ð@Ð@Ð@ra   z ");)r   Úfrom_native_functionÚsymintrŠ   Ú
has_symintÚsymint_signatureÚ	signaturer±   r.  r+   rê   rþ   r-   rö   r
  rÿ   r÷   r   rô   r  rõ   r  )r  r¹   rh   Úcpp_sigsr  r±   r-  r9  s           r`   Ú&generate_static_dispatch_fallback_callrF  Ü  sñ  € õ
 !Ô5Ø	�%¨%ðñ ô €Hð „zð %�a”f×'Ò'Ñ)Ô)ð %ØÔ+ˆˆàÔ$ˆØÐÐÐØ�<Š<‰>Œ>€DÝ˜3 Ñ(Ô(€EÝ	!Ô	)¨*°bÑ	9Ô	9€BØÔ/ð 
JØ`˜Ð`Ð`�{ÔD×JÒJÑLÔLÐ`Ð`ÐPTÐ`Ð`ÐW\Ð`Ð`Ð`Ð`Ø	
Ô	@ð JØm˜ÐmÐm�{ÔQ×WÒWÑYÔYÐmÐmÐ]aÐmÐmÐdiÐmÐmÐmÐmØ	
Ô	1ð JØ`˜Ð`Ð`�{ÔD×JÒJÑLÔLÐ`Ð`ÐPTÐ`Ð`ÐW\Ð`Ð`Ð`Ð`Ø	
Ô	?ð JØl˜ÐlÐl�{ÔP×VÒVÑXÔXÐlÐlÐ\`ÐlÐlÐchÐlÐlÐlÐlðJÈð Jð JØ‡‚Ð@Ð@°Ð@Ñ@Ô@ÑAÔAðJð Jð Jð 	Jra   c           	     ó–  ‡— t          |¦  «        dk    s‰j        rdS ˆfd„|D ¦   «         }t          |¦  «        dk    rt          | ‰|d         ¦  «        S t          |¦  «        dk    rt          | ‰|¦  «        S d„ |                      ¦   «         D ¦   «         }d                     |¦  «        }‰j        j        j        }g }g }|�|                     d¦  «         |dk    r|                     d	|› d
�¦  «         |                     dd                     |¦  «        › d�¦  «         |                     d¦  «         g }	|D ]H}
|	                     d|
j	        › d�¦  «         |	                     dt          | ‰|
¦  «        › d�¦  «         ŒIt          | ‰|¦  «        }d}d|                     |¦  «        › d|                     |	¦  «        › d|› d�S )a  
    For a given `NativeFunction`, find out the corresponding backend and dispatch to it. If more than one
    backends exsit, fallback to static dispatch by determining dispatch key from inputs.
    Arguments:
        sig: A CppSignature or DispatcherSignature for this native function we want to use.
        f: NativeFunction to generate static dispatch.
        backend_indices: All available backends.
    Return:
        C++ code to call backend-specific functions, e.g., "return at::cpu::add(self, other, scale);"
    r   rx   c                óh   •— g | ].}|                      ‰¦  «        s‰j        �|j        t          v ¯,|‘Œ/S rr   )rý   rÍ   rk   r<   )rt   Úbr¹   s     €r`   ró   z#static_dispatch.<locals>.<listcomp>  sP   ø€ ð ð ð àØ�<Š<˜‰?Œ?ðð
 Ô!Ð-Ø”Õ":Ð:Ð:ð 	
ð
 ;Ð:Ð:ra   rV   c                óÀ   — g | ][}t          |j        t          ¦  «        s8t          |j        t          ¦  «        ¯6|j        j                             ¦   «         ¯T|j        ‘Œ\S rs   )r—   r  r;   r'   r   Úis_tensor_liker±   r)  s     r`   ró   z#static_dispatch.<locals>.<listcomp>  sl   € ð ð ð àÝ�a”j¥,Ñ/Ô/ðõ �a”j¥(Ñ+Ô+ð	ð
 ŒJŒO×*Ò*Ñ,Ô,ðØ	Œðð ð ra   r%  Nz>DispatchKeySet(c10::computeDispatchKey(dtype, layout, device))z$c10::detail::multi_dispatch_key_set(ú)zDispatchKeySet _dk_set = z | ú;z=DispatchKey _dk = c10::highestPriorityBackendTypeId(_dk_set);zcase DispatchKey::ú:ré   z
		ú
    z
    switch (_dk) {
        z
        default:
            z
    }
    )
r×   r  r:  rF  rÑ   r  rŠ   Útensor_optionsrœ   rk   )r  r¹   rh   ÚkeysÚnative_tensor_argsÚtensor_argsÚtensor_optsÚstmtsÚsubexprsÚdispatch_coder•   ÚfallbackÚ	connectors    `           r`   Ústatic_dispatchrZ  ù  sG  ø€ õ ˆ?ÑÔ˜qÒ Ð  AÔ$@Ð Øˆrðð ð ð à ðñ ô €Dõ ˆ4�y„y�A‚~€~Ý4°S¸!¸TÀ!¼WÑEÔEÐEÝ	ˆT‰Œ�aŠˆÝ5°c¸1¸oÑNÔNÐNðð à—’‘”ðñ ô Ðð —)’)Ð.Ñ/Ô/€KØ”&Ô"Ô1€Kà€EØ€HØÐØ�ŠØLñ	
ô 	
ð 	
ð �bÒÐØ�ŠÐM¸{ÐMÐMÐMÑNÔNÐNØ	‡L‚LÐH¨u¯zªz¸(Ñ/CÔ/CÐHÐHÐHÑIÔIÐIØ	‡L‚LÐPÑQÔQÐQà€MØð 
ð 
ˆØ×ÒÐK°EÔ4FÐKÐKÐKÑLÔLÐLØ×ÒØLÕ8¸¸aÀÑGÔGÐLÐLÐLñ	
ô 	
ð 	
ð 	
õ 6°c¸1¸oÑNÔN€HØ€IðØ‡^‚^�EÑÔðð ð 
�Š˜Ñ	&Ô	&ðð ð
 ðð ð ð ra   T)Úfrozenc                  óT   — e Zd ZU ded<    ee¬¦  «        Zded<   edd
„¦   «         ZdS )ÚRegisterSchemarE   Úselector)Údefault_factoryzdict[str, int]Ú
known_tagsr¹   r5   ro   r  c                óÌ  — | j                              |¦  «        sd S dd                     d„ t          |j        ¦  «        D ¦   «         ¦  «        z   dz   }|dk    r%dt          t          |j        ¦  «        ¦  «        › d�S d}|| j        vr't          | j        ¦  «        }|| j        |<   d	|› d
|› d�}|› dt          t          |j        ¦  «        ¦  «        › d| j        |         › d�S )NÚ{r%  c              3  ó    K  — | ]	}d |› �V — Œ
dS )z	at::Tag::Nrs   )rt   r¨   s     r`   rw   z*RegisterSchema.__call__.<locals>.<genexpr>N  s+   è è € ÐKÐK°SÐ0¨3Ð0Ð0ÐKÐKÐKÐKÐKÐKra   Ú}z{}zm.def(z, {});
rx   z const std::vector<at::Tag> tags_z = ú;
z, tags_z);
)
r^  Úis_native_function_selectedr  Úsortedrª   rì   r†   rŠ   r`  r×   )r\   r¹   rª   Ú
maybe_tagsÚidxs        r`   Ú__call__zRegisterSchema.__call__J  s÷   € àŒ}×8Ò8¸Ñ;Ô;ð 	Ø�4Ø�T—Y’YÐKÐK½FÀ1Ä6¹N¼NÐKÑKÔKÑKÔKÑKÈcÑQˆØ�4Š<ˆ<Ø?�J¥s¨1¬6¡{¤{Ñ3Ô3Ð?Ð?Ð?Ð?Øˆ
Ø�t”Ð&Ð&Ý�d”oÑ&Ô&ˆCØ$'ˆDŒO˜DÑ!ØM¸CÐMÐMÀDÐMÐMÐMˆJØÐ_Ð_¥J­s°1´6©{¬{Ñ$;Ô$;Ð_Ð_ÀDÄOÐTXÔDYÐ_Ð_Ð_Ð_ra   N©r¹   r5   ro   r  )	rb   rc   rd   Ú__annotations__r   r™   r`  r   rj  rs   ra   r`   r]  r]  E  se   € € € € € € àÐÐÑØ!& °tÐ!<Ñ!<Ô!<€JÐ<Ð<Ð<Ñ<à ð`ð `ð `ñ !Ô ð`ð `ð `ra   r]  c                  ó<   — e Zd ZU ded<   ded<   edd	„¦   «         Zd
S )ÚComputeOperatorsú.Literal[Target.DECLARATION, Target.DEFINITION]Útargetrî   Ústatic_dispatch_backend_indicesr¹   r5   ro   r†   c                ó  — t          j        |j        ¦  «        }|j        j                             ¦   «         }| j        t          j        u r‘d|› d|                     ¦   «         › d|j        j        j        › d|j        j        j	        › dt          t          |j        ¦  «        ¦  «        › d|                     dd¬	¦  «        › d|                     d
d¬	¦  «        › d�S | j        t          j        u rýd|j        › d|› d|› d|› d|› d|› d�}dD ]Þ}|r8d                     dgd„ |                     ¦   «         D ¦   «         z   ¦  «        }d
}n3d                     d„ |                     ¦   «         D ¦   «         ¦  «        }d}|}|› d|› �}	d|› d|› d|› d�}
|s/t!          | j        ¦  «        dk    rt%          ||| j        ¬¦  «        }
|d|j        › d |                     |	|¬	¦  «        › d!|
› d"�z  }Œß|S t'          | j        ¦  «         d S )#Nz
struct TORCH_API z {
  using schema = z�;
  using ptr_schema = schema*;
  // See Note [static constexpr char* members for windows NVCC]
  static constexpr const char* name = "aten::z3";
  static constexpr const char* overload_name = "z/";
  static constexpr const char* schema_str = z;
  static ÚcallF)r±   Úis_redispatching_fnÚ
redispatchTz;
};ú

// aten::z.
static C10_NOINLINE c10::TypedOperatorHandle<z::schema> create_zQ_typed_handle() {
  return c10::Dispatcher::singleton()
      .findSchemaOrThrow(z::name, z::overload_name)
      .typed<z::schema>();
}
)FTr%  ÚdispatchKeySetc                ó   — g | ]	}|j         ‘Œ
S rs   ©r±   r)  s     r`   ró   z-ComputeOperators.__call__.<locals>.<listcomp>˜  s   € Ð-NÐ-NÐ-N¸¨a¬fÐ-NÐ-NÐ-Nra   c                ó   — g | ]	}|j         ‘Œ
S rs   ry  r)  s     r`   ró   z-ComputeOperators.__call__.<locals>.<listcomp>œ  s   € Ð5VÐ5VÐ5VÀ°a´fÐ5VÐ5VÐ5Vra   r2  z
    static auto op = create_z_typed_handle();
    return op.r3  r4  r   )rh   rç   ú {
    z
}
)r   Úfrom_schemarŠ   r±   Úunambiguous_namerp  rM   ÚDECLARATIONr   Úoverload_namerì   r†   ÚdefnÚ
DEFINITIONr  rÑ   r×   rq  rZ  rF   )r\   r¹   r  r±   Údefnsrt  Údispatcher_exprs_strÚmethod_baseÚdispatcher_callÚmethod_nameÚfn_bodys              r`   rj  zComputeOperators.__call__c  sê  € å!Ô-¨a¬fÑ5Ô5ˆØŒvŒ{×+Ò+Ñ-Ô-ˆàŒ;�&Ô,Ð,Ð,ð0
Øð
ð 
à—(’(‘*”*ð
ð 
ð
 /0¬f¬kÔ.>ð
ð 
ð 23´´Ô1Jð
ð 
õ .8½¸A¼F¹¼Ñ-DÔ-Dð
ð 
ð �(Š(˜°Eˆ(Ñ
:Ô
:ð
ð 
ð �(Š(˜¸$ˆ(Ñ
?Ô
?ð
ð 
ð 
ð 
ð Œ[�FÔ-Ð-Ð-ðØ
Œ&ðð à.2ðð àEIðð ð ð	ð ð )-ð	ð ð
 ðð ð ˆEð (5ð ð Ð#Ø&ð )Ø+/¯9ª9Ø)Ð*Ð-NÐ-N¸c¿mºm¹o¼oÐ-NÑ-NÔ-NÑNñ,ô ,Ð(ð #/�K�Kà+/¯9ª9Ð5VÐ5VÀcÇmÂmÁoÄoÐ5VÑ5VÔ5VÑ+WÔ+WÐ(Ø"(�Kà"-�Ø!%Ð6Ð6¨Ð6Ð6�ð<Ø!ð<ð <àð<ð <à!5ð<ð <ð <�ð
 ,ðå˜DÔ@ÑAÔAÀAÒEÐEõ .Ø˜Q°Ô0Tðñ ô �Gð ð Ø
Œ&ðð à‡‚ˆ{Ð0C€ÑDÔDðð ð ðð ð ñ ��ð ˆLå˜œÑ%Ô%Ð%Ð%Ð%ra   N©r¹   r5   ro   r†   ©rb   rc   rd   rl  r   rj  rs   ra   r`   rn  rn  ^  sS   € € € € € € à:Ð:Ð:Ñ:Ø7Ð7Ð7Ñ7à ðR&ð R&ð R&ñ !Ô ðR&ð R&ð R&ra   rn  c                  ó&   — e Zd Zedd„¦   «         ZdS )ÚComputeFunctionr¹   r5   ro   r  c                óÎ  — t          j        |d|j        ¬¦  «        }|j                             ¦   «         }d}|                     ¦   «         D �]}t          j        |j        ¦  «        }t          | 	                    ¦   «         | 	                    ¦   «         ¦  «        }d 
                    d„ |D ¦   «         ¦  «        }|j        rd}	nd}	t          j        |j        v rE|d|j        › d	|                     ¦   «         › d
|j        j                             ¦   «         › d|› d�	z  }|rB|d|	› d|                     d¬¦  «        › d
|j        j                             ¦   «         › d|› d�	z  }�Œ|S )NFr<  rx   r%  c                ó   — g | ]	}|j         ‘Œ
S rs   r'  ©rt   r¡   s     r`   ró   z,ComputeFunction.__call__.<locals>.<listcomp>É  ó   € Ð"9Ð"9Ð"9¨a 1¤6Ð"9Ð"9Ð"9ra   zc10::SymIntÚint64_trv  ú
inline ú {
    return at::_ops::ú::call(z);
}zZ
namespace symint {
  template <typename T, typename = std::enable_if_t<std::is_same_v<T, z>>>
  T)Úsuppress_symint_suffixz	);
  }
}
)r   r@  Úmanual_cpp_bindingrŠ   rB  Ú
signaturesr   r|  r   rÑ   r  rA  r?   ÚfunctionÚvariantsÚdeclr±   r}  )
r\   r¹   Ú	sig_grouprB  Úresultr  Ú
target_sigr-  Ú	exprs_strÚ	intlike_ts
             r`   rj  zComputeFunction.__call__½  s¹  € å%Ô:Ø�e¨aÔ.Bð
ñ 
ô 
ˆ	ð ”V×&Ò&Ñ(Ô(ˆ
àˆØ×'Ò'Ñ)Ô)ð  	ñ  	ˆCå,Ô8¸¼Ñ@Ô@ˆJÝ˜cŸmšm™oœo¨z×/CÒ/CÑ/EÔ/EÑFÔFˆEØŸ	š	Ð"9Ð"9°5Ð"9Ñ"9Ô"9Ñ:Ô:ˆIàŒzð &Ø)�	�	à%�	åÔ 1¤:Ð-Ð-Øð Ø
Œ&ðð à�Š‰
Œ
ðð ð ”f”k×2Ò2Ñ4Ô4ðð ð >Gðð ð ñ �ð ð Øð àGPðð ð ‡8‚8 4€8Ñ(Ô(ðð ð ”f”k×2Ò2Ñ4Ô4ð	ð ð >Gð	ð ð ñ �ùð ˆra   Nrk  ©rb   rc   rd   r   rj  rs   ra   r`   r‹  r‹  »  s3   € € € € € à ð(ð (ð (ñ !Ô ð(ð (ð (ra   r‹  c                  ó<   — e Zd ZU ded<   ded<   edd	„¦   «         Zd
S )ÚComputeTensorMethodro  rp  rî   rq  r¹   r5   ro   r  c                ó>  — t           j        |j        vrd S |j                             ¦   «         rJ ‚|j        j        j        €J ‚t          j        |d|j	        ¬¦  «        }| j
        t          j        u r5d}|                     ¦   «         D ]}||                     ¦   «         › d�z  }Œ|S | j
        t          j        urt!          | j
        ¦  «         d}|                     ¦   «         D ]·}t#          j        |j        ¦  «        }t'          |                     ¦   «         |                     ¦   «         d¬¦  «        }d                     d„ |D ¦   «         ¦  «        }|d|j        › d	|                     d
¬¦  «        › d|j        j                             ¦   «         › d|› d�	z  }Œ¸|S )NTr<  rx   z const;
)r=  r%  c                ó   — g | ]	}|j         ‘Œ
S rs   r'  rŽ  s     r`   ró   z0ComputeTensorMethod.__call__.<locals>.<listcomp>
  r�  ra   rv  r‘  zTensor::)Úprefixz const {
    return at::_ops::r“  ú);
}
)r?   r=  r˜  rŠ   Ú	is_out_fnrÑ   Úself_argr   r@  r•  rp  rM   r~  r–  r™  r�  rF   r   r|  r   r  r€  r±   r}  ©r\   r¹   rš  r›  r  rœ  r-  r�  s           r`   rj  zComputeTensorMethod.__call__ð  sÉ  € åŒ> ¤Ð+Ð+Ø�4à”6×#Ò#Ñ%Ô%Ð%Ð%Ð%ØŒvÔÔ(Ð4Ð4Ð4å%Ô:Ø�d¨QÔ-Að
ñ 
ô 
ˆ	ð Œ;�&Ô,Ð,Ð,ØˆFØ ×+Ò+Ñ-Ô-ð 3ð 3�Ø˜SŸXšX™ZœZÐ2Ð2Ð2Ñ2��ØˆMàŒ;�fÔ/Ð/Ð/Ý˜œÑ%Ô%Ð%àˆà×'Ò'Ñ)Ô)ð 
	ð 
	ˆCÝ,Ô8¸¼Ñ@Ô@ˆJÝ˜cŸmšm™oœo¨z×/CÒ/CÑ/EÔ/EÈdÐSÑSÔSˆEØŸ	š	Ð"9Ð"9°5Ð"9Ñ"9Ô"9Ñ:Ô:ˆIàð Ø
Œ&ðð à�Š˜
ˆÑ#Ô#ðð ð ”f”k×2Ò2Ñ4Ô4ðð ð >Gðð ð ñ ˆFˆFð ˆra   Nrk  r‰  rs   ra   r`   r¡  r¡  ë  sM   € € € € € € à:Ð:Ð:Ñ:Ø7Ð7Ð7Ñ7à ð"ð "ð "ñ !Ô ð"ð "ð "ra   r¡  c                  ó&   — e Zd Zedd„¦   «         ZdS )ÚComputeRedispatchFunctionr¹   r5   ro   r  c                óÞ  — t          j        |d|j        ¬¦  «        }d}|                     ¦   «         D ]¹}t	          j        |j        ¦  «        }t          |                     ¦   «         |                     ¦   «         ¦  «        }d 	                    dgd„ |D ¦   «         z   ¦  «        }|d|j        › d| 
                    d	¬
¦  «        › d|j        j                             ¦   «         › d|› d�	z  }Œº|S )NFr<  rx   r%  rw  c                ó   — g | ]	}|j         ‘Œ
S rs   r'  r)  s     r`   ró   z6ComputeRedispatchFunction.__call__.<locals>.<listcomp>'  s   € Ð7NÐ7NÐ7NÀ1¸¼Ð7NÐ7NÐ7Nra   rv  r‘  T)rt  r’  z::redispatch(r¥  )r   r@  r•  r–  r   r|  rŠ   r   rÑ   r  r™  r±   r}  r¨  s           r`   rj  z"ComputeRedispatchFunction.__call__  s  € õ &Ô:Ø�e¨aÔ.Bð
ñ 
ô 
ˆ	ð ˆØ×'Ò'Ñ)Ô)ð 
	ð 
	ˆCÝ,Ô8¸¼Ñ@Ô@ˆJÝ˜cŸmšm™oœo¨z×/CÒ/CÑ/EÔ/EÑFÔFˆEØŸ	š	Ð#3Ð"4Ð7NÐ7NÈÐ7NÑ7NÔ7NÑ"NÑOÔOˆIàð Ø
Œ&ðð à�Š TˆÑ*Ô*ðð ð ”f”k×2Ò2Ñ4Ô4ðð ð DMðð ð ñ ˆFˆFð ˆra   Nrk  rŸ  rs   ra   r`   rª  rª    s3   € € € € € à ðð ð ñ !Ô ðð ð ra   rª  c                óP   — d| j         j        j        › d| j         j        j        › d�S )Nz{"aten::z", "z"},)rŠ   r±   r  ©r¹   s    r`   Úcompute_aten_opr¯  8  s)   € àL�q”v”{Ô'ÐLÐL¨Q¬V¬[Ô-FÐLÐLÐLÐLra   Úgr6   c                óæ  — | j         sd S t          | j        ¦  «        5  t          j        | ¦  «        }t          j        | ¦  «        }d                     d„ |D ¦   «         ¦  «        }| j        j        }|€d}d}| j         r| j        j        nd }|�r1g |j	         
                    ¦   «         ¢|j        ‘}d„ |D ¦   «         }d„ |D ¦   «         }	d                     d„ |	D ¦   «         ¦  «        }
d|
› d	�}d
„ |D ¦   «         }d                     d„ |D ¦   «         ¦  «        }g }t          |¦  «        D �]D\  }}d                     |	d |…         dgz   |	|dz   d …         z   ¦  «        }d|› d	�}||                              d¬¦  «        }|› d|j        › d|› d�}d|j        › d�}d|	|         › d|› d�}g }|                     |› d�¦  «         t          |¦  «        D ]P\  }}||k    r|                     d|j        › d�¦  «         Œ*|                     d|j        › d|j        › d�¦  «         ŒQ|                     d¦  «         d                      |¦  «        }|                     d!|› d"|› d#|› d$�¦  «         �ŒFd                      |¦  «        }d                     dgt          |	¦  «        z  ¦  «        }d%|› d&�}d'}d(|› d)|› d!|› d*�}nd+}d+}d,|› d-|› d.|› d/|› d/|› d0|› d1�cd d d ¦  «         S # 1 swxY w Y   d S )2Nr%  c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rr   )r™  r)  s     r`   rw   z4compute_meta_function_declaration.<locals>.<genexpr>D  s*   è è € Ð4Ð4¨!˜QŸVšV™XœXÐ4Ð4Ð4Ð4Ð4Ð4ra   zat::impl::MetaBaseÚvoidc                ó   — g | ]	}|D ]}|‘ŒŒ
S rs   rs   )rt   Úreplace_listÚelems      r`   ró   z5compute_meta_function_declaration.<locals>.<listcomp>P  s9   € ð $ð $ð $Ø%Èð$ð $Ø@D�ð$ð $ð $ð $ra   c                ó@   — g | ]}|j                              ¦   «         ‘ŒS rs   )r±   Úupper©rt   r¶  s     r`   ró   z5compute_meta_function_declaration.<locals>.<listcomp>S  s1   € ð /ð /ð /Ø&*�”	—’Ñ!Ô!ð/ð /ð /ra   c              3  ó"   K  — | ]
}d |› d�V — ŒdS )zbool z = falseNrs   )rt   Úparams     r`   rw   z4compute_meta_function_declaration.<locals>.<genexpr>V  s?   è è € ð 8ð 8Ø,1Ð'˜Ð'Ð'Ð'ð8ð 8ð 8ð 8ð 8ð 8ra   z
template <ú>c                óD   — g | ]}t          j        ||j        ¬ ¦  «        ‘ŒS ))Úbinds)rÎ   Úargument_typer±   r¹  s     r`   ró   z5compute_meta_function_declaration.<locals>.<listcomp>\  s:   € ð 3ð 3ð 3àõ Ô(¨°T´YÐ?Ñ?Ô?ð3ð 3ð 3ra   re  c              3  óV   K  — | ]$}|                      d ¬¦  «        › d|j        › �V — Œ%dS )T©Ú	strip_refú N)Úcpp_typer±   r¹  s     r`   rw   z4compute_meta_function_declaration.<locals>.<genexpr>a  sT   è è € ð 3ð 3àð —=’=¨4�=Ñ0Ô0Ð>Ð>°4´9Ð>Ð>ð3ð 3ð 3ð 3ð 3ð 3ra   ÚtruerV   zprecompute_out<TrÁ  z set_r3  z value)rã   z already set"zstatic_assert(z == false, r4  z ret;zret.z	 = value;z	 = this->rM  zreturn ret;rç   z
                    z {
                        z
                        z'
                    }
                z'using meta_return_ty = precompute_out <z>;Úmeta_return_tyz
                zG
                struct TORCH_API precompute_out {
                    z;
            };rx   zstruct TORCH_API structured_z
 : public r{  rO  z meta(z);
};
)rÎ   r   ÚoutÚmetar±   Úmeta_argumentsr  Ústructured_inheritsÚprecomputedrê   Úvaluesr¯   Ú	enumeraterÄ  rœ   r×   )r°  r±   ÚargsÚargs_strÚparent_classÚmeta_returnrË  Úprecomputed_valuesÚprecomputed_elementsÚprecomputed_template_parametersÚprecomputed_template_params_strÚprecompute_template_declÚ#precomputed_elements_with_cpp_typesÚprecomputed_elements_declÚsetter_methodsÚir¶  Úreturn_ty_templatesÚ	return_tyÚelem_cpp_tyrD  Ú
assert_msgÚassert_stmtÚconstruction_stmtsÚjÚconstruction_blockÚsetter_methods_declÚmeta_return_template_paramsÚmeta_return_typedefÚprecomputed_decls                                 r`   Ú!compute_meta_function_declarationrç  >  s  € ØŒ<ð ØˆtÝ	  ¤Ñ	'Ô	'ð vð vÝŒy˜‰|Œ|ˆÝÔ(¨Ñ+Ô+ˆØ—9’9Ð4Ð4¨tÐ4Ñ4Ô4Ñ4Ô4ˆØ”uÔ0ˆØÐØ/ˆLØˆØ+,¬<ÐA�a”eÔ'Ð'¸Tˆàñ d	"ð "R ;Ô#6×#=Ò#=Ñ#?Ô#?Ð!QÀÄÐ!QÐð$ð $Ø);ð$ñ $ô $Ð ð/ð /Ø.Bð/ñ /ô /Ð+ð /3¯iªið 8ð 8Ø5Tð8ñ 8ô 8ñ /ô /Ð+ð (WÐ4SÐ'VÐ'VÐ'VÐ$ð3ð 3à0ð3ñ 3ô 3Ð/ð
 ).¯
ª
ð 3ð 3à?ð3ñ 3ô 3ñ )ô )Ð%ð  ˆNÝ$Ð%9Ñ:Ô:ð 2ñ 2‘��4ð '+§i¢iØ3°B°Q°BÔ7Ø�hñà5°a¸!±e°g°gÔ>ñ?ñ'ô 'Ð#ð
 EÐ.AÐDÐDÐD�	ØAÀ!ÔD×MÒMØ"ð Nñ ô �ð  )ÐOÐO¨t¬yÐOÐO¸;ÐOÐOÐO�	ð : ¤Ð9Ð9Ð9�
ØlÐ/NÈqÔ/QÐlÐlÐ^hÐlÐlÐl�ð &(Ð"Ø"×)Ò)¨YÐ*=Ð*=Ð*=Ñ>Ô>Ð>å(Ð)=Ñ>Ô>ð ð ‘G�A�tØ˜A’v�vØ*×1Ò1Ð2M¸¼Ð2MÐ2MÐ2MÑNÔNÐNÐNà*×1Ò1ØC 4¤9ÐCÐC°t´yÐCÐCÐCñô ð ð ð #×)Ò)¨-Ñ8Ô8Ð8Ø%)§Y¢YÐ/AÑ%BÔ%BÐ"à×%Ò%ðØðð à$ðð ð ,ðð ð ñô ð ñ ð #'§)¢)¨NÑ";Ô";Ðð +/¯)ª)Ø��3Ð>Ñ?Ô?Ñ?ñ+ô +Ð'ð
 #lÐLgÐ"kÐ"kÐ"kÐØ*ˆKð Ø)ð ð  ð )ð ð  ð /ð	 ð  ð  ÐÐð #%ÐØ!ÐðØ!ðð Ø-9ðð àðð ð ðð ð ð	ð ð !ð	ð ð ðavð vð vð vñ vô vð vð vð vð vð vð vøøøð vð vð vð vð vð vs   žJ;K&Ë&K*Ë-K*r^  rE   c                óæ   — t          | j        j        j        ¦  «        }|                     d¦  «        s|                     d¦  «        rdS | j        j        j        €dS |                     | ¦  «        S )NÚ_likeÚnew_F)r†   rŠ   r±   ÚendswithÚ
startswithrÑ   rP  rf  )r¹   r^  r±   s      r`   Úneeds_backend_selectrí  º  si   € ÝˆqŒvŒ{ÔÑ Ô €DØ‡}‚}�WÑÔð  §¢°Ñ!8Ô!8ð ØˆuØ„vÔÔ&Ð.ØˆuØ×/Ò/°Ñ2Ô2Ð2ra   c                  ó<   — e Zd ZU ded<   ded<   edd	„¦   «         Zd
S )ÚComputeBackendSelectz/Literal[Target.DEFINITION, Target.REGISTRATION]rp  rE   r^  r¹   r5   ro   r  c                ór  — t          || j        ¦  «        sd S t          j        |j        ¦  «        }t          |j        d¬¦  «        }d„ |                     ¦   «         D ¦   «         }t          j        |j        ¦  «        }|}| 	                    ¦   «         }d}| j
        t          j        u rÔ|rI|j        j                             ¦   «         sJ ‚d                     d„ |D ¦   «         ¦  «        }	d|› d|	› d	�}
n&|j        j                             ¦   «         rJ ‚d
|› d�}
d|j        › d|                     |¦  «        › d|
› d|j        j                             ¦   «         › dd                     d„ |D ¦   «         ¦  «        › d�S | j
        t          j        u rd|j        j        › d|› d�S t%          | j
        ¦  «         d S )NT©rA  c                ó‚   — g | ]<}t          |j        t          ¦  «        ¯|j        j                             ¦   «         ¯:|‘Œ=S rs   )r—   r  r'   r   rK  r)  s     r`   ró   z1ComputeBackendSelect.__call__.<locals>.<listcomp>×  sT   € ð 
ð 
ð 
àÝ˜!œ*¥hÑ/Ô/ð
ð 56´J´O×4RÒ4RÑ4TÔ4Tð
Øð
ð 
ð 
ra   z.c10::computeDispatchKey(dtype, layout, device)r%  c              3  ó$   K  — | ]}|j         V — Œd S rr   ry  r)  s     r`   rw   z0ComputeBackendSelect.__call__.<locals>.<genexpr>ë  s$   è è € Ð'KÐ'K°1¨¬Ð'KÐ'KÐ'KÐ'KÐ'KÐ'Kra   z-DispatchKeySet _dk_set = c10::DispatchKeySet(z() | c10::detail::multi_dispatch_key_set(z³);
DispatchKeySet _dk_mask = c10::DispatchKeySet(DispatchKeySet::FULL_AFTER, DispatchKey::BackendSelect);
DispatchKeySet _dk = c10::impl::computeDispatchKeySet(_dk_set, _dk_mask);z)DispatchKeySet _dk = c10::DispatchKeySet(r4  z	// aten::z
C10_ALWAYS_INLINE
z {
  z
  return at::_ops::z::redispatch(
      _dk, c              3  ó$   K  — | ]}|j         V — Œd S rr   r'  r)  s     r`   rw   z0ComputeBackendSelect.__call__.<locals>.<genexpr>û  s$   è è € Ð7Ð7 �a”fÐ7Ð7Ð7Ð7Ð7Ð7ra   r¥  zm.impl("aten::z", TORCH_FN(z));)rí  r^  Únativer±   rŠ   r   rÑ   r   r|  r-  rp  rM   r�  Úhas_tensor_argr  r€  r}  ÚREGISTRATIONrF   )r\   r¹   r±   Ú
native_sigrR  Údispatcher_sigr  Údispatcher_exprsrk   rS  Ú
compute_dks              r`   rj  zComputeBackendSelect.__call__Î  s*  € å# A t¤}Ñ5Ô5ð 	Ø�4åŒ{˜1œ6Ñ"Ô"ˆå$ Q¤V°DÐ9Ñ9Ô9ˆ
ð
ð 
à×)Ò)Ñ+Ô+ð
ñ 
ô 
Ðõ -Ô8¸¼Ñ@Ô@ˆð ˆØ)×/Ò/Ñ1Ô1ÐØGˆàŒ;�&Ô+Ð+Ð+ð
 "ð Ø”vÔ'×6Ò6Ñ8Ô8Ð8Ð8Ð8Ø"ŸišiÐ'KÐ'KÐ8JÐ'KÑ'KÔ'KÑKÔK�ðMØ.:ðMð MØdoðMð Mð M�
�
ð
 œ6Ô+×:Ò:Ñ<Ô<Ð<Ð<Ð<àPÀÐPÐPÐPð ðØ
Œ&ðð ð ‡‚ˆ$�„ðð ð ð	ð ð
 ”F”K×0Ò0Ñ2Ô2ðð ð �IŠIÐ7Ð7Ð&6Ð7Ñ7Ô7Ñ7Ô7ðð ð ð ð Œ[�FÔ/Ð/Ð/ØJ a¤f¤kÐJÐJ¸tÐJÐJÐJÐJå˜œÑ%Ô%Ð%Ð%Ð%ra   Nrk  r‰  rs   ra   r`   rï  rï  Æ  sO   € € € € € € à;Ð;Ð;Ñ;ð ÐÐÑà ð2&ð 2&ð 2&ñ !Ô ð2&ð 2&ð 2&ra   rï  Údatac                ó’   — d„ t           _        d
d„}t          j        t          |¦  «         t	          j        | dt           d¬	¦  «        S )Nc                ó   — dS )NTrs   )r\   rü  s     r`   r�   zformat_yaml.<locals>.<lambda>  s   € °4€ ra   Údumperr
   rü  ro   c                óP   — |                       |                     ¦   «         ¦  «        S rr   )Úrepresent_dictr{   )rÿ  rü  s     r`   Údict_representerz%format_yaml.<locals>.dict_representer  s   € Ø×$Ò$ T§Z¢Z¡\¤\Ñ2Ô2Ð2ra   Fg    eÍÍA)Údefault_flow_styleÚDumperÚwidth)rÿ  r
   rü  r
   ro   r
   )rN   Úignore_aliasesÚadd_representerr   r·   Údump)rü  r  s     r`   Úformat_yamlr	    sR   € à 7Ð 7…JÔð3ð 3ð 3ð 3õ Ô�{Ð,<Ñ=Ô=Ð=õ Œ9�T¨e½JÈcÐRÑRÔRÐRra   c                óª   — | dk    rdS | dk    rdS 	 t          | ¦  «        S # t          $ r' 	 t          | ¦  «        cY S # t          $ r | cY cY S w xY ww xY w)NrÅ  TÚfalseF)rš   Ú
ValueErrorÚfloatrë   s    r`   Úpythonify_defaultr    s…   € ØˆF‚{€{ØˆtØ	
ˆgŠˆØˆuðÝ�1‰vŒvˆøÝð ð ð ð	Ý˜‘8”8ˆOˆOˆOøÝð 	ð 	ð 	ØˆHˆHˆHˆHˆHð	øøøðøøøs)   ’! ¡
A¬=ºA½AÁ	AÁAÁAÚtr>   c                óÒ   — t          | t          ¦  «        rt          | j        ¦  «        S t	          | ¦  «        dk    rdS t          j        | ddd¬¦  «                             ¦   «         S )NÚTensorz
at::TensorFÚ__placeholder__)Úmutabler¾  rA  )r—   r9   Údynamic_typer¶  r†   r   Úargumenttype_typerÄ  )r  s    r`   r  r  6  si   € Ý�!•\Ñ"Ô"ð $Ý˜AœFÑ#Ô#Ð#õ ˆ1�v„v�ÒÐØˆ|åÔ Ø	�5Ð 1¸%ðñ ô ç‚h�j„jðra   r˜  úset[Variant]c                ó˜   — dg}t           j        | v r|                     d¦  «         t           j        | v r|                     d¦  «         |S )Nr>   r  Ú	namespace)r?   r=  rœ   r—  )r˜  Ú	method_ofs     r`   Úcompute_method_of_yamlr  C  sT   € ð �€IÝ„~˜Ð!Ð!Ø×Ò˜Ñ"Ô"Ð"ÝÔ˜8Ð#Ð#Ø×Ò˜Ñ%Ô%Ð%ØÐra   ú+tuple[list[dict[str, str]], dict[str, str]]c                óÜ  — i }t          j        | ¦  «        }g }t          t          | j        j        |¦  «        ¦  «        D ]©\  }\  }}t          |j        ¦  «        |t          j        |d¬¦  «         	                    ¦   «         dœ}|j
        rG|j
        |d<   | j                             ¦   «         r$|j
        || j        j        j        |         j
        <   |                     |¦  «         Œª||fS )NFrñ  )r  r±   r   Ú
field_name)r   Úreturn_namesrÍ  ÚziprŠ   Úreturnsr  r   Úreturn_typerÄ  r±   r¦  rÑ   rÇ  rœ   )r¹   Úname_to_field_nameÚnamesr   rÚ  Úrr±   Úrets           r`   Úcompute_returns_yamlr&  N  s÷   € ðT *,Ðõ Ô˜QÑÔ€EØ€GÝ!¥# a¤f¤n°eÑ"<Ô"<Ñ=Ô=ð ð ‰ˆ‰9ˆAˆtå(¨¬Ñ0Ô0Øå”O A¨eÐ4Ñ4Ô4×=Ò=Ñ?Ô?ð	
ð 
ˆð Œ6ð 	Jà !¤ˆC�ÑØŒv×ÒÑ!Ô!ð JØCDÄ6Ð" 1¤6Ô#3Ô#7¸Ô#:Ô#?Ñ@à�Š�sÑÔÐÐàÐ&Ð&Ð&ra   Úcpp_ar   Úschema_orderÚkwarg_only_setÚout_arg_setr"  údict[str, str]c               ó.  — t          | j        t          ¦  «        r&d dd| j        | j        ddœ}| j        �
| j        |d<   |S t          | j        t          ¦  «        rt          ‚t          | j        t          ¦  «        rt          | j        ||||¬¦  «        S d S )Nzat::TensorOptionsFT)Ú
annotationr  Úis_nullabler±   r   Ú
kwarg_onlyr  ©r(  r)  r*  r"  )
r—   r  r=   r±   r   r  r;   rÓ   r'   Úcompute_argument_yaml)r'  r(  r)  r*  r"  rÝ   s         r`   Úcompute_cpp_argument_yamlr2  ‘  sµ   € õ �%”.Õ"8Ñ9Ô9ð 
àØ/Ø Ø”JØ”JØð"
ð "
ˆð Œ=Ð$Ø"œ]ˆC�	‰NØˆ
Ý	�E”N¥LÑ	1Ô	1ð 	
ÝÐÝ	�E”N¥HÑ	-Ô	-ð 
Ý$ØŒNØ%Ø)Ø#Ø1ð
ñ 
ô 
ð 	
ð
ð 
ra   r*  r'   c          	     ób  — | j         rt          | j         ¦  «        nd t          | j        ¦  «        | j                             ¦   «         | j        t          j        | dd¬¦  «                             ¦   «         dœ}| j	        �1t          t          j        | j	        | j        d¬¦  «        ¦  «        |d<   | j        |v rd|d<   | j        |v r#d|d	<   d|d
<   | j        |v r|| j                 |d<   | j                             ¦   «         }|�)|j        �"t          |j        ¦  «        dk    r
|j        |d<   |S )Nr  F)r¾  rA  )r-  r  r.  r±   r   rñ  r  Tr/  r  Úallocater  rˆ   Úsize)r-  r†   r  r   r.  r±   r   r¿  rÄ  r  r  Údefault_exprÚis_list_liker5  r¶  )r*  r(  r)  r*  r"  rÝ   Úls          r`   r1  r1  ±  s>  € ð ,-¬<ÐA•c˜!œ,Ñ'Ô'Ð'¸TÝ$ Q¤VÑ,Ô,Ø”v×)Ò)Ñ+Ô+Ø”åÔ! !Ð+<ÀUÐKÑKÔK×TÒTÑVÔVðð €Cð 	„yÐÝ*ÝÔ˜QœY¨¬°uÐ=Ñ=Ô=ñ
ô 
ˆˆI‰ð 	„v�ÐÐØ ˆˆLÑØ„v�ÐÐØˆˆH‰ØˆˆJ‰àŒ6Ð'Ð'Ð'Ø 2°1´6Ô :ˆC�Ñð 	
Œ×ÒÑÔ€AØ€}˜œÐ+µ°A´F±´¸vÒ0EÐ0EØ”fˆˆF‰Ø€Jra   c                ór  ‡‡‡— t          | ¦  «        \  }Šd„ | j        j        j        D ¦   «         Šd„ | j        j        j        D ¦   «         Št          j        | dd¬¦  «        }|j                             ¦   «         }ˆˆˆfd„|D ¦   «         }t          | j         	                    ¦   «         ¦  «        }ˆˆˆfd„|D ¦   «         }d„ |D ¦   «         }t          j        | j        j        d¬¦  «                             ¦   «         }|› d	d
                     |¦  «        › d�}	t          d„ |D ¦   «         ¦  «        ot           j        | j        v}
t'          dt          j        | j        ¦  «        fdt+          | j        j        j        ¦  «        fdt+          | j        j        j        ¦  «        fd| j        fd| j        �| j        ndfdd| j        › �fd|fd|	fd|fdt3          | j        ¦  «        fdd| j        €dn| j        fd|fd| j        j        j        j        fd|
fd| j        fd| j        fd d!d"| j        fg¦  «        S )#Nc                ó   — h | ]	}|j         ’Œ
S rs   ry  r)  s     r`   ú	<setcomp>z+compute_declaration_yaml.<locals>.<setcomp>Û  s   € ÐGÐGÐG �a”fÐGÐGÐGra   c                ó   — h | ]	}|j         ’Œ
S rs   ry  r)  s     r`   r;  z+compute_declaration_yaml.<locals>.<setcomp>Ü  s   € Ð8Ð8Ð8˜a�1”6Ð8Ð8Ð8ra   Fr<  c           	     ó8   •— g | ]}t          |d ‰‰‰¬¦  «        ‘ŒS )Fr0  )r2  )rt   r'  r)  r"  r*  s     €€€r`   ró   z,compute_declaration_yaml.<locals>.<listcomp>â  sI   ø€ ð 	ð 	ð 	ð õ 	"ØØØ)Ø#Ø1ð	
ñ 	
ô 	
ð	ð 	ð 	ra   c           	     ó8   •— g | ]}t          |d ‰‰‰¬¦  «        ‘ŒS )Tr0  )r1  )rt   r*  r)  r"  r*  s     €€€r`   ró   z,compute_declaration_yaml.<locals>.<listcomp>ï  sI   ø€ ð 	ð 	ð 	ð õ 	ØØØ)Ø#Ø1ð	
ñ 	
ô 	
ð	ð 	ð 	ra   c           
     ón   — g | ]2}t          j        |d t          ¦   «         d d d ¬¦  «        D ]	}|j        ‘Œ
Œ3S )F)r=  Úcpp_no_default_argsÚfaithfulrA  Úhas_tensor_options)r   r  r¬   r   )rt   r*  r$  s      r`   ró   z,compute_declaration_yaml.<locals>.<listcomp>ú  sj   € ð ð ð ð Ý”ØØÝ #¡¤ØØØ$ð
ñ 
ô 
ð	ð ð ð 	
Œðð ð ð ra   rñ  z (r%  rL  c              3  óJ   K  — | ]}t          |j        t          ¦  «        V — Œd S rr   )r—   r  r=   r)  s     r`   rw   z+compute_declaration_yaml.<locals>.<genexpr>  s/   è è € ÐMÐM¸q�J�q”zÕ#9Ñ:Ô:ÐMÐMÐMÐMÐMÐMra   r±   Úoperator_namer  r  Úcategory_overriderx   Úschema_stringúaten::rÑ   Úschema_order_cpp_signatureÚschema_order_argumentsr  )Úmoderõ  Úpython_moduler   rÔ   Úis_factory_methodÚabstractr”   )Úwith_gilF)Ú
deprecatedFÚhas_math_kernel)r&  rŠ   rÑ   Úflat_kwarg_onlyrÇ  r   r@  rD  r˜   rI  r   Úreturns_typer   rÄ  r  Úanyr?   r=  r˜  r   r±   r†   r  r  rE  r  rK  rÔ   Úis_abstractr”   r   )r¹   r   rš  Úcpp_argsrÑ   Úschema_order_jit_argumentsrI  Úcpp_schema_order_typesÚcpp_returnsrH  rL  r)  r"  r*  s              @@@r`   Úcompute_declaration_yamlrY  Õ  sÍ  øøø€ å"6°qÑ"9Ô"9Ñ€GÐð HÐG a¤fÔ&6Ô&FÐGÑGÔG€NØ8Ð8 1¤6Ô#3Ô#7Ð8Ñ8Ô8€Kå!Ô6Ø	�%¨%ðñ ô €Ið Ô"×,Ò,Ñ.Ô.€Hð	ð 	ð 	ð 	ð 	ð 	ð ð	ñ 	ô 	€Iõ "& a¤f×&CÒ&CÑ&EÔ&EÑ!FÔ!FÐð	ð 	ð 	ð 	ð 	ð 	ð ,ð	ñ 	ô 	Ððð ð ,ðñ ô Ðõ Ô" 1¤6¤>¸%Ð@Ñ@Ô@×IÒIÑKÔK€KØ$/Ð!WÐ!W°4·9²9Ð=SÑ3TÔ3TÐ!WÐ!WÐ!WÐõ 	ÐMÐMÀHÐMÑMÔMÑMÔMð 	-ÝŒN !¤*Ð,ð õ
 à•S”X˜aœfÑ%Ô%Ð&Ø�c !¤&¤+Ô"2Ñ3Ô3Ð4Ø�c !¤&¤+Ô";Ñ<Ô<Ð=Ø)¨1Ô+GÐHà#Ø'(Ô':Ð'F�Ô#Ð#ÈBðð Ð/ q¤vÐ/Ð/Ð0Ø˜)Ð$Ø)Ð+EÐFØ%Ð'=Ð>ØÕ0°´Ñ<Ô<Ð=ØØ A¤OÐ$;˜b˜bÀÄÐQØ˜Ð Ø˜œœÔ(Ô0Ð1Ø Ð"3Ð4Ø˜œÐ'Ø˜Qœ^Ð,ØØ!Ø Ô HÐIð/	
ñô ð ra   c                ó¾   — | j         s	| j        d uoM| j                             ¦   «         t          j        k    p&| j                             ¦   «         t          j        k    S rr   )rÎ   rÍ   rŠ   Úkindr:   Ú
functionalrÔ   r®  s    r`   Ú"has_autogenerated_composite_kernelr]  /  sJ   € ØŒLÐ=˜AÔ1¸Ð=ð Ø	Œ�Š‰Œ�Ô.Ò.ÐU°!´&·+²+±-´-Å:ÔCUÒ2Uðra   údict[DispatchKey, BackendIndex]c           	     óŒ  ‡ — t          j        ‰ j        ¦  «        }t          j        ‰ j        j        ¦  «                             ¦   «         }t          j        ‰ j        ¦  «        }d                     d„ |D ¦   «         ¦  «        }d‰ j        › �t          ˆ fd„| 	                    ¦   «         D ¦   «         t          j        hk    o9ˆ fd„| 	                    ¦   «         D ¦   «         t          j        t          j        hk    ¦  «        t          ‰ j        pt          ‰ ¦  «        ¦  «        dœ}|› d|› d|› d	t          j        |¦  «        › d
�S )Nr%  c              3  ób   K  — | ]*}|                      ¦   «                              ¦   «         V — Œ+d S rr   )Ú
no_defaultÚdecl_registration_declarationsr)  s     r`   rw   z4compute_registration_declarations.<locals>.<genexpr>>  s6   è è € ÐWÐWÈQ˜Ÿš™œ×FÒFÑHÔHÐWÐWÐWÐWÐWÐWra   rG  c                óD   •— h | ]\  }}|                      ‰¦  «        ¯|’ŒS rs   ©rý   ©rt   r¤   r¥   r¹   s      €r`   r;  z4compute_registration_declarations.<locals>.<setcomp>C  s,   ø€ ÐFÐFÐF‘4�1�a°a·l²lÀ1±o´oÐFˆQÐFÐFÐFra   c                óD   •— h | ]\  }}|                      ‰¦  «        ¯|’ŒS rs   rd  re  s      €r`   r;  z4compute_registration_declarations.<locals>.<setcomp>E  s,   ø€ ÐJÐJÐJ‘t�q˜!¸!¿,º,Àq¹/¼/ÐJ�ÐJÐJÐJra   )ÚschemaÚdispatchr  rÃ  r3  z); // rç   )Ú
dispatcherr±   rŠ   rR  r   Ú"cpp_type_registration_declarationsrÑ   r  r†   r{   r-   rô   rõ   Úhas_composite_kernelr]  ÚjsonÚdumps)r¹   rh   r±   rR  rÎ  rÏ  Úcomment_datas   `      r`   Ú!compute_registration_declarationsro  5  sn  ø€ õ Œ?˜1œ6Ñ"Ô"€DÝÔ*Ø	ŒŒñô ç(Ò(Ñ*Ô*ð õ Ô ¤Ñ'Ô'€DØ�yŠyÐWÐWÐRVÐWÑWÔWÑWÔW€Hà#˜1œ6Ð#Ð#åØFÐFÐFÐF˜?×0Ò0Ñ2Ô2ÐFÑFÔFÝÔ5Ð6ò7ð àJÐJÐJÐJ˜×4Ò4Ñ6Ô6ÐJÑJÔJåÔ5ÝÔAðòñ
ô 
õ �qÔ-ÐVÕ1SÐTUÑ1VÔ1VÑWÔWð$ð $€Lð ð ð ˜tð ð  hð ð µd´jÀÑ6NÔ6Nð ð ð ð ra   Ú"provided_op_registration_allowlistúlist[str] | NoneÚop_selection_yaml_pathc                óÎ   — | �|�
J d¦   «         ‚d }| �t          | ¦  «        }|�t          j        |dd¦  «        }n*|�t          j        |¦  «        }nt          j        ¦   «         }|S )NzhBoth provided_op_registration_allowlist and op_selection_yaml_path can NOT be provided at the same time.TF)r¬   rE   Ú&from_legacy_op_registration_allow_listÚfrom_yaml_pathÚget_nop_selector)rp  rr  Úop_registration_allowlistr^  s       r`   Úget_custom_build_selectorrx  X  s“   € ð
 	+Ð6Ø"Ð.Ð.ð	ñ /Ô.ðð 26ÐØ)Ð5Ý$'Ð(JÑ$KÔ$KÐ!à Ð,Ý#ÔJØ%ØØñ
ô 
ˆˆð
 
 Ð	+Ý#Ô2Ð3IÑJÔJˆˆå#Ô4Ñ6Ô6ˆà€Ora   ú3Sequence[NativeFunction | NativeFunctionsViewGroup]c                óÔ  — dd„}t          t          ¦  «        }| D ]Ÿ}|j                             ¦   «         }|j        }|t
          j        k    r1|j                             ¦   «         }|||         vsJ ‚|||         |<   Œc|||         vs'J |› d||                              ¦   «         › �¦   «         ‚|||         |<   Œ t          t          ||                     ¦   «         ¦  «        ¦  «        S )NÚdú1dict[ViewSchemaKind | SchemaKind, NativeFunction]ro   ú/list[NativeFunction | NativeFunctionsViewGroup]c                ó|  — g }t           j        | v r„|                      t           j        ¦  «        }|                      t           j        d ¦  «        }|                      t          j        d ¦  «        }|                     t          |||¬¦  «        ¦  «         |                     |  	                    ¦   «         ¦  «         |S )N)ÚviewÚ	view_copyÚview_inplace)
r@   Úaliasingr®   Úaliasing_inplacer:   r\  rœ   r7   ÚextendrÌ  )r{  r�   r  r�  r€  s        r`   Úmaybe_create_view_groupzEget_grouped_by_view_native_functions.<locals>.maybe_create_view_groupz  s«   € ð BDˆÝÔ" aÐ'Ð'Ø—5’5�Ô0Ñ1Ô1ˆDØŸ5š5¥Ô!@À$ÑGÔGˆLØŸš�jÔ3°TÑ:Ô:ˆIà�LŠLÝ(ØØ'Ø!-ðñ ô ñô ð ð 	�Š�Q—X’X‘Z”ZÑ Ô Ð Øˆra   z already in )r{  r|  ro   r}  )r   r™   rŠ   Úview_signatureÚview_schema_kindr@   Únon_aliasingr[  rQ  r˜   rG   rÌ  )rg   r…  Úgrouped_by_viewsr¹   rg  Ú	view_kindr[  s          r`   Ú$get_grouped_by_view_native_functionsr‹  w  s  € ðð ð ð õ. 	•DÑÔð ð ð 4ð 4ˆØ”×&Ò&Ñ(Ô(ˆØ$%Ô$6ˆ	ð
 �Ô3Ò3Ð3Ø”6—;’;‘=”=ˆDØÐ/°Ô7Ð7Ð7Ð7Ð7Ø-.Ð˜VÔ$ TÑ*Ð*ð Ð!1°&Ô!9Ð9Ð9Ð9ØÐJÐJÐ)9¸&Ô)A×)FÒ)FÑ)HÔ)HÐJÐJñ :Ô9Ð9à23Ð˜VÔ$ YÑ/Ð/å•	Ð1Ð3C×3JÒ3JÑ3LÔ3LÑMÔMÑNÔNÐNra   ú/Sequence[NativeFunction | NativeFunctionsGroup]c           	     ó    — dd„}t          | ¦  «        }t          t          |t          |                     ¦   «         ¦  «        ¦  «        ¦  «        S )Nr{  ú dict[SchemaKind, NativeFunction]ro   rŒ  c                óÐ   — t          j        | ¦  «        }|€Nt          d„ |                      ¦   «         D ¦   «         ¦  «        rJ ‚t	          |                      ¦   «         ¦  «        S |gS )Nc              3  ó(   K  — | ]}d |j         v V — ŒdS )Ú	generatedN)rª   ©rt   r¹   s     r`   rw   zJget_grouped_native_functions.<locals>.flatten_pre_group.<locals>.<genexpr>°  s)   è è € ÐEÐE°Q˜;¨!¬&Ð0ÐEÐEÐEÐEÐEÐEra   )r6   Ú	from_dictrS  rÌ  r˜   )r{  r$  s     r`   Úflatten_pre_groupz7get_grouped_native_functions.<locals>.flatten_pre_group©  sc   € õ !Ô*¨1Ñ-Ô-ˆØˆ9õ ÐEÐE¸!¿(º(¹*¼*ÐEÑEÔEÑEÔEÐEÐEÐEÝ˜Ÿš™
œ
Ñ#Ô#Ð#à�3ˆJra   )r{  rŽ  ro   rŒ  )rD   r˜   rG   rÌ  )rg   r”  Úpre_grouped_native_functionss      r`   Úget_grouped_native_functionsr–  ¦  s\   € ð
ð 
ð 
ð 
õ $>Ð>NÑ#OÔ#OÐ ÝÝÐ#¥TÐ*F×*MÒ*MÑ*OÔ*OÑ%PÔ%PÑQÔQñô ð ra   )Únative_function_decl_genÚgrouped_native_functionsr—  úJCallable[[NativeFunctionsGroup | NativeFunction, BackendIndex], list[str]]údict[str, list[str]]c                óÔ  — t          t          ¦  «        }| D ]Ð}t          ¦   «         }t          ¦   «         }|                     ¦   «         D ]�\  }}|                     |¦  «        }	|	r2|	j        }
|                     |¦  «         |                     |
¦  «         nt          }
t          |¦  «        dk    sJ d|› d|› �¦   «         ‚||
          	                     |||¦  «        ¦  «         ŒžŒÑ|S )NrV   z6Codegen only supports one namespace per operator, got z from )
r   r˜   r¬   r{   r5  r6  r¯   r+   r×   r„  )r˜  rh   r—  Úns_grouped_kernelsr¹   Únative_function_namespacesÚdispatch_keysrk   Úbackend_idxr7  r  s              r`   Úget_ns_grouped_kernelsr   ¼  s  € õ 0;½4Ñ/@Ô/@ÐØ%ð ð ˆÝ%(¡U¤UÐ"Ý™œˆØ)8×)>Ò)>Ñ)@Ô)@ð 	ð 	Ñ%ˆL˜+Ø*×5Ò5°aÑ8Ô8ÐØð 5Ø,Ô:�	Ø×!Ò! ,Ñ/Ô/Ð/Ø*×.Ò.¨yÑ9Ô9Ð9Ð9å4�	åÐ.Ñ/Ô/°1Ò4Ð4Ð4ØyÐHbÐyÐyÐjwÐyÐyñ 5Ô4Ð4à˜yÔ)×0Ò0Ø(Ð(¨¨KÑ8Ô8ñô ð ð ð	ð Ðra   rœ  c           
     óF  — g }d}|                       ¦   «         D ]‡\  }}t          |dd¬¦  «        }t          t          j        |¦  «        ¦  «        }|                     d|j        › d|                     |¦  «        › d|j        › d� 	                    |¦  «        ¦  «         Œˆ|S )Nrç   rx   é   ©Únamespace_strÚentity_nameÚ	max_levelú	
        )
r{   rL   r˜   r   Úfromkeysr„  Úprologuer  ÚepilogueÚsplit)rœ  ÚdeclarationsÚnewliner  ÚkernelsÚ	ns_helperÚordered_kernelss          r`   Ú8get_native_function_declarations_from_ns_grouped_kernelsr±  Ù  sÜ   € ð !€LØ€GØ0×6Ò6Ñ8Ô8ð 
ð 
Ñˆ	�7Ý#Ø#ØØð
ñ 
ô 
ˆ	õ �{Ô3°GÑ<Ô<Ñ=Ô=ˆØ×ÒðØ
Ôðð à‡‚ˆoÑÔðð ð Ôðð ð ÷ ŠE�'‰NŒNñ	
ô 	
ð 	
ð 	
ð Ðra   c                óF   — t          | ||¬¦  «        }t          |¬¦  «        S )a¾  
    Generate kernel declarations, in `NativeFunction(s).h`.
    :param grouped_native_functions: a sequence of `NativeFunction` or `NativeFunctionGroup`.
    :param backend_indices: kernel collections grouped by dispatch key.
    :param native_function_decl_gen: callable to generate kernel declaration for each `NativeFunction`.
    :return: a list of string, from the string with all declarations, grouped by namespaces, split by newline.
    ©r˜  rh   r—  )rœ  )r   r±  )r˜  rh   r—  rœ  s       r`   Ú get_native_function_declarationsr´  ó  s?   € õ  0Ø!9Ø'Ø!9ðñ ô Ðõ
 DØ-ðñ ô ð ra   ú%NativeFunction | NativeFunctionsGrouprŸ  c                óþ   — |                      | ¦  «        }|rWd|j        v sNJ dt          | t          ¦  «        r| j        j        n| j        j        j        › d|j        › d|j        › d�¦   «         ‚|r|j        nt          S )Nr0  zThe kernel for function z with dispatch key z has a namespace z% and it's not ending with '::native'.)	r5  r6  r—   r5   rŠ   r±   r\  rk   r+   )r¹   rŸ  r7  s      r`   Úget_kernel_namespacer·    sµ   € ð #×-Ò-¨aÑ0Ô0ÐØð  :Ð1AÔ1OÐ#OÐ#OÐ#Oð	bµ*¸QÅÑ2OÔ2OÐ#k 1¤6¤; ;ÐUVÔUaÔUfÔUkð 	bð 	bØ(Ô5ð	bð 	bà,Ô:ð	bð 	bð 	bñ $PÔ#OÐOð +;ÐXÐÔ&Ð&Õ@Xðra   r|   ÚrocmrA  Úskip_dispatcher_op_registrationÚgen_dispatch_helpersc        	        óÀ  ‡‡‡‡‡‡‡‡‡— g }	t          t          ¦  «        Št          t          ¦  «        Št          t          ¦  «        }
d}t          j        ‰t
          j        |||d ‰¬¦  «        }t          j        ‰t
          j        |||d ‰¬¦  «        }t          j        ‰t
          j        |||d ‰¬¦  «        }|D ]â}t          |‰¬¦  «         
                    dd¦  «        Š‰‰                               ||¦  «        ¦  «         ‰‰                               ||¦  «        ¦  «         t          |t          ¦  «        r|j        n|j        j        }||
‰         vrt          t          ¦  «        |
‰<   |
‰         |                               ||¦  «        ¦  «         Œã‰D ]½Št!          ‰‰         ¦  «        dk    rŒt#          ‰¬¦  «        ŠdŠ|
‰         D ]?}|
‰         |         sŒ‰d|› d	‰› d
|                     |
‰         |         ¦  «        › d�z  ŠŒ@|	                     |                      dˆˆˆˆˆˆˆˆˆf	d„¦  «                             |¦  «        ¦  «         Œ¾|	S )Nrç   ©r¸  rA  Úclass_method_namer¹  ©r¹   rŸ  r0  rx   r   )r¤  z
TORCH_LIBRARY_IMPL(r%  z, m) {
    z
}zRegisterDispatchDefinitions.inic            	     óž   •	— ‰j         ‰j        ‰rt          j        ‰¦  «        ng ‰ ‰         ‰rdn‰d‰                     ¦   «         ‰‰         dœS )Nrx   )Úns_prologueÚns_epilogueÚdispatch_helpersÚdispatch_anonymous_definitionsÚ"static_init_dispatch_registrationsÚdeferred_dispatch_registrationsÚdispatch_namespaceÚdispatch_namespaced_definitions)r©  rª  ÚdestÚgen_registration_helpersr
  )	Úanonymous_definitionsrŸ  rk   rº  Úkernel_namespaceÚns_definitionsr¯  Úregistration_bodyr¹  s	   €€€€€€€€€r`   r�   z1get_native_function_definitions.<locals>.<lambda>l  sm   ø€ Ø#,Ô#5Ø#,Ô#5à+ð)­Ô(EÀkÑ(RÔ(RÐ(RàØ6KØ(ô7ð 7ð;+¸"¸"à*Ø79Ø*6×*<Ò*<Ñ*>Ô*>Ø7EÐFVÔ7Wðð € ra   )r   r˜   r™   rÈ  ÚRegisterDispatchKeyrM   ÚNAMESPACED_DEFINITIONÚANONYMOUS_DEFINITIONr÷  r·  rê   r„  r—   r5   r  r\  r×   rL   r  Úsubstitute_with_templater«  )r|   r˜  rk   rŸ  r^  r¸  rA  r¹  rº  ÚdefinitionsÚregistrationsr­  Úns_genÚanonymous_genÚreg_genr¹   r  rÊ  rË  rÌ  r¯  rÍ  s     ``   ``        @@@@@r`   Úget_native_function_definitionsr×    s*  øøøøøøøøø€ ð  €KÝ+6µtÑ+<Ô+<€NÝ2=½dÑ2CÔ2CÐÝ5@ÅÑ5FÔ5F€MØ€GÝÔ%ØÝÔ$ØØØØØ(Gðñ ô €Fõ Ô,ØÝÔ#ØØØØØ(Gðñ ô €Mõ Ô&ØÝÔØØØØØ(Gðñ ô €Gð &ð 
ð 
ˆÝ/°!ÀÐMÑMÔM×UÒUØ˜ñ
ô 
Ðð 	Ð'Ô(×/Ò/ØˆF�1‰IŒIñ	
ô 	
ð 	
ð 	Ð.Ô/×6Ò6ØˆM˜!ÑÔñ	
ô 	
ð 	
õ & a­Ñ8Ô8ÐTˆAŒKˆK¸a¼lÔ>Tð 	ð ˜MÐ*:Ô;Ð;Ð;Ý.9½$Ñ.?Ô.?ˆMÐ*Ñ+ØÐ&Ô'¨	Ô2×9Ò9ØˆG�A‰JŒJñ	
ô 	
ð 	
ð 	
ð +ð  
ð  
ÐÝˆ~Ð.Ô/Ñ0Ô0°AÒ5Ð5ØÝ#Ð2BÐCÑCÔCˆ	ØÐØ&Ð'7Ô8ð 	ð 	ˆIØ Ð!1Ô2°9Ô=ð ØØð "Øð"ð "Ø!-ð"ð "à‡\‚\�-Ð 0Ô1°)Ô<Ñ=Ô=ð"ð "ð "ñ ÐÐð 	×ÒØ×'Ò'Ø1ðð ð ð ð ð ð ð ð ð ð ð ñô ÷$ Še�G‰nŒnñ'	
ô 	
ð 	
ð 	
ð, Ðra   c           
     ó   — g }t          t          ¦  «        }d}t          j        |t          j        ||d d|¬¦  «        }	| D ]]}
t          |
|¬¦  «                             d|                     ¦   «         ¦  «        }||          	                     |	|
¦  «        ¦  «         Œ^| 
                    ¦   «         D ]›\  }}t          |¦  «        dk    rŒt          |dd¬	¦  «        }t          t          j        |¦  «        ¦  «        }| 	                    d|j        › d|                     |¦  «        › d|j        › d
�                     |¦  «        ¦  «         Œœ|S )Nrç   F)r¸  r½  r¹  rA  r¾  rõ  r   rx   é   r£  r§  )r   r˜   rÈ  rÎ  rM   ÚNAMESPACED_DECLARATIONr·  rê   r
  r„  r{   r×   rL   r   r¨  r©  r  rª  r«  )r˜  rk   rŸ  r^  r¸  rA  r¬  rœ  r­  rŠ   r¹   r  r®  r¯  r°  s                  r`   Úget_namespaced_declarationrÛ  „  s   € ð !€LÝ/:½4Ñ/@Ô/@ÐØ€GÝÔ#ØÝÔ%ØØØØ(-Øðñ ô €Dð &ð 
ð 
ˆÝ(¨1¸+ÐFÑFÔF×NÒNØ�l×(Ò(Ñ*Ô*ñ
ô 
ˆ	ð 	˜9Ô%×,Ò,ØˆD�‰GŒGñ	
ô 	
ð 	
ð 	
ð 1×6Ò6Ñ8Ô8ð 
ð 
Ñˆ	�7Ýˆw‰<Œ<˜1ÒÐØÝ#Ø#°¸qð
ñ 
ô 
ˆ	õ �{Ô3°GÑ<Ô<Ñ=Ô=ˆØ×ÒðØ
Ôðð à‡‚ˆoÑÔðð ð Ôðð ð ÷ ŠE�'‰NŒNñ	
ô 	
ð 	
ð 	
ð Ðra   Úschema_selectorútuple[list[str], str]c           
     óˆ  — t          t          ¦  «        }| D ]"}||j                                      |¦  «         Œ#d}g }d }|                     ¦   «         D ]k\  }}t          t          t          |¦  «        |¦  «        ¦  «        }	|dk    r|	}Œ8|}d}
|t          v rdnd}|d|› d|› d|
                     |	¦  «        › d	�z  }Œl||fS )
Nrx   Úatenré   ÚTORCH_LIBRARY_FRAGMENTÚTORCH_LIBRARYrç   r3  z	, m) {
  z
};)	r   r˜   r  rœ   r{   rK   r]  r.   r  )rg   rÜ  Úns_native_functionsÚnative_functionÚschema_registrationsÚaten_schema_registrationsÚcustom_namespacer  r�   Úschema_registrations_bodyÚtabÚtorch_library_macros               r`   Ú(get_native_function_schema_registrationsrê  ´  s5  € õ
 <GÅtÑ;LÔ;LÐØ+ð Oð OˆØ˜OÔ5Ô6×=Ò=¸oÑNÔNÐNÐNØÐØ "ÐØÐØ/×5Ò5Ñ7Ô7ð ð Ñˆ	�5Ý$(Ý•^ OÑ4Ô4°eÑ<Ô<ñ%
ô %
Ð!ð
 ˜ÒÐØ(AÐ%Ð%à(ÐØˆCð
 Õ 3Ð3Ð3ð )Ð(à$ð  ð
 !ð %Øð%ð %Ø'ð%ð %à‡8‚8Ð%Ñ&Ô&ð%ð %ð %ñ Ð Ð ð &Ð';Ð<Ð<ra   Ústructured_native_functionsúSequence[NativeFunctionsGroup]Ústatic_dispatch_idxÚcpu_fmÚfunctions_keysúset[DispatchKey]rž  úSequence[DispatchKey]c           
     ó4  ‡ ‡‡‡‡‡‡
‡‡‡‡‡— |                      dˆfd„¦  «         d„ ‰ D ¦   «         Šˆfd„‰ D ¦   «         Š|                      dˆˆfd„¦  «         |                      dˆˆfd„¦  «         |                      d	ˆ ˆfd
„¦  «         t          ‰‰¬¦  «        Š|                      dˆfd„¦  «         |	D ]]Št          ‰||¦  «        }‰|v rEd‰› d�Š|                     ‰› d	�dˆˆfd„¦  «         |                     ‰› d�dˆˆˆˆ
ˆfd„¦  «         ~Œ^d S )NzNativeMetaFunctions.hc                 óN   •— g t          t          t          ‰ ¦  «        ¦  «        dœS )N)ÚNativeMetaFunctions_includesÚ NativeMetaFunctions_declarations©r˜   rK   rç  )rë  s   €r`   r�   z(gen_aggregated_headers.<locals>.<lambda>ê  s.   ø€ Ø,.Ý04ÝÕ:Ð<WÑXÔXñ1ô 1ð
ð 
€ ra   c                ó8   — g | ]}t           j        |j        v ¯|‘ŒS rs   ©r?   r=  r˜  ©rt   Úfns     r`   ró   z*gen_aggregated_headers.<locals>.<listcomp>ñ  s-   € ð ð ð Ø­¬¸2¼;Ð)FÐ)FˆÐ)FÐ)FÐ)Fra   c                ó   •— g | ]}|‰v¯|‘Œ	S rs   rs   )rt   rú  Úmethod_native_functionss     €r`   ró   z*gen_aggregated_headers.<locals>.<listcomp>ô  s+   ø€ ð #ð #ð #Ø¨Ð3JÐ)JÐ)JˆÐ)JÐ)JÐ)Jra   úMethodOperators.hc            	     óv   •— g t          t          t          t          j        ‰¬¦  «        ‰ ¦  «        ¦  «        dœS )N©rq  ©ÚMethodOperators_includesÚMethodOperators_declarations©r˜   rK   rn  rM   r~  )rü  rí  s   €€r`   r�   z(gen_aggregated_headers.<locals>.<lambda>ù  sL   ø€ Ø(*Ý,0ÝÝ$ÝÔ*Ø8Kðñ ô ð ,ñô ñ-ô -ð
ð 
€ ra   zOperators.hc            	     óx   •— dgt          t          t          t          j        ‰¬¦  «        ‰ ¦  «        ¦  «        dœS )Nz!#include <ATen/MethodOperators.h>rÿ  )ÚOperators_includesÚOperators_declarationsr  )Únon_method_native_functionsrí  s   €€r`   r�   z(gen_aggregated_headers.<locals>.<lambda>  sO   ø€ Ø#FÐ"GÝ&*ÝÝ$ÝÔ*Ø8Kðñ ô ð 0ñô ñ'ô 'ð
ð 
€ ra   úFunctions.hc                 óz   •— t          ‰¦  «        dgt          t          t          ¦   «         ‰ ¦  «        ¦  «        dœS )Nz#include <ATen/Operators.h>)r  ÚFunctions_includesÚFunctions_declarations)r  r˜   rK   r‹  ©rg   rí  s   €€r`   r�   z(gen_aggregated_headers.<locals>.<lambda>  sN   ø€ Ý-JØ#ñ.ô .ð $AÐ"AÝ&*ÝÝ#Ñ%Ô%Ø$ñô ñ'ô 'ð
ð 
€ ra   )r˜  rh   zNativeFunctions.hc                 ó   •— dg‰ dœS )Nz%#include <ATen/NativeMetaFunctions.h>)ÚNativeFunctions_includesÚNativeFunctions_declarationsrs   )r¬  s   €r`   r�   z(gen_aggregated_headers.<locals>.<lambda>*  s   ø€ Ø)PÐ(QØ,8ð
ð 
€ ra   r  úFunctions_inl.h>úDispatchKeyFunctions.hc                 ó(   •— t          ‰ ¦  «        ‰dœS ©N)rk   Úinline_headers©r†   ©rk   Úinl_headerss   €€r`   r�   z(gen_aggregated_headers.<locals>.<lambda>8  s   ø€ Ý$'¨Ñ$5Ô$5Ø&1ðð € ra   úFunctions_inl.húDispatchKeyFunctions_inl.hc            
     óf   •— g ‰                      ¦   «         t          ‰‰‰ ‰         ‰‰d¬¦  «        dœS )NT)r˜  rk   rŸ  r^  r¸  rA  )Ú!DispatchKeyFunctions_inl_includesrÆ  Ú dispatch_namespaced_declarations)r
  rÛ  )rh   rk   r˜  r¸  r^  s   €€€€€r`   r�   z(gen_aggregated_headers.<locals>.<lambda>@  sJ   ø€ Ø9;Ø*6×*<Ò*<Ñ*>Ô*>Ý8RØ1IØ%1Ø$3°LÔ$AØ!)Ø!Ø#ð9ñ 9ô 9ðð € ra   )Úwriter´  r}   Úwrite_with_template)rg   r˜  rë  rí  r^  rh   rî  rl   rï  rž  r¸  r|   r¬  rk   r  rü  r  s   ``````    ` @@@@@r`   Úgen_aggregated_headersr  Ø  sK  øøøøøøøøøøøø€ ð  ‡L‚LØð	
ð 	
ð 	
ð 	
ñô ð ðð Ø%ðñ ô Ðð#ð #ð #ð #Ø%ð#ñ #ô #Ðð ‡L‚LØð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ‡L‚LØð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ‡L‚LØð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 4Ø!9Ø'ðñ ô €Lð ‡L‚LØð	
ð 	
ð 	
ð 	
ñô ð ð &ð ð ˆÝ+¨L¸*ÀfÑMÔMˆØ˜>Ð)Ð)ØJ¨LÐJÐJÐJˆKà×"Ò"ØÐ,Ð,Ð,Ø(ðð ð ð ð ñô ð ð ×"Ò"ØÐ0Ð0Ð0Ø,ðð ð ð ð ð ð ð ñô ð ð" ˆBð=ð ra   Úops_fmc                ó¾  ‡‡‡‡‡‡‡‡‡‡‡‡‡— t          t          ¦  «        Š| D ]"}‰|j                                      |¦  «         Œ#t          t          ¦  «        }|D ]$}|j        Š|‰                              |¦  «         Œ%‰                     ¦   «         D ]Ñ\  ŠŠ|                     ‰› d�dˆˆfd„¦  «         |                     ‰› d�dˆˆˆfd„¦  «         |                     ‰g ¦  «        }d„ |D ¦   «         Št          ‰¦  «        dk    Š‰r|                     ‰› d	�d
ˆfd„¦  «         t          ||t          j
        ¬¦  «        Š|                     ‰› d�dˆˆˆfd„¦  «         ŒÒdD ]#\  ŠŠ|                     ‰› d�ˆˆˆfd„¦  «         Œ$|	D �]2Š‰|vrŒ‰                     ¦   «         Šg Š‰                     ¦   «         D ]«\  ŠŠ|                     ‰g ¦  «        }t          t          t          j        |‰         t          j        ||
dd d¬¦  «        |¦  «        ¦  «        Št          ‰¦  «        dk    rŒu‰                     ‰¦  «         |                     ‰› d‰› d�dˆˆfd„¦  «         Œ¬t#          ‰||¦  «        }d‰› d�Š|                     ‰› d�dˆˆfd„¦  «         |                     ‰› d�dˆˆfd „¦  «         ~�Œ4|                     d!ˆfd"„¦  «         d S )#Nz_ops.hz
Operator.hc            	     ót   •— dt          t          t          t          j        ‰¬¦  «        ‰ ¦  «        ¦  «        iS )Nr¬  rÿ  r  )Ú	functionsrí  s   €€r`   r�   z*gen_per_operator_headers.<locals>.<lambda>p  sF   ø€ Ø¥ÝÝ(Ý"Ô.Ø<Oðñ ô ð "ñô ñ!ô !ð
€ ra   ú.hz
Function.hc                 ó¢   •— t          t          ˆfd„‰ ¦  «        ¦  «        d‰› d�t          t          t          ¦   «         ‰ ¦  «        ¦  «        dœS )Nc                ó&   •— t          | ‰¬¦  «        S )N)rú   )r  ©rú  rí  s    €r`   r�   z<gen_per_operator_headers.<locals>.<lambda>.<locals>.<lambda>ƒ  s   ø€ Õ#=ØÐ.Að$ñ $ô $€ ra   r  ú_ops.h>)Ústatic_dispatch_ops_headersÚoperator_includesÚfunction_definitions)r˜   rK   r‹  )r#  r±   rí  s   €€€r`   r�   z*gen_per_operator_headers.<locals>.<lambda>€  sy   ø€ Ý/3Ýðð ð ð ð "ñ	ô ñ0ô 0ð &I¸4Ð%HÐ%HÐ%HÝ(,ÝÝ'Ñ)Ô)Ø!ñô ñ)ô )ðð € ra   c                óJ   — g | ] }t          |t          ¦  «        ¯|j        ¯|‘Œ!S rs   )r—   r6   rÎ   rù  s     r`   ró   z,gen_per_operator_headers.<locals>.<listcomp>”  sE   € ð  
ð  
ð  
àÝ˜"Õ2Ñ3Ô3ð 
ð 9;¼ð 
Øð 
ð  
ð  
ra   r   z_meta.hzNativeMetaFunction.hc                 óL   •— dt          t          t          ‰ ¦  «        ¦  «        iS )NÚmeta_function_declarationsrö  )Ústructured_functionss   €r`   r�   z*gen_per_operator_headers.<locals>.<lambda>Ÿ  s,   ø€ Ø0µ$Ý Ý=Ð?Sñô ñ3ô 3ð€ ra   r³  z	_native.hzNativeFunction.hc                 ó   •— ‰rd‰› d�ng ‰ dœS )Nr  z_meta.h>)Úextra_includesÚnative_function_declarationsrs   )r¬  Úis_structuredr±   s   €€€r`   r�   z*gen_per_operator_headers.<locals>.<lambda>¯  s+   ø€ à<IÐQÐ8¨$Ð8Ð8Ð8Ð8Èrà0<ð	ð € ra   ))Ú	Functionsrx   )Ú	OperatorsÚ_ops)ÚNativeMetaFunctionsÚ_meta)ÚNativeFunctionsÚ_nativec                 ór   •— ‰ › d�ˆfd„t          ‰                     ¦   «         ¦  «        D ¦   «         ‰ › d�g iS )NÚ	_includesc                ó    •— g | ]
}d |› ‰› d�‘ŒS )r  ú.h>rs   )rt   r±   Úsuffixs     €r`   ró   z>gen_per_operator_headers.<locals>.<lambda>.<locals>.<listcomp>À  s9   ø€ ð )ð )ð )àð <¨$Ð;°Ð;Ð;Ð;ð)ð )ð )ra   Ú_declarations)rg  rQ  )ÚcategoryÚfunctions_by_root_namer?  s   €€€r`   r�   z*gen_per_operator_headers.<locals>.<lambda>¿  sa   ø€ ØÐ&Ð&Ð&ð )ð )ð )ð )å &Ð'=×'BÒ'BÑ'DÔ'DÑ EÔ Eð)ñ )ô )ð Ð*Ð*Ð*¨Bð€ ra   TFr¼  r  z_dispatch.hzDispatchKeyFunction.hc                 ó   •— ‰‰ dœS )N)rÆ  r  rs   )r¬  rÆ  s   €€r`   r�   z*gen_per_operator_headers.<locals>.<lambda>ç  s   ø€ Ø*<Ø8Dðð € ra   r  r  r  r  c                 ó(   •— t          ‰ ¦  «        ‰dœS r  r  r  s   €€r`   r�   z*gen_per_operator_headers.<locals>.<lambda>ó  s   ø€ Ý # LÑ 1Ô 1Ø"-ðð € ra   r  r  c                 óB   •— ‰ˆfd„t          ‰ ¦  «        D ¦   «         g dœS )Nc                ó"   •— g | ]}d |› d‰› d�‘ŒS )r  r  r  rs   )rt   r±   rÆ  s     €r`   ró   z>gen_per_operator_headers.<locals>.<lambda>.<locals>.<listcomp>ý  s>   ø€ ð 6ð 6ð 6àð R¨$ÐQÐQÐ1CÐQÐQÐQð6ð 6ð 6ra   )rÆ  r  r  )rg  )Údispatch_namesrÆ  s   €€r`   r�   z*gen_per_operator_headers.<locals>.<lambda>û  sE   ø€ Ø&8ð6ð 6ð 6ð 6å & ~Ñ 6Ô 6ð6ñ 6ô 6ð 57ðð € ra   rý  c                 ó`   •— t          d„ ‰                      ¦   «         D ¦   «         ¦  «        g dœS )Nc              3  óZ   K  — | ]&\  }}t          d „ |D ¦   «         ¦  «        ¯d|› d�V — Œ'dS )c              3  ó<   K  — | ]}t           j        |j        v V — Œd S rr   rø  rù  s     r`   rw   zGgen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>.<genexpr>  s+   è è € ÐIÐI¸•w”~¨¬Ð4ÐIÐIÐIÐIÐIÐIra   r  r(  N)rS  )rt   r±   r#  s      r`   rw   z=gen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>	  sb   è è € ð /ð /á#�D˜)ÝÐIÐI¸yÐIÑIÔIÑIÔIð/Ø3 dÐ3Ð3Ð3ð/ð /ð /ð /ð /ð /ra   r   )rg  r{   )rB  s   €r`   r�   z*gen_per_operator_headers.<locals>.<lambda>  sI   ø€ Ý(.ð /ð /à'=×'CÒ'CÑ'EÔ'Eð/ñ /ô /ñ )ô )ð
 -/ð
ð 
€ ra   )r   r˜   r	  rœ   r{   r  ry   r×   r´  rÈ  Ú#compute_native_function_declarationr  r
  rG   rÎ  rM   rÚ  r}   )rg   r˜  rí  r^  rh   rî  rl   r   rï  rž  r¸  rú  Úgrouped_functions_by_root_nameÚgroupÚgrouped_functionsr|   rA  r¬  rk   rG  rÆ  r#  rB  r  r3  r±   r/  r?  s     `             @@@@@@@@@@@@r`   Úgen_per_operator_headersrO  Q  s§  øøøøøøøøøøøøø€ õ  ?JÍ$Ñ>OÔ>OÐØð 8ð 8ˆØ˜rœ|Ô,×3Ò3°BÑ7Ô7Ð7Ð7õ 	•DÑÔð #ð *ð ;ð ;ˆØŒˆØ& tÔ,×3Ò3°EÑ:Ô:Ð:Ð:à1×7Ò7Ñ9Ô9ð I
ð I
‰ˆˆiØ×"Ò"ØˆOˆOˆOØð
ð 
ð 
ð 
ð 
ñ	
ô 	
ð 	
ð  	×"Ò"ØˆKˆKˆKØðð ð ð ð ð ñ	
ô 	
ð 	
ð, ;×>Ò>¸tÀRÑHÔHÐð 
ð  
à'ð 
ñ  
ô  
Ðõ
 Ð0Ñ1Ô1°AÒ5ˆàð 	Ø×&Ò&ØÐ Ð Ð Ø&ðð ð ð ñ
ô 
ð 
õ 8Ø%6Ø+Ý%)Ô%Mð
ñ 
ô 
ˆð
 	×"Ò"ØÐÐÐØðð ð ð ð ð ñ		
ô 		
ð 		
ð 		
ðð 
ð 
Ñˆ�&ð 	�ŠØˆOˆOˆOðð ð ð ð ð ñ		
ô 		
ð 		
ð 		
ð &ð <ñ <ˆØ˜~Ð-Ð-Øà)×/Ò/Ñ1Ô1ÐØˆà5×;Ò;Ñ=Ô=ð 	ð 	‰OˆD�)Ø >× BÒ BÀ4ÈÑ LÔ LÐÝÝÝÔ,Ø'¨Ô5ÝÔ5Ø Ø!Ø#Ø*.Ø8=ðñ ô ð &ñô ñô ˆLõ �<Ñ Ô  AÒ%Ð%Øà×!Ò! $Ñ'Ô'Ð'Ø×&Ò&ØÐ9Ð9Ð,Ð9Ð9Ð9Ø'ðð ð ð ð ñô ð ð õ ,¨L¸*ÀfÑMÔMˆØF¨ÐFÐFÐFˆà
×ÒØÐ(Ð(Ð(Ø$ðð ð ð ð ñ	
ô 	
ð 	
ð 	×ÒØÐ,Ð,Ð,Ø(ðð ð ð ð ñ	
ô 	
ð 	
ð ‰Bà
‡L‚LØð	
ð 	
ð 	
ð 	
ñ
ô 
ð 
ð 
ð 
ra   Úcore_fmÚper_operator_headersc                ó¸  ‡ ‡‡‡— |rt          ‰ |‰|‰||	|
|||¬¦  «         nt          ‰ ||‰|‰||	|||¬¦  «         |                     dˆ ˆfd„¦  «         |                     dˆ fd„¦  «         |                     dˆˆ fd„¦  «         |                     d	ˆ fd
„¦  «         dˆ fd„}|                     d|¦  «         dˆfd„}|                     d|¦  «         d S )N)rg   r˜  rí  r^  rh   rî  rl   r   rž  rï  r¸  )rg   r˜  rë  rí  r^  rh   rî  rl   rž  rï  r¸  zTensorBody.hc            	     óÞ   •— t          t          t          t          j        ‰¬¦  «        ‰ ¦  «        ¦  «        t          t          t          t          j        ‰¬¦  «        ‰ ¦  «        ¦  «        dœS )N)rp  rq  )Útensor_method_declarationsÚtensor_method_definitions)r˜   rK   r¡  rM   r~  r�  r  s   €€r`   r�   zgen_headers.<locals>.<lambda>D  s…   ø€ Ý*.ÝÝ'Ý%Ô1Ø8Kðñ ô ð %ñô ñ+ô +õ *.ÝÝ'Ý%Ô0Ø8Kðñ ô ð %ñô ñ*ô *ð
ð 
€ ra   zRedispatchFunctions.hc                 óZ   •— dt          t          t          ¦   «         ‰ ¦  «        ¦  «        iS )NÚfunction_redispatch_definitions)r˜   rK   rª  ©rg   s   €r`   r�   zgen_headers.<locals>.<lambda>\  s.   ø€ Ø-­tÝÕ2Ñ4Ô4Ð6FÑGÔGñ0ô 0ð
€ ra   zRegistrationDeclarations.hc                 ó$   •— dˆ fd„‰D ¦   «         iS )NÚregistration_declarationsc                ó0   •— g | ]}t          |‰¦  «        ‘ŒS rs   )ro  )rt   r¹   rh   s     €r`   ró   z1gen_headers.<locals>.<lambda>.<locals>.<listcomp>f  s3   ø€ ð *ð *ð *àõ 2°!°_ÑEÔEð*ð *ð *ra   rs   )rh   rg   s   €€r`   r�   zgen_headers.<locals>.<lambda>e  s3   ø€ Ø'ð *ð *ð *ð *à)ð*ñ *ô *ð
€ ra   zVmapGeneratedPlumbing.hc                 ó"   •— t          ‰ ¦  «        S rr   r%   rX  s   €r`   r�   zgen_headers.<locals>.<lambda>n  s   ø€ Õ+@ÐAQÑ+RÔ+R€ ra   ro   r+  c                 ó&  •— t          ¦   «         } t          ¦   «         }‰D ]’}|                     t          |j        j        j        ¦  «        ¦  «         |                     |j        j        j        j        ¦  «         |                      d„ |j                             ¦   «         D ¦   «         ¦  «         Œ“|h d£z  }d                     d„ t          |¦  «        D ¦   «         ¦  «        d                     d„ t          | ¦  «        D ¦   «         ¦  «        dœS )Nc              3  ó$   K  — | ]}|j         V — Œd S rr   ry  )rt   rÝ   s     r`   rw   zAgen_headers.<locals>.gen_aten_interned_strings.<locals>.<genexpr>z  s$   è è € ÐPÐP c˜œÐPÐPÐPÐPÐPÐPra   >   ÚorÚandÚnotÚxorÚbitorÚcomplÚor_eqÚand_eqÚbitandÚnot_eqÚxor_eqz \
c                ó   — g | ]}d |› d�‘Œ	S )z_(aten, rL  rs   ©rt   r±   s     r`   ró   zBgen_headers.<locals>.gen_aten_interned_strings.<locals>.<listcomp>Ž  ó$   € Ð>Ð>Ð>¨Ð#˜DÐ#Ð#Ð#Ð>Ð>Ð>ra   c                ó   — g | ]}d |› d�‘Œ	S )z_(attr, rL  rs   rk  s     r`   ró   zBgen_headers.<locals>.gen_aten_interned_strings.<locals>.<listcomp>‘  rl  ra   )Úaten_symbolsÚattr_symbols)
r¬   r¯   r†   rŠ   r±   rÕ   ÚupdaterI  r  rg  )Úattrsr#  rŠ   rg   s      €r`   Úgen_aten_interned_stringsz.gen_headers.<locals>.gen_aten_interned_stringsq  s  ø€ Ý™%œ%ˆÝ‘”ˆØ$ð 	Qð 	QˆDØ�IŠI•c˜$œ)œ.Ô-Ñ.Ô.Ñ/Ô/Ð/ð �IŠI�d”i”nÔ)Ô.Ñ/Ô/Ð/à�LŠLÐPÐP¨T¬Y×-MÒ-MÑ-OÔ-OÐPÑPÔPÑPÔPÐPÐPð 	ð 
ð 
ð 
ñ 	
ˆð $ŸLšLØ>Ð>µ°u±´Ð>Ñ>Ô>ñô ð $ŸLšLØ>Ð>µ°u±´Ð>Ñ>Ô>ñô ð	
ð 
ð 	
ra   zaten_interned_strings.hc                 óL   •— dd                      t          ‰ ¦  «        ¦  «        iS )NÚenum_of_valid_tagsz,
)r  rg  )r�   s   €r`   Úgen_tags_enumz"gen_headers.<locals>.gen_tags_enum—  s"   ø€ Ø$ u§z¢zµ&¸Ñ2DÔ2DÑ'EÔ'EÐGÐGra   z
enum_tag.h)ro   r+  )rO  r  r  )rg   r�   r˜  rë  rí  r^  rh   rP  rî  rl   r   rž  rï  r¸  rQ  rr  ru  s   ``  ` `          r`   Úgen_headersrv    s¼  øøøø€ ð$ ð 
Ý Ø-Ø%=Ø 3ØØ+ØØ!ØØ'Ø)Øð	
ñ 	
ô 	
ð 	
ð 	
õ 	Ø-Ø%=Ø(CØ 3ØØ+ØØ!Ø'Ø)Øð	
ñ 	
ô 	
ð 	
ð ‡M‚MØð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð0 ‡L‚LØð	
ð 	
ð 	
ð 	
ñô ð ð ‡L‚LØ$ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ‡L‚LØ!Ð#RÐ#RÐ#RÐ#Rñô ð ð"
ð "
ð "
ð "
ð "
ð "
ðH ‡M‚MÐ+Ð-FÑGÔGÐGðHð Hð Hð Hð Hð Hð ‡M‚M�, Ñ.Ô.Ð.Ð.Ð.ra   Úview_groupsú"Sequence[NativeFunctionsViewGroup]Úaoti_fmÚ
cpu_vec_fmÚforce_schema_registrationÚupdate_aoti_c_shimÚaoti_backendsÚextend_aoti_c_shimc                ó&  ‡ ‡‡‡‡‡‡‡‡‡‡‡‡&‡'‡(‡)‡*‡+‡,‡-‡.‡/‡0‡1‡2‡3‡4‡5‡6‡7— dŠ,‰rdŠ,|D �]²Š*t          ‰*||
¦  «        }‰rdHˆ'ˆ*ˆ+ˆˆfd„Š3ndHˆ*ˆfd„Š3‰‰*         Š't          t          ¦  «        }‰D ]E}t          |t          ¦  «        r|j        n|j        j        }||                              |¦  «         ŒFt          ‰*¦  «         	                    ¦   «         Š+‰*t          j        k    }t          |‰‰*‰'‰‰d‰|¬¦	  «	        Š)|                     d	‰*› d
�dˆ'ˆ)ˆ*ˆ,ˆ3ˆˆfd„¦  «         ‰D ]ÑŠ/‰/j        j        rt!          ‰*¦  «        sŒ‰/j        j        j        j        Š1‰*t          j        u rF||
u sJ ‚|                     d‰1› d
�dˆˆ*ˆ/fd„¦  «         |	                     d‰1› d
�dˆ/ˆ1fd„¦  «         Œˆ‰*t          j        u r)dŠ(‰rdŠ(|                     d‰1› d�dˆˆ(ˆ*ˆ/ˆ1fd„¦  «         Œ¿t+          d‰*› d�¦  «        ‚i Š5‰D ],}|                     ¦   «         D ]}|j        �|‰5|j        <    nŒŒ-‰*|v �r®i }‰ D ]}t1          |¦  «        }|t2          v r|||<   Œ t5          d„ t7          |                     ¦   «         ¦  «        D ¦   «         ¦  «        Š.d‰* 	                    ¦   «         › d�}t;          ‰.‰5‰*‰d‰d¬¦  «        Š2|r|                     |ˆ2fd „¦  «         n¶	 t?          t@          j!         "                    |j#        |¦  «        ¦  «        5 }| $                    ¦   «         } | ‰2k    s
J d!¦   «         ‚	 d d d ¦  «         n# 1 swxY w Y   nE# tJ          $ r8 tM          t@          j!         "                    |j#        |¦  «        › d"�¦  «         Y nw xY wdIˆˆ*ˆˆ.ˆ5fd$„Š0tO          ‰*¦  «        r‰,ndŠ-|                     d‰* 	                    ¦   «         › d
�ˆˆ*ˆˆ-ˆ.ˆ0ˆ5fd%„¦  «         ~�Œ´dJˆ ˆfd'„}!|
                     d(|!¦  «         ‰}"|rtQ          j)        ¦   «         }"tU          ‰ |"¬)¦  «        \  Š&Š4|
                     d*ˆ&ˆ4ˆfd+„¦  «         dKd.„}#|
 +                    d/‰ |#ˆfd0„d1tY          ‰¦  «        id2h d3£¬4¦  «         |
                     d5tZ          ¦  «         |                     d6tZ          ¦  «         |                     d7ˆ fd8„¦  «         dLˆˆfd:„}$t          ‰¦  «        t          ‰¦  «        z   }%d;„ t]          d<„ ‰¦  «        D ¦   «         Š6d=„ t]          d>„ ‰¦  «        D ¦   «         Š7|% /                    ˆ6ˆ7fd?„‰ D ¦   «         ¦  «         |
 +                    d@|%|#|$dAh dB£¬C¦  «         |
                     dDˆˆfdE„¦  «         |
                     dFˆˆˆfdG„¦  «         d S )MNz‹#include <c10/cuda/CUDAGuard.h>
#include <ATen/cuda/ATenCUDAGeneral.h>
#include <ATen/cuda/CUDADevice.h>
#include <ATen/cuda/CUDAContext.h>zŸ#include <ATen/hip/impl/HIPGuardImplMasqueradingAsCUDA.h>
#include <ATen/hip/ATenHIPGeneral.h>
#include <ATen/hip/HIPDevice.h>
#include <ATen/hip/HIPContext.h>ro   r  c                 ó6  •— g } ‰D ]ø}d}‰                      |¦  «        rd}nht          |t          ¦  «        r0t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        rd}n#|j        r‰t          j        t          j        fv rd}|sŒ‡|  	                    d|j
        › d�¦  «         ‰t          j        k    r|  	                    d|j
        › d�¦  «         ‰‰v r!|  	                    d|j
        › d‰› d�¦  «         Œùt          t          | ¦  «        ¦  «        S )	NFTc              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rr   rd  )rt   rú  rú   s     €r`   rw   z=gen_source_files.<locals>.operator_headers.<locals>.<genexpr>Ñ  sJ   øè è € ð Eð EØ9;˜×0Ò0°Ñ4Ô4ðEð Eð Eð Eð Eð Era   r  ú
_native.h>r>  r  r  )rý   r—   r6   rS  r#  rÎ   r-   ÚMetar÷   rœ   r	  rg  r¬   )Úheadersr°  Úis_registeredrú   rk   rÆ  rï  r˜  s      €€€€€r`   Úoperator_headersz*gen_source_files.<locals>.operator_headersÅ  s‚  ø€ Ø�Ø1ð "ð "�AØ$)�MØ$×/Ò/°Ñ2Ô2ð -Ø(,˜˜õ $ AÕ';Ñ<Ô<ð -Åð Eð Eð Eð EØ?@¿{º{¹}¼}ðEñ Eô Eñ Bô Bð -ð )-˜˜ð œð -¨,Ý#Ô(Ý#ÔJð;ð +ð +ð )-˜Ø(ð !Ø à—N’NÐ#P¸¼Ð#PÐ#PÐ#PÑQÔQÐQà$Ý&ÔMòNð Nð  ŸšÐ'M¸Q¼[Ð'MÐ'MÐ'MÑNÔNÐNØ# ~Ð5Ð5ØŸšØ`°!´+Ð`Ð`Ð@RÐ`Ð`Ð`ñô ð øõ �c '™lœlÑ+Ô+Ð+ra   c                 ó’   •— dg} ‰t           j        k    r|                      d¦  «         ‰‰v r|                      d‰›d�¦  «         | S )Nz!#include <ATen/NativeFunctions.h>z#include <ATen/Functions.h>r  r  )r-   r÷   rœ   )r„  rk   rï  s    €€r`   r†  z*gen_source_files.<locals>.operator_headersï  sZ   ø€ Ø>Ð?�Ø¥;Ô#UÒUÐUØ—N’NÐ#@ÑAÔAÐAØ >Ð1Ð1Ø—N’NÐ#Q°\Ð#QÐ#QÐ#QÑRÔRÐRØ�ra   T)	r|   r˜  rk   rŸ  r^  r¸  rA  r¹  rº  ÚRegisterz.cppzRegisterDispatchKey.cppc                 óp   •— t          ‰¦  «        r‰nddt          j        ‰ ‰‰¦  «         ‰¦   «         d‰dœS )Nrx   )Úextra_cuda_headersÚexternal_backend_headersÚdispatch_headersÚops_headersrÂ  Údispatch_definitions)r0   rÈ  Úgen_registration_headers)rú   rŽ  rk   rŠ  r†  rQ  r¸  s   €€€€€€€r`   r�   z"gen_source_files.<locals>.<lambda>	  sW   ø€ å'¨Ñ5Ô5ð'Ð&8Ð&8àØ,.Ý$(Ô$AØ!Ð#7¸ñ%ô %ð  0Ð/Ñ1Ô1Ø$&Ø(<ðð € ra   Ú	UfuncCPU_zUfuncCPU.cppc                 ó€   •— t          ‰¦  «        t          j        ‰‰ ‰         ¦  «        t          j        ‰¦  «        dœS )N)Úmeta_declarationÚnative_declarationÚnative_definitions)rç  rÈ  rK  Úcompute_ufunc_cpu)rh   rk   r°  s   €€€r`   r�   z"gen_source_files.<locals>.<lambda>.	  sD   ø€ Ý,MÈaÑ,PÔ,PÝ.2Ô.VØ˜¨|Ô<ñ/ô /õ /3Ô.DÀQÑ.GÔ.Gðð € ra   ÚUfuncCPUKernel_zUfuncCPUKernel.cppc                 ó2   •— ‰t          j        ‰ ¦  «        dœS )N)r±   r”  )rÈ  Úcompute_ufunc_cpu_kernel)r°  r±   s   €€r`   r�   z"gen_source_files.<locals>.<lambda>9	  s    ø€ Ø $Ý.2Ô.KÈAÑ.NÔ.Nðð € ra   z%#include <ATen/native/cuda/Loops.cuh>z$#include <ATen/native/hip/Loops.cuh>Ú
UfuncCUDA_z.cuzUfuncCUDA.cuc                 ó„   •— ‰‰t          ‰¦  «        t          j        ‰‰ ‰         ¦  «        t          j        ‰¦  «        dœS )N)r±   Úcuda_headersr’  r“  r”  )rç  rÈ  rK  Úcompute_ufunc_cuda)rh   r›  rk   r°  r±   s   €€€€€r`   r�   z"gen_source_files.<locals>.<lambda>E	  sJ   ø€ Ø $Ø(4Ý,MÈaÑ,PÔ,PÝ.2Ô.VØ˜¨|Ô<ñ/ô /õ /3Ô.EÀaÑ.HÔ.Hðð € ra   zunrecognized z
 for ufuncc              3  ó    K  — | ]	\  }}|V — Œ
d S rr   rs   )rt   r  Úvalues      r`   rw   z#gen_source_files.<locals>.<genexpr>_	  s7   è è € ð .ð .Ù"˜!˜U�ð.ð .ð .ð .ð .ð .ra   Úc_shim_r$  rx   ©Úheaderr~  Úincludesc                 ó   •— ‰ S rr   rs   )Ú
new_headers   €r`   r�   z"gen_source_files.<locals>.<lambda>q	  s   ø€ ˜J€ ra   aŸ  

WARNING: The generated AOTInductor C shim header files have unexpectedly changed. This
indicates an AOTInductor fallback operator ABI backward compatibility breakage!!!
Only in a limited number of situations, this is allowed:

1. You added a fallback op to the inductor_fallback_ops list in torchgen/aoti/fallback_ops.py.
If that's the case, run `python torchgen/gen.py --update-aoti-c-shim` to update the existing
C shim header files.

2. You added a new default argument to an existing fallback op. This is clearly a BC breaking
change in the AOTInductor land. In this case, you need to keep a manual copy of that existing
fallback op in a file, e.g. torch/csrc/inductor/aoti_torch/c/shim.h, bump up the version
number of that fallback op in the newly generated C shim files, and update the cpp wrapper
codegen to generate the correct cpp call for this op. Contact AOTInductor team for assistance.

                        z
 not foundr†   c                 óÆ   •— g } ‰D ]-}t          |‰‰‰‰¬¦  «        }|�|                      |¦  «         Œ.d                     t          t	          | ¦  «        ¦  «        ¦  «        S )N)r~  rç   )r    rœ   r  rg  r¬   )r„  rŠ   r¡  rh   rk   r~  Úfallback_native_functionsÚstructured_func_group_dicts      €€€€€r`   Úheaders_for_aotiz*gen_source_files.<locals>.headers_for_aoti�	  su   ø€ Ø�Ø5ð 	/ð 	/�DÝ0ØØ2Ø$Ø'Ø+=ðñ ô �Fð Ð)ØŸš vÑ.Ô.Ð.øØ—y’y¥­¨G©¬Ñ!5Ô!5Ñ6Ô6Ð6ra   c            
     óL   •— t          ‰‰‰‰ d‰ ‰¦   «         dz   ‰z   ¬¦  «        S )NFrç   r   )r   )rh   rk   r~  Úextra_headersr¦  r¨  r§  s   €€€€€€€r`   r�   z"gen_source_files.<locals>.<lambda>¤	  s>   ø€ �Ø-Ø.Ø Ø#Ø Ø'9Ø-Ð-Ñ/Ô/°$Ñ6¸ÑFðñ ô € ra   rš  c            
     ó  •— ˆfd„‰D ¦   «         } d„ | D ¦   «         t          t          t          t          j        ‰¦  «        | ¦  «        ¦  «        t          t          t          t          j        ‰¦  «        | ¦  «        ¦  «        dœS )Nc                ó4   •— g | ]}t          |‰¦  «        ¯|‘ŒS rs   )rí  )rt   rú  r^  s     €r`   ró   z@gen_source_files.<locals>.gen_backend_select.<locals>.<listcomp>³	  s9   ø€ ð 
ð 
ð 
ØÕ-AÀ"ÀhÑ-OÔ-Oð
Øð
ð 
ð 
ra   c                ó$   — g | ]}d |j         › d�‘ŒS )r  r(  ©r	  rù  s     r`   ró   z@gen_source_files.<locals>.gen_backend_select.<locals>.<listcomp>·	  s3   € ð ð ð Ø@BÐ; b¤lÐ;Ð;Ð;ðð ð ra   )r�  Ú!backend_select_method_definitionsÚ%backend_select_function_registrations)r˜   rK   rï  rM   r�  r÷  )Úrelevant_fnsrg   r^  s    €€r`   Úgen_backend_selectz,gen_source_files.<locals>.gen_backend_select²	  s²   ø€ ð
ð 
ð 
ð 
Ø)ð
ñ 
ô 
ˆðð ØFRðñ ô õ 26ÝÝ(­Ô):¸HÑEÔEÀ|ñô ñ2ô 2õ
 6:ÝÝ(­Ô)<¸hÑGÔGÈñô ñ6ô 6ð
ð 
ð 	
ra   zRegisterBackendSelect.cpp)rg   rÜ  zRegisterSchema.cppc                 ó   •— ‰rg n‰ ‰rg n‰dœS )N)rå  rä  rs   )rå  rä  r¹  s   €€€r`   r�   z"gen_source_files.<locals>.<lambda>Ô	  s-   ø€ à.ð*+¨¨à*à.ð%& B Bà%ð
ð 
€ ra   rú  ú@NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroupc                ó   — | j         S rr   r®  )rú  s    r`   Úkey_funcz"gen_source_files.<locals>.key_funcÞ	  s   € ð Œ|Ðra   zOperators.cppc                óh   •— d| j         › d�g t          t          j        ‰¬¦  «        | ¦  «        gdœS )Nr  r>  rÿ  )r†  rÒ  )r	  rn  rM   r�  r'  s    €r`   r�   z"gen_source_files.<locals>.<lambda>ç	  sV   ø€ Ø!H°r´|Ð!HÐ!HÐ!HÐ IðÕ ÝÔ%Ø4Gðñ ô ð ñô ðð!
ð !
€ ra   r  é   >   rÒ  r†  r  )Úkey_fnÚenv_callableÚbase_envÚ
num_shardsÚsharded_keyszFunctions.cppzTensorMethods.cppzATenOpList.cppc                 óL   •— dt          t          t          ‰ ¦  «        ¦  «        iS )NÚaten_ops)r˜   rK   r¯  rX  s   €r`   r�   z"gen_source_files.<locals>.<lambda>
  s"   ø€ Ø��X¥oÐ7GÑHÔHÑIÔIð
€ ra   r°  c                ó„   •— dd„} || ¦  «        t          ‰| ¦  «        t          ‰| ‰t          j                 ¦  «        dœS )Nr°  r´  ro   r  c                óB  — t          | t          ¦  «        rLd| j        j        › d�d| j        j        › d�g}| j        �#|d| j        j        › d�d| j        j        › d�gz  }|S t          | t
          ¦  «        r”d| j        j        › d�d| j        j        › d�d| j        j        › d�d| j        j        › d�g}| j        �#|d| j        j        › d�d| j        j        › d�gz  }| j	        �#|d| j	        j        › d�d| j	        j        › d�gz  }|S d| j        › d�d| j        › d�gS )Nr  r‚  r(  )
r—   r7   r  r	  r€  r6   r\  rÇ  rÔ   r  )r°  r„  s     r`   Úgen_op_headerszPgen_source_files.<locals>.functionalization_env_callable.<locals>.gen_op_headers
  s£  € õ ˜!Õ5Ñ6Ô6ð "ð G¨!¬&Ô*:ÐFÐFÐFØC¨!¬&Ô*:ÐCÐCÐCð�ð ”;Ð*ØØO¨a¬kÔ.CÐOÐOÐOØL¨a¬kÔ.CÐLÐLÐLð ñ �Gð �Ý˜AÕ3Ñ4Ô4ð àL¨!¬,Ô*@ÐLÐLÐLØI¨!¬,Ô*@ÐIÐIÐIØE¨!¬%¬/ÐEÐEÐEØB¨!¬%¬/ÐBÐBÐBð	�ð ”9Ð(ØØM¨a¬iÔ.AÐMÐMÐMØJ¨a¬iÔ.AÐJÐJÐJð ñ �Gð ”9Ð(ØØM¨a¬iÔ.AÐMÐMÐMØJ¨a¬iÔ.AÐJÐJÐJð ñ �Gð �ð B¨!¬+ÐAÐAÐAØ>¨!¬+Ð>Ð>Ð>ðð ra   )r�  Úfunc_definitionsÚfunc_registrations)r°  r´  ro   r  )r!   r"   r-   rô   )r°  rÂ  rh   r^  s     €€r`   Úfunctionalization_env_callablez8gen_source_files.<locals>.functionalization_env_callable
  sj   ø€ ð%	ð %	ð %	ð %	ðP *˜>¨!Ñ,Ô,Ý @ØØñ!ô !õ #EØØØ¥Ô EÔFñ#ô #ð
ð 
ð 	
ra   c                ó(   — i | ]}|j         j        |“ŒS rs   ©rŠ   r±   r’  s     r`   ú
<dictcomp>z$gen_source_files.<locals>.<dictcomp>I
  s.   € ð :ð :ð :àð 	
ŒŒ�Qð:ð :ð :ra   c                óD   — t          |                      ¦   «         ¦  «        S rr   ©r˜   r#  ©r°  s    r`   r�   z"gen_source_files.<locals>.<lambda>K
  s   € ¥T¨!¯+ª+©-¬-Ñ%8Ô%8€ ra   c                ó(   — i | ]}|j         j        |“ŒS rs   rÇ  r’  s     r`   rÈ  z$gen_source_files.<locals>.<dictcomp>M
  s+   € ð 4ð 4ð 4ØˆŒŒ�Qð4ð 4ð 4ra   c                óD   — t          |                      ¦   «         ¦  «        S rr   rÊ  rË  s    r`   r�   z"gen_source_files.<locals>.<lambda>N
  s   € µD¸¿º¹¼Ñ4GÔ4G€ ra   c              3  óT   •K  — | ]"}|j         j        ‰v¯|j         j        ‰v¯|V — Œ#d S rr   rÇ  )rt   r¹   Ústructured_mapÚview_maps     €€r`   rw   z#gen_source_files.<locals>.<genexpr>P
  sL   øè è € ð ð àØŒ6Œ;˜nÐ,Ð,°´´ÀHÐ1LÐ1Lð 	
à1LÐ1LÐ1LÐ1Lðð ra   zRegisterFunctionalization.cppr¢  >   r�  rÃ  rÄ  Úfunc_add_back_views_definitionsÚ!func_add_back_views_registrations)r¹  rº  r¼  r½  zFunctionalInverses.hc                 óH   •— dt          t          ˆ fd„‰¦  «        ¦  «        iS )NÚview_inverse_declarationsc                ó$   •— t          ‰| ¦  «        S rr   )r#   )r°  r^  s    €r`   r�   z4gen_source_files.<locals>.<lambda>.<locals>.<lambda>j
  s   ø€ ÕLØ  !ñô € ra   )r˜   rK   )r^  rw  s   €€r`   r�   z"gen_source_files.<locals>.<lambda>g
  s?   ø€ Ø'­Ýðð ð ð ð  ñ	ô ñ*ô *ð	
€ ra   zCompositeViewCopyKernels.cppc            	     ó0  •— d„ ‰D ¦   «         d„ ‰D ¦   «         z   t          t          t          ‰ t          j                 ¦  «        ‰¦  «        ¦  «        t          t          t
          ‰¦  «        ¦  «        t          t          t          ‰¦  «        ¦  «        dœS )Nc                ó‚   — g | ]<}d                       d„ |j        €|j        gn|j        |j        gD ¦   «         ¦  «        ‘Œ=S )rç   c              3  ó<   K  — | ]}d |j         › d|j         › d�V — ŒdS )r  ú_ops.h>
#include <ATen/ops/r‚  Nr®  r’  s     r`   rw   z@gen_source_files.<locals>.<lambda>.<locals>.<listcomp>.<genexpr>‡
  sb   è è € ð 	ð 	ð ðB¨!¬+ð Bð Bð +,¬+ð	Bð Bð Bð	ð 	ð 	ð 	ð 	ð 	ra   )r  r€  r  ©rt   r°  s     r`   ró   z6gen_source_files.<locals>.<lambda>.<locals>.<listcomp>†
  sn   € ð ð ð ð ð —	’	ð 	ð 	ð %&¤KÐ$7˜œ˜˜¸a¼fÀaÄkÐ=Rð	ñ 	ô 	ñ 	ô 	ðð ð ra   c                óp   — g | ]3}d                       d„ |j        |j        |j        fD ¦   «         ¦  «        ‘Œ4S )rç   c              3  óR   K  — | ]"}|®d|j         v¯d|j        › d|j        › d�V — Œ#d S )Nr‘  r  rÙ  r‚  )rª   r	  r’  s     r`   rw   z@gen_source_files.<locals>.<lambda>.<locals>.<listcomp>.<genexpr>”
  sl   è è € ð ð ð Ø�}¨¸A¼FÐ)BÐ)Bð	B¨!¬+ð Bð Bà*+¬+ðBð Bð Bð *CÐ)BÐ)BÐ)Bðð ra   )r  rÔ   r  r\  rÚ  s     r`   ró   z6gen_source_files.<locals>.<lambda>.<locals>.<listcomp>“
  sc   € ð 	ð 	ð 	ð ð —	’	ð ð ð  œi¨¬°A´LÐAð	ñ ô ñ ô ð	ð 	ð 	ra   )r�  Ú#CompositeViewCopyKernel_DefinitionsÚ(GeneratedCompositeFunctional_DefinitionsÚ!GeneratedCompositeOut_Definitions)r˜   rK   r$   r-   r÷   rB   rC   )rh   rë  rw  s   €€€r`   r�   z"gen_source_files.<locals>.<lambda>…
  sÑ   ø€ ðð ð %ðñ ô ð	ð 	ð 5ð	ñ 	ô 	ñõ. 48ÝÝ.Ø'Ý'ÔNôñô ð
  ñô ñ	4ô 	4õ 9=ÝÝ3Ø/ñô ñ9ô 9õ 26ÝÝ,Ø/ñô ñ2ô 2ðQ.
ð .
€ ra   )ro   r  )ro   r†   )ro   rš  )rú  r´  ro   r†   )r°  r´  ro   rš  )0r}   r   r˜   r—   r5   r  r\  rœ   r†   r
  r-   rõ   r×  r  rÇ  Úufunc_inner_loopr2   rŠ   r±   ÚCPUÚCUDArÓ   r#  rÍ   r   r   Útuplerg  r{   r   r  r¶   Úosr…   r  Úinstall_dirÚreadÚFileNotFoundErrorÚprintr0   rE   rv  rê  Úwrite_shardedr  r™   rG   r„  )8rg   r˜  rë  rw  r^  rí  rh   ry  rP  rz  rî  rl   rž  rï  r¸  r{  rQ  r¹  r|  r}  r~  r|   Úns_grouped_native_functionsÚgrouped_native_functionr  rº  Ú
func_grouprŠ   Ú	fallbacksÚop_nameÚheader_file_nameÚold_fileÚ
old_headerr²  rÜ  r¶  rÅ  Ú
all_groupsrå  rú   r›  rŽ  rk   rÆ  rŠ  rª  r¦  r°  r¨  r±   r¤  r†  rä  r§  rÏ  rÐ  s8   ```````      `` ``  `                 @@@@@@@@@@@@@@@@@@r`   Úgen_source_filesró  �  s­	  øøøøøøøøøøøøøøøøøøøøøøøøøøøøøø€ ð0&Ðð
 ð $ð$Ðð &ð nñ nˆÝ+¨L¸*ÀfÑMÔMˆØð 2	ð&,ð &,ð &,ð &,ð &,ð &,ð &,ð &,ð &,ð &,ð &,ðTð ð ð ð ð ð ð (¨Ô5ˆÝ&1µ$Ñ&7Ô&7Ð#Ø'?ð 	Sð 	SÐ#õ Ð5µ~ÑFÔFðBÐ'Ô1Ð1à,Ô7ÔAð ð
 (¨	Ô2×9Ò9Ð:QÑRÔRÐRÐRå  Ñ.Ô.×4Ò4Ñ6Ô6Ðð
 �KÔMÒMð 	õ  ?ØØ%=Ø%Ø%ØØØØ,KØ!5ð
 
ñ 
 
ô 
 
Ðð 	×ÒØ)�|Ð)Ð)Ð)Ø%ðð ð ð ð ð ð ð ð ð ñ	
ô 	
ð 	
ð" -ð +	Oð +	OˆAØ”5Ô)ð Õ1FÀ|Ñ1TÔ1Tð ØØ”<Ô$Ô)Ô.ˆDØ�{œÐ.Ð.Ø˜V�|�|�|�|Ø×&Ò&Ø* Ð*Ð*Ð*Ø"ðð ð ð ð ð ñ
ô 
ð 
ð ×.Ò.Ø0 dÐ0Ð0Ð0Ø(ðð ð ð ð ñô ð ð ð ¥Ô!1Ð1Ð1ØF�Øð JØ#I�LØ×&Ò&Ø* Ð*Ð*Ð*Ø"ðð ð ð ð ð ð ð ñô ð ð õ %Ð%M°\Ð%MÐ%MÐ%MÑNÔNÐNà%'Ð"Ø5ð 	ð 	ˆJØ"×,Ò,Ñ.Ô.ð ð �ØÔ+Ð7ØKUÐ.¨tÔ/GÑHØ�Eð 8øð ˜=Ð(Ñ(ØˆIØ(ð .ð .�Ý.¨tÑ4Ô4�ØÕ3Ð3Ð3Ø)-�I˜gÑ&øÝ(-ð .ð .Ý&,¨Y¯_ª_Ñ->Ô->Ñ&?Ô&?ð.ñ .ô .ñ )ô )Ð%ð
  B¨×);Ò);Ñ)=Ô)=ÐAÐAÐAÐÝ(Ø)Ø*ØØØØ#5Øðñ ô ˆJð "ð Ø—’Ø$Ø&Ð&Ð&Ð&ñô ð ð ð
ÝÝœŸš WÔ%8Ð:JÑKÔKñô ð à!Ø%-§]¢]¡_¤_˜
Ø)¨ZÒ7Ð7Ð7ð :Ñ7Ô7Ð7Ð7ð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øøõ* )ð ð ð ÝÝœ7Ÿ<š<¨Ô(;Ð=MÑNÔNÐZÐZÐZñô ð ð ð ðøøøð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7õ ';¸<Ñ&HÔ&HÐPÐ"Ð"Èbð ð �MŠMØ4˜,×,Ò,Ñ.Ô.Ð4Ð4Ð4ðð ð ð ð ð ð ð ð ð ñô ð ð ‰Bð
ð 
ð 
ð 
ð 
ð 
ð 
ð( ‡L‚LÐ,Ð.@ÑAÔAÐAà€OØ ð >Ý*Ô;Ñ=Ô=ˆõ
 	1Ø)¸?ð	ñ 	ô 	ñØ!Øð ‡L‚LØð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñ
ô 
ð 
ðð ð ð ð
 ×ÒØØØð
ð 
ð 
ð 
ð ,Õ-JØ#ñ.ô .ð
ð
 ð
ð 
ð 
ð' ñ ô ð ð4 ‡L‚L�¥$Ñ'Ô'Ð'à‡M‚MÐ%¥tÑ,Ô,Ð,à‡M‚MØð	
ð 	
ð 	
ð 	
ñô ð ð5
ð 5
ð 5
ð 5
ð 5
ð 5
ð 5
õr 	Ð(Ñ)Ô)­DØñ-ô -ñ 	ð ð:ð :åÐ8Ð8Ð:UÑVÔVð:ñ :ô :€Nð4ð 4Ý )Ð*GÐ*GÈÑ UÔ Uð4ñ 4ô 4€Hð ×Òð ð ð ð ð à!ðñ ô ñ ô ð ð ×ÒØ'ØØØ3Øð
ð 
ð 
ð ñ ô ð ð ‡L‚LØð		
ð 		
ð 		
ð 		
ð 		
ñô ð ð< ‡L‚LØ&ð.	
ð .	
ð .	
ð .	
ð .	
ð .	
ñ1ô 1ð 1ð 1ð 1s6   Ë2MÌ%L5Ì)MÌ5L9	Ì9MÌ<L9	Ì=MÍ?NÎNc                ó:   ‡— |                       dˆfd„¦  «         d S )NzDeclarations.yamlc                 ó6   •— t          d„ ‰ D ¦   «         ¦  «        S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS rs   )rY  r’  s     r`   ró   z;gen_declarations_yaml.<locals>.<lambda>.<locals>.<listcomp>¼
  s!   € ÐSÐSÐS¸QÕ5°aÑ8Ô8ÐSÐSÐSra   )r	  rX  s   €r`   r�   z'gen_declarations_yaml.<locals>.<lambda>¼
  s   ø€ •ÐSÐSÐBRÐSÑSÔSÑTÔT€ ra   )r  )rî  rg   s    `r`   Úgen_declarations_yamlr÷  ·
  s4   ø€ ð ‡L‚LØØTÐTÐTÐTñô ð ð ð ra   r	   c                 óX   — t          t          ¦  «        j                             ¦   «         S )z
    If you're depending on torchgen out-of-tree, you can use the root to figure
    out the path to native_functions.yaml
    )r	   Ú__file__ÚparentÚresolvers   ra   r`   Úget_torchgen_rootrü  À
  s   € õ
 •‰>Œ>Ô ×(Ò(Ñ*Ô*Ð*ra   c                 ó2  ‡#‡$— t          j        d¬¦  «        } |                      dddd¬¦  «         |                      dd	d
¬¦  «         |                      ddd¬¦  «         |                      ddd¬¦  «         |                      ddddd¬¦  «         |                      dddd¬¦  «         |                      ddd¬¦  «         |                      ddd¬¦  «         |                      ddd ¬¦  «         |                      d!d"d#d$¬%¦  «         |                      d&d'd(¬¦  «         |                      d)d*d#d+¬%¦  «         |                      d,d-d#d.¬%¦  «         |                      d/d0dd1¬¦  «         |                      d2d3dd4¬¦  «         |                      d5t          d#g d6¢g d6¢d7¬8¦  «         |                      d9dd:¬¦  «         |                      d;dd<¬¦  «         |                      ¦   «         Š$t          ‰$j        ‰$j        ¦  «        }t          j	         
                    ‰$j        d=¦  «        }t          j	         
                    ‰$j        d>¦  «        }d?d@lm} t          ¦   «         }‰$j        sM|                     t"          j        ¦  «         t"          j        |v r ||                     t"          j        ¦  «        = ‰$j        sM|                     t"          j        ¦  «         t"          j        |v r ||                     t"          j        ¦  «        = t-          |||¦  «        }t.          |         }|j        |j        c}Š#t5          |¦  «        }	dA„ |	D ¦   «         }
t7          |¦  «        }dB„ |D ¦   «         }‰$j        › dC�}t;          |¦  «                             dDdD¬E¦  «         ‰$j        › dF�}t;          |¦  «                             dDdD¬E¦  «         ‰$j        › }t;          |¦  «                             dDdD¬E¦  «         tA          ‰$|¬G¦  «        }tA          ‰$¬H¦  «        }tA          ‰$¬H¦  «        }tA          ‰$¬H¦  «        }tA          ‰$|¬G¦  «        }tA          ‰$|¬G¦  «        }dI|i}‰$j        rtA          ‰$¬H¦  «        |dJ<   t"          j!        t"          j"        t"          j#        t"          j$        t"          j%        t"          j&        t"          j'        h}t"          j!        t"          j"        h}‰$j        r|                     t"          j        ¦  «         ‰$j        r>|                     t"          j        ¦  «         |                     t"          j        ¦  «         ‰$j(        rˆ$fdK„|D ¦   «         }g }‰$j)        rJˆ#fdL„‰$j)        D ¦   «         }‰$j)        D ]/}t#          j*        |¦  «        }||vr|                     |¦  «         Œ0dM‰$j+        v rgtY          dli dN|“dO|	“dP|
“dQ|“dR|“dS|“dT‰#“dU|“dV|“dW|“dX|“dY|“dZ|“d[|“d\‰$j-        “d]‰$j.        “d^‰$j/        “d_‰$j0        “d`‰$j1        “da|“db‰$j2        “Ž dc‰$j+        v r(tg          |||	|
||‰#||||||‰$j-        ‰$j/        ¬d¦  «         de‰$j+        v rti          ||¬f¦  «         ‰$j5        rœt;          ‰$j5        ¦  «         6                    ¦   «         }|j7        }|j8        }|dgf|dhf|dif|djfgdk„ | 9                    ¦   «         D ¦   «         z   D ]<\  }} | |z   }!|j:        | |z   z  }"| ;                    |!t          |"¦  «        ¦  «         Œ;d S d S )mNzGenerate ATen source files)Údescriptionz-sz--source-pathz!path to source directory for ATenzaten/src/ATen)Úhelpr  z-oz--output-dependenciesz:output a list of dependencies into the given file and exit)rÿ  z	--dry-runÚ
store_truez5run without writing any files (still updates outputs))Úactionrÿ  z--per-operator-headersz2generate separate headers per operator in ATen/opsz-dz--install-dirz--install_dirzoutput directoryzbuild/aten/src/ATenz--aoti-install-dirz--aoti_install_dirz%output directory for AOTInductor shimz(torch/csrc/inductor/aoti_torch/generatedz--rocmz=reinterpret CUDA as ROCm/HIP and adjust filepaths accordinglyz--mpsz'Generate MPS registration code when setz--xpuz'Generate XPU registration code when setz--op-registration-whitelistz--op_registration_whitelistÚ*z–filter op registrations by the whitelist (if set); each item is `namespace`::`operator name` without overload name; e.g.: aten::empty aten::conv2d ...)Únargsrÿ  z--op-selection-yaml-pathz--op_selection_yaml_pathaD  Provide a path to the operator selection (for custom build) YAML that contains the information about the set of selected operators and their categories (training, ...). Each operator is either a full operator name with overload or just a bare operator name. The operator names also contain the namespace prefix (e.g. aten::)z--backend-whitelistz--backend_whitelistzRfilter dispatch backend by the whitelist (if set), e.g.: CPU CUDA QuantizedCPU ...z--static-dispatch-backendz--static_dispatch_backendz?generate static dispatch code for the specific backend (if set)z!--skip-dispatcher-op-registrationz!--skip_dispatcher_op_registrationz0Avoid registering operators into the dispatcher.z--force-schema-registrationz--force_schema_registrationz}force it to generate schema-only registrations for all ops, includingthose that are not listed on --op-registration-whitelistz
--generate)r„  ÚsourcesÚdeclarations_yamlzGenerate only a subset of files)r   r  Úchoicesr  rÿ  z--update-aoti-c-shimz­Update AOTInductor C shim after adding an entry to inductor_fallback_ops in torchgen/aoti/fallback_ops.py. WARNING: Do not use this unless you are sure what you are doing!!!z--extend-aoti-c-shima…  This Flag indicates the generation of c shims for out-of-tree ATen ops,which is an extension to the In-tree ATen op c shims. This flag needs to be combined with---source-path=<out-of-tree native_functions.yaml>--aoti-install-dir=<in-tree aoti_install_dir>/extend   default is torch/csrc/inductor/aoti_torch/generated/extendWARNING: Do not use this unless you are sure what you are doing!!!znative/native_functions.yamlznative/tags.yamlr   )rž  c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rs   )r—   r6   rÚ  s     r`   ró   zmain.<locals>.<listcomp>f  s8   € ð #ð #ð #Ø­z¸!Õ=QÑ/RÔ/Rð#Ø	ð#ð #ð #ra   c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rs   )r—   r7   rÚ  s     r`   ró   zmain.<locals>.<listcomp>l  s9   € ð ð ð àÝ�aÕ1Ñ2Ô2ðØ	ðð ð ra   z/coreT)ÚparentsÚexist_okz/ops)Úoptionsrå  )r  ÚcudaÚxpuc                ó^   •— g | ])}t          |¦  «        st          |¦  «        ‰j        v ¯'|‘Œ*S rs   )r1   r†   Úbackend_whitelist)rt   r¤   r  s     €r`   ró   zmain.<locals>.<listcomp>§  sI   ø€ ð 
ð 
ð 
àÝ& qÑ)Ô)ð
õ .1°©V¬V°wÔ7PÐ-PÐ-Pð à-PÐ-PÐ-Pra   c                óD   •— g | ]}‰t          j        |¦  «                 ‘ŒS rs   )r-   Úparse)rt   Úkeyrh   s     €r`   ró   zmain.<locals>.<listcomp>¯  s9   ø€ ð 
ð 
ð 
àð �KÔ-¨cÑ2Ô2Ô3ð
ð 
ð 
ra   r  rg   r˜  rë  rw  r^  rí  rh   ry  rP  rz  rî  rl   rž  rï  r¸  r{  rQ  r¹  r|  r}  r~  r„  )rg   r�   r˜  rë  rí  r^  rh   rP  rî  rl   r   rž  rï  r¸  rQ  r  )rg   rî  rx   Úcpu_vec_Úcore_Úops_c                ó"   — g | ]\  }}||› d �f‘ŒS )r  rs   )rt   rv   Ú	device_fms      r`   ró   zmain.<locals>.<listcomp>ñ  s(   € ÐSÐSÐSÑ+<¨6°9ˆi˜F˜˜˜Ð&ÐSÐSÐSra   rs   )<ÚargparseÚArgumentParserÚadd_argumentr†   Ú
parse_argsrx  Úop_registration_whitelistrr  rä  r…   r  Úsource_pathÚtorchgen.modelrž  r¬   Úmpsr¯   r-   ÚMPSr•   r  ÚXPUr¿   rj   rg   rh   r–  r‹  rå  r	   ÚmkdirÚaoti_install_dirrJ   rá  râ  rô   rõ   rö   r÷   rƒ  r  Ústatic_dispatch_backendr  Úgenerateró  r¸  r{  rQ  r¹  r|  r~  rv  r÷  Úoutput_dependenciesrû  r±   Ústemr{   rú  Úwrite_outputs)%Úparserr^  Únative_yaml_pathr¼   rž  rƒ   Úparsed_yamlr�   rg   r˜  rë  Ú!native_functions_with_view_groupsrw  Úcore_install_dirÚops_install_dirr#  rP  rî  rz  Úcuda_fmr   ry  rl   rï  r}  rí  r  Údp_keyÚdepfile_pathÚdepfile_nameÚdepfile_stemr|   r¤  Úvarnamer…   rh   r  s%                                      @@r`   Úmainr5  È
  sØ	  øø€ ÝÔ$Ð1MÐNÑNÔN€FØ
×ÒØØØ0Øð	 ñ ô ð ð ×ÒØØØIð ñ ô ð ð
 ×ÒØØØDð ñ ô ð ð
 ×ÒØ ØØAð ñ ô ð ð
 ×ÒØØØØØ%ð ñ ô ð ð ×ÒØØØ4Ø:ð	 ñ ô ð ð ×ÒØØØLð ñ ô ð ð
 ×ÒØØØ6ð ñ ô ð ð
 ×ÒØØØ6ð ñ ô ð ð ×ÒØ%Ø%Øð-ð	 ñ ô ð ð ×ÒØ"Ø"ðMð ñ ô ð ð ×ÒØØØð*ð	 ñ ô ð ð ×ÒØ#Ø#ØØNð	 ñ ô ð ð ×ÒØ+Ø+ØØ?ð	 ñ ô ð ð ×ÒØ%Ø%ØðCð	 ñ ô ð ð ×ÒØÝØØ;Ð;Ð;Ø;Ð;Ð;Ø.ð ñ ô ð ð ×ÒØØðMð ñ ô ð ð ×ÒØØðMð ñ 	ô 	ð 	ð ×ÒÑ!Ô!€Gå(ØÔ)ØÔ&ñô €Hõ
 ”w—|’| GÔ$7Ð9WÑXÔXÐÝ”W—\’\ 'Ô"5Ð7IÑJÔJ€Nà,Ð,Ð,Ð,Ð,Ð,õ ‘%”%€KØŒ;ð DØ�Š�œÑ(Ô(Ð(åŒ?˜mÐ+Ð+Ø˜m×1Ò1µ+´/ÑBÔBÐCàŒ;ð DØ�Š�œÑ(Ô(Ð(åŒ?˜mÐ+Ð+Ø˜m×1Ò1µ+´/ÑBÔBÐCå#Ð$4°nÀkÑRÔR€KÝ.¨~Ô>€JàÔ$ØÔ#ð &Ð�oõ
  <Ð<LÑMÔMÐð#ð #Ø+ð#ñ #ô #Ðõ )MØñ)ô )Ð%ðð à2ðñ ô €Kð  "Ô-Ð4Ð4Ð4ÐÝÐ	ÑÔ× Ò ¨¸Ð Ñ=Ô=Ð=Ø Ô,Ð2Ð2Ð2€OÝˆÑÔ×Ò¨°tÐÑ<Ô<Ð<à!Ô2Ð4ÐÝÐ	ÑÔ× Ò ¨¸Ð Ñ=Ô=Ð=å¨Ð=MÐNÑNÔN€GÝ wÐ/Ñ/Ô/€FÝ"¨7Ð3Ñ3Ô3€JÝ¨Ð0Ñ0Ô0€GÝ w¸OÐLÑLÔL€FÝ¨Ð=MÐNÑNÔN€GØ˜'Ð"€JØ„{ð ?Ý-°gÐ>Ñ>Ô>ˆ
�5Ñõ
 	ŒÝÔÝÔ-ÝÔ9ÝÔ-ÝÔ:ÝÔð€Nõ 	ŒÝÔð€Mð
 „{ð ,Ø×Ò�;œ?Ñ+Ô+Ð+à„{ð +Ø×Ò�;œ?Ñ+Ô+Ð+Ø×Ò�+œ/Ñ*Ô*Ð*àÔ ð 
ð
ð 
ð 
ð 
à"ð
ñ 
ô 
ˆð /1ÐØÔ&ð +ð
ð 
ð 
ð 
àÔ6ð
ñ 
ô 
Ðð Ô2ð 	+ð 	+ˆCÝ Ô& sÑ+Ô+ˆFØ˜^Ð+Ð+Ø×"Ò" 6Ñ*Ô*Ð*øà�GÔ$Ð$Ð$Ýð 	
ð 	
ð 	
Ø-Ð-ð	
à%=Ð%=ð	
ð )DÐ(Cð	
ð $˜ð		
ð
 �Xð	
ð !4Ð 3ð	
ð ,˜Oð	
ð �Gð	
ð �Gð	
ð "�zð	
ð �6ð	
ð "�zð	
ð (˜-ð	
ð *˜>ð	
ð ”�ð	
ð  '.Ô&GÐ&Gð!	
ð" ")Ô!=Ð!=ð#	
ð$ -4Ô,SÐ,Sð%	
ð&  'Ô9Ð9ð'	
ð( (˜-ð)	
ð*  'Ô9Ð9ð+	
ð 	
ð0 �GÔ$Ð$Ð$ÝØ-Ø!Ø%=Ø(CØ 3ØØ+ØØØ!ØØ'Ø)Ø”Ø!(Ô!=ð	
ñ 	
ô 	
ð 	
ð$ ˜gÔ.Ð.Ð.ÝÐ/?ÈÐOÑOÔOÐOàÔ"ð 1Ý˜GÔ7Ñ8Ô8×@Ò@ÑBÔBˆØ#Ô(ˆØ#Ô(ˆð �RˆLØ˜Ð$Ø�gÐØ�VÐð	
ð
 TÐSÀ
×@PÒ@PÑ@RÔ@RÐSÑSÔSñTð 	1ð 	1‰JˆB�ð ˜|Ñ+ˆGØÔ&¨&°<Ñ*?Ñ@ˆDØ×Ò˜W¥c¨$¡i¤iÑ0Ô0Ð0Ð0ð1ð 1ð
	1ð 	1ra   Ú__main__)rk   r-   rl   rm   rn   rI   ro   rI   )Nr~   F)r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   ro   rf   )r~   )r   r€   r…   r†   ro   r‚   )r…   r†   ro   r‚   rr   )r…   r†   r¼   r†   rƒ   r„   r‡   rˆ   r»   r½   ro   rf   )r�   rÀ   ro   rÁ   )rà   r†   ro   r†   )rí   rî   ro   rï   )r¹   r5   rú   r(   ro   rû   )r¹   r5   rú   rî   ro   r  )rí   rî   ro   r  )r  r  r  r   ro   r†   )r  r  r¹   r5   rú   r(   ro   r†   )r  r  r¹   r5   rh   rî   ro   r†   rˆ  )r°  r6   ro   r  )r¹   r5   r^  rE   ro   rˆ   )rü  r€   ro   r†   )rà   r†   ro   r€   )r  r>   ro   r†   )r˜  r  ro   r  )r¹   r5   ro   r  )r'  r   r(  rˆ   r)  r‚   r*  r‚   r"  r+  ro   r€   )r*  r'   r(  rˆ   r)  r‚   r*  r‚   r"  r+  ro   r€   )r¹   r5   ro   r€   )r¹   r5   ro   rˆ   )r¹   r5   rh   r^  ro   r†   )rp  rq  rr  r  ro   rE   )rg   rÀ   ro   ry  )rg   rÀ   ro   rŒ  )r˜  rŒ  rh   r^  r—  r™  ro   rš  )rœ  rš  ro   r  )r˜  rŒ  rh   r^  r—  r™  ro   r  )r¹   rµ  rŸ  r(   ro   r†   )r|   rI   r˜  rŒ  rk   r-   rŸ  r(   r^  rE   r¸  rˆ   rA  rˆ   r¹  rˆ   rº  rˆ   ro   r  )r˜  rŒ  rk   r-   rŸ  r(   r^  rE   r¸  rˆ   rA  rˆ   ro   r  )rg   rÀ   rÜ  rE   ro   rÝ  )rg   rÀ   r˜  rŒ  rë  rì  rí  rî   r^  rE   rh   r^  rî  rI   rl   rm   rï  rð  rž  rñ  r¸  rˆ   ro   rÁ   )rg   rÀ   r˜  rŒ  rí  rî   r^  rE   rh   r^  rî  rI   rl   rm   r   rI   rï  rð  rž  rñ  r¸  rˆ   ro   rÁ   ) rg   rÀ   r�   r‚   r˜  rŒ  rë  rì  rí  rî   r^  rE   rh   r^  rP  rI   rî  rI   rl   rm   r   rI   rž  rñ  rï  rð  r¸  rˆ   rQ  rˆ   ro   rÁ   ),rg   rÀ   r˜  rŒ  rë  rì  rw  rx  r^  rE   rí  rî   rh   r^  ry  rI   rP  rI   rz  rI   rî  rI   rl   rm   rž  rñ  rï  rð  r¸  rˆ   r{  rˆ   rQ  rˆ   r¹  rˆ   r|  rˆ   r}  rð  r~  rˆ   ro   rÁ   )rî  rI   rg   rÀ   ro   rÁ   )ro   r	   )ro   rÁ   )­Ú
__future__r   r  Ú	functoolsrl  rÏ   rä  Úcollectionsr   r   r   Údataclassesr   r   Úpathlibr	   Útypingr
   r   r   r   r   r·   Útorchgen.api.dispatcherÚapiri  Útorchgen.api.metarÈ  Útorchgen.api.nativerõ  Útorchgen.api.structuredrÎ   Útorchgen.destrÈ  Útorchgen.aoti.fallback_opsr   Útorchgen.apir   Útorchgen.api.translater   Útorchgen.api.typesr   r   r   r   r   r   r   Útorchgen.contextr   r   r   r   Útorchgen.gen_aoti_c_shimr   r   r   r    Ú#torchgen.gen_functionalization_typer!   r"   r#   r$   Útorchgen.gen_vmap_plumbingr&   r  r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   Ú#torchgen.native_function_generationrA   rB   rC   rD   Ú!torchgen.selective_build.selectorrE   Útorchgen.utilsrF   rG   rH   rI   rJ   rK   rL   rM   Útorchgen.yaml_utilsrN   rO   Úcollections.abcrP   rQ   rS   rf   ri   rl  rj   r}   r¦   r²   Úcacherº   r¿   rž   rì   rù   r  r  r  r.  r:  rF  rZ  r]  rn  r‹  r¡  rª  r¯  rç  rí  rï  r	  r  r  r  r&  r2  r1  rY  r]  ro  rx  r‹  r–  rK  r   r±  r´  r·  r×  rÛ  rê  r  rO  rv  ró  r÷  rü  r5  rb   rs   ra   r`   ú<module>rQ     s6  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà €€€à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð =Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð8ð ð ð ð ð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 7Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ð ð )Ø(Ð(Ð(Ð(Ð(Ð(ð €GˆC�L„L€ðBð ð ð ð �ñ ô ð ð ˆZ˜Ð'9Ð;LÐ&MÑNÔN€
ð :<Ð Ð ;Ð ;Ð ;Ñ ;Ø57Ð Ð 7Ð 7Ð 7Ñ 7ðð ð ð ð, ,0ØØ %ð-#ð -#ð -#ð -#ð -#ð`ð ð ð ð ð" „ð/ð /ð /ñ „ð/ð ,0ð1ð
 !&Ø!%ð1ð 1ð 1ð 1ð 1ð 1ð@9ð 9ð 9ð 9ðx
ð 
ð 
ð 
ð4	
ð 	
ð 	
ð 	
ðð ð ð ð(ð ð ð ð ð ð ð ð ,ð  ,ð  ,ð  ,ðFRð Rð Rð Rð$Jð Jð Jð Jð:Fð Fð Fð FðX €�$ÐÑÔð`ð `ð `ð `ð `ñ `ô `ñ Ôð`ð0 €�$ÐÑÔðW&ð W&ð W&ð W&ð W&ñ W&ô W&ñ ÔðW&ðx €�$ÐÑÔð*ð *ð *ð *ð *ñ *ô *ñ Ôð*ð^ €�$ÐÑÔð'ð 'ð 'ð 'ð 'ñ 'ô 'ñ Ôð'ðZ €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð< ðMð Mð Mñ ÔðMð
yð yð yð yðx3ð 3ð 3ð 3ð €�$ÐÑÔð:&ð :&ð :&ð :&ð :&ñ :&ô :&ñ Ôð:&ðHSð Sð Sð Sð&ð ð ð ð0
ð 
ð 
ð 
ðð ð ð ð?'ð ?'ð ?'ð ?'ðF
ð 
ð 
ð 
ð@!ð !ð !ð !ðH ðUð Uð Uñ ÔðUðrð ð ð ð "ðð ð ñ "Ô!ððDð ð ð ð>,Oð ,Oð ,Oð ,Oð^ð ð ð ð8 	Ô0ðð ð ð ð ð ð:ð ð ð ð@ 	Ô0ðð ð ð ð ð ð4ð ð ð ð bð bð bð bðN,ð ,ð ,ð ,ð`!=ð !=ð !=ð !=ðHvð vð vð vðrð ð ð ðDG/ð G/ð G/ð G/ðTWð Wð Wð Wðtð ð ð ð+ð +ð +ð +ðl1ð l1ð l1ð l1ð^	 ˆzÒÐØ€D�F„F€F€F€Fð Ðra   