§
    øÛgê8  ã                   óê   — d dl mZ d dlmZ d dlZd dlZd dlZd dlZd dlm	Z	 e
Z	 d dlZd dlmZ n# e$ r d ZdZY nw xY w G d„ de¦  «        Zddej        d fd	„Zd
„ Zd„ Zd„ Zdd„Zd„ Zdd„Zdd„ZdS )é    )Ú
generators)Úbisect_rightN)Ú
ModuleType)ÚPyCF_ONLY_ASTc                   óŠ   — e Zd ZdZdZd„ Zd„ ZdZd„ Zd„ Z	d„ Z
dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd„ Zddej        ddfd„ZdS )ÚSourcezY a immutable object holding a source code fragment,
        possibly deindenting it.
    r   c                 óZ  — g x| _         }|                     dd¦  «        }|                     dd¦  «        }|D ]ò}|sg }t          |t          ¦  «        r|j         }n©t          |t          t
          f¦  «        rd„ |D ¦   «         }n€t          |t          j        j        ¦  «        rK| 	                    d¦  «        }|r3|r1|d          
                    ¦   «         rn|                     ¦   «          |°1nt          ||¬¦  «        j         }|rt          |¦  «        }|                     |¦  «         Œód S )NÚdeindentTÚrstripc                 ó8   — g | ]}|                      d ¦  «        ‘ŒS ©ú
©r   ©Ú.0Úxs     úJ/granary/edev/quantum/lib/python3.11/site-packages/_pytest/_code/source.pyú
<listcomp>z#Source.__init__.<locals>.<listcomp>!   s"   € Ð:Ð:Ð:°˜QŸXšX d™^œ^Ð:Ð:Ð:ó    r   éÿÿÿÿ)r
   )ÚlinesÚgetÚ
isinstancer   ÚtupleÚlistÚpyÚbuiltinÚ_basestringÚsplitÚstripÚpopÚ	getsourcer
   Úextend)ÚselfÚpartsÚkwargsr   Úder   ÚpartÚ	partliness           r   Ú__init__zSource.__init__   sL  € ØÐˆŒ
�UØ�ZŠZ˜
 DÑ)Ô)ˆØ—’˜H dÑ+Ô+ˆØð 	$ð 	$ˆDØð Ø�	Ý˜$¥Ñ'Ô'ð ?Ø œJ�	�	Ý˜D¥5­$ -Ñ0Ô0ð 
