§
    ŠŠtj—³  ã                   óò  — d dl Z d dlZd dlZd dlmZ d dlZd dlmc mZ	 d dlm
Z
 d dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZmZ d dlmZ g d	¢Z G d
„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z eg ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z!d„ Z" G d„ de¦  «        Z# G d„ de¦  «        Z$ G d„ de¦  «        Z% G d„ d e¦  «        Z& G d!„ d"e¦  «        Z' G d#„ d$e¦  «        Z( G d%„ d&e¦  «        Z) G d'„ d(e¦  «        Z* G d)„ d*e¦  «        Z+ G d+„ d,e¦  «        Z, G d-„ d.e¦  «        Z- G d/„ d0e¦  «        Z. G d1„ d2e¦  «        Z/dS )3é    N)ÚSequence)ÚTensor)Úconstraints)ÚDistribution)Ú_sum_rightmostÚbroadcast_allÚlazy_propertyÚtril_matrix_to_vecÚvec_to_tril_matrix)ÚpadÚsoftplus)Ú_Number)ÚAbsTransformÚAffineTransformÚCatTransformÚComposeTransformÚCorrCholeskyTransformÚCumulativeDistributionTransformÚExpTransformÚIndependentTransformÚLowerCholeskyTransformÚPositiveDefiniteTransformÚPowerTransformÚReshapeTransformÚSigmoidTransformÚSoftplusTransformÚTanhTransformÚSoftmaxTransformÚStackTransformÚStickBreakingTransformÚ	TransformÚidentity_transformc                   óö   ‡ — e Zd ZU dZdZej        ed<   ej        ed<   ddeddfˆ fd	„Z	d
„ Z
edefd„¦   «         Zedd„¦   «         Zedefd„¦   «         Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r!   aï  
    Abstract class for invertible transformations with computable log
    det jacobians. They are primarily used in
    :class:`torch.distributions.TransformedDistribution`.

    Caching is useful for transforms whose inverses are either expensive or
    numerically unstable. Note that care must be taken with memoized values
    since the autograd graph may be reversed. For example while the following
    works with or without caching::

        y = t(x)
        t.log_abs_det_jacobian(x, y).backward()  # x will receive gradients.

    However the following will error when caching due to dependency reversal::

        y = t(x)
        z = t.inv(y)
        grad(z.sum(), [y])  # error because z is x

    Derived classes should implement one or both of :meth:`_call` or
    :meth:`_inverse`. Derived classes that set `bijective=True` should also
    implement :meth:`log_abs_det_jacobian`.

    Args:
        cache_size (int): Size of cache. If zero, no caching is done. If one,
            the latest single value is cached. Only 0 and 1 are supported.

    Attributes:
        domain (:class:`~torch.distributions.constraints.Constraint`):
            The constraint representing valid inputs to this transform.
        codomain (:class:`~torch.distributions.constraints.Constraint`):
            The constraint representing valid outputs to this transform
            which are inputs to the inverse transform.
        bijective (bool): Whether this transform is bijective. A transform
            ``t`` is bijective iff ``t.inv(t(x)) == x`` and
            ``t(t.inv(y)) == y`` for every ``x`` in the domain and ``y`` in
            the codomain. Transforms that are not bijective should at least
            maintain the weaker pseudoinverse properties
            ``t(t.inv(t(x)) == t(x)`` and ``t.inv(t(t.inv(y))) == t.inv(y)``.
        sign (int or Tensor): For bijective univariate transforms, this
            should be +1 or -1 depending on whether transform is monotone
            increasing or decreasing.
    FÚdomainÚcodomainr   Ú
cache_sizeÚreturnNc                 ó¬   •— || _         d | _        |dk    rn|dk    rd| _        nt          d¦  «        ‚t	          ¦   «                              ¦   «          d S )Nr   é   )NNzcache_size must be 0 or 1)Ú_cache_sizeÚ_invÚ_cached_x_yÚ
ValueErrorÚsuperÚ__init__)Úselfr&   Ú	__class__s     €ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributions/transforms.pyr/   zTransform.__init__`   s]   ø€ Ø%ˆÔØ&*ˆŒ	Ø˜Š?ˆ?ØØ˜1Š_ˆ_Ø)ˆDÔÐåÐ8Ñ9Ô9Ð9Ý‰Œ×ÒÑÔÐÐÐó    c                 óB   — | j                              ¦   «         }d |d<   |S )Nr+   )Ú__dict__Úcopy)r0   Ústates     r2   Ú__getstate__zTransform.__getstate__k   s#   € Ø”×"Ò"Ñ$Ô$ˆØˆˆf‰Øˆr3   c                 ól   — | j         j        | j        j        k    r| j         j        S t          d¦  «        ‚)Nz:Please use either .domain.event_dim or .codomain.event_dim)r$   Ú	event_dimr%   r-   ©r0   s    r2   r:   zTransform.event_dimp   s1   € àŒ;Ô  D¤MÔ$;Ò;Ð;Ø”;Ô(Ð(ÝÐUÑVÔVÐVr3   c                 óD   — | j         }|€t          | ¦  «        }|| _         |S )z{
        Returns the inverse :class:`Transform` of this transform.
        This should satisfy ``t.inv.inv is t``.
        )r+   Ú_InverseTransform©r0   Úinvs     r2   r?   zTransform.invv   s)   € ð ŒiˆØˆ;Ý# DÑ)Ô)ˆCØˆDŒIØˆ
r3   c                 ó   — t           ‚)z˜
        Returns the sign of the determinant of the Jacobian, if applicable.
        In general this only makes sense for bijective transforms.
        ©ÚNotImplementedErrorr;   s    r2   ÚsignzTransform.sign‚   s
   € õ "Ð!r3   r)   c                 óÌ   — | j         |k    r| S t          | ¦  «        j        t          j        u r t          | ¦  «        |¬¦  «        S t	          t          | ¦  «        › d�¦  «        ‚)N©r&   z.with_cache is not implemented)r*   Útyper/   r!   rB   ©r0   r&   s     r2   Ú
with_cachezTransform.with_cacheŠ   sb   € ØÔ˜zÒ)Ð)ØˆKÝ�‰:Œ:Ô¥)Ô"4Ð4Ð4Ø•4˜‘:”:¨Ð4Ñ4Ô4Ð4Ý!¥T¨$¡Z¤ZÐ"OÐ"OÐ"OÑPÔPÐPr3   c                 ó
   — | |u S ©N© ©r0   Úothers     r2   Ú__eq__zTransform.__eq__‘   s   € Ø�uˆ}Ðr3   c                 ó.   — |                       |¦  «         S rJ   )rN   rL   s     r2   Ú__ne__zTransform.__ne__”   s   € à—;’;˜uÑ%Ô%Ð%Ð%r3   c                 ó¢   — | j         dk    r|                      |¦  «        S | j        \  }}||u r|S |                      |¦  «        }||f| _        |S )z2
        Computes the transform `x => y`.
        r   )r*   Ú_callr,   )r0   ÚxÚx_oldÚy_oldÚys        r2   Ú__call__zTransform.__call__˜   s\   € ð Ô˜qÒ Ð Ø—:’:˜a‘=”=Ð ØÔ'‰ˆˆuØ�ˆ:ˆ:ØˆLØ�JŠJ�q‰MŒMˆØ˜a˜4ˆÔØˆr3   c                 ó¢   — | j         dk    r|                      |¦  «        S | j        \  }}||u r|S |                      |¦  «        }||f| _        |S )z1
        Inverts the transform `y => x`.
        r   )r*   Ú_inverser,   )r0   rV   rT   rU   rS   s        r2   Ú	_inv_callzTransform._inv_call¥   s`   € ð Ô˜qÒ Ð Ø—=’= Ñ#Ô#Ð#ØÔ'‰ˆˆuØ�ˆ:ˆ:ØˆLØ�MŠM˜!ÑÔˆØ˜a˜4ˆÔØˆr3   c                 ó   — t           ‚)zD
        Abstract method to compute forward transformation.
        rA   ©r0   rS   s     r2   rR   zTransform._call²   ó
   € õ "Ð!r3   c                 ó   — t           ‚)zD
        Abstract method to compute inverse transformation.
        rA   ©r0   rV   s     r2   rY   zTransform._inverse¸   r]   r3   c                 ó   — t           ‚)zU
        Computes the log det jacobian `log |dy/dx|` given input and output.
        rA   ©r0   rS   rV   s      r2   Úlog_abs_det_jacobianzTransform.log_abs_det_jacobian¾   r]   r3   c                 ó    — | j         j        dz   S )Nz())r1   Ú__name__r;   s    r2   Ú__repr__zTransform.__repr__Ä   s   € ØŒ~Ô&¨Ñ-Ð-r3   c                 ó   — |S )z{
        Infers the shape of the forward computation, given the input shape.
        Defaults to preserving shape.
        rK   ©r0   Úshapes     r2   Úforward_shapezTransform.forward_shapeÇ   ó	   € ð
 ˆr3   c                 ó   — |S )z}
        Infers the shapes of the inverse computation, given the output shape.
        Defaults to preserving shape.
        rK   rg   s     r2   Úinverse_shapezTransform.inverse_shapeÎ   rj   r3   ©r   )r'   r!   ©r)   )rd   Ú
__module__Ú__qualname__Ú__doc__Ú	bijectiver   Ú
ConstraintÚ__annotations__Úintr/   r8   Úpropertyr:   r?   rC   rH   rN   rP   rW   rZ   rR   rY   rb   re   ri   rl   Ú__classcell__©r1   s   @r2   r!   r!   /   s²  ø€ € € € € € ð*ð *ðX €IØÔ"Ð"Ð"Ñ"ØÔ$Ð$Ð$Ñ$ð	ð 	 3ð 	¨tð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð
 ðW˜3ð Wð Wð Wñ „XðWð
 ð	ð 	ð 	ñ „Xð	ð ð"�cð "ð "ð "ñ „Xð"ðQð Qð Qð Qðð ð ð&ð &ð &ðð ð ðð ð ð"ð "ð "ð"ð "ð "ð"ð "ð "ð.ð .ð .ðð ð ðð ð ð ð ð ð r3   r!   c                   ó  ‡ — e Zd ZdZdeddfˆ fd„Z ej        d¬¦  «        d„ ¦   «         Z ej        d¬¦  «        d	„ ¦   «         Z	e
defd
„¦   «         Ze
defd„¦   «         Ze
defd„¦   «         Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r=   z|
    Inverts a single :class:`Transform`.
    This class is private; please instead use the ``Transform.inv`` property.
    Ú	transformr'   Nc                 ód   •— t          ¦   «                              |j        ¬¦  «         || _        d S ©NrE   )r.   r/   r*   r+   )r0   rz   r1   s     €r2   r/   z_InverseTransform.__init__Ü   s,   ø€ Ý‰Œ×Ò IÔ$9ÐÑ:Ô:Ð:Ø&/ˆŒ	ˆ	ˆ	r3   F©Úis_discretec                 óF   — | j         €t          d¦  «        ‚| j         j        S ©Nú_inv must not be None)r+   ÚAssertionErrorr%   r;   s    r2   r$   z_InverseTransform.domainà   s&   € ð Œ9ÐÝ Ð!8Ñ9Ô9Ð9ØŒyÔ!Ð!r3   c                 óF   — | j         €t          d¦  «        ‚| j         j        S r€   )r+   r‚   r$   r;   s    r2   r%   z_InverseTransform.codomainç   s&   € ð Œ9ÐÝ Ð!8Ñ9Ô9Ð9ØŒyÔÐr3   c                 óF   — | j         €t          d¦  «        ‚| j         j        S r€   )r+   r‚   rr   r;   s    r2   rr   z_InverseTransform.bijectiveî   s$   € àŒ9ÐÝ Ð!8Ñ9Ô9Ð9ØŒyÔ"Ð"r3   c                 óF   — | j         €t          d¦  «        ‚| j         j        S r€   )r+   r‚   rC   r;   s    r2   rC   z_InverseTransform.signô   s#   € àŒ9ÐÝ Ð!8Ñ9Ô9Ð9ØŒyŒ~Ðr3   c                 ó   — | j         S rJ   )r+   r;   s    r2   r?   z_InverseTransform.invú   s
   € àŒyÐr3   r)   c                 ól   — | j         €t          d¦  «        ‚| j                             |¦  «        j        S r€   )r+   r‚   r?   rH   rG   s     r2   rH   z_InverseTransform.with_cacheþ   s2   € ØŒ9ÐÝ Ð!8Ñ9Ô9Ð9ØŒx×"Ò" :Ñ.Ô.Ô2Ð2r3   c                 ó|   — t          |t          ¦  «        sdS | j        €t          d¦  «        ‚| j        |j        k    S )NFr�   )Ú
