Ë
    ÜÓ^jöí  ã                   ó¢  — d Z ddlZddlmZ ddlmZ ddlZddlZddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZmZ ddlmZ ddlmZmZmZ ddl m!Z!  ejD                  e#«      Z$ ed¬«      e G d„ de«      «       «       Z% ed¬«      e G d„ de«      «       «       Z&ejN                  jP                  d„ «       Z)	 	 	 	 	 dAd„Z*d„ Z+ G d„ dej                  jX                  «      Z- G d„ de	jX                  «      Z. G d „ d!e	jX                  «      Z/ G d"„ d#e	jX                  «      Z0 G d$„ d%e	jX                  «      Z1 G d&„ d'e	jX                  «      Z2 G d(„ d)e	jX                  «      Z3 G d*„ d+e	jX                  «      Z4 G d,„ d-e	jX                  «      Z5 G d.„ d/e	jX                  «      Z6 G d0„ d1e	jX                  «      Z7 G d2„ d3e	jX                  «      Z8 G d4„ d5e	jX                  «      Z9 G d6„ d7e«      Z: G d8„ d9e	jX                  «      Z; G d:„ d;e	jX                  «      Z<e G d<„ d=e«      «       Z= ed>¬«       G d?„ d@e=«      «       Z>d@d=gZ?y)BzPyTorch VITS model.é    N)Ú	dataclass)ÚAny)Únné   )Úinitialization)ÚACT2FN)Úis_deepspeed_zero3_enabled)Úis_fsdp_managed_module)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚModelOutput)ÚPreTrainedModel)Úauto_docstringÚloggingÚtorch_compilable_checké   )Ú
VitsConfigz`
    Describes the outputs for the VITS model, with potential hidden states and attentions.
    )Úcustom_introc                   óì   — e Zd ZU dZdZej                  dz  ed<   dZej                  dz  ed<   dZ	e
ej                     dz  ed<   dZe
ej                     dz  ed<   dZe
ej                     dz  ed<   y)ÚVitsModelOutputa"  
    waveform (`torch.FloatTensor` of shape `(batch_size, sequence_length)`):
        The final audio waveform predicted by the model.
    sequence_lengths (`torch.FloatTensor` of shape `(batch_size,)`):
        The length in samples of each element in the `waveform` batch.
    spectrogram (`torch.FloatTensor` of shape `(batch_size, sequence_length, num_bins)`):
        The log-mel spectrogram predicted at the output of the flow model. This spectrogram is passed to the Hi-Fi
        GAN decoder model to obtain the final audio waveform.
    NÚwaveformÚsequence_lengthsÚspectrogramÚhidden_statesÚ
attentions)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtorchÚFloatTensorÚ__annotations__r   r   Útupler   r   © ó    úq/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/vits/modeling_vits.pyr   r   '   s‚   … ñð *.€Hˆe×Ñ $Ñ&Ó-Ø15Ð�e×'Ñ'¨$Ñ.Ó5Ø37€K��u×(Ñ(Ñ)¨DÑ0Ó7Ø59€M�5˜×*Ñ*Ñ+¨dÑ2Ó9Ø26€J��e×'Ñ'Ñ(¨4Ñ/Ô6r&   r   zm
    Describes the outputs for the VITS text encoder model, with potential hidden states and attentions.
    c                   óæ   — e Zd ZU dZdZej                  dz  ed<   dZej                  dz  ed<   dZ	ej                  dz  ed<   dZ
eej                     dz  ed<   dZeej                     dz  ed<   y)ÚVitsTextEncoderOutputa…  
    prior_means (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
        The predicted mean values of the prior distribution for the latent text variables.
    prior_log_variances (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
        The predicted log-variance values of the prior distribution for the latent text variables.
    NÚlast_hidden_stateÚprior_meansÚprior_log_variancesr   r   )r   r   r   r    r*   r!   r"   r#   r+   r,   r   r$   r   r%   r&   r'   r)   r)   ?   s~   … ñð 37Ð�u×(Ñ(¨4Ñ/Ó6Ø,0€K�×"Ñ" TÑ)Ó0Ø48Ð˜×*Ñ*¨TÑ1Ó8Ø59€M�5˜×*Ñ*Ñ+¨dÑ2Ó9Ø26€J��e×'Ñ'Ñ(¨4Ñ/Ô6r&   r)   c                 óž   — | |z   }t        j                  |d d …d |…d d …f   «      }t        j                  |d d …|d …d d …f   «      }||z  }|S ©N)r!   ÚtanhÚsigmoid)Úinput_aÚinput_bÚnum_channelsÚin_actÚt_actÚs_actÚactss          r'   Úfused_add_tanh_sigmoid_multiplyr8   T   sT   € à�wÑ€FÜ�J‰J�vša  , ²Ð1Ñ2Ó3€EÜ�M‰M˜&¢ L¡M²1Ð!4Ñ5Ó6€EØ�5‰=€DØ€Kr&   c	                 ó²  — | | k\  | |k  z  }	|	 }
t        j                  | «      }t        j                  | «      }t        j                  t        j                  d|z
  «      dz
  «      }t
        j                  j                  |d¬«      }||d<   ||d<   | |
   ||
<   d||
<   t        | |	   ||	dd…f   ||	dd…f   ||	dd…f   |||||¬«	      \  ||	<   ||	<   ||fS )	aô	  
    This transformation represents a monotonically increasing piecewise rational quadratic function. Outside of the
    `tail_bound`, the transform behaves as an identity function.

    Args:
        inputs (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Second half of the hidden-states input to the Vits convolutional flow module.
        unnormalized_widths (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            First `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        unnormalized_heights (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            Second `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        unnormalized_derivatives (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            Third `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        reverse (`bool`, *optional*, defaults to `False`):
            Whether the model is being run in reverse mode.
        tail_bound (`float`, *optional* defaults to 5):
            Upper and lower limit bound for the rational quadratic function. Outside of this `tail_bound`, the
            transform behaves as an identity function.
        min_bin_width (`float`, *optional*, defaults to 1e-3):
            Minimum bin value across the width dimension for the piecewise rational quadratic function.
        min_bin_height (`float`, *optional*, defaults to 1e-3):
            Minimum bin value across the height dimension for the piecewise rational quadratic function.
        min_derivative (`float`, *optional*, defaults to 1e-3):
            Minimum bin value across the derivatives for the piecewise rational quadratic function.
    Returns:
        outputs (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Hidden-states as transformed by the piecewise rational quadratic function with the `tail_bound` limits
            applied.
        log_abs_det (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Logarithm of the absolute value of the determinants corresponding to the `outputs` with the `tail_bound`
            limits applied.
    r   )r   r   )Úpad©.r   ©.éÿÿÿÿç        N)	ÚinputsÚunnormalized_widthsÚunnormalized_heightsÚunnormalized_derivativesÚreverseÚ
tail_boundÚmin_bin_widthÚmin_bin_heightÚmin_derivative)	r!   Ú
zeros_likeÚnpÚlogÚexpr   Ú
functionalr:   Ú_rational_quadratic_spline)r?   r@   rA   rB   rC   rD   rE   rF   rG   Úinside_interval_maskÚoutside_interval_maskÚoutputsÚlog_abs_detÚconstants                 r'   Ú(_unconstrained_rational_quadratic_splinerS   ]   s  € ð\ # z kÑ1°fÀ
Ñ6JÑKÐØ1Ð1Ðä×Ñ˜vÓ&€GÜ×"Ñ" 6Ó*€KÜ�v‰v”b—f‘f˜Q Ñ/Ó0°1Ñ4Ó5€Hä!Ÿ}™}×0Ñ0Ð1IÈvÐ0ÓVÐØ'/Ð˜VÑ$Ø(0Ð˜WÑ%à%+Ð,AÑ%B€GÐ!Ñ"Ø),€KÐ%Ñ&äGaØÐ*Ñ+Ø/Ð0DÂaÐ0GÑHØ1Ð2FÊÐ2IÑJØ!9Ð:NÒPQÐ:QÑ!RØØØ#Ø%Ø%ô
HÑD€GÐ Ñ! ;Ð/CÑ#Dð �KÐÐr&   c	                 óà  — |}	| }
t        | j                  «       |
k\  | j                  «       |	k  z  d|
› d|	› d�«       |j                  d   }||z  dkD  rt	        d|› d|› �«      ‚||z  dkD  rt	        d|› d|› �«      ‚t
        j                  j                  |d¬	«      }|d
||z  z
  |z  z   }t        j                  |d¬	«      }t
        j                  j                  |ddd¬«      }|	|
z
  |z  |
z   }|
|d<   |	|d<   |dd
d…f   |ddd…f   z
  }|t
        j                  j                  |«      z   }t
        j                  j                  |d¬	«      }|d
||z  z
  |z  z   }t        j                  |d¬	«      }t
        j                  j                  |ddd¬«      }|	|
z
  |z  |
z   }|
|d<   |	|d<   |dd
d…f   |ddd…f   z
  }|r|n|}|dxx   dz  cc<   t        j                  | d   |k\  d¬	«      d
z
  }|d   }|j                  d|«      d   }|j                  d|«      d   }|j                  d|«      d   }||z  }|j                  d|«      d   }|j                  d|«      d   }|dd
d…f   j                  d|«      d   }|j                  d|«      d   }||z   d|z  z
  }|s¶| |z
  |z  }|d
|z
  z  }|||j                  d«      z  ||z  z   z  }|||z  z   }|||z  z   } |j                  d«      ||j                  d«      z  d|z  |z  z   |d
|z
  j                  d«      z  z   z  }!t        j                  |!«      dt        j                  |«      z  z
  }"| |"fS | |z
  }#|#|z  }$|||z
  z  |$z   }%||z  |$z
  }&| |#z  }'|&j                  d«      d|%z  |'z  z
  }(t        t        j                   |(dk\  «      d|(› �«       d|'z  |& t        j"                  |(«      z
  z  })|)|z  |z   } |)d
|)z
  z  }|||z  z   }|j                  d«      ||)j                  d«      z  d|z  |z  z   |d
