§
    ‚Štj-~  ã                   ó  — d dl mZ d dlmZ d dlmZ d dlZd dlmZ ddlm	Z	 ddl
mZmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZmZ ddlmZmZ ddlmZmZ ddlmZ ddlm Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z,m-Z-  G d„ dej.        ¦  «        Z/ G d„ dej.        ¦  «        Z0d„ Z1 ed¦  «        dCd„¦   «         Z2dej3        de4d ej3        fd!„Z5	 dDd#ej.        d$ej3        d%ej3        d&ej3        d'ej3        dz  d(e6d)e6d*ee!         fd+„Z7 ee2¦  «         G d,„ d-ej.        ¦  «        ¦   «         Z8 G d.„ d/ej.        ¦  «        Z9 G d0„ d1ej.        ¦  «        Z: G d2„ d3e¦  «        Z;e" G d4„ d5e¦  «        ¦   «         Z< e"d6¬7¦  «        e G d8„ d9e¦  «        ¦   «         ¦   «         Z= e"d:¬7¦  «         G d;„ d<e<¦  «        ¦   «         Z>e G d=„ d>e ¦  «        ¦   «         Z? e"d?¬7¦  «         G d@„ dAe<e¦  «        ¦   «         Z@g dB¢ZAdS )Eé    )ÚCallable)Ú	dataclass)ÚOptionalN)Únné   )ÚACT2FN)ÚCompileConfigÚGenerationMixin)Úuse_kernel_func_from_hubÚuse_kernelized_func)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPoolingÚCausalLMOutput)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmaybe_autocastÚmerge_with_config_defaults)Úcapture_outputsé   )Ú	AutoModelé   )ÚLasrCTCConfigÚLasrEncoderConfigc                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )ÚLasrEncoderSubsamplingÚconfigc                 óÌ  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        |j        |j	        ¬¦  «        | _
        t          j        |j        |j        |j        |j	        ¬¦  «        | _        t          j        |j        |j        ¦  «        | _        t          j        ¦   «         | _        d S )N)Úkernel_sizeÚstride)ÚsuperÚ__init__r   ÚLinearÚnum_mel_binsÚhidden_sizeÚdense_0ÚConv1dÚsubsampling_conv_kernel_sizeÚsubsampling_conv_strideÚconv_0Úsubsampling_conv_channelsÚconv_1Údense_1ÚReLUÚact_fn©Úselfr$   Ú	__class__s     €úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/lasr/modeling_lasr.pyr)   zLasrEncoderSubsampling.__init__-   sÀ   ø€ Ý‰Œ×ÒÑÔÐÝ”y Ô!4°fÔ6HÑIÔIˆŒÝ”iØÔØÔØÔ;ØÔ1ð	
ñ 
ô 
ˆŒõ ”iØÔØÔ,ØÔ;ØÔ1ð	
ñ 
ô 
ˆŒõ ”y Ô!AÀ6ÔCUÑVÔVˆŒÝ”g‘i”iˆŒˆˆó    Úinput_featuresÚreturnc                 ót  — |                       |                      |¦  «        ¦  «        }|                     dd¦  «        }|                       |                      |¦  «        ¦  «        }|                       |                      |¦  «        ¦  «        }|                     dd¦  «        }|                      |¦  «        S )Nr   r   )r6   r-   Ú	transposer1   r3   r4   )r8   r<   Úhidden_statess      r:   ÚforwardzLasrEncoderSubsampling.forward?   s•   € ØŸš D§L¢L°Ñ$@Ô$@ÑAÔAˆØ%×/Ò/°°1Ñ5Ô5ˆØŸš D§K¢K°Ñ$>Ô$>Ñ?Ô?ˆØŸš D§K¢K°Ñ$>Ô$>Ñ?Ô?ˆØ%×/Ò/°°1Ñ5Ô5ˆØ�|Š|˜MÑ*Ô*Ð*r;   )	Ú__name__Ú
__module__Ú__qualname__r!   r)   ÚtorchÚTensorrA   Ú__classcell__©r9   s   @r:   r#   r#   ,   sk   ø€ € € € € ð Ð0ð  ð  ð  ð  ð  ð  ð$+ e¤lð +°u´|ð +ð +ð +ð +ð +ð +ð +ð +r;   r#   c                   óÔ   ‡ — e Zd ZU ej        ed<   ddefˆ fd„Ze	 	 	 ddedz  de	d         de
dz  ded	ef         fd
„¦   «         Z ej        ¦   «         ed„ ¦   «         ¦   «         Zˆ xZS )ÚLasrEncoderRotaryEmbeddingÚinv_freqNr$   c                 ó²  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        || _        | j        j        d         | _        | j        }| j        dk    rt          | j                 } || j        |¦  «        \  }| _
        |                      d|d¬¦  «         |                      d|                     ¦   «         d¬¦  «         d S )NÚ	rope_typeÚdefaultrK   F)Ú
persistentÚoriginal_inv_freq)r(   r)   Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenr$   Úrope_parametersrM   Úcompute_default_rope_parametersr   Úattention_scalingÚregister_bufferÚclone)r8   r$   ÚdeviceÚrope_init_fnrK   r9   s        €r:   r)   z#LasrEncoderRotaryEmbedding.__init__K   sÊ   ø€ Ý‰Œ×ÒÑÔÐØ"(Ô"@ˆÔØ$*Ô$BˆÔ!àˆŒàœÔ4°[ÔAˆŒØ!%Ô!EˆØŒ>˜YÒ&Ð&Ý.¨t¬~Ô>ˆLØ+7¨<¸¼ÀVÑ+LÔ+LÑ(ˆ�$Ô(à×Ò˜Z¨¸eÐÑDÔDÐDØ×ÒÐ0°(·.².Ñ2BÔ2BÈuÐÑUÔUÐUÐUÐUr;   rY   ztorch.deviceÚseq_lenr=   ztorch.Tensorc                 óü   — | j         d         }t          | dd¦  «        p| j        | j        z  }d}d|t	          j        d|dt          j        ¬¦  «                             |t          j        ¬¦  «        |z  z  z  }||fS )	a¨  
        Computes the inverse frequencies according to the original RoPE implementation
        Args:
            config ([`~transformers.PreTrainedConfig`]):
                The model configuration.
            device (`torch.device`):
                The device to use for initialization of the inverse frequencies.
            seq_len (`int`, *optional*):
                The current sequence length. Unused for this type of RoPE.
        Returns:
            Tuple of (`torch.Tensor`, `float`), containing the inverse frequencies for the RoPE embeddings and the
            post-processing scaling factor applied to the computed cos/sin (unused in this type of RoPE).
        Ú
