Ë
    †\;jžy  ã                   óˆ   — d dl Z d dlZd dlZddlmZmZ dZd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Z	 dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zy)é    Né   )ÚcoreÚunique_nameiÿÿÿc           	      óþ  — ddl m} t        |«      }|D �cg c];  }t        ||t        j
                  j                  t        j                  f«      s|�|‘Œ= }}|j                  t        «      }|dk(  r|S |dkD  rt        d«      ‚|j                  t        «      }|t        |«      dz
  k(  r|d d S t        d «      gt        | j                  «      t        |«      z
  |j                  d «      z   dz   z  |||dz    |S c c}w )Nr   ©ÚVariabler   z0An index can only have a single ellipsis ('...')éÿÿÿÿ)Ú	frameworkr   ÚlistÚ
isinstanceÚpaddleÚpirÚOpResultÚnpÚndarrayÚcountÚEllipsisÚ
IndexErrorÚindexÚlenÚsliceÚshape)ÚvarÚitemr   ÚeleÚitem_remove_varÚ	ell_countÚell_idxs          úcG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/base/variable_index.pyÚreplace_ellipsisr       sÿ   € Ý#ô �‹:€Dñ
 óáˆCÜ˜# ¬&¯*©*×*=Ñ*=¼r¿z¹zÐJÔKØˆOò 	Øð ð ð  ×%Ñ%¤hÓ/€IØ�A‚~ØˆØ	�QŠÜÐKÓLÐLà�j‰jœÓ"€Gà”#�d“)˜a‘-ÒØ�C�RˆyÐä',¨T£{ mÜ�—	‘	‹NœS ›YÑ&¨¯©°DÓ)9Ñ9¸AÑ=ñ'
ˆˆW�w ‘{Ð#ð €Kùò+s   –A C:c                 ó  — g }| D ]}  }t        |t        j                  «      r%|j                  t	        j
                  |«      «       ŒBt        |t        «      r|j                  t        |«      «       Œm|j                  |«       Œ |S ©N)r   r   r   Úappendr   ÚassignÚranger   )r   Únew_itemÚ
slice_items      r   Úreplace_ndarray_and_ranger(   @   sb   € Ø€HÛˆ
Ü�j¤"§*¡*Ô-Ø�O‰OœFŸM™M¨*Ó5Õ6Ü˜
¤EÔ*Ø�O‰OœD Ó,Õ-à�O‰O˜JÕ'ð ð €Oó    c                 ó‚   — g }g }t        | «      D ]*  \  }}|€|j                  |«       Œ|j                  |«       Œ, ||fS r"   )Ú	enumerater#   )r   r&   Ú	none_axesÚir'   s        r   Úreplace_noner.   L   sK   € Ø€HØ€IÜ" 4ž‰ˆˆ:ØÐØ×Ñ˜QÕà�O‰O˜JÕ'ð	 )ð
 �YÐÐr)   c                 óF  — ddl m} t        | «      t        u ryt	        | |«      r�t        j                  d«      d   r@t        | j                  «      dk(  r(| j                  d   dk(  rt        j                  d«       yt        | j                  «      dk(  r| j                  t
        j                  k7  ryyt	        | t
        j                  j                  «      rJt        | j                  «      dk(  r2| j                  t
        j                  j                   j"                  k7  ryy)Nr   r   TÚFLAGS_set_to_1dr   zñ1-D Tensor will be treat as advanced indexing in future version. Currently, 1-D Tensor means a scalar, not vector, and please modify it to 0-D Tensor. If advanced indexing is needed, please use `export FLAGS_set_to_1d=False` to set the flag.F)r
   r   ÚtypeÚintr   r   Ú	get_flagsr   r   ÚwarningsÚwarnÚdtypeÚboolr   r   ÚbaseÚ	libpaddleÚBOOL©r   r   s     r   Úis_integer_or_scalar_tensorr<   W   sÙ   € Ý#äˆCƒy”CÑØÜ	�C˜Ô	"ô ×ÑÐ-Ó.Ð/@ÒAÜ�3—9‘9‹~ Ò" s§y¡y°¡|°qÒ'8Ü—‘ð Hôð Üˆs�y‰y‹>˜QÒ 3§9¡9´·±Ò#;Øð ô 
�CœŸ™×,Ñ,Ô	-Üˆs�y‰y‹>˜QÒ 3§9¡9´·±×0EÑ0E×0JÑ0JÒ#JØØr)   c                 ó  — ddl m} t        | |«      r| j                  t        j
                  k(  ryt        | t        j                  j                  «      r2| j                  t        j                  j                  j                  k(  ryy)Nr   r   TF)r
   r   r   r6   r   r7   r   r   r8   r9   r:   r;   s     r   Úis_bool_tensorr>   n   sW   € Ý#ä�#�xÔ  S§Y¡Y´&·+±+Ò%=Øä�3œŸ
™
×+Ñ+Ô,Ø�I‰IœŸ™×.Ñ.×3Ñ3Ò3àØr)   c                 óp  — ddl m} t        j                  j	                  |«      rŒt        j                  j                  |d¬«      ||<   t        |«      D ]Y  \  }}t        ||t        j                  j                  f«      r| |   j                  d«       d||<   ŒF| |   j                  |«       Œ[ y || |<   y )Nr   r   Úint64©r6   r	   )r
   r   r   ÚutilsÚ_contain_varÚ_convert_to_tensor_listr+   r   r   r   r#   )	ÚattrsÚattrÚ	attr_nameÚtensor_attr_nameÚinputsÚinfer_flagsr   r-   Údims	            r   Ú