|)z
  j                  d«      z  z   z  }!t        j                  |!«      dt        j                  |«      z  z
  }"| |" fS )a(	  
    This transformation represents a monotonically increasing piecewise rational quadratic function. Unlike the
    function `_unconstrained_rational_quadratic_spline`, the function behaves the same across the `tail_bound`.

    Args:
        inputs (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Second half of the hidden-states input to the Vits convolutional flow module.
        unnormalized_widths (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            First `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        unnormalized_heights (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            Second `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        unnormalized_derivatives (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            Third `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        reverse (`bool`):
            Whether the model is being run in reverse mode.
        tail_bound (`float`):
            Upper and lower limit bound for the rational quadratic function. Outside of this `tail_bound`, the
            transform behaves as an identity function.
        min_bin_width (`float`):
            Minimum bin value across the width dimension for the piecewise rational quadratic function.
        min_bin_height (`float`):
            Minimum bin value across the height dimension for the piecewise rational quadratic function.
        min_derivative (`float`):
            Minimum bin value across the derivatives for the piecewise rational quadratic function.
    Returns:
        outputs (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Hidden-states as transformed by the piecewise rational quadratic function.
        log_abs_det (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Logarithm of the absolute value of the determinants corresponding to the `outputs`.
    zInputs are outside the range [z, ú]r=   ç      ð?zMinimal bin width z" too large for the number of bins zMinimal bin height ©Údimr   )r   r   rR   r>   )r:   ÚmodeÚvaluer;   r<   .Ng�íµ ÷Æ°>).Né   é   r   z!Discriminant has negative values )r   ÚminÚmaxÚshapeÚ
ValueErrorr   rL   Úsoftmaxr!   Úcumsumr:   ÚsoftplusÚsumÚgatherÚpowrJ   ÚallÚsqrt)*r?   r@   rA   rB   rC   rD   rE   rF   rG   Úupper_boundÚlower_boundÚnum_binsÚwidthsÚ	cumwidthsÚderivativesÚheightsÚ
cumheightsÚbin_locationsÚbin_idxÚinput_cumwidthsÚinput_bin_widthsÚinput_cumheightsÚdeltaÚinput_deltaÚinput_derivativesÚinput_derivatives_plus_oneÚinput_heightsÚintermediate1ÚthetaÚtheta_one_minus_thetaÚ	numeratorÚdenominatorrP   Úderivative_numeratorrQ   Úintermediate2Úintermediate3ÚaÚbÚcÚdiscriminantÚroots*                                             r'   rM   rM   §   s`  € ðX €KØ�+€KÜØ	�‰‹˜Ñ	$¨¯©«¸Ñ)DÑEØ
(¨¨°R¸°}ÀAÐFôð #×(Ñ(¨Ñ,€Hà�xÑ #Ò%ÜÐ-¨m¨_Ð<^Ð_gÐ^hÐiÓjÐjØ˜Ñ  3Ò&ÜÐ.¨~Ð.>Ð>`ÐaiÐ`jÐkÓlÐlä�]‰]×"Ñ"Ð#6¸BÐ"Ó?€FØ˜a -°(Ñ":Ñ:¸fÑDÑD€FÜ—‘˜V¨Ô,€IÜ—‘×!Ñ! )°¸jÐPSÐ!ÓT€IØ˜{Ñ*¨iÑ7¸+ÑE€IØ#€IˆfÑØ$€IˆgÑØ�s˜A™B�wÑ )¨C°°"°¨HÑ"5Ñ5€Fà ¤2§=¡=×#9Ñ#9Ð:RÓ#SÑS€Kä�m‰m×#Ñ#Ð$8¸bÐ#ÓA€GØ  N°XÑ$=Ñ =ÀÑHÑH€GÜ—‘˜g¨2Ô.€JÜ—‘×"Ñ" :°6À
ÐRUÐ"ÓV€JØ Ñ+¨zÑ9¸KÑG€JØ$€JˆvÑØ%€JˆwÑØ˜˜a™b˜Ñ! J¨s°C°R°C¨xÑ$8Ñ8€Gá")‘J¨y€MØ�'Ó˜dÑ"ÓÜ�i‰i˜˜yÑ)¨]Ñ:ÀÔCÀaÑG€GØ�iÑ €Gà×&Ñ& r¨7Ó3°FÑ;€OØ—}‘} R¨Ó1°&Ñ9Ðà!×(Ñ(¨¨WÓ5°fÑ=ÐØ�fÑ€EØ—,‘,˜r 7Ó+¨FÑ3€Kà#×*Ñ*¨2¨wÓ7¸Ñ?ÐØ!,¨S°!±"¨WÑ!5×!<Ñ!<¸RÀÓ!IÈ&Ñ!QÐà—N‘N 2 wÓ/°Ñ7€Mà%Ð(BÑBÀQÈÁ_ÑT€MÙØ˜/Ñ)Ð-=Ñ=ˆØ %¨¨U©Ñ 3Ðà! [°5·9±9¸Q³<Ñ%?ÐBSÐVkÑBkÑ%kÑlˆ	Ø! MÐ4IÑ$IÑIˆØ" Y°Ñ%<Ñ<ˆà*Ÿ™¨qÓ1Ø&¨¯©°1«Ñ5Ø�+‰oÐ 5Ñ5ñ6à 1 u¡9§/¡/°!Ó"4Ñ4ñ5ñ 
Ðô
 —i‘iÐ 4Ó5¸¼E¿I¹IÀkÓ<RÑ8RÑRˆØ˜Ð#Ð#ð Ð!1Ñ1ˆØ%¨Ñ5ˆØ˜[Ð+<Ñ<Ñ=ÀÑMˆØÐ-Ñ-°Ñ=ˆØˆL˜=Ñ(ˆà—u‘u˜Q“x ! a¡%¨!¡)Ñ+ˆÜÜ�I‰I�l aÑ'Ó(Ø/°¨~Ð>ô	
ð
 �A‘˜1˜"œuŸz™z¨,Ó7Ñ7Ñ8ˆØÐ)Ñ)¨OÑ;ˆà $¨¨D©Ñ 1ÐØ! MÐ4IÑ$IÑIˆØ*Ÿ™¨qÓ1Ø&¨¯©°!«Ñ4Ø�+‰oÐ 5Ñ5ñ6à 1 t¡8§.¡.°Ó"3Ñ3ñ4ñ 
Ðô
 —i‘iÐ 4Ó5¸¼E¿I¹IÀkÓ<RÑ8RÑRˆØ˜˜Ð$Ð$r&   c                   ó6   ‡ — e Zd Zdedefˆ fd„Zdd„Zd„ Zˆ xZS )ÚVitsWaveNetÚconfigÚ
num_layersc                 óÆ  •— t         ‰| �  «        |j                  | _        || _        t        j
                  j                  «       | _        t        j
                  j                  «       | _        t        j                  |j                  «      | _        t        t
        j                  j                  d«      r%t
        j                  j                  j                  }nt
        j                  j                  }|j                   dk7  rJt        j
                  j#                  |j                   d|j                  z  |z  d«      } ||d¬«      | _        t'        |«      D �]  }|j(                  |z  }|j*                  |z  |z
  dz  }t        j
                  j#                  |j                  d|j                  z  |j*                  ||¬«      } ||d¬«      }| j                  j-                  |«       ||dz
  k  rd|j                  z  }	n|j                  }	t        j
                  j#                  |j                  |	d«      }
 ||
d¬«      }
| j                  j-                  |
«       �Œ y )NÚweight_normr   r[   r   Úweight)Úname)Úin_channelsÚout_channelsÚkernel_sizeÚdilationÚpadding)ÚsuperÚ__init__Úhidden_sizer‹   r!   r   Ú
ModuleListÚ	in_layersÚres_skip_layersÚDropoutÚwavenet_dropoutÚdropoutÚhasattrÚutilsÚparametrizationsr�   Úspeaker_embedding_sizeÚConv1dÚ
cond_layerÚrangeÚwavenet_dilation_rateÚwavenet_kernel_sizeÚappend)ÚselfrŠ   r‹   r�   r£   Úir“   r”   Úin_layerÚres_skip_channelsÚres_skip_layerÚ	__class__s              €r'   r–   zVitsWaveNet.__init__2  sè  ø€ Ü‰ÑÔØ!×-Ñ-ˆÔØ$ˆŒäŸ™×,Ñ,Ó.ˆŒÜ$Ÿx™x×2Ñ2Ó4ˆÔÜ—z‘z &×"8Ñ"8Ó9ˆŒä”2—8‘8×,Ñ,¨mÔ<ÜŸ(™(×3Ñ3×?Ñ?‰KäŸ(™(×.Ñ.ˆKà×(Ñ(¨AÒ-ÜŸ™Ÿ™¨×)FÑ)FÈÈF×L^ÑL^ÑH^ÐakÑHkÐmnÓoˆJÙ)¨*¸8ÔDˆDŒOä�zÓ"ó 	8ˆAØ×3Ñ3°QÑ6ˆHØ×1Ñ1°HÑ<¸xÑGÈAÑMˆGÜ—x‘x—‘Ø"×.Ñ.Ø ×!3Ñ!3Ñ3Ø"×6Ñ6Ø!Øð 'ó ˆHñ # 8°(Ô;ˆHØ�N‰N×!Ñ! (Ô+ð �: ‘>Ò!Ø$%¨×(:Ñ(:Ñ$:Ñ!à$*×$6Ñ$6Ð!ä"ŸX™XŸ_™_¨V×-?Ñ-?ÐARÐTUÓVˆNÙ(¨¸hÔGˆNØ× Ñ ×'Ñ'¨Ö7ñ+	8r&   c                 óœ  — t        j                  |«      }t        j                  | j                  g«      }|�| j	                  |«      }t        | j                  «      D ]è  } | j                  |   |«      }|�1|dz  | j                  z  }|d d …||d| j                  z  z   …d d …f   }	nt        j                  |«      }	t        ||	|d   «      }
| j                  |
«      }
 | j                  |   |
«      }|| j                  dz
  k  r<|d d …d | j                  …d d …f   }||z   |z  }||d d …| j                  d …d d …f   z   }Œä||z   }Œê ||z  S )Nr[   r   r   )r!   rH   Ú	IntTensorr—   r£   r¤   r‹   r™   r8   r�   rš   )r¨   r?   Úpadding_maskÚglobal_conditioningrP   Únum_channels_tensorr©   r   Úcond_offsetÚglobal_statesr7   Úres_skip_actsÚres_actss                r'   ÚforwardzVitsWaveNet.forward[  sm  € Ü×"Ñ" 6Ó*ˆÜ#Ÿo™o¨t×/?Ñ/?Ð.@ÓAÐàÐ*Ø"&§/¡/Ð2EÓ"FÐä�t—‘Ó'ò 	2ˆAØ-˜DŸN™N¨1Ñ-¨fÓ5ˆMà"Ð.Ø !™e d×&6Ñ&6Ñ6�Ø 3²A°{À[ÐSTÐW[×WgÑWgÑSgÑEgÐ7gÒijÐ4jÑ k‘ä %× 0Ñ 0°Ó ?�ä2°=À-ÐQdÐefÑQgÓhˆDØ—<‘< Ó%ˆDà3˜D×0Ñ0°Ñ3°DÓ9ˆMØ�4—?‘? QÑ&Ò&Ø(ªÐ,>¨d×.>Ñ.>Ð,>ÂÐ)AÑB�Ø  8Ñ+¨|Ñ;�Ø! M²!°T×5EÑ5EÑ5GÊÐ2JÑ$KÑK‘à! MÑ1‘ð%	2ð( ˜Ñ%Ð%r&   c                 óp  — | j                   dk7  r3t        j                  j                  j	                  | j
                  «       | j                  D ]+  }t        j                  j                  j	                  |«       Œ- | j                  D ]+  }t        j                  j                  j	                  |«       Œ- y )Nr   )r¡   r!   r   rŸ   Úremove_weight_normr£   r™   rš   ©r¨   Úlayers     r'   r¹   zVitsWaveNet.remove_weight_normx  s~   € Ø×&Ñ&¨!Ò+Ü�H‰H�N‰N×-Ñ-¨d¯o©oÔ>Ø—^‘^ò 	5ˆEÜ�H‰H�N‰N×-Ñ-¨eÕ4ð	5à×)Ñ)ò 	5ˆEÜ�H‰H�N‰N×-Ñ-¨eÕ4ñ	5r&   r.   )	r   r   r   r   Úintr–   r·   r¹   Ú__classcell__©r­   s   @r'   r‰   r‰   1  s!   ø„ ð'8˜zð '8°sõ '8óR&ö:5r&   r‰   c                   ó,   ‡ — e Zd Zdefˆ fd„Zdd„Zˆ xZS )ÚVitsPosteriorEncoderrŠ   c                 óB  •— t         ‰| �  «        |j                  | _        t	        j
                  |j                  |j                  d«      | _        t        ||j                  ¬«      | _        t	        j
                  |j                  | j                  dz  d«      | _        y )Nr   ©r‹   r[   )r•   r–   Ú	flow_sizer‘   r   r¢   Úspectrogram_binsr—   Úconv_prer‰   Ú$posterior_encoder_num_wavenet_layersÚwavenetÚ	conv_proj©r¨   rŠ   r­   s     €r'   r–   zVitsPosteriorEncoder.__init__‚  su   ø€ Ü‰ÑÔØ"×,Ñ,ˆÔäŸ	™	 &×"9Ñ"9¸6×;MÑ;MÈqÓQˆŒÜ" 6°f×6aÑ6aÔbˆŒÜŸ™ 6×#5Ñ#5°t×7HÑ7HÈ1Ñ7LÈaÓPˆ�r&   c                 ó.  — | j                  |«      |z  }| j                  |||«      }| j                  |«      |z  }t        j                  || j
                  d¬«      \  }}|t        j                  |«      t        j                  |«      z  z   |z  }|||fS )Nr   rW   )rÅ   rÇ   rÈ   r!   Úsplitr‘   Ú
