+
    œ°³j­  ã                   ó„  € R t ^ RI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 ^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Ht ^RI H!t! ^RI"H#t#H$t$H%t%H&t&H't' ^RI(H)t) ^RI*H+t+ ^RI,H-t-H.t. ]&P^                  ! ]04      t1]%! RR7      ] ! R R]#4      4       4       t2 ! R R]Pf                  4      t4 ! R R]Pf                  4      t5 ! R R]Pf                  4      t6R]5/t7 ! R R]Pf                  4      t8 ! R  R!]Pf                  4      t9 ! R" R#]Pf                  4      t: ! R$ R%]4      t; ! R& R']Pf                  4      t<]% ! R( R)]4      4       t= ! R* R+]Pf                  4      t> ! R, R-]Pf                  4      t?RCR. R/ llt@ ! R0 R1]Pf                  4      tA ! R2 R3]4      tB ! R4 R5]Pf                  4      tC ! R6 R7]Pf                  4      tD]%! R8R7       ! R9 R:]=4      4       tE ! R; R<]Pf                  4      tF]%! R=R7       ! R> R?]=4      4       tG]%! R@R7       ! RA RB]=]4      4       tH. RDOtIR# )EzPyTorch GIT model.N)ÚCallable)Ú	dataclass)Únn)Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPastÚBaseModelOutputWithPoolingÚCausalLMOutputWithPast)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)ÚModelOutputÚTransformersKwargsÚauto_docstringÚloggingÚ	torch_int)Úmerge_with_config_defaults)Úcapture_outputs)Ú	GitConfigÚGitVisionConfigz}
    Base class for vision model's outputs that also contains image embeddings of the pooling of the last hidden states.
    )Úcustom_introc                   ó@   a € ] tR t^6t o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚGitVisionModelOutputzì
image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim)` *optional* returned when model is initialized with `with_projection=True`):
    The image embeddings obtained by applying the projection layer to the pooler_output.
Nc                óú   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )é   NÚimage_embedsÚlast_hidden_state.Úhidden_statesÚ
attentions)ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úe/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/git/modeling_git.pyÚ__annotate__Ú!GitVisionModelOutput.__annotate__6   sy   ø‡ ‚ ñ ×#Ñ# dÕ*Ñ1ñ ñ ×(Ñ(¨4Õ/Ñ6ñ ñ ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ ñ  ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò! ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r"   r#   r$   r%   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r*   s   @r+   r   r   6   s(   ø‡ € ñð
 .2€LØ26ÐØ:>€MØ7;€J÷! ƒ r.   r   c                   óL   a a€ ] tR t^It oRtV 3R ltRV3R lR lltRtVtV ;t	# )ÚGitEmbeddingsz;Construct the embeddings from word and position 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        R# ))Úpadding_idx©ÚepsF©Ú
persistentN©é   éÿÿÿÿ)ÚsuperÚ__init__r   Ú	EmbeddingÚ
vocab_sizeÚhidden_sizeÚpad_token_idÚword_embeddingsÚmax_position_embeddingsÚposition_embeddingsÚ	LayerNormÚlayer_norm_epsÚDropoutÚhidden_dropout_probÚdropoutÚBufferr&   ÚarangeÚexpandÚposition_ids©ÚselfÚconfigÚ	__class__s   &&€r+   rD   ÚGitEmbeddings.__init__L   s¹   ø€ Ü‰ÑÔÜ!Ÿ|š|¨F×,=Ñ,=¸v×?QÑ?QÐ_e×_rÑ_rÔsˆÔÜ#%§<¢<°×0NÑ0NÐPV×PbÑPbÓ#cˆÔ äŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŒäŸIšI¤e§l¢l°6×3QÑ3QÓ&R×&YÑ&YÐZaÓ&bÐotÔuˆÖr.   c          
      ó²   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[RS[ P                  /# )r!   Ú	input_idsNrT   Úinputs_embedsÚpast_key_values_lengthÚreturn)r&   Ú
LongTensorr'   ÚintÚTensor)r)   r*   s   "€r+   r,   ÚGitEmbeddings.__annotate__V   sb   ø€ ÷ ñ á×#Ñ# dÕ*ðñ ×&Ñ&¨Õ-ðñ ×(Ñ(¨4Õ/ð	ñ
 !$ðñ 
�‰ñr.   c                óP  € Ve   VP                  4       pMVP                  4       R R pV^,          pVf   V P                  RWFV,           13,          pVf   V P                  V4      pMTpV P                  V4      pWx,          pV P	                  V4      pV P                  V4      pV# )NºNNNrB   )ÚsizerT   rI   rK   rL   rP   )	rV   r[   rT   r\   r]   Úinput_shapeÚ
seq_lengthÚ
embeddingsrK   s	   &&&&&    r+   ÚforwardÚGitEmbeddings.forwardV   s¯   € ð Ò Ø#Ÿ.™.Ó*‰Kà'×,Ñ,Ó.¨s°Ð3ˆKà  •^ˆ
àÒØ×,Ñ,¨QÐ0FÐVlÕIlÐ0lÐ-lÕmˆLàÒ Ø×-Ñ-¨iÓ8‰Jà&ˆJà"×6Ñ6°|ÓDÐØÕ)ˆ
à—^‘^ JÓ/ˆ
Ø—\‘\ *Ó-ˆ
ØÐr.   )rL   rP   rK   rT   rI   )NNNé    ©
r0   r1   r2   r3   r4   rD   ri   r6   r7   Ú__classcell__©rX   r*   s   @@r+   r9   r9   I   s   ù‡ € ÙEõv÷÷ ò r.   r9   c                   óL   a a€ ] tR t^tt oRV 3R lltRV3R lR lltRtVtV ;t# )ÚGitSelfAttentionc                óh  <€ \         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f.   \        P                  RV P                  P                   R24       VP                  V n        \        VP                  VP                  ,          4      V n        V P                  V P                  ,          V n        \        VP                  P                  VP                  P                   ,          ^,          ^,           4      V n        VP$                  e$   V ;P"                  VP$                  ,          u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        \&        P0                  ! VP2                  4      V n        R# )rk   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (Ú)NzInstantiating z¹ without passing a `layer_idx` is not recommended and will lead to errors during the forward call if caching is used. Please make sure to provide a `layer_idx` when creating this class.)rC   rD   rG   Únum_attention_headsÚhasattrÚ
ValueErrorÚ	layer_idxÚloggerÚwarning_oncerX   r0   r`   Úattention_head_sizeÚall_head_sizeÚvision_configÚ
image_sizeÚ
patch_sizeÚimage_patch_tokensÚnum_image_with_embeddingr   ÚLinearÚqueryÚkeyÚvaluerN   Úattention_probs_dropout_probrP   ©rV   rW   rw   rX   s   &&&€r+   rD   ÚGitSelfAttention.__init__u   s¯  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Õ:¸aÔ?ÌÐPVÐXh×HiÒHiÜØ# F×$6Ñ$6Ð#7ð 8Ø ×4Ñ4Ð5°Qð8óð ð #ŒØÒÜ×ÑØ  §¡×!8Ñ!8Ð 9ð :,ð ,ôð $*×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÕ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔÜ"% v×';Ñ';×'FÑ'FÈ×I]ÑI]×IhÑIhÕ'hÐmnÕ&nÐqrÕ&rÓ"sˆÔØ×*Ñ*Ò6Ø×#Ò# v×'FÑ'FÕFÕ#ä—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ˆŽr.   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$   Úattention_maskNÚpast_key_valuesÚkwargsr^   )r&   ra   r'   r   r   r   r(   )r)   r*   s   "€r+   r,   ÚGitSelfAttention.__annotate__‘   s_   ø€ ÷ %.ñ %.á—|‘|ð%.ñ ×)Ñ)¨DÕ0ð%.ñ  �ð	%.ñ
 Ñ+Õ,ð%.ñ 