deal_attrsrL   {   s¤   € Ý#ä‡|�|× Ñ  Ô&Ü#)§<¡<×#GÑ#GØ˜ð $Hó $
ˆÐÑ ô   –o‰FˆAˆsÜ˜# ¬&¯*©*×*=Ñ*=Ð>Ô?Ø�iÑ ×'Ñ'¨Ô+Ø!#�˜A’à�iÑ ×'Ñ'¨Õ,ñ &ð  ˆˆiÒr)   c                 óT  — t        |j                  «      t        | j                  «      kD  r8t        dt        | j                  «      › dt        |j                  «      › d�«      ‚d}|j                  }|t        |j                  «      k  ru||   }|dk7  rM| j                  |   dk7  r;|| j                  |   k7  r)t        dj                  || j                  |   |«      «      ‚|dz  }|t        |j                  «      k  rŒut	        j
                  |«      }t	        j                  | |«      S )NzkThe dims of bool index doesn't match indexed array, the dims of bool index except to be equal or less than z, but received Ú.r   r	   zxThe dimension of bool index doesn't match indexed array along dimension {}, the target dimension is {}, but received {}.r   )r   r   r   Úformatr   ÚnonzeroÚ	gather_nd)r   r   r-   Ú
item_shapeÚdim_lenÚ
bool_2_idxs         r   Úget_value_for_bool_tensorrU   Œ   s  € Ü
ˆ4�:‰:ƒœ˜SŸY™Y›Ò'Üðä˜Ÿ	™	“NÐ# ?´3°t·z±z³?Ð2CÀ1ðFó
ð 	
ð
 	
€AØ—‘€JØ
Œc�$—*‘*‹oÒ
Ø˜Q‘-ˆØ�bŠ=˜SŸY™Y q™\¨RÒ/°G¸s¿y¹yÈ¹|Ò4KÜðMßMSÉVØ�s—y‘y ‘| WóNóð ð 	
ˆQ‰ˆð Œc�$—*‘*‹oÓ
ô —‘ Ó%€JÜ×Ñ˜C Ó,Ð,r)   c                 ó&  — ddl m} t        j                  «       rJ d«       ‚t	        ||t
        f«      r<ddlm} ddlm	} t        j                   ||«      d¬«      } ||«      } |||| ¬	«      S t        d
j                  t        |«      «      «      ‚)a„  branches for tensor array setitem operation.
    A item can be a:
    (1) int/Variable, which is a simple number/variable such as [1], [-2]
    (2) Slice, which is represented by bounds such as [2:-1]
    (3) Tuple, which includes the above two cases such as [2:-1, 1]
    If item is case (1), we perform paddle.tensor.array_write,
    in other cases, we raise a NotImplementedError.
    r   r   z=setitem for tensor_array must be called in static graph mode.r   )Úto_static_variable)Úarray_writer@   rA   )Úxr-   ÚarrayzEOnly support __setitem__ by Int/Variable in tensor_array, but gets {})r
   r   r   Úin_dynamic_moder   r2   Ú(paddle.jit.dy2static.variable_trans_funcrW   Úpaddle.tensorrX   ÚcastÚNotImplementedErrorrO   r1   )r   r   Úvaluer   rW   rX   s         r   Ú_setitem_for_tensor_arrayra   ¤   sŒ   € õ $ô ×"Ñ"Ô$ðGàFóGØ$ä�$˜¤3˜Ô(ÝOÝ-ä�{‰{Ñ-¨dÓ3¸7ÔCˆÙ" 5Ó)ˆÙ˜U d°#Ô6Ð6ä!ØS×ZÑZÜ�T“
óó
ð 	
r)   c                 óº  — g }g }t         }d}t        |«      D ]z  \  }	}
|
€Œ	|	dk(  rd}|	dkD  rt        |«      dkD  r|d   |	dz
  k7  rd}nt        ||	«      }t	        ||