randn_likerK   )r¨   r?   r°   r±   ÚstatsÚmeanÚ
log_stddevÚsampleds           r'   r·   zVitsPosteriorEncoder.forwardŠ  s�   € Ø—‘˜vÓ&¨Ñ5ˆØ—‘˜f lÐ4GÓHˆØ—‘˜vÓ&¨Ñ5ˆÜ Ÿ;™; u¨d×.?Ñ.?ÀQÔGÑˆˆjØœ%×*Ñ*¨4Ó0´5·9±9¸ZÓ3HÑHÑHÈLÑXˆØ˜˜jÐ(Ð(r&   r.   ©r   r   r   r   r–   r·   r½   r¾   s   @r'   rÀ   rÀ   �  s   ø„ ðQ˜zõ Q÷)r&   rÀ   c                   ó:   ‡ — e Zd Zdˆ fd„	Zdd„Zd„ Zd„ Zd„ Zˆ xZS )ÚHifiGanResidualBlockc                 óÜ  •— t         ‰| �  «        || _        t        j                  t        t        |«      «      D �cg c]3  }t        j                  |||d||   | j                  |||   «      ¬«      ‘Œ5 c}«      | _	        t        j                  t        t        |«      «      D �cg c]-  }t        j                  |||dd| j                  |d«      ¬«      ‘Œ/ c}«      | _
        y c c}w c c}w )Nr   )Ústrider“   r”   )r•   r–   Úleaky_relu_sloper   r˜   r¤   Úlenr¢   Úget_paddingÚconvs1Úconvs2)r¨   Úchannelsr’   r“   rÖ   r©   Ú_r­   s          €r'   r–   zHifiGanResidualBlock.__init__•  sà   ø€ Ü‰ÑÔØ 0ˆÔä—m‘mô œs 8›}Ó-ö
ð ô —	‘	ØØØØØ% a™[Ø ×,Ñ,¨[¸(À1¹+ÓFöò
ó
ˆŒô —m‘mô œs 8›}Ó-ö
ð ô —	‘	ØØØØØØ ×,Ñ,¨[¸!Ó<öò
ó
ˆ�ùò
ùò
s   ¼8C$Â%2C)c                 ó   — ||z  |z
  dz  S )Nr[   r%   )r¨   r’   r“   s      r'   rØ   z HifiGanResidualBlock.get_padding´  s   € Ø˜hÑ&¨Ñ1°aÑ7Ð7r&   c                 ó,  — t         j                  j                  }t        t         j                  j                  d«      r$t         j                  j                  j                  }| j
                  D ]
  } ||«       Œ | j                  D ]
  } ||«       Œ y ©Nr�   )r   rŸ   r�   rž   r    rÙ   rÚ   ©r¨   r�   r»   s      r'   Úapply_weight_normz&HifiGanResidualBlock.apply_weight_norm·  sp   € Ü—h‘h×*Ñ*ˆÜ”2—8‘8×,Ñ,¨mÔ<ÜŸ(™(×3Ñ3×?Ñ?ˆKà—[‘[ò 	ˆEÙ˜Õð	à—[‘[ò 	ˆEÙ˜Õñ	r&   c                 óÄ   — | j                   D ]!  }t        j                  j                  |«       Œ# | j                  D ]!  }t        j                  j                  |«       Œ# y r.   )rÙ   r   rŸ   r¹   rÚ   rº   s     r'   r¹   z'HifiGanResidualBlock.remove_weight_normÁ  sL   € Ø—[‘[ò 	/ˆEÜ�H‰H×'Ñ'¨Õ.ð	/à—[‘[ò 	/ˆEÜ�H‰H×'Ñ'¨Õ.ñ	/r&   c                 ó,  — t        | j                  | j                  «      D ]p  \  }}|}t        j                  j                  || j                  «      } ||«      }t        j                  j                  || j                  «      } ||«      }||z   }Œr |S r.   )ÚziprÙ   rÚ   r   rL   Ú
leaky_relurÖ   )r¨   r   Úconv1Úconv2Úresiduals        r'   r·   zHifiGanResidualBlock.forwardÇ  s‡   € Ü §¡¨T¯[©[Ó9ò 	5‰LˆE�5Ø$ˆHÜŸM™M×4Ñ4°]ÀD×DYÑDYÓZˆMÙ! -Ó0ˆMÜŸM™M×4Ñ4°]ÀD×DYÑDYÓZˆMÙ! -Ó0ˆMØ)¨HÑ4‰Mð	5ð Ðr&   )r   )r   r   é   gš™™™™™¹?©r   )	r   r   r   r–   rØ   rá   r¹   r·   r½   r¾   s   @r'   rÓ   rÓ   ”  s   ø„ õ
ó>8òò/ör&   rÓ   c                   óŠ   ‡ — e Zd Zdefˆ fd„Zd„ Zd„ Z	 d
dej                  dej                  dz  dej                  fd	„Z	ˆ xZ
S )ÚVitsHifiGanrŠ   c                 ód  •— t         ‰| �  «        || _        t        |j                  «      | _        t        |j                  «      | _        t        j                  |j                  |j                  ddd¬«      | _        t        j                  «       | _        t        t!        |j                  |j"                  «      «      D ]d  \  }\  }}| j                  j%                  t        j&                  |j                  d|z  z  |j                  d|dz   z  z  ||||z
  dz  ¬«      «       Œf t        j                  «       | _        t+        t        | j                  «      «      D ]p  }|j                  d|dz   z  z  }t!        |j                  |j,                  «      D ]6  \  }}| j(                  j%                  t/        ||||j0                  «      «       Œ8 Œr t        j                  ddddd¬«      | _        |j4                  dk7  r1t        j                  |j4                  |j                  d«      | _        y y )	Né   r   r   )r’   rÕ   r”   r[   F)r’   rÕ   r”   Úbiasr   )r•   r–   rŠ   r×   Úresblock_kernel_sizesÚnum_kernelsÚupsample_ratesÚnum_upsamplesr   r¢   rÃ   Úupsample_initial_channelrÅ   r˜   Ú	upsamplerÚ	enumeraterä   Úupsample_kernel_sizesr§   ÚConvTranspose1dÚ	resblocksr¤   Úresblock_dilation_sizesrÓ   rÖ   Ú	conv_postr¡   Úcond)r¨   rŠ   r©   Úupsample_rater’   rÛ   r“   r­   s          €r'   r–   zVitsHifiGan.__init__Ó  sé  ø€ Ü‰ÑÔØˆŒÜ˜v×;Ñ;Ó<ˆÔÜ  ×!6Ñ!6Ó7ˆÔÜŸ	™	Ø×ÑØ×+Ñ+ØØØô
ˆŒô Ÿ™›ˆŒÜ/8¼¸V×=RÑ=RÐTZ×TpÑTpÓ9qÓ/rò 		Ñ+ˆAÑ+�˜{Ø�N‰N×!Ñ!Ü×"Ñ"Ø×3Ñ3¸¸1¹Ñ=Ø×3Ñ3¸¸aÀ!¹e¹ÑEØ +Ø(Ø(¨=Ñ8¸QÑ>ôõð		ô Ÿ™›ˆŒÜ”s˜4Ÿ>™>Ó*Ó+ò 	vˆAØ×6Ñ6¸1ÀÀQÁ¹<ÑHˆHÜ),¨V×-IÑ-IÈ6×KiÑKiÓ)jò vÑ%�˜XØ—‘×%Ñ%Ô&:¸8À[ÐRZÐ\b×\sÑ\sÓ&tÕuñvð	vô
 Ÿ™ 8¨Q¸AÀaÐQRÐY^Ô_ˆŒà×(Ñ(¨AÒ-ÜŸ	™	 &×"?Ñ"?À×A`ÑA`ÐbcÓdˆD�Ið .r&   c                 ó<  — t         j                  j                  }t        t         j                  j                  d«      r$t         j                  j                  j                  }| j
                  D ]
  } ||«       Œ | j                  D ]  }|j                  «        Œ y rß   )r   rŸ   r�   rž   r    rõ   rù   rá   rà   s      r'   rá   zVitsHifiGan.apply_weight_norm÷  st   € Ü—h‘h×*Ñ*ˆÜ”2—8‘8×,Ñ,¨mÔ<ÜŸ(™(×3Ñ3×?Ñ?ˆKà—^‘^ò 	ˆEÙ˜Õð	à—^‘^ò 	&ˆEØ×#Ñ#Õ%ñ	&r&   c                 ó¦   — | j                   D ]!  }t        j                  j                  |«       Œ# | j                  D ]  }|j                  «        Œ y r.   )rõ   r   rŸ   r¹   rù   rº   s     r'   r¹   zVitsHifiGan.remove_weight_norm  sF   € Ø—^‘^ò 	/ˆEÜ�H‰H×'Ñ'¨Õ.ð	/à—^‘^ò 	'ˆEØ×$Ñ$Õ&ñ	'r&   Nr   r±   Úreturnc                 óŒ  — | j                  |«      }|�|| j                  |«      z   }t        | j                  «      D ]¿  }t        j
                  j                  || j                  j                  «      } | j                  |   |«      } | j                  || j                  z     |«      }t        d| j                  «      D ]*  }| | j                  || j                  z  |z      |«      z  }Œ, || j                  z  }ŒÁ t        j
                  j                  |«      }| j                  |«      }t        j                  |«      }|S )aG  
        Converts a spectrogram into a speech waveform.

        Args:
            spectrogram (`torch.FloatTensor` of shape `(batch_size, config.spectrogram_bins, sequence_length)`):
                Tensor containing the spectrograms.
            global_conditioning (`torch.FloatTensor` of shape `(batch_size, config.speaker_embedding_size, 1)`, *optional*):
                Tensor containing speaker embeddings, for multispeaker models.

        Returns:
            `torch.FloatTensor`: Tensor of shape shape `(batch_size, 1, num_frames)` containing the speech waveform.
        r   )rÅ   rü   r¤   ró   r   rL   rå   rŠ   rÖ   rõ   rù   rñ   rû   r!   r/   )r¨   r   r±   r   r©   Ú	res_stateÚjr   s           r'   r·   zVitsHifiGan.forward  s+  € ð Ÿ™ kÓ2ˆàÐ*Ø)¨D¯I©IÐ6IÓ,JÑJˆMä�t×)Ñ)Ó*ò 	9ˆAÜŸM™M×4Ñ4°]ÀDÇKÁK×D`ÑD`ÓaˆMØ-˜DŸN™N¨1Ñ-¨mÓ<ˆMà<˜Ÿ™ q¨4×+;Ñ+;Ñ';Ñ<¸]ÓKˆIÜ˜1˜d×.Ñ.Ó/ò U�ØÐE˜TŸ^™^¨A°×0@Ñ0@Ñ,@À1Ñ,DÑEÀmÓTÑT‘	ðUà%¨×(8Ñ(8Ñ8‰Mð	9ô Ÿ™×0Ñ0°Ó?ˆØŸ™ }Ó5ˆÜ—:‘:˜mÓ,ˆØˆr&   r.   )r   r   r   r   r–   rá   r¹   r!   r"   r·   r½   r¾   s   @r'   rì   rì   Ò  sX   ø„ ð"e˜zõ "eòH&ò'ð _cñ Ø ×,Ñ,ð ØCH×CTÑCTÐW[ÑC[ð à	×	Ñ	÷ r&   rì   c                   ó,   ‡ — e Zd Zdefˆ fd„Zdd„Zˆ xZS )ÚVitsResidualCouplingLayerrŠ   c                 óB  •— t         ‰| �  «        |j                  dz  | _        t	        j
                  | j                  |j                  d«      | _        t        ||j                  ¬«      | _
        t	        j
                  |j                  | j                  d«      | _        y )Nr[   r   rÂ   )r•   r–   rÃ   Úhalf_channelsr   r¢   r—   rÅ   r‰   Ú prior_encoder_num_wavenet_layersrÇ   rû   rÉ   s     €r'   r–   z"VitsResidualCouplingLayer.__init__+  su   ø€ Ü‰ÑÔØ#×-Ñ-°Ñ2ˆÔäŸ	™	 $×"4Ñ"4°f×6HÑ6HÈ!ÓLˆŒÜ" 6°f×6]Ñ6]Ô^ˆŒÜŸ™ 6×#5Ñ#5°t×7IÑ7IÈ1ÓMˆ�r&   c                 ó  — t        j                  || j                  gdz  d¬«      \  }}| j                  |«      |z  }| j	                  |||«      }| j                  |«      |z  }t        j                  |«      }	|sS||t        j                  |	«      z  |z  z   }t        j                  ||gd¬«      }
t        j                  |	ddg«      }|
|fS ||z
  t        j                  |	 «      z  |z  }t        j                  ||gd¬«      }