‰u�|‰|Õ	ñ%.r.   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 P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p	Ve   VP                  W‰V P                  4      w  r‰\        P                  ! WxP	                  RR4      4      p
V
\        P                  ! V P                  4      ,          p
Ve	   W¢,           p
\        P                  P                  V
RR7      pV P!                  V4      p\        P                  ! W¹4      pVP#                  ^ ^^^4      P%                  4       pVP'                  4       R R V P(                  3,           pVP                  V4      pWË3# )N©ÚdimrB   éþÿÿÿ)Úshaperz   r‚   ÚviewÚ	transposerƒ   r„   Úupdaterw   r&   ÚmatmulÚmathÚsqrtr   Ú
functionalÚsoftmaxrP   ÚpermuteÚ
contiguousre   r{   )rV   r$   rŠ   r‹   rŒ   rf   Úhidden_shapeÚquery_layerÚ	key_layerÚvalue_layerÚattention_scoresÚattention_probsÚcontext_layerÚnew_context_layer_shapes   &&&&,         r+   ri   ÚGitSelfAttention.forward‘   s¤  € ð $×)Ñ)¨#¨2Ð.ˆØC˜ÐC bÐC¨$×*BÑ*BÑCˆØ—j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆà—H‘H˜]Ó+×0Ñ0°Ó>×HÑHÈÈAÓNˆ	Ø—j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆØÒ&Ø%4×%;Ñ%;¸IÐTX×TbÑTbÓ%cÑ"ˆIô !Ÿ<š<¨×5HÑ5HÈÈRÓ5PÓQÐà+¬d¯iªi¸×8PÑ8PÓ.QÕQÐØÒ%à/Õ@Ðô Ÿ-™-×/Ñ/Ð0@ÀbÐ/ÓIˆð Ÿ,™, Ó7ˆäŸš _ÓBˆà%×-Ñ-¨a°°A°qÓ9×DÑDÓFˆØ"/×"4Ñ"4Ó"6°s¸Ð";¸t×?QÑ?QÐ>SÕ"SÐØ%×*Ñ*Ð+BÓCˆàÐ-Ð-r.   )	r{   rz   rP   r   rƒ   rw   rt   r‚   r„   ©N©NN©	r0   r1   r2   r3   rD   ri   r6   r7   rm   rn   s   @@r+   rp   rp   t   s   ù‡ € ÷G÷8%.÷ %.ò %.r.   rp   c                   óD   a a€ ] tR t^ºt oV 3R ltV3R lR ltRtVtV ;t# )ÚGitSelfOutputc                ó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<   N)rC   rD   r   r�   rG   ÚdenserL   rM   rN   rO   rP   rU   s   &&€r+   rD   ÚGitSelfOutput.__init__»   s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr.   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# ©r!   r$   Úinput_tensorr^   ©r&   ra   )r)   r*   s   "€r+   r,   ÚGitSelfOutput.__annotate__Á   ó1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð ÑRW×R^ÑR^ñ r.   c                óx   € V P                  V4      pV P                  V4      pV P                  W,           4      pV# r¦   ©r­   rP   rL   ©rV   r$   r±   s   &&&r+   ri   ÚGitSelfOutput.forwardÁ   ó5   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™ }Õ'CÓDˆØÐr.   ©rL   r­   rP   r¨   rn   s   @@r+   rª   rª   º   ó   ù‡ € õ>÷÷ ð r.   rª   Úeagerc                   óL   a a€ ] tR t^Ít oRV 3R lltRV3R lR lltRtVtV ;t# )ÚGitAttentionc                óŠ   <€ \         SV `  4        \        VP                  ,          ! WR 7      V n        \        V4      V n        R# )©rw   N)rC   rD   ÚGIT_SELF_ATTENTION_CLASSESÚ_attn_implementationrV   rª   Úoutputr†   s   &&&€r+   rD   ÚGitAttention.__init__Î   s1   ø€ Ü‰ÑÔÜ.¨v×/JÑ/JÖKÈFÔhˆŒ	Ü# FÓ+ˆŽr.   c          
      ó    <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[S[,          RS[ P                  /# r‰   ©r&   ra   r'   r   r   r   )r)   r*   s   "€r+   r,   ÚGitAttention.__annotate__Ó   sZ   ø€ ÷  ñ  á—|‘|ð ñ ×)Ñ)¨DÕ0ð ñ  �ð	 ñ
 Ñ+Õ,ð ñ 
�‰ñ r.   c                óV   € V P                   ! VVV3/ VB w  rVV P                  WQ4      pV# r¦   )rV   rÃ   )rV   r$   rŠ   r‹   rŒ   Úattn_outputÚ_Úattention_outputs   &&&&,   r+   ri   ÚGitAttention.forwardÓ   s>   € ð ŸšØØØñ
ð ñ	
‰ˆð  Ÿ;™; {ÓBÐØÐr.   )rÃ   rV   r¦   r§   r¨   rn   s   @@r+   r¾   r¾   Í   s   ù‡ € ÷,÷
 ÷  ò  r.   r¾   c                   óD   a a€ ] tR t^åt oV 3R ltV3R lR ltRtVtV ;t# )ÚGitIntermediatec                ó"  <€ \         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 # r¦   )rC   rD   r   r�   rG   Úintermediate_sizer­   Ú
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnrU   s   &&€r+   rD   ÚGitIntermediate.__init__æ   s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬×-Ò-Ü'-¨f×.?Ñ.?Õ'@ˆDÖ$à'-×'8Ñ'8ˆDÖ$r.   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r!   r$   r^   r²   )r)   r*   s   "€r+   r,   ÚGitIntermediate.__annotate__î   s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r.   c                óJ   € V P                  V4      pV P                  V4      pV# r¦   ©r­   rÔ   ©rV   r$   s   &&r+   ri   ÚGitIntermediate.forwardî   s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr.   rÚ   r¨   rn   s   @@r+   rÎ   rÎ   å   s   ù‡ € õ9÷÷ ð r.   rÎ   c                   óD   a a€ ] tR t^õt oV 3R ltV3R lR ltRtVtV ;t# )Ú	GitOutputc                ó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¬   )rC   rD   r   r�   rÐ   rG   r­   rL   rM   rN   rO   rP   rU   s   &&€r+   rD   ÚGitOutput.__init__ö   s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr.   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# r°   r²   )r)   r*   s   "€r+   r,   ÚGitOutput.__annotate__ü   r´   r.   c                óx   € V P                  V4      pV P                  V4      pV P                  W,           4      pV# r¦   r¶   r·   s   &&&r+   ri   ÚGitOutput.forwardü   r¹   r.   rº   r¨   rn   s   @@r+   rÞ   rÞ   õ   r»   r.   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	# )	ÚGitLayeri  c                ó¶   <€ \         SV `  4        VP                  V n        ^V n        \	        WR7      V n        \        V4      V n        \        V4      V n	        R# )rA   rÀ   N)
rC   rD   Úchunk_size_feed_forwardÚseq_len_dimr¾   Ú	attentionrÎ   ÚintermediaterÞ   rÃ   r†   s   &&&€r+   rD   ÚGitLayer.__init__  sI   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ% fÔBˆŒÜ+¨FÓ3ˆÔÜ Ó'ˆŽr.   c          
      ó    <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[S[,          RS[ P                  /# r‰   rÆ   )r)   r*   s   "€r+   r,   ÚGitLayer.__annotate__  sZ   ø€ ÷ ñ á—|‘|ðñ ×)Ñ)¨DÕ0ðñ  �ð	ñ
 Ñ+Õ,ðñ 
�‰ñr.   c                óŠ   € V P                   ! VV3R V/VB p\        V P                  V P                  V P                  V4      pV# )r‹   )rê   r   Úfeed_forward_chunkrè   ré   )rV   r$   rŠ   r‹   rŒ   rË   Úlayer_outputs   &&&&,  r+   ri   ÚGitLayer.forward  s]   € ð  Ÿ>š>ØØñ
ð ,ð
ð ñ	
Ðô 1Ø×#Ñ# T×%AÑ%AÀ4×CSÑCSÐUeó
ˆð Ðr.   c                óJ   € V P                  V4      pV P                  W!4      pV# r¦   )rë   rÃ   )rV   rË   Úintermediate_outputrñ   s   &&  r+   rð   ÚGitLayer.feed_forward_chunk  s)   € Ø"×/Ñ/Ð0@ÓAÐØ—{‘{Ð#6ÓIˆØÐr.   )rê   rè   rë   rÃ   ré   r¦   r§   )
r0   r1   r2   r3   rD   ri   rð   r6   r7   rm   rn   s   @@r+   ræ   ræ     s   ù‡ € ÷(÷ò ÷&ò r.   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# )Ú
GitEncoderi%  c           	     óÖ   <€ \         SV `  4        Wn        \        P                  ! \        VP                  4       Uu. uF  p\        W4      NK  	  up4      V n        R V n	        R# u upi ©FN)
rC   rD   rW   r   Ú
ModuleListÚrangeÚnum_hidden_layersræ   ÚlayerÚgradient_checkpointing)rV   rW   ÚirX   s   && €r+   rD   ÚGitEncoder.__init__&  sR   ø€ Ü‰ÑÔØŒÜ—]’]ÄÀv×G_ÑG_ÔA`Ó#aÑA`¸A¤H¨VÖ$7ÑA`Ñ#aÓbˆŒ
Ø&+ˆÖ#ùò $bó   ½A&c                ó    <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[R,          RS[S[,          RS[/# )r!   r$   rŠ   Nr‹   Ú	use_cacherŒ   r^   )r&   ra   r'   r   Úboolr   r   r   )r)   r*   s   "€r+   r,   ÚGitEncoder.__annotate__,  sd   ø€ ÷ 
ñ 
á—|‘|ð
ñ ×)Ñ)¨DÕ0ð
ñ  �ð	
ñ
 ˜$•;ð
ñ Ñ+Õ,ð
ñ 
!ñ
r.   c                óX   € V P                    F  pV! VVV3/ VB pK  	  \        VVR 7      # )©r#   r‹   )rý   r   )rV   r$   rŠ   r‹   r  rŒ   Úlayer_modules   &&&&&, r+   ri   ÚGitEncoder.forward,  sD   € ð !ŸJœJˆLÙ(ØØØñð ñ	ŠMñ 'ô 'Ø+Ø+ô
ð 	
r.   )rW   rþ   rý   )NNNr¨   rn   s   @@r+   r÷   r÷   %  s   ù‡ € õ,÷
÷ 
ò 
r.   r÷   c                   ór   a a€ ] tR tRt oRtRtRt]P                  ! 4       V 3R l4       t	V3R lt
RtVtV ;t# )ÚGitPreTrainedModeliB  ÚgitTc                ón  <€ \         SV `  V4       \        V\        4      '       Ed   \        P
                  ! VP                  RV P                  P                  R7       \        P
                  ! VP                  P                  V P                  P                  R7       \        P
                  ! VP                  P                  V P                  P                  R7       \        P                  ! VP                  \        P                  ! VP                  P                   R,          4      P#                  R4      4       \        V\$        4      '       db   \        P                  ! VP                  \        P                  ! VP                  P                   R,          4      P#                  R4      4       R# R# )zInitialize the weightsç        )ÚmeanÚstd)r  NrB   r@   )rC   Ú_init_weightsrÑ   ÚGitVisionEmbeddingsÚinitÚnormal_Úclass_embeddingrW   Úinitializer_rangeÚpatch_embeddingÚweightÚposition_embeddingÚcopy_rT   r&   rR   r’   rS   r9   )rV   ÚmodulerX   s   &&€r+   r  Ú GitPreTrainedModel._init_weightsI  s  ø€ ô 	‰Ñ˜fÔ%Ü�fÔ1×2Ó2Ü�LŠL˜×/Ñ/°c¸t¿{¹{×?\Ñ?\Õ]Ü�LŠL˜×/Ñ/×6Ñ6¸D¿K¹K×<YÑ<YÕZÜ�LŠL˜×2Ñ2×9Ñ9¸t¿{¹{×?\Ñ?\Õ]Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÔhÜ�fœm×,Ò,Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÖhñ -r.   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ©r!   rW   ©r   )r)   r*   s   "€r+   r,   ÚGitPreTrainedModel.__annotate__B  s   ø‡ ‚ áÑò r.   r/   )ÚimageÚtext)r0   r1   r2   r3   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingr&   Úno_gradr  r5   r6   r7   rm   rn   s   @@r+   r  r  B  s:   ù‡ € ð ÐØ(ÐØ&*Ð#à