?Ø:Ð:°TÐ:Ñ:Ô:�	�	Ý˜D¥"¤*Ô"8Ñ9Ô9ð ?Ø ŸJšJ tÑ,Ô,�	Øð (Ø#ð (Ø$ Rœ=×.Ò.Ñ0Ô0ð "Ø!Ø!Ÿš™œ˜ð $ð (øõ
 & d°RÐ8Ñ8Ô8Ô>�	Øð 0Ý$ YÑ/Ô/�	Ø�LŠL˜Ñ#Ô#Ð#Ð#ð%	$ð 	$r   c                 óš   — 	 | j         |j         k    S # t          $ r. t          |t          ¦  «        rt          | ¦  «        |k    cY S Y dS w xY w)NF)r   ÚAttributeErrorr   Ústr)r$   Úothers     r   Ú__eq__zSource.__eq__/   sa   € ð	Ø”: ¤Ò,Ð,øÝð 	ð 	ð 	Ý˜%¥Ñ%Ô%ð *Ý˜4‘y”y EÒ)Ð)Ð)Ð)Ø�5�5ð	øøøs   ‚ ’2A
Á	A
Nc                 óÒ   — t          |t          ¦  «        r| j        |         S |j        dvrt	          d¦  «        ‚t          ¦   «         }| j        |j        |j        …         |_        |S )N)Né   z!cannot slice a Source with a step)r   Úintr   ÚstepÚ
IndexErrorr   ÚstartÚstop)r$   ÚkeyÚ	newsources      r   Ú__getitem__zSource.__getitem__9   sb   € Ý�c�3ÑÔð 	Ø”:˜c”?Ð"àŒx˜yÐ(Ð(Ý Ð!DÑEÔEÐEÝ™œˆIØ"œj¨¬°3´8Ð);Ô<ˆIŒOØÐr   c                 ó*   — t          | j        ¦  «        S ©N)Úlenr   ©r$   s    r   Ú__len__zSource.__len__C   s   € Ý�4”:‰ŒÐr   c                 ó¾  — dt          | ¦  «        }}||k     rI| j        |                              ¦   «         s*|dz  }||k     r| j        |                              ¦   «         ¯*||k    rO| j        |dz
                                ¦   «         s-|dz  }||k    r"| j        |dz
                                ¦   «         ¯-t          ¦   «         }| j        ||…         |j        dd…<   |S )z] return new source object with trailing
            and leading blank lines removed.
        r   r1   N)r<   r   r    r   )r$   r5   ÚendÚsources       r   r    zSource.stripF   sÙ   € ð �˜D™	œ	ˆsˆØ�cŠkˆk $¤*¨UÔ"3×"9Ò"9Ñ";Ô";ˆkØ�Q‰JˆEð �cŠkˆk $¤*¨UÔ"3×"9Ò"9Ñ";Ô";ˆkà�EŠkˆk $¤*¨S°©UÔ"3×"9Ò"9Ñ";Ô";ˆkØ�1‰HˆCð �EŠkˆk $¤*¨S°©UÔ"3×"9Ò"9Ñ";Ô";ˆkå‘”ˆØœ* U¨3 YÔ/ˆŒ�Q�Q�Q‰Øˆr   Ú ú    c                 ó´   ‡— t          |¦  «        }t          |¦  «        }t          ¦   «         }ˆfd„| j        D ¦   «         }|j        |z   |j        z   |_        |S )ze return a copy of the source object with
            'before' and 'after' wrapped around it.
        c                 ó   •— g | ]}‰|z   ‘ŒS © rF   ©r   ÚlineÚindents     €r   r   z$Source.putaround.<locals>.<listcomp>Z   s   ø€ Ð9Ð9Ð9 d�6˜D‘=Ð9Ð9Ð9r   ©r   r   )r$   ÚbeforeÚafterrI   r8   r   s      `  r   Ú	putaroundzSource.putaroundS   sZ   ø€ õ ˜‘”ˆÝ�u‘”ˆÝ‘H”Hˆ	Ø9Ð9Ð9Ð9¨d¬jÐ9Ñ9Ô9ˆØ œ,¨Ñ.°%´+Ñ=ˆ	ŒØÐr   c                 óT   ‡— t          ¦   «         }ˆfd„| j        D ¦   «         |_        |S )zl return a copy of the source object with
            all lines indented by the given indent-string.
        c                 ó   •— g | ]}‰|z   ‘ŒS rF   rF   rG   s     €r   r   z!Source.indent.<locals>.<listcomp>c   s   ø€ Ð@Ð@Ð@¨T˜F 4™KÐ@Ð@Ð@r   rJ   )r$   rI   r8   s    ` r   rI   zSource.indent^   s1   ø€ õ ‘H”Hˆ	Ø@Ð@Ð@Ð@°T´ZÐ@Ñ@Ô@ˆ	ŒØÐr   Fc                 óH   — |                       ||¦  «        \  }}| ||…         S )zc return Source statement which contains the
            given linenumber (counted from 0).
        )Úgetstatementrange)r$   ÚlinenoÚ	assertionr5   r@   s        r   ÚgetstatementzSource.getstatementf   s+   € ð ×+Ò+¨F°IÑ>Ô>‰
