Ë
    ÃÓ^jÚ”  ã                  óV  — d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	m
Z
mZ ddlmZ ddlZddlmZ dd	lmZmZ dd
lmZmZ ddlmZmZmZmZmZ ddlmZmZ erddl m!Z! ddl"m#Z#  G d„ de«      Z$ e$d«      Z% e$d«      Z& e$d«      Z' G d„ dejP                  «      Z) G d„ de«      Z*y)zû
Constant variable tracking in Dynamo.

This module is fundamental to Dynamo's ability to track and propagate constant
values during compilation, ensuring proper handling of Python literals and
maintaining type safety through the compilation process.
é    )ÚannotationsN)ÚIterable)ÚAnyÚLiteralÚoverloadÚTYPE_CHECKING)Úoverride)ÚGetItemSourceé   )Úgraph_break_hintsÚ	variables)Úraise_observed_exceptionÚunimplemented)Úcommon_constant_typesÚistypeÚnpÚraise_args_mismatchÚunpack_iterableé   )ÚValueMutationNewÚVariableTracker)ÚInstructionTranslatorBase)ÚUserFunctionVariablec            
      ó@  ‡ — e Zd ZdZeeeee e	d«      e
 e	d«      fZeed<d„«       «       Zeed=d„«       «       Zeed>d„«       «       Zed>d„«       Zd?ˆ fd„Zd@d	„ZdAd
„Zd@d„ZdBd„ZdCd„ZdDd„ZdEd„ZdDd„ZedFd„«       Z	 	 	 	 	 	 dGd„Z	 	 	 	 	 	 dHd„Z	 	 	 	 	 	 dIˆ fd„ZedJd„«       ZedKdLd„«       Z	 	 	 	 dMd„ZdNd„Z 	 	 	 	 	 	 	 	 dOd„Z!dCd„Z"dCd„Z#dCd„Z$dCd„Z%	 	 	 	 	 	 dPd„Z&dQˆ fd„Z'dCˆ fd „Z(	 	 	 	 	 	 	 	 	 	 dRˆ fd!„Z)	 	 	 	 	 	 	 	 	 	 	 	 dSˆ fd"„Z*dAd#„Z+e,	 	 	 	 	 	 dTd$„«       Z-dUd%„Z.dVˆ fd&„Z/dWd'„Z0	 	 	 	 dXˆ fd(„Z1	 	 	 	 dXd)„Z2	 	 	 	 dXd*„Z3	 	 	 	 	 	 	 	 	 	 	 	 dYd+„Z4	 dZ	 	 	 	 	 	 	 d[d,„Z5	 dZ	 	 	 	 	 	 	 d[d-„Z6	 dZ	 	 	 	 	 	 	 d[d.„Z7	 dZ	 	 	 	 	 	 	 d[d/„Z8	 dZ	 	 	 	 	 	 	 d[d0„Z9	 dZ	 	 	 	 	 	 	 d[d1„Z:	 dZ	 	 	 	 	 	 	 d[d2„Z;	 dZ	 	 	 	 	 	 	 d[d3„Z<	 dZ	 	 	 	 	 	 	 d\d4„Z=	 	 	 	 	 	 d]d5„Z>	 dZ	 	 	 	 	 	 	 d[d6„Z?	 dZ	 	 	 	 	 	 	 d[d7„Z@	 	 	 	 dXd8„ZA	 	 	 	 dXd9„ZB	 dZ	 	 	 	 	 	 	 d[d:„ZC	 	 	 	 dXd;„ZDˆ xZES )^ÚConstantVariablea  
    Variable tracker for Python literals and basic immutable types, with automatic
    routing support for collection types (lists, tuples, sets, etc.).

    The create() method intelligently constructs appropriate variable types for
    nested collections.
    N.c                 ó   — y ©N© ©Úvalues    úk/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/variables/constant.pyÚcreatezConstantVariable.create8   ó   € à14ó    c                 ó   — y r   r   r   s    r!   r"   zConstantVariable.create<   r#   r$   c                 ó   — y r   r   )r    Úkwargss     r!   r"   zConstantVariable.create@   s   € à>Ar$   c                ó®  — |s| x€ t         S xdu r t        S du rt        S |j                  d«      }t	        | t
        «      r8| D �cg c]  }t        j                  |«      ‘Œ }}t        j                  |fi |¤ŽS t	        | t        «      r8| D �cg c]  }t        j                  |«      ‘Œ }}t        j                  |fi |¤ŽS t	        | t        «      r[| j                  | j                  | j                  f}|D �cg c]  }t        j                  |«      ‘Œ }}t        j                   |fi |¤ŽS t	        | t"        t$        f«      ryg }t'        | «      D ];  \  }}|rt)        ||«      nd}	|j+                  t        j                  ||	¬«      «       Œ= t        j,                  j/                  t1        | «      «      |fi |¤ŽS t        | fi |¤ŽS c c}w c c}w c c}w )aV  
        Create a `ConstantVariable` based on the given value, and supports
        automatic routing for collection types like `tuple` (in which case we'd
        create `ConstantVariable` for the leaf items).

        NOTE: the caller must install the proper guards if needed; most often
        the guard will be `CONSTANT_MATCH`.
        NTFÚsource)r)   )ÚCONSTANT_VARIABLE_NONEÚCONSTANT_VARIABLE_TRUEÚCONSTANT_VARIABLE_FALSEÚgetÚ
isinstanceÚsetr   r"   r   ÚSetVariableÚ	frozensetÚFrozensetVariableÚsliceÚstartÚstopÚstepÚSliceVariableÚlistÚtupleÚ	enumerater
   ÚappendÚBaseListVariableÚcls_forÚtype)
r    r'   r)   ÚxÚitemsÚ
slice_argsÚargÚslice_args_varsÚiÚitem_sources
             r!   r"   zConstantVariable.createD   s»  € ñ ØÚÜ1Ð1ÜÜ1Ð1ÚÜ2Ð2à—‘˜HÓ%ˆô �eœSÔ!Ø9>Ö?°AÔ%×,Ñ,¨QÕ/Ð?ˆEÐ?Ü×(Ñ(¨Ñ9°&Ñ9Ð9Ü˜œyÔ)Ø9>Ö?°AÔ%×,Ñ,¨QÕ/Ð?ˆEÐ?Ü×.Ñ.¨uÑ?¸Ñ?Ð?Ü˜œuÔ%ØŸ+™+ u§z¡z°5·:±:Ð>ˆJà8Bö6Ø14Ô ×'Ñ'¨Õ,ð6ˆOð 6ô ×*Ñ*¨?ÑE¸fÑEÐEÜ˜¤¤e˜}Ô-ØˆEÜ! %Ó(ò ‘��1Ù:@œm¨F°AÔ6Àd�Ø—‘Ü$×+Ñ+ØØ*ð ,ó õðô ×-Ñ-×5Ñ5´d¸5³kÓBÀ5ÑSÈFÑSÐSä Ñ0¨Ñ0Ð0ùò/ @ùò @ùò6s   ÁGÂGÃ9Gc                óø   •— t        ‰| �  di |¤Ž t        j                  |«      st	        dt        |«      › d�«      ‚t        �0t        |t        j                  «      r|j                  «       | _
        y || _
        y )Nz6Cannot construct `ConstantVariable` for value of type a_  .