isinstancer=   r+   r‚   rL   s     r2   rN   z_InverseTransform.__eq__  s@   € Ý˜%Õ!2Ñ3Ô3ð 	Ø�5ØŒ9ÐÝ Ð!8Ñ9Ô9Ð9ØŒy˜EœJÒ&Ð&r3   c                 óJ   — | j         j        › dt          | j        ¦  «        › d�S )Nú(ú))r1   rd   Úreprr+   r;   s    r2   re   z_InverseTransform.__repr__
  s&   € Ø”.Ô)Ð>Ð>­D°´©O¬OÐ>Ð>Ð>Ð>r3   c                 ób   — | j         €t          d¦  «        ‚| j                              |¦  «        S r€   )r+   r‚   rZ   r\   s     r2   rW   z_InverseTransform.__call__  s/   € ØŒ9ÐÝ Ð!8Ñ9Ô9Ð9ØŒy×"Ò" 1Ñ%Ô%Ð%r3   c                 óf   — | j         €t          d¦  «        ‚| j                              ||¦  «         S r€   )r+   r‚   rb   ra   s      r2   rb   z&_InverseTransform.log_abs_det_jacobian  s4   € ØŒ9ÐÝ Ð!8Ñ9Ô9Ð9Ø”	×.Ò.¨q°!Ñ4Ô4Ð4Ð4r3   c                 ó6   — | j                              |¦  «        S rJ   )r+   rl   rg   s     r2   ri   z_InverseTransform.forward_shape  ó   € ØŒy×&Ò& uÑ-Ô-Ð-r3   c                 ó6   — | j                              |¦  «        S rJ   )r+   ri   rg   s     r2   rl   z_InverseTransform.inverse_shape  r‘   r3   rn   )rd   ro   rp   rq   r!   r/   r   Údependent_propertyr$   r%   rv   Úboolrr   ru   rC   r?   rH   rN   re   rW   rb   ri   rl   rw   rx   s   @r2   r=   r=   Ö   s�  ø€ € € € € ðð ð
