§
    Ë²ÅjXJ ã                  ó  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZmZmZ d dlmZmZ d dlZd dlmc mZ d dlmZ d dlmZmZmZmZ d dlmZ d dl m!Z! ej"        rd d	l#m$Z$  ed
¦  «        Z% ed¦  «        Z& ed¦  «        Z'e
d         Z(	 	 dÌdÍd„Z)dÎd„Z*dÏd„Z+dÐd„Z,d„ Z-d „ Z.dÑd$„Z/dÒd'„Z0dÒd(„Z1dÓd+„Z2dÔd.„Z3ddd/d0œdÕd8„Z4dÖd;„Z5d<„ Z6d×d=„Z7d×d>„Z8dØd?„Z9dÙd@„Z:dÚdD„Z;dÙdE„Z<dÙdF„Z=dÙdG„Z>dÙdH„Z?dÙdI„Z@dÛdJ„ZAdÜdÝdL„ZBdÞdO„ZCdßdP„ZDdàdádU„ZEdàdâdX„ZF	 dàdãd[„ZG	 dàdäd]„ZHdåd_„ZIdæda„ZJdçdc„ZKdèdf„ZLdÜdédg„ZM	 dàdédh„ZNdêdi„ZOdêdj„ZPdédk„ZQdëdédl„ZR	 dìdédn„ZSdédo„ZTdp„ ZUdédq„ZVdédr„ZW	 	 	 dídédt„ZXdédu„ZYdédv„ZZdédw„Z[dédx„Z\dédy„Z]dîd}„Z^d~„ Z_déd„Z`déd€„Zadéd�„Zbdéd‚„Zcdédƒ„Zd	 dïdðd…„Zedéd†„Zfdéd‡„Zgdédˆ„Zhdñdéd‰„ZidédŠ„Zjdòd�„Zkdód’„Zldéd“„Zmd”„ Znd•„ Zodéd–„Zp	 dàdôd›„Zq	 dàdõdž„Zr	 dàdédŸ„Zsd „ Ztdéd¡„Zudéd¢„Zvd£„ ZwdÜd¤„Zxd¥„ Zy	 dÜdöd¨„ZzdÌdéd©„Z{dÌdédª„Z|déd«„Z} e3d¬d­d®d®¦  «        déd¯„¦   «         Z~déd°„Zd÷d¶„Z€ej�        j‚        ej�        jƒ        ej�        j„        ej�        j…        ej�        j†        ej�        j‡        ej�        jˆ        ej�        j‰        ej�        jŠ        ej�        j‹        ej�        jŒ        ej�        j�        ej�        jŽ        d·œZ�d¸d¹dºd»d¼d½d¾d¿dÀdÁdÂdÃdÄdÅdÆdÇœZ�ej‘        ej’        ej“        ej”        ej•        ej–        ej—        ej˜        ej™        ejš        ej›        ejœ        ej�        ejž        ejŸ        ej         gZ¡ej‘        ej’        ej˜        ej—        ej–        ej”        ej•        ej“        ejœ        ejš        ej›        ej�        ejž        ejŸ        ej         dÈœZ¢e�d¸         e�d¹         e�d¿         e�d½         e�d¾         e�d¼         e�d»         e�dº         e�dÉ         e�dÁ         e�dÂ         e�dÀ         e�d¹         e�d¸         e�d½         e�dÆ         gZ£ e¤¦   «         Z¥dÊe¦dË<   dS )øé    )ÚannotationsN)ÚAnyÚCallableÚLiteralÚNoReturnÚSequenceÚTypeVar)ÚConcatenateÚ	ParamSpec)Ú_C)Ú
_constantsÚ_type_utilsÚerrorsÚutils)ÚGLOBALS)Ú	jit_utils)ÚNumberÚ_TÚ_UÚ_P)	ÚvÚiÚisÚfÚfsÚbÚsÚtÚnoneÚdescÚ_ValueDescriptorÚarg_nameú
str | NoneÚ	node_namec           	     óh  — |dk    r| S |dk    st          | ¦  «        s| S |                      ¦   «         }|                     ¦   «         rd S |                     ¦   «         dk    r¬t	          |d¦  «        }|dk    rt          |¦  «        S |dk    rt          |¦  «        S |dk    rt          |¦  «        S |dk    rt          |¦  «        S |d	k    r|S |d
k    rd„ |D ¦   «         S |dk    rd„ |D ¦   «         S t          j
        d|› d|› d�| ¦  «        ‚|                     ¦   «         dk    r®|d
k    r�|                     ¦   «         D ]J}|                     ¦   «         }|                     ¦   «         dk    rt          j
        d|› d|› d�| ¦  «        ‚ŒKd„ |                      ¦   «                              ¦   «         D ¦   «         S t          j
        d|› d�| ¦  «        ‚|�|€+t          j
        d|                     ¦   «         › d�| ¦  «        ‚t          j
        d|› d|› d|                     ¦   «         › d�| ¦  «        ‚)Nr   r   úonnx::ConstantÚvaluer   r   r   r   r   r   c                ó,   — g | ]}t          |¦  «        ‘ŒS © )Úint©Ú.0r   s     úKC:\Projects\Historical\venv\Lib\site-packages\torch/onnx/symbolic_helper.pyú
<listcomp>z_parse_arg.<locals>.<listcomp>J   s   € Ð-Ð-Ð-˜q•C˜‘F”FÐ-Ð-Ð-ó    r   c                ó,   — g | ]}t          |¦  «        ‘ŒS r)   )Úfloatr+   s     r-   r.   z_parse_arg.<locals>.<listcomp>L   s   € Ð/Ð/Ð/ •E˜!‘H”HÐ/Ð/Ð/r/   z5ONNX symbolic does not understand the Constant node 'z' specified with descriptor 'ú'.úprim::ListConstructzFailed to export a node 'z' (in list node z_) because it is not constant. Please try to make things (e.g. kernel sizes) static if possible.c                ól   — g | ]1}t          t          |                     ¦   «         d ¦  «        ¦  «        ‘Œ2S ©r'   )r*   Ú	_node_getÚnoder+   s     r-   r.   z_parse_arg.<locals>.<listcomp>_   s2   € ÐUÐUÐU¸!•C�	 !§&¢&¡(¤(¨GÑ4Ô4Ñ5Ô5ÐUÐUÐUr/   zbONNX symbolic does not know how to unpack the ListConstruct node that is not a list of integers: 'ú'z*Expected node type 'onnx::Constant', got 'z2Expected node type 'onnx::Constant' for argument 'z' of node 'z', got ')Ú	_is_valuer7   Ú
mustBeNoneÚkindr6   r*   r1   ÚboolÚstrr   ÚSymbolicValueErrorÚinputs)r'   r    r"   r$   r7   Únode_valr   Úelement_nodes           r-   Ú
_parse_argrB   /   sÝ  € ð ˆv‚~€~ØˆØˆs‚{€{�) EÑ*Ô*€{Øˆà�:Š:‰<Œ<€DØ‡‚ÑÔð ØˆtØ‡y‚y�{„{Ð&Ò&Ð&Ý˜T 7Ñ+Ô+ˆØ�3Š;ˆ;Ý�x‘=”=Ð Ø�SŠ[ˆ[Ý˜‘?”?Ð"Ø�SŠ[ˆ[Ý˜‘>”>Ð!Ø�SŠ[ˆ[Ý�x‘=”=Ð Ø�SŠ[ˆ[ØˆOØ�TŠ\ˆ\Ø-Ð- HÐ-Ñ-Ô-Ð-Ø�TŠ\ˆ\Ø/Ð/ hÐ/Ñ/Ô/Ð/åÔ+ð7Èð 7ð 7Ø.2ð7ð 7ð 7àñô ð ð
 
�Š‰ŒÐ-Ò	-Ð	-Ø�4Š<ˆ<Ø—[’[‘]”]ð 	ð 	�Ø Ÿvšv™xœx�Ø×$Ò$Ñ&Ô&Ð*:Ò:Ð:Ý Ô3ð]°Lð ]ð ]Ø)-ð]ð ]ð ]ð ñô ð ð ;ð VÐU¸u¿zºz¹|¼|×?RÒ?RÑ?TÔ?TÐUÑUÔUÐUåÔ+ð7Ø/3ð7ð 7ð 7àñô ð ð Ð˜9Ð,ÝÔ'ØH¸¿º¹¼ÐHÐHÐHØñ
ô 
ð 	
õ
 Ô
#ð	QØ!ð	Qð 	QØ.7ð	Qð 	QØAEÇÂÁÄð	Qð 	Qð 	Qàñô ð r/   r7   ú_C.NodeÚkeyr=   c                ó–   — t          | t          j        ¦  «        sJ ‚|                      |¦  «        } t	          | |¦  «        |¦  «        S )z@Gets attributes of a node which is polymorphic over return type.)Ú
isinstancer   ÚNodeÚkindOfÚgetattr)r7   rD   Úsels      r-   r6   r6   t   sE   € å�d�BœGÑ$Ô$Ð$Ð$Ð$Ø
�+Š+�cÑ
Ô
€CØ�7�4˜ÑÔ˜cÑ"Ô"Ð"r/   r'   ú_C.Valuec                óV   — |                       ¦   «                              ¦   «         dk    S )z$Whether a Value is an ONNX constant.r&   ©r7   r;   r5   s    r-   Ú_is_onnx_constantrN   {   s"   € à�:Š:‰<Œ<×ÒÑÔÐ"2Ò2Ð2r/   ú2_C.Value | torch.Tensor | Number | Sequence | NoneÚ
descriptorc                óx   — t          | t          j        ¦  «        rt          | ¦  «        rt	          | |¦  «        S | S ©N)rF   r   ÚValuerN   rB   )r'   rP   s     r-   Ú_maybe_get_constrT   €   s=   € õ �%�œÑ"Ô"ð -Õ'8¸Ñ'?Ô'?ð -Ý˜% Ñ,Ô,Ð,Ø€Lr/   c                ót   — t          | d¦  «        }t          |t          j        ¦  «        r|j        dk    r|S | S )Nr   r)   )rT   rF   ÚtorchÚTensorÚshape)r'   Úvalue_ts     r-   Ú_maybe_get_scalarrZ   Œ   s;   € Ý˜u cÑ*Ô*€GÝ�'�5œ<Ñ(Ô(ð ¨W¬]¸bÒ-@Ð-@ØˆØ€Lr/   c                óx   — t          | ¦  «        st          j        d|› d| › d�| ¦  «        ‚t          | |¦  «        S )Nz0ONNX symbolic expected a constant value of the 'z' argument, got 'r8   )Ú_is_constantr   r>   rB   )r'   r    r"   s      r-   Ú
_get_constr]   “   s_   € Ý˜ÑÔð 
ÝÔ'ð¸xð ð Øðð ð àñ
ô 
ð 	
õ
 �e˜TÑ"Ô"Ð"r/   Ú
list_valueÚreturnúlist[_C.Value]c                óÎ   — |                       ¦   «         }|                     ¦   «         dk    rt          j        d|› d�| ¦  «        ‚t	          |                     ¦   «         ¦  «        S )Nr3   z;ONNX symbolic expected node type prim::ListConstruct, got 'r2   )r7   r;   r   r>   Úlistr?   )r^   Ú	list_nodes     r-   Ú_unpack_listrd   �   sr   € Ø—’Ñ!Ô!€IØ‡~‚~ÑÔÐ0Ò0Ð0ÝÔ'ð"Øð"ð "ð "àñ
ô 
ð 	
õ
 �	× Ò Ñ"Ô"Ñ#Ô#Ð#r/   Útuple_valueútuple[_C.Value, ...]c                óà   — |                       ¦   «         }t          | ¦  «        s+t          j        d|                     ¦   «         › d�| ¦  «        ‚t          |                     ¦   «         ¦  «        S )Nz>ONNX symbolic expected node type 'prim::TupleConstruct', got 'r2   )r7   Ú_is_tuple_constructr   r>   r;   Útupler?   )re   Ú
tuple_nodes     r-   Ú_unpack_tuplerk   ¨   sx   € Ø×!Ò!Ñ#Ô#€JÝ˜{Ñ+Ô+ð 
ÝÔ'ð*Ø—O’OÑ%Ô%ð*ð *ð *àñ
ô 
ð 	
õ
 �×"Ò"Ñ$Ô$Ñ%Ô%Ð%r/   c                óR  — |                       ¦   «         }t          | ¦  «        s:t          j        d|› d|                     ¦   «         › dt
          j        › �| ¦  «        ‚t          |                     ¦   «         ¦  «        }t          |¦  «        dk    st          |¦  «        dk    sJ ‚|S )zöUnpacks a quantized tensor into a tuple of tensor and scale/zero_point.
    Args:
        tuple_value: A tuple of tensor, scale, zero_point, and optionally axis.
    Returns:
        A tuple of tensor, scale, zero_point, and optionally axis.
    z&ONNX symbolic expected the output of `zQ` to be a quantized tensor. Is this likely due to missing support for quantized `z`. Please create an issue on é   é   )
r7   rh   r   r>   r;   r   ÚPYTORCH_GITHUB_ISSUES_URLri   r?   Úlen)re   rj   Úunpackeds      r-   Ú_unpack_quantized_tensorrr   ³   sÅ   € ð ×!Ò!Ñ#Ô#€Jå˜{Ñ+Ô+ð 
ÝÔ'ðg°Zð gð gà—’Ñ!Ô!ðgð gå@JÔ@dðgð gð ñ	
ô 
ð 	
õ �Z×&Ò&Ñ(Ô(Ñ)Ô)€HÝˆx‰=Œ=˜AÒÐ¥ X¡¤°!Ò!3Ð!3Ð!3Ð3Ø€Or/   r   r<   c                ót   — t          | ¦  «        o)|                      ¦   «                              ¦   «         dk    S )Nr3   ©r9   r7   r;   )r^   s    r-   Ú_is_packed_listru   Ê   s1   € Ý�ZÑ Ô ÐV Z§_¢_Ñ%6Ô%6×%;Ò%;Ñ%=Ô%=ÐAVÒ%VÐVr/   Úarg_descriptorsúRCallable[[Callable[_Concatenate[_U, _P], _T]], Callable[_Concatenate[_U, _P], _T]]c                 ó   ‡ — dˆ fd„}|S )aå  A decorator which converts args from torch._C.Value to built-in types.

    For example:

    ```
    @parse_args('v', 'i', 'fs')
    foo(g, a, b, c):
        assert isinstance(a, torch._C.Value)
        assert isinstance(b, int)
        assert isinstance(c, list)
        assert isinstance(c[0], float)
    ```

    Args:
        arg_descriptors: list of str, where each element is
            a string that specifies the type to convert to. Valid descriptors:
            "v": no conversion, keep torch._C.Value.
            "i": int
            "is": list of int
            "f": float
            "fs": list of float
            "b": bool
            "s": str
            "t": torch.Tensor
            "none": the variable is unused
    Úfnú"Callable[_Concatenate[_U, _P], _T]r_   c                óZ   •‡ — ‰‰ _         t          j        ‰ ¦  «        d
ˆˆ fd	„¦   «         }|S )NÚgr   Úargsú_P.argsÚkwargsú	_P.kwargsr_   r   c           	     óŽ  •‡— d}t          ‰¦  «        t          |¦  «        k    s5J dt          |¦  «        › dt          ‰¦  «        › d‰j        › d|› �¦   «         ‚	 t          j        ‰¦  «        }t	          |j                             ¦   «         ¦  «        dd …         }‰j        Šn%# t          $ r d gt          |¦  «        z  }d ŠY nw xY wˆfd„t          |‰|¦  «        D ¦   «         }t          |¦  «        dk    sJ d‰j        › d	|› �¦   «         ‚t          |¦  «        dk    rd
|v sJ d‰j        › d|› �¦   «         ‚ ‰| g|¢R i |¤ŽS )NzÛIf you believe this is not due to custom symbolic implementation within your code or an external library, please file an issue at https://github.com/pytorch/pytorch/issues/new?template=bug-report.yml to report this bug.z,A mismatch between the number of arguments (z) and their descriptors (z") was found at symbolic function 'z'. é   c                ó<   •— g | ]\  }}}t          |||‰¦  «        ‘ŒS r)   )rB   )r,   ÚargÚarg_descr"   Úfn_names       €r-   r.   zBparse_args.<locals>.decorator.<locals>.wrapper.<locals>.<listcomp>  s=   ø€ ð ð ð á+�C˜ 8õ ˜3 ¨(°GÑ<Ô<ðð ð r/   zSymbolic function z4's '**kwargs' can contain a single key/value entry. Ú_outputsz='s '**kwargs' can only contain '_outputs' key at '**kwargs'. )	rp   Ú__name__ÚinspectÚ	signaturerb   Ú
parametersÚkeysÚ	ExceptionÚzip)	r|   r}   r   ÚFILE_BUG_MSGÚsigÚ	arg_namesr†   rv   ry   s	         @€€r-   Úwrapperz.parse_args.<locals>.decorator.<locals>.wrapperñ   sÞ  øø€ ðlð õ
 �Ñ'Ô'­3¨t©9¬9Ò4Ð4Ð4ð"½sÀ4¹y¼yð "ð "Ý&)¨/Ñ&:Ô&:ð"ð "Ø^`Ô^ið"ð "àð"ð "ñ 5Ô4Ð4ðÝÔ'¨Ñ+Ô+�Ý  ¤×!4Ò!4Ñ!6Ô!6Ñ7Ô7¸¸¸Ô;�	Øœ+��øÝð ð ð ð "˜F¥S¨¡Y¤YÑ.�	Ø���ð	øøøð
