
    iA                    h   S r SSKrSSKrSSKJrJrJr  SSKJr  SSK	J
r
JrJrJr  SSKJrJr  SSKJr  SSKJr  \R*                  " \5      rS	r\r\" 1 S
k5      r\S;   a  SSKJr   " S S\5      r\rO\S;   a  O\ " \5      e\ " S S\!5      5       r" " S S\!5      r#S r$ " S S\!5      r%\ " S S\!5      5       r& " S S\&5      r' " S S\'5      r(\S;   a  \(r)O\S;   a  \'r)O\S:  a  \&r)O\ " \5      e\" S / S!Q5      r* " S" S#\!5      r+\" S$/ S%Q5      r,S& r-S' r. " S( S)\!5      r/ " S* S+\!5      r0g),z)
Implement python 3.8+ bytecode analysis
    N)
namedtupledefaultdictdeque)total_ordering)
UniqueDict	PYVERSIONALL_BINOPS_TO_OPERATORS_lazy_pformat)NEW_BLOCKERSCFGraph)Loc)UnsupportedBytecodeError   >   NOPPRECALL
LOAD_CONST
LOAD_DEREF      r      )Enumc                        \ rS rSrSrSrSrSrg)CALL_INTRINSIC_1_Operand   r      r    N)__name__
__module____qualname____firstlineno__INTRINSIC_STOPITERATION_ERRORUNARY_POSITIVEINTRINSIC_LIST_TO_TUPLE__static_attributes__r       N/var/www/html/trading/venv/lib/python3.13/site-packages/numba/core/byteflow.pyr   r      s    ()%"#r(   r   r   
   r      c                   J    \ rS rSrSr\" 1 Sk5      rS rS rS r	S r
S rS	rg
)	BlockKind*   z?Kinds of block to make related code safer than just `str`.
    >   TRYLOOPWITHEXCEPTFINALLYWITH_FINALLYc                 2    XR                   ;   d   eXl        g N)_members_value)selfvalues     r)   __init__BlockKind.__init__4   s    %%%r(   c                 B    [        [        U 5      U R                  45      $ r9   )hashtyper;   r<   s    r)   __hash__BlockKind.__hash__8   s    T$Z-..r(   c                     [        U[        5      (       a  U R                  UR                  :  $ [        SR	                  [        U5      5      5      eNzcannot compare to {!r}
isinstancer0   r;   	TypeErrorformatrB   r<   others     r)   __lt__BlockKind.__lt__;   s=    eY'';;--4;;DKHIIr(   c                     [        U[        5      (       a  U R                  UR                  :H  $ [        SR	                  [        U5      5      5      erG   rH   rL   s     r)   __eq__BlockKind.__eq__A   s=    eY'';;%,,..4;;DKHIIr(   c                 8    SR                  U R                  5      $ )NzBlockKind({}))rK   r;   rC   s    r)   __repr__BlockKind.__repr__G   s    %%dkk22r(   )r;   N)r    r!   r"   r#   __doc__	frozensetr:   r>   rD   rN   rQ   rT   r'   r   r(   r)   r0   r0   *   s1      H/JJ3r(   r0   c                   t    \ rS rSrSrS rS r\S;   a  S rO\S;   a  S rO\	" \5      eS	 r
S
 rS rS rSrg)FlowK   zaData+Control Flow analysis.

Simulate execution to recover dataflow and controlflow information.
c                 v    [         R                  SUR                  5       5        Xl        [	        5       U l        g )Nzbytecode dump:
%s)_loggerdebugdump	_bytecoder   block_infos)r<   bytecodes     r)   r>   Flow.__init__P   s&    *HMMO<!%<r(   c                    [        U R                  SSSS9n[        U R                  R                  R                  S9nUR
                  R                  U5        [        5       nUR
                  (       Ga  [        R                  SUR
                  5        UR
                  R                  5       nXBR                  ;  Ga#  [        R                  SUR                  5        [        R                  SU5        XCUR                  '    UR                  U5        UR                  5       (       a  OQU R!                  X$5      (       a  O:U R#                  U5      (       a"  U R%                  U5        UR'                  5         OMx  [        R                  SUR(                  5        UR                  R+                  U5        UR-                  5       nUR
                  R/                  U5        UR
                  (       a  GM  U R1                  UR                  5        U R3                  U5        [5        UR                  S	 S
9 H=  n[7        U5      =U R8                  UR                  '   n[        R                  SXF5        M?     g)a  Run a trace over the bytecode over all reachable path.

The trace starts at bytecode offset 0 and gathers stack and control-
flow information by partially interpreting each bytecode.
Each ``State`` instance in the trace corresponds to a basic-block.
The State instances forks when a jump instruction is encountered.
A newly forked state is then added to the list of pending states.
The trace ends when there are no more pending states.
r   r   )ra   pcnstack
blockstack)debug_filenamezpending: %sz	stack: %szstate.pc_initial: %szend state. edges=%sc                     U R                   $ r9   )
pc_initial)xs    r)   <lambda>Flow.run.<locals>.<lambda>   s    1<<r(   )keyzblock_infos %s:
%sN)Stater_   TraceRunnerfunc_idfilenamependingappendr   r\   r]   popleftfinished_stackri   dispatchhas_terminated_run_handle_exception_is_implicit_new_block_guard_with_assplit_new_blockoutgoing_edgesaddget_outgoing_statesextend
_build_cfg_prune_phissortedadapt_state_infosr`   )r<   
firststaterunnerfirst_encounterstate
out_statessis          r)   runFlow.runU   s    DNNq&(*
DNN,B,B,K,KLj)
 %, nnnMM-8NN**,EOO+k5<<84e<49 0 01OOE*++--55fDD!66u== //6!113!  3U5I5IJ##E*"668
%%j15 nnn: 	( FOO1GHE6G6NNDU--.MM/; Ir(   r-   r   r   c                 "   UR                  5       (       dp  UR                  5       (       a[  UR                  5       R                  [        ;  a9  UR                  UR                  5       R                  S9  UR                  U5        gUR                  5         UR                  5       (       d  UR                  5       (       a  [        R                  SUR                  5       UR                  5        UR                  5       nUR                  S5      nU(       a  US   UR                  :X  a  S ng UR!                  SUR                  S9nUR"                  US'   UR$                  US'   UR&                  US	'   UR                  UR                  US
9  gg g )Nrd   Tz3.11 exception %s PC=%sr2   endr   
end_offsetstack_depth
push_lastird   extra_block)in_withhas_active_tryget_instopname_NO_RAISE_OPSforknext_adjust_except_stack
advance_pcis_in_exceptionr\   r]   get_exception_pcget_top_blocktarget
make_blockr   depthlasti)r<   r   r   eheh_topeh_blocks         r)   ry   Flow._run_handle_exception   s=   ==??((**NN$++=@

enn.33
4++E2  " }}5+@+@+B+BMM";"'"5"5"7D,,.B"007F&-299"<#'#(#3#3Eryy#3#I13.24((/13.

eiiX
F# ,Cr(   r+   c                    UR                  5       (       a  UR                  5       R                  [        ;  a  UR	                  UR                  5       R
                  S9  UR                  S5      nUR                  U5        UR                  n0 nXCS   :  a
  XCS   -
  US'   US   n[        S5      [        [        S5      [        0US      US	'   XeS
'   UR                  " SSUS   0UD6  gUR                  5         g )Nr   r2   entry_stacknpophandlerr5   r6   kindnpushr   rd   r   Tr   )r   r   r   r   r   r   r   pop_block_and_abover   r0   _EXCEPT_STACK_OFFSET_FINALLY_POPr   )r<   r   r   tryblkre   kwargsr   s          r)   ry   r      s    $$&&NN$++=@

enn.33
4,,U3))&1**=11%+].C%CF6N +h')=i(,# &/##w )0}%

6fUm6v6  "r(   c                 8   [        5       nU H   nUR                  nUR                  U5        M"     U H=  nUR                   H*  nUR	                  UR                  UR
                  S5        M,     M?     UR                  S5        UR                  5         X l        g )Nr   )	r   ri   add_noder}   add_edgerd   set_entry_pointprocesscfgraph)r<   
all_statesgraphr   bedges         r)   r   Flow._build_cfg   s~    	E  ANN1    E,,u//!< -   	a r(   c                 R  ^^	 [         R                  SR                  SS5      5        U4S jnU	U4S jnU	4S jnU4S jnU" 5       u  nm	[         R                  S[        U5      5        U" 5       u  pxU" U5        U" Xh5        [         R                  S	R                  SS5      5        g )
Nz
Prune PHIs<   -c                     > [        [        5      n [        5       nTR                   H?  n[        UR                  5      n[        UR                  5      nX==   XC-  -  ss'   X-  nMA     X4$ r9   )r   setru   
_used_regs_phis)	used_phisphi_setr   usedphisr   s        r)   get_used_phis_per_state1Flow._prune_phis.<locals>.get_used_phis_per_state   sb    #C(IeG5++,5;;' DK/ 	 )
 %%r(   c                  P  > 0 n [        [        5      nTR                   HD  nUR                  R	                  5        H#  u  p4UT;  a  X U'   X   R                  XB45        M%     MF     [        R                  S[        U 5      5        [        R                  S[        U5      5        X4$ )Nz
defmap: %szphismap: %s)	r   r   ru   _outgoing_phisitemsr~   r\   r]   r
   )defmapphismapr   phirhsr   r   s        r)   find_use_defs'Flow._prune_phis.<locals>.find_use_defs   s    F!#&G % 4 4 : : <HC')&+sL$$c\2	 != ) MM,f(=>MM-w)?@?"r(   c                 z  > [        [        5      n Sn[        [        U R	                  5       5      5       HZ  u  p4[        [        U5      5       H(  u  pVUT;   d  M  X@U   -  nX   R                  XV45        M*     X   nXt-  (       d  MT  XG-  nSnM\     [        R                  S[        U 5      5        U(       d  gM  )zVAn iterative dataflow algorithm to find the definition
(the source) of each PHI node.
TFzchanging phismap: %sN)	r   r   r   listr   r~   r\   r]   r
   )	r   	blacklistchangingr   defsitesr   r   	to_remover   s	           r)   propagate_phi_map+Flow._prune_phis.<locals>.propagate_phi_map   s     $C(I %+D,A%BMC&,T(^&<
'>$4H%N..|< '= !*I ++ -#' &C 4mG6LM r(   c                   > 0 nU R                  5        H  u  p4U H	  nX   X%'   M     M     [        R                  S[        U5      5        [	        [
        5      nU H  nX%    H  u  psXvU   U'   M     M     [        R                  S[        U5      5        TR                   H:  nUR                  R                  5         UR                  R                  Xc   5        M<     g )Nzkeep phismap: %sznew_out: %s)
r   r\   r]   r
   r   dictru   r   clearupdate)	r   r   keepr   used_setr   new_outr   r   s	           r)   apply_changes'Flow._prune_phis.<locals>.apply_changes  s    D#,??#4#C 'DI $ $5 MM,mD.AB!$'G"&)JC*-EN3' #,  MM-w)?@$$**,$$++GN; )r(   zUsed_phis: %szDONE Prune PHIs)r\   r]   centerr
   )
r<   r   r   r   r   r   r   r   r   r   s
    `       @r)   r   Flow._prune_phis   s    l))"c23	&	#	,	<  56	7o}Y'?@'/'"i)'..r378r(   c                     UR                  5       nUR                  U R                  R                  ;   a  gUR                  [
        ;   a  gg)NTF)r   offsetr_   labelsr   r   r<   r   insts      r)   rz   Flow._is_implicit_new_block  s9    ~~;;$..///[[L(r(   c                     UR                  5       nUR                  S;   a7  U R                  UR                     R                  nUS:w  a  Sn[	        U5      egg)zChecks if the next instruction after a SETUP_WITH is something other
