ó
    „ñ:iÛ$  ã                   óJ  • S r SSKJr  SSKJr  SSKJrJrJrJ	r	  SSK
JrJrJrJrJrJrJrJr  S rS rS rS	 rS
 rS rS r\" \\R6                  " \R8                  5      5      S 5       r\" \R<                  S5      S 5       r\" \R<                  S5      S 5       r \" \R<                  S5      S 5       r!\" S\R<                  \RD                  5      S 5       r#S r$\" \R<                  5      S 5       r%\" \RL                  RN                  \R<                  5      S 5       r(g)z2
Implement slices and various slice computations.
é    )Úzip_longest)Úir)ÚcgutilsÚtypesÚtypingÚutils)Úimpl_ret_borrowedÚimpl_ret_new_refÚimpl_ret_untrackedÚiternext_implÚlower_builtinÚ
lower_castÚlower_constantÚlower_getattrc                 ó¬   • U R                  SU[        R                  " UR                  S5      5      nU R	                  X5      nU R                  X4U5      $ )zR
Fix negative index by adding *size* to it.  Positive
indices are left untouched.
Ú<r   )Úicmp_signedr   ÚConstantÚtypeÚaddÚselect)ÚbuilderÚidxÚsizeÚis_negativeÚwrapped_indexs        ÚX/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/cpython/slicing.pyÚ	fix_indexr      sF   € ð
 ×%Ñ% c¨3´·²¸D¿I¹IÀqÓ0IÓJ€KØ—K‘K Ó*€MØ�>‰>˜+°cÓ:Ð:ó    c                 ó  ^ ^^^	• [         R                  " TR                  S5      m	[         R                  " TR                  S5      nU UUU	4S jnT R                  [        R
                  " T TR                  5      5       u  pVU   U" ST	T5        U" ST	T5        SSS5        U   UnT R                  TU5      nU" SXx5        U" SXx5        SSS5        SSS5        g! , (       d  f       NH= f! , (       d  f       N(= f! , (       d  f       g= f)z|
Fix *slice* start and stop to be valid (inclusive and exclusive, resp)
indexing bounds for a sequence of the given *size*.
r   éÿÿÿÿc                 ót  >• [        TU 5      n[        TUT5      n[        TX5        TR                  SUT	5      nTR	                  USS9   [        TX5        S S S 5        TR                  SUT5      nTR	                  USS9   [        TX5        S S S 5        g ! , (       d  f       NG= f! , (       d  f       g = f)Nr   F©Úlikelyú>=)Úgetattrr   Úsetattrr   Úif_then)
Ú
bound_nameÚ
lower_replÚ
upper_replÚboundÚ	underflowÚoverflowr   r   ÚsliceÚzeros
         €€€€r   Ú	fix_boundÚfix_slice.<locals>.fix_bound"   s¤   ø€ Ü˜˜zÓ*ˆÜ˜' 5¨$Ó/ˆä��zÔ)à×'Ñ'¨¨U°DÓ9ˆ	Ø�_‰_˜Y¨uˆ_Ò5Ü�E˜:Ô2÷ 6ð ×&Ñ& t¨U°DÓ9ˆØ�_‰_˜X¨eˆ_Ò4Ü�E˜:Ô2÷ 5Ð4÷	 6Õ5ú÷ 5Õ4ús   Á
BÂB)Â
B&Â)
B7ÚstartÚstopN)r   r   r   Úif_elser   Ú
is_neg_intÚstepr   )
r   r/   r   Ú	minus_oner1   Úif_neg_stepÚif_pos_stepÚlowerÚupperr0   s
   ```      @r   Ú	fix_slicer=      sÏ   û€ ô �;Š;�t—y‘y !Ó$€DÜ—’˜DŸI™I rÓ*€I÷3ð 3ð 
�‰œ×+Ò+¨G°U·Z±ZÓ@Ô	AÑE_ÀkÚá�g˜t TÔ*Ù�f˜d DÔ)÷ ò àˆEØ—K‘K  iÓ0ˆEÙ�g˜uÔ,Ù�f˜eÔ+÷ ÷ 
BÐ	Aß�[ú÷ �[ú÷ 
BÕ	Aús<   Â C>ÂCÂ
C>Â$'C-ÃC>Ã
C*	Ã&C>Ã-
C;	Ã7C>Ã>
Dc           	      óN  • UR                   nUR                  nUR                  n[        R                  " UR
                  S5      n[        R                  " UR
                  S5      n[        R                  " X5      nU R                  X25      nU R                  X…5      n	U R                  X…5      n
U R                  XzU	5      nU R                  XPR                  X´5      5      nU R                  UU R                  SX†5      U R                  SX†5      5      nU R                  XÖU5      $ )aÀ  
Given a slice, compute the number of indices it spans, i.e. the
number of iterations that for_range_slice() will execute.

Pseudo-code:
    assert step != 0
    if step > 0:
        if stop <= start:
            return 0
        else:
            return (stop - start - 1) // step + 1
    else:
        if stop >= start:
            return 0
        else:
            return (stop - start + 1) // step + 1

(see PySlice_GetIndicesEx() in CPython)
é   r   r%   z<=)r3   r4   r7   r   r   r   r   r6   Úsubr   r   Úsdivr   )r   Úslicestructr3   r4   r7   Úoner0   Úis_step_negativeÚdeltaÚpos_dividendÚneg_dividendÚdividendÚnominal_lengthÚis_zero_lengths                 r   Úget_slice_lengthrK   =   sù   € ð( ×Ñ€EØ×Ñ€DØ×Ñ€DÜ
�+Š+�e—j‘j !Ó
$€CÜ�;Š;�u—z‘z 1Ó%€Dä×)Ò)¨'Ó8ÐØ�K‰K˜Ó$€Eð —;‘;˜uÓ*€LØ—;‘;˜uÓ*€LØ—‘Ð/¸|ÓL€HØ—[‘[ §l¡l°8Ó&BÓC€Nð —^‘^Ð$4Ø$+×$7Ñ$7¸¸eÓ$JØ$+×$7Ñ$7¸¸eÓ$JóL€Nð
 �>‰>˜.°Ó?Ð?r   c                 ó>  • UR                   nUR                  nUR                  S5      nUR                  S5      nU R                  SUR                  U5      nU R                  UU R                  X55      U5      nU R                  UU R                  X%5      U5      nXx4$ )z7
Return the [lower, upper) indexing bounds of a slice.
r   r?   r   )r3   r4   r   r   r7   r   r   )	r   rB   r3   r4   r0   rC   rD   r;   r<   s	            r   Úget_slice_boundsrM   i   s—   € ð ×Ñ€EØ×Ñ€DØ�:‰:�a‹=€DØ
�*‰*�Q‹-€Cð ×*Ñ*¨3°×0@Ñ0@À$ÓGÐØ�N‰NÐ+Ø"Ÿ;™; tÓ1°5ó:€Eà�N‰NÐ+Ø"Ÿ;™; uÓ2°Dó:€Eàˆ<Ðr   c                 ó:   • U R                  UR                  U5      $ )z,
Fix the given stride for the slice's step.
)Úmulr7   )r   r/   Ústrides      r   Ú
fix_striderQ   {   s   € ð �;‰;�u—z‘z 6Ó*Ð*r   c                 óx   • UR                   (       a)  [        R                  " XUR                  [        S45        gg)zH
Guard against *slicestruct* having a zero step (and raise ValueError).
úslice step cannot be zeroN)Úhas_stepr   Ú
guard_nullr7   Ú
ValueError)Úcontextr   ÚtyprB   s       r   Úguard_invalid_slicerY   �   s2   € ð ‡|‡|Ü×Ò˜7¨[×-=Ñ-=Ü&Ð(CÐDõ	Fð r   c                 ó@   • SU R                   S-
  -  S-
  nSXU* S-
  S4$ )z™
Get the default values for a slice's members:
(start for positive step, start for negative step,
 stop for positive step, stop for negative step, step)
r?   r   )Úaddress_size)rW   Úmaxints     r   Úget_defaultsr]   Š   s3   € ð �G×(Ñ(¨1Ñ,Ñ-°Ñ2€FØˆv ˜x¨!™|¨QÐ/Ð/r   c                 óD  ^• [        U 5       Vs/ s H"  o@R                  [        R                  U5      PM$     snu  nnnnn	S /S-  m[	        U5      S:X  a)  UR
                  S   [        R                  La	  US   TS'   OE[        [        UR
                  U5      5       H"  u  n
u  p¼U[        R                  Ld  M  UTU
'   M$     U4S jnU" SU	5      nUR                  SUU R                  [        R                  S5      5      nUR                  UX‡5      nUR                  UXe5      nU" SU5      nU" SU5      nUR                  nU R                  XR                  5      nUUl        UUl        UUl        UR!                  5       n[#        XUR                  U5      $ s  snf )Né   r?   r   c                 ó   >• TU    nUc  U$ U$ ©N© )ÚiÚdefaultÚvalÚ
slice_argss      €r   Úget_arg_valueÚ-slice_constructor_impl.<locals>.get_arg_value¬   s   ø€ Ø˜‰mˆØ‰;ØˆNàˆJr   é   r   )r]   Úget_constantr   ÚintpÚlenÚargsÚnoneÚ	enumerateÚzipr   r   Úreturn_typeÚmake_helperr3   r4   r7   Ú	_getvaluer   )rW   r   Úsigrm   ÚxÚdefault_start_posÚdefault_start_negÚdefault_stop_posÚdefault_stop_negÚdefault_steprc   Útyre   rg   r7   rD   Údefault_stopÚdefault_startr4   r3   ÚsliÚresrf   s                         @r   Úslice_constructor_implr€   —   s‡  ø€ ô 7CÀ7Ô6KÓLÒ6K°×	Ñ	œeŸj™j¨!Ö	,Ñ6KÑLñØØØØØð �˜!‘€Jô ˆ4ƒy�Aƒ~˜#Ÿ(™( 1™+¬U¯Z©ZÒ7Ø˜Q™ˆ
�1Šä%¤c¨#¯(©(°DÓ&9Ö:‰LˆA‰y�ØœŸ™Ô#Ø #�
˜1“ñ ;õ
ñ ˜˜LÓ)€DØ×*Ñ*¨3°Ø+2×+?Ñ+?ÄÇ
Á
ÈAÓ+NóPÐà—>‘>Ð"2Ø"2óF€Là—N‘NÐ#3Ø#4óI€Má˜˜LÓ)€DÙ˜!˜]Ó+€Eà	�‰€BØ
×
Ñ
˜g§¡Ó
7€CØ€C„IØ€C„HØ€C„Hà
�-‰-‹/€CÜ˜g°·±ÀÓEÐEùòK 	Ms   �)Fr3   c                 ó>   • U R                  XU5      nUR                  $ ra   )rr   r3   ©rW   r   rX   Úvaluer~   s        r   Úslice_start_implr„   Ç   s   € à
×
Ñ
˜g¨EÓ
2€CØ�9‰9Ðr   r4   c                 ó>   • U R                  XU5      nUR                  $ ra   )rr   r4   r‚   s        r   Úslice_stop_implr†   Ì   s   € à
×
Ñ
˜g¨EÓ
2€CØ�8‰8€Or   r7   c                 ó    • UR                   (       a  U R                  XU5      nUR                  $ U R                  [        R
                  S5      $ )Nr?   )rT   rr   r7   rj   r   rk   r‚   s        r   Úslice_step_implrˆ   Ñ   s;   € à
‡|‡|Ø×!Ñ! '°Ó6ˆØ�x‰xˆà×#Ñ#¤E§J¡J°Ó2Ð2r   zslice.indicesc                 ót  • US   nU R                  XR                  S   US   5      nUR                  [        R                  " X5      SS9   U R
                  R                  U[        S5        S S S 5        UR                  [        R                  " XR                  5      SS9   U R
                  R                  U[        S5        S S S 5        [        XU5        U R                  UUR                  UR                  UR                  UR                  45      $ ! , (       d  f       N°= f! , (       d  f       Ni= f)Nr?   r   Fr#   )zlength should not be negative)rS   )rr   rm   r(   r   r6   Ú	call_convÚreturn_user_excrV   Úis_scalar_zeror7   r=   Ú
make_tuplerq   r3   r4   )rW   r   rt   rm   Úlengthr~   s         r   Úslice_indicesr�   Ú   sü   € à�!‰W€FØ
×
Ñ
˜g§x¡x°¡{°D¸±GÓ
<€Cà	�‰œ×+Ò+¨GÓ<ÀUˆÒ	KØ×Ñ×)Ñ)Ø”ZØ.ô	
÷ 
Lð
 
�‰œ×/Ò/°¿¹ÓBÈ5ˆÒ	QØ×Ñ×)Ñ)Ø”ZØ*ô	
÷ 
Rô ˆg˜FÔ#à×ÑØØ�‰Ø	�‰�C—H‘H˜cŸh™hÐ'óð ÷ 
LÕ	Kú÷
 
RÕ	Qús   Á"DÂ$"D)Ä
D&Ä)
D7c                 ó   • U R                  X5      nU R                  [        R                  5      n[	        U 5       Vs/ s H"  o`R                  [        R                  U5      PM$     snu  nnn	n
nUR                  nUc  SnUnOUS:  nU" U5      nUR                  nUc  U(       a  UnOUnOU" U5      nUR                  nUc  U(       a  U
nOU	nOU" U5      nXäl        Xôl        XÄl        UR                  5       $ s  snf )NFr   )
rr   Úget_value_typer   rk   r]   rj   r7   r3   r4   rs   )rW   r   r{   Úpyvalr~   Últyru   rv   rw   rx   ry   rz   r7   Ústep_is_negr3   r4   s                   r   Úmake_slice_from_constantr•   ó   sû   € Ø
×
Ñ
˜gÓ
*€CØ
×
 Ñ
 ¤§¡Ó
,€Cô 7CÀ7Ô6KÓLÒ6K°×	Ñ	œeŸj™j¨!Ö	,Ñ6KÑLñØØØØØð �:‰:€DØ�|ØˆØ‰à˜Q‘hˆÙ�4‹yˆà�K‰K€EØ�}ÞØ%‰Eà%‰Eá�E“
ˆà�:‰:€DØ�|ÞØ#‰Dà#‰Dá�4‹yˆà„IØ„HØ„Hà�=‰=‹?ÐùòA 	Ms   ¾)C;c                 óv   • [        U[        R                  5      (       a  UR                  nOUn[	        XXC5      $ ra   )Ú
isinstancer   ÚLiteralÚliteral_typer•   )rW   r   r{   r’   rX   s        r   Úconstant_slicerš      s.   € ä�"”e—m‘m×$Ñ$Ø�o‰o‰àˆä# G°cÓAÐAr   c                 ó.   • [        XX2R                  5      $ ra   )r•   Úliteral_value)rW   r   ÚfromtyÚtotyre   s        r   Úcast_from_literalrŸ   *  s   € ä#Ø˜$× 4Ñ 4óð r   N))Ú__doc__Ú	itertoolsr   Úllvmliter   Ú
numba.corer   r   r   r   Únumba.core.imputilsr	   r
   r   r   r   r   r   r   r   r=   rK   rM   rQ   rY   r]   r/   ÚVarArgÚAnyr€   Ú	SliceTyper„   r†   rˆ   ÚIntegerr�   r•   rš   ÚmiscÚSliceLiteralrŸ   rb   r   r   Ú<module>r«      sJ  ðñõ "å ß 4Ó 4÷0÷ 0ó 0ò;ò!,òH)@òXò$+òFò0ñ ˆu�e—l’l 5§9¡9Ó-Ó.ñ,Fó /ð,Fñ^ ˆu�‰ Ó(ñó )ðñ ˆu�‰ Ó'ñó (ðñ ˆu�‰ Ó'ñ3ó (ð3ñ ˆ §¡°·±Ó?ñó @ðò0*ñZ �—‘Ó ñBó !ðBñ ˆE�J‰J×#Ñ# U§_¡_Ó5ñó 6ñr   