d   j
                  «      }|j                  |	«       |j                  |
d   «       Œ| t        | j
                  «      D ]  }	||	   �Œ	|j                  |	«       Œ |r#t        j                  |«      j                  «       ng }d}|t        t        | j
                  «      «      k(  r| }|r@|}n=d}| j                  |«      }|r(|j
                  dkD  r|dk7  r|j                  |«      }n|}|||||||fS )an  
    Transpose origin Tensor and advanced indices to the front.

    Returns:
        transed_tensor (Tensor): transposed tensor, corresbonding with advanced indices
        transed_index (List): advanced indices transed to the front
        trans_back_dim (List): order of axes to transpose back to original order. Only used in __setitem__.
        pos_of_new_dim (int):  axis of new dim in the result. Only used in __getitem__.
        rank_of_new_dim (int): rank of new dim in the result. Only used in __getitem__.
        transed_value_tensor (Tensor): value tensor transed to the front. Only used in __setitem__.
    r   Nr   r	   T)ÚMAX_INTEGERr+   r   ÚminÚmaxÚndimr#   r%   r   ÚargsortÚtolistr   Ú	transpose)Ú
ori_tensorÚindicesÚis_for_setitemÚvaluesÚout_is_viewÚtransed_dimÚtransed_indexÚpos_of_new_dimÚrank_of_new_dimr-   ÚindiceÚtrans_back_dimÚtransed_value_tensorÚtransed_tensors                 r   Údeal_advanced_indexrw   Â   s  € ð €KØ€Mô !€NØ€Oä˜wÖ'‰	ˆˆ6ØÑØ�AŠvà!"�Ø�1Šuœ˜[Ó)¨AÒ-°+¸b±/ÀQÈÁUÒ2Jà!"‘ä!$ ^°QÓ!7�Ü! /°6¸!±9·>±>ÓBˆOØ×Ñ˜qÔ!Ø× Ñ  ¨¡Õ+ð (ô �:—?‘?Ö#ˆØ�1‰:ÑØ×Ñ˜qÕ!ð $ñ :H”R—Z‘Z Ó,×3Ñ3Ô5ÈR€NØÐà”dœ5 §¡Ó1Ó2Ò2Ø#ˆÙØ#)Ñ àˆØ#×-Ñ-¨kÓ:ˆÙØ�{‰{˜QŠ >°QÒ#6ð (.×'7Ñ'7¸Ó'DÑ$à'-Ð$ð 	ØØØØØØðð r)   c           	      ó"  — ddl m}  |«       r| j                  «       }nMt        | d«      xr? | j                  j                  «       t        j                  j                  j                  k(  }|rg nd gdz  t        | j                  «      z  }g }g }g }g }g }	d}
d}t        |t        «      s|f}t        |«      }t        | |«      }t!        |«      \  }}d}d}t#        |«      D �]¡  \  }}d\  }}}t%        |«      r�|sbt        |t&        «      rR| j                  |   �C| j                  |   dk\  r1|| j                  |   k\  rt)        d|||| j                  |   fz  «      ‚|j+                  |«       |}d}|d	k7  r|dz   nt,        }|dz  }�n`t        |t.        «      r5|j+                  |«       |t1        j2                  |g«      f||<   d
}|dz  }�nt        |t4        «      r]|j6                  }|j8                  }|j:                  }|dz  }|dz  }|€|€|€�Œ3|€dn|}|€|dkD  rdnt,        }|�€½|dkD  rt,        nd	}�n®t        |t<        t        f«      r˜|t1        j2                  |«      f||<   ||   d   j>                  t0        j.                  k(  rMt        |«      | j                  |   k7  r2t)        djA                  t        |«      | j                  |   |«      «      ‚d
}|dz  }|dz  }�n t        |t0        jB                  jD                  «      rÙ|j>                  t0        j.                  k(  s1|j>                  t0        jB                  jF                  jH                  k(  rv|jJ                  dk(  r|j+                  |«       nU|j                  d   | j                  |   k7  r6t)        djA                  |j                  d   | j                  |   |«      «      ‚||f||<   d
}|dz  }|dz  }�nt        |t0        jL                  jN                  «      rÅ|j>                  t0        jL                  j                  jP                  jH                  k(  rv|jJ                  dk(  r|j+                  |«       nU|j                  d   | j                  |   k7  r6t)        djA                  |j                  d   | j                  |   |«      «      ‚||f||<   d
}|dz  }|dz  }nt)        djA                  |«      «      ‚|€�Œ|€�Œ|€�Œ|j+                  |«       |j+                  |«       |	j+                  |«       |j+                  |dz
  «       t        |t0        jB                  jD                  t0        jL                  jN                  f«      s|dk7  rd