than a POP_TOP, if it is something else it'll be some sort of store
which is not supported (this corresponds to `with CTXMGR as VAR(S)`).>   
SETUP_WITHBEFORE_WITHPOP_TOPzGThe 'with (context manager) as (variable):' construct is not supported.N)r   r   r_   r   r   )r<   r   current_instnext_opmsgs        r)   r{   Flow._guard_with_as'  s`     ~~'"??nn\%6%67>>G)#$ /s33	 $ @r(   )r_   r`   r   N)r    r!   r"   r#   rV   r>   r   r   ry   NotImplementedErrorr   r   rz   r{   r'   r   r(   r)   rY   rY   K   sT    (
8<t //	$6 
j	 	#, "),,
K9Z4r(   rY   c                 $    U R                  S5      $ )Nz$null$)
startswith)regs    r)   _is_null_temp_regr   5  s    >>(##r(   c                      \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS r\S;   a  S rS rS rS r\S;   a  S rO\S:  a   \S;   a  S rO\S;   a  S rO\S;   a  S rO\" \5      eS rS rS rS rS rS r\S;   a
  S rS  rS! rO\S";   a  O\" \5      e\S#;   a  \r \r!O\S$;   a  O\" \5      eS% r"S& r#S' r$S( r%S) r&S* r'S+ r(S, r)S- r*S. r+S/ r,S0 r-S1 r.S2 r/S3 r0S4 r1S5 r2\S#;   a  S6 r3O\S$;   a  O\" \5      e\S#;   a  S7 r4O\S$;   a  O\" \5      eS8 r5\5r6\5r7\S#;   a  \5r8\5r9O\S$;   a  O\" \5      eS9 r:\:r;\:r<S: r=S; r>S< r?S= r@S> rAS? rBS@ rCSA rDSB rESC rF\FrGSD rHSE rISF rJ\S#;   a  SG rKO\S$;   a  O\" \5      eSH rL\SI;   a  SJ rMO\S;   a  SK rMO\" \5      eSL rNSM rO\S;   a  SN rPO\SO;   a  SP rPO\S$;   a  O\" \5      eSQ rQSR rRSS rSST rTSU rUSV rVSW rWSX rXSY rYSZ rZS[ r[\SI;   a  S\ r\O\S;   a  S] r\O\" \5      eS^ r]S_ r^S` r_Sa r`Sb raSc rbSd rcSe rd\S;   a  Sf reO\S";   a  O\" \5      e\S;   a  Sg rfO\S";   a  Sh rfO\" \5      eSi rg\S#;   a  Sj rhO\S$;   a  O\" \5      eSk riSl rjSm rkSn rlSo rmSp rnSq roSr rpSs rqSt rrSu rsSv rtSw ruSx rvSy rwSz rxS{ ryS| rzS} r{S~ r|S r}S r~S rS rS rS rS rS r\r\r\r\rS 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\rSS jrS rS rS rS rS rS r\SI;   a  S rO\S;   a  S rO\" \5      e\S#;   a  O\S;   a  S rO\S;   a  S rO\" \5      eS rSrg)ro   i9  zLTrace runner contains the states for the trace and the opcode dispatch.
    c                 L    Xl         [        5       U l        [        5       U l        g r9   )rg   r   rr   r   ru   )r<   rg   s     r)   r>   TraceRunner.__init__<  s    ,wr(   c                 .    [        U R                  U5      $ r9   )r   rg   )r<   linenos     r)   get_debug_locTraceRunner.get_debug_locA  s    4&&//r(   c                    [         S;   ax  UR                  (       af  UR                  (       aU  UR                  S   nUS   nUb*  X1R                  ::  a  UR                  R                  5         OO.UR                  (       a  MU  O[         S;   a  O[	        [         5      eUR                  5       nUR                  S:w  aA  [        R                  SUR                  U5        [        R                  SUR                  5        [        U SR                  UR                  5      S 5      nUb	  U" X5        g S	UR                  -  n[        UU R                  UR                  5      S
9e)Nr   r   r   CACHEzdispatch pc=%s, inst=%szstack %szop_{}z$Use of unsupported opcode (%s) foundloc)r   _blockstackri   popr   r   r   r\   r]   r   rv   getattrrK   r   r  r  )r<   r   topblkblk_endr   fnr   s          r)   rw   TraceRunner.dispatchD  s   33  ''"..r2F$UmG*w:J:J/J))--/ ''' *$%i00~~;;'!MM3UYYEMM*ell3T7>>$++6=>uO84;;FC*3/3/A/A$++/NP Pr(   c                     UR                  S5      nUR                  U5        UR                  n0 nUS   nX5:  a  X5-
  US'   SnUS   (       a  US-  nXdS'   UR                  " S
SUS   0UD6  g	)zW
Adjust stack when entering an exception handler to match expectation
by the bytecode.
r2   r   r      r   r   rd   r   Nr   )r   r   r   r   )r<   r   r   re   r   expected_depthextra_stacks          r)   r    TraceRunner._adjust_except_stack_  s    
 $$U+!!&)""."#4F6N,1K%w

.fUm.v.r(   c                 &    UR                  U5        g r9   rs   r   s      r)   op_NOPTraceRunner.op_NOPs      Tr(   c                 &    UR                  U5        g r9   r  r   s      r)   	op_RESUMETraceRunner.op_RESUMEv  r  r(   c                 &    UR                  U5        g r9   r  r   s      r)   op_CACHETraceRunner.op_CACHEy  r  r(   c                 &    UR                  U5        g r9   r  r   s      r)   
op_PRECALLTraceRunner.op_PRECALL|  r  r(   c                 d    UR                  UR                  5       5        UR                  U5        g r9   )push	make_nullrs   r   s      r)   op_PUSH_NULLTraceRunner.op_PUSH_NULL  s!    

5??$%Tr(   c                 d    UR                  UR                  5       5        UR                  U5        g r9   )r&  	make_temprs   r   s      r)   op_RETURN_GENERATORTraceRunner.op_RETURN_GENERATOR  s#     	

5??$%Tr(   r   c                     [         S:X  d   eUR                  5       nUR                  5       nUR                  5       nUR                  X#XTS9  UR	                  U5        g )Nr   r=   resstrvar)r   r  r+  rs   r&  )r<   r   r   r=   r2  r1  s         r)   op_FORMAT_SIMPLETraceRunner.op_FORMAT_SIMPLE  sN    '''IIKE__&F//#CLLLCJJsOr(   c                    UR                   S:w  a%  Sn[        UU R                  UR                  5      S9eUR	                  5       nUR                  5       nUR                  5       nUR                  X$XeS9  UR                  U5        g)a  
FORMAT_VALUE(flags): flags argument specifies format spec which is
not supported yet. Currently, we just call str() on the value.
Pops a value from stack and pushes results back.
Required for supporting f-strings.
https://docs.python.org/3/library/dis.html#opcode-FORMAT_VALUE
r   z*format spec in f-strings not supported yetr	  r0  N)argr   r  r  r  r+  rs   r&  )r<   r   r   r   r=   r2  r1  s          r)   op_FORMAT_VALUETraceRunner.op_FORMAT_VALUE  su     88q=>C*3/3/A/A$++/NP P		"ooTC?

3r(   c           	      t   UR                   n[        [        [        U5       Vs/ s H  oAR	                  5       PM     sn5      5      nUS:X  a  UR                  5       /nO+[        US-
  5       Vs/ s H  oAR                  5       PM     nnUR                  X%US9  UR                  US   5        gs  snf s  snf )z
BUILD_STRING(count): Concatenates count strings from the stack and
pushes the resulting string onto the stack.
Required for supporting f-strings.
https://docs.python.org/3/library/dis.html#opcode-BUILD_STRING
r   r  )stringstmpsr  Nr6  r   reversedranger  r+  rs   r&  )r<   r   r   count_r:  r;  s          r)   op_BUILD_STRINGTraceRunner.op_BUILD_STRING  s     xeEl Cll CDEA:OO%&D/4UQY/?@/?!OO%/?D@T6

48 !D
 As   B00B5c                 $    UR                  5         g r9   r  r   s      r)   
op_POP_TOPTraceRunner.op_POP_TOP  s    		r(   c                     UR                  5       nUR                  5       nUR                  X$US9  UR                  U5        g )N)valr1  )r+  r  rs   r&  )r<   r   r   r1  toss        r)   
op_TO_BOOLTraceRunner.op_TO_BOOL  s4    //#C))+CLLCL0JJsOr(   r   c                     UR                  5       nUR                  S-	  nUR                  X$US9  UR                  U5        UR                  S-  (       a   UR                  UR	                  5       5        g g Nr  )idxr1  r+  r6  rs   r&  r'  r<   r   r   r1  rN  s        r)   op_LOAD_GLOBALTraceRunner.op_LOAD_GLOBAL  sY    //#C((a-CLLCL0JJsOxx!|

