§
    �Štj¥Z  ã                  ó  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dl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 d d	lmZmZ d d
lmZmZmZmZ d dlmZm Z m!Z! d dl"m#Z# d dl$m%Z%m&Z& d dl'm(Z( e
rd dl)m*Z*m+Z+m,Z,m-Z-  edg d¢¦  «        Z.dQd„Z/dRd„Z0dSd„Z1 G d„ d ¦  «        Z2dTd!„Z3e2j4        e2j5        e2j6        e2j7        e2j8        e2j9        e2j:        d"d"e2j;        d"d#d$d%d&d'd(d)d"d*d+d,d-d.fdUdO„Z<e=dPk    r e3¦   «          dS dS )Vé    )ÚannotationsN)Ú
namedtuple)ÚPath)ÚAnyÚTYPE_CHECKING)Ú	setValueT)ÚBaseCppType)Ú	GenLazyIRÚGenLazyNativeFuncDefinitionÚGenTSLazyIR)Úget_grouped_native_functionsÚparse_native_yaml)Úerror_on_missing_kernelsÚgen_dispatcher_registrationsÚ"gen_dispatchkey_nativefunc_headersÚparse_backend_yaml)ÚNativeFunctionÚNativeFunctionsGroupÚOperatorName)ÚSelectiveBuilder)ÚFileManagerÚNamespaceHelper)Ú
YamlLoader)ÚCallableÚIterableÚIteratorÚSequenceÚParsedExternalYaml)Úbackend_keyÚautograd_keyÚcpp_namespaceÚbackend_indicesÚfull_codegenÚbackend_yaml_pathÚstrÚgrouped_native_functionsú/Sequence[NativeFunction | NativeFunctionsGroup]Úreturnú8tuple[list[OperatorName], list[Any], list[OperatorName]]c                óä  — t          | ¦  «        5 }t          j        |t          ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t	          |t
          ¦  «        st          dt          |¦  «        › �¦  «        ‚|                     dg ¦  «        }|                     dg ¦  «        }|                     dg ¦  «        }t	          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚t	          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚t	          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚d	„ |D ¦   «         }d
„ |D ¦   «         }|||fS )N)ÚLoaderzExpected dict from YAML, got r#   Ú
non_nativeÚir_genz&Expected full_codegen to be list, got z$Expected non_native to be list, got z Expected ir_gen to be list, got c                ó6   — g | ]}t          j        |¦  «        ‘ŒS © ©r   Úparse©Ú.0Únames     úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torchgen/gen_lazy_tensor.pyú
<listcomp>z/parse_native_functions_keys.<locals>.<listcomp>v   s#   € ÐNÐNÐN¸�LÔ.¨tÑ4Ô4ÐNÐNÐNó    c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r/   r0   r2   s     r5   r6   z/parse_native_functions_keys.<locals>.<listcomp>w   s#   € ÐBÐBÐB°4•lÔ(¨Ñ.Ô.ÐBÐBÐBr7   )
ÚopenÚyamlÚloadr   Ú
isinstanceÚdictÚAssertionErrorÚtypeÚpopÚlist)	r$   r&   ÚfÚyaml_valuesr#   r,   r-   Úfull_codegen_opnamesÚir_gen_opnamess	            r5   Úparse_native_functions_keysrF   b   s³  € õ 
ÐÑ	 Ô	 ð 6 AÝ”i ­*Ð5Ñ5Ô5ˆð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6å�k¥4Ñ(Ô(ð RÝÐP½TÀ+Ñ=NÔ=NÐPÐPÑQÔQÐQà—?’? >°2Ñ6Ô6€LØ—’ ¨rÑ2Ô2€JØ�_Š_˜X rÑ*Ô*€FÝ�l¥DÑ)Ô)ð 
ÝØIµT¸,Ñ5GÔ5GÐIÐIñ
ô 
ð 	
õ �j¥$Ñ'Ô'ð XÝÐVÅDÈÑDTÔDTÐVÐVÑWÔWÐWÝ�f�dÑ#Ô#ð PÝÐNÅÀVÁÄÐNÐNÑOÔOÐOØNÐNÀÐNÑNÔNÐØBÐB¸6ÐBÑBÔB€NØ ¨^Ð;Ð;s   �8¸<¿<Úshape_inference_hdrÚexpected_shape_infr_declsú	list[str]ÚNonec                ó”  ‡— 	 t          | ¦  «        5 }|                     ¦   «         }t          |                     d¦  «        ¦  «        Šd d d ¦  «         n# 1 swxY w Y   n%# t          $ r}t          d| › �¦  «        |‚d }~ww xY wˆfd„|D ¦   «         }|r2t          d| › dt          j         	                    |¦  «        › �¦  «        ‚d S )Nú
z<Unable to read from the specified shape_inference_hdr file: c                ó   •— g | ]}|‰v¯|‘Œ	S r/   r/   )r3   ÚdeclÚshape_infr_decl_liness     €r5   r6   z3validate_shape_inference_header.<locals>.<listcomp>‰   s+   ø€ ð ð ð Ø°dÐBWÐ6WÐ6WˆÐ6WÐ6WÐ6Wr7   zGMissing shape inference function.