n|
}
�Œ¤ |||	||||||
f	S )Nr   )Úin_pir_modeÚdescé   Fr   )NNNz<slice_item %d at dim %d should be >= 0 and < x.shape[%d]: %dr	   TzKThe shape of boolean index {} did not match indexed tensor {} along axis {}zdValid index accept int / bool / slice / ellipsis / list / Tuple / Ndarray / Tensor, but received {}.))r
   ry   Úis_dense_tensor_array_typeÚhasattrrz   r1   r   ÚVarDescÚVarTypeÚLOD_TENSOR_ARRAYr   r   r   Útupler(   r    r.   r+   r<   r2   r   r#   rc   r7   r   Ú	to_tensorr   ÚstartÚstopÚstepr   r6   rO   r8   r   r9   r:   rf   r   r   ÚDataType)rY   rk   ry   Úis_tensor_arrayÚadvanced_indexÚdecrease_axesÚaxesÚstartsÚendsÚstepsÚuse_strided_sliceÚhas_advanced_indexr,   Úestimated_dimrK   r-   r'   rƒ   Úendr…   s                       r   Úparse_indexr’     sq  € Ý&á„}Ø×6Ñ6Ó8‰ô �A�vÓò GØ—‘—‘“¤§¡×!5Ñ!5×!FÑ!FÑFð 	ñ ‰ D 6¨A¡:´°A·G±G³Ñ#<ð ð €MØ€DØ€FØ€DØ€EØÐØÐä�gœuÔ%Ø�*ˆä'¨Ó0€GÜ˜q 'Ó*€GÜ% gÓ.Ñ€GˆYà€MØ
€CÜ" 7×+‰ˆˆ:Ø+Ñˆˆs�DÜ& zÔ2á#Ü˜z¬3Ô/Ø—G‘G˜C‘LÐ,Ø—G‘G˜C‘L AÒ%Ø !§'¡'¨#¡,Ò.ô !ØRØ! 3¨¨Q¯W©W°S©\Ð:ñ;óð ð
 × Ñ  Ô%ØˆEØˆDØ$.°"Ò$4�*˜q’.¼+ˆCØ�1‰HŠCÜ˜
¤DÔ)à×Ñ˜SÔ!àÜ× Ñ  * Ó.ð-ˆN˜=Ñ)ð "&ÐØ˜QÑŠMÜ˜
¤EÔ*Ø×$Ñ$ˆEØ—/‘/ˆCØ—?‘?ˆDØ˜QÑˆMØ�1‰HˆCØˆ}  °°Ùà˜‘1¨$ˆDØˆ}Ø! AšX™¬;�Ø‰{Ø%)¨A¢X•k°2’ä˜
¤T¬5 MÔ2àÜ× Ñ  Ó,ð-ˆN˜=Ñ)ð ˜}Ñ-¨aÑ0×6Ñ6¼&¿+¹+ÒEÜ˜
“O q§w¡w¨s¡|Ò3ä Øa×hÑhÜ˜J›¨¯©°©°sóóð ð "&ÐØ˜QÑˆMØ�1‰HŠCÜ˜
¤F§K¡K×$8Ñ$8Ô9ð × Ñ ¤F§K¡KÒ/Ø×#Ñ#¤v§{¡{×'<Ñ'<×'AÑ'AÒAà—?‘? aÒ'à×$Ñ$ SÕ)à×%Ñ% aÑ(¨A¯G©G°C©LÒ8Ü$Øe×lÑlØ&×,Ñ,¨QÑ/°·±¸±¸sóóð ð
 .;¸JÐ,GˆN˜=Ñ)Ø!%ÐØ˜QÑˆMØ�1‰HŠCÜ˜
