+
    œ°³j) ã                   ó&  € R t ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RI	H
t
 ^RIHt ^RIHtHt ^R	IHtHtHt ^R
IHtHt ^RIHt ^RIHtHtHtHtHt ^RI H!t!H"t" ^RI#H$t$ ^RI%H&t& ^RI'H(t(H)t)H*t*H+t+ ^RI,H-t-H.t. ^RI/H0t0 ^RI1H2t2H3t3H4t4 ]*Pj                  ! ]64      t7Rt8])! RR7      ] ! R R]4      4       4       t9])! RR7      ] ! R R]4      4       4       t: ! R R]Pv                  4      t< ! R R]Pv                  4      t= ! R  R!]Pv                  4      t> ! R" R#]Pv                  4      t? ! R$ R%]Pv                  4      t@ ! R& R']Pv                  4      tA ! R( R)]Pv                  4      tB ! R* R+]Pv                  4      tC ! R, R-]Pv                  4      tDRYR. R/ lltE ! R0 R1]Pv                  4      tF ! R2 R3]Pv                  4      tG ! R4 R5]Pv                  4      tH ! R6 R7]Pv                  4      tI ! R8 R9]4      tJ ! R: R;]Pv                  4      tK ! R< R=]Pv                  4      tL]) ! R> R?]"4      4       tM ! R@ RA]M4      tN])! RBR7       ! RC RD]M4      4       tO])! RER7       ! RF RG]M4      4       tP ! RH RI]Pv                  4      tQ ! RJ RK]Pv                  4      tR ! RL RM]Pv                  4      tS])! RNR7       ! RO RP]M4      4       tT])! RQR7       ! RR RS]M4      4       tU ! RT RU]Pv                  4      tV])! RVR7       ! RW RX]M4      4       tW. RZOtXR# )[zPyTorch BridgeTower Model)ÚOrderedDict)ÚCallable)Ú	dataclassN)Únn)ÚCrossEntropyLoss)Úinitialization)ÚACT2FNÚQuickGELUActivation)ÚCacheÚDynamicCacheÚEncoderDecoderCache)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚGradientCheckpointingLayer)Ú)BaseModelOutputWithPastAndCrossAttentionsÚ,BaseModelOutputWithPoolingAndCrossAttentionsÚMaskedLMOutputÚModelOutputÚSequenceClassifierOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)ÚTransformersKwargsÚauto_docstringÚloggingÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputs)ÚBridgeTowerConfigÚBridgeTowerTextConfigÚBridgeTowerVisionConfigÚRobertaTokenizerz.
    Output type of [`BridgeTowerModel`].
    )Úcustom_introc                   óD   a € ] tR t^2t o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚBridgeTowerModelOutputa‹  
text_features (`torch.FloatTensor` of shape `(batch_size, text_sequence_length, hidden_size)`):
    Sequence of hidden-states at the text output of the last layer of the model.
image_features (`torch.FloatTensor` of shape `(batch_size, image_sequence_length, hidden_size)`):
    Sequence of hidden-states at the image output of the last layer of the model.
pooler_output (`torch.FloatTensor` of shape `(batch_size, hidden_size x 2)`):
    Concatenation of last layer hidden-state of the first token of the text and image sequence (classification
    token), respectively, after further processing through layers used for auxiliary pretraining tasks.
Nc                ó   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   # )é   NÚtext_featuresÚimage_featuresÚpooler_outputÚhidden_statesÚ
attentions©ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úu/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/bridgetower/modeling_bridgetower.pyÚ__annotate__Ú#BridgeTowerModelOutput.__annotate__2   s‡   ø‡ ‚ ñ" ×$Ñ$ tÕ+Ñ2ñ# ñ$ ×%Ñ%¨Õ,Ñ3ñ% ñ& ×$Ñ$ tÕ+Ñ2ñ' ñ( ™×*Ñ*Õ+¨dÕ2Ñ9ñ) ñ* ‘e×'Ñ'Õ(¨4Õ/Ñ6ò+ ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r)   r*   r+   r,   r-   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r3   s   @r4   r&   r&   2   s,   ø‡ € ñð /3€MØ/3€NØ.2€MØ59€MØ26€J÷+ ƒ r7   r&   z>
    Output type of ['BridgeTowerForContrastiveLearning']
    c                   óL   a € ] tR t^Jt o RtRtRtRtRtRt	Rt
RtV 3R ltRtV tR# )ÚBridgeTowerContrastiveOutputa¾  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `return_loss` is `True`):
    Image-text contrastive loss.
logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.vocab_size)`):
    Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
text_embeds (`torch.FloatTensor)`, *optional*, returned when model is initialized with `with_projection=True`):
    The text embeddings obtained by applying the projection layer to the pooler_output.
image_embeds (`torch.FloatTensor)`, *optional*, returned when model is initialized with `with_projection=True`):
    The image embeddings obtained by applying the projection layer to the pooler_output.
cross_embeds (`torch.FloatTensor)`, *optional*, returned when model is initialized with `with_projection=True`):
    The text-image cross-modal embeddings obtained by applying the projection layer to the pooler_output.
attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
    Tuple of `torch.FloatTensor` (one for each layer) of shape `(batch_size, num_heads, sequence_length,
    sequence_length)`.
Nc                ó¬  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   # )	r(   NÚlossÚlogitsÚtext_embedsÚimage_embedsÚcross_embedsr,   r-   r.   )r2   r3   s   "€r4   r5   Ú)BridgeTowerContrastiveOutput.__annotate__J   sÆ   ø‡ ‚ ñ. ×
Ñ
˜dÕ
"Ñ)ñ/ ñ0 ×Ñ Õ$Ñ+ñ1 ñ2 ‘u×(Ñ(Õ)¨DÕ0Ñ7ñ3 ñ4 ™×)Ñ)Õ*¨TÕ1Ñ8ñ5 ñ6 ™×)Ñ)Õ*¨TÕ1Ñ8ñ7 ñ8 ™×*Ñ*Õ+¨dÕ2Ñ9ñ9 ñ: ‘e×'Ñ'Õ(¨4Õ/Ñ6ò; r7   r8   )r9   r:   r;   r<   r=   rE   rF   rG   rH   rI   r,   r-   r>   r?   r@   rA   s   @r4   rC   rC   J   s6   ø‡ € ñð  &*€DØ'+€FØ37€KØ48€LØ48€LØ59€MØ26€J÷; ƒ r7   rC   c                   óZ   a a€ ] tR t^jt oV 3R ltV3R lR ltRV3R lR lltRtVtV ;t	# )ÚBridgeTowerResidualAttentionc                óŽ  <€ \         SV `  4        \        P                  ! VP                  VP                  ^@,          4      V n        \        P                  ! VP                  VP                  R7      V n        \        P                  ! \        R\        P                  ! VP                  VP                  ^,          4      3R\        4       3R\        P                  ! VP                  ^,          VP                  4      3.4      4      V n        \        P                  ! VP                  VP                  R7      V n        RV n        R# )é@   ©ÚepsÚc_fcÚgeluÚc_projN)ÚsuperÚ__init__r   ÚMultiheadAttentionÚhidden_sizeÚattnÚ	LayerNormÚlayer_norm_epsÚln_1Ú
ModuleDictr   ÚLinearr	   ÚmlpÚln_2Ú	attn_mask©ÚselfÚconfigÚ	__class__s   &&€r4   rU   Ú%BridgeTowerResidualAttention.__init__k   së   ø€ Ü‰ÑÔä×)Ò)¨&×*<Ñ*<¸f×>PÑ>PÐTVÕ>VÓWˆŒ	Ü—L’L ×!3Ñ!3¸×9NÑ9NÔOˆŒ	Ü—=’=ÜàœRŸYšY v×'9Ñ'9¸6×;MÑ;MÐPQÕ;QÓRÐSØÔ0Ó2Ð3ØœrŸyšy¨×);Ñ);¸aÕ)?À×ASÑASÓTÐUðóó
ˆŒô —L’L ×!3Ñ!3¸×9NÑ9NÔOˆŒ	ØˆŽr7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r(   Úhidden_stateÚattention_mask©r/   ÚTensor)r2   r3   s   "€r4   r5   Ú)BridgeTowerResidualAttention.__annotate__|   s#   ø€ ÷ ñ ¡e§l¡lð ÁEÇLÁLñ r7   c           	     ó<  € Ve,   VP                  \        P                  VP                  R7      pV P                  e2   V P                  P                  VP
                  VP                  R7      MR V n        V P                  VVVRV P                  VR7      ^ ,          # )N©ÚdtypeÚdeviceF)Úneed_weightsr`   Úkey_padding_mask)Útor/   Úboolro   r`   rn   rX   )rb   rg   rh   s   &&&r4   Ú	attentionÚ&BridgeTowerResidualAttention.attention|   sš   € ØÒ%Ø+×.Ñ.´U·Z±ZÈ×H[ÑH[Ð.Ó\ˆNð �~‰~Ò)ð �N‰N×Ñ L×$6Ñ$6¸|×?RÑ?RÐÔSàð 	Œð
 �y‰yØØØØØ—n‘nØ+ð ó 
ð õð 	r7   c                ó\   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          /# ©r(   rg   rh   Nri   )r2   r3   s   "€r4   r5   rk   �   s)   ø€ ÷ ñ ¡E§L¡Lð Á%Ç,Á,ÐQUÕBUñ r7   c                óØ   € WP                  V P                  V4      V4      ,           pV P                  V4      pV P                  P	                  4        F  pV! V4      pK  	  W1,           pV# ©N)rt   r[   r_   r^   Úvalues)rb   rg   rh   Úresidual_stateÚlayers   &&&  r4   ÚforwardÚ$BridgeTowerResidualAttention.forward�   sZ   € Ø%¯©°t·y±yÀÓ7NÐP^Ó(_Õ_ˆØ—y‘y Ó0ˆØ—X‘X—_‘_Ö&ˆEÙ  Ó.ŠLñ 'à%Õ4ˆØÐr7   )rX   r`   r[   r_   r^   ry   )
r9   r:   r;   r<   rU   rt   r}   r?   r@   Ú__classcell__©rd   r3   s   @@r4   rL   rL   j   s#   ù‡ € õ÷"ð ÷"÷ ò r7   rL   c                   óH   a a€ ] tR t^–t oV 3R ltRV3R lR lltRtVtV ;t# )ÚBridgeTowerTransformerc                óî  <€ \         SV `  4        VP                  V n        VP                  V n        VP                  '       dP   \
        P                  ! \        V P                  ^,
          4       Uu. uF  p\        V4      NK  	  up4      V n	        MG\
        P                  ! \        V P                  4       Uu. uF  p\        V4      NK  	  up4      V n	        VP                  V n
        R# u upi u upi )é   N)rT   rU   rW   Únum_hidden_layersÚremove_last_layerr   Ú
ModuleListÚrangerL   Ú	resblocksÚstop_gradient©rb   rc   Ú_rd   s   && €r4   rU   ÚBridgeTowerTransformer.__init__—   sÄ   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔØ×#×#Ð#ÜŸ]š]Ü?DÀT×E[ÑE[Ð^_ÕE_Ô?`ÓaÑ?`¸!Ô-¨fÖ5Ñ?`ÑaóˆD�Nô  Ÿ]š]Ü?DÀT×E[ÑE[Ô?\Ó]Ñ?\¸!Ô-¨fÖ5Ñ?\Ñ]óˆDŒNð $×1Ñ1ˆÖùò bùò ^s   Á2C-Â:C2c                ó\   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          /# rw   ri   )r2   r3   s   "€r4   r5   Ú#BridgeTowerTransformer.__annotate__¥   s)   ø€ ÷ ñ ¡E§L¡Lð Á%Ç,Á,ÐQUÕBUñ r7   c                óÈ   € . pV P                    FO  pV! W4      pV P                  '       d"   VP                  VP                  4       4       K>  VP                  V4       KQ  	  V# ry   )r‰   rŠ   ÚappendÚdetach)rb   rg   rh   r,   Úblocks   &&&  r4   r}   ÚBridgeTowerTransformer.forward¥   sX   € ØˆØ—^”^ˆEÙ  Ó>ˆLØ×!×!Ð!Ø×$Ñ$ \×%8Ñ%8Ó%:Ö;à×$Ñ$ \Ö2ñ $ð Ðr7   )rW   r…   r‰   rŠ   ry   ©	r9   r:   r;   r<   rU   r}   r?   r@   r   r€   s   @@r4   r‚   r‚   –   s   ù‡ € õ2÷÷ ò r7   r‚   c                   óf   a a€ ] tR t^±t oV3R lV 3R lltV3R lR ltRV3R lR lltRtVtV ;t	# )	ÚBridgeTowerVisionEmbeddingsc                ó    <€ V ^8„  d   QhRS[ /# ©r(   rc   ©r"   )r2   r3   s   "€r4   r5   Ú(BridgeTowerVisionEmbeddings.__annotate__²   s   ø€ ÷ jñ jÑ6ñ jr7   c                ó  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        VP                  V n        \        P                  ! \        P                  ! V P                  4      4      V n        \        P                  ! VP                  V P                  V P                  V P                  R R7      V n        V P
                  V P                  ,          ^,          V n        V P                  ^,           V n        \        P"                  ! V P                   V P                  4      V n        \        P&                  ! \        P(                  ! V P                   4      P+                  R4      R R7      V n        R# )F)Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚbias©Ú