Please add declare this function in zD:

and implement it in the corresponding shape_inference.cpp file.

)
r9   ÚreadÚsetÚsplitÚOSErrorr>   Ú	ExceptionÚosÚlinesepÚjoin)rG   rH   rB   Úshape_infr_declsÚeÚmissing_declsrO   s         @r5   Úvalidate_shape_inference_headerr[   {   sd  ø€ ðÝÐ%Ñ&Ô&ð 	F¨!Ø Ÿvšv™xœxÐÝ$'Ð(8×(>Ò(>¸tÑ(DÔ(DÑ$EÔ$EÐ!ð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Føøõ ð ð ð ÝØ`ÐK^Ð`Ð`ñ
ô 
àð	øøøøðøøøðð ð ð Ø2ðñ ô €Mð ð 
Ýð$Ø%8ð$ð $õ „‡‚�ÑÔð$ð $ñ
ô 
ð 	
ð
ð 
s:   ƒA! ’7AÁ	A! ÁAÁA! ÁAÁA! Á!
BÁ+A>Á>Bc                 ó   — dS )Naå  at::Tensor to_meta(const at::Tensor& tensor) {
  // undefined tensors can't be converted to the meta device, since they don't have sizes/strides
  if (!tensor.defined()) return tensor;
  auto out = at::native::empty_strided_meta_symint(tensor.sym_sizes(), tensor.sym_strides(), /*dtype=*/tensor.scalar_type(), /*layout=*/tensor.layout(), /*device=*/c10::Device(c10::kMeta), /*pin_memory=*/std::nullopt);
  // needs to handle wrapped numbers, so dtype promotion works properly.
  if (tensor.unsafeGetTensorImpl()->is_wrapped_number()) {
    out.unsafeGetTensorImpl()->set_wrapped_number(true);
  }
  return out;
}
std::optional<at::Tensor> to_meta(const std::optional<at::Tensor>& tensor) {
  if (tensor.has_value()) {
    return to_meta(*tensor);
  }
  return std::nullopt;
}

std::vector<at::Tensor> to_meta(at::ITensorListRef t_list) {
  std::vector<at::Tensor> outs;
  outs.reserve(t_list.size());
  for (const auto& tensor : t_list) {
    outs.push_back(to_meta(tensor));
  }
  return outs;
}
r/   r/   r7   r5   Úget_ltc_helper_fnsr]   –   s   € ðð r7   c                  ó€   — e Zd ZU dZded<   dZded<   dZded<   d	Zded
<   dZded<   e	Z
ded<   eZded<   dZded<   dS )Údefault_argsÚNoder%   Ú	node_baseNú
str | NoneÚnode_base_hdrú&torch/csrc/lazy/core/shape_inference.hrG   ztorch::lazy::LazyTensorÚtensor_classztorch/csrc/lazy/core/tensor.hÚtensor_class_hdrútype[GenLazyIR]Úlazy_ir_generatorú!type[GenLazyNativeFuncDefinition]Ú native_func_definition_generatorÚTorchScriptÚbackend_name)Ú__name__Ú
__module__Ú__qualname__ra   Ú__annotations__rc   rG   re   rf   r
   rh   r   rj   rl   r/   r7   r5   r_   r_   ¶   sª   € € € € € € Ø€IÐÐÐÑØ $€MÐ$Ð$Ð$Ñ$ØGÐÐGÐGÐGÑGØ1€LÐ1Ð1Ð1Ñ1Ø;ÐÐ;Ð;Ð;Ñ;Ø)2ÐÐ2Ð2Ð2Ñ2à#ð %ð ð ð ñ ð &€LÐ%Ð%Ð%Ñ%Ð%Ð%r7   r_   c                 óÎ  — t          j        d¬¦  «        } |                      dddd¬¦  «         |                      dd	d
