Ë
    P/æj�– ã                  ó   — 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Zd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl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'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7 d dl8Z8d dl9Z8d dl:m;c m<Z= d dl>Z8d dl?m@c mAZB d d	l8mCZC d d
lDmEZEmFZFmGZGmHZHmIZI d dlJmKZK d dlLmMZMmNZN d dlOmPZP d dlQmRZRmSZS d dlTmUZUmVZV d dlWmXZX d dlYmZZZm[Z[ d dl\m]Z] 	 d dl^Z_	 d dlaZ8d dlbmcZd d dlLmeZe d dlamfZf ddlgm<Z< e_rpe_e_jÐ                  e_jÒ                  e_jÔ                  fZkdeld<   e_ede_jÐ                  edjÐ                  e_jÒ                  edjÒ                  e_jÔ                  edjÔ                  iZmndZki Zmd dlnmoZompZpmqZq  e2d«      Zse8jè                  jê                  jì                  Zw ejð                  ejJ                  «      Zydeld<   i Zzdeld<   d Z{d!Z|d"e|› d#�Z} ejü                  e«      Z€i Z�d$eld%<    ejð                  d&„ «      Z‚d'eld(<    e�j                  «       Z„	 	 	 	 	 	 �dd)„Z…d a†�dd*„Z‡�dd+„Zˆd a‰�dd,„ZŠ�dd-„Z‹�dd.„ZŒ�dd/„Z��dd0„ZŽe	 	 �d	 	 	 	 	 �dd2„«       Z�e.�d	�d
d4„«       Z�e.	 �d		 	 	 	 	 �dd5„«       Z��d�dd6„Z�e�j"                  �dd7„«       Z’e8�j&                  e8�j(                  e8�j*                  fe8�j,                  e8�j.                  e8�j0                  fe8�j2                  e8�j4                  e8�j6                  fe8�j8                  e8�j:                  fe8�j<                  e8�j>                  fe8�j@                  e8�jB                  fe8�jD                  e8�jF                  e8�jH                  fe8�jJ                  e8�jL                  e8�jN                  fe8�jP                  e8�jR                  e8�jT                  fe8�jV                  e8�jX                  fi
Z­ G d8„ d9«      Z® e®«       Z¯d:„ Z°�dd;„Z±d<„ Z²d=„ Z³�dd>„Z´�dd?„Zµ�dd@„Z¶dA„ Z·dB„ Z¸dC„ Z¹ G dD„ dE«      Zºe.�ddF„«       Z»e.	 	 	 	 	 	 �ddG„«       Z»e.�ddH„«       Z»dI„ Z»e�jx                  dJk\  rIe�jz                  e�j|                  e�j~                  ejd                  e�j€                  e�j‚                  fZÂdK„ ZÃdL„ ZÄdM„ ZÅdN„ ZÆdO„ ZÇdP„ ZÈdQ„ ZÉdR„ ZÊdS„ ZËdT„ ZÌdU„ ZÍdV„ ZÎ e
j>                  dW«      dX„ «       ZÏ�ddY„ZÐdZ„ ZÑe�j¤                   G d[„ d\«      «       ZÓe�j¤                   G d]„ d^«      «       ZÔd_ZÕ e�j¬                  eÕ¬`«      a×daeldb<   	 	 �ddc„ZØ�ddd„ZÙ�dde„ZÚ�ddf„ZÛ G dg„ dh«      ZÜdaÝdieldj<   �ddk„ZÞe�j¤                   G dl„ dm«      «       Zß G dn„ doeº«      Zà eà«       eà_á        dp„ Zâddqœdr„Zãds„ Zä�ddt„Zåedu„ «       Zædv„ Zç�d	dw„Zèdx„ Zédy„ Zêdz„ Zë e
j>                  d«      d{„ «       Zìd|„ Zí�dd}„Zîd~„ Zï ed«      d€„ «       Zðe§e•eñe¬eòeó eôd«      eõ�jì                  e�jî                  e8�jð                  e8�jò                  e8�jô                  e8�jö                  hZüd�eld‚<    e[«       r,d dlýZýeü�jý                  eý�jþ                  �jò                  «       	 dƒ„ �Z d„„ �Zd…„ �Zd†„ �Zd‡„ �Zdˆ„ �Zd‰„ �Z eôi �j                  «       «      �ZdŠeld‹<    eôi �j                  «       «      �Z
dŒeld�<    eô e�j                  «       �j                  «       «      �ZdŒeldŽ<    eô �ed«      «      �Zd�eld�<   �e�j                  �Z�e�j$                  �Zd‘„ �Zd’„ �Zd“„ �Z�e�Zd”„ �Zd•„ �Zd–„ �Zd—„ �Zd˜„ �Z�d	d™„�Zdš„ �Zd›„ �Z �ddœ„�Z!�dd�„�Z"dž�Z#d dŸ�l$�m%�Z% d „ �Z&d¡„ �Z'd¢„ �Z(d£„ �Z)dd3d¤d3d1d3d3e€�jT                  d3f	d¥„�Z+d¦„ �Z,ej:                  d§„ «       �Z- eº«       �Z. ejð                  �e/«      �Z0d¨eld©<   g �Z1dªeld«<    eº«       �Z2 e
j>                  d«      d¬„ «       �Z3d­„ �Z4�dd®„�Z5d¯„ �Z6d°„ �Z7�d	d±„�Z8 e�jr                  «       �Z:d²„ �Z;ed³„ «       �Z<d´„ �Z=dµ„ �Z>d¶„ �Z?�dd·„�Z@d¸„ �ZA�dd¹„�ZB�ddº„�ZC�dd»„�ZD�d	�d d¼„�ZE G d½„ d¾e	�jŒ                  «      �ZG�d!d¿„�ZH	 	 	 	 	 	 	 	 �d"dÀ„�ZIdÁ„ �ZJdÂ„ �ZKdÃdÄg�ZLdÅdÆg�ZMg dÇ¢�ZN�eL�eMz   �eNz   �ZOdÈ„ �ZP	 	 	 �d#dÉ„�ZQ	 	 	 �d#dÊ„�ZRdË„ �ZSdÌ„ �ZT G dÍ„ dÎ«      �ZUdÏ„ �ZV G dÐ„ dÑ«      �ZW G dÒ„ dÓ«      �ZXdÔ„ �ZYdÕ„ �ZZdÖ„ �Z[d×„ �Z\�d$dØ„�Z]e�j¤                   G dÙ„ dÚ«      «       �Z^�d%dÛ„�Z_�d&dÜ„�Z`dÝ„ �ZadÞ„ �Zbdß„ �Zcdà„ �Zd�d'dá„�Zedâ„ �Zfdã„ �Zgdä„ �Zhej:                  �d(då„«       �Zidæ„ �Zjdç„ �Zk G dè„ dée8jè                  jê                  «      �Zl�d)dê„�Zmdë„ �Zndì„ �Zo G dí„ dî«      �Zp �eq«       �Zrdïeldð<   �ddñ„�Zsdò„ �Ztej:                  dó„ «       �Zudô„ �Zv�ddõ„�Zwdö„ �Zxd÷„ �Zydø„ �Zzdù„ �Z{dú„ �Z|i �Z}dûeldü<   dý„ �Z~dþ„ �Z G dÿ„ �d «      �Z€y# e`$ r dZ_Y �	ŒAw xY w# er$ r Y �Œ°w xY w(*  é    )ÚannotationsN)Úcontextmanager)Úis_dataclass)Ú	lru_cache)ÚMethodWrapperType)ÚAnyÚCallableÚcastÚClassVarÚCounterÚDefaultDictÚDequeÚDictÚIterableÚIteratorÚKeysViewÚListÚOptionalÚoverloadÚSetÚTupleÚTypeÚTypeVarÚUnionÚ
ValuesView)ÚLiteralÚ	TypeGuard)Úfx)Ú_get_function_stack_atÚ_instruction_counterÚ_len_torch_function_stackÚ_pop_torch_function_stackÚ_push_on_torch_function_stack)Úenable_python_dispatcher)ÚSourceÚTracingContext)Úis_sparse_compressed)Úlog_chromium_event_internalÚlog_compilation_event)Ú_format_graph_codeÚlazy_format_graph_code)ÚLazyModuleMixin)Ú
has_tritonÚhas_triton_package)ÚRemovableHandle)Údetect_fake_mode©Ú
LazyStringé   )ÚconfigzTuple[types.ModuleType, ...]ÚNP_SUPPORTED_MODULES© )Ú
FakeTensorÚis_fakeÚmaybe_get_fake_modeÚTzDefaultDict[str, Counter[str]]ÚcountersúDict[str, Any]Úoptimus_scuba_logzAhttps://pytorch.org/docs/main/torch.compiler_troubleshooting.htmlz;https://pytorch.org/docs/main/torch.compiler_nn_module.htmlzSee z& for more information and limitations.zDict[str, List[float]]Úcompilation_time_metricsc                 ó4   — t        j                  t        «      S ©N)ÚcollectionsÚdefaultdictÚfloatr6   ó    úV/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_dynamo/utils.pyú<lambda>rF   ‰   s   € ŒK×#Ñ#¤EÓ*€ rD   zDict[str, Dict[str, float]]Úframe_phase_timingc                óª   — 	 dd l }|j                  | |¬«      S # t        $ r0 dj                  d„ t        j                  |g| «      D «       «      cY S w xY w)Nr   ©Úheadersú
c              3  óZ   K  — | ]#  }d j                  t        t        |«      «      –— Œ% y­w)ú, N)ÚjoinÚmapÚstr)Ú.0Úrows     rE   ú	<genexpr>ztabulate.<locals>.<genexpr>˜   s$   è ø€ ò 
Ø),ˆD�I‰I”cœ#˜s“m×$ñ
ùs   ‚)+)ÚtabulateÚImportErrorrN   Ú	itertoolsÚchain)ÚrowsrJ   rT   s      rE   rT   rT   �   sZ   € ð
Ûà× Ñ  ¨wÐ Ó7Ð7øÜò 
Ø�y‰yñ 
Ü09·±ÀÀ	È4Ó0Pô
ó 
ò 	
ð
ús   ‚ ™6AÁAc                 ó   — t         dz   a y ©Nr3   )Ú
curr_framer6   rD   rE   Úincrement_framer\   ¡   s   € ä˜a‘�JrD   c                 óX   — t         j                  «        t        j                  «        day ©Nr   )rG   Úclearr>   r[   r6   rD   rE   Úreset_frame_countr`   §   s   € ä×ÑÔÜ×"Ñ"Ô$Ø�JrD   c                ó   — t         | z  a y r@   )Úop_count)Úcnts    rE   Úincrement_op_countrd   ±   s   € ä��O�HrD   c            	     óö   — d} i }t         j                  «       D ]V  }| |j                  d|j                  dd«      «      z  } |j                  «       D ]  \  }}||vr|||<   Œ||xx   |z  cc<   Œ ŒX |r| |d<   |S )Ng        Úentire_frame_compileÚinductor_compiler   Útotal_wall_time)rG   ÚvaluesÚgetÚitems)rh   Útotal_by_keyÚtimingsÚkeyÚtimings        rE   Úcalculate_time_spentrp   ¸   s�   € Ø€OØ€LÜ%×,Ñ,Ó.ò 	,ˆØ˜7Ÿ;™;Ø" G§K¡KÐ0BÀAÓ$Fó
ñ 	
ˆð #Ÿ=™=›?ò 	,‰KˆC�Ø˜,Ñ&Ø$*�˜SÒ!à˜SÓ! VÑ+Ô!ñ		,ð	,ñ Ø*9ˆÐ&Ñ'àÐrD   c            	     óŠ   — t        «       } d}| j                  «       D ]  \  }}|› d|› dt        |d«      › �}Œ t        |«       y )NzTIMING:ú ú:é   )rp   rk   ÚroundÚprint)rl   Úoutrn   Úvalues       rE   Úprint_time_reportry   Ñ   sQ   € Ü'Ó)€Là
€CØ"×(Ñ(Ó*ò /‰
ˆˆUØ��Q�s�e˜1œU 5¨!›_Ð-Ð.‰ð/ô 
ˆ#…JrD   c                ó,   — t         |    |xx   |z  cc<   y r@   )rG   )rn   Ú
phase_nameÚ
time_spents      rE   Ú_add_time_spentr}   Û   s   € Ü�sÑ˜JÓ'¨:Ñ5Ô'rD   c                 óN   — t         d   d   t         d   d   t         d   d   dœ} | S )zMGet a bunch of metadata about cache hits and misses to use in chromium eventsÚinductorÚfxgraph_cache_hitÚfxgraph_cache_missÚfxgraph_cache_bypass)r€   r�   r‚   )r;   )Úcache_statss    rE   Úget_cache_statsr„   ß   s=   € ô & jÑ1Ð2EÑFÜ& zÑ2Ð3GÑHÜ (¨Ñ 4Ð5KÑ Lñ€Kð
 ÐrD   Tc           	   #  óÈ  K  — t        «       }| t        vr	g t        | <   d }d }t        d«      }t        j                  «       }	 t
        j                  j                  | › d�«      5  t        j                  «       }|j                  | |d «       |r|j                  ||«       d –— t        j                  «       |z
  }d d d «       t        |    j                  |«       	 |r0|j                  |t        j                  «       dt        «       i|«       |j                  | t        j                  «       dt        «       i|«       |�r<t        t        «      }
|r|€t!        |
||«       y t
        j"                  j$                  j'                  «       �òt        t
        j"                  j$                  j)                  «       j*                  «      }d|v sd|v r|€t!        |
||«       y d|v ršt        t
        j"                  j,                  j/                  «       «      }|€t!        |||«       |dk(  rT|€3t0        |   j)                  dd «      }t0        |   j)                  dd «      }nd }d }t3        |||||«      }t5        |«       y y y y y # 1 sw Y   �ŒÅxY w# t        $ r%}	t        t        |	«      «      }t        |	«      }‚ d }	~	ww xY w# |r0|j                  |t        j                  «       dt        «       i|«       |j                  | t        j                  «       dt        «       i|«       |�r<t        t        «      }
|r|€t!        |
||«       w t
        j"                  j$                  j'                  «       �òt        t
        j"                  j$                  j)                  «       j*                  «      }d|v sd|v r|€t!        |
||«       w d|v ršt        t
        j"                  j,                  j/                  «       «      }|€t!        |||«       |dk(  rT|€3t0        |   j)                  dd «      }t0        |   j)                  dd «      }nd }d }t3        |||||«      }t5        |«       w w w w w xY w­w)	Nz-infz (dynamo_timed)rƒ   ÚforwardÚ	inferenceÚbackwardrg   Úcode_gen)Úget_chromium_event_loggerr>   rC   ÚtimeÚtime_nsÚtorchÚprofilerÚrecord_functionÚlog_event_startÚappendÚ	ExceptionrP   ÚtypeÚlog_event_endr„   r[   r}   Ú_guardsr&   Útry_getrj   Úaot_graph_nameÚCompileContextÚcurrent_compile_idrG   ÚBwdCompilationMetricsÚrecord_compilation_metrics)rn   r{   Úfwd_onlyÚchromium_logÚ	fail_typeÚfail_reasonr|   ÚstartÚt0ÚeÚ	frame_keyr—   Ú
compile_idÚinductor_compile_timeÚcode_gen_timeÚmetricss                   rE   Údynamo_timedr¨     sJ  è ø€ ô )BÓ(C€LØ
Ô*Ñ*Ø(*Ô  Ñ%à#€IØ!%€KÜ�v“€JÜ�L‰L‹N€EðG@Ü�^‰^×+Ñ+¨s¨e°?Ð,CÓDñ 	*Ü—‘“ˆBØ×(Ñ(¨¨e°TÔ:ÙØ×,Ñ,¨Z¸Ô?ÛÜŸ™› rÑ)ˆJ÷	*ô 	! Ñ%×,Ñ,¨ZÕ8ñ Ø×&Ñ&ØÜ—‘“Ø¤Ó 1Ð2Øô	ð 	×"Ñ"Ø”—‘“ -´Ó1BÐ!CÀUô	
ò ÜœJ›ˆIñ ˜IÐ-Ü 	¨:°zÕBô
 —=‘=×/Ñ/×7Ñ7Ó9ÐEÜ%(ÜŸ™×4Ñ4×8Ñ8Ó:×IÑIó&�Nð " ^Ñ3°{ÀnÑ7TØ#Ð+Ü'¨	°:¸zÕJØ# ~Ñ5Ü%(Ü!ŸM™M×8Ñ8×KÑKÓMó&˜
ð %Ð,Ü+¨J¸
ÀJÔOð &Ð);Ò;Ø(Ð0Ü8JØ$.ñ9"ç"%¡#Ð&8¸$Ó"?ð !6ô 1CÀ:Ñ0N×0RÑ0RØ$.°ó1"¡ð 9=Ð 5Ø04 Ü&;Ø *Ø 5Ø -Ø )Ø +ó'˜Gô 7°wÕ?ð% <ð 6ð Fð ÷3	*ñ 	*ûô ò Üœ˜Q›“Lˆ	Ü˜!“fˆØûðûñ Ø×&Ñ&ØÜ—‘“Ø¤Ó 1Ð2Øô	ð 	×"Ñ"Ø”—‘“ -´Ó1BÐ!CÀUô	
ò ÜœJ›ˆIñ ˜IÐ-Ü 	¨:°zÕBô
 —=‘=×/Ñ/×7Ñ7Ó9ÐEÜ%(ÜŸ™×4Ñ4×8Ñ8Ó:×IÑIó&�Nð " ^Ñ3°{ÀnÑ7TØ#Ð+Ü'¨	°:¸zÕJØ# ~Ñ5Ü%(Ü!ŸM™M×8Ñ8×KÑKÓMó&˜
ð %Ð,Ü+¨J¸
ÀJÔOð &Ð);Ò;Ø(Ð0Ü8JØ$.ñ9"ç"%¡#Ð&8¸$Ó"?ð !6ô 1CÀ:Ñ0N×0RÑ0RØ$.°ó1"¡ð 9=Ð 5Ø04 Ü&;Ø *Ø 5Ø -Ø )Ø +ó'˜Gô 7°wÕ?ð% <ð 6ð Fð üsP   ‚?Q"Á"J Á$AI>Â; J ÃF"Q"É>JÊJ Ê	J9Ê J4Ê4J9Ê9J< Ê<F#QÑQ"Fc                 ó   — y r@   r6   ©ÚreprÚ	aggregates     rE   Úcompile_timesr­   \  ó   € àrD   c                 ó   — y r@   r6   rª   s     rE   r­   r­   a  ó   € ð rD   c                óF  ‡— d„ fˆfd„	}| dk(  r9t         D �cg c]  }| |t         |   d„ ¬«      f‘Œ }}d}|t        |d¬«      z  }|S | d	k(  rKt         j                  «       D �cg c]  } ||d
„ ¬«      ‘Œ }}t        t         j	                  «       «      }||fS yc c}w c c}w )a¿  
    Get metrics about torchdynamo frontend/backend compilation times.

    Accumulates information from functions tagged with `dynamo_timed`.

    repr='str' returns a printable string for user interaction, and 'csv'
    returns headers, rows which can be logged for output

    aggregate causes values from multiple compilations (e.g. split graphs)
    to be accumulated into one value.  If false, expect more than one value
    per metric.
    c                ó   — | S r@   r6   ©Úxs    rE   rF   zcompile_times.<locals>.<lambda>v  s   € ¨€ rD   c                ó`   •— ‰r |t        | «      «      S dj                  t        || «      «      S )NrM   )ÚsumrN   rO   )ri   Úitem_fnr¬   s     €rE   Úfmt_fnzcompile_times.<locals>.fmt_fnv  s+   ø€ ÙÙœ3˜v›;Ó'Ð'Ø�y‰yœ˜W fÓ-Ó.Ð.rD   rP   c                ó
   — | d›S )Nz.4fr6   r³   s    rE   rF   zcompile_times.<locals>.<lambda>}  s
   € ÈÈ3È€ rD   )r·   z!TorchDynamo compilation metrics:
)ÚFunctionzRuntimes (s)rI   Úcsvc                ó
   — | d›S )Nz.6fr6   r³   s    rE   rF   zcompile_times.<locals>.<lambda>…  s
   € ¨1¨S¨'€ rD   N)r>   rT   ri   ÚlistÚkeys)	r«   r¬   r¸   ÚkrX   rw   Úvri   rJ   s	    `       rE   r­   r­   h  sÊ   ø€ ñ  +õ /ð
 ˆu‚}ô .ö
àð ‘Ô/°Ñ2Ñ<PÔQÒRð
ˆð 
ð 3ˆØŒx˜Ð&BÔCÑCˆØˆ
Ø	�Šô .×4Ñ4Ó6ö
àñ �1Ñ2Ö3ð
ˆð 
ô Ô/×4Ñ4Ó6Ó7ˆØ˜ˆÐØùò
ùò
s   —BÁ#Bc                 óD   — t         j                  t        dd¬«      «       y )NrP   Trª   )ÚlogÚinfor­   r6   rD   rE   Údump_compile_timesrÄ   �  s   € ä‡H�HŒ] °Ô6Õ7rD   c                  ó$   — e Zd Zddd„Zd„ Zdd„Zy)ÚDuplicateWarningCheckerc                ó2   — || _         | j                  «        y r@   )ÚmaxsizeÚreset)ÚselfrÈ   s     rE   Ú__init__z DuplicateWarningChecker.__init__¡  s   € ØˆŒØ�
‰
�rD   c                ó6   — t        j                  «       | _        y r@   )rA   ÚOrderedDictÚset©rÊ   s    rE   rÉ   zDuplicateWarningChecker.reset¥  s   € Ü×*Ñ*Ó,ˆ�rD   c                ó^  — || j                   v r/| j                   j                  |d¬«       t        j                  syyd | j                   |<   t	        | j                   «      | j
                  kD  r?| j                   j                  d¬«       t	        | j                   «      | j
                  kD  rŒ?y)NT)ÚlastF)rÎ   Úmove_to_endr4   ÚverboseÚlenrÈ   Úpopitem©rÊ   rn   s     rE   ÚaddzDuplicateWarningChecker.add¨  s„   € Ø�$—(‘(‰?Ø�H‰H× Ñ  ¨4Ð Ô0Ü—>’>Øð
 ð !ˆD�H‰H�S‰MÜ�d—h‘h“- $§,¡,Ò.Ø—‘× Ñ  eÐ Ô,ô �d—h‘h“- $§,¡,Ó.àrD   N)é   )rÈ   ÚintÚreturnÚNone)rn   z!Union[str, Tuple[object, object]]rÚ   Úbool)Ú__name__Ú