¤F§J¡J×$7Ñ$7Ô8à×Ñ¤6§:¡:§?¡?×#;Ñ#;×#@Ñ#@Ò@Ø—?‘? aÒ'à×$Ñ$ SÕ)à×%Ñ% aÑ(¨A¯G©G°C©LÒ8Ü$Øe×lÑlØ&×,Ñ,¨QÑ/°·±¸±¸sóóð ð
 .;¸JÐ,GˆN˜=Ñ)Ø!%ÐØ˜QÑˆMØ�1‰H‰CäØv×}Ñ}Øóóð ð
 ’ ¢°²Ø�M‰M˜%Ô Ø�K‰K˜ÔØ�L‰L˜ÔØ�K‰K˜˜a™Ô ô ØœvŸ{™{×3Ñ3´V·Z±Z×5HÑ5HÐIôð ˜q’yñ ð 'ò ðk ,ð@ 	ØØØØØØØØð
ð 
r)   c                 ó€  — ddl m} ddlm}m} | j
                  t        j                  j                  j                  j                  j                  k(  rt        | ||«      S t        | |«      \	  }}}}	}
}}}}d| i}|	|||||
dœ}d}d}d}d}d}t        j                  j                  |«      r't        j                  j!                  |«      }||d<   |d= t        j                  j                  |«      r't        j                  j!                  |«      }||d	<   |d
= t        j                  j                  |«      r't        j                  j!                  |«      }||d<   |d= |�sŠ| j"                  }||d<   ddlm} t)        |t*        t,        t.        t0        f«      r+t3        j4                  |g«      j7                   ||«      «      }t)        |t2        j8                  «      r>t;        |j<                  «      }|j?                  «       jA                  «       }||d<   ||d<   nVt)        ||t        jB                  jD                  f«      r|j7                  |«      }||d<   |}ntG        dt        |«      › �«      ‚ |«       rO|€'t        jH                  jK                  | ||||	||
||«	      S t        jH                  jM                  | |||||	||
«      S t        j                  jN                  jP                  	 di tS        «       ¤Ž}|jT                  jV                  dk7  r|jY                  | j"                  ¬«      }n|j[                  | j"                  ¬«      } |«       j]                  «       }|j_                  d|d|i|ddi¬«       t        j`                  jb                  jd                  jg                  «       jh                  jk                  |jl                  | jn                  jq                  «       |«       |S t)        ||t        jB                  jD                  t        jB                  jr                  f«      s.t        jt                  |«      j7                  | j"                  «      }tw        | |	|||||
|«      \  }}ty        ||d||«      \  }}}} } }}|j"                  |j"                  k7  r|j7                  |j"                  «      }t        jz                  «       �rt}        |«      dk(  rà|d   j"                  t        j*                  t        j                  j~                  j€                  fv r�t}        |d   j<                  t}        |j<                  «      k(  «      ro|j<                  |j<                  k7  r|jƒ                  |j<                  «      }t        jH                  j…                  t        j†                  |d   «      ||«      }|s*| S |j‰                  ||«      }|s| S |j‹                  ||«      }|j�                  |«      }!|!|d<    |«       r| j�                  «        | }n„t        j                  jN                  jP                  	 di tS        «       ¤Ž}|jT                  jV                  dk7  r|jY                  | j"                  ¬«      }n|j[                  | j"                  ¬«      } |«       j]                  «       }|j_                  d|d|i|ddi¬«        |«       sot        j`                  jb                  jd                  jg                  «       jh                  jk                  |jl                  | jn                  jq                  «       |«       |S )a¯  
    In dynamic mode, this function will modify the value at input tensor, returning same Tensor as input.
    But it will return a new Tensor with assigned value in static mode.

    Args:
        x(Tensor): Tensor to be set value.
        indices(int|slice|None|Tensor|List|Tuple...): Indices, used to indicate the position of the element to be fetched.
        values(Tensor|Number|Ndarray): values to be assigned to the x.
    r   )Úin_dynamic_or_pir_mode)r   Údefault_main_programÚInput)rŠ   r‹   rŒ   r�   r‰   r,   NÚStartsTensorListr‹   ÚEndsTensorListrŒ   ÚStepsTensorListr�   r6   )Úconvert_dtyperm   r   ÚValueTensorzjOnly support to assign an integer, float, numpy.ndarray or paddle.Tensor to a paddle.Tensor, but received Ú	set_valuer   rA   ÚOut)r1   rI   ÚoutputsrE   Úinplace_mapT)rœ   )HÚ r”   r
   r   r•   r1   r   r8   r   r~   r   r€   ra   r’   rB   rC   rD   r6   Údata_feederrš   r   r7   r2   ÚfloatÚcomplexr   rZ   Úastyper   r   r   Úravelrh   r   ÚValueÚ	TypeErrorÚ_C_opsÚ
