python (3.12.0)

(root)/
lib/
python3.12/
__pycache__/
dis.cpython-312.pyc

ˑe8vdZddlZddlZddlZddlZddlddlmZmZm	Z	m
Z
mZmZm
Z
mZgdezZ[ejej ej"eeefZedZdedfed	fed
ffZedZdZed
ZedZedZ edZ!edZ"edZ#edZ$edZ%edZ&edZ'edZ(edZ)e*e+Z,e-eZ.e/e,Dcgc]\}}|jads|c}}Z1e2e1eD]\Z3Z4e4e,e3<e3e.e4<e
jjDcic]\}}|D]}||c}}}Z6dZ7deddddddZ8dedddddZ9d d!d"d#d$d%d&d'd(d)d*
Z:d+Z;Gd,d-Z<e<Z=d.Z>d/Z?d0Z@d1ZAd2ZBdd3d4ZCejd5gd6dgd7z8ZEejd9gd:dg8ZFd;eFjV_d<eFj
_d=eFj_d>eFj_d?eFj_d@eFj_dAeFj_dBeFj_dCeFj_ejdDdEZNdFZOdGZPGdHdIeFZQddddJdKZRdLZSdMZTdNZUdOZVdPZWdQZX					dfdSZYdgdddddTZZddddddUZ[		dhdddRdddVdWZ\dXZ]eZZ^dYZ_dZe_d[z
zZ`d\Zad]Zbd^Zcd_Zdd`ZeGdadbZfdcZgehddk(regyycc}}wcc}}}w)iz0Disassembler of Python byte code into mnemonics.N)*)__all__
_cache_format_inline_cache_entries_nb_ops_intrinsic_1_descs_intrinsic_2_descs_specializations_specialized_instructions)	code_infodisdisassembledistbdiscofindlinestarts
findlabels	show_codeget_instructionsInstructionBytecodeFORMAT_VALUE)Nstrreprascii
MAKE_FUNCTION)defaults
kwdefaultsannotationsclosure
LOAD_CONSTRETURN_CONSTLOAD_GLOBAL	BINARY_OP
JUMP_BACKWARDFOR_ITERSEND	LOAD_ATTRLOAD_SUPER_ATTRCALL_INTRINSIC_1CALL_INTRINSIC_2CACHE<cV	t||dS#t$rYnwxYwt||dS)zAttempts to compile the given source, first as an expression and
       then as a statement if the first approach fails.

       Utility function to accept strings in functions that otherwise
       expect code objects
    evalexec)compileSyntaxError)sourcenames  7/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/dis.py_try_compiler6@s7
vtV,,

64((s	Ffiledepthshow_cachesadaptivecZ|t|||yt|dr|j}t|dr
|j}nJt|dr
|j}n1t|dr
|j
}nt|dr|j}t|drlt|jj}|D]C\}}t|tstd	|z|
	t|||||t|
Eyt|d
rt|||||yt|t t"frt%|||yt|t&rt)|||||ytdt+|j,z#t$r}td||
Yd}~d}~wwxYw)a0Disassemble classes, methods, functions, and other compiled objects.

    With no argument, disassemble the last traceback.

    Compiled objects currently include generator objects, async generator
    objects, and coroutine objects, all of which store their code object
    in a special attribute.
    Nr8r:r;__func____code__gi_codeag_codecr_code__dict__zDisassembly of %s:r8r7zSorry:co_code)r8r:(don't know how to disassemble %s objects)rhasattrr>r?r@rArBsortedrCitems
isinstance
_have_codeprintr
	TypeError_disassemble_recursivebytes	bytearray_disassemble_bytesr_disassemble_strtype__name__)	xr8r9r:r;rIr4x1msgs	         r5r
