Ë
    g^(hä¬  ã                   ó€  — 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
mZmZ d dlZddlmZmZmZ ddlmZmZmZmZ ddlmZ dd	lmZmZ dd
lmZmZm Z m!Z! ddlm"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z. erd dl/m0Z0 d„ Z1d„ Z2 G d„ d«      Z3ejh                  dd„«       Z5ejh                  dd„«       Z6y)é    N)ÚMutableMapping)ÚCellType)ÚAnyÚOptionalÚTYPE_CHECKINGé   )Úgraph_break_hintsÚutilsÚ	variables)Úbytecode_from_templateÚcreate_call_functionÚcreate_call_methodÚcreate_instruction)Ú	PyCodegen)ÚSideEffectsErrorÚunimplemented_v2)ÚGlobalSourceÚLocalCellSourceÚLocalSourceÚSource)Úis_frozen_dataclassÚnn_module_newÚ
object_new)ÚAttributeMutationÚAttributeMutationExistingÚAttributeMutationNewÚis_side_effect_safeÚValueMutationExistingÚValueMutationNewÚVariableTracker)ÚFrozenDataClassVariable)ÚInstructionTranslatorc                 ó¬   — t        |«      j                  |   }|j                  |«       | j                  «       D ]  \  }}|j	                  |||«       Œ y ©N)ÚtypeÚ__mro__ÚclearÚitemsÚ__setitem__)Ú	dict_fromÚdict_toÚ	mro_indexÚ
dict_classÚkÚvs         úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/side_effects.pyÚ_manual_dict_setitemr1   )   sR   € ô
 �g“×&Ñ& yÑ1€JØ×Ñ�WÔØ—‘Ó!ò .‰ˆˆ1Ø×Ñ˜w¨¨1Õ-ñ.ó    c                 óZ   — t         j                  |«       t         j                  || «       y r$   )Úlistr'   Úextend)Ú	list_fromÚlist_tos     r0   Ú_manual_list_updater8   4   s   € Ü‡J�JˆwÔÜ‡K�K�˜Õ#r2   c                   ó  ‡ — e Zd ZU dZeeef   ed<   eeeeef   f   ed<   e	e
   ed<   	 	 	 	 	 d>ˆ fd„	Zdedefd„Zdd dee   fd	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdededefd„Zd?d„Zd„ Zd„ Zdedefd„Zdededefd„Zed„ «       Zd„ Zd„ Z d„ Z!d„ Z"e#fde
defd „Z$e$Z%de
defd!„Z&d"e'd#e
d$e
fd%„Z(d&„ Z)d'„ Z*d(„ Z+d)„ Z,d*ee'   d+e-d,efd-„Z.d*e'de
fd.„Z/d/„ Z0d0„ Z1d1„ Z2d2„ Z3d3„ Z4d4„ Z5d5e6fd6„Z7d7„ Z8d8„ Z9d9„ Z:d:„ Z;d5e6fd;„Z<d<„ Z=d=„ Z>ˆ xZ?S )@ÚSideEffectsah  
    Maintain records of mutations and provide methods to apply them during code generation.

    Handles tracking and applying side effects during PyTorch Dynamo compilation,
    maintaining Python semantics by managing mutations, attribute modifications,
    and other side effects that occur during program execution.

    Key responsibilities:
    - Tracks mutations to Python objects, lists, and dictionaries that need to be
    applied after an FX graph is run.
    - Manages attribute modifications and deletions
    - Handles tensor hooks and backward pass state
    - Tracks cell variable mutations and global variable changes
    - Ensures correct ordering and application of side effects after graph execution

    This ensures that optimized code behaves identically to the original Python code with
    respect to object mutations and other side effects.
    Úid_to_variableÚstore_attr_mutationsÚ	keepalivec                 óà   •— t         ‰| �  «        t        j                  |«      | _        |xs i | _        |xs i | _        |xs g | _        |xs g | _        |xs i | _	        d| _
        d | _        y )NF)ÚsuperÚ__init__ÚweakrefÚrefÚoutput_graph_weakrefr;   r<   r=   Úsave_for_backwardÚtensor_hooksÚ_has_existing_dict_mutationÚca_final_callbacks_var)ÚselfÚoutput_graphr;   r<   r=   rD   rE   Ú	__class__s          €r0   r@   zSideEffects.__init__Q   st   ø€ ô 	‰ÑÔÜ$+§K¡K°Ó$=ˆÔ!Ø,Ò2°ˆÔØ$8Ò$>¸BˆÔ!Ø"š bˆŒØ!2Ò!8°bˆÔØ(Ò.¨BˆÔð ,1ˆÔ(ð '+ˆÕ#r2   ÚotherÚreturnc                 óú   — t        |t        «      sJ ‚| j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r$   )Ú
isinstancer:   r;   r<   rD   rE   )rH   rK   s     r0   Ú__eq__zSideEffects.__eq__h   sz   € Ü˜%¤Ô-Ð-Ð-ð ×Ñ 5×#7Ñ#7Ñ7ò 8Ø×)Ñ)¨U×-GÑ-GÑGò8à×&Ñ&¨%×*AÑ*AÑAò8ð ×!Ñ! U×%7Ñ%7Ñ7ð		
r2   c                 óØ  — | j                   |j                   k7  rB| j                   j                  «       }|j                   j                  «       }||k7  rd|› d|› �S y| j                  |j                  k7  rB| j                  j                  «       }|j                  j                  «       }||k7  rd|› d|› �S y| j                  |j                  k7  ry| j                  |j                  k7  ryy )Nzid_to_variable keys: z != zid_to_variable: unknown diffzstore_attr_mutations keys: z"store_attr_mutations: unknown diffrD   rE   )r;   Úkeysr<   rD   rE   )rH   rK   Úsk_itvÚok_itvÚsk_samÚok_sams         r0   ÚdiffzSideEffects.diffr   sé   € Ø×Ñ %×"6Ñ"6Ò6Ø×(Ñ(×-Ñ-Ó/ˆFØ×)Ñ)×.Ñ.Ó0ˆFØ˜ÒØ.¨v¨h°d¸6¸(ÐCÐCð 2Ø×&Ñ&¨%×*DÑ*DÒDØ×.Ñ.×3Ñ3Ó5ˆFØ×/Ñ/×4Ñ4Ó6ˆFØ˜ÒØ4°V°H¸DÀÀÐIÐIØ7Ø×#Ñ# u×'>Ñ'>Ò>Ø&Ø×Ñ %×"4Ñ"4Ò4Ø!àr2   c                 ó6  — | j                  | j                  «       t        | j                  «      | j                  j                  «       D ��ci c]  \  }}|t        |«      “Œ c}}t        | j                  «      | j                  | j                  ¬«      S c c}}w )zCreate a shallow copy)rI   r;   r<   r=   rD   rE   )
rJ   rC   Údictr;   r<   r(   r4   r=   rD   rE   )rH   r.   r/   s      r0   ÚclonezSideEffects.cloneˆ   s…   € à�~‰~Ø×2Ñ2Ó4Ü × 3Ñ 3Ó4à'+×'@Ñ'@×'FÑ'FÓ'H÷"Ù#˜q !�”4˜“7‘
ó"ô ˜4Ÿ>™>Ó*Ø"×4Ñ4Ø×*Ñ*ð ó 	
ð 		
ùó"s   ÁBc                 ó0   — t        |«      | j                  v S r$   )Úidr;   ©rH   Úitems     r0   Ú__contains__zSideEffects.__contains__•   s   € Ü�$‹x˜4×.Ñ.Ð.Ð.r2   c                 ó2   — | j                   t        |«         S r$   )r;   r[   r\   s     r0   Ú__getitem__zSideEffects.__getitem__˜   s   € Ø×"Ñ"¤2 d£8Ñ,Ð,r2   c                 óÖ   — | j                  «       }|xrV |j                  j                  j                  j                  xr* |j                  j                  j                  j
                  S r$   )rC   Ú