set_value_Úset_value_with_tensor_Úlayer_helperÚLayerHelperÚlocalsÚmain_programÚcurrent_block_idxÚ*_create_global_variable_for_type_inferenceÚ"create_variable_for_type_inferenceÚcurrent_blockÚ	append_opÚjitÚapiÚProgramTranslatorÚget_instanceÚ_inplace_mapÚaddÚprogramrz   Úidr   r$   Úget_tensor_with_basic_indexingrw   r[   r   r9   r:   ÚexpandÚwhere_Úlogical_notÚ
index_put_Ú	index_putri   Ú_bump_inplace_version)"rY   rk   rm   r”   r   r•   r‹   rŒ   r�   rŠ   r,   r‰   rˆ   r�   rŽ   rI   rE   Úvalue_tensorr—   r˜   r™   r   r6   rš   ÚhelperÚoutputÚ	cur_blockÚ
sub_tensorÚis_viewÚtransed_sub_tensorÚadjusted_advanced_indexÚtransback_dimÚ_Útransback_sub_tensors"                                     r   Ú_setitem_staticrÎ   ²  sÅ  € õ )ß9à‡v�v”—‘×!Ñ!×)Ñ)×1Ñ1×BÑBÒBÜ(¨¨G°VÓ<Ð<ô 	�A�wÓñ
ØØØØØØØØØð �qˆ\€FàØØØØ&Øñ€Eð €LØÐØ€NØ€OØ€Eä‡|�|× Ñ  Ô(Ü!Ÿ<™<×?Ñ?ÀÓGÐØ%5ˆÐ!Ñ"Ø�(ˆOä‡|�|× Ñ  Ô&ÜŸ™×=Ñ=¸dÓCˆØ#1ˆÐÑ Ø�&ˆMÜ‡|�|× Ñ  Ô'Ü Ÿ,™,×>Ñ>¸uÓEˆØ$3ˆÐ Ñ!Ø�'ˆNâà—‘ˆØˆˆg‰å.ä�fœt¤S¬%´Ð9Ô:Ü—X‘X˜v˜hÓ'×.Ñ.©}¸UÓ/CÓDˆFä�fœbŸj™jÔ)Ü˜Ÿ™Ó&ˆEØ—\‘\“^×*Ñ*Ó,ˆFØ$ˆE�(‰OØ"ˆE�'ŠNä˜ ¬6¯:©:×+;Ñ+;Ð <Ô=Ø—]‘] 5Ó)ˆFØ$*ˆF�=Ñ!Ø!‰Lô ðBÜBFÀvÃ,ÀðQóð ñ "Ô#ØÐ#Ü—}‘}×/Ñ/ØØØØØØ!ØØØó
ð 
ô —}‘}×;Ñ;ØØ ØØØØØ!Øó	ð 	ô —[‘[×-Ñ-×9Ñ9ØñÜ%›xñˆFð ×"Ñ"×4Ñ4¸Ò9à×JÑJØŸ'™'ð Kó ‘ð  ×BÑBØŸ'™'ð Có �ñ -Ó.×<Ñ<Ó>ˆIØ×ÑØ ØØ ˜ØØ$ eÐ,ð  ô ô �J‰J�N‰N×,Ñ,×9Ñ9Ó;×HÑH×LÑLØ×!Ñ! 1§6¡6§9¡9£;°ôð ˆMô Ø�XœvŸz™z×/Ñ/´·±×1DÑ1DÐEô
ô —]‘] 6Ó*×1Ñ1°!·'±'Ó:ˆFä<ØØØØØØØØó	
Ñˆ
�Gô$  Ø˜¨¨f°gó
ñ	
ØØ#ØØØØØð
 �<‰<Ð-×3Ñ3Ò3Ø—]‘]Ð#5×#;Ñ#;Ó<ˆFä×!Ñ!Õ#äÐ+Ó,°Ò1Ø+¨AÑ.×4Ñ4Ü—K‘K¤§¡×!6Ñ!6×!;Ñ!;Ð<ñ=äØ+¨AÑ.×4Ñ4ÜÐ-×3Ñ3Ó4ñ5ôð
 —<‘<Ð#5×#;Ñ#;Ò;Ø#Ÿ]™]Ð+=×+CÑ+CÓD�FÜ%+§]¡]×%9Ñ%9Ü×&Ñ&Ð'>¸qÑ'AÓBØ&Øó&Ð"ñ
 Ø�Hð &8×%BÑ%BØ+¨Vó&Ð"ñ Ø�Hà!3×!=Ñ!=Ø'¨ó"Ðð  2×;Ñ;¸MÓJÐØ 4ˆˆ}Ñá!Ô#Ø×#Ñ#Ô%Ø‰Fä—[‘[×-Ñ-×9Ñ9ØñÜ%›xñˆFð ×"Ñ"×4Ñ4¸Ò9à×JÑJØŸ'™'ð Kó ‘ð  ×BÑBØŸ'™'ð Có �ñ )Ó*×8Ñ8Ó:ˆ	Ø×ÑØØØ˜F�OØØ  %Ð(ð 	ô 	