0 )ð 0°ð 0ð 0ð 0ð 0ð 0ð 0ð $€[Ô#°Ð6Ñ6Ô6ð"ð "ñ 7Ô6ð"ð
 $€[Ô#°Ð6Ñ6Ô6ð ð  ñ 7Ô6ð ð
 ð#˜4ð #ð #ð #ñ „Xð#ð
 ð�cð ð ð ñ „Xðð
 ð�Yð ð ð ñ „Xðð3ð 3ð 3ð 3ð
'ð 'ð 'ð?ð ?ð ?ð&ð &ð &ð
5ð 5ð 5ð
.ð .ð .ð.ð .ð .ð .ð .ð .ð .r3   r=   c                   ó&  ‡ — e Zd ZdZddee         deddfˆ fd„Zd„ Z e	j
        d	¬
¦  «        d„ ¦   «         Z e	j
        d	¬
¦  «        d„ ¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r   ab  
    Composes multiple transforms in a chain.
    The transforms being composed are responsible for caching.

    Args:
        parts (list of :class:`Transform`): A list of transforms to compose.
        cache_size (int): Size of cache. If zero, no caching is done. If one,
            the latest single value is cached. Only 0 and 1 are supported.
    r   Úpartsr&   r'   Nc                 ó|   •‡— ‰rˆfd„|D ¦   «         }t          ¦   «                              ‰¬¦  «         || _        d S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rK   ©rH   )Ú.0Úpartr&   s     €r2   ú
<listcomp>z-ComposeTransform.__init__.<locals>.<listcomp>+  s%   ø€ ÐCÐCÐC°T�T—_’_ ZÑ0Ô0ÐCÐCÐCr3   rE   )r.   r/   r–   )r0   r–   r&   r1   s     `€r2   r/   zComposeTransform.__init__)  sL   øø€ Øð 	DØCÐCÐCÐC¸UÐCÑCÔCˆEÝ‰Œ×Ò JÐÑ/Ô/Ð/ØˆŒ
ˆ
ˆ
r3   c                 óP   — t          |t          ¦  «        sdS | j        |j        k    S ©NF)r‰   r   r–   rL   s     r2   rN   zComposeTransform.__eq__/  s)   € Ý˜%Õ!1Ñ2Ô2ð 	Ø�5ØŒz˜Uœ[Ò(Ð(r3   Fr}   c                 ó²  — | j         st          j        S | j         d         j        }| j         d         j        j        }t          | j         ¦  «        D ]8}||j        j        |j        j        z
  z  }t          ||j        j        ¦  «        }Œ9||j        k     rt          d|› d|j        › �¦  «        ‚||j        k    rt          j	        |||j        z
  ¦  «        }|S )Nr   éÿÿÿÿú
event_dim z must be >= domain.event_dim )
r–   r   Úrealr$   r%   r:   ÚreversedÚmaxr‚   Úindependent)r0   r$   r:   r›   s       r2   r$   zComposeTransform.domain4  sã   € ð Œzð 	$ÝÔ#Ð#Ø”˜A”Ô%ˆà”J˜r”NÔ+Ô5ˆ	Ý˜TœZÑ(Ô(ð 	>ð 	>ˆDØ˜œÔ.°´Ô1HÑHÑHˆIÝ˜I t¤{Ô'<Ñ=Ô=ˆIˆIØ�vÔ'Ò'Ð'Ý ØW˜YÐWÐWÀVÔEUÐWÐWñô ð ð �vÔ'Ò'Ð'Ý Ô,¨V°YÀÔAQÑ5QÑRÔRˆFØˆr3   c                 ó˜  — | j         st          j        S | j         d         j        }| j         d         j        j        }| j         D ]8}||j        j        |j        j        z
  z  }t          ||j        j        ¦  «        }Œ9||j        k     rt          d|› d|j        › �¦  «        ‚||j        k    rt          j        |||j        z
  ¦  «        }|S )Nr    r   r¡   z must be >= codomain.event_dim )	r–   r   r¢   r%   r$   r:   r¤   r‚   r¥   )r0   r%   r:   r›   s       r2   r%   zComposeTransform.codomainG  sÝ   € ð Œzð 	$ÝÔ#Ð#Ø”:˜b”>Ô*ˆà”J˜q”MÔ(Ô2ˆ	Ø”Jð 	@ð 	@ˆDØ˜œÔ0°4´;Ô3HÑHÑHˆIÝ˜I t¤}Ô'>Ñ?Ô?ˆIˆIØ�xÔ)Ò)Ð)Ý Ø[˜YÐ[Ð[ÀxÔGYÐ[Ð[ñô ð ð �xÔ)Ò)Ð)Ý"Ô.¨x¸ÀXÔEWÑ9WÑXÔXˆHØˆr3   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rJ   ©rr   ©rš   Úps     r2   ú	<genexpr>z-ComposeTransform.bijective.<locals>.<genexpr>\  s$   è è € Ð3Ð3 1�1”;Ð3Ð3Ð3Ð3Ð3Ð3r3   )Úallr–   r;   s    r2   rr   zComposeTransform.bijectiveZ  s!   € åÐ3Ð3¨¬
Ð3Ñ3Ô3Ñ3Ô3Ð3r3   c                 ó2   — d}| j         D ]}||j        z  }Œ|S ©Nr)   )r–   rC   )r0   rC   r«   s      r2   rC   zComposeTransform.sign^  s*   € àˆØ”ð 	!ð 	!ˆAØ˜!œ&‘=ˆDˆDØˆr3   c                 óŠ   — | j         }|€9t          d„ t          | j        ¦  «        D ¦   «         ¦  «        }|| _         | |_         |S )Nc                 ó   — g | ]	}|j         ‘Œ
S rK   )r?   rª   s     r2   rœ   z(ComposeTransform.inv.<locals>.<listcomp>i  s   € Ð#HÐ#HÐ#H¨a A¤EÐ#HÐ#HÐ#Hr3   )r+   r   r£   r–   r>   s     r2   r?   zComposeTransform.inve  sG   € àŒiˆØˆ;Ý"Ð#HÐ#Hµ8¸D¼JÑ3GÔ3GÐ#HÑ#HÔ#HÑIÔIˆCØˆDŒIØˆCŒHØˆ
r3   r)   c                 óH   — | j         |k    r| S t          | j        |¬¦  «        S r|   )r*   r   r–   rG   s     r2   rH   zComposeTransform.with_cachen  s*   € ØÔ˜zÒ)Ð)ØˆKÝ ¤
°zÐBÑBÔBÐBr3   c                 ó0   — | j         D ]} ||¦  «        }Œ|S rJ   )r–   )r0   rS   r›   s      r2   rW   zComposeTransform.__call__s  s'   € Ø”Jð 	ð 	ˆDØ��Q‘”ˆAˆAØˆr3   c           	      óH  — | j         st          j        |¦  «        S |g}| j         d d…         D ]&}|                      ||d         ¦  «        ¦  «         Œ'|                     |¦  «         g }| j        j        }t          | j         |d d…         |dd …         ¦  «        D ]f\  }}}|                     t          |                     ||¦  «        ||j        j        z
  ¦  «        ¦  «         ||j	        j        |j        j        z
  z  }Œgt          j        t          j        |¦  «        S )Nr    r)   )r–   ÚtorchÚ
zeros_likeÚappendr$   r:   Úzipr   rb   r%   Ú	functoolsÚreduceÚoperatorÚadd)r0   rS   rV   Úxsr›   Útermsr:   s          r2   rb   z%ComposeTransform.log_abs_det_jacobianx  s'  € ØŒzð 	'ÝÔ# AÑ&Ô&Ð&ð ˆSˆØ”J˜s ˜s”Oð 	$ð 	$ˆDØ�IŠI�d�d˜2˜bœ6‘l”lÑ#Ô#Ð#Ð#Ø
�	Š	�!‰ŒˆàˆØ”KÔ)ˆ	Ý˜dœj¨"¨S¨b¨S¬'°2°a°b°b´6Ñ:Ô:ð 	Ið 	I‰JˆD�!�QØ�LŠLÝØ×-Ò-¨a°Ñ3Ô3°YÀÄÔAVÑ5Vñô ñô ð ð
 ˜œÔ0°4´;Ô3HÑHÑHˆIˆIÝÔ¥¤¨eÑ4Ô4Ð4r3   c                 óD   — | j         D ]}|                     |¦  «        }Œ|S rJ   )r–   ri   ©r0   rh   r›   s      r2   ri   zComposeTransform.forward_shape�  s-   € Ø”Jð 	.ð 	.ˆDØ×&Ò& uÑ-Ô-ˆEˆEØˆr3   c                 ó^   — t          | j        ¦  «        D ]}|                     |¦  «        }Œ|S rJ   )r£   r–   rl   rÀ   s      r2   rl   zComposeTransform.inverse_shape’  s5   € Ý˜TœZÑ(Ô(ð 	.ð 	.ˆDØ×&Ò& uÑ-Ô-ˆEˆEØˆr3   c                 ó|   — | j         j        dz   }|d                     d„ | j        D ¦   «         ¦  «        z  }|dz  }|S )Nz(
    z,
    c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rK   )re   rª   s     r2   rœ   z-ComposeTransform.__repr__.<locals>.<listcomp>™  s    € Ð%GÐ%GÐ%G°q a§j¢j¡l¤lÐ%GÐ%GÐ%Gr3   z
))r1   rd   Újoinr–   )r0   Ú
fmt_strings     r2   re   zComposeTransform.__repr__—  sH   € Ø”^Ô,¨yÑ8ˆ
Ø�i—n’nÐ%GÐ%G¸D¼JÐ%GÑ%GÔ%GÑHÔHÑHˆ
Ø�eÑˆ
ØÐr3   rm   rn   )rd   ro   rp   rq   Úlistr!   ru   r/   rN   r   r“   r$   r%   r	   r”   rr   rC   rv   r?   rH   rW   rb   ri   rl   re   rw   rx   s   @r2   r   r     s¤  ø€ € € € € ðð ðð ˜d 9œoð ¸3ð Àtð ð ð ð ð ð ð)ð )ð )ð
 $€[Ô#°Ð6Ñ6Ô6ðð ñ 7Ô6ðð" $€[Ô#°Ð6Ñ6Ô6ðð ñ 7Ô6ðð" ð4˜4ð 4ð 4ð 4ñ „]ð4ð ð�cð ð ð ñ „]ðð ð�Yð ð ð ñ „XððCð Cð Cð Cð
ð ð ð
5ð 5ð 5ð*ð ð ð
ð ð ð
ð ð ð ð ð ð r3   r   c            	       ó  ‡ — e Zd ZdZ	 ddedededdfˆ fd„Zdd
„Z ej	        d¬¦  «        d„ ¦   «         Z
 ej	        d¬¦  «        d„ ¦   «         Zedefd„¦   «         Zedefd„¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r   a  
    Wrapper around another transform to treat
    ``reinterpreted_batch_ndims``-many extra of the right most dimensions as
    dependent. This has no effect on the forward or backward transforms, but
    does sum out ``reinterpreted_batch_ndims``-many of the rightmost dimensions
    in :meth:`log_abs_det_jacobian`.

    Args:
        base_transform (:class:`Transform`): A base transform.
        reinterpreted_batch_ndims (int): The number of extra rightmost
            dimensions to treat as dependent.
    r   Úbase_transformÚreinterpreted_batch_ndimsr&   r'   Nc                 óŽ   •— t          ¦   «                              |¬¦  «         |                     |¦  «        | _        || _        d S r|   )r.   r/   rH   rÈ   rÉ   )r0   rÈ   rÉ   r&   r1   s       €r2   r/   zIndependentTransform.__init__¯  sD   ø€ õ 	‰Œ×Ò JÐÑ/Ô/Ð/Ø,×7Ò7¸
ÑCÔCˆÔØ)BˆÔ&Ð&Ð&r3   r)   c                 óT   — | j         |k    r| S t          | j        | j        |¬¦  «        S r|   )r*   r   rÈ   rÉ   rG   s     r2   rH   zIndependentTransform.with_cache¹  s9   € ØÔ˜zÒ)Ð)ØˆKÝ#ØÔ Ô!?ÈJð
ñ 
ô 
ð 	
r3   Fr}   c                 óJ   — t          j        | j        j        | j        ¦  «        S rJ   )r   r¥   rÈ   r$   rÉ   r;   s    r2   r$   zIndependentTransform.domainÀ  s'   € õ Ô&ØÔÔ&¨Ô(Fñ
ô 
ð 	
r3   c                 óJ   — t          j        | j        j        | j        ¦  «        S rJ   )r   r¥   rÈ   r%   rÉ   r;   s    r2   r%   zIndependentTransform.codomainÇ  s'   € õ Ô&ØÔÔ(¨$Ô*Hñ
ô 
ð 	
r3   c                 ó   — | j         j        S rJ   )rÈ   rr   r;   s    r2   rr   zIndependentTransform.bijectiveÎ  s   € àÔ"Ô,Ð,r3   c                 ó   — | j         j        S rJ   )rÈ   rC   r;   s    r2   rC   zIndependentTransform.signÒ  s   € àÔ"Ô'Ð'r3   c                 óŽ   — |                      ¦   «         | j        j        k     rt          d¦  «        ‚|                      |¦  «        S ©NúToo few dimensions on input)Údimr$   r:   r-   rÈ   r\   s     r2   rR   zIndependentTransform._callÖ  s=   € Ø�5Š5‰7Œ7�T”[Ô*Ò*Ð*ÝÐ:Ñ;Ô;Ð;Ø×"Ò" 1Ñ%Ô%Ð%r3   c                 ó˜   — |                      ¦   «         | j        j        k     rt          d¦  «        ‚| j                             |¦  «        S rÑ   )rÓ   r%   r:   r-   rÈ   r?   r_   s     r2   rY   zIndependentTransform._inverseÛ  s@   € Ø�5Š5‰7Œ7�T”]Ô,Ò,Ð,ÝÐ:Ñ;Ô;Ð;ØÔ"×&Ò& qÑ)Ô)Ð)r3   c                 óf   — | j                              ||¦  «        }t          || j        ¦  «        }|S rJ   )rÈ   rb   r   rÉ   )r0   rS   rV   Úresults       r2   rb   z)IndependentTransform.log_abs_det_jacobianà  s1   € ØÔ$×9Ò9¸!¸QÑ?Ô?ˆÝ ¨Ô(FÑGÔGˆØˆr3   c                 óZ   — | j         j        › dt          | j        ¦  «        › d| j        › d�S )Nr‹   z, rŒ   )r1   rd   r�   rÈ   rÉ   r;   s    r2   re   zIndependentTransform.__repr__å  s4   € Ø”.Ô)ÐjÐj­D°Ô1DÑ,EÔ,EÐjÐjÈÔIgÐjÐjÐjÐjr3   c                 ó6   — | j                              |¦  «        S rJ   )rÈ   ri   rg   s     r2   ri   z"IndependentTransform.forward_shapeè  ó   € ØÔ"×0Ò0°Ñ7Ô7Ð7r3   c                 ó6   — | j                              |¦  «        S rJ   )rÈ   rl   rg   s     r2   rl   z"IndependentTransform.inverse_shapeë  rÙ   r3   rm   rn   )rd   ro   rp   rq   r!   ru   r/   rH   r   r“   r$   r%   rv   r”   rr   rC   rR   rY   rb   re   ri   rl   rw   rx   s   @r2   r   r   ¡  s™  ø€ € € € € ðð ð" ð	Cð Cà!ðCð $'ðCð ð	Cð
 
ðCð Cð Cð Cð Cð Cð
ð 
ð 
ð 
ð $€[Ô#°Ð6Ñ6Ô6ð
ð 
ñ 7Ô6ð
ð
 $€[Ô#°Ð6Ñ6Ô6ð
ð 
ñ 7Ô6ð
ð
 ð-˜4ð -ð -ð -ñ „Xð-ð ð(�cð (ð (ð (ñ „Xð(ð&ð &ð &ð
*ð *ð *ð
ð ð ð
kð kð kð8ð 8ð 8ð8ð 8ð 8ð 8ð 8ð 8ð 8r3   r   c            	       ó¶   ‡ — e Zd ZdZdZ	 ddej        dej        deddfˆ fd	„Ze	j
        d
„ ¦   «         Ze	j
        d„ ¦   «         Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r   aó  
    Unit Jacobian transform to reshape the rightmost part of a tensor.

    Note that ``in_shape`` and ``out_shape`` must have the same number of
    elements, just as for :meth:`torch.Tensor.reshape`.

    Arguments:
        in_shape (torch.Size): The input event shape.
        out_shape (torch.Size): The output event shape.
        cache_size (int): Size of cache. If zero, no caching is done. If one,
            the latest single value is cached. Only 0 and 1 are supported. (Default 0.)
    Tr   Úin_shapeÚ	out_shaper&   r'   Nc                 ó6  •— t          j        |¦  «        | _        t          j        |¦  «        | _        | j                             ¦   «         | j                             ¦   «         k    rt          d¦  «        ‚t          ¦   «                              |¬¦  «         d S )Nz6in_shape, out_shape have different numbers of elementsrE   )rµ   ÚSizerÜ   rÝ   Únumelr-   r.   r/   )r0   rÜ   rÝ   r&   r1   s       €r2   r/   zReshapeTransform.__init__ÿ  s~   ø€ õ œ
 8Ñ,Ô,ˆŒÝœ IÑ.Ô.ˆŒØŒ=×ÒÑ Ô  D¤N×$8Ò$8Ñ$:Ô$:Ò:Ð:ÝÐUÑVÔVÐVÝ‰Œ×Ò JÐÑ/Ô/Ð/Ð/Ð/r3   c                 ód   — t          j        t           j        t          | j        ¦  «        ¦  «        S rJ   )r   r¥   r¢   ÚlenrÜ   r;   s    r2   r$   zReshapeTransform.domain  s$   € õ Ô&¥{Ô'7½¸T¼]Ñ9KÔ9KÑLÔLÐLr3   c                 ód   — t          j        t           j        t          | j        ¦  «        ¦  «        S rJ   )r   r¥   r¢   râ   rÝ   r;   s    r2   r%   zReshapeTransform.codomain  s$   € õ Ô&¥{Ô'7½¸T¼^Ñ9LÔ9LÑMÔMÐMr3   r)   c                 óT   — | j         |k    r| S t          | j        | j        |¬¦  «        S r|   )r*   r   rÜ   rÝ   rG   s     r2   rH   zReshapeTransform.with_cache  s.   € ØÔ˜zÒ)Ð)ØˆKÝ ¤¨t¬~È*ÐUÑUÔUÐUr3   c                 ó¨   — |j         d |                     ¦   «         t          | j        ¦  «        z
  …         }|                     || j        z   ¦  «        S rJ   )rh   rÓ   râ   rÜ   ÚreshaperÝ   )r0   rS   Úbatch_shapes      r2   rR   zReshapeTransform._call  sD   € Ø”gÐ< §¢¡¤­#¨d¬mÑ*<Ô*<Ñ <Ð<Ô=ˆØ�yŠy˜ t¤~Ñ5Ñ6Ô6Ð6r3   c                 ó¨   — |j         d |                     ¦   «         t          | j        ¦  «        z
  …         }|                     || j        z   ¦  «        S rJ   )rh   rÓ   râ   rÝ   ræ   rÜ   )r0   rV   rç   s      r2   rY   zReshapeTransform._inverse  sD   € Ø”gÐ= §¢¡¤­#¨d¬nÑ*=Ô*=Ñ =Ð=Ô>ˆØ�yŠy˜ t¤}Ñ4Ñ5Ô5Ð5r3   c                 ó˜   — |j         d |                     ¦   «         t          | j        ¦  «        z
  …         }|                     |¦  «        S rJ   )rh   rÓ   râ   rÜ   Ú	new_zeros)r0   rS   rV   rç   s       r2   rb   z%ReshapeTransform.log_abs_det_jacobian"  s=   € Ø”gÐ< §¢¡¤­#¨d¬mÑ*<Ô*<Ñ <Ð<Ô=ˆØ�{Š{˜;Ñ'Ô'Ð'r3   c                 ó@  — t          |¦  «        t          | j        ¦  «        k     rt          d¦  «        ‚t          |¦  «        t          | j        ¦  «        z
  }||d …         | j        k    r"t          d||d …         › d| j        › �¦  «        ‚|d |…         | j        z   S ©NrÒ   zShape mismatch: expected z	 but got )râ   rÜ   r-   rÝ   ©r0   rh   Úcuts      r2   ri   zReshapeTransform.forward_shape&  s¡   € Ýˆu‰:Œ:�˜DœMÑ*Ô*Ò*Ð*ÝÐ:Ñ;Ô;Ð;Ý�%‰jŒj�3˜tœ}Ñ-Ô-Ñ-ˆØ���Œ;˜$œ-Ò'Ð'ÝØQ¨E°#°$°$¬KÐQÐQÀ$Ä-ÐQÐQñô ð ð �T�c�TŒ{˜Tœ^Ñ+Ð+r3   c                 ó@  — t          |¦  «        t          | j        ¦  «        k     rt          d¦  «        ‚t          |¦  «        t          | j        ¦  «        z
  }||d …         | j        k    r"t          d||d …         › d| j        › �¦  «        ‚|d |…         | j        z   S rì   )râ   rÝ   r-   rÜ   rí   s      r2   rl   zReshapeTransform.inverse_shape0  s¡   € Ýˆu‰:Œ:�˜DœNÑ+Ô+Ò+Ð+ÝÐ:Ñ;Ô;Ð;Ý�%‰jŒj�3˜tœ~Ñ.Ô.Ñ.ˆØ���Œ;˜$œ.Ò(Ð(ÝØR¨E°#°$°$¬KÐRÐRÀ$Ä.ÐRÐRñô ð ð �T�c�TŒ{˜Tœ]Ñ*Ð*r3   rm   rn   )rd   ro   rp   rq   rr   rµ   rß   ru   r/   r   r“   r$   r%   rH   rR   rY   rb   ri   rl   rw   rx   s   @r2   r   r   ï  s)  ø€ € € € € ðð ð €Ið ð	
0ð 
0à”*ð
0ð ”:ð
0ð ð	
0ð
 
ð
0ð 
0ð 
0ð 
0ð 
0ð 
0ð Ô#ðMð Mñ $Ô#ðMð Ô#ðNð Nñ $Ô#ðNðVð Vð Vð Vð
7ð 7ð 7ð6ð 6ð 6ð(ð (ð (ð,ð ,ð ,ð+ð +ð +ð +ð +ð +ð +r3   r   c                   óN   — e Zd ZdZej        Zej        ZdZ	dZ
d„ Zd„ Zd„ Zd„ ZdS )	r   z8
    Transform via the mapping :math:`y = \exp(x)`.
    Tr)   c                 ó,   — t          |t          ¦  «        S rJ   )r‰   r   rL   s     r2   rN   zExpTransform.__eq__E  ó   € Ý˜%¥Ñ.Ô.Ð.r3   c                 ó*   — |                      ¦   «         S rJ   )Úexpr\   s     r2   rR   zExpTransform._callH  ó   € Ø�uŠu‰wŒwˆr3   c                 ó*   — |                      ¦   «         S rJ   ©Úlogr_   s     r2   rY   zExpTransform._inverseK  rõ   r3   c                 ó   — |S rJ   rK   ra   s      r2   rb   z!ExpTransform.log_abs_det_jacobianN  ó   € Øˆr3   N©rd   ro   rp   rq   r   r¢   r$   Úpositiver%   rr   rC   rN   rR   rY   rb   rK   r3   r2   r   r   ;  sv   € € € € € ðð ð Ô€FØÔ#€HØ€IØ€Dð/ð /ð /ðð ð ðð ð ðð ð ð ð r3   r   c                   óš   ‡ — e Zd ZdZej        Zej        ZdZdde	de
ddfˆ fd„Zdd
„Zede
fd„¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r   zD
    Transform via the mapping :math:`y = x^{\text{exponent}}`.
    Tr   Úexponentr&   r'   Nc                 óx   •— t          ¦   «                              |¬¦  «         t          |¦  «        \  | _        d S r|   )r.   r/   r   rþ   )r0   rþ   r&   r1   s      €r2   r/   zPowerTransform.__init__[  s4   ø€ Ý‰Œ×Ò JÐÑ/Ô/Ð/Ý(¨Ñ2Ô2ÑˆŒˆˆr3   r)   c                 óH   — | j         |k    r| S t          | j        |¬¦  «        S r|   )r*   r   rþ   rG   s     r2   rH   zPowerTransform.with_cache_  s*   € ØÔ˜zÒ)Ð)ØˆKÝ˜dœm¸
ÐCÑCÔCÐCr3   c                 ó4   — | j                              ¦   «         S rJ   )rþ   rC   r;   s    r2   rC   zPowerTransform.signd  s   € àŒ}×!Ò!Ñ#Ô#Ð#r3   c                 ó¶   — t          |t          ¦  «        sdS | j                             |j        ¦  «                             ¦   «                              ¦   «         S rž   )r‰   r   rþ   Úeqr­   ÚitemrL   s     r2   rN   zPowerTransform.__eq__h  sI   € Ý˜%¥Ñ0Ô0ð 	Ø�5ØŒ}×Ò ¤Ñ/Ô/×3Ò3Ñ5Ô5×:Ò:Ñ<Ô<Ð<r3   c                 ó6   — |                      | j        ¦  «        S rJ   ©Úpowrþ   r\   s     r2   rR   zPowerTransform._callm  s   € Ø�uŠu�T”]Ñ#Ô#Ð#r3   c                 ó<   — |                      d| j        z  ¦  «        S r¯   r  r_   s     r2   rY   zPowerTransform._inversep  s   € Ø�uŠu�Q˜œÑ&Ñ'Ô'Ð'r3   c                 ód   — | j         |z  |z                       ¦   «                              ¦   «         S rJ   )rþ   Úabsrø   ra   s      r2   rb   z#PowerTransform.log_abs_det_jacobians  s,   € Ø” Ñ! AÑ%×*Ò*Ñ,Ô,×0Ò0Ñ2Ô2Ð2r3   c                 óT   — t          j        |t          | j        dd¦  «        ¦  «        S ©Nrh   rK   ©rµ   Úbroadcast_shapesÚgetattrrþ   rg   s     r2   ri   zPowerTransform.forward_shapev  ó#   € ÝÔ% e­W°T´]ÀGÈRÑ-PÔ-PÑQÔQÐQr3   c                 óT   — t          j        |t          | j        dd¦  «        ¦  «        S r  r  rg   s     r2   rl   zPowerTransform.inverse_shapey  r  r3   rm   rn   )rd   ro   rp   rq   r   rü   r$   r%   rr   r   ru   r/   rH   r	   rC   rN   rR   rY   rb   ri   rl   rw   rx   s   @r2   r   r   R  s  ø€ € € € € ðð ð Ô!€FØÔ#€HØ€Ið3ð 3 ð 3°Sð 3Àð 3ð 3ð 3ð 3ð 3ð 3ðDð Dð Dð Dð
 ð$�cð $ð $ð $ñ „]ð$ð=ð =ð =ð
$ð $ð $ð(ð (ð (ð3ð 3ð 3ðRð Rð RðRð Rð Rð Rð Rð Rð Rr3   r   c                 ó    — t          j        | j        ¦  «        }t          j        t          j        | ¦  «        |j        d|j        z
  ¬¦  «        S ©Nç      ð?©Úminr¤   )rµ   ÚfinfoÚdtypeÚclampÚsigmoidÚtinyÚeps)rS   r  s     r2   Ú_clipped_sigmoidr  }  s<   € ÝŒK˜œÑ Ô €EÝŒ;•u”} QÑ'Ô'¨U¬Z¸SÀ5Ä9¹_ÐMÑMÔMÐMr3   c                   óN   — e Zd ZdZej        Zej        ZdZ	dZ
d„ Zd„ Zd„ Zd„ ZdS )	r   zg
    Transform via the mapping :math:`y = \frac{1}{1 + \exp(-x)}` and :math:`x = \text{logit}(y)`.
    Tr)   c                 ó,   — t          |t          ¦  «        S rJ   )r‰   r   rL   s     r2   rN   zSigmoidTransform.__eq__Œ  ó   € Ý˜%Õ!1Ñ2Ô2Ð2r3   c                 ó    — t          |¦  «        S rJ   )r  r\   s     r2   rR   zSigmoidTransform._call�  s   € Ý Ñ"Ô"Ð"r3   c                 óÐ   — t          j        |j        ¦  «        }|                     |j        d|j        z
  ¬¦  «        }|                     ¦   «         |                      ¦   «         z
  S r  )rµ   r  r  r  r  r  rø   Úlog1p)r0   rV   r  s      r2   rY   zSigmoidTransform._inverse’  sM   € Ý”˜AœGÑ$Ô$ˆØ�GŠG˜œ
¨¨e¬i©ˆGÑ8Ô8ˆØ�uŠu‰wŒw˜1˜"Ÿš™œÑ%Ð%r3   c                 óX   — t          j        | ¦  «         t          j        |¦  «        z
  S rJ   )ÚFr   ra   s      r2   rb   z%SigmoidTransform.log_abs_det_jacobian—  s!   € Ý”
˜A˜2‘”ˆ¥¤¨A¡¤Ñ.Ð.r3   N)rd   ro   rp   rq   r   r¢   r$   Úunit_intervalr%   rr   rC   rN   rR   rY   rb   rK   r3   r2   r   r   ‚  sv   € € € € € ðð ð Ô€FØÔ(€HØ€IØ€Dð3ð 3ð 3ð#ð #ð #ð&ð &ð &ð
/ð /ð /ð /ð /r3   r   c                   óN   — e Zd ZdZej        Zej        ZdZ	dZ
d„ Zd„ Zd„ Zd„ ZdS )	r   zž
    Transform via the mapping :math:`\text{Softplus}(x) = \log(1 + \exp(x))`.
    The implementation reverts to the linear function when :math:`x > 20`.
    Tr)   c                 ó,   — t          |t          ¦  «        S rJ   )r‰   r   rL   s     r2   rN   zSoftplusTransform.__eq__¦  s   € Ý˜%Õ!2Ñ3Ô3Ð3r3   c                 ó    — t          |¦  «        S rJ   ©r   r\   s     r2   rR   zSoftplusTransform._call©  s   € Ý˜‰{Œ{Ðr3   c                 óz   — |                       ¦   «                              ¦   «                              ¦   «         |z   S rJ   )Úexpm1Únegrø   r_   s     r2   rY   zSoftplusTransform._inverse¬  s/   € Ø��zŠz‰|Œ|×ÒÑ!Ô!×%Ò%Ñ'Ô'¨!Ñ+Ð+r3   c                 ó$   — t          | ¦  «         S rJ   r*  ra   s      r2   rb   z&SoftplusTransform.log_abs_det_jacobian¯  s   € Ý˜!˜‘”ˆ}Ðr3   Nrû   rK   r3   r2   r   r   ›  sv   € € € € € ðð ð
 Ô€FØÔ#€HØ€IØ€Dð4ð 4ð 4ðð ð ð,ð ,ð ,ðð ð ð ð r3   r   c                   ób   — e Zd ZdZej        Z ej        dd¦  «        ZdZ	dZ
d„ Zd„ Zd„ Zd	„ Zd
S )r   aé  
    Transform via the mapping :math:`y = \tanh(x)`.

    It is equivalent to

    .. code-block:: python

        ComposeTransform(
            [
                AffineTransform(0.0, 2.0),
                SigmoidTransform(),
                AffineTransform(-1.0, 2.0),
            ]
        )

    However this might not be numerically stable, thus it is recommended to use `TanhTransform`
    instead.

    Note that one should use `cache_size=1` when it comes to `NaN/Inf` values.

    g      ð¿r  Tr)   c                 ó,   — t          |t          ¦  «        S rJ   )r‰   r   rL   s     r2   rN   zTanhTransform.__eq__Ï  s   € Ý˜%¥Ñ/Ô/Ð/r3   c                 ó*   — |                      ¦   «         S rJ   )Útanhr\   s     r2   rR   zTanhTransform._callÒ  s   € Ø�vŠv‰xŒxˆr3   c                 ó*   — t          j        |¦  «        S rJ   )rµ   Úatanhr_   s     r2   rY   zTanhTransform._inverseÕ  s   € õ Œ{˜1‰~Œ~Ðr3   c                 ó\   — dt          j        d¦  «        |z
  t          d|z  ¦  «        z
  z  S )Nç       @g       À)Úmathrø   r   ra   s      r2   rb   z"TanhTransform.log_abs_det_jacobianÚ  s-   € ð •d”h˜s‘m”m aÑ'­(°4¸!±8Ñ*<Ô*<Ñ<Ñ=Ð=r3   N)rd   ro   rp   rq   r   r¢   r$   Úintervalr%   rr   rC   rN   rR   rY   rb   rK   r3   r2   r   r   ³  s‚   € € € € € ðð ð, Ô€FØ#ˆ{Ô# D¨#Ñ.Ô.€HØ€IØ€Dð0ð 0ð 0ðð ð ðð ð ð
>ð >ð >ð >ð >r3   r   c                   ó@   — e Zd ZdZej        Zej        Zd„ Z	d„ Z
d„ ZdS )r   z*Transform via the mapping :math:`y = |x|`.c                 ó,   — t          |t          ¦  «        S rJ   )r‰   r   rL   s     r2   rN   zAbsTransform.__eq__æ  rò   r3   c                 ó*   — |                      ¦   «         S rJ   )r
  r\   s     r2   rR   zAbsTransform._callé  rõ   r3   c                 ó   — |S rJ   rK   r_   s     r2   rY   zAbsTransform._inverseì  rú   r3   N)rd   ro   rp   rq   r   r¢   r$   rü   r%   rN   rR   rY   rK   r3   r2   r   r   à  sW   € € € € € Ø5Ð5àÔ€FØÔ#€Hð/ð /ð /ðð ð ðð ð ð ð r3   r   c                   ó   ‡ — e Zd ZdZdZ	 	 ddeez  deez  dededd	f
ˆ fd
„Ze	defd„¦   «         Z
 ej        d¬¦  «        d„ ¦   «         Z ej        d¬¦  «        d„ ¦   «         Zdd„Zd„ Ze	deez  fd„¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r   a¤  
    Transform via the pointwise affine mapping :math:`y = \text{loc} + \text{scale} \times x`.

    Args:
        loc (Tensor or float): Location parameter.
        scale (Tensor or float): Scale parameter.
        event_dim (int): Optional size of `event_shape`. This should be zero
            for univariate random variables, 1 for distributions over vectors,
            2 for distributions over matrices, etc.
    Tr   ÚlocÚscaler:   r&   r'   Nc                 óv   •— t          ¦   «                              |¬¦  «         || _        || _        || _        d S r|   )r.   r/   r>  r?  Ú
_event_dim)r0   r>  r?  r:   r&   r1   s        €r2   r/   zAffineTransform.__init__þ  s9   ø€ õ 	‰Œ×Ò JÐÑ/Ô/Ð/ØˆŒØˆŒ
Ø#ˆŒˆˆr3   c                 ó   — | j         S rJ   )rA  r;   s    r2   r:   zAffineTransform.event_dim
  s
   € àŒÐr3   Fr}   c                 óx   — | j         dk    rt          j        S t          j        t          j        | j         ¦  «        S ©Nr   ©r:   r   r¢   r¥   r;   s    r2   r$   zAffineTransform.domain  ó2   € ð Œ>˜QÒÐÝÔ#Ð#ÝÔ&¥{Ô'7¸¼ÑHÔHÐHr3   c                 óx   — | j         dk    rt          j        S t          j        t          j        | j         ¦  «        S rD  rE  r;   s    r2   r%   zAffineTransform.codomain  rF  r3   r)   c                 ó`   — | j         |k    r| S t          | j        | j        | j        |¬¦  «        S r|   )r*   r   r>  r?  r:   rG   s     r2   rH   zAffineTransform.with_cache  s;   € ØÔ˜zÒ)Ð)ØˆKÝØŒH�d”j $¤.¸Zð