ð ð ð å/2°4¸È)Ñ/TÔ/Tðñ ô ˆDõ
 �v‘;”; !Ò#Ð#Ð#ð" R¤[ð "ð "àð"ð "ñ $Ô#Ð#õ �6‰{Œ{˜aÒÐØ! VÐ+Ð+Ð+ð&¨¬ð &ð &à#ð&ð &ñ ,Ô+Ð+ð
 �2�aÐ)˜$Ð)Ð)Ð) &Ð)Ð)Ð)s   ÁA	B% Â%CÃC)r|   r   r}   r~   r   r€   r_   r   )Ú_arg_descriptorsÚ	functoolsÚwraps)ry   r’   rv   s   ` €r-   Ú	decoratorzparse_args.<locals>.decoratorì   sN   øø€ ð .ˆÔå	Œ˜Ñ	Ô	ð'	*ð '	*ð '	*ð '	*ð '	*ð '	*ñ 
Ô	ð'	*ðR ˆr/   )ry   rz   r_   rz   r)   )rv   r–   s   ` r-   Ú
parse_argsr—   Î   s*   ø€ ð</ð /ð /ð /ð /ð /ðb Ðr/   T)ÚscaleÚ
zero_pointÚquantize_outputÚarg_q_descriptorsr˜   úfloat | Noner™   ú
int | Nonerš   ú.Callable[[Callable[_P, _T]], Callable[_P, _T]]c                ó   ‡ ‡‡‡— ˆˆˆ ˆfd„}|S )a  A decorator which extends support for quantized version of the base operator.

    Quantization is detected by examining the arguments that are annotated by
    `arg_q_descriptors`.

    If quantization is detected, the base operator symbolic function will be wrapped with
    argument de-quantization and output quantization.

    Otherwise, only the base symbolic function will be invoked.

    For example:

    ```
    @quantized_args(True, False)
    def foo(g, x, y):
        return x + y
    ```

    is equivalent to

    ```
    def q_foo(g, x, y):
        if is_quantized_tensor(x):
            x = dequantize(x)
            out = foo(g, x, y)
            return quantize(out)
        else:
            return foo(g, x, y)
    ```

    Args:
        arg_q_descriptors: A sequence of bool, where each element represents if the
          argument is QTensor for quantized version of this operator. It defaults
          to False for unspecified (variable length) arguments.
        scale: Quantized output scale. If None, derive from
          the first quantized input scale.
        zero_point: Quantized output zero point. If None,
          derive from the first quantized input zero point.
        quantize_output: If True, quantize the output of the base operator. Default is True
    c                óP   •‡ — t          j        ‰ ¦  «        ˆˆ ˆˆˆfd„¦   «         }|S )Nc                óÆ  •‡‡— ‰�*|                       dt          j        ‰¦  «        ¬¦  «        }nd }‰�*|                       dt          j        ‰¦  «        ¬¦  «        }nd }‰dt          |¦  «        t          ‰¦  «        z
  z  z   }t	          t          ||¦  «        ¦  «        }d„ Šg }|D ]z\  Š}t          |¦  «        rG|                     ˆˆfd„|                     ¦   «          	                    ¦   «         D ¦   «         ¦  «         Œ[| 
                     ‰‰|¦  «        ¦  «         Œ{t          |¦  «        s ‰| g|¢R i |¤ŽS g }	|D ]å\  Š} ‰‰|¦  «        r3t          | |¦  «        \  }
}}}|	 
                    |
¦  «         |€|}|€|}ŒDt          |¦  «        r}|                     ¦   «          	                    ¦   «         D ]@} ‰‰|¦  «        r2t          | |¦  «        \  }
}}}|€|}|€|}|                     |
¦  «         ŒA|	 
                    |¦  «         ŒÐ|	 
                    |¦  «         Œæ ‰| g|	¢R i |¤Ž}|€
J d¦   «         ‚|€
J d¦   «         ‚‰rt          | |||¦  «        S |S )NÚConstant©rY   )Fc                óB   — | ot          |¦  «        ot          |¦  «        S rR   )r9   rh   )rP   r„   s     r-   Ú_is_arg_quantizedzMquantized_args.<locals>.decorator.<locals>.wrapper.<locals>._is_arg_quantizedc  s!   € Ø!ÐQ¥i°¡n¤nÐQÕ9LÈSÑ9QÔ9QÐQr/   c              3  ó0   •K  — | ]} ‰‰|¦  «        V — Œd S rR   r)   )r,   Ú	arg_inputr¥   rP   s     €€r-   ú	<genexpr>zEquantized_args.<locals>.decorator.<locals>.wrapper.<locals>.<genexpr>k  sD   øè è € ð (ð (à%ð *Ð)¨*°iÑ@Ô@ð(ð (ð (ð (ð (ð (r/   z-Bug: Scale must be set for quantized operatorz2Bug: Zero point must be set for quantized operator)ÚoprV   Útensorrp   ri   rŽ   ru   Úextendr7   r?   ÚappendÚanyÚdequantize_helperÚreplaceAllUsesWithÚquantize_helper)r|   r}   r   Ú_scaleÚ_zero_pointÚarg_q_descriptors_extendedÚdescriptor_argsÚis_quantizedr„   Únon_quantized_argsÚdequantized_argÚ	arg_scaleÚarg_zero_pointÚ_r§   Úoutputr¥   rP   r›   ry   rš   r˜   r™   s                   @@€€€€€r-   r’   z2quantized_args.<locals>.decorator.<locals>.wrapperP  sJ  øøø€ ð Ð ØŸš˜jµ%´,¸uÑ2EÔ2E˜ÑFÔF��à�ØÐ%ØŸdšd :µu´|ÀJÑ7OÔ7O˜dÑPÔP��à"�ð *;¸XÝ�D‘	”	�CÐ 1Ñ2Ô2Ñ2ñ>ñ *Ð&õ $¥CÐ(BÀDÑ$IÔ$IÑJÔJˆOðRð Rð Rð /1ˆLØ#2ð Lð L‘�
˜Cå" 3Ñ'Ô'ð LØ ×'Ò'ð (ð (ð (ð (ð (à),¯ª©¬×):Ò):Ñ)<Ô)<ð(ñ (ô (ñ ô ð ð ð
 !×'Ò'Ð(9Ð(9¸*ÀcÑ(JÔ(JÑKÔKÐKÐKå�|Ñ$Ô$ð .Ø�r˜!Ð-˜dÐ-Ð-Ð- fÐ-Ð-Ð-ð "$ÐØ#2ð  3ð  3‘�
˜CØ$Ð$ Z°Ñ5Ô5ð 3åDUØ˜3ñEô EÑA�O Y°Àð '×-Ò-¨oÑ>Ô>Ð>à�~Ø!*˜Ø"Ð*Ø&4˜øå$ SÑ)Ô)ð 3Ø%(§X¢X¡Z¤Z×%6Ò%6Ñ%8Ô%8ð Jð J˜	Ø,Ð,¨Z¸ÑCÔCð Jõ !2°!°YÑ ?Ô ?ñØ /Ø )Ø .Ø !ð  &˜~Ø)2 Ø*Ð2Ø.< Ø%×8Ò8¸ÑIÔIÐIøØ&×-Ò-¨cÑ2Ô2Ð2Ð2ð '×-Ò-¨cÑ2Ô2Ð2Ð2ð �R˜Ð9Ð.Ð9Ð9Ð9°&Ð9Ð9ˆFàÐ%Ð%Ð'VÑ%Ô%Ð%àÐ'Ð'ØCñ (Ô'Ð'ð ð GÝ& q¨&°&¸+ÑFÔFÐFØˆMr/   ©r”   r•   )ry   r’   r›   rš   r˜   r™   s   ` €€€€r-   r–   z!quantized_args.<locals>.decoratorO  sW   øø€ Ý	Œ˜Ñ	Ô	ðR	ð R	ð R	ð R	ð R	ð R	ð R	ð R	ñ 
Ô	ðR	ðh ˆr/   r)   )r˜   r™   rš   r›   r–   s   ```` r-   Úquantized_argsr½      s@   øøøø€ ð^Vð Vð Vð Vð Vð Vð Vð Vðp Ðr/   ÚxúNumber | Nonec                óx   — t          | t          j        ¦  «        r| j        dk    r|                      ¦   «         S dS )z,Convert a scalar tensor into a Python value.r)   N)rF   rV   rW   rX   Úitem©r¾   s    r-   Ú_scalarrÃ   ª  s2   € å�!•U”\Ñ"Ô"ð  q¤w°"¢} }Ø�vŠv‰xŒxˆØˆ4r/   c                óB  — t          | t          j        ¦  «        r| S t          j                             |t          j        j        ¦  «        }|t          j        j        k    r>|                     ¦   «                              ¦   «         } t          | |¦  «        ¦   «         S | S )zÔ
    Convert self into the same type of tensor, as necessary.
    We only support implicit casting for scalars, so we never
    actually need to insert an ONNX cast operator here; just
    fix up the scalar.
    )
rF   r   rS   r   ÚJitScalarTypeÚ
from_valueÚ	UNDEFINEDÚscalar_nameÚlowerrI   )Úselfrª   Úscalar_typeÚtys       r-   Ú_if_scalar_type_asrÍ   ±  s�   € õ �$�œÑ!Ô!ð ØˆåÔ+×6Ò6Ø•Ô)Ô3ñô €Kð •kÔ/Ô9Ò9Ð9Ø×$Ò$Ñ&Ô&×,Ò,Ñ.Ô.ˆØ �w�t˜RÑ Ô Ñ"Ô"Ð"Ø€Kr/   c                óŽ   — | d u pAt          | t          j        ¦  «        r&|                      ¦   «                              ¦   «         ndS ©NF)rF   r   rS   r7   r:   rÂ   s    r-   Ú_is_nonerÐ   Ä  s;   € Ø�ˆ9ÐUµ*¸QÅÄÑ2IÔ2IÐT˜Ÿš™œ×,Ò,Ñ.Ô.Ð.ÈuÐUr/   c                ó6   — t          | t          j        ¦  «        S rR   )rF   r   rS   rÂ   s    r-   r9   r9   È  s   € Ý�a�œÑ"Ô"Ð"r/   c                ór   — t          | ¦  «         p'|                      ¦   «                              ¦   «         dv S )N>   r&   úprim::Constantrt   r5   s    r-   r\   r\   Ì  s:   € Ý˜ÑÔÐð  5§:¢:¡<¤<×#4Ò#4Ñ#6Ô#6ð ;ð $ð r/   c                óˆ   — |                       ¦   «                              t          j                             ¦   «         ¦  «        S rR   )ÚtypeÚisSubtypeOfr   Ú
TensorTypeÚgetrÂ   s    r-   Ú
_is_tensorrÙ   Ó  s,   € Ø�6Š6‰8Œ8×Ò¥¤× 1Ò 1Ñ 3Ô 3Ñ4Ô4Ð4r/   Újit_typeú
_C.JitTypeú_C.ListType | Nonec                ó>   — t          | t          j        ¦  «        r| S d S rR   )rF   r   ÚListType)rÚ   s    r-   Ú_as_list_typerß   Ø  s    € Ý�(�BœKÑ(Ô(ð ØˆØˆ4r/   c                óH   — t          |                      ¦   «         ¦  «        d uS rR   )rß   rÕ   rÂ   s    r-   Ú_is_listrá   Þ  s   € Ý˜Ÿš™œÑ"Ô"¨$Ð.Ð.r/   c                ó¤   — t          |                      ¦   «         ¦  «        }|€dS t          |                     ¦   «         t          j        ¦  «        S rÏ   )rß   rÕ   rF   ÚgetElementTyper   r×   ©r¾   Úx_types     r-   Ú_is_tensor_listræ   â  s?   € Ý˜1Ÿ6š6™8œ8Ñ$Ô$€FØ€~ØˆuÝ�f×+Ò+Ñ-Ô-­r¬}Ñ=Ô=Ð=r/   c                ó²   — t          |                      ¦   «         ¦  «        }|€dS t          j                             | ¦  «        }|                     ¦   «         S )z±Checks if x is a scalar list, for example: List[float], List[int].

    Besides checking the type is ListType, we also check if the data type is
    a valid ONNX data type.
    NF)rß   rÕ   r   rÅ   rÆ   Úonnx_compatible)r¾   rå   rË   s      r-   Ú_is_scalar_listré   é  sK   € õ ˜1Ÿ6š6™8œ8Ñ$Ô$€FØ€~ØˆuÝÔ+×6Ò6°qÑ9Ô9€KØ×&Ò&Ñ(Ô(Ð(r/   c                óV   — |                       ¦   «                              ¦   «         dk    S )Núprim::TupleConstructrM   rÂ   s    r-   rh   rh   ö  s   € Ø�6Š6‰8Œ8�=Š=‰?Œ?Ð4Ò4Ð4r/   c                óæ   — t          | ¦  «        sJ ‚t          j                             | t          j        j        ¦  «        t          j        j        t          j        j        t          j        j        hv S rR   )r9   r   rÅ   rÆ   rÇ   Ú	COMPLEX32Ú	COMPLEX64Ú
COMPLEX128rÂ   s    r-   Úis_complex_valuerð   ú  s`   € Ý�Q‰<Œ<ÐÐˆ<ÝÔ$×/Ò/Ø	�;Ô$Ô.ñô õ 	Ô!Ô+ÝÔ!Ô+ÝÔ!Ô,ð
ðð r/   c                óÚ   — t          | ¦  «        r|                      ¦   «         €d S |                      ¦   «         }t          j        t          j        |¦  «        }|                     ¦   «         S rR   )rÙ   rÕ   ÚtypingÚcastr   r×   Údimrä   s     r-   Ú_get_tensor_rankrõ     sP   € Ý�a‰=Œ=ð ˜AŸFšF™HœHÐ,ØˆtØ�VŠV‰XŒX€FÝŒ[�œ¨Ñ/Ô/€FØ�:Š:‰<Œ<Ðr/   Úallow_nonstaticc                ó  — t          | ¦  «        r|                      ¦   «         €d S |                      ¦   «         }t          j        t          j        |¦  «        }|r|                     ¦   «         S |                     ¦   «         S rR   )rÙ   rÕ   rò   ró   r   r×   ÚvaryingSizesÚsizes)r¾   rö   rå   s      r-   Ú_get_tensor_sizesrú     sn   € Ý�a‰=Œ=ð ˜AŸFšF™HœHÐ,ØˆtØ�VŠV‰XŒX€FÝŒ[�œ¨Ñ/Ô/€FØð %ð ×"Ò"Ñ$Ô$Ð$ð �<Š<‰>Œ>Ðr/   rô   r*   c                ó8   — t          | ¦  «        }|r||         nd S rR   )rú   )r¾   rô   rù   s      r-   Ú_get_tensor_dim_sizerü     s"   € Ý˜aÑ Ô €EØÐ(ˆ5�Œ:ˆ: DÐ(r/   c                ó®   — |dk    rt          | ¦  «        }|€J ‚||z   S |€4t          | ¦  «        }|€J ‚t          |¦  «        D ]\  }}|�
|dk    r|c S Œ|S )Néÿÿÿÿrm   )rõ   rú   Ú	enumerate)r¾   rô   Útensor_rankrù   ÚindexÚsizes         r-   Ú_get_dim_for_crossr     s…   € Ø
ˆb‚y€yÝ& qÑ)Ô)ˆØÐ&Ð&Ð&Ø�[Ñ Ð à
€{Ý! !Ñ$Ô$ˆØÐ Ð Ð Ý$ UÑ+Ô+ð 	ð 	‰KˆE�4ØÐ D¨A¢I IØ���øØ€Jr/   r©   Úmsgú_C.Value | NoneÚNonec                ór   — t           j        t          j        j        k    rt          | › d|› �|¦  «         d S d S )Nz, )r   Úoperator_export_typeÚ_C_onnxÚOperatorExportTypesÚONNXÚ_onnx_unsupported)r©   r  r'   s      r-   Ú_unimplementedr  /  s?   € åÔ#¥wÔ'BÔ'GÒGÐGÝ˜R˜.˜. 3˜.˜.¨%Ñ0Ô0Ð0Ð0Ð0ð HÐGr/   Úop_namer   c                ó¬   — d| › dt           j        › �}t          |t          j        ¦  «        rt          j        ||¦  «        ‚t          j        |¦  «        ‚)Nz%Unsupported: ONNX export of operator zR. Please feel free to request support or submit a pull request on PyTorch GitHub: )r   ro   rF   r   rS   r   r>   ÚOnnxExporterError)r  r'   Úmessages      r-   r  r  5  sq   € ð	E°ð 	Eð 	Eå(ÔBð	Eð 	Eð õ
 �%�œÑ"Ô"ð 
ÝÔ'ØØñ
ô 
ð 	
õ Ô
" 7Ñ
+Ô
+Ð+r/   Úcurrent_opsetÚsupported_opsetc                ó    — d| › d|› d|› d�}t          |t          j        ¦  «        rt          j        ||¦  «        ‚t          j        |¦  «        ‚)NúUnsupported: ONNX export of ú
 in opset ú. Please try opset version ú.©rF   r   rS   r   r>   r  )r  r  r  r'   r  s        r-   Ú_onnx_opset_unsupportedr  C  sz   € ð	7 wð 	7ð 	7¸-ð 	7ð 	7Ø$3ð	7ð 	7ð 	7ð õ �%�œÑ"Ô"ð 
ÝÔ'ØØñ
ô 
ð 	
õ Ô
" 7Ñ
+Ô
+Ð+r/   Úreasonc           	     ó¦   — d| › d|› d|› d|› d�	}t          |t          j        ¦  «        rt          j        ||¦  «        ‚t          j        |¦  «        ‚)Nr  r  z. r  r  r  )r  r  r  r  r'   r  s         r-   Ú _onnx_opset_unsupported_detailedr  U  s’   € ð	X wð 	Xð 	XØð	Xð 	XØ"(ð	Xð 	XØETð	Xð 	Xð 	Xð õ �%�œÑ"Ô"ð 
ÝÔ'ØØñ
ô 
ð 	
õ Ô
" 7Ñ
+Ô
+Ð+r/   Únamec                ó   ‡ — ˆ fd„}|S )Nc                 óN   •— t          j        d‰› dt          j        › d�¦  «        ‚)NzONNX export failed on z%, which is not implemented for opset z*. Try exporting with other opset versions.)r   r  r   Úexport_onnx_opset_version)r}   r   r  s     €r-   Úsymbolic_fnz)_block_list_in_opset.<locals>.symbolic_fni  s>   ø€ ÝÔ&ð7 Tð 7ð 7ÝÔ0ð7ð 7ð 7ñ
ô 
ð 	
r/   r)   )r  r"  s   ` r-   Ú_block_list_in_opsetr#  h  s$   ø€ ð
ð 
ð 
ð 
ð 
ð Ðr/   ú _type_utils.JitScalarType | Nonec                 ó    — | D ]J}t           j                             |t           j        j        ¦  «        }|t           j        j        k    r|c S ŒKd S rR   )r   rÅ   rÆ   rÇ   )r}   r„   rË   s      r-   Ú_try_get_scalar_typer&  s  s]   € Øð ð ˆÝ!Ô/×:Ò:Ø•Ô*Ô4ñ
ô 
ˆð �+Ô3Ô=Ò=Ð=ØÐÐÐð >àˆ4r/   ú_type_utils.JitScalarTypec                 óf  — t           j        j        }d„ | D ¦   «         }t          |¦  «        dk    r|S t          |¦  «        dk    r|d         S |d                              ¦   «         }|D ])}t          j        ||                     ¦   «         ¦  «        }Œ*t           j                             |¦  «        S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r)   )r&  )r,   r„   s     r-   r.   z-_type_promote_from_values.<locals>.<listcomp>  s!   € Ð;Ð;Ð;¨sÕ% cÑ*Ô*Ð;Ð;Ð;r/   r   r‚   )r   rÅ   rÇ   rp   ÚdtyperV   Úpromote_typesÚ
from_dtype)r}   ÚundefÚ	jit_typesÚ	new_dtyper   s        r-   Ú_type_promote_from_valuesr0  }  s¨   € ÝÔ%Ô/€EØ;Ð;°dÐ;Ñ;Ô;€IÝ
ˆ9�~„~˜ÒÐØˆÝ
ˆ9�~„~˜ÒÐØ˜Œ|ÐØ˜!”×"Ò"Ñ$Ô$€IØð >ð >ˆÝÔ'¨	°1·7²7±9´9Ñ=Ô=ˆ	ˆ	ÝÔ$×/Ò/°	Ñ:Ô:Ð:r/   r|   újit_utils.GraphContextc                óÀ   — t           j                             |t           j        j        ¦  «        |k    r*|                      d||                     ¦   «         ¬¦  «        S |S ©NÚCast©Úto_i)r   rÅ   rÆ   rÇ   r©   Ú	onnx_type)r|   r'   rÚ   s      r-   Ú_maybe_cast_to_typer8  Š  sf   € õ 	Ô!×,Ò,¨UµKÔ4MÔ4WÑXÔXØò	ð 	ð �tŠtØØØ×#Ò#Ñ%Ô%ð ñ 
ô 
ð 	
ð
 €Lr/   c           
     ó^  — t          |¦  «        }t          |¦  «        }t          |¦  «        s+|                      dt	          j        |g¦  «        ¬¦  «        }nC|�A|r?|dk    r9t          | ||                      dt	          j        dg¦  «        ¬¦  «        ¦  «        }t          j         	                    |t          j        j
        ¦  «        }|t          j        j        t          j        j        hvr'|                      d|t          j        j        ¬¦  «        }|                      d|||¬¦  «        S )	Nr¢   r£   r   r‚   r4  r5  ÚGather©Úaxis_i)rZ   rõ   r9   r©   rV   Ú