persistentN©r„   éÿÿÿÿ)rT   rU   rc   rW   Ú	embed_dimÚ
image_sizeÚ
patch_sizer   Ú	Parameterr/   ÚrandnÚclass_embeddingÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingÚBufferÚarangeÚexpandÚposition_idsra   s   &&€r4   rU   Ú$BridgeTowerVisionEmbeddings.__init__²   s  ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒØ ×+Ñ+ˆŒä!Ÿ|š|¬E¯KªK¸¿¹Ó,GÓHˆÔä!ŸyšyØ×+Ñ+ØŸ™ØŸ™Ø—?‘?Øô 
ˆÔð !ŸO™O¨t¯©Õ>À1ÕDˆÔØ!×-Ñ-°Õ1ˆÔÜ"$§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÔÜŸIšI¤e§l¢l°4×3EÑ3EÓ&F×&MÑ&MÈgÓ&VÐchÔiˆÖr7   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r(   Ú
embeddingsÚheightÚwidthÚreturn©r/   rj   Úint)r2   r3   s   "€r4   r5   r›   È   s;   ø€ ÷ 'Dñ 'D±5·<±<ð 'DÉð 'DÑUXð 'DÑ]b×]iÑ]iñ 'Dr7   c                ó  € VP                   ^,          ^,
          pV P                  P                  P                  ^ 4      pVP                   ^,          ^,
          p\        P
                  P                  4       '       g(   WF8X  d"   W#8X  d   V P                  V P                  4      # VR,          pVR,          pVP                   R,          p	W P                  ,          p
W0P                  ,          p\        VR,          4      pVP                  ^WÌV	4      pVP                  ^ ^^^4      p\        P                  P                  VW«3RRR7      pVP                  ^ ^^^4      P                  ^RV	4      p\        P                   ! Wx3^R7      # )	aÐ  
This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher resolution
images. This method is also adapted to support torch.jit tracing.

Adapted from:
- https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
- https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
ç      à?ÚbicubicF)ÚsizeÚmodeÚalign_corners©Údim)ºNNN:Nr„   N)rÇ   :r„   NNr¥   )Úshaper²   ÚweightÚ	unsqueezer/   ÚjitÚ
is_tracingr¶   r¨   r   ÚreshapeÚpermuter   Ú
functionalÚinterpolateÚviewÚcat)rb   r¹   rº   r»   r¯   r²   r°   Úclass_pos_embedÚpatch_pos_embedrÆ   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&         r4   Úinterpolate_pos_encodingÚ4BridgeTowerVisionEmbeddings.interpolate_pos_encodingÈ   s[  € ð !×&Ñ& qÕ)¨AÕ-ˆØ!×4Ñ4×;Ñ;×EÑEÀaÓHÐØ*×0Ñ0°Õ3°aÕ7ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×*Ñ*¨4×+<Ñ+<Ó=Ð=à,¨UÕ3ˆØ,¨UÕ3ˆà×Ñ˜rÕ"ˆàŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	ä& }°cÕ'9Ó:ÐØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆäŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆä�yŠy˜/Ð;ÀÔCÐCr7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r(   Úpixel_valuesr¼   )r/   r0   rj   )r2   r3   s   "€r4   r5   r›   ñ   s(   ø€ ÷ ñ ¡E×$5Ñ$5ð ÑZ_×ZfÑZfñ r7   c                ó‚  € VP                   w  r4rVV'       gM   WPP                  8w  g   W`P                  8w  d-   \        R V RV RV P                   RV P                   R2	4      hV P                  P                  P
                  pV P                  VP                  VR7      4      pVP                  ^4      P                  ^^4      pV P                  P                  V^R4      p	\        P                  ! W˜.^R7      p
V'       d   W P                  W¥V4      ,           p
V
# W P                  V P                  4      ,           p
V
# )zInput image size (Ú*z) doesn't match model (z).©rn   rÅ   r¥   )rÈ   r§   Ú
ValueErrorr®   rÉ   rn   rr   ÚflattenÚ	transposer«   rµ   r/   rÒ   rØ   r²   r¶   )rb   rÛ   rØ   Ú
batch_sizerŒ   rº   r»   Útarget_dtypeÚpatch_embedsÚclass_embedsr¹   s   &&&        r4   r}   Ú#BridgeTowerVisionEmbeddings.forwardñ   s$  € Ø'3×'9Ñ'9Ñ$ˆ
�vß'¨V·±Ô-FÈ%×SbÑSbÔJbÜØ$ V H¨A¨e¨WÐ4KÈDÏOÉOÐK\Ð\]Ð^b×^mÑ^mÐ]nÐnpÐqóð ð ×+Ñ+×2Ñ2×8Ñ8ˆØ×+Ñ+¨L¯O©OÀ,¨OÓ,OÓPˆØ#×+Ñ+¨AÓ.×8Ñ8¸¸AÓ>ˆà×+Ñ+×2Ñ2°:¸qÀ"ÓEˆÜ—Y’Y Ð;ÀÔCˆ
ß#Ø#×&CÑ&CÀJÐX]Ó&^Õ^ˆJð Ðð $×&=Ñ&=¸d×>OÑ>OÓ&PÕPˆJØÐr7   )
r«   rc   r¦   r§   r¯   r°   r®   r¨   r²   r¶   ©F)
r9   r:   r;   r<   rU   rØ   r}   r?   r@   r   r€   s   @@r4   r—   r—   ±   s-   ù‡ € ÷jó j÷,'Dð 'D÷R÷ ò r7   r—   c                   óp   a a€ ] tR tRt oV 3R ltR
V3R lR lltR
V3R lR lltV3R lR ltR	tVt	V ;t
# )ÚBridgeTowerVisionTransformeri  c           
     óL  <€ \         SV `  4        \        V4      V n        \        P
                  ! VP                  VP                  R 7      V n        \        V4      V n
        \        P
                  ! VP                  VP                  R 7      V n        VP                  V n        VP                  '       gk   \        P                  ! \        VP                  4       Uu. uF/  p\        P
                  ! VP                  VP                  R 7      NK1  	  up4      V n        R# R# u upi ©rO   N)rT   rU   r—   r¹   r   rY   rW   rZ   Úln_prer‚   ÚtransformerÚln_postÚshare_layernormr‡   rˆ   r…   Úln_separater‹   s   && €r4   rU   Ú%BridgeTowerVisionTransformer.__init__  sÎ   ø€ Ü‰ÑÔä5°fÓ=ˆŒÜ—l’l 6×#5Ñ#5¸6×;PÑ;PÔQˆŒÜ1°&Ó9ˆÔÜ—|’| F×$6Ñ$6¸F×<QÑ<QÔRˆŒØ%×5Ñ5ˆÔØ×%×%Ð%Ü!Ÿ}š}ÜV[Ð\b×\tÑ\tÔVuÓvÑVuÐQR”—’˜f×0Ñ0°f×6KÑ6K×LÑVuÑvó ˆDÖñ &ùâvs   Ã5D!c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# ©r(   rÛ   rØ   ©r/   rj   rs   )r2   r3   s   "€r4   r5   Ú)BridgeTowerVisionTransformer.__annotate__  s#   ø€ ÷ ñ á—l‘lðñ #'ñ	r7   c                óÖ  € V P                  W4      pV P                  V4      pVP                  ^^ ^4      pV P                  WB4      p\        P
                  ! V^ R7      pVP                  ^ ^^^4      pV P                  '       d   V P                  V4      pV# . p\        W@P                  4       F  w  rFV! V4      pVP                  V4       K   	  \        P
                  ! V^ R7      pV# )r„   rÅ   )r¹   rì   rÎ   rí   r/   Ústackrï   rî   Úziprð   r‘   )rb   rÛ   rh   rØ   r,   Úhidden_states_stackÚlns   &&&&   r4   r}   Ú$BridgeTowerVisionTransformer.forward  sÞ   € ð Ÿ™¨ÓOˆØŸ™ MÓ2ˆà%×-Ñ-¨a°°AÓ6ˆà×(Ñ(¨ÓGˆäŸš M°qÔ9ˆà%×-Ñ-¨a°°A°qÓ9ˆØ××ÐØ ŸL™L¨Ó7ˆMð Ðð #%ÐÜ%(¨×8HÑ8HÖ%IÑ!�Ù " =Ó 1�Ø#×*Ñ*¨=Ö9ñ &Jô "ŸKšKÐ(;ÀÔCˆMØÐr7   c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# ró   rô   )r2   r3   s   "€r4   r5   rõ   -  s#   ø€ ÷ 	ñ 	á—l‘lð	ñ #'ñ	r7   c                ór   € V P                  WR 7      pV P                  V4      pVP                  ^^ ^4      pV# )©rØ   )r¹   rì   rÎ   )rb   rÛ   rØ   r,   s   &&& r4   Úforward_preÚ(BridgeTowerVisionTransformer.forward_pre-  s<   € ð
 Ÿ™¨˜ÓhˆØŸ™ MÓ2ˆà%×-Ñ-¨a°°AÓ6ˆØÐr7   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r(   rg   ri   )r2   r3   s   "€r4   r5   rõ   8  s   ø€ ÷ "ñ "©¯©ñ "r7   c                óN   € VP                  ^^ ^4      pV P                  V4      pV# ©r„   )rÎ   rî   )rb   rg   Úvisual_output_posts   && r4   Úforward_postÚ)BridgeTowerVisionTransformer.forward_post8  s-   € Ø)×1Ñ1°!°Q¸Ó:ÐØ!Ÿ\™\Ð*<Ó=ÐØ!Ð!r7   )r¹   rî   rì   rð   rï   rí   rç   )r9   r:   r;   r<   rU   r}   rÿ   r  r?   r@   r   r€   s   @@r4   ré   ré     s-   ù‡ € õ÷ò ÷6	ò 	÷"÷ "ð "r7   ré   c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚBridgeTowerLinkToweri>  c                ó   <€ \         SV `  4        VP                  V n        VP                  V n        VP                  R	9   dµ   VP                  R8X  d1   \        P
                  ! \        P                  ! R4      4      V n        M@VP                  R8X  d0   \        P
                  ! \        P                  ! R4      4      V n	        \        P                  ! V P                  VP                  R7      V n
        R# \        RVP                   R24      h)
ÚaddÚ
scaled_addrÐ   g      ð?rÀ   rO   úlink_tower_type ú is not implementedN)r
  r  rÐ   )rT   rU   Úlink_tower_typerW   r   r©   r/   ÚtensorÚscaled_factorÚbetarY   rZ   ÚNotImplementedErrorra   s   &&€r4   rU   ÚBridgeTowerLinkTower.__init__?  sÃ   ø€ Ü‰ÑÔØ%×5Ñ5ˆÔØ!×-Ñ-ˆÔØ×!Ñ!Ð%IÔIØ×%Ñ%¨Ô5Ü%'§\¢\´%·,²,¸sÓ2CÓ%D�Õ"Ø×'Ñ'¨=Ô8ÜŸLšL¬¯ª°cÓ):Ó;�”	ÜŸ\š\¨$×*:Ñ*:À×@UÑ@UÔVˆDŽNä%Ð(8¸×9OÑ9OÐ8PÐPcÐ&dÓeÐer7   c                ó˜  € V P                   R 8X  d   V P                  W,           4      # V P                   R8X  d)   V P                  WP                  ,          V,           4      # V P                   R8X  dA   V P                  V^V P                  ,
          ,          W P                  ,          ,           4      # \	        RV P                    R24      h)r
  r  rÐ   r  r  )r  rY   r  r  r  )rb   r,   Úcross_modal_hidden_statesrh   s   &&&&r4   r}   ÚBridgeTowerLinkTower.forwardL  s¤   € Ø×Ñ 5Ô(Ø—>‘> -Õ"KÓLÐLØ×!Ñ! \Ô1Ø—>‘> -×2DÑ2DÕ"DÐG`Õ"`ÓaÐaØ×!Ñ! ]Ô2Ø—>‘> -°1°t·y±yµ=Õ"AÐD]×`iÑ`iÕDiÕ"iÓjÐjä%Ð(8¸×9MÑ9MÐ8NÐNaÐ&bÓcÐcr7   )rY   r  rW   r  r  r•   r€   s   @@r4   r  r  >  s   ù‡ € õf÷dò dr7   r  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚBridgeTowerSelfOutputiX  c                ó0  <€ \         SV `  4        \        P                  ! VP                  VP                  4      V n        \        P                  ! VP                  VP                  R 7      V n        \        P                  ! VP                  4      V n
        R# rë   )rT   rU   r   r]   rW   ÚdenserY   rZ   ÚDropoutÚhidden_dropout_probÚdropoutra   s   &&€r4   rU   ÚBridgeTowerSelfOutput.__init__Y  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr7   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# ©r(   r,   Úinput_tensorr¼   ri   )r2   r3   s   "€r4   r5   Ú"BridgeTowerSelfOutput.__annotate___  ó1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð ÑRW×R^ÑR^ñ r7   c                óx   € V P                  V4      pV P                  V4      pV P                  W,           4      pV# ry   ©r  r  rY   ©rb   r,   r!  s   &&&r4   r}   ÚBridgeTowerSelfOutput.forward_  ó5   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™ }Õ'CÓDˆØÐr7   ©rY   r  r  r•   r€   s   @@r4   r  r  X  ó   ù‡ € õ>÷÷ ð r7   r  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚBridgeTowerIntermediateig  c                ó"  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        VP                  \        4      '       d   \        VP                  ,          V n        R # VP                  V n        R # ry   )rT   rU   r   r]   rW   Úintermediate_sizer  Ú
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnra   s   &&€r4   rU   Ú BridgeTowerIntermediate.__init__h  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬×-Ò-Ü'-¨f×.?Ñ.?Õ'@ˆDÖ$à'-×'8Ñ'8ˆDÖ$r7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r(   r,   r¼   ri   )r2   r3   s   "€r4   r5   Ú$BridgeTowerIntermediate.__annotate__p  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r7   c                óJ   € V P                  V4      pV P                  V4      pV# ry   ©r  r2  ©rb   r,   s   &&r4   r}   ÚBridgeTowerIntermediate.forwardp  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr7   r8  r•   r€   s   @@r4   r,  r,  g  s   ù‡ € õ9÷÷ ð r7   r,  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚBridgeTowerOutputiw  c                ó0  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP
                  VP                  R 7      V n        \        P                  ! VP                  4      V n        R# rë   )rT   rU   r   r]   r.  rW   r  rY   rZ   r  r  r  ra   s   &&€r4   rU   ÚBridgeTowerOutput.__init__x  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr7   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# r   ri   )r2   r3   s   "€r4   r5   ÚBridgeTowerOutput.__annotate__~  r#  r7   c                óx   € V P                  V4      pV P                  V4      pV P                  W,           4      pV# ry   r%  r&  s   &&&r4   r}   ÚBridgeTowerOutput.forward~  r(  r7   r)  r•   r€   s   @@r4   r<  r<  w  r*  r7   r<  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚBridgeTowerPooleri†  c                ó¸   <€ \         SV `  4        \        P                  ! VP                  VP                  4      V n        \        P                  ! 4       V n        R # ry   )rT   rU   r   r]   rW   r  ÚTanhÚ