This failure likely due to PyTorch-internal use of `ConstantVariable` on
non-literal python values, please try using `VariableTracker.build` instead. If
you believe it's a necessary and legitimate use case (the value is immutable and
can't easily be represented with another `VariableTracker` class), please add
its type to `common_constant_types`.r   )ÚsuperÚ__init__r   Úis_base_literalÚAssertionErrorr>   r   r.   ÚnumberÚitemr    )Úselfr    r'   Ú	__class__s      €r!   rH   zConstantVariable.__init__v   sl   ø€ Ü‰ÑÑ"˜6Ò"Ü×/Ñ/°Ô6Ü ØHÌÈeËÈð V7ð 7óð ô ˆ>œj¨´·	±	Ô:ØŸ™›ˆD�JàˆD�Jr$   c                ó   — | j                   S r   r   ©rM   s    r!   Úas_proxyzConstantVariable.as_proxy‡   ó   € Ø�z‰zÐr$   c                ót   — dt        | j                  «      j                  › dt        | j                  «      › d�S )NzConstantVariable(z: ú))r>   r    Ú__name__ÚreprrP   s    r!   Ú__repr__zConstantVariable.__repr__Š   s2   € Ø"¤4¨¯
©
Ó#3×#<Ñ#<Ð"=¸RÄÀTÇZÁZÓ@PÐ?QÐQRÐSÐSr$   c                ó   — | j                   S r   r   rP   s    r!   Úas_python_constantz#ConstantVariable.as_python_constant�   rR   r$   c                 ó   — y©NTr   rP   s    r!   Úis_python_constantz#ConstantVariable.is_python_constant�   s   € Ør$   c                óR   — t         j                  t        | j                  «      «      S r   )r   r"   rV   r    ©rM   Útxs     r!   Ú	repr_implzConstantVariable.repr_impl“   s   € Ü×&Ñ&¤t¨D¯J©JÓ'7Ó8Ð8r$   c                óB   — t        | j                  t        t        f«      S r   )r.   r    ÚintÚboolrP   s    r!   Úis_symnode_likez ConstantVariable.is_symnode_like–   s   € Ü˜$Ÿ*™*¤s¬D kÓ2Ð2r$   c                ó   — | j                   |v S r   r   )rM   Úvaluess     r!   Úis_constant_matchz"ConstantVariable.is_constant_match™   s   € Ø�z‰z˜VÐ#Ð#r$   c                ó   — | j                   d u S r   r   rP   s    r!   Úis_constant_nonez!ConstantVariable.is_constant_noneœ   s   € Ø�z‰z˜TÐ!Ð!r$   c                ó˜   — 	 | j                   D �cg c]  }t        j                  |«      ‘Œ c}S c c}w # t        $ r}t        |‚d}~ww xY w)zz
        Need this when adding a BaseListVariable and a ConstantVariable together.
        Happens in detectron2.
        N)r    r   r"   Ú	TypeErrorÚNotImplementedError)rM   r?   Úes      r!   r@   zConstantVariable.itemsŸ   sC   € ð	-Ø8<¿
¹
ÖC°1Ô$×+Ñ+¨AÕ.ÒCÐCùÒCøÜò 	-Ü%¨1Ð,ûð	-ús    ‚4 �/¬4 ¯4 ´	A	½AÁA	c                óþ   — t        | j                  t        t        f«      r.ddlm} t        | j                  t        «      rdnd} ||||«      }t        j                  | j                  |j                  «          «      S )Nr   )Úvalidate_sequence_indexÚstringÚbytes)	r.   r    Ústrrq   Úobject_protocolro   r   r"   rY   )rM   r_   rB   ro   Úcontainer_names        r!   Úgetitem_constzConstantVariable.getitem_constª   sc   € ô �d—j‘j¤3¬ ,Ô/Ý@ä)3°D·J±JÄÔ)D™XÈ'ˆNÙ)¨"¨c°>ÓBˆCÜ×&Ñ&Ø�J‰J�s×-Ñ-Ó/Ñ0ó
ð 	
r$   c                óÞ   — |j                  «       }	 t        j                  | j                  |   «      S # t        $ r/}t        t        |t        |j                  «      ¬«       Y d }~y d }~ww xY w©N©Úargs)rY   r   r"   r    Ú
IndexErrorr   r8   ry   )rM   r_   ÚkeyÚindexrm   s        r!   Úsq_item_implzConstantVariable.sq_item_impl¶   s[   € ð ×&Ñ&Ó(ˆð	HÜ#×*Ñ*¨4¯:©:°eÑ+<Ó=Ð=øÜò 	HÜ$¤Z°¼$¸q¿v¹v»,×GÒGûð	Hús   ’!4 ´	A,½%A'Á'A,c                ó‚  •— t        | j                  t        t        t        t
        f«      st        ‰| �  ||«      S |j                  «       }|dk  rt        d|› �«      ‚|t        | j                  «      k\  rt        t        |«       t        j                  | j                  |   «      t        j                  |dz   «      fS )Nr   zInvalid index r   )r.   r    rr   rq   r8   r9   rG   Útp_iteritem_implrY   rJ   Úlenr   rz   r   r"   )rM   r_   r|   rD   rN   s       €r!   r   z!ConstantVariable.tp_iteritem_implÃ   sž   ø€ ô
 ˜$Ÿ*™*¤s¬E´4¼Ð&?Ô@Ü‘7Ñ+¨B°Ó6Ð6Ø×$Ñ$Ó&ˆØˆqŠ5Ü  >°!°Ð!5Ó6Ð6Ø”�D—J‘J“ÒÜ$¤Z°Ô4Ü×&Ñ& t§z¡z°!¡}Ó5Ô7G×7NÑ7NÈqÐSTÉuÓ7UÐUÐUr$   c                ó$   — t        | «      t        v S r   )r>   r   )Úobjs    r!   rI   z ConstantVariable.is_base_literalÑ   s   € ä�C‹yÔ1Ð1Ð1r$   c                óö   ‡— ‰€i Št        | «      ‰v ryt        | «      t        t        t        t
        t        j                  fv r"| ‰t        | «      <   t        ˆfd„| D «       «      S t        j                  | «      S )NTc              3  óJ   •K  — | ]  }t         j                  |‰«      –— Œ y ­wr   )r   Ú
