§
    ŠŠtj_J  ã                  óà   — d dl mZ d dlmZmZ d dlmZmZ d dlZddl	m
Z
mZ ddlmZ erddlmZ d8d„Ze G d„ d¦  «        ¦   «         Zd9d„Zd:d„Zd;d„Zd<d"„Zd=d(„Zd>d+„Zd?d-„Zd@d/„ZdAd7„ZdS )Bé    )Úannotations)Ú	dataclassÚfield)ÚAnyÚTYPE_CHECKINGNé   )Ú_match_levelsÚDimEntry)Ú
TensorInfo©ÚDimÚlstÚlistÚitemr   Úreturnú
int | Nonec                óª   — t          | ¦  «        D ]B\  }}t          |t          ¦  «        r t          |t          ¦  «        r||k    r|c S Œ:||u r|c S ŒCdS )zÚ
    Helper function to find index of item in list.

    For DimEntry objects, uses __eq__ comparison which properly handles
    both positional and Dim entries.

    Returns the index if found, None if not found.
    N)Ú	enumerateÚ
isinstancer
   )r   r   ÚiÚ	list_items       úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/functorch/dim/_getsetitem.pyÚ_safe_indexr      sw   € õ " #™œð ð ‰ˆˆ9å�d�HÑ%Ô%ð 	­*°YÅÑ*IÔ*Ið 	Ø˜DÒ Ð Ø���ð !à˜$ÐÐØˆHˆHˆHð àˆ4ó    c                  óŒ   — e Zd ZU dZded<   dZded<   dZded<    ee¬¦  «        Z	d	ed
<    ee¬¦  «        Z
ded<   dZded<   dS )ÚIndexingInfoFÚboolÚcan_call_originalÚadvanced_indexingNztorch.Tensor | NoneÚself_tensor)Údefault_factoryz	list[Any]Úflat_inputsúlist[DimEntry]Úresult_levelsÚ
has_device)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r    r   r   r"   r$   r%   © r   r   r   r   #   s”   € € € € € € à#ÐÐ#Ð#Ð#Ñ#Ø#ÐÐ#Ð#Ð#Ñ#Ø'+€KÐ+Ð+Ð+Ñ+Ø"˜U°4Ð8Ñ8Ô8€KÐ8Ð8Ð8Ñ8Ø$) E¸$Ð$?Ñ$?Ô$?€MÐ?Ð?Ð?Ñ?Ø€JÐÐÐÑÐÐr   r   Úobjr   c                ó\   — ddl m}m}  |j        | ¦  «        p|                     | ¦  «        S )zÑ
    Check if an object has first-class dimensions.

    This function checks if the object is either a Dim or a functorch Tensor
    that has first-class dimensions, using the proper check_exact methods.
    r   )r   ÚTensor)Ú r   r-   Úcheck_exact)r+   r   r-   s      r   Úhas_dimsr0   -   sA   € ð ÐÐÐÐÐÐÐàˆ3Œ?˜3ÑÔÐ: 6×#5Ò#5°cÑ#:Ô#:Ð:r   ÚszÚintÚsdÚdimsÚnszÚnsdÚNonec           	     óH  — ddl m} d}t          |¦  «        D ]°\  }}|j        sšt	          |dz   t          |¦  «        ¦  «        D ]6}	||	         j        s |d|›d||	         ›�¦  «        ‚|||	         j        z  }Œ7| |z  dk    r*t          d„ |D ¦   «         ¦  «        }
 |d| › d|
› �¦  «        ‚| |z  }||_        | } n||j        z  }Œ±|| k    r#t          |¦  «        }
 |d	| › d
|› d|
› �¦  «        ‚dgt          |¦  «        z  }|}t          t	          t          |¦  «        ¦  «        ¦  «        D ]}|||<   |||         j        z  }Œt	          t          |¦  «        ¦  «        D ]=}| 	                    ||         j        ¦  «         | 	                    ||         ¦  «         Œ>dS )zM
    Bind dimensions to size and calculate proper strides for dim packs.
    r   ©ÚDimensionBindErrorz1cannot infer the sizes of two dimensions at once ú and r   c              3  ó6   K  — | ]}|j         r|j        nd V — ŒdS )ú?N)Úis_boundÚsize)Ú.0Údims     r   ú	<genexpr>z%_bind_dims_to_size.<locals>.<genexpr>L   s/   è è € ÐNÐNÀ#¨¬Ð=˜CœH˜H¸#ÐNÐNÐNÐNÐNÐNr   z>inferred dimension does not evenly fit into larger dimension: z vs z!Dimension sizes to do not match (z != z) when matching dimension pack N)