current_txÚoutputÚcurrent_tracerÚunder_activation_checkpointÚ#allow_side_effects_under_checkpoint©rH   rI   s     r0   Ú*should_allow_side_effects_under_checkpointz6SideEffects.should_allow_side_effects_under_checkpoint›   sZ   € Ø×0Ñ0Ó2ˆàò bØ×'Ñ'×.Ñ.×=Ñ=×YÑYòbà×'Ñ'×.Ñ.×=Ñ=×aÑað	
r2   c                 ó~   — | j                  «       }|xr* |j                  j                  j                  j                  S r$   )rC   rb   rc   rd   Úis_reconstructing_generatorrg   s     r0   rj   z'SideEffects.is_reconstructing_generator£   s;   € Ø×0Ñ0Ó2ˆð ò ZØ×'Ñ'×.Ñ.×=Ñ=×YÑYð	
r2   c                 óÌ   — ddl m} t        ||«      ry| j                  «       ry| j	                  «       rt        d«      ‚t        |j                  «      st        dddg ¬«       y y )	Nr   )ÚAutogradFunctionContextVariableTz—Cannot reconstruct a generator with variable mutations. Dynamo needs to fully exhaust the generator, which may cause unintended variable modifications.zOHigherOrderOperator: Mutating a variable not in the current scope (SideEffects)Ú úThis is not supported.©Úgb_typeÚcontextÚexplanationÚhints)	Útorch._dynamo.variables.miscrl   rN   rh   rj   r   r   Úmutation_typer   )rH   r]   rl   s      r0   Úcheck_allowed_side_effectz%SideEffects.check_allowed_side_effect«   sm   € ÝPô �dÐ;Ô<ØØ×:Ñ:Ô<ØØ×+Ñ+Ô-ô #ð5óð ô
 # 4×#5Ñ#5Ô6äØiØØ4Øö	ð 7r2   r]   ÚnameÚvaluec                 óª   — | j                  |«      sJ ‚| j                  |«       || j                  vri | j                  |<   || j                  |   |<   y r$   )Úis_attribute_mutationrv   r<   )rH   r]   rw   rx   s       r0   Ú
store_attrzSideEffects.store_attrÅ   sW   € Ø×)Ñ)¨$Ô/Ð/Ð/Ø×&Ñ& tÔ,Ø�t×0Ñ0Ñ0Ø.0ˆD×%Ñ% dÑ+Ø05ˆ×!Ñ! $Ñ'¨Ò-r2   c                 óÖ   — |r| j                  |«      sJ ‚| j                  |   |   }|s?t        |t        j                  «      r%t        dd|› d|› �dg t        j                  ¢¬«       |S )Nz$Attempted to read a deleted variablezitem: z, name: rm   ro   )rz   r<   rN   r   ÚDeletedVariabler   r	   Ú
USER_ERROR)rH   r]   rw   Ú
deleted_okÚcheckÚresults         r0   Ú	load_attrzSideEffects.load_attrÌ   st   € ÙØ×-Ñ-¨dÔ3Ð3Ð3Ø×*Ñ*¨4Ñ0°Ñ6ˆÙœj¨´×1JÑ1JÔKÜØ>Ø    h¨t¨fÐ5ØØ5Ô)×4Ñ4Ð5õ	ð ˆr2   c                 ó  — |j                  «       r%t        dd|› d|› �dg t        j                  ¢¬«       t	        |t
        j                  «      sJ ‚t	        |t
        j                  «      sJ ‚| j                  |d|«       y )NzWrite to immutable cellz	cellvar: z	, value: zFDynamo doesn't support writing to immutable/sourceless cell variables.ro   Úcell_contents)	Úis_immutabler   r	   Ú	DIFFICULTrN   r   ÚCellVariabler    r{   )rH   Úcellvarrx   s      r0   Ú
store_cellzSideEffects.store_cellÙ   sy   € Ø×ÑÔ!ÜØ1Ø# G 9¨I°e°WÐ=ØdØ4Ô)×3Ñ3Ð4õ	ô ˜'¤9×#9Ñ#9Ô:Ð:Ð:Ü˜%¤×!:Ñ!:Ô;Ð;Ð;Ø�‰˜ °%Õ8r2   c                 ó  — t        |t        j                  «      sJ ‚| j                  |d«      r| j	                  |dd¬«      S |j
                  r|j
                  S t        dt        |«      dg t        j                  ¢¬«       y )Nr„   F)r€   zRead uninitialized cellzBAttempted to read a cell variable that has not been populated yet.ro   )
rN   r   r‡   Úhas_pending_mutation_of_attrr‚   Úpre_existing_contentsr   Ústrr	   r~   )rH   rˆ   s     r0   Ú	load_cellzSideEffects.load_cellå   sv   € Ü˜'¤9×#9Ñ#9Ô:Ð:Ð:Ø×,Ñ,¨W°oÔFØ—>‘> '¨?À%�>ÓHÐHØ×(Ò(Ø×0Ñ0Ð0ÜØ-Ü˜“LØ\Ø1Ô%×0Ñ0Ð1ö		
r2   Úgvarc                 ó^   — t        |t        j                  «      sJ ‚| j                  ||«      S r$   )rN   r   r    r‚   )rH   r�   rw   s      r0   Úload_globalzSideEffects.load_globalò   s)   € Ü˜$¤	× 9Ñ 9Ô:Ð:Ð:Ø�~‰~˜d DÓ)Ð)r2   c                 óš   — t        |t        j                  «      sJ ‚t        |t        j                  «      sJ ‚| j                  |||«       y r$   )rN   r   r    r{   )rH   r�   rw   rx   s       r0   Ústore_globalzSideEffects.store_globalö   s>   € Ü˜$¤	× 9Ñ 9Ô:Ð:Ð:Ü˜%¤×!:Ñ!:Ô;Ð;Ð;Ø�‰˜˜d EÕ*r2   c                 óè   — t        j                  | dd «      t        j                  t        j                  t
        j                  t        j                  t        j                  t        j                  fv S )NÚ__getattribute__)	ÚinspectÚgetattr_staticÚobjectr•   rX   Úintr�   r4   ÚBaseException)Úclss    r0   Ú"cls_supports_mutation_side_effectsz.SideEffects.cls_supports_mutation_side_effectsû   s[   € ä×%Ñ% cÐ+=¸tÓDÜ×#Ñ#Ü×!Ñ!Ü× Ñ Ü× Ñ Ü×!Ñ!Ü×*Ñ*ðI
