Ë
    )êñi|J  ã                  óò   — d dl mZ d dlmZmZ d dlmZmZ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 dd	„Ze G d
„ d«      «       Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)é    )Úannotations)Ú	dataclassÚfield)ÚAnyÚOptionalÚTYPE_CHECKINGÚUnionNé   )Ú_match_levelsÚDimEntry)Ú
TensorInfo©ÚDimc                óŽ   — t        | «      D ]7  \  }}t        |t        «      rt        |t        «      r
||k(  sŒ,|c S ||u sŒ5|c S  y)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   )ÚlstÚitemÚiÚ	list_items       ú[/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/functorch/dim/_getsetitem.pyÚ_safe_indexr      sM   € ô " #›ò ‰ˆˆ9ä�dœHÔ%¬*°YÄÔ*IØ˜DÓ Ø’Ø˜$ÒØŠHðð ó    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<   y)ÚIndexingInfoFÚboolÚcan_call_originalÚadvanced_indexingNzOptional[torch.Tensor]Úself_tensor)Údefault_factoryz	list[Any]Úflat_inputsúlist[DimEntry]Úresult_levelsÚ
has_device)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r   Úlistr!   r#   r$   © r   r   r   r   #   sK   … à#Ð�tÓ#Ø#Ð�tÓ#Ø*.€KÐ'Ó.Ù"°4Ô8€K�Ó8Ù$)¸$Ô$?€M�>Ó?Ø€J�Ôr   r   c                ó\   — ddl m}m}  |j                  | «      xs |j                  | «      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)Úobjr   r,   s      r   Úhas_dimsr0   -   s(   € ÷ àˆ3�?‰?˜3ÓÒ: 6×#5Ñ#5°cÓ#:Ð:r   c           	     óê  — ddl m} d}t        |«      D ]§  \  }}|j                  s‡t	        |dz   t        |«      «      D ]4  }	||	   j                  s |d|›d||	   ›�«      ‚|||	   j                  z  }Œ6 | |z  dk7  r t        d„ |D «       «      }
 |d| › d|
› �«      ‚| |z  }||_        | } n||j                  z  }Œ© || k7  rt        |«      }
 |d	| › d
|› d|
› �«      ‚dgt        |«      z  }|}t        t	        t        |«      «      «      D ]  }|||<   |||   j                  z  }Œ t	        t        |«      «      D ]4  }|j                  ||   j                  «       |j                  ||   «       Œ6 y)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  óP   K  — | ]  }|j                   r|j                  nd –— Œ  y­w)ú?N)Úis_boundÚsize)Ú.0Údims     r   ú	<genexpr>z%_bind_dims_to_size.<locals>.<genexpr>L   s   è ø€ ÒNÀ#¨¯ª˜CŸHšH¸#Ó=ÑNùs   ‚$&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-   r3   r   r7   ÚrangeÚlenr8   ÚtupleÚreversedÚappend)ÚszÚsdÚdimsÚnszÚnsdr3   Úrhs_prodr   r:   ÚjÚtupÚinferred_sizeÚnew_stridesÚcurrent_strides                 r   Ú_bind_dims_to_sizerL   9   s»  € õ %à€HÜ˜D“/ò !‰ˆˆ3Ø�|Š|ä˜1˜q™5¤# d£)Ó,ò )�Ø˜A‘w×'Ò'Ù,ØKÈCÈ7ÐRWÐX\Ð]^ÑX_ÐWbÐcóð ð ˜D ™GŸL™LÑ(‘ð)ð �H‰} Ò!ÜÑNÈÔNÓN�Ù(ØTÐUWÐTXÐX\Ð]`Ð\aÐbóð ð  (™NˆMØ$ˆCŒHØˆHÙà˜Ÿ™Ñ ‰Hð-!ð2 �2‚~Ü�D‹kˆÙ Ø/°¨t°4¸°zÐA`ÐadÐ`eÐfó
ð 	
ð �#œ˜D›	‘/€KØ€NÜ”eœC ›IÓ&Ó'ò 'ˆØ'ˆ�A‰Ø˜$˜q™'Ÿ,™,Ñ&‰ð'ô
 ”3�t“9Óò #ˆØ�
‰
�4˜‘7—<‘<Ô Ø�
‰
�;˜q‘>Õ"ñ#r   c                ó   — t        | «      S ©N)r>   )r!   s    r   Úslice_to_tuplerO   m   s   € Ü�ÓÐr   c                ó\  — t        | t        «      r|j                  | «       yt        | t        j                  «      r|j                  | «       yt        | d«      rt        | t        t        f«      r|j                  | «       yt        | t        «      r‰t        | «      dk\  r|j                  | «       y| D ]R  }t        |t        j                  t        f«      st        |d«      s|du s|�t        |«      sŒA|j                  | «        y |j                  | «       y|j                  | «       y)NTFÚ__iter__é    .)r   r>   ÚextendÚtorchr,   r@   ÚhasattrÚstrÚbytesr)   r=   Úslicer0   )ÚindexÚindicesr   s      r   ÚextractIndicesr[   q   sü   € Ü�%œÔØ�‰�uÔØÜ	�Eœ5Ÿ<™<Ô	(Ø�‰�uÔØÜ�U˜JÔ'¬:Ø””Uˆ|ô,ð 	�‰�uÔØô �%œÔÜˆu‹:˜ÒØ�N‰N˜5Ô!Øð ò 		ˆDä˜4¤%§,¡,´Ð!6Ô7Ü˜4 Ô,Ø˜3‘;Ø�<Ü˜D•>à—‘˜uÔ%Ùð		ð 	�‰�uÔØð ‡N�N�5ÔØr   c                ó°   — |d   }|d   }t        ||t        |«      «      }|j                  r t        j                  j                  ||«      S t        |«      S ©Nr   r
   )Ú
getsetitemr0   r   rT   r,   Ú__getitem__Úinvoke_getitem)ÚclsÚfuncÚtypesÚargsÚkwargsÚselfrY   Úiinfos           r   Úgetitemrh   ™   sQ   € Ø�‰7€DØ�‰G€Eä�t˜U¤H¨T£NÓ3€EØ×Òä�|‰|×'Ñ'¨¨eÓ4Ð4ä˜%Ó Ð r   c           	     óª  — ddl m}m} t        | |t	        | «      xs t	        |«      «      }|j
                  r,t        j                  j                  j                  | ||«       y |j                  |dd«      }|�r7|j                  D ]å  }|j                  «       rŒd}|j                  D ]7  }	|	j                  «       rŒ|	j                  «       |j                  «       u sŒ5d} n |rŒ_g }
|j                  D ]Q  }|j                  «       r |
j                  |j!                  «       «       Œ3|
j                  |j                  «       «       ŒS  |d|j                  «       ›dt#        |
«      ›d�«      ‚ |j$                  €t'        d	«      ‚t)        |j$                  |j                  |j                  «      }n|}|j*                  rbt-        |j.                  «      }|j0                  €t3        d
«      ‚t        j                  j                  j                  |j0                  ||«       y|j0                  €t3        d«      ‚|j0                  j5                  |«       y)z2Set values in tensor using first-class dimensions.r
   )r3   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-   r3   r   r^   r0   r   rT   Ú_CÚ
TensorBaseÚ__setitem__ÚcreateÚlevelsÚis_positionalr#   r:   r@   Úpositionr>   ÚtensorÚAssertionErrorr   r   rO   r!   r   ÚRuntimeErrorÚcopy_)rf   rY   Úrhsr3   r   rg   Úrhs_infoÚlÚfoundÚresult_levelÚresult_dimsÚrlÚmatched_rhsrH   s                 r   Úsetitemr~   ¥   s  € ç0ä�t˜U¤H¨T£NÒ$C´h¸s³mÓD€Eà×Òä�‰×Ñ×'Ñ'¨¨e°SÔ9Øð !ˆz× Ñ   e¨UÓ3€Hâà—‘ò 	ˆAØ—?‘?Õ$à�Ø$)×$7Ñ$7ò �Là(×6Ñ6Õ8Ø(×,Ñ,Ó.°!·%±%³'Ò9à $˜Ùðò à9;�KØ#×1Ñ1ò 9˜Ø×+Ñ+Ô-Ø'×.Ñ.¨r¯{©{«}Õ=à'×.Ñ.¨r¯v©v«xÕ8ð	9ñ -Ø<¸Q¿U¹U»W¸Kð HÜ! +Ó.Ð1°ð4óð ð+	ð6 �?‰?Ð"Ü Ð!EÓFÐFÜ#Ø�O‰O˜XŸ_™_¨e×.AÑ.Aó
‰ð ˆð ×Òä˜U×.Ñ.Ó/ˆØ×ÑÐ$ÜÐ>Ó?Ð?Ü�‰×Ñ×'Ñ'¨×(9Ñ(9¸3ÀÕLð ×ÑÐ$ÜÐ;Ó<Ð<Ø×Ñ×Ñ Õ,r   c                ó  — | j                   r4| j                  }t        | j                  «      }|€t	        d«      ‚||   }n| j                  }|€t	        d«      ‚ddlm} |j                  || j                  | j                  «      S )NzCannot getitem on None tensorr
   )r,   )