__module__Ú__qualname__rË   rÉ   r×   r6   rD   rE   rÆ   rÆ      s   „ ôò-ô	rD   rÆ   c                 óˆ   — t         j                  j                  dd«      dk(  } | r
t        «       S t	        j
                  «       S )NÚTORCH_COMPILE_DEBUGÚ0Ú1)ÚosÚenvironrj   Úadd_file_handlerÚ
contextlibÚ	ExitStack)Úcompile_debugs    rE   Úsetup_compile_debugrê   ·  s7   € Ü—J‘J—N‘NÐ#8¸#Ó>À#ÑE€MáÜÓ!Ð!ä×ÑÓ!Ð!rD   c                 ó,   — t         j                  «        y r@   )Úgraph_break_dup_warning_checkerrÉ   r6   rD   rE   Úreset_graph_break_dup_checkerrí   À  s   € Ü#×)Ñ)Õ+rD   c                 óŒ  ‡‡— t         j                  j                  t        «       d«      } t        j                  | d¬«       t        j                  t         j                  j                  | d«      «      Št        j                  d«      Š‰j                  ‰«       t        j                  «       }|j                  ˆˆfd„«       |S )NÚtorchdynamoT©Úexist_okz	debug.logztorch._dynamoc                 ó&   •— ‰j                  ‰ «      S r@   ©ÚremoveHandler©Úlog_file_handlerÚloggers   €€rE   rF   z"add_file_handler.<locals>.<lambda>Í  s   ø€ ˜v×3Ñ3Ð4DÓE€ rD   )rä   ÚpathrN   Úget_debug_dirÚmakedirsÚloggingÚFileHandlerÚ	getLoggerÚ
addHandlerrç   rè   Úcallback)Úlog_pathÚ	exitstackrö   r÷   s     @@rE   ræ   ræ   Ä  s‰   ù€ Ü�w‰w�|‰|œM›O¨]Ó;€HÜ‡K�K� 4Õ(ä×*Ñ*¬2¯7©7¯<©<¸À+Ó+NÓOÐÜ×Ñ˜Ó/€FØ
×ÑÐ&Ô'ä×$Ñ$Ó&€IØ×ÑÔEÔFØÐrD   c                 óB  ‡‡— t        j                  «       } t        j                  �xt	        j
                  t        j                  «      Št        j                  j                  j                  «       D ](  Š‰j                  ‰«       | j                  ˆˆfd„«       Œ* | S | S )Nc                 ó&   •— ‰j                  ‰ «      S r@   ró   rõ   s   €€rE   rF   z setup_log_file.<locals>.<lambda>×  s   ø€  v×';Ñ';Ð<LÓ'M€ rD   )rç   rè   r4   Úlog_file_namerû   rü   r�   Ú_loggingÚ	_internalÚget_loggersrþ   rÿ   )r  rö   r÷   s    @@rE   Úsetup_log_filer  Ñ  s„   ù€ Ü×$Ñ$Ó&€IÜ×ÑÐ'Ü"×.Ñ.¬v×/CÑ/CÓDÐÜ—n‘n×.Ñ.×:Ñ:Ó<ò 	OˆFØ×ÑÐ.Ô/Ø×ÑÔMÕNð	Oð ÐàÐrD   c                ó|   — t        «       › d|j                  › dt        | «      j                  › d|j                  › d�S )Nz/error_recordings/Ú_z.rec)rù   Úco_namer“   rÝ   Úco_firstlineno)ÚexcÚcodes     rE   Úgen_record_file_namer  Ý  sB   € Ü‹oÐð Ø‡�€ˆa”�S“	×"Ñ"Ð# 1 T×%8Ñ%8Ð$9¸ð?ð ?rD   c                óˆ  — 	 t         j                  j                  | «      rt        j	                  d| «       y t        j
                  t         j                  j                  | «      d¬«       t        | d«      5 }|j                  |«       d d d «       y # 1 sw Y   y xY w# t        $ r t        j                  d| «       Y y w xY w)Nz9Unable to write execution record %s; file already exists.Trð   Úwbz#Unable to write execution record %s)rä   rø   ÚexistsrÂ   Úwarningrú   ÚdirnameÚopenÚdumpr’   Ú	exception)ÚfilenameÚexec_recordÚfs      rE   Úwrite_record_to_filer  â  s”   € ð
GÜ�7‰7�>‰>˜(Ô#Ü�K‰KØKÈXõô �K‰KœŸ™Ÿ™¨Ó1¸DÕAÜ�h Ó%ð $¨Ø× Ñ  Ô#÷$÷ $ñ $ûäò GÜ�‰Ð;¸XÖFðGús5   ‚5B ¸A B Á8BÂ
B ÂBÂB ÂB ÂCÃ Cc                óT   — d}| j                   D ]  }d|j                  v sŒ|dz  }Œ |S )Nr   Úcallr3   )ÚnodesÚop)ÚgÚcÚns      rE   Úcount_callsr#  ð  s5   € Ø	€AØ�W‰Wò ˆØ�Q—T‘TŠ>Ø�‰F‰Aðð €HrD   c                ó   — | S r@   r6   r³   s    rE   Úidentityr%  ø  s   € Ø€HrD   c                óN   — 	 t        | «       y# t        $ r Y yt        $ r Y yw xY w)NTF)ÚhashÚ	TypeErrorÚ
ValueErrorr³   s    rE   Úhashabler*  ü  s.   € ðÜˆQŒØøÜò Ùäò Ùðús   ‚ Ž	$™$£$c                  ó   — y r@   r6   ©ÚargsÚkwargss     rE   Únothingr/    s   € ØrD   c                  ó<   — e Zd ZdZd„ Zd„ Zd
d„Zd„ Zd„ Zd„ Z	d	„ Z
y)ÚExactWeakKeyDictionaryz\Similar to weakref.WeakKeyDictionary, but use `is`/`id` rather than `==` to compare equalityc                ó    — i | _         i | _        y r@   ©ri   ÚrefsrÏ   s    rE   rË   zExactWeakKeyDictionary.__init__  s   € ØˆŒØˆ�	rD   c                ó2   — | j                   t        |«         S r@   )ri   ÚidrÖ   s     rE   Ú__getitem__z"ExactWeakKeyDictionary.__getitem__  s   € Ø�{‰{œ2˜c›7Ñ#Ð#rD   Nc                óL   — | j                   j                  t        |«      |«      S r@   )ri   rj   r6  )rÊ   rn   Údefaults      rE   rj   zExactWeakKeyDictionary.get  s   € Ø�{‰{�‰œr #›w¨Ó0Ð0rD   c                ó0   — t        |«      | j                  v S r@   )r6  ri   rÖ   s     rE   Ú__contains__z#ExactWeakKeyDictionary.__contains__  s   € Ü�#‹w˜$Ÿ+™+Ð%Ð%rD   c                ó¦   ‡ ‡— t        |«      Š‰‰ j                  vr't        j                  |ˆˆ fd„«      ‰ j                  ‰<   |‰ j                  ‰<   y )Nc                ó&   •— ‰j                  ‰«      S r@   )Ú
_remove_id)ÚrefÚidxrÊ   s    €€rE   rF   z4ExactWeakKeyDictionary.__setitem__.<locals>.<lambda>  s   ø€ ¸$¿/¹/È#Ó:N€ rD   )r6  r4  Úweakrefr?  ri   )rÊ   rn   rx   r@  s   `  @rE   Ú__setitem__z"ExactWeakKeyDictionary.__setitem__  s?   ù€ Ü�‹gˆØ�d—i‘iÑÜ$Ÿ[™[¨Ô.NÓOˆD�I‰I�c‰NØ ˆ�‰�CÒrD   c                ór   — || j                   v r| j                   |= || j                  v r| j                  |= y y r@   r3  )rÊ   r@  s     rE   r>  z!ExactWeakKeyDictionary._remove_id!  s6   € Ø�$—+‘+ÑØ—‘˜CÐ Ø�$—)‘)ÑØ—	‘	˜#‘ð rD   c                ól   — | j                   j                  «        | j                  j                  «        y r@   )r4  r_   ri   rÏ   s    rE   r_   zExactWeakKeyDictionary.clear'  s    € Ø�	‰	�‰ÔØ�‰×ÑÕrD   r@   )rÝ   rÞ   rß   Ú__doc__rË   r7  rj   r;  rB  r>  r_   r6   rD   rE   r1  r1    s(   „ Ùfòò$ó1ò&ò!òórD   r1  c                 ó   — y r@   r6   ©ÚobjÚallowed_typess     rE   ÚistyperJ  ,  r®   rD   c                 ó   — y r@   r6   rG  s     rE   rJ  rJ  1  r°   rD   c                 ó   — y r@   r6   rG  s     rE   rJ  rJ  8  r®   rD   c                ól   — t        |t        t        t        f«      rt	        | «      |v S t	        | «      |u S )zisinstance() without subclasses)Ú
isinstanceÚtupler½   rÎ   r“   rG  s     rE   rJ  rJ  =  s1   € ä�-¤%¬¬sÐ!3Ô4Ü�C‹y˜MÐ)Ð)Ü�‹9˜Ð%Ð%rD   ©é   é   c                ó¦   — t         j                  dk\  rt        | t        «      ryt        | t        j
                  «      xs | t        j                  u S )NrP  T)ÚsysÚversion_inforN  Ú_builtin_final_typing_classesÚtypingÚ_FinalÚGeneric©rx   s    rE   Ú	is_typingr[  Q  s>   € ô ×Ñ˜7Ò"¤z°%Ô9VÔ'WØÜ�eœVŸ]™]Ó+ÒF¨u¼¿¹Ð/FÐFrD   c                ó  — t         syt        | t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  f«      S ©NF)
ÚnprJ  Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64rZ  s    rE   Úis_numpy_int_typerg  _  sU   € ÝØäØä�G‰GÜ�H‰HÜ�H‰HÜ�H‰HÜ�H‰HÜ�I‰IÜ�I‰IÜ�I‰Ið		
óð rD   c                ó‚   — t         syt        | t         j                  t         j                  t         j                  f«      S r]  )r^  rJ  Úfloat16Úfloat32Úfloat64rZ  s    rE   Úis_numpy_float_typerl  r  s2   € ÝØäØä�J‰JÜ�J‰JÜ�J‰Jð	
óð rD   c                óx   — t        | t        j                  «      xr t        t	        j
                  | d«      «      S )NÚ__wrapped__)rN  Ú	functoolsÚ_lru_cache_wrapperÚis_functionÚinspectÚgetattr_staticrZ  s    rE   Úis_lru_cache_wrapped_functionrt  €  s4   € Ü�eœY×9Ñ9Ó:ò ¼{Ü×Ñ˜u mÓ4ó@ð rD   c                ó˜   — t        | «      xs> t        | t        j                  j                  t        j                  j
                  f«      S r@   )rq  rN  r�   Ú_opsÚOpOverloadPacketÚ
OpOverloadrZ  s    rE   Úis_function_or_wrapperry  †  s9   € Ü�uÓò ¤Ø”—
‘
×+Ñ+¬U¯Z©Z×-BÑ-BÐCó"ð rD   c                ó’   — t        | t        j                  t        j                  t        j                  t        j
                  f«      S r@   )rN  ÚtypesÚFunctionTypeÚBuiltinFunctionTypeÚMethodDescriptorTypeÚWrapperDescriptorTyperZ  s    rE   rq  rq  Œ  s;   € ÜØä×ÑÜ×%Ñ%Ü×&Ñ&Ü×'Ñ'ð		
óð rD   c                ó°   — t        | t        j                  t        j                  t        j                  t        j
                  t        j                  f«      S r@   )rN  r{  ÚGetSetDescriptorTyper~  r  ÚMemberDescriptorTyper   rZ  s    rE   Úis_wrapper_or_member_descriptorrƒ  ˜  sF   € ÜØô ×&Ñ&ä×&Ñ&ä×'Ñ'ä×&Ñ&ä×#Ñ#ð	
óð rD   c                ó   — t        | «      d   S r^   )Ú unwrap_with_attr_name_if_wrapper)Úfns    rE   Úunwrap_if_wrapperr‡  ª  s   € Ü+¨BÓ/°Ñ2Ð2rD   c                óŒ   — t        | «      r4t        j                  | dd«      rt        j                  | d| «      } d}| |fS d }| |fS )NÚ_torchdynamo_inlineF)rq  rr  rs  )r†  Ú	attr_names     rE   r…  r…  ®  sT   € ô �2„œ7×1Ñ1°"Ð6KÈUÔSÜ×#Ñ# BÐ(=¸rÓBˆØ)ˆ	ð ˆyˆ=Ðð ˆ	Øˆyˆ=ÐrD   c                óD   — t         syt        | t         j                  «      S r]  )r^  rJ  ÚndarrayrZ  s    rE   Úis_numpy_ndarrayr�  ¹  s   € ÝØä�%œŸ™Ó$Ð$rD   c                óÌ   — t         j                  t         j                  j                  gt        j
                  ¢­}|t         j                  j                  fz   }t        | |«      S )zCheck of obj is a tensor)	r�   ÚTensorÚnnÚ	Parameterr4   Útraceable_tensor_subclassesÚ_subclassesr7   rJ  )rH  Útensor_lists     rE   Úistensorr•  À  sW   € ô 	�‰Ü�‰×Ñð%ô 
×	+Ñ	+ñ%€Kð
 ¤×!2Ñ!2×!=Ñ!=Ð ?Ñ?€KÜ�#�{Ó#Ð#rD   c                ó"   — t        | t        «      S r@   )rN  r,   )Úmods    rE   Úis_lazy_moduler˜  Ë  s   € Ü�cœ?Ó+Ð+rD   rØ   c                 ó   — t        | Ž  y r@   )rv   ©r-  s    rE   Ú
print_oncer›  Ï  s	   € ä	ˆ4‚LrD   c                ó|   ‡— | Šˆfd„}|j                   �t        |j                   «      dk(  sJ ‚|j                   d   S )zNSome black magic to create a cell object that usually only exists in a closurec                 ó   •— ‰ S r@   r6   r³   s   €rE   r  zmake_cell.<locals>.fØ  s   ø€ ØˆrD   r3   r   )Ú__closure__rÔ   )Úvalr  r´   s     @rE   Ú	make_cellr   Ô  s>   ø€ à€Aôð �=‰=Ð$¬¨Q¯]©]Ó);¸qÒ)@Ð@Ð@Ø�=‰=˜ÑÐrD   c                ó<  — 	 t        d„ | D «       «      }|j                  «       D ��ci c]  \  }}||j                  «       “Œ }}}||fS c c}}w # t        $ rC}ddlm} ddlm}  |d || Ž › d |t        |j                  «       «      Ž › �|¬«       Y d }~y d }~ww xY w)Nc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr@   )Úas_proxy©rQ   Úargs     rE   rS   z$proxy_args_kwargs.<locals>.<genexpr>á  s   è ø€ Ò:¨c˜3Ÿ<™<Ÿ>Ñ:ùó   ‚r3   ©Úunimplemented)Útypestrzcall_function args: rr   ©Úfrom_exc)
rO  rk   r£  ÚNotImplementedErrorr  r¨  Úvariables.baser©  r½   ri   )	r-  r.  Ú
proxy_argsrn   r¥  Úproxy_kwargsr¢   r¨  r©  s	            rE   Úproxy_args_kwargsr°  ß  sœ   € ð
ÜÑ:°TÔ:Ó:ˆ
Ø<B¿L¹L»N×K±°°S˜˜SŸ\™\›^Ñ+ÐKˆÑKØ˜<Ð'Ð'ùó Løäò 
Ý&Ý+áØ"¡7¨D >Ð"2°!±G¼TÀ&Ç-Á-Ã/Ó=RÐ4SÐ3TÐUØ÷	
ò 	
ûð	
ús(   ‚%A §A	ÁA Á	A Á	BÁ9BÂBc                  ó  — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   d
ed<   d
ed<   d
ed<   d
ed<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d
ed<   ded<   ded<   ded<   ded <   d!ed"<   d
ed#<   y$)%ÚCompilationMetricsrP   r¤   r£   r  Úco_filenamerÙ   r  Ú
cache_sizeÚaccumulated_cache_sizeúOptional[int]Úguard_countÚshape_env_guard_countÚgraph_op_countÚgraph_node_countÚgraph_input_countrC   Ú
start_timeúOptional[float]Úentire_frame_compile_time_sÚbackend_compile_time_sÚinductor_compile_time_sÚcode_gen_time_súOptional[str]rž   rŸ   Úfail_user_frame_filenameÚfail_user_frame_linenoúSet[str]Únon_compliant_opsÚcompliant_custom_opsÚrestart_reasonsÚdynamo_time_before_restart_srÜ   Úhas_guarded_codeÚ)possibly_missed_reinplacing_opportunitiesN©rÝ   rÞ   rß   Ú__annotations__r6   rD   rE   r²  r²  î  s¢   … àƒOØƒNØƒLØÓØÓØƒOØÓØÓØ(Ó(Ø!Ó!Ø#Ó#Ø$Ó$ØÓØ!0Ó0Ø+Ó+Ø,Ó,Ø$Ó$ØÓØÓØ+Ó+Ø)Ó)ØÓØ"Ó"ØÓØ"'Ó'ð ÓØ/<Ô<rD   r²  c                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   ded<   y	)
rš   rP   r¤   r½  rÀ  rÁ  rÂ  rž   rŸ   NrÌ  r6   rD   rE   rš   rš     s   … àƒOØ,Ó,Ø$Ó$ØÓØÔrD   rš   é@   ©Úmaxlenz7Deque[Union[CompilationMetrics, BwdCompilationMetrics]]Ú_compilation_metricsc                óØ   ‡ — t         j                  ‰ «       t        ‰ t        «      rd}nd}t        j
                  j                  |ˆ fd„«       t        j                  rt        ‰ «       y y )NÚcompilation_metricsÚbwd_compilation_metricsc            	     ó´   •— t        j                  ‰«      j                  «       D � �ci c]#  \  } }| t        |t        «      rt        |«      n|“Œ% c}} S c c}} w r@   )ÚdataclassesÚasdictrk   rN  rÎ   r½   )r¿   rÀ   rÔ  s     €rE   rF   z,record_compilation_metrics.<locals>.<lambda>,  sM   ø€ ä#×*Ñ*Ð+>Ó?×EÑEÓG÷