ˆˆsØ�E˜#�IŒÐr   c                 óˆ   — d|cxk    rt          | ¦  «        k     sn t          d¦  «        ‚t          || ¦  «        \  }}}||fS )z{ return (start, end) tuple which spans the minimal
            statement region which containing the given lineno.
        r   zlineno out of range)r<   r4   Úgetstatementrange_ast)r$   rR   rS   Úastr5   r@   s         r   rQ   zSource.getstatementrangem   sW   € ð �VÐ'Ð'Ò'Ð'�c $™iœiÒ'Ð'Ð'Ð'ÝÐ2Ñ3Ô3Ð3Ý/°¸Ñ=Ô=‰ˆˆU�CØ�cˆzÐr   c                 ó`   — t          ¦   «         }t          | j        |¦  «        |j        dd…<   |S )a:   return a new source object deindented by offset.
            If offset is None then guess an indentation offset from
            the first non-blank line.  Subsequent lines which have a
            lower indentation offset will be copied verbatim as
            they are assumed to be part of multilines.
        N)r   r
   r   )r$   Úoffsetr8   s      r   r
   zSource.deindentv   s/   € õ ‘H”Hˆ	Ý% d¤j°&Ñ9Ô9ˆ	Œ˜˜˜ÑØÐr   Tc                 ó   — 	 ddl }|j        }n# t          $ r d„ }Y nw xY w|r"t          |                      ¦   «         ¦  «        }nt          | ¦  «        }	  ||dz   ¦  «         dS # t
          $ r ‚ t          $ r Y dS w xY w)zb return True if source is parseable, heuristically
            deindenting it by default.
        r   Nc                 ó$   — t          | dd¦  «        S )NÚasdÚexec)Úcompile)r   s    r   ú<lambda>z$Source.isparseable.<locals>.<lambda>Š   s   € ¥w¨q°%¸Ñ'@Ô'@€ r   r   TF)ÚparserÚsuiteÚImportErrorr-   r
   ÚKeyboardInterruptÚ	Exception)r$   r
   r`   Úsyntax_checkerrA   s        r   ÚisparseablezSource.isparseableƒ   sÍ   € ð	*ØˆMˆMˆMð $œ\ˆNˆNøõ ð 	Að 	Að 	AØ@Ð@ˆNˆNˆNð	Aøøøð
 ð 	Ý˜Ÿš™œÑ)Ô)ˆFˆFå˜‘Y”YˆFð	àˆN˜6 $™;Ñ'Ô'Ð'ð �4øõ !ð 	ð 	ð 	ØÝð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ Ž�ÁA% Á%A=Á<A=c                 ó6   — d                      | j        ¦  «        S )Nr   )Újoinr   r=   s    r   Ú__str__zSource.__str__œ   s   € Ø�yŠy˜œÑ$Ô$Ð$r   r]   c                 óD  — |r3t           j                             |¦  «                             d¬¦  «        r`|€t	          j        d¦  «        }|j        j        |j        }}d| j	        z  }| j
        xj	        dz  c_	        |s|d||fz  z   }n|d|||fz  z   }d                     | j        ¦  «        dz   }		 t          |	|||¦  «        }
|t          z  r|
S d	„ | j        D ¦   «         }t          j        d         d
k    rHt!          d¦  «        }dt           j        j        j        |<   |t           j        j        j        d<   d|_        dd||ft           j        j        j        |<   |
S # t0          $ rµ t	          j        ¦   «         d         }| j        d|j        …         }|j        r |                     d|j        z  dz   ¦  «         |                     d|z  ¦  «         t1          d                     |¦  «        ¦  «        }|j        |_        |j        |_        |j        |_        |‚w xY w)z­ return compiled code object. if filename is None
            invent an artificial filename which displays
            the source/line position of the caller frame.
        r   )ÚfileNr1   z<%d-codegen z%s:%d>z	%r %s:%d>r   c                 ó   — g | ]}|d z   ‘ŒS r   rF   r   s     r   r   z"Source.compile.<locals>.<listcomp>Â   s   € Ð4Ð4Ð4 A�a˜$‘hÐ4Ð4Ð4r   é   Ú_pycodecompile_pseudo_moduleú ú^z*(code was compiled probably from here: %s))r   ÚpathÚlocalÚcheckÚsysÚ	_getframeÚf_codeÚco_filenameÚf_linenoÚ_compilecounterÚ	__class__rh   r   Úcpy_compileÚ	_AST_FLAGÚversion_infor   ÚstdÚinspectÚmodulesbyfileÚmodulesÚ