|
d fS )Nr[   r   rW   )
r!   rË   r  rÅ   rÇ   rû   rH   rK   Úcatrd   )r¨   r?   r°   r±   rC   Ú
first_halfÚsecond_halfr   rÎ   rÏ   rP   Úlog_determinants               r'   r·   z!VitsResidualCouplingLayer.forward3  s  € Ü"'§+¡+¨f°t×7IÑ7IÐ6JÈQÑ6NÐTUÔ"VÑˆ
�KØŸ™ jÓ1°LÑ@ˆØŸ™ ]°LÐBUÓVˆØ�~‰~˜mÓ,¨|Ñ;ˆÜ×%Ñ% dÓ+ˆ
áØ ¬u¯y©y¸Ó/DÑ!DÀ|Ñ!SÑSˆKÜ—i‘i ¨[Ð 9¸qÔAˆGÜ#Ÿi™i¨
°Q¸°FÓ;ˆOØ˜OÐ+Ð+à&¨Ñ-´·±¸J¸;Ó1GÑGÈ,ÑVˆKÜ—i‘i ¨[Ð 9¸qÔAˆGØ˜D�=Ð r&   ©NFrÑ   r¾   s   @r'   r  r  *  s   ø„ ðN˜zõ N÷!r&   r  c                   ó,   ‡ — e Zd Zdefˆ fd„Zdd„Zˆ xZS )ÚVitsResidualCouplingBlockrŠ   c                 óÐ   •— t         ‰| �  «        t        j                  «       | _        t        |j                  «      D ]&  }| j                  j                  t        |«      «       Œ( y r.   )	r•   r–   r   r˜   Úflowsr¤   Úprior_encoder_num_flowsr§   r  ©r¨   rŠ   rÜ   r­   s      €r'   r–   z"VitsResidualCouplingBlock.__init__F  sO   ø€ Ü‰ÑÔÜ—]‘]“_ˆŒ
Ü�v×5Ñ5Ó6ò 	AˆAØ�J‰J×ÑÔ7¸Ó?Õ@ñ	Ar&   c                 óø   — |s7| j                   D ]&  } ||||«      \  }}t        j                  |dg«      }Œ( |S t        | j                   «      D ](  }t        j                  |dg«      } ||||d¬«      \  }}Œ* |S )Nr   T©rC   )r  r!   ÚflipÚreversed)r¨   r?   r°   r±   rC   ÚflowrÜ   s          r'   r·   z!VitsResidualCouplingBlock.forwardL  s�   € ÙØŸ
™
ò 1�Ù  ¨Ð7JÓK‘	�˜ÜŸ™ F¨Q¨CÓ0‘ð1ð ˆô ! §¡Ó,ò Z�ÜŸ™ F¨Q¨CÓ0�Ù  ¨Ð7JÐTXÔY‘	�™ðZð ˆr&   r  rÑ   r¾   s   @r'   r  r  E  s   ø„ ðA˜zõ A÷	r&   r  c                   ó.   ‡ — e Zd Zddefˆ fd„Zdd„Zˆ xZS )ÚVitsDilatedDepthSeparableConvrŠ   c                 óD  •— t         ‰| �  «        |j                  }|j                  }|j                  | _        t        j                  |«      | _        t        j                  «       | _
        t        j                  «       | _        t        j                  «       | _        t        j                  «       | _        t        | j
                  «      D ]Ò  }||z  }||z  |z
  dz  }| j                  j                  t        j                   ||||||¬«      «       | j                  j                  t        j                   ||d«      «       | j                  j                  t        j"                  |«      «       | j                  j                  t        j"                  |«      «       ŒÔ y )Nr[   )r�   r‘   r’   Úgroupsr“   r”   r   )r•   r–   Úduration_predictor_kernel_sizer—   Údepth_separable_num_layersr‹   r   r›   r�   r˜   Úconvs_dilatedÚconvs_pointwiseÚnorms_1Únorms_2r¤   r§   r¢   Ú	LayerNorm)	r¨   rŠ   Údropout_rater’   rÛ   r©   r“   r”   r­   s	           €r'   r–   z&VitsDilatedDepthSeparableConv.__init__Y  s7  ø€ Ü‰ÑÔØ×;Ñ;ˆØ×%Ñ%ˆØ ×;Ñ;ˆŒä—z‘z ,Ó/ˆŒÜŸ]™]›_ˆÔÜ!Ÿ}™}›ˆÔÜ—}‘}“ˆŒÜ—}‘}“ˆŒÜ�t—‘Ó'ò 	8ˆAØ" A‘~ˆHØ" XÑ-°Ñ8¸QÑ>ˆGØ×Ñ×%Ñ%Ü—	‘	Ø (Ø!)Ø +Ø#Ø%Ø#ôô	ð × Ñ ×'Ñ'¬¯	©	°(¸HÀaÓ(HÔIØ�L‰L×Ñ¤§¡¨XÓ 6Ô7Ø�L‰L×Ñ¤§¡¨XÓ 6Õ7ñ	8r&   c                 ó$  — |�||z   }t        | j                  «      D ]í  } | j                  |   ||z  «      } | j                  |   |j	                  dd«      «      j	                  dd«      }t
        j                  j                  |«      } | j                  |   |«      } | j                  |   |j	                  dd«      «      j	                  dd«      }t
        j                  j                  |«      }| j                  |«      }||z   }Œï ||z  S ©Nr   r=   )r¤   r‹   r   r"  Ú	transposer   rL   Úgelur!  r#  r�   )r¨   r?   r°   r±   r©   r   s         r'   r·   z%VitsDilatedDepthSeparableConv.forwardu  s  € ØÐ*ØÐ1Ñ1ˆFä�t—‘Ó'ò 	,ˆAØ1˜D×.Ñ.¨qÑ1°&¸<Ñ2GÓHˆMØ+˜DŸL™L¨™O¨M×,CÑ,CÀAÀrÓ,JÓK×UÑUÐVWÐY[Ó\ˆMÜŸM™M×.Ñ.¨}Ó=ˆMØ3˜D×0Ñ0°Ñ3°MÓBˆMØ+˜DŸL™L¨™O¨M×,CÑ,CÀAÀrÓ,JÓK×UÑUÐVWÐY[Ó\ˆMÜŸM™M×.Ñ.¨}Ó=ˆMØ ŸL™L¨Ó7ˆMØ˜mÑ+‰Fð	,ð ˜Ñ$Ð$r&   )r>   r.   rÑ   r¾   s   @r'   r  r  X  s   ø„ ñ8˜zõ 8÷8%r&   r  c                   ó,   ‡ — e Zd Zdefˆ fd„Zdd„Zˆ xZS )ÚVitsConvFlowrŠ   c                 ó¶  •— t         ‰| �  «        |j                  | _        |j                  dz  | _        |j                  | _        |j                  | _	        t        j                  | j
                  | j                  d«      | _        t        |«      | _        t        j                  | j                  | j
                  | j                  dz  dz
  z  d«      | _        y )Nr[   r   r   )r•   r–   r—   Úfilter_channelsÚdepth_separable_channelsr  Úduration_predictor_flow_binsrk   Úduration_predictor_tail_boundrD   r   r¢   rÅ   r  Úconv_ddsrÈ   rÉ   s     €r'   r–   zVitsConvFlow.__init__‡  s«   ø€ Ü‰ÑÔØ%×1Ñ1ˆÔØ#×<Ñ<ÀÑAˆÔØ×;Ñ;ˆŒØ ×>Ñ>ˆŒäŸ	™	 $×"4Ñ"4°d×6JÑ6JÈAÓNˆŒÜ5°fÓ=ˆŒÜŸ™ 4×#7Ñ#7¸×9KÑ9KÈtÏ}É}Ð_`ÑO`ÐcdÑOdÑ9eÐghÓiˆ�r&   c                 ó   — t        j                  || j                  gdz  d¬«      \  }}| j                  |«      }| j	                  |||«      }| j                  |«      |z  }|j                  \  }}	}
|j                  ||	d|
«      j                  dddd«      }|dd | j                  …f   t        j                  | j                  «      z  }|d| j                  d| j                  z  …f   t        j                  | j                  «      z  }|dd| j                  z  d …f   }t        |||||| j                  ¬«      \  }}t        j                  ||gd¬«      |z  }|st        j                   ||z  ddg«      }||fS |d fS )	Nr[   r   rW   r=   r   r   .)rC   rD   )r!   rË   r  rÅ   r1  rÈ   r_   ÚreshapeÚpermuterk   Úmathrh   r-  rS   rD   r
  rd   )r¨   r?   r°   r±   rC   r  r  r   Ú
batch_sizerÛ   Úlengthr@   rA   rB   rQ   rP   r  s                    r'   r·   zVitsConvFlow.forward’  s�  € Ü"'§+¡+¨f°t×7IÑ7IÐ6JÈQÑ6NÐTUÔ"VÑˆ
�KàŸ™ jÓ1ˆØŸ™ m°\ÐCVÓWˆØŸ™ }Ó5¸ÑDˆà'1×'7Ñ'7Ñ$ˆ
�H˜fØ%×-Ñ-¨j¸(ÀBÈÓO×WÑWÐXYÐ[\Ð^_ÐabÓcˆà+¨C°°4·=±=°Ð,@ÑAÄDÇIÁIÈd×NbÑNbÓDcÑcÐØ,¨S°$·-±-À!ÀdÇmÁmÑBSÐ2SÐ-SÑTÔW[×W`ÑW`Ðae×auÑauÓWvÑvÐØ#0°°a¸$¿-¹-Ñ6GÑ6IÐ1IÑ#JÐ ä#KØØØ Ø$ØØ—‘ô$
Ñ ˆ�[ô —)‘)˜Z¨Ð5¸1Ô=ÀÑLˆÙÜ#Ÿi™i¨°lÑ(BÀQÈÀFÓKˆOØ˜OÐ+Ð+à˜D�=Ð r&   r  rÑ   r¾   s   @r'   r+  r+  †  s   ø„ ð	j˜zõ 	j÷!r&   r+  c                   ó,   ‡ — e Zd Zdefˆ fd„Zdd„Zˆ xZS )ÚVitsElementwiseAffinerŠ   c                 ó$  •— t         ‰| �  «        |j                  | _        t	        j
                  t        j                  | j                  d«      «      | _        t	        j
                  t        j                  | j                  d«      «      | _	        y ©Nr   )
r•   r–   r.  rÛ   r   Ú	Parameterr!   ÚzerosÚ	translateÚ	log_scalerÉ   s     €r'   r–   zVitsElementwiseAffine.__init__²  sY   ø€ Ü‰ÑÔØ×7Ñ7ˆŒÜŸ™¤e§k¡k°$·-±-ÀÓ&CÓDˆŒÜŸ™¤e§k¡k°$·-±-ÀÓ&CÓDˆ�r&   c                 ó.  — |s]| j                   t        j                  | j                  «      |z  z   }||z  }t        j                  | j                  |z  ddg«      }||fS || j                   z
  t        j                  | j                   «      z  |z  }|d fS ©Nr   r[   )r>  r!   rK   r?  rd   )r¨   r?   r°   r±   rC   rP   r  s          r'   r·   zVitsElementwiseAffine.forward¸  sˆ   € ÙØ—n‘n¤u§y¡y°·±Ó'@À6Ñ'IÑIˆGØ Ñ,ˆGÜ#Ÿi™i¨¯©¸Ñ(EÈÈ1ÀvÓNˆOØ˜OÐ+Ð+à §¡Ñ.´%·)±)¸T¿^¹^¸OÓ2LÑLÈ|Ñ[ˆGØ˜D�=Ð r&   r  rÑ   r¾   s   @r'   r9  r9  ±  s   ø„ ðE˜zõ E÷!r&   r9  c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚVitsStochasticDurationPredictorc                 óÐ  •— t         ‰| �  «        |j                  }|j                  }t	        j
                  ||d«      | _        t	        j
                  ||d«      | _        t        ||j                  ¬«      | _
        |dk7  rt	        j
                  ||d«      | _        t	        j                  «       | _        | j                  j                  t        |«      «       t!        |j"                  «      D ]&  }| j                  j                  t%        |«      «       Œ( t	        j
                  d|d«      | _        t	        j
                  ||d«      | _        t        ||j                  ¬«      | _        t	        j                  «       | _        | j,                  j                  t        |«      «       t!        |j"                  «      D ]&  }| j,                  j                  t%        |«      «       Œ( y )Nr   )r%  r   )r•   r–   r¡   r—   r   r¢   rÅ   rÈ   r  Úduration_predictor_dropoutr1  rü   r˜   r  r§   r9  r¤   Úduration_predictor_num_flowsr+  Úpost_conv_preÚpost_conv_projÚpost_conv_ddsÚ