á��1ð œ* Q¬Ô,Œt�AŒw°!Ñ3ó
€ ùó 
s   ¨(A)
rÒ  r‘   rN  r²  r�   r  Útrace_structuredr4   Úlog_compilation_metricsr)   )rÔ  Únames   ` rE   r›   r›   !  s]   ø€ ô ×ÑÐ 3Ô4ÜÐ%Ô'9Ô:Ø$‰à(ˆÜ	‡N�N×#Ñ#Øó	
ôô ×%Ò%ÜÐ1Õ2ð &rD   c                ó°   — t        t        «      | kD  r't        j                  «        t        t        «      | kD  rŒ't        j                  t        | ¬«      }|ay )NrÐ  )rÔ   rÒ  ÚpopleftrA   Údeque)Únew_sizeÚ	new_deques     rE   Úset_compilation_metrics_limitrá  5  sE   € ä
Ô"Ó
# hÒ
.Ü×$Ñ$Ô&ô Ô"Ó
# hÓ
.ä×!Ñ!Ô"6¸xÔH€IØ$ÑrD   c                 ó,   — t         j                  «        y r@   )rÒ  r_   r6   rD   rE   Úclear_compilation_metricsrã  =  s   € ä×ÑÕ rD   c                 ó    — t        t        «      S r@   )r½   rÒ  r6   rD   rE   Úget_compilation_metricsrå  B  s   € ÜÔ$Ó%Ð%rD   c                  ó–   — e Zd ZdZd„ Zd„ Z	 d
	 	 	 	 	 	 	 dd„Zdd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Z	 d
	 	 	 	 	 	 	 	 	 dd„Z		 d
	 	 	 	 	 	 	 dd	„Z
y)ÚChromiumEventLoggera  Logs chromium events to structured logs. tlparse will concatenate these into a perfetto UI link.

    See https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview#heading=h.yr4qxyxotyw for
    a specification of the Chromium Event JSON format.
    c                óª   — t        | j                  d«      r| j                  j                  S dg| j                  _        | j                  j                  S )NÚstackÚ	__start__)ÚhasattrÚtlsré  rÏ   s    rE   Ú	get_stackzChromiumEventLogger.get_stackM  s9   € Ü�4—8‘8˜WÔ%Ø—8‘8—>‘>Ð!à)˜]ˆD�H‰HŒNØ—8‘8—>‘>Ð!rD   c                óº   — t        j                  «       | _        t        t	        j
                  «       «      | _        t        j                  d| j                  «       y )Nz*ChromiumEventLogger initialized with id %s)	Ú	threadingÚlocalrì  rP   ÚuuidÚuuid4Úid_rÂ   rÃ   rÏ   s    rE   rË   zChromiumEventLogger.__init__T  s9   € Ü—?‘?Ó$ˆŒô ”t—z‘z“|Ó$ˆŒô 	�‰Ð=¸t¿x¹xÕHrD   Nc                ó´   — | j                  ||d|«      }t        || j                  «       | j                  «       | j                  «       j	                  |«       y)zé
        Logs the start of a single event.
        :param str event_name Name of event to appear in trace
        :param time_ns Timestamp in nanoseconds
        :param metadata: Any extra metadata associated with this event
        ÚBN)Ú_log_timed_eventr(   rí  ró  r‘   ©rÊ   Ú
event_namerŒ   ÚmetadataÚevents        rE   r�   z#ChromiumEventLogger.log_event_start]  sN   € ð ×%Ñ%ØØØØó	
ˆô 	$ E¨4¯>©>Ó+;¸T¿X¹XÔFØ�‰Ó×Ñ 
Õ+rD   c                óf   — | j                  «       }|j                  «        |j                  d«       y )Nrê  )rí  r_   r‘   )rÊ   ré  s     rE   rÉ   zChromiumEventLogger.resetr  s%   € ð —‘Ó ˆØ�‰ŒØ�‰�[Õ!rD   c                ó<  — | j                  «       }||vrt        j                  d«       y| j                  ||d|«      }||d   k7  r.t        j                  d«       |j	                  «        ||d   k7  rŒ.t        ||| j                  |«       |j	                  «        y)aA  
        Logs the end of a single event. This function should only be
        called after log_event_start with the same event_name.
        :param event_name: Name of event to appear in trace
        :param time_ns: Timestamp in nanoseconds
        :param metadata: Any extra metadata associated with this event
        z7ChromiumEventLogger: Start event not in stack, ignoringNÚEéÿÿÿÿz>ChromiumEventLogger: Detected overlapping events, fixing stack)rí  rÂ   r  rö  Úpopr(   ró  )rÊ   rø  rŒ   rù  Ústart_time_nsré  rú  s          rE   r”   z!ChromiumEventLogger.log_event_endy  s›   € ð" —‘Ó ˆØ˜UÑ"ô �K‰KÐQÔRØà×%Ñ%ØØØØó	
ˆð ˜E "™IÒ%ô �K‰KØPôð �I‰IŒKð ˜E "™IÓ%ô 	$ E¨5°$·(±(¸MÔJà�	‰	�rD   c                ón   ‡— ||dz  ||ddddœŠt         j                  j                  dˆfd„dd¬«       ‰S )	za
        Logs a timed event in chromium format. See log_event_start, log_event_end, etc.
        éè  r¨   r   )rÛ  Útsr-  ÚphÚcatÚtidÚpidÚchromium_eventc                 ó   •— ‰ S r@   r6   ©rú  s   €rE   rF   z6ChromiumEventLogger._log_timed_event.<locals>.<lambda>»  ó   ø€ ˜u€ rD   F©Ú
payload_fnÚsuppress_contextÚexpect_trace_id)r�   r  rÙ  )rÊ   rø  rŒ   Úphaserù  rú  s        @rE   rö  z$ChromiumEventLogger._log_timed_event¥  sQ   ø€ ð Ø˜D‘.ØØà!ØØñ	
ˆô 	�‰×'Ñ'ØÛ$Ø"Ø!ð	 	(ô 	
ð ˆrD   c           	     ó¸   ‡— ||dz  |ddddddœŠt         j                  j                  dˆfd„d	d
¬«       t        ‰| j	                  «       | j
                  «       y)aZ  
        Log an instant event with no associated duration.
        :param str event_name: Name of event to appear in trace
        :param int time_ns Timestamp in nanoseconds
        :param Optional[Dict[str, Any]] metadata: Any extra metadata associated with this event
        :param str cname optional color for the arrow in the trace
        r  Úir¨   r   Úp)rÛ  r  r-  r  r  r  r  Úsr  c                 ó   •— ‰ S r@   r6   r
  s   €rE   rF   z7ChromiumEventLogger.log_instant_event.<locals>.<lambda>Û  r  rD   FTr  N)r�   r  rÙ  r(   rí  ró  r÷  s       @rE   Úlog_instant_eventz%ChromiumEventLogger.log_instant_eventÁ  sf   ø€ ð Ø˜D‘.ØØà!ØØØñ

ˆô 	�‰×'Ñ'ØÛ$Ø"Ø ð	 	(ô 	
ô 	$ E¨4¯>©>Ó+;¸T¿X¹XÕFrD   r@   )rø  rP   rŒ   rÙ   rù  úOptional[Dict[str, Any]]rÚ   rÛ   ©rÚ   rÛ   )NN)
rø  rP   rŒ   rÙ   rù  r  r   r¶  rÚ   rÛ   )
rø  rP   rŒ   rÙ   r  rP   rù  r  rÚ   r<   )rÝ   rÞ   rß   rE  rí  rË   r�   rÉ   r”   rö  r  r6   rD   rE   rç  rç  F  sõ   „ ñò"òIð .2ð	,àð,ð ð,ð +ð	,ð
 
ó,ó*"ð .2Ø'+ð*àð*ð ð*ð +ð	*ð
 %ð*ð 
ó*ðb .2ðàðð ðð ð	ð
 +ðð 
óð@ .2ð	GàðGð ðGð +ð	Gð
 
ôGrD   rç  zOptional[ChromiumEventLogger]ÚCHROMIUM_EVENT_LOGc                 ó.   — t         €
t        «       a t         S r@   )r  rç  r6   rD   rE   rŠ   rŠ   æ  s   € äÐ!Ü0Ó2ÐÜÐrD   c                  ó<   — e Zd ZU dZded<   ded<   d„ Zed„ «       Zy)	ÚCleanupHookz,Remove a global variable when hook is calledr<   ÚscoperP   rÛ  c                óp   — t         �t         xj                  dz  c_        | j                  | j                  = y rZ   )ÚCleanupManagerÚcountr  rÛ  ©rÊ   r-  s     rE   Ú__call__zCleanupHook.__call__ô  s)   € äÐ%Ü× Ò  AÑ%Õ Ø�J‰J�t—y‘yÑ!rD   c                ób   — || vsJ ‚t         xj                  dz  c_        || |<   t        | |«      S rZ   )r  r   r  )r  rÛ  rŸ  s      rE   ÚcreatezCleanupHook.createú  s7   € à˜5Ñ Ð Ð Ü×Ò Ñ!ÕØˆˆd‰Ü˜5 $Ó'Ð'rD   N)rÝ   rÞ   rß   rE  rÍ  r"  Ústaticmethodr$  r6   rD   rE   r  r  í  s)   … á6àÓØ
ƒIò"ð ñ(ó ñ(rD   r  c                  ó.   ‡ — e Zd ZU dZded<   ˆ fd„Zˆ xZS )r  r   zClassVar[CleanupManager]Úinstancec                óZ   •— | j                   |   D ]	  } |«        Œ t        ‰| �	  |«       y r@   )ri   Úsuperr>  )rÊ   r@  ÚhookÚ	__class__s      €rE   r>  zCleanupManager._remove_id  s-   ø€ Ø—K‘K Ñ$ò 	ˆDÙ�Fð	ä‰Ñ˜3ÕrD   )rÝ   rÞ   rß   r   rÍ  r>  Ú__classcell__©r+  s   @rE   r  r    s   ø… Ø€EØ&Ó&÷ ð  rD   r  c                óÆ   — | j                  «       j                  | j                  «      }| j                  r+| j                  �| j                  j                  «       |_        |S )z!Clone the tensor and its gradient)ÚcloneÚrequires_grad_Úrequires_gradÚis_leafÚgrad)r´   Úys     rE   Úclone_tensorr5    sB   € à	�‰‹	× Ñ  §¡Ó1€AØ‡y‚y�Q—V‘VÐ'Ø—‘—‘“ˆŒØ€HrD   ©Údtypec          	     óæ  ‡— t        | «      r| S ˆfd„}t        j                  «       5  | j                  j                  dk(  r || «      cddd«       S | j
                  t        j                  u rbt        j                   || j                  «       «       || j                  «       «      | j                  | j                  «       ¬«      cddd«       S t        | «      rÄ| j
                  t        j                  t        j                  hv r!| j                  «       }| j!                  «       }n | j#                  «       }| j%                  «       }t        j&                   ||«       ||«       || j)                  «       «      | j                  | j
                  ¬«      cddd«       S t+        d„ t-        | j/                  «       | j1                  «       «      D «       «      }| j2                  rt        j4                  |dz   f| «      }n3t        j6                  |dz   ‰xs | j8                  | j                  ¬«      }| j;                  «       |j;                  «       z
  dz  | j=                  «       z  }|j?                  | j/                  «       | j1                  «       |«       	 |jA                  | jC                  «       «       | jD                  r|jG                  | jH                  «       | jD                  r(| jJ                  �tM        | jJ                  ‰¬	«      |_%        tQ        | d
«      r| jR                  jU                  «       |_)        |cddd«       S # tN        $ r  || «      cY cddd«       S w xY w# 1 sw Y   yxY w)zcopy while preserving stridesc                ó>  •— t        j                  | «      }| j                  r|j                  | j                  «       | j                  r(| j
                  �t        | j
                  ‰¬«      |_        t        | d«      r| j                  j                  «       |_        |S )Nr6  Ú_dynamo_dynamic_indices)
r�   r/  r2  r0  r1  r3  Úclone_inputrë  r:  Úcopy)r´   r4  r7  s     €rE   Útorch_clonez clone_input.<locals>.torch_clone  sr   ø€ Ü�K‰K˜‹NˆØ�9Š9Ø×Ñ˜QŸ_™_Ô-Ø�9Š9˜Ÿ™Ð+Ü  §¡¨uÔ5ˆAŒFÜ�1Ð/Ô0Ø()×(AÑ(A×(FÑ(FÓ(HˆAÔ%ØˆrD   ÚxlaN)Úis_coalesced)Úlayoutc              3  ó2   K  — | ]  \  }}|d z
  |z  –— Œ y­w)r3   Nr6   )rQ   ÚshapeÚstrides      rE   rS   zclone_input.<locals>.<genexpr>D  s"   è ø€ ò 
Ù%2 U¨FˆU�Q‰Y˜&Õ ñ
ùó   ‚é    )r7  Údevicer6  r:  )+r8   r�   Úno_gradrF  r“   r@  Ú
sparse_cooÚsparse_coo_tensorÚ_indicesÚ_valuesrB  r?  r'   Ú
sparse_csrÚ
sparse_bsrÚcrow_indicesÚcol_indicesÚccol_indicesÚrow_indicesÚsparse_compressed_tensorri   r¶   ÚzipÚsizerC  Úis_quantizedÚempty_quantizedÚemptyr7  Údata_ptrÚelement_sizeÚas_strided_Úcopy_r/  r2  r0  r1  r3  r;  ÚRuntimeErrorrë  r:  r<  )r´   r7  r=  Úcompressed_indicesÚplain_indicesÚneeded_sizeÚresultÚcache_line_offsets    `      rE   r;  r;    s»  ø€ ô ˆq„zàˆôô 
�‰‹ñ 6Ø�8‰8�=‰=˜EÒ!á˜q“>÷6ñ 6ð �8‰8”u×'Ñ'Ñ'Ü×*Ñ*Ù˜AŸJ™J›LÓ)Ù˜AŸI™I›KÓ(Ø—‘ØŸ^™^Ó-ô	÷6ñ 6ô " !Ô$Ø�x‰xœE×,Ñ,¬e×.>Ñ.>Ð?Ñ?Ø%&§^¡^Ó%5Ð"Ø !§¡£‘à%&§^¡^Ó%5Ð"Ø !§¡£�Ü×1Ñ1ÙÐ.Ó/Ù˜MÓ*Ù˜AŸH™H›JÓ'Ø—‘Ø—x‘xô÷)6ñ 6ô8 ñ 
Ü69¸!¿&¹&»(ÀAÇHÁHÃJÓ6Oô
ó 
ˆð �>Š>Ü×*Ñ*¨K¸"Ñ,<Ð+>ÀÓB‰Fä—[‘[Ø˜bÑ ¨Ò(8°·±ÀÇÁôˆFð �Z‰Z‹\˜FŸO™OÓ-Ñ-°Ñ3Ø�^‰^ÓñÐð 	×Ñ˜1Ÿ6™6›8 Q§X¡X£ZÐ1BÔCð
	"Ø�L‰L˜Ÿ™›Ô#Ø�yŠyØ×%Ñ% a§o¡oÔ6Ø�yŠy˜QŸV™VÐ/Ü)¨!¯&©&¸Ô>�”ô �1Ð/Ô0Ø-.×-FÑ-F×-KÑ-KÓ-MˆFÔ*Ø÷m6ñ 6øô^ ò 	"ñ ˜q“>Ñ!÷g6ñ 6ð^	"ú÷_6ð 6úsE   ¨!M'ÁA4M'ÃCM'Æ C6M'ÊA:MÌ,M'ÍM$ÍM'Í#M$Í$M'Í'M0c                óÆ  — t        | «      t        u r|t        | «      }|j                  «       D ]\  \  }}t        |t        «      rt        |«      ||<   Œ%t        |t        j                  «      sJ t        |«      «       ‚t        |«      ||<   Œ^ |S t        | «      }t        t        |«      «      D ]1  }t        ||   t        j                  «      sŒ!t        ||   «      ||<   Œ3 |S r@   )r“   Údictrk   rN  rO  Úclone_inputsr�   r�  r;  r½   ÚrangerÔ   )Úexample_inputsÚresrn   rx   r  s        rE   rd  rd  a  sÈ   € äˆNÓœtÑ#Ü�>Ó"ˆØŸ)™)›+ò 	.‰JˆC�Ü˜%¤Ô'Ü'¨Ó.��C’ä! %¬¯©Ô6ÐC¼¸U»ÓCÐ6Ü& uÓ-��C’ð	.ð ˆ
ä
ˆ~Ó
€CÜ”3�s“8‹_ò )ˆÜ�c˜!‘fœeŸl™lÕ+Ü   Q¡Ó(ˆC�ŠFð)ð €JrD   c                ó¬   — 	 | j                  «        y # t        $ r7}ddlm} t	        j
                  ddt        | «      «      } |d|› �«      |‚d }~ww xY w)Nr3   )Ú	SkipFramez\(.*Ú z(torch.compile cannot be run in context: )rX  r\  r  ri  ÚreÚsubr«   )rŸ  r¢   ri  Úfunctorch_subclass_names       rE   Úskip_frame_if_in_functorch_modern  t  sX   € ð	Ø�‰�øÜò Ý"ô #%§&¡&¨°"´d¸3³iÓ"@ÐÙØ6Ð7NÐ6OÐPó
àð	ûðús   ‚ “	Aœ2AÁAc               #  ó†  K  — t         j                  j                  } t         j                  j                  j
                  } |«       5   | «       5  t        j                  t         j                  j                  «       «      }t        |«       t         j                  j                  «       r1t        j                  t         j                  j                  «       «      }d d d «       d d d «       	 d –— t         j                  j                  j                  «       5  t         j                  j                  «       t         j                  j                  «       rt         j                  j                  «       d d d «       y # 1 sw Y   Œ¤xY w# 1 sw Y   Œ¨xY w# 1 sw Y   y xY w# t         j                  j                  j                  «       5  t         j                  j                  «       t         j                  j                  «       rt         j                  j                  «       d d d «       w # 1 sw Y   w xY wxY w­wr@   )r�   Ú_CÚ_DisableFuncTorchÚutilsÚ_python_dispatchÚ_disable_current_modesr/  ÚrandomÚget_rng_statern  ÚcudaÚis_availableÚset_rng_state)Údisable_functorchÚdisable_current_modesÚ	rng_stateÚcuda_rng_states       rE   Úpreserve_rng_stater~  �  s�  è ø€ äŸ™×2Ñ2ÐÜ!ŸK™K×8Ñ8×OÑOÐÙ	Ó	 ñ EÑ"3Ó"5ñ EÜ—K‘K¤§¡× :Ñ :Ó <Ó=ˆ	Ü'¨	Ô2Ü�:‰:×"Ñ"Ô$Ü"Ÿ[™[¬¯©×)AÑ)AÓ)CÓDˆN÷	E÷ Eð
9Ûä�[‰[×)Ñ)×@Ñ@ÓBñ 	9Ü�L‰L×&Ñ& yÔ1Ü�z‰z×&Ñ&Ô(Ü—
‘
×(Ñ(¨Ô8÷	9ð 	9÷Eð Eú÷ Eð Eú÷	9ð 	9ûŒU�[‰[×)Ñ)×@Ñ@ÓBñ 	9Ü�L‰L×&Ñ& yÔ1Ü�z‰z×&Ñ&Ô(Ü—
‘
×(Ñ(¨Ô8÷	9÷ 	9ñ 	9ÿs�   ‚AIÁFÁBE?ÃFÃ$IÃ-F# Ã1(IÄAFÅ6	IÅ?F	ÆFÆFÆIÆF ÆIÆ#)H>ÇAH2È)	H>È2H;È7H>È>Ic                ó
  — t        | t        j                  j                  j                  t        j                  j
                  j                  t        j                  j                  t        j                  j                  f«      S r@   )	rN  r�   ÚjitÚ_traceÚTopLevelTracedModuleÚ_scriptÚRecursiveScriptModuleÚScriptFunctionÚScriptModule)Úmodel0s    rE   Úis_jit_modelrˆ  “  sW   € ÜØä�I‰I×Ñ×1Ñ1Ü�I‰I×Ñ×3Ñ3Ü�I‰I×$Ñ$Ü�I‰I×"Ñ"ð		
óð rD   c                ó6  — t        | «      r| S 	 t        j                  j                  | |«      S # t        $ r` 	 t        j                  j                  | «      cY S # t        $ r1 |rt        j                  d«       nt        j                  d«       Y Y y w xY ww xY w)Nz	jit errorz0Both torch.jit.trace and torch.jit.script failed)	rˆ  r�   r€  Útracer’   ÚscriptrÂ   r  Úerror)Úmodelrf  rÓ   s      rE   ÚtorchscriptrŽ  Ÿ  s‡   € Ü�EÔàˆð	NÜ�y‰y�‰˜u nÓ5Ð5øÜò Nð	NÜ—9‘9×#Ñ# EÓ*Ò*øÜò 	NÙÜ—‘˜kÕ*ä—	‘	ÐLÔMùØð	NúðNús,   �/ ¯	B¹AÁBÁ6BÂBÂBÂBc                óX   — 	 t        j                  | «      S # t        t        f$ r Y y w xY wr@   )rr  Úgetfiler(  ÚOSError©rH  s    rE   r�  r�  ±  s-   € ðÜ�‰˜sÓ#Ð#øÜ”wÐò Ùðús   ‚ —)¨)c                ó*   — t        t        | «      «      S )zLTest if an object is a namedtuple or a torch.return_types.* quasi-namedtuple)Úis_namedtuple_clsr“   r’  s    rE   Úis_namedtupler•  ¸  s   € äœT #›YÓ'Ð'rD   c                óÞ   — 	 t        | t        «      rLt        | dg «      xs dg}t        | dd«      }|dv xs' |d   t        u xr t        | d«      xr t        | d«      S 	 y# t        $ r Y yw xY w)	zhTest if an object is a namedtuple or a (torch.return_types|torch.autograd.forward_ad).* quasi-namedtupleÚ	__bases__NrÞ   )útorch.return_typesztorch.autograd.forward_adr   Ú_makeÚ_fieldsF)Ú
issubclassrO  Úgetattrrë  r(  )ÚclsÚbasesÚmodules      rE   r”  r”  ½  sŒ   € ðÜ�cœ5Ô!Ü˜C ¨bÓ1Ò;°d°VˆEÜ˜S ,°Ó5ˆFØÐPÐPò Ø�a‘œEÐ!ÒW¤g¨c°7Ó&;ÒWÄÈÈYÓ@Wðð "ð øô ò ØØðús   ‚AA  Á 	A,Á+A,c                óÊ  — | t         u rg d¢S t        | t        «      sJ ‚t        | d«      r| j                  S t
        j                   G d„ d«      «       }| j                  dk(  sJ ‚ | t        |t        | j                  «      «      «      }dg| j                  z  }t        |«      D ];  }|d   dk7  sŒt        t        ||«      |«      sŒ#||t        ||«      j                  <   Œ= |S )	zIGet the fields of a namedtuple or a torch.return_types.* quasi-namedtuple)r    ÚstopÚsteprš  c                  ó   — e Zd ZU ded<   y)ú!namedtuple_fields.<locals>.MarkerrÙ   ÚindexNrÌ  r6   rD   rE   ÚMarkerr¤  Ö  s   … àŒ
rD   r¦  r˜  Nr   r
  )Úslicer›  rO  rë  rš  r×  Ú	dataclassrÞ   rO   re  Ún_fieldsÚdirrN  rœ  r¥  )r�  r¦  rH  ÚfieldsrÛ  s        rE   Únamedtuple_fieldsr¬  Ë  sÝ   € ð Œe�|Ú(Ð(ä�cœ5Ô!Ð!Ð!Üˆs�IÔà�{‰{Ðä×Ñ÷ð ó ðð �>‰>Ð1Ò1Ð1Ð1Ù
Œc�&œ% §¡Ó-Ó.Ó
/€CØ#' &¨3¯<©<Ñ"7€FÜ�C“ò 4ˆØ�‰7�c‹>œj¬°°dÓ);¸VÕDØ/3ˆF”7˜3 Ó%×+Ñ+Ò,ð4ð €MrD   c           	     óB  ‡‡‡— t        j                  «       5  t        j                  t         j                  j	                  «       «      Št         j
                  j                  «       r1t        j                  t         j
                  j	                  «       «      Šg Št        j                  | j                  «       | j                  «       «      D ]3  }‰j                  ||j                  t        j                  |«      f«       Œ5 	 d d d «       ˆˆˆfd„}|S # 1 sw Y   ŒxY w)Nc                 ój  •— t        j                  «       5  t         j                  j                  ‰«       t         j                  j                  «       rt         j                  j                  ‰«       ‰D ]'  \  } }}| j                  |k7  sŒ| j                  |«       Œ) 	 d d d «       y # 1 sw Y   y xY wr@   )r�   rG  ru  ry  rw  rx  Ú_versionr[  )ÚparamÚversionÚoriginal_valuer}  r|  Úsaved_states      €€€rE   Úrestorez"checkpoint_params.<locals>.restoreí  sƒ   ø€ Ü�]‰]‹_ñ 	0Ü�L‰L×&Ñ& yÔ1Ü�z‰z×&Ñ&Ô(Ü—
‘
×(Ñ(¨Ô8Ø2=ò 0Ñ.��w Ø—>‘> WÓ,Ø—K‘K Õ/ñ0÷		0÷ 	0ñ 	0ús   –A5B)ÂB)Â)B2)r�   rG  r/  ru  rv  rw  rx  rV   rW   Ú
parametersÚbuffersr‘   r¯  )Úgmr°  r´  r}  r|  r³  s      @@@rE   Úcheckpoint_paramsr¸  ä  sÆ   ú€ Ü	�‰‹ñ LÜ—K‘K¤§¡× :Ñ :Ó <Ó=ˆ	Ü�:‰:×"Ñ"Ô$Ü"Ÿ[™[¬¯©×)AÑ)AÓ)CÓDˆNØˆÜ—_‘_ R§]¡]£_°b·j±j³lÓCò 	LˆEØ×Ñ  u§~¡~´u·{±{À5Ó7IÐJÕKñ	L÷Lö0ð €N÷#Lð Lús   ˜C+DÄDc                óv  — t         j                  j                  «       rt         j                  j                  }nt        } |«        t        j                  «        t        j                  d«       t        j                  «       }t        |«      D ]  } | |Ž } |«        Œ t        j                  «       }||z
  fS )Ni9  )r�   rw  rx  Úsynchronizer/  ÚgcÚcollectÚmanual_seedr‹   Úperf_counterre  )r�  rf  Útimesrº  r¡   r
  r`  Út1s           rE   ÚtimedrÁ  ù  s�   € Ü‡z�z×ÑÔ Ü—j‘j×,Ñ,‰äˆá„MÜ‡J�J„LÜ	×Ñ�dÔÜ	×	Ñ	Ó	€BÜ�5‹\ò ˆÙ˜Ð'ˆÙ�ðô 
×	Ñ	Ó	€BØ�2˜‘7ˆ?ÐrD   c           	     ól   — t        d„ t        j                  || j                  d«      «      D «       «      S )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr@   )Úis_cuda©rQ   r´   s     rE   rS   z check_is_cuda.<locals>.<genexpr>  s   è ø€ ÒW˜Qˆq�y�yÑWùs   ‚T)ÚallrV   rW   rµ  )r·  rf  s     rE   Úcheck_is_cudarÇ  
  s(   € ÜÑW¤)§/¡/°.À"Ç-Á-ÐPTÓBUÓ"VÔWÓWÐWrD   rE  c                óò   — | dkD  sJ ‚t        | «      D �cg c]  }d|› �‘Œ	 }}t        |dd  |d d z   «      }t        ddj                  |«      › ddj                  |«      › d�«      }d| › d	�|_        |S c c}w )
Nr3   rÀ   rþ  zlambda ú,z: (ú)Úrot_Ú_helper)re  ÚreversedÚevalrN   rÝ   )r"  r  ÚvarsÚrotatedr†  s        rE   Úrot_n_helperrÑ    s‹   € àˆqŠ5€Lˆ5Ü" 1›XÖ&˜ˆa�ˆsŠGÐ&€DÐ&Ü�t˜B˜C�y 4¨¨ 9Ñ,Ó-€GÜ	�˜Ÿ™ ›Ð' s¨3¯8©8°GÓ+<Ð*=¸QÐ?Ó	@€BØ˜˜˜7Ð#€B„KØ€Iùò	 's   •A4z	Set[type]Úcommon_constant_typesc                óò   — t        | t        t        f«      rt        t	        t
        | «      «      S t        | t        j                  t        t        j                  f«      xs t        | t        t        hz  «      S r@   )rJ  rO  Ú	frozensetrÆ  rO   Úis_safe_constantrN  ÚenumÚEnumr“   r�   ÚSizerÒ  r§  )rÀ   s    rE   rÕ  rÕ  5  s[   € Üˆa”%œÐ#Ô$Ü”3Ô'¨Ó+Ó,Ð,Ü�aœ$Ÿ)™)¤T¬5¯:©:Ð6Ó7ò ¼6Ø	Ü¤ Ñ'ó<ð rD   c                ól   — ddl m}m} t        | |«      r|j	                  | j                  «       «      S | S )Nr3   )ÚConstantVariableÚSymNodeVariable)Ú	variablesrÚ  rÛ  rN  r$  Úevaluate_expr)r¥  rÚ  rÛ  s      rE   Úspecialize_symnoderÞ  >  s0   € ß<ô �#�Ô'Ø×&Ñ& s×'8Ñ'8Ó':Ó;Ð;à€JrD   c                ó`   — ddl m} t        | «      } t        | |«      r| j	                  «       S | S )Nr3   ©rÚ  )rÜ  rÚ  rÞ  rN  Úas_python_constant)r¥  rÚ  s     rE   Úguard_if_dynrâ  H  s.   € Ý+ä