ñ 
ô 
ð 	
r3   c                 ó(  — t          |t          ¦  «        sdS t          | j        t          ¦  «        r-t          |j        t          ¦  «        r| j        |j        k    rdS n6| j        |j        k                         ¦   «                              ¦   «         sdS t          | j        t          ¦  «        r-t          |j        t          ¦  «        r| j        |j        k    rdS n6| j        |j        k                         ¦   «                              ¦   «         sdS dS )NFT)r‰   r   r>  r   r­   r  r?  rL   s     r2   rN   zAffineTransform.__eq__#  sþ   € Ý˜%¥Ñ1Ô1ð 	Ø�5å�d”h¥Ñ(Ô(ð 	­Z¸¼	Å7Ñ-KÔ-Kð 	ØŒx˜5œ9Ò$Ð$Ø�uð %ð ”H ¤	Ò)×.Ò.Ñ0Ô0×5Ò5Ñ7Ô7ð Ø�uå�d”j¥'Ñ*Ô*ð 	­z¸%¼+ÅwÑ/OÔ/Oð 	ØŒz˜Uœ[Ò(Ð(Ø�uð )ð ”J %¤+Ò-×2Ò2Ñ4Ô4×9Ò9Ñ;Ô;ð Ø�uàˆtr3   c                 óÔ   — t          | j        t          ¦  «        r6t          | j        ¦  «        dk    rdnt          | j        ¦  «        dk     rdndS | j                             ¦   «         S )Nr   r)   r    )r‰   r?  r   ÚfloatrC   r;   s    r2   rC   zAffineTransform.sign7  s`   € å�d”j¥'Ñ*Ô*ð 	VÝ˜dœjÑ)Ô)¨AÒ-Ð-�1�1½¸t¼zÑ9JÔ9JÈQÒ9NÐ9N°2°2ÐTUÐUØŒz�ŠÑ Ô Ð r3   c                 ó&   — | j         | j        |z  z   S rJ   ©r>  r?  r\   s     r2   rR   zAffineTransform._call=  s   € ØŒx˜$œ* q™.Ñ(Ð(r3   c                 ó&   — || j         z
  | j        z  S rJ   rM  r_   s     r2   rY   zAffineTransform._inverse@  s   € Ø�D”H‘ ¤
