Ë D—ÍÌ7Zjãó°—ddlZedk(rejdejd< ddl­ejdk(r dd l m Z e «dd lm Z dd l m Z ddlZddlZddlZddlZdd lmZddlZddlZddlZdd lmZddlZddlZddlZddlZddlmZddlmZddl m!Z!ddl"m#Z#ddl"m$Z$ddl%m&Z&m'Z'ddl(m)Z)ddl*m+Z+ddl"m,Z,ddl"m-Z-ddl.m/Z/m0Z0m1Z1ddl2m3Z3da4dZ5dZ6 dZ7e7e8_7e7e9_7ej a; d5d„Ze>d«dej~fd „Z@e@e_?Gd!„d"e&«ZAGd#„d$e)«ZBGd%„d&e«ZCGd'„d(e3«ZDGd)„d*e!«ZEGd+„d,e-jŒ«ZGd-„ZHGd.„d/e «ZIGd0„d1e+«ZJd2„ZKd3ZLd4„ZMedk(reM«e>d«y#e$redej ¬«ed«‚wxYw#e:$rYŒãwxYw)6éNÚ__main__zidlelib.pyshell)Ú*zJ** IDLE can't import Tkinter. Your Python may not be configured for Tk. **©ÚfileéÚwin32)Ú fix_win_hidpi)Ú messagebox)ÚInteractiveInterpreter)Úpython_version)Ú TextWrapper)ÚColorDelegator)ÚidleConf)Ú Delegator©Údebugger)Ú debugger_r)Ú EditorWindowÚ fixwordbreaks)ÚFileList)Ú OutputWindow)Úreplace)Úrpc)Úidle_formatwarningÚ StdInputFileÚ StdOutputFile)Ú UndoDelegatorFz 127.0.0.1zCtrl-D (end-of-file)c ó —|€t} |jt|||||¬««|jd«y#ttf$rYywxYw)aShow Idle-format warning (after replacing warnings.showwarning). The differences are the formatter called, the file=None replacement, which can be None, the capture of the consequence AttributeError, and the output of a hard-coded prompt. N)Úlinez>>> )Úwarning_streamÚwriterÚAttributeErrorÚOSError)ÚmessageÚcategoryÚfilenameÚlinenorrs ú&/usr/lib/python3.12/idlelib/pyshell.pyÚidle_showwarningr)CsW€ð €|Üˆð Ø � ‰ Ô%ؘ 8¨V¸$ô@ô Aà � ‰ �6ÕøÜ œGÐ $ò Ù ð úsŠ0;»A Á A có†—|r't€ tjatt_yyt�tt_dayy)z>Replace warning.showwarning with idle_showwarning, or reverse.N)Ú_warnings_showwarningÚwarningsÚ showwarningr))Úcaptures r(Úcapture_warningsr/VsA€ñÜ Ð (Ü$,×$8Ñ$8Ð !Ü#3ŒHÕ ð )ô !Ð ,Ü#8ŒHÔ Ø$(Ñ !ð -óTcóÀ—tj}i}t|«D]%}|dd|ddzdk(sŒ|j|«||<Œ'||«|j |«y)aoExtend linecache.checkcache to preserve the entries Rather than repeating the linecache code, patch it to save the entries, call the original linecache.checkcache() (skipping them), and then restore the saved entries. orig_checkcache is bound at definition time to the original method, allowing it to be patched. Nréÿÿÿÿú<>)Ú linecacheÚcacheÚlistÚpopÚupdate)r&Úorig_checkcacher5ÚsaveÚkeys r(Úextended_linecache_checkcacher<es`€ô �O‰O€EØ €DÜ�EŽ{ˆØ ˆr�ˆ7�S˜˜�XÑ  Ó %ØŸ ™  #›ˆD�ŠIðñ�HÔØ ‡L�L�Õr0có`—eZdZdZd„Zgd¢Zdd„Zd„Zdd„Zdd„Z d „Z d „Z d „Z d „Z d „Zd„Zy)ÚPyShellEditorWindowz6Regular text edit window in IDLE, supports breakpointscór—g|_tj|g|¢­Ž|jj d|j «|jj d|j «|jj d|jj«tjjtjd«|_|jj |fd„}|jj#|«|jj$r|j'«|j)«y)Nú<>ú<>z<>zbreakpoints.lstcó2—|j«|«y©N)Úrestore_file_breaks)Úold_hookÚselfs r(Úfilename_changed_hookz;PyShellEditorWindow.__init__..filename_changed_hookŠs€à × $Ñ $Ô &Ù �Jr0)Ú breakpointsrÚ__init__ÚtextÚbindÚset_breakpoint_eventÚclear_breakpoint_eventÚflistÚ open_shellÚosÚpathÚjoinrÚuserdirÚbreakpointPathÚioÚfilename_change_hookÚset_filename_change_hookr&rDÚcolor_breakpoint_text)rFÚargsrGs r(rIzPyShellEditorWindow.__init__sà€ØˆÔÜ×јdÐ* TÓ*Ø � ‰ �‰Ð+¨T×-FÑ-FÔGØ � ‰ �‰Ð-¨t×/JÑ/JÔKØ � ‰ �‰Ð.°· ± ×0EÑ0EÔFô!Ÿg™gŸl™lÜ× Ñ Ð"3ó5ˆÔð,0¯7©7×+GÑ+GØ'+ó ð �‰×(Ñ(Ð)>Ô?Ø �7‰7× Ò Ø × $Ñ $Ô &Ø ×"Ñ"Õ$r0))ÚCutz<>Úrmenu_check_cut)ÚCopyz<>Úrmenu_check_copy)ÚPastez <>Úrmenu_check_paste)NNN)zSet Breakpointr@N)zClear BreakpointrANcóº—|j€y|r+tj«}tj|d«}ndddœ}|jj d|«y)z,Turn colorizing of breakpoint text on or offNÚbreakÚ)Ú foregroundÚ backgroundÚBREAK)rUrÚ CurrentThemeÚ GetHighlightrJÚ tag_config)rFÚcolorÚthemeÚcfgs r(rXz)PyShellEditorWindow.color_breakpoint_textœsO€à �7‰7ˆ?à Ù Ü×)Ñ)Ó+ˆEÜ×'Ñ'¨¨wÓ7‰Cà!#°2Ñ6ˆCØ � ‰ ×јW cÕ*r0có”—|j}|jj}|jdd|zd|dzz« |jj |« |jjjj}|j||«y#t $r|jj|«YŒdwxYw#YyxYw)Nrez%d.0r) rJrUr&Útag_addrHÚindexÚ ValueErrorÚappendrNÚpyshellÚinterprÚset_breakpoint)rFr'rJr&Údebugs r(rsz"PyShellEditorWindow.set_breakpoint¨s®€Ø�y‰yˆØ—7‘7×#Ñ#ˆØ � ‰ �W˜f v™o¨v¸À¹Ñ/BÔCð ,Ø × Ñ × "Ñ " 6Ô *ð Ø—J‘J×&Ñ&×-Ñ-×6Ñ6ˆEØ × Ñ  ¨6Õ 2øô ò ,Ø × Ñ × #Ñ # FÖ +ð ,ûð  Ù úsÁBÁÕ:Ø Ÿ™ tÕ,ð"ð×'Ñ'Ô)Ø×)Ñ)�ÙØ—N‘N 8¨c¡>´C¸³KÑ#?À$Ñ#FÔG÷0Ð/÷ +Ð*ûäò ØŠEð ú÷0Ð/ûôò &ܘ4Ÿ9™9Ð&BÀEÔJØ7;�— ‘ Ô4Ü×$Ñ$¨<ØCܘc›(ñ#àŸ9™9÷&ò&ôKûð &úsf¤C-¹C!Á C-ÁD Á)C>ÂAC>ÃD Ã!C*Ã&C-Ã- C;Ã:C;Ã>DÄD ÄD Ä E8ÄAE3Å3E8cóè—|jj«|j€y|jj}|€ytj j |j«r}t|j«5}|j«}ddd«D]I}|j|dz«sŒt|t|«dzd«}|D]}|j|«ŒŒKyy#1swYŒYxYw)Nr†r)rJr8rUr&rPrQÚisfilerTr‹rŒr�ÚevalÚlenrs)rFr&r”r•rÚbreakpoint_linenumbersÚbreakpoint_linenumbers r(rDz'PyShellEditorWindow.restore_file_breaks sÈ€Ø � ‰ ×ÑÔØ �7‰7ˆ?à Ø—7‘7×#Ñ#ˆØ Ð Ø Ü �7‰7�>‰>˜$×-Ñ-Ô .Ü�d×)Ñ)Ô*¨bØŸ ™ ›�÷+ã�Ø—?‘? 8¨c¡>Õ2Ü-1°$´s¸8³}ÀQ±Ð7GÐ2HÓ-IÐ*Û1GÐ-Ø×+Ñ+Ð,AÕBñ2Hñð /ß*Ð*ús Á?C(Ã(C1cón—|j}|jd«}|j|«}||_y)z3Retrieves all the breakpoints in the current windowreN)rJÚ tag_rangesÚranges_to_linenumbersrH)rFrJÚrangesÚlinenumber_lists r(rŽz&PyShellEditorWindow.update_breakpointss1€à�y‰yˆØ—‘ Ó)ˆØ×4Ñ4°VÓ<ˆØ*ˆÕr0có—g}tdt|«d«D]i}tt||j««}tt||dzj««}||ksŒN|j |«|dz }||krŒŒk|S)Nrér)ÚrangerœrxryÚstringrp)rFr¢r•rnr'Úends r(r¡z)PyShellEditorWindow.ranges_to_linenumbers#s€€ØˆÜ˜1œc &›k¨1Ö-ˆEÜœ˜v e™}×3Ñ3Ó4Ó5ˆFÜ”e˜F 5¨¡7™O×2Ñ2Ó3Ó4ˆCؘ3“,Ø— ‘ ˜VÔ$ؘ!‘ �ð˜3”,ð.ð ˆ r0cóN—|j«tj|«y)z7Extend base method - clear breaks when module is closedN)rƒrÚ_close©rFs r(rªzPyShellEditorWindow._close4s€à ×ÑÔ Ü×јDÕ!r0)TrC)Ú__name__Ú __module__Ú __qualname__Ú__doc__rIÚ rmenu_specsrXrsrLrMrƒr˜rDrŽr¡rª©r0r(r>r>|sE„Ù<ò%ò(€Kó +ò ó$óò& ò(&òTCò"+òó""r0r>có —eZdZdZeZdZdd„Zy)ÚPyShellFileListz8Extend base class: IDLE supports a shell and breakpointsNcó—|jr0|jjj«|jSt|«|_|jr|jj «sy|jSrC)rqÚtopÚwakeupÚPyShellÚbegin©rFrzs r(rOzPyShellFileList.open_shellCs\€Ø �<Š<Ø �L‰L× Ñ × #Ñ #Ô %ð �|‰|Ðô # 4›=ˆDŒLØ�|Š|Ø—|‘|×)Ñ)Ô+ØØ�|‰|Ðr0rC)r¬r­r®r¯r>rrqrOr±r0r(r³r³:s„Ù>ð'€Là€Gôr0r³có—eZdZdZd„Zd„Zy)ÚModifiedColorDelegatorz8Extend base class: colorizer for the shell window itselfcóz—|jddd«|jddd«tj|«y)NÚTODOr�ÚiomarkÚSYNC)r~rmrÚrecolorize_mainr«s r(rÀz&ModifiedColorDelegator.recolorize_mainPs0€Ø �‰˜  xÔ0Ø � ‰ �V˜U HÔ-Ü×&Ñ& tÕ,r0cóL—|jD]}|j|dd«Œy)Nr¾r¨)Útagdefsr~)rFÚtags r(Ú removecolorsz#ModifiedColorDelegator.removecolorsUs €à—<”<ˆCØ �O‰O˜C ¨5Õ 1ñ r0N)r¬r­r®r¯rÀrÄr±r0r(r»r»Ns„Ù>ò-ó 2r0r»có2‡—eZdZdZdd„Zdd„Zˆfd„ZˆxZS)ÚModifiedUndoDelegatorz;Extend base class: forbid insert/delete before the I/O markcóÆ— |jj|dd«r|jj«y t j ||||«y#t$rYŒ$wxYw©NÚz2ModifiedUndoDelegator.undo_event..vsø€¡¨U°E¸7Ô!Cr0)rÊrvÚsuperÚ undo_event)rFrzrØÚ __class__s @€r(rÛz ModifiedUndoDelegator.undo_eventosNù€ð —m‘m×*Ñ*ˆ ã Cð � ‰ Ôð /Ü ‰GÑ ˜uÔ %à#.ˆD�M‰MÕ ø ;ˆD�M‰MÕ ús ®AÁA"rC)r¬r­r®r¯rvrÑrÛÚ __classcell__©rÜs@r(rÆrÆ[sø„ÙAó7ó3÷ /ð /r0rÆcó—eZdZdZdd„Zy)ÚUserInputTaggingDelegatorz.Delegator used to tag user input with "stdin".NcóF—|€d}|jj|||«yrÖ)rÊrvrÍs r(rvz UserInputTaggingDelegator.inserts"€Ø ˆ<؈DØ � ‰ ×јU E¨4Õ0r0rC)r¬r­r®r¯rvr±r0r(ràrà}s „Ù8ô1r0ràcó—eZdZd„Zy)Ú MyRPCClientcó—t‚)z0Override the base class - just re-raise EOFError)ÚEOFErrorr«s r(Ú handle_EOFzMyRPCClient.handle_EOF‡s€äˆr0N)r¬r­r®rær±r0r(rãrã…s„ór0rãcó”—d|xsd›d�}|t|«k\r,t|t|«z d«\}}||zdz›|›|dz›�S|ddS)z¹Return width long restart line formatted with filename. Fill line with balanced '='s, with any extras and at least one at the beginning. Do not end with a trailing space. z = RESTART: ÚShellz =r¥r†Néþÿÿÿ)rœÚdivmod)Úwidthr&rÃÚdivÚmods r(Ú restart_linerî‹sf€ð ˜Ò+ GÐ,¨BÐ /€CØ ”�C“Òܘ5¤# c£(™?¨QÓ/‰ˆˆSØ�s‘7˜C‘-�   c¨#¡g YÐ/Ð/à�3�Bˆxˆr0cóÚ—eZdZd„ZdZdZdZd„Zd„Zd„Z d d„Z d„Z d„Z d „Z d „Zd!d „ZdZd „ZdZd „Zd„Zd„Zd„ZdZd„Zd"d„Zd„Zd„Zd„Zd"d„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d„Z%y)#ÚModifiedInterpretercóö—||_tjdj}t j ||¬«d|_d|_t|_ |jjj|_ y)Nr)ÚlocalsF)Ú tkconsoleÚsysÚmodulesÚ__dict__r rIÚ restartingÚsubprocess_arglistÚPORTÚportÚcompileÚcompilerÚflagsÚoriginal_compiler_flags)rFróròs r(rIzModifiedInterpreter.__init__›s[€Ø"ˆŒÜ—‘˜ZÑ(×1Ñ1ˆÜ×'Ñ'¨°VÕ<؈ŒØ"&ˆÔ܈Œ Ø'+§|¡|×'<Ñ'<×'BÑ'BˆÕ$r0NcóŽ—|j€|j«|_tj|j«|_yrC)røÚbuild_subprocess_arglistÚ subprocessÚPopenÚ rpcsubprocr«s r(Úspawn_subprocessz$ModifiedInterpreter.spawn_subprocess¨s7€Ø × "Ñ "Ð *Ø&*×&CÑ&CÓ&EˆDÔ #Ü$×*Ñ*¨4×+BÑ+BÓCˆ�r0có—|jdk7sJd«‚tjD�cgc]}d|z‘Œ }}tjddddd¬ «}d |›d �}tj g|zd |t |j«gzScc}w) Nrz/Socket should have been assigned a port number.z-WÚmainÚGeneralzdelete-exitfuncFÚbool)ÚdefaultÚtypez#__import__('idlelib.run').run.main(Ú)ú-c)rúrôÚ warnoptionsrÚ GetOptionÚ executabler�)rFÚsr…Ú del_exitfÚcommands r(rz,ModifiedInterpreter.build_subprocess_arglist­s�€Ø— ‘ ˜1’ ð ?Ø =ó ?� ä"ŸšÓ /™˜!ˆT�A‹X˜ˆÐ /ô×&Ñ& v¨yÐ:KØ/4¸6ôCˆ à7¸ °}ÀAÐFˆÜ—‘Р!Ñ# t¨W´c¸$¿)¹)³nÐ&EÑEÐEùò 0s© BcóD—t|jf}td«D])}tj|« t |«|_n|j«y|j jj«d|_tdk7rC|j jjtjtjd«|j!«|j jj#d« |j j%«|j j+d|j,«|j j+d|j,j.«|j j+d|j,j0«|j j+d|j,j2«|j j+d |j,j4«|j j+d t6«|j j+d |«|j9d ¬ «|j;«|j S#t$rY�ŒawxYw#t&$r|j)«YywxYw)Nérré Úconsoler×ÚstdoutÚstderrrNr4rrT©Úwith_cwd)ÚHOSTrúr¦ÚtimeÚsleeprãÚrpccltr#Údisplay_port_binding_errorÚlistening_sockÚ getsocknamerùÚ setsockoptÚsocketÚ SOL_SOCKETÚ SO_REUSEADDRrÚ settimeoutÚacceptÚ TimeoutErrorÚdisplay_no_subprocess_errorÚregisterrór×rrrNr4Ú transfer_pathÚpoll_subprocess)rFÚaddrÚis r(Ústart_subprocessz$ModifiedInterpreter.start_subprocess¹sò€Ü�d—i‘iÐ ˆä�q–ˆAÜ �J‰J�qŒMð Ü)¨$Ó/�” Ùð ð × +Ñ +Ô -Øà—K‘K×.Ñ.×:Ñ:Ó<¸QÑ?ˆŒ ä �1Š9ð �K‰K× &Ñ &× 1Ñ 1´&×2CÑ2CÜ+1×+>Ñ+>Àô Cà ×ÑÔð � ‰ ×"Ñ"×-Ñ-¨bÔ1ð Ø �K‰K× Ñ Ô ð � ‰ ×јY¨¯©Ô7Ø � ‰ ×јW d§n¡n×&:Ñ&:Ô;Ø � ‰ ×јX t§~¡~×'<Ñ'<Ô=Ø � ‰ ×јX t§~¡~×'<Ñ'<Ô=Ø � ‰ ×јW d§n¡n×&:Ñ&:Ô;Ø � ‰ ×ј[¬)Ô4Ø � ‰ ×јX tÔ,Ø ×Ñ DÐÔ)Ø ×ÑÔØ�{‰{ÐøôCò Úð ûô*ò Ø × ,Ñ ,Ô .Ùð ús#·I3Ä JÉ3 JÉ?JÊJÊJcó(—|jr |jSd|_|j«}|r tj|j«|jj «|j «|j}|j}d|_|j« |jj«|j|¬«|j«|jj!dd«|j#d«|j#t%|j&|««|jj)dd«|jj+dd«|s|j-«|r/tj.|j«|j1«|j2|j4j6_d|_|jS#Y�Œ xYw#t$r|j«YywxYw) NTFrr¾úend-1cr‡ÚrestartÚleft)r÷rÚ getdebuggerrÚclose_subprocess_debuggerÚcloseÚterminate_subprocessróÚ executingrr'r(r)r+Ú stop_readlinerJrÑr!rîrëÚmark_setÚ mark_gravityÚ showpromptÚrestart_subprocess_debuggerÚload_breakpointsrþrûrürý)rFrr&rtrÚ was_executings r(Úrestart_subprocessz&ModifiedInterpreter.restart_subprocessäsž€Ø �?Š?Ø—;‘;Р؈Œà× Ñ Ó"ˆÙ ð ä×4Ñ4°T·[±[ÔAð � ‰ ×ÑÔØ ×!Ñ!Ô#Ø—.‘.ˆØ×)Ñ)ˆ Ø!ˆÔØ ×ÑÔð Ø �K‰K× Ñ Ô ð ×Ñ HÐÔ-Ø×ÑÔà� ‰ ×јH hÔ/Ø� ‰ �dÔØ� ‰ ”l 7§=¡=°(Ó;Ô<Ø� ‰ ×јi¨Ô2Ø� ‰ ×!Ñ! )¨VÔ4ÙØ × Ñ Ô á ä × 2Ñ 2°4·;±;Ô ?à × "Ñ "Ô $Ø&*×&BÑ&Bˆ� ‰ ×ÑÔ#؈ŒØ�{‰{ÐøðA Úûôò Ø × ,Ñ ,Ô .Ùð ús³G-Â,G5Ç-G2Ç5HÈHcó@—|jjdddi«y)NÚexecÚinterrupt_the_serverr±)rÚ remotecallr«s r(Ú__request_interruptz'ModifiedInterpreter.__request_interrupts€Ø � ‰ ×јvÐ'=¸rÀ2ÕFr0có`—tj|j¬«j«y)N)Útarget)Ú threadingÚThreadÚ'_ModifiedInterpreter__request_interruptÚstartr«s r(Úinterrupt_subprocessz(ModifiedInterpreter.interrupt_subprocesss€Ü×Ñ × 8Ñ 8Ô9×?Ñ?ÕAr0có†—|j�/|jjj|j« |jj j « |jj «|j«d|j_ d|_y#t$rYŒOwxYw#t$rYŒCwxYw)NF) Ú_afteridrórJÚ after_cancelrr r6r"r7r8r«s r(Úkill_subprocessz#ModifiedInterpreter.kill_subprocesss €Ø �=‰=Ð $Ø �N‰N× Ñ × ,Ñ ,¨T¯]©]Ô ;ð Ø �K‰K× &Ñ &× ,Ñ ,Ô .ð Ø �K‰K× Ñ Ô ð ×!Ñ!Ô#Ø#(ˆ�‰Ô ؈� øôò Ù ð ûôò Ù ð ús#½$B%Á"B4Â% B1Â0B1Â4 CÂ?Ccó¬— |jj« |jj«y#t$rYywxYw#t$rYywxYw)z"Make sure subprocess is terminatedN)rÚkillÚwaitr#r«s r(r7z(ModifiedInterpreter.terminate_subprocess%sQ€ð Ø �O‰O× Ñ Ô "ð  Ø—‘×$Ñ$Õ&øÜò Ùð ûô ò á ð ús ‚A�8¸ AÁAÁ AÁAcó®—|r#dg}|jtj«ntj}|jdj |««y)NrbzTif 1: import sys as _sys _sys.path = {!r} del _sys )ÚextendrôrQÚ runcommandÚformat)rFrrQs r(r+z!ModifiedInterpreter.transfer_path2sA€Ù Ø�4ˆDØ �K‰KœŸ™Õ !ä—8‘8ˆDà �‰ð÷‰f�T‹lõ  r0cóx—|j}|€y |j|jd¬«}|r×|j j«d|_|\}}|j j}|dk(r|�ytt|«|¬«nb|dk(r,|j jd«rB|j«n1|dk(r,d}t||tj ¬«t|||¬« |j j#«|j jsJ|j j&j)|j j*|j,«|_yy#ttt f$r.|j jrYyd}|j«Y�Œ{wxYw#t$$rYŒ±wxYw) Ngš™™™™™©?)rSÚOKrÚ EXCEPTIONú<>ÚERRORz/pyshell.ModifiedInterpreter: Subprocess ERROR: )rÚ pollresponseÚ active_seqrår#ÚKeyboardInterruptróÚclosingr@Ú resetoutputrÚprintÚreprÚgetvarÚremote_stack_viewerrôÚ __stderr__Ú endexecutingr"rJÚafterÚ pollintervalr,rN)rFÚcltÚresponseÚhowÚwhatrÚerrmsgs r(r,z#ModifiedInterpreter.poll_subprocessAsy€Ø�k‰kˆØ ˆ;Ø ð &Ø×'Ñ'¨¯©¸dÐ'ÓCˆHñ Ø �N‰N× &Ñ &Ô (Ø"ˆDŒOØ ‰IˆC�Ø—n‘n×,Ñ,ˆGØ�dŠ{ØÐ#Üœ$˜t›*¨7Ö3ؘ Ò#Ø—>‘>×(Ñ(Ð)FÔGØ×,Ñ,Õ.ؘ’ØK�Ü�f˜d¬¯©Õ8Ü�f˜d¨Õ1ð Ø—‘×+Ñ+Ô-ð�~‰~×%Ò%Ø ŸN™N×/Ñ/×5Ñ5Ø—‘×+Ñ+¨T×-AÑ-AóCˆD�Mð&øô9œ'Ô#4Ð5ò &ð�~‰~×%Ò%ÙØˆHØ × #Ñ #× %ð  &ûô2"ò Ùð ús)‘E(Ã-F-Å(*F*ÆF*Æ)F*Æ- F9Æ8F9có—||_yrCr)rFrs r(Ú setdebuggerzModifiedInterpreter.setdebuggeris €Ø ˆ� r0có—|jSrCrr«s r(r4zModifiedInterpreter.getdebuggerls €Ø�}‰}Ðr0cód—|jjjd|j«y)a’Initiate the remote stack viewer from a separate thread. This method is called from the subprocess, and by returning from this method we allow the subprocess to unblock. After a bit the shell requests the subprocess to open the remote stack viewer which returns a static object looking at the last exception. It is queried through the RPC mechanism. i,N)rórJrhrer«s r(Úopen_remote_stack_viewerz,ModifiedInterpreter.open_remote_stack_vieweros'€ð �‰×Ñ×!Ñ! # t×'?Ñ'?Ô@Ør0có—ddlm}|jjdddi«}|€%|jj j «y|j|j|«}ddlm }m }t|jj «}tj«}tj|d«d}|||d¬ «} | jj!d d ¬ «|| j"d|«} | j%«y) Nr)Ú debugobj_rrBÚ stackviewer)rN)ÚScrolledCanvasÚTreeNodeÚnormalrd)ÚbgÚhighlightthicknessrÚboth)ÚexpandÚfill)ÚidlelibrurÚ remotequeuerór‘rwÚStubObjectTreeItemÚ idlelib.treerwrxÚToplevelrrfrgÚframeÚpackÚcanvasr}) rFruÚoidÚitemrwrxrµrjrdÚscÚnodes r(rez'ModifiedInterpreter.remote_stack_viewer|sÌ€Ý&Ø�k‰k×%Ñ% f¨m¸ZÈÓLˆØ ˆ;Ø �N‰N× Ñ × $Ñ $Ô &Ø Ø×,Ñ,¨T¯[©[¸#Ó>ˆß9Ü�t—~‘~×*Ñ*Ó+ˆÜ×%Ñ%Ó'ˆÜ×*Ñ*¨5°(Ó;¸LÑIˆ Ù ˜C JÀ1Ô EˆØ �‰� ‰ ˜Q Vˆ Ô,Ù˜Ÿ ™  4¨Ó.ˆØ � ‰ � r0rcóJ—|j|«}|j||«y)z1Like runsource() but assumes complete exec sourceN)Ú stuffsourceÚexecfile©rFÚsourcer&s r(Ú execsourcezModifiedInterpreter.execsource�s €à×#Ñ# FÓ+ˆØ � ‰ �h Õ'r0có—|€]tj|«5}|j«}tr)dtj j |«›d�|zdz}ddd« t||d«}|j|«y#1swYŒ)xYw#ttf$rn|jj«td|jj¬«tj ||«|jj#«YywxYw)zExecute an existing fileNz__file__ = r'''z''' z del __file__rBzB*** Error in script or command! Traceback (most recent call last):r)Útokenizer‹ÚreadÚuse_subprocessrPrQÚabspathrûÚruncodeÚ OverflowErrorÚ SyntaxErrorrórarbrr Úshowsyntaxerrorr<)rFr&r�r”Úcodes r(r�zModifiedInterpreter.execfile”s߀à ˆ>Ü—‘˜xÔ(¨BØŸ™›�Ý!Ø /´·±·±ÀÓ0IÐ/JÈ%ÐPØ &ñ'Ø)9ñ:�F÷)ð ܘ6 8¨VÓ4ˆDð �L‰L˜Õ ÷)Ð(ûôœ{Ð+ò (Ø �N‰N× &Ñ &Ô (Ü ð6à—~‘~×,Ñ,õ .ô #× 2Ñ 2°4¸Ô BØ �N‰N× %Ñ %Ö 'ð  (ús˜ABÁ! B ÂB  A:D ÄD cóv—|j|«}t|t«sJ‚tj|||«S)zBExtend base class method: Stuff the source in the line cache first)rŒÚ isinstancer�r Ú runsourcerŽs r(r�zModifiedInterpreter.runsource¨s9€à×#Ñ# FÓ+ˆä˜&¤#Ô&Ð&Ð&ô&×/Ñ/°°f¸hÓGÐGr0có´—d|jz}|jdz|_|jd«}t|«dzd||ftj|<|S)z"Stuff source in the filename cachez rr‡r)ÚgidÚsplitrœr4r5)rFr�r&r•s r(rŒzModifiedInterpreter.stuffsource±sQ€à! D§H¡HÑ,ˆØ—8‘8˜a‘<ˆŒØ— ‘ ˜TÓ"ˆÜ$'¨£K°¡M°1°e¸XÐ$EŒ �‰˜Ñ!؈r0cóD—|jdj|««y)z>Prepend sys.path with file's directory if not already includeda*if 1: _filename = {!r} import sys as _sys from os.path import dirname as _dirname _dir = _dirname(_filename) if not _dir in _sys.path: _sys.path.insert(0, _dir) del _filename, _sys, _dirname, _dir N)rVrW©rFr&s r(Úprepend_syspathz#ModifiedInterpreter.prepend_syspath¹s€à �‰ð÷‘&˜Ó"õ $r0c óΗ|j}|j}|jddd«tj«\}}}t |dd«xs|xsd}t |dd«xsd} t |d d«xsd } | d k(r| dz } | dk(r d | dz z} n d | dz | dz fz} |j || «|j«|jd |z«|j«y)z§Override Interactive Interpreter method: Use Colorizing Color the offending position instead of printing it and pointing at it with a caret. r\r�r¨Úmsgrbzr'rÚoffsetrziomark + %d charsz&iomark linestart + %d lines + %d charszSyntaxError: %s N) rórJr~rôÚexc_infor�Úcolorize_syntax_errorrar!r<) rFr&ÚkwargsrórJr ÚvalueÚtbr¥r'r¦Úposs r(r™z#ModifiedInterpreter.showsyntaxerrorÅsï€ð—N‘Nˆ Ø�~‰~ˆØ �‰˜ ¨Ô.ÜŸ,™,›.‰ˆˆe�RÜ�e˜U BÓ'ÒK¨5ÒKÐ4KˆÜ˜ ¨"Ó-Ò2°ˆÜ˜ ¨"Ó-Ò2°ˆØ �QŠ;Ø �a‰KˆFØ �QŠ;Ø%¨°©Ñ2‰Cà:ؘ!‘8˜V A™XÐ&ñ'ˆCà×'Ñ'¨¨cÔ2Ø×ÑÔØ � ‰ Ð&¨Ñ,Ô-Ø×ÑÕr0cóî—|jj«|j«tj|«|jj d«r|jj «yy)z1Extend base class method to reset output properlyr[N)róraÚchecklinecacher Ú showtracebackrdÚopen_stack_viewerr«s r(r¯z!ModifiedInterpreter.showtracebackßsU€à �‰×"Ñ"Ô$Ø ×ÑÔÜ×,Ñ,¨TÔ2Ø �>‰>× Ñ Ð!>Ô ?Ø �N‰N× ,Ñ ,Õ .ð @r0cóh—tj}t|«D]}|dd|ddzdk7sŒ||=Œy)z%Remove keys other than ''.Nrr2r3)r4r5r6)rFr5r;s r(r®z"ModifiedInterpreter.checklinecacheçs9€ä—‘ˆÜ˜–;ˆCØ�2�Aˆw˜˜R˜S˜Ñ! TÓ)ؘ#‘Jñr0cóÖ—|jjr|j«y|jr |jj dd|fi«yt ||j «y)z*Run the code without invoking the debuggerrrBr–r)rór8Údisplay_executing_dialogrr€rBrò)rFršs r(rVzModifiedInterpreter.runcommandîsY€ð �>‰>× #Ò #Ø × )Ñ )Ô +ØØ �;Š;Ø �K‰K× #Ñ # F¨I¸°wÀÔ Cðô ��t—{‘{Ô #Ør0có„—|jjr|j«|j«|j} |jj «|s1|j �%|j jdd|fi«|_n6|r|j||j«nt||j«t$s |jj+«yy#t$rY|jjs?tjddd|jj ¬«r‚|j#«n‚YŒ„t$rLt'd|jj(¬ «|j#«|jj+«nY|jj,r3d |j_t'd |jj(¬ «n|j#«Y�Œ3xYw#t.$rYywxYw#t$s+ |jj+«w#t.$rYwwxYwwxYw) úOverride base class methodNrBr–zExit?zDo you want to exit altogether?Úyes©r rŠz IDLE internal error in runcode()rFr_)rór8r@r®rÚbeginexecutingrÚ asyncqueuer^ÚrunròrBÚ SystemExitr`r ÚaskyesnorJr¯r”rbrrgÚcanceledr")rFršrs r(r–zModifiedInterpreter.runcodeúsÈ€à �>‰>× #Ò #Ø × #Ñ #Ô %Ø ×ÑÔØ—=‘=ˆð& Ø �N‰N× )Ñ )Ô +Ù § ¡ Ð 7Ø"&§+¡+×"8Ñ"8¸ÀØ9=¸Àó#E�•áØ�— ‘ ˜T 4§;¡;Õ/ä�T˜4Ÿ;™;Ô'õ4"ðØ—N‘N×/Ñ/Õ1ð"øô3ò Ø—>‘>×)Ò)Ü×&Ñ&ØØ5Ø!ØŸ>™>×.Ñ.õ 0ð à×&Ñ&Õ(àñ)ð )ÝÜÐ8ØŸ>™>×0Ñ0õ2à×"Ñ"Ô$Ø—‘×+Ñ+Õ-à—>‘>×*Ò*Ø.3�D—N‘NÔ+ÜÐ-°D·N±N×4IÑ4IÖJà×&Ñ&Ô(þô &òÙðûõ"ðØ—N‘N×/Ñ/Õ1øÜ%òÙðúð"ús]ÁBC*ÃG=Ã*AG:Å H Å B,G:Ç7H Ç= H ÈH È H?ÈH/È.H?È/ H;È8H?È:H;È;H?cóL—|jjj|«S)rµ)rórr!)rFrs r(r!zModifiedInterpreter.write(s€à�~‰~×$Ñ$×*Ñ*¨1Ó-Ð-r0có\—tjdd|jj¬«y)NzPort Binding ErroraAIDLE can't bind to a TCP/IP port, which is necessary to communicate with its Python execution server. This might be because no networking is installed on this computer. Run IDLE with the -n command line switch to start without a subprocess and refer to Help/IDLE Help 'Running without a subprocess' for further details.©rŠ©r r’rórJr«s r(rz.ModifiedInterpreter.display_port_binding_error,s'€Ü×ÑØ ð /ð —>‘>×&Ñ&ö (r0có\—tjdd|jj¬«y)NzSubprocess Connection Errorz¢IDLE's subprocess didn't make connection. See the 'Startup failure' section of the IDLE doc, online at https://docs.python.org/3/library/idle.html#startup-failurerÀrÁr«s r(r)z/ModifiedInterpreter.display_no_subprocess_error7s(€Ü×ÑØ )ð Jð—>‘>×&Ñ&ö  (r0có\—tjdd|jj¬«y)NzAlready executingzYThe Python Shell window is already executing a command; please wait until it is finished.rÀrÁr«s r(r³z,ModifiedInterpreter.display_executing_dialog?s%€Ü×ÑØ ð 0à—>‘>×&Ñ&ö  (r0)Frb)FrC)&r¬r­r®rIrNrrrrr/r@rJrLrPr7r+r^r,rrpr4rsrerŸr�r�r�rŒr£r™r¯r®rVr–r!rr)r³r±r0r(rðrð™sÄ„òCð€HØ €FØ€JòDò Fò)óV*òXGòBò ò ó ð€Jò$CðL€Hò!òò òð" €Cò(ó ò(Hòò $óò4/òò ò,ò\.ò (ò(ó(r0rðc óP‡—eZdZddlmZde«zZeZe Z gd¢Z e jdgzZ deeej"d„e «««zZe j'ed«[d Zd Zdd lmZdd lmZd9d „Zˆfd„Zˆfd„Zd„Zd„Zd„Zd9d„Z d Z!d Z"d Z#d Z$d Z%d Z&d„Z'd„Z(d9d„Z)d„Z*d9d„Z+d„Z,d„Z-d„Z.d„Z/d„Z0d„Z1d„Z2d „Z3d!„Z4d"Z5d#„Z6d$„Z7d%„Z8d&„Z9d9d'„Z:d(„Z;d)„Ze?j€d,«ZAd-„ZBd9d.„ZCd9d/„ZDd9d0„ZEd1„ZFd2„ZGd3„ZHd:d4„ZIˆfd5„ZJˆfd6„ZKd9d7„ZLd8„ZMˆxZNS);r·r)ÚSqueezerz IDLE Shell ))rÚ_File)ÚeditÚ_Edit)rtÚ_Debug)ÚoptionsÚ_Options)ÚwindowÚ_Window)ÚhelpÚ_Help)ÚSqueezeú<>rcó—|ddk7S)Nrr\r±)Ú rmenu_items r(rÙzPyShell._s €˜: a™=¨FÒ2r0)zCopy with promptsú<>r]Fr×)ÚHistory)Ú ShellSidebarcó’—tr)|j}|dddk7r|jdd«t|«|_|€0t «}t |«|j«t|«}d|_ tj||dd«d|_ d|_ ttd«rtj nd|_|j"j%d «d |_|j"|_|j*}|j-d ¬ «|j/d |j0«|j/d|j2«|j/d|j4«|j/d|j6«|j/d|j8«|j/d|j:«|j/d|j<«|j/d|j>«tr8|j/d|j@«|j/d|jB«|jE|«|_#|j/d|jH«tjJ|_&tjN|_(tjR|_*ddl+m,}t[|d|j\|j^«|_)ta|d|j\|j^«|_%ta|d|j\d«|_'ta|d|j\|j^«|_1ts?|jJt_%|jNt_'|jRt_) ddl2}|jf|_4|jm|j*«|_7d|_8|js|«|_ |jtjvj|j*_|jtjyt{««y#tjjt_'‚xYw)Nr¥rÚshell)rØÚShe_llFéÚps1z>>> r‡r2Úchar)Úwrapz<>z<>z<>z<>z<>ú<>r[rÔz<>z<>rÑ)Úiomenur×rrÚbackslashreplaceré2)>r”Ú menu_specsrvrðrrÚTkrÚwithdrawr³Ú shell_sidebarrrIÚusetabsÚ indentwidthÚhasattrrôrÛÚsys_ps1r Úprompt_last_lineÚpromptrJÚ configurerKÚenter_callbackÚlinefeed_callbackÚcancel_callbackÚ eof_callbackr°Útoggle_debuggerÚtoggle_jit_stack_viewerÚcopy_with_prompts_callbackÚview_restart_markÚ restart_shellrÅÚsqueezerÚsqueeze_current_text_eventrÚ save_stdoutrÚ save_stderrr×Ú save_stdinrrßrÚencodingÚerrorsrrÚpydocÚ plainpagerÚpagerrfrÕÚhistoryrirÖÚperrµÚ insertfilterrà)rFrNÚmsr‘rJrßrýs r(rIzPyShell.__init__ms*€Ý Ø—‘ˆBØ�!‰u�Q‰x˜7Ò"Ø— ‘ ˜!Ð0Ô1Ü)¨$Ó/ˆŒ Ø ˆ=Ü“4ˆDÜ ˜$Ô Ø �M‰MŒOÜ# DÓ)ˆEà!ˆÔä×јd E¨4°Ô6àˆŒ àˆÔä")¬#¨uÔ"5”s—w’w¸7ˆŒ Ø $§ ¡ × 2Ñ 2°4Ó 8¸Ñ <ˆÔØ—l‘lˆŒ à�y‰yˆØ �‰˜FˆÔ#Ø � ‰ Ð*¨D×,?Ñ,?Ô@Ø � ‰ Ð0°$×2HÑ2HÔIØ � ‰ Ð+¨T×-AÑ-AÔBØ � ‰ Ð# T×%6Ñ%6Ô7Ø � ‰ Ð)¨4×+AÑ+AÔBØ � ‰ Ð'¨×)=Ñ)=Ô>Ø � ‰ Ð/°×1MÑ1MÔNØ � ‰ Ð)¨4×+JÑ+JÔKÝ Ø �I‰IÐ(¨$×*@Ñ*@Ô AØ �I‰IÐ)¨4×+=Ñ+=Ô >ØŸ ™  dÓ+ˆŒ Ø � ‰ Ð,Ø×1Ñ1ô 3ôŸ:™:ˆÔÜŸ:™:ˆÔÜŸ)™)ˆŒÝ"Ü! $¨Ø"(§/¡/°6·=±=óBˆŒ ä# D¨(Ø$*§O¡O°V·]±]óDˆŒ ä# D¨(Ø$*§O¡OÐ5GóIˆŒ ä$ T¨9Ø%+§_¡_°f·m±móEˆŒ åØŸ™ŒCŒJØŸ™ŒCŒJØŸ ™ ŒCŒIð ã à×*Ñ*ˆEŒKð —|‘| D§I¡IÓ.ˆŒ àˆÔà!×.Ñ.¨tÓ4ˆÔð  Ÿ8™8Ÿ<™<×.Ñ.ˆ� ‰ ÔØ �‰×ÑÔ7Ó9Õ:øð ÜŸ™ŒCŒJØ ús ÎP*Ð*Qcóp•—t‰|�«|j�|jj«yyrC)rÚÚ ResetFontråÚ update_font©rFrÜs €r(rzPyShell.ResetFont»s1ø€Ü ‰ÑÔà × Ñ Ð )Ø × Ñ × *Ñ *Õ ,ð *r0cóŽ•—t‰|�«tj«}dddœtj|d«tj|d«tj|d«dœ}|j «D]"\}}|j j|fi|¤ŽŒ$|j�|jj«yy)N)rdrcrrry)r×rrr) rÚÚResetColorizerrrfrgÚitemsrJÚ tag_configureråÚ update_colors)rFrjÚ tag_colorsrÃÚtag_colors_configrÜs €r(r zPyShell.ResetColorizerÁsµø€Ü ‰ÑÔ ä×%Ñ%Ó'ˆà"&°dÑ;Ü×)Ñ)¨%°Ó:Ü×)Ñ)¨%°Ó:Ü×*Ñ*¨5°(Ó;ñ  ˆ ð '1×&6Ñ&6Ö&8Ñ "ˆCÐ"Ø #ˆD�I‰I× #Ñ # CÑ =Ð+<Ó =ð'9ð × Ñ Ð )Ø × Ñ × ,Ñ ,Õ .ð *r0cóF—tj|jd¬«y)Nr×)Ú insert_tagsra)rrJr¹s r(Ú replace_eventzPyShell.replace_eventÑs€Ü�‰˜Ÿ ™ ¨wÕ7Ør0có.—tjd¬«S)NT)Ú shell_only)rÚ GetExtensionsr«s r(Úget_standard_extension_namesz$PyShell.get_standard_extension_namesÕs€Ü×%Ñ%°Ô6Ð6r0cón—|jj||«}ttt |««tt |«««}|D�cgc]'}|j j j|«‘Œ)}}djd„t||j««D««dzScc}w)z6Return text between first and last with prompts added.r‡c3ó8K—|]\}}|€|n|›d|›�–—Œy­w)NÚ r±)Ú.0rërs r(Ú z*PyShell.get_prompt_text..ãs0èø€ð á ?‘ �˜ð�N‰D¨6¨(°!°D°6Ð(:Ó :Ù ?ùs‚) rJÚgetr¦rxryråÚ line_promptsrRÚzipÚ splitlines)rFÚfirstÚlastrJÚ lineno_ranger'Úpromptss r(Úget_prompt_textzPyShell.get_prompt_textØs®€à�y‰y�}‰}˜U DÓ)ˆÜÜ ”�e“ Ó Ü ”�d“ Ó ó ˆ ñ 'ó á&�ð × Ñ × +Ñ +× /Ñ /°Õ 7Ø&ð ð ð�y‰yñ ä # G¨T¯_©_Ó->Ô ?ó ó ð ñð ùò  sÁ,B2cóþ—|j}|jd«}|€y|jd«}|ddk7r|jd«}|j«|j||«}|j |«y)aCopy selected lines to the clipboard, with prompts. This makes the copied text useful for doc-tests and interactive shell code examples. This always copies entire lines, even if only part of the first and/or last lines is selected. zsel.first linestartNúsel.lastr2Ú0zsel.last+1line linestart)rJrnÚclipboard_clearr#Úclipboard_append)rFrzrJÚselfirstÚsellastÚ prompt_texts r(róz"PyShell.copy_with_prompts_callbackész€ð�y‰yˆØ—:‘:Ð3Ó4ˆØ Ð Ø Ø—*‘*˜ZÓ(ˆØ �2‰;˜#Ò Ø—j‘jÐ!;Ó<ˆGØ ×ÑÔØ×*Ñ*¨8°WÓ=ˆ Ø ×јkÕ*r0có—|ayrC©r )rFÚstreams r(Úset_warning_streamzPyShell.set_warning_streams€à‰r0có—tSrCr-r«s r(Úget_warning_streamzPyShell.get_warning_streams€ÜÐr0cóü—|jr3tjdd|j¬«|j «y|j j «}|r|j«y|j«y)NzDon't debug nowz*You can only toggle the debugger when idlerÀra) r8r r’rJÚset_debugger_indicatorrrr4Úclose_debuggerÚ open_debugger)rFrzÚdbs r(rñzPyShell.toggle_debugger sb€Ø �>Š>Ü × Ñ Ð!2Ø<Ø—y‘yõ "ð × 'Ñ 'Ô )Øà—‘×(Ñ(Ó*ˆBÙØ×#Ñ#Õ%à×"Ñ"Õ$r0có`—|jj«}|jd| «y)NrÞ)rrr4Úsetvar©rFr6s r(r3zPyShell.set_debugger_indicators'€Ø �[‰[× $Ñ $Ó &ˆØ � ‰ Ð)°2¨v¨:Õ6r0có—yrCr±r¹s r(ròzPyShell.toggle_jit_stack_viewers€Ø r0cóÈ—|jj«}|r¶|jjd«|j«|jjr)t j |jj«|j«|jjd«|j|_ |j«|j«y)Nz [DEBUG OFF] )rrr4rpr6rrÚclose_remote_debuggerrarr!rérër<r3r9s r(r4zPyShell.close_debugger s–€Ø �[‰[× $Ñ $Ó &ˆÙ Ø �K‰K× #Ñ # DÔ )Ø �H‰HŒJØ�{‰{×!Ò!Ü×0Ñ0°·±×1CÑ1CÔDØ × Ñ Ô Ø �L‰L× Ñ ˜Ô /ØŸ,™,ˆDŒKØ �O‰OÔ Ø ×#Ñ#Õ%r0cón—|jjr+tj|jj|«}nt j |«}|jj |«|j«d|jz|_ |j«|j«y)Nz [DEBUG ON] ) rrrrÚstart_remote_debuggerrÚDebuggerrpr>rérër<r3)rFÚdbg_guis r(r5zPyShell.open_debugger-s…€Ø �;‰;× Ò Ü ×6Ñ6°t·{±{×7IÑ7IØ;?óA‰Gô×'Ñ'¨Ó-ˆGØ � ‰ ×Ñ Ô(Ø× Ñ Ô"Ø$ t§|¡|Ñ3ˆŒ Ø �‰ÔØ ×#Ñ#Õ%r0cóJ—|jrdnd}|jdd|«y)NÚdisabledryrtz *tack*iewer)r8Úupdate_menu_state)rFÚstates r(Údebug_menu_postcommandzPyShell.debug_menu_postcommand9s!€Ø"Ÿnšn‘ °(ˆØ ×јw¨ °uÕ=r0có2—|j«d|_y)úHelper for ModifiedInterpreterTN)rar8r«s r(r¸zPyShell.beginexecuting=s€à ×ÑÔØˆ�r0có@—d|_d|_|j«y)rGFN)r8r½r<r«s r(rgzPyShell.endexecutingBs€àˆŒØˆŒ Ø �‰Õr0cóЗ|jr(tjddd|j¬«}|dury|j «d|_d|_tj|«S)zExtend EditorWindow.close()zKill?z7Your program is still running! Do you want to kill it?Úokr·FÚcancelT) r8r Ú askokcancelrJr9r½r`rr6)rFrks r(r6z PyShell.closeHsa€à �>Š>Ü!×-Ñ-ØØJØØ—y‘yô "ˆHð ˜5Ñ ØØ ×ÑÔØˆŒ ؈Œ Ü×!Ñ! $Ó'Ð'r0cóX—|j«tr|jj«|jt _|jt _|jt _ d|_d|_ d|j_ d|_tj |«y)zEExtend EditorWindow._close(), shut down debugger and execution serverN)r4r”rrrPrørôrrùrrúr×rrNrqrrrªr«s r(rªzPyShell._closeWsu€à ×ÑÔÝ Ø �K‰K× 'Ñ 'Ô )à×%Ñ%ŒŒ Ø×%Ñ%ŒŒ Ø—O‘OŒŒ àˆŒ ؈Œ Ø!ˆ� ‰ ÔØˆŒ Ü×јDÕ!r0có—y)z8Override EditorWindow method: never remove the colorizerTr±r¢s r(ÚispythonsourcezPyShell.ispythonsourcegs€àr0có—|jSrC)Ú shell_titler«s r(Ú short_titlezPyShell.short_titleks€Ø×ÑÐr0z>Enter "help" below or click "Help" above for more information.c óú—|jjdd«|j«tr/d}|jj «}|s,|j «yd}tjt_|jdtj›dtj›d|j›d|›�«|jj«|j«d dl}d |_d|_y ) Nr¾rvrbFz›==== No Subprocess ==== WARNING: Running IDLE without a Subprocess is deprecated and will be removed in a later version. See Help/IDLE Help for details. zPython z on r‡rT)rJr:rar”rrr/r6rÚ displayhookrôr!ÚversionÚplatformÚ SPLASHLINEÚ focus_forcer<ÚtkinterÚ_support_default_rootÚ _default_root)rFÚnosubÚclientrYs r(r¸z PyShell.beginps·€Ø � ‰ ×ј8 XÔ.Ø ×ÑÔÝ ØˆEØ—[‘[×1Ñ1Ó3ˆFÙØ— ‘ ” Øð'ˆEô"Ÿo™oŒCŒOà � Š Ü—K“K¤§£¨t¯«ÁðGô Hà � ‰ ×ÑÔØ �‰ÔãØ(,ˆÔ%Ø $ˆÔØr0có`—|jsyd|_|jj«y©NT)ÚreadingÚ_stop_readline_flagrµÚquitr«s r(r9zPyShell.stop_readlineŠs!€Ø�|Š|Ø Ø#'ˆÔ Ø �‰� ‰ �r0có�—|j} d|_|jj«||_|jrd|_y|jj dd«}t |«dk(rd}|j«|jrd|_tst‚|jr d|_ d}|S#||_wxYw)NTFrbr¾r1rr‡) r`rµÚmainlooprarJrrœrar½r”r_Ú endoffile)rFr:rs r(ÚreadlinezPyShell.readline�s¬€Ø�|‰|ˆð ؈DŒLØ �H‰H× Ñ Ô àˆDŒLØ × #Ò #Ø',ˆDÔ $ØØ�y‰y�}‰}˜X xÓ0ˆÜ ˆt‹9˜Š>؈DØ ×ÑÔØ �=Š=Ø!ˆDŒMÝ!Ü'Ð'Ø �>Š>Ø"ˆDŒN؈D؈ øð ˆD�Lús Ž!B<Â< Ccó—yr_r±r«s r(ÚisattyzPyShell.isatty§s€Ør0cóD— |jjddd«ry |jsH|js<|j «|j j d«|j«yd|_d|_ |jre|j jrO|j j«r|j j«n|j j«|jr|jj«y#YŒþxYw)Nú sel.firstz!=r%zKeyboardInterrupt raFT)rJrËr8r`rarrr!r<rer½rr4r@rLrµrbr¹s r(rïzPyShell.cancel_callbackªsÓ€ð Ø�y‰y× Ñ  ¨d°JÔ?Øð@ð—’ $§,¢,Ø × Ñ Ô Ø �K‰K× Ñ Ð3Ô 4Ø �O‰OÔ ØØˆŒØˆŒ Ø �NŠN˜tŸ{™{×1Ò1Ø�{‰{×&Ñ&Ô(Ø— ‘ ×.Ñ.Õ0à— ‘ ×0Ñ0Ô2Ø �<Š<Ø �H‰H�M‰MŒOØøð! Ù ús ‚DÄDcóV—|jr |jsy|jjddd«r|jjddd«sy|js!|j «|j «yd|_d|_|jj«y)Nr¾z==rvr1FTra) r8r`rJrËrar6r½rerµrbr¹s r(rðzPyShell.eof_callbackÀs‚€Ø �>Š> $§,¢,Ø Ø— ‘ ×!Ñ! (¨D°(Ô;Ø— ‘ ×!Ñ! (¨D°(Ô;Ø Ø�~Š~Ø × Ñ Ô Ø �J‰JŒLð ð"ˆDŒMØ!ˆDŒNØ �H‰H�M‰MŒOØr0có®—|jr8|jjdd«|jjd«y|j |«y)Nrvr‡ra)r`rJrvÚseeÚnewline_and_indent_eventr¹s r(rîzPyShell.linefeed_callbackÏsE€à �<Š<Ø �I‰I× Ñ ˜X tÔ ,Ø �I‰I�M‰M˜(Ô #ðð × )Ñ )¨%Ô 0Ør0cór —|jr |jsy |jjdd«}|r0|jj ddd«r|j ||«y|jj ddd«�rµ|jj d d«}|�r#|jj dd|d «�rd |jjd«vrå|jj d d«}|r-|jj |d d |d «r |d |d f}|jjd d«}|rI|jj |d d|d «r&|d |jj|d dz«f}|j |jj|d |d «|«y|jjd d«}|rº|jj dd |d «rš|jjd d«}|rI|jj |d d|d «r&|d |jj|d dz«f}|j |jj|d |d «|«y|jjd d«}|rP|jj |d dd«r0|j |jj|d d«|«y|j |jjdd«|«y|jj ddd«r|jjdd«|jjdd«}|r,|j«s|jjdd«|jj ddd«r|j|«y|jjdd«|jr8|jjdd«|jjd«n|j|«|jj!«|jr|j"j%«y|j'«y#Y�ŒMxYw)Nrjr%z<=r¾rarvrÉúiomark linestartr×rrz>=rz+1czinsert lineendr|r1zend-1c linestartr‡)r8r`rJrrËÚrecallÚ tag_prevrangeÚ tag_namesÚ tag_nextrangernr:ÚstriprÑrnrvrmÚupdate_idletasksrµrbÚrunit) rFrzÚselÚprevÚ prev_consÚ next_consÚnextÚindicesrs r(rízPyShell.enter_callbackØsÕ€Ø �>Š> $§,¢,Ø ð Ø—)‘)—-‘-  ¨ZÓ8ˆCÙØ—9‘9×$Ñ$ Z°°xÔ@Ø—K‘K  UÔ+Ø"ð �9‰9× Ñ ˜X sÐ,>Õ ?ð —9‘9×*Ñ*¨7°HÓ=ˆDâØ—I‘I×%Ñ% h°°T¸!±WÕ=à T§Y¡Y×%8Ñ%8¸Ó%BÑBà ŸI™I×3Ñ3°I¸xÓH� Ù §¡×!2Ñ!2°9¸Q±<ÀÀtÈAÁwÔ!OØ% a™L¨$¨q©'Ð2�DØ ŸI™I×3Ñ3°I¸xÓH� Ù §¡×!2Ñ!2°9¸Q±<ÀÀdÈ1ÁgÔ!NØ  ™G T§Y¡Y§_¡_°Y¸q±\ÀEÑ5IÓ%JÐK�DØ— ‘ ˜DŸI™IŸM™M¨$¨q©'°4¸±7Ó;¸UÔCØØ—9‘9×*Ñ*¨7°HÓ=ˆDÙ˜Ÿ ™ ×)Ñ)Ð*:¸DÀ$ÀqÁ'ÔJØ ŸI™I×3Ñ3°IÐ?OÓP� Ù §¡×!2Ñ!2°9¸Q±<ÀÀdÈ1ÁgÔ!NØ  ™G T§Y¡Y§_¡_°Y¸q±\ÀEÑ5IÓ%JÐK�DØ— ‘ ˜DŸI™IŸM™M¨$¨q©'°4¸±7Ó;¸UÔCØà—i‘i×-Ñ-¨iÐ9KÓLˆGÙØ�y‰y× Ñ  ¨¡¨TÐ3EÔFØ— ‘ ˜DŸI™IŸM™M¨'°!©*Ð6FÓGÈÔOðð— ‘ ˜DŸI™IŸM™MÐ*<Ð>NÓOÐQVÔWØð �9‰9× Ñ ˜X s¨HÔ 5Ø �I‰I× Ñ ˜x¨Ô 2ð �I‰I�M‰M˜( HÓ -ˆÙ �Q—W‘W”YØ �I‰I× Ñ ˜X xÔ 0ð �9‰9× Ñ ˜X sÐ,>Ô ?Ø × )Ñ )¨%Ô 0Øà � ‰ ×ј8 XÔ.Ø �<Š<Ø �I‰I× Ñ ˜X tÔ ,Ø �I‰I�M‰M˜(Õ #à × )Ñ )¨%Ô 0Ø � ‰ ×"Ñ"Ô$Ø �<Š<Ø �H‰H�M‰MŒOðð �J‰JŒLØøðE Ú ús ›A R1Ò1R6cóÆ—tjdd|«}tjdd|«}|jd«}|jj « |jj ddd«|jj dd «|jjd d«}|j«jd «r-|j|«|jjd d«}|jjd|d j«|j«t|«d kDr±tjd|d «j!d «}tjd|«j!d «}|d dD]\}|j#|«r||t|«dz}|jjdd|j«z|j«Œ^|jj%d«|jj'«y#|jj%d«|jj'«wxYw)Nz^\s*\nrbz\n\s*$r‡rxr�r¨rvr1r|Ú:rrz ^([ \t]*))ÚreÚsubr rJÚundo_block_startr~r:rÚrstripÚendswithrnrvruÚuser_input_insert_tagsrœÚsearchÚgroupr�rmÚundo_block_stop)rFrrzr•ÚprefixÚorig_base_indentÚnew_base_indentrs r(rqzPyShell.recall'sÔ€ä �F‰F�9˜b !Ó $ˆÜ �F‰F�9˜b !Ó $ˆØ—‘˜“ ˆØ � ‰ ×"Ñ"Ô$ð (Ø �I‰I× Ñ  ¨¨uÔ 5Ø �I‰I× Ñ ˜x¨Ô 2Ø—Y‘Y—]‘]Ð#5°xÓ@ˆFØ�}‰}‹×'Ñ'¨Ô,Ø×-Ñ-¨eÔ4ØŸ™Ÿ™Ð'9¸8ÓD�Ø �I‰I× Ñ ˜X u¨Q¡x§~¡~Ó'7Ø!×8Ñ8ô :ä�5‹z˜AŠ~Ü#%§9¡9¨\¸5À¹8Ó#D×#JÑ#JÈ1Ó#MÐ Ü#%§9¡9¨\¸6Ó#B×#HÑ#HÈÓ#K�Ø! ! "›I�DØ—‘Ð'7Ô8à.°´cÐ:JÓ6KÐ6LÐ1MÑM˜Ø—I‘I×$Ñ$ X¨t°d·k±k³mÑ/CØ%)×%@Ñ%@õBð &ð �I‰I�M‰M˜(Ô #Ø �I‰I× %Ñ %Õ 'øð �I‰I�M‰M˜(Ô #Ø �I‰I× %Ñ %Õ 'ús ÁFH)È)7I z[ \t]*(\n[ \t]*)?\Zcó¢—|jjd«}|jjdd«}|jj d|«}|j j |«}|s_|jj|«dk(r&|jj|j|«|jj«yy)Núend-2cr¾r1rbr‡) rJrnrÚ_last_newline_rer�rrr�r~r…råÚupdate_sidebar)rFÚ index_beforerÚinput_is_completes r(rwz PyShell.runitDs €Ø—y‘y—‘ xÓ0ˆ Ø�y‰y�}‰}˜X xÓ0ˆð×$Ñ$×(Ñ(¨¨TÓ2ˆØ ŸK™K×1Ñ1°$Ó7ÐÙ Ø�y‰y�}‰}˜\Ó*¨dÒ2Ø— ‘ ×$Ñ$ T×%@Ñ%@À,ÔOØ × Ñ × -Ñ -Õ /ð!r0có—|jjr|jj«Sddlm} ||j t j|j«y#tjdd|j¬«YyxYw)Nr)Ú StackBrowserzNo stack tracez:There is no stack trace yet. (sys.last_exc is not defined)rÀ) rrrreÚidlelib.stackviewerr“r‘rôÚlast_excrNr r’rJ)rFrzr“s r(r°zPyShell.open_stack_viewerPsp€Ø �;‰;× Ò Ø—;‘;×2Ñ2Ó4Ð 4å4ð "Ù ˜Ÿ™¤C§L¡L°$·*±*Ô =ð øð  "Ü × Ñ Ð!1ð0à—y‘yö "ðús ¸,A%Á%$B cóp—|jjd«|jjd«y)Nr¾r2)rJrmr¹s r(rôzPyShell.view_restart_mark^s"€Ø � ‰ � ‰ �hÔØ � ‰ � ‰ �iÕ r0có<—|jjd¬«y)z&Callback for Run/Restart Shell Cntl-F6TrN)rrr@r¹s r(rõzPyShell.restart_shellbs€à � ‰ ×&Ñ&°Ð&Õ5r0cóê—|j«|j}|jr4|j|j«r|dt |j« }|j j dd«|jj|«|jj«|j jdd«|j«|jj«y)Nrz iomark-1crvr1)rarërér„rœrJrmrr!rår�r:Úset_line_and_columnrUÚ reset_undo)rFrës r(r<zPyShell.showpromptfs®€Ø ×ÑÔà—‘ˆØ �<Š<˜FŸO™O¨D¯L©LÔ9ØÐ/œc $§,¡,Ó/Ð/Ð0ˆFØ � ‰ ×ј) [Ô1Ø � ‰ ×ј6Ô"à ×Ñ×)Ñ)Ô+Ø � ‰ ×ј8 XÔ.Ø × Ñ Ô"Ø �‰×ÑÕr0có—|jjj}t|dd¬«}dj |j |««}|j d«s|dz }|jjjd|d«y)NéT)rëÚtabsizeÚ expand_tabsr‡rpr) rrrórër rRrÝr„rÚbottomrv)rFr¥rëÚwrapperÚ wrapped_msgs r(Ú show_warningzPyShell.show_warningtso€Ø— ‘ ×%Ñ%×+Ñ+ˆÜ E°1À$ÔGˆØ—i‘i § ¡ ¨SÓ 1Ó2ˆ Ø×#Ñ# DÔ)Ø ˜4Ñ ˆKØ �‰�‰×ÑÐ1°;ÀÕIr0cóŠ—|jjdd«}|jr|jj|«|jjd«dk7r|jj dd«|jj dd«|j «|jj«y)Nr¾r1r�r‡) rJrrÚstorervr:r™ÚctipÚremove_calltip_window)rFr�s r(razPyShell.resetoutput|sˆ€Ø—‘—‘˜x¨Ó2ˆØ �<Š<Ø �L‰L× Ñ ˜vÔ &Ø �9‰9�=‰=˜Ó " dÒ *Ø �I‰I× Ñ ˜X tÔ ,Ø � ‰ ×ј8 XÔ.Ø × Ñ Ô"Ø � ‰ ×'Ñ'Õ)r0cóò— |jjdd«tj|||d«}|jjdd«|jrd|_t st ‚|S#‚xYw)Nr¾Úrightr3F)rJr;rr!r½r”r_)rFrrÏÚcounts r(r!z PyShell.write†sm€ð Ø �I‰I× "Ñ " 8¨WÔ 5Ü ×&Ñ& t¨Q°°hÓ?ˆEØ �I‰I× "Ñ " 8¨VÔ 4ð �=Š=Ø!ˆDŒMÝ!Ü'Ð'؈ øð Ø ús ‚AA3Á3A6có~•— |jjddd«ry t‰|�«S#t$rYywxYw)NrjrÉr¾rB)rJrËrÌrÚr[rs €r(r[zPyShell.rmenu_check_cut”sJø€ð Ø�y‰y× Ñ  ¨c°8Ô<Ø!ð=ô‰wÑ&Ó(Ð(øôò Ùð ús ƒ0° <»<có\•—|jjddd«ryt‰|� «S)NrvrÉr¾rB)rJrËrÚr_rs €r(r_zPyShell.rmenu_check_pasteœs*ø€Ø �9‰9× Ñ ˜X c¨(Ô 3ØÜ‰wÑ(Ó*Ð*r0cól—|jj«|jj«yrC)röÚsqueeze_current_textrår�r¹s r(r÷z"PyShell.squeeze_current_text_event¡s$€Ø � ‰ ×*Ñ*Ô,Ø ×Ñ×)Ñ)Õ+r0có8—|jj«yrC)rår�)rFrnrJrÏs r(Úon_squeezed_expandzPyShell.on_squeezed_expand¥s€Ø ×Ñ×)Ñ)Õ+r0rC)r±)Or¬r­r®Úidlelib.squeezerrÅr rQr»rrÆrrârr°rœr6Ú itertoolsÚ takewhileÚ_idxrvÚallow_line_numbersr…Úidlelib.historyrÕÚidlelib.sidebarrÖrIrr rrr#rór`r8r½rer`rar/r1rñr3ròr4r5rEr¸rgr6rªrOrRrWr¸r9rfrhrïrðrîrírqr€rûrŽrwr°rôrõr<r¢rar!r[r_r÷r¯rÝrÞs@r(r·r·Gs´ø„Ý)à¡.Ó"2Ñ2€Kð,€NØ)€Mò€Jð×*Ñ*Ø/ð.ñ€Kð ‰s‘4Ð+˜ ×+Ñ+Ù2°KóAóóñ €Dð×Ñ�tð2ô3ð àÐØ$Ðõ(Ý,óL;ô\-ô /ò ò7òó"+ð(€GØ€IØ€HØ€IØ€GØÐò òó %ò7ó ò &ò &ò>òò ò (ò"ò ò ðR€Jòò4ò ò.óò, òòMò^(ð8"�r—z‘zÐ"8Ó9Ðò 0ó ó!ó6ò òJò*ó ô)ô+ó ,ö,r0r·c ó~—|jdk(r.dD](}|j|dd|j|d«z«Œ*yy)z6Make paste replace selection on x11. See issue #5124.Úx11)ÚTextÚEntryÚSpinboxz <>z%catch {%W delete sel.first sel.last} N)Ú_windowingsystemÚ bind_class)r‘Úclss r(Ú fix_x11_paster¿©sG€à ×Ñ Ò%Û-ˆCØ �O‰OØØØ8ØŸ™¨¨[Ó9ñ:õ ;ñ.ð&r0a¢ USAGE: idle [-deins] [-t title] [file]* idle [-dns] [-t title] (-c cmd | -r file) [arg]* idle [-dns] [-t title] - [arg]* -h print this help message and exit -n run IDLE without a subprocess (DEPRECATED, see Help/IDLE Help for details) The following options will override the IDLE 'settings' configuration: -e open an edit window -i open a shell window The following options imply -i and will open a shell: -c cmd run the command in a shell, or -r file run script from file -d enable the debugger -s run $IDLESTARTUP or $PYTHONSTARTUP before anything else -t title set title of shell window A default edit window will be bypassed when -c, -r, or - are used. [arg]* are passed to the command (-c) or script (-r) in sys.argv[1:]. Examples: idle Open an edit window or shell depending on IDLE's configuration. idle foo.py foobar.py Edit the files, also open a shell if configured to start with shell. idle -est "Baz" foo.py Run $IDLESTARTUP or $PYTHONSTARTUP, edit foo.py, and open a shell window with the title "Baz". idle -c "import sys; print(sys.argv)" "foo" Open a shell window and run the command, passing "-c" in sys.argv[0] and "foo" in sys.argv[1]. idle -d -s -r foo.py "Hello World" Open a shell window, run a startup script, enable the debugger, and run foo.py, passing "foo.py" in sys.argv[0] and "Hello World" in sys.argv[1]. echo "import sys; print(sys.argv)" | idle - "foobar" Open a shell window, run the script piped in, passing '' in sys.argv[0] and "foobar" in sys.argv[1]. c ó¸—ddl}ddlm}ddlm}ddlm}t d«dad}d}d}d}d}d} |jtjddd«\} }  D]è\} }| d k(r|}d}| dk(rd}d}| dk(rd}| dk(r7tjj!t«tj«| dk(rd}| dk(rtdtj¬ «da| dk(rD|}t"j$j'|«rn td|«tj«d}| dk(rd} d}| dk(sŒÜ|t(_d}Œê r(| ddk(r tj,j/«}d}t1t3tj$««D]C}t"j$j5tj$|«tj$|<ŒE| r| ddk(rdg| ddzt_ nÿ|rd g| zt_ ní|r|g| zt_ nÛ| r“d}g}| D]0}|j7t"j$j9|««Œ2|D]T}t"j$j5|«}|tj$vsŒ5tj$j;d|«ŒVnFt#j<«}|tj$vr tj$j;d|«t?j@dddd¬«}|xs|}|xs| }tr |s tC«tEd¬ «a#tFjI«dd!l%m&}|tF«t"j$jOt"j$j9tP«d"«}|«d#k(r7t"j$jO|d$«}tFjS|¬%«nˆ|jU«sxtVd&k\rd'}d(}nd)}d*}|D�cgc]'}t"j$jO|d+||fz«‘Œ)}}|D�cgc]}tYtF|¬,«‘Œ}}tGjZdg|¢­Žt]tF«t_tF«tatF«a1|jetFtb«|rK|sI|sG| ddD])}tbjg|«�Œ| ji|«Œ+| stbjk«|rRtbjm«}|sy|jU«r;tbjnr+|jpjs«ntbjt}|r|jw«| r|t"jxj{d-«xst"jxj{d.«}|r:t"j$j'|«r|j|j|«|s|r�|j|j�d/jƒtj««|r|j|j…|«n^|r\|j|j‡|«|j|j|«n%|r#|j‰«}|r|j‹|«tbjŒr%tFj�«tbjŒrŒ%tFj‘«t d«y#|j$rE} td | ›d t›�tj¬ «tjd «Yd} ~ �Œód} ~ wwxYwcc}wcc}w)0Nr)Úsystem)Útesting)ÚmacosxTFrz c:deihnr:st:zError: r‡rr¥r z-dz-ez-hz-iz-nz: Warning: running IDLE without a subprocess is deprecated.z-rzNo script file: z-sz-tÚ-rbrrzeditor-on-startupr)r ÚIdle)Ú className)Ú fix_scalingÚIconsÚWindowszidle.ico)r g333333!@z.png)éé é0éz.gif)rÊrËrÌz idle_%d%s)ÚmasterrÚ IDLESTARTUPÚ PYTHONSTARTUPzdif 1: import sys as _sys _sys.argv = {!r} del _sys )IÚgetoptrVrÁrrÂrÃr/r”rôÚargvÚerrorrbÚ usage_msgrÚexitrr!rPrQršr·rQr×r“r¦rœr•rpÚdirnamervÚgetcwdrrÚ NoDefaultRootrãr‘räÚ idlelib.runrÇrRÚ__file__Ú wm_iconbitmapÚisAquaTkÚ TkVersionÚ PhotoImageÚ wm_iconphotorr¿r³rNÚsetupAppr‹r}ÚnewrOÚdictrµÚlowerrqr5Úenvironrrrr�rVrWr�r£ÚpreferTabsPreferenceWarningr¢Ú inversedictrdÚdestroy)rÑrÁrÂrÃÚ enable_shellÚ enable_editrtÚcmdÚscriptÚstartupÚoptsrYr¥ÚoÚar.Úpathxr&ÚdirÚ edit_startrÇÚicondirÚiconfileÚextÚsizesÚsizeÚ iconfilesÚiconsrØÚprefer_tabs_preference_warnings r(rrêsÏ€ÛÝÝÝô�TÔØ€NØ€LØ€KØ €EØ €CØ €FØ€GðØ—]‘]¤3§8¡8¨A¨B <°Ó@‰ ˆˆd󉈈1Ø �Š9؈C؈LØ �Š9؈E؈LØ �Š9؈KØ �Š9Ü �J‰J× Ñ œYÔ 'Ü �H‰HŒJØ �Š9؈LØ �Š9Ü ÐNÜ—z‘zõ #à"ˆNØ �Š9؈FÜ�w‰w�~‰~˜fÔ%ØäÐ(¨&Ô1Ü—‘” ؈LØ �Š9؈G؈LØ �‹9Ø"#ŒGÔ Ø‰Lð?ñ@ ��Q‘˜3’Ü�i‰i�n‰nӈ؈ ä ”3”s—x‘x“=Ö !ˆÜ—g‘g—o‘o¤c§h¡h¨q¡kÓ2Œ�‰�Š ð"á ��Q‘˜3’Ø�4˜$˜q˜r˜(‘?Œ�Ù Ø�6˜D‘=Œ�Ù Ø�8˜d‘?Œ�٠؈ ؈ۈHØ �L‰LœŸ™Ÿ™¨Ó2Õ 3ðãˆCÜ—'‘'—/‘/ #Ó&ˆCØœ#Ÿ(™(’?Ü—‘—‘  3Õ'ñô �i‰i‹kˆØ ”c—h‘hÑ Ü �H‰H�O‰O˜A˜sÔ #ä×#Ñ# F¨IØ$7¸fôF€JàÒ+ €KØÒ2 { ?€Lõ™gÜŒÜ ˜Ô €D܇M�M„OÝ'Ù”Ôô�g‰g�l‰lœ2Ÿ7™7Ÿ?™?¬8Ó4°gÓ>€GÙ ƒx�9ÒÜ—7‘7—<‘< ¨Ó4ˆÜ ×Ñ 8ÐÕ,Ø �_‰_Ô Ü ˜Ò ؈CØ%‰EàˆCØ ˆEá!&ó(Ù!&˜ô—W‘W—\‘\ '¨;¸$À¸Ñ+DÕEØ!&ð ð(ñ"+ó,Ù!*�Xô¤4¨hÖ7Ø!*ð ð,ä ×ј$Ð' Ó'ô”$ÔÜ”$ÔÜ œDÓ !€EØ ‡O�O”Dœ%Ô áÙ‘vØ ¡›G�Ü—:‘:˜hÓ'Ñ/à—K‘K Õ)ð$ñÜ— ‘ ” áÜ× Ñ Ó"ˆÙØ Ø �?‰?Ô ¤§¢ð �I‰I�O‰OÕ ä— ‘ ˆñ Ø ×ÑÔÙÜ—:‘:—>‘> -Ó0ò3Ü—:‘:—>‘> /Ó2ð á œŸ™Ÿ™ xÔ0Ø �L‰L× !Ñ ! (Ô +Ù ‰fØ � ‰ ×Ñð!÷‘&œŸ™Ó"ô  $ñ Ø �L‰L× #Ñ # CÕ (Ù Ø �L‰L× (Ñ (¨Ô 0Ø �L‰L× !Ñ ! &Õ )Ù ð*0×)KÑ)KÓ)MÐ&Ù )Ø × Ñ Ð=Ô >ä × Ò Ü � ‰ Œô × Ó ä‡L�L„NÜ�UÕøðy �<‰<òÜ �˜�u˜Bœy˜kÐ*´·±Õ<Ü �‰�� Š ûðüòn(ùò,s#±&[;Ð,]Ð6]Û;]Ü :] Ý ])NN)Nrôr¬rõrYÚ ImportErrorrbrfr»rVÚ idlelib.utilr r ršr r±r4rPÚos.pathr r€r#rÚtextwrapr rHrr’r,Úidlelib.colorizerrÚidlelib.configrÚidlelib.delegatorrrrrÚidlelib.editorrrÚidlelib.filelistrÚidlelib.outwinrrrrÙrrrÚ idlelib.undorr”rrùÚeofrÕrbÚ NameErrorr r)r+r/Ú checkcacher<r>r³r»rÆràÚ RPCClientrãrîrðr·r¿rÔrr±r0r(Úr sñðó Ø ˆzÒØ%(§[¡[°Ñ%<€C‡K�KÐ!Ñ"ðÜð ‡<�<�7ÒÝ*Ù„Oåå'ÛÛÛ ÛÝ#Û Û ÛÝ ÛÛ ÛÛå,Ý#Ý'ÝÝß6Ý%Ý'ÝÝßGÑGÝ&ð€à€Ø€ð Ø €CØ€D„HØ€D„Hð—‘€ð>Bó ð"Ðò )ñ�Ôà+/Ø2;×2FÑ2Fóð(5€ Ôô{"˜,ô{"ô|�hôô( 2˜^ô 2ô/˜Mô/ôD1  ô1ô�#—-‘-ôò ôk(Ð0ôk(ô\ _ ,ˆlô_ ,òD;ð4 € òlnðb ˆzÒÙ„Fá�Õøðk4òÙ ð 9Ø?B¿~¹~õOá �Q‹-Ððûðbò Ùð ús§F(Ã!G Æ("G Ç GÇG