˜SÓ
!€Cä�#Ð'Ô(Ø×%Ñ%Ó'Ð'à€JrD   c                ój   — t        d„ t        j                  | |j                  «       «      D «       «      S )Nc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr@   )Úis_python_constantrÅ  s     rE   rS   z&check_constant_args.<locals>.<genexpr>T  s   è ø€ ÒV¨!ˆq×#Ñ#×%ÑVùr¦  )rÆ  rV   rW   ri   r,  s     rE   Úcheck_constant_argsræ  S  s$   € ÜÑV¬y¯©¸tÀVÇ]Á]Ã_Ó/UÔVÓVÐVrD   c                óº   — ddl m} ddlm} d}t	        j
                  | |j                  «       «      D ]"  }t        ||«      r|dz  }Œt        ||«      rŒ" y |dkD  S )Nr3   rà  ©ÚUnspecializedPythonVariabler   F)Úvariables.constantrÚ  Úvariables.tensorré  rV   rW   ri   rN  )r-  r.  rÚ  ré  Úunspec_countr´   s         rE   Úcheck_unspec_python_argsrí  W  s]   € Ý4Ý=à€LÜ�_‰_˜T 6§=¡=£?Ó3ò ˆÜ�aÐ4Ô5Ø˜AÑ‰LÜ˜AÐ/Õ0Ùð	ð
 ˜!ÑÐrD   c                ó    — ddl m} t        j                  | |j	                  «       «      D ]!  }|j                  «       rŒt        ||«      rŒ! y y)Nr3   rè  FT)rë  ré  rV   rW   ri   rå  rN  )r-  r.  ré  r´   s       rE   Úcheck_unspec_or_constant_argsrï  d  sE   € õ >ä�_‰_˜T 6§=¡=£?Ó3ò ˆØ×$Ñ$Õ&¬*°QÐ8SÕ*TÙðð rD   c                ó|   ‡— ddl mŠ t        ˆfd„t        j                  | |j                  «       «      D «       «      S )Nr3   )ÚNumpyNdarrayVariablec              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­wr@   )rN  )rQ   r´   rñ  s     €rE   rS   z+check_numpy_ndarray_args.<locals>.<genexpr>r  s!   øè ø€ ò àô 	�1Ð*×+ñùs   ƒ)rë  rñ  ÚanyrV   rW   ri   )r-  r.  rñ  s     @rE   Úcheck_numpy_ndarray_argsrô  o  s1   ø€ Ý6äó ä—‘  v§}¡}£Ó7ôó ð rD   zType[KeysView[Any]]Ú	dict_keyszType[ValuesView[Any]]Údict_valuesÚodict_valueszType[Iterator[Any]]Útuple_iteratorc                ón   — t        | «      }t        j                  j                  j	                  |«       |S r@   )Ú
object_newr�   r�  ÚModulerË   )r�  rH  s     rE   Únn_module_newrü  €  s&   € Ü
�S‹/€CÜ	‡H�H‡O�O×Ñ˜SÔ!Ø€JrD   c                óL   — t        j                  t        j                  | d«      S rZ   )ro  ÚreduceÚoperatorÚmul)Úits    rE   Úproductr  †  s   € Ü×ÑœHŸL™L¨"¨aÓ0Ð0rD   c                ó>   — | j                  «       \  }\  }}|||z      S r@   )Ú
__reduce__)r  r¥  r
  rH  r    s        rE   Útuple_iterator_getitemr  Š  s%   € Ø—}‘}“Ñ€A�vˆˆuØˆu�u‰}ÑÐrD   c                ó$   — | j                  |«      S r@   )Úas_subclass)Útr�  s     rE   Úto_subclassr	  ’  s   € Ø�=‰=˜ÓÐrD   c                óZ   — t        t        j                  t        | «      ||dz   «      «      S rZ   )ÚnextrV   ÚisliceÚiter)Údr"  s     rE   Údict_keys_getitemr  –  s$   € Ü”	× Ñ ¤ a£¨!¨Q°©UÓ3Ó4Ð4rD   c                ój   — | j                   j                  }| j                  }|rdnd}|› d|› d|› �}|S )NÚLÚGz["z"].)r+  rÝ   rÛ  )rx   rð  rÛ  rŸ  r  Ú
local_names         rE   Ú	enum_reprr  š  sA   € ð �?‰?×#Ñ#€DØ
�*‰*€CÙ‰C˜c€EØ�7˜"˜T˜F # c UÐ+€JØÐrD   c                óþ   — || j                   d<   t        j                  «       j                  j                  }t
        j                  j                  j                  j                  ||«      x}r|| j                   d<   y y )NÚexample_valueÚunbacked_bindings)
Úmetar&   rj   Ú	fake_modeÚ	shape_envr�   r   ÚexperimentalÚsymbolic_shapesÚcompute_unbacked_bindings)Únoder  r  Úsymbol_to_paths       rE   Úset_example_valuer   ¤  sq   € ð "/€D‡I�IˆoÑÜ×"Ñ"Ó$×.Ñ.×8Ñ8€IÜŸ™×.Ñ.×>Ñ>×XÑXØ�=óð €~ð ð *8ˆ�	‰	Ð%Ò&ðrD   c                óž   — | j                  «       j                  j                  j                  d«      }t	        |«      sddlm}  |d«       |S )Nr  r3   r§  z:Cannot check Tensor object identity without its fake value)r£  r  r  rj   r8   r  r¨  )ÚvtÚfake_tensorr¨  s      rE   Ú_get_fake_tensorr$  ³  s>   € Ø—+‘+“-×$Ñ$×)Ñ)×-Ñ-¨oÓ>€KÜ�;ÔÝ&áÐRÔSØÐrD   c                ó
  ‡— ddl m}m}m}m} ‰j                  «       r%t        ˆfd„| D «       «      }|j                  |«      S d}	|rt        ‰|«      rd}	t        ‰«      Šd }
| D ]‰  }|	r.t        ||«      sŒ‰t        |«      u sŒ |j                  d«      c S  |t        j                  «      j                  ||‰gi «      }|
€|}
Œa |t        j                  «      j                  |||
gi «      }
Œ‹ |
€|j                  d«      }
|
S )Nr3   )ÚBuiltinVariablerÚ  ÚTensorVariableÚVariableTrackerc              3  ó„   •K  — | ]7  }|j                  «       xr! |j                  «       ‰j                  «       k(  –— Œ9 y ­wr@   )rå  rá  )rQ   r´   Úsearchs     €rE   rS   z iter_contains.<locals>.<genexpr>Å  sJ   øè ø€ ò 
ð ð × Ñ Ó"ò FØ×$Ñ$Ó&¨&×*CÑ*CÓ*EÑEóFñ
ùs   ƒ=A FT)rÜ  r&  rÚ  r'  r(  rå  ró  r$  rN  r$  rÿ  ÚeqÚcall_functionÚor_)rk   r*  ÚtxÚcheck_tensor_identityr&  rÚ  r'  r(  Úfound_constÚmust_check_tensor_idÚfoundr´   Úchecks    `           rE   Úiter_containsr4  ¼  s  ø€ ÷ó ð × Ñ Ô"Üó 
ð ô
ó 
ˆð
  ×&Ñ& {Ó3Ð3à ÐÙ¤¨F°NÔ!CØ#Ðä! &Ó)ˆà'+€EØò ˆÙÜ˜!˜^Õ,ØÔ-¨aÓ0Ò0Ø+×2Ñ2°4Ó8Ò8á#¤H§K¡KÓ0×>Ñ>¸rÀAÀvÀ;ÐPRÓSˆEØˆ}Ø‘á'¬¯©Ó5×CÑCØ˜ ˜¨ó‘ðð €}Ø ×'Ñ'¨Ó.ˆØ€LrD   c                ót   — t        | t        j                  t        j                  j                  t
        f«      S )z4Returns whether it indexes dictionaries using its id)rN  r�   r�  r�  rû  r   )r¿   s    rE   Ú	key_is_idr6  å  s#   € ä�aœ%Ÿ,™,¬¯©¯©Ô9JÐKÓLÐLrD   c                ót   — | j                  «       D �cg c]  }t        |«      rt        |«      n|‘Œ c}S c c}w r@   )r¾   r6  r6  )rx   r¿   s     rE   Ú	key_to_idr8  ê  s+   € Ø27·*±*³,Ö?¨Q”Y˜q”\ŒBˆqŒE qÑ(Ò?Ð?ùÒ?s   “5c               óÆ  ‡— ddl m} t        | t        t        f«      r\dj                  ˆfd„| D «       «      }t        | t        «      rd|› d�S t        | t        «      sJ ‚t        | «      dk(  rd|› d�S d|› d	�S t        | t        j                  «      rt        | ‰¬
«      j                  dd«      S  || «      r| j                  S t        | t        «      rd„ } || «      S | ›S )Nr3   )Úis_builtin_callablerÉ  c              3  ó8   •K  — | ]  }t        |‰¬ «      –— Œ y­w©©rð  N©Ú
const_repr©rQ   r  rð  s     €rE   rS   zconst_repr.<locals>.<genexpr>ò  s   øè ø€ ÒD¸Qœj¨°%×8Ð8ÑDùó   ƒú[ú]ú(z,)rÊ  r=  ú'rj  c                óx   — | j                   }|j                  }|dk(  r|j                  S |dz   |j                  z   S )NÚbuiltinsú.)r+  rÞ   rß   )ÚoÚklassrŸ  s      rE   Úfullnamezconst_repr.<locals>.fullname  s?   € Ø—K‘KˆEØ×%Ñ%ˆFØ˜Ò#Ø×)Ñ)Ð)Ø˜C‘< %×"4Ñ"4Ñ4Ð4rD   )Útrace_rulesr:  rN  r½   rO  rN   rÔ   rÖ  r×  r  ÚreplacerÝ   r“   )r´   rð  r:  Ú
elems_reprrK  s    `   rE   r?  r?  î  sØ   ø€ Ý0ä�!”dœE�]Ô#Ø—X‘XÓDÀ!ÔDÓDˆ
Ü�aœÔØ�z�l !Ð$Ð$ä˜a¤Ô'Ð'Ð'Ü�1‹v˜Š{Ø˜:˜, bÐ)Ð)à˜:˜, aÐ(Ð(Ü	�A”t—y‘yÔ	!ô ˜ %Ô(×0Ñ0°°bÓ9Ð9Ù	˜QÔ	Ø�z‰zÐÜ	�A”tÔ	ò	5ñ ˜‹{Ðà�ˆrD   c               óH   ‡— dj                  ˆfd„| D «       «      }d|z   dz   S )NrÉ  c              3  ó8   •K  — | ]  }t        |‰¬ «      –— Œ y­wr<  r>  r@  s     €rE   rS   z!dict_keys_repr.<locals>.<genexpr>  s   øè ø€ ÒG°qœ
 1¨E×2Ð2ÑGùrA  rB  rC  )rN   )Ú
const_keysrð  Úkeys_strs    ` rE   Údict_keys_reprrS    s&   ø€ Ø�x‰xÓG¸JÔGÓG€HØ�‰>˜CÑÐrD   Ú
__dict_key)ÚUnsupportedFakeTensorExceptionc                óP   — |› dt        |«      › d| j                  j                  › �S )Nr
  Ú_c)r6  Úoutputr¤   )r.  ÚrootrH  s      rE   Úget_safe_global_namerZ    s*   € ð ˆV�1”R˜“W�I˜R §	¡	× 4Ñ 4Ð5Ð6Ð6rD   c                ó¨   — 	  | «       S # t         $ r?}ddlm} d|j                  › d�}t        j                  |«        |||¬«       Y d }~y d }~ww xY w)Nr3   r§  zUnsupported: z with fake tensor propagation.rª  )rU  r  r¨  ÚreasonrÂ   r  )r†  r¢   r¨  Úmsgs       rE   Úwrap_fake_exceptionr^  $  sM   € ð'Ù‹tˆøÜ)ò 'Ý&à˜aŸh™h˜ZÐ'EÐFˆÜ�‰�CÔÙ�c A×&Ò&ûð'ús   ‚	 ‰	A’5AÁAc                óž   ‡ — t         j                  j                  j                  |«      5  t	        ˆ fd„«      cd d d «       S # 1 sw Y   y xY w)Nc                 ó.   •— t        j                  ‰ «      S r@   )r<  Údeepcopyr’  s   €rE   rF   z)deepcopy_to_fake_tensor.<locals>.<lambda>1  s   ø€ ¬4¯=©=¸Ó+=€ rD   )r�   r“  r#  ÚFakeCopyModer^  )rH  r  s   ` rE   Údeepcopy_to_fake_tensorrc  /  s;   ø€ Ü	×	Ñ	×	&Ñ	&×	3Ñ	3°IÓ	>ñ ?Ü"Ó#=Ó>÷?÷ ?ò ?ús   «AÁAc                ó~   — t        j                  t        j                  t        j                  | |z
  «      «      «      S )z+
    Calculate root mean squared error
    )r�   ÚsqrtÚmeanÚsquare)r?  rg  s     rE   Úrmserh  4  s)   € ô �:‰:”e—j‘j¤§¡¨c°C©iÓ!8Ó9Ó:Ð:rD   g-Cëâ6?c                óž  ‡ ‡‡‡‡‡‡‡‡‡	‡
‡— ‰€‰ Št        ‰ t        t        t        j                  t
        j                  j                  t
        j                  f«      r£t        ‰t        t        t        j                  f«      sJ dt        ‰ «      › dt        ‰«      › �«       ‚t        ‰ «      t        ‰«      k7  r	 ‰	d«       yt        ‰ «      t        ‰«      k(  xr& t        ˆˆˆˆˆ	ˆˆˆ
fd„t        ‰ ‰‰«      D «       «      S t        ‰ «      j                  dk(  r4t        ‰ j                  ‰j                  ‰j                  ‰‰‰‰‰‰‰	‰
¬«      S t        ‰ t         «      rÉt        ‰t         «      sJ ‚t#        ‰ j%                  «       «      t#        ‰j%                  «       «      k(  s;J d	t#        ‰ j%                  «       «      › d
t#        ‰j%                  «       «      › �«       ‚t'        ‰ j%                  «       «      D ],  }t        ‰ |   ‰|   ‰|   ‰‰‰‰‰‰‰	‰
¬«      rŒ# ‰	d|«        y yt        ‰ t"        «      rIt        ‰t"        «      sJ ‚t#        ‰ «      t#        ‰«      k(  sJ dt#        ‰ «      › d
t#        ‰«      › �«       ‚yt        ‰ t
        j(                  t*        f«      �rt        ‰ t
        j,                  j.                  «      rJ ‚t        ‰t
        j,                  j.                  «      rJ ‚d„ Šˆfd„‰ ‰‰fD «       \  Š ŠŠ‰ j0                  r.‰j0                  sJ ‚‰ j3                  «       Š ‰j3                  «       Št        ‰t
        j(                  «      sJ dt        ‰ «      › dt        ‰«      › �«       ‚‰rº‰ j4                  ‰j4                  k7  r ‰	d‰ j4                  ‰j4                  «       y‰ j4                  t
        j6                  k(  re‰ryt        j8                  ‰ j;                  t
        j<                  ¬«      ‰j;                  t
        j<                  ¬«      ‰‰‰¬«      }|s ‰	d«       |S ‰rì‰ j?                  «       j;                  t
        j@                  «      Š ‰j?                  «       j;                  t
        j@                  «      Št        j8                  ‰ ‰‰‰d¬«      ryt
        j                  jB                  jE                  ‰ ‰dd¬«      }|dk  r@tF        jI                  d|jK                  «       jM                  «       jO                  «       «       |dk\  S ‰s‰ j;                  ‰j4                  «      Š t        j8                  ‰ ‰‰‰‰¬«      ry‰j4                  t
        jP                  k(  �r,d}‰jS                  «       jU                  «       sq‰jS                  «       jU                  «       sS‰ jS                  «       jU                  «       r5t        j8                  ‰j;                  ‰j4                  ¬«      ‰||‰¬«      rytW        ‰‰ «      jO                  «       }tY        jR                  |«      rtF        jI                  d«       tW        ‰‰«      jO                  «       }‰j4                  t
        jZ                  t
        j\                  fv rdnd}‰
r‰j_                  «       dk  r‰dk\  rd}nm‰
r‰j_                  «       d k  r‰dk\  rd!}nP‰j_                  «       d"k  s;‰ j`                  d#k(  r'‰ jb                  d$   ‰ jb                  d%   cxk(  rd&k(  sn ‰d'k\  rd}|||z  ‰dz  z   k  }|sH‰rFtY        jR                  |«      r1tY        jR                  |«      rtd        jf                  jh                  sd}|s' ‰	d(||‰jk                  «       ‰j4                  |‰‰
«       |S ‰ry ‰	d)‰«       yt        ‰ tl        tn        t        d«      t6        t
        jp                  f«      r ‰ry‰ ‰k(  }|s ‰	d*t        ‰ «      ‰ ‰«       |S ts        ‰ «      stu        ‰ «      rS‰r&ts        ‰«      stu        ‰«      s‰ jO                  «       Š t        ‰ «      t        ‰«      u xr ‰ ‰k(  }|s
 ‰	d+‰ ‰«       |S tw        ‰ «      rTt        ‰ «      t        ‰«      u xr< t        t        jx                  ‰ «      t        jx                  ‰«      ‰‰‰‰‰‰‰‰	‰
¬«      S t        ‰ «      j                  d,v rNt        ‰ «      t        ‰«      u sJ ‚t        ˆˆˆˆˆˆ	ˆ ˆˆˆˆ
fd-„‰ jz                  j%                  «       D «       «      S t}        d.t        ‰ «      j                  › �«      ‚)/z-Check correctness to see if ref and res matchNztype mismatch rr   zLength mismatchFc              3  óR   •K  — | ]  \  }}}t        |||‰‰
‰‰‰	‰‰‰¬ «      –— Œ  y­w)©Ú	log_errorÚ(use_larger_multiplier_for_smaller_tensorN)Úsame)rQ   ÚaiÚbiÚ	fp64_refiÚcos_similarityÚ	equal_nanÚexact_dtypeÚignore_non_fprl  Úrelax_numpy_equalityÚtolrm  s       €€€€€€€€rE   rS   zsame.<locals>.<genexpr>T  sL   øè ø€ ò ,
ñ "��B˜	ô ØØØØØØØØ$ØØ#Ø9a÷ð ñ,
ùs   ƒ$'ÚQuestionAnsweringModelOutputrk  zkeys mismatch z == ©rr  rw  rs  rt  rv  ru  rl  rm  zAccuracy failed for key name %sTzelements mismatch c                ód   — t        | t        j                  «      r| S t        j                  | «      S r@   )rN  r�   r�  Útensor©r  s    rE   Ú	to_tensorzsame.<locals>.to_tensor•  s"   € Ü" 1¤e§l¡lÔ3�1ÐH¼¿¹Àa»ÐHrD   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr@   r6   )rQ   rŸ  r}  s     €rE   rS   zsame.<locals>.<genexpr>˜  s   øè ø€ ÒM°™i¨ŸnÑMùs   ƒzdtype mismatch %s, %sr6  )ÚatolÚrtolrs  z+Accuracy failed: uint8 tensor did not matchr   g�íµ ÷Æ°>)ÚdimÚepsg®Gáz®ï?zSimilarity score=%sg{®Gáz¤?z=Found nan in reference. Consider running in higher precision.g      @g       @é
   g      $@iô  g      @r  é   rþ  éþÿÿÿr3   g{®Gáz”?zŠRMSE (res-fp64): %.5f, (ref-fp64): %.5f and shape=%s. res.dtype: %s, multiplier: %f, tol: %f, use_larger_multiplier_for_smaller_tensor: %dz+Accuracy failed: allclose not within tol=%szAccuracy failed (%s): %s != %sz!Accuracy failed (numpy): %s != %s)ÚMaskedLMOutputÚSeq2SeqLMOutputÚ!CausalLMOutputWithCrossAttentionsÚLongformerMaskedLMOutputÚ	InstancesÚSquashedNormalÚBoxesÚNormalÚTanhTransformÚFooÚVariablec              3  ó†   •K  — | ]8  }t        t        ‰|«      t        ‰