post_flows)r¨   rŠ   Ú	embed_dimr-  rÜ   r­   s        €r'   r–   z(VitsStochasticDurationPredictor.__init__Ä  st  ø€ Ü‰ÑÔØ×1Ñ1ˆ	Ø ×,Ñ,ˆäŸ	™	 /°?ÀAÓFˆŒÜŸ™ ?°OÀQÓGˆŒÜ5ØØ×:Ñ:ô
ˆŒð
 ˜Š>ÜŸ	™	 )¨_¸aÓ@ˆDŒIä—]‘]“_ˆŒ
Ø�
‰
×ÑÔ/°Ó7Ô8Ü�v×:Ñ:Ó;ò 	4ˆAØ�J‰J×Ñœl¨6Ó2Õ3ð	4ô  ŸY™Y q¨/¸1Ó=ˆÔÜ Ÿi™i¨¸È!ÓLˆÔÜ:ØØ×:Ñ:ô
ˆÔô
 Ÿ-™-›/ˆŒØ�‰×ÑÔ4°VÓ<Ô=Ü�v×:Ñ:Ó;ò 	9ˆAØ�O‰O×"Ñ"¤<°Ó#7Õ8ñ	9r&   c                 óØ  — t        j                  |«      }| j                  |«      }|�)t        j                  |«      }|| j                  |«      z   }| j	                  ||«      }| j                  |«      |z  }|�sž| j                  |«      }| j                  ||«      }| j                  |«      |z  }t        j                  |j                  d«      d|j                  d«      «      j                  |j                  |j                  ¬«      |z  }d}	|}
| j                  D ]/  } ||
|||z   ¬«      \  }
}t        j                  |
dg«      }
|	|z  }	Œ1 t        j                   |
ddgd¬«      \  }}|	t        j"                  t$        j&                  j)                  |«      t$        j&                  j)                  | «      z   |z  ddg«      z  }	t        j"                  dt+        j,                  dt*        j.                  z  «      |dz  z   z  |z  ddg«      |	z
  }|t        j0                  |«      z
  |z  }t        j,                  t        j2                  |d«      «      |z  }t        j"                  | ddg«      }t        j4                  ||gd¬«      }| j6                  D ],  } ||||¬«      \  }}t        j                  |dg«      }||z  }Œ. t        j"                  d	t+        j,                  dt*        j.                  z  «      |dz  z   z  |z  ddg«      |z
  }||z   S t9        t;        | j6                  «      «      }|d d
 |d   gz   }t        j                  |j                  d«      d|j                  d«      «      j                  |j                  |j                  ¬«      |z  }|D ](  }t        j                  |dg«      } ||||d¬«      \  }}Œ* t        j                   |ddgd¬«      \  }}|S )Nr   r[   )ÚdeviceÚdtype)r±   r   rW   ç      à¿gñhãˆµøä>g      à?éþÿÿÿr=   T)r±   rC   )r!   ÚdetachrÅ   rü   r1  rÈ   rG  rI  rH  ÚrandnÚsizeÚtorM  rN  rJ  r  rË   rd   r   rL   Ú
logsigmoidr5  rJ   Úpir0   Ú	clamp_minr
  r  Úlistr  )r¨   r?   r°   r±   Ú	durationsrC   Únoise_scaler   Úrandom_posteriorÚlog_determinant_posterior_sumÚlatents_posteriorr  r  r  r  ÚlogqÚlog_determinant_sumÚlatentsÚnllr  rÜ   Úlog_durations                         r'   r·   z'VitsStochasticDurationPredictor.forwardä  sÏ  € Ü—‘˜fÓ%ˆØ—‘˜vÓ&ˆàÐ*Ü"'§,¡,Ð/BÓ"CÐØ˜dŸi™iÐ(;Ó<Ñ<ˆFà—‘˜v |Ó4ˆØ—‘ Ó'¨,Ñ6ˆâØ ×.Ñ.¨yÓ9ˆMØ ×.Ñ.¨}¸lÓKˆMØ ×/Ñ/°Ó>ÀÑMˆMô —‘˜IŸN™N¨1Ó-¨q°)·.±.ÀÓ2CÓD×GÑGÈvÏ}É}Ðdj×dpÑdpÐGÓqØñð ð -.Ð)Ø 0ÐØŸ™ò A�Ù59Ø% |ÈÐR_ÑI_ô6Ñ2Ð! ?ô %*§J¡JÐ/@À1À#Ó$FÐ!Ø-°Ñ@Ñ-ðAô ',§k¡kÐ2CÀaÈÀVÐQRÔ&SÑ#ˆJ˜à)¬U¯Y©YÜ—‘×)Ñ)¨*Ó5¼¿¹×8PÑ8PÐR\ÐQ\Ó8]Ñ]ÐamÑmÐpqÐstÐouó.ñ Ð)ô —	‘	˜$¤$§(¡(¨1¬t¯w©w©;Ó"7Ð;KÈQÑ;NÑ"OÑPÐS_Ñ_ÐbcÐefÐagÓhØ/ñ0ð ð
 $¤e§m¡m°JÓ&?Ñ?À<ÑOˆJÜŸ™¤5§?¡?°:¸tÓ#DÓEÈÑTˆJÜ"'§)¡)¨Z¨K¸!¸Q¸Ó"@Ðä—i‘i ¨[Ð 9¸qÔAˆGØŸ
™
ò 7�Ù+/°¸Ð[aÔ+bÑ(�˜ÜŸ*™* W¨q¨cÓ2�Ø# Ñ6Ñ#ð7ô
 —)‘)˜C¤4§8¡8¨A´·±©KÓ#8¸GÀQ¹JÑ#GÑHÈ<ÑWÐZ[Ð]^ÐY_Ó`ÐcvÑvˆCØ˜‘:Ðäœ $§*¡*Ó-Ó.ˆEØ˜#˜2�J %¨¡) Ñ,ˆEô —‘˜FŸK™K¨›N¨A¨v¯{©{¸1«~Ó>×AÑAÈÏÉÐ^d×^jÑ^jÐAÓkØñð ð ò c�ÜŸ*™* W¨q¨cÓ2�Ù! '¨<ÈVÐ]aÔb‘
�™ðcô $Ÿk™k¨'°A°q°6¸qÔA‰OˆL˜!ØÐr&   )NNFrV   ©r   r   r   r–   r·   r½   r¾   s   @r'   rC  rC  Ã  s   ø„ ô9÷@@ r&   rC  c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚVitsDurationPredictorc                 ó‚  •— t         ‰| �  «        |j                  }|j                  }t	        j
                  |j                  «      | _        t	        j                  |j                  |||dz  ¬«      | _
        t	        j                  ||j                  ¬«      | _        t	        j                  ||||dz  ¬«      | _        t	        j                  ||j                  ¬«      | _        t	        j                  |dd«      | _        |j"                  dk7  r1t	        j                  |j"                  |j                  d«      | _        y y )Nr[   )r”   ©Úepsr   r   )r•   r–   r  Ú"duration_predictor_filter_channelsr   r›   rE  r�   r¢   r—   Úconv_1r$  Úlayer_norm_epsÚnorm_1Úconv_2Únorm_2Úprojr¡   rü   )r¨   rŠ   r’   r-  r­   s       €r'   r–   zVitsDurationPredictor.__init__(  sò   ø€ Ü‰ÑÔØ×;Ñ;ˆØ ×CÑCˆä—z‘z &×"CÑ"CÓDˆŒÜ—i‘i × 2Ñ 2°OÀ[ÐZeÐijÑZjÔkˆŒÜ—l‘l ?¸×8MÑ8MÔNˆŒÜ—i‘i °À+ÐWbÐfgÑWgÔhˆŒÜ—l‘l ?¸×8MÑ8MÔNˆŒÜ—I‘I˜o¨q°!Ó4ˆŒ	à×(Ñ(¨AÒ-ÜŸ	™	 &×"?Ñ"?À×ASÑASÐUVÓWˆD�Ið .r&   c                 ó`  — t        j                  |«      }|�)t        j                  |«      }|| j                  |«      z   }| j                  ||z  «      }t        j                  |«      }| j                  |j                  dd«      «      j                  dd«      }| j                  |«      }| j                  ||z  «      }t        j                  |«      }| j                  |j                  dd«      «      j                  dd«      }| j                  |«      }| j                  ||z  «      }||z  S r'  )r!   rQ  rü   rj  Úrelurl  r(  r�   rm  rn  ro  )r¨   r?   r°   r±   s       r'   r·   zVitsDurationPredictor.forward7  s  € Ü—‘˜fÓ%ˆàÐ*Ü"'§,¡,Ð/BÓ"CÐØ˜dŸi™iÐ(;Ó<Ñ<ˆFà—‘˜V lÑ2Ó3ˆÜ—‘˜FÓ#ˆØ—‘˜V×-Ñ-¨a°Ó4Ó5×?Ñ?ÀÀ2ÓFˆØ—‘˜fÓ%ˆà—‘˜V lÑ2Ó3ˆÜ—‘˜FÓ#ˆØ—‘˜V×-Ñ-¨a°Ó4Ó5×?Ñ?ÀÀ2ÓFˆØ—‘˜fÓ%ˆà—‘˜6 LÑ0Ó1ˆØ˜Ñ$Ð$r&   r.   rc  r¾   s   @r'   re  re  '  s   ø„ ôX÷%r&   re  c                   ó  ‡ — e Zd ZdZdefˆ fd„Zdej                  dedefd„Z		 	 	 dd	ej                  d