LongTensorÚ_reshape_helperr   rÅ   rÆ   rÇ   ÚINT64ÚINTr	  ÚTensorProtoDataType)r|   rÊ   rô   r  Úapply_reshapeÚindex_constÚ	index_dimÚindex_scalar_types           r-   Ú_select_helperrF  ™  s  € Ý# EÑ*Ô*€KÝ  Ñ'Ô'€IÝ�[Ñ!Ô!ð à—’�Z­Ô)9¸;¸-Ñ)HÔ)H�ÑIÔIˆˆØ	Ð	 =Ð	Ø˜Š>ˆ>å#Ø�5˜!Ÿ$š$˜zµ5Ô3CÀQÀCÑ3HÔ3H˜$ÑIÔIñô ˆEõ $Ô1×<Ò<Ø�{Ô(Ô2ñô Ðð ÝÔ!Ô'ÝÔ!Ô%ð!ð ð ð —’�V˜U­Ô)DÔ)J�ÑKÔKˆØ�4Š4�˜$ ¨cˆ4Ñ2Ô2Ð2r/   c                ón   — | j         dk    rddlm}  || ||||¦  «        S ddlm}  || |||||¦  «        S )Né	   r   )Ú_slice)ÚopsetÚtorch.onnx.symbolic_opset9rI  Útorch.onnx.symbolic_opset10)r|   ÚinputÚaxesÚstartsÚendsÚstepsÚ_slice9Ú_slice10s           r-   Ú_slice_helperrT  ±  se   € ð 	„w�!‚|€|Ø@Ð@Ð@Ð@Ð@Ð@àˆw�q˜%  v¨tÑ4Ô4Ð4àBÐBÐBÐBÐBÐBàˆx˜˜5 $¨°°eÑ<Ô<Ð<r/   c                óä   — t           j                             | t           j        j        ¦  «        t           j        j        t           j        j        t           j        j        t           j        j        hv S rR   )r   rÅ   rÆ   rÇ   ÚFLOATÚDOUBLEÚHALFÚBFLOAT16r5   s    r-   Ú_is_fprZ  Ã  sX   € ÝÔ$×/Ò/Ø�{Ô(Ô2ñô õ 	Ô!Ô'ÝÔ!Ô(ÝÔ!Ô&ÝÔ!Ô*ð	
ðð r/   c                ó„   — t           j                             | t           j        j        ¦  «        t           j        j        hv S rR   )r   rÅ   rÆ   rÇ   ÚBOOLr5   s    r-   Ú_is_boolr]  Î  s9   € ÝÔ$×/Ò/Ø�{Ô(Ô2ñô å
Ô
#Ô
(Ð	)ð*ð *r/   c                ó   — t          |t          j        ¦  «        rJ ‚t          |t          ¦  «        r5|                      dt          j        |t          j        ¬¦  «        ¬¦  «        S |                      dt          j        |¦  «        ¬¦  «        S )a  Creates a wrapped number based on https://github.com/pytorch/pytorch/issues/9515.

    A Tensor is a considered a "wrapped number" if it is
    auto-wrapped from a C++ or Python number type. Integer types are
    wrapped as 0-dim int64 tensors and floating-point types are
    wrapped as 0-dim double tensors.

    The input to this function is constant value. If the data type
    is a floating point type, it is converted to a 0-dim double
    tensor, else it is converted to a 0-dim tensor of its original type
    r¢   ©r*  r£   )rF   rV   rW   r1   r©   rª   Údouble)r|   Úscalars     r-   Ú_generate_wrapped_numberrb  Ô  sv   € õ ˜&¥%¤,Ñ/Ô/Ð/Ð/Ð/Ý�&�%Ñ Ô ð RØ�tŠt�J­¬°VÅ5Ä<Ð(PÑ(PÔ(PˆtÑQÔQÐQØ�4Š4�
¥E¤L°Ñ$8Ô$8ˆ4Ñ9Ô9Ð9r/   c                óŒ  — |�t          dd¦  «         |                      d|¦  «        }|                      d||                      dt          j        |gt          j        ¬¦  «        ¬¦  «        ¦  «        }| j        dk    r,|st          dd	¦  «         |                      d
|||d¬¦  «        S |                      d
||||d¬¦  «        S )NÚSortúOut parameter is not supportedÚShaper:  r¢   r_  r£   é
   úAscending is not supportedÚTopKé   ©r<  Úoutputs)r<  Ú	largest_irl  )r  r©   rV   rª   Úint64rJ  )r|   rM  rô   Ú	decendingÚoutÚshape_Ú	dim_size_s          r-   Ú_sort_helperrs  æ  sÕ   € Ø
€Ý�vÐ?Ñ@Ô@Ð@Ø�TŠT�'˜5Ñ!Ô!€FØ—’ØØØ	�ŠˆZ¥¤¨s¨e½5¼;Ð!GÑ!GÔ!GˆÑHÔHñô €Ið
 	„w�"‚}€}Øð 	AÝ˜6Ð#?Ñ@Ô@Ð@Ø�tŠt�F˜E 9°SÀ!ˆtÑDÔDÐDà�tŠtØ�E˜9¨S¸IÈqð ñ 
ô 
ð 	
r/   Fc           
     ó\  — |�t          dd¦  «         t          |¦  «        s7|                      dt          j        |gt          j        ¬¦  «        ¬¦  «        }n‚t          | ||                      dt          j        dg¦  «        ¬¦  «        ¦  «        }t          |¦  «        t          j	        j
        k    r'|                      d|t          j        j
        ¬¦  «        }| j        d	k    r,|st          dd
¦  «         |                      d|||d¬¦  «        S |                      d|||||d¬¦  «        S )Nri  re  r¢   r_  r£   r‚   r4  r5  rg  rh  rj  rk  )r<  rm  Úsorted_irl  )r  r9   r©   rV   rª   rn  r>  r&  r   rÅ   r?  r	  rA  rJ  )r|   rM  Úkrô   ÚlargestÚsortedrp  s          r-   Ú_topk_helperry  ù  s"  € ð €Ý�vÐ?Ñ@Ô@Ð@Ý�Q‰<Œ<ð HØ�DŠD�¥U¤\°1°#½U¼[Ð%IÑ%IÔ%IˆDÑJÔJˆˆå˜A˜q !§$¢$ z½5¼<ÈÈÑ;LÔ;L $Ñ"MÔ"MÑNÔNˆÝ Ñ"Ô"¥kÔ&?Ô&EÒEÐEØ—’�V˜Q¥WÔ%@Ô%F�ÑGÔGˆAØ„w�"‚}€}Øð 	AÝ˜6Ð#?Ñ@Ô@Ð@Ø�tŠt�F˜E 1¨S¸!ˆtÑ<Ô<Ð<à�tŠtØ�E˜1 S°GÀfÐVWð ñ 
ô 
ð 	
r/   c                ód   — | j         dk    rddlm}  || ||¦  «        S ddlm}  || ||¦  «        S )Né   r   )Últ)rJ  Útorch.onnx.symbolic_opset8r|  rK  )r|   rM  ÚotherÚ_lt8Ú_lt9s        r-   Ú
_lt_helperr�    sY   € Ø„w�!‚|€|Ø9Ð9Ð9Ð9Ð9Ð9àˆt�A�u˜eÑ$Ô$Ð$à9Ð9Ð9Ð9Ð9Ð9àˆt�A�u˜eÑ$Ô$Ð$r/   c                óœ   — t           j        dk    rdnd}t          j        d|z   dz   t	          t           j        ¦  «        z   dz   ¦  «         d S )Nrg  zonnx:Resizezonnx:Upsamplez(You are trying to export the model with z for ONNX opset version aœ  . This operator might cause results to not match the expected results by PyTorch.
ONNX's Upsample/Resize operator did not match Pytorch's Interpolation until opset 11. Attributes to determine how to transform the input were added in onnx:Resize in opset 11 to support Pytorch's behavior (like coordinate_transformation_mode and nearest_mode).
We recommend using opset 11 and above for models using this operator.)r   r!  ÚwarningsÚwarnr=   )Úinterpolate_modeÚonnx_ops     r-   Ú_interpolate_warningr‡    sq   € å Ô:¸bÒ@Ð@ˆˆÀoð õ „MØ2Ø
ñ	ðñ	õ •Ô2Ñ3Ô3ñ	4ð7Pñ	Pñ
ô 
ð 
ð 
ð 
r/   c                ó®  — t          |¦  «        dk    r|S t          |d         ¦  «        ro| j        dk    rL|                      dt	          j        |t          j        ¬¦  «        ¬¦  «        }|                      d||¦  «        S |                      d||¬¦  «        S | j        dk     rt          j        d|¦  «        ‚|                      d||d         ¦  «        S )	Nr   é   r¢   r_  r£   Ú	Unsqueeze©Úaxes_iz<Opset version must be >= 13 for Unsqueeze with dynamic axes.)	rp   r\   rJ  r©   rV   rª   Úlongr   r>   )r|   rM  rŒ  rN  s       r-   Ú_unsqueeze_helperrŽ  *  sÌ   € Ý
ˆ6�{„{�aÒÐàˆÝ	�f˜Q”iÑ	 Ô	 ð 7ØŒ7�bŠ=ˆ=Ø—4’4˜
­E¬L¸ÅuÄzÐ,RÑ,RÔ,R�4ÑSÔSˆDØ—4’4˜ U¨DÑ1Ô1Ð1Ø�tŠt�K ¨vˆtÑ6Ô6Ð6à„w�‚|€|ÝÔ'ØJÈEñ
ô 
ð 	
ð �4Š4�˜U F¨1¤IÑ.Ô.Ð.r/   c                óB  — t          |d         ¦  «        ro| j        dk    rL|                      dt          j        |t          j        ¬¦  «        ¬¦  «        }|                      d||¦  «        S |                      d||¬¦  «        S | j        dk     rt          j        d|¦  «        ‚|d         }t          |¦  «        }|€J ‚|d	k    rt          j        d
|¦  «        ‚|dk    r)t          | |dg¦  «        }|                      d||¦  «        S |                      d||¦  «        S )Nr   r‰  r¢   r_  r£   ÚSqueezer‹  z:Opset version must be >= 13 for Squeeze with dynamic axes.r‚   zCFor Squeeze axses as input, the axes rank must be one in ONNX spec.)
r\   rJ  r©   rV   rª   r�  r   r>   rõ   rŽ  )r|   rM  rŒ  rN  Úaxes_tÚ	axes_ranks         r-   Ú_squeeze_helperr“  ;  s,  € Ý�F˜1”IÑÔð 5ØŒ7�bŠ=ˆ=Ø—4’4˜
­E¬L¸ÅuÄzÐ,RÑ,RÔ,R�4ÑSÔSˆDØ—4’4˜	 5¨$Ñ/Ô/Ð/Ø�tŠt�I˜u¨VˆtÑ4Ô4Ð4à„w�‚|€|ÝÔ'ØHÈ%ñ
ô 
ð 	
ð �AŒY€FÝ  Ñ(Ô(€IØÐ Ð Ð Ø�1‚}€}ÝÔ'ØQÐSXñ
ô 
ð 	
ð 
�aŠˆå" 1 f¨q¨cÑ2Ô2ˆØ�tŠt�I˜u fÑ-Ô-Ð-Ø�4Š4�	˜5 &Ñ)Ô)Ð)r/   r‚   c                ó\  — t          |d¦  «        }| j        dk    ry|r^t          |¦  «        s5|                      dt	          j        |t          j        ¬¦  «        ¬¦  «        }|                      d||||¬¦  «        S |                      d|||¬¦  «        S |                      d|||¬¦  «        S )	Nr   r‰  r¢   r_  r£   Ú	ReduceSum)Ú
keepdims_iÚnoop_with_empty_axes_i©rŒ  r–  )rT   rJ  r9   r©   rV   rª   r�  )r|   rM  rŒ  r–  r—  s        r-   Ú_reducesum_helperr™  T  sÕ   € õ " *¨cÑ2Ô2€JØ„w�"‚}€}Øð 	Ý˜VÑ$Ô$ð ØŸšØ­¬°VÅ5Ä:Ð(NÑ(NÔ(Nð ñ ô �ð —4’4ØØØØ%Ø'=ð ñ ô ð ð �tŠtØØØ!Ø#9ð	 ñ 
ô 
ð 	
ð �tŠt�K ¨vÀ*ˆtÑMÔMÐMr/   c                óÆ  ‡‡‡— t          ‰d¦  «        Št          ‰¦  «        rëd}|                      dt          j        |t          j        ¬¦  «        ¬¦  «        }|                      d‰t          j        j        ¬¦  «        }t          | |                      d‰¦  «        d	gt          j        g|g¬
¦  «        }|                      d|t          j        j        ¬¦  «        }|                      d||¦  «        }|                      d||d	¬¦  «        }	nSˆˆˆfd„t          d	‰¦  «        D ¦   «         }
|                      dt          j        |
t          j        ¬¦  «        ¬¦  «        }	|	S )Nr   rj  r¢   r_  r£   r4  r5  rf  r   ©rN  rP  rO  ÚDivÚConcatr;  c                óÎ   •— g | ]a}|d k     rdnVt          ‰‰|z
            ¦  «        t          ‰                     ¦   «                              ¦   «         ‰|z
            ¦  «        z  ‘ŒbS )rj  ç      ð?)r1   rÕ   rù   )r,   r   rô   rM  Úoutput_sizes     €€€r-   r.   z/_interpolate_size_to_scales.<locals>.<listcomp>€  s}   ø€ ð 