d¬¦  «         |                      ddt          dd¬¦  «         |                      ddt          d d¬¦  «         |                      dddd¬¦  «         |                      ddt          t
          j        d¬¦  «         |                      ddt          t
          j        d¬¦  «         |                      ddt          t
          j        d ¬¦  «         |                      d!d"t          t
          j	        d#¬¦  «         |                      d$d%t          t
          j
        d&¬¦  «         |                      d'd(t          t
          j        d)¬¦  «         |                      ¦   «         }t          t          ¦  «                             ¦   «         j        d*         }t	          |d+z  d,z  d-z  ¦  «        }t
          j        }|j        rt&          }t
          j        }t+          ||j        |j        |j        |j        |j        |j        |j	        |j
        |j        |||j        ¦  «         d S ).Nz"Generate Lazy Tensor backend files)Údescriptionz-sz--source-yamlz--source_yamlzApath to source yaml file containing operator external definitions)Úhelpz-oz--output-dirz--output_dirzoutput directoryz	--dry-runz	--dry_runF)r?   Údefaultrs   z--impl-pathz--impl_pathz9path to the source C++ file containing kernel definitionsz--gen-ts-loweringsz--gen_ts_loweringsÚ
store_truezIGenerate TorchScript lowerings in addition to Lazy IR and NativeFunctions)Úactionrs   z--node-basez--node_basez7Name of backend specific custom Lazy IR Node base classz--node-base-hdrz--node_base_hdrz;Path to header file defining custom Lazy IR Node base classz--shape-inference-hdrz--shape_inference_hdrzBPath to header file defining custom Lazy shape inference functionsz--tensor-classz--tensor_classz1Name of backend specific custom Lazy Tensor classz--tensor-class-hdrz--tensor_class_hdrz5Path to header file defining custom Lazy Tensor classz--backend-namez--backend_namezName of the backend to generateé   ÚatenÚsrcÚATen)ÚargparseÚArgumentParserÚadd_argumentÚboolr%   r_   ra   rc   rG   re   rf   rl   Ú
parse_argsr   Ú__file__ÚabsoluteÚparentsrh   Úgen_ts_loweringsr   rj   Úrun_gen_lazy_tensorÚsource_yamlÚ
output_dirÚdry_runÚ	impl_path)ÚparserÚoptionsÚ
torch_rootÚ	aten_pathrh   rj   s         r5   Úmainr�   Ã   sÞ  € ÝÔ$Ð1UÐVÑVÔV€FØ
×ÒØØØØPð	 ñ ô ð ð ×Ò˜˜n¨nÐCUÐÑVÔVÐVØ
×ÒØ�[¥t°UÐASð ñ ô ð ð ×ÒØØÝØØHð ñ ô ð ð ×ÒØØØØXð	 ñ ô ð ð ×ÒØØÝÝÔ&ØFð ñ ô ð ð ×ÒØØÝÝÔ*ØJð ñ ô ð ð ×ÒØØÝÝÔ0ØQð ñ ô ð ð ×ÒØØÝÝÔ)Ø@ð ñ ô ð ð ×ÒØØÝÝÔ-ØDð ñ ô ð ð ×ÒØØÝÝÔ)Ø.ð ñ ô ð ð ×ÒÑ!Ô!€Gõ •h‘”×(Ò(Ñ*Ô*Ô2°1Ô5€JÝ�J Ñ'¨%Ñ/°&Ñ8Ñ9Ô9€IÝ)5Ô)GÐØÔð (Ý'ÐåÔ5ð %õ ØØÔØÔØŒØÔØÔØÔØÔØÔ ØÔ#ØØ(ØÔñô ð ð ð r7   FTztorch::lazyÚGetTensorListÚ$GetLtcTensorOrCreateForWrappedNumberÚTryGetLtcTensorzTORCH_LAZY_FN_COUNTER("lazy::")zLazyTensor::Createz$torch::lazy::CreateAtenFromLtcTensorz$torch::lazy::TupleAtenFromLtcTensorsztorch::lazy::ValueÚLazyTensorPtrztorch::lazy::GetBackendDevicerŒ   r…   r†   r‡   r~   rˆ   rb   ra   rc   re   rf   rh   rg   rj   ri   Úbuild_in_treeÚper_operator_headersrl   Úgen_forced_fallback_codeÚuse_lazy_shapeÚbackend_namespaceÚget_tensorlistÚget_tensor_or_wrap_numberÚtry_get_tensorÚmetrics_counterÚcreate_tensorÚcreate_from_first_tensorÚcreate_aten_from_ltc_tensorÚtuple_aten_from_ltc_tensorsÚlazy_value_classÚlazy_tensor_ptrÚget_device_fnc                óÚ  ‡‡‡‡‡‡	‡‡‡‡‡‡‡‡‡‡‡‡‡‡.‡/‡0‡1‡2‡3‡4‡5‡6‡7— |                      d¦  «        }|d         }d                     |d d…         ¦  «        }t          t          ||¦  «        ¦  «         t          j                             | d¦  «        Š7d"ˆˆ7fd„}  | ‰¦  «        }!t          j                             | d	¦  «        }"t          j                             | d
¦  «        }#t          |"|#¦  «        }$|$j        |$j        c}%Š.t          |%¦  «        Š2d#d„}&t          ‰2|&¬¦  «        Š2t          |‰2‰.¦  «        }'|'j        Š/|'j        }(|'j        })|'j        Š.t          |‰2¦  «        \  Š1Š5Š3‰1fd$d„Š0t!          j        ¦   «         }*‰/€t%          d¦  «        ‚‰.‰/                              ¦   «         }+|�t)          |%‰.‰/|(|+|‰1¦  «         	 ‰	�Bt+           ‰0t-          j        ‰.‰/         ‰¦  «        ‰2¦  «        ¦  «        },t1          ‰	|,¦  «         |+€t%          d¦  «        ‚t3          |!|+|)‰.‰2‰/|(|¦  «         |(€‰/gn‰/|(gD ]}-t5          |!‰|+‰.‰2‰/|-|*|||d¬¦  «         Œt7          |)¦  «        Š6|!                     ‰/› d�dˆ.ˆ/ˆˆ0ˆˆˆˆˆˆˆˆ2ˆˆˆˆ6ˆˆ	ˆˆˆˆfd„¦  «          |
‰.‰/         |||¦  «        Š4|!                     ddˆ0ˆ1ˆ2ˆ3ˆ4ˆˆ6fd„¦  «         |!                     d d ˆ4ˆˆ5ˆ6fd!„¦  «         d S )%Nz::éÿÿÿÿÚ	templatesÚinstall_dirr%   r(   r   c                ó(   •— t          | ‰‰¬¦  «        S )N)r¥   Útemplate_dirr‡   )r   )r¥   r‡   r§   s    €€r5   Úmake_file_managerz.run_gen_lazy_tensor.<locals>.make_file_managerO  s!   ø€ ÝØ#°,Èð
ñ 
ô 
ð 	
r7   znative/native_functions.yamlznative/tags.yamlrB   ú%NativeFunctionsGroup | NativeFunctionc                ó„   — t          | t          ¦  «        r| j        j        n| j        }t	          |j        j        ¦  «        S )z¯
        We sort the native function because of the note in concat_map_codegen.
        TODO(alanwaketan): Remove this sorting hack once all ops are grouped properly.
        )r<   r   Ú