__loader__Ú	linecacheÚcacheÚSyntaxErrorÚexc_inforR   rY   ÚappendÚtext)r$   ÚfilenameÚmodeÚflagÚdont_inheritÚ	_genframeÚfnrR   ÚbaserA   Úcor   ÚmÚexÚmsglinesÚnewexs                   r   r^   zSource.compileŸ   s.  € ð ð 		G�2œ7Ÿ=š=¨Ñ2Ô2×8Ò8¸aÐ8Ñ@Ô@ð 		GØÐ ÝœM¨!Ñ,Ô,�	Ø!Ô(Ô4°iÔ6HˆvˆBØ! DÔ$8Ñ8ˆDØŒNÐ*Ô*¨aÑ/Ð*Ô*Øð GØ (¨b°&¨\Ñ"9Ñ9��à +°¸2¸vÐ0FÑ"FÑF�Ø—’˜4œ:Ñ&Ô&¨Ñ-ˆð	Ý˜V X¨t°TÑ:Ô:ˆBð •iÑð Ø�	Ø4Ð4¨¬Ð4Ñ4Ô4ˆEÝÔ Ô" aÒ'Ð'õ Ð=Ñ>Ô>�Ø9=•””Ô,¨XÑ6Ø+,•””
Ô" 4Ñ(Ø �”Ø01°4¸ÀÐ/I�BŒFÔÔ" 8Ñ,ØˆIøõ3 ð 	ð 	ð 	Ý”‘” Ô"ˆBà”z * 2¤9 *Ô-ˆHØŒyð 5Ø—’  B¤I¡°Ñ 3Ñ4Ô4Ð4Ø�OŠOÐHÈ8ÑSÑTÔTÐTÝ §	¢	¨(Ñ 3Ô 3Ñ4Ô4ˆEØœ9ˆEŒLØœ9ˆEŒLØœˆEŒJØˆKð	øøøs   Â4E  Å B?H)rB   rB   rC   )rC   ©Fr;   )T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ry   r*   r/   Ú__hash__r9   r>   r    rM   rI   rT   rQ   r
   rf   ri   r   Úcompiler_flagr^   rF   r   r   r   r      s$  € € € € € ðð ð €Oð$ð $ð $ð0ð ð ð €Hðð ð ðð ð ðð ð ð	ð 	ð 	ð 	ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð2%ð %ð %ð  $¨&ØÔ-Ø¨$ð-ð -ð -ð -ð -ð -r   r   r]   c                 óæ   — t           �-t          | t           j        ¦  «        rt          | ||||¦  «        S t	          j        d¦  «        }t          | ¦  «        }|                     ||||¬¦  «        }|S )zÙ compile the given source to a raw code object,
        and maintain an internal cache which allows later
        retrieval of the source code for the code object
        and any recursively created code objects.
    Nr1   )r�   )Ú_astr   ÚASTr{   rt   ru   r   r^   )rA   r‰   rŠ   ÚflagsrŒ   r�   Úsr�   s           r   Úcompile_r¡   Ò   si   € õ Ð�J v­t¬xÑ8Ô8Ðå˜6 8¨T°5¸,ÑGÔGÐGÝ”˜aÑ Ô €IÝˆv‰Œ€AØ	
�Š�8˜T 5°IˆÑ	>Ô	>€BØ€Ir   c                 ó  — ddl }	 |j                             | ¦  «        }|j        }|j        }n·# t
          $ rª 	 t          j        j         	                    | ¦  «        p#t          j        j         
                    | ¦  «        }n# t
          $ r Y Y dS w xY w|rt          j                             |¦  «        pd}d}|r$	 t          | ¦  «        \  }}n# t          $ r Y nw xY wY nw xY wt          |t          ¦  «        sJ ‚||fS )zx Return source location (path, lineno) for the given object.
    If the source cannot be determined return ("", -1)
    r   N)rB   r   r   )Ú_pytest._codeÚ_codeÚCoderq   ÚfirstlinenoÚ	TypeErrorr   r~   r   ÚgetsourcefileÚgetfilerr   Ú