5??,- r(   r-   r   c                     UR                  5       nUR                  S-	  nUR                  X$US9  UR                  S-  (       a  UR                  UR	                  5       5        UR                  U5        g rM  rO  rP  s        r)   rQ  rR    sT    //#C((a-CLLCL0xx!|

5??,-JJsOr(   r   c                 d    UR                  5       nUR                  X#S9  UR                  U5        g Nr1  r+  rs   r&  r<   r   r   r1  s       r)   rQ  rR    s'    //#CLLL'JJsOr(   c                 &    UR                  U5        g r9   r  r   s      r)   op_COPY_FREE_VARSTraceRunner.op_COPY_FREE_VARS  r  r(   c                 &    UR                  U5        g r9   r  r   s      r)   op_MAKE_CELLTraceRunner.op_MAKE_CELL  r  r(   c                 d    UR                  5       nUR                  X#S9  UR                  U5        g rV  rX  rY  s       r)   op_LOAD_DEREFTraceRunner.op_LOAD_DEREF  '    ooT#

3r(   c                     UR                  S5      SUR                   3-   nUR                  U5        UR                  X#S9  g )Nconst.rW  )r+  r6  r&  rs   rY  s       r)   op_LOAD_CONSTTraceRunner.op_LOAD_CONST  s8    oog&1TXXJ7

3T#r(   c                    UR                  5       nUR                  5       n[        S;   aE  UR                  U5        UR                  S-  (       a  UR                  UR                  5       5        Oz[        S;   aE  UR                  S-  (       a  UR                  UR                  5       5        UR                  U5        O+[        S;   a  UR                  U5        O[        [        5      eUR                  X#US9  g )Nr.  r  r   r*   itemr1  )r  r+  r   r&  r6  r'  r   rs   )r<   r   r   rl  r1  s        r)   op_LOAD_ATTRTraceRunner.op_LOAD_ATTR  s    yy{oo
"JJsOxx!|

5??,-*$xx!|

5??,-JJsO,,JJsO%i00T#.r(   c                 8   [         S::  d   e[         S;   a   UR                  U5      nOUR                  U5      nUR                  U5      n	UR                  X)S9  UR                  U	5        g ! [         a    UR                  n[	        UR
                  5      n[	        UR                  5      n[	        UR                  5      nXv-   nSUR                  U-
  s=::  a  U:  d   e   eUR                  5       n	UR                  X)SS9  UR                  U	5         g f = f)Nr   r.  r   T)r1  as_load_derefrW  )r   get_varname
IndexErrorr_   lenco_varnamesco_freevarsco_cellvarsr6  r+  rs   r&  )
r<   r   r   namebcnum_varnamesnum_freevarsnum_cellvarsmax_fast_localr1  s
             r)   op_LOAD_FASTTraceRunner.op_LOAD_FAST  s    G####((.$ $$T*Dood#T#

3)   __"2>>2"2>>2"2>>2!-!<DHH|3DnDDDDDoo'T$?

3s   A- -B)DDc                    UR                   nUS-	  nUS-  nUR                  U5      nUR                  U5      nUR                  U5      nUR                  U5      n	UR                  X(U	S9  UR	                  U5        UR	                  U	5        g )N      )res1res2)r6  get_varname_by_argr+  rs   r&  )
r<   r   r   opargoparg1oparg2name1name2r  r  s
             r)   op_LOAD_FAST_LOAD_FAST"TraceRunner.op_LOAD_FAST_LOAD_FAST"  s    HHEaZFRZF,,V4E,,V4E??5)D??5)DLLtL4JJtJJtr(   c                     UR                   nUS-  nUR                  5       nUR                  U5      nUR                  U5      nUR	                  X%US9  UR                  U5        g )Nr  )store_valueload_res)r6  r  r  r+  rs   r&  )r<   r   r   r  r  r  	load_namer  s           r)   op_STORE_FAST_LOAD_FAST#TraceRunner.op_STORE_FAST_LOAD_FAST.  sY    HHERZF))+K008Iy1HLLLJJJx r(   c                 d    UR                  5       nUR                  5       nUR                  X#US9  g )N)value1value2r  rs   )r<   r   r   r  r  s        r)   op_STORE_FAST_STORE_FAST$TraceRunner.op_STORE_FAST_STORE_FAST8  s(    YY[FYY[FLLVL<r(   r+   r-   r   r   r*   c                 &    UR                  U5        g r9   r  r   s      r)   op_DELETE_FASTTraceRunner.op_DELETE_FASTJ  r  r(   c                 B    UR                  5       nUR                  X#S9  g )N)r   r  )r<   r   r   r   s       r)   op_DELETE_ATTRTraceRunner.op_DELETE_ATTRM  s    T)r(   c                 d    UR                  5       nUR                  5       nUR                  X#US9  g )N)r   r=   r  )r<   r   r   r   r=   s        r)   op_STORE_ATTRTraceRunner.op_STORE_ATTRQ  s(    		T6r(   c                 B    UR                  5       nUR                  X#S9  g N)r=   r  r<   r   r   r=   s       r)   op_STORE_DEREFTraceRunner.op_STORE_DEREFV      		T'r(   c                 B    UR                  5       nUR                  X#S9  g r  r  r  s       r)   op_STORE_FASTTraceRunner.op_STORE_FASTZ  r  r(   c           
         UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  UUUUUUUS9  UR                  U5        g)z
TOS = TOS1[TOS:]
)basestartr1  slicevarindexvarnonevarNr  r+  rs   r&  	r<   r   r   rI  tos1r1  r  r  r  s	            r)   
op_SLICE_1TraceRunner.op_SLICE_1^  s}     iikyy{oo??$??$//# 	 	
 	

3r(   c           
         UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  UUUUUUUS9  UR                  U5        g)z
TOS = TOS1[:TOS]
)r  stopr1  r  r  r  Nr  r  s	            r)   
op_SLICE_2TraceRunner.op_SLICE_2s  s}     iikyy{oo??$??$//# 	 	
 	

3r(   c           
         UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  UUUUUUUS9  UR                  U5        g)z
TOS = TOS2[TOS1:TOS]
)r  r  r  r1  r  r  Nr  )	r<   r   r   rI  r  tos2r1  r  r  s	            r)   
op_SLICE_3TraceRunner.op_SLICE_3  s|     iikyy{yy{oo??$??$ 	 	
 	

3r(   c           	          UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  UUUUUUS9  g)z
TOS[:] = TOS1
)r  r=   r  r  r  Nr  r+  rs   )r<   r   r   rI  r=   r  r  r  s           r)   op_STORE_SLICE_0TraceRunner.op_STORE_SLICE_0  sa     iik		??$??$//# 	 	
r(   c           
          UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  UUUUUUUS9  g)z
TOS1[TOS:] = TOS2
)r  r  r  r=   r  r  Nr  	r<   r   r   rI  r  r=   r  r  r  s	            r)   op_STORE_SLICE_1TraceRunner.op_STORE_SLICE_1  so     iikyy{		??$??$//# 	 	
r(   c           
          UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  UUUUUUUS9  g)z
TOS1[:TOS] = TOS2
)r  r  r=   r  r  r  Nr  r  s	            r)   op_STORE_SLICE_2TraceRunner.op_STORE_SLICE_2  so     iikyy{		??$??$//# 	 	
r(   c           
          UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  UUUUUUUS9  g)z
TOS2[TOS1:TOS] = TOS3
)r  r  r  r=   r  r  Nr  )	r<   r   r   rI  r  r  r=   r  r  s	            r)   op_STORE_SLICE_3TraceRunner.op_STORE_SLICE_3  sn     iikyy{yy{		??$??$ 	 	
r(   c                     UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  X#XEUS9  g)z
del TOS[:]
)r  r  r  r  Nr  )r<   r   r   rI  r  r  r  s          r)   op_DELETE_SLICE_0TraceRunner.op_DELETE_SLICE_0  sL     iik??$??$//#X 	 	
r(   c           	          UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  UUUUUUS9  g)z
del TOS1[TOS:]
)r  r  r  r  r  Nr  r<   r   r   rI  r  r  r  r  s           r)   op_DELETE_SLICE_1TraceRunner.op_DELETE_SLICE_1  sa     iikyy{??$??$//# 	 	
r(   c           	          UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  UUUUUUS9  g)z
del TOS1[:TOS]
)r  r  r  r  r  Nr  r  s           r)   op_DELETE_SLICE_2TraceRunner.op_DELETE_SLICE_2
  sa     iikyy{??$??$//# 	 	
r(   c           	          UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  X%XCUUS9  g)z
del TOS2[TOS1:TOS]
)r  r  r  r  r  Nr  )r<   r   r   rI  r  r  r  r  s           r)   op_DELETE_SLICE_3TraceRunner.op_DELETE_SLICE_3  sX     iikyy{yy{??$??$4H 	 	
r(   c           	         UR                   nUS:X  a'  UR                  5       nUR                  5       nUnUnSnOHUS:X  a7  UR                  5       nUR                  5       nUR                  5       n	U	nUnUnO[        S5      eUR                  5       n
UR                  5       nUR	                  X&XxXS9  UR                  U5        g)z,
slice(TOS1, TOS) or slice(TOS2, TOS1, TOS)
   Nr   unreachable)r  r  stepr1  r  )r6  r  	Exceptionr+  rs   r&  )r<   r   r   argcrI  r  r  r  r  r  r  r1  s               r)   op_BUILD_SLICETraceRunner.op_BUILD_SLICE*  s     xx19))+C99;DEDDQY))+C99;D99;DEDDM**??$ooD 	 	
 	