ej                  dz  dej                  dz  de
deej                  ej                  dz  f   f
d„Zd„ Zd„ Zd„ Zˆ xZS )ÚVitsAttentionz?Multi-headed attention with relative positional representation.rŠ   c                 óð  •— t         ‰| �  «        |j                  | _        |j                  | _        |j                  | _        |j                  | _        | j                  | j
                  z  | _	        | j                  dz  | _
        | j                  | j
                  z  | j                  k7  r&t        d| j                  › d| j
                  › d�«      ‚t        j                  | j                  | j                  |j                  ¬«      | _        t        j                  | j                  | j                  |j                  ¬«      | _        t        j                  | j                  | j                  |j                  ¬«      | _        t        j                  | j                  | j                  |j                  ¬«      | _        | j                  r­t        j&                  t)        j*                  d| j                  dz  dz   | j                  «      | j                  z  «      | _        t        j&                  t)        j*                  d| j                  dz  dz   | j                  «      | j                  z  «      | _        y y )NrO  zIhidden_size must be divisible by num_attention_heads (got `hidden_size`: z and `num_attention_heads`: z).)rï   r   r[   )r•   r–   r—   rK  Únum_attention_headsÚ	num_headsÚattention_dropoutr�   Úwindow_sizeÚhead_dimÚscalingr`   r   ÚLinearÚuse_biasÚk_projÚv_projÚq_projÚout_projr<  r!   rR  Ú	emb_rel_kÚ	emb_rel_vrÉ   s     €r'   r–   zVitsAttention.__init__O  sÂ  ø€ Ü‰ÑÔØ×+Ñ+ˆŒØ×3Ñ3ˆŒØ×/Ñ/ˆŒØ!×-Ñ-ˆÔàŸ™¨$¯.©.Ñ8ˆŒØ—}‘} dÑ*ˆŒà�M‰M˜DŸN™NÑ*¨t¯~©~Ò=ÜØ[Ð\`×\jÑ\jÐ[kØ.¨t¯~©~Ð.>¸bðBóð ô
 —i‘i §¡°·±ÀVÇ_Á_ÔUˆŒÜ—i‘i §¡°·±ÀVÇ_Á_ÔUˆŒÜ—i‘i §¡°·±ÀVÇ_Á_ÔUˆŒÜŸ	™	 $§.¡.°$·.±.ÀvÇÁÔWˆŒà×ÒÜŸ\™\¬%¯+©+°a¸×9IÑ9IÈAÑ9MÐPQÑ9QÐSW×S`ÑS`Ó*aÐdh×dpÑdpÑ*pÓqˆDŒNÜŸ\™\¬%¯+©+°a¸×9IÑ9IÈAÑ9MÐPQÑ9QÐSW×S`ÑS`Ó*aÐdh×dpÑdpÑ*pÓqˆD�Nð r&   ÚtensorÚseq_lenÚbszc                 óŽ   — |j                  ||| j                  | j                  «      j                  dd«      j	                  «       S rA  )Úviewrv  ry  r(  Ú
contiguous)r¨   rƒ  r„  r…  s       r'   Ú_shapezVitsAttention._shapeh  s7   € Ø�{‰{˜3 ¨¯©¸¿¹ÓG×QÑQÐRSÐUVÓW×bÑbÓdÐdr&   Nr   Úkey_value_statesÚattention_maskÚoutput_attentionsr   c                 ó  — |j                  «       \  }}}| j                  |«      | j                  z  }| j                  | j	                  |«      d|«      }	| j                  | j                  |«      d|«      }
|| j                  z  d| j                  f} | j                  |||«      j                  |Ž } |	j                  |Ž }	 |
j                  |Ž }
|	j                  d«      }t        j                  ||	j                  dd«      «      }|j                  «       || j                  z  ||fk7  r/t        d|| j                  z  ||f› d|j                  «       › �«      ‚| j                  �X| j                  | j                  |«      }t        j                   ||j                  dd«      «      }| j#                  |«      }||z  }|�{|j                  «       |d||fk7  r#t        d|d||f› d|j                  «       › �«      ‚|j                  || j                  ||«      |z   }|j                  || j                  z  ||«      }t$        j&                  j)                  |d¬	«      }|r?|j                  || j                  ||«      }|j                  || j                  z  ||«      }nd}t$        j&                  j+                  || j*                  | j,                  ¬
«      }t        j                  ||
«      }|j                  «       || j                  z  || j                  fk7  r7t        d|| j                  || j                  f› d|j                  «       › �«      ‚| j                  �H| j                  | j.                  |«      }| j1                  |«      }t        j                   ||«      }||z  }|j                  || j                  || j                  «      }|j                  dd«      }|j3                  ||| j4                  «      }| j7                  |«      }||fS )z#Input shape: Batch x Time x Channelr=   r   r[   z$Attention weights should be of size z	, but is NrP  z!Attention mask should be of size rW   )ÚpÚtrainingz `attn_output` should be of size )rS  r  rz  r‰  r}  r~  rv  ry  r‡  r!   Úbmmr(  r`   rx  Ú_get_relative_embeddingsr�  ÚmatmulÚ'_relative_position_to_absolute_positionr   rL   ra   r�   r�  r‚  Ú'_absolute_position_to_relative_positionr3  rK  r€  )r¨   r   rŠ  r‹  rŒ  r…  Útgt_lenrÜ   Úquery_statesÚ
key_statesÚvalue_statesÚ
proj_shapeÚsrc_lenÚattn_weightsÚkey_relative_embeddingsÚrelative_logitsÚrel_pos_biasÚattn_weights_reshapedÚ
attn_probsÚattn_outputÚvalue_relative_embeddingsÚrelative_weightss                         r'   r·   zVitsAttention.forwardk  sô  € ð (×,Ñ,Ó.‰ˆˆW�að —{‘{ =Ó1°D·L±LÑ@ˆð —[‘[ §¡¨]Ó!;¸RÀÓEˆ
Ø—{‘{ 4§;¡;¨}Ó#=¸rÀ3ÓGˆà˜DŸN™NÑ*¨B°·±Ð>ˆ
ØC�t—{‘{ <°¸#Ó>×CÑCÀZÐPˆØ$�Z—_‘_ jÐ1ˆ
Ø(�|×(Ñ(¨*Ð5ˆà—/‘/ !Ó$ˆÜ—y‘y ¨z×/CÑ/CÀAÀqÓ/IÓJˆà×ÑÓ 3¨¯©Ñ#7¸À'Ð"JÒJÜØ6¸¸d¿n¹nÑ8LÈgÐW^Ð7_Ð6`ð aØ ×%Ñ%Ó'Ð(ð*óð ð
 ×ÑÐ'Ø&*×&CÑ&CÀDÇNÁNÐT[Ó&\Ð#Ü#Ÿl™l¨<Ð9P×9ZÑ9ZÐ[]Ð_aÓ9bÓcˆOØ×GÑGÈÓXˆLØ˜LÑ(ˆLàÐ%Ø×"Ñ"Ó$¨¨a°¸'Ð(BÒBÜ Ø7¸¸aÀÈ'Ð8RÐ7SÐS\Ð]k×]pÑ]pÓ]rÐ\sÐtóð ð (×,Ñ,¨S°$·.±.À'È7ÓSÐVdÑdˆLØ'×,Ñ,¨S°4·>±>Ñ-AÀ7ÈGÓTˆLä—}‘}×,Ñ,¨\¸rÐ,ÓBˆáð
 %1×$5Ñ$5°c¸4¿>¹>È7ÐT[Ó$\Ð!Ø0×5Ñ5°c¸D¿N¹NÑ6JÈGÐU\Ó]‰Là$(Ð!ä—]‘]×*Ñ*¨<¸4¿<¹<ÐRV×R_ÑR_Ð*Ó`ˆ
ä—i‘i 
¨LÓ9ˆà×ÑÓ #¨¯©Ñ"6¸ÀÇÁÐ!OÒOÜØ2°C¸¿¹ÈÐRV×R_ÑR_Ð3`Ð2að bØ×$Ñ$Ó&Ð'ð)óð ð
 ×ÑÐ'Ø(,×(EÑ(EÀdÇnÁnÐV]Ó(^Ð%Ø#×KÑKÈJÓWÐÜ Ÿ<™<Ð(8Ð:SÓTˆLØ˜<Ñ'ˆKà!×&Ñ& s¨D¯N©N¸GÀTÇ]Á]ÓSˆØ!×+Ñ+¨A¨qÓ1ˆð "×)Ñ)¨#¨w¸¿¹ÓGˆà—m‘m KÓ0ˆàÐ1Ð1Ð1r&   c           	      óô   — t        || j                  dz   z
  d«      }|dkD  r&t        j                  j	                  |dd||ddg«      }t        | j                  dz   |z
  d«      }|d|z  z   dz
  }|d d …||…f   S )Nr   r   r[   )r^   rx  r   rL   r:   )r¨   Úrelative_embeddingsr7  Ú
pad_lengthÚslice_start_positionÚslice_end_positions         r'   r‘  z&VitsAttention._get_relative_embeddingsÃ  s–   € Ü˜ 4×#3Ñ#3°aÑ#7Ñ8¸!Ó<ˆ
Ø˜Š>Ü"$§-¡-×"3Ñ"3Ð4GÈ!ÈQÐPZÐ\fÐhiÐklÐImÓ"nÐä" D×$4Ñ$4°qÑ$8¸FÑ#BÀAÓFÐØ1°A¸±JÑ>ÀÑBÐØ"¢1Ð&:Ð;MÐ&MÐ#MÑNÐNr&   c                 óN  — |j                  «       \  }}}t        j                  j                  |g d¢«      }|j	                  ||dz  |z  g«      }t        j                  j                  |d|dz
  ddg«      }|j	                  ||dz   d|z  dz
  g«      }|d d …d |…|dz
  d …f   }|S )N)r   r   r   r   r   r   r[   r   r   ©rS  r   rL   r:   r‡  ©r¨   ÚxÚbatch_headsr7  rÜ   Úx_flatÚx_finals          r'   r“  z5VitsAttention._relative_position_to_absolute_positionÌ  s±   € Ø!"§¡£Ñˆ�V˜Qô �M‰M×Ñ˜aÒ!3Ó4ˆð —‘˜ f¨q¡j°6Ñ&9Ð:Ó;ˆÜ—‘×"Ñ" 6¨A¨v¸©z¸1¸aÐ+@ÓAˆð —+‘+˜{¨F°Q©J¸¸F¹
ÀQ¹ÐGÓHˆØš!˜W˜f˜W f¨q¡j¡lÐ2Ñ3ˆØˆr&   c           	      óF  — |j                  «       \  }}}t        j                  j                  |d|dz
  ddddg«      }|j	                  ||d|z  dz
  z  g«      }t        j                  j                  ||dddg«      }|j	                  ||d|z  g«      d d …d d …dd …f   }|S )Nr   r   r[   rª  r«  s          r'   r”  z5VitsAttention._absolute_position_to_relative_positionÛ  s©   € Ø!"§¡£Ñˆ�V˜Qô �M‰M×Ñ˜a ! V¨a¡Z°°A°q¸!Ð!<Ó=ˆØ—‘˜ f°°F±
¸Q±Ñ&?Ð@ÓAˆô —‘×"Ñ" 6¨F°A°q¸!Ð+<Ó=ˆØ—+‘+˜{¨F°A¸±JÐ?Ó@ÂÂAÀqÁrÀÑJˆØˆr&   )NNF)r   r   r   r    r   r–   r!   ÚTensorr¼   r‰  Úboolr$   r·   r‘  r“  r”  r½   r¾   s   @r'   rs  rs  L  sº   ø„ ÙIðr˜zõ rð2e˜UŸ\™\ð e°Cð e¸có eð 15Ø.2Ø"'ñV2à—|‘|ðV2ð  Ÿ,™,¨Ñ-ðV2ð Ÿ™ tÑ+ð	V2ð
  ðV2ð 
ˆu�|‰|˜UŸ\™\¨DÑ0Ð0Ñ	1óV2òpOòö
r&   rs  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚVitsFeedForwardc                 ód  •— t         ‰| �  «        t        j                  |j                  |j
                  |j                  «      | _        t        j                  |j
                  |j                  |j                  «      | _        t        j                  |j                  «      | _        t        |j                  t        «      rt        |j                     | _        n|j                  | _        |j                  dkD  r/|j                  dz
  dz  }|j                  dz  }||ddddg| _        y d | _        y )Nr   r[   r   )r•   r–   r   r¢   r—   Úffn_dimÚffn_kernel_sizerj  rm  r›   Úactivation_dropoutr�   Ú
isinstanceÚ
hidden_actÚstrr   Úact_fnr”   )r¨   rŠ   Úpad_leftÚ	pad_rightr­   s       €r'   r–   zVitsFeedForward.__init__é  sé   ø€ Ü‰ÑÔÜ—i‘i × 2Ñ 2°F·N±NÀF×DZÑDZÓ[ˆŒÜ—i‘i §¡°×0BÑ0BÀF×DZÑDZÓ[ˆŒÜ—z‘z &×";Ñ";Ó<ˆŒä�f×'Ñ'¬Ô-Ü  ×!2Ñ!2Ñ3ˆD�Kà ×+Ñ+ˆDŒKà×!Ñ! AÒ%Ø×.Ñ.°Ñ2°qÑ8ˆHØ×.Ñ.°!Ñ3ˆIØ$ i°°A°q¸!Ð<ˆD�LàˆD�Lr&   c                 óö  — |j                  ddd«      }|j                  ddd«      }||z  }| j                  �*t        j                  j	                  || j                  «      }| j                  |«      }| j                  |«      }| j                  |«      }||z  }| j                  �*t        j                  j	                  || j                  «      }| j                  |«      }||z  }|j                  ddd«      }|S )Nr   r[   r   )	r4  r”   r   rL   r:   rj  r¼  r�   rm  )r¨   r   r°   s      r'   r·   zVitsFeedForward.forwardû  sâ   € Ø%×-Ñ-¨a°°AÓ6ˆØ#×+Ñ+¨A¨q°!Ó4ˆà%¨Ñ4ˆØ�<‰<Ð#ÜŸM™M×-Ñ-¨m¸T¿\¹\ÓJˆMàŸ™ MÓ2ˆØŸ™ MÓ2ˆØŸ™ ]Ó3ˆà%¨Ñ4ˆØ�<‰<Ð#ÜŸM™M×-Ñ-¨m¸T¿\¹\ÓJˆMàŸ™ MÓ2ˆØ%¨Ñ4ˆà%×-Ñ-¨a°°AÓ6ˆØÐr&   rc  r¾   s   @r'   r´  r´  è  s   ø„ ô ö$r&   r´  c            	       ó„   ‡ — e Zd Zdefˆ fd„Z	 	 d	dej                  dej                  dej                  dz  defd„Z	ˆ xZ
S )
ÚVitsEncoderLayerrŠ   c                 ój  •— t         ‰| �  «        t        |«      | _        t	        j
                  |j                  «      | _        t	        j                  |j                  |j                  ¬«      | _        t        |«      | _        t	        j                  |j                  |j                  ¬«      | _        y )Nrg  )r•   r–   rs  Ú	attentionr   r›   Úhidden_dropoutr�   r$  r—   rk  Ú