|«      t        ‰|«      ‰‰‰‰‰	‰‰‰¬ «      –— Œ: y­w)ry  N)rn  rœ  )rQ   rn   rr  rs  rt  Úfp64_refru  rl  r?  rv  rg  rw  rm  s     €€€€€€€€€€€rE   rS   zsame.<locals>.<genexpr>J  s[   øè ø€ ò 
ð ô Ü˜˜SÓ!Ü˜˜SÓ!Ü˜ #Ó&Ø-ØØ#Ø'Ø%9Ø+Ø#Ø9a÷ð ñ
ùs   ƒ>Azunsupported type: )?rN  r½   rO  rA   rÞ  r�   r�  ÚParameterListrØ  r“   rÔ   rÆ  rS  rÝ   rn  Úlossrc  rÎ   r¾   Úsortedr�  rC   r“  r7   Ú	is_sparseÚto_denser7  rÜ   ÚallcloseÚtorc  Úflattenrj  Ú
functionalÚcosine_similarityrÂ   r  ÚcpuÚdetachÚitemrk  Úisnanró  rh  Úmathri  Úbfloat16ÚnumelÚndimrB  Úinductor_configÚcppÚinject_relu_bug_TESTING_ONLYrT  rP   rÙ   rF  rg  rl  r�  Ú	as_tensorÚ__dict__r\  )r?  rg  r’  rr  rw  rs  rt  rv  ru  rl  rm  r¿   ÚrÚscoreÚ	loose_tolÚ	ref_errorÚ	res_errorÚ
multiplierÚpasses_testr}  s   ```````````        @rE   rn  rn  ;  s   ÿû€ ð ÐØˆÜØŒd”Eœ;×,Ñ,¬e¯h©h×.DÑ.DÄeÇjÁjÐQôô Ø”$œœ{×0Ñ0Ð1ô
ð 	4àœD ›I˜; a¬¨S«	 {Ð3ó	4ð 
ô ˆs‹8”s˜3“xÒÙÐ'Ô(ØÜ�3‹xœ3˜s›8Ñ#ò 
¬÷ ,
ò ,
ô &)¨¨c°8Ó%<ô,
ó )
ð 	
ô  
ˆc‹×	Ñ	Ð=Ò	=ô Ø�H‰HØ�H‰HØ�M‰MØØØØØ ØØØ5]ô
ð 	
ô 
�CœÔ	Ü˜#œtÔ$Ð$Ð$Ü�3—8‘8“:‹¤#Ø�H‰H‹Jó#
ò 
ð 	CàœC §¡£
›OÐ,¨D´°S·X±X³Z³Ð0AÐBó	Cð 
ô ˜Ÿ™›
Ó#ò 	ˆAäØ˜‘FØ˜‘FØ˜Q‘KØ#1ØØ'Ø +Ø)=Ø"/Ø'Ø=eöñ Ð;¸QÔ?Ùð#	ð$ Ü	�CœÔ	Ü˜#œsÔ#Ð#Ð#Ü�3‹xœ3˜s›8Ò#ÐRÐ'9¼#¸c»(¸À4ÌÈCËÀzÐ%RÓRÐ#ØÜ	�Cœ%Ÿ,™,¬Ð.Õ	/Ü˜c¤5×#4Ñ#4×#?Ñ#?Ô@Ð@Ð@Ü˜c¤5×#4Ñ#4×#?Ñ#?Ô@Ð@Ð@ò	Ió N¸¸cÀ8Ð8LÔMÑˆˆS�(à�=Š=Ø—=’=Ð �=Ø—,‘,“.ˆCØ—,‘,“.ˆCÜ˜#œuŸ|™|Ô,ÐV°¼tÀC»y¸kÈÌ4ÐPSË9È+Ð.VÓVÐ,ÙØ�y‰y˜CŸI™IÒ%ÙÐ1°3·9±9¸c¿i¹iÔHØØ�y‰yœEŸJ™JÒ&Ù Øä—N‘NØ—F‘F¤§¡�FÓ-Ø—F‘F¤§¡�FÓ-ØØØ'ô�ñ ÙÐKÔLØ�áØ—+‘+“-×"Ñ"¤5§=¡=Ó1ˆCØ—+‘+“-×"Ñ"¤5§=¡=Ó1ˆCÜ�~‰~˜c 3¨S°sÀdÕKð Ü—H‘H×'Ñ'×9Ñ9¸#¸sÈÈtÐ9ÓTˆEØ�tŠ|Ü—‘Ð1°5·9±9³;×3EÑ3EÓ3G×3LÑ3LÓ3NÔOØ˜D‘=Ð áØ—f‘f˜SŸY™YÓ'�ô �~‰~˜c 3¨S°sÀiÕPØð �~‰~¤§¡Ó.ð %�	à Ÿ™Ó(×,Ñ,Ô.ØŸI™I›KŸO™OÔ-ØŸ	™	›Ÿ™Ô)ÜŸ™Ø Ÿ™¨#¯)©)˜Ó4ØØ&Ø&Ø"+õð  Ü  ¨3Ó/×4Ñ4Ó6�	ä—:‘:˜iÔ(Ü—K‘KØWôô ! ¨3Ó/×4Ñ4Ó6�	ð Ÿ9™9¬¯©¼¿¹Ð(GÑG‘CÈSð ñ <Ø—N‘NÓ$¨Ò*¨s°hªà!%‘JÙ=Ø—N‘NÓ$¨Ò+°°x²à!$‘Jà—N‘NÓ$ tÒ+ØŸ™ Aš¨#¯)©)°B©-¸3¿9¹9ÀR¹=Ô*MÈAÔ*Mà˜h’ð
 "%�Jà'¨J¸Ñ,BÀSÈ4ÁZÑ,OÑP�á#Ù!ÜŸ
™
 9Ô-ÜŸ
™
 9Ô-ô ,×/Ñ/×LÒLà"&�KÙ"ÙðIà!Ø!ØŸ™›
ØŸ	™	Ø"ØØ@ô
ð #Ð"áØáÐCÀSÔIØÜ	�Cœ#œs¤D¨£J´´e·l±lÐCÔ	DÙØØ�3‰JˆÙÙÐ6¼¸S»	À3ÈÔLØˆÜ	˜3Ô	Ô#6°sÔ#;ÙÜ˜cÔ"Ô&9¸#Ô&>à—(‘(“*ˆCÜ�#‹Yœ$˜s›)Ð#Ò5¨#°©*ˆÙÙÐ9¸3ÀÔDØˆÜ	˜#Ô	Ü�S“	œT #›YÐ&ò 
¬DÜ�O‰O˜CÓ Ü�O‰O˜CÓ ØØ)ØØØ#Ø!5Ø'ØØ5]ô-
ð 	
ô 
ˆc‹×	Ñ	ð  ñ 
ô �C‹yœD ›IÑ%Ð%Ð%Ü÷ 
õ 
ð —|‘|×(Ñ(Ó*ô
ó 
ð 	
ô" Ð/´°S³	×0BÑ0BÐ/CÐDÓEÐErD   c                ó~   — | j                   j                  d«      d   }d| j                  › d|› d| j                  › d�S )Nú/rþ  rE  z' (rs   rÊ  )r³  Úsplitr  r  )r  Úshort_filenames     rE   Úformat_func_inforµ  ^  sD   € Ø×%Ñ%×+Ñ+¨CÓ0°Ñ4€NØˆt�|‰|ˆn˜C Ð/¨q°×1DÑ1DÐ0EÀQÐGÐGrD   c               #  ó  K  — t         j                  } t        j                  t         _        t         j                  }t        j                  t         _        	 d –— | t         _        |t         _        y # | t         _        |t         _        w xY w­wr@   )r4   Úcache_size_limitrT  rÈ   Úaccumulated_cache_size_limit)ÚpriorÚprior_acc_limits     rE   Údisable_cache_limitr»  c  s_   è ø€ ä×#Ñ#€EÜ!Ÿk™k„FÔÜ×9Ñ9€OÜ*-¯+©+„FÔ'ð>Ûà"'ŒÔØ.=ŒÕ+øð #(ŒÔØ.=ŒÕ+üs   ‚ABÁA1 ÁBÁ1B	Â	BzDefaultDict[Any, List[Any]]Úguard_failuresz3List[torch._dynamo.output_graph.GraphCompileReason]Úgraph_break_reasonsc                óä   — dt         j                   j                  «       j                  d«      z   dz   t        t	        j
                  «       «      z   }t        j                  j                  | |«      S )NÚrun_z%Y_%m_%d_%H_%M_%S_%fz-pid_)ÚdatetimeÚnowÚstrftimerP   rä   Úgetpidrø   rN   )Úroot_dirÚdir_names     rE   Ú_get_debug_dirrÆ  €  sf   € ð 	Ü
×
Ñ
×
Ñ
Ó
!×
*Ñ
*Ð+AÓ
Bñ	Cð ñ	ô Œb�i‰i‹kÓ
ñ		ð ô �7‰7�<‰<˜ (Ó+Ð+rD   c                 ó8   — t         j                  } t        | «      S r@   )r4   Údebug_dir_rootrÆ  )Ú
debug_roots    rE   rù   rù   Œ  s   € Ü×&Ñ&€JÜ˜*Ó%Ð%rD   c                ó�   — d| j                   v r't        | j                   d   «      r| j                   d   S |rddlm}  |d«       y y )Nr  r   r§  z9`FakeTensor` example value was required but not available)r  r8   Útorch._dynamo.excr¨  )r  Úrequiredr¨  s      rE   Úextract_fake_example_valuerÍ  ‘  s?   € Ø˜$Ÿ)™)Ñ#¬°·	±	¸/Ñ0JÔ(KØ�y‰y˜Ñ)Ð)Ù	Ý3áÐQÕRàrD   c                ó8   — t        | «      |j                  u sJ ‚| S r@   )r9   r  )r¢   r.  s     rE   Úensure_graph_fakerÏ  œ  s   € Ü˜qÓ! R§\¡\Ñ1Ð1Ð1Ø€HrD   c                óh   ‡ ‡— dˆˆ fd„}t         j                  j                  j                  ||«      S )Nc                óÊ   •— | j                   dk(  rd| j                  vrt        | ‰‰«      S | j                  d   }‰s&t        |t        j
                  «      rt        |‰«      S |S )Nr,  r  )r  r  Úget_fake_valuerN  r�   r�  rÏ  )r"  rw   Úallow_non_graph_faker.  s     €€rE   Úvisitz)get_fake_values_from_nodes.<locals>.visit¢  s\   ø€ Ø�4‰4�?Ò" ¸a¿f¹fÑ'Dô " ! RÐ)=Ó>Ð>à�f‰f�_Ñ%ˆÙ#¬
°3¼¿¹Ô(EÜ$ S¨"Ó-Ð-Øˆ
rD   )r"  ztorch.fx.Node)r�   r   r  Úmap_arg)r.  r  rÓ  rÔ  s   ` ` rE   Úget_fake_values_from_nodesrÖ  ¡  s%   ù€ ö	ô �8‰8�=‰=× Ñ  ¨Ó.Ð.rD   c           	     ó&	  ‡ ‡‡‡‡— ddl m} ddlm}m}m}m}m} ‰ j                  }	d‰ j                  v r't        ‰ j                  d   «      r‰ j                  d   S t        ‰‰ j                  ‰ j                  f|«      \  ŠŠdŠ|	dk(  r^t        ‰«      dkD  rPt        ‰d   t         j"                  j$                  «      r)t'        ‰d   ‰j(                  «      ft+        ‰dd «      z   Š|	dk(  rb‰j,                  j.                  ‰ j0                     Št3        ‰«      rt5        ‰d	«      r‰j7                  ‰‰«       t'        ‰‰j(                  «      Š	 ‰j(                  5  t9        «       5  t;        ˆˆˆˆ ˆfd
„«      }
ddd«       ddd«       |s>ts        jt                  t         jv                  ty        jz                  t|        ‰¬«      
«      }
S # 1 sw Y   ŒSxY w# 1 sw Y   ŒWxY w# |$ r ‚ t<        $ �rŸ}|}|j>                  �|j>                  }t        |t         j@                  jB                  jD                  «      r |d|jF                  › d�«       �nt        |t         j@                  jB                  jH                  «      rTt         jJ                  jL                  jN                  s |d|jF                  › d�«       �n¥ |d|jF                  › d�«       �n�t        |t         j@                  jB                  jP                  «      r§|jF                  }	d}t        |	t         jR                  jT                  «      r[t         jV                  jY                  |	jZ                  j\                  |	jZ                  j^                  «      }|�|\  }}d|› d|› d|› d�} |d|jF                  › d|› d�«       n¸t        |t         j`                  jb                  jd                  jf                  «      r ||jh                  tk        |«      d¬«      ‚t        ||«      r! ||jh                  |j                  d   «      |‚t        |tl        «      r%dtk        |«      v r |d‰ j0                  › d|› �«        |tk        |«      «      jo                  |jp                  «      d‚d}~ww xY w)az  
    Run the computation represented by `node` using fake tensors and return the result.

    allow_non_graph_fake: whether to allow the return result to be:
        1. non-fake or 2. fake that is not created by this instance of Dynamo.
        If `True`, you must be prepared to deal with such return values, ideally
        by further wrapping them as this graph's fakes.
    r   )ÚValueRangeErrorr3   )ÚTorchRuntimeErrorr¨  ÚUnsupportedÚ	UserErrorÚUserErrorTyper  NÚcall_methodÚcall_moduleÚ_initialize_hookc                 ó6   •— t        ‰j                  ‰‰ ‰‰«      S r@   )Úrun_noderX  )r-  r.  Únnmoduler  r.  s   €€€€€rE   rF   z get_fake_value.<locals>.<lambda>â  s   ø€ œ §¡¨D°$¸ÀÓI€ rD   zdata dependent operator: zC; to enable, set torch._dynamo.config.capture_scalar_outputs = Truezdynamic shape operator: zM; to enable, set torch._dynamo.config.capture_dynamic_output_shape_ops = Truezm; Operator does not have a meta kernel that supports dynamic output shapes, please report an issue to PyTorchrj  z:It's possible that the support was implemented in module `z` and you may need to `import z`(z), otherwise zunsupported operator: z (z~see https://docs.google.com/document/d/1GgvOe7C8_NVOMLOCwDaYV1mXXyHMXY7ExoewHqooxrs/edit#heading=h.64r4npvq0w0 for how to fix)Úconstrain_as_size_example)Ú	case_nameÚargumentz
TypeError z: )r.  )?Útorch.utils._sympy.value_rangesrØ  r  rÙ  r¨  rÚ  rÛ  rÜ  r  r  r8   rÖ  r-  r.  rÔ   rN  r�   r�  rû  rc  r  rO  rX  Ú
nn_modulesÚtargetr˜  rë  Ú_infer_parametersr$   r^  r\  Ú	__cause__r“  r#  ÚDataDependentOutputExceptionÚfuncÚDynamicOutputShapeExceptionÚ_dynamor4   Ú capture_dynamic_output_shape_opsÚUnsupportedOperatorExceptionrv  rx  rp  Ú_dispatch_pystubÚ_schemarÛ  Úoverload_namer   r  r  ÚGuardOnDataDependentSymNodeÚCONSTRAINT_VIOLATIONrP   r(  Úwith_tracebackÚ__traceback__ÚpytreeÚtree_map_onlyr�  ro  ÚpartialrÏ  )r  r.  rÓ  rØ  rÙ  r¨  rÚ  rÛ  rÜ  r  Úret_valr¢   ÚcauseÚimport_suggestionÚmaybe_pystubrŸ  Úctxr
  r-  r.  râ  s   ``                @@@rE   rÒ  rÒ  °  s  ü€ õ @÷õ ð 
�‰€Bð ˜$Ÿ)™)Ñ#¬°·	±	¸/Ñ0JÔ(KØ�y‰y˜Ñ)Ð)ä-Ø
ˆT�Y‰Y˜Ÿ™Ð$Ð&:ó�L€Dˆ&ð €HØ	ˆ]Òœs 4›y¨1š}´¸DÀ¹GÄUÇXÁXÇ_Á_Ô1Uä'¨¨Q©°·±Ó>Ð@Ä5ÈÈaÈbÈÃ?ÑRˆà	ˆ]ÒØ—9‘9×'Ñ'¨¯©Ñ4ˆä˜(Ô#¬°Ð:LÔ(Mð
 ×&Ñ& x°Ô6ô +¨8°R·\±\ÓBˆðCRØ�\‰\ñ 	Ô3Ó5ñ 	Ü)ßIóˆG÷	÷ 	ñH  Ü× Ñ Ü�L‰Lœ)×+Ñ+Ô,=À"ÔEÀwó
ˆð €N÷Q	ð 	ú÷ 	ð 	ûð ò ØÜó <RØ ˆØ�;‰;Ð"Ø—K‘KˆEäØ”5×$Ñ$×0Ñ0×MÑMô
ñ Ø+¨E¯J©J¨<ð 8Tð Töô Ø”5×$Ñ$×0Ñ0×LÑLô
ô —=‘=×'Ñ'×HÒHÙØ.¨u¯z©z¨lð ;bð böñ
 Ø.¨u¯z©z¨lð ;8ð 8öô
 Ø”5×$Ñ$×0Ñ0×MÑMô
ð —‘ˆBØ "ÐÜ˜"œeŸj™j×3Ñ3Ô4Ü$Ÿx™x×8Ñ8Ø—J‘J—O‘O R§Z¡Z×%=Ñ%=ó �ð  Ð+Ø".‘K�F˜Cð#Ø#) (Ð*HÈÈð QØ˜5 ð/ð &ñ
 Ø(¨¯©¨°BÐ7HÐ6Ið J#ð #õô
 Ø”5—8‘8×(Ñ(×8Ñ8×TÑTô
ñ Ø×2Ñ2Ü�E“
Ø5ôð ô
 ˜˜Ô/Ù˜M×>Ñ>ÀÇÁÀqÁ	ÓJÐPQÐQÜ˜œyÔ)¨j¼CÀ»JÑ.FÙ˜J t§{¡{ m°2°e°WÐ=Ô>á¤ A£Ó'×6Ñ6°q·±ÓGÈTÐQûðy<RúsI   ÅG" ÅGÅ%G
Å8GÆ G" Ç
G	ÇGÇGÇG" Ç"RÇ1JRÒRc                 ó$   — t        t        dd «      S )Nrx   )rœ  Ú_current_noder6   rD   rE   Úget_current_noder  .  s   € Ü”= '¨4Ó0Ð0rD   c              #  óv   K  — t        «       }| t        _        	 d –— |t        _        y # |t        _        w xY w­wr@   )r  r  rx   )r  Úolds     rE   Úset_current_noder  2  s.   è ø€ ä
Ó
€CØ„MÔð"Ûà!ŒÕø˜cŒÕüs   ‚9™) �9©6¶9c                ó  ‡‡‡‡— ‰j                   Št        ‰«      5  ˆˆˆˆfd„}	 ‰dk(  r ‰j                  ‰i ‰¤Žcddd«       S ‰dk(  r+ t        ‰d   ‰j                  «      ‰dd i ‰¤Žcddd«       S ‰dk(  r|€J ‚ |‰i ‰¤Žcddd«       S ‰dk(  r.| j                  j                  ‰j                  «      cddd«       S ‰d	k(  r(d
‰j                  v sJ ‚‰j                  d
   cddd«       S 	 ddd«       t        ‰«      ‚# t        t        f$ r }ddl	m
}  | ||«      |¬«       Y d}~Œ=d}~wt        $ r0}t         ||«      «      j                  |j                  «      |‚d}~ww xY w# 1 sw Y   t        ‰«      ‚xY w)aÄ  
    Runs a given node, with the given args and kwargs.

    Behavior is dictated by a node's op.

    run_node is useful for extracting real values out of nodes.
    See get_real_value for more info on common usage.

    Note: The tracer arg is only used for 'get_attr' ops
    Note: The nnmodule arg is only used for 'call_module' ops

    Nodes that are not call_function, call_method, call_module, or get_attr will
    raise an AssertionError.
    c           	     óN   •— d‰› d‰j                   › d‰› d‰› d�	t        | «      z   S )NzFailed running rr   z(*z, **z):
)rè  rP   )r¢   r-  r.  r  r  s    €€€€rE   Úmake_error_messagez$run_node.<locals>.make_error_messageO  s4   ø€ Ø$ R D¨¨$¯+©+¨°b¸¸¸dÀ6À(È$ÐOÔRUÐVWÓRXÑXÐXrD   r,  NrÝ  r   r3   rÞ  Úget_attrÚplaceholderr  r§  rª  )r  r  rè  rœ  Úoutput_graphÚget_submoduler  r¬  rU  r  r¨  r’   r\  rö  r÷  ÚAssertionError)	Útracerr  r-  r.  râ  r  r¢   r¨  r  s	    ```    @rE   rá  rá  <  s—  û€ ð 
�‰€Bä	˜$Ó	ñ ÷	Yð	Ø�_Ò$Ø"�t—{‘{ DÐ3¨FÑ3÷ñ ð �}Ò$Ø4”w˜t A™w¨¯©Ó4°d¸1¸2°hÐIÀ&ÑI÷ñ ð �}Ò$ØÐ+Ð+Ð+Ù Ð0¨Ñ0÷ñ ð �zÒ!Ø×*Ñ*×8Ñ8¸¿¹ÓE÷ñ ð �}Ò$Ø&¨$¯)©)Ñ3Ð3Ð3Ø—y‘y Ñ1÷#ñ ð %÷ô: ˜Ó
Ðøô $Ô%CÐDò 	=å*áÑ,¨QÓ/¸!×<Ò<ûÜò 	ÜÑ1°!Ó4Ó5×DÑDØ—‘óàðûð	ú÷1ô: ˜Ó
ÐúsX   œ	E-¦DÁ&DÁ6DÂ)DÃ#DÃ0E-ÄE*ÄD.Ä)E-Ä.E*Ä:+E%Å%E*Å*E-Å-F c                ó„  ‡— ddl m} ‰j                  }| |v r||    S | j                  }t        j
                  j                  j                  | j                  | j                  fˆfd„«      \  }}|dk(  r'd| j                  v r| j                  d   j                  S |dk(  rM‰j                  j                  | j                     }t        |«      st!        j"                  |«      }n ||i |¤Ž nd}	 t%        ‰| |||«      }||| <   |S # t&        $ r0}	 |t)        |	«      «      j+                  |	j,                  «      d‚d}	~	ww xY w)z‘
    Run the actual computation represented by `node` and return the result.
    This will execute any dependent nodes in the graph as well.
    r3   )rÙ  c                ó   •— t        | ‰«      S r@   )Úget_real_value)r"  r  s    €rE   rF   z get_real_value.<locals>.<lambda>{  s   ø€ ”.  FÓ+€ rD   r
  ÚgraphargrÞ  N)r  rÙ  Úreal_value_cacher  r�   r   r  rÕ  r-  r.  r  Úexampler  rç  rè  r˜  r<  ra  rá  r\  rP   rö  r÷  )
r  r  rÙ  Úcacher  r-  r.  Ú	nn_moduleÚ
real_valuer¢   s
    `        rE   r  r  m  s/  ø€ õ
 'à×#Ñ#€EØˆu�}Ø�T‰{Ðà	�‰€BÜ—8‘8—=‘=×(Ñ(Ø	�‰�D—K‘KÐ Û+ó�L€Dˆ&ð
 