‡]‚]ƒ_ô	ió ð	i÷ … r.   r  c                   óf   a a€ ] tR tR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	# )
r  iW  c                ó    <€ V ^8„  d   QhRS[ /# r  ©r   )r)   r*   s   "€r+   r,   Ú GitVisionEmbeddings.__annotate__X  s   ø€ ÷ jñ j™ñ jr.   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Úbiasr>   Nr@   )rC   rD   rW   rG   Ú	embed_dimr}   r~   r   Ú	Parameterr&   Úrandnr  ÚConv2dÚnum_channelsr  Únum_patchesÚnum_positionsrE   r  rQ   rR   rS   rT   rU   s   &&€r+   rD   ÚGitVisionEmbeddings.__init__X  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ˆÖr.   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r!   rh   ÚheightÚwidthr^   )r&   ra   r`   )r)   r*   s   "€r+   r,   r*  n  s;   ø€ ÷ 'Dñ 'D±5·<±<ð 'DÉð 'DÑUXð 'DÑ]b×]iÑ]iñ 'Dr.   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
g      à?ÚbicubicF)re   ÚmodeÚalign_cornersr�   )rd   :NrA   N©rd   :rA   NNrB   )r’   r  r  Ú	unsqueezer&   ÚjitÚ
is_tracingrT   r~   r   Úreshaper›   r   r™   Úinterpolater“   Úcat)rV   rh   r:  r;  r6  r  r7  Úclass_pos_embedÚpatch_pos_embedr�   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&         r+   Úinterpolate_pos_encodingÚ,GitVisionEmbeddings.interpolate_pos_encodingn  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ÐCr.   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r!   Úpixel_valuesr^   )r&   r'   ra   )r)   r*   s   "€r+   r,   r*  —  s(   ø€ ÷ ñ ¡E×$5Ñ$5ð ÑZ_×ZfÑZfñ r.   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 (ú).©Údtyper�   rB   )r’   r}   rv   r  r  rT  ÚtoÚflattenr”   r  rS   r&   rF  rL  r  rT   )rV   rO  rL  Ú
batch_sizerÊ   r:  r;  Útarget_dtypeÚpatch_embedsÚclass_embedsrh   s   &&&        r+   ri   ÚGitVisionEmbeddings.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ØÐr.   )
r  rW   r1  r}   r6  r7  r  r~   r  rT   )F)
r0   r1   r2   r3   rD   rL  ri   r6   r7   rm   rn   s   @@r+   r  r  W  s-   ù‡ € ÷jó j÷,'Dð 'D÷R÷ ò r.   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# )ÚGitVisionMLPiª  c                ó(  <€ \         SV `  4        Wn        \        VP                  ,          V n        \        P                  ! VP                  VP                  4      V n
        \        P                  ! VP                  VP                  4      V n        R # r¦   )rC   rD   rW   r   rÒ   Úactivation_fnr   r�   rG   rÐ   Úfc1Úfc2rU   s   &&€r+   rD   ÚGitVisionMLP.__init__«  sb   ø€ Ü‰ÑÔØŒÜ# F×$5Ñ$5Õ6ˆÔÜ—9’9˜V×/Ñ/°×1IÑ1IÓJˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÓJˆŽr.   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r×   r²   )r)   r*   s   "€r+   r,   ÚGitVisionMLP.__annotate__²  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r.   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r¦   )r`  r_  ra  rÛ   s   &&r+   ri   ÚGitVisionMLP.forward²  s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆØÐr.   )r_  rW   r`  ra  r¨   rn   s   @@r+   r]  r]  ª  s   ù‡ € õK÷÷ ð r.   r]  c                óÞ   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        /# )	r!   r  r‚   rƒ   r„   rŠ   NÚscalingrP   )r   ÚModuler&   ra   Úfloat)r)   s   "r+   r,   r,   º  sg   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ñ%r.   c                 óÎ  € \         P                  ! WP                  RR4      4      V,          pVe	   W„,           p\        P                  P                  VR\         P                  R7      P                  VP                  4      p\        P                  P                  W†V P                  R7      p\         P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )rA   )r�   rT  )ÚpÚtrainingrB   r‘   )r&   r–   r”   r   r™   rš   Úfloat32rU  rT  rP   rm  rœ   )
