Ë
    T^(hXQ  ã                   óö  — d dl mZ d dlZd dlmZ d dlmc mZ d dlmZm	Z	m
Z
 d dlmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlm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jJ                  «      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$¢Z.y)%é    )ÚOptionalN)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELoss)ÚSiglipConfigÚSiglipTextConfigÚSiglipVisionConfig)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚImageClassifierOutputÚSiglipForImageClassificationÚSiglipModelÚ#SiglipMultiheadAttentionPoolingHeadÚSiglipOutputÚSiglipPreTrainedModelÚSiglipTextModelÚSiglipTextModelOutputÚSiglipVisionModelÚSiglipVisionModelOutputÚSiglipVisionTransformeré   )Ú_prepare_4d_attention_maskc                   ó   — e Zd Zy)ÚSiglip2TextConfigN©Ú__name__Ú
__module__Ú__qualname__© ó    úi/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/siglip2/modular_siglip2.pyr   r   *   ó   „ Ør    r   c                   ó8   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 dˆ fd„	Zˆ xZS )ÚSiglip2VisionConfigaO  
    This is the configuration class to store the configuration of a [`Siglip2VisionModel`]. It is used to instantiate a
    Siglip2 vision encoder according to the specified arguments, defining the model architecture. Instantiating a
    configuration with the defaults will yield a similar configuration to that of the vision encoder of the Siglip2
    [google/siglip2-base-patch16-naflex](https://huggingface.co/google/siglip2-base-patch16-naflex) architecture.

    Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
    documentation from [`PretrainedConfig`] for more information.

    Args:
        hidden_size (`int`, *optional*, defaults to 768):
            Dimensionality of the encoder layers and the pooler layer.
        intermediate_size (`int`, *optional*, defaults to 3072):
            Dimensionality of the "intermediate" (i.e., feed-forward) layer in the Transformer encoder.
        num_hidden_layers (`int`, *optional*, defaults to 12):
            Number of hidden layers in the Transformer encoder.
        num_attention_heads (`int`, *optional*, defaults to 12):
            Number of attention heads for each attention layer in the Transformer encoder.
        num_channels (`int`, *optional*, defaults to 3):
            Number of channels in the input images.
        num_patches (`int`, *optional*, defaults to 256):
            The number of patches in the image with the size of (`patch_size`, `patch_size`).
            The image is resized to fill maximum of this number of patches, and to preserve
            the aspect ratio. In case the resulted number of patches is lower, the image is
            padded in "patch" dimension.
        patch_size (`int`, *optional*, defaults to 16):
            The size (resolution) of each patch.
        hidden_act (`str` or `function`, *optional*, defaults to `"gelu_pytorch_tanh"`):
            The non-linear activation function (function or string) in the encoder and pooler. If string, `"gelu"`,
            `"relu"`, `"selu"` and `"gelu_new"` `"quick_gelu"` are supported.
        layer_norm_eps (`float`, *optional*, defaults to 1e-06):
            The epsilon used by the layer normalization layers.
        attention_dropout (`float`, *optional*, defaults to 0.0):
            The dropout ratio for the attention probabilities.

    Example:

    ```python
    >>> from transformers import Siglip2VisionConfig, Siglip2VisionModel

    >>> # Initializing a Siglip2VisionConfig with google/siglip2-base-patch16-naflex style configuration
    >>> configuration = Siglip2VisionConfig()

    >>> # Initializing a Siglip2VisionModel (with random weights) from the google/siglip2-base-patch16-naflex style configuration
    >>> model = Siglip2VisionModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```c                 ó6   •— t        ‰| �  di |¤Ž || _        | `y )Nr   )ÚsuperÚ__init__Únum_patchesÚ
image_size)ÚselfÚhidden_sizeÚintermediate_sizeÚnum_hidden_layersÚnum_attention_headsÚnum_channelsr(   Ú
patch_sizeÚ
hidden_actÚlayer_norm_epsÚattention_dropoutÚkwargsÚ	__class__s               €r!   r'   zSiglip2VisionConfig.__init__a   s"   ø€ ô 	‰ÑÑ"˜6Ò"Ø&ˆÔØ‰Or    )
i   i   é   r6   r   é   é   Úgelu_pytorch_tanhg�íµ ÷Æ°>g        )r   r   r   Ú__doc__r'   Ú__classcell__©r5   s   @r!   r$   r$   .   s3   ø„ ñ0ðh ØØØØØØØ&ØØ÷ñ r    r$   c                   ó   — e Zd Zy)ÚSiglip2ConfigNr   r   r    r!   r>   r>   t   r"   r    r>   c                   ó   — e Zd Zy)ÚSiglip2VisionOutputNr   r   r    r!   r@   r@   x   r"   r    r@   c                   ó   — e Zd Zy)ÚSiglip2TextOutputNr   r   r    r!   rB   rB   |   r"   r    rB   c                   ó   — e Zd Zy)ÚSiglip2OutputNr   r   r    r!   rD   rD   €   r"   r    rD   c            	       óÒ   ‡ — e Zd Zdefˆ fd„Zedej                  dej                  de	dej                  fd„«       Z
dej                  dej                  dej                  fd	„Zˆ xZS )
ÚSiglip2VisionEmbeddingsÚconfigc                 óÂ  •— t         ‰| �  «        || _        |j                  | _        |j
                  | _        t        j                  |j                  | j
                  z  | j
                  z  | j                  ¬«      | _	        |j                  | _
        t        | j                  dz  «      | _        t        j                  | j                  | j                  «      | _        y )N)Úin_featuresÚout_featuresg      à?)r&   r'   rG   r+   Ú	embed_dimr0   ÚnnÚLinearr/   Úpatch_embeddingr(   ÚintÚposition_embedding_sizeÚ	EmbeddingÚposition_embedding©r*   rG   r5   s     €r!   r'   z Siglip2VisionEmbeddings.__init__…   s§   ø€ Ü‰ÑÔØˆŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒä!Ÿy™yØ×+Ñ+¨d¯o©oÑ=ÀÇÁÑOØŸ™ô 
ˆÔð
 "×-Ñ-ˆÔÜ'*¨4×+;Ñ+;¸SÑ+@Ó'AˆÔ$Ü"$§,¡,¨t×/?Ñ/?ÀÇÁÓ"PˆÕr    Úpositional_embeddingsÚspatial_shapesÚ
max_lengthÚreturnc                 ób  — |j                   d   }| j                   d   }| j                  }t        j                  |||f| j                  |¬«      }| j                  ddd«      j                  d«      } | j                  j                  dk(  r| j                  t        j                  «      } t        |«      D ]w  }||   \  }}	t        j                  | ||	fddd	¬
«      }
|
j                  |||	z  «      j                  dd«      }
|
j                  |«      }
|
||d||	z  …f<   |
d   ||||	z  d…f<   Œy |S )ac  
        Resize positional embeddings to image-specific size and pad to a fixed size.

        Args:
            positional_embeddings (`torch.Tensor`):
                Position embeddings of shape (height, width, embed_dim)
            spatial_shapes (`torch.LongTensor`):
                Spatial shapes of shape (batch_size, 2) to resize the positional embeddings to
            max_length (`int`):
                Maximum length of the positional embeddings to pad resized positional embeddings to

        Returns:
            `torch.Tensor`: Embeddings of shape (batch_size, max_length, embed_dim)
        r   éÿÿÿÿ)ÚdeviceÚdtypeé   é   ÚcpuÚbilinearFT)ÚsizeÚmodeÚalign_cornersÚ	antialiasN)Úshaper[   ÚtorchÚemptyrZ   ÚpermuteÚ	unsqueezeÚtypeÚtoÚfloat32ÚrangeÚFÚinterpolateÚreshapeÚ	transpose)rT   rU   rV   Ú
batch_sizerK   Úsource_dtypeÚresulted_positional_embeddingsÚiÚheightÚwidthÚresized_embeddingss              r!   Úresize_positional_embeddingsz4Siglip2VisionEmbeddings.resize_positional_embeddings”   sc  € ð( $×)Ñ)¨!Ñ,ˆ
Ø)×/Ñ/°Ñ3ˆ	Ø,×2Ñ2ˆä).¯©Ø˜ YÐ/Ø(×/Ñ/Øô*
Ð&ð !6× =Ñ =¸aÀÀAÓ F× PÑ PÐQRÓ SÐð !×'Ñ'×,Ñ,°Ò5Ø$9×$<Ñ$<¼U¿]¹]Ó$KÐ!ä�zÓ"ò 	XˆAà*¨1Ñ-‰MˆF�EÜ!"§¡Ø%Ø˜e�_ØØ#Øô"Ðð "4×!;Ñ!;¸IÀvÐPUÁ~Ó!V×!`Ñ!`ÐabÐdeÓ!fÐð "4×!6Ñ!6°|Ó!DÐàBTÐ*¨1Ð.>°¸±Ð.>Ð+>Ñ?ØBTÐUVÑBWÐ*¨1¨f°u©nÑ.>Ð+>Ò?ð%	Xð( .Ð-r    Úpixel_valuesc                 óJ  — | j                   j                  j                  }| j                  |j                  |¬«      «      }| j                  j                  j                  | j                  | j                  d«      }| j                  |||j                  d   ¬«      }||z   }|S )aH  
        Args:
            pixel_values (`torch.FloatTensor`):
                Pixel values of shape (batch_size, max_num_patches, num_channels * patch_size * patch_size)
            spatial_shapes (`List[Tuple[int, int]]`):
                Spatial shapes of shape (batch_size, 2) to resize the positional embeddings to
        )r[   rY   r]   )rV   )	rN   Úweightr[   rj   rR   ro   rP   rx   rd   )r*   ry   rU   Útarget_dtypeÚpatch_embedsrT   Úresized_positional_embeddingsÚ
embeddingss           r!   ÚforwardzSiglip2VisionEmbeddings.forwardÏ   s§   € ð ×+Ñ+×2Ñ2×8Ñ8ˆØ×+Ñ+¨L¯O©OÀ,¨OÓ,OÓPˆð !%× 7Ñ 7× >Ñ >× FÑ FØ×(Ñ(¨$×*FÑ*FÈó!
Ðð )-×(IÑ(IØ! >¸l×>PÑ>PÐQRÑ>Sð )Jó )
Ð%ð
 "Ð$AÑAˆ
ØÐr    )r   r   r   r$   r'   Ústaticmethodre   ÚTensorÚ
LongTensorrO   rx   ÚFloatTensorr€   r;   r<   s   @r!   rF   rF   „   s†   ø„ ðQÐ2õ Qð ð8.Ø$Ÿ|™|ð8.à×(Ñ(ð8.ð ð8.ð 
�‰ò	8.ó ð8.ðt E×$5Ñ$5ð Àu×GWÑGWð Ð\a×\hÑ\h÷ r    rF   c                   ó’   ‡ — e Zd Zdefˆ fd„Z	 	 d
dej                  dej                  dej                  de	e
   de	e
   defd	„Zˆ xZS )ÚSiglip2VisionTransformerrG   c                 óJ   •— t         ‰| �  «        |j                  dk(  | _        y )NÚflash_attention_2)r&   r'   Ú_attn_implementationÚ_use_flash_attention_2rS   s     €r!   r'   z!Siglip2VisionTransformer.__init__ê   s"   ø€ Ü‰ÑÔØ&,×&AÑ&AÐEXÑ&XˆÕ#r    ry   Úattention_maskrU   Úoutput_attentionsÚoutput_hidden_statesrW   c                 óÆ  — |�|n| j                   j                  }|�|n| j                   j                  }| j                  ||«      }|�#| j                  st        ||j                  «      }n|}| j                  ||||¬«      }|j                  }	| j                  |	«      }	| j                  r| j                  |	|«      nd}
t        |	|
|j                  |j                  ¬«      S )z
        Returns:

        N)Úinputs_embedsr‹   rŒ   r�   )Úlast_hidden_stateÚpooler_outputÚhidden_statesÚ
attentions)rG   rŒ   r�   r   rŠ   r   r[   Úencoderr�   Úpost_layernormÚuse_headÚheadr   r’   r“   )r*   ry   r‹   rU   rŒ   r�   r’   Úencoder_attention_maskÚencoder_outputsr�   r‘   s              r!   r€   z Siglip2VisionTransformer.forwardï   sò   € ð 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð Ÿ™¨°nÓEˆàÐ%¨d×.IÒ.Iä%?ÀÐP]×PcÑPcÓ%dÑ"à%3Ð"à+/¯<©<Ø'Ø1Ø/Ø!5ð	 ,8ó ,
ˆð ,×=Ñ=ÐØ ×/Ñ/Ð0AÓBÐàHLÏÊ˜Ÿ	™	Ð"3°^ÔDÐ[_ˆä)Ø/Ø'Ø)×7Ñ7Ø&×1Ñ1ô	
ð 	
r    ©NN)r   r   r   r$   r'   re   r„   r‚   rƒ   r   Úboolr   r€   r;   r<   s   @r!   r†   r†   é   sq   ø„ ðYÐ2õ Yð -1Ø/3ñ*
à×'Ñ'ð*
ð Ÿ™ð*
ð ×(Ñ(ð	*
ð
 $ D™>ð*
ð ' t™nð*
ð 
$÷*
r    r†   c                   ó   — e Zd Zy)ÚSiglip2PreTrainedModelNr   r   r    r!   r�   r�     r"   r    r�   c                   ó   — e Zd Zy)ÚSiglip2TextModelNr   r   r    r!   rŸ   rŸ      r"   r    rŸ   c                   ó|   ‡ — e Zd Zdefˆ fd„Zddej                  deej                     dej                  fd„Zˆ xZ	S )Ú$Siglip2MultiheadAttentionPoolingHeadrG   c                 óF   •— t         ‰| �  |«       |j                  | _        y ©N)r&   r'   r.   Ú	num_headsrS   s     €r!   r'   z-Siglip2MultiheadAttentionPoolingHead.__init__%  s   ø€ Ü‰Ñ˜Ô Ø×3Ñ3ˆ�r    Úhidden_stater‹   rW   c                 óº  — |j                   d   }| j                  j                  |dd«      }|�f|j                   d   |j                   d   }}t        ||j                  |«      }|j                  d| j
                  |d«      }|j                  d||«      }| j                  ||||¬«      d   }|}| j                  |«      }|| j                  |«      z   }|d d …df   S )Nr   r]   rY   )Ú	attn_mask)
rd   ÚprobeÚrepeatr   r[   r¤   ro   Ú	attentionÚ	layernormÚmlp)r*   r¥   r‹   rq   r¨   Ú
target_lenÚ
source_lenÚresiduals           r!   r€   z,Siglip2MultiheadAttentionPoolingHead.forward)  sâ   € Ø!×'Ñ'¨Ñ*ˆ
Ø—
‘
×!Ñ! *¨a°Ó3ˆàÐ%Ø%*§[¡[°¡^°\×5GÑ5GÈÑ5J˜
ˆJÜ7¸È×HZÑHZÐ\fÓgˆNØ+×2Ñ2°1°d·n±nÀjÐRSÓTˆNØ+×3Ñ3°B¸
ÀJÓOˆNà—~‘~ e¨\¸<ÐSa�~ÓbÐcdÑeˆàˆØ—~‘~ lÓ3ˆØ $§(¡(¨<Ó"8Ñ8ˆàšA˜q˜DÑ!Ð!r    r£   )
r   r   r   r$   r'   re   r‚   r   r€   r;   r<   s   @r!   r¡   r¡   $  s>   ø„ ð4Ð2õ 4ñ" E§L¡Lð "À(È5Ï<É<ÑBXð "Ðdi×dpÑdp÷ "r    r¡   c                   óz   — e Zd Z	 	 d	dej                  dej
                  dej                  dee   dee   de	fd„Z
y)
ÚSiglip2VisionModelNry   Úpixel_attention_maskrU   rŒ   r�   rW   c                 ó.   — | j                  |||||¬«      S ©N©ry   r‹   rU   rŒ   r�   )Úvision_model)r*   ry   r²   rU   rŒ   r�   s         r!   r€   zSiglip2VisionModel.forward>  s+   € ð × Ñ Ø%Ø/Ø)Ø/Ø!5ð !ó 
ð 	
r    rš   )r   r   r   re   r„   r‚   rƒ   r   r›   r   r€   r   r    r!   r±   r±   <  sa   „ ð -1Ø/3ñ
à×'Ñ'ð
ð $Ÿl™lð
ð ×(Ñ(ð	
ð
 $ D™>ð
ð ' t™nð
ð 
$ô
r    r±   c                   ó˜  — e Zd Z	 	 	 	 	 ddeej
                     deej                     deej                     dee   dee   dej
                  fd„Z		 	 	 	 	 	 	 	 	 dd	eej                     deej
                     deej                     deej                     d
eej                     deej                     dee   dee   dee   de
fd„Zy)ÚSiglip2ModelNry   r²   rU   rŒ   r�   rW   c                 ó²   — |�|n| j                   j                  }|�|n| j                   j                  }| j                  |||||¬«      }|j                  }|S r´   )rG   rŒ   r�   r¶   r‘   )r*   ry   r²   rU   rŒ   r�   Úvision_outputsÚpooled_outputs           r!   Úget_image_featureszSiglip2Model.get_image_featuresQ  st   € ð 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð 6:×5FÑ5FØ%Ø/Ø)Ø/Ø!5ð 6Gó 6
ˆð '×4Ñ4ˆàÐr    Ú	input_idsr‹   Úposition_idsÚreturn_lossc
           	      ó  — |�|n| j                   j                  }|	�|	n| j                   j                  }	| j                  |||||	¬«      }
| j	                  |||||	¬«      }|
j
                  }|j
                  }||j                  ddd¬«      z  }||j                  ddd¬«      z  }t        j                  ||j                  «       j                  |j                  «      «      }| j                  j                  |j                  «      | j                  j                  |j                  «      }}||j                  «       z  |z   }|j                  «       }d }|r t        j                  |j!                  d«      |j                  ¬«      }t        j"                  |«       d|z  z   }t        j$                  j&                  j)                  ||z  «      }t        j*                  |d¬	«       }|j-                  «       }t/        |||||||
¬
«      S )Nrµ   )r½   r‹   r¾   rŒ   r�   r\   rY   T)ÚpÚdimÚkeepdimr   )rZ   ©rÂ   )ÚlossÚlogits_per_imageÚlogits_per_textÚtext_embedsÚimage_embedsÚtext_model_outputÚvision_model_output)rG   rŒ   r�   r¶   Ú
text_modelr‘   Únormre   ÚmatmulÚtrj   rZ   Úlogit_scaleÚ
logit_biasÚexpÚeyer`   Ú	ones_likerL   Ú
functionalÚ
logsigmoidÚsumÚmeanrD   )r*   r½   ry   r²   rU   r‹   r¾   r¿   rŒ   r�   rº   Útext_outputsrÉ   rÈ   rÇ   rÐ   rÑ   rÆ   rÅ   rÓ   Úm1_diag1ÚloglikÚnlls                          r!   r€   zSiglip2Model.forwardl  sÿ  € ð 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð 6:×5FÑ5FØ%Ø/Ø)Ø/Ø!5ð 6Gó 6
ˆð 48·?±?ØØ)Ø%Ø/Ø!5ð 4Có 4
ˆð &×3Ñ3ˆØ"×0Ñ0ˆð $ l×&7Ñ&7¸!ÀÈTÐ&7Ó&RÑRˆØ! K×$4Ñ$4°q¸bÈ$Ð$4Ó$OÑOˆô  Ÿ,™, {°L·N±NÓ4D×4GÑ4GÈ×HZÑHZÓ4[Ó\ˆà"&×"2Ñ"2×"5Ñ"5°k×6HÑ6HÓ"IÈ4Ï?É?×K]ÑK]Ð^i×^pÑ^pÓKq�ZˆØ)¨K¯O©OÓ,=Ñ=À
ÑJˆà*×,Ñ,Ó.ÐàˆÙä—)‘)˜O×0Ñ0°Ó3¸O×<RÑ<RÔSˆCÜŸ™¨Ó8Ð8¸1¸s¹7ÑBˆHÜ—X‘X×(Ñ(×3Ñ3°H¸Ñ4NÓOˆFÜ—9‘9˜V¨Ô,Ð,ˆCØ—8‘8“:ˆDäØØ-Ø+Ø#Ø%Ø*Ø .ô
ð 	
r    )NNNNN)	NNNNNNNNN)r   r   r   r   re   r„   r‚   rƒ   r›   r¼   rD   r€   r   r    r!   r¸   r¸   O  sX  „ ð 59Ø7;Ø59Ø,0Ø/3ñà˜u×0Ñ0Ñ1ðð ' u§|¡|Ñ4ðð ! ×!1Ñ!1Ñ2ð	ð
 $ D™>ðð ' t™nðð 