ˆ]Ò˜z¨T¯Y©YÑ6Ø�y‰y˜Ñ$×,Ñ,Ð,à	ˆ]ÒØ×'Ñ'×2Ñ2°4·;±;Ñ?ˆ	Ü˜iÔ(ÜŸ™ iÓ0‰Iñ �tÐ&˜vÓ&àˆ	ðRÜ˜f d¨D°&¸)ÓDˆ
Ø ˆˆd‰ð Ðøô ò RÙ¤ A£Ó'×6Ñ6°q·±ÓGÈTÐQûðRús   Ã0D Ä	D?Ä+D:Ä:D?c                óì   ‡— ddl mŠm} ˆfd„}| j                  «       D ]   \  }} ||«      sŒJ d|› d ||«      › �«       ‚ | j	                  «       D ]   \  }} ||«      sŒJ d|› d ||«      › �«       ‚ y )Nr   )ÚFakeTensorConfigr8   c                ób   •— ‰j                   r"dd l}d|j                  | j                  «      › �S y)Nr   z"FAKE TENSOR CREATION TRACEBACK: 
 zNEnable TORCH_FAKE_TENSOR_DEBUG=1 to get creation stack traces on fake tensors.)ÚdebugÚ	tracebackÚformat_listÚ_debug_trace)r  r  r  s     €rE   Ústack_or_hintz7assert_no_fake_params_or_buffers.<locals>.stack_or_hint—  s/   ø€ Ø×!Ò!Ûà8¸×9NÑ9NÈqÏ~É~Ó9^Ð8_Ð`Ð`àcrD   zUnexpected fake buffer rr   zUnexpected fake param )Útorch._subclasses.fake_tensorr  r8   Únamed_buffersÚnamed_parameters)r·  r8   r  rÛ  Úbufferr°  r  s         @rE   Ú assert_no_fake_params_or_buffersr$  ”  s°   ø€ ßGôdð ×(Ñ(Ó*ò D‰ˆˆfÙØõ
ð 	Dà$ T F¨!©M¸&Ó,AÐ+BÐCó	Dð 
ðDð ×*Ñ*Ó,ò B‰ˆˆeÙØõ
ð 	Bà# D 6¨©=¸Ó+?Ð*@ÐAó	Bð 
ñBrD   c                ó8   — | j                   › d| j                  › �S )z9
    Returns the fully qualified name of the object.
    rH  )rÞ   rß   r’  s    rE   Úfqnr&  ©  s!   € ð �n‰nÐ˜Q˜s×/Ñ/Ð0Ð1Ð1rD   c                óR   — t         j                  j                  j                  r| S |S r@   )r�   rî  r4   Úassume_static_by_default)Úcount1Úcount2s     rE   Úifdynstaticdefaultr+  °  s   € Ü‡}�}×Ñ×4Ò4ØˆàˆrD   c           
     ó8  — t        t        j                  t        j                  j	                  t        t        | j                  «      «      «      «      D ]D  }|j                  d«      sŒ|d   dk7  sŒt        j                  | j                  › d|dd › �«       ŒF y)z@
    Ensure all the files in a given submodule are imported
    z.pyr   r
  rH  Néýÿÿÿ)r•  rä   Úlistdirrø   r  r
   rP   Ú__file__ÚendswithÚ	importlibÚimport_modulerÝ   )r—  r  s     rE   Úimport_submoduler3  ·  sw   € ô œ2Ÿ:™:¤b§g¡g§o¡o´d¼3ÀÇÁÓ6MÓ&NÓOÓPò GˆØ×Ñ˜UÕ#¨°©°sÓ(:Ü×#Ñ# s§|¡| n°A°h¸sÀ°m°_Ð$EÕFñGrD   c                ó*   — t        t        | «      «      S r@   )Úclass_has_getattributer“   rZ  s    rE   Úobject_has_getattributer6  À  s   € Ü!¤$ u£+Ó.Ð.rD   c                ó„   — 	 t        t        j                  | d«      t        j                  «      ry	 y# t
        $ r Y yw xY w)NÚ__getattribute__TF)rN  rr  rs  r{  r|  ÚAttributeError©r�  s    rE   r5  r5  Ä  sO   € ðÜÜ×"Ñ" 3Ð(:Ó;Ü×Ñô
ð ð	
ð øô ò ØØðús   ‚.3 ³	?¾?c                ó¼   — 	 t        j                  t        | «      d«      }|r(|t        j
                  j                  j                  u rd }|S # t        $ r d }Y Œ9w xY w)NÚ__getattr__)rr  rs  r“   r9  r�   r�  rû  r<  )rx   Úignore_nn_module_getattrÚ
getattr_fns      rE   Úget_custom_getattrr?  Ð  sX   € ðÜ×+Ñ+¬D°«K¸ÓGˆ
ñ   J´%·(±(·/±/×2MÑ2MÑ$Màˆ
ØÐøô ò ØŠ
ðús   ‚A ÁAÁAc                  ó   — e Zd ZdZdZdZy)ÚTensorStaticReasoné   r„  rt   N)rÝ   rÞ   rß   Ú	PARAMETERÚ
NOT_TENSORÚNN_MODULE_PROPERTYr6   rD   rE   rA  rA  Û  s   „ Ø€IØ€JØÑrD   rA  c                ó–   — | t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ryt	        d| › �«      ‚)Nz>mark_dynamic on parameter, parameters are always static today.z2mark_dynamic on a non tensor, how did this happen?z4tensor is static because it is nn module associated.zIllegal reason )rA  rC  rD  rE  r  )r\  s    rE   Útensor_static_reason_to_messagerG  á  sJ   € ØÔ#×-Ñ-Ò-ØOØÔ#×.Ñ.Ò.ØCØÔ#×6Ñ6Ò6ØEÜ
˜?¨6¨(Ð3Ó
4Ð4rD   c                ó’  — ddl m} |j                  «       j                  «       s|j                  «       j	                  «       r"t
        j                  rdt        j                  fS t        | «      t        j                  j                  u s ||«      r"t
        j                  rdt        j                  fS |sdt        j                  fS y)a@  
    Given a tensor, source, and is_tensor flag, determine if a shape should be static.

    Args:
    tensor - the real tensor to evaluate, parameters force a static shape.
    is_tensor - internal dynamo check, essentially "is_tensor": target_cls is TensorVariable,
    tensors not in a TensorVariable for whatever reason are forced static.

    Returns a tuple, where the first element is the bool of whether or not this tensor should have a static shape.
    The second element is a TensorStaticReason, useful for passing to tensor_static_reason_to_message if needed.
    r3   )Ú)is_from_unspecialized_param_buffer_sourceT)FN)ÚsourcerI  Úguard_sourceÚis_specialized_nn_moduleÚ"is_unspecialized_builtin_nn_moduler4   Ú&force_nn_module_property_static_shapesrA  rE  r“   r�   r�  r‘  Úforce_parameter_static_shapesrC  rD  )r{  Ú	is_tensorÚtensor_sourcerI  s       rE   Útensor_always_has_static_shaperR  ë  s¢   € õ  Bð 	×"Ñ"Ó$×=Ñ=Ô?Ø×%Ñ%Ó'×JÑJÔLÜ
×
7Ò
7ØÔ'×:Ñ:Ð:Ð:ô 	ˆV‹œŸ™×*Ñ*Ñ*Ù4°]ÔCÜ
×
.Ò
.ØÔ'×1Ñ1Ð1Ð1ÙØÔ'×2Ñ2Ð2Ð2ØrD   c                ó(   ‡ ‡— ˆ ˆfd„}t        |«      S )Nc                 óŒ  •— 	 ddl m }  ‰j                  j
                  D �cg c];  }|j                  |j                  |j                  |j                  |j                  g‘Œ= }} | |g d¢¬«      }t        ‰‰j                  j                  j                  |«      S # t        $ r dt        t        ‰‰«      «      z   cY S w xY wc c}w )Nr   )rT   zkTabulate module missing, please install tabulate to log the graph in tabular format, logging code instead:
)ÚopcoderÛ  rè  r-  r.  rI   )rT   rU   rP   r+   Úgraphr  r  rÛ  rè  r-  r.  r*   r†   Ú__code__r³  )rT   r"  Ú
node_specsÚ	graph_strÚfn_namer·  s       €€rE   Úinnerz(lazy_format_graph_tabular.<locals>.inner	  sµ   ø€ ð	Ý)ð ACÇÁÇÁö
Ø;<ˆQ�T‰T�1—6‘6˜1Ÿ8™8 Q§V¡V¨Q¯X©XÒ6ð
ˆ
ð 
ñ ØÒ Nô
ˆ	ô " '¨2¯:©:×+>Ñ+>×+JÑ+JÈIÓVÐVøô ò 	à~ÜÔ,¨W°bÓ9Ó:ñ;òð	üò
s   ƒB ¡A CÂ!B>Â=B>r1   )rZ  r·  r[  s   `` rE   Úlazy_format_graph_tabularr\  	  s   ù€ õWô" �eÓÐrD   c                óf   — | › d|› d|› d|› dt        j                  |«      j                  «       › d�
S )Nrr   z line z 
rK   )ÚdisÚBytecode)ÚprefixrÛ  r  Úline_nor  s        rE   Úformat_bytecoderb  "	  s;   € ØˆX�Q�t�f˜A˜h˜Z v¨g¨Y°c¼#¿,¹,ÀtÓ:L×:PÑ:PÓ:RÐ9SÐSUÐVÐVrD   Ú_forward_pre_hooksÚ_forward_hooksÚ_backward_pre_hooksÚ_backward_hooks)Ú_state_dict_pre_hooksÚ_state_dict_hooksÚ_load_state_dict_pre_hooksÚ_load_state_dict_post_hooksc                 óâ   — t        t        j                  j                  j                  j
                  «      xs7 t        t        j                  j                  j                  j                  «      S r@   )rÔ   r�   r�  ÚmodulesrŸ  Ú_global_backward_hooksÚ_global_backward_pre_hooksr6   rD   rE   Únn_module_has_global_hooksro  1	  sM   € ô Œu�x‰x×Ñ×&Ñ&×=Ñ=Ó>ò Ä#Ü�‰×Ñ×Ñ×:Ñ:óCð rD   c                ó  — g }| xr | xr | }|s|r|j                  t        «       |s|r|j                  t        «       |r|j                  t        «       g }|D ],  }t	        | |g «      }|D ]  }	||	   }
|j                  |
«       Œ Œ. |S )zÂ
    Sometimes its useful to differentiate between types of hooks such as forward/backward/pre
    hooks executed during module.__call__, and state_dict hooks which are executed separately.
    )ÚextendÚforward_hook_namesÚbackward_hook_namesÚstate_dict_hook_namesrœ  r‘   )r—  Úcheck_forward_hooksÚcheck_backward_hooksÚcheck_state_dict_hooksÚhook_dicts_to_checkÚcheck_all_hooksÚ	all_hooksÚhook_dict_nameÚhooksÚ	hook_namer*  s              rE   Únn_module_get_all_hooksr~  9	  s¸   € ð ÐàÐò 	'Ø$Ð$ò	'à&Ð&ð ñ
 ™oØ×"Ñ"Ô#5Ô6Ù™Ø×"Ñ"Ô#6Ô7ÙØ×"Ñ"Ô#8Ô9à€IØ-ò #ˆÜ˜˜^¨RÓ0ˆØò 	#ˆIØ˜Ñ#ˆDà×Ñ˜TÕ"ñ	#ð#ð ÐrD   c                ó6   — t        | |||¬«      }t        |«      S )zL
    Helper function to check if a module has any hooks attached to it.
    )ru  rv  rw  )r~  rÜ   )r—  ru  rv  rw  r|  s        rE   Únnmodule_has_hooksr€  Z	  s&   € ô $ØØ/Ø1Ø5ô	€Eô �‹;ÐrD   c                ó2  — t        | «      r| S t        | t        j                  «      rt	        | j
                  «      S t        | t        j                  «      r| j                  d¬«      S t        | t        t        f«      r t        | «      d„ | D «       «      S | S )z0Convert tensor and tnp.ndarray to numpy.ndarray.T)Úforcec              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr@   )Úto_numpy_helper©rQ   rH  s     rE   rS   z"to_numpy_helper.<locals>.<genexpr>u	  ó   è ø€ ÒA°Cœ?¨3×/ÑAùrD  )r8   rN  ÚtnprŒ  r„  r{  r�   r�  ÚnumpyrO  r½   r“   rZ  s    rE   r„  r„  l	  st   € äˆu„~ØˆÜ�%œŸ™Ô%Ü˜uŸ|™|Ó,Ð,Ü	�Eœ5Ÿ<™<Ô	(Ø�{‰{ ˆ{Ó&Ð&Ü	�EœE¤4˜=Ô	)ØŒt�E‹{ÑA¸5ÔAÓAÐAàˆrD   c                ó  — t         €J ‚t        | t         j                  «      rt        j                  | «      S t        | t
        j                  «      r| j                  S t        | t        t        f«      r t        | «      d„ | D «       «      S | S )zeConvert tnp.ndarray to tensor, leave other types intact. If a list/tuple, loop through it to convert.c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr@   )Únumpy_to_tensorr…  s     rE   rS   z"numpy_to_tensor.<locals>.<genexpr>‚	  r†  rD  )
r^  rN  rŒ  r�   r¨  r‡  r{  rO  r½   r“   rZ  s    rE   r‹  r‹  z	  sk   € äˆ>Ðˆ>Ü�%œŸ™Ô$Ü�‰˜uÓ%Ð%Ü�%œŸ™Ô%Ø�|‰|ÐÜ	�EœE¤4˜=Ô	)ØŒt�E‹{ÑA¸5ÔAÓAÐAàˆrD   c                  ó   — e Zd Zd„ Zd„ Zd„ Zy)Únumpy_to_tensor_wrapperc                óN   — || _         d| j                   j                  z   | _        y ©NÚwrapped_©r  rÝ   )rÊ   r  s     rE   rË   z numpy_to_tensor_wrapper.__init__ˆ	  s   € ØˆŒØ" T§V¡V§_¡_Ñ4ˆ�rD   c                ó6   — d| j                   j                  › d�S )Nz<Wrapped function <original ú>>r‘  rÏ   s    rE   Ú__repr__z numpy_to_tensor_wrapper.__repr__Œ	  s   € Ø-¨d¯f©f¯o©oÐ->¸bÐAÐArD   c                ó<   —  | j                   |i |¤Ž}t        |«      S r@   )r  r‹  ©rÊ   r-  r.  rw   s       rE   r"  z numpy_to_tensor_wrapper.__call__�	  s"   € Øˆd�f‰f�dÐ%˜fÑ%ˆÜ˜sÓ#Ð#rD   N)rÝ   rÞ   rß   rË   r”  r"  r6   rD   rE   r�  r�  ‡	  s   „ ò5òBó$rD   r�  c                óî   — t        | t        j                  «      rt        | |«      }t	        |«      S t        | t
        j                  «      r*t        t        j                  | «      |«      }t	        |«      S y r@   )rN  r‡  rŒ  rœ  r‹  r�   r�  )rH  rÛ  rw   s      rE   Únumpy_attr_wrapperr˜  ”	  sZ   € Ü�#”s—{‘{Ô#Ü�c˜4Ó ˆÜ˜sÓ#Ð#Ü	�CœŸ™Ô	&Ü”c—k‘k #Ó&¨Ó-ˆÜ˜sÓ#Ð#ð 
'rD   c                  ó$   — e Zd ZdZdd„Zd„ Zd„ Zy)Únumpy_method_wrapperzgConvert obj from torch.Tensor to tnp.ndarray and call method. Then convert result back to torch.Tensor.c                ó:   — || _         d| j                   z   | _        y r�  )ÚmethodrÝ   )rÊ   rœ  s     rE   rË   znumpy_method_wrapper.__init__ 	  s   € ØˆŒØ" T§[¡[Ñ0ˆ�rD   c                ó"   — d| j                   › d�S )Nz<Wrapped method <original r“  )rœ  rÏ   s    rE   r”  znumpy_method_wrapper.__repr__¤	  s   € Ø+¨D¯K©K¨=¸Ð;Ð;rD   c                óÂ   — |d   }t        |t        j                  «      rt        j                  |«      }t        || j                  «      } ||dd  i |¤Ž}t        |«      S ©Nr   r3   )rN  r�   r�  r‡  rŒ  rœ  rœ  r‹  )rÊ   r-  r.  rH  Úmethod_callablerw   s         rE   r"  znumpy_method_wrapper.__call__§	  sW   € Ø�1‰gˆÜ�cœ5Ÿ<™<Ô(Ü—+‘+˜cÓ"ˆCÜ! # t§{¡{Ó3ˆÙ˜t A B˜xÐ2¨6Ñ2ˆÜ˜sÓ#Ð#rD   N)rœ  rP   ©rÝ   rÞ   rß   rE  rË   r”  r"  r6   rD   rE   rš  rš  �	  s   „ Ùqó1ò<ó$rD   rš  c                  ó$   — e Zd ZdZdd„Zd„ Zd„ Zy)Únumpy_operator_wrapperzQImplements dunder methods for tnp.ndarray via functions from the operator libraryc                ó:   — || _         d|j                  › �| _        y r�  )r  rÝ   )rÊ   r  s     rE   rË   znumpy_operator_wrapper.__init__³	  s   € ØˆŒØ" 2§;¡; -Ð0ˆ�rD   c                ó"   — d| j                   › d�S )Nz<Wrapped operator <original r“  )rÝ   rÏ   s    rE   r”  znumpy_operator_wrapper.__repr__·	  s   € Ø-¨d¯m©m¨_¸BÐ?Ð?rD   c                óP   — |rJ ‚d„ |D «       } | j                   |Ž }t        |«      S )Nc              3  ó~   K  — | ]5  }t        |t        j                  «      rt        j                  |«      n|–— Œ7 y ­wr@   )rN  r�   r�  r‡  rŒ  r¤  s     rE   rS   z2numpy_operator_wrapper.__call__.<locals>.<genexpr>½	  s0   è ø€ ò 
ØKN¤
¨3´·±Ô =ŒC�K‰K˜ÔÀ3ÓFñ
ùs   ‚;=)r  r‹  r–  s       rE   r"  znumpy_operator_wrapper.__call__º	  s5   € ÙÐˆzñ
ØRVô
ˆð ˆd�g‰g�tˆnˆÜ˜sÓ#Ð#rD   N)r  zCallable[..., Any]r¡  r6   rD   rE   r£  r£  °	  s   „ Ù[ó1ò@ó$rD   r£  c                óB  — t        | t        «      s| S | j                  �rg }| j                  «       D ]v  }t        |t        j
                  «      rI|j                  |j                  j                  j                  |j                  j                  «      «       Œf|j                  |«       Œx g }| j                  «       D ]v  }t        |t        j
                  «      rI|j                  |j                  j                  j                  |j                  j                  «      «       Œf|j                  |«       Œx n | j                  «       }| j                  «       }t	        j                  ||| j                  | j                  | j                  ¬«      }|j!                  «        |S )N)r7  rF  r1  )rN  r7   Ú_has_symbolic_sizes_stridesrT  r�   ÚSymIntr‘   r  r  Ú	size_hintÚexprrC  Úempty_stridedr7  rF  r1  Úzero_)r´   rT  r  rC  r4  s        rE   Údefaker¯  Ä	  s*  € Ü�aœÔ$Øˆð 	×$Ó$ØˆØ—‘“ò 	ˆAÜ˜!œUŸ\™\Ô*Ø—‘˜AŸF™F×,Ñ,×6Ñ6°q·v±v·{±{ÓCÕDà—‘˜A•ð		ð
 ˆØ—‘“ò 	!ˆAÜ˜!œUŸ\™\Ô*Ø—‘˜aŸf™f×.Ñ.×8Ñ8¸¿¹¿¹ÓEÕFà—‘˜aÕ ñ		!ð �v‰v‹xˆØ—‘“ˆÜ×ÑØØØ�g‰gØ�x‰xØ—o‘oô	€Að ‡G�G„IØ€HrD   c                óN   — dd l }| |j                  j                  j                  u S r^   )Útorch.utils.checkpointrr  Ú
checkpoint)rH  r�   s     rE   Úis_utils_checkpointr³  ä	  s    € ã!à�%—+‘+×(Ñ(×3Ñ3Ð3Ð3rD   c                 ó¾   — dd l mc m} ddlm} |j
                  }t        j                  j                  j                  r|j                  } |j                  |fi | ¤ŽS )Nr   r3   )Ú TorchHigherOrderOperatorVariable)Útorch._higher_order_ops.wrapÚ_higher_order_opsÚwrapÚvariables.higher_order_opsrµ  Útag_activation_checkpointr�   Ú
_functorchr4   Úfunctionalize_rng_opsÚwrap_activation_checkpointÚmake)ÚoptionsÚhigher_order_opsrµ  Úactivation_checkpoint_ops       rE   Úbuild_checkpoint_variablerÂ  ë	  s_   € ß;Ð;åLð
 	×2Ñ2ð ô ×Ñ×Ñ×4Ò4Ø#3×#NÑ#NÐ à0Ð+×0Ñ0Ø ñà