ð 
ð 
ð
 ð �1Šuˆuð ˆCå�{ S¨1¡W :Ô.Ñ/Ô/Ý�E—J’J‘L”L×&Ò&Ñ(Ô(¨3°©7¨Ô4Ñ5Ô5ñ6ð
ð 
ð 
r/   )rT   r9   r©   rV   ÚonesÚfloat32r	  rA  rV  rT  ÚsysÚmaxsizeÚrangerª   )r|   rM  r   rô   ÚoffsetÚoffsetsÚdividendÚdivisorÚ
scale_dimsÚscalesÚscales_constants    ```       r-   Ú_interpolate_size_to_scalesr­  s  sc  øøø€ Ý" ;°Ñ5Ô5€KÝ�ÑÔð 
ØˆØ—$’$�z­5¬:°fÅEÄMÐ+RÑ+RÔ+R�$ÑSÔSˆØ—4’4˜ µ'Ô2MÔ2S�4ÑTÔTˆÝØˆq�tŠt�G˜UÑ#Ô#¨1¨#µS´[°MÈ6È(ð
ñ 
ô 
ˆð —$’$�v˜w­WÔ-HÔ-N�$ÑOÔOˆØ—T’T˜% ¨7Ñ3Ô3ˆ
Ø—’�h ¨¸A�Ñ>Ô>ˆˆð
ð 
ð 
ð 
ð 
ð 
õ
 ˜1˜c‘]”]ð
ñ 
ô 
ˆð —’Ø¥¤¨_ÅEÄMÐ RÑ RÔ Rð ñ 
ô 
ˆð €Mr/   c           	     ó„  — t          |d         d¦  «        dk    ot          |d         ¦  «         }|sd S |                      dt          j        dt          j        ¬¦  «        ¬¦  «        }|                      dt          j        t          |d         d¦  «        ¦  «        ¬¦  «        }|                      d||d¬	¦  «        }|S )
Nr   r   rþ   r¢   rj  r_  r£   r�  r;  )rT   rÐ   r©   rV   r¡  r¢  rª   )r|   r«  Úavailable_scalesr§  Úscales_lists        r-   Ú$_interpolate_get_scales_if_availabler±  �  sÆ   € Ý'¨¨q¬	°4Ñ8Ô8¸BÒ>ð ÅxØˆqŒ	ñHô Hð DÐð ð Øˆtà�dŠd�:¥u¤z°!½5¼=Ð'IÑ'IÔ'IˆdÑJÔJ€GØ—$’$Ø�EœLÕ)9¸&À¼)ÀTÑ)JÔ)JÑKÔKð ñ ô €Kð �TŠT�(˜G [¸ˆTÑ;Ô;€FØ€Mr/   c                ót   — |dk    rd }|dd …         }n|d         }|dd …         }t          | |¦  «        }||fS )NÚnearestr   r‚   )r±  )r|   Úmoder}   Úalign_cornersr«  s        r-   Ú_get_interpolate_attributesr¶  �  sQ   € ØˆyÒÐØˆØ�a�b�b”ˆˆà˜QœˆØ�a�b�b”ˆÝ1°!°VÑ<Ô<€FØ�=Ð Ð r/   c                óü  ‡— |                       dt          j        dt          j        ¬¦  «        ¬¦  «        }t	          ‰¦  «        }t          ‰                     ¦   «         t          j        ¦  «        s|�|dk    r|                       d|‰d¬¦  «        S t          | ‰dg¦  «        Š|                       d‰t          j        j        ¬	¦  «        Šˆfd
„t          |dz
  ¦  «        D ¦   «         } | j         d|g|¢R ddiŽŠ‰S )Nr¢   rj  r_  r£   r   r�  r;  r4  r5  c                ó   •— g | ]}‰‘ŒS r)   r)   )r,   r   Úscale_factors     €r-   r.   z+_interpolate_get_scales.<locals>.<listcomp>´  s   ø€ Ð7Ð7Ð7 1�,Ð7Ð7Ð7r/   r<  )r©   rV   r¡  r¢  rõ   rF   rÕ   r   rÞ   rŽ  r	  rA  rV  r¥  )r|   r¹  rô   r§  Úscale_factor_rankr«  s    `    r-   Ú_interpolate_get_scalesr»  ¨  s  ø€ Ø�dŠd�:¥u¤z°!½5¼=Ð'IÑ'IÔ'IˆdÑJÔJ€GÝ(¨Ñ6Ô6ÐÝ�,×#Ò#Ñ%Ô%¥r¤{Ñ3Ô3ð 	8ØÐ%Ð*;¸aÒ*?Ð*?à�tŠt�H˜g |¸AˆtÑ>Ô>Ð>å(¨¨L¸1¸#Ñ>Ô>ˆØ—t’tØ�L¥wÔ'BÔ'Hð ñ 
ô 
ˆð 8Ð7Ð7Ð7­¨c°A©g©¬Ð7Ñ7Ô7ˆØ�1”4˜ 'Ð=¨FÐ=Ð=Ð=¸1Ð=Ð=€LØÐr/   c                ó  ‡— t          |d¦  «        }d|v rd}d|v rd}t          |¦  «         t          |d¦  «        }t          |t          ¦  «        r|rt	          dd¦  «        S |                     ¦   «                              ¦   «         st	          dd¦  «        S |                     ¦   «                              ¦   «         }t          |¦  «        st          | ||¦  «        }nªt          ‰¦  «        s‹t          ‰¦  «        sit          ‰d¦  «                             ¦   «         d	k    }|rAt          | ‰d	g¦  «        Šˆfd
„t          |dz
  ¦  «        D ¦   «         Š | j        dg‰¢R dd	iŽŠt          | |‰|¦  «        }nt	          dd¦  «        S ||fS )Nr   ÚlinearÚcubicr   Úinterpolatezalign_corners == Trueúmissing input shaper   r   c                ó   •— g | ]}‰‘ŒS r)   r)   ©r,   r   r  s     €r-   r.   z4_interpolate_get_scales_and_mode.<locals>.<listcomp>Ò  s   ø€ Ð5Ð5Ð5 ˜Ð5Ð5Ð5r/   rj  r�  r<  z.Both size and scales are None in __interpolate)rT   r‡  rF   r<   r  rÕ   rô   rÐ   r»  ru   rŽ  r¥  r©   r­  )r|   rM  r  r¹  r´  rµ  rô   Ú	is_scalars     `     r-   Ú _interpolate_get_scales_and_moderÄ  ¹  s¼  ø€ õ ˜D #Ñ&Ô&€DØ�4ÐÐØˆØ�$€€ØˆÝ˜ÑÔÐå$ ]°CÑ8Ô8€MÝ�-¥Ñ&Ô&ð F¨=ð FÝ˜mÐ-DÑEÔEÐEà�:Š:‰<Œ<×ÒÑÔð DÝ˜mÐ-BÑCÔCÐCØ
�*Š*‰,Œ,×
Ò
Ñ
Ô
€Cå�LÑ!Ô!ð 
Ý.¨q°,ÀÑDÔDˆˆÝ�d‰^Œ^ð 
Ý˜tÑ$Ô$ð 	7Ý(¨¨sÑ3Ô3×7Ò7Ñ9Ô9¸QÒ>ˆIØð 7Ý(¨¨D°1°#Ñ6Ô6�Ø5Ð5Ð5Ð5¥e¨C°!©G¡n¤nÐ5Ñ5Ô5�Ø�q”t˜HÐ6 tÐ6Ð6Ð6°AÐ6Ð6�Ý2°1°e¸TÀ3ÑGÔGˆˆåØÐKñ
ô 
ð 	
ð ˜ÐÐr/   rM  útorch._C.ValueÚkeepdimc           
     óö  ‡ ‡— ˆ ˆfd„}t          |¦  «        rÅt          ‰ |‰                      dt          j        dg¦  «        ¬¦  «        ¦  «        } ||dd¬¦  «        }|rz‰                      d|¦  «        }‰                      d|¦  «        }	‰                      d	|	t          j        d
gt          j        ¬¦  «        ¬¦  «        }
‰                      d||
¦  «        }|S t          |d¦  «        } ||||¬¦  «        S )Nc                ó€   •— ‰j         dk    r‰                     ‰| ||d¬¦  «        S ‰                     ‰| ||¬¦  «        S )Né   F)r<  r–  Úselect_last_index_i©r<  r–  )rJ  r©   )rM  r<  r–  r|   r  s      €€r-   Ú
op_wrapperz)_argmin_argmax_helper.<locals>.op_wrapperã  sT   ø€ ØŒ7�bŠ=ˆ=Ø—4’4ØØØØ%Ø$)ð ñ ô ð ð �tŠt�G˜U¨6¸jˆtÑIÔIÐIr/   r¢   rþ   r£   r   FrË  rf  ÚConstantOfShaper‚   r_  ÚReshaper   )rÐ   r>  r©   rV   rª   rn  rB   )r|   rM  rô   rÆ  r  rÌ  Ú	flattenedr»   Úinput_shapeÚinput_shape_shapeÚ	new_shapes   `   `      r-   Ú_argmin_argmax_helperrÓ  Ü  s'  øø€ ð	Jð 	Jð 	Jð 	Jð 	Jð 	Jõ ��}„}ð Ý#Øˆu�a—d’d˜:­u¬|¸R¸DÑ/AÔ/A�dÑBÔBñ
ô 
ˆ	ð �˜I¨a¸EÐBÑBÔBˆØð 	8ØŸ$š$˜w¨Ñ.Ô.ˆKØ !§¢ W¨kÑ :Ô :ÐØŸšØ!Ø!Ýœ a Sµ´Ð<Ñ<Ô<ð ñ ô ˆIð
 —T’T˜) V¨YÑ7Ô7ˆFØˆå
�S˜#Ñ
Ô
€CØˆ:�e C°GÐ<Ñ<Ô<Ð<r/   c                ó@   ‡— t          ddd¦  «        ˆfd„¦   «         }|S )NTFc                ó„  •— t          | ‰|¦  «        \  }}t          |¦  «        }‰dk    rdn|rdnd}|�€|                      d|¦  «        }t          | |dgdgdg¬¦  «        }|                      d	|t          j        j        ¬
¦  «        }|                      d||d¬¦  «        }| j        dk    rt          | ¦  «        }	t          | ¦  «        }
nj|                      dt          j
        g t          j        ¬¦  «        ¬¦  «        }	|                      dt          j
        g t          j        ¬¦  «        ¬¦  «        }
|                      d||	|
||d‰d¬¦	  «	        S | j        dk    rt          | ¦  «        }	n5|                      dt          j
        g t          j        ¬¦  «        ¬¦  «        }	|                      d||	||d‰d¬¦  «        S )Nr³  Ú
asymmetricrµ  Ú
half_pixelrf  r   rj  r›  r4  r5  r�  r;  r‰  r¢   r_  r£   ÚResizeç      è¿Úfloor©Ú coordinate_transformation_mode_sÚcubic_coeff_a_fÚmode_sÚnearest_mode_s)r¶  rZ   r©   rT  r	  rA  r?  rJ  Ú"_optional_input_placeholder_tensorrV   rª   r¢  )r|   rM  r   r}   r«  rµ  Úcoordinate_transformation_modeÚ
input_sizeÚinput_size_begÚ	empty_roiÚempty_scalesr…  s              €r-   r"  z(_interpolate_helper.<locals>.symbolic_fn  s  ø€ å ;¸AÐ?OÐQUÑ VÔ VÑˆ�Ý)¨-Ñ8Ô8ˆð   9Ò,Ð,ð ˆLð ð��àð 	'ð ‰>ØŸš˜g uÑ-Ô-ˆJÝ*Ø�: Q C¨q¨c¸1¸#ðñ ô ˆNð Ÿ$š$Ø˜­'Ô*EÔ*Kð ñ ô ˆKð Ÿ$š$˜x¨¸ÈQ˜$ÑOÔOˆKàŒw˜"Š}ˆ}Ý>¸qÑAÔA�	ÝAÀ!ÑDÔD��àŸDšDØ­¬°R½u¼}Ð(MÑ(MÔ(Mð !ñ ô �	ð  !ŸtštØ­¬°R½u¼}Ð(MÑ(MÔ(Mð  $ñ  ô  �ð —4’4ØØØØØØ1OØ %Ø'Ø&ð ñ 
ô 
ð 
ð Œw˜"Š}ˆ}Ý>¸qÑAÔA�	�	àŸDšDØ­¬°R½u¼}Ð(MÑ(MÔ(Mð !ñ ô �	ð —4’4ØØØØØ1OØ %Ø'Ø&ð ñ 	ô 	ð 	r/   )r½   )r  rô   r…  r"  s     ` r-   Ú_interpolate_helperræ    s<   ø€ Ý�D˜% Ñ'Ô'ð<ð <ð <ð <ñ (Ô'ð<ð| Ðr/   c                óê  ‡— t          |d¦  «        }d|v rd}d|v rd}t          |d¦  «        }t          |t          ¦  «        sdn|}|dk    rdn|rdnd	}t          ‰¦  «        �sñ|                      d
|¦  «        }t          | |dgdgdg¬¦  «        }	 t          ‰¦  «         o%t          ‰d¦  «                             ¦   «         dk    }	n6# t          $ r) t          ‰¦  «         }	|	st          j
        d¦  «         Y nw xY w|	rbt          |¦  «        }
|
€t          dd¦  «        S t          | ‰dg¦  «        Šˆfd„t          |
dz
  ¦  «        D ¦   «         Š | j        dg‰¢R ddiŽŠ|                      d‰t          j        j        ¬¦  «        Š|                      d|‰d¬¦  «        Š| j        dk    rt'          | ¦  «        }t'          | ¦  «        }nj|                      dt)          j        g t(          j        ¬¦  «        ¬¦  «        }|                      dt)          j        g t(          j        ¬¦  «        ¬¦  «        }|                      d|||‰|d|d¬¦	  «	        S t          |¦  «        }