3r(   c           
      
   UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  X$X5UXS9  UR                  U5        g )N)r  r   	containerr1  r  temp_resr  )	r<   r   r   r   r  r  r  r1  r  s	            r)   op_BINARY_SLICETraceRunner.op_BINARY_SLICEF  so    ))+CIIKE		I(H//#C(HLLsS!   JJsOr(   c           
          UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  X$X5UXS9  g )N)r  r   r  r=   r1  r  r  )	r<   r   r   r   r  r  r=   r  r1  s	            r)   op_STORE_SLICETraceRunner.op_STORE_SLICEX  sa    ))+CIIKE		IIIKE(H//#CLLsu  r(   c                     UR                  5       nUR                  X#S9  UR                  5       nUR                  nUR	                  US9  XE:w  a  UR	                  US9  g g )Npredr   )r  rs   get_jump_targetr   r   )r<   r   r   r  target_inst	next_insts         r)   _op_POP_JUMP_IFTraceRunner._op_POP_JUMP_IFi  s[    yy{T%**,II	 	

i
 #JJ+J& $r(   c                     UR                  5       nUR                  X#S9  UR                  UR                  SS9  UR                  UR	                  5       S9  g )Nr  r  rd   r   r   )get_tosrs   r   r   r  )r<   r   r   r  s       r)   _op_JUMP_IF_OR_POPTraceRunner._op_JUMP_IF_OR_POP  sF    }}T%

diia
(

d**,
-r(   c                 &    U R                  X5        g r9   r  r   s      r)   op_POP_JUMP_FORWARD_IF_NONE'TraceRunner.op_POP_JUMP_FORWARD_IF_NONE      U)r(   c                 &    U R                  X5        g r9   r  r   s      r)   op_POP_JUMP_FORWARD_IF_NOT_NONE+TraceRunner.op_POP_JUMP_FORWARD_IF_NOT_NONE  r  r(   c                 &    U R                  X5        g r9   r  r   s      r)   op_POP_JUMP_BACKWARD_IF_NONE(TraceRunner.op_POP_JUMP_BACKWARD_IF_NONE  r  r(   c                 &    U R                  X5        g r9   r  r   s      r)    op_POP_JUMP_BACKWARD_IF_NOT_NONE,TraceRunner.op_POP_JUMP_BACKWARD_IF_NOT_NONE  r  r(   c                 &    U R                  X5        g r9   r  r   s      r)   op_POP_JUMP_FORWARD_IF_FALSE(TraceRunner.op_POP_JUMP_FORWARD_IF_FALSE  r  r(   c                 &    U R                  X5        g r9   r  r   s      r)   op_POP_JUMP_FORWARD_IF_TRUE'TraceRunner.op_POP_JUMP_FORWARD_IF_TRUE  r  r(   c                 &    U R                  X5        g r9   r  r   s      r)   op_POP_JUMP_BACKWARD_IF_FALSE)TraceRunner.op_POP_JUMP_BACKWARD_IF_FALSE  r  r(   c                 &    U R                  X5        g r9   r  r   s      r)   op_POP_JUMP_BACKWARD_IF_TRUE(TraceRunner.op_POP_JUMP_BACKWARD_IF_TRUE  r  r(   c                 `    UR                  U5        UR                  UR                  5       S9  g Nr   rs   r   r  r   s      r)   op_JUMP_FORWARDTraceRunner.op_JUMP_FORWARD  %    T

d**,
-r(   c                 `    UR                  U5        UR                  UR                  5       S9  g r  r  r   s      r)   op_JUMP_BACKWARDTraceRunner.op_JUMP_BACKWARD  r  r(   c                 `    UR                  U5        UR                  UR                  5       S9  g r  r  r   s      r)   op_JUMP_ABSOLUTETraceRunner.op_JUMP_ABSOLUTE  r  r(   c                     UR                  S5      S   nUR                  X#S9  UR                  5         UR                  US9  g )Nr3   r   r   r   )r   rs   	pop_blockr   )r<   r   r   r   s       r)   op_BREAK_LOOPTraceRunner.op_BREAK_LOOP  s=    !!&)%0T#

c
r(   c                 |    UR                  X!R                  5       UR                  5       S9  UR                  5         g )Nretvalcastval)rs   r  r+  	terminater   s      r)   op_RETURN_VALUETraceRunner.op_RETURN_VALUE  s)    T))+u7HIr(   c                     UR                  S5      nUR                  X#UR                  5       S9  UR                  5         g )Nre  r!  )r+  rs   r$  rY  s       r)   op_RETURN_CONSTTraceRunner.op_RETURN_CONST  s1    //'*CLL5??3DLEOOr(   c                     UR                  5       nUR                  5       nUR                  X#US9  UR                  U5        g N)r=   r1  r  r<   r   r   rH  r1  s        r)   op_YIELD_VALUETraceRunner.op_YIELD_VALUE  4    iikooT#.

3r(   r   c                 ~   UR                   S:X  a;  S nUR                  5       (       a#  [        SU R                  UR                  5      S9eO,UR                   S:X  a  UR                  5       nO[        S5      eUR                  X#S9  UR                  5       (       a  U R                  U5        g UR                  5         g )Nr   4The re-raising of an exception is not yet supported.r	  r  )Multiple argument raise is not supported.exc)
r6  r   r   r  r  r  
ValueErrorrs   r   r$  r<   r   r   r4  s       r)   op_RAISE_VARARGSTraceRunner.op_RAISE_VARARGS  s    xx1} ''))2N ..t{{;  *
 Qiik !LMMLLL'##%%))%0!r(   c                 r   [        UR                  S5      S LUR                  S5      S L/5      nUR                  S:X  a-  S nU(       a#  [        SU R	                  UR
                  5      S9eO,UR                  S:X  a  UR                  5       nO[        S5      eUR                  X$S9  UR                  5         g )	Nr5   r6   r   r1  r	  r  r2  r3  )
anyr   r6  r   r  r  r  r5  rs   r$  )r<   r   r   in_exc_blockr4  s        r)   r7  r8    s    ##H-T9##I.d:  L xx1}2N ..t{{;   
 Qiik !LMMLLL'OOr(   c                     / n[        [        5       H5  nUR                  5       nUR                  U5        UR	                  U5        M7     UR                  X#S9  g )N)temps)r>  r   r+  rs   r&  )r<   r   r   r=  itmps         r)   op_BEGIN_FINALLYTraceRunner.op_BEGIN_FINALLY  sJ    +,A//#CLLJJsO - 	T'r(   c                 L    UR                  5       nUR                  US   5        g )Nr   )r  reset_stackr<   r   r   blks       r)   op_END_FINALLYTraceRunner.op_END_FINALLY  s!    oo#m,-r(   c                 $    UR                  5         g r9   rD  r   s      r)   
op_END_FORTraceRunner.op_END_FOR      IIKr(   rj  c                 D    UR                  5         UR                  5         g r9   rD  r   s      r)   rI  rJ    s    IIKIIKr(   c                 n    UR                   S:w  a%  Sn[        UU R                  UR                  5      S9eg )Nr   zGUnsupported use of a bytecode related to try..finally or a with-contextr	  )r6  r   r  r  )r<   r   r   r   s       r)   op_POP_FINALLYTraceRunner.op_POP_FINALLY  s<    88q=(C*3/3/A/A$++/NP P r(   c                     g r9   r   r   s      r)   op_CALL_FINALLYTraceRunner.op_CALL_FINALLY  s    r(   c                 $    UR                  5         g r9   )r$  r   s      r)   op_WITH_EXCEPT_START TraceRunner.op_WITH_EXCEPT_START  s    r(   c                 &    UR                  U5        g r9   r  r   s      r)   op_WITH_CLEANUP_START!TraceRunner.op_WITH_CLEANUP_START      Tr(   c                 &    UR                  U5        g r9   r  r   s      r)   op_WITH_CLEANUP_FINISH"TraceRunner.op_WITH_CLEANUP_FINISH   rY  r(   c                 ^    UR                  UR                  SUR                  5       S95        g )Nr3   r   r   )
push_blockr   r  r   s      r)   op_SETUP_LOOPTraceRunner.op_SETUP_LOOP$  s2    ((*  	
r(   c                 .   UR                  5       nUR                  5       nUR                  SS9nUR                  U5        UR                  U5        UR                  nUR	                  UR
                  5      nU/nUR                   H0  n	U	R                  UR                  :X  d  M  UR                  U	5        M2     [        S U 5       5      n
UR                  X#XZS9  UR                  UR                  SU
S95        UR                  UR
                  S9  g )Nsetup_with_exitfnprefixc              3   8   #    U  H  oR                   v   M     g 7fr9   r   ).0r   s     r)   	<genexpr>-TraceRunner.op_BEFORE_WITH.<locals>.<genexpr>?  s     -9R&&9s   )contextmanagerexitfnr   r4   r^  r   )r  r+  r&  r_   find_exception_entryr   exception_entriesr   rs   maxr_  r   r   )r<   r   r   cmyieldedrk  rx  ehhead	ehrelatedr   r   s              r)   op_BEFORE_WITHTraceRunner.op_BEFORE_WITH-  s    YY[//#(;<

6

7 __((3H	&&ByyFMM)  $ ' -9--TVE  	
 	

dii
 r(   c                 R   UR                  5       nUR                  5       nUR                  SS9nUR                  X#US9  UR                  U5        UR                  U5        UR	                  UR                  SUR                  5       S95        UR                  UR                  S9  g )Nrc  rd  )rj  rk  r4   r^  r   )	r  r+  rs   r&  r_  r   r  r   r   )r<   r   r   ro  rp  rk  s         r)   op_SETUP_WITHTraceRunner.op_SETUP_WITHK  s    YY[//#(;<TV<

6

7((*  	
 	

dii
 r(   c           
      f    UR                  US SS9nUR                  UUR                  SUSUS9S9  g )NF)r   r   rC  r2   )r   r   rC  r   r   )r   r   )r<   r   r   r   r   handler_blocks         r)   
_setup_tryTraceRunner._setup_try^  sW     (( ) 
 	

((!%	 )  	 	
r(   c                     UR                  5       nUR                  UR                  S5      5        UR                  U5        g )N	exception)r  r&  r+  )r<   r   r   rI  s       r)   op_PUSH_EXC_INFOTraceRunner.op_PUSH_EXC_INFOr  s-    iik

5??;/0

3r(   c                 x    UR                  U5        U R                  SXR                  UR                  5       S9  g )Nr6   )r   r   )rs   rz  r   r  r   s      r)   op_SETUP_FINALLYTraceRunner.op_SETUP_FINALLYw  s3    Tu99$2F2F2H 	 	
r(   c                 $    UR                  5         g r9   rD  r   s      r)   op_POP_EXCEPTTraceRunner.op_POP_EXCEPT~  rK  r(   c                 B   UR                  5       nUS   [        S5      [        S5      1;  a)  [        SUS    3U R                  UR                  5      S9eUR                  5         UR                  5         UR                  5         UR                  UR                  S9  g )Nr   r5   r6   z$POP_EXCEPT got an unexpected block: r	  r   )r  r0   r   r  r  r  r   r   rD  s       r)   r  r    s    //#C6{9X#6	)8L"MM.:3v;-H**4;;7  IIKIIKIIKJJ$))J$r(   c                     UR                  5       nUS   [        S5      :X  a  UR                  USS9  O"US   [        S5      :X  a  UR                  USS9  UR                  UR                  S9  g )Nr   r2   try)r   r4   withr   )r  r0   rs   r   r   rD  s       r)   op_POP_BLOCKTraceRunner.op_POP_BLOCK  sb    oov;)E**LLEL*[If--LLFL+

dii
 r(   c                     UR                  5       nUR                  5       nUR                  5       nUR                  X#XES9  UR                  U5        g )N)indexr   r1  r  )r<   r   r   r  r   r1  s         r)   op_BINARY_SUBSCRTraceRunner.op_BINARY_SUBSCR  s?    		ooTv?

3r(   c                     UR                  5       nUR                  5       nUR                  5       nUR                  X$X5S9  g )N)r   r  r=   r  )r<   r   r   r  r   r=   s         r)   op_STORE_SUBSCRTraceRunner.op_STORE_SUBSCR  s3    				TCr(   c                 d    UR                  5       nUR                  5       nUR                  X$US9  g )N)r   r  r  )r<   r   r   r  r   s        r)   op_DELETE_SUBSCRTraceRunner.op_DELETE_SUBSCR  s(    		T6r(   c           	      0   UR                   n[        [        [        U5       Vs/ s H  oAR	                  5       PM     sn5      5      n[
        S:X  a8  UR	                  5       nUR	                  5       n[        U5      (       d  U/UQnS nOT[
        S:  aJ  UR	                  5       n	UR	                  5       n
[        U
5      (       a  U	nOU
nU	/UQnUR                  5       nUR                  5       nUR                  UWUWUS9  UR                  U5        g s  snf )Nr   funcargskw_namesr1  )r6  r   r=  r>  r  r   r   pop_kw_namesr+  rs   r&  )r<   r   r   nargr@  r  null_or_selfcallabler  callable_or_firstargnull_or_callabler1  s               r)   op_CALLTraceRunner.op_CALL  s    xxH5;?;aiik;?@A 99;Lyy{H$\22$,t,H #(99; $yy{ !122/+,4t4))+HooTthCP

3) @s   Dc                 :    UR                  UR                  5        g r9   )set_kw_namesr6  r   s      r)   op_KW_NAMESTraceRunner.op_KW_NAMES  s    488$r(   c           	         UR                   n[        [        [        U5       Vs/ s H  oAR	                  5       PM     sn5      5      nUR	                  5       nUR                  5       nUR                  X&XWS9  UR                  U5        g s  snf )N)r  r  r1  r<  )r<   r   r   r  r@  r  r  r1  s           r)   op_CALL_FUNCTIONTraceRunner.op_CALL_FUNCTION  si    xxH5;?;aiik;?@Ayy{ooT49

3 @s   B
c           	      @   UR                   nUR                  5       n[        [        [	        U5       Vs/ s H  oQR                  5       PM     sn5      5      nUR                  5       nUR                  5       nUR                  X'XdUS9  UR                  U5        g s  snf )N)r  r  namesr1  )r6  r  r   r=  r>  r+  rs   r&  )	r<   r   r   r  r  r@  r  r  r1  s	            r)   op_CALL_FUNCTION_KWTraceRunner.op_CALL_FUNCTION_KW  sv    xx		H5;?;aiik;?@Ayy{ooT4#F

3 @s   Bc           	         UR                   nUR                  5       n[        [        [	        U5       Vs/ s H  oQR                  5       PM     sn5      5      nUR                  5       nUR                  5       n[        U5      (       d  U/UQnUR                  5       n	UR                  X(XdU	S9  UR                  U	5        g s  snf )Nr  )	r6  r  r   r=  r>  r   r+  rs   r&  )
r<   r   r   r  r  r@  r  null_or_firstargr  r1  s
             r)   
op_CALL_KWTraceRunner.op_CALL_KW  s    88Dyy{HuT{!C{!))+{!CDED$yy{yy{H$%566(040//#CLL4   "JJsO "Ds   C c                    UR                   S-  (       a  UR                  5       nOS nUR                  5       nUR                  5         UR                  5       nUR                  5       nUR                  X%XCUS9  UR	                  U5        g )Nr  r  varargvarkwargr1  )r6  r  r+  rs   r&  r<   r   r   r  r  r  r1  s          r)   op_CALL_FUNCTION_EXTraceRunner.op_CALL_FUNCTION_EX  sk    xx!| 99;YY[FIIK99;D//#CLL   "JJsOr(   c                    UR                   S-  (       a  UR                  5       nOS nUR                  5       nUR                  5       n[        S;   a0  [        UR	                  S5      5      (       a  UR                  5         O[        S;   a  O[        [        5      eUR                  5       nUR                  X%XCUS9  UR                  U5        g )Nr  rS  r   r  )	r6  r  r   r   peekr   r+  rs   r&  r  s          r)   r  r     s    xx!| 99;YY[F99;D..$UZZ]33IIKj())44//#CLL   "JJsOr(   c                 `   [        U5       Vs/ s H  oAR                  5       PM     nnUR                  5         [        U5       Vs/ s H  oAR                  5       PM     nnUR	                  X%US9  U H  nUR                  U5        M     U H  nUR                  U5        M     g s  snf s  snf )N)origduped)r>  r  reverser+  rs   r&  )r<   r   r   r?  r@  r  r  rH  s           r)   	_dup_topxTraceRunner._dup_topx  s    %*5\2\		\2 -2%L9Lq"L9TE2CJJsO CJJsO  3 :s   B&B+c                     [        UR                  5      nU[        R                  :X  a   UR                  X#S9  UR                  5         g U[        R                  :X  aB  UR                  5       nUR                  5       nUR                  X#XgS9  UR                  U5        g U[        R                  :X  aB  UR                  5       nUR                  5       nUR                  X#XS9  UR                  U5        g [        U5      e! [         a5    SUR                   S3nU R                  UR                  5      n[        XES9ef = f)Nzop_CALL_INTRINSIC_1()r	  )operand)r  r=   r1  )r  
const_listr1  )r   r6  rJ   r  r  r   ci1opr$   rs   r$  r%   r  r+  r&  r&   r   )	r<   r   r   r  r   r
  rH  r1  rI  s	            r)   op_CALL_INTRINSIC_1TraceRunner.op_CALL_INTRINSIC_1$  s   =2488<
 %===T3!E000iikoo'T#&  1