r  r‚   rƒ   r„   rŠ   rh  rP   rŒ   Úattn_weightsrÉ   s
   &&&&&&&,  r+   Úeager_attention_forwardrp  º  s°   € ô —<’< §}¡}°R¸Ó'<Ó=ÀÕG€LØÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r.   c                   óL   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tVtV ;t	# )ÚGitVisionAttentioniÑ  z=Multi-headed attention from 'Attention Is All You Need' paperc                ó<  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        V P                  V P                  ,          V n        V P                  V P                  ,          V P                  8w  d'   \        R V P                   RV P                   R24      hV P                  R,          V n	        VP                  V n        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                  V P                  4      V n        R# )z;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: rR  FNg      à¿)rC   rD   rW   rG   r1  rt   Ú	num_headsÚhead_dimrv   ÚscaleÚattention_dropoutrP   Ú	is_causalr   r�   Úk_projÚv_projÚq_projÚout_projrU   s   &&€r+   rD   ÚGitVisionAttention.__init__Ô  s  ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ×3Ñ3ˆŒØŸ™¨$¯.©.Õ8ˆŒØ�=‰=˜4Ÿ>™>Õ)¨T¯^©^Ô;ÜØMÈdÏnÉnÐM]ð ^Ø—N‘NÐ# 2ð'óð ð —]‘] DÕ(ˆŒ
Ø×/Ñ/ˆŒØˆŒä—i’i §¡°·±Ó?ˆŒÜ—i’i §¡°·±Ó?ˆŒÜ—i’i §¡°·±Ó?ˆŒÜŸ	š	 $§.¡.°$·.±.ÓAˆŽr.   c                óÄ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[S[ P                  S[ P                  R,          3,          /# )r!   r$   rŠ   NrŒ   r^   )r&   ra   r   r   r(   )r)   r*   s   "€r+   r,   ÚGitVisionAttention.__annotate__è  s]   ø€ ÷ )ñ )á—|‘|ð)ñ Ÿ™ tÕ+ð)ñ Ñ+Õ,ð	)ñ
 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñ)r.   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 P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p\        P                  ! V P                  P                  \        4      p	T	! V VVVV3RV P                  RV P                  RV P                  '       g   RMV P                  /VB w  r«V
P                   ! . VORN5!  P#                  4       p
V P%                  V
4      p
W«3# )z#Input shape: Batch x Time x ChannelNrx  rh  rP   r  rB   )r’   ru  r{  r“   r”   ry  rz  r   Úget_interfacerW   rÂ   rp  rx  rv  rm  rP   rD  rœ   r|  )rV   r$   rŠ   rŒ   rf   r�   ÚqueriesÚkeysÚvaluesÚattention_interfacerÉ   ro  s   &&&,        r+   ri   ÚGitVisionAttention.forwardè  sW  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆØ—+‘+˜mÓ,×1Ñ1°,Ó?×IÑIÈ!ÈQÓOˆØ�{‰{˜=Ó)×.Ñ.¨|Ó<×FÑFÀqÈ!ÓLˆØ—‘˜]Ó+×0Ñ0°Ó>×HÑHÈÈAÓNˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ
%
ð —n‘nð
%
ð —J‘Jð
%
ð  $Ÿ}Ÿ}˜}‘C°$·,±,ð
%
ð ñ
%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—m‘m KÓ0ˆØÐ(Ð(r.   )rW   rP   r1  ru  rx  ry  rt  r|  r{  rv  rz  r¦   rl   rn   s   @@r+   rr  rr  Ñ  s   ù‡ € ÙGõB÷()÷ )ò )r.   rr  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚGitVisionEncoderLayeri  c                ó    <€ V ^8„  d   QhRS[ /# r  r)  )r)   r*   s   "€r+   r,   Ú"GitVisionEncoderLayer.__annotate__  s   ø€ ÷ Sñ S™ñ Sr.   c                óJ  <€ \         SV `  4        VP                  V n        \	        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        R# r¬   )rC   rD   rG   r1  rr  Ú	self_attnr   rL   rM   Úlayer_norm1r]  ÚmlpÚlayer_norm2rU   s   &&€r+   rD   ÚGitVisionEncoderLayer.__init__  sm   ø€ Ü‰ÑÔØ×+Ñ+ˆŒÜ+¨FÓ3ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÔÜ Ó'ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÖr.   c                ó~   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[,          RS[ P                  /# )r!   r$   rŠ   rŒ   r^   )r&   ra   r   r   r'   )r)   r*   s   "€r+   r,   rŠ    sG   ø€ ÷ ñ á—|‘|ðñ Ÿ™ðñ Ñ+Õ,ð	ñ
 
×	Ñ	ñr.   c                óÄ   € TpV P                  V4      pV P                  ! RR VRV/VB w  rWA,           pTpV P                  V4      pV P                  V4      pWA,           pV# )r$   rŠ   r/   )r�  rŒ  r�  rŽ  )rV   r$   rŠ   rŒ   ÚresidualrÊ   s   &&&,  r+   ri   ÚGitVisionEncoderLayer.forward  s   € ð !ˆà×(Ñ(¨Ó7ˆØŸ>š>ñ 
Ø'ð
à)ð
ð ñ
Ñˆð
 !Õ0ˆà ˆØ×(Ñ(¨Ó7ˆØŸ™ Ó/ˆØ Õ0ˆàÐr.   )r1  r�  r�  rŽ  rŒ  r¨   rn   s   @@r+   rˆ  rˆ    s    ù‡ € ÷Só S÷÷ ð r.   rˆ  c                   óX   a a€ ] tR tRt oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )	ÚGitVisionEncoderi-  z£
Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
[`GitVisionEncoderLayer`].