rope_thetaÚhead_dimNg      ð?r   r   ©Údtype)rY   r`   )	rT   Úgetattrr,   Únum_attention_headsrE   ÚarangeÚint64ÚtoÚfloat)r$   rY   r[   ÚbaseÚdimÚattention_factorrK   s          r:   rU   z:LasrEncoderRotaryEmbedding.compute_default_rope_parameters[   sŒ   € ð& Ô% lÔ3ˆÝ�f˜j¨$Ñ/Ô/Ðc°6Ô3EÈÔIcÑ3cˆàÐð Ø•U”\ ! S¨!µ5´;Ð?Ñ?Ô?×BÒBÈ&ÕX]ÔXcÐBÑdÔdÐgjÑjÑkñ
ˆð Ð)Ð)Ð)r;   c                 óN  — | j         d d d …d f                              ¦   «                              |j        d         dd¦  «                             |j        ¦  «        }|d d …d d d …f                              ¦   «         }t          |j        j        t          ¦  «        r|j        j        dk    r|j        j        nd}t          |d¬¦  «        5  |                     ¦   «         |                     ¦   «         z   
                    dd¦  «        }t          j        ||fd¬	¦  «        }|                     ¦   «         | j        z  }|                     ¦   «         | j        z  }	d d d ¦  «         n# 1 swxY w Y   |                     |j        ¬
¦  «        |	                     |j        ¬
¦  «        fS )Nr   éÿÿÿÿr   ÚmpsÚcpuF)Údevice_typeÚenabledr   ©rh   r_   )rK   rf   ÚexpandÚshapere   rY   Ú
isinstanceÚtypeÚstrr   r?   rE   ÚcatÚcosrV   Úsinr`   )
r8   ÚxÚposition_idsÚinv_freq_expandedÚposition_ids_expandedrn   ÚfreqsÚembrw   rx   s
             r:   rA   z"LasrEncoderRotaryEmbedding.forwardy   s·  € ð !œM¨$°°°°4¨-Ô8×>Ò>Ñ@Ô@×GÒGÈÔHZÐ[\ÔH]Ð_aÐcdÑeÔe×hÒhÐijÔiqÑrÔrÐØ ,¨Q¨Q¨Q°°a°a°a¨ZÔ 8× >Ò >Ñ @Ô @Ðå'1°!´(´-ÅÑ'EÔ'EÐkÈ!Ì(Ì-Ð[`ÒJ`ÐJ`�a”h”m�mÐfkˆÝ¨¸UÐCÑCÔCð 	5ð 	5Ø&×,Ò,Ñ.Ô.Ð1F×1LÒ1LÑ1NÔ1NÑN×YÒYÐZ[Ð]^Ñ_Ô_ˆEÝ”)˜U E˜N°Ð3Ñ3Ô3ˆCØ—'’'‘)”)˜dÔ4Ñ4ˆCØ—'’'‘)”)˜dÔ4Ñ4ˆCð		5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð �vŠv˜AœGˆvÑ$Ô$ c§f¢f°1´7 fÑ&;Ô&;Ð;Ð;s   ÃBE&Å&E*Å-E*©N)NNN)rB   rC   rD   rE   rF   Ú__annotations__r!   r)   Ústaticmethodr   ÚintÚtuplerf   rU   Úno_gradr   rA   rG   rH   s   @r:   rJ   rJ   H   sú   ø€ € € € € € ØŒlÐÐÑðVð VÐ0ð Vð Vð Vð Vð Vð Vð  à+/Ø+/Ø"ð*ð *Ø! DÑ(ð*à˜Ô(ð*ð �t‘ð*ð 
ˆ~˜uÐ$Ô	%ð	*ð *ð *ñ „\ð*ð: €U„]�_„_Øð<ð <ñ Ôñ „_ð<ð <ð <ð <ð <r;   rJ   c                 óœ   — | dd| j         d         dz  …f         }| d| j         d         dz  d…f         }t          j        | |fd¬¦  «        S )z*Rotates half the hidden dims of the input..Nrk   r   rp   )rr   rE   rv   )ry   Úx1Úx2s      r:   Úrotate_halfrˆ   ‰   s]   € à	
ˆ3Ð"�!”'˜"”+ Ñ"Ð"Ð"Ô	#€BØ	
ˆ3�”˜”˜qÑ Ð"Ð"Ð"Ô	#€BÝŒ9�r�c˜2�Y BÐ'Ñ'Ô'Ð'r;   Úrotary_pos_embc                 ó¾   — |                      |¦  «        }|                      |¦  «        }| |z  t          | ¦  «        |z  z   }||z  t          |¦  «        |z  z   }||fS )a…  Applies Rotary Position Embedding to the query and key tensors.

    Args:
        q (`torch.Tensor`): The query tensor.
        k (`torch.Tensor`): The key tensor.
        cos (`torch.Tensor`): The cosine part of the rotary embedding.
        sin (`torch.Tensor`): The sine part of the rotary embedding.
        unsqueeze_dim (`int`, *optional*, defaults to 1):
            The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
            sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
            that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
            k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
            cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
            the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
    Returns:
        `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
    )Ú	unsqueezerˆ   )ÚqÚkrw   rx   Úunsqueeze_dimÚq_embedÚk_embeds          r:   Úapply_rotary_pos_embr‘   �   sc   € ð& �-Š-˜Ñ
&Ô
&€CØ
�-Š-˜Ñ
&Ô
&€CØ�3‰w�; q™>œ>¨CÑ/Ñ0€GØ�3‰w�; q™>œ>¨CÑ/Ñ0€GØ�GÐÐr;   r@   Ún_repr=   c                 ó¸   — | j         \  }}}}|dk    r| S | dd…dd…ddd…dd…f                              |||||¦  «        } |                      |||z  ||¦  «        S )zÔ
    This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
    num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
    r   N)rr   rq   Úreshape)r@   r’   ÚbatchÚnum_key_value_headsÚslenr^   s         r:   Ú	repeat_kvr˜   ª   s„   € ð
 2?Ô1DÑ.€EÐ  hØ�‚z€zØÐØ! ! ! ! Q Q Q¨¨a¨a¨a°°°Ð"2Ô3×:Ò:¸5ÐBUÐW\Ð^bÐdlÑmÔm€MØ× Ò  Ð(;¸eÑ(CÀTÈ8ÑTÔTÐTr;   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutÚkwargsc                 ó  — t          || j        ¦  «        }t          || j        ¦  «        }	t          j        ||                     dd¦  «        ¦  «        |z  }
|�|
|z   }
t
          j                             |
dt          j        ¬¦  «         	                    |j
        ¦  «        }
t
          j                             |
|| j        ¬¦  «        }
t          j        |
|	¦  «        }|                     dd¦  «                             ¦   «         }||
fS )Nr   r   rk   ©rh   r`   ©ÚpÚtrainingr   )r˜   Únum_key_value_groupsrE   Úmatmulr?   r   Ú
functionalÚsoftmaxÚfloat32re   r`   r    r¦   Ú
contiguous)rš   r›   rœ   r�   rž   rŸ   r    r¡   Ú
key_statesÚvalue_statesÚattn_weightsÚattn_outputs               r:   Úeager_attention_forwardr±   ¶   sé   € õ ˜3 Ô ;Ñ<Ô<€JÝ˜U FÔ$?Ñ@Ô@€Lå”<  z×';Ò';¸A¸qÑ'AÔ'AÑBÔBÀWÑL€LØÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2ÅUÄ]Ð(ÑSÔS×VÒVÐW\ÔWbÑcÔc€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€LÝ”,˜|¨\Ñ:Ô:€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r;   c                   óÂ   ‡ — e Zd ZdZdedefˆ fd„Z	 	 ddej        de	ej        ej        f         dz  dej        dz  d	e
e         d
e	ej        ej        f         f
d„Zˆ xZS )ÚLasrEncoderAttentionz=Multi-headed attention from 'Attention Is All You Need' paperr$   Ú	layer_idxc                 ó®  •— t          ¦   «                              ¦   «          || _        || _        t	          |d|j        |j        z  ¦  «        | _        |j        |j        z  | _	        | j        dz  | _
        |j        | _        d| _        t          j        |j        |j        | j        z  |j        ¬¦  «        | _        t          j        |j        |j        | j        z  |j        ¬¦  «        | _        t          j        |j        |j        | j        z  |j        ¬¦  «        | _        t          j        |j        | j        z  |j        |j        ¬¦  «        | _        d S )Nr^   g      à¿F©Úbias)r(   r)   r$   r´   ra   r,   rb   r^   r–   r§   rŸ   Úattention_dropoutÚ	is_causalr   r*   Úattention_biasÚq_projÚk_projÚv_projÚo_proj©r8   r$   r´   r9   s      €r:   r)   zLasrEncoderAttention.__init__Ó   sB  ø€ Ý‰Œ×ÒÑÔÐØˆŒØ"ˆŒÝ ¨
°FÔ4FÈ&ÔJdÑ4dÑeÔeˆŒØ$*Ô$>À&ÔB\Ñ$\ˆÔ!Ø”} dÑ*ˆŒØ!'Ô!9ˆÔØˆŒå”iØÔ Ô :¸T¼]Ñ JÐQWÔQfð
ñ 
ô 
ˆŒõ ”iØÔ Ô :¸T¼]Ñ JÐQWÔQfð
ñ 
ô 
ˆŒõ ”iØÔ Ô :¸T¼]Ñ JÐQWÔQfð
ñ 
ô 
ˆŒõ ”iØÔ&¨¬Ñ6¸Ô8JÐQWÔQfð
ñ 
ô 
ˆŒˆˆr;   Nr@   Úposition_embeddingsrž   r¡   r=   c                 óà  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }	|\  }
}t          |||
|¦  «        \  }}t          j	        | j
        j        t          ¦  «        } || |||	|f| j        sdn| j        | j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )Nrk   r   r   r™   )r    rŸ   )rr   r^   r»   Úviewr?   r¼   r½   r‘   r   Úget_interfacer$   Ú_attn_implementationr±   r¦   r¸   rŸ   r”   r¬   r¾   )r8   r@   rÀ   rž   r¡   Úinput_shapeÚhidden_shapeÚquery_statesr­   r®   rw   rx   Úattention_interfacer°   r¯   s                  r:   rA   zLasrEncoderAttention.forwardê   sš  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆØ—[’[ Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆ
Ø—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆà&‰ˆˆSÝ#7¸ÀjÐRUÐWZÑ#[Ô#[Ñ ˆ�jå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—k’k +Ñ.Ô.ˆØ˜LÐ(Ð(r;   ©NN)rB   rC   rD   Ú__doc__r!   r‚   r)   rE   rF   rƒ   r   r   rA   rG   rH   s   @r:   r³   r³   Ï   sÕ   ø€ € € € € àGÐGð
Ð0ð 
¸Sð 
ð 
ð 
ð 
ð 
ð 
ð4 IMØ.2ð	")ð ")à”|ð")ð # 5¤<°´Ð#=Ô>ÀÑEð")ð œ tÑ+ð	")ð
 Ð+Ô,ð")ð 
ˆuŒ|˜Uœ\Ð)Ô	*ð")ð ")ð ")ð ")ð ")ð ")ð ")ð ")r;   r³   c                   ó.   ‡ — e Zd Zddefˆ fd„Zdd„Zˆ xZS )ÚLasrEncoderConvolutionModuleNr$   c           	      óJ  •— t          ¦   «                              ¦   «          |j        }|€)|j        }t          t          |dd¦  «                 | _        n.|d         }t          |                     dd¦  «                 | _        d| _        t          j
        |d|z  ddd	|j        ¬
¦  «        | _        t          j
        |||d| j        ||j        ¬¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j
        ||ddd	|j        ¬
¦  «        | _        dS )z·
        Args:
            config (LasrEncoderConfig): Configuration for the model.
            module_config (dict): Configuration for the module (e.g., encoder or decoder).
        NÚ
hidden_actÚsilur&   Ú
activationÚsamer   r   r   )r&   r'   Úpaddingr·   )r'   rÒ   Úgroupsr·   )Úmomentum)r(   r)   r,   Úconv_kernel_sizer   ra   rÐ   ÚgetrÒ   r   r.   Úconvolution_biasÚpointwise_conv1Údepthwise_convÚBatchNorm1dÚbatch_norm_momentumÚnormÚpointwise_conv2)r8   r$   Úmodule_configÚchannelsr&   r9   s        €r:   r)   z%LasrEncoderConvolutionModule.__init__  s'  ø€ õ 	‰Œ×ÒÑÔÐØÔ%ˆàÐ à Ô1ˆKÝ$¥W¨V°\À6Ñ%JÔ%JÔKˆDŒOˆOà'¨Ô6ˆKÝ$ ]×%6Ò%6°|ÀVÑ%LÔ%LÔMˆDŒOØˆŒÝ!œyØ�a˜(‘l°¸!ÀQÈVÔMdð 
ñ  
ô  
ˆÔõ !œiØØØØØ”LØØÔ(ð
ñ 
ô 
ˆÔõ ”N 6Ô#5ÀÔ@ZÐ[Ñ[Ô[ˆŒ	Ý!œyØ�h¨A°aÀÈÔI`ð 
ñ  
ô  
ˆÔÐÐr;   c                 ó.  — |                      dd¦  «        }|                      |¦  «        }t          j                             |d¬¦  «        }|�^|j        t          j        k    rt          j        | d¬¦  «        }nt          j        |dk     d¬¦  «        }| 	                    |d¦  «        }|  
                    |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      dd¦  «        S )aY  
        Compute convolution module.

        Args:
            hidden_states (`torch.Tensor` of shape `(batch, time, channels)`): Input tensor.
            attention_mask (`torch.Tensor` of shape `(batch, 1, time, time)`): Attention mask.

        Returns:
            `torch.Tensor`: Output tensor of shape `(batch, time, channels)`.

        r   r   rp   Nr™   )r?   rØ   r   r©   Úglur`   rE   ÚboolÚallÚmasked_fillrÙ   rÜ   rÐ   rÝ   )r8   r@   rž   Úall_masked_rowss       r:   rA   z$LasrEncoderConvolutionModule.forward2  s	  € ð &×/Ò/°°1Ñ5Ô5ˆð ×,Ò,¨]Ñ;Ô;ˆåœ×)Ò)¨-¸QÐ)Ñ?Ô?ˆð Ð%ØÔ#¥u¤zÒ1Ð1Ý"'¤)¨^¨OÀÐ"CÑ"CÔ"C��å"'¤)¨nÀÒ.CÐ,DÈ!Ð"LÑ"LÔ"L�Ø)×5Ò5°oÀsÑKÔKˆMð ×+Ò+¨MÑ:Ô:ˆØŸ	š	 -Ñ0Ô0ˆØŸš¨Ñ6Ô6ˆØ×,Ò,¨]Ñ;Ô;ˆà×&Ò& q¨!Ñ,Ô,Ð,r;   r   ©rB   rC   rD   r!   r)   rA   rG   rH   s   @r:   rÌ   rÌ     s_   ø€ € € € € ð 
ð  
Ð0ð  
ð  
ð  
ð  
ð  
ð  
ðD"-ð "-ð "-ð "-ð "-ð "-ð "-ð "-r;   rÌ   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚLasrEncoderFeedForwardr$   c                 ó:  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        ¬¦  «        | _        t          |j	                 | _
        t          j        |j        |j        |j        ¬¦  «        | _        |j        | _        d S )Nr¶   )r(   r)   r   r*   r,   Úintermediate_sizerº   Úlinear1r   rÎ   rÐ   Úlinear2Úactivation_dropoutr7   s     €r:   r)   zLasrEncoderFeedForward.__init__X  s}   ø€ Ý‰Œ×ÒÑÔÐÝ”y Ô!3°VÔ5MÐTZÔTiÐjÑjÔjˆŒÝ  Ô!2Ô3ˆŒÝ”y Ô!9¸6Ô;MÐTZÔTiÐjÑjÔjˆŒØ"(Ô";ˆÔÐÐr;   c                 óØ   — |                       |                      |¦  «        ¦  «        }t          j                             || j        | j        ¬¦  «        }|                      |¦  «        }|S )Nr¤   )rÐ   rë   r   r©   r    rí   r¦   rì   )r8   r@   s     r:   rA   zLasrEncoderFeedForward.forward_  sY   € ØŸš¨¯ª°]Ñ(CÔ(CÑDÔDˆÝœ×-Ò-¨m¸tÔ?VÐaeÔanÐ-ÑoÔoˆØŸš ]Ñ3Ô3ˆØÐr;   ræ   rH   s   @r:   rè   rè   W  sT   ø€ € € € € ð<Ð0ð <ð <ð <ð <ð <ð <ðð ð ð ð ð ð r;   rè   c                   óŠ   ‡ — e Zd Zdedefˆ fd„Z	 	 ddej        dej        dz  dej        dz  dee	         d	ej        f
d
„Z
ˆ xZS )ÚLasrEncoderBlockr$   r´   c                 ó¤  •— t          ¦   «                              ¦   «          d| _        t          |¦  «        | _        t          ||¦  «        | _        t          |¦  «        | _        t          |¦  «        | _	        t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        |j        | _        |j        | _        d S )NFr¶   )r(   r)   Úgradient_checkpointingrè   Úfeed_forward1r³   Ú	self_attnrÌ   ÚconvÚfeed_forward2r   Ú	LayerNormr,   Úlayer_norm_epsÚnorm_feed_forward1Únorm_self_attÚ	norm_convÚnorm_feed_forward2Únorm_outÚfeed_forward_residual_weightsÚconv_residual_weightsr¿   s      €r:   r)   zLasrEncoderBlock.__init__g  s  ø€ Ý‰Œ×ÒÑÔÐØ&+ˆÔ#å3°FÑ;Ô;ˆÔÝ-¨f°iÑ@Ô@ˆŒÝ0°Ñ8Ô8ˆŒ	Ý3°FÑ;Ô;ˆÔå"$¤,¨vÔ/AÀ6ÔCXÐ_dÐ"eÑ"eÔ"eˆÔÝœ\¨&Ô*<¸fÔ>SÐZ_Ð`Ñ`Ô`ˆÔÝœ fÔ&8¸&Ô:OÐV[Ð\Ñ\Ô\ˆŒÝ"$¤,¨vÔ/AÀ6ÔCXÐ_dÐ"eÑ"eÔ"eˆÔÝœ VÔ%7¸Ô9NÐUZÐ[Ñ[Ô[ˆŒà-3Ô-QˆÔ*Ø%+Ô%AˆÔ"Ð"Ð"r;   Nr@   rž   rÀ   r¡   r=   c                 óN  — |}|                       |                      |¦  «        ¦  «        }| j        d         |z  | j        d         |z  z   }|                      |¦  «        } | j        d|||dœ|¤Ž\  }}||z   }|                      |                      |¦  «        |¬¦  «        }	| j        d         |z  | j        d         |	z  z   }|}|                      |  	                    |¦  «        ¦  «        }| j        d         |z  | j        d         |z  z   }|  
                    |¦  «        }|S )Nr   r   )r@   rž   rÀ   )rž   © )ró   rù   rþ   rú   rô   rõ   rû   rÿ   rö   rü   rý   )