findsourceÚIOErrorr   r2   )ÚobjÚ_pytestÚcodeÚfspathrR   rŽ   Ú_s          r   Úgetfslinenor±   â   s?  € ð ÐÐÐð"ØŒ}×!Ò! #Ñ&Ô&ˆð  ”ˆØÔ!ˆˆøõ! ð ð ð ð	Ý”&”.×.Ò.¨sÑ3Ô3ð .Ý”&”.×(Ò(¨Ñ-Ô-ð ˆBøåð 	ð 	ð 	Ø�6�6�6ð	øøøð Ð)�œŸš bÑ)Ô)Ð1¨TˆØˆØð 	ðÝ& s™OœO‘	��6�6øÝð ð ð Ø�ðøøøøøðøøøõ" �f�cÑ"Ô"Ð"Ð"Ð"Ø�6ˆ>ÐsW   †/ ¯
C#ºABÂC#Â
BÂC#ÂBÂ*C#Â=CÃC#Ã
CÃC#ÃCÃC#Ã"C#c                 óÒ   — 	 t           j        j                             | ¦  «        \  }}n# t           j        j        $ r ‚  Y dS xY wt          ¦   «         }d„ |D ¦   «         |_        ||fS )N)Nr   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rF   r   )r   rH   s     r   r   zfindsource.<locals>.<listcomp>	  s    € Ð:Ð:Ð: d�D—K’K‘M”MÐ:Ð:Ð:r   )r   r~   r   rª   r   Ú_sysexr   r   )r¬   ÚsourcelinesrR   rA   s       r   rª   rª     sw   € ðÝ œfœn×7Ò7¸Ñ<Ô<Ñˆ�V�VøÝŒ:Ôð ð ð ØðØˆxˆxøøøÝ‰XŒX€FØ:Ð:¨kÐ:Ñ:Ô:€F„LØ�6ˆ>Ðs	   ‚'* ªAc                 óÖ   — dd l }|j                             | ¦  «        } 	 t          j        | ¦  «        }n# t
          $ r d}Y nw xY wt          |t          ¦  «        sJ ‚t          |fi |¤ŽS )Nr   z<"Buggy python version consider upgrading, cannot get source")	r£   r¤   Ú
getrawcoder   r"   ÚIndentationErrorr   r-   r   )r¬   r&   r­   Ústrsrcs       r   r"   r"     s�   € ØÐÐÐØ
Œ-×
"Ò
" 3Ñ
'Ô
'€CðRÝÔ" 3Ñ'Ô'ˆˆøÝð Rð Rð RØQˆˆˆðRøøøå�f�cÑ"Ô"Ð"Ð"Ð"Ý�&Ð#Ð#˜FÐ#Ð#Ð#s    5 µAÁAc                 óZ  ‡
— |€R| D ]M}|                      ¦   «         }|                     ¦   «         }|r!t          |¦  «        t          |¦  «        z
  } nŒNd}|dk    rt          | ¦  «        S g }d„ } || ¦  «        Š
	 t	          j        ˆ
fd„¦  «        D ]Ð\  }}\  }}\  }}}|t          | ¦  «        k    r n®|t          |¦  «        k    rl| |dz
                                 ¦   «         }|                     ¦   «         r&|d |…                              ¦   «         r
||d …         }|                     |¦  «         t          ||¦  «        D ]}	|                     | |	         ¦  «         ŒŒÑn# t          t          j
        f$ r Y nw xY w|                     | t          |¦  «        d …         ¦  «         |S )Nr   c              3   ó*   K  — | D ]	}|dz   V — Œ
	 dV — Œ)Nr   TrB   rF   )r   rH   s     r   Úreadline_generatorz$deindent.<locals>.readline_generator#  s;   è è € Øð 	ð 	ˆDØ˜‘+ÐÐÐÐð	ØˆHˆHˆHð	r   c                  ó"   •— t          ‰ ¦  «        S r;   ©Únext©Úits   €r   r_   zdeindent.<locals>.<lambda>,  s   ø€ ÕPTÐUWÑPXÔPX€ r   r1   )Ú