layer_normr´  Úfeed_forwardÚfinal_layer_normrÉ   s     €r'   r–   zVitsEncoderLayer.__init__  sz   ø€ Ü‰ÑÔÜ& vÓ.ˆŒÜ—z‘z &×"7Ñ"7Ó8ˆŒÜŸ,™, v×'9Ñ'9¸v×?TÑ?TÔUˆŒÜ+¨FÓ3ˆÔÜ "§¡¨V×-?Ñ-?ÀV×EZÑEZÔ [ˆÕr&   Nr   r°   r‹  rŒ  c                 ó
  — |}| j                  |||¬«      \  }}| j                  |«      }| j                  ||z   «      }|}| j                  ||«      }| j                  |«      }| j	                  ||z   «      }|f}|r||fz  }|S )N)r   r‹  rŒ  )rÃ  r�   rÅ  rÆ  rÇ  )r¨   r   r°   r‹  rŒ  rè   r›  rP   s           r'   r·   zVitsEncoderLayer.forward  s£   € ð !ˆØ&*§n¡nØ'Ø)Ø/ð '5ó '
Ñ#ˆ�|ð Ÿ™ ]Ó3ˆØŸ™¨°=Ñ(@ÓAˆà ˆØ×)Ñ)¨-¸ÓFˆØŸ™ ]Ó3ˆØ×-Ñ-¨h¸Ñ.FÓGˆà Ð"ˆáØ˜�Ñ&ˆGàˆr&   r  )r   r   r   r   r–   r!   r±  r"   r²  r·   r½   r¾   s   @r'   rÁ  rÁ    sW   ø„ ð\˜zõ \ð /3Ø"'ñà—|‘|ðð ×'Ñ'ðð Ÿ™ tÑ+ð	ð
  ÷r&   rÁ  c                   ó¬   ‡ — e Zd Zdefˆ fd„Z	 	 	 	 ddej                  dej                  dej                  dz  dedz  dedz  d	edz  d
e	e
z  fd„Zˆ xZS )ÚVitsEncoderrŠ   c                 óò   •— t         ‰| �  «        || _        t        j                  t        |j                  «      D �cg c]  }t        |«      ‘Œ c}«      | _        d| _	        |j                  | _
        y c c}w r  )r•   r–   rŠ   r   r˜   r¤   Únum_hidden_layersrÁ  ÚlayersÚgradient_checkpointingÚ	layerdropr  s      €r'   r–   zVitsEncoder.__init__:  s\   ø€ Ü‰ÑÔØˆŒÜ—m‘mÄuÈV×MeÑMeÓGfÖ$gÀ!Ô%5°fÕ%=Ò$gÓhˆŒØ&+ˆÔ#Ø×)Ñ)ˆ�ùò %hs   ½A4Nr   r°   r‹  rŒ  Úoutput_hidden_statesÚreturn_dictr   c                 óÜ  — |rdnd }|rdnd }t        | j                  ||¬«      }||z  }t        «       xs t        | «      }	| j                  D ]l  }
|r||fz   }t
        j                  j                  dd«      }| j                  xr || j                  k  }|r|	r |
||||¬«      }|d   }|rd}|sŒd|d   fz   }Œn ||z  }|r||fz   }|st        d„ |||fD «       «      S t        |||¬«      S )	Nr%   )rŠ   Úinputs_embedsr‹  r   r   )r‹  r°   rŒ  )NNc              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wr.   r%   )Ú.0Úvs     r'   ú	<genexpr>z&VitsEncoder.forward.<locals>.<genexpr>u  s   è ø€ Òm˜qÐ_`Ñ_lœÑmùs   ‚Š)r*   r   r   )r   rŠ   r	   r
   rÍ  rI   ÚrandomÚuniformr�  rÏ  r$   r   )r¨   r   r°   r‹  rŒ  rÐ  rÑ  Úall_hidden_statesÚall_self_attentionsÚsynced_gpusÚencoder_layerÚdropout_probabilityÚskip_the_layerÚlayer_outputss                 r'   r·   zVitsEncoder.forwardA  s:  € ñ #7™B¸DÐÙ$5™b¸4Ðä2Ø—;‘;Ø'Ø)ô
ˆð &¨Ñ4ˆä0Ó2ÒRÔ6LÈTÓ6Rˆà!Ÿ[™[ò 	PˆMÙ#Ø$5¸Ð8HÑ$HÐ!ô #%§)¡)×"3Ñ"3°A°qÓ"9Ðà!Ÿ]™]ÒUÐ0CÀdÇnÁnÑ0TˆNÙ!¡[á -Ø!Ø#1Ø!-Ø&7ô	!�ð !.¨aÑ 0�áØ ,�â Ø&9¸]È1Ñ=MÐ<OÑ&OÑ#ð-	Pð0 &¨Ñ4ˆáØ 1°]Ð4DÑ DÐáÜÑm ]Ð4EÐGZÐ$[ÔmÓmÐmäØ+Ø+Ø*ô
ð 	
r&   )NNNN)r   r   r   r   r–   r!   r"   r±  r²  r$   r   r·   r½   r¾   s   @r'   rÊ  rÊ  9  sŒ   ø„ ð*˜zõ *ð /3Ø)-Ø,0Ø#'ñ:
à×(Ñ(ð:
ð ×'Ñ'ð:
ð Ÿ™ tÑ+ð	:
ð
   $™;ð:
ð # T™kð:
ð ˜D‘[ð:
ð 
�Ñ	 ÷:
r&   rÊ  c                   óÊ   ‡ — e Zd ZdZdefˆ fd„Z	 	 	 	 ddej                  dej                  dej                  dz  de	dz  d	e	dz  d
e	dz  de
ej                     ez  fd„Zˆ xZS )ÚVitsTextEncoderzs
    Transformer encoder that uses relative positional representation instead of absolute positional encoding.
    rŠ   c                 ó,  •— t         ‰| �  «        || _        t        j                  |j
                  |j                  |j                  «      | _        t        |«      | _
        t        j                  |j                  |j                  dz  d¬«      | _        y )Nr[   r   )r’   )r•   r–   rŠ   r   Ú	EmbeddingÚ
vocab_sizer—   Úpad_token_idÚembed_tokensrÊ  Úencoderr¢   rÃ   ÚprojectrÉ   s     €r'   r–   zVitsTextEncoder.__init__ƒ  so   ø€ Ü‰ÑÔØˆŒÜŸL™L¨×):Ñ):¸F×<NÑ<NÐPV×PcÑPcÓdˆÔÜ" 6Ó*ˆŒÜ—y‘y ×!3Ñ!3°V×5EÑ5EÈÑ5IÐWXÔYˆ�r&   NÚ	input_idsr°   r‹  rŒ  rÐ  rÑ  r   c                 óø  — | j                  |«      t        j                  | j                  j                  «      z  }| j                  ||||||¬«      }|s|d   n|j                  }	| j                  |	j                  dd«      «      j                  dd«      |z  }
t        j                  |
| j                  j                  d¬«      \  }}|s|	||f|dd  z   }|S t        |	|||j                  |j                  ¬«      S )N)r   r°   r‹  rŒ  rÐ  rÑ  r   r   r[   rW   )r*   r+   r,   r   r   )rç  r5  rh   rŠ   r—   rè  r*   ré  r(  r!   rË   rÃ   r)   r   r   )r¨   rê  r°   r‹  rŒ  rÐ  rÑ  r   Úencoder_outputsr*   rÍ   r+   r,   rP   s                 r'   r·   zVitsTextEncoder.forwardŠ  s  € ð ×)Ñ)¨)Ó4´t·y±yÀÇÁ×AXÑAXÓ7YÑYˆàŸ,™,Ø'Ø%Ø)Ø/Ø!5Ø#ð 'ó 
ˆñ 7B˜O¨AÒ.À×GhÑGhÐà—‘Ð.×8Ñ8¸¸AÓ>Ó?×IÑIÈ!ÈQÓOÐR^Ñ^ˆÜ+0¯;©;°u¸d¿k¹k×>SÑ>SÐYZÔ+[Ñ(ˆÐ(áØ(¨+Ð7JÐKÈoÐ^_Ð^`ÐNaÑaˆGØˆNä$Ø/Ø#Ø 3Ø)×7Ñ7Ø&×1Ñ1ô
ð 	
r&   )NNNT)r   r   r   r    r   r–   r!   r±  r"   r²  r$   r)   r·   r½   r¾   s   @r'   râ  râ  ~  s›   ø„ ñðZ˜zõ Zð /3Ø)-Ø,0Ø#'ñ#
à—<‘<ð#
ð ×'Ñ'ð#
ð Ÿ™ tÑ+ð	#
ð
   $™;ð#
ð # T™kð#
ð ˜D‘[ð#
ð 
ˆu�|‰|Ñ	Ð4Ñ	4÷#
r&   râ  c                   óx   ‡ — e Zd ZU eed<   dZdZdZ ej                  «       de
j                  fˆ fd„«       Zˆ xZS )ÚVitsPreTrainedModelrŠ   Úvitsrê  TÚmodulec                 óh  •— t         ‰| �  |«       t        |t        j                  t        j
                  f«      rŒt        j                  |j                  «       |j                  �`t        j                  |j                  |j                  |j                  d   z  z  «      }t        j                  |j                  | |¬«       yyt        |t         «      r�| j"                  j$                  rv| j"                  j&                  | j"                  j(                  z  }t        j*                  |j,                  |dz  ¬«       t        j*                  |j.                  |dz  ¬«       yyt        |t0        «      r?t        j2                  |j4                  «       t        j2                  |j6                  «       yy)zInitialize the weightsNr   )rƒ   r„   rO  )Ústd)r•   Ú_init_weightsr¹  r   r¢   rø   ÚinitÚkaiming_normal_rŽ   rï   r5  rh   r  r�   r’   Úuniform_rs  rŠ   rx  r—   ru  Únormal_r�  r‚  r9  Úzeros_r>  r?  )r¨   rð  Úkry  r­   s       €r'   ró  z!VitsPreTrainedModel._init_weights·  s2  ø€ ô 	‰Ñ˜fÔ%Ü�fœrŸy™y¬"×*<Ñ*<Ð=Ô>Ü× Ñ  §¡Ô/Ø�{‰{Ð&Ü—I‘I˜fŸm™m¨v×/AÑ/AÀF×DVÑDVÐWXÑDYÑ/YÑZÓ[�Ü—‘˜fŸk™k¨a¨R°1Ö5ð 'ô ˜¤Ô.Ø�{‰{×&Ò&ØŸ;™;×2Ñ2°d·k±k×6UÑ6UÑU�Ü—‘˜V×-Ñ-°8¸T±>ÕBÜ—‘˜V×-Ñ-°8¸T±>ÖBð 'ô ˜Ô 5Ô6Ü�K‰K˜×(Ñ(Ô)Ü�K‰K˜×(Ñ(Õ)ð 7r&   )r   r   r   r   r#   Úbase_model_prefixÚmain_input_nameÚsupports_gradient_checkpointingr!   Úno_gradr   ÚModuleró  r½   r¾   s   @r'   rî  rî  °  s?   ø… àÓØÐØ!€OØ&*Ð#à€U‡]�]ƒ_ð* B§I¡Iô *ó ô*r&   rî  z@
    The complete VITS model, for text-to-speech synthesis.
    c                   óä   ‡ — e Zd Zdefˆ fd„Ze	 	 	 	 	 	 	 	 ddej                  dz  dej                  dz  dedz  de	dz  de	dz  d	e	dz  d
ej                  dz  dedz  dee   ez  fd„«       Zˆ xZS )Ú	VitsModelrŠ   c                 ó  •— t         ‰| �  |«       || _        t        |«      | _        t        |«      | _        t        |«      | _        |j                  rt        |«      | _        nt        |«      | _        |j                  dkD  r/t        j                  |j                  |j                   «      | _        t%        |«      | _        |j(                  | _        |j*                  | _        |j,                  | _        | j/                  «        y r;  )r•   r–   rŠ   râ  Útext_encoderr  r  rì   ÚdecoderÚ"use_stochastic_duration_predictionrC  Úduration_predictorre  Únum_speakersr   rä  r¡   Úembed_speakerrÀ   Úposterior_encoderÚspeaking_raterZ  Únoise_scale_durationÚ	post_initrÉ   s     €r'   r–   zVitsModel.__init__Ð  sÓ   ø€ Ü‰Ñ˜Ô ØˆŒÜ+¨FÓ3ˆÔÜ-¨fÓ5ˆŒ	Ü" 6Ó*ˆŒà×4Ò4Ü&EÀfÓ&MˆDÕ#ä&;¸FÓ&CˆDÔ#à×Ñ Ò"Ü!#§¡¨f×.AÑ.AÀ6×C`ÑC`Ó!aˆDÔô "6°fÓ!=ˆÔð $×1Ñ1ˆÔØ!×-Ñ-ˆÔØ$*×$?Ñ$?ˆÔ!ð 	�‰Õr&   Nrê  r‹  Ú
speaker_idrŒ  rÐ  rÑ  Úlabelsr	  r   c	                 ór  — |�|n| j                   j                  }|�|n| j                   j                  }|�|n| j                   j                  }|�t	        d«      ‚| j
                  j                  j                  j                  }
|�!|j                  d«      j                  |
«      }n3t        j                  |«      j                  d«      j                  |
«      }| j                   j                  dkD  rœ|�šd|cxk  r| j                   j                  k  s(n t        d| j                   j                  dz
  › d�«      ‚t        |t         «      r"t        j"                  d|| j$                  ¬	«      }| j'                  |«      j                  d«      }nd}| j                  ||||||¬