r8   r@   rž   rÀ   r¡   ÚresidualÚnormalized_hidden_statesr°   Ú_Úconv_outputs
             r:   rA   zLasrEncoderBlock.forwardy  sX  € ð !ˆØ×*Ò*¨4×+BÒ+BÀ=Ñ+QÔ+QÑRÔRˆàÔ.¨qÔ1°HÑ<¸tÔ?aÐbcÔ?dÐgtÑ?tÑtð 	ð $(×#5Ò#5°mÑ#DÔ#DÐ Ø'˜œð 
Ø2Ø)Ø 3ð
ð 
ð ð	
ð 
‰ˆ�Qð &¨Ñ3ˆà—i’i §¢¨}Ñ =Ô =Èn�iÑ]Ô]ˆØÔ2°1Ô5¸ÑEÈÔHbÐcdÔHeÐhsÑHsÑsˆà ˆØ×*Ò*¨4×+BÒ+BÀ=Ñ+QÔ+QÑRÔRˆàÔ.¨qÔ1°HÑ<¸tÔ?aÐbcÔ?dÐgtÑ?tÑtð 	ð Ÿš mÑ4Ô4ˆàÐr;   rÉ   )rB   rC   rD   r!   r‚   r)   rE   rF   r   r   rA   rG   rH   s   @r:   rð   rð   f  s½   ø€ € € € € ðBÐ0ð B¸Sð Bð Bð Bð Bð Bð Bð* /3Ø37ð	!ð !à”|ð!ð œ tÑ+ð!ð #œ\¨DÑ0ð	!ð
 Ð+Ô,ð!ð 