r   r   rO   r!   rt   r-   r,   Úfrom_positionalr#   r$   )rg   r   rH   Úrtensorr,   s        r   r`   r`   æ   s„   € Ø×ÒØ×'Ñ'ˆÜ˜U×.Ñ.Ó/ˆØÐÜÐ>Ó?Ð?Ø˜cÑ"‰à×#Ñ#ˆØˆ?ÜÐ>Ó?Ð?õ à×!Ñ! '¨5×+>Ñ+>À×@PÑ@PÓQÐQr   c                óÔ  ‡— ddl m} | }g }t        |«      r|j                  |«       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        ||«      rCd	}|j                  s |
|«       |}n|t        |j                  «      z  }|	j                  |«       Œu|€d}Œz ||«      r
d	}d}|dz  }ŒŒ|dz  }Œ’ |rt        d¬«      S t        j                  | d	d«      }t        |j                  «      }||kD  rt        d|› d|› d�«      ‚||z
  }‰dk7  r4|�|j                  |«       n t!        d «      g|z  }|d ‰ |z   |‰dz   d  z   }t#        t        |	«      dz
  dd«      D ]8  }|	|   }|€‰dk7  r
|‰kD  r||z  }||   }|d | |j                  z   ||dz   d  z   }Œ: t%        ||g g |«      S )Nr
   )ÚDimListT)r   r   éÿÿÿÿc                ó<   •— ‰dk7  rddl m}  |d‰› d| › �«      ‚| Šy )Nr„   r
   r2   z\at most one ... or unbound dimension list can exist in indexing list but found 2 at offsets r4   )r-   r3   )r   r3   Úexpanding_objects     €r   Úcheck_expandingz#getsetitem.<locals>.check_expanding  s7   ø€ à˜rÒ!Ý,á$ØnØ#Ð$ E¨!¨ð.óð ð Ñr   c                óˆ   ‡— ddl mŠ t        | t        t        f«      xr$ t        | «      dkD  xr t        ˆfd„| D «       «      S )Nr
   r   r   c              3  óB   •K  — | ]  } ‰j                   |«      –— Œ y ­wrN   ©r.   )r9   r   r   s     €r   r;   z1getsetitem.<locals>.is_dimpack.<locals>.<genexpr>  s   øè ø€ Ò8¨d�O�C—O‘O D×)Ñ8ùó   ƒ)r-   r   r   r>   r)   r=   Úall)Úsr   s    @r   Ú