activationra   s   &&€r4   rU   ÚBridgeTowerPooler.__init__‡  s9   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸ'š'›)ˆŽr7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r5  ri   )r2   r3   s   "€r4   r5   ÚBridgeTowerPooler.__annotate__Œ  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r7   c                ó\   € VR,          pV P                  V4      pV P                  V4      pV# )rÇ   )rÇ   é    )r  rG  )rb   r,   Úfirst_token_tensorÚpooled_outputs   &&  r4   r}   ÚBridgeTowerPooler.forwardŒ  s2   € ð +¨4Õ0ÐØŸ
™
Ð#5Ó6ˆØŸ™¨Ó6ˆØÐr7   )rG  r  r•   r€   s   @@r4   rD  rD  †  s   ù‡ € õ$÷
÷ ð r7   rD  c                ó  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R,          R\        R	\
        \        ,          /# )
r(   ÚmoduleÚqueryÚkeyÚvaluerh   NÚscalingr  Úkwargs)r   ÚModuler/   rj   Úfloatr   r   )r2   s   "r4   r5   r5   –  s{   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô �T�\ð%ô ð%ô Ô'Õ(ñ%r7   c                 ó¶  € Vf   VP                  R4      R,          p\        P                  ! WP                  ^^4      4      V,          pVe	   W„,           p\        P
                  P                  VRR7      p\        P
                  P                  W†V P                  R7      p\        P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )NrÅ   )ÚpÚtrainingr¥   ç      à¿)
rÂ   r/   Úmatmulrá   r   rÏ   Úsoftmaxr  r[  Ú
contiguous)
rQ  rR  rS  rT  rh   rU  r  rV  Úattn_weightsÚattn_outputs
   &&&&&&&,  r4   Úeager_attention_forwardrb  –  s±   € ð ‚Ø—*‘*˜R“. DÕ(ˆô —<’< §}¡}°Q¸Ó':Ó;¸gÕE€LàÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2Ð(Ó>€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r7   c                   óL   a a€ ] tR tRt oRV 3R lltRV3R lR lltRtVtV ;t# )ÚBridgeTowerSelfAttentioni³  c                ót  <€ \         SV `  4        VP                  VP                  ,          ^ 8w  d9   \	        VR4      '       g'   \        RVP                   RVP                   R24      hWn        VP                  V n        \        VP                  VP                  ,          4      V n        V P                  V P                  ,          V n	        V P                  R,          V n
        \        P                  ! VP                  V P                  4      V n        \        P                  ! VP                  V P                  4      V n        \        P                  ! VP                  V P                  4      V n        \        P                   ! VP"                  4      V n        VP&                  V n        W n        W0n        R# ©rL  Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (Ú)Nr\  )rT   rU   rW   Únum_attention_headsÚhasattrrß   rc   r¾   Úattention_head_sizeÚall_head_sizerU  r   r]   rR  rS  rT  r  Úattention_probs_dropout_probr  Ú
is_decoderÚ	is_causalÚ	layer_idx©rb   rc   ro  rp  rd   s   &&&&€r4   rU   Ú!BridgeTowerSelfAttention.__init__´  sM  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Õ:¸aÔ?ÌÐPVÐXh×HiÒHiÜØ# F×$6Ñ$6Ð#7ð 8Ø ×4Ñ4Ð5°Qð8óð ð Œà#)×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÕ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔØ×/Ñ/°Õ5ˆŒä—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
Ü—9’9˜V×/Ñ/°×1CÑ1CÓDˆŒÜ—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
ä—z’z &×"EÑ"EÓFˆŒà ×+Ñ+ˆŒØ"ŒØ"Žr7   c                ó°   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  ,          /# )r(   r,   rh   NÚpast_key_valuesrV  r¼   ©r/   rj   r0   r
   r   r   r1   )r2   r3   s   "€r4   r5   Ú%BridgeTowerSelfAttention.__annotate__Ì  s_   ø€ ÷ ')ñ ')á—|‘|ð')ñ ×)Ñ)¨DÕ0ð')ñ  �ð	')ñ
 Ñ+Õ,ð')ñ 
‰u�|‰|Õ	ñ')r7   c                ó   € VP                   R R p. VORNV P                  N5pV P                  V4      P                  ! V!  P	                  ^^4      pV P                  V4      P                  ! V!  P	                  ^^4      pV P                  V4      P                  ! V!  P	                  ^^4      p	VeC   Tp
\        V\        4      '       d   VP                  p
V
P                  W‰V P                  4      w  r‰\        P                  ! V P                  P                  \         4      pT! V VVV	V3RV P"                  '       g   RMV P$                  P&                  RV P(                  /VB w  rÍVP*                  ! . VORN5!  P-                  4       pWÍ3# )Nr  ç        rU  r¥   )rÈ   rk  rR  rÑ   rá   rS  rT  r/  r   Úself_attention_cacheÚupdaterp  r   Úget_interfacerc   Ú_attn_implementationrb  r[  r  rZ  rU  rÍ   r_  )rb   r,   rh   rt  rV  Úinput_shapeÚhidden_shapeÚquery_layerÚ	key_layerÚvalue_layerÚcurrent_past_key_valuesÚattention_interfacera  r`  s   &&&&,         r4   r}   Ú BridgeTowerSelfAttention.forwardÌ  s‰  € ð $×)Ñ)¨#¨2Ð.ˆØC˜ÐC bÐC¨$×*BÑ*BÑCˆð —j‘j Ó/×4Ò4°lÑC×MÑMÈaÐQRÓSˆØ—H‘H˜]Ó+×0Ò0°,Ñ?×IÑIÈ!ÈQÓOˆ	Ø—j‘j Ó/×4Ò4°lÑC×MÑMÈaÐQRÓSˆàÒ&à&5Ð#Ü˜/Ô+>×?Ò?Ø*9×*NÑ*NÐ'ð &=×%CÑ%CÀIÐ\`×\jÑ\jÓ%kÑ"ˆIä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$·,±,·.±.ð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØÐ(Ð(r7   )rl  rk  rc   r  ro  rn  rS  rp  ri  rR  rU  rT  ©FN)NNr•   r€   s   @@r4   rd  rd  ³  s   ù‡ € ÷#÷0')÷ ')ò ')r7   rd  c                   óL   a a€ ] tR tRt oRV 3R lltRV3R lR lltRtVtV ;t# )ÚBridgeTowerCrossAttentioni÷  c                óR  <€ \         SV `  4        VP                  VP                  ,          ^ 8w  d9   \	        VR4      '       g'   \        RVP                   RVP                   R24      hWn        VP                  V n        \        VP                  VP                  ,          4      V n        V P                  V P                  ,          V n	        V P                  R,          V n
        \        P                  ! VP                  V P                  4      V n        \        P                  ! VP                  V P                  4      V n        \        P                  ! VP                  V P                  4      V n        \        P                   ! VP"                  4      V n        W n        W0n        R# rf  )rT   rU   rW   ri  rj  rß   rc   r¾   rk  rl  rU  r   r]   rR  rS  rT  r  rm  r  ro  rp  rq  s   &&&&€r4   rU   Ú"BridgeTowerCrossAttention.__init__ø  s@  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Õ:¸aÔ?ÌÐPVÐXh×HiÒHiÜØ# F×$6Ñ$6Ð#7ð 8Ø ×4Ñ4Ð5°Qð8óð ð Œà#)×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÕ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔØ×/Ñ/°Õ5ˆŒä—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
Ü—9’9˜V×/Ñ/°×1CÑ1CÓDˆŒÜ—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
ä—z’z &×"EÑ"EÓFˆŒà"ŒØ"Žr7   c                óØ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  ,          /# )r(   r,   Úencoder_hidden_statesNrh   rt  rV  r¼   )r/   rj   r0   r   r   r   r1   )r2   r3   s   "€r4   r5   Ú&BridgeTowerCrossAttention.__annotate__  su   ø€ ÷ 1)ñ 1)á—|‘|ð1)ñ  %×0Ñ0°4Õ7ð1)ñ ×)Ñ)¨DÕ0ð	1)ñ
 -¨tÕ3ð1)ñ Ñ+Õ,ð1)ñ 
‰u�|‰|Õ	ñ1)r7   c                ó˜  € VP                   R R p. VORNV P                  N5pV P                  V4      P                  V4      P	                  ^^4      pVe&   VP
                  P                  V P                  4      MRp	Vel   V	'       dd   VP                  P                  V P                  ,          P                  p
VP                  P                  V P                  ,          P                  pMÅ. VP                   R R ORNV P                  N5pV P                  V4      P                  V4      P	                  ^^4      p
V P                  V4      P                  V4      P	                  ^^4      pVeB   VP                  P                  W«V P                  4      w  r«RVP
                  V P                  &   \        P                   ! V P"                  P$                  \&        4      pT! V VV
VV3RV P(                  '       g   RMV P*                  P,                  RV P.                  /VB w  rïVP0                  ! . VORN5!  P3                  4       pWï3# )NFTr  rx  rU  r¥   )rÈ   rk  rR  rÑ   rá   Ú
is_updatedÚgetrp  Úcross_attention_cacheÚlayersÚkeysrz   rS  rT  rz  r   r{  rc   r|  rb  r[  r  rZ  rU  rÍ   r_  )rb   r,   r‹  rh   rt  rV  r}  r~  r  rŽ  r€  r�  Úkv_shaperƒ  ra  r`  s   &&&&&,          r4   r}   Ú!BridgeTowerCrossAttention.forward  s  € ð $×)Ñ)¨#¨2Ð.ˆàC˜ÐC bÐC¨$×*BÑ*BÑCˆð —j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆàGVÒGb�_×/Ñ/×3Ñ3°D·N±NÔCÐhmˆ
ØÒ&¯:à'×=Ñ=×DÑDÀTÇ^Á^ÕT×YÑYˆIØ)×?Ñ?×FÑFÀtÇ~Á~ÕV×]Ñ]‰KàXÐ.×4Ñ4°S°bÐ9ÐX¸2ÐX¸t×?WÑ?WÑXˆHØŸ™Ð!6Ó7×<Ñ<¸XÓF×PÑPÐQRÐTUÓVˆIØŸ*™*Ð%:Ó;×@Ñ@ÀÓJ×TÑTÐUVÐXYÓZˆKàÒ*à)8×)NÑ)N×)UÑ)UØ¨D¯N©Nó*Ñ&�	ð >B�×*Ñ*¨4¯>©>Ñ:ä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$·,±,·.±.ð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØÐ(Ð(r7   )rl  rk  rc   r  ro  rS  rp  ri  rR  rU  rT  r…  ©NNNr•   r€   s   @@r4   r‡  r‡  ÷  s   ù‡ € ÷#÷.1)÷ 1)ò 1)r7   r‡  c                   óL   a a€ ] tR tRt oRV 3R lltRV3R lR lltRtVtV ;t# )ÚBridgeTowerAttentioniD  c                ó–   <€ \         SV `  4        W@n        V'       d   \        M\        pV! WVR 7      V n        \        V4      V n        R# )©ro  rp  N)rT   rU   Úis_cross_attentionr‡  rd  rb   r  Úoutput)rb   rc   ro  rp  rš  Úattention_classrd   s   &&&&& €r4   rU   ÚBridgeTowerAttention.__init__E  s9   ø€ Ü‰ÑÔØ"4Ôß7IÕ3ÔOgˆÙ# FÈ9ÔUˆŒ	Ü+¨FÓ3ˆŽr7   c                ó   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  ,          /# ©	r(   r,   rh   Nr‹  Úencoder_attention_maskrt  rV  r¼   ru  )r2   r3   s   "€r4   r5   Ú!BridgeTowerAttention.__annotate__L  s‰   ø€ ÷ .ñ .á—|‘|ð.ñ ×)Ñ)¨DÕ0ð.ñ  %×0Ñ0°4Õ7ð	.ñ
 !&× 1Ñ 1°DÕ 8ð.ñ  �ð.ñ Ñ+Õ,ð.ñ 
‰u�|‰|Õ	ñ.r7   c           	     óŒ   € V P                   '       g   TMTpV P                  ! V3R VRVRV/VB w  rxV P                  Wq4      pWx3# )r‹  rh   rt  )rš  rb   r›  )	rb   r,   rh   r‹  r   rt  rV  Úattention_outputr`  s	   &&&&&&,  r4   r}   ÚBridgeTowerAttention.forwardL  sm   € ð 04×/F×/FÐ/F™ÐLbˆØ)-¯ªØñ*
à"7ð*
ð *ð*
ð ,ð	*
ð
 ñ*
Ñ&Ðð  Ÿ;™;Ð'7ÓGÐØÐ-Ð-r7   )rš  r›  rb   )FNF©NNNNr•   r€   s   @@r4   r—  r—  D  s   ù‡ € ÷4÷.÷ .ò .r7   r—  c                   óR   a a€ ] tR tRt oRV 3R lltRV3R lR lltR tRtVtV ;t	# )	ÚBridgeTowerBertCrossLayeria  c                ó&  <€ \         SV `  4        VP                  V n        ^V n        \	        VRVR7      V n        VP                  V n        VP                  V n        \	        VRVRR7      V n        \        V4      V n
        \        V4      V n        R# )r„   Tr™  F©ro  rp  rš  N)rT   rU   Úchunk_size_feed_forwardÚseq_len_dimr—  rt   rn  Úadd_cross_attentionÚcrossattentionr,  Úintermediater<  r›  ©rb   rc   rp  rd   s   &&&€r4   rU   Ú"BridgeTowerBertCrossLayer.__init__b  s„   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ-¨fÀÐPYÔZˆŒØ ×+Ñ+ˆŒØ#)×#=Ñ#=ˆÔ Ü2ØØØØ#ô	
ˆÔô 4°FÓ;ˆÔÜ'¨Ó/ˆŽr7   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r(   rV  )r   r   )r2   r3   s   "€r4   r5   Ú&BridgeTowerBertCrossLayer.__annotate__r  s   ø€ ÷ "
ñ "
ñ Ñ+Õ,ñ"
r7   c                óØ   € V P                   ! V3R VRR/VB w  rxTp	V P                  ! V	3R VRVRVRV/VB w  r«T
p	\        V P                  V P                  V P
                  V	4      pVVV3# )rh   rt  Nr‹  r   )rt   r­  r   Úfeed_forward_chunkrª  r«  )rb   r,   r‹  rh   r   rt  rV  Úself_attention_outputÚself_attn_weightsr£  Úcross_attention_outputÚcross_attn_weightsÚlayer_outputs   &&&&&&,      r4   r}   Ú!BridgeTowerBertCrossLayer.forwardr  sÇ   € ð 48·>²>Øñ4
à)ð4
ð !ð4
ð ñ	4
Ñ0Ðð 1Ðà59×5HÒ5HØñ6
à)ð6
ð #8ð6
ð $:ð	6
ð
 ,ð6