r
Ms{	y
4[8Dq*
JJq*
JJ	I	
II	I	
II	I	
IIq*qzz'')*	!HD""j)*T1=4UV^_4 	!
I	qt5k\de	Ay)	*14[A	As	UV^_BQ(()*	*!4(Cd334s&F			F*F%%F*r=cX|a	ttdrtjj}ntj}|jr|j}|jrt|jj|j|||y#t
$r
t
ddwxYw)z2Disassemble a traceback (default: last traceback).Nlast_excz no last traceback to disassembler=)rGsysrY
__traceback__last_tracebackAttributeErrorRuntimeErrortb_nextrtb_framef_codetb_lasti)tbr8r:r;s    r5rrzs	z	MsJ'\\//''jjrzz"bjj""BKKd^fg	MABL	Ms;BB)	OPTIMIZED	NEWLOCALSVARARGSVARKEYWORDSNESTED	GENERATORNOFREE	COROUTINEITERABLE_COROUTINEASYNC_GENERATOR)
 @ic	g}tdD]D}d|z}||zs|jtj|t	|||z}|rDn|jt	|dj|S)z+Return pretty representation of code flags.rsrn, )rangeappendCOMPILER_FLAG_NAMESgethexjoin)flagsnamesiflags    r5pretty_flagsrsxE
2Y!!t4<LL,00s4yABTME
!	SZ 99UceZdZdZy)_Unknowncy)Nz	<unknown>selfs r5__repr__z_Unknown.__repr__srN)rT
__module____qualname__rrrr5rrsrrct|dr|j}t|dr
|j}nJt|dr
|j}n1t|dr
|j}nt|dr|j
}t
|trt|d}t|dr|Stdt|jz)	zDHelper to handle methods, compiled or raw code objects, and strings.r>r?r@rArBz
<disassembly>rErF)rGr>r?r@rArBrJrr6rMrSrTrUs r5_get_code_objectrsq*
JJq*
JJ	I	
II	I	
II	I	
II!SO,q)
>G$$%&&rcHt|}|tvrtt|S|SN)_all_opnamedeoptmap
_all_opmap)opr4s  r5_deoptoprs&r?D)-)9:htn%ArArc6|r|jS|jSr)_co_code_adaptiverE)cor;s  r5_get_code_arrayrs#+2;;rc*tt|S)z1Formatted details of methods, functions, or code.)_format_code_inforrs r5rrs-a011rcg}|jd|jz|jd|jz|jd|jz|jd|jz|jd|j
z|jd|jz|jd|jz|jdt|jz|jr?|jd	t|jD]}|jd
|z|jr?|jdt|jD]}|jd|z|jr?|jd
t|jD]}|jd|z|jr?|jdt|jD]}|jd|z|jr?|jdt|jD]}|jd|zdj!|S)NzName:              %szFilename:          %szArgument count:    %szPositional-only arguments: %szKw-only arguments: %szNumber of locals:  %szStack size:        %szFlags:             %sz
Constants:z%4d: %rzNames:z%4d: %szVariable names:zFree variables:zCell variables:
)rzco_nameco_filenameco_argcountco_posonlyargcountco_kwonlyargcount
co_nlocalsco_stacksizerco_flags	co_consts	enumerateco_namesco_varnamesco_freevarsco_cellvarsr~)rlinesi_ci_ns    r5rrsE	LL(2::56	LL(2>>9:	LL(2>>9:	LL023H3HHI	LL(2+?+??@	LL(2==89	LL(2??:;	LL(<+DDE	||
\"R\\*	*CLLS)	*	{{
XR[[)	*CLLS)	*	~~
&'R^^,	*CLLS)	*	~~
&'R^^,	*CLLS)	*	~~
&'R^^,	*CLLS)	*99UrrDc0tt||y)z}Print details of methods, functions, or code to *file*.

    If *file* is not provided, the output is printed on stdout.
    rDN)rLr)rr8s  r5rrs

)B-d#r	Positions)lineno
end_lineno
col_offsetend_col_offsetrp)r_Instruction)	opnameopcodeargargvalargreproffsetstarts_lineis_jump_target	positionsz!Human readable name for operationzNumeric code for operationz6Numeric argument to operation (if any), otherwise Nonez4Resolved arg value (if known), otherwise same as argz0Human readable description of operation argumentz1Start index of operation within bytecode sequencez4Line started by this opcode (if any), otherwise Nonez1True if other code jumps to here, otherwise FalsezPdis.Positions object holding the span of source code covered by this instruction_ExceptionTableEntryzstart end target depth lasticeZdZdZddZy)raDetails for a bytecode operation

       Defined fields:
         opname - human readable name for operation
         opcode - numeric code for operation
         arg - numeric argument to operation (if any), otherwise None
         argval - resolved arg value (if known), otherwise same as arg
         argrepr - human readable description of operation argument
         offset - start index of operation within bytecode sequence
         starts_line - line started by this opcode (if any), otherwise None
         is_jump_target - True if other code jumps to here, otherwise False
         positions - Optional dis.Positions object holding the span of source code
                     covered by this instruction
    cg}|rD|j$d|z}|j||jzn|jd|z|r|jdn|jd|jr|jdn|jd|jt|jj||j|jjt|jd|jt|jjt|jr!|jd|jzdzdj|jS)	a%Format instruction details for inclusion in disassembly output

        *lineno_width* sets the width of the line number field (0 omits it)
        *mark_as_current* inserts a '-->' marker arrow as part of the line
        *offset_width* sets the width of the instruction offset field
        z%%%dd z-->z   z>>  ())rrzrrrrjustrljust