3E999iikoo'T(+  6

3)'22/  =,TXXJa8((5.s<<=s   D ?Ec                 x    UR                   nSUs=::  a  S::  d   S5       e   S5       eU R                  XU5        g )Nr  r   zInvalid DUP_TOPX count)r6  r  )r<   r   r   r?  s       r)   op_DUP_TOPXTraceRunner.op_DUP_TOPXG  s:    EQ8 888 88uE*r(   c                 $    U R                  XSS9  g )Nr  r?  r  r   s      r)   
op_DUP_TOPTraceRunner.op_DUP_TOPL      u!,r(   c                 $    U R                  XSS9  g )Nr  r  r  r   s      r)   op_DUP_TOP_TWOTraceRunner.op_DUP_TOP_TWOO  r  r(   c                 X    UR                  UR                  UR                  5      5        g r9   )r&  r  r6  r   s      r)   op_COPYTraceRunner.op_COPYR  s    

5::dhh'(r(   c                 :    UR                  UR                  5        g r9   )swapr6  r   s      r)   op_SWAPTraceRunner.op_SWAPU  s    

488r(   c                     UR                  5       nUR                  5       nUR                  U5        UR                  U5        g r9   r  r&  )r<   r   r   firstseconds        r)   
op_ROT_TWOTraceRunner.op_ROT_TWOX  s0    		

5

6r(   c                     UR                  5       nUR                  5       nUR                  5       nUR                  U5        UR                  U5        UR                  U5        g r9   r  )r<   r   r   r  r  thirds         r)   op_ROT_THREETraceRunner.op_ROT_THREE^  sG    				

5

5

6r(   c                    UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  U5        UR                  U5        UR                  U5        UR                  U5        g r9   r  )r<   r   r   r  r  r  forths          r)   op_ROT_FOURTraceRunner.op_ROT_FOURf  s^    						

5

5

5

6r(   c                    UR                   nUR                  5       n[        U5       Vs/ s H  oQR                  5       PM     nnUR                  5       nUR	                  X$XgS9  [        U5       H  nUR                  U5        M     g s  snf )N)iterablestorestupleobj)r6  r  r>  r+  rs   r=  r&  )	r<   r   r   r?  r  r@  r  r  sts	            r)   op_UNPACK_SEQUENCETraceRunner.op_UNPACK_SEQUENCEp  sn    99;-25\:\//#\:??$TVO6"BJJrN # ;s   B	c           	          UR                   n[        [        [        U5       Vs/ s H  oAR	                  5       PM     sn5      5      nUR                  5       nUR                  X%US9  UR                  U5        g s  snf N)r   r1  r<  )r<   r   r   r?  r@  r   tups          r)   op_BUILD_TUPLETraceRunner.op_BUILD_TUPLEy  ^    XE%LALqyy{LABCooTC0