ð ñ6
Ñ2Ðð 2Ðä0Ø×#Ñ# T×%AÑ%AÀ4×CSÑCSÐUeó
ˆð ØØð
ð 	
r7   c                óJ   € V P                  V4      pV P                  W!4      pV# ry   ©r®  r›  ©rb   r£  Úintermediate_outputr¹  s   &&  r4   r´  Ú,BridgeTowerBertCrossLayer.feed_forward_chunk–  ó)   € Ø"×/Ñ/Ð0@ÓAÐØ—{‘{Ð#6ÓIˆØÐr7   ©r¬  rt   rª  r­  r®  rn  r›  r«  ry   r•  ©
r9   r:   r;   r<   rU   r}   r´  r?   r@   r   r€   s   @@r4   r§  r§  a  s   ù‡ € ÷0÷ "
ò "
÷Hò r7   r§  c                   óR   a a€ ] tR tRt oRV 3R lltRV3R lR lltR tRtVtV ;t	# )	ÚBridgeTowerTextLayeriœ  c                óœ  <€ \         SV `  4        VP                  V n        ^V n        \	        WP
                  VR7      V n        VP
                  V n        VP                  V n        V P                  '       d5   V P
                  '       g   \        V  R24      h\	        VRVRR7      V n	        \        V4      V n        \        V4      V n        R# )r„   r™  z> should be used as a decoder model if cross attention is addedFTr©  N)rT   rU   rª  r«  r—  rn  rt   r¬  rß   r­  r,  r®  r<  r›  r¯  s   &&&€r4   rU   ÚBridgeTowerTextLayer.__init__�  s°   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ-¨f×@QÑ@QÐ]fÔgˆŒØ ×+Ñ+ˆŒØ#)×#=Ñ#=ˆÔ Ø×#×#Ð#Ø—?—?�?Ü  D 6Ð)gÐ!hÓiÐiÜ"6ØØØ#Ø#'ô	#ˆDÔô 4°FÓ;ˆÔÜ'¨Ó/ˆŽr7   c                óð   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[S[,          RS[ P                  /# rŸ  )r/   rj   r0   r
   r   r   )r2   r3   s   "€r4   r5   Ú!BridgeTowerTextLayer.__annotate__±  s„   ø€ ÷ %ñ %á—|‘|ð%ñ ×)Ñ)¨DÕ0ð%ñ  %×0Ñ0°4Õ7ð	%ñ
 !&× 1Ñ 1°DÕ 8ð%ñ  �ð%ñ Ñ+Õ,ð%ñ 
�‰ñ%r7   c                ó8  € V P                   ! VV3R V/VB w  rxTp	V P                  '       dB   Ve>   \        V R4      '       g   \        RV  R24      hV P                  ! VRVV3R V/VB w  r¨T
p	\        V P                  V P                  V P                  V	4      pV# )rt  Nr­  z'If `encoder_hidden_states` are passed, z` has to be instantiated with cross-attention layers by setting `config.add_cross_attention=True`)	rt   rn  rj  rß   r­  r   r´  rª  r«  )rb   r,   rh   r‹  r   rt  rV  rµ  rŒ   r£  r·  r¹  s   &&&&&&,     r4   r}   ÚBridgeTowerTextLayer.forward±  sâ   € ð $(§>¢>ØØñ$
ð ,ð$
ð ñ	$
Ñ Ðð 1Ðà�?�?ˆ?Ð4Ò@Ü˜4Ð!1×2Ò2Ü Ø=¸d¸Vð DDð Dóð ð
 )-×(;Ò(;Ø%ØØ%Ø&ñ	)ð
 !0ð)ð ñ)Ñ%Ð"ð  6Ðä0Ø×#Ñ# T×%AÑ%AÀ4×CSÑCSÐUeó
ˆð Ðr7   c                óJ   € V P                  V4      pV P                  W!4      pV# ry   r¼  r½  s   &&  r4   r´  Ú'BridgeTowerTextLayer.feed_forward_chunkØ  rÀ  r7   rÁ  ry   r¥  rÂ  r€   s   @@r4   rÄ  rÄ  œ  s   ù‡ € ÷0÷(%ò %÷Nò r7   rÄ  c                   óH   a a€ ] tR tRt oV 3R ltRV3R lR lltRtVtV ;t# )ÚBridgeTowerTextEncoderiß  c           
     óÊ   <€ \         SV `  4        Wn        \        P                  ! \        VP                  4       Uu. uF  p\        WR 7      NK  	  up4      V n        R# u upi )©rp  N)	rT   rU   rc   r   r‡   rˆ   r…   rÄ  r|   )rb   rc   Úird   s   && €r4   rU   ÚBridgeTowerTextEncoder.__init__à  sK   ø€ Ü‰ÑÔØŒÜ—]’]Ü@EÀf×F^ÑF^Ô@_Ó`Ñ@_¸1Ô! &×6Ñ@_Ñ`ó
ˆŽ
ùÚ`s   ½A c                óð   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[S[,          R	S[/# )
r(   r,   rh   Nr‹  r   rt  Ú	use_cacherV  r¼   )r/   rj   r0   r
   rs   r   r   r   )r2   r3   s   "€r4   r5   Ú#BridgeTowerTextEncoder.__annotate__ç  sŽ   ø€ ÷ 
ñ 
á—|‘|ð
ñ ×)Ñ)¨DÕ0ð
ñ  %×0Ñ0°4Õ7ð	
ñ
 !&× 1Ñ 1°DÕ 8ð
ñ  �ð
ñ ˜$•;ð
ñ Ñ+Õ,ð
ñ 
3ñ
r7   c                ó~   € V P                    F  pV! VVV3R VRV/VB pK  	  \        TV'       d   VR7      # RR7      # )r   rt  N)Úlast_hidden_statert  )r|   r   )	rb   r,   rh   r‹  r   rt  rÔ  rV  Úlayer_modules	   &&&&&&&, r4   r}   ÚBridgeTowerTextEncoder.forwardç  sg   € ð !ŸJœJˆLÙ(ØØØ%ñð (>ð	ð
 !0ðð ñŠMñ 'ô 9Ø+ß/8˜Oô
ð 	
à>Bô
ð 	
r7   )rc   r|   )NNNNNr•   r€   s   @@r4   rÎ  rÎ  ß  s   ù‡ € õ
÷
÷ 
ò 
r7   rÎ  c                   óp   a a€ ] tR tRt oRtV 3R ltR	V3R lR llt]R 4       t]R
R l4       t	Rt
VtV ;t# )ÚBridgeTowerTextEmbeddingsi  zGConstruct the embeddings from word, position and token_type embeddings.c                óˆ  <€ \         SV `  4        \        P                  ! VP                  VP
                  VP                  R 7      V n        \        P                  ! VP                  VP
                  4      V n	        \        P                  ! VP
                  VP                  R7      V n
        \        P                  ! VP                  4      V n        \        P                  ! \         P"                  ! VP$                  4      P'                  R4      RR7      V n        \        P                  ! \         P*                  ! V P(                  P-                  4       \         P.                  R7      RR7      V n        VP                  V n        \        P                  ! VP$                  VP
                  V P2                  R 7      V n        R# ))Úpadding_idxrO   Fr¢   rÞ   Nr¤   )rT   rU   r   r±   Ú
vocab_sizerW   Úpad_token_idÚword_embeddingsÚtype_vocab_sizeÚtoken_type_embeddingsrY   rZ   r  r  r  r³   r/   r´   Úmax_position_embeddingsrµ   r¶   ÚzerosrÂ   ÚlongÚtoken_type_idsrÝ  Úposition_embeddingsra   s   &&€r4   rU   Ú"BridgeTowerTextEmbeddings.__init__  s%  ø€ Ü‰ÑÔÜ!Ÿ|š|¨F×,=Ñ,=¸v×?QÑ?QÐ_e×_rÑ_rÔsˆÔÜ%'§\¢\°&×2HÑ2HÈ&×J\ÑJ\Ó%]ˆÔ"äŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŒäŸIšI¤e§l¢l°6×3QÑ3QÓ&R×&YÑ&YÐZaÓ&bÐotÔuˆÔÜ Ÿiši¬¯ª°D×4EÑ4E×4JÑ4JÓ4LÔTY×T^ÑT^Ô(_ÐlqÔrˆÔà!×.Ñ.ˆÔÜ#%§<¢<Ø×*Ñ*¨F×,>Ñ,>ÈD×L\ÑL\ô$
ˆÖ r7   c                óÚ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[RS[ P                  /# )r(   Ú	input_idsNræ  r¶   Úinputs_embedsÚpast_key_values_lengthr¼   )r/   Ú
LongTensorr0   r¾   rj   )r2   r3   s   "€r4   r5   Ú&BridgeTowerTextEmbeddings.__annotate__  sw   ø€ ÷ .ñ .á×#Ñ# dÕ*ð.ñ ×(Ñ(¨4Õ/ð.ñ ×&Ñ&¨Õ-ð	.ñ
 ×(Ñ(¨4Õ/ð.ñ !$ð.ñ 
�‰ñ.r7   c                ó4  € Vf=   Ve   V P                  WP                  V4      pMV P                  W@P                  4      pVe   VP                  4       pMVP                  4       R R pVw  rxVf¿   \	        V R4      '       dr   V P
                  P                  VP                  4      P                  VP                  ^ ,          R4      p	\        P                  ! V	^VR7      p	V	P                  Wx4      pM;\        P                  ! V\        P                  V P                  P                  R7      pVf   V P                  V4      pV P!                  V4      p
WJ,           pV P#                  V4      pW¼,           pV P%                  V4      pV P'                  V4      pV# )Nræ  )rÆ   Úindexrm   r¥   )Ú"create_position_ids_from_input_idsrÝ  Ú&create_position_ids_from_inputs_embedsrÂ   rj  ræ  rr   ro   rµ   rÈ   r/   Úgatherrä  rå  r¶   rà  râ  rç  rY   r  )rb   rê  ræ  r¶   rë  rì  r}  râ   Ú
seq_lengthÚbuffered_token_type_idsrâ  r¹   rç  s   &&&&&&       r4   r}   Ú!BridgeTowerTextEmbeddings.forward  st  € ð ÒØÒ$à#×FÑFØ×/Ñ/Ð1Gó ‘ð  $×JÑJÈ=×ZjÑZjÓk�àÒ Ø#Ÿ.™.Ó*‰Kà'×,Ñ,Ó.¨s°Ð3ˆKà!,Ñˆ
ð
 Ò!Ü�tÐ-×.Ò.à*.×*=Ñ*=×*@Ñ*@À×ATÑATÓ*U×*\Ñ*\Ð]i×]oÑ]oÐpqÕ]rÐtvÓ*wÐ'Ü*/¯,ª,Ð7NÐTUÐ]iÔ*jÐ'Ø!8×!?Ñ!?À