Ñ*Ð*r3   c                 óð  — |j         }| j        }t          |t          ¦  «        r5t	          j        |t          j        t          |¦  «        ¦  «        ¦  «        }n&t	          j        |¦  «                             ¦   «         }| j	        r]| 
                    ¦   «         d | j	         …         dz   }|                     |¦  «                             d¦  «        }|d | j	         …         }|                     |¦  «        S )N)r    r    )rh   r?  r‰   r   rµ   Ú	full_liker7  rø   r
  r:   ÚsizeÚviewÚsumÚexpand)r0   rS   rV   rh   r?  rÖ   Úresult_sizes          r2   rb   z$AffineTransform.log_abs_det_jacobianC  sÐ   € Ø”ˆØ”
ˆÝ�e�WÑ%Ô%ð 	,Ý”_ Q­¬µ°U±´Ñ(<Ô(<Ñ=Ô=ˆFˆFå”Y˜uÑ%Ô%×)Ò)Ñ+Ô+ˆFØŒ>ð 	-Ø Ÿ+š+™-œ-Ð(9¨4¬>¨/Ð(9Ô:¸UÑBˆKØ—[’[ Ñ-Ô-×1Ò1°"Ñ5Ô5ˆFØÐ+˜Tœ^˜OÐ+Ô,ˆEØ�}Š}˜UÑ#Ô#Ð#r3   c           	      ó~   — t          j        |t          | j        dd¦  «        t          | j        dd¦  «        ¦  «        S r  ©rµ   r  r  r>  r?  rg   s     r2   ri   zAffineTransform.forward_shapeP  ó;   € ÝÔ%Ø•7˜4œ8 W¨bÑ1Ô1µ7¸4¼:ÀwÐPRÑ3SÔ3Sñ
ô 
ð 	
r3   c           	      ó~   — t          j        |t          | j        dd¦  «        t          | j        dd¦  «        ¦  «        S r  rW  rg   s     r2   rl   zAffineTransform.inverse_shapeU  rX  r3   ©r   r   rn   )rd   ro   rp   rq   rr   r   rK  ru   r/   rv   r:   r   r“   r$   r%   rH   rN   rC   rR   rY   rb   ri   rl   rw   rx   s   @r2   r   r   ð  s±  ø€ € € € € ð	ð 	ð €Ið Øð
$ð 
$à�e‰^ð
$ð ˜‰~ð
$ð ð	
$ð
 ð
$ð 
ð
$ð 
$ð 
$ð 
$ð 
$ð 
$ð ð˜3ð ð ð ñ „Xðð $€[Ô#°Ð6Ñ6Ô6ðIð Iñ 7Ô6ðIð
 $€[Ô#°Ð6Ñ6Ô6ðIð Iñ 7Ô6ðIð

ð 
ð 
ð 
ðð ð ð( ð!�f˜s‘lð !ð !ð !ñ „Xð!ð
)ð )ð )ð+ð +ð +ð$ð $ð $ð
ð 
ð 
ð

ð 
ð 
ð 
ð 
ð 
ð 
r3   r   c                   óR   — e Zd ZdZej        Zej        ZdZ	d„ Z
d„ Zd	d„Zd„ Zd„ ZdS )
r   a°  
    Transforms an unconstrained real vector :math:`x` with length :math:`D*(D-1)/2` into the
    Cholesky factor of a D-dimension correlation matrix. This Cholesky factor is a lower
    triangular matrix with positive diagonals and unit Euclidean norm for each row.
    The transform is processed as follows:

        1. First we convert x into a lower triangular matrix in row order.
        2. For each row :math:`X_i` of the lower triangular part, we apply a *signed* version of
           class :class:`StickBreakingTransform` to transform :math:`X_i` into a
           unit Euclidean length vector using the following steps:
           - Scales into the interval :math:`(-1, 1)` domain: :math:`r_i = \tanh(X_i)`.
           - Transforms into an unsigned domain: :math:`z_i = r_i^2`.
           - Applies :math:`s_i = StickBreakingTransform(z_i)`.
           - Transforms back into signed domain: :math:`y_i = sign(r_i) * \sqrt{s_i}`.
    Tc                 óÄ  — t          j        |¦  «        }t          j        |j        ¦  «        j        }|                     d|z   d|z
  ¬¦  «        }t          |d¬¦  «        }|dz  }d|z
                       ¦   «                              d¦  «        }|t          j	        |j
        d         |j        |j        ¬¦  «        z   }|t          |dd d…f         ddgd¬	¦  «        z  }|S )