ñð rD   c                óZ   — ddl m}  |«       }| dk(  r	 |S | dk(  r|rt        «       }|S d}|S )Nr3   )Úis_dynamo_supportedr�  rw  F)Ú
eval_framerÄ  r-   )Údevice_typerÄ  Úcompile_supporteds      rE   Úis_compile_supportedrÈ  þ	  sL   € Ý/á+Ó-ÐØ�eÒØð
 Ðð	 
˜Ò	Ñ#4Ü&›LÐð Ðð "ÐØÐrD   c                ób   — | j                  d«      }t        |d| j                  dd¬«      «      S )zê
    Convert byte offset `offset` of `str` into character offset.
    Byte offset is used for 3.11+ instruction column data.
    Takes things like unicode characters into consideration.

    Unchanged from CPython implementation.
    zutf-8NrM  )Úerrors)ÚencoderÔ   Údecode)rP   ÚoffsetÚas_utf8s      rE   Ú_fix_offsetrÏ  
  s4   € ð �j‰j˜Ó!€GÜˆw�w˜Ð×&Ñ& w°yÐ&ÓAÓBÐBrD   c                  ó6   — e Zd ZU ded<   ded<   ded<   ded<   y)Ú_AnchorsrÙ   Úleft_end_linenoÚleft_end_offsetÚright_start_linenoÚright_start_offsetNrÌ  r6   rD   rE   rÑ  rÑ  
  s   … ð ÓØÓØÓàÔrD   rÑ  c                óŒ  ‡‡— t         j                  dk\  sJ ‚ddl}	 |j                  d| z   dz   «      }t        |j                  «      dk7  ry| j                  d«      Šˆfd„}ˆfd	„Šˆˆfd
„}ˆˆfd„}|j                  d   }t        ||j                  «      �rœ|j                  }t        ||j                  «      rìt        t        |j                  j                  «      dz
  } |||j                  j                   «      }	 ‰||	«      \  }}	‰|   |	   x}
j#                  «       s|
dv r;|
dv r |||	«      \  }}	n |||	«      \  }}	‰|   |	   x}
j#                  «       rŒ6|
dv rŒ;|	dz   }|t        ‰|   «      k  r!‰|   |   x}
j#                  «       s	|
dvr|dz  }t%        ||	||«      S t        ||j&                  «      r±t        t        |j                  j                  «      dz
  } |||j                  j                   «      } ‰||«      \  }}‰|   |   dk7  r |||«      \  }}‰|   |   dk7  rŒt        t        |j                  «      dz
  } |||j                   «      }t%        ||||«      S t        ||j(                  «      r±t        t        |j*                  j                  «      dz
  } |||j*                  j                   «      } ‰||«      \  }}‰|   |   dk7  r |||«      \  }}‰|   |   dk7  rŒt        t        |j                  «      dz
  } |||j                   «      }t%        ||||«      S y# t        $ r Y yw xY w)a  
    Given source code `segment` corresponding to a bytecode
    instruction, determine:
        - for binary ops, the location of the binary op
        - for indexing, the location of the brackets.
    `segment` is expected to be a valid Python expression
    )rQ  é   r   Nz(
z
)r3   rK   c                ó"   •— t        ‰|    |«      S r@   )rÏ  )ÚlinenorÍ  Úliness     €rE   Ú	normalizez-_extract_anchors_from_expr.<locals>.normalize?
  s   ø€ Ü˜5 ™=¨&Ó1Ð1rD   c                óÚ   •— | t        ‰«      k  r8|t        ‰|    «      k\  r'd}| dz  } | t        ‰«      k  r|t        ‰|    «      k\  rŒ'| t        ‰«      k  r|t        ‰|    «      k  sJ ‚| |fS rŸ  ©rÔ   )rÙ  ÚcolrÚ  s     €rE   Únext_valid_charz3_extract_anchors_from_expr.<locals>.next_valid_charD
  sy   ø€ Ø”s˜5“zÒ! c¬S°°v±Ó-?Ò&?ØˆCØ�a‰KˆFð ”s˜5“zÒ! c¬S°°v±Ó-?Ó&?ð œ˜E›
Ò" s¬S°°v±Ó-?Ò'?Ð?Ð?Ø�sˆ{ÐrD   c                óp   •— |dz  } ‰| |«      \  } }| t        ‰«      k  r|t        ‰|    «      k  sJ ‚| |fS rZ   rÝ  ©rÙ  rÞ  rÚ  rß  s     €€rE   Ú	incrementz-_extract_anchors_from_expr.<locals>.incrementL
  sH   ø€ Øˆq‰ˆÙ% f¨cÓ2‰ˆ�Øœ˜E›
Ò" s¬S°°v±Ó-?Ò'?Ð?Ð?Ø�sˆ{ÐrD   c                ót   •— d}| dz  }  ‰| |«      \  } }| t        ‰«      k  r|t        ‰|    «      k  sJ ‚| |fS rŸ  rÝ  rá  s     €€rE   Únextlinez,_extract_anchors_from_expr.<locals>.nextlineS
  sM   ø€ ØˆØ�!‰ˆÙ% f¨cÓ2‰ˆ�Øœ˜E›
Ò" s¬S°°v±Ó-?Ò'?Ð?Ð?Ø�sˆ{ÐrD   rB  z)\#z\#rB  rD  )rT  rU  ÚastÚparseÚSyntaxErrorrÔ   Úbodyr³  rN  ÚExprrx   ÚBinOpr
   rÙ   ÚleftÚ
end_linenoÚend_col_offsetÚisspacerÑ  Ú	SubscriptÚCallrì  )Úsegmentrå  ÚtreerÛ  râ  rä  Ú	statementr¬  Ú
cur_linenoÚcur_colÚchÚ	right_colÚleft_linenoÚleft_colÚright_linenorÚ  rß  s                  @@rE   Ú_extract_anchors_from_exprrû  %
  sQ  ù€ ô ×Ñ˜wÒ&Ð&Ð&ãðð �y‰y˜ ™¨5Ñ0Ó1ˆô ˆ4�9‰9ƒ~˜ÒØà�M‰M˜$Ó€Eô2ô
õõð —	‘	˜!‘€IÜ�)˜SŸX™XÕ&Ø�‰ˆÜ�d˜CŸI™IÔ&ô œc 4§9¡9×#7Ñ#7Ó8¸1Ñ<ˆJÙ 
¨D¯I©I×,DÑ,DÓEˆGÙ"1°*¸gÓ"FÑˆJ˜ð ˜zÑ*¨7Ñ3Ð3�2×<Ñ<Ô>À"ÈÁ,Ø˜‘;Ù*2°:¸wÓ*GÑ'�J¡á*3°JÀÓ*HÑ'�J ð	 ˜zÑ*¨7Ñ3Ð3�2×<Ñ<Õ>À"ÈÂ,ð   !™ˆIàœC  jÑ 1Ó2Ò2Ø$ ZÑ0°Ñ;Ð;˜×DÑDÔFØ˜e‘Oà˜Q‘�	ô ˜J¨°¸YÓGÐGÜ˜˜cŸm™mÔ,ô œs D§J¡J×$9Ñ$9Ó:¸QÑ>ˆKÙ  ¨d¯j©j×.GÑ.GÓHˆHÙ$3°KÀÓ$JÑ!ˆK˜Ø˜Ñ$ XÑ.°#Ò5Ù(1°+¸xÓ(HÑ%�˜Xð ˜Ñ$ XÑ.°#Ó5ô  ¤ T§_¡_Ó5¸Ñ9ˆLÙ! ,°×0CÑ0CÓDˆIÜ˜K¨°<ÀÓKÐKÜ˜˜cŸh™hÔ'ô
 œs D§I¡I×$8Ñ$8Ó9¸AÑ=ˆKÙ  ¨d¯i©i×.FÑ.FÓGˆHÙ$3°KÀÓ$JÑ!ˆK˜Ø˜Ñ$ XÑ.°#Ò5Ù(1°+¸xÓ(HÑ%�˜Xð ˜Ñ$ XÑ.°#Ó5ô  ¤ T§_¡_Ó5¸Ñ9ˆLÙ! ,°×0CÑ0CÓDˆIÜ˜K¨°<ÀÓKÐKàøôK ò Ùðús   �L7 Ì7	MÍMc                óˆ	  — |j                   €J ‚|j                   j                  €yt        j                  | j                  |j                   j                  «      j                  «       }|j                   j                  €|S |j                   j                  �|j                   j                  €|S t        ||j                   j                  «      }d}d}g }|j                   j                  |j                   j                  k(  rDt        ||j                   j                  «      }||| }|j                  d|z  d||z
  z  z   «       �n—||d dz   }|j                  d|z  dt        |«      |z
  z  z   «       t        j                  | j                  |j                   j                  «      j                  «       }t        ||j                   j                  «      }t        |j                   j                  dz   |j                   j                  «      D ]ƒ  }t        j                  | j                  |«      j                  «       }	||	dz   z  }t        |	«      t        |	j                  «       «      z
  }
|j                  d|
z  dt        |	«      |
z
  z  z   «       Œ… ||d| z  }t        |«      t        |j                  «       «      z
  }
|j                  d|
z  d||
z
  z  z   «       d}	 t        |«      }|€!|D �cg c]  }|j!                  dd«      ‘Œ }}�n%|D �cg c]  }t#        |«      ‘Œ }}|j$                  dk(  r|xj&                  |z  c_        |j(                  dk(  r|xj*                  |z  c_        t        t        |«      «      D ]�  }t        t        ||   «      «      D ]t  }||j$                  k  rŒ||j$                  k(  r||j&                  k  rŒ2||j(                  k(  r||j*                  k\  rŒQ||j(                  kD  rŒa||   |   dk(  sŒmd||   |<   Œv Œ’ |D �cg c]  }dj-                  |«      ‘Œ }}d}t        t        |«      «      D ]X  }|t        j                  | j                  |j                   j                  |z   «      j                  «       dz   z  }|||   dz   z  }ŒZ |S # t        $ r Y �ŒÇw xY wc c}w c c}w c c}w )	a¾  
    Python 3.11+ only. Returns lines of source code (from code object `code`)
    corresponding to `inst`'s location data, and underlines relevant code to `inst`.

    Example: CALL on `g`:
    f(g(
      ^^
        h(x)))
        ^^^^^

    We need our own implementation since `format_frame_summary` in
    Python's `traceback` module doesn't handle multi-line expressions
    (and their anchor extraction code is not completely correct).
    Nrj  rr   ú~rK   r3   ú^r   )Ú	positionsrÙ  Ú	linecacheÚgetliner³  Úrstriprì  Ú
col_offsetrí  rÏ  r‘   rÔ   re  Úlstriprû  r  rM  r½   rÒ  rÓ  rÔ  rÕ  rN   )r  ÚinstÚ
first_lineÚstart_offsetÚ
end_offsetrñ  ÚmarkersÚ	last_linerÙ  ÚlineÚ
num_spacesÚanchorsÚmarkerÚmutable_markersrÞ  r`  r  s                    rE   Úget_instruction_source_311r  ž
  s‰  € ð �>‰>Ð%Ð%Ð%Ø‡~�~×ÑÐ$Øô ×"Ñ" 4×#3Ñ#3°T·^±^×5JÑ5JÓK×RÑRÓT€JØ‡~�~× Ñ Ð(ØÐØ‡~�~× Ñ Ð(¨D¯N©N×,IÑ,IÐ,QØÐô ˜z¨4¯>©>×+DÑ+DÓE€Lð €Jà€Gà€Gð ‡~�~× Ñ  D§N¡N×$9Ñ$9Ò9Ü  ¨T¯^©^×-JÑ-JÓKˆ
Ø˜\¨*Ð5ˆØ�‰�s˜\Ñ)¨C°:ÀÑ3LÑ,MÑMÖNà˜\˜]Ð+¨dÑ2ˆØ�‰�s˜\Ñ)¨C´3°z³?À\Ñ3QÑ,RÑRÔSÜ×%Ñ%Ø×Ñ˜dŸn™n×7Ñ7ó
ç
‰&‹(ð 	ô ! ¨D¯N©N×,IÑ,IÓJˆ
Ü˜DŸN™N×1Ñ1°AÑ5°t·~±~×7PÑ7PÓQò 	NˆFÜ×$Ñ$ T×%5Ñ%5°vÓ>×EÑEÓGˆDØ�t˜d‘{Ñ"ˆGä˜T›¤S¨¯©«Ó%7Ñ7ˆJØ�N‰N˜3 Ñ+¨c´S¸³YÀÑ5KÑ.LÑLÕMð	Nð 	�9˜[˜jÐ)Ñ)ˆÜ˜“^¤c¨)×*:Ñ*:Ó*<Ó&=Ñ=ˆ
Ø�‰�s˜ZÑ'¨#°¸jÑ1HÑ*IÑIÔJà"&€GðÜ,¨WÓ5ˆð
 €Ø:AÖB°�6—>‘> # sÕ+ÐBˆÒBð HOÖ+O¸V¬D°­LÐ+OˆÐ+Oð ×"Ñ" aÒ'Ø×#Ò# |Ñ3Õ#Ø×%Ñ%¨Ò*Ø×&Ò&¨,Ñ6Õ&ô œC ›LÓ)ò 	7ˆFÜœS °Ñ!8Ó9Ó:ò 7�Ø˜G×3Ñ3Ò3ØØ˜W×4Ñ4Ò4¸¸w×?VÑ?VÒ9VØà˜g×8Ñ8Ò8Ø˜w×9Ñ9Ò9àØ˜G×6Ñ6Ò6ØØ" 6Ñ*¨3Ñ/°3Ó6Ø36�O FÑ+¨CÒ0ñ7ð	7ð" 2AÖA v�2—7‘7˜6•?ÐAˆÐAà€FÜ”3�w“<Ó ò $ˆØÜ×Ñ˜d×.Ñ.°·±×0EÑ0EÈÑ0IÓJ×QÑQÓSØññ	
ˆð 	�'˜!‘*˜tÑ#Ñ#‰ð$ð €MøôW ò Úðüò
 Cùò ,Pùò4 Bs$   ËR% Ë0R5ÌR:ÐR?Ò%	R2Ò1R2c                óR   — t        | t        j                  «      rt        | dd «      S y )NÚ_dynamo_static_input_type)rN  r�   r�  rœ  r|  s    rE   Úget_static_address_typer  
  s#   € Ü�!”U—\‘\Ô"Ü�qÐ5°tÓ<Ð<àrD   c                ó¬  — t         j                  j                  j                  t         j                  j                  t         j
                  t         j                  j
                  f}t         j                  j                  j                  t         j                  j                  t         j                  t         j                  j                  f}| g |¢|¢­v S r@   )	r�   rp  Ú	GeneratorÚ	get_stateÚdefault_generatorrv  rw  Ú	set_statery  )rx   ÚgettersÚsetterss      rE   Úis_rng_state_getter_or_setterr    sœ   € ô 	�‰×Ñ×$Ñ$Ü×Ñ×)Ñ)Ü×ÑÜ�
‰
× Ñ ð€Gô 	�‰×Ñ×$Ñ$Ü×Ñ×)Ñ)Ü×ÑÜ�
‰
× Ñ ð	€Gð Ð(�gÐ( Ñ(Ð(Ð(rD   c                ó¼   — t        | t        j                  «      xrA | j                  dk(  xr0 | j                  j
                  t        j                  j                  u S )NÚ__get__)	rN  r{  r   rÝ   Ú__self__Ú__objclass__r�   rp  Ú_TensorBaserZ  s    rE   Úis_tensor_base_attr_getterr!  "  sK   € ä�5œ%×1Ñ1Ó2ò 	@Ø�N‰N˜iÑ'ò	@à�N‰N×'Ñ'¬5¯8©8×+?Ñ+?Ð?ðrD   c                ó   — t        | d«      S )NÚ__torch_function__)rë  rZ  s    rE   Úis_torch_function_objectr$  *  s   € Ü�5Ð.Ó/Ð/rD   c                óº   — ddl m}m} ddlm} t        | |«      ryt        | |«      r|j                  | «       t        | |«      xr t        | j                  d«      S )Nr   )ÚLazyVariableTrackerÚUserDefinedObjectVariable)ÚTensorWithTFOverrideVariableTr#  )	Útorch._dynamo.variablesr&  r'  Ú&torch._dynamo.variables.torch_functionr(  rN  Úrealizerë  rx   )r"  r&  r'  r(  s       rE   Úhas_torch_functionr,  .  sU   € ßVÝSä�"Ð2Ô3Øä�"Ð)Ô*Ø×#Ñ# BÔ'ä�bÐ3Ó4ò ¼Ø
�‰Ð&ó:ð rD   c                óÚ   — d }d }t         j                  j                  j                  «       x}r)| |j                  v r|j                  |    }|j
                  }|j                  | d||¬«      S )NF)Ústatic_shapesÚsymbolic_contextrJ  )r�   r•   r&   r–   Útensor_to_contextrQ  Úfrom_tensor)r  r  r/  rJ  Útracing_contexts        rE   Úto_fake_tensorr3  >  sw   € ØÐØ€FÜŸ-™-×6Ñ6×>Ñ>Ó@Ð@€Ð@Ø�×1Ñ1Ñ1Ø.×@Ñ@ÀÑCÐØ%×3Ñ3ˆFà× Ñ Ø	˜Ð1AÈ&ð !ó ð rD   c                ó€   — t        | «       xr1 t        | «       xr# t        | «      xr | j                  j                  S r@   )r6  r5  r   Ú__dataclass_params__ÚfrozenrZ  s    rE   Úis_frozen_dataclassr7  L  sE   € ä# EÓ*Ð*ò 	.Ü& uÓ-Ð-ò	.ä˜Óò	.ð ×&Ñ&×-Ñ-ð	rD   c                ód   — |D ]  }t        | |«      sŒt        | |«      c S  t        | › d|› �«      ‚)zX
    Return the first available attribute or throw an exception if none is present.
    z% does not has any of the attributes: )rë  rœ  r  )rH  ÚattrsÚattrs      rE   Úget_first_attrr;  U  sC   € ð ò &ˆÜ�3˜ÕÜ˜3 Ó%Ò%ð&ô ˜C˜5Ð EÀeÀWÐMÓ
NÐNrD   c              #  ó®   ‡‡K  — | sd –— y ˆˆfd„}t         j                  j                  j                  |«      5 }|–— d d d «       y # 1 sw Y   y xY w­w)Nc                ó<   •— d„ }t        j                  | |‰‰¬«      S )Nc                ó¦   — t         j                  j                  j                  d   dxx   dz  cc<   t         j                  j                  | |«      S )NÚcompiled_autogradÚcompilesr3   )r�   rî  rr  r;   Ú	_inductorÚcompile)Úgm_Úexample_inputs_s     rE   Úinner_compilerzKmaybe_enable_compiled_autograd.<locals>.compiler_fn.<locals>.inner_compilerg  s@   € Ü—‘×#Ñ#×,Ñ,Ð-@ÑAÀ*ÓMÐQRÑRÓMÜ—‘×.Ñ.¨s°OÓDÐDrD   )ÚbackendÚ	fullgraphÚdynamic)r�   rB  )r·  rE  rH  rG  s     €€rE   Úcompiler_fnz3maybe_enable_compiled_autograd.<locals>.compiler_fnf  s%   ø€ òEô —=‘=Ø˜N°iÈôð rD   )r�   rî  r?  Úenable)Úshould_enablerG  rH  rI  rÿ  s    ``  rE   Úmaybe_enable_compiled_autogradrL  `  sG   ùè ø€ áÜõ	ô �]‰]×,Ñ,×3Ñ3°KÓ@ð 	ÀCØŠI÷	÷ 	ñ 	üs   „7A»A	Á 	AÁ	AÁAc                 ó@   —  G d„ dt         «      } t         | «       «      S )Nc                  ó   — e Zd Zy)ú*invalid_removeable_handle.<locals>.InvalidN)rÝ   rÞ   rß   r6   rD   rE   ÚInvalidrO  u  s   „ ØrD   rP  )rc  r/   )rP  s    rE   Úinvalid_removeable_handlerQ  s  s   € ô”$ô ô ™7›9Ó%Ð%rD   c                ó
  — t        | t        j                  j                  «      s| S t        | t        j                  j
                  «      r| S | j                  j                  | j                  «      }| j                  |_        |S r@   )	rN  r�   r�  rû  r   ÚGraphModuler+  Ú__new__r©  )r—  Úproxys     rE   Únn_module_proxyrV    sZ   € Ü�cœ5Ÿ8™8Ÿ?™?Ô+Øˆ