Ó!W‘ä!&§¢¨[ÄÇ
Á
ÐSW×SdÑSd×SkÑSkÔ!l�àÒ Ø ×0Ñ0°Ó;ˆMØ $× :Ñ :¸>Ó JÐØ"Õ:ˆ
à"×6Ñ6°|ÓDÐØÕ5ˆ
à—^‘^ JÓ/ˆ
Ø—\‘\ *Ó-ˆ
ØÐr7   c                ó  € V P                  4       RR pV^,          p\        P                  ! V^,           W1,           ^,           \        P                  V P                  R7      pVP                  ^ 4      P                  V4      # )z¯
We are provided embeddings directly. We cannot infer which are padded so just generate sequential position ids.

Args:
    inputs_embeds: torch.Tensor

Returns: torch.Tensor
Nrm   r¥   )rÂ   r/   r´   rå  ro   rÊ   rµ   )rë  rÝ  r}  Úsequence_lengthr¶   s   &&   r4   rò  Ú@BridgeTowerTextEmbeddings.create_position_ids_from_inputs_embedsE  sn   € ð $×(Ñ(Ó*¨3¨BÐ/ˆØ% a�.ˆä—|’|Ø˜!�O˜_Õ:¸QÕ>ÄeÇjÁjÐYf×YmÑYmô
ˆð ×%Ñ% aÓ(×/Ñ/°Ó<Ð<r7   c                óØ   € V P                  V4      P                  4       p\        P                  ! V^R7      P	                  V4      V,           V,          pVP                  4       V,           # )zí
Replace non-padding symbols with their position numbers. Position numbers begin at padding_idx+1. Padding symbols
are ignored. This is modified from fairseq's `utils.make_positions`.

Args:
    x: torch.Tensor x:

Returns: torch.Tensor
rÅ   )Úner¾   r/   ÚcumsumÚtype_asrå  )rê  rÝ  rì  ÚmaskÚincremental_indicess   &&&  r4   rñ  Ú<BridgeTowerTextEmbeddings.create_position_ids_from_input_idsW  sW   € ð �|‰|˜KÓ(×,Ñ,Ó.ˆÜ$Ÿ|š|¨D°aÔ8×@Ñ@ÀÓFÐI_Õ_ÐcgÕgÐØ"×'Ñ'Ó)¨KÕ7Ð7r7   )rY   r  rÝ  rç  r¶   râ  ræ  rà  )NNNNrL  )rL  )r9   r:   r;   r<   r=   rU   r}   Ústaticmethodrò  rñ  r?   r@   r   r€   s   @@r4   rÛ  rÛ    sE   ù‡ € ÙQõ
÷ .ò .ð` ñ=ó ð=ð" ó8ó ÷8ð 8r7   rÛ  c                   óœ   a a€ ] tR tRt oRtRtRtRR.tR.tR]	R]
R	]/t]P                  ! 4       V3R
 lV 3R ll4       tV3R ltRtVtV ;t# )ÚBridgeTowerPreTrainedModelih  ÚbridgetowerFrd  rL   rt  r,   r-   Úcross_attentionsc                ó4   <€ V ^8„  d   QhRS[ P                  /# )r(   rQ  )r   rW  )r2   r3   s   "€r4   r5   Ú'BridgeTowerPreTrainedModel.__annotate__w  s   ø€ ÷ %ñ %¡B§I¡Iñ %r7   c                óÞ  <€ \         SV `  V4       V P                  P                  p\	        V\
        4      '       Ed'   V P                  P                  R,          ^V P                  P                  ,          R,          ,          pV P                  P                  R,          p^V P                  P                  ,          R,          pVP                  P                   EF  p\        P                  ! VP                  P                  WB,          R7       \        P                  ! VP                  P                  4       \        P                  ! VP                  P                   P"                  W2,          R7       \        P                  ! VP$                  P&                  P"                  WR,          R7       \        P                  ! VP$                  P(                  P"                  W2,          R7       EK  	  \        P                  ! VP*                  P,                  WB,          R7       \        P                  ! VP*                  P.                  P"                  WB,          R7       EM±\	        V\0        P2                  \0        P4                  \0        P6                  34      '       d-   \        P                  ! VP"                  RRV,          R7       EMF\	        V\8        4      '       d7   \        P:                  ! VP<                  V P                  P>                  4       Mú\	        V\@        4      '       dP   \        PB                  ! VPD                  \F        PH                  ! VPJ                  4      PM                  R4      4       M•\	        V\N        4      '       d€   \        PB                  ! VPD                  \F        PH                  ! VPD                  PP                  R,          4      PM                  R4      4       \        P                  ! VPR                  4       \	        V\0        P2                  \T        34      '       d3   VPV                  e#   \        P                  ! VPV                  4       R# R# R# )	rÀ   )Ústdrx  gš™™™™™©?)Úmeanr	  Nr\  r¥   r¤   ),rT   Ú_init_weightsrc   Úinitializer_factorr/  ré   rW   r…   rí   r‰   ÚinitÚnormal_rX   Úin_proj_weightÚzeros_Úin_proj_biasÚout_projrÉ   r^   rQ   rS   r¹   r«   r²   r   r]   r¬   r±   Ú!BridgeTowerForContrastiveLearningÚ	constant_Úlogit_scaleÚlogit_scale_init_valuer—   Úcopy_r¶   r/   r´   r°   rµ   rÛ  rÈ   ræ  ÚBridgeTowerMLMHeadr¡   )rb   rQ  r	  Úproj_stdÚattn_stdÚfc_stdr“   rd   s   &&     €r4   r  Ú(BridgeTowerPreTrainedModel._init_weightsv  s¥  ø€ ä‰Ñ˜fÔ%Ø�k‰k×,Ñ,ˆÜ�fÔ:×;Ó;ØŸ™×/Ñ/°Õ5¸1¸t¿{¹{×?\Ñ?\Õ;\ÐaeÕ:eÕfˆHØ—{‘{×.Ñ.°Õ4ˆHØ˜$Ÿ+™+×1Ñ1Õ1°dÕ:ˆFØ×+Ñ+×5Õ5�Ü—’˜UŸZ™Z×6Ñ6¸H½NÕKÜ—’˜EŸJ™J×3Ñ3Ô4Ü—’˜UŸZ™Z×0Ñ0×7Ñ7¸X½^ÕLÜ—’˜UŸY™YŸ^™^×2Ñ2¸½ÕEÜ—’˜UŸY™Y×-Ñ-×4Ñ4¸(½.×IÐIñ 6ô �LŠL˜×*Ñ*×:Ñ:ÀÅÕOÜ�LŠL˜×*Ñ*×=Ñ=×DÑDÈ(Í.×YÜ˜¤§¡¬B¯I©I´r·|±|Ð D×EÒEÜ�LŠL˜Ÿ™¨S°d¸Sµj×AÜ˜Ô A×BÒBÜ�NŠN˜6×-Ñ-¨t¯{©{×/QÑ/QÕRÜ˜Ô ;×<Ò<Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9MÑ9MÓ,N×,UÑ,UÐV]Ó,^Õ_Ü˜Ô 9×:Ò:Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÔhÜ�KŠK˜×-Ñ-Ô.ä�fœrŸy™yÔ*<Ð=×>Ò>À6Ç;Á;ÒCZÜ�KŠK˜Ÿ™Ö$ñ D[Ñ>r7   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r™   )r    )r2   r3   s   "€r4   r5   r  h  s   ø‡ ‚ áÑò r7   r8   )ÚimageÚtext)r9   r:   r;   r<   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementrÄ  rd  r‡  Ú_can_record_outputsr/   Úno_gradr  r>   r?   r@   r   r€   s   @@r4   r  r  h  sn   ù‡ € ð &ÐØ(ÐØ&+Ð#Ø3Ð5SÐTÐØ#4Ð"5ÐàÐ-ØÐ.ØÐ5ðÐð ‡]‚]ƒ_÷%ò %ó ð%÷ … r7   r  c                   ó\   a a€ ] tR tRt oRtV 3R lt]R 4       tRR ltV3R lt	Rt
VtV ;t# )	ÚBridgeTowerVisionModeli•  c                óf   <€ \         SV `  V4       \        V4      V n        V P	                  4        R # ry   )rT   rU   ré   ÚvisualÚ	post_initra   s   &&€r4   rU   ÚBridgeTowerVisionModel.__init__™  s&   ø€ Ü‰Ñ˜Ô Ü2°6Ó:ˆŒØ�‰Ör7   c                ój   € V P                   P                  P                  P                  P                  # ry   )r*  r¹   r®   rÉ   rn   ©rb   s   &r4   rn   ÚBridgeTowerVisionModel.dtypež  s$   € à�{‰{×%Ñ%×5Ñ5×<Ñ<×BÑBÐBr7   c                óX   € V P                  VP                  V P                  4      W#4      # ry   )r*  Útypern   )rb   r  Ú
image_maskrØ   rV  s   &&&&,r4   r}   ÚBridgeTowerVisionModel.forward¢  s    € Ø�{‰{˜5Ÿ:™: d§j¡jÓ1°:ÓXÐXr7   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r™   rš   )r2   r3   s   "€r4   r5   Ú#BridgeTowerVisionModel.__annotate__•  s   ø‡ ‚ Ù#Ñ#ò r7   )r*  )r  )NF)r9   r:   r;   r<   r!  rU   Úpropertyrn   r}   r>   r?   r@   r   r€   s   @@r4   r(  r(  •  s3   ù‡ € à!Ðõð
 ñCó ðCôY÷ … r7   r(  a0  
    The model can behave as an encoder (with only self-attention) as well as a decoder, in which case a layer of
    cross-attention is added between the self-attention layers, following the architecture described in *Attention is
    all you need*_ by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz
    Kaiser and Illia Polosukhin.

    To behave as an decoder the model needs to be initialized with the `is_decoder` argument of the configuration set
    to `True`. To be used in a Seq2Seq model, the model needs to initialized with both `is_decoder` argument and
    `add_cross_attention` set to `True`; an `encoder_hidden_states` is then expected as an input to the forward pass.

    .. _*Attention is all you need*: https://huggingface.co/papers/1706.03762
    c                   óŒ   a a€ ] tR tRt oR
tRV 3R lltR tR t]]	]
RV3R lR ll4       4       4       tR tV3R ltR	tVtV ;t# )ÚBridgeTowerTextModeli¦  c                óÔ   <€ \         SV `  V4       Wn        RV n        \	        V4      V n        \        V4      V n        V'       d   \        V4      MRV n	        V P                  4        R# )z^
add_pooling_layer (bool, *optional*, defaults to `True`):
    Whether to add a pooling layer
FN)rT   rU   rc   Úgradient_checkpointingrÛ  r¹   rÎ  ÚencoderrD  Úpoolerr+  )rb   rc   Úadd_pooling_layerrd   s   &&&€r4   rU   ÚBridgeTowerTextModel.__init__¸  sT   ø€ ô
 	‰Ñ˜Ô ØŒØ&+ˆÔ#ä3°FÓ;ˆŒÜ-¨fÓ5ˆŒç3DÔ'¨Ô/È$ˆŒð 	�‰Ör7   c                ó.   € V P                   P                  # ry   ©r¹   rà  r.  s   &r4   Úget_input_embeddingsÚ)BridgeTowerTextModel.get_input_embeddingsÉ  s   € Ø�‰×.Ñ.Ð.r7   c                ó&   € WP                   n        R # ry   r@  ©rb   rT  s   &&r4   Úset_input_embeddingsÚ)BridgeTowerTextModel.set_input_embeddingsÌ  s   € Ø*/�‰Ö'r7   c                óv  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[R,          R
S[R,          RS[S[,          RS[/# )r(   rê  Nrh   ræ  r¶   rë  r‹  r   rt  rÔ  rV  r¼   )r/   rj   r
   rs   r   r   r   )r2   r3   s   "€r4   r5   Ú!BridgeTowerTextModel.__annotate__Õ  sÆ   ø€ ÷ 9
ñ 9
á—<‘< $Õ&ð9
ñ Ÿ™ tÕ+ð9
ñ Ÿ™ tÕ+ð	9
ñ
 —l‘l TÕ)ð9
ñ —|‘| dÕ*ð9
ñ  %Ÿ|™|¨dÕ2ð9
ñ !&§¡¨tÕ 3ð9
ñ  �ð9
ñ ˜$•;ð9
ñ Ñ+Õ,ð9
ñ 
6ñ9
r7   c
                óD  € VR J VR J,          '       d   \        R4      hV P                  P                  '       g   Rp	V	'       d9   Vf5   \        \	        V P                  R7      \	        V P                  R7      4      pVe   VP                  4       M^ pV P                  VVVVVR7      pV P                  VVVVVR7      w  r'V P                  ! V3RVRVRVR	VR
V	RV/V
B pV^ ,          pV P                  e   V P                  V4      MR p\        VVVP                  R7      # )Nz:You must specify exactly one of input_ids or inputs_embedsF)rc   )rê  r¶   ræ  rë  rì  )rh   r   Úembedding_outputr‹  rt  rh   r‹  r   rt  rÔ  r¶   )r×  r+   rt  )rß   rc   rn  r   r   Úget_seq_lengthr¹   Ú_create_attention_masksr;  r<  r   rt  )rb   rê  rh   ræ  r¶   rë  r‹  r   rt  rÔ  rV  rì  rJ  Úencoder_outputsÚsequence_outputrN  s   &&&&&&&&&&,     r4   r}   ÚBridgeTowerTextModel.forwardÏ  sa  € ð& ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZà�{‰{×%×%Ð%ØˆIç˜Ò0Ü1´,ÀdÇkÁkÔ2RÔT`Ðhl×hsÑhsÔTtÓuˆOàETÒE` ×!?Ñ!?Ô!AÐfgÐàŸ?™?ØØ%Ø)Ø'Ø#9ð +ó 
Ðð 26×1MÑ1MØ)Ø#9Ø-Ø"7Ø+ð 2Nó 2
Ñ.ˆð Ÿ,š,Øñ	
à)ð	
ð #8ð	
ð $:ð		
ð
 ,ð	
ð  ð	
ð &ð	
ð ñ	
ˆð *¨!Õ,ˆØ8<¿¹Ò8O˜Ÿ™ OÔ4ÐUYˆä;Ø-Ø'Ø+×;Ñ;ô
ð 	
r7   c                óÞ   € V P                   P                  '       d   \        V P                   VVVR 7      pM\        V P                   VVR7      pVe   \        V P                   VVVR7      pW3# ))rc   rë  rh   rt  ©rc   rë  rh   )rc   rë  rh   r‹  )rc   rn  r   r   )rb   rh   r   rJ  r‹  rt  s   &&&&&&r4   rL  Ú,BridgeTowerTextModel._create_attention_masks  su   € ð �;‰;×!×!Ð!Ü/Ø—{‘{Ø.Ø-Ø /ô	‰Nô 7Ø—{‘{Ø.Ø-ôˆNð "Ò-Ü%>Ø—{‘{Ø.Ø5Ø&;ô	&Ð"ð Ð5Ð5r7   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r™   )r!   )r2   r3   s   "€r4   r5   rH  ¦  s   ø‡ ‚ ñ "Ñ!ò r7   )rc   r¹   r;  r:  r<  )r  )T)	NNNNNNNNN)r9   r:   r;   r<   r!  rU   rA  rE  r   r   r   r}   rL  r>   r?   r@   r   r€   s   @@r4   r8  r8  ¦  sS   ù‡ € ð  !Ð÷ò"/ò0ð  ØØ÷9
ñ 9
ó	 ó ó  ð9
òx6÷W … r7   r8  zv
    The bare BridgeTower Model transformer outputting BridgeTowerModelOutput object without any specific head on
    c                   ó’   a a€ ] tR tRt oV 3R ltR tR tV3R lR ltV3R lR lt]	]