|
€t          d d!¦  «        S | j        dk    rt'          | ¦  «        }n5|                      dt)          j        g t(          j        ¬¦  «        ¬¦  «        }t/          | ||
¦  «        }|                      d||||d|d¬¦  «        S )"Nr   r½  r¾  r   Fr³  rÖ  rµ  r×  rf  r   rj  r›  r   zkCannot verify if the output_size is a scalar while exporting interpolate. Assuming that it is not a scalar.z'interpolate (with a scalar output_size)z?missing input shape (try giving an array of output_size values)c                ó   •— g | ]}‰‘ŒS r)   r)   rÂ  s     €r-   r.   z(__interpolate_helper.<locals>.<listcomp>x  s   ø€ Ð2Ð2Ð2˜Q�DÐ2Ð2Ð2r/   r�  r<  r4  r5  r;  r‰  r¢   r_  r£   rØ  rÙ  rÚ  rÛ  zinterpolate (with scales)rÀ  )rT   rF   r<   rÐ   r©   rT  ru   rô   ÚAttributeErrorrƒ  r„  rõ   r  rŽ  r¥  r	  rA  r?  rJ  rà  rV   rª   r¢  r»  )r|   rM  r  r¹  r´  rµ  Úrecompute_scale_factorrá  râ  rÃ  Úrankrä  rå  r«  s     `           r-   Ú__interpolate_helperrì  E  ss  ø€ õ ˜D #Ñ&Ô&€DØ�4ÐÐØˆØ�$€€ØˆÝ$ ]°CÑ8Ô8€MÝ!+¨M½4Ñ!@Ô!@ÐS�E�EÀm€Mð �9ÒÐð 	ˆð ðˆ_ˆ_àð #õ �D‰>Œ>ñ H
Ø—T’T˜' 5Ñ)Ô)ˆ
Ý" 1 j¸°sÀ!ÀÈaÈSÐQÑQÔQˆ
ð

	Ý+¨DÑ1Ô1Ð1ð Ý   sÑ+Ô+×/Ò/Ñ1Ô1°QÒ6ð ˆIøõ ð 	ð 	ð 	Ý+¨DÑ1Ô1Ð1ˆIØð Ý”ðUñô ð øøð	øøøð ð 		3Ý# EÑ*Ô*ˆDØˆ|Ý%Ø=ØUñô ð õ % Q¨¨q¨cÑ2Ô2ˆDØ2Ð2Ð2Ð2¥%¨¨q©¡/¤/Ð2Ñ2Ô2ˆDØ�1”4˜Ð2 4Ð2Ð2Ð2°Ð2Ð2ˆDØ�tŠt�F˜D¥wÔ'BÔ'HˆtÑIÔIˆØ�tŠt�H˜j¨$°qˆtÑ9Ô9ˆàŒ7�bŠ=ˆ=Ý:¸1Ñ=Ô=ˆIÝ=¸aÑ@Ô@ˆLˆLàŸš˜Zµ´¸bÍÌÐ1VÑ1VÔ1V˜ÑWÔWˆIØŸ4š4Ø¥E¤L°½5¼=Ð$IÑ$IÔ$Ið  ñ ô ˆLð �tŠtØØØØØØ-KØ!ØØ"ð ñ 

ô 

ð 
	
õ   Ñ&Ô&ˆØˆ<Ý!Ð"=Ð?TÑUÔUÐUàŒ7�bŠ=ˆ=Ý:¸1Ñ=Ô=ˆIˆIàŸš˜Zµ´¸bÍÌÐ1VÑ1VÔ1V˜ÑWÔWˆIå(¨¨L¸$Ñ?Ô?ˆØ�tŠtØØØØØ-KØ!ØØ"ð ñ 	
ô 	
ð 		
s   Â6C
 Ã
0C=Ã<C=c                ór   — | j         dk     rddlm} n| j         dk    rddlm} nddlm}  || |||¦  «        S )Né   r   )ÚunbindrÉ  )rJ  rK  rï  Útorch.onnx.symbolic_opset11Útorch.onnx.symbolic_opset13)r|   rÊ   rô   r‡   rï  s        r-   Ú_unbind_helperrò  ¨  sj   € Ø„w�‚|€|Ø5Ð5Ð5Ð5Ð5Ð5Ð5Ø	
Œ�BŠˆØ6Ð6Ð6Ð6Ð6Ð6Ð6à6Ð6Ð6Ð6Ð6Ð6Øˆ6�!�T˜3 Ñ)Ô)Ð)r/   c                óP   — | j         dk    rddlm} nddlm}  || ||||¦  «        S )Nrg  r   ©Úscatter)rJ  rK  rõ  rð  )r|   rÊ   rô   r  Úsrcrõ  s         r-   Ú_scatter_helperr÷  ²  sN   € Ø„w�"‚}€}Ø6Ð6Ð6Ð6Ð6Ð6Ð6ð 	8Ð7Ð7Ð7Ð7Ð7Øˆ7�1�d˜C ¨Ñ,Ô,Ð,r/   c                óò   — | j         dk    r|                      d|dg|z  ||¬¦  «        }nCddlm} |                      dt	          j        dg|z  ¦  «        ¬¦  «        } || ||||¬	¦  «        }|dk    r|n|gS )
NrÉ  ÚSplitr‚   )Úsplit_ir<  rl  r   )Úsplitr¢   r£   )r‡   )rJ  r©   rñ  rû  rV   rª   )r|   rÊ   Úrepsrô   Ú	split_outrû  Úrepeatss          r-   Ú_repeat_interleave_split_helperrÿ  »  s–   € Ø„w�"‚}€}Ø—D’D˜ $°°°d±
À3ÐPT�DÑUÔUˆ	ˆ	à5Ð5Ð5Ð5Ð5Ð5à—$’$�z­5¬<¸¸¸d¹
Ñ+CÔ+C�$ÑDÔDˆØ�E˜!˜T 7¨C¸$Ð?Ñ?Ô?ˆ	Ø˜qš˜ˆ9ˆ9 y kÐ1r/   c                óÀ  — ddl m}m} t          |¦  «        s)|                      dt          j        |¦  «        ¬¦  «        }t          |¦  «        }t          |d¦  «        }t          |¦  «        dk    r?|                      d||                      dt          j
        dg¦  «        ¬¦  «        ¦  «        } || ||dz   ¦  «        }|rMt          j        t          |¦  «        t
          j        ¬¦  «        }	||	|dz   <   |                      d|	¬¦  «        }
n§|                      d	 || |dz   d¦  «        |                      dt          j
        t          |¦  «        ¦  «        ¬¦  «        |                      d
|                      dt          j
        dg¦  «        ¬¦  «        |d¬¦  «        ¦  «        }	 || |	dd¦  «        }
|                      d||
¦  «        } || |||dz   ¦  «        S )Nr   )ÚflattenÚ	unsqueezer¢   r£   r   rÎ  r‚   r_  ÚOneHotr�  r;  ÚTile)rK  r  r  rÙ   r©   rV   r=  r\   rT   rõ   rª   r¡  rn  )r|   rÊ   rþ  rô   r  r  Úconst_repeatsrü  Ú
unsqueezedÚonehotÚrepeats_per_dimÚtileds               r-   Ú-_repeat_interleave_single_value_repeat_helperr
  Æ  sö  € ð >Ð=Ð=Ð=Ð=Ð=Ð=Ð=å�gÑÔð FØ—$’$�z­5Ô+;¸GÑ+DÔ+D�$ÑEÔEˆå& wÑ/Ô/€MÝ˜G SÑ)Ô)€Dõ ˜Ñ Ô  AÒ%Ð%Ø—$’$�y '¨1¯4ª4°
ÅEÄLÐRSÐQTÑDUÔDU¨4Ñ+VÔ+VÑWÔWˆð �˜1˜d C¨!¡GÑ,Ô,€Jð ð 3å”Õ,¨ZÑ8Ô8ÅÄÐLÑLÔLˆØˆˆs�Q‰w‰ØŸ$š$˜z°6˜$Ñ:Ô:ˆˆð —’ØØˆI�a˜˜q™ !Ñ$Ô$Ø�DŠDØ¥E¤LÕ1AÀ*Ñ1MÔ1MÑ$NÔ$Nð ñ ô ð �DŠDØ˜!Ÿ$š$˜zµ5´<ÀÀÑ3DÔ3D˜$ÑEÔEÀwÐWXð ñ ô ñ	
ô 	
ˆð "˜' ! V¨Q°Ñ2Ô2ˆà�DŠD�˜ _Ñ5Ô5€EØˆ7�1�e˜S #¨¡'Ñ*Ô*Ð*r/   úStuple[_type_utils.JitScalarType, _C.Value | None, _C.Value | None, _C.Value | None]c                ó`  — d„ }|�t          |¦  «        r`t          |¦  «        rQ ||||g¦  «        rt          j        j        }n\t          j                             t          j        ¦   «         ¦  «        }n+t          |t          ¦  «        sJ ‚t          j        |¦  «        }|r*|  
                    d||                     ¦   «         ¬¦  «        nd }|r*|  
                    d||                     ¦   «         ¬¦  «        nd }|r*|  
                    d||                     ¦   «         ¬¦  «        nd }||||fS )Nc                óÈ   — | D ]^}t           j                             |t           j        j        ¦  «        }|t           j        j        k    r|t           j        j        k    r dS Œ_dS )NFT)r   rÅ   rÆ   rÇ   r?  )Úscalarsra  rË   s      r-   Ú_is_all_integralz-_arange_cast_helper.<locals>._is_all_integralø  se   € Øð 	ð 	ˆFÝ%Ô3×>Ò>Ø�Ô1Ô;ñô ˆKð �{Ô8Ô>Ò>Ð>Ø¥;Ô#<Ô#FÒFÐFà�u�uøØˆtr/   r4  r5  )r9   rÐ   r   rÅ   r?  r,  rV   Úget_default_dtyperF   r*   r©   r7  )r|   ÚendÚstartÚstepr*  r  rË   s          r-   Ú_arange_cast_helperr  ð  s9  € ð
ð 
ð 
ð  €}� 5Ñ)Ô)€}­h°u©o¬o€}ØÐ˜U C¨Ð.Ñ/Ô/ð 	Ý%Ô3Ô9ˆKˆKå%Ô3×>Ò>ÝÔ'Ñ)Ô)ñô ˆKˆKõ ˜%¥Ñ%Ô%Ð%Ð%Ð%å!Ô/°Ñ6Ô6ˆàAFÐPˆA�DŠD�˜ [×%:Ò%:Ñ%<Ô%<ˆDÑ=Ô=Ð=ÈD€EØ=@Ð
Jˆ!�$Š$ˆv�s ×!6Ò!6Ñ!8Ô!8ˆ$Ñ
9Ô
9Ð
9Àd€CØ?CÐMˆ1�4Š4�˜ ;×#8Ò#8Ñ#:Ô#:ˆ4Ñ;Ô;Ð;È€DØ˜˜U DÐ(Ð(r/   c                óD   — | j         dk    rddlm} nddlm}  || g|¢R Ž S )Nrg  r   )Úarange)rJ  rK  r  rð  )r|   r}   r  s      r-   Ú_arange_helperr    sL   € Ø„w�"‚}€}Ø5Ð5Ð5Ð5Ð5Ð5Ð5à6Ð6Ð6Ð6Ð6Ð6Øˆ6�!Ð�dÐÐÐÐr/   c           
     ó¦   — |                       d|¦  «        }ddlm}  || ||                       dt          j        dg¦  «        ¬¦  «        |¦  «        S )Nrf  r   )Úselectr¢   r£   )r©   rK  r  rV   rª   )r|   rÊ   rô   Ú
full_shaper  s        r-   Ú_size_helperr  "  sY   € Ø—’�g˜tÑ$Ô$€JØ1Ð1Ð1Ð1Ð1Ð1àˆ6�!�Z §¢ j½%¼,ÈÀsÑ:KÔ:K Ñ!LÔ!LÈcÑRÔRÐRr/   c           
     ó4  ‡
— ddl m} | j        dk    rddl m} nddlm} |                     ¦   «                              ¦   «         €t          dd¦  «        S |                     ¦   «                              ¦   «         }t          |d¦  «        Š
‰
dk     r‰
|z  Š
t          | |ˆ
fd„t          |¦  «        D ¦   «         ¦  «        } || |                      d	|¦  «        dt          | |dg¦  «        |                      d	|¦  «        ¦  «        } || ||d ¦  «        }	||	fS )
Nr   )Úexpandrg  rô  Ú
index_fillzinput rank not accessibler   c                ó    •— g | ]
}|‰k    ¯|‘ŒS r)   r)   )r,   r   Ú	dim_values     €r-   r.   z._index_fill_reshape_helper.<locals>.<listcomp>>  s   ø€ Ð@Ð@Ð@˜°°i²°�1°°°r/   rf  )rK  r  rJ  rõ  rð  rÕ   rô   r  rB   rŽ  r¥  r©   )r|   rÊ   rô   r  r  rõ  Úself_dimÚunsqueezed_indexÚexpanded_index_shapeÚexpanded_indexr   s             @r-   Ú_index_fill_reshape_helperr%  )  sN  ø€ ð 2Ð1Ð1Ð1Ð1Ð1à„w�"‚}€}Ø6Ð6Ð6Ð6Ð6Ð6Ð6ð 	8Ð7Ð7Ð7Ð7Ð7à‡y‚y�{„{‡‚ÑÔÐ Ý˜lÐ,GÑHÔHÐHØ�yŠy‰{Œ{�ŠÑ Ô €HÝ˜3 Ñ$Ô$€IØ�1‚}€}Ø�XÑˆ	Ý(Ø	ˆ5Ð@Ð@Ð@Ð@�e H™oœoÐ@Ñ@Ô@ñô Ðð #˜7Ø	ˆ1�4Š4�˜ÑÔ Õ#4°Q¸¸a¸SÑ#AÔ#AÀ1Ç4Â4ÈÐQVÑCWÔCWñô Ðð �V˜AÐ/Ð1EÀtÑLÔL€NØ Ð/Ð/r/   c                óL  — t          |d¦  «        }t          |¦  «        s)|                      dt          j        |¦  «        ¬¦  «        }| j        dk    r9|dk    rt          dt          j        d|¦  «         |                      d||¦  «        S |                      d|||¬	¦  «        S )
Nr   r¢   r£   r‰  r‚   zReshape with allowzero=1é   rÎ  )Úallowzero_i)	rT   r9   r©   rV   r=  rJ  r  r   r!  )r|   rM  rX   Ú	allowzeros       r-   r>  r>  L  s§   € Ý˜U DÑ)Ô)€EÝ�UÑÔð BØ—’�Z­Ô)9¸%Ñ)@Ô)@�ÑAÔAˆØ„w�"‚}€}Ø˜Š>ˆ>Ý#Ø*­GÔ,MÈrÐSXñô ð ð �tŠt�I˜u eÑ,Ô,Ð,à�tŠt�I˜u e¸ˆtÑCÔCÐCr/   c                ó  — ddl m} t          |d¦  «        }t          |d¦  «        }|�t          |¦  «        rw|€t	          j        d|¦  «        ‚t          j        dg|z  t          j	         
                    |¦  «                             ¦   «         ¬¦  «        }	|                      d|	¬¦  «        }|�t          |¦  «        rw|€t	          j        d|¦  «        ‚t          j        d	g|z  t          j	         
                    |¦  «                             ¦   «         ¬¦  «        }
|                      d|
¬¦  «        }|� t          |¦  «        s|�t          |¦  «        r®|�|€J ‚t          | ||                      dt          j        ||d
gt          j        ¬¦  «        ¬¦  «        ¦  «        }|                      d|g d¢¬¦  «        } || ||                      dt          j        ddgt          j        ¬¦  «        ¬¦  «        dd¦  «        \  }}||||fS )Nr   )Ú	_var_meanr‚   z@Unsupported: ONNX export of batch_norm for unknown channel size.rŸ  r_  r¢   r£   g        rþ   Ú	Transpose)r   rj  r‚   )Úperm_iF)rK  r+  rü   rÐ   r   r>   rV   rª   r   rÅ   rÆ   r*  r©   r>  rn  )r|   rM  ÚweightÚbiasÚrunning_meanÚrunning_varr+  Ú
batch_sizeÚchannel_sizeÚweight_valueÚ
bias_valueÚ
reshape_inÚtrans_ins                r-   Ú_batchnorm_helperr8  Z  sJ  € ð 5Ð4Ð4Ð4Ð4Ð4å% e¨QÑ/Ô/€JÝ'¨¨qÑ1Ô1€Là€~� &Ñ)Ô)€~ØÐÝÔ+ØRØñô ð õ ”|ØˆE�LÑ ÝÔ+×6Ò6°uÑ=Ô=×CÒCÑEÔEð
ñ 
ô 
ˆð —’�j¨,�Ñ7Ô7ˆØ€|•x ‘~”~€|ØÐÝÔ+ØRØñô ð õ ”\ØˆE�LÑ ÝÔ+×6Ò6°uÑ=Ô=×CÒCÑEÔEð
ñ 
ô 
ˆ
ð �tŠt�J¨
ˆtÑ3Ô3ˆð 	ÐÝ�LÑ!Ô!ð 	àÐÝ�KÑ Ô ð ð Ð%¨,Ð*BÐ*BÐBÝ$ØØØ�DŠDØÝœ j°,ÀÐ%CÍ5Ì;ÐWÑWÔWð ñ ô ñ
ô 
ˆ
ð —4’4˜ Z¸	¸	¸	�4ÑBÔBˆØ$- IØØØ�DŠD�¥U¤\°1°a°&ÅÄÐ%LÑ%LÔ%LˆDÑMÔMØØñ%
ô %
Ñ!ˆ�\ð �4˜ {Ð2Ð2r/   Útuple_fnúCallable[[Any], Sequence[int]]Úpaddingúint | Sequence[int]útuple[int, ...]c                óª   — |r:|                      ¦   «                              ¦   «         dk    rt          |d¦  «         t           | |¦  «        ¦  «        S )NrÓ   Údivisor_override)r7   r;   r  ri   )r9  r;  Úkernel_sizeÚstrider?  r  s         r-   Ú_avgpool_helperrB  “  sY   € ð ð 1Ð,×1Ò1Ñ3Ô3×8Ò8Ñ:Ô:Ð>NÒNÐNÝ�tÐ/Ñ0Ô0Ð0Ý��˜'Ñ"Ô"Ñ#Ô#Ð#r/   Úop_train_modec                ó0  — t           j        t          j        j        k    rdS | rt          j        j        }nt          j        j        }|t           j        k    rdS dt          | ¦  «        › �}t          j	        dt           j        › d|› d|› d|› d�	¦  «         dS )zMWarns the user if the model's training mode and the export mode do not agree.Nztrain=zONNX export mode is set to z, but operator 'z' is set to z. Exporting with r  )
r   Útraining_moder	  ÚTrainingModeÚPRESERVEÚTRAININGÚEVALr<   rƒ  r„  )rC  r  Úop_mode_enumÚop_mode_texts       r-   Úcheck_training_moderL     sÌ   € åÔ¥Ô 4Ô =Ò=Ð=Øˆàð 1ÝÔ+Ô4ˆˆåÔ+Ô0ˆØ•wÔ,Ò,Ð,àˆà1�D Ñ/Ô/Ð1Ð1€Lõ „Mð	D¥gÔ&;ð 	Dð 	DÈWð 	Dð 	DØ!ð	Dð 	DØ4@ð	Dð 	Dð 	Dñô ð ð ð r/   c                óÌ  — |                       d|¦  «        }t          | |dgdg|g¬¦  «        }||                       dt          j        dgt          j        ¬¦  «        ¬¦  «        g}||dz
  k     rSt          | |dg|dz   g|g¬¦  «        }||                       dt          j        dgt          j        ¬¦  «        ¬¦  «        |g} | j         d	g|¢R d