ð 
ð 	
r2   c                 ó6   — t        |j                  t        «      S r$   )rN   ru   r   r\   s     r0   rz   z!SideEffects.is_attribute_mutation  s   € Ü˜$×,Ñ,Ô.?Ó@Ð@r2   c                 óp   — | j                  |«      xr$ t        | j                  j                  |«      «      S r$   )rz   Úboolr<   Úgetr\   s     r0   Úhas_pending_mutationz SideEffects.has_pending_mutation	  s5   € Ø×)Ñ)¨$Ó/ò 
´DØ×%Ñ%×)Ñ)¨$Ó/ó5
ð 	
r2   c                 ód   — | j                  |«      xr || j                  j                  |d«      v S )N© )rz   r<   r    )rH   r]   rw   s      r0   r‹   z(SideEffects.has_pending_mutation_of_attr  s8   € Ø×)Ñ)Øó
ò >à�d×/Ñ/×3Ñ3°D¸"Ó=Ð=ð	>r2   c                 óF  — |j                  «       ryt        |j                  t        t        f«      ryt        |t
        j                  «      r!|| j                  v xs |j                  | «      S | j                  |«      r|| j                  v S |j                  j                  S )NFT)r…   rN   ru   r   r   r   ÚUserDefinedObjectVariabler<   Úis_underlying_vt_modifiedrz   Úis_modifiedr\   s     r0   r§   zSideEffects.is_modified  s–   € Ø×ÑÔØÜ�d×(Ñ(Ô+?ÔAQÐ*RÔSØä�dœI×?Ñ?Ô@à˜4×4Ñ4Ð4ò ¸×8VÑ8VØó9ð ð ×%Ñ% dÔ+Ø˜4×4Ñ4Ð4Ð4à×!Ñ!×-Ñ-Ð-r2   Úvariablec           
      óJ  — |j                   €J ‚t        |«      | j                  v r>t        |› d|j                   › d| j                  t        |«         j                   › d�«      ‚ |«       |_        || j                  t        |«      <   | j
                  j                  |«       |S )z*Start tracking a new variable for mutationz“ is already tracked for mutation. This could be because you are not using VariableBuilder to construct the variable tracker. Source of new object: z'. Source of previously tracked object: ú.)Úsourcer[   r;   ÚAssertionErrorru   r=   Úappend)rH   r]   r¨   Úmutation_type_clss       r0   Ú
_track_objzSideEffects._track_obj$  sª   € ð �‰Ð*Ð*Ð*äˆd‹8�t×*Ñ*Ñ*Ü Ø�*ð )ð *2¯©Ð(9ð :8Ø8<×8KÑ8KÌBÈtËHÑ8U×8\Ñ8\Ð7]Ð]^ð	`óð ñ "3Ó!4ˆÔØ(0ˆ×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#Øˆr2   c                 ó2   — | j                  ||t        ¬«      S )N)r®   )r¯   r   )rH   r]   r¨   s      r0   Útrack_object_existingz!SideEffects.track_object_existing=  s#   € ð
 �‰ØØÜ7ð ó 
ð 	
r2   Ú
cls_sourceÚuser_clsÚvariable_clsc                 óŠ  — |t         j                  j                  j                  u r>t	        j
                  d¬«      5  t         j                  j                  «       }d d d «       nt        |«      } |fdt        |«      i|¤Ž}|| j                  t        |«      <   | j                  j                  |«       |S # 1 sw Y   ŒRxY w)NT)Úrecordru   )ÚtorchÚautogradÚfunctionÚFunctionCtxÚwarningsÚcatch_warningsÚFunctionr   r   r;   r[   r=   r­   )rH   r²   r³   r´   ÚoptionsÚobjr¨   s          r0   Útrack_object_newzSideEffects.track_object_newH  s³   € ð ”u—~‘~×.Ñ.×:Ñ:Ñ:Ü×(Ñ(°Ô5ñ 0Ü—n‘n×-Ñ-Ó/�÷0ð 0ô ˜XÓ&ˆCÙØñ
ä.¨zÓ:ð
ð ñ
ˆð
 (0ˆ×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"Øˆ÷0ð 0ús   ½B9Â9Cc                 ó  — ddl m} ddlm} ddlm} ddlm} t        j                  }t        ||«      r|j                  |«      r|}�nt        |d«      rt        |d«      r ||«      s|}nût        |t        j                  j                  «      rt        j                   }nÆt        |t"        t$        j&                  f«      rt        j(                  }n•t        |t*        «      rt        j,                  }ntt        |t.        «      rt        j0                  }nSt        |t2        «      rt        j4                  }n2t7        |«      rt8        }n t        |t:        «      rt        j<                  }t        |t        j                  «      sJ ‚|S )	Nr   )ÚTorchFunctionModer   )ÚGenericContextWrappingVariable)ÚTorchFunctionModeVariable)Úis_forbidden_context_managerÚ	__enter__Ú__exit__)Útorch.overridesrÂ   Úvariables.ctx_managerrÃ   Úvariables.torch_functionrÄ   Úvariables.user_definedrÅ   r   r¥   Ú
issubclassÚ is_supported_torch_function_modeÚhasattrr·   ÚnnÚModuleÚUnspecializedNNModuleVariablerX   ÚcollectionsÚOrderedDictÚUserDefinedDictVariableÚtupleÚUserDefinedTupleVariabler4   ÚUserDefinedListVariabler   ÚMutableMappingVariabler   r!   rš   Ú"UserDefinedExceptionObjectVariable)rH   r³   rÂ   rÃ   rÄ   rÅ   r´   s          r0   Úget_variable_clszSideEffects.get_variable_cls]  s  € Ý5åIÝGÝHô ×/Ñ/ð 	ô ØÐ'ô
à'×HÑHÈÔRØ4ŠLä�H˜kÔ*Ü˜ *Ô-Ù0°Ô:à9‰LÜ˜¤%§(¡(§/¡/Ô2Ü$×BÑB‰LÜ˜¤4¬×)@Ñ)@Ð"AÔBÜ$×<Ñ<‰LÜ˜¤%Ô(Ü$×=Ñ=‰LÜ˜¤$Ô'Ü$×<Ñ<‰LÜ˜¤.Ô1Ü$×;Ñ;‰LÜ  Ô*Ü2‰LÜ˜¤-Ô0Ü$×GÑGˆLÜ˜,¬	×(KÑ(KÔLÐLÐLØÐr2   c                 ó°  — |j                   }t        |t        j                  j                  «      rt        |«      }|S t        |t        j                  «      r|j                  }n5t        |t        j                  «      r|j                   }nt        d|› �«      ‚t        j                  j                  |j                  «      sJ ‚|j                  |«      }|S )NzUnexpected base_cls_vt )rx   rÌ   r·   rÏ   rÐ   r   rN   r   ÚBuiltinVariableÚfnÚUserDefinedClassVariableÚRuntimeErrorÚis_supported_new_methodÚ__new__)rH   Úbase_cls_vtÚcls_vtÚ	init_argsr³   r¿   Úbase_clss          r0   Úget_example_valuezSideEffects.get_example_value‚  s·   € ð —<‘<ˆÜ�h¤§¡§¡Ô0ä Ó)ˆCð( ˆ
ô% ˜+¤y×'@Ñ'@ÔAØ&Ÿ>™>‘Ü˜K¬×)KÑ)KÔLØ&×,Ñ,‘ä"Ð%<¸[¸MÐ#JÓKÐKä×5Ñ5×MÑMØ× Ñ ôð ð ð ×"Ñ" 8Ó,ˆCØˆ
r2   c           	      ó$  — |j                   }|j                  }| j                  |«      }| j                  |||«      } |||j                   ||t	        |«      ¬«      }|| j
                  t        |«      <   | j                  j                  |«       |S )aM  
        Creates a UserDefinedObjectVariable (or its subclass) variable tracker
        and mark it for attribute mutation tracking.

        Also records the variable trackers to call __new__ method on
        reconstruction. Roughly, the reconstruction looks like this
            base_cls_vt.__new__(user_cls, *init_args)
        )r²   râ   rä   ru   )	r«   rx   rÚ   ræ   r   r;   r[   r=   r­   )	rH   râ   rã   rä   r²   r³   r´   r¿   r¨   s	            r0   Útrack_new_user_defined_objectz)SideEffects.track_new_user_defined_object¡  s‰   € ð —]‘]ˆ
Ø—<‘<ˆØ×,Ñ,¨XÓ6ˆØ×$Ñ$ [°&¸)ÓDˆáØØ—}‘}Ø#ØÜ.¨zÓ:ô
ˆð (0ˆ×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"Øˆr2   c                 ó¼   — t        «       }t        j                  t        «       ¬«      }|| j                  t        |«      <   | j                  j                  |«       |S )N©ru   )r˜   r   r‡   r   r;   r[   r=   r­   )rH   r¿   r¨   s      r0   Útrack_cell_newzSideEffects.track_cell_new¿  sN   € ô ‹hˆÜ×)Ñ)Ü.Ó0ô
ˆð (0ˆ×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"Øˆr2   r«   ÚcellÚcontentsc                 ó´   — t        j                  |€d n	t        «       ||¬«      }|| j                  t	        |«      <   | j
                  j                  |«       |S )N)ru   rŒ   r«   )r   r‡   r   r;   r[   r=   r­   )rH   r«   rì   rí   r¨   s        r0   Útrack_cell_existingzSideEffects.track_cell_existingÊ  sV   € ô ×)Ñ)ð #) .™$Ô6OÓ6QØ"*Øô
ˆð )1ˆ×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#Øˆr2   c                 óª   — t        j                  t        «       |¬«      }|| j                  t	        |«      <   | j
                  j                  |«       |S )N)ru   r«   )r   ÚNewGlobalVariabler   r;   r[   r=   r­   )rH   r«   r]   r¨   s       r0   Útrack_global_existingz!SideEffects.track_global_existingØ  sH   € Ü×.Ñ.Ü3Ó5Øô
ˆð )1ˆ×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#Øˆr2   c                 óv   — t        |t        j                  «      sJ ‚| j                  j	                  ||f«       y r$   )rN   r   rl   rD   r­   )rH   ÚctxÚargss      r0   Útrack_save_for_backwardz#SideEffects.track_save_for_backwardá  s0   € Ü˜#œy×HÑHÔIÐIÐIØ×Ñ×%Ñ% s¨D kÕ2r2   c                 óÒ   — |j                   D ]X  }t        |«      }|j                  |   }|| j                  vsŒ,t        |t        j
                  «      sŒG| j                  ||«       ŒZ y r$   )r=   r[   r;   rN   r   ÚTensorVariabler±   )rH   rK   Ú
other_itemÚother_idÚother_variables        r0   Ú1track_tensor_variables_from_runahead_side_effectsz=SideEffects.track_tensor_variables_from_runahead_side_effectså  sd   € ð  Ÿ/™/ò 	GˆJÜ˜*“~ˆHØ"×1Ñ1°(Ñ;ˆNØ˜t×2Ñ2Ò2´zØ¤	× 8Ñ 8õ8ð ×*Ñ*¨:°~ÕFñ	Gr2   c                 óš  ‡ ‡‡‡	— t        «       Š	t        «       Šdt        fˆˆ ˆˆ	fd„Šdt        fˆfd„}‰ j                  j                  «       D �cg c]  }t	        |j
                  t        «      s|‘Œ  }}t        j                  ‰|j                  |j                  ||j                  j                  ‰ j                  f«       ‹‰ j                  j                  «       D ��ci c]  \  }} ||«      sŒ||“Œ c}}‰ _        ‰ j                  j                  «       D ��ci c]  \  }} ||«      sŒ||“Œ c}}‰ _        y c c}w c c}}w c c}}w )NÚvarc                 óì   •— | ‰v ry ‰j                  | «       t        | j                  t        «      r‰j                  | «       | ‰j                  v r$t        j                  ‰‰j                  |    «       y y r$   )ÚaddrN   ru   r   r<   r    Úvisit)rþ   Úlive_new_objectsrH   r  Úvisiteds    €€€€r0   r  z0SideEffects.prune_dead_object_new.<locals>.visitö  sl   ø€ Ø�g‰~ØØ�K‰K˜Ôä˜#×+Ñ+Ô-AÔBØ ×$Ñ$ SÔ)ð �d×/Ñ/Ñ/Ü×%Ñ%ØØ×-Ñ-¨cÑ2õð 0r2   c                 óB   •— t        | j                  t        «      r| ‰v S y©NT)rN   ru   r   )rþ   r  s    €r0   Úis_livez2SideEffects.prune_dead_object_new.<locals>.is_live  s#   ø€ Ü˜#×+Ñ+Ô-AÔBØÐ.Ð.Ð.Ør2   )Úsetr    r;   ÚvaluesrN   ru   r   r  ÚstackÚsymbolic_localsrc   Úbackward_staterE   r(   r<   )
rH   Útxr  rþ   Úpre_existing_varsr.   r/   r  r  r  s
   `      @@@r0   Úprune_dead_object_newz!SideEffects.prune_dead_object_newñ  s5  û€ ä(+«ˆÜ14³Ðð	”÷ 	ð 	ð 	œõ 	ð ×*Ñ*×1Ñ1Ó3ö
àÜ˜c×/Ñ/Ô1EÔFò ð
Ðð 
ô 	×ÑØð —‘Ø×"Ñ"Ø!Ø—	‘	×(Ñ(Ø×!Ñ!ðô
	
ð ð "×0Ñ0×6Ñ6Ó8÷
Ù�Q˜¹GÀA½JˆAˆq‰Dó
ˆÔð "×6Ñ6×<Ñ<Ó>÷%
Ù�Q˜Á'È!Å*ˆAˆq‰Dó%
ˆÕ!ùòE
ùó>
ùó%
s   Á#D<Ã EÃ1EÄEÄ-Ec                 ó  — | j                  |«       t        |j                  t        «      rd|j                  _        |j
                  r>t        |t        j                  «      r#t        |t        j                  «      sd| _	        y y y y r  )
rv   rN   ru   r   r§   r«   r   ÚConstDictVariableÚSetVariablerF   ©rH   rþ   s     r0   ÚmutationzSideEffects.mutation1  sm   € Ø×&Ñ& sÔ+Ü�c×'Ñ'Ô)>Ô?Ø,0ˆC×ÑÔ)à�JŠJÜ˜3¤	× ;Ñ ;Ô<Ü˜s¤I×$9Ñ$9Ô:à/3ˆDÕ,ð ;ð =ð r2   c                 ó   — | j                   S r$   )rF   ©rH   s    r0   Úhas_existing_dict_mutationz&SideEffects.has_existing_dict_mutation<  s   € Ø×/Ñ/Ð/r2   c                 ó€   — | j                   j                  «       D �cg c]  }| j                  |«      sŒ|‘Œ c}S c c}w r$   )r;   r  r§   r  s     r0   Ú_get_modified_varszSideEffects._get_modified_vars?  s3   € Ø#×2Ñ2×9Ñ9Ó;ÖU˜¸t×?OÑ?OÐPSÕ?T’ÒUÐUùÒUs   �;´;Úcgc           	      ó
  ‡‡— | j                  «       D �]÷  Št        ‰j                  t        «      r¬t        ‰t        j
                  «      r’‰j                  €^‰j                  ˆfd„«       ‰j                  t        dd«      «       ‰j                  ‰«       t        ‰j                  ‰   «      ‰_        Œ¢‰j                  �Œ¯t        ‰j                  «      ‰_        ŒÊt        ‰j                  t        «      �rt        ‰t        j                  «      rt!        dddg ¬«       t        ‰t        j"                  «      rˆˆfd„}‰j                  |«       n‰j                  ˆfd	„«        ‰‰j                  j$                  «       ‰j&                  D ]
  } ‰|«       Œ ‰j                  t        d