is_literal)Ú.0r?   Úcaches     €r!   ú	<genexpr>z.ConstantVariable.is_literal.<locals>.<genexpr>Þ   s   øè ø€ ÒJÀÔ'×2Ñ2°1°e×<ÑJùs   ƒ #)Úidr>   r8   r9   r/   r1   ÚtorchÚSizeÚallr   rI   )r‚   r‡   s    `r!   r…   zConstantVariable.is_literalÕ   sf   ø€ àˆ=ØˆEÜˆc‹7�eÑàÜ�‹9œœu¤c¬9´e·j±jÐAÑAØ ˆE”"�S“'‰NÜÓJÀcÔJÓJÐJÜ×/Ñ/°Ó4Ð4r$   c                ó    — 	 | j                  «       D �cg c]  }t        j                  |«      ‘Œ c}S c c}w # t        $ r}t        |‚d }~ww xY wr   )rY   r   r"   rk   rl   )rM   r_   r?   rm   s       r!   Úunpack_var_sequencez$ConstantVariable.unpack_var_sequenceá   sH   € ð	-Ø8<×8OÑ8OÓ8QÖR°1Ô$×+Ñ+¨AÕ.ÒRÐRùÒRøÜò 	-Ü%¨1Ð,ûð	-ús!   ‚8 ”3°8 ³8 ¸	AÁAÁAc                ó0   — t        | j                  «      dfS )zADynamo tracing rule for long_hash, float_hash, unicode_hash, etc.F©Úhashr    r^   s     r!   Ú	hash_implzConstantVariable.hash_implé   s   € ä�D—J‘JÓ Ð&Ð&r$   c                ó$   — ddl m}  || |||«      S )Nr   )Ú python_constant_richcompare_impl)rs   r”   )rM   r_   ÚotherÚopr”   s        r!   Úrichcompare_implz!ConstantVariable.richcompare_implí   s   € õ 	Fá/°°b¸%ÀÓDÐDr$   c                óR   — t         j                  t        | j                  «      «      S r   )r   r"   rr   r    r^   s     r!   Ústr_implzConstantVariable.str_implô   s   € Ü×&Ñ&¤s¨4¯:©:£Ó7Ð7r$   c                óÔ   — 	 t         j                  t        | j                  «      «      S # t        $ r4}t        t        |«      |t        |j                  «      ¬«       Y d}~yd}~ww xY w)z9Generic len for any constant value (sequence or mapping).rx   N)	r   r"   r€   r    rk   r   r>   r8   ry   ©rM   r_   rm   s      r!   Úlen_implzConstantVariable.len_impl÷   sN   € ð	EÜ#×*Ñ*¬3¨t¯z©z«?Ó;Ð;øÜò 	EÜ$¤T¨!£W¨b´t¸A¿F¹F³|×DÒDûð	Eús   ‚'* ª	A'³*A"Á"A'c                ó$   — | j                  |«      S )z6Sequence length - delegates to len_impl for constants.©rœ   r^   s     r!   Ú	sq_lengthzConstantVariable.sq_lengthþ   ó   € à�}‰}˜RÓ Ð r$   c                ó$   — | j                  |«      S )z5Mapping length - delegates to len_impl for constants.rž   r^   s     r!   Ú	mp_lengthzConstantVariable.mp_length  r    r$   c                ó¦   — t        | j                  |«      st        t        ||g¬«       t	        | j                  |«      }t        |«      rt        ‚|S rw   )Úhasattrr    r   ÚAttributeErrorÚgetattrÚcallablerl   )rM   r_   ÚnameÚmembers       r!   Úconst_getattrzConstantVariable.const_getattr  sC   € ô �t—z‘z 4Ô(Ü$¤^°R¸t¸fÕEÜ˜Ÿ™ TÓ*ˆÜ�FÔÜ%Ð%Øˆr$   c                ó,  •— |j                  «       r4|j                  «       }	 || j                  v }t        j	                  |«      S t        ‰| �-  ||«      S # t
        $ r4}t        t        |«      |t        |j                  «      ¬«       Y d}~ŒHd}~ww xY w)z Sequence contains for constants.rx   N)r\   rY   r    r   r"   rk   r   r>   r8   ry   rG   Úsq_contains)rM   r_   rL   ÚsearchÚresultrm   rN   s         €r!   r¬   zConstantVariable.sq_contains  s‰   ø€ à×"Ñ"Ô$Ø×,Ñ,Ó.ˆFðØ 4§:¡:Ð-�Ü'×.Ñ.¨vÓ6Ð6ô ‰wÑ" 2 tÓ,Ð,øô ò Ü(Ü˜“GØÜ˜aŸf™f›÷ò ûðús   £"A Á	BÁ*BÂBc                ó  •— ddl m} t        | j                  t        «      r>	  || j                  D �cg c]  }t
        j                  |«      ‘Œ c}t        «       ¬«      S t        ‰| �)  |«      S c c}w # t        $ r Y Œw xY w)Nr   )ÚListIteratorVariable)Úmutation_type)Úlistsr°   r.   r    r   r   r"   r   rl   rG   Útp_iter_impl)rM   r_   r°   ÚcrN   s       €r!   r³   zConstantVariable.tp_iter_impl  sv   ø€ Ý/ä�d—j‘j¤(Ô+ðÙ+Ø9=¿¹ÖD°AÔ%×,Ñ,¨QÕ/ÒDÜ"2Ó"4ôð ô ‰wÑ# BÓ'Ð'ùò Eøô 'ò Ùðús"   £A4 ³A/ÁA4 Á/A4 Á4	B Á?B c           
     ó,  •‡— ddl mŠ |dk(  rQt        | j                  t        «      r7t        j                  t        j                  «      j                  || g|¢|«      S |dk(  r«t        | j                  t        «      r‘|st        |«      dk7  r&t        ||dt        |«      › dt        |«      › d�«       t        ||d   «      }	 |D �cg c]  }|j                  «       ‘Œ }}t        j                  | j                  j                  |«      «      S t'        ˆfd	„|D «       «      rKt
        j                  j                  || j)                  «       | j                  «      j%                  ||||«      S 	 |D �cg c]  }|j                  «       ‘Œ }	}|j+                  «       D �
