
    uYf#                        d dl Z d dlZd dlmZ d dlZd dlZej                  dk\  r<ej                  ej                  ej                  ej                  ej                  f   Zn%ej                  ej                  ej                  f   Zdej                  dedej                  fdZded	ej&                  dej(                  eej&                  f   fd
Z G d dej                        Z G d d      Zy)    N)CodeType      instrslinenoreturnc                     t        j                         }| D ]V  }t        |t         j                        r)|j	                         }||_        |j                  |       F|j                  |       X |S N)bcBytecode
isinstanceInstrcopyr   append)r   r   
new_instrsinew_is        Y/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/ddtrace/internal/assembly.pyrelocater      s`    J !a"FFHE!ELe$a !     opcodeargc                     t         j                  dk\  rD| j                         dk(  r
d} d|f}| |fS | j                         dk(  rt        |t              sd|f}| |fS )N)r      LOAD_METHOD	LOAD_ATTRTF)sysversion_infoupperr   tuple)r   r   s     r   transform_instructionr"   *   sd    
7"<<>]* F+C 3; \\^{*:c53I#,C3;r   c            	           e Zd Zd	dededej
                  e   ddfdZd	dej                  eej                  f   dej
                  e   de
j                  fdZy)
	BindOpArgNnamer   r   r	   c                 .    || _         || _        || _        y r   )r%   r   r   )selfr%   r   r   s       r   __init__zBindOpArg.__init__8   s    	r   	bind_argsc                     t        j                  | j                  || j                     ||      S | j                        S Nr   )r   r   r%   r   r   r'   r)   r   s      r   __call__zBindOpArg.__call__=   s6    xx		9TXX#6I[vmmaealalmmr   r   )__name__
__module____qualname__strtOptionalintr(   DictAnyr   r   r.    r   r   r$   r$   6   si    S s AJJsO t 
n!&&aee"4 najjo nY[YaYa nr   r$   c            	          e Zd Z	 d!dej                  e   dej                  e   dej                  e   ddfdZdedefdZdedej                  e   fd	Z	d
edej                  e
j                     fdZdedej                  e
j                     fdZdedej                  e   fdZej                   dk\  r>d
edej                  e
j"                     fdZd
edej                  e
j&                     fdZdedefdZdedej,                  fdZdedej0                  e
j                  eeej,                  f   fdZdedej                  e   fdZd
edej                  ej0                  e
j6                  ef      fdZd
edefdZd"dZ deddfdZ!d#dej                  ejD                  eej,                  f      dej                  e   de
jF                  fdZ$d#dej                  ejD                  eej,                  f      dej                  e   de%fdZ&de
j                  defdZ'd"dZ(dejR                  e
j6                     fd Z*y)$AssemblyNr%   filenamer   r	   c                     i | _         i | _        d | _        t        j                         | _        |xs d| j
                  _        |xs t        | j
                  _        || _	        i | _
        y )Nz
<assembly>)_labels_ref_labels_tbr   r   _instrsr%   __file__r;   _lineno_bind_opargs)r'   r%   r;   r   s       r   r(   zAssembly.__init__B   sX     /124,0{{} 0L ( 4H46r   textc                 B    |j                         st        d|z        |S )Nzinvalid identifier %s)isidentifier
ValueErrorr'   rD   s     r   parse_identzAssembly.parse_identN   s$      "4t;<<r   c                 8    	 t        |      S # t        $ r Y y w xY wr   )r5   rG   rH   s     r   parse_numberzAssembly.parse_numberT   s#    	t9 		s   
 	linec                    |j                  d      sy | j                  |d d       }|| j                  v rt        d|z        | j                  j                  |d       xs t        j                         x}| j                  |<   |S )N:zlabel %s already defined)endswithrI   r=   rG   r>   popr   Label)r'   rL   label_identlabels       r   parse_labelzAssembly.parse_labelZ   s~    }}S!&&tCRy1$,,&7+EFF,0,<,<,@,@d,S,aWYW_W_Waa[)r   c                    |j                  d      sy | j                  |dd        }	 | j                  |   S # t        $ rI 	 | j                  |   cY S # t        $ r* t        j                         x}| j                  |<   |cY cY S w xY ww xY w)N@   )
startswithrI   r=   KeyErrorr>   r   rR   )r'   rD   rS   rT   s       r   parse_label_refzAssembly.parse_label_reff   s    s#&&tABx0	<<,, 	''44 8:
B((5	s-   7 	B	AB	.B B	BB	c                 N    |j                  d      sy | j                  |dd        S )N$rX   )rY   rI   rH   s     r   parse_string_refzAssembly.parse_string_refu   s(    s#QR))r   r   c                    	 |j                  d      ^}}}|dk7  ry | j                  t        d      | j                  |      }|t        d      t	        j
                  |t        |            x}| _        |S # t        $ r Y y w xY w)N   maxsplittryz,cannot start try block while another is openz%invalid label reference for try block)
push_lasti)splitrG   r?   r[   r   TryBeginbool)r'   rL   head	label_reflastirT   tbs          r   parse_try_beginzAssembly.parse_try_begin}   s    *.**a**@'i% u}xx# !OPP((3E} !HIIKK$u+FFBI  s   A; ;	BBc                     |dk7  ry | j                   t        d      t        j                  | j                         }d | _         |S )Ntriedz'cannot end try block while none is open)r?   rG   r   TryEnd)r'   rL   ends      r   parse_try_endzAssembly.parse_try_end   s@    wxx !JKK))DHH%CDHJr   c                 f    |j                         }|t        j                  vrt        d|z        |S )Nzunknown opcode %s)r    disopmaprG   )r'   rD   r   s      r   parse_opcodezAssembly.parse_opcode   s/    "069::r   c                     t        j                  d      }|j                  j                         }t        |d<   t        |||j                        S )NrX   asm)r   	_getframe	f_globalsr   r   evalf_locals)r'   rD   frame_globalss       r   
parse_exprzAssembly.parse_expr   s>    a ??'')D(ENN33r   c                     |st         j                  S | j                  |      xs7 | j                  |      xs$ | j	                  |      xs | j                  |      S r   )r   UNSETr[   r^   rK   r~   rH   s     r   parse_opcode_argzAssembly.parse_opcode_arg   s\    88O   & %$$T*%  &% t$		
r   c                 R    |j                  d      r|j                  d      sy |dd S )N{}rX   rO   )rY   rP   rH   s     r   parse_bind_opcode_argzAssembly.parse_bind_opcode_arg   s(    s#4==+=Abzr   c                 <   |j                  d      ^}}d}|r>|\  }| j                  |      }|'t        | j                  |      || j                        S t        j                  t        | j                  |      | j                  |            d| j                  iS )NrX   ra    r,   r   )	re   r   r$   ru   rB   r   r   r"   r   )r'   rL   r   argsr   bind_args         r   parse_instructionzAssembly.parse_instruction   s    

A
.FS11#6H# !2!26!:HT\\ZZxx"4#4#4V#<d>S>STW>XY
bfbnbn
 	
r   c                 *   t         j                  dk\  rK| j                  |      xs7 | j                  |      xs$ | j	                  |      xs | j                  |      }n$| j                  |      xs | j                  |      }|t        d|z        |S )Nr   zinvalid line %s)r   r   rU   rl   rq   r   rG   )r'   rL   entrys      r   
parse_linezAssembly.parse_line   s    w&  & 0''-0%%d+0 ))$/	  $$T*Jd.D.DT.JE=.566r   c                 j    | j                   r't        ddj                  | j                         z        y )Nzundefined labels: %sz, )r>   rG   joinr'   s    r   	_validatezAssembly._validate   s0    3dii@P@P6QQRR r   rw   c                 @   d |j                         D        D ]t  }|r|j                  d      r| j                  |      }t        |t              r"|| j
                  t        | j                        <   | j                  j                  |       v | j                          y )Nc              3   <   K   | ]  }|j                           y wr   )strip).0_s     r   	<genexpr>z!Assembly.parse.<locals>.<genexpr>   s     91QWWY9s   #)

splitlinesrY   r   r   r$   rC   lenr@   r   r   )r'   rw   rL   r   s       r   parsezAssembly.parse   s}    9(89 	'D4??3/OOD)E%+7<!!#dll"34LL&	' 	r   r)   c                 8   | j                   s$|t        | j                  |      S | j                  S |t        d      t	        j
                  | j                        }| j                   j                         D ]  \  }} |||      ||<    |t        ||      S |S )Nzmissing bind argumentsr,   )rC   r   r@   rG   r   r   items)r'   r)   r   r   r   r   s         r   bindzAssembly.bind   s      !f55<<566 T\\*''--/ 	6FAsIf5F1I	6 ,2+=x'I6Ir   c                 D    | j                  ||      j                         S r+   )r   to_coder-   s      r   compilezAssembly.compile   s    yy6y2::<<r   rT   c                 \    t        fd| j                  j                         D              S )Nc              3   2   K   | ]  \  }}|u s|  y wr   r8   )r   identlrT   s      r   r   z(Assembly._label_ident.<locals>.<genexpr>  s     MheQ!u*EMs   )nextr=   r   )r'   rT   s    `r   _label_identzAssembly._label_ident  s!    M$,,*<*<*>MMMr   c                 F   | j                   D ]  }t        |t        j                        r4t	        d|j
                  d|j                  |j                  nd        Rt        |t              r(t	        d|j
                  dd|j                   d       t        |t        j                        rt	        | j                  |       d       t        |t        j                        st	        d| j                  |j                         d|j                   d	        y )