_OPNAME_WIDTHr_OPARG_WIDTHrr~rstrip)rlineno_widthmark_as_currentoffset_widthfields
lineno_fmts      r5_disassemblezInstruction._disassemble0s#+$|3


j4+;+;;<

cL01MM% MM% MM$MM$

d4;;'--l;<

dkk''
6788MM$txx...|<=||

cDLL0367xx&&((rN)Frp)rTrr__doc__rrrr5rr s
#)rr)
first_liner:r;c
t|}tt|}|||jz
}nd}t	t|||j|j|j|||j|S)aIterator for the opcodes in methods, functions or code

    Generates a series of Instruction named tuples giving the details of
    each operations in the supplied code.

    If *first_line* is not None, it indicates the line number that should
    be reported for the first source line in the disassembled code.
    Otherwise, the source line information (if any) is taken directly from
    the disassembled code object.
    r)co_positionsr:)
rdictrco_firstlineno_get_instructions_bytesr_varname_from_opargrrr)rUrr:r;r
linestartsline_offsets       r5rrVsv
!	BnR()J 2#4#44"?2x#@#%#9#9#%;;#-{020A/:<<rc4|tvsJt}|||}|S)zHelper to get the value of the const in a hasconst op.

       Returns the dereferenced constant if this is possible.
       Otherwise (if it is a LOAD_CONST and co_consts is not
       provided) returns the dis.UNKNOWN sentinel.
    )hasconstUNKNOWN)rrrrs    r5_get_const_valuerns'>
F3MrcNt|||}|turt|nd}||fS)aHelper to get optional details about const references

       Returns the dereferenced constant and its repr if the value
       can be calculated.
       Otherwise returns the sentinel value dis.UNKNOWN for the value
       and an empty string for its repr.
    r)rrr)rrrrrs     r5_get_const_infor|s.b#y
1F$G3d6lG7?rc0|
||fi|}||fStdfS)a
Helper to get optional details about named references

       Returns the dereferenced name as both value and repr if the name
       list is defined.
       Otherwise returns the sentinel value dis.UNKNOWN for the value
       and an empty string for its repr.
    r)r)