3 B   A:c           	         [        [        [        UR                  5       Vs/ s H  o1R	                  5       PM     sn5      5      n[        [        U5      S-
  5       Vs/ s H  o1R                  5       PM     nn[        U5      S:H  nU(       a  UR                  5       /nUR                  X$XVS9  UR                  US   5        g s  snf s  snf )Nr  )tuplesr=  	is_assignr  )	r   r=  r>  r6  r  rs  r+  rs   r&  )r<   r   r   r@  r  r=  r  s          r)   _build_tuple_unpackTraceRunner._build_tuple_unpack  s    hU488_E_		_EFG,1#f+/,BC,Bq",BC K1$	__&(ETK

59  FCs   CC
c                 &    U R                  X5        g r9   r  r   s      r)   op_BUILD_TUPLE_UNPACK_WITH_CALL+TraceRunner.op_BUILD_TUPLE_UNPACK_WITH_CALL  s      -r(   c                 &    U R                  X5        g r9   r  r   s      r)   op_BUILD_TUPLE_UNPACK!TraceRunner.op_BUILD_TUPLE_UNPACK  s      -r(   c                     UR                  5       nUR                  5       nUR                  X#US9  UR                  U5        g )N)r  r1  r  )r<   r   r   rI  r1  s        r)   op_LIST_TO_TUPLETraceRunner.op_LIST_TO_TUPLE  s6     iikooTs3

3r(   c           	         UR                  5       n[        [        [        UR                  5       Vs/ s H  oAR                  5       PM     sn5      5      n[        UR                  5       Vs/ s H  oAR                  5       PM     nnUR                  5       nUR                  X#XeUS9  UR                  U5        g s  snf s  snf )N)keyskeytmpsvaluesr1  )r  r   r=  r>  r6  r+  rs   r&  )r<   r   r   r  r@  valsr  r1  s           r)   op_BUILD_CONST_KEY_MAP"TraceRunner.op_BUILD_CONST_KEY_MAP  s    yy{H5?C?aiik?CDE.3DHHo>o??$o>ooTgL

3	 D>s   B;-C c           	          UR                   n[        [        [        U5       Vs/ s H  oAR	                  5       PM     sn5      5      nUR                  5       nUR                  X%US9  UR                  U5        g s  snf r  r<  )r<   r   r   r?  r@  r   lsts          r)   op_BUILD_LISTTraceRunner.op_BUILD_LIST  r  r  c                     UR                  5       nUR                  nUR                  U5      nUR                  5       nUR                  5       nUR	                  X%X6US9  g )N)r   r=   	appendvarr1  r  r6  r  r+  rs   )r<   r   r   r=   r  r   r  r1  s           r)   op_LIST_APPENDTraceRunner.op_LIST_APPEND  T    		E"OO%	ooT 	 	r(   c                     UR                  5       nUR                  nUR                  U5      nUR                  5       nUR                  5       nUR	                  X%X6US9  g )N)r   r=   	extendvarr1  r  )r<   r   r   r=   r  r   r  r1  s           r)   op_LIST_EXTENDTraceRunner.op_LIST_EXTEND  r  r(   c                    UR                  5       nUR                  n/ n[        U5       H4  nUR                  5       UR                  5       pUR	                  X45        M6     UR	                  X%S S S2   XCS9  UR                  U5        g )Nr  )r   sizer1  )r+  r6  r>  r  rs   r&  )	r<   r   r   dctr?  r   r>  vks	            r)   op_BUILD_MAPTraceRunner.op_BUILD_MAP  sp    oouA99;		qLL!   	Ttt5B

3r(   c           	          UR                  5       nUR                  5       nXCpeUR                  nUR                  U5      nUR                  5       n	UR                  5       n
UR	                  X(XVXS9  g )N)r   rm   r=   
setitemvarr1  r  )r<   r   r   TOSTOS1rm   r=   r  r   r#  r1  s              r)   
op_MAP_ADDTraceRunner.op_MAP_ADD  sd    iikyy{UE"__&
ooTc * 	 	5r(   c           	          UR                   n[        [        [        U5       Vs/ s H  oAR	                  5       PM     sn5      5      nUR                  5       nUR                  X%US9  UR                  U5        g s  snf r  r<  )r<   r   r   r?  r@  r   r1  s          r)   op_BUILD_SETTraceRunner.op_BUILD_SET  s^    XE%LALqyy{LABCooTC0

3 Br  c                     UR                  5       nUR                  nUR                  U5      nUR                  5       nUR                  5       nUR	                  X%X6US9  g N)r   r=   	updatevarr1  r  r<   r   r   r=   r  r   r-  r1  s           r)   op_SET_UPDATETraceRunner.op_SET_UPDATE  r  r(   c                     UR                  5       nUR                  nUR                  U5      nUR                  5       nUR                  5       nUR	                  X%X6US9  g r,  r  r.  s           r)   op_DICT_UPDATETraceRunner.op_DICT_UPDATE  r  r(   c                     UR                  5       nUR                  5       nUR                  X#US9  UR                  U5        g r+  r  )r<   r   r   r=   r1  s        r)   op_GET_ITERTraceRunner.op_GET_ITER  s4    		ooTC0

3r(   c                    UR                  5       nUR                  5       nUR                  5       nUR                  5       nUR                  X#XEUS9  UR                  U5        UR	                  5       n[
        S;   a  UR                  US9  O*[
        S;   a  UR                  USS9  O[        [
        5      eUR                  UR                  S9  g )N)iteratorpairindvalr  r   r   r*   r  r  )	r  r+  rs   r&  r  r   r   r   r   )r<   r   r   r8  r9  r:  r  r   s           r)   op_FOR_ITERTraceRunner.op_FOR_ITER  s    ==? " T4 	 	 

6""$** JJ#J,,JJ#AJ&%i00

dii
 r(   c                     g)a   Pops TOS. If TOS was not None, raises an exception. The kind
operand corresponds to the type of generator or coroutine and
determines the error message. The legal kinds are 0 for generator,
1 for coroutine, and 2 for async generator.

New in version 3.10.
Nr   r   s      r)   op_GEN_STARTTraceRunner.op_GEN_START	  s     	r(   c                    [         R                  UR                     S   nUR                  5       nUR                  5       n[        U   R
                  nUR                  SU 3S9nUR                  X#XTUS9  UR                  U5        g )Nr  binop_rd  )oplhsr   r1  )	dis_nb_opsr6  r  r	   r    r+  rs   r&  )r<   r   r   rB  r   rC  op_namer1  s           r)   op_BINARY_OPTraceRunner.op_BINARY_OP  ss    [["1%iikiik)"-66oovgY%7o8Tc<

3r(   c                     UR                  5       nUR                  5       nUR                  X#US9  UR                  U5        g r+  r  r,  s        r)   _unaryopTraceRunner._unaryop  r/  r(   c                     UR                  5       nUR                  5       nUR                  5       nUR                  X$X5S9  UR                  U5        g )N)rC  r   r1  r  )r<   r   r   r   rC  r1  s         r)   	_binaryopTraceRunner._binaryop(  s?    iikiikooT5

3r(   c                 b   [         S;   a  S nO*[         S;   a  UR                  5       nO[        [         5      eUR                  5       nS =n=n=p[         S;   a  UR                  b   eOUR                  S-  (       a  UR                  5       nUR                  S-  (       a  UR                  5       nUR                  S-  (       a  UR                  5       nUR                  S-  (       a  UR                  5       n	UR	                  5       n
UR                  UUUUUUU	U
S9  UR                  U
5        g )	Nr   r   r.     r  r  r  )rw  codeclosureannotations
kwdefaultsdefaultsr1  )r   r  r   r6  r+  rs   r&  )r<   r   r   MAKE_CLOSURErw  rQ  rR  rS  rT  rU  r1  s              r)   op_MAKE_FUNCTIONTraceRunner.op_MAKE_FUNCTIONS  s   33 D*$99;D%i00yy{8<<<+<
#88### xx#~))+xx#~#iikxx#~"YY[
xx#~ 99;oo#! 	 		
 	

3r(   c                    [         S;   d   eUR                  5       nUR                  5       nUR                  S:X  a  UR                  X4S9  OsUR                  S-  (       a  UR                  X4S9  OOUR                  S-  (       a  UR                  X4S9  O+UR                  S:X  a  UR                  X4S	9  O[	        S
5      eUR                  U5        g )Nr.  r  )rU  r  )rT  r  )rS  rP  )rR  r  )r   r  r6  set_function_attributeAssertionErrorr&  )r<   r   r   make_func_stackdatas        r)   op_SET_FUNCTION_ATTRIBUTE%TraceRunner.op_SET_FUNCTION_ATTRIBUTEx  s    K'''))+yy{88s? (((HXX^(((JXX^(((KXX_(((G //

?#r(   c                 $    U R                  XSS9  g )NT)rV  )rW  r   s      r)   op_MAKE_CLOSURETraceRunner.op_MAKE_CLOSURE  s    e=r(   c                 d    UR                  5       nUR                  X#S9  UR                  U5        g rV  rX  rY  s       r)   op_LOAD_CLOSURETraceRunner.op_LOAD_CLOSURE  rc  r(   c                 f    UR                  S5      nUR                  X#S9  UR                  U5        g )Nassertion_errorrW  rX  rY  s       r)   op_LOAD_ASSERTION_ERROR#TraceRunner.op_LOAD_ASSERTION_ERROR  s*    oo/0T#

3r(   c                     UR                  S5      nUR                  5       nUR                  5       nUR                  X#XES9  UR	                  U5        g )N	predicater  rI  r  )r+  r  r  rs   r&  r<   r   r   r  rI  r  s         r)   op_CHECK_EXC_MATCHTraceRunner.op_CHECK_EXC_MATCH  sB    {+iik}}T#9

4r(   c                     UR                  S5      nUR                  5       nUR                  5       nUR                  X#XES9  UR                  UR                  S9  UR                  UR                  5       S9  g )Nrk  rl  r   )r+  r  rs   r   r   r  rm  s         r)   op_JUMP_IF_NOT_EXC_MATCH$TraceRunner.op_JUMP_IF_NOT_EXC_MATCH  sa     {+iikyy{T#9

dii
 

d**,
-r(   c                     UR                  5       nUR                  S:w  a  UR                  5         UR                  X#S9  UR                  5       (       a  U R	                  U5        g UR                  5         g )Nr   r3  )r  r6  rs   r   r   r$  r6  s       r)   
op_RERAISETraceRunner.op_RERAISE  sV    ))+Cxx1}		LLL'##%%))%0!r(   c                 b    UR                  5       nUR                  X#S9  UR                  5         g )Nr3  )r  rs   r$  r6  s       r)   rt  ru    s%    ))+CLLL'OOr(   )r-   c                     UR                  5       nUR                  5       nUR                  U5        UR                  5       nUR	                  X#US9  UR                  U5        g )Nrk  )r  r'  r&  r+  rs   )r<   r   r   rl  extrar1  s         r)   op_LOAD_METHODTraceRunner.op_LOAD_METHOD  sL    99;DOO%EJJu//#CLLcL2JJsOr(   c                 &    U R                  X5        g r9   )rm  r   s      r)   ry  rz    s    e*r(   c                 &    U R                  X5        g r9   )r  r   s      r)   op_CALL_METHODTraceRunner.op_CALL_METHOD  s    e*r(   )rg   ru   rr   N)F)r    r!   r"   r#   rV   r>   r  rw   r   r  r  r   r#  r(  r,  r   r3  r7  rA  rE  rJ  rQ  r   r[  r^  ra  rg  rm  r}  r  r  r  op_LOAD_FAST_CHECKop_LOAD_FAST_AND_CLEARr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  op_POP_JUMP_IF_TRUEop_POP_JUMP_IF_FALSEop_POP_JUMP_IF_NONEop_POP_JUMP_IF_NOT_NONEr  op_JUMP_IF_FALSE_OR_POPop_JUMP_IF_TRUE_OR_POPr  r  r  r  r  r  r  r  r  r  op_JUMP_BACKWARD_NO_INTERRUPTr  r  r%  r(  r-  r7  r@  rF  rI  rN  rQ  rT  rW  r[  r`  rs  rv  rz  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  r   r&  r)  r/  r2  r5  r;  r>  rG  rJ  op_UNARY_NEGATIVEop_UNARY_POSITIVEop_UNARY_NOTop_UNARY_INVERTrM  op_COMPARE_OPop_IS_OPop_CONTAINS_OPop_INPLACE_ADDop_INPLACE_SUBTRACTop_INPLACE_MULTIPLYop_INPLACE_DIVIDEop_INPLACE_TRUE_DIVIDEop_INPLACE_FLOOR_DIVIDEop_INPLACE_MODULOop_INPLACE_POWERop_INPLACE_MATRIX_MULTIPLYop_INPLACE_LSHIFTop_INPLACE_RSHIFTop_INPLACE_ANDop_INPLACE_ORop_INPLACE_XORop_BINARY_ADDop_BINARY_SUBTRACTop_BINARY_MULTIPLYop_BINARY_DIVIDEop_BINARY_TRUE_DIVIDEop_BINARY_FLOOR_DIVIDEop_BINARY_MODULOop_BINARY_POWERop_BINARY_MATRIX_MULTIPLYop_BINARY_LSHIFTop_BINARY_RSHIFTop_BINARY_ANDop_BINARY_ORop_BINARY_XORrW  r^  ra  rd  rh  rn  rq  rt  ry  r}  r'   r   r(   r)   ro   ro   9  s   
0P6/( J	$" J	 
W	J	. 
(	(	 
j	 	
 "),,
$/"6 J
		!	=
 
1	1!),,&&)!-	(	(!),,*7
((***
$
(
(
(

$
$
6 &&	 
(	(!),,&&	 
(	(!),,
' **&&-"1	(	(!),,. 1/********.. %5!. &&	 
(	(!),, //	"* 
j	 	& "),,(. J		j	 	 
(	(!),,P
!<!&
(

 //	 
j	 	% "),,!D7
0% J	 
1	1!),,J	  
1	1	* "),,
 &&	3< 
(	(!),,+
--)..		5!(	 ! LO MHNN##!&'! !*!!NMNM"" %& O )  MLM#J$*>

. //
	" 
j	 	 "),,
 &&	k	!	 
j	 	+ "),,+r(   ro   c                   P   \ rS rSrSrS,S jrS rS rS rS r	S r
\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       rS rS rS rS rS-S jrS rS rS rS rS rS rS rS rS.S jrS r S r!S  r"S! r#S" r$S# r%S$\&4S% jr'S& r(S/S' jr)S( r*S) r+S* r,S+r-g)0_Statei  zState of the trace
    c                    Xl         X l        X l        X0l        / U l        [        U5      U l        [        U5      U l        / U l	        / U l
        / U l        SU l        0 U l        [        5       U l        [!        5       U l        [%        U5       HJ  nXe;   a  U R'                  S5      nOU R'                  S5      nX`R                  U'   U R)                  U5        ML     g)z
Parameters
----------
bytecode : numba.bytecode.ByteCode
    function bytecode
pc : int
    program counter
nstack : int
    stackdepth at entry
blockstack : Sequence[Dict]
    A sequence of dictionary denoting entries on the blockstack.
Fnull$r   N)r_   _pc_initialr   _nstack_initialrv   tuple_blockstack_initialr   r  _temp_registers_insts	_outedges_terminatedr   r   r   r   r   r>  r+  r&  )r<   ra   rd   re   rf   nullvalsr>  r   s           r)   r>   _State.__init__  s     "%#(#4 
+! 
(l%vA}nnW-nnU+JJsOIIcN r(   c                 N    SR                  U R                  U R                  5      $ )Nz&State(pc_initial={} nstack_initial={}))rK   r  r  rC   s    r)   rT   _State.__repr__   s&    7>>d22
 	
r(   c                 2    U R                   U R                  4$ r9   )r  r  rC   s    r)   get_identity_State.get_identity  s      $"6"677r(   c                 4    [        U R                  5       5      $ r9   )rA   r  rC   s    r)   rD   _State.__hash__  s    D%%'((r(   c                 D    U R                  5       UR                  5       :  $ r9   r  rL   s     r)   rN   _State.__lt__  s      "U%7%7%999r(   c                 D    U R                  5       UR                  5       :H  $ r9   r  rL   s     r)   rQ   _State.__eq__  s      "e&8&8&:::r(   c                     U R                   $ )zMThe starting bytecode offset of this State.
The PC given to the constructor.
)r  rC   s    r)   ri   _State.pc_initial  s    
 r(   c                     U R                   $ )zYThe list of instructions information as a 2-tuple of
``(pc : int, register_map : Dict)``
)r  rC   s    r)   instructions_State.instructions  s    
 {{r(   c                     U R                   $ )zAThe list of outgoing edges.

Returns
-------
edges : List[State]
)r  rC   s    r)   r}   _State.outgoing_edges  s     ~~r(   c                     U R                   $ )zsThe dictionary of outgoing phi nodes.

The keys are the name of the PHI nodes.
The values are the outgoing states.
)r   rC   s    r)   outgoing_phis_State.outgoing_phis)  s     """r(   c                     U R                   $ )z6A copy of the initial state of the blockstack
        )r  rC   s    r)   blockstack_initial_State.blockstack_initial2  s     '''r(   c                 ,    [        U R                  5      $ )z9The current size of the stack

Returns
-------
res : int
)rs  rv   rC   s    r)   r   _State.stack_depth8  s     4;;r(   c                 h    [        U R                  5       H  nUS   [        S5      :X  d  M  Us  $    g)z&Find the initial *try* block.
        r   r2   N)r=  r  r0   )r<   rE  s     r)   find_initial_try_block_State.find_initial_try_blockB  s/     D445C6{i..
 6r(   c                     U R                   $ r9   r  rC   s    r)   rx   _State.has_terminatedI  s    r(   c                 4    U R                   U R                     $ r9   )r_   r   rC   s    r)   r   _State.get_instL  s    ~~dhh''r(   c                 F    U R                  5       nUR                  U l        g r9   )r   r   r   r<   r   s     r)   r   _State.advance_pcO  s    }}99r(   c                 R   U(       dV  SR                  UU R                  U R                  5       R                  R	                  5       [        U R                  5      S9nO.SR                  UU R                  [        U R                  5      S9nU R                  R                  U5        U$ )Nz"${prefix}{offset}{opname}.{tempct})re  r   r   tempctz${prefix}{offset}.{tempct})re  r   r  )rK   r   r   r   lowerrs  r  rs   )r<   re  rw  s      r)   r+  _State.make_tempS  s    7>>xx}}--3354//0	 ? D 066xx4//0 7 D 	##D)r(   c                     U R                   R                  UR                  U45        U =R                  [	        [        UR                  5       5      5      -  sl        g)zAppend new instN)r  rs   r   r   r   _flatten_inst_regsr	  )r<   r   r   s      r)   rs   _State.appende  s<    DKK0131&--/BCCr(   c                 $    U R                  S5      $ )Nr  )r  rC   s    r)   r  _State.get_tosj  s    yy|r(   c                 "    U R                   U*    $ )z-Return the k'th element on the stack
        rv   )r<   r  s     r)   r  _State.peekm  s     {{A2r(   c                 :    U R                   R                  U5        g)zPush to stackN)rv   rs   )r<   rl  s     r)   r&  _State.pushr  s    4 r(   c                 6    U R                   R                  5       $ )zPop the stack)rv   r  rC   s    r)   r  
_State.popv  s    {{  r(   c                 >    U R                   nX!*    US   sUS'   X!* '   g)zSwap stack[idx] with the tosr  Nr  )r<   rN  ss      r)   r  _State.swapz  s&    KK4!B%"qwr(   c                 J    SU;   d   eU R                   R                  U5        g)z#Push a block to blockstack
        r   N)r  rs   )r<   synblks     r)   r_  _State.push_block  s&     &&&'r(   c                 N    U R                   SU U R                   US sU l         nU$ )zFReset the stack to the given stack depth.