Œð!ð !ð !ð !ð !ð !ð !ð !r;   rð   c                   óŠ   — e Zd ZU eed<   dZdZdZdZdgZ	dZ
dZdZdZdZdZeedœZd	ej        fd
„Zddej        dedz  fd„ZdS )ÚLasrPreTrainedModelr$   Úmodelr<   ÚaudioTrð   F)r@   Ú
attentionsÚinput_lengthsc                 óº   — t          | j        t          ¦  «        r| j        j        n| j        }|j        }|j        }d}t          |¦  «        D ]}||z
  |z  dz   }Œ|S )Nr   r   )rs   r$   r    Úencoder_configr/   r0   Úrange)r8   r  r  r&   r'   Ú
num_layersr  s          r:   Ú_get_subsampling_output_lengthz2LasrPreTrainedModel._get_subsampling_output_length´  sp   € Ý7AÀ$Ä+Í}Ñ7]Ô7]Ðn˜œÔ3Ð3ÐcgÔcnˆØ$ÔAˆØÔ7ˆàˆ
Ý�zÑ"Ô"ð 	Hð 	HˆAØ*¨[Ñ8¸VÑCÀaÑGˆMˆMàÐr;   Nrž   Útarget_lengthc                 óØ   — |                       |                     d¦  «        ¦  «        }|�|n|                     ¦   «         }t          j        ||j        ¬¦  «        |dd…df         k     }|S )zþ
        Convert the input attention mask to its subsampled form. `target_length` sets the desired output length, useful
        when the attention mask length differs from `sum(-1).max()` (i.e., when the longest sequence in the batch is padded)
        rk   N©rY   )r  ÚsumÚmaxrE   rc   rY   )r8   rž   r  Úoutput_lengthsÚ