�ci c]  \  }
}|
|j                  «       “Œ }}
}|d
k(  r| j-                  |«      S t/        | j                  t        «      rD|t        j0                  v r2t3        | j                  |«      }	 t        j                   ||	i |¤Ž«      S t/        | j                  t:        t<        f«      �r0t?        | j                  |«      �r|s1|s/	 t        j                   t3        | j                  |«      «       «      S t?        tH        |«      �r„t        |«      dk(  �ru|d   jK                  «       �ra|	d   }t3        tH        |«      }t/        |tL        jN                  tL        jP                  tL        jR                  f«      r=|jT                  jW                  d|| j                  |fi «      }‰j                  |||«      S 	 t        j                   || j                  |«      «      S t/        | j                  tX        «      r6|dk(  r1t3        | j                  |«      }t        j                   ||	i |¤Ž«      S t9        | j                  «      tZ        u rD|tZ        j0                  v r2t3        | j                  |«      }	 t        j                   ||	i |¤Ž«      S |dk(  r\t        |«      dk(  rN|d   jK                  «       r;	 t        j                  t]        | j                  |d   j                  «       «      «      S t"        ‰| �I  ||||«      S c c}w # t         $ r t"        ‰| �I  ||||«      cY S w xY wc c}w c c}}
w # t         $ r t"        ‰| �I  ||||«      cY S w xY w# t4        $ r}t7        t9        |«      |«       Y d }~Œèd }~ww xY w# t@        tB        f$ r5}t7        t9        |«      |tE        |jF                  «      ¬«       Y d }~�ŒÄd }~ww xY w# t4        $ r5}t7        t9        |«      |tE        |jF                  «      ¬«       Y d }~�Œpd }~ww xY w# t4        $ r }t7        t9        |«      |«       Y d }~�Œœd }~ww xY w# t4        $ r5}t7        t9        |«      |tE        |jF                  «      ¬«       Y d }~�Œ|d }~ww xY w)Nr   ©ÚSymNodeVariableÚformatÚjoinz1 args and 0 kwargsz
 args and z kwargsr   c              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­wr   )r.   )r†   r?   r·   s     €r!   rˆ   z/ConstantVariable.call_method.<locals>.<genexpr>J  s   øè ø€ Ò<°!Œz˜!˜_×-Ñ<ùs   ƒÚ__iter__rx   Úcall_functionÚdecodeÚ	__round__)/Útensorr·   r   r    rr   r   ÚBuiltinVariabler¸   r¼   r€   r   r   rY   r   r"   r¹   rl   rG   Úcall_methodÚanyrQ   r@   r³   r.   Ú__dict__r¦   Ú	Exceptionr   r>   Úfloatrb   r¤   ÚOverflowErrorÚ
ValueErrorr8   ry   Úoperatorr\   rŠ   ÚSymBoolÚSymFloatÚSymIntÚoutputÚcreate_proxyrq   ÚcomplexÚround)rM   r_   r¨   ry   r'   Úarg_unpackedr?   Ú	arg_constÚaÚ
const_argsÚkÚvÚconst_kwargsÚmethodrm   ÚexcÚ
add_targetr–   Úproxyr·   rN   s                      @€r!   rÁ   zConstantVariable.call_method,  s"  ù€ õ 	,à�8Ò¤ t§z¡z´3Ô 7Ü×,Ñ,¬S¯Z©ZÓ8×FÑFØØ�˜�Øóð ð
 �VŠ^¤ t§z¡z´3Ô 7Ùœ˜T› ašÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ô +¨2¨t°A©wÓ7ˆLðCØ=IÖJ¸˜Q×1Ñ1Õ3ÐJ�	ÐJÜ'×.Ñ.¨t¯z©z¯©¸yÓ/IÓJÐJô Ó<°tÔ<Ô<ä×,Ñ,×3Ñ3Ø�D—M‘M“O T§Z¡Zóç‰k˜"˜d D¨&Ó1ð2ð	?Ø:>Ö?°Q˜!×.Ñ.Õ0Ð?ˆJÐ?ØBHÇ,Á,Ã.×Q¹$¸!¸Q˜A˜q×3Ñ3Ó5Ñ5ÐQˆLÑQð �:ÒØ×$Ñ$ RÓ(Ð(ä�d—j‘j¤#Ô&¨4´3·<±<Ñ+?Ü˜TŸZ™Z¨Ó.ˆFð6Ü'×.Ñ.©v°zÐ/RÀ\Ñ/RÓSÐSô ˜Ÿ
™
¤U¬C LÕ1´g¸d¿j¹jÈ$Õ6OÙ™FðÜ+×2Ñ2Ð3L´7¸4¿:¹:ÀtÓ3LÓ3NÓOÐOô œ $Õ'Ü˜“I “NØ˜‘G×.Ñ.Õ0à'¨™]�
ÜœX tÓ,�ÜØ¤§¡´·±ÄÇÁÐ Môð ŸI™I×2Ñ2Ø'¨¨d¯j©j¸*Ð-EÀró�Eð +×1Ñ1°"°e¸ZÓHÐHðQÜ/×6Ñ6±r¸$¿*¹*ÀjÓ7QÓRÐRô ˜Ÿ
™
¤EÔ*¨t°xÒ/?Ü˜TŸZ™Z¨Ó.ˆFÜ#×*Ñ*©6°:Ð+NÀÑ+NÓOÐOÜ�$—*‘*Ó¤Ñ(¨T´W×5EÑ5EÑ-EÜ˜TŸZ™Z¨Ó.ˆFð6Ü'×.Ñ.©v°zÐ/RÀ\Ñ/RÓSÐSð �;Ò¤3 t£9°¢>°d¸1±g×6PÑ6PÔ6RðIÜ'×.Ñ.Ü˜$Ÿ*™* d¨1¡g×&@Ñ&@Ó&BÓCóð ô
 ‰wÑ" 2 t¨T°6Ó:Ð:ùòS Køä&ò CÜ‘wÑ*¨2¨t°T¸6ÓBÒBðCüò @ùÛQøÜ"ò 	?Ü‘7Ñ& r¨4°°vÓ>Ò>ð	?ûô ò 6Ü(¬¨a«°"×5Ñ5ûð6ûô &¤zÐ2ò Ü,Ü˜S›	ØÜ! #§(¡(›^÷ó ûðûô0 %ò QÜ0´°a³¸"Ä4ÈÏÉÃ<×PÓPûðQûô ò 6Ü(¬¨a«°"×5Ò5ûð6ûô ò IÜ(¬¨a«°"¼4ÀÇÁ»<×HÓHûðIúsÌ   ÃR) ÃR$Ã/R) Å/S Å3S