Returning the popped items.
Nr  )r<   r   poppeds      r)   rC  _State.reset_stack  s-     #kk&514;;uv3FVr(   Nc                     [        U5      U[        U R                  5      S.nU(       a  [        U R                  5      US'   OSUS'   XES'   U$ )zMake a new block
        )r   r   r   r   Nr   )r0   rs  rv   )r<   r   r   rC  r   ds         r)   r   _State.make_block  sO     dOt{{+

 "4;;/Am#Am)r(   c                 b    U R                   R                  5       nU R                  US   5        U$ )z)Pop a block and unwind the stack
        r   )r  r  rC  r<   r   s     r)   r  _State.pop_block  s0       "=)*r(   c                     U R                   R                  U5      nSUs=::  a  [        U R                   5      :  d   e   eU R                   SU U l         g)zSFind *blk* in the blockstack and remove it and all blocks above it
from the stack.
r   N)r  r  rs  )r<   rE  rN  s      r)   r   _State.pop_block_and_above  sS     $$S)C/#d..//////++DS1r(   c                 l    [        U5      n[        U R                  5       H  nUS   U:X  d  M  Us  $    gz1Find the first block that matches *kind*
        r   Nr0   r=  r  )r<   r   bss      r)   r   _State.get_top_block  s3     4++,B&zT!	 -r(   c                     U Vs1 s H  n[        U5      iM     nn[        U R                  5       H  nUS   U;   d  M  Us  $    gs  snf r  r  )r<   kindsr   r  s       r)   get_top_block_either_State.get_top_block_either  sG     .33UT4U34++,B&zU"	 - 4s   Ac                 (    U R                  S5      SL$ )zGReturns a boolean indicating if the top-block is a *try* block
        r2   N)r   rC   s    r)   r   _State.has_active_try  s     !!%(44r(   c                 8    U R                  UR                  5      $ )zBGet referenced variable name from the instruction's oparg
        )r  r6  r  s     r)   rq  _State.get_varname  s     &&txx00r(   r  c                 4    U R                   R                  U   $ )z4Get referenced variable name from the oparg
        )r_   rt  )r<   r  s     r)   r  _State.get_varname_by_arg  s     ~~))%00r(   c                     SU l         g)z!Mark block as terminated
        TNr  rC   s    r)   r$  _State.terminate  s      r(   c           
         [        U R                  5      nU(       aB  SUs=::  a  [        U R                  5      ::  d   e   e[        U R                  5      U-
  nUSU nU(       a9  SU::  d   e[        U5       H"  nUR	                  U R                  5       5        M$     [        U R                  5      n[        S;   aJ  U(       aB  US   n	U	R                  S5      =(       d    U	S   n
X:  a  UR                  5         OO$U(       a  MB  O[        S;   a  O[        [        5      eU(       a  UR	                  U5        U R                  R	                  [        U[        U5      U[        U5      S95        U R                  5         g)	zFork the state
        r   Nr   r  r   r   r   )rd   stackr   rf   )r   rv   rs  r>  rs   r+  r  r   getr  r   r  Edger  r$  )r<   rd   r   r   r   r  re   r>  rf   topr   s              r)   r   _State.fork  s>    T[[!0DKK 000000%,F'6NE::5\T^^-. " $**+
33 nggl+9s5z9NN$ * *$%i00k*duUZ(
 	 	r(   c                 6    U R                  U R                  S9  g)zSplit the state
        r   N)r   r   rC   s    r)   r|   _State.split_new_block  s     			TXX	r(   c                    U R                   (       a   e/ nU R                   H  n[        U R                  UR                  [        UR                  5      UR                  [        UR                  5       VVs/ s H  u  p4[        U5      (       d  M  UPM     snnS9nUR                  U5        UR                  R                  5        H!  u  pcUR                  U   U R                   U'   M#     M     U$ s  snnf )z+Get states for each outgoing edges
        )ra   rd   re   rf   r  )r   r  rn   r_   rd   rs  r  rf   	enumerater   rs   r   r   )r<   retr   r>  r  r   r   s          r)   r   _State.get_outgoing_states  s     &&&&NND4>>dgg!$TZZT__2;DJJ2G $=2G$!'8'; %&2G $=>E JJu++++-+/::a=##C( . # 
$=s   7C3C3c           	          U R                    Vs0 s H1  nUR                  [        UR                  UR                  * S 5      _M3     sn$ s  snf )zf
Returns
-------
Dict[int, int]
    where keys are the PC
    values are the edge-pushed stack values
N)r  rd   r  r  r   )r<   r   s     r)   get_outgoing_edgepushed_State.get_outgoing_edgepushed	  sL     !NN,*D tzz4::+,788*, 	, ,s   8A
)r  r  r_   r  r  r  r   r   r  r   rv   r  r  r   )r   ) )TN)r   r   N).r    r!   r"   r#   rV   r>   rT   r  rD   rN   rQ   propertyri   r  r}   r  r  r   r  rx   r   r   r+  rs   r  r  r&  r  r  r_  rC  r   r  r   r   r  r   rq  intr  r$  r   r|   r   r  r'   r   r(   r)   r  r    s)   !F

8):;         # # ( (
     ($D

!!(
(25
1
1 1
 
#J
"
,r(   r  c                   L   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	rU =r$ )

StatePy311i  c                 4   > [         TU ]  " U0 UD6  S U l        g r9   )superr>   	_kw_namesr<   r  r   	__class__s      r)   r>   StatePy311.__init__  s    $)&)r(   c                 ,    U R                   nS U l         U$ r9   r'  )r<   outs     r)   r  StatePy311.pop_kw_names  s    nn
r(   c                 .    U R                   b   eXl         g r9   r,  )r<   rH  s     r)   r  StatePy311.set_kw_names   s    ~~%%%r(   c                 T    U R                   nUR                  U R                  5      S L$ r9   r_   rl  r   r<   rx  s     r)   r   StatePy311.is_in_exception$  s%    ^^&&txx0<<r(   c                 P    U R                   nUR                  U R                  5      $ r9   r2  r3  s     r)   r   StatePy311.get_exception(  s     ^^&&txx00r(   c                 R    U R                    H  nUS   [        S5      :X  d  M    g   g )Nr   r4   T)r  r0   )r<   ents     r)   r   StatePy311.in_with,  s&    ++C6{i// ,r(   c                      U R                  SS9$ )Nr  rd  )r+  rC   s    r)   r'  StatePy311.make_null1  s    ~~W~--r(   r,  )r    r!   r"   r#   r>   r  r  r   r   r   r'  r'   __classcell__r)  s   @r)   r$  r$    s+    
=1
. .r(   r$  c                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )
StatePy313i5  c                 N   > [         TU ]  " U0 UD6  [        [        5      U l        g r9   )r&  r>   r   r   _make_func_attrsr(  s      r)   r>   StatePy313.__init__6  s"    $)&) +D 1r(   c                 @    U R                   U   R                  U5        g r9   )rA  r   )r<   make_func_resr   s      r)   rZ  !StatePy313.set_function_attribute:  s    m,33F;r(   c                      U R                   U   $ r9   rA  )r<   rD  s     r)   get_function_attributes"StatePy313.get_function_attributes=  s    $$]33r(   rG  )	r    r!   r"   r#   r>   rZ  rH  r'   r<  r=  s   @r)   r?  r?  5  s    2<4 4r(   r?  r.  rS  r-   r  )rd   r  rf   r   c                   .    \ rS rSrSrS r\S 5       rSrg)AdaptDFAiN  z<Adapt Flow to the old DFA class expected by Interpreter
    c                     Xl         g r9   _flow)r<   flows     r)   r>   AdaptDFA.__init__Q  s    