r.   r:   r   r>   ÚrangeÚlenr?   ÚtupleÚreversedÚappend)r1   r3   r4   r5   r6   r:   Úrhs_prodr   rA   ÚjÚtupÚinferred_sizeÚnew_stridesÚcurrent_strides                 r   Ú_bind_dims_to_sizerN   9   s-  € ð %Ð$Ð$Ð$Ð$Ð$à€HÝ˜D‘/”/ð !ð !‰ˆˆ3ØŒ|ð 	!å˜1˜q™5¥# d¡)¤)Ñ,Ô,ð )ð )�Ø˜A”wÔ'ð Ø,Ð,ØcÈCÐcÐcÐX\Ð]^ÔX_ÐcÐcñô ð ð ˜D œGœLÑ(��ð �H‰} Ò!Ð!ÝÐNÐNÈÐNÑNÔNÑNÔN�Ø(Ð(ØbÐUWÐbÐbÐ]`ÐbÐbñô ð ð  (™NˆMØ$ˆCŒHØˆHØˆEà˜œÑ ˆHˆHð �2‚~€~Ý�D‰kŒkˆØ Ð Øf°ÐfÐf¸ÐfÐfÐadÐfÐfñ
ô 
ð 	
ð �#�˜D™	œ	‘/€KØ€NÝ•e�C ™IœIÑ&Ô&Ñ'Ô'ð 'ð 'ˆØ'ˆ�A‰Ø˜$˜qœ'œ,Ñ&ˆˆõ •3�t‘9”9ÑÔð #ð #ˆØ�
Š
�4˜”7”<Ñ Ô Ð Ø�
Š
�;˜q”>Ñ"Ô"Ð"Ð"ð#ð #r   r"   rE   c                ó    — t          | ¦  «        S ©N)rE   )r"   s    r   Úslice_to_tuplerQ   m   s   € Ý�ÑÔÐr   ÚindexÚindicesc                óâ  — t          | t          ¦  «        r|                     | ¦  «         dS t          | t          j        ¦  «        r|                     | ¦  «         dS t          | d¦  «        rt          | t          t          f¦  «        r|                     | ¦  «         dS t          | t          ¦  «        r¤t          | ¦  «        dk    r|                     | ¦  «         dS | D ]`}t          |t          j        t          f¦  «        s%t          |d¦  «        s|du s|�t          |¦  «        r|                     | ¦  «          dS Œa|                     | ¦  «         dS |                     | ¦  «         dS )NTFÚ__iter__é    .)r   rE   ÚextendÚtorchr-   rG   ÚhasattrÚstrÚbytesr   rD   Úslicer0   )rR   rS   r   s      r   ÚextractIndicesr]   q   sƒ  € Ý�%�ÑÔð 
Ø�Š�uÑÔÐØˆtÝ	�E�5œ<Ñ	(Ô	(ð Ø�Š�uÑÔÐØˆuÝ�U˜JÑ'Ô'ð ­:Ø••Uˆ|ñ,ô ,ð ð 	�Š�uÑÔÐØˆuõ �%�ÑÔð Ýˆu‰:Œ:˜ÒÐØ�NŠN˜5Ñ!Ô!Ð!Ø�4ð ð 		ð 		ˆDå˜4¥%¤,µÐ!6Ñ7Ô7ðå˜4 Ñ,Ô,ðð ˜3�;�;Ø�<Ý˜D‘>”>ð  ð —’˜uÑ%Ô%Ð%Ø�t�tð	  ð 	�Š�uÑÔÐØˆuð ‡N‚N�5ÑÔÐØˆ5r   ÚclsÚfuncÚtypesÚargsÚkwargsc                óÊ   — |d         }|d         }t          ||t          |¦  «        ¦  «        }|j        r t          j                             ||¦  «        S t          |¦  «        S ©Nr   r   )Ú
getsetitemr0   r   rX   r-   Ú__getitem__Úinvoke_getitem)r^   r_   r`   ra   rb   ÚselfrR   Úiinfos           r   Úgetitemrj   ™   s\   € Ø�Œ7€DØ�ŒG€Eå�t˜U¥H¨T¡N¤NÑ3Ô3€EØÔð 5åŒ|×'Ò'¨¨eÑ4Ô4Ð4å˜%Ñ Ô Ð r   rh   Úrhsc           	     ó¢  — ddl m}m} t          | |t	          | ¦  «        pt	          |¦  «        ¦  «        }|j        r(t          j        j         	                    | ||¦  «         dS  |j
        |dd¦  «        }|�rE|j        D �]}|                     ¦   «         sîd}|j        D ]B}	|	                     ¦   «         s,|	                     ¦   «         |                     ¦   «         u rd} nŒC|s g }
|j        D ]e}|                     ¦   «         r(|
                     |                     ¦   «         ¦  «         Œ>|
                     |                     ¦   «         ¦  «         Œf |d|                     ¦   «         ›dt#          |
¦  «        ›d�¦  «        ‚�Œ|j        €t'          d	¦  «        ‚t)          |j        |j        |j        ¦  «        }n|}|j        rWt-          |j        ¦  «        }|j        €t3          d
¦  «        ‚t          j        j         	                    |j        ||¦  «         dS |j        €t3          d¦  «        ‚|j                             |¦  «         dS )z2Set values in tensor using first-class dimensions.r   )r:   r   NFTz"rhs of setitem contains dimension z, which is not in the dimension on the left (ú)z"Cannot match levels on None tensorzCannot setitem on None tensorzCannot copy to None tensor)r.   r:   r   re   r0   r   rX   Ú_CÚ
TensorBaseÚ__setitem__ÚcreateÚlevelsÚis_positionalr$   rA   rG   ÚpositionrE   ÚtensorÚAssertionErrorr	   r   rQ   r"   r    ÚRuntimeErrorÚcopy_)rh   rR   rk   r:   r   ri   Úrhs_infoÚlÚfoundÚresult_levelÚresult_dimsÚrlÚmatched_rhsrJ   s                 r   Úsetitemr€   ¥   sŒ  € à0Ð0Ð0Ð0Ð0Ð0Ð0Ð0å�t˜U¥H¨T¡N¤NÐ$Cµh¸s±m´mÑDÔD€EàÔð åŒÔ×'Ò'¨¨e°SÑ9Ô9Ð9Øˆð !ˆzÔ   e¨UÑ3Ô3€Hàñ #à”ð 	ñ 	ˆAØ—?’?Ñ$Ô$ð à�Ø$)Ô$7ð ð �Là(×6Ò6Ñ8Ô8ðà(×,Ò,Ñ.Ô.°!·%²%±'´'Ð9Ð9à $˜Ø˜øàð à35�KØ#Ô1ð 9ð 9˜Ø×+Ò+Ñ-Ô-ð 9Ø'×.Ò.¨r¯{ª{©}¬}Ñ=Ô=Ð=Ð=à'×.Ò.¨r¯vªv©x¬xÑ8Ô8Ð8Ð8à,Ð,ð4¸Q¿UºU¹W¼Wð 4ð 4Ý! +Ñ.Ô.ð4ð 4ð 4ñô ð ùð Œ?Ð"Ý Ð!EÑFÔFÐFÝ#ØŒO˜Xœ_¨eÔ.Añ
ô 
ˆˆð ˆð Ôð 
-å˜UÔ.Ñ/Ô/ˆØÔÐ$ÝÐ>Ñ?Ô?Ð?ÝŒÔ×'Ò'¨Ô(9¸3ÀÑLÔLÐLÐLÐLð ÔÐ$ÝÐ;Ñ<Ô<Ð<ØÔ×Ò Ñ,Ô,Ð,Ð,Ð,r   ri   c                óø   — | j         r5| j        }t          | j        ¦  «        }|€t	          d¦  «        ‚||         }n| j        }|€t	          d¦  «        ‚ddlm} |                     || j        | j	        ¦  «        S )NzCannot getitem on None tensorr   )r-   )
r   r    rQ   r"   rw   r.   r-   Úfrom_positionalr$   r%   )ri   r    rJ   Úrtensorr-   s        r   rg   rg   æ   s•   € ØÔð 	@ØÔ'ˆÝ˜UÔ.Ñ/Ô/ˆØÐÝÐ>Ñ?Ô?Ð?Ø˜cÔ"ˆˆàÔ#ˆØˆ?ÝÐ>Ñ?Ô?Ð?ð ÐÐÐÐÐà×!Ò! '¨5Ô+>ÀÔ@PÑQÔQÐQr   Útensors_have_dimsc                óx  ‡— ddl m} | }g }t          |¦  «        r|                     |¦  «         n$t	          ||¦  «        }|r|st          d¬¦  «        S d}dŠd }g }	dˆfd„}
dd„}d}t          |¦  «        D ]Ÿ\  }}t          |¦  «        rd}|dz  }Œ|du r |
|¦  «         Œ,t          ||¦  «        rDd}|j        s |
|¦  «         |}n|t          |j
        ¦  «        z  }|	                     |¦  «         Œ€|€d}Œ… ||¦  «        r
d}d}|dz  }Œš|dz  }Œ |rt          d¬¦  «        S t          j        | dd¦  «        }t          |j        ¦  «        }||k    rt          d|› d|› d�¦  «        ‚||z
  }‰dk    rF|�|                     |¦  «         n.t!          d ¦  «        g|z  }|d ‰…         |z   |‰dz   d …         z   }t#          t          |	¦  «        dz
  dd¦  «        D ]E}|	|         }|€‰dk    r|‰k    r||z  }||         }|d |…         |j
        z   ||dz   d …         z   }ŒFt%          ||g g |¦  «        S )Nr   )ÚDimListT)r   r   éÿÿÿÿr   r2   r   r7   c                óF   •— ‰dk    rddl m}  |d‰› d| › �¦  «        ‚| Šd S )Nr‡   r   r9   z\at most one ... or unbound dimension list can exist in indexing list but found 2 at offsets r;   )r.   r:   )r   r:   Úexpanding_objects     €r   Úcheck_expandingz#getsetitem.<locals>.check_expanding  sb   ø€ à˜rÒ!Ð!Ø,Ð,Ð,Ð,Ð,Ð,à$Ð$ð.Ø#ð.ð .Ø*+ð.ð .ñô ð ð ÐÐÐr   Úsr   r   c                ó¤   ‡— ddl mŠ t          | t          t          f¦  «        o-t          | ¦  «        dk    ot          ˆfd„| D ¦   «         ¦  «        S )Nr   r   r   c              3  ó8   •K  — | ]} ‰j         |¦  «        V — Œd S rP   ©r/   )r@   r   r   s     €r   rB   z1getsetitem.<locals>.is_dimpack.<locals>.<genexpr>  s/   øè è € Ð8Ð8¨d�O�C”O DÑ)Ô)Ð8Ð8Ð8Ð8Ð8Ð8r   )r.   r   r   rE   r   rD   Úall)r‹   r   s    @r   Ú
is_dimpackzgetsetitem.<locals>.is_dimpack  sd   ø€ ØÐÐÐÐÐõ �q�5¥$˜-Ñ(Ô(ð 9Ý�A‘”˜’
ð9åÐ8Ð8Ð8Ð8°aÐ8Ñ8Ô8Ñ8Ô8ð	
r   F.z	at least z/ indices were supplied but the tensor only has z dimensions©r   r2   r   r7   )r‹   r   r   r   )r.   r†   r0   rG   r]   r   r   r   r>   rD   Ú_dimsr   rq   rr   Ú
ValueErrorÚbind_lenr\   rC   Úgetsetitem_flat)rh   rR   r„   r†   Úcan_call_original_getitemÚ
input_listÚis_sequenceÚdims_indexedÚunbound_dim_listÚdimlistsrŠ   r�   Úhas_dimpacks_or_noner   r‹   Ú	self_infoÚ
total_dimsÚexpanding_dimsÚ	no_slicesÚidxÚdlr‰   s                        @r   re   re   ù   s[  ø€ ØÐÐÐÐÐà$5Ð 5Ðà€JÝ��„ð 8Ø×Ò˜%Ñ Ô Ð Ð å$ U¨JÑ7Ô7ˆà$ð 	8¨[ð 	8Ý°$Ð7Ñ7Ô7Ð7ð €LØÐØÐØ€Hð	ð 	ð 	ð 	ð 	ð 	ð
ð 
ð 
ð 
ð !ÐÝ˜*Ñ%Ô%ð ð ‰ˆˆ1Ý�A‰;Œ;ð 	Ø(-Ð%Ø˜AÑˆLˆLØ�#ˆXˆXØˆO˜AÑÔÐÐÝ˜˜7Ñ#Ô#ð 	Ø(-Ð%Ø”:ð -Ø� Ñ"Ô"Ð"Ø#$Ð Ð à¥ A¤G¡¤Ñ,�Ø�OŠO˜AÑÔÐÐØˆYØ#'Ð Ð ØˆZ˜‰]Œ]ð 	Ø(-Ð%Ø#'Ð Ø˜AÑˆLˆLà˜AÑˆLˆLð !ð 4Ý¨dÐ3Ñ3Ô3Ð3åÔ! $¨¨tÑ4Ô4€IÝ�YÔ%Ñ&Ô&€JØ�jÒ Ð ÝØl˜ÐlÐlÐU_ÐlÐlÐlñ
ô 
ð 	
ð
   ,Ñ.€NØ˜2ÒÐØÐ'à×%Ò% nÑ5Ô5Ð5Ð5õ ˜t™œ˜¨Ñ6ˆIàÐ,Ð,Ð,Ô-ØñàÐ-°Ñ1Ð3Ð3Ô4ñ5ð õ •3�x‘=”= 1Ñ$ b¨"Ñ-Ô-ð Ið IˆØ�qŒkˆð Ð$Ø  BÒ&Ð&ØÐ&Ò&Ð&à�>Ñ!ˆCà˜Œ_ˆð     Ô%¨¬Ñ0°:¸cÀA¹g¸i¸iÔ3HÑHˆ
ˆ
å˜9 j°"°bÐ:NÑOÔOÐOr   r�   r   r—   Úkeysr#   Úvaluesrœ   c                ó¢	  ‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡!‡"‡#‡$— ddl mŠ g Š g Š!dˆ ˆ!fd„Šg Šg Š#d Šdˆˆ#fd	„Šd ˆˆˆ#fd„Šg Šg Š| j        €t          d¦  «        ‚| j                             ¦   «         Š"| j                             ¦   «         Šd!ˆˆˆˆˆ"fd„Š|d d …         Šd"ˆˆˆˆfd„}d#ˆˆˆˆˆˆˆˆˆˆ"f
d„}t          | j        ¦  «        D ]Ò\  }}t          ||¦  «        }	|	� ||||	         ¦  «         Œ*| 	                    ¦   «         rO |¦   «          ‰s$ ‰t          d ¦  «        ¦  «          ‰|¦  «         Œn‰d         }
‰dd …         Š |||
¦  «         Œ� ‰|                     ¦   «         ¦  «          ‰|                     ¦   «         ¦  «          ‰|¦  «         ŒÓ |¦   «          ‰rL‰rJ| j        €t          d¦  «        ‚| j                             ‰‰| j                             ¦   «         ¦  «        }n| j        }g Šg }dŠ$d}d"ˆˆ$fd„}t          ‰¦  «        D �]ƒ\  }}‰#|         �6d} |¦   «          ‰#|         j        D ]}||vr|                     |¦  «         ŒŒD ‰j        |¦  «        rã|}t          ‰ |¦  «        }|€t!          d|› d�¦  «        ‚‰!|         dk    r5t          d ¦  «        ‰|<   ‰                     t#          |¦  «        ¦  «         Œ¼d}d ‰|<   t%          |                     ¦   «         t#          |¦  «        gdd ¦  «        ‰#|<   t#          |¦  «        |vr"|                     t#          |¦  «        ¦  «          |¦   «          �Œ7|t          d ¦  «        k    rd}t)          |t*          ¦  «        s"‰                     t#          d¦  «        ¦  «         �Œ…‰$dk    r(t-          |¦  «        D ]}‰                     ‰$|¦  «         Œ|r�t1          t3          ‰¦  «        ¦  «        D ]p}‰#|         �f‰#|         j        }|€t!          d¦  «        ‚‰#|         j        s‰�|                     ‰j        ¦  «        }t;          |‰#|         j        |¦  «        ‰|<   Œqd}t-          t1          t3          ‰¦  «        ¦  «        ¦  «        D ]4}‰|          	                    ¦   «         r|dz  }t#          | ¦  «        ‰|<   Œ5t=          d||‰‰| j        ¬¦  «        S )$Nr   r   rA   r   r   r7   c                ó¤   •— t          ‰| ¦  «        }|�‰|xx         dz  cc<   d S ‰                     | ¦  «         ‰                     d¦  «         d S )Nr   )r   rG   )rA   r¡   Ú	seen_dimsÚseen_dims_nusess     €€r   Úadd_dimz getsetitem_flat.<locals>.add_dimx  sg   ø€ å˜) SÑ)Ô)ˆØˆ?Ø˜CÐ Ð Ô  AÑ%Ð Ð Ñ Ð Ð à×Ò˜SÑ!Ô!Ð!Ø×"Ò" 1Ñ%Ô%Ð%Ð%Ð%r   Úhandlec                ó\   •— ‰                      | ¦  «         ‰                      d ¦  «         d S rP   ©rG   )rª   r"   Útensor_inputss    €€r   Úappend_flat_handlez+getsetitem_flat.<locals>.append_flat_handle…  s1   ø€ Ø×Ò˜6Ñ"Ô"Ð"Ø×Ò˜TÑ"Ô"Ð"Ð"Ð"r   Útir   c                ó„   •— ‰                      d ¦  «         ‰                      | ¦  «         | j        r‰€| j        Šd S d S d S rP   )rG   r%   ru   )r¯   Údevice_holding_tensorr"   r­   s    €€€r   Úappend_tensor_inputz,getsetitem_flat.<locals>.append_tensor_input‰  sY   ø€ Ø×Ò˜4Ñ Ô Ð Ø×Ò˜RÑ Ô Ð àŒ=ð 	.Ð2Ð:Ø$&¤IÐ!Ð!Ð!ð	.ð 	.Ð:Ð:r   z%Cannot get size/stride on None tensorr   r2   c                ó|   •— ‰r8‰                      ‰|          ¦  «         ‰                      ‰|          ¦  «         d S d S rP   r¬   )r   rœ   r6   r5   r3   r1   s    €€€€€r   Úappend_sizez$getsetitem_flat.<locals>.append_size—  sG   ø€ Øð 	Ø�JŠJ�r˜!”uÑÔÐØ�JŠJ�r˜!”uÑÔÐÐÐð	ð 	r   c                 óÔ   •— ‰r`‰d         €\ ‰ t          d ¦  «        ¦  «         ‰                     d¦  «         ‰                     d¦  «         ‰dd …         Š‰r‰d         ®Vd S d S d S d S rd   )r\   rG   )r®   Úinput_itr6   r5   s   €€€€r   Úparse_nonesz$getsetitem_flat.<locals>.parse_nonesž  s‰   ø€ àð 	$˜8 Aœ;Ð.ØÐ�u T™{œ{Ñ+Ô+Ð+Ø�JŠJ�q‰MŒMˆMØ�JŠJ�q‰MŒMˆMØ   ”|ˆHð	 ð 	$˜8 Aœ;Ð.Ð.Ð.ð 	$ð 	$ð 	$ð 	$Ð.Ð.r   Úargc                ó¬  •
—  ‰j         |¦  «        r=|}|j        dk    r‰|          |_         ‰|¦  «          ‰	| ¦  «          ‰|¦  «         d S t          j        |dd¦  «        }|rS ‰	| ¦  «          ‰
|¦  «         |j        D ]3}|                     ¦   «         s ‰|                     ¦   «         ¦  «         Œ4d S ‰r‚t          |t          t          f¦  «        rft          ˆfd„|D ¦   «         ¦  «        rKt          |¦  «        }|D ]} ‰|¦  «          ‰|¦  «         Œt          ‰|          ‰|          |‰‰¦  «         d S  ‰	| ¦  «          ‰|¦  «         d S )Nr‡   Fc              3  ó8   •K  — | ]} ‰j         |¦  «        V — Œd S rP   rŽ   )r@   Údr   s     €r   rB   z7getsetitem_flat.<locals>.append_item.<locals>.<genexpr>º  s/   øè è € Ð5VÐ5VÈQ°o°c´oÀaÑ6HÔ6HÐ5VÐ5VÐ5VÐ5VÐ5VÐ5Vr   )r/   Ú_sizer?   r   rq   rr   rs   rA   r   rE   r   r�   rN   )r   r¸   r»   ÚinfoÚlevelÚdim_packr   r©   r®   r´   r²   rœ   r6   r5   r3   r1   s         €€€€€€€€€€r   Úappend_itemz$getsetitem_flat.<locals>.append_item¦  s¤  ø€ Øˆ3Œ?˜3ÑÔð 	ØˆAØŒw˜"Š}ˆ}Ø˜Aœ�”ØˆG�A‰JŒJˆJØˆK˜‰NŒNˆNØÐ˜sÑ#Ô#Ð#ØˆFåÔ   e¨UÑ3Ô3ˆØð 	ØˆK˜‰NŒNˆNØÐ Ñ%Ô%Ð%Øœð )ð )�Ø×*Ò*Ñ,Ô,ð )Ø�G˜EŸIšI™KœKÑ(Ô(Ð(øØˆFàð 	Ý˜#¥¥t˜}Ñ-Ô-ð µ#Ð5VÐ5VÐ5VÐ5VÐRUÐ5VÑ5VÔ5VÑ2VÔ2Vð å ™9œ9�Ø!ð *ð *�AØ�G˜A‘J”J�JØ&Ð& qÑ)Ô)Ð)Ð)Ý" 2 a¤5¨"¨Q¬%°¸3ÀÑDÔDÐDØ�àˆ�A‰ŒˆØÐ˜3ÑÔÐÐÐr   r   zCannot restride None tensorr‡   Fc                 ód   •— ‰dk    rt          ‰ ¦  «        Šd S ‰t          ‰ ¦  «        k    rdŠd S d S )Nr‡   r   )rD   )r$   Útensor_insert_points   €€r   Úmark_tensor_indexz*getsetitem_flat.<locals>.mark_tensor_indexí  sI   ø€ à "Ò$Ð$Ý"% mÑ"4Ô"4ÐÐÐØ ¥C¨Ñ$6Ô$6Ò6Ð6Ø"#ÐÐÐð 7Ð6r   TzDim z not found in seen_dimsz(TensorInfo should have valid tensor data)r   r   r    r"   r$   r%   )rA   r   r   r7   )rª   r   r   r7   )r¯   r   r   r7   r‘   )r   r7   )r   r2   r¸   r   r   r7   )r.   r   ru   rw   r?   Ústrider   rr   r   rs   r\   rA   Ú
as_stridedÚstorage_offsetrG   r/   rv   r
   r   Ú