functionalÚfuncr%   r4   )rB   r¬   s     r5   Úsort_native_functionz1run_gen_lazy_tensor.<locals>.sort_native_function_  s7   € õ
 %/¨qÕ2FÑ$GÔ$GÐSˆqŒ|Ô Ð ÈQÌVˆÝ�4”9”>Ñ"Ô"Ð"r7   )Úkeyr¬   ú)Callable[[NativeFunction], Sequence[str]]Úxsú/Iterable[NativeFunctionsGroup | NativeFunction]Úops_listúlist[OperatorName]úIterator[str]c              3  óÎ   K  — |D ]_}t          |t          ¦  «        r!t          |                     ¦   «         ¦  «        n|g}|D ]!}|j        j        |v r | |¦  «        E d{V —† Œ"Œ`dS )zÛ
        We code-gen for the functional variant, which is all we need for IR classes/lowerings/shape inferences, but we
        only code-gen additional entries for the inplace variant for the native functions.
        N)r<   r   rA   Ú	functionsr¬   r4   )r¬   r°   r²   ÚxÚfsrB   s         r5   Úconcat_map_codegenz/run_gen_lazy_tensor.<locals>.concat_map_codegen{  s“   è è € ð ð 	'ð 	'ˆAÝ(2°1Õ6JÑ(KÔ(KÐT•�a—k’k‘m”mÑ$Ô$Ð$ÐRSÐQTˆBØð 'ð '�Ø”6”; (Ð*Ð*Ø#˜t A™wœwÐ&Ð&Ð&Ð&Ð&Ð&Ð&øð'ð	'ð 	'r7   zbackend_key must be non-Nonezclass_name must be non-NoneF)r’   r“   rl   Úeager_registrationzNativeFunctions.cppzDispatchKeyNativeFunctions.cppc                 ó  •— d„ ‰‰dddddddd	d
dd‰› d‰› d�‰› d�g‰rdgng z   D ¦   «         t          ¦   «         d‰j        ‰j        t           ‰ ‰‰› d�‰ ‰         ‰‰‰‰
‰	‰‰‰‰‰‰‰‰¦  «        ‰¦  «        ¦  «        dœS )Nc                ó   — g | ]}d |› d�‘Œ	S ©z
#include <ú>r/   ©r3   Úpaths     r5   r6   z9run_gen_lazy_tensor.<locals>.<lambda>.<locals>.<listcomp>à  s3   € ð ð ð àð %˜TÐ$Ð$Ð$ðð ð r7   zATen/Functions.hzATen/native/TensorConversions.hzATen/NativeFunctions.hz6ATen/CompositeExplicitAutogradNonFunctionalFunctions.hzATen/MetaFunctions.hzATen/Operators.hzATen/native/CPUFallback.hú!torch/csrc/lazy/core/ir_builder.hz*torch/csrc/lazy/core/lazy_graph_executor.hztorch/csrc/lazy/core/metrics.hútorch/csrc/lazy/core/shape.hú/zNativeFunctions.hz	/LazyIr.hz.torch/csrc/lazy/ts_backend/ts_eager_fallback.hÚ ÚNativeFunctions)ÚincludesÚ
helper_fnsÚnative_functions_includeÚnamespace_prologueÚnamespace_epilogueÚnative_function_definitions)r]   ÚprologueÚepiloguerA   )r"   r   r–   r¹   r�   rœ   r›   r”   r¡   r˜   r—   r&   r    rš   rj   Ú	ns_helperr†   rG   re   rf   r™   rž   s   €€€€€€€€€€€€€€€€€€€€€€r5   ú<lambda>z%run_gen_lazy_tensor.<locals>.<lambda>ß  s  ø€ ðð ð %Ø'Ø&Ø5Ø,ØLØ*Ø&Ø/Ø7Ø@Ø4Ø2Ø!ÐBÐB KÐBÐBÐBØ!Ð,Ð,Ð,ðð& 0ðÐEÐFÐFàñ)ðñ ô õ2 -Ñ.Ô.Ø(*Ø"+Ô"4Ø"+Ô"4Ý+/Ø"Ð"Ø4Ð4Ø&Ð7Ð7Ð7Ø'¨Ô4Ø$Ø0Ø)Ø&Ø1Ø&Ø'Ø%Ø0Ø3Ø3Ø'Ø%ñô ð" -ñ%ô ñ,ô ,ð=4
ð 4
€ r7   zLazyIr.hc            
     ó„   •— d„ dD ¦   «         ‰�d‰› d�gng t           ‰ ‰‰‰‰z   ¦  «        ¦  «        ‰j        ‰j        dœS )Nc                ó   — g | ]}d |› d�‘Œ	S r½   r/   r¿   s     r5   r6   z9run_gen_lazy_tensor.<locals>.<lambda>.<locals>.<listcomp>  s3   € ð ð ð àð %˜TÐ$Ð$Ð$ðð ð r7   )zATen/core/Formatting.hzc10/core/ScalarType.hztorch/csrc/lazy/core/hash.hútorch/csrc/lazy/core/ir.hrÂ   ÚoptionalÚvectorz
#include "ú")Úlazy_ir_sysincÚlazy_ir_incÚir_declarationsrÉ   rÊ   )rA   rÌ   rÍ   )r¹   r#   r&   r-   Úlazy_ir_objrc   rÎ   s   €€€€€€€r5   rÏ   z%run_gen_lazy_tensor.<locals>.<lambda>  s†   ø€ ðð ððñ ô ð Ð(ð :¨Ð9Ð9Ð9Ð:Ð:àÝ#Ø"Ð"ØÐ!9¸<È&Ñ;Pñô ñ ô  ð
 #,Ô"4Ø"+Ô"4ð-
ð 
€ r7   zLazyNonNativeIr.hc                 ót   •— d„ g d¢‰r‰gng z   D ¦   «         t          j        ‰‰ ¦  «        ‰j        ‰j        dœS )Nc                ó   — g | ]
}|¯d |› d�‘ŒS r½   r/   r¿   s     r5   r6   z9run_gen_lazy_tensor.<locals>.<lambda>.<locals>.<listcomp><  s;   € ð 
'ð 
'ð 
'àð ð
'Ø$˜TÐ$Ð$Ð$ð
'ð 
'ð 
'r7   )rÒ   rÁ   z+torch/csrc/lazy/core/internal_ops/ltc_ops.hrd   )Úlazy_non_native_ir_incÚnon_native_ir_nodesrÉ   rÊ   )ÚdestÚ!generate_non_native_lazy_ir_nodesrÌ   rÍ   )rÙ   rc   r,   rÎ   s   €€€€r5   rÏ   z%run_gen_lazy_tensor.<locals>.<lambda>;  sq   ø€ ð
'ð 
'ðð ð ð '4Ð;�M�?�?¸ñ=ð
'ñ 
'ô 
'õ $(Ô#IØ˜Kñ$ô $ð #,Ô"4Ø"+Ô"4ð!
ð 
€ r7   )r¥   r%   r(   r   )rB   r©   r(   r%   )r¬   r¯   r°   r±   r²   r³   r(   r´   )rR   rW   r   r	   rU   rÀ   r   Únative_functionsr"   r   Úsortedr   r   r    r!   rF   r   Úget_nop_selectorr>   Únative_function_class_namer   rA   rÞ   ÚGenLazyShapeInferenceDefinitionr[   r   r   r   Úwrite_with_template)8rŒ   r…   r†   r‡   rˆ   ra   rc   re   rf   rG   rh   rj   r’   r“   rl   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   rŸ   r    r¡   Ú	lv_tokensÚlv_classÚlv_nsr¨   ÚfmÚnative_yaml_pathÚtags_yaml_pathÚparsed_yamlrà   r­   Úparsed_backend_yamlr    r!   ÚselectorÚ
class_namerH   Údispatch_keyr"   r   r¹   r#   r&   r-   rÙ   r,   rÎ   r§   s8     ``  ```` `   ` ````````` ``                 @@@@@@@@@@r5   r„   r„   #  s¨  øøøøøøøøøøøøøøøøøøøøøøøøøøøøø€ ðL !×&Ò& tÑ,Ô,€IØ˜Œ}€HØ�IŠI�i   ”nÑ%Ô%€EÝ�k˜% Ñ*Ô*Ñ+Ô+Ð+Ý”7—<’< 	¨;Ñ7Ô7€Lð
ð 
ð 
ð 
ð 
ð 
ð 
ð
 