Æ
S ÆSÆ:S ÈS6 É.-T! Í%U( ÐV) Ñ9W Ò$R) Ò)SÓSÓ
S ÓS3Ó2S3Ó6	TÓ?TÔTÔ!U%Ô0*U Õ U%Õ(	V&Õ1*V!Ö!V&Ö)	WÖ2W×W×	X×*XØXc           
     ó˜  •— | j                   €®|j                  d«      }|�	 t        |j                  «       «      }n*t        t        |dd «      dd«      }|j                  d«       }|r|j                  || g|¢i «      S |D ])  }	|	j                  «       rŒ| j                  |||||«      c S  | j                  «       S t        | j                   t        t        t        t        t        t         t"        j$                  f«      r|j                  || g|¢i «      S t&        ‰
| �Q  |||||«      S # t        $ r | j                  |||||«      cY S w xY w)NÚnone_is_leafÚfnÚ
__module__Ú Úoptree)r    r-   rc   rY   rl   Ú_tree_map_fallbackr¦   Ú
startswithr¼   ri   Úcloner.   rb   rÅ   rÎ   rr   rq   rŠ   ÚdtyperG   Úcall_tree_map)rM   r_   Útree_map_fnÚmap_fnÚrestÚtree_map_kwargsÚnone_is_leaf_varrÜ   Útree_map_moduler•   rN   s             €r!   rå   zConstantVariable.call_tree_map�  si  ø€ ð �:‰:ÐØ.×2Ñ2°>ÓBÐØÐ+ð	Ü#'Ð(8×(KÑ(KÓ(MÓ#N‘Lô #*Ü˜K¨¨tÓ4°lÀBó#�ð $3×#=Ñ#=¸hÓ#GÐG�ÙØ×+Ñ+¨B°°¸°¸rÓBÐBà!ò �EØ ×1Ñ1Õ3Ø#×6Ñ6ØØ'Ø"Ø Ø+ó ò ðð —z‘z“|Ð#Ü�d—j‘j¤3¬¬t´W¼cÄ5Ì%Ï+É+Ð"VÔWØ×'Ñ'¨¨T¨M°D¨M¸2Ó>Ð>Ü‰wÑ$ØØØØØó
ð 	
øô? +ò Ø×2Ñ2ØØ#ØØØ'óò ðús   ¢D( Ä(E	ÅE	c                ó,   — t        | j                  «      S r   )rV   r    ©rM   Úcodegens     r!   Úreconstruct_pycodez#ConstantVariable.reconstruct_pycodeÄ  s   € Ü�D—J‘JÓÐr$   c                ól   — t        | j                  |«      }t        j                  j	                  |«      S r   )r¤   r    r   r   r"   )rM   r_   r¨   r®   s       r!   Úcall_obj_hasattrz!ConstantVariable.call_obj_hasattrÇ  s+   € ô ˜Ÿ™ TÓ*ˆÜ×)Ñ)×0Ñ0°Ó8Ð8r$   c                óÎ   — ddl m} t        ||«      r!| j                  «       |j	                  «       k(  S t        |t
        «      xr! | j                  «       |j                  «       k(  S )Nr   r¶   )r¿   r·   r.   rY   Úevaluate_exprr   )rM   r•   r·   s      r!   Úis_python_equalz ConstantVariable.is_python_equalÎ  s[   € Ý+ä�e˜_Ô-Ø×*Ñ*Ó,°×0CÑ0CÓ0EÑEÐEä�uœoÓ.ò HØ×'Ñ'Ó)¨U×-EÑ-EÓ-GÑGð	
r$   c                óœ   •— | j                   �| j                   du s| j                   du rt        | j                   «      S t        ‰| �  |«      S )NTF)r    r‰   rG   Úget_id)rM   r_   rN   s     €r!   rö   zConstantVariable.get_idØ  sB   ø€ à�:‰:Ð §¡¨tÑ!3°t·z±zÀUÑ7JÜ�d—j‘j“>Ð!ô
 ‰w‰~˜bÓ!Ð!r$   c                ó   — | j                   S r   r   rP   s    r!   Úget_real_python_backed_valuez-ConstantVariable.get_real_python_backed_valueâ  rR   r$   c                óÈ   •— ddl m}  |t        | j                  «      «      r2t        j                  t        j                  | j                  «      «      S t        ‰| �%  |«      S )Nr   )Útype_implements_nb_index)
rs   rú   r>   r    r   r"   rÈ   r|   rG   Únb_index_impl)rM   r_   rú   rN   s      €r!   rû   zConstantVariable.nb_index_implå  sG   ø€ õ 	>á#¤D¨¯©Ó$4Ô5Ü#×*Ñ*¬8¯>©>¸$¿*¹*Ó+EÓFÐFÜ‰wÑ$ RÓ(Ð(r$   c                óR   — t         j                  t        | j                  «      «      S r   )r   r"   rb   r    r^   s     r!   Únb_int_implzConstantVariable.nb_int_implñ  s   € ô  ×&Ñ&¤s¨4¯:©:£Ó7Ð7r$   c                óR   — t         j                  t        | j                  «      «      S r   )r   r"   rÅ   r    r^   s     r!   Únb_float_implzConstantVariable.nb_float_implú  s   € ô  ×&Ñ&¤u¨T¯Z©ZÓ'8Ó9Ð9r$   c                ó.  —  |t        | j                  «      «      st        j                  t        «      S |j                  «       st        j                  t        «      S |r|| fn| |f\  }}|j                  «       |j                  «       }	}	  |||	«      }

t        u rt        j                  t        «      S t        j                  ||
«      S # t        t        t        f$ r4}t        t        |«      |t        |j                  «      ¬«       Y d }~Œzd }~ww xY wrw   )r>   r    r   r"   ÚNotImplementedr\   rY   rk   rÇ   rÆ   r   r8   ry   r   Úbuild)rM   r_   r•   r–   Ú
type_checkÚreverseÚself_Úother_rÕ   Úwr®   rm   s               r!   Ú_nb_binary_implz ConstantVariable._nb_binary_impl  sè   € ñ œ$˜tŸz™zÓ*Ô+Ü#×*Ñ*¬>Ó:Ð:Ø×'Ñ'Ô)Ü#×*Ñ*¬>Ó:Ð:Ù)0˜ ™°t¸U°m‰ˆˆvØ×'Ñ'Ó)¨6×+DÑ+DÓ+Fˆ1ˆð	EÙ˜˜1“XˆFð ”^Ñ#Ü#×*Ñ*¬>Ó:Ð:Ü×$Ñ$ R¨Ó0Ð0øô	 œ:¤}Ð5ò 	EÜ$¤T¨!£W¨b´t¸A¿F¹F³|×DÒDûð	Eús   Â	C ÃDÃ *DÄDc                óT   — ddl m} | j                  ||t        j                  ||«      S )Nr   )Útype_implements_nb_lshift)rs   r
  r  rÈ   Úlshift)rM   r_   r•   r  r
  s        r!   Únb_lshift_implzConstantVariable.nb_lshift_impl  ó*   € õ 	?à×#Ñ#Ø�”x—‘Ð(AÀ7ó