RV3R	 lR
 ll4       4       tR tRtVtV ;t# )ÚBridgeTowerModeli2  c           	     ó,	  <€ \         SV `  V4       Wn        VP                  pVP                  pVP
                  '       db   \        P                  ! VP                  VP                  4      V n	        \        P                  ! VP                  VP                  4      V n
        MÎ\        P                  ! \        VP                  4       Uu. uF.  p\        P                  ! VP                  VP                  4      NK0  	  up4      V n	        \        P                  ! \        VP                  4       Uu. uF.  p\        P                  ! VP                  VP                  4      NK0  	  up4      V n
        \        P                  ! ^VP                  4      V n        \!        V4      V n        \%        V4      V n        VP(                  '       gÀ   VP*                  '       d®   V P"                  P,                  P.                   F‰  pV P"                  P,                  P0                  P2                  P4                  VP2                  n        V P"                  P,                  P0                  P6                  P4                  VP6                  n        K‹  	  \        P                  ! \        VP                  4       Uu. uF  p\9        V4      NK  	  up4      V n        \        P                  ! \        VP                  4       Uu. uF  p\9        V4      NK  	  up4      V n        \?        V4      V n         \?        V4      V n!        \        PD                  ! VP                  VPF                  R7      V n$        \        PD                  ! VP                  VPF                  R7      V n%        VPL                  '       d"   \O        V4      V n(        \O        V4      V n)        Mœ\        P                  ! \        VP                  ^,
          4       Uu. uF  p\O        V4      NK  	  up4      V n(        \        P                  ! \        VP                  ^,
          4       Uu. uF  p\O        V4      NK  	  up4      V n)        V PU                  4        R# u upi u upi u upi u upi u upi u upi )r(   rO   N)+rT   rU   rc   Úvision_configÚtext_configÚ$share_cross_modal_transformer_layersr   r]   rW   Úcross_modal_text_transformÚcross_modal_image_transformr‡   rˆ   r…   r±   râ  r(  Úvision_modelr8  Ú
text_modelrï   Ú"init_layernorm_from_vision_encoderr*  Úcross_modal_ln_separaterî   rÉ   Údatar¡   r§  Úcross_modal_image_layersÚcross_modal_text_layersrD  Úcross_modal_image_poolerÚcross_modal_text_poolerrY   rZ   Úcross_modal_text_layernormÚcross_modal_image_layernormÚshare_link_tower_layersr  Úcross_modal_text_link_towerÚcross_modal_image_link_towerr+  )rb   rc   rW  rX  rŒ   rú   rd   s   &&    €r4   rU   ÚBridgeTowerModel.__init__8  sa  ø€ Ü‰Ñ˜Ô ØŒØ×,Ñ,ˆØ×(Ñ(ˆà×6×6Ð6Ü.0¯iªi¸×8OÑ8OÐQW×QcÑQcÓ.dˆDÔ+Ü/1¯yªy¸×9RÑ9RÐTZ×TfÑTfÓ/gˆDÕ,ä.0¯mªmÜQVÐW]×WoÑWoÔQpÓqÑQpÈA”—’˜;×2Ñ2°F×4FÑ4FÖGÑQpÑqó/ˆDÔ+ô 02¯}ª}ÜSXÐY_×YqÑYqÔSrÓsÑSrÈa”—’˜=×4Ñ4°f×6HÑ6HÖIÑSrÑsó0ˆDÔ,ô &(§\¢\°!°V×5GÑ5GÓ%HˆÔ"ä2°=ÓAˆÔä.¨{Ó;ˆŒà×,×,Ð,°×1Z×1ZÐ1ZØ×'Ñ'×.Ñ.×FÔF�Ø!%×!2Ñ!2×!9Ñ!9×!AÑ!A×!HÑ!H×!MÑ!M�—	‘	”Ø#×0Ñ0×7Ñ7×?Ñ?×DÑD×IÑI�—‘–ñ Gô )+¯ªÜ=BÀ6×C[ÑC[Ô=\Ó]Ñ=\¸Ô& {Ö3Ñ=\Ñ]ó)
ˆÔ%ô (*§}¢}Ü=BÀ6×C[ÑC[Ô=\Ó]Ñ=\¸Ô& {Ö3Ñ=\Ñ]ó(
ˆÔ$ô
 ):¸&Ó(AˆÔ%Ü'8¸Ó'@ˆÔ$ô +-¯,ª,°v×7IÑ7IÈv×OdÑOdÔ*eˆÔ'Ü+-¯<ª<¸×8JÑ8JÐPV×PeÑPeÔ+fˆÔ(à×)×)Ð)Ü/CÀFÓ/KˆDÔ,Ü0DÀVÓ0LˆDÕ-ä/1¯}ª}Ü7<¸V×=UÑ=UÐXYÕ=YÔ7ZÓ[Ñ7Z°!Ô% fÖ-Ñ7ZÑ[ó0ˆDÔ,ô 13·²Ü7<¸V×=UÑ=UÐXYÕ=YÔ7ZÓ[Ñ7Z°!Ô% fÖ-Ñ7ZÑ[ó1ˆDÔ-ð 	�‰ÖùòW rùò tùò ^ùò ^ùò  \ùò \s$   Ã	4Q8Ä04Q=Ê.RË5RÏ8RÑRc                ó6   € V P                   P                  4       # ry   )r]  rA  r.  s   &r4   rA  Ú%BridgeTowerModel.get_input_embeddingsp  s   € Ø�‰×3Ñ3Ó5Ð5r7   c                ó<   € V P                   P                  V4       R # ry   )r]  rE  rD  s   &&r4   rE  Ú%BridgeTowerModel.set_input_embeddingss  s   € Ø�‰×,Ñ,¨UÖ3r7   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# ©r(   r,   rp  r¼   r½   )r2   r3   s   "€r4   r5   ÚBridgeTowerModel.__annotate__v  s2   ø€ ÷ Iñ I±5·<±<ð IÉCð IÑTY×T`ÑT`ñ Ir7   c                óŽ   € V P                   P                  '       d   V P                  V4      # V P                  V,          ! V4      # ry   )rc   rY  rZ  ©rb   r,   rp  s   &&&r4   Ú_apply_text_transformÚ&BridgeTowerModel._apply_text_transformv  s9   € Ø�;‰;×;×;Ð;Ø×2Ñ2°=ÓAÐAØ×.Ñ.¨yÖ9¸-ÓHÐHr7   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# rp  r½   )r2   r3   s   "€r4   r5   rq  {  s2   ø€ ÷ Jñ J±E·L±Lð JÉSð JÑUZ×UaÑUañ Jr7   c                óŽ   € V P                   P                  '       d   V P                  V4      # V P                  V,          ! V4      # ry   )rc   rY  r[  rs  s   &&&r4   Ú_apply_image_transformÚ'BridgeTowerModel._apply_image_transform{  s9   € Ø�;‰;×;×;Ð;Ø×3Ñ3°MÓBÐBØ×/Ñ/°	Ö:¸=ÓIÐIr7   c                óÄ  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[R,          R
S[ P                  R,          RS[RS[S[,          RS[S[ P                  ,          S[	,          /# )r(   rê  Nrh   ræ  rÛ   Ú
pixel_maskrë  rH   Úimage_token_type_idxÚlabelsrØ   rV  r¼   )
r/   rí  r0   r¾   rs   r   r   r1   rj   r&   )r2   r3   s   "€r4   r5   rq  ‚  s  ø€ ÷ N
ñ N
á×#Ñ# dÕ*ðN
ñ ×)Ñ)¨DÕ0ðN
ñ ×(Ñ(¨4Õ/ð	N
ñ
 ×'Ñ'¨$Õ.ðN
ñ ×$Ñ$ tÕ+ðN
ñ ×(Ñ(¨4Õ/ðN
ñ ×'Ñ'¨$Õ.ðN
ñ " D�jðN
ñ × Ñ  4Õ'ðN
ñ #'ðN
ñ Ñ+Õ,ðN
ñ 
‰u�|‰|Õ	Ñ5Õ	5ñN
r7   c           
     ó2  € . p. p. p. pVe   Vf   \        R4      hT;'       g    ^pVP                  4       pV P                  P                  VR7      pVP	                  V4       Vf2   \
        P                  ! V\
        P                  VP                  R7      p\        V P                  VR
,          VR7      p\        V P                  P                  P                  4      V P                  P                  ,
          ^,           pV P                  P                  P                  RV  F  pV! VV4      pVP	                  V4       K  	  VfL   V P                  P                   P#                  VP%                  V P                  P&                  4      V
R7      pMVP)                  ^^ ^4      pVP	                  V4       V P                  P                   P*                  P,                  RV  F  pV! V4      pVP	                  V4       K  	  V P                  P                   P/                  VP%                  V P                  P&                  4      4      pV P1                  V^ R7      pV P3                  \
        P4                  ! ^\
        P                  VP                  R7      4      P7                  V4      pV P9                  VV,           4      pV P;                  V^ R7      pV P3                  \
        P<                  ! RV\
        P                  VP                  R7      4      P7                  V4      pVV,           pV P?                  V4      p\
        P                  ! VP                  ^ 4      VP                  ^4      3\
        P                  VP                  R7      p\        V P                  VVR7      pV P@                  ^ ,          ! VVVVR7      pV^ ,          pV PB                  ^ ,          ! VVVVR7      pV^ ,          pVP	                  VV34       VP	                  V^,          V^,          34       ^ p \E        V\        V P                  P                  P                  4      4       EFâ  p!V P                  P                  P                  V!,          ! VV4      pV P                  P                   P*                  P,                  V!,          ! V4      P%                  V P                  P&                  4      pV P;                  V P                  P                   P/                  V4      V ^,           4      V,           pV PF                  V ,          p"V PH                  V ,          p#V P1                  VV ^,           4      p$V"! V$V,           VV4      p%V#! VVV4      p&V P@                  V ^,           ,          ! V%V&VVR7      pV^ ,          pV PB                  V ^,           ,          ! V&V%VVR7      pV^ ,          pV ^,          p VP	                  V4       VP	                  V4       VP	                  VV34       VP	                  V^,          V^,          34       EKå  	  TTp(p'V PK                  V'V(4      p)\M        V'V(V)\O        V4      \O        V4      \O        V4      3\O        V4      R	7      # )aÀ  
image_embeds (`torch.FloatTensor` of shape `(batch_size, num_patches, hidden_size)`, *optional*):
    Optionally, instead of passing `pixel_values`, you can choose to directly pass an embedded representation.
    This is useful if you want more control over how to convert `pixel_values` into patch embeddings.
image_token_type_idx (`int`, *optional*):
    - The token type ids for images.
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels are currently not supported.

Examples:

```python
>>> from transformers import BridgeTowerProcessor, BridgeTowerModel
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO

>>> # prepare image and text
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> text = "hello world"
>>> processor = BridgeTowerProcessor.from_pretrained("BridgeTower/bridgetower-base")
>>> model = BridgeTowerModel.from_pretrained("BridgeTower/bridgetower-base")

>>> inputs = processor(image, text, return_tensors="pt")
>>> outputs = model(**inputs)
>>> outputs.keys()
odict_keys(['text_features', 'image_features', 'pooler_output'])
```NzYBridgeTowerModel does not use `inputs_embeds`.  Make sure to pass in `input_ids` instead.)rê  rm   rQ  rþ   rÐ  )rh   r   )r)   r*   r+   r,   r-   )rÇ   :rL  r„   NrÇ   r  )(r  rÂ   r]  r¹   r‘   r/   Úonesrå  ro   r   rc   Úlenr;  r|   r…   r\  r*  rÿ   r1  rn   rÎ   rí   r‰   r  rt  râ  rä  Ú	expand_asre  rx  Úfullrf  rb  ra  rˆ   rh  ri  Úget_cls_featuresr&   r1   )*rb   rê  rh   ræ  rÛ   r{  rë  rH   r|  r}  rØ   rV  Úall_hidden_states_textÚall_hidden_states_imageÚall_hidden_states_crossÚall_self_attentionsr}  rG   Úextend_text_masksÚsplit_indexr|   r“   Úimage_embeds_with_lnÚcross_modal_textÚtext_token_type_embeddingsÚimage_token_type_embeddingsÚcross_modal_imageÚextend_image_masksÚlayer_outputs_textÚcross_text_featuresÚlayer_outputs_imageÚcross_image_featuresÚlink_layer_indexrÑ  Útext_link_towerÚimage_link_towerÚtransformed_text_embedsÚcross_text_features_Úcross_image_features_r)   r*   Úcls_featuress*   &&&&&&&&&&&,                              r4   r}   ÚBridgeTowerModel.forward€  s@  € ð\ "$ÐØ"$ÐØ"$ÐØ ÐàÒ$¨Ò):Ü%Økóð ð  4×8Ð8°qÐØ—n‘nÓ&ˆØ—o‘o×0Ñ0¸9Ð0ÓEˆØ×%Ñ% kÔ2àÒ!Ü"ŸZšZ¨¼5¿:¹:Èi×N^ÑN^Ô_ˆNä5Ø—;‘;Ø% iÕ0Ø)ô
Ðô ˜$Ÿ/™/×1Ñ1×7Ñ7Ó8¸4¿;¹;×;XÑ;XÕXÐ[\Õ\ˆð —_‘_×,Ñ,×2Ñ2°<°KÓ@ˆEÙ Ð->Ó?ˆKØ"×)Ñ)¨+Ö6ñ Að ÒØ×,Ñ,×3Ñ3×?Ñ?Ø×!Ñ! $×"3Ñ"3×"9Ñ"9Ó:ÐUmð @ó ‰Lð
 (×/Ñ/°°1°aÓ8ˆLà×&Ñ& |Ô4ð ×&Ñ&×-Ñ-×9Ñ9×CÑCÀLÀ[ÓQˆEÙ  Ó.ˆLØ#×*Ñ*¨<Ö8ñ Rð  $×0Ñ0×7Ñ7×DÑDÀ\×EVÑEVÐW[×WhÑWh×WnÑWnÓEoÓpÐð  ×5Ñ5°kÈQÐ5ÓOÐà%)×%?Ñ%?Ü�KŠK˜¤§¡°I×4DÑ4DÔEó&
ç
‰)Ð$Ó
%ð 	#ð  ×:Ñ:Ð;KÐNhÕ;hÓiÐà#×:Ñ:Ð;OÐ[\Ð:Ó]ÐØ&*×&@Ñ&@Ü�JŠJ�tÐ1¼¿¹ÈI×L\ÑL\Ô]ó'
ç
‰)Ð(Ó
)ð 	$ð  4Ð6QÕQÐØ ×<Ñ<Ð=QÓRÐä—Z’ZØ×#Ñ# AÓ&Ð(9×(>Ñ(>¸qÓ(AÐBÜ—*‘*Ø×#Ñ#ô
ˆ
ô
 7Ø—;‘;Ø+Ø%ô
Ðð "×9Ñ9¸!Ö<ØØØ,Ø#5ô	
Ðð 1°Õ3Ðà"×;Ñ;¸AÖ>ØØØ-Ø#4ô	
Ðð  3°1Õ5Ðà×&Ñ&Ð(;Ð=QÐ'RÔSà×"Ñ"Ð$6°qÕ$9Ð;NÈqÕ;QÐ#RÔSàÐô �{¤C¨¯©×(?Ñ(?×(EÑ(EÓ$F×GˆAØŸ/™/×1Ñ1×7Ñ7¸Ö:¸;ÐHYÓZˆKØ×,Ñ,×3Ñ3×?Ñ?×IÑIÈ!ÖLÈ\ÓZ×_Ñ_Ø×!Ñ!×'Ñ'óˆLð ×+Ñ+¨D×,=Ñ,=×,DÑ,D×,QÑ,QÐR^Ó,_ÐaqÐtuÕauÓvØ-õ.ð !ð
 #×>Ñ>Ð?OÕPˆOØ#×@Ñ@ÐAQÕRÐð '+×&@Ñ&@ÀÐN^ÐabÕNbÓ&cÐ#Ù#2Ø'Ð*DÕDØ#Ø!ó$Ð ñ
 %5Ð5IÐK_ÐasÓ$tÐ!ð "&×!=Ñ!=Ð>NÐQRÕ>RÖ!SØ$Ø%Ø0Ø'9ô	"Ðð #5°QÕ"7Ðà"&×"?Ñ"?Ð@PÐSTÕ@TÖ"UØ%Ø$Ø1Ø'8ô	#Ðð $7°qÕ#9Ð à Õ!Ðà"×)Ñ)¨+Ô6Ø#×*Ñ*¨<Ô8Ø#×*Ñ*Ð,?ÐAUÐ+VÔWà×&Ñ&Ð(:¸1Õ(=Ð?RÐSTÕ?UÐ'V×Wñ[ Hð` )<Ð=Q�~ˆØ×,Ñ,¨]¸NÓKˆä%Ø'Ø)Ø&äÐ,Ó-ÜÐ-Ó.ÜÐ-Ó.ðô
 Ð0Ó1ô

ð 
	
r7   c                óx   € V P                  V4      pV P                  V4      p\        P                  ! W4.RR7      # )r„   rÅ   r¥   )rd  rc  r/   rÒ   )rb   r)   r*   Úcls_features_textÚcls_features_images   &&&  r4   rƒ  Ú!BridgeTowerModel.get_cls_featuresR  s9   € Ø ×8Ñ8¸ÓGÐØ!×:Ñ:¸>ÓJÐÜ�yŠyÐ+Ð@ÀbÔIÐIr7   )rc   rf  ra  ri  rc  r[  re  rb  rh  rd  rZ  r]  râ  r\  )
NNNNNNNNNF)r9   r:   r;   r<   rU   rA  rE  rt  rx  r   r   r}   rƒ  r?   r@   r   r€   s   @@r4   rU  rU  2  s^   ù‡ € õ6òp6ò4÷Ið I÷
Jð Jð
 Ø÷N