ñ &Ô'ä�J‰J�N‰N×,Ñ,×9Ñ9Ó;×HÑH×LÑLØ×!Ñ! 1§6¡6§9¡9£;°ôð ˆr)   c           	      ó°  — ddl m} d}	 |«       rt        | d«      rd| _        t	        |«      dk(  r| }
�n�d}	|rdnd}d	| gi}|g g |d
œ}|rg |d<   dgt	        |«      z  }t        ||dd||«       t        ||dd||«       t        ||dd||«       ||d<   ddlm}m}  |«       �r¹d|j                  «       v r|d   }n|d   }d|j                  «       v r|d   }n|d   }d|j                  «       v r|d   }n|d   }|rTt        j                  j                  | ||||«      }
t	        |«      dkD  �r£t        j                  j                  |
|«      }
�n� |«       rÚt        |t        t         f«      r>t        j"                  j%                  |«      rt        j"                  j'                  |«      }t        |t        t         f«      r>t        j"                  j%                  |«      rt        j"                  j'                  |«      }| j)                  «       r"t        j*                  j-                  | |«      dfS t        j                  j/                  | ||||d   |d   «      }
nuddlm}  |«       j5                  «       }|j7                  t9        j:                  | j<                  dz   |z   «      | j>                  ¬«      }|jA                  ||d|gi|¬«       |}
t	        |«      dkD  rUd}	tC        |«      D ].  \  }}t	        |D �cg c]
  }||k  sŒ	|‘Œ c}«      }||z
  }|||<   Œ0 t        jD                  |
|¬«      }
 |«       rt        |
d«      rd|
_        |
|	fS c c}w )Nr   )Úin_to_static_modeFÚis_view_varTr   Ústrided_slicer   r–   )rŠ   r‹   rŒ   Údecrease_axisÚstridesr‹   r—   rŒ   r˜   ÚStridesTensorListrJ   )r”   ry   rÓ   )r•   rÌ   )Únamer6   r�   )r1   rI   rž   rE   ©Úaxis)#Údygraph.baserÐ   r}   rÑ   r   rL   r    r”   ry   Úkeysr   r¨   rÒ   Úsqueezer   r   r�   rB   rC   Úget_int_tensor_listr|   Ú_pir_opsÚslice_array_denser   r
   r•   r²   Ú
create_varr   Úgenerate_with_ignorable_keyrÖ   r6   r³   r+   Ú	unsqueeze)rY   rŠ   r‹   rŒ   r�   r‰   r,   rŽ   rÐ   rn   ÚoutÚop_typerI   rE   rJ   r”   ry   Ústr‘   Ústrider•   Útarget_blockÚslice_out_varÚidxrØ   r-   ÚlÚnew_axiss                               r   r¼   r¼   ¤  sR  € õ 0à€KÙÔœw q¨-Ô8ØˆŒä
ˆ4ƒy�A‚~ØŠàˆÙ%6‘/¸GˆØ˜A˜3�ˆàØØØ*ñ	
ˆñ Ø!ˆE�)ÑØ�cœC ›I‘oˆÜØ�6˜8Ð%7¸Àô	
ô 	�5˜$ Ð(8¸&À+ÔNÜØ�5˜)Ð%8¸&À+ô	
ð  +ˆˆmÑç9á!Õ#Ø! V§[¡[£]Ñ2ØÐ.Ñ/‘à˜8‘_�Ø 6§;¡;£=Ñ0ØÐ-Ñ.‘à˜F‘m�Ø" f§k¡k£mÑ3ØÐ 3Ñ4‘à˜yÑ)�Ù Ü—m‘m×1Ñ1°!°T¸2¸sÀFÓK�Ü�}Ó%¨Ó)Ü Ÿ-™-×/Ñ/°°]ÓC’Cá”=Ü! "¤t¬U mÔ4Ü!Ÿ<™<×4Ñ4°RÔ8Ü!'§¡×!AÑ!AÀ"Ó!E˜BÜ! #¬¬e }Ô5Ü!Ÿ<™<×4Ñ4°SÔ9Ü"(§,¡,×"BÑ"BÀ3Ó"G˜CØ×3Ñ3Ô5Ü%Ÿ™×@Ñ@ÀÀBÓGÈÐNÐNÜ—m‘m×)Ñ)ØØØØØ˜-Ñ(Ø˜/Ñ*ó‘õ 8á/Ó1×?Ñ?ÓAˆLà(×3Ñ3Ü ×<Ñ<Ø—F‘F˜S‘L 7Ñ*óð —g‘gð	 4ó ˆMð ×"Ñ"ØØØ  Ð0Øð	 #ô ð  ˆCä
ˆ9ƒ~˜ÒØˆô
 # 9Ö-‰IˆC�Ü¡Ó:¡˜1°°T³’Q Ñ:Ó;ˆAØ˜a‘xˆHØ%ˆI�cŠNð .ô
 ×Ñ˜s¨Ô3ˆáÔœw s¨MÔ:ØˆŒØ�ÐÐùò ;s   Ë<