Ð	˜:Ñ	&Ô	&€Bå”w—|’| IÐ/MÑNÔNÐÝ”W—\’\ )Ð-?Ñ@Ô@€NÝ#Ð$4°nÑEÔE€KàÔ$ØÔ#ð &Ð�oõ  <Ð<LÑMÔMÐð#ð #ð #ð #õ  &Ø Ð&:ð ñ  ô  Ðõ -ØÐ-¨ñô Ðð &Ô1€KØ&Ô3€LØ'Ô5€MØ)Ô9€Oõ (CØÐ-ñ(ô (Ñ$€L�*˜fð (4ð'ð 'ð 'ð 'ð 'õ   Ô0Ñ2Ô2€HàÐÝÐ;Ñ<Ô<Ð<Ø  Ô-×HÒHÑJÔJ€JàÐÝ ØØØØØØØñ	
ô 	
ð 	
ðð Ð&Ý$(ØÐÝÔ4Ø# KÔ0°,ñô ð )ñ	ô ñ%
ô %
Ð!õ 	(Ð(;Ð=VÑWÔWÐWØÐÝÐ:Ñ;Ô;Ð;õ 'Ø
ØØØØ ØØØñ	ô 	ð 	ð &Ð-ˆˆˆ°KÀÐ3Nð
ð 
ˆõ 	%ØØØØØ$ØØØØ'Ø!5Ø%Ø$ð	
ñ 	
ô 	
ð 	
ð 	
õ    Ñ.Ô.€IØ×ÒØÐ+Ð+Ð+Ø(ð4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ð 4	
ñ8ô 8ð 8ðt $Ð#Ø˜Ô$ l°I¸~ñô €Kð ×ÒØØð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð< ×ÒØØð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r7   Ú__main__)r$   r%   r&   r'   r(   r)   )rG   r%   rH   rI   r(   rJ   )r(   r%   )r(   rJ   )<rŒ   r%   r…   r%   r†   r%   r‡   r~   rˆ   rb   ra   r%   rc   rb   re   r%   rf   r%   rG   r%   rh   rg   rj   ri   r’   r~   r“   r~   rl   r%   r”   r~   r•   r~   r–   r%   r—   r%   r˜   r%   r™   r%   rš   r%   r›   r%   rœ   r~   r�   r%   rž   r%   rŸ   r%   r    r%   r¡   r%   r(   rJ   )>Ú
__future__r   r{   rU   Úcollectionsr   Úpathlibr   Útypingr   r   r:   Útorchgen.destrÞ   Útorchgen.api.lazyr   Útorchgen.api.typesr	   Útorchgen.dest.lazy_irr
   r   r   Útorchgen.genr   r   Útorchgen.gen_backend_stubsr   r   r   r   Útorchgen.modelr   r   r   Ú!torchgen.selective_build.selectorr   Útorchgen.utilsr   r   Útorchgen.yaml_utilsr   Úcollections.abcr   r   r   r   r   rF   r[   r]   r_   r�   ra   rc   re   rf   rG   rh   rj   rl   r„   rm   r/   r7   r5   ú<module>r     sí  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€à Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hðð ð ð ð ð ð ð ð ð ð ð ð NÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ >Ð >Ð >Ð >Ð >Ð >Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø *Ð *Ð *Ð *Ð *Ð *ð ð GØFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFð~  �ZØØWÐWÐWñô Ð ð<ð <ð <ð <ð2
ð 
ð 
ð 
ð6ð ð ð ð@
&ð 
&ð 
&ð 
&ð 
&ñ 
&ô 
&ð 
&ð]ð ]ð ]ð ]ðL "Ô+Ø ,Ô :Ø$Ô1Ø(Ô9Ø+Ô?Ø)5Ô)Gð 	Ô5àð "'Ø$Ô1Ø%*Øð +Ø)Ø%KØ+Ø<Ø-Ø%*Ø'MØ'MØ0Ø*Ø8ðIjð jð jð jð jðZ	 ˆzÒÐØ€D�F„F€F€F€Fð Ðr7   