max_lengths        r:   Ú_get_output_attention_maskz.LasrPreTrainedModel._get_output_attention_mask¿  su   € ð
 ×<Ò<¸^×=OÒ=OÐPRÑ=SÔ=SÑTÔTˆà&3Ð&?�]�]À^×EWÒEWÑEYÔEYˆ
Ýœ j¸Ô9NÐOÑOÔOÐR`ÐabÐabÐabÐdhÐahÔRiÒiˆØÐr;   r   )rB   rC   rD   r    r€   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_flat_attention_maskÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_flash_attnÚ_can_compile_fullgraphÚ_supports_attention_backendrð   r³   Ú_can_record_outputsrE   rF   r  r‚   r  r  r;   r:   r  r  �  sÇ   € € € € € € àÐÐÑØÐØ&€OØÐØ&*Ð#Ø+Ð,ÐØ$(Ð!Ø€NàÐð !Ðà!ÐØ"&Ðà)Ø*ðð Ðð
	¸E¼Lð 	ð 	ð 	ð 	ð	ð 	¸¼ð 	ÐVYÐ\`ÑV`ð 	ð 	ð 	ð 	ð 	ð 	r;   r  z¨
    Extends [~modeling_outputs.BaseModelOutputWithPooling] to include the output attention mask since sequence length
    is not preserved in the model's forward.
    )Úcustom_introc                   ó2   — e Zd ZU dZdZej        dz  ed<   dS )ÚLasrEncoderModelOutputa–  
    attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
        Mask to avoid performing attention on padding token indices after sequence compression. Returned because the
        sequence length may differ from the input sequence length. Mask values selected in `[0, 1]`:

        - 1 for tokens that are **not masked**,
        - 0 for tokens that are **masked**.
    Nrž   )rB   rC   rD   rÊ   rž   rE   rF   r€   r  r;   r:   r'  r'  Ë  s5   € € € € € € ðð ð +/€N�E”L 4Ñ'Ð.Ð.Ñ.Ð.Ð.r;   r'  zh
    The LasrEncoder model, based on the Conformer architecture](https://arxiv.org/abs/2005.08100).
    c                   óÂ   ‡ — e Zd ZU eed<   dZdefˆ fd„Zeee	e
	 	 ddej        dej        dz  dedz  dee         d	ef
d
„¦   «         ¦   «         ¦   «         ¦   «         Zˆ xZS )ÚLasrEncoderr$   Úencoderc                 óÔ  •‡— t          ¦   «                              ‰¦  «         d| _        ‰j        | _        ‰j        | _        ‰j        | _        t          ‰¦  «        | _        t          ‰¦  «        | _	        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          j        ‰j        ‰j        d¬¦  «        | _        |                      ¦   «          d S )NFc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r  )rð   )Ú.0r´   r$   s     €r:   ú
<listcomp>z(LasrEncoder.__init__.<locals>.<listcomp>ó  s$   ø€ ÐbÐbÐb°YÕ˜f iÑ0Ô0ÐbÐbÐbr;   )Úepsr·   )r(   r)   rò   r    Údropout_positionsÚ	layerdropr#   Ú
subsamplerrJ   Ú
rotary_embr   Ú
ModuleListr  Únum_hidden_layersÚlayersr÷   r,   rø   Úout_normÚ	post_initr7   s    `€r:   r)   zLasrEncoder.__init__è  sÌ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø&+ˆÔ#à”~ˆŒØ!'Ô!9ˆÔØÔ)ˆŒå0°Ñ8Ô8ˆŒÝ4°VÑ<Ô<ˆŒÝ”mØbÐbÐbÐbÅ%ÈÔH`ÑBaÔBaÐbÑbÔbñ
ô 
ˆŒõ œ VÔ%7¸VÔ=RÐY^Ð_Ñ_Ô_ˆŒà�ŠÑÔÐÐÐr;   Nr<   rž   Úoutput_attention_maskr¡   r=   c                 óV  — |                       |¦  «        }|                      |t          j        |j        d         |j        ¬¦  «                             d¦  «        ¦  «        \  }}t          j         	                    || j	        | j
        ¬¦  «        }t          j         	                    || j        | j
        ¬¦  «        }t          j         	                    || j        | j
        ¬¦  «        }d}|�$|                      ||j        d         ¬¦  «        }|}t          | j        ||¬¦  «        }| j        D ]<}	d}