t)        ‰j&                  «      z   d«      «       ‰j                  ‰«       t        ‰j                  ‰   «      ‰_        �Œê‰j                  ��ŒøJ ‚ | j*                  D ]g  \  }} ‰|j                  «       ‰j-                  d«       |D ]
  } ‰|«       Œ ‰j                  g t/        t)        |«      «      ¢t1        d«      ‘«       Œi y )Nc                  óD   •— ‰ j                  t        j                  d«      S )NÚ	make_cell©Úload_import_fromr
   Ú__name__©r  s   €r0   ú<lambda>z3SideEffects.codegen_save_tempvars.<locals>.<lambda>O  ó   ø€  × 3Ñ 3´E·N±NÀKÓ P€ r2   r   Fz<AutogradFunctionContextVariable escaped Dynamo-traced regionrm   zAWe cannot reconstruct a torch.autograd.Function's context object.ro   c                  óˆ   •— ‰j                   €J ‚ ‰ ‰j                   «       ‰ j                  ‰ j                  d«      g«       y )Nrá   )râ   Úextend_outputÚcreate_load_attr©r  rþ   s   €€r0   Úload_new_methodz:SideEffects.codegen_save_tempvars.<locals>.load_new_methodd  s;   ø€ Ø"Ÿ™Ð:Ð:Ð:Ù˜3Ÿ?™?Ô+Ø×(Ñ(¨"×*=Ñ*=¸iÓ*HÐ)IÕJr2   c                  óD   •— ‰ j                  t        j                  d«      S )Nr   r  r   s   €r0   r!  z3SideEffects.codegen_save_tempvars.<locals>.<lambda>l  s   ø€  × 3Ñ 3´E·N±NÀLÓ Q€ r2   r   rD   ÚPOP_TOP)r  rN   ru   r   r   r‡   Ú