is_dimpackzgetsetitem.<locals>.is_dimpack  s>   ø€ Ýô �qœ5¤$˜-Ó(ò 9Ü�A“˜‘
ò9äÓ8°aÔ8Ó8ð	
r   F.z	at least z/ indices were supplied but the tensor only has z dimensions©r   ÚintÚreturnÚNone)r�   r   r‘   r   )r-   rƒ   r0   r@   r[   r   r   r   r7   r=   Ú_dimsr   rn   ro   Ú
ValueErrorÚbind_lenrX   r<   Úgetsetitem_flat)rf   rY   Útensors_have_dimsrƒ   Ú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   r^   r^   ù   s�  ø€ Ýà$5Ð 5Ðà€JÜ�„Ø×Ñ˜%Õ ä$ U¨JÓ7ˆá$©[Ü°$Ô7Ð7ð €LØÐØÐØ€Hõ	ó
ð !ÐÜ˜*Ó%ò ‰ˆˆ1Ü�AŒ;Ø(-Ð%Ø˜AÑ‰LØ�#‰XÙ˜AÕÜ˜˜7Ô#Ø(-Ð%Ø—:’:Ù Ô"Ø#$Ñ à¤ A§G¡G£Ñ,�Ø�O‰O˜AÕØˆYØ#'Ñ Ù˜Œ]Ø(-Ð%Ø#'Ð Ø˜AÑ‰Là˜AÑ‰Lð+ñ0 !Ü¨dÔ3Ð3ä×!Ñ! $¨¨tÓ4€IÜ�Y×%Ñ%Ó&€JØ�jÒ ÜØ˜�~Ð%TÐU_ÐT`Ð`kÐló
ð 	
ð
   ,Ñ.€NØ˜2ÒØÐ'à×%Ñ% nÕ5ô ˜t›˜¨Ñ6ˆIàÐ,Ð,Ð-ØñàÐ-°Ñ1Ð3Ð4ñ5ð ô ”3�x“= 1Ñ$ b¨"Ó-ò IˆØ�q‰kˆð Ð$Ø  BÒ&ØÐ&Ò&à�>Ñ!ˆCà˜‰_ˆð    Ð%¨¯©Ñ0°:¸cÀA¹g¸iÐ3HÑH‰
ð!Iô$ ˜9 j°"°bÐ:NÓOÐOr   c                ój  ‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡!‡"‡#‡$— 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	                  «       Š"| j                  j                  «       Šdˆˆˆˆˆ"fd„Š|d d  Šdˆˆˆˆfd„}dˆˆˆˆˆˆˆˆˆˆ"f
d	„}t        | j                  «      D ]›  \  }}t        ||«      }	|	� ||||	   «       Œ!|j                  «       r7 |«        ‰s ‰t        d «      «        ‰|«       ŒT‰d
   }