name_indexget_name	extrainfors    r5_get_name_infors-*2	2v~{rclt|}|dz}|dzr|dz}t|}||dzz}|dzr|S)N?rt)next)iteratorbvals   r5
_parse_varintrsJXA
b&C
B$	NqtB$Jrc	.t|j}g}		t|dz}t|dz}||z}t|dz}t|}|dz	}t|dz}	|j	t|||||	l#t$r|cYSwxYw)Nrorn)iterco_exceptiontablerboolrzr
StopIteration)
coderentriesstartlengthendtargetdlr9lastis
          r5_parse_exception_tablersD**+HG!(+A-E"8,Q.F&.C"8,Q.Fx(B!GEAJENN/sFE5QRsA-BBBcdt|vS)Nr%)r)rs r5_is_backward_jumprsfRj((rrc	#@K|xstd}|dn|j}	tt|}
|D]*\}}}
}}t	||D]}|
j|
,d}t
|D]&\}}||j|d}|||z
}||
v}d}d}tt|d}t|}t|}}|tvrt||\}}n|tvr|tk(r"t!dz|	\}}dzr|rd|z}n|t"k(r"t!dz|	\}}dzrz|rwd|z}np|t$k(r"t!dz|	\}}dzrO|rLd|z}nEt!|	\}}n4|t&vrdz}d	t)|z}n|t*vr2t-|rn}|dz|dzz}|d|zz
}d	t)|z}n|t.vs|t0vrt!|\}}n|t2vrt4dz	}|}n|t6k(r1t8d
z\}}|t;dzf}|dry|r|dz
}|dz
}nl|t<k(r(dj?fd
tAtBD}n;|tDk(r
tF\}}n%|tHk(r
tJ}n|tLk(r	tN}tQtR||||||||	t|}|sg|st	|D]}t|dtTtV|jYD]\}}t	|D]l}|dz
}|dk(r5|||d|zz}|dtZj]|t^j`}nd}tQdtbdd||ddtt|d	n)yw)a&Iterate over the instructions in a bytecode string.

    Generates a sequence of Instruction namedtuples giving the details of each
    opcode.  Additional information about the code's runtime environment
    (e.g. variable names, co_consts) can be specified using optional
    arguments.

    rNrrornzNULL + zNULL|self + rpzto rrxzwith formatc38K|]\}}d|zzr|yw)rnNr).0rsrs   r5	<genexpr>z*_get_instructions_bytes.<locals>.<genexpr>s'$5$!Q'*ad|%&$5srz: r,F)2r__getitem__setrryadd_unpack_opargsr|rrrrrrhasnamer#rr(r)hasjabsrhasjrelrhaslocalhasfree
hascomparecmp_oprFORMAT_VALUE_CONVERTERSrrr~rMAKE_FUNCTION_FLAGSr$rr*rr+r	rrrrrIint
from_bytesrZ	byteorderr,)rvarname_from_opargrrrrexception_entriesrr:rlabelsrrr_rrrrrrrrdeopcaches
signed_argr4sizedatars                             @r5rrs +48L}t%*;*;H
D!
"F$5 sFAquc"	AJJv	K)$/WC!$..6K&{*6)tL"56	|&t,?
Fx"1$Y"G;&&4S!VX&FOFGaW"+g"5Y&&4S!VX&FOFGaW"07":_,&4S!VX&FOFGaW"07":&4S(&COFGQ$v,.%6t%<cT#
!jl2!f*$$v,.!TW_"06H"I#Q %"9#)"D $sSy/2!94},G&))$5)<O2P$55"$S\
7)),S1)),S1+b/2vw +~yJ	J't,6]
'\2&
''t5;;=
	JD$4[
!6T(9:D!%bcmm)L(MNG G!UAtWfdEtL"56

	UWsNNctt|}t|}tt	||||j
|j|j||||j|
y)zDisassemble a code object.)r8rrr:N)	rrrrQrrrrr)rrr8r:r;rrs       r5rrsYnR()J.r2r84b44{{BLL*4):$&OO$5;	Prct||||||dkDrS||dz
}|jD]<}t|dst|td|d|t	|||||>yy)	Nr=rrnrErDzDisassembly of :r7)rrrGrLrN)rr8r9r:r;rUs      r5rNrN)su;J}	AIE	Aq)$4 a1=&D;QY		"r)r8rrrr:c
Dt|}|r9t|j|z}|dk\rtt	|}
nd}
nd}
t|dz
}|dk\rtt	|}nd}t||||||||	|
	D]}|xr|jduxr|jdkD}|rt||
r|j|k(}nD|j|cxkxr/|jdtt|jzzknc}t|j|
||||rntd	||D][}|jrd
nd}|jdz
}td|jd
|d|j d|j"d|
|]yy)Nirrroi'rprrrr:rDzExceptionTable:z lastirrz to z -> z [])rmaxvalueslenrrrrrLrrrrrrrrr9)rrrrrrr8rrrr:show_lineno	maxlinenor	maxoffsetrinstrnew_source_lineis_current_instrentryrs                     r5rQrQ6s
z"K
))+,{:	s9~.LLD	A
IE3y>*(/A5)2J5@;L6B5@B', ,,D8, <<!+	t$||u4 %||u T<<!&;HU\\<R&S"SS T
e  /?N	#&
d+&	cE %HE))A+CBu{{m4uDb
QugV]ab	crc0tt|dfi|y)z<Compile the source string, then disassemble the code object.z<dis>N)rNr6)r3kwargss  r5rRrRcs<8CFCrrsrornc#Kd}d}tdt|dD]g}|r|dz}||}t|}t|}|tvr1||dz|z}|t
k(r|dznd}|tk\r|dtzz}nd}d}|||fiyw)Nrrornrq)ryr)rrhasargEXTENDED_ARG
_INT_OVERFLOW)rextended_argrrrrrs       r5rrosL
F
1c$i
#aKF
!W|&t,6>qs)l*C)-)=C1H1L},M 11CL"cl'sBBcg}t|D]l\}}}|
t|}t|}|tvr"t	|r|}|dz|dzz}|d|zz
}n|t
vr|dz}nW||vs\|j
|n|S)z`Detect all offsets in a byte code which are jump targets.

    Return the list of offsets.

    ro)rrrrrr