expandtabsÚlstripr<   r   ÚtokenizeÚgenerate_tokensÚisspacer‡   Úranger¸   Ú
TokenErrorr#   )r   rY   rH   r    Únewlinesr¼   r°   ÚslineÚelineÚirÁ   s             @r   r
   r
     sð  ø€ Ø€~Øð 	ð 	ˆDØ—?’?Ñ$Ô$ˆDØ—’‘”ˆAØð Ý˜T™œ¥3 q¡6¤6Ñ)�Ø�ðð ˆFØ�‚{€{Ý�E‰{Œ{ÐØ€Hðð ð ð 
Ð	˜EÑ	"Ô	"€BðÝ/7Ô/GÐHXÐHXÐHXÐHXÑ/YÔ/Yð 	*ð 	*Ñ+ˆAˆq‘*�5˜!™j˜u a¨!Ø•s˜5‘z”zÒ!Ð!Ø�Ø•s˜8‘}”}Ò$Ð$Ø˜U Q™YÔ'×2Ò2Ñ4Ô4�Ø—;’;‘=”=ð ) T¨'¨6¨'¤]×%:Ò%:Ñ%<Ô%<ð )Ø   œ=�DØ—’ Ñ%Ô%Ð%å˜5 %Ñ(Ô(ð *ð *�ð —’  a¤Ñ)Ô)Ð)Ð)ð*øøõ �hÔ1Ð2ð ð ð Øˆðøøøð ‡O‚O�E�#˜h™-œ-˜.˜.Ô)Ñ*Ô*Ð*Ø€Os   Á<C(E% Å%E>Å=E>c                 óþ  — dd l }g }|                     |¦  «        D ]‘}t          |t          j        ¦  «        st          |t          j        ¦  «        r[|                     |j        dz
  ¦  «         dD ];}t          ||d ¦  «        }|r&|                     |d         j        dz
  dz
  ¦  «         Œ<Œ’| 	                    ¦   «          t          || ¦  «        }||dz
           }|t          |¦  «        k    rd }	n||         }	||	fS )Nr   r1   )Ú	finalbodyÚorelse)rW   Úwalkr   r�   ÚstmtÚExceptHandlerr‡   rR   ÚgetattrÚsortr   r<   )
rR   ÚnoderW   Úlr   ÚnameÚvalÚinsert_indexr5   r@   s
             r   Úget_statement_startend2rÚ   @  s  € Ø€J€J€Jð 	€AØ�XŠX�d‰^Œ^ð 4ð 4ˆÝ�a�œÑ#Ô#ð 	4¥z°!µTÔ5GÑ'HÔ'Hð 	4Ø�HŠH�Q”X ‘\Ñ"Ô"Ð"Ø-ð 4ð 4�Ý˜a  tÑ,Ô,�Øð 4à—H’H˜S œVœ]¨QÑ.°Ñ2Ñ3Ô3Ð3øøØ‡F‚F�H„H€HÝ  6Ñ*Ô*€LØˆl˜QÑÔ€EØ•s˜1‘v”vÒÐØˆˆà�ŒoˆØ�#ˆ:Ðr   Fc                 ó  ‡
— |€at          |¦  «        }t          j        dk     r|dz  }	 t          |ddd¦  «        }n)# t          $ r t          | ||¦  «        \  }}d ||fcY S w xY wt          | |¦  «        \  }}|€t          |j        ¦  «        }||dz   k    r­t          j
        ¦   «         }|j        |         d                              ¦   «         |_        d„ |j        ||…         D ¦   «         Š
	 t          j        ˆ
fd	„¦  «        D ]} |j        |Ž  Œn1# t          j        t"          f$ r |j        |z   }Y nt&          $ r Y nw xY w|rB|j        |dz
                                ¦   «         }	|	                     d