‰dd  Š |||
«       Œh ‰|j                  «       «        ‰|j                  «       «        ‰|«       Œ�  |«        ‰rO‰rM| j                  €t        d«      ‚| j                  j                  ‰‰| j                  j                  «       «      }n| j                  }g Šg }dŠ$d}dˆˆ$fd„}t        ‰«      D �]=  \  }}‰#|   �4d} |«        ‰#|   j                  D ]  }||vsŒ|j                  |«       Œ Œ@ ‰j                  |«      r°|}t        ‰ |«      }|€t!        d|› d�«      ‚‰!|   dk(  r)t        d «      ‰|<   ‰j                  t#        |«      «       Œ¢d}d ‰|<   t%        |j'                  «       t#        |«      gdd «      ‰#|<   t#        |«      |vr|j                  t#        |«      «        |«        �Œ|t        d «      k7  rd}t)        |t*        «      r�Œ$‰j                  t#        d«      «       �Œ@ ‰$dk7  r"t-        |«      D ]  }‰j/                  ‰$|«       Œ |r„t1        t3        ‰«      «      D ]m  }‰#|   €Œ	‰#|   j                  }|€t!        d«      ‚‰#|   j4                  s‰�|j7                  ‰j8                  «      }t;        |‰#|   j                  |«      ‰|<   Œo d
}t-        t1        t3        ‰«      «      «      D ]*  }‰|   j                  «       sŒ|dz  }t#        | «      ‰|<   Œ, t=        d||‰‰| j4                  ¬«      S )Nr
   r   c                ó‚   •— t        ‰| «      }|�‰|xx   dz  cc<   y ‰j                  | «       ‰j                  d«       y )Nr
   )r   r@   )r:   r£   Ú	seen_dimsÚseen_dims_nusess     €€r   Úadd_dimz getsetitem_flat.<locals>.add_dimx  s@   ø€ ä˜) SÓ)ˆØˆ?Ø˜CÓ  AÑ%Ô à×Ñ˜SÔ!Ø×"Ñ" 1Õ%r   c                óJ   •— ‰j                  | «       ‰j                  d «       y rN   ©r@   )Úhandler!   Útensor_inputss    €€r   Úappend_flat_handlez+getsetitem_flat.<locals>.append_flat_handle…  s   ø€ Ø×Ñ˜6Ô"Ø×Ñ˜TÕ"r   c                ó‚   •— ‰j                  d «       ‰j                  | «       | j                  r‰€| j                  Šy y y rN   )r@   r$   rr   )ÚtiÚdevice_holding_tensorr!   r­   s    €€€r   Úappend_tensor_inputz,getsetitem_flat.<locals>.append_tensor_input‰  s=   ø€ Ø×Ñ˜4Ô Ø×Ñ˜RÔ à�=Š=Ð2Ð:Ø$&§I¡IÑ!ð ;ˆ=r   z%Cannot get size/stride on None tensorc                ó\   •— ‰r)‰j                  ‰|    «       ‰j                  ‰|    «       y y rN   r«   )r   rž   rE   rD   rB   rA   s    €€€€€r   Úappend_sizez$getsetitem_flat.<locals>.append_size—  s+   ø€ ÙØ�J‰J�r˜!‘uÔØ�J‰J�r˜!‘uÕð  r   c                 óš   •— ‰rH‰d   €B ‰ t        d «      «       ‰j                  d«       ‰j                  d«       ‰dd  Š‰r‰d   €Œ@y y y y r]   )rX   r@   )r®   Úinput_itrE   rD   s   €€€€r   Úparse_nonesz$getsetitem_flat.<locals>.parse_nonesž  sQ   ø€ á˜8 A™;Ð.Ùœu T›{Ô+Ø�J‰J�qŒMØ�J‰J�qŒMØ  �|ˆHñ	 ˜8 A™;Ò.ˆhÐ.ˆhr   c                ó>  •
—  ‰j                   |«      r4|}|j                  dk(  r
‰|    |_         ‰|«        ‰	| «        ‰|«       y t        j                  |dd«      }|rI ‰	| «        ‰
|«       |j
                  D ])  }|j                  «       rŒ ‰|j                  «       «       Œ+ y ‰rbt        |t        t        f«      rLt        ˆfd„|D «       «      r8t        |«      }|D ]  } ‰|«        ‰|«       Œ t        ‰|    ‰|    |‰‰«       y  ‰	| «        ‰|«       y )Nr„   Fc              3  óB   •K  — | ]  } ‰j                   |«      –— Œ y ­wrN   rŠ   )r9   Údr   s     €r   r;   z7getsetitem_flat.<locals>.append_item.<locals>.<genexpr>º  s   øè ø€ Ò5VÈQ°o°c·o±oÀa×6HÑ5Vùr‹   )r.   Ú_sizer8   r   rn   ro   rp   r:   r   r>   r)   rŒ   rL   )r   Úargrº   ÚinfoÚlevelÚdim_packr   r©   r®   r´   r²   rž   rE   rD   rB   rA   s         €€€€€€€€€€r   Úappend_itemz$getsetitem_flat.<locals>.append_item¦  s  ø€ Øˆ3�?‰?˜3ÔØˆAØ�w‰w˜"Š}Ø˜A™�”Ù�AŒJÙ˜ŒNÙ˜sÔ#Øä× Ñ   e¨UÓ3ˆÙÙ˜ŒNÙ Ô%ØŸ™ò )�Ø×*Ñ*Õ,Ù˜EŸI™I›KÕ(ð)ð áÜ˜#¤¤t˜}Ô-´#Ó5VÐRUÔ5VÔ2Vä ›9�Ø!ò *�AÙ˜A”JÙ& qÕ)ð*ô # 2 a¡5¨"¨Q©%°¸3ÀÔDØá�AŒÙ˜3Õr   r   zCannot restride None tensorr„   Fc                 óJ   •— ‰dk(  rt        ‰ «      Šy ‰t        ‰ «      k7  rdŠy y )Nr„   r   )r=   )r#   Útensor_insert_points   €€r   Úmark_tensor_indexz*getsetitem_flat.<locals>.mark_tensor_indexí  s.   ø€ à "Ò$Ü"% mÓ"4ÑØ ¤C¨Ó$6Ò6Ø"#Ñð 7r   TzDim z not found in seen_dimsz(TensorInfo should have valid tensor data)r   r   r   r!   r#   r$   )r:   r   r‘   r’   )r¬   r   r‘   r’   )r°   r   r‘   r’   r�   )r‘   r’   )r   r�   r¼   r   r‘   r’   )r-   r   rr   rt   r8   Ústrider   ro   r   rp   rX   r:   Ú