local_nameÚadd_push_nullr$  r   Ú	add_cacher   Útempvarsr«   r   rl   r   r¥   r²   rä   ÚlenrD   Úload_methodr   r   )rH   r  r'  Úargrô   rõ   rþ   s    `    @r0   Úcodegen_save_tempvarsz!SideEffects.codegen_save_tempvarsB  s&  ù€ ð ×*Ñ*Ó,ó 7	.ˆCÜ˜#×+Ñ+Ô-AÔBÄzØ”Y×+Ñ+ôHð —>‘>Ð)Ø×$Ñ$ÛPôð ×$Ñ$Ô%9¸!¸UÓ%CÔDØ—L‘L Ô%Ü!,¨R¯[©[¸Ñ-=Ó!>�C•JØ—Z‘ZÑ'Ü!0°·±Ó!@�C•JÜ˜C×-Ñ-Ô/CÕDÜ˜c¤9×#LÑ#LÔMÜ$Ø ^Ø "Ø$gØ õ	ô ˜c¤9×#FÑ#FÔGõKð
 ×$Ñ$ _Õ5à×$Ñ$ÛQôñ �3×$Ñ$×/Ñ/Ô0ð Ÿ=™=ò �CÙ�s•Gðð × Ñ Ô!5°a¼#¸c¿m¹mÓ:LÑ6LÈeÓ!TÔUà—‘˜SÔ!Ü(¨¯©°SÑ)9Ó:�–
ð —z‘zÒ-Ð-Ð-ðo7	.ðr ×/Ñ/ò 
	‰IˆC�Ùˆs�z‰zŒNØ�N‰NÐ.Ô/Øò �Ù�3•ðà×ÑðÜ'¬¨D«	Ó2ðä& yÓ1ðõñ
	r2   c                 óÞ  — t        |t        j                  «      sJ ‚t        |t        j                  «      sJ ‚t        |t        j                  «      r|j                  «       sJ ‚t        t        j                  |«      sJ ‚t        | j                  j                  «       «      }|| j                  v r|dz  }|| j                  v rŒ||||f| j                  |<   |j                  rJ ‚||_        y )Nr   )rN   r   rø   r    ÚRemovableHandleVariableÚ