diŽ}	ddlm}
  |
| ||	¦  «        S )Nrf  r   )rN  rO  rP  r¢   rþ   r_  r£   r‚   r�  r<  )Ú_reshape_from_tensor)r©   rT  rV   rª   r�  rK  rN  )r|   rM  Ú	start_dimÚend_dimrô   râ  Úslice1ÚslicesÚslice3Úfinal_shaperN  s              r-   Ú_flatten_helperrU  ¹  s  € Ø—’�g˜uÑ%Ô%€JÝ˜1˜j°¨s¸A¸3ÀiÀ[ÐQÑQÔQ€FØ�a—d’d˜:­u¬|¸R¸DÍÌ
Ð/SÑ/SÔ/S�dÑTÔTÐU€FØ��q‘ÒÐÝØˆz  ¨W°q©[¨MÀÀð
ñ 
ô 
ˆð Ø�DŠD�¥U¤\°2°$½e¼jÐ%IÑ%IÔ%IˆDÑJÔJØð
ˆð �!”$�xÐ3 &Ð3Ð3Ð3°Ð3Ð3€KØ?Ð?Ð?Ð?Ð?Ð?àÐ  5¨+Ñ6Ô6Ð6r/   c                ó„   — |€dS t          | ¦  «        r,|                      ¦   «                              ¦   «         dk    rdS dS )NFr&   Trt   )Úsplit_size_or_sizesr‡   s     r-   Ú_is_split_staticrX  Í  sL   € ØÐØˆuåÐ%Ñ&Ô&ðà×$Ò$Ñ&Ô&×+Ò+Ñ-Ô-Ð1AÒAÐAàˆuØˆ4r/   c                ó’   — |                       d¦  «        }|                     t          j                             ¦   «         ¦  «         |S )NrÓ   )r©   ÚsetTyper   ÚOptionalTypeÚofTensor)r|   Úns     r-   rà  rà  Ø  s9   € Ø	�ŠÐÑÔ€AØ‡I‚I�bŒo×&Ò&Ñ(Ô(Ñ)Ô)Ð)Ø€Hr/   c                óÖ   ‡— t          ‰¦  «        }|�@t          ˆfd„t          |¦  «        D ¦   «         ¦  «        r|                      |‰d¬¦  «        S |                      |‰d¬¦  «        S )Nc              3  ó@   •K  — | ]}t          ‰|¦  «        d k    V — ŒdS )r   N)rü   )r,   r   rÊ   s     €r-   r¨   z*_handle_reduce_dim_none.<locals>.<genexpr>à  sD   øè è € ð  ð  Ø/0Õ˜T 1Ñ%Ô%¨Ò*ð ð  ð  ð  ð  ð  r/   r‚   ©r–  r   )rõ   r­   r¥  r©   )r|   rÊ   r  rë  s    `  r-   Ú_handle_reduce_dim_nonera  Þ  sƒ   ø€ Ý˜DÑ!Ô!€DØÐ�Cð  ð  ð  ð  Ý49¸$±K´Kð ñ  ô  ñ ô Ðð
 �tŠt�G˜T¨aˆtÑ0Ô0Ð0Ø�4Š4�˜¨!ˆ4Ñ,Ô,Ð,r/   ÚqtensorÚqdtypeú"_C_onnx.TensorProtoDataType | Noneú4tuple[_C.Value, _C.Value, _C.Value, _C.Value | None]c                ór  — t          |¦  «        }|dd…         \  }}}t          |¦  «        dk    r|d         nd}t          |dd¦  «        }t          j                             |¦  «        }	|€(|	�|	                     ¦   «         }nt          j        j	        }|  
                    d||¬¦  «        }
|  
                    d|t          j        j        ¬¦  «        }|  
                    d||¬¦  «        }|�-t          j        dk     rt          d	t          j        dd
|¦  «         |  
                    d	|
|||¬¦  «        |||fS )a’  Appends to graph `g` ONNX nodes that dequantizes `qtensor` into `tensor`.

    Args:
        g: Graph, the ONNX IR graph that is under construction.
        qtensor: torch._C.Value, either a tuple of (quantized_tensor, scale, zero_point)
            for per tensor quantization, or
            (quantized_tensor, scale, zero_point, axis) for per channel quantization,
            representing the quantized tensor.
        qdtype: torch.onnx.TensorProtoDataType default None, if not None, represents the
            data type of quantized tensor. It must be either
            torch.onnx.TensorProtoDataType.UINT8 or torch.onnx.TensorProtoDataType.INT8.
    Nrm   rn   r   Úaxisr4  r5  r‰  ÚDequantizeLinearú Attribute axis is not supported.r;  )rr   rp   r]   r   rÅ   rÆ   r7  r	  rA  ÚUINT8r©   rV  r   r!  r  )r|   rb  rc  Úunpacked_qtensorsrª   r˜   r™   rg  r<  Úinput_qdtyper'   s              r-   r®   r®   é  sK  € õ" 1°Ñ9Ô9ÐØ 1°"°1°"Ô 5Ñ€FˆE�:Ý#&Ð'8Ñ#9Ô#9¸QÒ#>Ð#>Ð˜QÔÐÀD€DÝ˜˜c 6Ñ*Ô*€FÝÔ,×7Ò7¸Ñ?Ô?€LØ€~ØÐ#Ø!×+Ò+Ñ-Ô-ˆFˆFåÔ0Ô6ˆFØ�DŠD�˜ fˆDÑ-Ô-€EØ�DŠD�˜¥WÔ%@Ô%FˆDÑGÔG€EØ—’�f˜j¨v�Ñ6Ô6€JàÐ�gÔ?À"ÒDÐDÝ(ØÝÔ-ØØ.Øñ	
ô 	
ð 	
ð 	
�ŠÐ ¨¨zÀ&ˆÑIÔIØØØð	ð r/   rª   rg  c                ó  — |�<t          |¦  «        s-t          j        dk     rt          dt          j        dd|¦  «         |€J ‚t          j                             |t          j        j        ¦  «        t          j        j        k    r'|  	                    d|t          j        j        ¬¦  «        }|€J ‚t          j                             |t          j        j        ¦  «        t          j        j        t          j        j        hvr'|  	                    d|t          j        j        ¬¦  «        }|  	                    d|||t          |dd¦  «        ¬	¦  «        }|||g}|�$t          |¦  «        s|                     |¦  «          | j	        d
g|¢R Ž S )ai  Appends to graph `g` ONNX nodes that quantizes `tensor` based on `scale`, `zero_point` and `axis`.

    Args:
        g: Graph, the ONNX IR graph that is under construction.
        tensor: torch._C.Value, representing the tensor to be quantized.
        scale: torch._C.Value, quantized scale.
        zero_point: torch._C.Value, quantized zero point.
        axis: Optional[torch._C.Value] default None, if None, represents per tensor quantization.
            Otherwise, represents per channel quantization, along given axis.

    Returns:
        A TupleConstruct storing information of the quantized tensor.
    Nr‰  ÚQuantizeLinearri  r4  r5  r   rg  r;  rë   )rÐ   r   r!  r  r   rÅ   rÆ   rÇ   rV  r©   r	  rA  rj  ÚINT8r]   r¬   )r|   rª   r˜   r™   rg  r»   r}   s          r-   r°   r°     s”  € ð* 	ÐÝ˜‘”ð 	åÔ-°Ò2Ð2å(ØÝÔ-ØØ.Øñ	
ô 	
ð 	
ð ÐÐÐåÔ!×,Ò,¨UµKÔ4MÔ4WÑXÔXÝÔ$Ô*ò	+ð 	+ð —’�V˜U­Ô)DÔ)J�ÑKÔKˆàÐ!Ð!Ð!ÝÔ ×+Ò+Ø•KÔ-Ô7ñô õ 	Ô!Ô'ÝÔ!Ô&ððð ð —T’T˜& *µ7Ô3NÔ3T�TÑUÔUˆ
Ø�TŠTØØØØÝ˜$  VÑ,Ô,ð ñ ô €Fð �E˜:Ð&€DØÐ¥¨¡¤ÐØ�Š�DÑÔÐØˆ1Œ4Ð&Ð.¨Ð.Ð.Ð.Ð.r/   c                ó´  — |                       d||¦  «        }|                       d|¦  «        }|                       d|t          j        dgt          j        ¬¦  «        ¬¦  «        }|                       d|                       d||¦  «        t          j        j        ¬	¦  «        }g }	|�$t          |¦  «        s|	                     |¦  «          | j         d|||g|	¢R Ž S )ad  In PyTorch, bias is float and is quantized to int32 implicitly inside the quantized ATen op kernel.
    In ONNX we need to make the quantization explicit because operators expect all of their inputs to be quantized.
    Since int32 is not a supported output type by ONNX operator `QuantizeLinear`, quantization is exported using
    regular operators.
    ÚMulrf  rÍ  r   r_  r£   r4  rœ  r5  Nrë   )	r©   rV   rª   r*   r	  rA  ÚINT32rÐ   r¬   )
r|   r/  Úinput_scaleÚweight_scalerg  Ú
bias_scaleÚbias_scale_shapeÚbias_zero_pointÚq_biasÚ	axis_argss
             r-   Úrequantize_bias_helperrz  V  sä   € ð —’�e˜\¨;Ñ7Ô7€JØ—t’t˜G ZÑ0Ô0ÐØ—d’dØÐ+µU´\À1À#ÍUÌYÐ5WÑ5WÔ5Wð ñ ô €Oð �TŠTØ�—’�U˜D *Ñ-Ô-µGÔ4OÔ4Uð ñ ô €Fð €IØÐ¥¨¡¤ÐØ×Ò˜ÑÔÐØˆ1Œ4Ð&¨°
¸OÐXÈiÐXÐXÐXÐXr/   c                ó�   ‡— | sJ ‚t           j                             | d         ¦  «        Št          ˆfd„| D ¦   «         ¦  «        }|S )Nr   c              3  ó^   •K  — | ]'}t           j                             |¦  «        ‰k    V — Œ(d S rR   )r   rÅ   rÆ   )r,   ÚelemÚ
base_dtypes     €r-   r¨   z'args_have_same_dtype.<locals>.<genexpr>o  sJ   øè è € ð ð ØEI�Ô!×,Ò,¨TÑ2Ô2°jÒ@ðð ð ð ð ð r/   )r   rÅ   rÆ   Úall)r}   Úhas_same_dtyper~  s     @r-   Úargs_have_same_dtyper�  l  sc   ø€ Ø€K€Kˆ4ÝÔ*×5Ò5°d¸1´gÑ>Ô>€JÝð ð ð ð ØMQðñ ô ñ ô €Nð Ðr/   c           
     ó€  — |                      dd¦  «        }|                      dt          j        j        ¦  «        }t	          |¦  «        }t          j                             |d         ¦  «        }t          |d         ¦  «         o|du pt          j        |k     }|rå|D ]}}	|	 	                    ¦   «         rgt          j                             |	¦  «        }
|
|k    rBt          j        d|› d|                     ¦   «         › d|
                     ¦   «         › �|	¦  «        ‚Œ~t          |¦  «        D ]U\  }}	|	 	                    ¦   «         r<t          |	¦  «        s-|                      d|	|                     ¦   «         ¬	¦  «        ||<   ŒV | j        |g|¢R i |¤Ž}|r*|                      d||                     ¦   «         ¬	¦  «        }|S )
a·  Some PyTorch operators (e.g., Clip/Min/ReLU/Pad) are super set of ONNX in terms of data types.
    This function maximizes the exportability of PyTorch-ONNX by allowing ONNX-unsupported PyTorch
    operator data type. For example, `Cast<int>(Clip<float>(Cast<float>(INPUT)))` can be used to mimic
    `Clip<int>(INPUT)` (opset version < 12).

    Args:
        g (torch._C.Graph): graph to write the ONNX representation into.
        op_name (str): operator name in ONNX.
        *args (tuple): operands to the operator.
        **kwargs (dict): attributes to the operator along with "opset_before" (optional, None by default)
            indicating the smallest opset version to trigger such casting behavior and "target_float_t"
            (optional, torch.onnx.JitScalarType.FLOAT by default) indicating the data type of internal operator.

    Returns:
        Optional[torch._C.Value, Tuple[torch._C.Value, ...]]: output(s) of the operator.
    Úopset_beforeNÚtarget_float_tr   z
Inputs of z must have same dtype.Got z and r4  r5  )Úpopr   rÅ   rV  rb   rÆ   rZ  r   r!  ÚisCompleteTensorr   r>   rÈ   rÿ   r©   r7  )r|   r  r}   r   rƒ  r„  r?   Údtype_0Úrequire_castrM  Úinput_scalar_typer   rÊ   s                r-   Ú_op_with_optional_float_castrŠ  u  sü  € ð" —:’:˜n¨dÑ3Ô3€LØ—Z’ZÐ 0µ+Ô2KÔ2QÑRÔR€Nå�$‰ZŒZ€FÝÔ'×2Ò2°6¸!´9Ñ=Ô=€Gå˜f QœiÑ(Ô(Ð(ð Ø˜ÐÐP¥Ô AÀLÒ Pð ð ð Øð 	ð 	ˆEØ×%Ò%Ñ'Ô'ð Ý$/Ô$=×$HÒ$HÈÑ$OÔ$OÐ!Ø$¨Ò/Ð/Ý Ô3ð] Wð ]ð ]Ø&×2Ò2Ñ4Ô4ð]ð ]Ø;L×;XÒ;XÑ;ZÔ;Zð]ð ]àñô ð øõ
 " &Ñ)Ô)ð 	ð 	‰HˆAˆuØ×%Ò%Ñ'Ô'ð µ°u±´ð ØŸDšDØØØ'×1Ò1Ñ3Ô3ð !ñ ô ��q‘	øð ˆ1Œ4�Ð+˜&Ð+Ð+Ð+ FÐ+Ð+€Dàð <Ø�tŠt�F˜D w×'8Ò'8Ñ':Ô':ˆtÑ;Ô;ˆà€Kr/   c                ó$  — t           j                             |t           j        j        ¦  «        }|t           j        j        k    rKt	          |¦  «        s<|t           j        j        k    r'|                      d|t          j        j        ¬¦  «        }|S r3  )	r   rÅ   rÆ   rÇ   rZ  r?  r©   r	  rA  )r|   rÊ   rË   s      r-   Ú_maybe_cast_reduce_op_inputrŒ  ª  s{   € ÝÔ+×6Ò6Ø�kÔ'Ô1ñô €Kð •kÔ/Ô9Ò9Ð9õ �d‰|Œ|ð 	N ­{Ô/HÔ/NÒ NÐ NØ—4’4˜ ­7Ô+FÔ+L�4ÑMÔMˆDØ€Kr/   c                 ó   ‡ ‡— ˆ ˆfd„}|S )z_Returns a decorator that calls the decorated (higher-order) function with the given parameters.c                ó   •—  | ‰i ‰¤ŽS rR   r)   )ry   r}   r   s    €€r-   Ú_applyz_apply_params.<locals>._apply¹  s   ø€ Øˆr�4Ð"˜6Ð"Ð"Ð"r/   r)   )r}   r   r�  s   `` r-   Ú_apply_paramsr�  ¶  s)   øø€ ð#ð #ð #ð #ð #ð #ð €Mr/   c                ó   ‡ ‡— dˆˆ fd„	}|S )Nc                ó.  •— t          | |¦  «        }|�|dk    rt          | |‰¦  «        S t          |dd¦  «        }| j        dk     r7‰rdnd}t          ||d¦  «        }‰r|n|g}|                      ‰|||¬¦  «        S t          |¦  «        r|}nn‰r6|                      dt          j        |t          j        ¬	¦  «        ¬
¦  «        }n6|                      dt          j        |gt          j        ¬	¦  «        ¬
¦  «        }|                      ‰|||¬¦  «        S )Nr)   r   rÆ  é   r   rô   r˜  r¢   r_  r£   r`  )	rŒ  ra  r]   rJ  r©   r9   rV   rª   r�  )	r|   rÊ   rô   rÆ  r    Údim_listrN  Úallow_multi_dim_supportÚonnx_op_names	          €€r-   Úsymbolicz,_reduce_op_symbolic_helper.<locals>.symbolicÀ  s5  ø€ Ý*¨1¨dÑ3Ô3ˆØˆ;˜# š)˜)õ +¨1¨d°LÑAÔAÐAõ ! ¨#¨yÑ9Ô9ˆGØŒw˜Š|ˆ|Ø6Ð?�t�t¸C�Ý   d¨EÑ2Ô2�Ø"9ÐD˜3˜3À¸u�Ø—t’t˜L¨$°xÈG�tÑTÔTÐTå˜S‘>”>ð 
Ø�D�Dà.ð Ø ŸtštØ&µ´¸SÍÌ
Ð0SÑ0SÔ0Sð  $ñ  ô  ˜˜ð  !ŸtštØ&µ´¸c¸UÍ%Ì*Ð0UÑ0UÔ0Uð  $ñ  ô  ˜ð —t’t˜L¨$°À�tÑIÔIÐIr/   ©NNr)   )r–  r•  r—  s   `` r-   Ú_reduce_op_symbolic_helperr™  ¿  s5   øø€ ðJð Jð Jð Jð Jð Jð Jð: €Or/   c                óF   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }|S )Nc                óÖ   •—  ‰| g|¢R Ž }|D ]4}|j         }t          |¦  «        t          |¦  «        k    r || g|¢R Ž c S Œ5t          d‰j        › �dt          |¦  «        › d�¦  «        S )Nzaten::zwith z
 arguments)r“   rp   r  rˆ   )r|   r}   Ú	overloadsÚoverloadrv   ry   s        €r-   r’   z'_overload_by_arg_count.<locals>.wrapperá  s–   ø€ à�B�q�L˜4�L�L�Lˆ	Ø!ð 	*ð 	*ˆHØ&Ô7ˆOÝ�?Ñ#Ô#¥s¨4¡y¤yÒ0Ð0Ø�x Ð) DÐ)Ð)Ð)Ð)Ð)Ð)ð 1åÐ4 r¤{Ð4Ð4Ð6S½cÀ$¹i¼iÐ6SÐ6SÐ6SÑTÔTÐTr/   r¼   )ry   r’   s   ` r-   Ú_overload_by_arg_countrž  à  s=   ø€ Ý„_�RÑÔðUð Uð Uð Uñ ÔðUð €Nr/   r†  r•  c                óV   ‡‡‡— t          | ‰¬¦  «        Št          ˆˆˆfd„¦   «         }|S )N)r•  c                óà   •— t          d¦  «        t          dd¦  «        ˆˆfd„¦   «         ¦   «         }‰rdnd}t          d¦  «        t          d|dd¦  «        ˆˆfd„¦   «         ¦   «         }||fS )NTr   r   c                ó0  •— d }|                      ¦   «                              ¦   «         dk    rPt          |dd¦  «        }t          j        |¦  «                             ¦   «         }|                      d||¬¦  «        }n;|                      ¦   «                              ¦   «         dk    rt          ‰d|¦  «        S  ‰| |¦  «        }|�Ot          j                             |¦  «                             ¦   «         }||k    r|                      d||¬¦  «        }|S ©Nr&   r   r*  r4  r5  rÓ   ©	r7   r;   r]   r   rÅ   r7  r©   r  rÆ   )r|   rÊ   r*  Ú