| j
        r!t          j        g ¦  «        }|| j        k     rd	}
|
s |	|f|||fd
œ|¤Ž}Œ=|                      |¦  «        }t'          ||r|�|                     ¦   «         nd¬¦  «        S )a;  
        output_attention_mask (`bool`, *optional*):
            Whether to return the output attention mask.

        Example:

        ```python
        >>> from transformers import AutoProcessor, LasrEncoder
        >>> from datasets import load_dataset, Audio

        >>> model_id = "google/medasr"
        >>> processor = AutoProcessor.from_pretrained(model_id)
        >>> encoder = ParakeetEncoder.from_pretrained(model_id)

        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

        >>> inputs = processor(ds[0]["audio"]["array"])
        >>> encoder_outputs = encoder(**inputs)

        >>> print(encoder_outputs.last_hidden_state.shape)
        ```
        r   r  r   r¤   N©r  )r$   Úinputs_embedsrž   FT)rž   rÀ   )Úlast_hidden_staterž   )r2  r3  rE   rc   rr   rY   r‹   r   r©   r    r¦   r0  r  r   r$   r6  Úrandr1  r7  r'  r‚   )r8   r<   rž   r9  r¡   r@   rw   rx   Úoutput_maskÚencoder_layerÚto_dropÚdropout_probabilitys               r:   rA   zLasrEncoder.forwardù  sÙ  € ðF Ÿš¨Ñ7Ô7ˆØ—?’?Ø�5œ<¨Ô(;¸AÔ(>À}ÔG[Ð\Ñ\Ô\×fÒfÐghÑiÔiñ