M
ÌM
c           
      óÔ  — t        | |«      \	  }}}}}}}}	}
t        | |||||||
«      \  }}|	�r9t        ||dd«      \  }}}}}}}t        |«      dk(  rS|d   j                  t
        j                  t
        j                  j                  j                  fv rt        ||d   «      }n[t        |«      }t        |«      dkD  rt        j                  |d¬«      }n|d   j                  d«      }t        j                  ||«      }|dk7  rbt        t!        |||z   «      «      t        t!        d|«      «      z   t        t!        ||z   |j"                  «      «      z   }|j%                  |«      }|S )z´
    Args:
        x(Tensor): Tensor to be indexing.
        indices(int|slice|None|Tensor|List|Tuple...): Indices, used to indicate the position of the element to be fetched.
    FNr   r   r	   r×   )r’   r¼   rw   r   r6   r   r7   r8   r9   r:   rU   Ú parse_bool_and_broadcast_indicesÚstackrá   rQ   r   r%   rf   ri   )rY   rk   r‹   rŒ   r�   rŠ   r,   r‰   rˆ   r�   rŽ   râ   rÌ   rv   rÊ   rq   rr   Úadvanced_index_tensorÚperms                      r   Ú_getitem_staticrð     s¥  € ô" 	�A�wÓñ
ØØØØØØØØØô ,Ø	ØØØØØØØó	�F€Cˆò ô    ^°U¸DÓAñ	
ØØ#ØØØØØô Ð&Ó'¨1Ò,Ð1HØñ2
ç
‰%”F—K‘K¤§¡×!6Ñ!6×!;Ñ!;Ð<ñ2=ô ,ØÐ 7¸Ñ :ó‰Cô 'GØ'ó'Ð#ô Ð*Ó+¨aÒ/Ü(.¯©Ø+°"ô)Ñ%ð
 )@ÀÑ(B×(LÑ(LÈRÓ(PÐ%ä×"Ñ" >Ð3HÓIˆCà˜QÒä”U˜?¨N¸_Ñ,LÓMÓNÜ”u˜Q Ó0Ó1ñ2ä”u˜^¨oÑ=¸s¿x¹xÓHÓIñJð ð
 —-‘- Ó%ˆCà€Jr)   c                 óì   — t        | «      D ]B  \  }}|j                  t        j                  k(  sŒ$t        j                  |«      d d …df   | |<   ŒD t        | «      dkD  rt        j                  | «      } | S )Nr   r   )r+   r6   r   r7   rP   r   Úbroadcast_tensors)rk   r-   rs   s      r   rì   rì   \  se   € ô ˜wÖ'‰	ˆˆ6Ø�<‰<œ6Ÿ;™;Ó&ÜŸ™¨Ó/²°1°Ñ5ˆG�AŠJð (ô ˆ7ƒ|�aÒÜ×*Ñ*¨7Ó3ˆØ€Nr)   )T)r4   Únumpyr   r   r    r   r   rc   r    r(   r.   r<   r>   rL   rU   ra   rw   r’   rÎ   r¼   rð   rì   © r)   r   Ú<module>rõ      so   ðó  ã ã ç à€ò"òJ	òòò.
ò ò"-ò0
ð> >BóAòHiòXoòdhòVJóZr)   