ñ N
ó ó ðN
÷`Jò Jr7   rU  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )Ú"BridgeTowerPredictionHeadTransformiY  c                ó‚  <€ \         SV `  4        \        P                  ! VP                  VP                  4      V n        \        VP                  \        4      '       d   \        VP                  ,          V n
        MVP                  V n
        \        P                  ! VP                  VP                  R 7      V n        R# rë   )rT   rU   r   r]   rW   r  r/  r0  r1  r   Útransform_act_fnrY   rZ   ra   s   &&€r4   rU   Ú+BridgeTowerPredictionHeadTransform.__init__Z  s~   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
Ü�f×'Ñ'¬×-Ò-Ü$*¨6×+<Ñ+<Õ$=ˆDÕ!à$*×$5Ñ$5ˆDÔ!ÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŽr7   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# ry   )r  r£  rY   r9  s   &&r4   r}   Ú*BridgeTowerPredictionHeadTransform.forwardc  s4   € ØŸ
™
 =Ó1ˆØ×-Ñ-¨mÓ<ˆØŸ™ }Ó5ˆØÐr7   )rY   r  r£  r•   r€   s   @@r4   r¡  r¡  Y  s   ù‡ € õU÷ò r7   r¡  c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )r  ij  c                óz  <€ \         SV `  4        Wn        \        V4      V n        \
        P                  ! VP                  VP                  P                  R R7      V n
        \
        P                  ! \        P                  ! VP                  P                  4      4      V n        Ve   W P                  n        R# R# )F)r¡   N)rT   rU   rc   r¡  Ú	transformr   r]   rW   rX  rÞ  Údecoderr©   r/   rä  r¡   rÉ   )rb   rc   rÉ   rd   s   &&&€r4   rU   ÚBridgeTowerMLMHead.__init__k  s€   ø€ Ü‰ÑÔØŒÜ;¸FÓCˆŒÜ—y’y ×!3Ñ!3°V×5GÑ5G×5RÑ5RÐY^Ô_ˆŒÜ—L’L¤§¢¨V×-?Ñ-?×-JÑ-JÓ!KÓLˆŒ	ØÒØ"(�L‰LÖñ r7   c                ól   € V P                  V4      pV P                  V4      V P                  ,           pV# ry   )r©  rª  r¡   )rb   ÚxÚ	mlm_scores   && r4   r}   ÚBridgeTowerMLMHead.forwardt  s-   € Ø—N‘N 1Ó%ˆ	Ø—L‘L Ó+¨d¯i©iÕ7ˆ	ØÐr7   )r¡   rc   rª  r©  ry   r•   r€   s   @@r4   r  r  j  s   ù‡ € ÷)÷ò r7   r  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚBridgeTowerITMHeadiz  c                ó\   <€ \         SV `  4        \        P                  ! V^4      V n        R# ©r(   N©rT   rU   r   r]   Úfc)rb   rW   rd   s   &&€r4   rU   ÚBridgeTowerITMHead.__init__{  s    ø€ Ü‰ÑÔÜ—)’)˜K¨Ó+ˆŽr7   c                ó(   € V P                  V4      pV# ry   ©rµ  )rb   r­  Ú	itm_scores   && r4   r}   ÚBridgeTowerITMHead.forward  s   € Ø—G‘G˜A“Jˆ	ØÐr7   r¸  r•   r€   s   @@r4   r±  r±  z  s   ù‡ € õ,÷ò r7   r±  z\
    BridgeTower Model with a language modeling head on top as done during pretraining.
    c                   óp   a a€ ] tR tRt oRR/tV 3R ltR tR t]]	R