Ü�#”u—x‘x×+Ñ+Ô,àˆ
Ø�M‰M×!Ñ! #§-¡-Ó0€EØ—\‘\€E„NØ€LrD   c                  ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú	GmWrapperc                ó>   •— t         ‰| �  «        || _        || _        y r@   )r)  rË   r·  Úunflatten_fn)rÊ   r·  rZ  r+  s      €rE   rË   zGmWrapper.__init__‹  s   ø€ Ü‰ÑÔØˆŒØ(ˆÕrD   c                óT   — t        |«      } | j                  | j                  |«      Ž S r@   )r½   r·  rZ  r!  s     rE   r†   zGmWrapper.forward�  s'   € Ü˜t›*ˆØˆt�w‰w˜×)Ñ)¨$Ó/Ð0Ð0rD   )rÝ   rÞ   rß   rË   r†   r,  r-  s   @rE   rX  rX  Š  s   ø„ ô)ö
1rD   rX  c                ó„  ‡	‡
‡‡— t        | j                  j                  «      D ��cg c]2  \  }}|j                  dk(  r|j                  j                  dd«      r|‘Œ4 c}}Št        j                  j                  j                  rM‰dgk(  sJ ‚t        |d   t        «      sJ ‚t        |d   «      Š	d„ Šˆ	fd„} |t        | |«       ‰|«      «      Š
n`t        j                  |«      \  }}t!        j"                  t        j$                  |¬«      } |t        | |«      |«      Š
t        j&                  Šˆ
ˆˆfd„}|S c c}}w )	z—
    Mutate inputs so that they are flat and wrap gm such that it
    accepts those inputs.  This is needed for graphs that take
    bumpy inputs.
    r
  Ú	steal_argFr   c                ó*   — | d   t        | dd  «      z   S rŸ  )r½   rš  s    rE   Ú
flatten_fnz(flatten_graph_inputs.<locals>.flatten_fn¨  s   € Ø˜‘7œT $ q r (›^Ñ+Ð+rD   c                ó   •— | d ‰ g| ‰d  ¢­S r@   r6   )Ú	flat_argsÚboxed_inputs_counts    €rE   rZ  z*flatten_graph_inputs.<locals>.unflatten_fn«  s#   ø€ ØÐ1Ð1Ð2ÐT°YÐ?QÐ?RÐ5SÑTÐTrD   )Útreespecc                 óX   •—  ‰| «      }‰D ]  }| |   j                  «        Œ  ‰|«      S r@   )r_   )r-  ra  r  Úcompiled_fnr_  Úinputs_idx_to_clears      €€€rE   Úwrapperz%flatten_graph_inputs.<locals>.wrapper·  s8   ø€ Ù˜tÓ$ˆ	ð %ò 	ˆAØ�‰G�M‰M�Oð	ñ ˜9Ó%Ð%rD   )Ú	enumeraterV  r  r  r  rj   r�   rî  r?  Úin_compiled_autograd_regionrN  r½   rÔ   rX  rø  Útree_flattenro  rú  Útree_unflattenÚarg_tree_leaves)r·  ÚinputsÚ
compile_gmr  r  rZ  Úflat_inputsÚspecrg  rb  re  r_  rf  s            @@@@rE   Úflatten_graph_inputsrq  •  s  û€ ô ! §¡§¡Ó0÷áˆAˆtØ�7‰7�mÒ#¨¯	©	¯©°kÀ5Ô(Iò 	
óÐô ‡}�}×&Ñ&×BÒBð # q cÒ)Ð)Ð)Ü˜& ™)¤TÔ*Ð*Ð*Ü  ¨¡›^Ðò	,ô	Uñ !¤¨2¨|Ó!<¹jÈÓ>PÓQ‰ô #×/Ñ/°Ó7Ñˆ�TÜ ×(Ñ(¬×)>Ñ)>ÈÔNˆÙ ¤¨2¨|Ó!<¸kÓJˆä×+Ñ+ˆ
ö&ð €NùóMs   §7D<c                óž   — t        | t        j                  j                  «      rt	        | d«      sg S | j
                  j                  dg «      S )Nr  Úlocals_to_steal)rN  r�   r   rS  rë  r  rj   )Úmaybe_gms    rE   Úget_locals_to_stealru  Ä  s<   € Ü�h¤§¡× 4Ñ 4Ô5¼WÀXÈvÔ=VØˆ	Ø�=‰=×ÑÐ.°Ó3Ð3rD   c                ó"   — || j                   d<   y )Nrs  )r  )r·  rs  s     rE   Úset_locals_to_stealrw  Ê  s   € Ø!0€B‡G�GÐÒrD   c                  ó   — e Zd Zd„ Zd„ Zy)ÚLitc                ó   — || _         y r@   ©r  )rÊ   r  s     rE   rË   zLit.__init__Ï  s	   € Øˆ�rD   c                ó   — | j                   S r@   r{  rÏ   s    rE   r”  zLit.__repr__Ò  s   € Ø�v‰vˆrD   N)rÝ   rÞ   rß   rË   r”  r6   rD   rE   ry  ry  Î  s   „ òórD   ry  rÅ  Úwarn_once_cachec                ót   — | t         v ry t         j                  | «       t        j                  | |dz   ¬«       y )Nr3   )Ú
stacklevel)r}  r×   ÚwarningsÚwarn)r]  r  s     rE   Ú	warn_oncer‚  Ù  s/   € ð ŒoÑØÜ×Ñ˜ÔÜ‡M�M�# *¨q¡.Ö1rD   c                óP   — t        j                  d«      }|j                  d| «      S )Nz\x1B[@-_][0-?]*[ -/]*[@-~]rj  )rk  rB  rl  )ÚtextÚansi_escapes     rE   Ústrip_color_from_stringr†  å  s"   € ä—*‘*Ð:Ó;€KØ�?‰?˜2˜tÓ$Ð$rD   c               #  ó  K  — 	 t         j                  j                  j                  d«      } d –— t         j                  j                  j                  | «       y # t         j                  j                  j                   «       w xY w­w©NT)r�   rp  Ú	_autogradÚ _saved_tensors_hooks_set_tracing)r¹  s    rE   Ú+_disable_saved_tensors_hooks_during_tracingr‹  ë  sY   è ø€ ðCÜ—‘×"Ñ"×CÑCÀDÓIˆÛä�‰×Ñ×;Ñ;¸EÕBøŒ�‰×Ñ×;Ñ;¸EÕBüs   ‚B	„-A ±*B	Á+BÂB	c                 óx   — t         j                  j                  j                  xr t        j                  «        S r@   )r�   rA  r4   ÚfreezingÚis_grad_enabledr6   rD   rE   Úis_parameter_freezingr�  õ  s)   € Ü�?‰?×!Ñ!×*Ñ*ÒJ´5×3HÑ3HÓ3JÐ/JÐJrD   c                ó¶   — ddl m} t        t        «       «      D �cg c]  }t	        |«      ‘Œ }}| r|D �cg c]  }t        |«      |vsŒ|‘Œ }}|S c c}w c c}w )Nr3   )ÚIGNORED_MODES)Úvariables.torch_functionr‘  re  r!   r   r“   )Úfilter_ignoredr‘  r  ré  Úmodes        rE   Úget_torch_function_mode_stackr•  ù  sV   € Ý7ä05Ô6OÓ6QÓ0RÖS¨1Ô# AÕ&ÐS€EÐSÙØ"'ÖK˜$¬4°«:¸]Ò+J’ÐKˆÐKà€Lùò	 TùâKs   œA¶AÁ	Ac                óh   — | t        «       k  r| dk\  sJ ‚t        j                  j                  | «      S r^   )r!   r�   rp  r   )Úinds    rE   Ú get_torch_function_mode_stack_atr˜    s/   € ØÔ*Ó,Ò,°¸²Ð9Ð9Ü�8‰8×*Ñ*¨3Ó/Ð/rD   c                ól   — t        t        «       «      D ]  }t        «        Œ | D ]  }t        |«       Œ y r@   )re  r!   r"   r#   )ré  r  r”  s      rE   Úset_torch_function_mode_stackrš    s9   € ÜÔ,Ó.Ó/ò $ˆÜ!Õ#ð$ð ò ,ˆÜ% dÕ+ñ,rD   c                óà   — | j                   }t        j                  |«      }t        |j                  «      dk7  rddlm}  |d«      ‚|j                  | j                  k7  rddlm}  |d«      ‚y )NrB  r3   )ÚInternalTorchDynamoErrorz[Tensor subclass method __metadata_guard__ must take exactly two subclass metadata argumentsz?Tensor subclass method __metadata_guard__ must be a classmethod)	Ú__metadata_guard__rr  Ú	signaturerÔ   rµ  r  rœ  r  r+  )rx   r†  Úsigrœ  s       rE   Úverify_guard_fn_signaturer     sk   € Ø	×	!Ñ	!€BÜ
×
Ñ
˜BÓ
€CÜ
ˆ3�>‰>Ó˜aÒÝ1á&Øió
ð 	
ð 
‡{�{�e—o‘oÒ%Ý1á&ØMó
ð 	
ð &rD   c                ó¾  — | j                   t        j                   t        j                  j                   fv xr¦ | j                  t        j                  t        j                  j                  fv xrn | j
                  t        j
                  t        j                  j
                  fv xr6 | j                  t        j                  t        j                  j                  fv S r@   )rk   rc  rA   rÍ   ri   r¾   Ú__iter__)Úuser_clss    rE   Ú#does_not_override_dict_iter_methodsr¤  !  s¡   € à�‰œ4Ÿ:™:¤{×'>Ñ'>×'DÑ'DÐEÐEò 	SØ�O‰O¤§¡¬[×-DÑ-D×-KÑ-KÐLÐLò	Sà�M‰MœdŸi™i¬×)@Ñ)@×)EÑ)EÐFÐFò	Sð ×Ñ¤$§-¡-´×1HÑ1H×1QÑ1QÐ!RÐRð	rD   c                ó–   — ddg}|D �ci c]4  }|| j                   v sŒ|t        j                  | j                   |   «      “Œ6 }}|S c c}w )Nr  Útag)r©  r<  )r  ÚKEYS_TO_COPYrn   Útensor_dicts       rE   Ú_extract_tensor_dictr©  ,  sZ   € à#Øð€Lð 4@öØ,/À3È!Ï*É*ÒCTˆŒT�Y‰Y�q—z‘z #‘Ó'Ñ'ð€Kð ð Ðùò	s
   ‰A�%Az(Dict[int, weakref.ReferenceType[object]]Úuser_obj_id_to_weakrefc                ó2   — t        |    «       }|€J d«       ‚|S )NzUser object is no longer alive)rª  )Úobj_idrH  s     rE   Úget_user_object_from_idr­  ?  s$   € Ü
  Ñ
(Ó
*€CØˆ?Ð<Ð<Ó<ˆ?Ø€JrD   c                óR   — t        | «      }t        j                  | «      t        |<   y r@   )r6  rA  r?  rª  )rH  r¬  s     rE   Ústore_user_object_weakrefr¯  E  s   € Ü�‹W€FÜ%,§[¡[°Ó%5Ô˜6Ò"rD   c                  ó�   — e Zd ZU dZded<   dZded<   dZedd„«       Zedd„«       Z	edd„«       Z
edd	„«       Zeed
„ «       «       Zy)ÚCompileTimeInstructionCounterr   rÙ   Ú_counterrþ  Ú_idc                ó~   — | j                   dz   | _         | j                   dk(  rt        j                  «       | _        y y rZ   )Ú_depthr    r    r³  r:  s    rE   r    z#CompileTimeInstructionCounter.startO  s1   € à—Z‘Z !‘^ˆŒ
Ø�:‰:˜Š?Ü*×0Ñ0Ó2ˆC�Gð rD   c                ó¾   — | j                   dz
  | _         | j                   dk(  r:| xj                  t        j                  | j                  «      z  c_        d| _        y y )Nr3   r   rþ  )rµ  r²  r    Úendr³  r:  s    rE   r·  z!CompileTimeInstructionCounter.endU  sF   € à—Z‘Z !‘^ˆŒ
Ø�:‰:˜Š?Ø�LŠLÔ0×4Ñ4°S·W±WÓ=Ñ=�LØˆC�Gð rD   c                ó   — d| _         y r^   ©r²  r:  s    rE   r_   z#CompileTimeInstructionCounter.clear\  s	   € àˆ�rD   c                ó   — | j                   S r@   r¹  r:  s    rE   rx   z#CompileTimeInstructionCounter.value`  s   € à�|‰|ÐrD   c              #  óä   K  — 	 t         j                  r| j                  «        d –— t         j                  r| j                  «        y y # t         j                  r| j                  «        w w xY w­wr@   )r4   Ú%record_compile_time_instruction_countr    r·  r:  s    rE   Úrecordz$CompileTimeInstructionCounter.recordd  sN   è ø€ ð	Ü×;Ò;Ø—	‘	”Ûä×;Ò;Ø—‘•	ð <øŒv×;Ò;Ø—‘•	ð <üs   ‚A0„$A
 ¨"A0Á
#A-Á-A0Nr  )rÚ   rÙ   )rÝ   rÞ   rß   r²  rÍ  r³  rµ  Úclassmethodr    r·  r_   rx   r   r½  r6   rD   rE   r±  r±  J  s„   … Ø€HˆcÓØ€CˆƒMØ€Fàò3ó ð3ð
 òó ðð òó ðð òó ðð Øñó ó ñrD   r±  )rX   z3Union[List[Tuple[str, object]], List[List[object]]]rJ   z!Union[Tuple[str, ...], List[str]]rÚ   rP   r  )rc   rÙ   rÚ   rÛ   )rÚ   zDict[str, float])rn   rP   r{   rP   r|   rC   rÚ   rÛ   )rÚ   r<   rˆ  )rn   rP   r{   rÂ  rœ   rÜ   )F)r«   zLiteral['str']r¬   rÜ   rÚ   rP   )r«   zLiteral['csv']r¬   rÜ   rÚ   zTuple[List[str], List[object]])rP   F)r¬   rÜ   )rÚ   rP   )r  rP   rÚ   rÛ   )r   zfx.GraphrÚ   rÙ   )rH  ÚobjectrI  zType[T]rÚ   úTypeGuard[T])rH  r¿  rI  z)Tuple[Type[List[T]], Type[Tuple[T, ...]]]rÚ   rÀ  )rH  r¿  rI  zIterable[type]rÚ   rÜ   r@   )rÔ  z0Union[CompilationMetrics, BwdCompilationMetrics])rß  rÙ   rÚ   rÛ   )rÚ   z6List[Union[CompilationMetrics, BwdCompilationMetrics]])rÚ   rç  )rŸ  ztorch.Tensor)r3   )T)rH  r   )r—  ztypes.ModuleType)rx   r   )r�  r“   )rx   r   r=  rÜ   )r\  rA  )r{  zUnion[torch.Tensor, Any]rP  rÜ   rQ  r%   rÚ   z)Tuple[bool, Optional[TensorStaticReason]])FFF)rP   rP   rÍ  rÙ   rÚ   rÙ   )rñ  rP   rÚ   zOptional[_Anchors])r  ztypes.CodeTyper  zdis.InstructionrÚ   rP   )r"  z,torch._dynamo.variables.base.VariableTrackerrÚ   rÜ   )TT)r·  ztorch.fx.GraphModule(�  Ú
__future__r   ÚatexitrA   rç   r<  r×  rÀ  r^  rÖ  ro  r»  r1  rr  rV   r   rû   r¡  rÿ  rä   rk  rT  rï  r‹   r{  rW  rñ  r€  rA  r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Útyping_extensionsr   r   r�   Útorch._functorch.configÚtorch._inductor.configrA  r4   r¥  Ú%torch.fx.experimental.symbolic_shapesÚtorch.utils._pytreerr  Ú_pytreerø  r   Útorch._Cr   r    r!   r"   r#   Útorch._dispatch.pythonr$   Útorch._guardsr%   r&   Útorch._subclasses.meta_utilsr'   Útorch._utils_internalr(   r)   Útorch.fx._utilsr*   r+   Útorch.nn.modules.lazyr,   Útorch.utils._tritonr-   r.   Útorch.utils.hooksr/   rˆ  r^  ÚModuleNotFoundErrorÚtorch._loggingÚtorch._numpyÚ_numpyr‡  r0   r2   rj  ÚfftÚlinalgru  r5   rÍ  ÚNP_TO_TNP_MODULEr   r7   r8   r9   rU   r:   r�  rû  r<  Úunpatched_nn_module_getattrrB   r;   r=   Útroubleshooting_urlÚnnmodule_doc_urlÚnnmodule_doc_url_msgrý   rÝ   rÂ   r>   rG   r   Útimer_counterrT   r[   r\   r`   rb   rd   rp   ry   r}   r„   r¨   r­   ÚregisterrÄ   ÚFloatTensorrj  rC   ÚDoubleTensorrk  ÚdoubleÚ
HalfTensorri  ÚhalfÚBFloat16Tensorr¢  Ú
ByteTensorrc  Ú
CharTensorr_  Ú
LongTensorrb  ÚlongÚ	IntTensorra  rÙ   ÚShortTensorr`  ÚshortÚ
BoolTensorrÜ   Útensortype_to_dtyperÆ   rì   rê   rí   ræ   r  r  r  r#  r%  r*  r/  r1  rJ  rU  ÚParamSpecArgsÚParamSpecKwargsÚ	ParamSpecÚTypeVarTupleÚTypeAliasTyperV  r[  rg  rl  rt  ry  rq  rƒ  r‡  r…  r�  r•  r˜  r›  r   r°  r¨  r²  rš   Ú!DEFAULT_COMPILATION_METRICS_LIMITrÞ  rÒ  r›   rá  rã  rå  rç  r  rŠ   r  r  r'  r5  r;  rd  rn  r~  rˆ  rŽ  r�  r•  r”  r¬  r¸  rÁ  rÇ  rÑ  ÚcomplexrP   Úbytesr“   ÚEllipsisr+  ÚCodeTyperF  r7  Úmemory_formatr@  rÒ  Útritonr×   ÚlanguagerÕ  rÞ  râ  ræ  rí  rï  rô  r¾   rõ  ri   rö  rÍ   r÷  r  rø  Ú__length_hint__Útuple_iterator_lenr¿  rT  rú  rü  r  r  r  Ú	iter_nextr	  r  r  r   r$  r4  r6  r8  r?  rS  ÚGLOBAL_KEY_PREFIXÚtorch._subclassesrU  rZ  r^  rc  rh  rŒ  rn  rµ  r»  Úorig_code_mapr½   r¼  r½  Úseen_code_maprÆ  rù   rÍ  rÏ  rÖ  rÒ  rð  r  r  r  rá  r  r$  r&  r+  r3  r6  r5  r?  r×  rA  rG  rR  r\  rb  rr  rs  rt  Úall_hook_namesro  r~  r€  r„  r‹  r�  r˜  rš  r£  r¯  r³  rÂ  rÈ  rÏ  rÑ  rû  r  r  r  r!  r$  r,  r3  r7  r;  rL  rQ  rV  rX  rq  ru  rw  ry  rÎ   r}  r‚  r†  r‹  r�  r•  r˜  rš  r   r¤  r©  rª  r­  r¯  r±  r6   rD   rE   ú<module>r     sŸ  ðæ "ã Û Û Û Û Û Û 
Û Û Û 	Û Û Û Û Û Û Û Û 	Û 	Û 
Û Û Û Û Û Û Û Ý %Ý $Ý Ý #÷÷ ÷ ÷ ÷ ó ÷, 1ã Û ß 0Ð 0Û ,ß $Ð $Ý ÷õ õ <ß 0Ý =ß Tß FÝ 1ß >Ý -ðÛð	ÛÝÝ.Ý)åñ 
àØ�F‰FØ�I‰IØ�I‰Ið	>
ÐÐ:ó 	
ð �Ø�F‰F�C—G‘GØ�I‰I�s—z‘zØ�I‰I�s—z‘zð	
Ñð  "ÐàÐßVÑVñ
 ˆCƒL€à#Ÿh™hŸo™o×9Ñ9Ð à+B¨;×+BÑ+BÀ;×CVÑCVÓ+W€Ð
(Ó WØ$&Ð �>Ó &àGð ð QÐ ØÐ.Ð/Ð/UÐVÐ Ø€g×Ñ˜Ó!€ð 46Ð Ð0Ó 5ð 3J°+×2IÑ2IÙ*ó3Ð Ð/ó ð  �	—’Ó!€ð
Ø
=ð
à.ð
ð 	ô
ð €
ô ôð €ôôô2ô6ôðJ ð !%ØñT@Ø	ðT@àðT@ð óT@ó ðT@ðn 
õó 
ðð 
à,1ñØ
ðØ%)ðà#óó 
ðö"ðJ ‡‚ó8ó ð8ð
 
×Ò˜Ÿš u§{¢{Ð3Ø	×Ò˜Ÿš¨¯ªÐ5Ø	×Ò�u—}’} e§j¢jÐ1Ø	×Ò˜5Ÿ>š>Ð+Ø	×Ò�u—{’{�nØ	×Ò�u—z’z�mØ	×Ò�u—{’{ E§J¢JÐ/Ø	‡O‚O�e—k’k 5§9¢9Ð-Ø	×Ò˜Ÿš U§[¢[Ð1Ø	×Ò�u—z’z�mðÐ ÷ñ ñ( #:Ó";Ð ò"ô,ò
ò	ô?ô
Gôòòò	÷ñ ðB 
óó 
ðð 
ðØ	ðØ Iðàóó 
ðð 
óó 
ðò&ð ×Ò�wÒð 	×ÒØ×ÒØ×ÒØ�‰Ø×ÒØ×Òð%Ð!òGòò&òòò	òò$3òò%ò$ò,ð €×Ñ�TÓñó ðôò
ð ×Ò÷=ð =ó ð=ðB ×Ò÷ð ó ðð %'Ð !ð
 €K×ÒÐ>Ô?ð ð ó @ð
3ØIô3ô(%ô!ô
&÷ZGñ ZGðz 59Ð Ð1Ó 8ôð ×Ò÷(ð (ó ð(ô( Ð+ô  ñ )Ó*€Ô òð !ô GòTô&
ð ñ9ó ð9ò"	ôò$ò(ò
ð €×Ñ�QÓñó ðò0ô*ò"Xñ ˆ2ƒñó ðð Ø	ØØØØ	ÙˆƒJØ×ÒØ	‡N‚NØ	‡L‚LØ	‡K‚KØ	×ÒØ	‡L‚Lð$Ð �yó ñ  ÔÛà×Ò˜fŸošo×3Ò3Ô4ðóóóóWó
óóñ "& b§g¢g£i£�	ÐÓ 0Ù%)¨"¯)ª)«+Ó%6�Ð"Ó 6Ù&*Ð+B¨;×+BÒ+BÓ+D×+KÒ+KÓ+MÓ&N�Ð#Ó NÙ&*ª4°«8£n�Ð#Ó 4Ù#×3Ò3Ñ Ù�^Š^�
óó1óñ
 �	óó5óó8óõ&óRMó
@õõB ð
 !Ñ ÷ =Ð <ó7ó'ó?ó
;ð ØØØØØØØ�iŠiØ-2ô`FóF	Hð
 ×Ññ
>ó ñ
>ñ 'Ó(�ð /F¨k×.EÑ.EÁdÓ.K�Ð+Ó Kð LNÑ ÐHÓ Mñ 'Ó(�ð €×Ñ�TÓñ,ó ñ,ó&õ
óó
/õxðv  �	—’Ó!�ó1ð ñ"ó ñ"ó.ób$óNBõ*2óõGõ/õ	÷ô˜Ÿšõ õ5ðØ$ðàðð ðð /õ	óDó*Wð +Ð,<Ð=Ñ Ø,Ð.?Ð@Ñ òÑ ñ $Ñ&9Ñ9Ñ<QÑQ�óð ØØ õ	ðF ØØ õ	ó$ó
÷
$ò 
$ó$÷$ò $÷&$ò $ó(ó@4óó&
õ"	Cð ×Ò÷ð ó ñõvõrióXó)ó"ó0õó 
óóOð ×Ñóó ñó$&óô1�—‘—‘õ 1õ,ó^4ó1÷ò ò  ›E��Ó !õ	2ó%ð ×ÑñCó ñCóKõó0ó
,ó
ó"ó
ð  DFÑ Ð@Ó Eóó6÷
#ô #øðm_ ò Ø	ƒBðûð> ò 	Úð	ús%   Ä+i& Ä0Bi4 é&i1é0i1é4i=é<i=