ð 	
r$   c                óT   — ddl m} | j                  ||t        j                  ||«      S )Nr   )Útype_implements_nb_rshift)rs   r  r  rÈ   Úrshift)rM   r_   r•   r  r  s        r!   Únb_rshift_implzConstantVariable.nb_rshift_impl+  r  r$   c                óô  — t        | j                  t        t        f«      st        j                  t        «      S |j                  «       st        j                  t        «      S |r|| fn| |f\  }}|j                  «       |j                  «       }}	 t        j                  |||z  «      S # t        t        t        t        f$ r4}t        t!        |«      |t#        |j$                  «      ¬«       Y d }~y d }~ww xY wrw   )r.   r    rb   rÅ   r   r"   r  r\   rY   r   r  rk   rÇ   ÚZeroDivisionErrorrÆ   r   r>   r8   ry   ©	rM   r_   r•   r  r  r  rÕ   r  rm   s	            r!   Únb_floor_divide_implz%ConstantVariable.nb_floor_divide_impl9  sÈ   € ô ˜$Ÿ*™*¤s¬E lÔ3Ü#×*Ñ*¬>Ó:Ð:Ø×'Ñ'Ô)Ü#×*Ñ*¬>Ó:Ð:Ù)0˜ ™°t¸U°m‰ˆˆvØ×'Ñ'Ó)¨6×+DÑ+DÓ+Fˆ1ˆð	EÜ"×(Ñ(¨¨Q°!©VÓ4Ð4øÜœ:Ô'8¼-ÐHò 	EÜ$¤T¨!£W¨b´t¸A¿F¹F³|×DÒDûð	Eús   ÂB* Â*C7Ã*C2Ã2C7c                óþ  — t        | j                  t        t        t        f«      st
        j                  t        «      S |j                  «       st
        j                  t        «      S |r|| fn| |f\  }}|j                  «       |j                  «       }}	 t        j                  |||z  «      S # t        t        t        t        f$ r4}t!        t#        |«      |t%        |j&                  «      ¬«       Y d }~y d }~ww xY wrw   )r.   r    rb   rÅ   rÎ   r   r"   r  r\   rY   r   r  rk   rÇ   r  rÆ   r   r>   r8   ry   r  s	            r!   Únb_true_divide_implz$ConstantVariable.nb_true_divide_implN  sË   € ô ˜$Ÿ*™*¤s¬E´7Ð&;Ô<Ü#×*Ñ*¬>Ó:Ð:Ø×'Ñ'Ô)Ü#×*Ñ*¬>Ó:Ð:Ù)0˜ ™°t¸U°m‰ˆˆvØ×'Ñ'Ó)¨6×+DÑ+DÓ+Fˆ1ˆð	EÜ"×(Ñ(¨¨Q°©UÓ3Ð3øÜœ:Ô'8¼-ÐHò 	EÜ$¤T¨!£W¨b´t¸A¿F¹F³|×DÒDûð	Eús   ÂB/ Â/C<Ã*C7Ã7C<c                ó  — t        | j                  t        t        t        t
        t        f«      st        j                  t        «      S |j                  «       st        j                  t        «      S |r|| fn| |f\  }}|j                  «       |j                  «       }}	 t        j                  |||z  «      S # t        t        t         t"        f$ r4}t%        t'        |«      |t)        |j*                  «      ¬«       Y d }~y d }~ww xY wrw   )r.   r    rb   rÅ   rr   rq   Ú	bytearrayr   r"   r  r\   rY   r   r  rk   rÇ   r  rÆ   r   r>   r8   ry   r  s	            r!   Únb_remainder_implz"ConstantVariable.nb_remainder_implc  sÏ   € ô ˜$Ÿ*™*¤s¬E´3¼¼yÐ&IÔJÜ#×*Ñ*¬>Ó:Ð:Ø×'Ñ'Ô)Ü#×*Ñ*¬>Ó:Ð:Ù)0˜ ™°t¸U°m‰ˆˆvØ×'Ñ'Ó)¨6×+DÑ+DÓ+Fˆ1ˆð	EÜ"×(Ñ(¨¨Q°©UÓ3Ð3øÜœ:Ô'8¼-ÐHò 	EÜ$¤T¨!£W¨b´t¸A¿F¹F³|×DÒDûð	Eús   Â B9 Â9DÃ*DÄDc                ó  — t        | j                  t        t        f«      st        j                  t        «      S |j                  «       st        j                  t        «      S |r|| fn| |f\  }}|j                  «       |j                  «       }}	 t        j                  |t        ||«      «      S # t        t        t        t        f$ r4}t!        t#        |«      |t%        |j&                  «      ¬«       Y d }~y d }~ww xY wrw   )r.   r    rb   rÅ   r   r"   r  r\   rY   r   r  Údivmodrk   rÇ   r  rÆ   r   r>   r8   ry   r  s	            r!   Únb_divmod_implzConstantVariable.nb_divmod_imply  sÊ   € ô ˜$Ÿ*™*¤s¬E lÔ3Ü#×*Ñ*¬>Ó:Ð:Ø×'Ñ'Ô)Ü#×*Ñ*¬>Ó:Ð:Ù)0˜ ™°t¸U°m‰ˆˆvØ×'Ñ'Ó)¨6×+DÑ+DÓ+Fˆ1ˆð	EÜ"×(Ñ(¨¬V°A°q«\Ó:Ð:øÜœ:Ô'8¼-ÐHò 	EÜ$¤T¨!£W¨b´t¸A¿F¹F³|×DÒDûð	Eús   ÂB1 Â1C>Ã
*C9Ã9C>c                óT   — ddl m} | j                  ||t        j                  ||«      S )Nr   )Útype_implements_nb_or)rs   r  r  rÈ   Úor_)rM   r_   r•   r  r  s        r!   Ú
nb_or_implzConstantVariable.nb_or_implŽ  s*   € õ 	;à×#Ñ#Ø�”x—|‘|Ð%:¸Gó
ð 	
r$   c                óT   — ddl m} | j                  ||t        j                  ||«      S )Nr   )Útype_implements_nb_subtract)rs   r#  r  rÈ   Úsub)rM   r_   r•   r  r#  s        r!   Únb_subtract_implz!ConstantVariable.nb_subtract_implŸ  s+   € õ 	Aà×#Ñ#Ø�”x—|‘|Ð%@À'ó
ð 	
r$   c                ó.  — ddl m} |j                  «       st        j	                  t
        «      S |j                  «       }t        |t        t        t        f«      st        j	                  t
        «      S | j                  ||t        j                  ||«      S )Nr   )Útype_implements_nb_multiply)rs   r'  r\   r   r"   r  rY   r.   rb   rÅ   rÎ   r  rÈ   Úmul)rM   r_   r•   r  r'  Ú	other_vals         r!   Únb_multiply_implz!ConstantVariable.nb_multiply_impl¯  sz   € õ 	Aà×'Ñ'Ô)Ü#×*Ñ*¬>Ó:Ð:Ø×,Ñ,Ó.ˆ	ô ˜)¤c¬5´'Ð%:Ô;Ü#×*Ñ*¬>Ó:Ð:Ø×#Ñ#Ø�”x—|‘|Ð%@À'ó