Nr    r)   r  ©Údiagé   )r  Údevice.r   ©Úvalue)rµ   r2  r  r  r  r  r   ÚsqrtÚcumprodÚeyerh   r`  r   )r0   rS   r  ÚrÚzÚz1m_cumprod_sqrtrV   s          r2   rR   zCorrCholeskyTransform._callp  sÒ   € ÝŒJ�q‰MŒMˆÝŒk˜!œ'Ñ"Ô"Ô&ˆØ�GŠG˜˜S™ a¨#¡gˆGÑ.Ô.ˆÝ˜q rÐ*Ñ*Ô*ˆð ˆq‰DˆØ ™EŸ<š<™>œ>×1Ò1°"Ñ5Ô5Ðà•”	˜!œ' "œ+¨Q¬W¸Q¼XÐFÑFÔFÑFˆØ•Ð$ S¨#¨2¨# XÔ.°°A°¸aÐ@Ñ@Ô@Ñ@ˆØˆr3   c                 óh  — dt          j        ||z  d¬¦  «        z
  }t          |dd d…f         ddgd¬¦  «        }t          |d¬¦  «        }t          |d¬¦  «        }||                     ¦   «         z  }|                     ¦   «         |                     ¦   «                              ¦   «         z
  dz  }|S )	Nr)   r    ©rÓ   .r   ra  r]  r_  )rµ   Úcumsumr   r
   rc  r#  r-  )r0   rV   Úy_cumsumÚy_cumsum_shiftedÚy_vecÚy_cumsum_vecÚtrS   s           r2   rY   zCorrCholeskyTransform._inverse  s®   € ð •u”| A¨¡E¨rÐ2Ñ2Ô2Ñ2ˆÝ˜x¨¨S¨b¨S¨Ô1°A°q°6ÀÐCÑCÔCÐÝ" 1¨2Ð.Ñ.Ô.ˆÝ)Ð*:ÀÐDÑDÔDˆØ�\×'Ò'Ñ)Ô)Ñ)ˆà�WŠW‰YŒY˜Ÿš™œŸš™œÑ(¨AÑ-ˆØˆr3   Nc                 ó<  — d||z                        d¬¦  «        z
  }t          |d¬¦  «        }d|                     ¦   «                              d¦  «        z  }d|t	          d|z  ¦  «        z   t          j        d¦  «        z
                       d¬¦  «        z  }||z   S )Nr)   r    rj  éþÿÿÿr]  ç      à?r6  )rk  r
   rø   rS  r   r7  )r0   rS   rV   ÚintermediatesÚ
y1m_cumsumÚy1m_cumsum_trilÚstick_breaking_logdetÚtanh_logdets           r2   rb   z*CorrCholeskyTransform.log_abs_det_jacobian‹  s�   € ð ˜!˜a™%Ÿš¨B˜Ñ/Ô/Ñ/ˆ
õ -¨Z¸bÐAÑAÔAˆØ # ×&;Ò&;Ñ&=Ô&=×&AÒ&AÀ"Ñ&EÔ&EÑ EÐØ˜A¥¨¨a©Ñ 0Ô 0Ñ0µ4´8¸C±=´=Ñ@×EÒEÈ"ÐEÑMÔMÑMˆØ$ {Ñ2Ð2r3   c                 óæ   — t          |¦  «        dk     rt          d¦  «        ‚|d         }t          dd|z  z   dz  dz   ¦  «        }||dz
  z  dz  |k    rt          d¦  «        ‚|d d…         ||fz   S )Nr)   rÒ   r    g      Ð?r_  rs  z.Input is not a flattened lower-diagonal number)râ   r-   Úround)r0   rh   ÚNÚDs       r2   ri   z#CorrCholeskyTransform.forward_shape™  s†   € åˆu‰:Œ:˜Š>ˆ>ÝÐ:Ñ;Ô;Ð;Ø�"ŒIˆÝ�4˜!˜a™%‘< CÑ'¨#Ñ-Ñ.Ô.ˆØ��A‘‰;˜!Ñ˜qÒ Ð ÝÐMÑNÔNÐNØ�S�b�SŒz˜Q ˜FÑ"Ð"r3   c                 óÊ   — t          |¦  «        dk     rt          d¦  «        ‚|d         |d         k    rt          d¦  «        ‚|d         }||dz
  z  dz  }|d d…         |fz   S )Nr_  rÒ   rr  r    zInput is not squarer)   ©râ   r-   )r0   rh   r|  r{  s       r2   rl   z#CorrCholeskyTransform.inverse_shape£  sr   € åˆu‰:Œ:˜Š>ˆ>ÝÐ:Ñ;Ô;Ð;Ø�Œ9˜˜bœ	Ò!Ð!ÝÐ2Ñ3Ô3Ð3Ø�"ŒIˆØ��Q‘‰K˜1ÑˆØ�S�b�SŒz˜Q˜DÑ Ð r3   rJ   )rd   ro   rp   rq   r   Úreal_vectorr$   Úcorr_choleskyr%   rr   rR   rY   rb   ri   rl   rK   r3   r2   r   r   [  s…   € € € € € ðð ð  Ô$€FØÔ(€HØ€Iðð ð ð
ð 
ð 
ð3ð 3ð 3ð 3ð#ð #ð #ð!ð !ð !ð !ð !r3   r   c                   óL   — e Zd ZdZej        Zej        Zd„ Z	d„ Z
d„ Zd„ Zd„ ZdS )r   a<  
    Transform from unconstrained space to the simplex via :math:`y = \exp(x)` then
    normalizing.

    This is not bijective and cannot be used for HMC. However this acts mostly
    coordinate-wise (except for the final normalization), and thus is
    appropriate for coordinate-wise optimization algorithms.
    c                 ó,   — t          |t          ¦  «        S rJ   )r‰   r   rL   s     r2   rN   zSoftmaxTransform.__eq__»  r   r3   c                 óš   — |}||                      dd¦  «        d         z
                       ¦   «         }||                     dd¦  «        z  S )Nr    Tr   )r¤   rô   rS  )r0   rS   ÚlogprobsÚprobss       r2   rR   zSoftmaxTransform._call¾  sI   € ØˆØ˜HŸLšL¨¨TÑ2Ô2°1Ô5Ñ5×:Ò:Ñ<Ô<ˆØ�u—y’y  TÑ*Ô*Ñ*Ð*r3   c                 ó.   — |}|                      ¦   «         S rJ   r÷   )r0   rV   r…  s      r2   rY   zSoftmaxTransform._inverseÃ  s   € ØˆØ�yŠy‰{Œ{Ðr3   c                 óJ   — t          |¦  «        dk     rt          d¦  «        ‚|S ©Nr)   rÒ   r~  rg   s     r2   ri   zSoftmaxTransform.forward_shapeÇ  ó%   € Ýˆu‰:Œ:˜Š>ˆ>ÝÐ:Ñ;Ô;Ð;Øˆr3   c                 óJ   — t          |¦  «        dk     rt          d¦  «        ‚|S rˆ  r~  rg   s     r2   rl   zSoftmaxTransform.inverse_shapeÌ  r‰  r3   N)rd   ro   rp   rq   r   r  r$   Úsimplexr%   rN   rR   rY   ri   rl   rK   r3   r2   r   r   ®  s{   € € € € € ðð ð Ô$€FØÔ"€Hð3ð 3ð 3ð+ð +ð +ð
ð ð ðð ð ð
ð ð ð ð r3   r   c                   óV   — e Zd ZdZej        Zej        ZdZ	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd	S )
r    a  
    Transform from unconstrained space to the simplex of one additional
    dimension via a stick-breaking process.

    This transform arises as an iterated sigmoid transform in a stick-breaking
    construction of the `Dirichlet` distribution: the first logit is
    transformed via sigmoid to the first probability and the probability of
    everything else, and then the process recurses.

    This is bijective and appropriate for use in HMC; however it mixes
    coordinates together and is less appropriate for optimization.
    Tc                 ó,   — t          |t          ¦  «        S rJ   )r‰   r    rL   s     r2   rN   zStickBreakingTransform.__eq__ä  ó   € Ý˜%Õ!7Ñ8Ô8Ð8r3   c                 óX  — |j         d         dz   |                     |j         d         ¦  «                             d¦  «        z
  }t          ||                     ¦   «         z
  ¦  «        }d|z
                       d¦  «        }t          |ddgd¬¦  «        t          |ddgd¬¦  «        z  }|S )Nr    r)   r   ra  )rh   Únew_onesrk  r  rø   rd  r   )r0   rS   Úoffsetrg  Ú	z_cumprodrV   s         r2   rR   zStickBreakingTransform._callç  sš   € Ø”˜”˜q‘ 1§:¢:¨a¬g°b¬kÑ#:Ô#:×#AÒ#AÀ"Ñ#EÔ#EÑEˆÝ˜Q §¢¡¤Ñ-Ñ.Ô.ˆØ˜‘U—O’O BÑ'Ô'ˆ	Ý��A�q�6 Ð#Ñ#Ô#¥c¨)°a¸°VÀ1Ð&EÑ&EÔ&EÑEˆØˆr3   c                 ó°  — |dd d…f         }|j         d         |                     |j         d         ¦  «                             d¦  «        z
  }d|                     d¦  «        z
  }t          j        |t          j        |j        ¦  «        j        ¬¦  «        }|                     ¦   «         |                     ¦   «         z
  |                     ¦   «         z   }|S )N.r    r)   )r  )	rh   r�  rk  rµ   r  r  r  r  rø   )r0   rV   Úy_cropr‘  ÚsfrS   s         r2   rY   zStickBreakingTransform._inverseî  s«   € Ø�3˜˜˜�8”ˆØ”˜”˜qŸzšz¨&¬,°rÔ*:Ñ;Ô;×BÒBÀ2ÑFÔFÑFˆØ�—’˜rÑ"Ô"Ñ"ˆõ Œ[˜¥¤¨Q¬WÑ!5Ô!5Ô!:Ð;Ñ;Ô;ˆØ�JŠJ‰LŒL˜2Ÿ6š6™8œ8Ñ# f§j¢j¡l¤lÑ2ˆØˆr3   c                 óP  — |j         d         dz   |                     |j         d         ¦  «                             d¦  «        z
  }||                     ¦   «         z
  }| t	          j        |¦  «        z   |dd d…f                              ¦   «         z                        d¦  «        }|S )Nr    r)   .)rh   r�  rk  rø   r%  Ú
logsigmoidrS  )r0   rS   rV   r‘  ÚdetJs        r2   rb   z+StickBreakingTransform.log_abs_det_jacobianø  sŠ   € Ø”˜”˜q‘ 1§:¢:¨a¬g°b¬kÑ#:Ô#:×#AÒ#AÀ"Ñ#EÔ#EÑEˆØ�—
’
‘”Ñˆà�•Q”\ !‘_”_Ñ$ q¨¨c¨r¨c¨¤{§¢Ñ'8Ô'8Ñ8×=Ò=¸bÑAÔAˆØˆr3   c                 ót   — t          |¦  «        dk     rt          d¦  «        ‚|d d…         |d         dz   fz   S ©Nr)   rÒ   r    r~  rg   s     r2   ri   z$StickBreakingTransform.forward_shapeÿ  ó>   € Ýˆu‰:Œ:˜Š>ˆ>ÝÐ:Ñ;Ô;Ð;Ø�S�b�SŒz˜U 2œY¨™]Ð,Ñ,Ð,r3   c                 ót   — t          |¦  «        dk     rt          d¦  «        ‚|d d…         |d         dz
  fz   S rš  r~  rg   s     r2   rl   z$StickBreakingTransform.inverse_shape  r›  r3   N)rd   ro   rp   rq   r   r  r$   r‹  r%   rr   rN   rR   rY   rb   ri   rl   rK   r3   r2   r    r    Ò  s�   € € € € € ðð ð Ô$€FØÔ"€HØ€Ið9ð 9ð 9ðð ð ðð ð ðð ð ð-ð -ð -ð
-ð -ð -ð -ð -r3   r    c                   ó^   — e Zd ZdZ ej        ej        d¦  «        Zej        Z	d„ Z
d„ Zd„ ZdS )r   zã
    Transform from unconstrained matrices to lower-triangular matrices with
    nonnegative diagonal entries.

    This is useful for parameterizing positive definite matrices in terms of
    their Cholesky factorization.
    r_  c                 ó,   — t          |t          ¦  «        S rJ   )r‰   r   rL   s     r2   rN   zLowerCholeskyTransform.__eq__  rŽ  r3   c                 ó¤   — |                      d¦  «        |                     dd¬¦  «                             ¦   «                              ¦   «         z   S ©Nr    rr  )Údim1Údim2)ÚtrilÚdiagonalrô   Ú
diag_embedr\   s     r2   rR   zLowerCholeskyTransform._call  ó?   € Ø�vŠv�b‰zŒz˜AŸJšJ¨B°R˜JÑ8Ô8×<Ò<Ñ>Ô>×IÒIÑKÔKÑKÐKr3   c                 ó¤   — |                      d¦  «        |                     dd¬¦  «                             ¦   «                              ¦   «         z   S r   )r£  r¤  rø   r¥  r_   s     r2   rY   zLowerCholeskyTransform._inverse  r¦  r3   N)rd   ro   rp   rq   r   r¥   r¢   r$   Úlower_choleskyr%   rN   rR   rY   rK   r3   r2   r   r   
  st   € € € € € ðð ð %ˆ[Ô$ [Ô%5°qÑ9Ô9€FØÔ)€Hð9ð 9ð 9ðLð Lð LðLð Lð Lð Lð Lr3   r   c                   ó^   — e Zd ZdZ ej        ej        d¦  «        Zej        Z	d„ Z
d„ Zd„ ZdS )r   zN
    Transform from unconstrained matrices to positive-definite matrices.
    r_  c                 ó,   — t          |t          ¦  «        S rJ   )r‰   r   rL   s     r2   rN   z PositiveDefiniteTransform.__eq__(  s   € Ý˜%Õ!:Ñ;Ô;Ð;r3   c                 óD   —  t          ¦   «         |¦  «        }||j        z  S rJ   )r   ÚmTr\   s     r2   rR   zPositiveDefiniteTransform._call+  s#   € Ø$Õ"Ñ$Ô$ QÑ'Ô'ˆØ�1”4‰xˆr3   c                 ó‚   — t           j                             |¦  «        }t          ¦   «                              |¦  «        S rJ   )rµ   ÚlinalgÚcholeskyr   r?   r_   s     r2   rY   z"PositiveDefiniteTransform._inverse/  s1   € ÝŒL×!Ò! !Ñ$Ô$ˆÝ%Ñ'Ô'×+Ò+¨AÑ.Ô.Ð.r3   N)rd   ro   rp   rq   r   r¥   r¢   r$   Úpositive_definiter%   rN   rR   rY   rK   r3   r2   r   r      sl   € € € € € ðð ð %ˆ[Ô$ [Ô%5°qÑ9Ô9€FØÔ,€Hð<ð <ð <ðð ð ð/ð /ð /ð /ð /r3   r   c                   ó$  ‡ — e Zd ZU dZee         ed<   	 	 	 ddee         dedee         dz  ded	df
ˆ fd
„Z	e
d	efd„¦   «         Ze
d	efd„¦   «         Zdd„Zd„ Zd„ Zd„ Zed	efd„¦   «         Zej        d„ ¦   «         Zej        d„ ¦   «         Zˆ xZS )r   aá  
    Transform functor that applies a sequence of transforms `tseq`
    component-wise to each submatrix at `dim`, of length `lengths[dim]`,
    in a way compatible with :func:`torch.cat`.

    Example::

       x0 = torch.cat([torch.range(1, 10), torch.range(1, 10)], dim=0)
       x = torch.cat([x0, x0], dim=0)
       t0 = CatTransform([ExpTransform(), identity_transform], dim=0, lengths=[10, 10])
       t = CatTransform([t0, t0], dim=0, lengths=[20, 20])
       y = t(x)
    Ú
transformsr   NÚtseqrÓ   Úlengthsr&   r'   c                 ó  •‡— t          d„ |D ¦   «         ¦  «        st          d¦  «        ‚‰rˆfd„|D ¦   «         }t          ¦   «                              ‰¬¦  «         t	          |¦  «        | _        |€dgt          | j        ¦  «        z  }t	          |¦  «        | _        t          | j        ¦  «        t          | j        ¦  «        k    r:t          dt          | j        ¦  «        › dt          | j        ¦  «        › d�¦  «        ‚|| _        d S )	Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rJ   ©r‰   r!   ©rš   rp  s     r2   r¬   z(CatTransform.__init__.<locals>.<genexpr>L  ó,   è è € Ð:Ð:°•:˜a¥Ñ+Ô+Ð:Ð:Ð:Ð:Ð:Ð:r3   ú0All elements of tseq must be Transform instancesc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rK   r™   ©rš   rp  r&   s     €r2   rœ   z)CatTransform.__init__.<locals>.<listcomp>O  ó%   ø€ Ð;Ð;Ð;°�A—L’L Ñ,Ô,Ð;Ð;Ð;r3   rE   r)   z	lengths (z) must match transforms (rŒ   )	r­   r‚   r.   r/   rÆ   r²  râ   r´  rÓ   )r0   r³  rÓ   r´  r&   r1   s       `€r2   r/   zCatTransform.__init__E  s  øø€ õ Ð:Ð:°TÐ:Ñ:Ô:Ñ:Ô:ð 	UÝ Ð!SÑTÔTÐTØð 	<Ø;Ð;Ð;Ð;°dÐ;Ñ;Ô;ˆDÝ‰Œ×Ò JÐÑ/Ô/Ð/Ý˜t™*œ*ˆŒØˆ?Ø�c�C ¤Ñ0Ô0Ñ0ˆGÝ˜G‘}”}ˆŒÝˆtŒ|ÑÔ¥ D¤OÑ 4Ô 4Ò4Ð4Ý Ø_�C ¤Ñ-Ô-Ð_Ð_ÍÈDÌOÑH\ÔH\Ð_Ð_Ð_ñô ð ð ˆŒˆˆr3   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rJ   )r:   r¸  s     r2   r¬   z)CatTransform.event_dim.<locals>.<genexpr>]  ó$   è è € Ð8Ð8 1�1”;Ð8Ð8Ð8Ð8Ð8Ð8r3   )r¤   r²  r;   s    r2   r:   zCatTransform.event_dim[  ó!   € åÐ8Ð8¨¬Ð8Ñ8Ô8Ñ8Ô8Ð8r3   c                 ó*   — t          | j        ¦  «        S rJ   )rS  r´  r;   s    r2   ÚlengthzCatTransform.length_  s   € å�4”<Ñ Ô Ð r3   r)   c                 ó^   — | j         |k    r| S t          | j        | j        | j        |¦  «        S rJ   )r*   r   r²  rÓ   r´  rG   s     r2   rH   zCatTransform.with_cachec  s/   € ØÔ˜zÒ)Ð)ØˆKÝ˜DœO¨T¬X°t´|ÀZÑPÔPÐPr3   c                 ó„  — |                      ¦   «          | j         cxk    r|                      ¦   «         k     s/n t          d| j         › d|                      ¦   «         › d�¦  «        ‚|                     | j         ¦  «        | j        k    r:t          d| j         › d|                     | j         ¦  «        › d| j        › �¦  «        ‚g }d}t	          | j        | j        ¦  «        D ]D\  }}|                     | j         ||¦  «        }|                      ||¦  «        ¦  «         ||z   }ŒEt          j
        || j         ¬¦  «        S )	Núdim ú out of range for tensor with ú dimensionsúx.size(ú) = ú must equal length r   rj  )rÓ   r‚   rQ  rÃ  r¸   r²  r´  Únarrowr·   rµ   Úcat)r0   rS   ÚyslicesÚstartÚtransrÃ  Úxslices          r2   rR   zCatTransform._callh  sC  € Ø—’‘”�˜DœHÐ.Ð.Ò.Ð. q§u¢u¡w¤wÒ.Ð.Ð.Ð.Ý ØS�t”xÐSÐS¸q¿uºu¹w¼wÐSÐSÐSñô ð ð �6Š6�$”(ÑÔ˜tœ{Ò*Ð*Ý ØZ˜$œ(ÐZÐZ¨¯ª¨t¬xÑ(8Ô(8ÐZÐZÈTÌ[ÐZÐZñô ð ð ˆØˆÝ  ¤°$´,Ñ?Ô?ð 	#ð 	#‰MˆE�6Ø—X’X˜dœh¨¨vÑ6Ô6ˆFØ�NŠN˜5˜5 ™=œ=Ñ)Ô)Ð)Ø˜F‘NˆEˆEÝŒy˜ d¤hÐ/Ñ/Ô/Ð/r3   c                 ó˜  — |                      ¦   «          | j         cxk    r|                      ¦   «         k     s/n t          d| j         › d|                      ¦   «         › d�¦  «        ‚|                     | j         ¦  «        | j        k    r:t          d| j         › d|                     | j         ¦  «        › d| j        › �¦  «        ‚g }d}t	          | j        | j        ¦  «        D ]N\  }}|                     | j         ||¦  «        }|                     | 	                    |¦  «        ¦  «         ||z   }ŒOt          j        || j         ¬¦  «        S )	NrÆ  rÇ  rÈ  úy.size(rÊ  rË  r   rj  )rÓ   r‚   rQ  rÃ  r¸   r²  r´  rÌ  r·   r?   rµ   rÍ  )r0   rV   ÚxslicesrÏ  rÐ  rÃ  Úyslices          r2   rY   zCatTransform._inversey  sG  € Ø—’‘”�˜DœHÐ.Ð.Ò.Ð. q§u¢u¡w¤wÒ.Ð.Ð.Ð.Ý ØS�t”xÐSÐS¸q¿uºu¹w¼wÐSÐSÐSñô ð ð �6Š6�$”(ÑÔ˜tœ{Ò*Ð*Ý ØZ˜$œ(ÐZÐZ¨¯ª¨t¬xÑ(8Ô(8ÐZÐZÈTÌ[ÐZÐZñô ð ð ˆØˆÝ  ¤°$´,Ñ?Ô?ð 	#ð 	#‰MˆE�6Ø—X’X˜dœh¨¨vÑ6Ô6ˆFØ�NŠN˜5Ÿ9š9 VÑ,Ô,Ñ-Ô-Ð-Ø˜F‘NˆEˆEÝŒy˜ d¤hÐ/Ñ/Ô/Ð/r3   c                 ó2  — |                      ¦   «          | j         cxk    r|                      ¦   «         k     s/n t          d| j         › d|                      ¦   «         › d�¦  «        ‚|                     | j         ¦  «        | j        k    r:t          d| j         › d|                     | j         ¦  «        › d| j        › �¦  «        ‚|                      ¦   «          | j         cxk    r|                      ¦   «         k     s/n t          d| j         › d|                      ¦   «         › d�¦  «        ‚|                     | j         ¦  «        | j        k    r:t          d| j         › d|                     | j         ¦  «        › d| j        › �¦  «        ‚g }d	}t	          | j        | j        ¦  «        D ]š\  }}|                     | j         ||¦  «        }|                     | j         ||¦  «        }|                     ||¦  «        }	|j	        | j	        k     rt          |	| j	        |j	        z
  ¦  «        }	|                     |	¦  «         ||z   }Œ›| j         }
|
d	k    r|
|                      ¦   «         z
  }
|
| j	        z   }
|
d	k     rt          j        ||
¬
¦  «        S t          |¦  «        S )NrÆ  ú out of range for x with rÈ  rÉ  rÊ  rË  ú out of range for y with rÓ  r   rj  )rÓ   r‚   rQ  rÃ  r¸   r²  r´  rÌ  rb   r:   r   r·   rµ   rÍ  rS  )r0   rS   rV   Ú
logdetjacsrÏ  rÐ  rÃ  rÑ  rÕ  Ú	logdetjacrÓ   s              r2   rb   z!CatTransform.log_abs_det_jacobianŠ  s“  € Ø—’‘”�˜DœHÐ.Ð.Ò.Ð. q§u¢u¡w¤wÒ.Ð.Ð.Ð.Ý ØN�t”xÐNÐN¸!¿%º%¹'¼'ÐNÐNÐNñô ð ð �6Š6�$”(ÑÔ˜tœ{Ò*Ð*Ý ØZ˜$œ(ÐZÐZ¨¯ª¨t¬xÑ(8Ô(8ÐZÐZÈTÌ[ÐZÐZñô ð ð —’‘”�˜DœHÐ.Ð.Ò.Ð. q§u¢u¡w¤wÒ.Ð.Ð.Ð.Ý ØN�t”xÐNÐN¸!¿%º%¹'¼'ÐNÐNÐNñô ð ð �6Š6�$”(ÑÔ˜tœ{Ò*Ð*Ý ØZ˜$œ(ÐZÐZ¨¯ª¨t¬xÑ(8Ô(8ÐZÐZÈTÌ[ÐZÐZñô ð ð ˆ
ØˆÝ  ¤°$´,Ñ?Ô?ð 	#ð 	#‰MˆE�6Ø—X’X˜dœh¨¨vÑ6Ô6ˆFØ—X’X˜dœh¨¨vÑ6Ô6ˆFØ×2Ò2°6¸6ÑBÔBˆIØŒ ¤Ò/Ð/Ý*¨9°d´nÀuÄÑ6VÑWÔW�	Ø×Ò˜iÑ(Ô(Ð(Ø˜F‘NˆEˆEàŒhˆØ�!Š8ˆ8Ø˜Ÿš™œ‘-ˆCØ�D”NÑ"ˆØ�Š7ˆ7Ý”9˜Z¨SÐ1Ñ1Ô1Ð1å�z‘?”?Ð"r3   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rJ   r©   r¸  s     r2   r¬   z)CatTransform.bijective.<locals>.<genexpr>±  rÀ  r3   ©r­   r²  r;   s    r2   rr   zCatTransform.bijective¯  rÁ  r3   c                 ó`   — t          j        d„ | j        D ¦   «         | j        | j        ¦  «        S )Nc                 ó   — g | ]	}|j         ‘Œ
S rK   ©r$   r¸  s     r2   rœ   z'CatTransform.domain.<locals>.<listcomp>·  s   € Ð/Ð/Ð/˜!ˆQŒXÐ/Ð/Ð/r3   ©r   rÍ  r²  rÓ   r´  r;   s    r2   r$   zCatTransform.domain³  s3   € õ ŒØ/Ð/˜tœÐ/Ñ/Ô/°´¸4¼<ñ
ô 
ð 	
r3   c                 ó`   — t          j        d„ | j        D ¦   «         | j        | j        ¦  «        S )Nc                 ó   — g | ]	}|j         ‘Œ
S rK   ©r%   r¸  s     r2   rœ   z)CatTransform.codomain.<locals>.<listcomp>¾  s   € Ð1Ð1Ð1˜AˆQŒZÐ1Ð1Ð1r3   rá  r;   s    r2   r%   zCatTransform.codomainº  s3   € õ ŒØ1Ð1 ¤Ð1Ñ1Ô1°4´8¸T¼\ñ
ô 
ð 	
r3   )r   Nr   rn   )rd   ro   rp   rq   rÆ   r!   rt   r   ru   r/   r	   r:   rÃ  rH   rR   rY   rb   rv   r”   rr   r   r“   r$   r%   rw   rx   s   @r2   r   r   4  s¢  ø€ € € € € € ðð ð �Y”ÐÐÑð
 Ø(,Øðð à�yÔ!ðð ðð ˜#” Ñ%ð	ð
 ðð 
ðð ð ð ð ð ð, ð9˜3ð 9ð 9ð 9ñ „]ð9ð ð!˜ð !ð !ð !ñ „]ð!ðQð Qð Qð Qð
0ð 0ð 0ð"0ð 0ð 0ð"##ð ##ð ##ðJ ð9˜4ð 9ð 9ð 9ñ „Xð9ð Ô#ð
ð 
ñ $Ô#ð
ð
 Ô#ð
ð 
ñ $Ô#ð
ð 
ð 
ð 
ð 
r3   r   c            	       óØ   ‡ — e Zd ZU dZee         ed<   	 ddee         dededdfˆ fd	„Z	dd„Z
d„ Zd„ Zd„ Zd„ Zedefd„¦   «         Zej        d„ ¦   «         Zej        d„ ¦   «         Zˆ xZS )r   aW  
    Transform functor that applies a sequence of transforms `tseq`
    component-wise to each submatrix at `dim`
    in a way compatible with :func:`torch.stack`.

    Example::

       x = torch.stack([torch.range(1, 10), torch.range(1, 10)], dim=1)
       t = StackTransform([ExpTransform(), identity_transform], dim=1)
       y = t(x)
    r²  r   r³  rÓ   r&   r'   Nc                 óô   •‡— t          d„ |D ¦   «         ¦  «        st          d¦  «        ‚‰rˆfd„|D ¦   «         }t          ¦   «                              ‰¬¦  «         t	          |¦  «        | _        || _        d S )Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rJ   r·  r¸  s     r2   r¬   z*StackTransform.__init__.<locals>.<genexpr>Ô  r¹  r3   rº  c                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rK   r™   r¼  s     €r2   rœ   z+StackTransform.__init__.<locals>.<listcomp>×  r½  r3   rE   )r­   r‚   r.   r/   rÆ   r²  rÓ   )r0   r³  rÓ   r&   r1   s      `€r2   r/   zStackTransform.__init__Ñ  s‰   øø€ õ Ð:Ð:°TÐ:Ñ:Ô:Ñ:Ô:ð 	UÝ Ð!SÑTÔTÐTØð 	<Ø;Ð;Ð;Ð;°dÐ;Ñ;Ô;ˆDÝ‰Œ×Ò JÐÑ/Ô/Ð/Ý˜t™*œ*ˆŒØˆŒˆˆr3   r)   c                 óR   — | j         |k    r| S t          | j        | j        |¦  «        S rJ   )r*   r   r²  rÓ   rG   s     r2   rH   zStackTransform.with_cacheÜ  s+   € ØÔ˜zÒ)Ð)ØˆKÝ˜dœo¨t¬x¸ÑDÔDÐDr3   c                 ón   ‡ ‡— ˆ ˆfd„t          ‰                     ‰ j        ¦  «        ¦  «        D ¦   «         S )Nc                 óF   •— g | ]}‰                      ‰j        |¦  «        ‘ŒS rK   )ÚselectrÓ   )rš   Úir0   rg  s     €€r2   rœ   z)StackTransform._slice.<locals>.<listcomp>â  s)   ø€ ÐGÐGÐG¨!�—’˜œ 1Ñ%Ô%ÐGÐGÐGr3   )ÚrangerQ  rÓ   )r0   rg  s   ``r2   Ú_slicezStackTransform._sliceá  s7   øø€ ØGÐGÐGÐGÐG­u°Q·V²V¸D¼HÑ5EÔ5EÑ/FÔ/FÐGÑGÔGÐGr3   c           
      óŽ  — |                      ¦   «          | j         cxk    r|                      ¦   «         k     s/n t          d| j         › d|                      ¦   «         › d�¦  «        ‚|                     | j         ¦  «        t          | j        ¦  «        k    rGt          d| j         › d|                     | j         ¦  «        › dt          | j        ¦  «        › �¦  «        ‚g }t          |                      |¦  «        | j        ¦  «        D ]#\  }}|                      ||¦  «        ¦  «         Œ$t          j	        || j         ¬¦  «        S )NrÆ  rÇ  rÈ  rÉ  rÊ  ú must equal len(transforms) rj  )