dtype_onnxÚresultÚresult_dtype_onnxr  r—  s         €€r-   Úreduce_nodimz?_reduce_with_dtype_helper.<locals>.reduce.<locals>.reduce_nodimö  s	  ø€ ð ˆJØ�zŠz‰|Œ|× Ò Ñ"Ô"Ð&6Ò6Ð6Ý" 5¨#¨wÑ7Ô7�Ý(Ô6°uÑ=Ô=×GÒGÑIÔI�
Ø—t’t˜F D¨z�tÑ:Ô:��Ø—’‘”×"Ò"Ñ$Ô$Ð(8Ò8Ð8Ý% d¨G°UÑ;Ô;Ð;Ø�X˜a Ñ&Ô&ˆFØÐ%Ý$/Ô$=×$HÒ$HØñ%ô %ç’)‘+”+ð "ð %¨
Ò2Ð2ØŸTšT &¨&°z˜TÑBÔB�FØˆMr/   r   r   c                ó4  •— d }|                      ¦   «                              ¦   «         dk    rPt          |dd¦  «        }t          j        |¦  «                             ¦   «         }|                      d||¬¦  «        }n;|                      ¦   «                              ¦   «         dk    rt          ‰d|¦  «        S  ‰	| |||¦  «        }|�Ot          j                             |¦  «                             ¦   «         }||k    r|                      d||¬¦  «        }|S r¢  r£  )
r|   rÊ   rô   rÆ  r*  r¤  r¥  r¦  r  r—  s
           €€r-   Ú
reduce_dimz=_reduce_with_dtype_helper.<locals>.reduce.<locals>.reduce_dim  s  ø€ ð ˆJØ�zŠz‰|Œ|× Ò Ñ"Ô"Ð&6Ò6Ð6Ý" 5¨#¨wÑ7Ô7�Ý(Ô6°uÑ=Ô=×GÒGÑIÔI�
Ø—t’t˜F D¨z�tÑ:Ô:��Ø—’‘”×"Ò"Ñ$Ô$Ð(8Ò8Ð8Ý% d¨G°UÑ;Ô;Ð;Ø�X˜a  s¨GÑ4Ô4ˆFØÐ%Ý$/Ô$=×$HÒ$HØñ%ô %ç’)‘+”+ð "ð %¨
Ò2Ð2ØŸTšT &¨&°z˜TÑBÔB�FØˆMr/   )r½   r—   )	r|   r}   r   r§  Údim_descr©  r•  r  r—  s	         €€€r-   Úreducez)_reduce_with_dtype_helper.<locals>.reduceô  s°   ø€ å	˜Ñ	Ô	Ý	�C˜Ñ	 Ô	 ð	ð 	ð 	ð 	ð 	ñ 
!Ô	 ñ 
Ô	ð	ð" 3Ð;�4�4¸ˆå	˜Ñ	Ô	Ý	�C˜ 3¨Ñ	/Ô	/ð	ð 	ð 	ð 	ð 	ñ 
0Ô	/ñ 
Ô	ð	ð" ˜ZÐ'Ð'r/   )r™  rž  )r†  r  r•  r«  r—  s    `` @r-   Ú_reduce_with_dtype_helperr¬  í  sY   øøø€ õ *ØÐ)@ðñ ô €Hõ ð)(ð )(ð )(ð )(ð )(ð )(ñ Ôð)(ðV €Mr/   c                óÎ  — |€|€|                       d|d¬¦  «        S |€t          | d||d¬¦  «        S t          |dd¦  «        }t          |dd	¦  «        }| j        d
k     r|                       d||g|¬¦  «        }nO|                       dt	          j        |gt          j        ¬¦  «        ¬¦  «        }|                       d|||¬¦  «        }|                       d|||¬¦  «        }||fS )NÚ	ReduceMaxr   r`  ÚMaxrÉ  ©rƒ  r   rÆ  rô   r“  r˜  r¢   r_  r£   ÚArgMaxrË  ©r©   rŠ  r]   rJ  rV   rª   r�  )r|   rÊ   Údim_or_yrÆ  rô   ÚmaxrN  Úindicess           r-   Ú_max_helperr¶  #  óó   € àÐ˜G˜OØ�tŠt�K °!ˆtÑ4Ô4Ð4à€Ý+¨A¨u°d¸HÐSUÐVÑVÔVÐVõ ˜W c¨9Ñ5Ô5ˆÝ˜ 3¨Ñ.Ô.ˆØŒ7�RŠ<ˆ<Ø—$’$�{ D°#°À7�$ÑKÔKˆCˆCà—4’4˜
­E¬L¸#¸ÅeÄjÐ,QÑ,QÔ,Q�4ÑRÔRˆDØ—$’$�{ D¨$¸7�$ÑCÔCˆCØ—$’$�x ¨c¸g�$ÑFÔFˆØ�Gˆ|Ðr/   c                óÎ  — |€|€|                       d|d¬¦  «        S |€t          | d||d¬¦  «        S t          |dd¦  «        }t          |dd	¦  «        }| j        d
k     r|                       d||g|¬¦  «        }nO|                       dt	          j        |gt          j        ¬¦  «        ¬¦  «        }|                       d|||¬¦  «        }|                       d|||¬¦  «        }||fS )NÚ	ReduceMinr   r`  ÚMinrÉ  r°  r   rÆ  rô   r“  r˜  r¢   r_  r£   ÚArgMinrË  r²  )r|   rÊ   r³  rÆ  rô   ÚminrN  rµ  s           r-   Ú_min_helperr½  7  r·  r/   c                ó^   — |                       d|¦  «        }|                       d|d¬¦  «        S )Nrf  Ú
ReduceProdr   r`  )r©   )r|   rÊ   rX   s      r-   Ú_numel_helperrÀ  K  s-   € Ø�DŠD�˜$ÑÔ€EØ�4Š4�˜e°ˆ4Ñ2Ô2Ð2r/   r   r   r   c           
     óÚ  — | j         dk     �rÇ|€+|                      d|d¬¦  «        }|}t          | |¦  «        }n |                      d|||¬¦  «        }|                      d||d¬¦  «        }|                      d|¦  «        }|                      d||                      d	t          j        |¦  «        ¬
¦  «        d¬¦  «        }|                      d|d¬¦  «        }|                      d||¦  «        }	|                      d|	|	¦  «        }
|€dn|}|                      d|
||¬¦  «        }|€d}|dk    rŸ|                      d|t
          j        j        ¬¦  «        }|                      d	t          j        |t          j        ¬¦  «        ¬
¦  «        }|                      d||¦  «        }|                      d||                      d||¦  «        ¦  «        }||fS d }|€+|                      d|d¬¦  «        }|}t          | |¦  «        }nÕ|                      d	t          j        |t          j	        ¬¦  «        ¬
¦  «        }|                      d|||¬¦  «        }|                      d||d¬¦  «        }|                      d|¦  «        }|                      d||                      d	t          j        |¦  «        ¬
¦  «        d¬¦  «        }|                      d|d¬¦  «        }|                      d||¦  «        }	|                      d|	|	¦  «        }
|€dn|}|€|                      d|
|¬¦  «        }n|                      d|
||¬¦  «        }|€d}|dk    rŸ|                      d|t
          j        j        ¬¦  «        }|                      d	t          j        |t          j        ¬¦  «        ¬
¦  «        }|                      d||¦  «        }|                      d||                      d||¦  «        ¦  «        }||fS )Nr“  Ú
ReduceMeanr   r`  r˜  r‚   rf  r:  r¢   r£   r;  r¿  ÚSubrq  r4  r5  r_  rœ  )
rJ  r©   rÀ  rV   rª   r	  rA  rV  r1   r�  )r|   rM  rô   Ú
correctionrÆ  ÚmeanÚt_meanÚnum_elementsÚredudced_dimsÚsub_vÚsqr_subÚkeepdim_meanÚvarÚoneÚmulrN  s                   r-   Ú_var_mean_helperrÏ  P  sÜ  € à„w�‚|�|Øˆ;Ø—4’4˜ e¸�4Ñ:Ô:ˆDØˆFÝ(¨¨EÑ2Ô2ˆLˆLà—4’4˜ e°CÀG�4ÑLÔLˆDØ—T’T˜,¨°cÀa�TÑHÔHˆFØŸDšD ¨%Ñ0Ô0ˆMàŸDšDØØØ—’�Z­¬°cÑ):Ô):�Ñ;Ô;Øð	 !ñ ô ˆMð Ÿ4š4 ¨mÈ˜4ÑJÔJˆLØ—’�U˜E 6Ñ*Ô*ˆØ—$’$�u˜e UÑ+Ô+ˆØ˜K�q�q¨WˆØ�dŠd�< °ÀˆdÑNÔNˆàÐØˆJØ˜Š?ˆ?ØŸ4š4Ø˜­7Ô+FÔ+Lð  ñ ô ˆLð —$’$�z­5¬<¸
Í%Ì+Ð+VÑ+VÔ+V�$ÑWÔWˆCØ—$’$�u˜c <Ñ0Ô0ˆCØ—$’$�u˜c 1§4¢4¨¨|¸SÑ#AÔ#AÑBÔBˆCØ�DˆyÐàˆØˆ;Ø—4’4˜ e¸�4Ñ:Ô:ˆDØˆFÝ(¨¨EÑ2Ô2ˆLˆLà—4’4˜
­E¬L¸ÅEÄJÐ,OÑ,OÔ,O�4ÑPÔPˆDØ—4’4˜ e¨T¸g�4ÑFÔFˆDØ—T’T˜,¨¨tÀ�TÑBÔBˆFØŸDšD ¨%Ñ0Ô0ˆMàŸDšDØØØ—’�Z­¬°cÑ):Ô):�Ñ;Ô;Øð	 !ñ ô ˆMð Ÿ4š4 ¨mÈ˜4ÑJÔJˆLØ—’�U˜E 6Ñ*Ô*ˆØ—$’$�u˜e UÑ+Ô+ˆØ˜K�q�q¨WˆØˆ<Ø—$’$�| W¸�$ÑFÔFˆCˆCà—$’$�| W¨d¸|�$ÑLÔLˆCàÐØˆJØ˜Š?ˆ?ØŸ4š4Ø˜­7Ô+FÔ+Lð  ñ ô ˆLð —$’$�z­5¬<¸
Í%Ì+Ð+VÑ+VÔ+V�$ÑWÔWˆCØ—$’$�u˜c <Ñ0Ô0ˆCØ—$’$�u˜c 1§4¢4¨¨|¸SÑ#AÔ#AÑBÔBˆCØ�DˆyÐr/   c
                ót  — |rt           j        rt          d¦  «        S |	�|	dk    rt          d¦  «        ‚|                      dt          j        d¦  «        ¬¦  «        }
|                      d|
t          j        j	        ¬¦  «        }
|                      dt          j        dg¦  «        ¬¦  «        }t          | t          | ||                      dt          j        d¦  «        ¬¦  «        ¦  «        dg¦  «        }|s||g} | j        d	g|¢R d
diŽ}t          | |dgdgt          j        gdg¬¦  «        }t          | |dgdgt          j        gdg¬¦  «        }t          | ||                      dt          j        d¦  «        ¬¦  «        ¦  «        }t          j        | d||
d¬¦  «        \  }\  }}|j        }t%          j        |¦  «        }t%          j        |¦  «         |                     d||d¬¦  «        }|                     d||d¬¦  «        }t          ||dg¦  «        }t          ||dg¦  «        }|                     d||||¦  «        }|                     d||d¬¦  «        }t)          |¦  «        sB|                     d||||¦  «        }t          ||dg¦  «        }|                     d||¦  «        }|dk    rt+          ||dgd¬¦  «        }nñ|dk    rv|j        dk     r|                     d|dgd¬¦  «        }nÅ|                     dt          j        dgt
          j        ¬¦  «        ¬¦  «        }|                     d||d¬¦  «        }nu|j        dk     r|                     d|dgd¬¦  «        }nO|                     dt          j        dgt
          j        ¬¦  «        ¬¦  «        }|                     d||d¬¦  «        }|                     d|