_get_ranger   r2   rF   ÚinsertrC   rD   r%   ÚtoÚdevicer	   r   )%r�   r—   r£   r¤   rœ   r·   rÀ   r   r¾   r¡   r¸   r    Úindex_levelsÚrequires_getindexrÃ   Úinpr»   Údim_idxÚtÚseen_positionalsr   r©   r®   r´   r²   r±   r"   r¶   r6   r5   r$   r3   r§   r¨   r1   r­   rÂ   s%       `               @@@@@@@@@@@@@@@@@r   r•   r•   k  sš  øøøøøøøøøøøøøøøøøø€ ð ÐÐÐÐÐð €IØ!#€Oð&ð &ð &ð &ð &ð &ð &ð €KØ!€MØ Ðð#ð #ð #ð #ð #ð #ð #ð.ð .ð .ð .ð .ð .ð .ð .ð €CØ
€CØÔÐÝÐBÑCÔCÐCØ	Ô	×	Ò	Ñ	 Ô	 €BØ	Ô	×	 Ò	 Ñ	"Ô	"€Bðð ð ð ð ð ð ð ð ð ð
 ˜!˜!˜!Œ}€Hð$ð $ð $ð $ð $ð $ð $ð $ð $ð ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  õB ˜iÔ.Ñ/Ô/ð ð ‰ˆˆ5å˜$ Ñ&Ô&ˆØˆ?ØˆK˜˜6 #œ;Ñ'Ô'Ð'Ð'à×"Ò"Ñ$Ô$ð Ø�‘”�Øð (Ø&Ð&¥u¨T¡{¤{Ñ3Ô3Ð3Ø�K ‘N”N�N�Nà" 1œ+�CØ'¨¨¨œ|�HØ�K  3Ñ'Ô'Ð'Ð'à�˜Ÿ	š	™œÑ$Ô$Ð$Ø"Ð" 5§9¢9¡;¤;Ñ/Ô/Ð/Ø�˜A‘”��à€K�M„M€Mð ð ' ð 'ØÔÐ#ÝÐ<Ñ=Ô=Ð=ØÔ&×1Ò1Ø��iÔ&×5Ò5Ñ7Ô7ñ