as_stridedÚstorage_offsetr@   r.   rs   r   r   Ú
_get_ranger   r�   r?   Úinsertr<   r=   r$   ÚtoÚdevicer   r   )%rŸ   r™   ÚkeysÚvaluesrž   r·   rÀ   r   r¾   r£   r¼   r   Úindex_levelsÚrequires_getindexrÃ   Úinprº   Údim_idxÚtÚseen_positionalsr   r©   r®   r´   r²   r±   r!   r¶   rE   rD   r#   rB   r§   r¨   rA   r­   rÂ   s%       `               @@@@@@@@@@@@@@@@@r   r–   r–   k  s]  ÿÿù€ õ ð €IØ!#€Oö&ð €KØ!€MØ Ðö#÷.ð €CØ
€CØ×ÑÐÜÐBÓCÐCØ	×	Ñ	×	Ñ	Ó	 €BØ	×	Ñ	×	 Ñ	 Ó	"€B÷ñ ð
 ™!ˆ}€H÷$ð $÷ ö  ôB ˜i×.Ñ.Ó/ò ‰ˆˆ5ä˜$ Ó&ˆØˆ?Ù˜˜6 #™;Õ'à×"Ñ"Ô$Ù”ÙÙ&¤u¨T£{Ô3Ù •Nà" 1™+�CØ'¨¨˜|�HÙ  3Õ'á˜Ÿ	™	›Ô$Ù" 5§9¡9£;Ô/Ù˜A•ð%ñ( „Mñ ¡Ø×ÑÐ#ÜÐ<Ó=Ð=Ø×&Ñ&×1Ñ1Ø��i×&Ñ&×5Ñ5Ó7ó
‰ð  ×&Ñ&ˆð  "€MØ€LØÐØÐö$ô ˜KÓ(ó 3‰ˆˆ3Ø˜ÑÐ'Ø $ÐÙÔØ& qÑ)×0Ñ0ò /�Ø Ò,Ø ×'Ñ'¨Õ.ñ/ð ˆS�_‰_˜SÔ!ØˆAä! )¨QÓ/ˆGØˆÜ$ t¨A¨3Ð.EÐ%FÓGÐGØ˜wÑ'¨1Ò,Ü!& t£�˜A‘Ø×$Ñ$¤X¨a£[Õ1à$(Ð!Ø!%�˜A‘Ü#-Ø—L‘L“N¤X¨a£[ M°5¸$ó$�˜aÑ ô ˜A“; lÑ2Ø ×'Ñ'¬°«Ô4Ù!Ö#à”e˜D“kÒ!Ø$(Ð!Ü˜c¤3Ö'Ø×$Ñ$¤X¨b£\Ö2ð;3ð@ ˜bÒ Ü˜lÓ+ò 	=ˆEØ× Ñ Ð!4°eÕ<ð	=ñ Ü”s˜;Ó'Ó(ò 
	YˆAØ˜QÑÑ+Ø! !Ñ$×+Ñ+�Ø�9Ü(Ð)SÓTÐTà% aÑ(×3Ò3Ø-Ð9àŸ™Ð2×9Ñ9Ó:�AÜ!.¨q°-ÀÑ2B×2IÑ2IÈ<Ó!X�˜A’ð
	Yð ÐÜ”eœC Ó.Ó/Ó0ò ;ˆØ˜Ñ×)Ñ)Õ+Ø Ñ!ÐÜ'Ð)9Ð(9Ó:ˆM˜!Òð;ô
 ØØ+ØØØ#Ø×'Ñ'ôð r   )r   r)   r   r   r‘   zOptional[int])r/   r   r‘   r   )rA   r�   rB   r�   rC   r)   rD   r)   rE   r)   r‘   r’   )r!   r)   r‘   r>   )rY   r   rZ   r)   r‘   r   )ra   r   rb   r   rc   r   rd   r   re   r   r‘   r   )rf   r   rY   r   rv   r   r‘   r’   )rg   r   r‘   r   )rf   r   rY   r   r—   r   r‘   r   )rŸ   r   r™   r)   rË   r"   rÌ   r)   rž   r   r‘   r   )Ú
__future__r   Údataclassesr   r   Útypingr   r   r   r	   rT   Ú
_dim_entryr   r   Ú_tensor_infor   r-   r   r   r   r0   rL   rO   r[   rh   r~   r`   r^   r–   r*   r   r   ú<module>rØ      s³   ðÝ "ç (ß 6Ó 6ã ç /Ý $ñ Ýóð& ÷ð ó ðó	;ó1#óhó%óP	!ó>-óBRó&oPðdIØðIàðIð ðIð ð	Ið
 ðIð ôIr   