grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]ÆCã@snddlZddlZddlZddlZddlTddlmZdddddd d d d d dg eZ[ejejej e e e fZ dd„Zddddd„Zddddd„Zddddddddddddd d!d"d#d$d%i Zd&d'„Zd(d)„Zd*d„Zd+d,„Zddd-d „Zejd.d/ƒZGd0d „d eƒZd1dd2d „Zd3d4„Zd5d6„Zddddddd7d8„ZdGddd9d„ZdHdddddddd:dd;d<„Zddd=d>„Z eZ!d?d@„Z"dAd „Z#dBd „Z$GdCd„dƒZ%dDdE„Z&e'dFkrje&ƒdS)IéN)Ú*)Ú__all__Ú code_infoÚdisÚ disassembleÚdistbÚdiscoÚfindlinestartsÚ findlabelsÚ show_codeÚget_instructionsÚ InstructionÚBytecodec CsAyt||dƒ}Wn$tk r<t||dƒ}YnX|S)NÚevalÚexec)ÚcompileÚ SyntaxError)ÚsourceÚnameÚc©rú(/opt/alt/python35/lib64/python3.5/dis.pyÚ _try_compiles  rÚfilecCs«|dkrtd|ƒdSt|dƒr5|j}t|dƒrM|j}t|dƒre|j}t|dƒr"t|jjƒƒ}x|D]‹\}}t|t ƒr�t d|d|ƒyt |d|ƒWn8t k r }zt d|d|ƒWYdd}~XnXt d|ƒq�Wn…t|dƒrDt |d|ƒnct|ttfƒrlt|d|ƒn;t|tƒrŽt|d|ƒnt d t|ƒjƒ‚dS) NrÚ__func__Ú__code__Úgi_codeÚ__dict__zDisassembly of %s:zSorry:Úco_codez(don't know how to disassemble %s objects)rÚhasattrrrrÚsortedrÚitemsÚ isinstanceÚ _have_codeÚprintrÚ TypeErrorrÚbytesÚ bytearrayÚ_disassemble_bytesÚstrÚ_disassemble_strÚtypeÚ__name__)Úxrr!rZx1Úmsgrrrr s6     &c Css|dkrSy tj}Wntk r9tdƒ‚YnXx|jrR|j}q=Wt|jj|jd|ƒdS)Nz no last traceback to disassembler) ÚsysÚlast_tracebackÚAttributeErrorÚ RuntimeErrorÚtb_nextrÚtb_frameÚf_codeÚtb_lasti)ÚtbrrrrrCs    éZ OPTIMIZEDéZ NEWLOCALSéZVARARGSéZ VARKEYWORDSéZNESTEDé Z GENERATORé@ZNOFREEé€Z COROUTINEéZITERABLE_COROUTINEcCs�g}xktdƒD]J}d|>}||@r|jtj|t|ƒƒƒ||N}|sPqW|jt|ƒƒdj|ƒS)Nr=r8z, )ÚrangeÚappendÚCOMPILER_FLAG_NAMESÚgetÚhexÚjoin)ÚflagsÚnamesÚiÚflagrrrÚ pretty_flags\s   rKcCs–t|dƒr|j}t|dƒr0|j}t|dƒrH|j}t|tƒrft|dƒ}t|dƒry|Stdt|ƒj ƒ‚dS)Nrrrz rz(don't know how to disassemble %s objects) rrrrr"r)rr%r+r,)r-rrrÚ_get_code_objectjs   rLcCstt|ƒƒS)N)Ú_format_code_inforL)r-rrrryscCsêg}|jd|jƒ|jd|jƒ|jd|jƒ|jd|jƒ|jd|jƒ|jd|jƒ|jdt|jƒƒ|j rÙ|jdƒx(t |j ƒD]}|jd |ƒq¾W|j r|jd ƒx(t |j ƒD]}|jd |ƒqÿW|j r[|jd ƒx(t |j ƒD]}|jd |ƒq@W|j rœ|jd ƒx(t |j ƒD]}|jd |ƒq�W|jrÝ|jdƒx(t |jƒD]}|jd |ƒqÂWdj|ƒS)NzName: %szFilename: %szArgument count: %szKw-only arguments: %szNumber of locals: %szStack size: %szFlags: %sz Constants:z%4d: %rzNames:z%4d: %szVariable names:zFree variables:zCell variables:Ú )rBÚco_nameÚ co_filenameÚ co_argcountÚco_kwonlyargcountÚ co_nlocalsÚ co_stacksizerKÚco_flagsÚ co_constsÚ enumerateÚco_namesÚ co_varnamesÚ co_freevarsÚ co_cellvarsrF)ÚcoÚlinesZi_cZi_nrrrrM}s:          rMcCstt|ƒd|ƒdS)Nr)r$r)r\rrrrr œsÚ _InstructionzBopname opcode arg argval argrepr offset starts_line is_jump_targetc@s"eZdZdddd„ZdS)r éFcCs0g}|rM|jdk r<d|}|j||jƒn|jd|ƒ|rc|jdƒn |jdƒ|jr‰|jdƒn |jdƒ|jt|jƒjdƒƒ|j|jjdƒƒ|jdk r|jt|jƒjd ƒƒ|j r|jd |j d ƒdj |ƒj ƒS) Nz%%%ddú z-->z z>>z r:ééú(ú)) Ú starts_linerBÚis_jump_targetÚreprÚoffsetÚrjustÚopnameÚljustÚargÚargreprrFÚrstrip)ÚselfÚ lineno_widthZmark_as_currentZfieldsZ lineno_fmtrrrÚ _disassemble´s&     zInstruction._disassembleN)r,Ú __module__Ú __qualname__rqrrrrr ¦s Ú first_linecCsxt|ƒ}|j|j}tt|ƒƒ}|dk rJ||j}nd}t|j|j|j |j |||ƒS)Nr) rLr[rZÚdictr Úco_firstlinenoÚ_get_instructions_bytesrrYrXrV)r-rtr\Ú cell_namesÚ linestartsÚ line_offsetrrrr Ùs   cCs,|}|dk r||}|t|ƒfS)N)rg)Z const_indexZ const_listÚargvalrrrÚ_get_const_infoïs  r|cCs;|}|dk r%||}|}n t|ƒ}||fS)N)rg)Z name_indexZ name_listr{rmrrrÚ_get_name_infoûs     r}c cs¾t|ƒ}d}d} xŸt|ƒD]‘\} } } |dk rh|j| dƒ}|dk rh||7}| |k} d}d}| dk r’| }| tkr¶t| |ƒ\}}nÜ| tkrÚt| |ƒ\}}n¸| tkr| d| }dt|ƒ}n‹| t kr+t| |ƒ\}}ng| t krJt | }|}nH| t krnt| |ƒ\}}n$| t kr’d| d| df}tt| | | ||| || ƒVq%WdS)NÚr_zto z%d positional, %d keyword pairr@)r Ú_unpack_opargsrDZhasconstr|Zhasnamer}ÚhasjrelrgZhaslocalZ hascompareZcmp_opZhasfreeZhasnargsr rj)ÚcodeÚvarnamesrHÚ constantsÚcellsryrzÚlabelsreÚfreerhÚoprlrfr{rmrrrrw s@                 rwc CsT|j|j}tt|ƒƒ}t|j||j|j|j||d|ƒdS)Nr) r[rZrur r(rrYrXrV)r\Úlastirrxryrrrr:srzc Cs°|dk } | rdnd} x‹t||||||d|ƒD]h} | og| jdk og| jdk} | r}td|ƒ| j|k} t| j| | ƒd|ƒq@WdS)Nr_rrzr)rwrerhr$rq)r�rˆr‚rHrƒr„ryrrzZ show_linenorpZinstrZnew_source_lineZis_current_instrrrrr(As    r(cCstt|dƒd|ƒdS)Nzr)rr)rrrrrr*Ssr*ccs­d}t|ƒ}d}xŽ||kr¨||}|}|d}d}|tkr—||||dd|}d}|d}|tkr—|d}|||fVqWdS)Nrr8r@r9i)ÚlenZ HAVE_ARGUMENTZ EXTENDED_ARG)r�Z extended_argÚnrIr‡rhrlrrrrYs       rcCs�g}xƒt|ƒD]u\}}}|dk rd}|tkrQ|d|}n|tkrc|}|dkr||kr|j|ƒqW|S)Nr8r_réÿÿÿÿ)rr€ZhasjabsrB)r�r…rhr‡rlZlabelrrrr ls     ccs¿t|jddd…ƒ}t|jddd…ƒ}d}|j}d}xTt||ƒD]C\}}|r–||krŒ||fV|}||7}||7}q]W||kr»||fVdS)Nrr9r8)ÚlistÚ co_lnotabrvÚzip)r�Zbyte_incrementsZline_incrementsZ lastlinenoÚlinenoÚaddrZ byte_incrZ line_incrrrrr s     c@sjeZdZdddddd„Zdd„Zdd „Zed d „ƒZd d „Zdd„Z dS)rrtNÚcurrent_offsetcCsŽt|ƒ|_}|dkr7|j|_d|_n||_||j|_|j|j|_tt |ƒƒ|_ ||_ ||_ dS)Nr) rLÚcodeobjrvrtÚ _line_offsetr[rZÚ _cell_namesrur Ú _linestartsÚ_original_objectr‘)ror-rtr‘r\rrrÚ__init__�s     zBytecode.__init__c Cs=|j}t|j|j|j|j|j|jd|jƒS)Nrz) r’rwrrYrXrVr”r•r“)ror\rrrÚ__iter__ªs    zBytecode.__iter__cCsdj|jj|jƒS)Nz{}({!r}))ÚformatÚ __class__r,r–)rorrrÚ__repr__±szBytecode.__repr__cCs2x|jr|j}qW||jjd|jƒS)Nr‘)r3r4r5r6)Úclsr7rrrÚfrom_tracebackµs  zBytecode.from_tracebackcCs t|jƒS)N)rMr’)rorrrÚinfo¼sz Bytecode.infocCs�|j}|jdk r$|j}nd }tjƒ�`}t|jd|jd|jd|jd|j d|j d|j d|d |ƒ|j ƒSWdQRXdS) Nr8r‚rHrƒr„ryrzrrˆr‹) r’r‘ÚioÚStringIOr(rrYrXrVr”r•r“Úgetvalue)ror\rhÚoutputrrrrÀs     z Bytecode.dis) r,rrrsr—r˜r›Ú classmethodr�ržrrrrrr•s    c CsŽddl}|jƒ}|jdd|jƒddddƒ|jƒ}|j�}|jƒ}WdQRXt||jjdƒ}t |ƒdS) NrÚinfiler+Únargsú?Údefaultú-r) ÚargparseÚArgumentParserÚ add_argumentÚFileTypeÚ parse_argsr¤Úreadrrr)r©ÚparserÚargsr¤rr�rrrÚ_testÒs  %  r±Ú__main__r‹r‹)(r/ÚtypesÚ collectionsrŸZopcoderZ _opcodes_allÚ MethodTypeÚ FunctionTypeÚCodeTyper£Ú staticmethodr+r#rrrrCrKrLrrMr Ú namedtupler^r r r|r}rwrr(r*rrr r rr±r,rrrrÚsb       #       3  .     =