is_mutablerÎ   r·   ÚTensorr.  rE   rQ   Úidx)rH   ÚtensorÚhookÚhandlerw   r6  s         r0   Úregister_hookzSideEffects.register_hookŠ  sÖ   € Ü˜&¤)×":Ñ":Ô;Ð;Ð;Ü˜$¤	× 9Ñ 9Ô:Ð:Ð:ä�vœy×@Ñ@ÔAØ×!Ñ!Ô#ð	
ð$ô ”u—|‘| TÔ*Ð*Ð*Ü�$×#Ñ#×(Ñ(Ó*Ó+ˆà�T×&Ñ&Ñ&Ø�1‰HˆCð �T×&Ñ&Ò&à"(¨$°¸Ð!=ˆ×Ñ˜#ÑØ—:’:Ðˆ~Øˆ�
r2   c                 ó   — | j                   |= y r$   )rE   )rH   r6  s     r0   Úremove_hookzSideEffects.remove_hookš  s   € Ø×Ñ˜cÑ"r2   c                 ó  ‡‡‡— | j                   j                  «       D ]f  \  Š}}Š‰j                  sJ d«       ‚ˆˆˆfd„}‰j                  |«        ‰|«       ‰j	                  t        dd«      «       ‰j                  |«       Œh y )Nz4Hooks on non input tensors NYI - should not get herec                  óX   •—  ‰ ‰«       ‰ j                  ‰ j                  ‰«      g«       y r$   )r$  r%  )r  rw   r7  s   €€€r0   Úgen_fnz)SideEffects.codegen_hooks.<locals>.gen_fnÇ  s&   ø€ Ù�6”
Ø× Ñ  "×"5Ñ"5°dÓ";Ð!<Õ=r2   r   F)rE   r  r«   r+  r$  r   r,  )rH   r  r8  r9  r?  rw   r7  s    `   @@r0   Úcodegen_hookszSideEffects.codegen_hooks�  sˆ   ú€ ð ×Ñ×%Ñ%Ó'ò3	!ñ 
ØØØØðF —=’=ÐXÐ"XÓX�=ö>ð ×Ñ˜VÔ$ÙˆtŒHØ×ÑÔ1°!°UÓ;Ô<ð �L‰L˜Õ ñg3	!r2   c                 ó€   — ddl m} | j                  €!t        j                  g  |«       ¬«      | _        | j                  S )Nr   )r   rê   )Úvariables.baser   rG   r   ÚListVariable)rH   r   s     r0   Úget_ca_final_callbacks_varz&SideEffects.get_ca_final_callbacks_varÓ  s;   € Ý4à×&Ñ&Ð.Ü*3×*@Ñ*@ØÑ"2Ó"4ô+ˆDÔ'ð ×*Ñ*Ð*r2   c           	      óž  ‡‡— g }| j                  «       D �
]R  Št        ‰t        j                  «      ru ‰‰d¬«        ‰‰j                  «       ‰j                  ‰j                  d «      ‰j                  d «      t        dd¬«      g«       |j                  t        d«      g«       Œ“t        ‰t        j                  j                  «      rêt        ‰j                  t        j                  «      r‰j                  j                  �t        ddd	d
g¬«        ‰‰j                  «       ‰j                  d«        ‰‰d¬«       |j                  g t!        d«      ¢t        d«      ‘«        ‰‰j                  «       ‰j                  d«       |j                  g t!        d«      ¢t        d«      ‘«       �Œ¡t        ‰t        j"                  «      rÌ‰j%                  «       s�ŒÍ ‰‰j                  «       ‰j                  d«        ‰‰d¬«       ‰j&                  r# ‰‰j                  «       ‰j                  d«       |j                  g t!        d«      ¢t        d«      ‘«       ‰j&                  s�Œ^|j                  g t!        d«      ¢t        d«      ‘«       �Œ‡t        ‰t        j(                  j*                  «      �r‰j-                  ˆfd„«       ‰j/                  dd«       t        j(                  j1                  «       }‰j2                  dxx   |fz  cc<   ‰j5                  t        d|¬«      «       ‰j-                  ˆfd„«       ‰j7                  ‰j8                  «       ‰j5                  t        dt;        ‰j8                  «      ¬«      «       ‰j/                  dd«       ‰j5                  t        d«      «       �Œ°t        ‰t        j<                  «      rb‰j>                  �V‰| j@                  v s�Œæ| jC                  ‰«      } ‰|«       |j                  ‰jE                  ‰j>                  «      g«       �Œ,| jG                  ‰«      �rût        ‰t        jH                  «      �rd| jK                  ‰jL                  «      �rHi }tN        jP                  jR                  D ])  }‰jT                  jV                  jY                  «       ||<   Œ+ 	 t[        ‰j                  «      j\                  j_                  t`        jb                  «      }‰j                  t        d|¬«      t        d|d   ¬«      g«        ‰‰j                  «       ‰j                  t        d|d   ¬«      g«        ‰‰jL                  d¬«       ‰j                  t        d|d   ¬«      g«       ti        tN        |¬«      }|j                  g |¢t        d«      ‘«       �nt        ‰t        jj                  «      rø| jK                  ‰jl                  «      rÝi }tn        jP                  jR                  D ])  }‰jT                  jV                  jY                  «       ||<   Œ+  ‰‰j                  «       ‰j                  t        d|d   ¬«      g«        ‰‰jl                  d¬«       ‰j                  t        d|d   ¬«      g«       ti        tn        |¬«      }|j                  g |¢t        d«      ‘«       tq        | j@                  js                  ‰i «      ju                  «       «      D �]1  \  }}	t        ‰t        jv                  «      rg‰jT                  jV                  jy                  |«        ‰|	«       t        ‰j                  tz        «      sJ ‚|j                  t        d|¬«      g«       Œˆt        |	t        j|                  «      r‰t        ‰j~                  t€        «      sŒ½tƒ        t…        ‰d d «      |«      sŒÕ‰jT                  jV                  jy                  |«        ‰‰j                  «       |j                  t        d!|¬«      g«       �Œ+t        ‰t        j†                  «      r‘‰j‰                  «       r�‰j‹                  d"d#«       ‰j                  d$«        ‰‰j                  «        ‰t        j                  |«      «        ‰|	«       |j                  g t!        d%«      ¢t        d«      ‘«       �ŒÖ‰jT                  jV                  jy                  |«        ‰|	«        ‰‰j                  «       |j                  t        d&|¬«      g«       �Œ4 �	Œ9t        ‰t        jŒ                  «      rdt�        ‰j^                  «      D ]J  }
‰j-                  ˆfd'„«        ‰‰j                  «       ‰j/                  dd«       ‰j‘                  «        ŒL �	Œ·t        ‰t        j’                  «      rpˆˆfd(„}‰j-                  |«        ‰‰j•                  ‰j–                  j™                  «       «      «       |j                  g t›        dd«      ¢t        d«      ‘«       �
ŒAt�        t[        ‰«      «      ‚ tq        |«      D ]  }‰j                  |«       Œ y # td        $ r6 t[        ‰j                  «      j\                  j_                  tf        «      }Y �Œ¼w xY w))NF)Úallow_cacheÚBUILD_SLICEé   )r0  ÚSTORE_SUBSCRz1Side effect on existing deque with limited maxlenrm   rn   z*Don't use a deque with `maxlen` specified.ro   r5   r   r)  r'   r   Úupdatec                  óD   •— ‰ j                  t        j                  d«      S )NÚget_torch_function_mode_stackr  r   s   €r0   r!  z4SideEffects.codegen_update_mutated.<locals>.<lambda>8  ó   ø€ ˜B×/Ñ/ÜŸ™Ð(Gó€ r2   Úco_varnamesÚ
STORE_FAST)Úargvalc                  óD   •— ‰ j                  t        j                  d«      S )NÚset_torch_function_mode_stackr  r   s   €r0   r!  z4SideEffects.codegen_update_mutated.<locals>.<lambda>A  rM  r2   Ú
BUILD_LISTÚ
LOAD_CONSTr,   r+   r*   )Úvarname_mapr7   r6   ÚSTORE_GLOBALrx   ÚDELETE_ATTRÚbuiltinsr˜   Ú__setattr__é   Ú
STORE_ATTRc                  óD   •— ‰ j                  t        j                  d«      S )NÚ	iter_nextr  r   s   €r0   r!  z4SideEffects.codegen_update_mutated.<locals>.<lambda>é  r"  r2   c                  óL   •—  ‰ ‰j                   «       ‰ j                  d«       y )NÚsetstate)r«   r‚   r&  s   €€r0   r?  z2SideEffects.codegen_update_mutated.<locals>.gen_fnð  s   ø€ Ù�s—z‘z”NØ—L‘L Õ,r2   )Or  rN   r   rC  r«   r$  Úcreate_load_constr   r­   ÚlistsÚDequeVariableÚmaxlenÚConstantVariablerx   r   r/  r   r  Úhas_new_itemsÚshould_reconstruct_allÚtorch_functionÚTorchFunctionModeStackVariabler+  Úcall_functionÚget_prev_stack_var_nameÚcode_optionsÚappend_outputÚforeachÚsymbolic_stackr.  r‡   r*  r<   rŽ   Úcreate_store_derefrz   rÔ   r§   Ú_dict_vtr1   Ú__code__rN  r  rc   Únew_varr%   r&   ÚindexrÒ   rÓ   Ú
ValueErrorrX   r   r×   Ú_list_vtr8   Úreversedr    r(   rñ   Úupdate_co_namesr   r}   ru   r   rÎ   Úgetattrr¥   Úneeds_slow_setattrr  ÚListIteratorVariableÚrangeÚpop_topÚRandomVariableÚ
wrap_stateÚrandomÚgetstater   r¬   )rH   r  Úsuffixesrw   Úcontents_varrU  r,   Údict_update_instsÚlist_update_instsrx   Ú_r?  Úsuffixrþ   s    `           @r0   Úcodegen_update_mutatedz"SideEffects.codegen_update_mutatedÜ  s	  ù€ ØˆØ×*Ñ*Ó,ó `	0ˆCÜ˜#œy×5Ñ5Ô6á�3 EÕ*Ù�3—:‘:”Ø× Ñ à×,Ñ,¨TÓ2Ø×,Ñ,¨TÓ2Ü*¨=¸aÔ@ðôð —‘Ô!3°NÓ!CÐ DÕEÜ˜C¤§¡×!>Ñ!>Ô?ô ˜sŸz™z¬9×+EÑ+EÔFØŸ
™
×(Ñ(Ð0ä$Ø SØ "Ø$<àHðõ	ñ �3—:‘:”Ø—‘˜xÔ(Ù�3 EÕ*Ø—‘ðÜ+¨AÓ.ðä*¨9Ó5ðôñ �3—:‘:”Ø—‘˜wÔ'Ø—‘ðÜ+¨AÓ.ðä*¨9Ó5ðöô ˜C¤×!<Ñ!<Ô=ð ×$Ñ$Ö&Ù�s—z‘z”NØ—N‘N 8Ô,Ù�s¨Õ.à×1Ò1Ù˜3Ÿ:™:œØŸ™ wÔ/à—O‘OðÜ/°Ó2ðä.¨yÓ9ðôð ×1Ô1ð !Ÿ™ðÜ!3°AÓ!6ðä 2°9Ó =ðöô Ø”Y×-Ñ-×LÑLõð × Ñ óôð
 × Ñ   EÔ*Ü ×/Ñ/×GÑGÓI�Ø—‘ Ó.°4°'Ñ9Ó.Ø× Ñ Ô!3°LÈÔ!NÔOØ× Ñ óôð —
‘
˜3×-Ñ-Ô.Ø× Ñ Ü& |¼¸S×=OÑ=OÓ9PÔQôð × Ñ   EÔ*Ø× Ñ Ô!3°IÓ!>Ö?ä˜C¤×!7Ñ!7Ô8¸S¿^¹^Ð=Wð ˜$×3Ñ3Ó3Ø#'§>¡>°#Ó#6�LÙ�|Ô$Ø—O‘O R×%:Ñ%:¸3¿>¹>Ó%JÐ$KÖLà×+Ñ+¨CÕ0ÜØœ×:Ñ:õà×&Ñ& s§|¡|Õ4ð #%�KÜ 4× =Ñ =× IÑ Iò C˜Ø,.¯E©E¯L©L×,@Ñ,@Ó,B˜ DÒ)ðCðHÜ$(¨¯©£O×$;Ñ$;×$AÑ$AÜ'×3Ñ3ó%˜	ð ×$Ñ$ä.¨|ÀIÔNÜ.Ø ,°[ÀÑ5Môðôñ �s—z‘z”NØ×$Ñ$ä.Ø ,°[ÀÑ5Kôðôñ �s—|‘|°Õ7Ø×$Ñ$ä.Ø ,°[ÀÑ5Môðôô )?Ü,¸+ô)Ð%ð —O‘OðØ.ðä.¨yÓ9ðöô  Øœ×:Ñ:ôà×&Ñ& s§|¡|Ô4ð #%�KÜ 3× <Ñ <× HÑ Hò C˜Ø,.¯E©E¯L©L×,@Ñ,@Ó,B˜ DÒ)ðCñ �s—z‘z”NØ×$Ñ$ä.Ø ,°[ÀÑ5Kôðôñ �s—|‘|°Õ7Ø×$Ñ$ä.Ø ,°[ÀÑ5Môðôô )?Ü+¸ô)Ð%ð —O‘OðØ.ðä.¨yÓ9ðôô. $,Ø×-Ñ-×1Ñ1°#°rÓ:×@Ñ@ÓBó$ó $Y‘K�D˜%ô " #¤y×'BÑ'BÔCØŸ™Ÿ™×4Ñ4°TÔ:Ù˜5œ	Ü)¨#¯*©*´lÔCÐCÐCØ Ÿ™Ü/°ÀtÔLÐMõô $ E¬9×+DÑ+DÔEÜ%Ø×-Ñ-Ô/Hõä%¤g¨c°7¸DÓ&AÀ4ÕHØŸE™EŸL™L×8Ñ8¸Ô>Ù˜sŸz™zœNØ$ŸO™OÜ!3°MÈ$Ô!OÐ Pöô # 3¬	×(KÑ(KÔLØ×2Ñ2Ô4ð ×+Ñ+¨J¸ÔAØŸ™ }Ô5Ù˜3Ÿ:™:œÙœ9×5Ñ5°dÓ;Ô<Ù˜5œ	Ø Ÿ™ØSÔ0°Ó3ÐSÔ5GÈ	Ó5RÐSöð Ÿ™Ÿ™×4Ñ4°TÔ:Ù˜5œ	Ù˜3Ÿ:™:œØ Ÿ™Ô);¸LÐQUÔ)VÐ(WÖXòI$YôJ ˜C¤×!?Ñ!?Ô@Ü˜sŸy™yÓ)ò !�AØ×$Ñ$ÛPôñ �s—z‘z”NØ×$Ñ$ Q¨Ô.Ø—J‘J•Lò!ô ˜C¤×!9Ñ!9Ô:õ-ð × Ñ  Ô(Ù�3—>‘> #§*¡*×"5Ñ"5Ó"7Ó8Ô9à—‘ðÜ-¨a°Ó7ðä*¨9Ó5ðöô %¤T¨#£YÓ/Ð/ðA	`	0ôF	 ˜xÓ(ò 	%ˆFØ×Ñ˜VÕ$ñ	%øô} &ò HÜ$(¨¯©£O×$;Ñ$;×$AÑ$AÄ$Ó$G›	ðHús   Ó<jê;këkc                 óÆ   — t        t        | j                  | j                  j	                  «       «      «      xs( | j
                  xs | j                  xs | j
                   S r$   )ÚanyÚmapr§   r;   r  rE   rD   r  s    r0   Úis_emptyzSideEffects.is_empty  s\   € ä”�D×$Ñ$ d×&9Ñ&9×&@Ñ&@Ó&BÓCÓDò !Ø× Ñ ò!à×%Ñ%ò!ð × Ñ ð	
ð 	
r2   c                 ól   — | j                   j                  «        | j                  j                  «        y r$   )r=   r'   r;   r  s    r0   r'   zSideEffects.clear  s$   € Ø�‰×ÑÔØ×Ñ×!Ñ!Õ#r2   )NNNNN)FF)@r  Ú
__module__Ú__qualname__Ú__doc__rX   r™   r    Ú__annotations__r�   r4   r   r@   r˜   rŸ   rO   r   rV   rY   r^   r`   rh   rj   rv   r{   r‚   r‰   rŽ   r‘   r“   Ústaticmethodrœ   rz   r¡   r‹   r§   r   r¯   Útrack_mutabler±   r   rÀ   rÚ   ræ   rè   rë   r   rï   rò   rö   rü   r  r  r  r  r   r1  r:  r<  r@  rD  r‡  r‹  r'   Ú__classcell__)rJ   s   @r0   r:   r:   9   s  ø… ñð& ˜˜oÐ-Ñ.Ó.Ø˜°°S¸/Ð5IÑ0JÐJÑKÓKØ�C‰yÓð
 Ø!ØØØõ+ð.
˜Fð 
 tó 
ð˜-ð ¨H°S©Mó ò,
ò/ò-ò
ò
òð46˜ð 6°cð 6À/ó 6óò
9ò
ð* ð *°só *ð+ ð +¸ð +ÀOó +ð
 ñ
ó ð
òAò
ò
>ò
.ð* 0ñ	àðð "óð. €Mð	
àð	
ð "ó	
ðàðð ðð ó	ò*#òJò>ò<	ðØ˜vÑ&ðØ.6ðØBQóð¨Fð ¸#ó ò3ò
Gò>
ò@	4ò0òVðF¨	ó FòPò #ò4!òl+ðf%¨ó f%òP	
ö$r2   r:   c              #   óF  K  — | j                   j                  j                  sJ ‚| j                   j                  j                  }	 d| j                   j                  _        d –— || j                   j                  _        y # || j                   j                  _        w xY w­wr  )rc   rd   re   rf   ©r  Úorig_vals     r0   rf   rf     ss   è ø€ à�9‰9×#Ñ#×?Ò?Ð?Ð?Ø�y‰y×'Ñ'×KÑK€HðPØGKˆ�	‰	× Ñ ÔDÛàGOˆ�	‰	× Ñ ÕDøÀxˆ�	‰	× Ñ ÕDüs   ‚AB!ÁB Á%B!ÂBÂB!c              #   ó  K  — | j                   j                  j                  }	 d| j                   j                  _        d –— || j                   j                  _        y # || j                   j                  _        w xY w­wr  )rc   rd   rj   r•  s     r0   Ú"disallow_side_effects_in_generatorr˜    sZ   è ø€ à�y‰y×'Ñ'×CÑC€HðHØ?Cˆ�	‰	× Ñ Ô<Ûà?Gˆ�	‰	× Ñ Õ<ø¸xˆ�	‰	× Ñ Õ<üs   ‚!A?¤A ÁA?ÁA<Á<A?)r  r"   )7rÒ   Ú
contextlibr–   r»   rA   Úcollections.abcr   Útypesr   Útypingr   r   r   Útorch.nnr·   rm   r	   r
   r   Úbytecode_transformationr   r   r   r   Úcodegenr   Úexcr   r   r«   r   r   r   r   r   r   r   rB  r   r   r   r   r   r   r    rË   r!   Útorch._dynamo.symbolic_convertr"   r1   r8   r:   Úcontextmanagerrf   r˜  r£   r2   r0   ú<module>r£     s´   ðó Û Û Û Û Ý *Ý ß /Ñ /ã ç 1Ñ 1÷ó õ ß 3ß FÓ Fß AÑ A÷÷ ñ õ <ñ ÝDò.ò$÷
U$ñ U$ðp ×ÑòPó ðPð ×ÑòHó ñHr2   