rz)rrrrrrrlabels        r5rrsF)$/%C?B<D*40Fw$T*$C
SU*V#AF"

e$%Mrc#dKd}|jD]\}}}|
||k7s|}||fyw)zqFind the offsets in a byte code which are start of lines in the source.

    Generate pairs (offset, lineno)
    N)co_lines)rlastlinerrlines     r5rrsJ
H MMOsD 0H+s000c#Ktd}|j}|j}t|jDcgc]\}}}|t
k7r||f}}}}t
|D]l\}\}}	||k(s|dk\s||dz
}
||dz
}|
dtvs1|dtvs=t|d|d|}t|
d|
d|}
||	||
fnycc}}}ww)zFind import statements in the code

    Generate triplets (name, level, fromlist) where
    name is the imported module and level, fromlist are
    the corresponding args to __import__.
    IMPORT_NAMErornrN)	opmaprrrrEr5rrr)rr?constsrrrropargsropargfrom_oplevel_oplevelfromlists              r5
_find_importsrHs
&K
\\FKKE*8*D))JAr3<'3i)F)#F+6;B
aQqSkGac{H
h&8A;(+B(!hqk6J+GAJ
FKU|UH556)s(;CCC3C9CC!:Cc#Ktdtdh}|j}t|jD]\}}}||vs||yw)z\Find names of variables which are written in the code

    Generate sequence of strings
    
STORE_NAMESTORE_GLOBALN)r@rrrE)r	STORE_OPSrrrrs      r5_find_store_namesrMsY	l
nI

KKE$RZZ0
2s
?*s?A
AcReZdZdZddddddZdZdZedddd	Zd
Z	dZ
y)raThe bytecode operations of a piece of code

    Instantiate this with a function, method, other compiled object, string of
    code, or a code object (as returned by compile()).

    Iterating over this yields the bytecode operations as Instruction instances.
    NF)rcurrent_offsetr:r;ct|x|_}||j|_d|_n||_||jz