ð 	
r$   c                óJ  — t        | j                  t        t        f«      st	        d«      ‚|j                  «       }	 t        j                  | j                  |z  «      S # t        t        f$ r4}t        t        |«      |t        |j                  «      ¬«       Y d }~y d }~ww xY w)Nz'Expected str or bytes in sq_repeat_implrx   )r.   r    rr   rq   rJ   rY   r   r"   ÚMemoryErrorrÆ   r   r>   r8   ry   )rM   r_   ÚcountÚnrm   s        r!   Úsq_repeat_implzConstantVariable.sq_repeat_implË  s�   € ô ˜$Ÿ*™*¤s¬E lÔ3Ü Ð!JÓKÐKØ×$Ñ$Ó&ˆð	EÜ#×*Ñ*¨4¯:©:¸©>Ó:Ð:øÜœ]Ð+ò 	EÜ$¤T¨!£W¨b´t¸A¿F¹F³|×DÒDûð	Eús   ½!A ÁB"Á.*BÂB"c                óT   — ddl m} | j                  ||t        j                  ||«      S )Nr   )Útype_implements_nb_and)rs   r1  r  rÈ   Úand_)rM   r_   r•   r  r1  s        r!   Únb_and_implzConstantVariable.nb_and_implÝ  s*   € õ 	<à×#Ñ#Ø�”x—}‘}Ð&<¸gó
ð 	
r$   c                óT   — ddl m} | j                  ||t        j                  ||«      S )Nr   )Útype_implements_nb_xor)rs   r5  r  rÈ   Úxor)rM   r_   r•   r  r5  s        r!   Únb_xor_implzConstantVariable.nb_xor_implí  ó*   € õ 	<à×#Ñ#Ø�”x—|‘|Ð%;¸Wó
ð 	
r$   c                óB   — t         j                  | j                   «      S r   ©r   r"   r    r^   s     r!   Únb_negative_implz!ConstantVariable.nb_negative_implý  ó   € ô  ×&Ñ&¨¯
©
 {Ó3Ð3r$   c                óB   — t         j                  | j                  ­«      S r   r:  r^   s     r!   Únb_positive_implz!ConstantVariable.nb_positive_impl  r<  r$   c                óT   — ddl m} | j                  ||t        j                  ||«      S )Nr   )Útype_implements_nb_add)rs   r@  r  rÈ   Úadd)rM   r_   r•   r  r@  s        r!   Únb_add_implzConstantVariable.nb_add_impl  r8  r$   c                óÊ   — 	 t         j                  t        | j                  «      «      S # t        $ r/}t        t        |t        |j                  «      ¬«       Y d }~y d }~ww xY wrw   )r   r"   Úabsr    rÆ   r   r8   ry   r›   s      r!   Únb_absolute_implz!ConstantVariable.nb_absolute_impl!  sJ   € ð	KÜ#×*Ñ*¬3¨t¯z©z«?Ó;Ð;øÜò 	KÜ$¤]°B¼TÀ!Ç&Á&»\×JÒJûð	Kús   ‚'* ª	A"³%AÁA")r    ÚNoneÚreturnr   )r    rc   rG  r   )r    r   r'   r   rG  r   )r    r   r'   r   rG  rF  )rG  r   )rG  rr   )rG  zLiteral[True])r_   r   rG  r   ©rG  rc   )rf   r   rG  rc   )rG  úlist[VariableTracker])r_   r   rB   r   rG  r   )r_   r   r{   r   rG  r   )r_   r   r|   r   rG  z'tuple[VariableTracker, VariableTracker])r‚   ÚobjectrG  rc   r   )r‚   rJ  r‡   zdict[int, object] | NonerG  rc   )r_   z InstructionTranslatorBase | NonerG  rI  )r_   r   rG  útuple[int, bool])r_   r   r•   r   r–   rr   rG  r   )r_   r   r¨   rr   rG  r   )r_   r   rL   r   )
r_   r   r¨   rr   ry   rI  r'   údict[str, VariableTracker]rG  r   )r_   r   ræ   r   rç   r   rè   rI  ré   rL  rG  r   )r_   r   r¨   rr   rG  r   ©r•   rJ  rG  rc   )r_   r   rG  z
int | None)rG  rJ  )r_   r   rG  r   )r_   r   r•   r   r–   r   r  r   r  rc   rG  r   )F)r_   r   r•   r   r  rc   rG  r   )r_   r   r•   r   r  rc   rG  r   )r_   r   r-  r   rG  r   )FrU   rÞ   Ú__qualname__Ú__doc__rb   rÅ   rr   rq   rc   r>   rÎ   Ú_cpython_typer   Ústaticmethodr"   rH   rQ   rW   rY   r\   r`   rd   rg   ri   Úpropertyr@   ru   r}   r   rI   r…   rŽ   r’   r—   r™   rœ   rŸ   r¢   rª   r¬   r³   rÁ   rå   rï   r	   rñ   rô   rö   rø   rû   rý   rÿ   r  r  r  r  r  r  r  r!  r%  r*  r/  r3  r7  r;  r>  rB  rE  Ú__classcell__©rN   s   @r!   r   r   &   sÇ  ø„ ñð ˜%  e¨T±4¸³:¸wÉÈSË	ÐR€MàØÚ4ó ó à4àØÚ4ó ó à4àØÚAó ó àAàò/1ó ð/1õbó"óTóóó9ó3ó$ó"ð ò-ó ð-ð

Ø+ð

Ø2Að

à	ó

ðHØ+ðHØ2AðHà	óHðVØ+ðVØ4CðVà	0õVð ò2ó ð2ð ó	5ó ð	5ð-Ø2ð-à	ó-ó'ðEØ+ðEØ4CðEØILðEà	óEó8óEó!ó!ðØ+ðØ36ðà	óõ-õ(ðb;à%ðb;ð ðb;ð $ð	b;ð
 +ðb;ð 
õb;ðH2
à%ð2
ð *ð2
ð  ð	2
ð
 $ð2