Args:
    config: GitVisionConfig
c                ó    <€ V ^8„  d   QhRS[ /# r  r)  )r)   r*   s   "€r+   r,   ÚGitVisionEncoder.__annotate__6  s   ø€ ÷ ,ñ ,™ñ ,r.   c                óÖ   <€ \         SV `  4        Wn        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        R V n	        R# u upi rù   )
rC   rD   rW   r   rú   rû   rü   rˆ  Úlayersrþ   )rV   rW   rÊ   rX   s   && €r+   rD   ÚGitVisionEncoder.__init__6  sT   ø€ Ü‰ÑÔØŒÜ—m’mÌEÐRX×RjÑRjÔLkÓ$lÑLkÀqÔ%:¸6Ö%BÑLkÑ$lÓmˆŒØ&+ˆÖ#ùò %mr  c                ó^   <€ V ^8„  d   QhRS[ P                  R,          RS[S[,          RS[/# )r!   rŠ   NrŒ   r^   )r&   ra   r   r   r   )r)   r*   s   "€r+   r,   r˜  <  s:   ø€ ÷ 
ñ 
ñ Ÿ™ tÕ+ð
ñ Ñ+Õ,ð	
ñ
 
ñ
r.   c                óX   € TpV P                    F  pV! VV3/ VB pK  	  \        VR 7      # )©r#   )rš  r   )rV   r\   rŠ   rŒ   r$   Úencoder_layers   &&&,  r+   ri   ÚGitVisionEncoder.forward<  sC   € ð &ˆØ!Ÿ[œ[ˆMÙ)ØØñð ñŠMñ )ô Ø+ô
ð 	
r.   )rW   rþ   rš  r¦   rl   rn   s   @@r+   r–  r–  -  s#   ù‡ € ñ÷,ó ,÷
÷ 
ò 
r.   r–  c                   ó^   a a€ ] tR tRt oV3R lV 3R llt]RV3R lR ll4       tRtVtV ;t	# )ÚGitVisionTransformeriO  c                ó    <€ V ^8„  d   QhRS[ /# r  r)  )r)   r*   s   "€r+   r,   Ú!GitVisionTransformer.__annotate__P  s   ø€ ÷ Qñ Q™ñ Qr.   c                ó   <€ \         SV `  4        Wn        VP                  p\	        V4      V n        \        P                  ! W!P                  R 7      V n	        \        V4      V n        \        P                  ! W!P                  R 7      V n        R# r¬   )rC   rD   rW   rG   r  rh   r   rL   rM   Úpre_layrnormr–  ÚencoderÚpost_layernorm)rV   rW   r1  rX   s   && €r+   rD   ÚGitVisionTransformer.__init__P  sd   ø€ Ü‰ÑÔØŒØ×&Ñ&ˆ	ä-¨fÓ5ˆŒÜŸLšL¨×8MÑ8MÔNˆÔÜ'¨Ó/ˆŒÜ Ÿlšl¨9×:OÑ:OÔPˆÖr.   c                ór   <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[S[,          RS[/# ©r!   rO  NrL  rŒ   r^   )r&   r'   r  r   r   r   )r)   r*   s   "€r+   r,   r¤  [  sH   ø€ ÷ 
ñ 
á×'Ñ'¨$Õ.ð
ñ #'¨¥+ð
ñ Ñ+Õ,ð	
ñ
 
ñ
r.   c                óà   € Vf   \        R4      hV P                  WR7      pV P                  V4      pV P                  ! RRV/VB pVP                  pV P                  V4      p\        VR7      # )Nz You have to specify pixel_values©rL  r\   rž  r/   )rv   rh   r¦  r§  r#   r¨  r   )rV   rO  rL  rŒ   r$   Úencoder_outputsr#   s   &&&,   r+   ri   ÚGitVisionTransformer.forwardZ  s„   € ð ÒÜÐ?Ó@Ð@àŸ™¨˜ÓhˆØ×)Ñ)¨-Ó8ˆàŸ,š,ñ 
Ø'ð
àñ
ˆð
 ,×=Ñ=Ðà ×/Ñ/Ð0AÓBÐäØ/ô
ð 	
r.   )rW   rh   r§  r¨  r¦  ©NF)
r0   r1   r2   r3   rD   r   ri   r6   r7   rm   rn   s   @@r+   r¢  r¢  O  s/   ù‡ € ÷Qó Qð ÷
ñ 
ó ÷
ð 
r.   r¢  zY
    The vision model from CLIP, used in GIT, without any head or projection on top.
    c                   ó²   a a€ ] tR tRt oRtRtR]R]/tV3R lV 3R llt	V3R lR lt
]]! R	R
7      ]RV3R lR ll4       4       4       tV3R ltRtVtV ;t# )ÚGitVisionModeliu  rO  r$   r%   c                ó    <€ V ^8„  d   QhRS[ /# r  r)  )r)   r*   s   "€r+   r,   ÚGitVisionModel.__annotate__ƒ  s   ø€ ÷ ñ ™ñ r.   c                óf   <€ \         SV `  V4       \        V4      V n        V P	                  4        R # r¦   )rC   rD   r¢  Úvision_modelÚ	post_initrU   s   &&€r+   rD   ÚGitVisionModel.__init__ƒ  s'   ø€ Ü‰Ñ˜Ô Ü0°Ó8ˆÔà�‰Ör.   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r!   r^   )r   ri  )r)   r*   s   "€r+   r,   r´  ‰  s   ø€ ÷ <ñ <¡b§i¡iñ <r.   c                óB   € V P                   P                  P                  # r¦   )r¶  rh   r  ©rV   s   &r+   Úget_input_embeddingsÚ#GitVisionModel.get_input_embeddings‰  s   € Ø× Ñ ×+Ñ+×;Ñ;Ð;r.   F)Útie_last_hidden_statesc          	      ót   <€ V ^8„  d   QhRS[ P                  R,          RS[RS[S[,          RS[S[,          /# r«  )r&   r'   r  r   r   r(   r   )r)   r*   s   "€r+   r,   r´  �  sI   ø€ ÷ 
ñ 
á×'Ñ'¨$Õ.ð
ñ #'ð
ñ Ñ+Õ,ð	
ñ
 
‘Õ	 ñ
r.   c                ó.   € V P                   ! RRVRV/VB # )aT  
Examples:

```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, GitVisionModel

>>> processor = AutoProcessor.from_pretrained("microsoft/git-base")
>>> model = GitVisionModel.from_pretrained("microsoft/git-base")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
```rO  rL  r/   ©r¶  )rV   rO  rL  rŒ   s   &&&,r+   ri   ÚGitVisionModel.forwardŒ  s1   € ð< × Ò ñ 
Ø%ð
à%=ð
ð ñ
ð 	
r.   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r  r)  )r)   r*   s   "€r+   r,   r´  u  s   ø‡ ‚ ñ Ñò r.   rÁ  )r!  r°  )r0   r1   r2   r3   Úmain_input_namer$  rˆ  rr  Ú_can_record_outputsrD   r¼  r   r   r   ri   r5   r6   r7   rm   rn   s   @@r+   r²  r²  u  so   ù‡ € ð %€OØ!ÐàÐ.ØÐ(ðÐ÷
ó ÷<ð <ð  Ù¨EÔ2Ø÷
ñ 
ó ó 3ó  ð
÷5 … r.   r²  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚGitProjectioni±  c                ó    <€ V ^8„  d   QhRS[ /# r  r  )r)   r*   s   "€r+   r,   ÚGitProjection.__annotate__²  s   ø€ ÷ 
ñ 
™yñ 
r.   c                ó6  <€ \         SV `  4        Wn        \        P                  ! \        P
                  ! VP                  P                  VP                  4      \        P                  ! VP                  VP                  P                  R 7      4      V n
        R# r¬   )rC   rD   rW   r   Ú
Sequentialr�   r|   rG   rL   rM   Úvisual_projectionrU   s   &&€r+   rD   ÚGitProjection.__init__²  sd   ø€ Ü‰ÑÔØŒÜ!#§¢Ü�IŠI�f×*Ñ*×6Ñ6¸×8JÑ8JÓKÜ�LŠL˜×+Ñ+°×1EÑ1E×1TÑ1TÔUó"
ˆÖr.   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r!   rh   r^   r²   )r)   r*   s   "€r+   r,   rÉ  º  s#   ø€ ÷ 2ñ 2¡%§,¡,ð 2±5·<±<ñ 2r.   c                ó$   € V P                  V4      # r¦   )rÌ  )rV   rh   s   &&r+   ri   ÚGitProjection.forwardº  s   € Ø×%Ñ% jÓ1Ð1r.   )rW   rÌ  r¨   rn   s   @@r+   rÇ  rÇ  ±  s   ù‡ € ÷
ó 
÷2÷ 2ð 2r.   rÇ  zy
    The bare GIT Model transformer consisting of a CLIP image encoder and text decoder outputting raw hidden-states
    c                   ó~   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       4       tR	tVtV ;t# )ÚGitModeli¾  r$   r%   c                óv  <a€ \         SV `  S4       SV n        \        S4      V n        \        SP                  4      V n        \        S4      V n	        \        S4      V n        SP                  e9   \        P                  ! V3R l\        SP                  4       4       4      V n        V P#                  4        R # )Nc              3   ó¤   <"  € T FE  p\         P                  ! \        P                  ! ^^SP                  P
                  4      4      x € KG  	  R# 5i)rA   N)r   r2  r&   Úzerosr|   rG   )Ú.0rÊ   rW   s   & €r+   Ú	<genexpr>Ú$GitModel.__init__.<locals>.<genexpr>Ô  s=   øé € ð ;á?�Aô —’œUŸ[š[¨¨A¨v×/CÑ/C×/OÑ/OÓP×QÐQÛ?ùs   ƒAA)rC   rD   rW   r9   rh   r²  r|   Úimage_encoderr÷   r§  rÇ  rÌ  r€   r   ÚParameterListrû   Úimg_temporal_embeddingr·  rU   s   &f€r+   rD   ÚGitModel.__init__É  s’   ù€ Ü‰Ñ˜Ô ØˆŒä'¨Ó/ˆŒÜ+¨F×,@Ñ,@ÓAˆÔÜ! &Ó)ˆŒä!.¨vÓ!6ˆÔà×*Ñ*Ò6Ü*,×*:Ò*:ô ;ä˜v×>Ñ>Ô?ó;ó +ˆDÔ'ð 	�‰Ör.   c                ó.   € V P                   P                  # r¦   ©rh   rI   r»  s   &r+   r¼  ÚGitModel.get_input_embeddingsÜ  s   € Ø�‰×.Ñ.Ð.r.   c                ó&   € WP                   n        R # r¦   rÞ  )rV   r„   s   &&r+   Úset_input_embeddingsÚGitModel.set_input_embeddingsß  s   € Ø*/�‰Ö'r.   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[R,          RS[R,          R	S[R
S[S[,          RS[S[ P                  ,          S[,          /
# )r!   r[   NrŠ   rT   rO  r\   r‹   r  rL  rŒ   r^   )r&   ra   r   r  r   r   r(   r   )r)   r*   s   "€r+   r,   ÚGitModel.__annotate__å  sÅ   ø€ ÷ O
ñ O
á—<‘< $Õ&ðO
ñ Ÿ™ tÕ+ðO
ñ —l‘l TÕ)ð	O
ñ
 —l‘l TÕ)ðO
ñ —|‘| dÕ*ðO
ñ  �ðO
ñ ˜$•;ðO
ñ #'ðO
ñ Ñ+Õ,ðO
ñ 
‰u�|‰|Õ	Ñ9Õ	9ñO
r.   c	                ó  € VRJ VRJ,          '       d   \        R4      hV'       d   Vf   \        V P                  R7      p^ p
Ve7   \        V\        4      '       g   VP                  4       MVP                  4       p
Ve   VP                  ^,          MVP                  ^,          pVf   Ve   V^8X  d	   W:,           pV P                  VVVV
R7      p\        P                  ! V\        P                  R7      R,          pVEeÁ   VP                  ^8X  d   V P                  WHR7      P                  pM­VP                  ^8X  d’   . p\        VP                  ^,          4       FV  pV P                  VRVRR3,          VR7      P                  pVV P                  V,          ,          pVP!                  V4       KX  	  \        P"                  ! V^R7      pM\        R	4      hV P%                  V4      pVP'                  VP)                  ^ 4      VP)                  ^ 4      ,          ^^4      p\        P"                  ! VV3^R7      p\        P*                  ! VVP,                  R7      R,          p\        P"                  ! VV.RR7      pVe;   \        P"                  ! \        P*                  ! VVP,                  R7      V.RR7      pMƒVe€   V^8X  dy   \        P.                  ! VP                  ^ ,          W¢P                  ^,          ,
          ^,           3VP,                  VP0                  R
7      p\        P"                  ! VV.RR7      p\        P2                  ! . VP)                  4       RR ORVP0                  R7      pVe   \        P4                  ! V^8H  ^ R4      pRV P                  P7                  4       RVRVRVRVRV/p\9        R/ VB pTpV P:                  ! V3RVRVRV/V	B p\=        VP                  VP>                  R7      # )a€  
Examples:

```python
>>> from transformers import AutoProcessor, AutoModel
>>> import httpx
>>> from io import BytesIO
>>> from PIL import Image

>>> processor = AutoProcessor.from_pretrained("microsoft/git-base")
>>> model = AutoModel.from_pretrained("microsoft/git-base")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> text = "this is an image of two cats"

>>> inputs = processor(images=image, text=text, return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
```Nz:You must specify exactly one of input_ids or inputs_embeds)rW   )r[   rT   r\   r]   rS  r­  rd   r�   z#pixel_values must be of rank 4 or 5)rT  Údevice)ræ  rW   r\   rŠ   r‹   rT   Úblock_sequence_idsr  r  ).rk   rB   r/   ) rv   r   rW   rÑ   r   Úget_seq_lengthr’   rh   r&   Ú
zeros_liker`   ÚndimrÙ  r#   rû   rÛ  ÚappendrF  rÌ  Úrepeatre   Ú	ones_likerT  Úonesræ  ÚfullÚwhereÚget_text_configr
   r§  r   r‹   )rV   r[   rŠ   rT   rO  r\   r‹   r  rL  rŒ   r]   Úseq_lenÚembedding_outputÚtoken_type_idsÚvisual_featuresÚ	frame_idxÚvisual_features_frameÚprojected_visual_featuresÚimage_token_type_idsÚextended_attention_maskÚ	group_idsÚmask_kwargsÚcausal_maskr$   r®  s   &&&&&&&&&,               r+   ri   ÚGitModel.forwardâ  sÿ  € ðL ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZç˜Ò0Ü*°$·+±+Ô>ˆOð "#ÐØÒ&ô " /´5×9Ò9ð  ×.Ñ.Ô0à$×3Ñ3Ó5ð #ð )2Ò(=�)—/‘/ !Ö$À=×CVÑCVÐWXÕCYˆØÒ OÒ$?ÀGÈqÄLØ'Õ@ˆLàŸ?™?ØØ%Ø'Ø#9ð	 +ó 
Ðô ×)Ò)Ð*:Ä%Ç)Á)ÔLÈVÕTˆàÓ#Ø× Ñ  AÔ%à"&×"4Ñ"4Ø ð #5ó #ç#Ñ#ñ  ð ×"Ñ" aÔ'à"$�Ü!& |×'9Ñ'9¸!Õ'<Ö!=�IØ,0×,>Ñ,>Ø$ Q¨	°1°aÐ%7Õ8ÐSkð -?ó -ç'Ñ'ð *ð *¨T×-HÑ-HÈÕ-SÕSÐ)Ø#×*Ñ*Ð+@ÖAñ ">ô #(§)¢)¨OÀÔ"C‘ô !Ð!FÓGÐGà(,×(>Ñ(>¸Ó(OÐ%ð )B×(HÑ(HØ ×%Ñ% aÓ(Ð,E×,JÑ,JÈ1Ó,MÕMÈqÐRSó)Ð%ô
  %ŸyšyÐ*CÐEUÐ)VÐ\]Ô^ÐÜ#(§?¢?Ð3LÐTb×ThÑThÔ#iÐjpÕ#qÐ Ü"ŸYšYÐ(<¸nÐ'MÐSUÔVˆNØÒ)Ü!&§¢Ü—_’_Ð%9À×AUÑAUÔVÐXfÐgÐmoô"�øð Ò(¨W¸¬\ô ',§j¢jØ×%Ñ% aÕ(Ð*@×CWÑCWÐXYÕCZÕ*ZÐ]^Õ*^Ð_Ø$×*Ñ*Ø%×,Ñ,ô'Ð#ô
 #ŸYšYÐ(?ÀÐ'PÐVXÔYˆNô —J’JÐ>Ð!1×!6Ñ!6Ó!8¸¸"Ð!=Ð>ÀÐK[×KbÑKbÔcˆ	ØÒ%äŸš N°aÑ$7¸¸BÓ?ˆIð �d—k‘k×1Ñ1Ó3ØÐ-Ø˜nØ˜Ø˜LØ  )ð
ˆô )Ñ7¨;Ñ7ˆà(ˆà37·<²<Øñ4
à&ð4
ð ,ð4
ð  ð	4
ð
 ñ4
ˆô 'Ø-×?Ñ?Ø+×;Ñ;ô
ð 	
r.   )rW   rh   r§  rÙ  rÛ  rÌ  )NNNNNNNF)r0   r1   r2   r3   ræ   rp   rÅ  rD   r¼  rá  r   r   r   ri   r6   r7   rm   rn   s   @@r+   rÒ  rÒ  ¾  s[   ù‡ € ð 	˜ØÐ&ðÐõ
ò&/ò0ð  ØØ÷O
ñ O
ó ó ó  ÷O
ð O
r.   rÒ  z`
    GIT Model with a `language modeling` head on top for autoregressive language modeling.
    c                   óz   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       4       tR	tVtV ;t# )ÚGitForCausalLMiw  zoutput.weightz%git.embeddings.word_embeddings.weightc                óÆ   <€ \         SV `  V4       \        V4      V n        \        P
                  ! VP                  VP                  4      V n        V P                  4        R # r¦   )
rC   rD   rÒ  r  r   r�   rG   rF   rÃ   r·  rU   s   &&€r+   rD   ÚGitForCausalLM.__init__  sF   ø€ Ü‰Ñ˜Ô ä˜FÓ#ˆŒÜ—i’i × 2Ñ 2°F×4EÑ4EÓFˆŒð 	�‰Ör.   c                ó   € V P                   # r¦   ©rÃ   r»  s   &r+   Úget_output_embeddingsÚ$GitForCausalLM.get_output_embeddingsˆ  s   € Ø�{‰{Ðr.   c                ó   € Wn         R # r¦   r  )rV   Únew_embeddingss   &&r+   Úset_output_embeddingsÚ$GitForCausalLM.set_output_embeddings‹  s   € Ø$Žr.   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[R,          R	S[R,          R
S[RS[S[ P                  ,          RS[S[,          RS[S[ P                  ,          S[,          /# )r!   r[   NrŠ   rT   rO  r\   Úlabelsr‹   r  rL  Úlogits_to_keeprŒ   r^   )	r&   ra   r   r  r`   r   r   r(   r   )r)   r*   s   "€r+   r,   ÚGitForCausalLM.__annotate__‘  sí   ø€ ÷ A
ñ A
á—<‘< $Õ&ðA
ñ Ÿ™ tÕ+ðA
ñ —l‘l TÕ)ð	A
ñ
 —l‘l TÕ)ðA
ñ —|‘| dÕ*ðA
ñ —‘˜tÕ#ðA
ñ  �ðA
ñ ˜$•;ðA
ñ #'ðA
ñ ™eŸl™lÕ*ðA
ñ Ñ+Õ,ðA
ñ 
‰u�|‰|Õ	Ñ5Õ	5ñA
r.   c                ó  € Ve   RpV P                   ! V3RVRVRVRVRVRVR	V	/VB pVP                  p\        V
\        4      '       d   \	        V
) R4      MT
pV P                  VR
VR
3,          4      pRpVP                  RR4      pVeÈ   V P                   P                  P                  ^ ,          P                  P                  P                  pVf5   VR
VR1R
3,          P                  4       pVR,          P                  4       pMVR
VR1R
3,          P                  4       pV P                  ! RRVRRRV P                  P                  RV/VB p\!        VVVP"                  VP$                  VP&                  R7      # )aù  
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the left-to-right language modeling loss (next word prediction). 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:

Image captioning example:

```python
>>> from transformers import AutoProcessor, AutoModelForCausalLM
>>> import httpx
>>> from io import BytesIO
>>> from PIL import Image

>>> processor = AutoProcessor.from_pretrained("microsoft/git-base-coco")
>>> model = AutoModelForCausalLM.from_pretrained("microsoft/git-base-coco")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> pixel_values = processor(images=image, return_tensors="pt").pixel_values

>>> generated_ids = model.generate(pixel_values=pixel_values, max_length=50)
>>> generated_caption = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> print(generated_caption)
two cats sleeping on a pink blanket next to remotes.
```

Visual question answering (VQA) example:

```python
>>> from transformers import AutoProcessor, AutoModelForCausalLM
>>> from huggingface_hub import hf_hub_download
>>> from PIL import Image

>>> processor = AutoProcessor.from_pretrained("microsoft/git-base-textvqa")
>>> model = AutoModelForCausalLM.from_pretrained("microsoft/git-base-textvqa")

>>> file_path = hf_hub_download(repo_id="nielsr/textvqa-sample", filename="bus.png", repo_type="dataset")
>>> image = Image.open(file_path).convert("RGB")

>>> pixel_values = processor(images=image, return_tensors="pt").pixel_values

>>> question = "what does the front of the bus say at the top?"

>>> input_ids = processor(text=question, add_special_tokens=False).input_ids
>>> input_ids = [processor.tokenizer.cls_token_id] + input_ids
>>> input_ids = torch.tensor(input_ids).unsqueeze(0)

>>> generated_ids = model.generate(pixel_values=pixel_values, input_ids=input_ids, max_length=50)
>>> print(processor.batch_decode(generated_ids, skip_special_tokens=True))
['what does the front of the bus say at the top? special']
```

Video captioning example:

```python
>>> import av
>>> import numpy as np
>>> from PIL import Image
>>> from huggingface_hub import hf_hub_download
>>> from transformers import AutoProcessor, AutoModelForCausalLM

>>> processor = AutoProcessor.from_pretrained("microsoft/git-base-vatex")
>>> model = AutoModelForCausalLM.from_pretrained("microsoft/git-base-vatex")

>>> # set seed for reproducibility
>>> np.random.seed(45)


>>> def read_video_pyav(container, indices):
...     '''
...     Decode the video with PyAV decoder.
...     Args:
...         container (`av.container.input.InputContainer`): PyAV container.
...         indices (`list[int]`): List of frame indices to decode.
...     Returns:
...         result (np.ndarray): np array of decoded frames of shape (num_frames, height, width, 3).
...     '''
...     frames = []
...     container.seek(0)
...     start_index = indices[0]
...     end_index = indices[-1]
...     for i, frame in enumerate(container.decode(video=0)):
...         if i > end_index:
...             break
...         if i >= start_index and i in indices:
...             frames.append(frame)
...     return np.stack([x.to_ndarray(format="rgb24") for x in frames])


>>> def sample_frame_indices(clip_len, frame_sample_rate, seg_len):
...     '''
...     Sample a given number of frame indices from the video.
...     Args:
...         clip_len (`int`): Total number of frames to sample.
...         frame_sample_rate (`int`): Sample every n-th frame.
...         seg_len (`int`): Maximum allowed index of sample's last frame.
...     Returns:
...         indices (`list[int]`): List of sampled frame indices
...     '''
...     converted_len = int(clip_len * frame_sample_rate)
...     end_idx = np.random.randint(converted_len, seg_len)
...     start_idx = end_idx - converted_len
...     indices = np.linspace(start_idx, end_idx, num=clip_len)
...     indices = np.clip(indices, start_idx, end_idx - 1).astype(np.int64)
...     return indices


>>> # load video
>>> file_path = hf_hub_download(
...     repo_id="nielsr/video-demo", filename="eating_spaghetti.mp4", repo_type="dataset"
... )
>>> container = av.open(file_path)

>>> # sample frames
>>> num_frames = model.config.num_image_with_embedding
>>> indices = sample_frame_indices(
...     clip_len=num_frames, frame_sample_rate=4, seg_len=container.streams.video[0].frames
... )
>>> frames = read_video_pyav(container, indices)

>>> pixel_values = processor(images=list(frames), return_tensors="pt").pixel_values

>>> generated_ids = model.generate(pixel_values=pixel_values, max_length=50)

>>> print("Generated caption:", processor.batch_decode(generated_ids, skip_special_tokens=True))
Generated caption: ['a woman is sitting at a table and she is talking about the food she is holding.']
```
NFrŠ   rT   rO  r\   r‹   r  rL  rd   Úshift_labelsÚlogitsr  rF   )Úlossr  r‹   r$   r%   rB   r@  r/   )r  r#   rÑ   r`   ÚslicerÃ   Úpopr§  rý   rê   rV   r   rœ   Úloss_functionrW   rF   r   r‹   r$   r%   )rV   r[   rŠ   rT   rO  r\   r  r‹   r  rL  r  rŒ   Úoutputsr$   Úslice_indicesr  r  r  Únum_image_tokensÚshifted_logitss   &&&&&&&&&&&,        r+   ri   ÚGitForCausalLM.forwardŽ  sÌ  € ðl ÒØˆIà+/¯8ª8Øñ
,
à)ð
,
ð &ð
,
ð &ð	
,
ð
 (ð
,
ð ,ð
,
ð  ð
,
ð &>ð
,
ð ñ
,
ˆð  ×1Ñ1ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜]¨1¨m¸QÐ+>Õ?Ó@ˆàˆð —z‘z .°$Ó7ˆØÒØ#Ÿx™x×/Ñ/×5Ñ5°aÕ8×BÑB×GÑG×ZÑZÐØÒ#à!'¨Ð+;¸BÐ+>ÀÐ(AÕ!B×!MÑ!MÓ!O�Ø% e�}×7Ñ7Ó9‘à!'¨Ð+;Ñ+<¸aÐ(?Õ!@×!KÑ!KÓ!M�Ø×%Ò%ñ Ø%ðàðð  Ÿ;™;×1Ñ1ðð *ð	ð
 ñˆDô &ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r.   )r  rÃ   )
NNNNNNNNFrk   )r0   r1   r2   r3   Ú_tied_weights_keysrD   r  r	  r   r   r   ri   r6   r7   rm   rn   s   @@r+   r   r   w  sT   ù‡ € ð *Ð+RÐSÐõòò%ð  ØØ÷A
ñ A
ó ó ó  ÷A
ð A
r.   r   )r  )r   rÒ  r  r²  )Jr4   r—   Úcollections.abcr   Údataclassesr   r&   r   Ú r   r  Úactivationsr   Úcache_utilsr   r   Ú
generationr	   Úmasking_utilsr
   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_gitr   r   Ú