¦  «        s|	s|dz  }nn|°B|||fS )N)é   é   r   rA   r]   i   r1   r   c              3   ó    K  — | ]	}|d z   V — Œ
dS )r   NrF   r   s     r   ú	<genexpr>z(getstatementrange_ast.<locals>.<genexpr>o  s&   è è € Ð:Ð:˜Qˆq�4‰xÐ:Ð:Ð:Ð:Ð:Ð:r   c                  ó"   •— t          ‰ ¦  «        S r;   r¾   rÀ   s   €r   r_   z'getstatementrange_ast.<locals>.<lambda>q  s   ø€ ½¸R¹¼€ r   ú#)r-   rt   r}   r^   Ú
ValueErrorÚgetstatementrange_oldrÚ   r<   r   r   ÚBlockFinderrÆ   ÚstartedrÄ   rÅ   Ú
tokeneaterÚ
EndOfBlockr¸   Úlastrd   rÃ   Ú
startswith)rR   rA   rS   ÚastnodeÚcontentr5   r@   Úblock_finderÚtokrH   rÁ   s             @r   rV   rV   W  s  ø€ Ø€Ý�f‘+”+ˆÝÔ˜eÒ#Ð#Ø�t‰OˆGð	$Ý˜g x°¸Ñ>Ô>ˆGˆGøÝð 	$ð 	$ð 	$Ý.¨v°v¸yÑIÔI‰JˆE�3Ø˜ Ð#Ð#Ð#Ð#ð	$øøøõ )¨°Ñ9Ô9�J€Eˆ3ð
 €{Ý�&”,ÑÔˆà
ˆU�Q‰Y‚€õ Ô*Ñ,Ô,ˆà%œ|¨EÔ2°1Ô5×=Ò=Ñ?Ô?ˆÔØ:Ð: &¤,¨u°S¨yÔ"9Ð:Ñ:Ô:ˆð	ÝÔ/Ð0@Ð0@Ð0@Ð0@ÑAÔAð .ð .�Ø'�Ô'¨Ð-Ð-Ð-ð.øåÔ"Õ$4Ð5ð 	,ð 	,ð 	,ØÔ# eÑ+ˆCˆCˆCÝð 	ð 	ð 	ØˆDð	øøøð ð ØŒ|˜C !™GÔ$×+Ò+Ñ-Ô-ˆØ�?Š?˜3ÑÔð 	 tð 	Ø�1‰HˆCˆCàð ð ð �E˜3ÐÐs'   ©< ¼#A"Á!A"Ã.$D Ä EÄ5	EÅ Ec                 ó(  — ddl m} t          | dd¦  «        D ]è}|r1|j        |         }d|v rd|v rd|v rt	          d¦  «        ‚d|vrd	|vrŒ5|j        || d
z   …         }|                     dd¦  «         d                     |¦  «        }	  ||¦  «         n# t          t          t          f$ r Y Œ˜w xY wt          | d
z   t          |¦  «        d
z   ¦  «        D ](}|||…         }|                     ¦   «         r||fc c S Œ)Œét          d| fz  ¦  «        ‚)z· return (start, end) tuple which spans the minimal
        statement region which containing the given lineno.
        raise an IndexError if no such statementrange can be found.
    r   )Úcompile_commandr   Úsuperr$   r*   zlikely a subclassÚassertÚraiser1   z
def xxx():z
 z%no valid source range around line %d )Úcodeoprï   rÇ   r   r4   Úinsertrh   r…   ÚOverflowErrorrâ   r<   rf   )	rR   rA   rS   rï   r5   rH   ÚtrylinesÚ	trysourcer@   s	            r   rã   rã   ‚  s„  € ð 'Ð&Ð&Ð&Ð&Ð&Ý�v˜r 2Ñ&Ô&ð "ð "ˆØð 	Ø”< Ô&ˆDà˜$ˆˆ 6¨T > >°jÀDÐ6HÐ6HÝ Ð!4Ñ5Ô5Ð5Ø˜tÐ#Ð#¨°tÐ(;Ð(;ØØ”<  f¨Q¡h Ô/ˆð 	�Š˜˜<Ñ(Ô(Ð(Ø—J’J˜xÑ(Ô(ˆ	ð	ØˆO˜IÑ&Ô&Ð&Ð&øÝ�]­JÐ7ð 	ð 	ð 	ØˆHð	øøøõ ˜ ™¥3 v¡;¤;¨q¡=Ñ1Ô1ð 	"ð 	"ˆCØ˜u S˜yÔ)ˆIØ×$Ò$Ñ&Ô&ð "Ø˜c�zÐ!Ð!Ð!Ð!Ð!ð"ð	"õ Ð=ÀÀ	ÑIÑ
JÔ
JÐJs   ÂBÂB1Â0B1r;   )FNr•   )Ú
__future__r   Úbisectr   rt   r   rÄ   r   Útypesr   r^   r{   r�   r   r|   rb   Úobjectr   r›   r¡   r±   rª   r"   r
   rÚ   rV   rã   rF   r   r   ú<module>rü      s–  ðØ !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø€ðØ€K€K€KØ/Ð/Ð/Ð/Ð/Ð/Ð/øØð ð ð Ø€IØ€D€D€Dðøøøð
zð zð zð zð zˆVñ zô zð zð@ #¨ØÔ$°1ðð ð ð ð ð ð ð>	ð 	ð 	ð$ð $ð $ð'ð 'ð 'ð 'ðTð ð ð.(ð (ð (ð (ðV Kð  Kð  Kð  Kð  Kð  Ks   ¦
1 ±	=¼=