«      }|s|d   n|j(                  }|j+                  dd«      }|j+                  dd«      }|s|d   n|j,                  }|s|d   n|j.                  }| j                   j0                  r!| j3                  |||d| j4                  ¬«      }n| j3                  |||«      }|€| j6                  }d|z  }t        j8                  t        j:                  |«      |z  |z  «      }t        j<                  t        j>                  |ddg«      d«      jA                  «       }t        jB                  |jE                  «       |j                  |j$                  ¬«      }|j                  d«      |j                  d«      k  }|j                  d«      j                  |j                  «      }t        j                  |d«      t        j                  |d«      z  }|jF                  \  }}}}t        jH                  |d«      jK                  ||z  d«      }t        jB                  ||j                  |j$                  ¬«      }|j                  d«      |k  }|j                  |j                  «      jK                  |||«      }|tL        jN                  jQ                  |g d¢«      dd…dd…f   z
  }|j                  d«      j+                  dd«      |z  }t        jR                  |jU                  d«      |«      j+                  dd«      }t        jR                  |jU                  d«      |«      j+                  dd«      }|t        jV                  |«      t        j:                  |«      z  | jX                  z  z   } | j[                  | ||d¬«      }!|!|z  }"| j]                  |"|«      }#|#jU                  d«      }#|t_        j`                  | j                   jb                  «      z  }$|s|#|$|"f|dd z   }%|%S te        |#|$|"|jf                  |jh                  ¬«      S )a  
        speaker_id (`int`, *optional*):
            Which speaker embedding to use. Only used for multispeaker models.
        labels (`torch.FloatTensor` of shape `(batch_size, config.spectrogram_bins, sequence_length)`, *optional*):
            Float values of target spectrogram. Timesteps set to `-100.0` are ignored (masked) for the loss
            computation.
        speaking_rate (`float`, *optional*):
            Speaking rate.

        Example:

        ```python
        >>> from transformers import VitsTokenizer, VitsModel, set_seed
        >>> import torch

        >>> tokenizer = VitsTokenizer.from_pretrained("facebook/mms-tts-eng")
        >>> model = VitsModel.from_pretrained("facebook/mms-tts-eng")

        >>> inputs = tokenizer(text="Hello - my dog is cute", return_tensors="pt")

        >>> set_seed(555)  # make deterministic

        >>> with torch.no_grad():
        ...     outputs = model(inputs["input_ids"])
        >>> outputs.waveform.shape
        torch.Size([1, 45824])
        ```
        Nz&Training of VITS is not supported yet.r=   r   r   z Set `speaker_id` in the range 0-ú.rê   )rS  Ú
fill_valuerM  )rê  r°   r‹  rŒ  rÐ  rÑ  r[   T)rC   rZ  rV   )rN  rM  )r   r   r   r   r   r   r   r  )r   r   r   r   r   )5rŠ   rŒ  rÐ  rÑ  ÚNotImplementedErrorr  rç  rŽ   rN  Ú	unsqueezerT  r!   Ú	ones_liker  r`   r¹  r¼   ÚfullrM  r  r*   r(  r+   r,   r  r  r
  r	  ÚceilrK   rW  rd   ÚlongÚaranger^   r_   rb   r‡  r   rL   r:   r’  ÚsqueezerÌ   rZ  r  r  rI   Úprodrò   r   r   r   )&r¨   rê  r‹  r  rŒ  rÐ  rÑ  r  r	  ÚkwargsÚ
mask_dtypeÚinput_padding_maskÚspeaker_embeddingsÚtext_encoder_outputr   r+   r,   rb  Úlength_scaleÚdurationÚpredicted_lengthsÚindicesÚoutput_padding_maskÚ	attn_maskr6  rÜ   Úoutput_lengthÚinput_lengthÚcum_durationÚvalid_indicesÚpadded_indicesÚattnÚprior_latentsr`  r   r   r   rP   s&                                         r'   r·   zVitsModel.forwardê  sI  € ðR 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆàÐÜ%Ð&NÓOÐOà×&Ñ&×3Ñ3×:Ñ:×@Ñ@ˆ
ØÐ%Ø!/×!9Ñ!9¸"Ó!=×!@Ñ!@ÀÓ!LÑä!&§¡°Ó!;×!EÑ!EÀbÓ!I×!LÑ!LÈZÓ!XÐà�;‰;×#Ñ# aÒ'¨JÐ,BØ˜
Ô= T§[¡[×%=Ñ%=Ô=Ü Ð#CÀDÇKÁK×D\ÑD\Ð_`ÑD`ÐCaÐabÐ!cÓdÐdÜ˜*¤cÔ*Ü"ŸZ™Z¨T¸jÐQU×Q\ÑQ\Ô]�
Ø!%×!3Ñ!3°JÓ!?×!IÑ!IÈ"Ó!MÑà!%Ðà"×/Ñ/ØØ+Ø)Ø/Ø!5Ø#ð 0ó 
Ðñ 7BÐ+¨AÒ.ÐGZ×GlÑGlˆØ%×/Ñ/°°1Ó5ˆØ/×9Ñ9¸!¸QÓ?ÐÙ4?Ð)¨!Ò,ÐEX×EdÑEdˆÙ<GÐ1°!Ò4ÐM`×MtÑMtÐà�;‰;×9Ò9Ø×2Ñ2ØØ"Ø"ØØ ×5Ñ5ð 3ó ‰Lð  ×2Ñ2°=ÐBTÐVhÓiˆLàÐ Ø ×.Ñ.ˆMØ˜]Ñ*ˆÜ—:‘:œeŸi™i¨Ó5Ð8JÑJÈ\ÑYÓZˆÜ!ŸO™O¬E¯I©I°hÀÀAÀÓ,GÈÓK×PÑPÓRÐô —,‘,Ð0×4Ñ4Ó6Ð>O×>UÑ>UÐ^o×^vÑ^vÔwˆØ%×/Ñ/°Ó2Ð5F×5PÑ5PÐQRÓ5SÑSÐØ1×;Ñ;¸AÓ>×AÑAÐBT×BZÑBZÓ[Ðô —O‘OÐ$6¸Ó:¼U¿_¹_ÐM`ÐbdÓ=eÑeˆ	Ø5>·_±_Ñ2ˆ
�A�} lÜ—|‘| H¨bÓ1×6Ñ6°zÀLÑ7PÐRSÓTˆÜ—,‘,˜}°H·N±NÈ8Ï?É?Ô[ˆØ×)Ñ)¨!Ó,¨|Ñ;ˆØ%×(Ñ(¨¯©Ó9×>Ñ>¸zÈ<ÐYfÓgˆØ&¬¯©×):Ñ):¸=ÒJ\Ó)]Ò^_ÐadÐbdÐadÐ^dÑ)eÑeˆØ×'Ñ'¨Ó*×4Ñ4°Q¸Ó:¸YÑFˆô —l‘l 4§<¡<°£?°KÓ@×JÑJÈ1ÈaÓPˆÜ#Ÿl™l¨4¯<©<¸«?Ð<OÓP×ZÑZÐ[\Ð^_Ó`Ðà#¤e×&6Ñ&6°{Ó&CÄeÇiÁiÐPcÓFdÑ&dÐgk×gwÑgwÑ&wÑwˆØ—)‘)˜MÐ+>Ð@RÐ\`�)ÓaˆàÐ 3Ñ3ˆØ—<‘< Ð-?Ó@ˆØ×#Ñ# AÓ&ˆØ,¬r¯w©w°t·{±{×7QÑ7QÓ/RÑRÐáØÐ!1°;Ð?ÐBUÐVWÐVXÐBYÑYˆGØˆNäØØ-Ø#Ø-×;Ñ;Ø*×5Ñ5ô
ð 	
r&   )NNNNNNNN)r   r   r   r   r–   r   r!   r±  r¼   r²  r"   Úfloatr$   r   r   r·   r½   r¾   s   @r'   r   r   Ê  sÚ   ø„ ð˜zõ ð4 ð *.Ø.2Ø!%Ø)-Ø,0Ø#'Ø+/Ø&*ñD
à—<‘< $Ñ&ðD
ð Ÿ™ tÑ+ðD
ð ˜$‘Jð	D
ð
   $™;ðD
ð # T™kðD
ð ˜D‘[ðD
ð ×!Ñ! DÑ(ðD
ð ˜t‘|ðD
ð 
ˆs‰�oÑ	%òD
ó ôD
r&   r   )Fg      @çü©ñÒMbP?r-  r-  )@r    r5  Údataclassesr   Útypingr   ÚnumpyrI   r!   r   Ú r   rô  Úactivationsr   Úintegrations.deepspeedr	   Úintegrations.fsdpr
   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_utilsr   rŸ   r   r   r   Úconfiguration_vitsr   Ú
get_loggerr   Úloggerr   r)   ÚjitÚscriptr8   rS   rM   rþ  r‰   rÀ   rÓ   rì   r  r  r  r+  r9  rC  re  rs  r´  rÁ  rÊ  râ  rî  r   Ú__all__r%   r&   r'   ú<module>r?     sU  ðñ ã Ý !Ý ã Û Ý å &Ý !Ý @Ý 7Ý 6Ý 9ß <Ý -ß DÑ DÝ *ð 
ˆ×	Ñ	˜HÓ	%€ñ ðôð
 ô7�kó 7ó óð7ñ$ ðôð
 ô7˜Kó 7ó óð7ð ‡�×Ññó ðð ØØØØóG òTG%ôTM5�%—(‘(—/‘/ô M5ô`)˜2Ÿ9™9ô )ô&;˜2Ÿ9™9ô ;ô|U�"—)‘)ô Uôp! §	¡	ô !ô6 §	¡	ô ô&+% B§I¡Iô +%ô\(!�2—9‘9ô (!ôV!˜BŸI™Iô !ô$a  b§i¡iô a ôH"%˜BŸI™Iô "%ôJY�B—I‘Iô Yôx'�b—i‘iô 'ôT$Ð1ô $ôNB
�"—)‘)ô B
ôJ/
�b—i‘iô /
ðd ô*˜/ó *ó ð*ñ2 ðôô
`
Ð#ó `
óð
`
ðF Ð-Ð
.�r&   