ð 4ð2
ð 
õ2
óh ð ð9Ø+ð9Ø36ð9à	ò9ó ð9ó
õ"óð
)àð
)ð 
õ
)ð8àð8ð 
ó8ð:àð:ð 
ó:ð1àð1ð ð1ð ð	1ð
 ð1ð ð1ð 
ó1ð< ð	
àð
ð ð
ð ð	
ð
 
ó
ð$ ð	
àð
ð ð
ð ð	
ð
 
ó
ð$ ð	EàðEð ðEð ð	Eð
 
óEð2 ð	EàðEð ðEð ð	Eð
 
óEð2 ð	EàðEð ðEð ð	Eð
 
óEð4 ð	EàðEð ðEð ð	Eð
 
óEð2 ð	
àð
ð ð
ð ð	
ð
 
ó
ð* ð	
àð
ð ð
ð ð	
ð
 
ó
ð( ð	
à%ð
ð ð
ð ð	
ð
 
ó
ð8Eà%ðEð ðEð 
ó	Eð, ð	
àð
ð ð
ð ð	
ð
 
ó
ð( ð	
àð
ð ð
ð ð	
ð
 
ó
ð 4àð4ð 
ó4ð4àð4ð 
ó4ð ð	
àð
ð ð
ð ð	
ð
 
ó
ð KàðKð 
÷Kr$   r   TFc                  ó   — e Zd ZdZdZy)ÚFakeValueKindr‰   r‘   N)rU   rÞ   rN  ÚIDÚHASHr   r$   r!   rV  rV  6  s   „ Ø	€BØ�Dr$   rV  c                  ó¶   ‡ — e Zd ZdZeZdhej                  £Zej                  dœ	 	 	 	 	 	 	 dˆ fd„Z
dd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd	„Zdd
„Zdd„Zˆ xZS )ÚFakeIdVariablea×  A compile-time-only id or hash value that can be used as a dict key but
    cannot be reconstructed across graph breaks.

    When dynamo evaluates ``id(x)`` or ``hash(x)`` on a variable tracker that
    has no corresponding runtime object, we mint a fake integer.  The ``kind``
    field tracks which builtin produced the value so that same-kind comparisons
    (e.g. ``id(a) != id(b)``) can be resolved at compile time while cross-kind
    comparisons graph-break.
    Úkind)r[  c               ó@   •— t        ‰| �  di |¤Ž || _        || _        y )Nr   )rG   rH   r    r[  )rM   r    r[  r'   rN   s       €r!   rH   zFakeIdVariable.__init__N  s#   ø€ ô 	‰ÑÑ"˜6Ò"ØˆŒ
Øˆ�	r$   c                ó   — | j                   S r   r   rP   s    r!   rY   z!FakeIdVariable.as_python_constantU  rR   r$   c                 ó   — y©NFr   rP   s    r!   r\   z!FakeIdVariable.is_python_constantX  s   € Ør$   c                ó   — t         S r   )rb   rP   s    r!   Úpython_typezFakeIdVariable.python_type[  s   € Üˆ
r$   c                ó0   — t        | j                  «      dfS r[   r�   r^   s     r!   r’   zFakeIdVariable.hash_impl^  s   € Ü�D—J‘JÓ Ð%Ð%r$   c                ó‚  — t        |t        «      ri| j                  |j                  k(  rP|dv rL|dk(  r| j                  |j                  k(  n| j                  |j                  k7  }t        j                  |«      S t        dd| j                  › d|› dt        |«      j                  › �ddgt        j                  ¢¬	«       y )
N)Ú__eq__Ú__ne__rd  z0Comparison on compile-time-only id or hash valuezFakeIdVariable(z) ú zYCannot compare a compile-time-only id() or hash() value. The comparison will run eagerly.zbAvoid comparing id() or hash() of objects created inside the compiled region against other values.©Úgb_typeÚcontextÚexplanationÚhints)r.   rZ  r[  r    r   r"   r   r>   rU   r   ÚSUPPORTABLE)rM   r_   r•   r–   r®   s        r!   r—   zFakeIdVariable.richcompare_impla  s¹   € ô �uœnÔ-Ø—	‘	˜UŸZ™ZÒ'ØÐ*Ñ*ð ˜’>ð —‘˜uŸ{™{Ò*à—j‘j E§K¡KÑ/ð ô
 $×*Ñ*¨6Ó2Ð2ÜØFØ% d§j¡j \°°B°4°q¼¸e»×9MÑ9MÐ8NÐOð6ð<ðô #×.Ñ.ðö
	
r$   c                ój   — t        |t        t        f«      r| j                  |j	                  «       k(  S yr_  )r.   rZ  r   r    rY   )rM   r•   s     r!   rô   zFakeIdVariable.is_python_equal{  s-   € Ü�eœnÔ.>Ð?Ô@Ø—:‘: ×!9Ñ!9Ó!;Ñ;Ð;Ør$   c                óJ   — t        dt        | j                  «      ddg¬«       y )Nz Reconstruction of FakeIdVariablezdA fake id produced by id() on a compile-time container cannot be reconstructed across a graph break.z<Avoid using id() on containers in code that may graph-break.rg  )r   rr   r    rí   s     r!   ÚreconstructzFakeIdVariable.reconstruct€  s)   € ÜØ6Ü˜Ÿ
™
“Oð@ð Oðö
	
r$   )r    rb   r[  rV  r'   r   rG  rF  )rG  rb   rH  )rG  r>   )r_   r   rG  rK  )r_   r   r•   r   r–   rr   rG  r   rM  )rî   r   rG  rF  )rU   rÞ   rN  rO  rb   rP  r   Ú_nonvar_fieldsrV  rW  rH   rY   r\   ra  r’   r—   rô   ro  rS  rT  s   @r!   rZ  rZ  ;  s�   ø„ ñð €Mð 	ðà	×	'Ñ	'ð€Nð 4A×3CÑ3CñØðØ#0ðØORðà	õóóóó&ð
Øð
Ø-ð
Ø36ð
à	ó
ó4÷

r$   rZ  )+rO  Ú
__future__r   ÚenumrÈ   Úcollections.abcr   Útypingr   r   r   r   Útyping_extensionsr	   rŠ   Útorch._dynamo.sourcer
   rß   r   r   rØ   r   r   Úutilsr   r   r   r   r   Úbaser   r   Útorch._dynamo.symbolic_convertr   Ú	functionsr   r   r*   r+   r,   ÚEnumrV  rZ  r   r$   r!   ú<module>r|     s™   ðñõ #ã Û Ý $ß 8Ó 8Ý &ã Ý .ç +ß 9÷õ ÷ 4ñ ÝHå/ôHK�ô HKñV *¨$Ó/Ð Ù)¨$Ó/Ð Ù*¨5Ó1Ð ô�D—I‘Iô ô
P
�_õ P
r$   