rÓ   r‚   rQ  râ   r²  r¸   rï  r·   rµ   Ústack)r0   rS   rÎ  rÑ  rÐ  s        r2   rR   zStackTransform._callä  s:  € Ø—’‘”�˜DœHÐ.Ð.Ò.Ð. q§u¢u¡w¤wÒ.Ð.Ð.Ð.Ý ØS�t”xÐSÐS¸q¿uºu¹w¼wÐSÐSÐSñô ð ð �6Š6�$”(ÑÔ�s 4¤?Ñ3Ô3Ò3Ð3Ý Øl˜$œ(ÐlÐl¨¯ª¨t¬xÑ(8Ô(8ÐlÐlÕVYÐZ^ÔZiÑVjÔVjÐlÐlñô ð ð ˆÝ  §¢¨Q¡¤°´ÑAÔAð 	*ð 	*‰MˆF�EØ�NŠN˜5˜5 ™=œ=Ñ)Ô)Ð)Ð)ÝŒ{˜7¨¬Ð1Ñ1Ô1Ð1r3   c           
      ó¢  — |                      ¦   «          | j         cxk    r|                      ¦   «         k     s/n t          d| j         › d|                      ¦   «         › d�¦  «        ‚|                     | j         ¦  «        t          | j        ¦  «        k    rGt          d| j         › d|                     | j         ¦  «        › dt          | j        ¦  «        › �¦  «        ‚g }t          |                      |¦  «        | j        ¦  «        D ]-\  }}|                     |                     |¦  «        ¦  «         Œ.t          j
        || j         ¬¦  «        S )NrÆ  rÇ  rÈ  rÓ  rÊ  rñ  rj  )rÓ   r‚   rQ  râ   r²  r¸   rï  r·   r?   rµ   rò  )r0   rV   rÔ  rÕ  rÐ  s        r2   rY   zStackTransform._inverseò  s>  € Ø—’‘”�˜DœHÐ.Ð.Ò.Ð. q§u¢u¡w¤wÒ.Ð.Ð.Ð.Ý ØS�t”xÐSÐS¸q¿uºu¹w¼wÐSÐSÐSñô ð ð �6Š6�$”(ÑÔ�s 4¤?Ñ3Ô3Ò3Ð3Ý Øl˜$œ(ÐlÐl¨¯ª¨t¬xÑ(8Ô(8ÐlÐlÕVYÐZ^ÔZiÑVjÔVjÐlÐlñô ð ð ˆÝ  §¢¨Q¡¤°´ÑAÔAð 	.ð 	.‰MˆF�EØ�NŠN˜5Ÿ9š9 VÑ,Ô,Ñ-Ô-Ð-Ð-ÝŒ{˜7¨¬Ð1Ñ1Ô1Ð1r3   c           
      ó�  — |                      ¦   «          | j         cxk    r|                      ¦   «         k     s/n t          d| j         › d|                      ¦   «         › d�¦  «        ‚|                     | j         ¦  «        t          | j        ¦  «        k    rGt          d| j         › d|                     | j         ¦  «        › dt          | j        ¦  «        › �¦  «        ‚|                      ¦   «          | j         cxk    r|                      ¦   «         k     s/n t          d| j         › d|                      ¦   «         › d�¦  «        ‚|                     | j         ¦  «        t          | j        ¦  «        k    rGt          d| j         › d|                     | j         ¦  «        › dt          | j        ¦  «        › �¦  «        ‚g }|                      |¦  «        }|                      |¦  «        }t          ||| j        ¦  «        D ]/\  }}}|                     |                     ||¦  «        ¦  «         Œ0t          j
        || j         ¬	¦  «        S )