t          j        j	        ¬¦  «        }t%          j        ||¦  «         t%          j        ||¦  «         |                     ¦   «                              ¦   «         d d d fS )Nz7embedding_bag with scale_grad_by_freq for training moder   zembedding_bag with padding_idxr¢   r‚   r£   r4  r5  r�  r<  )rN  rO  rP  rQ  ÚLoop)Ún_blocksr:  r;  ÚSlicerq  r˜  r“  rÂ  r_  r`  r®  )r   Úexport_trainingr  ÚRuntimeErrorr©   rV   rª   r	  rA  r\  rŽ  r  rT  r£  r¤  r   Úadd_op_with_blocksÚblockr   Ú_add_input_to_blockrÐ   r™  rJ  r�  Ú_add_output_to_blockr7   r»   )r|   Úembedding_matrixrµ  r§  Úscale_grad_by_freqr´  ÚsparseÚper_sample_weightsÚinclude_last_offsetÚpadding_idxÚloop_conditionÚzeroÚindices_lenÚoffsets_startsÚoffsets_endsÚloop_lenÚloopÚloop_contextrº   Ú
loop_blockÚblock_input_iterÚindices_startÚindices_endÚindices_rowÚ
embeddingsÚper_sample_weights_rowrN  Úcond_outs                               r-   Ú_embedding_bag_helperrð  ™  s¤  € ð ð 
�gÔ5ð 
Ý ØEñ
ô 
ð 	
ð Ð ;°!Ò#3Ð#3ÝÐ;Ñ<Ô<Ð<à—T’T˜*­e¬l¸1©o¬o�TÑ>Ô>€NØ—T’T˜& .µwÔ7RÔ7W�TÑXÔX€NØ�4Š4�
¥E¤L°!°Ñ$5Ô$5ˆ4Ñ6Ô6€Då#Ø	Ý�Q˜ §¢ j½%¼,Àq¹/¼/ Ñ!JÔ!JÑKÔKØ	
ˆñô €Kð
 ð 5Ø˜KÐ(ˆØ�!”$�xÐ4 'Ð4Ð4Ð4°!Ð4Ð4ˆõ
 #Ø	ˆ7˜!˜ a Sµ´¨}ÀQÀCðñ ô €Nõ !Ø	ˆ7˜!˜ a Sµ´¨}ÀQÀCðñ ô €Lõ ˜A˜|¨Q¯TªT°*ÅeÄlÐSTÁoÄo¨TÑ-VÔ-VÑWÔW€Hå(Ô;Ø	ˆ6�8˜^°að ñ  ô  Ñ€D‰/ˆ<˜1ð Ô#€Jõ Ô0°Ñ<Ô<ÐÝ	Ô˜jÑ)Ô)Ð)à —O’OØ�.Ð"2¸1ð $ñ ô €Mð —/’/ (¨LÐ:JÐST�/ÑUÔU€KÝ% l°MÀAÀ3ÑGÔG€MÝ# L°+À¸sÑCÔC€Kà—/’/ '¨7°MÀ;ÐPTÑUÔU€KØ—’ Ð+;¸[ÐQR�ÑSÔS€JÝÐ&Ñ'Ô'ð PØ!-§¢ØÐ'¨¸ÀTñ"
ô "
Ðõ "3ØÐ0°1°#ñ"
ô "
Ðð "—_’_ U¨JÐ8NÑOÔOˆ
Øˆq‚y€yÝ&Ø˜*¨a¨S¸Qð
ñ 
ô 
ˆ
ˆ
ð 
�ŠˆØÔ Ò"Ð"Ø%ŸšØ˜j°!°Àð )ñ ô ˆJˆJð  —?’?Ø¥E¤L°!°½E¼JÐ$GÑ$GÔ$Gð #ñ ô ˆDð &Ÿš¨°zÀ4ÐTU˜ÑVÔVˆJˆJàÔ Ò"Ð"Ø%ŸšØ˜Z°°Àð )ñ ô ˆJˆJð  —?’?Ø¥E¤L°!°½E¼JÐ$GÑ$GÔ$Gð #ñ ô ˆDð &Ÿš¨°jÀ$ÐST˜ÑUÔUˆJà�ŠØ�¥WÔ%@Ô%Eð ñ ô €Hõ 
Ô˜z¨8Ñ4Ô4Ð4Ý	Ô˜z¨:Ñ6Ô6Ð6ð �9Š9‰;Œ;×ÒÑÔ  t¨TÐ1Ð1r/   rÊ   Úordr1   úSequence[int] | Noner*  c                ó²	  — d }t          |¦  «        rt          | |dg¦  «        }d}n@| j        dk    r5|                      dt	          j        |t          j        ¬¦  «        ¬¦  «        }|t          j        k    r™| j        dk     r/|                      d|                      d|¦  «        ||¬	¦  «        }�nÊ|€.|                      d|                      d|¦  «        |¬
¦  «        }�nš|                      d|                      d|¦  «        ||¬
¦  «        }�nk|t          j         k    r™| j        dk     r/|                      d|                      d|¦  «        ||¬	¦  «        }�n |€.|                      d|                      d|¦  «        |¬
¦  «        }�nð|                      d|                      d|¦  «        ||¬
¦  «        }�nÁ|dk    �r| j        dk     rt          dddd|¦  «        S |€Gt          | ||                      dt	          j        dgt          j
        ¬¦  «        ¬¦  «        ¦  «        }d}|                      d|                      d||                      dt	          j        dg¦  «        ¬¦  «        ¦  «        ¦  «        }|                      d|t          j                             |¦  «                             ¦   «         ¬¦  «        }t!          | |||¬	¦  «        S |dk    rf| j        dk     r t#          d¦  «        | |||¬¦  «        }�nw|€ t#          d¦  «        | ||¬¦  «        }�nX t#          d¦  «        | |||¬¦  «        }�n:|dk    rd| j        dk     r t#          d¦  «        | |||¬¦  «        }�n|€ t#          d¦  «        | ||¬¦  «        }ní t#          d¦  «        | |||¬¦  «        }nÐ|                      dt	          j        |t          j        ¬¦  «        ¬¦  «        }	t!          | |                      d|                      d|¦  «        |	¦  «        ||¬	¦  «        }|                      d||                      d|                      dt	          j        dt          j        ¬¦  «        ¬¦  «        |	¦  «        ¦  «        }t          |¦  «        sMt'          |dd¦  «        }|                      d|t          j        |¦  «                             ¦   «         ¬¦  «        }|S )Nrþ   Fr“  r¢   r_  r£   r®  ÚAbsr˜  r`  r¹  r   rî  Úlinalg_vector_normrH  zord=0 not supportedÚNotÚEqualr4  r5  r‚   ÚReduceL1)rô   rÆ  )rÆ  rj  ÚReduceL2ÚPowrœ  r   r*  )rÐ   r>  rJ  r©   rV   rª   r�  ÚmathÚinfr  rn  r=  r   rÅ   rÆ   r7  r™  r™  r¢  r]   )
r|   rÊ   rñ  rô   rÆ  r*  rN  r¥  Úcond_opÚord_ops
             r-   Ú_linalg_vector_norm_helperrÿ    s  € ð €Då��}„}ð MÝ˜q $¨¨Ñ-Ô-ˆØˆˆØ	
Œ�BŠˆØ�tŠt�J­¬°SÅÄ
Ð(KÑ(KÔ(KˆtÑLÔLˆà
�dŒh‚€ØŒ7�RŠ<ˆ<Ø—T’TØ˜QŸTšT %¨Ñ.Ô.°sÀwð ñ ô ˆF‰Fð ˆ|ØŸš˜k¨1¯4ª4°°tÑ+<Ô+<È˜ÑQÔQ�‘àŸš˜k¨1¯4ª4°°tÑ+<Ô+<¸dÈw˜ÑWÔW�‘Ø	•”�	Ò	Ð	ØŒ7�RŠ<ˆ<Ø—T’TØ˜QŸTšT %¨Ñ.Ô.°sÀwð ñ ô ˆF‰Fð ˆ|ØŸš˜k¨1¯4ª4°°tÑ+<Ô+<È˜ÑQÔQ�‘àŸš˜k¨1¯4ª4°°tÑ+<Ô+<¸dÈw˜ÑWÔW�‘Ø	�Š‰ØŒ7�RŠ<ˆ<Ý3Ø$ a¨Ð-BÀDñô ð ð ˆ{Ý&ØØØ—D’D˜­U¬\¸2¸$ÅeÄkÐ-RÑ-RÔ-R�DÑSÔSñô �ð
  �à—d’dØØ—’�W˜d A§D¢D¨½UÔ=MÈqÈcÑ=RÔ=R DÑ$SÔ$SÑTÔTñô ˆGð —d’dØØÝ Ô.×9Ò9¸$Ñ?Ô?×IÒIÑKÔKð ñ ô ˆGõ
 % Q¨¸ÈÐPÑPÔPÐPØ	�ŠˆØŒ7�RŠ<ˆ<Ø;Õ/°
Ñ;Ô;Ø�4˜S¨'ðñ ô ˆF‰Fð ˆ|Ø?Õ3°JÑ?Ô?Ø�t Wðñ ô �‘ð @Õ3°JÑ?Ô?Ø�t˜T¨7ðñ ô �‘ð 
�ŠˆØŒ7�RŠ<ˆ<Ø;Õ/°
Ñ;Ô;Ø�4˜S¨'ðñ ô ˆF‰Fð ˆ|Ø?Õ3°JÑ?Ô?Ø�t Wðñ ô ��ð @Õ3°JÑ?Ô?Ø�t˜T¨7ðñ ô ��ð —’�j­%¬,°sÅ%Ä-Ð*PÑ*PÔ*P�ÑQÔQˆÝ"Øˆq�tŠt�E˜1Ÿ4š4  tÑ,Ô,¨fÑ5Ô5¸cÈgð
ñ 
ô 
ˆð —’ØØØ�DŠDØØ—’�Z­¬°a½u¼}Ð)MÑ)MÔ)M�ÑNÔNØñô ñ
ô 
ˆõ �E‰?Œ?ð YÝ˜5 # wÑ/Ô/ˆØ—’�f˜f­;Ô+DÀUÑ+KÔ+K×+UÒ+UÑ+WÔ+W�ÑXÔXˆØ€Mr/   )ÚByteÚCharÚDoubleÚFloatÚHalfÚIntÚLongÚShortÚBoolÚComplexFloatÚComplexDoubleÚBFloat16Ú	Undefinedr   r  r  r  r  r  r  r  r  r	  r
  ÚQInt8ÚQUInt8ÚQInt32r  )Úuint8_tÚint8_tr`  r1   Úhalfr*   Úint64_tÚint16_tr<   Ú	complex64Ú
complex128Úqint8Úquint8Úqint32Úbfloat16)r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  zset[int]Ú_quantized_opsr˜  )r    r!   r"   r#   r$   r#   )r7   rC   rD   r=   )r'   rK   )r'   rO   rP   r!   )r^   rK   r_   r`   )re   rK   r_   rf   )r^   r   r_   r<   )rv   r!   r_   rw   )
r›   r<   r˜   rœ   r™   r�   rš   r<   r_   rž   )r¾   r   r_   r¿   )r¾   r   r_   r<   )r'   r   r_   r<   )r¾   rK   r_   r<   )rÚ   rÛ   r_   rÜ   )r¾   rK   r_   r�   )T)r¾   rK   rö   r<   )r¾   rK   rô   r*   r_   r�   )r¾   rK   rô   r�   rR   )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  r*   r  r=   r'   r  r_   r   )r  r=   )r_   r$  )r_   r'  )r|   r1  rÚ   r'  )r|   r1  )r_   r<   )TN)TFN)Nr‚   r   )
r|   r1  rM  rÅ  rô   rÅ  rÆ  r<   r  r=   )NNN)r|   r1  r_   r  )r   )r9  r:  r;  r<  r_   r=  )rC  r*   r  r=   r_   r  )r|   r1  rb  rK   rc  rd  r_   re  )r|   r1  rª   rK   r˜   rK   r™   rK   rg  r  r_   rK   )r†  r=   r  r=   r•  r<   )r|   r1  rÊ   rÅ  rñ  r1   rô   rò  rÆ  r<   r*  rÅ  )§Ú
__future__r   r”   r‰   rû  r£  rò   rƒ  r   r   r   r   r   r	   Ú_TypeVarÚtyping_extensionsr
   Ú_Concatenater   Ú
_ParamSpecrV   Útorch._C._onnxr   Ú_onnxr	  Ú
torch.onnxr   r   r   r   Útorch.onnx._globalsr   Útorch.onnx._internalr   ÚTYPE_CHECKINGÚtorch.typesr   r   r   r   r!   rB   r6   rN   rT   rZ   r]   rd   rk   rr   ru   r—   r½   rÃ   rÍ   rÐ   r9   r\   rÙ   rß   rá   ræ   ré   rh   rð   rõ   rú   rü   r  r  r  r  r  r#  r&  r0  r8  rF  rT  rZ  r]  rb  rs  ry  r�  r‡  rŽ  r“  r™  r­  r±  r¶  r»  rÄ  rÓ  ræ  rì  rò  r÷  rÿ  r
  r  r  r  r%  r>  r8  rB  rL  rU  rX  rà  ra  r®   r°   rz  r�  rŠ  rŒ  r�  r™  rž  r¬  r¶  r½  rÀ  rÏ  rð  rÿ  rA  rj  ro  rW  rV  ÚFLOAT16rr  r?  ÚINT16r\  rî   rï   rY  rÇ   Úcast_pytorch_to_onnxÚscalar_name_to_pytorchÚuint8Úint8Úshortr*   rn  r  r1   r`  Ú	complex32r  r  r<   r  r  r  r  Úscalar_type_to_pytorch_typeÚpytorch_name_to_typeÚscalar_type_to_onnxÚsetr  Ú__annotations__r)   r/   r-   ú<module>r5     sj  ðà "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rà €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð ð >Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *ð 
Ôð #Ø"Ð"Ð"Ð"Ð"Ð"à€Xˆd�^„^€Ø€Xˆd�^„^€Ø€Z�ÑÔ€ð ðô
Ð ð   Ø ð	Bð Bð Bð Bð BðJ#ð #ð #ð #ð3ð 3ð 3ð 3ð
	ð 	ð 	ð 	ðð ð ð#ð #ð #ð$ð $ð $ð $ð&ð &ð &ð &ðð ð ð ð.Wð Wð Wð WðOð Oð Oð Oðh Ø!Ø ð	Gð Gð Gð Gð Gð GðTð ð ð ðð ð ð&Vð Vð Vð Vð#ð #ð #ð #ðð ð ð ð5ð 5ð 5ð 5ð
ð ð ð ð/ð /ð /ð /ð>ð >ð >ð >ð
)ð 
)ð 
)ð 
)ð5ð 5ð 5ð 5ðð ð ð ðð ð ð ðð ð ð ð ð)ð )ð )ð )ð
ð ð ð ð1ð 1ð 1ð 1ð 1ð,ð ,ð ,ð ,ð ,ð$ "ð	,ð ,ð ,ð ,ð ,ð. "ð,ð ,ð ,ð ,ð ,ð&ð ð ð ðð ð ð ð
;ð 
;ð 
;ð 
;ðð ð ð ð3ð 3ð 3ð 3ð 3ð< ð=ð =ð =ð =ð =ð$ð ð ð ð*ð *ð *ð *ð:ð :ð :ð :ð$
ð 
ð 
ð 
ð 
ð( OSð
ð 
ð 
ð 
ð 
ð*%ð %ð %ð %ðð ð ð"/ð /ð /ð /ð"*ð *ð *ð *ð8 ØØðNð Nð Nð Nð Nð>ð ð ð ð4ð ð ð ð !ð !ð !ð !ðð ð ð ð" ð  ð  ð  ðF#=ð #=ð #=ð #=ðL@ð @ð @ðF`
ð `
ð `
ð `
ðF*ð *ð *ð *ð-ð -ð -ð -ð2ð 2ð 2ð 2ð'+ð '+ð '+ð '+ðV BFð')ð ')ð ')ð ')ð ')ðTð ð ð ðSð Sð Sð Sð0ð 0ð 0ð 0ðFDð Dð Dð Dð Dð63ð 63ð 63ð 63ðr
$ð 
$ð 
$ð 
$ðð ð ð ð27ð 7ð 7ð 7ð(ð ð ðð ð ð-ð -ð -ð -ð 26ð-ð -ð -ð -ð -ðj !ð:/ð :/ð :/ð :/ð :/ð| FJðYð Yð Yð Yð Yð,ð ð ð2ð 2ð 2ð 2ðj	ð 	ð 	ð 	ðð ð ðð ð ð ðB
ð 
ð 
ð >Bð3ð 3ð 3ð 3ð 3ðlð ð ð ð ð(ð ð ð ð ð(3ð 3ð 3ð 3ð
 €ˆC��s˜CÑ Ô ðEð Eð Eñ !Ô ðEðPg2ð g2ð g2ð g2ðTjð jð jð jðb Ô'Ô-ØÔ'Ô,ØÔ)Ô0ØÔ(Ô.ØÔ'Ô/ØÔ&Ô,ØÔ'Ô-ØÔ(Ô.ØÔ'Ô,ØÔ/Ô9ØÔ0Ô;ØÔ+Ô4ØÔ,Ô6ðð Ð ð$ ØØØØØØØØØØ!ØØØØðð Ð ð0 
„KØ	„JØ	„KØ	„IØ	„KØ	„JØ	„KØ	„LØ	„OØ	„OØ	ÔØ	„JØ	„KØ	„LØ	„LØ	„Nð!Ð ð. ŒKØŒJØŒlØŒ[ØŒJØŒ9ØŒKØŒ[ØŒJØ”OØÔ%ØŒ[ØŒlØŒlØ”ðð Ð ð* ˜Ô Ø˜Ô Ø˜Ô!Ø˜ÔØ˜Ô Ø˜Ô Ø˜Ô!Ø˜Ô"Ø˜Ô%Ø˜Ô(Ø˜Ô)Ø˜Ô Ø˜Ô Ø˜Ô Ø˜ÔØ˜Ô$ð!Ð ð* ˜3™5œ5€Ð  Ð  Ð  Ñ  Ð  Ð  r/   