ô 
‰ˆˆSõ œ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆÝŒm×#Ò# C¨4Ô+AÈDÌMÐ#ÑZÔZˆÝŒm×#Ò# C¨4Ô+AÈDÌMÐ#ÑZÔZˆàˆØÐ%Ø×9Ò9¸.ÐXeÔXkÐlmÔXnÐ9ÑoÔoˆKØ(ˆNå2Ø”;Ø'Ø)ð
ñ 
ô 
ˆð "œ[ð 	ð 	ˆMàˆGØŒ}ð #Ý&+¤j°¡n¤nÐ#Ø&¨¬Ò7Ð7Ø"�Gàð Ø - Ø!ð!à#1Ø),¨c¨
ð!ð !ð ð	!ð !�øð Ÿš mÑ4Ô4ˆå%Ø+Ø0EÐkÈ+ÐJa˜;Ÿ?š?Ñ,Ô,Ð,Ðgkð
ñ 
ô 
ð 	
r;   rÉ   )rB   rC   rD   r!   r€   r  r)   r   r   r   r   rE   rF   râ   r   r   r'  rA   rG   rH   s   @r:   r)  r)  ß  sù   ø€ € € € € € ð ÐÐÑØ!ÐðÐ0ð ð ð ð ð ð ð" ØØØð /3Ø-1ð	H
ð H
àœðH
ð œ tÑ+ðH
ð  $ d™{ð	H
ð
 Ð+Ô,ðH
ð 
 ðH
ð H
ð H
ñ Ôñ „_ñ  Ôñ „^ðH
ð H
ð H
ð H
ð H
r;   r)  c                   ó¾   — e Zd ZU dZej        ed<   dZeej	                 dz  ed<   dZ
eeej	                          dz  ed<   dZeeej	                          dz  ed<   dS )ÚLasrCTCGenerateOutputav  
    Outputs of Lasr CTC model generation.

    Args:
        sequences (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            The generated sequences. The second dimension (sequence_length) is either equal to `max_length` or shorter
            if all batches finished early due to the `eos_token_id`.
        logits (`tuple(torch.FloatTensor)` *optional*, returned when `output_logits=True`):
            Unprocessed prediction scores of the language modeling head (scores for each vocabulary token before SoftMax)
            at each generation step. Tuple of `torch.FloatTensor` with up to `max_new_tokens` elements (one element for
            each generated token), with each tensor of shape `(batch_size, config.vocab_size)`.
        attentions (`tuple(tuple(torch.FloatTensor))`, *optional*, returned when `output_attentions=True`):
            Tuple (one element for each generated token) of tuples (one element for each layer of the decoder) of
            `torch.FloatTensor` of shape `(batch_size, num_heads, generated_length, sequence_length)`.
        hidden_states (`tuple(tuple(torch.FloatTensor))`, *optional*, returned when `output_hidden_states=True`):
            Tuple (one element for each generated token) of tuples (one element for each layer of the decoder) of
            `torch.FloatTensor` of shape `(batch_size, generated_length, hidden_size)`.
    Ú	sequencesNÚlogitsr
  r@   )rB   rC   rD   rÊ   rE   Ú
LongTensorr€   rF  rƒ   ÚFloatTensorr
  r@   r  r;   r:   rD  rD  H  sŽ   € € € € € € ðð ð& ÔÐÐÑØ.2€FˆE�%Ô#Ô$ tÑ+Ð2Ð2Ñ2Ø9=€J��e˜EÔ-Ô.Ô/°$Ñ6Ð=Ð=Ñ=Ø<@€M�5˜˜uÔ0Ô1Ô2°TÑ9Ð@Ð@Ñ@Ð@Ð@r;   rD  zO
    Lasr Encoder with a Connectionist Temporal Classification (CTC) head.
    c                   ó6  ‡ — e Zd ZU eed<   defˆ fd„Zee	 	 ddej	        dej	        dz  dej	        dz  de
e         def
d	„¦   «         ¦   «         Z ej        ¦   «         	 	 	 ddej	        dej	        dz  dededz  de
e         deej        z  fd„¦   «         Zˆ xZS )Ú
LasrForCTCr$   c                 ó  •— t          ¦   «                              |¦  «         t          j        |j        ¦  «        | _        t          j        |j        j        |j	        d¬¦  «        | _
        |                      ¦   «          d S )Nr   )r&   )r(   r)   r   Úfrom_configr  r*  r   r.   r,   Ú
vocab_sizeÚctc_headr8  r7   s     €r:   r)   zLasrForCTC.__init__k  sh   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý Ô,¨VÔ-BÑCÔCˆŒåœ	 &Ô"7Ô"CÀVÔEVÐdeÐfÑfÔfˆŒà�ŠÑÔÐÐÐr;   Nr<   rž   Úlabelsr¡   r=   c           
      óH  — |�|                      dd¦  «          | j        d||dœ|¤Ž}|j        }|                      |                     dd¦  «        ¦  «                             dd¦  «        }d}|��|j                             d¦  «        }	|| j        j        k    }
|
                     d¦  «        }| 	                    |
¦  «        }t          j                             |dt          j        ¬¦  «                             d	d¦  «        }t          j        j                             d
¬¦  «        5  t          j                             |||	|| j        j        | j        j        | j        j        ¬¦  «        }ddd¦  «         n# 1 swxY w Y   t+          |||j        |j        ¬¦  «        S )a²  
        Example:

        ```python
        >>> from transformers import AutoProcessor, LasrForCTC
        >>> from datasets import load_dataset, Audio

        >>> model_id = "nvidia/lasr-ctc-1.1b"
        >>> processor = AutoProcessor.from_pretrained(model_id)
        >>> model = LasrForCTC.from_pretrained(model_id)

        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

        >>> inputs = processor(ds[0]["audio"]["array"], text=ds[0]["text"])
        >>> outputs = model(**inputs)

        >>> print(outputs.loss)
        ```Nr9  T©r<   rž   r   r   rk   r£   r   F)ro   )ÚblankÚ	reductionÚzero_infinity)ÚlossrF  r@   r
  r  )Ú
setdefaultr*  r=  rN  r?   rž   r  r$   Úpad_token_idÚmasked_selectr   r©   Úlog_softmaxrE   r«   ÚbackendsÚcudnnÚflagsÚctc_lossÚctc_loss_reductionÚctc_zero_infinityr   r@   r
  )r8   r<   rž   rO  r¡   Úencoder_outputsr@   rF  rU  Úencoder_lengthsÚlabels_maskÚtarget_lengthsÚflattened_targetsÚ	log_probss                 r:   rA   zLasrForCTC.forwards  sî  € ð: ÐØ×ÒÐ5°tÑ<Ô<Ð<Ø&˜$œ,ð 