|_tt
||_||_||_	t||_||_||_
y)Nr)rcodeobjrr_line_offsetrr_linestarts_original_objectrOrrr:r;)rrUrrOr:r;rs       r5__init__zBytecode.__init__s,Q//r //DO !D(DO *R->-> >Dr 23 !,!7!;& 
rc|j}tt||j|j|j
|j|j|j|j|j|j	S)Nr%)rQrrr;rrrrSrRrrr:)rrs  r5__iter__zBytecode.__iter__sk
\\&r4=='I')'='='){{BLL'+'7'7373D3D9=9O9O46OO4E373C3CE	Ercbdj|jj|jS)Nz{}({!r}))format	__class__rTrTrs r5rzBytecode.__repr__s*  !8!8!%!6!68	8r)r:r;c|jr|j}|jr||jj|j||S)z/ Construct a Bytecode from the given traceback )rOr:r;)r_r`rarb)clsrcr:r;s    r5from_tracebackzBytecode.from_tracebacksBjjBjjKKr{{^f
	
rc,t|jS)z3Return formatted information about the code object.)rrQrs r5infoz
Bytecode.infos ..rc|j}|j
|j}nd}tj5}t	t||j|j|j|j|j|j|||j|j|j|jcdddS#1swYyxYw)z3Return a formatted view of the bytecode operations.N)
rrrrrr8rrrr:)rQrOioStringIOrQrr;rrrrSrRrrr:getvalue)rrroutputs    r5r
zBytecode.diss
\\*((FF
[[]	%fr4==A242H2H%'[[BLL*.*:*:+/+<+<$*%+151G1G,.OO,=+/+;+;	
=??$	%	%	%sBCC)rTrrrrUrWrclassmethodr]r_r
rrr5rrsF)-Tu_d
!	E8/4u

/%rrcNddl}|j}|jd|jddd|j	}|j
5}|j
}dddt|j
jd}t|y#1swY6xYw)	z*Simple test program to disassemble a file.rNinfilerb?-)rSnargsdefaultr0)
argparseArgumentParseradd_argumentFileType
parse_argsrhreadr1r4r
)rnparserargsrhr3rs      r5_testrvs

$
$
&F
x'8'8'>cSVWD	
64;;++V4DIsBB$__main__r)NNNNrrNF)ra)raNNNN)irrZtypescollectionsrbrr_opcodes_allrrrrr	r
r
MethodTypeFunctionTypeCodeTyperfstaticmethodrSrKr@rrrrrrrr!r"r#r$r%r&r'r(r)r*r+r,listrrrrr
startswith_empty_slotzipspec_opspecializedrIrr6r
rr{rrrrrrrrr
namedtuplerrrrrrrrrrrrrrrrrrrrrrrNrQrRr	_INT_BITSr6rrrrHrMrrvrT)slotr4basefamilyrs00000r5<module>rsG6
				:<HI 2 2ENN</
^$%L	6N
G	o&
J
<
 
^$M"+	o&
V}+	)*+,+,
g6l
%[
&/&<U
dPS@TtU-FG&G[&K%J{&+A*:*@*@*B&$V\GRK)+*Dee+*Zh4UUh"	
*&.B<2@$
#K""VaZ	
	&{%%
V B:STQQ#Y &Y#!s-{--.D"$
3),3)l'+<0
 )6:269:?C(-	kZPdP(,4UUZ;?>B+c#b$(e+cZD	
	i!m$
00
6,
 E%E%P
z	G_Vs	K)#K)K/