V3R lR ll4       4       t
R	tVtV ;t# )ÚBridgeTowerForMaskedLMi„  zmlm_score.decoder.weightz8bridgetower.text_model.embeddings.word_embeddings.weightc                ó†   <€ \         SV `  V4       \        V4      V n        \	        V4      V n        V P                  4        R # ry   )rT   rU   rU  r  r  r®  r+  ra   s   &&€r4   rU   ÚBridgeTowerForMaskedLM.__init__Œ  s5   ø€ Ü‰Ñ˜Ô ä+¨FÓ3ˆÔÜ+¨FÓ3ˆŒð 	�‰Ör7   c                ó.   € V P                   P                  # ry   ©r®  rª  r.  s   &r4   Úget_output_embeddingsÚ,BridgeTowerForMaskedLM.get_output_embeddings•  s   € Ø�~‰~×%Ñ%Ð%r7   c                ó&   € WP                   n        R # ry   rÀ  )rb   Únew_embeddingss   &&r4   Úset_output_embeddingsÚ,BridgeTowerForMaskedLM.set_output_embeddings˜  s   € Ø!/�‰Ör7   c                óv  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[S[,          RS[/
# ©r(   rê  Nrh   ræ  rÛ   r{  rë  rH   r}  rV  r¼   )r/   rí  r0   r   r   r   )r2   r3   s   "€r4   r5   Ú#BridgeTowerForMaskedLM.__annotate__�  sÙ   ø€ ÷ H
ñ H
á×#Ñ# dÕ*ðH
ñ ×)Ñ)¨DÕ0ðH
ñ ×(Ñ(¨4Õ/ð	H
ñ
 ×'Ñ'¨$Õ.ðH
ñ ×$Ñ$ tÕ+ðH
ñ ×(Ñ(¨4Õ/ðH
ñ ×'Ñ'¨$Õ.ðH
ñ × Ñ  4Õ'ðH
ñ Ñ+Õ,ðH
ñ 
ñH
r7   c	                ó   € V P                   ! R
RVRVRVRVRVRVRV/V	B p
V P                  V
P                  4      pRpVel   \        4       pVP	                  VP
                  4      pV! VP                  RV P                  P                  P                  4      VP                  R4      4      p\        VVV
P                  V
P                  R	7      # )a  
image_embeds (`torch.FloatTensor` of shape `(batch_size, num_patches, hidden_size)`, *optional*):
    Optionally, instead of passing `pixel_values`, you can choose to directly pass an embedded representation.
    This is useful if you want more control over how to convert `pixel_values` into patch embeddings.
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the masked language modeling loss. Indices should be in `[-100, 0, ...,
    config.vocab_size]` (see `input_ids` docstring) Tokens with indices set to `-100` are ignored (masked), the
    loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`

Examples:

```python
>>> from transformers import BridgeTowerProcessor, BridgeTowerForMaskedLM
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000360943.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read())).convert("RGB")
>>> text = "a <mask> looking out of the window"

>>> processor = BridgeTowerProcessor.from_pretrained("BridgeTower/bridgetower-base-itm-mlm")
>>> model = BridgeTowerForMaskedLM.from_pretrained("BridgeTower/bridgetower-base-itm-mlm")

>>> # prepare inputs
>>> encoding = processor(image, text, return_tensors="pt")

>>> # forward pass
>>> outputs = model(**encoding)

>>> results = processor.decode(outputs.logits.argmax(dim=-1).squeeze(0).tolist())

>>> print(results)
.a cat looking out of the window.
```rê  rh   ræ  rÛ   r{  rë  rH   N©rE   rF   r,   r-   r8   r¥   )r  r®  r)   r   rr   ro   rÑ   rc   rX  rÞ  r   r,   r-   )rb   rê  rh   ræ  rÛ   r{  rë  rH   r}  rV  ÚoutputsÚ
mlm_logitsÚmasked_lm_lossÚloss_fcts   &&&&&&&&&,    r4   r}   ÚBridgeTowerForMaskedLM.forward›  s÷   € ðd ×"Ò"ñ 	
Øð	
à)ð	
ð *ð	
ð &ð		
ð
 "ð	
ð (ð	
ð &ð	
ð ñ	
ˆð —^‘^ G×$9Ñ$9Ó:ˆ
ØˆØÒÜ'Ó)ˆHà—Y‘Y˜z×0Ñ0Ó1ˆFÙ% j§o¡o°b¸$¿+¹+×:QÑ:Q×:\Ñ:\Ó&]Ð_e×_jÑ_jÐkmÓ_nÓoˆNäØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r7   )r  r®  ©NNNNNNNN)r9   r:   r;   r<   Ú_tied_weights_keysrU   rÁ  rÅ  r   r   r}   r?   r@   r   r€   s   @@r4   r¼  r¼  „  sL   ù‡ € ð 5Ð6pÐqÐõò&ò0ð Ø÷H
ñ H
ó ó ÷H
ð H
r7   r¼  zª
    BridgeTower Model transformer with a classifier head on top (a linear layer on top of the final hidden state of the
    [CLS] token) for image-to-text matching.
    c                   ó\   a a€ ] tR tRt oV 3R lt]]RV3R lR ll4       4       tRtVt	V ;t
# )Ú#BridgeTowerForImageAndTextRetrievaliè  c                ó¨   <€ \         SV `  V4       \        V4      V n        \	        VP
                  ^,          4      V n        V P                  4        R# r³  )rT   rU   rU  r  r±  rW   r¹  r+  ra   s   &&€r4   rU   Ú,BridgeTowerForImageAndTextRetrieval.__init__ï  s@   ø€ Ü‰Ñ˜Ô ä+¨FÓ3ˆÔä+¨F×,>Ñ,>ÀÕ,BÓCˆŒð 	�‰Ör7   c                óv  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[S[,          RS[/
# rÈ  )r/   rí  r0   r   r   r   )r2   r3   s   "€r4   r5   Ú0BridgeTowerForImageAndTextRetrieval.__annotate__û  sÙ   ø€ ÷ G
ñ G
á×#Ñ# dÕ*ðG
ñ ×)Ñ)¨DÕ0ðG
ñ ×(Ñ(¨4Õ/ð	G
ñ
 ×'Ñ'¨$Õ.ðG
ñ ×$Ñ$ tÕ+ðG
ñ ×(Ñ(¨4Õ/ðG
ñ ×'Ñ'¨$Õ.ðG
ñ × Ñ  4Õ'ðG
ñ Ñ+Õ,ðG
ñ 
"ñG
r7   c	                ó(  € V P                   ! R
RVRVRVRVRVRVRV/V	B p
V
P                  pV P                  V4      pRpVe.   \        4       pVP	                  VP
                  4      pV! WÈ4      p\        VVV
P                  V
P                  R	7      # )aŽ  
image_embeds (`torch.FloatTensor` of shape `(batch_size, num_patches, hidden_size)`, *optional*):
    Optionally, instead of passing `pixel_values`, you can choose to directly pass an embedded representation.
    This is useful if you want more control over how to convert `pixel_values` into patch embeddings.
labels (`torch.LongTensor` of shape `(batch_size, 1)`, *optional*):
    Labels for computing the image-text matching loss. 0 means the pairs don't match and 1 means they match.
    The pairs with 0 will be skipped for calculation.

Examples:

```python
>>> from transformers import BridgeTowerProcessor, BridgeTowerForImageAndTextRetrieval
>>> import httpx
>>> from io import BytesIO
>>> from PIL import Image

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> texts = ["An image of two cats chilling on a couch", "A football player scoring a goal"]

>>> processor = BridgeTowerProcessor.from_pretrained("BridgeTower/bridgetower-base-itm-mlm")
>>> model = BridgeTowerForImageAndTextRetrieval.from_pretrained("BridgeTower/bridgetower-base-itm-mlm")

>>> # forward pass
>>> scores = dict()
>>> for text in texts:
...     # prepare inputs
...     encoding = processor(image, text, return_tensors="pt")
...     outputs = model(**encoding)
...     scores[text] = outputs.logits[0, 1].item()
```rê  rh   ræ  rÛ   r{  rë  rH   NrË  r8   )	r  r+   r¹  r   rr   ro   r   r,   r-   )rb   rê  rh   ræ  rÛ   r{  rë  rH   r}  rV  rÌ  r+   rF   Úitm_lossrÏ  s   &&&&&&&&&,     r4   r}   Ú+BridgeTowerForImageAndTextRetrieval.forwardù  sÐ   € ð\ ×"Ò"ñ 	
Øð	
à)ð	
ð *ð	
ð &ð		
ð
 "ð	
ð (ð	
ð &ð	
ð ñ	
ˆð  ×-Ñ-ˆà—‘ Ó.ˆàˆØÒÜ'Ó)ˆHà—Y‘Y˜vŸ}™}Ó-ˆFÙ Ó/ˆHä'ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r7   )r  r¹  rÑ  ©r9   r:   r;   r<   rU   r   r   r}   r?   r@   r   r€   s   @@r4   rÔ  rÔ  è  s4   ù‡ € õð Ø÷G
ñ G
ó ó ÷G
ð G
r7   rÔ  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚBridgeTowerContrastiveHeadiE  c                óZ   <€ \         SV `  4        \        P                  ! W4      V n        R # ry   r´  )rb   rW   Ú
embed_sizerd   s   &&&€r4   rU   Ú#BridgeTowerContrastiveHead.__init__F  s   ø€ Ü‰ÑÔÜ—)’)˜KÓ4ˆŽr7   c                ó(   € V P                  V4      pV# ry   r¸  )rb   r­  s   &&r4   r}   Ú"BridgeTowerContrastiveHead.forwardJ  s   € Ø�G‰G�A‹JˆØˆr7   r¸  r•   r€   s   @@r4   rÞ  rÞ  E  s   ù‡ € õ5÷ò r7   rÞ  zl
    BridgeTower Model with a image-text contrastive head on top computing image-text contrastive loss.
    c                   ó\   a a€ ] tR tRt oV 3R lt]]RV3R lR ll4       4       tRtVt	V ;t
# )r  iO  c                óØ  <€ \         SV `  V4       \        V4      V n        \	        VP
                  VP                  4      V n        \	        VP
                  VP                  4      V n        \	        VP
                  ^,          VP                  4      V n	        \        P                  ! \        P                  ! V P                  P                  4      4      V n        V P#                  4        R# r³  )rT   rU   rU  r  rÞ  rW   Úcontrastive_hidden_sizeÚitc_text_headÚitc_image_headÚitc_cross_modal_headr   r©   r/   r  rc   r  r  r+  ra   s   &&€r4   rU   Ú*BridgeTowerForContrastiveLearning.__init__U  s£   ø€ Ü‰Ñ˜Ô ä+¨FÓ3ˆÔä7¸×8JÑ8JÈF×LjÑLjÓkˆÔÜ8¸×9KÑ9KÈV×MkÑMkÓlˆÔÜ$>¸v×?QÑ?QÐTUÕ?UÐW]×WuÑWuÓ$vˆÔ!äŸ<š<¬¯ª°T·[±[×5WÑ5WÓ(XÓYˆÔà�‰Ör7   c                ób  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[R,          R
S[S[,          RS[/
# )r(   rê  Nrh   ræ  rÛ   r{  rë  rH   Úreturn_lossrV  r¼   )r/   rí  r0   rs   r   r   rC   )r2   r3   s   "€r4   r5   Ú.BridgeTowerForContrastiveLearning.__annotate__d  sÒ   ø€ ÷ s
ñ s
á×#Ñ# dÕ*ðs
ñ ×)Ñ)¨DÕ0ðs
ñ ×(Ñ(¨4Õ/ð	s
ñ
 ×'Ñ'¨$Õ.ðs
ñ ×$Ñ$ tÕ+ðs
ñ ×(Ñ(¨4Õ/ðs
ñ ×'Ñ'¨$Õ.ðs
ñ ˜D•[ðs
ñ Ñ+Õ,ðs
ñ 
&ñs
r7   c	                óB  € V	P                  RR4       V P                  ! RRVRVRVRVRVRVR	V/V	B p
V
P                  pV
P                  w  rÍpVR,          pVR,          pV P                  P                  P
                  P                  V4      pV P                  P                  \        P                  ! R^\        P                  V P                  P                  P                  P                  R
7      4      P                  V4      pV P                  P                  V4      V,           p\        P                   P#                  V P%                  VR,          4      R^R7      p\        P                   P#                  V P'                  VR,          4      R^R7      P)                  VP                  R7      p\        P                   P#                  V P+                  V4      R^R7      P)                  VP                  R7      p\        P,                  ! W÷V.RR7      pV P.                  P1                  4       P)                  VP                  R7      p\        P2                  ! W÷P5                  4       4      V,          p\        P2                  ! VVP5                  4       4      V,          p\        P2                  ! VVP5                  4       4      V,          pRpV'       d£   \        P6                  ! \9        V4      VP                  R7      p\        P                   P;                  VV4      p\        P                   P;                  VV4      p\        P                   P;                  VV4      pVV,           V,           R,          p\=        VVVVVV
P                  V
P>                  R7      # )a�  
image_embeds (`torch.FloatTensor` of shape `(batch_size, num_patches, hidden_size)`, *optional*):
    Optionally, instead of passing `pixel_values`, you can choose to directly pass an embedded representation.
    This is useful if you want more control over how to convert `pixel_values` into patch embeddings.
return_loss (`bool`, *optional*):
    Whether or not to return the contrastive loss.

Examples:

```python
>>> from transformers import BridgeTowerProcessor, BridgeTowerForContrastiveLearning
>>> import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> import torch

>>> image_urls = [
...     "https://farm4.staticflickr.com/3395/3428278415_81c3e27f15_z.jpg",
...     "http://images.cocodataset.org/val2017/000000039769.jpg",
... ]
>>> texts = ["two dogs in a car", "two cats sleeping on a couch"]

>>> with httpx.stream("GET", urls[0]) as response:
...     image1 = Image.open(BytesIO(response.read()))

>>> with httpx.stream("GET", urls[1]) as response:
...     image2 = Image.open(BytesIO(response.read()))

>>> images = [image1, image2]

>>> processor = BridgeTowerProcessor.from_pretrained("BridgeTower/bridgetower-large-itm-mlm-itc")
>>> model = BridgeTowerForContrastiveLearning.from_pretrained("BridgeTower/bridgetower-large-itm-mlm-itc")

>>> inputs = processor(images, texts, padding=True, return_tensors="pt")
>>> loss = model(**inputs, return_loss=True).loss

>>> inputs = processor(images, texts[::-1], padding=True, return_tensors="pt")
>>> loss_swapped = model(**inputs, return_loss=True).loss

>>> print("Loss", round(loss.item(), 4))
Loss 0.0019

>>> print("Loss with swapped images", round(loss_swapped.item(), 4))
Loss with swapped images 2.126
```Úoutput_hidden_statesTrê  rh   ræ  rÛ   r{  rë  rH   rm   )rÆ   rZ  )ro   rÅ   Ng      @)rE   rF   rG   rH   rI   r,   r-   r8   r¥   r  )rÇ   rL  rÇ   éþÿÿÿ) Ú
setdefaultr  r+   r,   r\  r*  r  râ  r/   r‚  rå  rÉ   ro   r�  r[  r   rÏ   Ú	normalizerç  rè  rr   ré  r÷   r  Úexpr]  Útr´   r€  Úcross_entropyrC   r-   )rb   rê  rh   ræ  rÛ   r{  rë  rH   rì  rV  rÌ  r+   Úhidden_states_txtÚhidden_states_imgÚhidden_states_cross_modalrG   rŠ  r�  rI   rF   r  Úlogits_text_to_imageÚlogits_text_to_crossÚlogits_image_to_crossÚitc_lossr}  Útext_to_image_lossÚtext_to_cross_lossÚimage_to_cross_losss   &&&&&&&&&,                   r4   r}   Ú)BridgeTowerForContrastiveLearning.forwardb  s9  € ðv 	×ÑÐ0°$Ô7Ø×"Ò"ñ 	
Øð	
à)ð	
ð *ð	
ð &ð		
ð
 "ð	
ð (ð	
ð &ð	
ð ñ	
ˆð  ×-Ñ-ˆØJQ×J_ÑJ_ÑGÐÐ.Gà'¨Õ+ˆØ(¨Õ,ˆà#×/Ñ/×<Ñ<×CÑC×PÑPÐQ]Ó^ÐØ&*×&6Ñ&6×&LÑ&LÜ�JŠJ�t˜Q¤e§j¡j¸×9IÑ9I×9_Ñ9_×9fÑ9f×9mÑ9mÔnó'
ç
‰)Ð(Ó
)ð 	$ð ×'Ñ'×CÑCÐDXÓYÐ\wÕwˆô —m‘m×-Ñ-¨d×.@Ñ.@ÀÈWÕAUÓ.VÐ\^ÐbcÐ-ÓdˆÜ—}‘}×.Ñ.¨t×/BÑ/BÀ<ÐPWÕCXÓ/YÐ_aÐefÐ.Óg×jÑjØ×%Ñ%ð kó 
ˆô —}‘}×.Ñ.¨t×/HÑ/HÈÓ/WÐ]_ÐcdÐ.Óe×hÑhØ×%Ñ%ð ió 
ˆô —’˜k¸ÐFÈBÔOˆà×&Ñ&×*Ñ*Ó,×/Ñ/°{×7IÑ7IÐ/ÓJˆÜ$Ÿ|š|¨K¿¹Ó9IÓJÈ[ÕXÐÜ$Ÿ|š|¨K¸¿¹Ó9IÓJÈ[ÕXÐÜ %§¢¨\¸<¿>¹>Ó;KÓ LÈ{Õ ZÐàˆçÜ—\’\¤# f£+°f·m±mÔDˆFÜ!#§¡×!<Ñ!<Ð=QÐSYÓ!ZÐÜ!#§¡×!<Ñ!<Ð=QÐSYÓ!ZÐÜ"$§-¡-×"=Ñ"=Ð>SÐU[Ó"\ÐØ*Ð-?Õ?ÐBUÕUÐY\Õ\ˆHä+ØØØ#Ø%Ø%Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r7   )r  ré  rè  rç  r  rÑ  rÜ  r€   s   @@r4   r  r  O  s4   ù‡ € õð Ø÷s
ñ s
ó ó ÷s
ð s
r7   r  )Nrx  )r  rÔ  r¼  rU  r  )Yr=   Úcollectionsr   Úcollections.abcr   Údataclassesr   r/   r   Útorch.nnr   Ú r   r  Úactivationsr   r	   Úcache_utilsr
   r   r   Úmasking_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_bridgetowerr    r!   r"   Ú
get_loggerr9   ÚloggerÚ_TOKENIZER_FOR_DOCr&   rC   rW  rL   r‚   r—   ré   r  r  r,  r<  rD  rb  rd  r‡  r—  r§  rÄ  rÎ  rÛ  r  r(  r8  rU  r¡  r  r±  r¼  rÔ  rÞ  r  Ú__all__r8   r7   r4   Ú<module>r     s(  ðñ  å #Ý $Ý !ã Ý Ý %å &ß 6ß CÑ Cß JÝ 9÷õ ÷ GÝ &Ý 6ß KÓ Kß IÝ 5ß hÑ hð 
×	Ò	˜HÓ	%€à'Ð ñ ðôð
 ô7˜[ó 7ó óð7ñ$ ðôð
 ô7 ;ó 7ó óð7ô4) 2§9¡9ô )ôX˜RŸY™Yô ô6P "§)¡)ô Pôf7" 2§9¡9ô 7"ôtd˜2Ÿ9™9ô dô4˜BŸI™Iô ô˜bŸi™iô ô ˜Ÿ	™	ô ô˜Ÿ	™	ô ÷ %ô:@)˜rŸy™yô @)ôHI) §	¡	ô I)ôZ.˜2Ÿ9™9ô .ô:8 §	¡	ô 8ôv?Ð5ô ?ôF
˜RŸY™Yô 
ôFc8 §	¡	ô c8ðL ô)% ó )%ó ð)%ôXYÐ7ô Yñ" ðôô{6Ð5ó {6óð{6ñ| ðôô
^JÐ1ó ^Jóð
^JôD	¨¯©ô ô"˜Ÿ™ô ô ˜Ÿ™ô ñ ðôô
\
Ð7ó \
óð
\
ñ~ ðôôT
Ð*Dó T
óðT
ôn §¡ô ñ ðôô
C
Ð(Bó C
óð
C
òL‚r7   