NrÆ  r×  rÈ  rÉ  rÊ  rñ  rØ  rÓ  rj  )rÓ   r‚   rQ  râ   r²  rï  r¸   r·   rb   rµ   rò  )	r0   rS   rV   rÙ  rÎ  rÔ  rÑ  rÕ  rÐ  s	            r2   rb   z#StackTransform.log_abs_det_jacobian   s5  € Ø—’‘”�˜DœHÐ.Ð.Ò.Ð. q§u¢u¡w¤wÒ.Ð.Ð.Ð.Ý ØN�t”xÐNÐN¸!¿%º%¹'¼'ÐNÐNÐNñô ð ð �6Š6�$”(ÑÔ�s 4¤?Ñ3Ô3Ò3Ð3Ý Øl˜$œ(ÐlÐl¨¯ª¨t¬xÑ(8Ô(8ÐlÐlÕVYÐZ^ÔZiÑVjÔVjÐlÐlñô ð ð —’‘”�˜DœHÐ.Ð.Ò.Ð. q§u¢u¡w¤wÒ.Ð.Ð.Ð.Ý ØN�t”xÐNÐN¸!¿%º%¹'¼'ÐNÐNÐNñô ð ð �6Š6�$”(ÑÔ�s 4¤?Ñ3Ô3Ò3Ð3Ý Øl˜$œ(ÐlÐl¨¯ª¨t¬xÑ(8Ô(8ÐlÐlÕVYÐZ^ÔZiÑVjÔVjÐlÐlñô ð ð ˆ
Ø—+’+˜a‘.”.ˆØ—+’+˜a‘.”.ˆÝ%(¨°'¸4¼?Ñ%KÔ%Kð 	Jð 	JÑ!ˆF�F˜EØ×Ò˜e×8Ò8¸ÀÑHÔHÑIÔIÐIÐIÝŒ{˜:¨4¬8Ð4Ñ4Ô4Ð4r3   c                 ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3   ó$   K  — | ]}|j         V — Œd S rJ   r©   r¸  s     r2   r¬   z+StackTransform.bijective.<locals>.<genexpr>  rÀ  r3   rÝ  r;   s    r2   rr   zStackTransform.bijective  rÁ  r3   c                 óT   — t          j        d„ | j        D ¦   «         | j        ¦  «        S )Nc                 ó   — g | ]	}|j         ‘Œ
S rK   rà  r¸  s     r2   rœ   z)StackTransform.domain.<locals>.<listcomp>  s   € Ð!DÐ!DÐ!D¨q !¤(Ð!DÐ!DÐ!Dr3   ©r   rò  r²  rÓ   r;   s    r2   r$   zStackTransform.domain  s*   € õ Ô Ð!DÐ!D°D´OÐ!DÑ!DÔ!DÀdÄhÑOÔOÐOr3   c                 óT   — t          j        d„ | j        D ¦   «         | j        ¦  «        S )Nc                 ó   — g | ]	}|j         ‘Œ
S rK   rä  r¸  s     r2   rœ   z+StackTransform.codomain.<locals>.<listcomp>$  s   € Ð!FÐ!FÐ!F° !¤*Ð!FÐ!FÐ!Fr3   rù  r;   s    r2   r%   zStackTransform.codomain!  s*   € õ Ô Ð!FÐ!F°d´oÐ!FÑ!FÔ!FÈÌÑQÔQÐQr3   rZ  rn   )rd   ro   rp   rq   rÆ   r!   rt   r   ru   r/   rH   rï  rR   rY   rb   rv   r”   rr   r   r“   r$   r%   rw   rx   s   @r2   r   r   Â  sR  ø€ € € € € € ð
ð 
ð �Y”ÐÐÑð JKð	ð 	Ø˜YÔ'ð	Ø.1ð	ØCFð	à	ð	ð 	ð 	ð 	ð 	ð 	ðEð Eð Eð Eð
Hð Hð Hð2ð 2ð 2ð2ð 2ð 2ð5ð 5ð 5ð0 ð9˜4ð 9ð 9ð 9ñ „Xð9ð Ô#ðPð Pñ $Ô#ðPð Ô#ðRð Rñ $Ô#ðRð Rð Rð Rð Rr3   r   c                   óŽ   ‡ — e Zd ZdZdZej        ZdZdde	de
ddfˆ fd	„Zedej        dz  fd
„¦   «         Zd„ Zd„ Zd„ Zdd„Zˆ xZS )r   aA  
    Transform via the cumulative distribution function of a probability distribution.

    Args:
        distribution (Distribution): Distribution whose cumulative distribution function to use for
            the transformation.

    Example::

        # Construct a Gaussian copula from a multivariate normal.
        base_dist = MultivariateNormal(
            loc=torch.zeros(2),
            scale_tril=LKJCholesky(2).sample(),
        )
        transform = CumulativeDistributionTransform(Normal(0, 1))
        copula = TransformedDistribution(base_dist, [transform])
    Tr)   r   Údistributionr&   r'   Nc                 óZ   •— t          ¦   «                              |¬¦  «         || _        d S r|   )r.   r/   rý  )r0   rý  r&   r1   s      €r2   r/   z(CumulativeDistributionTransform.__init__>  s,   ø€ Ý‰Œ×Ò JÐÑ/Ô/Ð/Ø(ˆÔÐÐr3   c                 ó   — | j         j        S rJ   )rý  Úsupportr;   s    r2   r$   z&CumulativeDistributionTransform.domainB  s   € àÔ Ô(Ð(r3   c                 ó6   — | j                              |¦  «        S rJ   )rý  Úcdfr\   s     r2   rR   z%CumulativeDistributionTransform._callF  s   € ØÔ ×$Ò$ QÑ'Ô'Ð'r3   c                 ó6   — | j                              |¦  «        S rJ   )rý  Úicdfr_   s     r2   rY   z(CumulativeDistributionTransform._inverseI  s   € ØÔ ×%Ò% aÑ(Ô(Ð(r3   c                 ó6   — | j                              |¦  «        S rJ   )rý  Úlog_probra   s      r2   rb   z4CumulativeDistributionTransform.log_abs_det_jacobianL  s   € ØÔ ×)Ò)¨!Ñ,Ô,Ð,r3   c                 óH   — | j         |k    r| S t          | j        |¬¦  «        S r|   )r*   r   rý  rG   s     r2   rH   z*CumulativeDistributionTransform.with_cacheO  s+   € ØÔ˜zÒ)Ð)ØˆKÝ.¨tÔ/@ÈZÐXÑXÔXÐXr3   rm   rn   )rd   ro   rp   rq   rr   r   r&  r%   rC   r   ru   r/   rv   rs   r$   rR   rY   rb   rH   rw   rx   s   @r2   r   r   '  sí   ø€ € € € € ðð ð$ €IØÔ(€HØ€Dð)ð ) \ð )¸sð )È4ð )ð )ð )ð )ð )ð )ð ð)˜Ô.°Ñ5ð )ð )ð )ñ „Xð)ð(ð (ð (ð)ð )ð )ð-ð -ð -ðYð Yð Yð Yð Yð Yð Yð Yr3   r   )0r¹   r7  r»   Úcollections.abcr   rµ   Útorch.nn.functionalÚnnÚ
functionalr%  r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   r   r	   r
   r   r   r   Útorch.typesr   Ú__all__r!   r=   r   r"   r   r   r   r   r  r   r   r   r   r   r   r   r    r   r   r   r   r   rK   r3   r2   ú<module>r     sþ  ðà Ð Ð Ð Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð ðð ð €ð0dð dð dð dð dñ dô dð dðNE.ð E.ð E.ð E.ð E.˜	ñ E.ô E.ð E.ðP}ð }ð }ð }ð }�yñ }ô }ð }ð@ &Ð% bÑ)Ô)Ð ðK8ð K8ð K8ð K8ð K8˜9ñ K8ô K8ð K8ð\I+ð I+ð I+ð I+ð I+�yñ I+ô I+ð I+ðXð ð ð ð �9ñ ô ð ð.(Rð (Rð (Rð (Rð (R�Yñ (Rô (Rð (RðVNð Nð Nð
/ð /ð /ð /ð /�yñ /ô /ð /ð2ð ð ð ð ˜	ñ ô ð ð0*>ð *>ð *>ð *>ð *>�Iñ *>ô *>ð *>ðZð ð ð ð �9ñ ô ð ð h
ð h
ð h
ð h
ð h
�iñ h
ô h
ð h
ðVP!ð P!ð P!ð P!ð P!˜Iñ P!ô P!ð P!ðf!ð !ð !ð !ð !�yñ !ô !ð !ðH5-ð 5-ð 5-ð 5-ð 5-˜Yñ 5-ô 5-ð 5-ðpLð Lð Lð Lð L˜Yñ Lô Lð Lð,/ð /ð /ð /ð / 	ñ /ô /ð /ð(K
ð K
ð K
ð K
ð K
�9ñ K
ô K
ð K
ð\bRð bRð bRð bRð bR�Yñ bRô bRð bRðJ+Yð +Yð +Yð +Yð +Y iñ +Yô +Yð +Yð +Yð +Yr3   