Nz    z<32r   r   r   rN   ztry @z (lasti=))r@   r   r   r   printr%   r   r$   rR   r   rf   targetrd   )r'   r   s     r   rs   zAssembly.dis  s    \\ 	\E%*UZZ,%)):OUYYUW,XYZE9-UZZ,Buyyk<=E288,**512!45E2;;/d//=>huGWGWFXXYZ[	\r   c                 ,    t        | j                        S r   )iterr@   r   s    r   __iter__zAssembly.__iter__  s    DLL!!r   )NNN)r	   N)NN)+r/   r0   r1   r3   r4   r2   r5   r(   rI   rK   r   rR   rU   r[   r^   r   r   rf   rl   ro   rq   ru   r7   r~   Unionr   r   r   r$   r   
ParsedLiner   r   r   r6   r   r   r   r   r   rs   Iteratorr   r8   r   r   r:   r:   A   s   hl
7JJsO
767jjo
7VWV`V`adVe
7	
7   C 
 


288(< 
C AJJrxx,@ *S *QZZ_ * 7"	 	

2;;0G 	(	c 	ajj.C 	  4s 4quu 4	
S 	
QWWRXXsC5N-O 	
# !**S/ 
c 
ajj9AT9U.V 
s z  S  JajjQUU
);< JQZZX[_ Jhjhshs J&=AFF3:,>!? =PQPZPZ[^P_ =ks =N"(( Ns N	\"!**RXX. "r   r:   )rs   r   typesr   typingr3   bytecoder   r   r   r   rR   rf   ro   r   r   r5   r   r2   r7   Tupler"   r$   r:   r8   r   r   <module>r      s      
    w288R[["))CDJ288+,J	R[[ 	# 	"++ 		# 	AEE 	aggc155j6I 	n nQ" Q"r   