×	Ñ	óð: 15Ø48Ø7;Ø59Ø15Ø37Ø&*Ø,0Ø/3ñB
à˜E×,Ñ,Ñ-ðB
ð ˜u×0Ñ0Ñ1ðB
ð ' u§|¡|Ñ4ð	B
ð
 ! ×!1Ñ!1Ñ2ðB
ð ! §¡Ñ.ðB
ð ˜u×/Ñ/Ñ0ðB
ð ˜d‘^ðB
ð $ D™>ðB
ð ' t™nðB
ð 
ôB
r    r¸   c                   ó²   — e Zd Z	 	 	 	 	 	 d
deej
                     deej
                     deej                     deej
                     dee   dee   defd	„Z	y)ÚSiglip2ForImageClassificationNry   r²   rU   ÚlabelsrŒ   r�   rW   c                 ó8  — |�|n| j                   j                  }|�|n| j                   j                  }| j                  |||||¬«      }|j                  }|�Q|d   j                  |j                  «      }	t        j                  ||	z  d¬«      t        j                  |	d¬«      z  }nt        j                  |d¬«      }| j                  |«      }
d }|��¢|j                  |
j                  «      }| j                   j                  €�| j                  dk(  rd| j                   _        nl| j                  dkD  rL|j                  t        j                  k(  s|j                  t        j                  k(  rd| j                   _        nd| j                   _        | j                   j                  dk(  rIt!        «       }| j                  dk(  r& ||
j#                  «       |j#                  «       «      }nŒ ||
|«      }n‚| j                   j                  dk(  r=t%        «       } ||
j'                  d| j                  «      |j'                  d«      «      }n,| j                   j                  dk(  rt)        «       } ||
|«      }t+        ||
|j,                  |j.                  ¬	«      S )
N)r‹   rU   rŒ   r�   ).Nr]   rÄ   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationrY   )rÅ   Úlogitsr’   r“   )rG   rŒ   r�   r¶   r�   rj   rZ   re   r×   rØ   Ú
classifierÚproblem_typeÚ
num_labelsr[   ÚlongrO   r   Úsqueezer   Úviewr   r   r’   r“   )r*   ry   r²   rU   rß   rŒ   r�   ÚoutputsÚsequence_outputÚ	pool_maskrä   rÅ   Úloss_fcts                r!   r€   z%Siglip2ForImageClassification.forward³  s7  € ð 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð /3×.?Ñ.?ØØ/Ø)Ø/Ø!5ð /@ó /
ˆð "×3Ñ3ˆð  Ð+Ø,¨YÑ7×:Ñ:¸?×;QÑ;QÓRˆIÜ#Ÿi™i¨¸)Ñ(CÈÔKÌeÏiÉiÐXaÐghÔNiÑi‰Oä#Ÿj™j¨¸aÔ@ˆOð —‘ Ó1ˆàˆØÑà—Y‘Y˜vŸ}™}Ó-ˆFØ�{‰{×'Ñ'Ð/Ø—?‘? aÒ'Ø/;�D—K‘KÕ,Ø—_‘_ qÒ(¨f¯l©l¼e¿j¹jÒ.HÈFÏLÉLÔ\a×\eÑ\eÒLeØ/L�D—K‘KÕ,à/K�D—K‘KÔ,à�{‰{×'Ñ'¨<Ò7Ü"›9�Ø—?‘? aÒ'Ù# F§N¡NÓ$4°f·n±nÓ6FÓG‘Dá# F¨FÓ3‘DØ—‘×)Ñ)Ð-JÒJÜ+Ó-�Ù §¡¨B°·±Ó @À&Ç+Á+ÈbÃ/ÓR‘Ø—‘×)Ñ)Ð-IÒIÜ,Ó.�Ù ¨Ó/�ä$ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r    )NNNNNN)
r   r   r   r   re   r‚   rƒ   r›   r   r€   r   r    r!   rÞ   rÞ   ±  s•   „ ð 04Ø7;Ø59Ø)-Ø,0Ø/3ñ@
à˜uŸ|™|Ñ,ð@
ð ' u§|¡|Ñ4ð@
ð ! ×!1Ñ!1Ñ2ð	@
ð
 ˜Ÿ™Ñ&ð@
ð $ D™>ð@
ð ' t™nð@
ð 
ô@
r    rÞ   )r>   r   r$   r¸   r�   rŸ   r±   rÞ   )/Útypingr   re   Útorch.nnrL   Útorch.nn.functionalrÕ   rm   r   r   r   Ú/transformers.models.siglip.configuration_siglipr   r   r	   Ú*transformers.models.siglip.modeling_siglipr
   r   r   r   r   r   r   r   r   r   r   r   r   Úmodeling_attn_mask_utilsr   r   r$   r>   r@   rB   rD   ÚModulerF   r†   r�   rŸ   r¡   r±   r¸   rÞ   Ú__all__r   r    r!   ú<module>r÷      s  ðõ ã Ý ß Ð ß AÑ Aç nÑ n÷÷ ÷ õ õ  Cô	Ð(ô 	ôCÐ,ô CôL	�Lô 	ô	Ð1ô 	ô	Ð-ô 	ô	�Lô 	ôb˜bŸi™iô bôJ0
Ð6ô 0
ôf	Ð2ô 	ô	�ô 	ô"Ð+Nô "ô0
Ð*ô 
ô&_
�;ô _
ôDB
Ð$@ô B
òJ	�r    