get_loggerr0   rx   r   ri  r9   rp   rª   rÁ   r¾   rÎ   rÞ   ræ   r÷   r  r  r]  rp  rr  rˆ  r–  r¢  r²  rÇ  rÒ  r   Ú__all__r/   r.   r+   Ú<module>r.     sE  ðñ ã Ý $Ý !ã Ý å &Ý !ß .Ý )Ý /Ý 9÷ó ÷ GÝ &Ý 6÷õ õ 8Ý 5ß 9ð 
×	Ò	˜HÓ	%€ñ ðôð
 ô	<˜;ó 	<ó óð	<ô(�B—I‘Iô (ôVB.�r—y‘yô B.ôL�B—I‘Iô ð ÐðÐ ô
 �2—9‘9ô  ô0�b—i‘iô ô �—	‘	ô ôÐ)ô ôD
�—‘ô 
ð: ôi˜ó ió ðiô(P˜"Ÿ)™)ô Pôf�2—9‘9ô ÷ %ô.6)˜Ÿ™ô 6)ôtÐ6ô ôD
�r—y‘yô 
ôD#
˜2Ÿ9™9ô #
ñL ðôô
4
Ð'ó 4
óð
4
ôn
2�B—I‘Iô 
2ñ ðôô
q
Ð!ó q
óð
q
ñh ðôô
V
Ð'¨ó V
óð
V
òr Q‚r.   