œ_#ÁÕ§TE NAŒ“KeÉ:”(åŽÖJÞùY’‚ñùž7; «]Û ý`8g“¯B© jdÖÖ¸ðzœ¸¦4Ç3Kó^(ÍÖ¼ Õ€pvìwšõB4df$Èü^0˜…åÌC$#2FŽÑ§±¦ÛZ/÷š&m£ñzÒÖ ’.Î]!Î;ƒ(Õ–¢d/—#Kª+tZyuÏB>NÛÖ†(¸ŒSà'³„Y˜´-_•¦¼´˜OlNK§¶ÒàŠˆTHµƒeTPå·fïM’…þuÏÍüp6دªE£åü‡ZØ'CKF#â«;‹eyO Qp„†l"ö1èíÙP ÏŒúl! BÝ2ñª•_VÁÉ÷3eu`–F¸ìI--ö<¿žë¯4õ캿¢)34Å{wMÉ2ÆÖFŸ¥`e9Ú¶¸P‡.”FÔï rY ‚²ÈTB,{ÛœéJ}«àQ4¹0Rû4D‚B§S‘ dO•v¾„™Sן¯3FeŸ™«+ÓâwH dÕÛÌì·P4ë&¥#rÜÉ Ù¦ê†ý·xòqk¯2,¹§™E\ék‚×Sá”ÚºÙ⺷ö£6…à ʾ qSá³Å|;àû}4Ÿ($â¹VY~óÍ!èÜÒŒËX½Ù1j‚VíÍŸš³+œ]«½g{_{/vµ½\¢¶vÉWKÿ:ñám½ ¥ S²x‘t ŽšÝÙÿÀÇ^ný PK IW™k‚½÷ á _rels/.relsUT dìd dìd dìd’ÏNÃ0‡ï{ŠÈ÷ÕÝ@¡¥» ¤Ý*`%îÑ&QâÁöö‚J£ì°cœŸ¿|¶²ÙÆA½rL½wVE Šñ¶w†çúay * 9Kƒw¬áÈ ¶ÕbóÄIîI]’Ê—4t"á1™ŽGJ…ìòMããH’±Å@æ…ZÆuYÞ`üÍ€jÂT;«!îì T}|Û7MoøÞ›ýÈNN<|v–í2ÄÜ¥ÏèšbË¢Ázó˜Ë )„"£OÏ7ú{ZYÈ’yÞç#1'tuÉM?6o>Z´_å9›ëKÚ˜}?þ³žÏÌ·N>fµx PK IWª½e ¢ U € word/document.xmlUT dìdPK IWþË3” z €J¢ word/settings.xmlUT dìdPK IWC‡{š' ƒ €¤ docProps/custom.xmlUT dìdPK IW츱=Œ €‡¥ [Content_Types].xmlUT dìdPK IWV%ë±" €U§ docProps/app.xmlUT dìdPK IW€RŒ 3 €¶¨ docProps/core.xmlUT dìdPK IWkòDn ô €ª word/_rels/document.xml.relsUT dìdPK IW;$î €Î« word/fontTable.xmlUT dìdPK IW+åäz] ÷. €ý¬ word/numbering.xmlUT dìdPK IW¤2×r- ¿ €›° word/styles.xmlUT dìdPK IWMFÒ ø €´ word/header1.xmlUT dìdPK IWF— T e €· word/media/image1.jpegUT dìdPK IW!Yéáå €°Ë word/media/image2.pngUT dìdPK IW°Àºë ú €ÙÌ word/media/image3.pngUT dìdPK IW$“†ª L €Î word/footer1.xmlUT dìdPK IWzaGôM €ñÑ word/footer2.xmlUT dìdPK IW–µâº P €}Õ word/theme/theme1.xmlUT dìdPK IW™k‚½÷ á €{Û _rels/.relsUT PK ! bîh^ [Content_Types].xml ¢( ¬”ËNÃ0E÷HüCä-Jܲ@5í‚Ç*Q>Àēƪc[žiiÿž‰ûB¡j7±ÏÜ{2ñÍh²nm¶‚ˆÆ»R‹ÈÀU^7/ÅÇì%¿’rZYï @1__f› ˜q·ÃR4DáAJ¬h>€ãÚÇV߯¹ªZ¨9ÈÛÁàNVÞ8Ê©ÓãÑÔji){^óã-I‹"{Üv^¥P!XS)bR¹rú—K¾s(¸3Õ`cÞ0†½ÝÎß»¾7M4²©ŠôªZÆk+¿|\|z¿(Ž‹ôPúº6h_-[ž@!‚ÒØ Pk‹´2nÏ}Ä?£LËð Ýû%áÄßdºždN"m,à¥ÇžDO97*‚~§Èɸ8ÀOíc|n¦Ñ äEøÿöéºóÀBÉÀ!$}‡íàÈé;{ìÐå[ƒîñ–é2þ ÿÿ PK ! µU0#ô L _rels/.rels ¢( ¬’MOÃ0†ïHü‡È÷ÕÝBKwAH»!T~€Iܵ£$Ý¿'TƒG½~üÊÛÝ<êÈ!öâ4¬‹;#¶w†—úqu *&r–Fq¬áÄvÕõÕö™GJy(v½*«¸¨¡KÉß#FÓñD±Ï.W ¥†=™ZÆMYÞbø®ÕBS톰·7 ê“Ï›×–¦é ?ˆ9LìÒ™ÈsbgÙ®|Èl!õùUSh9i°bžr:"y_dlÀóD›¿ý|-NœÈR"4ø2ÏGÇ% õZ´4ñËyÄ7 ëÈðÉ‚‹¨Þ ÿÿ PK ! Q48wÛ — xl/workbook.xml¤UÙnâ0}iþ!cñ‡ *–¢AšVU×$dC¬&vÆv UÕŸë@XÊK§/¹p|Žï¹N÷b“¥Ö •Š ÞC¸î"‹òHÄŒ¯zèá~b·‘¥4á1I§=ôJºèÿüÑ] ù¼âÙ ®z(Ñ:GE ͈ª‹œrˆ,…̈†©\9*—”Ä*¡Tg©ã¹nàd„q´Eåg0ÄrÉ":Q‘Q®· ’¦D}•°\UhYô¸ŒÈç"·#‘å ±`)Ó¯%(²²(œ®¸d‘‚ì nZ w v¡ñª• t¶TÆ")”Xê:@;[Ògú±ë`|²›ó=ø’ïHúÂL÷¬dðEVÁ+8€a÷Ûh¬Uz%„Íû"ZsÏÍCýî’¥ôqk]‹äù5ÉL¦Rd¥Dé˘i÷P ¦bM/|dÉ",…¨çãFNoçiûéë>aêiçsó#ðÄ ÕTr¢éHp ÜIú®ÝJìQ"ÀÜÖ-ý[0I¡¦ÀZ Z…d¡nˆN¬B¦=4 g %PDF-1.4 %âãÏÓ 3 0 obj << /Linearized 1 /L 422775 ÿØÿà JFIF ÿÛ C ÿÛ C ÿÀ X" ÿÄ ÿÄ H !1A"Qaq2‘¡#±ÁBRÑ3Cbrá$S‚¢²ð4ñ%6DTc’ÂsÿÄ ÿÄ = !1AQ"aq‘Á2R¡±BÑð#3br’²4á$‚¢ÂñÿÚ ? áHBßÝ`„! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! ! stream
�
{fc @ ss d Z d d l Z d d l Z d d l m Z d d
d � � YZ e d k ro d d l Z e j d d d �n d S( s� Provide advanced parsing abilities for ParenMatch and other extensions.
HyperParser uses PyParser. PyParser mostly gives information on the
proper indentation of code. HyperParser gives additional information on
the structure of code.
i����N( t PyParset HyperParserc B st e Z d � Z d � Z d � Z d � Z d e d � Z d Z e j
e j d Z e j
d Z
d � Z d � Z RS(
c C s� | | _ | j | _ } t j | j | j � } d � } | | j | � � } | j s x� | j D]� } t | | d � } t
| � d } d | }
| j | j | |
� d � | j
| j | � � } | d
k s� | d k rb Pqb qb W| j | p� d � n_ | j d | � } | r%| d } n d } d | }
| j | j | |
� d � | j d � | j d | _ |
| _ | j � | _ g t t | j � � D]8 }
|
d k o�| j |
d | j |
d d k ^ q�| _ | j | � d
S( s; To initialize, analyze the surroundings of the given index.c S s t t | � � S( N( t intt float( t index( ( s+ /usr/lib64/python2.7/idlelib/HyperParser.pyt
index2line s i s .0s %d.ends
i t consoles 1.0i����N( t editwint textR t Parsert indentwidtht tabwidthR t context_use_ps1t num_context_linest maxt reprt set_strt gett find_good_parse_startt _build_char_in_string_funct Nonet set_lot
tag_prevranget strt rawtextt stopatindext get_last_stmt_bracketingt
bracketingt ranget lent isopenert set_index( t selfR R R t parserR t lnot contextt startatt startatindexR t bodt rt i( ( s+ /usr/lib64/python2.7/idlelib/HyperParser.pyt __init__ s:
Tc C s t | j � t | j j | | j � � } | d k rJ t d | � � n | | _ d | _ xP | j t | j � d k r� | j | j d d | j k r� | j d 7_ q_ W| j t | j � d k r| j | j d d | j k r| j | j d r| j d 7_ n d S( sg Set the index to which the functions relate.
The index must be in the same statement.
i s( Index %s precedes the analyzed statementi N(
R R R R R t
ValueErrort indexinrawtextt indexbracketR R ( R R R+ ( ( s+ /usr/lib64/python2.7/idlelib/HyperParser.pyR E s
!!c C s/ | j | j o. | j | j | j d d k S( s2 Is the index given to the HyperParser in a string?i t "t '( R- R. ( R R, R R ( R ( ( s+ /usr/lib64/python2.7/idlelib/HyperParser.pyt is_in_stringZ s c C s0 | j | j p/ | j | j | j d d k S( s5 Is the index given to the HyperParser in normal code?i t #R- R. ( R0 R- R. ( R R, R R ( R ( ( s+ /usr/lib64/python2.7/idlelib/HyperParser.pyt
is_in_codeb s s ([{c C s� | j | j d } | j } x{ | j | sc | j | j | d | k sc | j | d | k r� | d 8} | d k r} d St | | j | d � } q W| j d } x: | t | j � k r� | j | d | k r� | d 7} q� W| j j d | j t | j � | j | d f � } | t | j � k sQ| j | d t | j � k rg| r[d S| j } n; | j j d | j t | j � | j | d d f � } | | f S( s� Return bracket indexes or None.
If the index given to the HyperParser is surrounded by a
bracket defined in openers (or at least has one before it),
return the indices of the opening bracket and the closing
bracket (or the end of line, whichever comes first).
If it is not surrounded by brackets, or the end of line comes
before the closing bracket and mustclose is True, returns None.
i i s %s-%dcN(
R R, R R R t minR R R R ( R t openerst mustcloset bracketinglevelt beforet aftert beforeindext
afterindex( ( s+ /usr/lib64/python2.7/idlelib/HyperParser.pyt get_surrounding_bracketsh s0
+ )s
\t _c C s� | } x1 | | k r9 | | d | j k r9 | d 8} q W| | k rx | | | j k so t j | | | !� rx | } n | | S( Ni ( t _id_charst _id_first_charst keywordt iskeyword( R R t limitt posR( ( ( s+ /usr/lib64/python2.7/idlelib/HyperParser.pyt _eat_identifier� s & c
C st | j � s t d � � n | j } | j } | j } | | d } | j } | } t } x
x� | | k r� | | d | j k r� | d 8} q_ | r� | | k r� | | d d k r� | d 8} t } q_ | | k r*| d k r*| | | d d d k r*| d 8} | | d } | | d d } q_ Pq_ W| s9Pn | j | | | � } | rm| | } | } t } q\ | | k ra| | d } x2 | d k r�| | d d | k r�| d 8} q�W| | d | k r�Pn | | d } | d 8} | | d } | } | | d k rqb| | d k r]x. | d k rS| | d d k rS| d 8} q&W| } n Pq\ Pq\ W| | | j !S(
s� Return a string with the Python expression which ends at the
given index, which is empty if there is no real one.
s? get_expression should only be called if index is inside a code.i i t .R0 i s ([s '"t rRbBuU(
R1 R* R R R, R+ t Truet _whitespace_charsRB t False(
R R R t
brck_indext
brck_limitRA t last_identifier_post
postdot_phaset rett level( ( s+ /usr/lib64/python2.7/idlelib/HyperParser.pyt get_expression� sb #
'
# ( t __name__t
__module__R) R R/ R1 RG R: RF t stringt
ascii_letterst digitsR<