Ø)Ø)ð
ð 
ð ð
ð 
ˆð (Ô9ˆØ—’˜}×6Ò6°q¸!Ñ<Ô<Ñ=Ô=×GÒGÈÈ1ÑMÔMˆàˆØÑØ-Ô<×@Ò@ÀÑDÔDˆOð ! D¤KÔ$<Ò<ˆKØ(Ÿ_š_¨RÑ0Ô0ˆNØ &× 4Ò 4°[Ñ AÔ AÐõ œ×1Ò1°&¸bÍÌÐ1ÑVÔV×`Ò`ÐabÐdeÑfÔfˆIå”Ô%×+Ò+°EÐ+Ñ:Ô:ð 	ð 	Ý”}×-Ò-ØØ%Ø#Ø"Øœ+Ô2Ø"œkÔ<Ø"&¤+Ô"?ð .ñ ô �ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ØØØ)Ô7Ø&Ô1ð	
ñ 
ô 
ð 	
s   Ä+AE<Å<F ÆF FÚreturn_dict_in_generateÚcompile_configc                 óH  — |�|                       |¦  «        n| j        }d|d<    |d
||dœ|¤Ž}|j                             d¬¦  «        }|�2|                      ||j        d         ¬¦  «        }| j        j        || <   |r"t          ||j        |j	        |j
        ¬	¦  «        S |S )a   
        Example:

        ```python
        >>> from transformers import AutoProcessor, LasrForCTC
        >>> from datasets import load_dataset, Audio

        >>> model_id = "google/medasr"
        >>> processor = AutoProcessor.from_pretrained(model_id)
        >>> model = LasrForCTC.from_pretrained(model_id)

        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

        >>> inputs = processor(ds[0]["audio"]["array"], text=ds[0]["text"])
        >>> predicted_ids = model.generate(**inputs)
        >>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)

        >>> print(transcription)
        ```
        NTÚreturn_dictrQ  rk   rp   r   r;  )rE  rF  r
  r@   r  )Úget_compiled_callÚ__call__rF  Úargmaxr  rr   r$   rW  rD  r
  r@   )	r8   r<   rž   rf  rg  r¡   Úmodel_forwardÚoutputsrE  s	            r:   ÚgeneratezLasrForCTC.generate¹  sì   € ð< CQÐB\˜×.Ò.¨~Ñ>Ô>Ð>ÐbfÔboˆà $ˆˆ}ÑØ"/ -ð #
Ø)Ø)ð#
ð #
ð ð#
ð #
ˆð ”N×)Ò)¨bÐ)Ñ1Ô1ˆ	ð Ð%Ø!×<Ò<¸^Ð[dÔ[jÐklÔ[mÐ<ÑnÔnˆNØ)-¬Ô)AˆI�~�oÑ&à"ð 	Ý(Ø#Ø”~Ø"Ô-Ø%Ô3ð	ñ ô ð ð Ðr;   rÉ   )NFN)rB   rC   rD   r    r€   r)   r   r   rE   rF   r   r   r   rA   r„   râ   r	   rD  rG  ro  rG   rH   s   @r:   rJ  rJ  c  sk  ø€ € € € € € ð ÐÐÑð˜}ð ð ð ð ð ð ð Øð /3Ø&*ð	B
ð B
àœðB
ð œ tÑ+ðB
ð ”˜tÑ#ð	B
ð
 Ð+Ô,ðB
ð 
ðB
ð B
ð B
ñ Ôñ „^ðB
ðH €U„]�_„_ð /3Ø(-Ø/3ð6ð 6àœð6ð œ tÑ+ð6ð "&ð	6ð
 &¨Ñ,ð6ð Ð+Ô,ð6ð 
 Ô!1Ñ	1ð6ð 6ð 6ñ „_ð6ð 6ð 6ð 6ð 6r;   rJ  )rJ  r)  r  )r   )r™   )BÚcollections.abcr   Údataclassesr   Útypingr   rE   r   Úactivationsr   Ú
generationr	   r
   Úintegrationsr   r   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úautor   Úconfiguration_lasrr    r!   ÚModuler#   rJ   rˆ   r‘   rF   r‚   r˜   rf   r±   r³   rÌ   rè   rð   r  r'  r)  rD  rJ  Ú__all__r  r;   r:   ú<module>rƒ     sA  ðð* %Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ð+ð +ð +ð +ð +˜RœYñ +ô +ð +ð8><ð ><ð ><ð ><ð >< ¤ñ ><ô ><ð ><ðB(ð (ð (ð ÐÐ*Ñ+Ô+ðð ð ñ ,Ô+ðð2	U˜Uœ\ð 	U°#ð 	U¸%¼,ð 	Uð 	Uð 	Uð 	Uð& ð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð ð%ð ð%ð Ð'Ô(ð%ð %ð %ð %ð2 ÐÐ)Ñ*Ô*ð<)ð <)ð <)ð <)ð <)˜2œ9ñ <)ô <)ñ +Ô*ð<)ð~E-ð E-ð E-ð E-ð E- 2¤9ñ E-ô E-ð E-ðPð ð ð ð ˜RœYñ ô ð ð4ð 4ð 4ð 4ð 4Ð1ñ 4ô 4ð 4ðn ð*ð *ð *ð *ð *˜/ñ *ô *ñ „ð*ðZ €ððñ ô ð ð
/ð 
/ð 
/ð 
/ð 
/Ð7ñ 
/ô 
/ñ „ñô ð
/ð €ððñ ô ð
a
ð a
ð a
ð a
ð a
Ð%ñ a
ô a
ñô ð
a
ðH ðAð Að Að Að A˜Kñ Aô Añ „ðAð4 €ððñ ô ð
Hð Hð Hð Hð HÐ$ oñ Hô Hñô ð
HðV ?Ð
>Ð
>€€€r;   