r(   c                 .    U R                   R                  $ r9   )rN  r`   rC   s    r)   infosAdaptDFA.infosT  s    zz%%%r(   rM  N)	r    r!   r"   r#   rV   r>   r!  rR  r'   r   r(   r)   rK  rK  N  s      & &r(   rK  AdaptBlockInfoinstsr  rf   active_try_blockoutgoing_edgepushedc                 <  ^  U 4S jn[         S;   a   [        [        UT R                  5      5      nO/[         S;   a  [        T R                  5      nO[	        [         5      e[        UT R                  T R                  T R                  5       T R                  5       S9$ )Nc                    > U u  pTR                   U   nUR                  S:X  a#  UR                  TR                  US   5      5        X4$ )NMAKE_FUNCTIONr1  )r_   r   r   rH  )	inst_pairr   r]  r   r   s       r)   process_function_attributes6adapt_state_infos.<locals>.process_function_attributesa  sG     v&;;/)KK55d5kBC|r(   r.  r  rU  )
r   r  mapr  r   rT  r  r  r  r  )r   r]  rV  s   `  r)   r   r   `  s     Kc5u7I7IJK	1	1e(()!),,))++557!99; r(   c              #      #    U  HQ  n[        U[        5      (       a  Uv   M  [        U[        [        45      (       d  M;  [	        U5       H  nUv   M	     MS     g7f)z<Flatten an iterable of registers used in an instruction
    N)rI   strr  r   r  )r  rl  rj   s      r)   r  r  v  sH      dC  Judm,,'- .	 s   :A Ac                   Z    \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	S r
S rS	rg
)AdaptCFAi  z<Adapt Flow to the old CFA class expected by Interpreter
    c                    Xl         0 U l        UR                  R                  5        H  u  p#[	        X25      U R                  U'   M     U R                   R
                  R                  5       nUR
                  nUR                  5       n[        5       nU R                  R                  5        H,  nUR                  U5      (       d  M  UR                  U5        M.     XF-
  U l        g r9   )rN  _blocksr`   r   AdaptCFBlockr   backboner   blocksr  in_loopsr~   	_backbone)r<   rO  r   	blockinforg  r   inloopblocksr   s           r)   r>   AdaptCFA.__init__  s    
!%!1!1!7!7!9F#/	#BDLL  ":::%%..0>># u!!#A~~a    # $ "0r(   c                 .    U R                   R                  $ r9   )rN  r   rC   s    r)   r   AdaptCFA.graph  s    zz!!!r(   c                     U R                   $ r9   )rj  rC   s    r)   rg  AdaptCFA.backbone  s    ~~r(   c                     U R                   $ r9   )re  rC   s    r)   rh  AdaptCFA.blocks  s    ||r(   c              #   f   #    [        U R                  5       H  nU R                  U   v   M     g 7fr9   )r   rh  r  s     r)   iterliveblocksAdaptCFA.iterliveblocks  s&     $A++a.  %s   /1c                 L    U R                   R                  R                  5         g r9   )rN  r   r^   rC   s    r)   r^   AdaptCFA.dump  s    

!r(   )rj  re  rN  N)r    r!   r"   r#   rV   r>   r!  r   rg  rh  ru  r^   r'   r   r(   r)   rc  rc    sR    1& " "    !"r(   rc  c                       \ rS rSrS rSrg)rf  i  c                 R    X l         [        S UR                   5       5      U l        g )Nc              3   *   #    U  H	  u  pUv   M     g 7fr9   r   )rg  r>  r@  s      r)   rh  (AdaptCFBlock.__init__.<locals>.<genexpr>  s     8!s   )r   r  rV  body)r<   rk  r   s      r)   r>   AdaptCFBlock.__init__  s    8	88	r(   )r}  r   N)r    r!   r"   r#   r>   r'   r   r(   r)   rf  rf    s    9r(   rf  )1rV   rD  loggingcollectionsr   r   r   	functoolsr   numba.core.utilsr   r   r	   r
   numba.core.controlflowr   r   numba.core.irr   numba.core.errorsr   	getLoggerr    r\   r   r   rW   r   enumr   r   r  r   objectr0   rY   r   ro   r  r$  r?  rn   r  rK  rT  r   r  rc  rf  r   r(   r)   <module>r     s     6 6 $- - 8  6 

H
% #   ""$4 $ %E$$
i
(( 3 3 3@g46 g4T$]+& ]+@- y,V y, y,x	. .>	4 	4 E$$EE
i
(( &@A&v & ,'"v '"T96 9r(   