ô 
ˆˆð  Ô&ˆð  "€MØ€LØÐØÐð$ð $ð $ð $ð $ð $ð $õ ˜KÑ(Ô(ð 3ñ 3‰ˆˆ3Ø˜ÔÐ'Ø $ÐØÐÑÔÐØ& qÔ)Ô0ð /ð /�Ø Ð,Ð,Ø ×'Ò'¨Ñ.Ô.Ð.øð/ð ˆSŒ_˜SÑ!Ô!ð 	3ØˆAå! )¨QÑ/Ô/ˆGØˆÝ$Ð%F¨AÐ%FÐ%FÐ%FÑGÔGÐGØ˜wÔ'¨1Ò,Ð,Ý!& t¡¤�˜A‘Ø×$Ò$¥X¨a¡[¤[Ñ1Ô1Ð1Ð1à$(Ð!Ø!%�˜A‘Ý#-Ø—L’L‘N”N¥X¨a¡[¤[ M°5¸$ñ$ô $�˜aÑ õ ˜A‘;”; lÐ2Ð2Ø ×'Ò'­°©¬Ñ4Ô4Ð4Ø!Ð!Ñ#Ô#Ð#Ñ#à•e˜D‘k”kÒ!Ð!Ø$(Ð!Ý˜c¥3Ñ'Ô'ð 3Ø×$Ò$¥X¨b¡\¤\Ñ2Ô2Ð2ùð ˜bÒ Ð Ý˜lÑ+Ô+ð 	=ð 	=ˆEØ× Ò Ð!4°eÑ<Ô<Ð<Ð<ð ð YÝ•s˜;Ñ'Ô'Ñ(Ô(ð 
	Yð 
	YˆAØ˜QÔÐ+Ø! !Ô$Ô+�Ø�9Ý(Ð)SÑTÔTÐTà% aÔ(Ô3ð;à-Ð9àŸšÐ2Ô9Ñ:Ô:�AÝ!.¨q°-ÀÔ2BÔ2IÈ<Ñ!XÔ!X�˜A‘øð ÐÝ•e�C Ñ.Ô.Ñ/Ô/Ñ0Ô0ð ;ð ;ˆØ˜Ô×)Ò)Ñ+Ô+ð 	;Ø Ñ!ÐÝ'Ð)9Ð(9Ñ:Ô:ˆM˜!ÑøåØØ+ØØØ#ØÔ'ðñ ô ð r   )r   r   r   r   r   r   )r+   r   r   r   )r1   r2   r3   r2   r4   r   r5   r   r6   r   r   r7   )r"   r   r   rE   )rR   r   rS   r   r   r   )r^   r   r_   r   r`   r   ra   r   rb   r   r   r   )rh   r   rR   r   rk   r   r   r7   )ri   r   r   r   )rh   r   rR   r   r„   r   r   r   )r�   r   r—   r   r£   r#   r¤   r   rœ   r   r   r   )Ú
__future__r   Údataclassesr   r   Útypingr   r   rX   Ú
_dim_entryr	   r
   Ú_tensor_infor   r.   r   r   r   r0   rN   rQ   r]   rj   r€   rg   re   r•   r*   r   r   ú<module>rÖ      s²  ðØ "Ð "Ð "Ð "Ð "Ð "à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø $Ð $Ð $Ð $Ð $Ð $ð ð ØÐÐÐÐÐðð ð ð ð& ðð ð ð ð ñ ô ñ „ðð	;ð 	;ð 	;ð 	;ð1#ð 1#ð 1#ð 1#ðhð ð ð ð%ð %ð %ð %ðP	!ð 	!ð 	!ð 	!ð>-ð >-ð >-ð >-ðBRð Rð Rð Rð&oPð oPð oPð oPðdIð Ið Ið Ið Ið Ir   