+
    œ°³jÕã  ã                   ód  € R t ^ RI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HtHtHtHt ^R	IHt ^R
IHtHtHt ^RIHt ^RIHt ]P@                  ! ]!4      t"]! RR7      ] ! R R]4      4       4       t#]! RR7      ] ! R R]4      4       4       t$]! RR7      ] ! R R]4      4       4       t%]! RR7      ] ! R R]4      4       4       t& ! R R]PN                  4      t( ! R R]PN                  4      t) ! R R]PN                  4      t* ! R  R!]PN                  4      t+ ! R" R#]PN                  4      t, ! R$ R%]PN                  4      t- ! R& R']4      t.R( R) lt/ ! R* R+]PN                  4      t0R, R- lt1] ! R. R/]4      4       t2 ! R0 R1]PN                  4      t3] ! R2 R3]24      4       t4 ! R4 R5]PN                  4      t5 ! R6 R7]PN                  4      t6]! R8R7       ! R9 R:]24      4       t7]! R;R7       ! R< R=]24      4       t8]! R>R7       ! R? R@]]24      4       t9. RAOt:R# )BzPyTorch Hiera model.N)Ú	dataclass)Únn)Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚGradientCheckpointingLayer)ÚBackboneOutputÚBaseModelOutputÚBaseModelOutputWithPoolingÚImageClassifierOutputÚModelOutput)ÚPreTrainedModel)Úauto_docstringÚloggingÚ	torch_int)Úcan_return_tuple©ÚHieraConfigzO
    Hiera encoder's outputs, with potential hidden states and attentions.
    )Úcustom_introc                   ó@   a € ] tR t^*t o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚHieraEncoderOutputa  
reshaped_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
    shape `(batch_size, height, width, hidden_size)`. These are the reshaped and re-rolled hidden states of the model.

    Hidden-states of the model at the output of each layer plus the initial embedding outputs reshaped to
    include the spatial dimensions.
Nc                ó  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )é   NÚlast_hidden_state.Úhidden_statesÚ
attentionsÚreshaped_hidden_states)ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úi/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/hiera/modeling_hiera.pyÚ__annotate__ÚHieraEncoderOutput.__annotate__*   sƒ   ø‡ ‚ ñ  ×(Ñ(¨4Õ/Ñ6ñ! ñ" ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ# ñ$ ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ% ñ& "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò' ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r"   s   @r#   r   r   *   s)   ø‡ € ñð 37ÐØ:>€MØ7;€JØCGÐ÷' ƒ r&   r   zW
    Hiera model's outputs that also contains a pooling of the last hidden states.
    c                   óL   a € ] tR t^@t 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# )ÚHieraModelOutputa  
pooler_output (`torch.FloatTensor` of shape `(batch_size, hidden_size)`, *optional*, returned when `add_pooling_layer=True` is passed):
    Average pooling of the last layer hidden-state.
bool_masked_pos (`torch.BoolTensor` of shape `(batch_size, sequence_length)`):
    Tensor indicating which patches are masked (0) and which are not (1).
ids_restore (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
    Tensor containing the original index of the (shuffled) masked patches.
reshaped_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
    shape `(batch_size, height, width, hidden_size)`. These are the reshaped and re-rolled hidden states of the model.

    Hidden-states of the model at the output of each layer plus the initial embedding outputs reshaped to
    include the spatial dimensions.
Nc                ó˜  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R	&   # )
r   Nr   Úpooler_outputÚbool_masked_posÚids_restore.r   r   r   ©r   r   Ú
BoolTensorÚ
LongTensorr    )r!   r"   s   "€r#   r$   ÚHieraModelOutput.__annotate__@   sË   ø‡ ‚ ñ, ×(Ñ(¨4Õ/Ñ6ñ- ñ. ×$Ñ$ tÕ+Ñ2ñ/ ñ0 ×%Ñ%¨Õ,Ñ3ñ1 ñ2 ×!Ñ! DÕ(Ñ/ñ3 ñ4 ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ5 ñ6 ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ7 ñ8 "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò9 r&   r'   )r(   r)   r*   r+   r,   r   r4   r5   r6   r   r   r   r-   r.   r/   r0   s   @r#   r2   r2   @   s8   ø‡ € ñð 37ÐØ.2€MØ/3€OØ+/€KØ:>€MØ7;€JØCGÐ÷9 ƒ r&   r2   z-
    Hiera image classification outputs.
    c                   ó4   a € ] tR t^_t o RtRtV 3R ltRtV tR# )Ú!HieraForImageClassificationOutputa¶  
reshaped_hidden_states (`tuple(torch.FloatTensor)`, `optional`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
    shape `(batch_size, height, width, hidden_size)`. These are the reshaped and re-rolled hidden states of the model.

    Hidden-states of the model at the output of each layer plus the initial embedding outputs reshaped to
    include the spatial dimensions.
Nc                ó\   <€ V ^8„  d   Qh/ S[ S[P                  R3,          R,          ;R&   # )r   .Nr   )r    r   r   )r!   r"   s   "€r#   r$   Ú.HieraForImageClassificationOutput.__annotate___   s'   ø‡ ‚ ñ  "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò! r&   r'   )	r(   r)   r*   r+   r,   r   r-   r.   r/   r0   s   @r#   r<   r<   _   s   ø‡ € ñð DHÐ÷! ƒ r&   r<   z_
    Class for HieraForPreTraining's outputs, with potential hidden states and attentions.
    c                   óL   a € ] tR t^rt 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# )ÚHieraForPreTrainingOutputaÒ  
loss (`torch.FloatTensor` of shape `(1,)`):
    Pixel reconstruction loss.
logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, patch_size ** 2 * num_channels)`):
    Pixel reconstruction logits.
bool_masked_pos (`torch.BoolTensor` of shape `(batch_size, sequence_length)`):
    Tensor indicating which patches are masked (0) and which are not (1).
ids_restore (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
    Tensor containing the original index of the (shuffled) masked patches.
reshaped_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each layer) of
    shape `(batch_size, height, width, hidden_size)`. Hidden-states of the model at the output of each layer
    plus the initial embedding outputs reshaped to include the spatial dimensions.
Nc                óŒ  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   # )	r   NÚlossÚlogitsr5   r6   r   r   r   r7   )r!   r"   s   "€r#   r$   Ú&HieraForPreTrainingOutput.__annotate__r   s¼   ø‡ ‚ ñ, ×
Ñ
˜dÕ
"Ñ)ñ- ñ. ×Ñ Õ$Ñ+ñ/ ñ0 ×%Ñ%¨Õ,Ñ3ñ1 ñ2 ×!Ñ! DÕ(Ñ/ñ3 ñ4 ™×*Ñ*Õ+¨dÕ2Ñ9ñ5 ñ6 ‘e×'Ñ'Õ(¨4Õ/Ñ6ñ7 ñ8 "¡%×"3Ñ"3Õ4°tÕ;ÑBò9 r&   r'   )r(   r)   r*   r+   r,   rB   rC   r5   r6   r   r   r   r-   r.   r/   r0   s   @r#   r@   r@   r   s7   ø‡ € ñð &*€DØ'+€FØ/3€OØ+/€KØ59€MØ26€JØ>BÐ÷9 ƒ r&   r@   c                   óˆ   a a€ ] tR t^‘t oRtRV3R lV 3R llltRV3R lR lltRV3R lR lltRV3R lR	 lltR
t	Vt
V ;t# )ÚHieraPatchEmbeddingszÜ
This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
`hidden_states` (patch embeddings) of shape `(batch_size, seq_length, hidden_size)` to be consumed by a
Transformer.
c                ó    <€ V ^8„  d   QhRS[ /# )r   Úis_mae)Úbool)r!   r"   s   "€r#   r$   Ú!HieraPatchEmbeddings.__annotate__˜   s   ø€ ÷ 
ñ 
¡tñ 
r&   c                óÜ  <€ \         SV `  4        \        VP                  4      V n        V P                  ^8w  d   \        RV P                   R24      hVP                  V n        VP                  RR V n        \        VP                  VP                  4       UUu. uF  w  r4W4,          NK  	  uppV n
        \        V P                  VP                  4       UUu. uF  w  r4W4,          NK  	  uppV n        VP                  V n        W n        \        P                   ! V P                  VP"                  VP                  VP                  VP$                  R7      V n        R# u uppi u uppi )r   zAThe number of dimensions of the input image should be 2, but got Ú.N)Úkernel_sizeÚstrideÚpaddingéþÿÿÿ)ÚsuperÚ__init__ÚlenÚ
patch_sizeÚspatial_dimsÚ
ValueErrorÚnum_channelsÚ
image_sizeÚzipÚpatch_strideÚtokens_spatial_shapeÚmasked_unit_sizeÚmask_spatial_shapeÚ
mask_ratiorH   r   ÚConv2dÚ	embed_dimÚpatch_paddingÚ
projection)ÚselfÚconfigrH   ÚiÚsÚ	__class__s   &&&  €r#   rR   ÚHieraPatchEmbeddings.__init__˜   s.  ø€ Ü‰ÑÔô   × 1Ñ 1Ó2ˆÔØ×Ñ Ô!ÜÐ`Ðae×arÑarÐ`sÐstÐuÓvÐvØ"×/Ñ/ˆÔØ ×+Ñ+¨B¨CÐ0ˆŒÜ8;¸F×<MÑ<MÈv×ObÑObÔ8cÔ$dÑ8c±° Q§V VÑ8cÒ$dˆÔ!Ü69¸$×:SÑ:SÐU[×UlÑUlÔ6mÔ"nÑ6m©d¨a 1§6 6Ñ6mÒ"nˆÔØ ×+Ñ+ˆŒØŒÜŸ)š)Ø×ÑØ×ÑØ×)Ñ)Ø×&Ñ&Ø×(Ñ(ô
ˆŽùó	 %eùÛ"ns   ÂE"ÃE(c                óv   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  /# )r   Úpixel_valuesr5   NÚreturn)r   r   r8   ÚTensor)r!   r"   s   "€r#   r$   rJ   ­   s;   ø€ ÷ ?ñ ?Ù!×-Ñ-ð?Ù@E×@PÑ@PÐSWÕ@Wð?á	�‰ñ?r&   c                ó>  € Vf   V P                  V4      # VP                  R,          pVP                  ! VP                  ^ ,          ^.V P                  O5!  p\        P
                  P                  VP                  4       VR7      pV P                  W,          4      # )zyZero-out the masked regions of the input before conv.
Prevents leakage of masked regions when using overlapping kernels.
ºr   NN)Úsize)rb   ÚshapeÚviewr]   r   Ú
functionalÚinterpolateÚfloat)rc   rj   r5   Útarget_sizes   &&& r#   Úmasked_convÚ HieraPatchEmbeddings.masked_conv­   s†   € ð Ò"Ø—?‘? <Ó0Ð0à"×(Ñ(¨Õ,ˆà)×.Ò.¨|×/AÑ/AÀ!Õ/DÀaÐbÈ$×JaÑJaÓbˆäŸ-™-×3Ñ3°O×4IÑ4IÓ4KÐR]Ð3Ó^ˆà�‰˜|Õ=Ó>Ð>r&   c                ó    <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[ P                  S[ P                  3,          /# ©r   rj   ÚnoiseNrk   )r   r   r    r8   r9   )r!   r"   s   "€r#   r$   rJ   ¾   sL   ø€ ÷  ,ñ  ,Ù!×-Ñ-ð ,Ù6;×6GÑ6GÈ$Õ6Nð ,á	‰u×Ñ¡×!1Ñ!1Ð1Õ	2ñ ,r&   c                ó8  € VP                   ^ ,          p\        P                  ! V P                  4      p\	        V^V P
                  ,
          ,          4      pVf#   \        P                  ! W4VP                  R7      p\        P                  ! V^R7      p\        P                  ! V^R7      P                  VP                  4      p\        P                  ! W4.VP                  R7      p^VRRV13&   \        P                  ! V^VR7      P                  4       pW‡3# )a’  
Perform per-sample random masking by per-sample shuffling. Per-sample shuffling is done by argsort random
noise.

Args:
    pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`)
    noise (`torch.FloatTensor` of shape `(batch_size, num_mask_units)`, *optional*) which is
        mainly used for testing purposes to control randomness and maintain the reproducibility
N©Údevice©Údim:NNN)r   Úindex)rp   ÚmathÚprodr]   Úintr^   r   Úrandr}   ÚargsortÚtoÚzerosÚgatherrI   )	rc   rj   rz   Ú
batch_sizeÚnum_windowsÚlen_keepÚids_shuffler6   r5   s	   &&&      r#   Úrandom_maskingÚ#HieraPatchEmbeddings.random_masking¾   sß   € ð "×'Ñ'¨Õ*ˆ
ä—i’i × 7Ñ 7Ó8ˆÜ�{ a¨$¯/©/Õ&9Õ:Ó;ˆàŠ=Ü—J’J˜z¸|×?RÑ?RÔSˆEô —m’m E¨qÔ1ˆä—m’m K°QÔ7×:Ñ:¸<×;NÑ;NÓOˆô  Ÿ+š+ zÐ&?È×H[ÑH[Ô\ˆØ()ˆ˜˜9˜H˜9˜Ñ%äŸ,š, ¸AÀ[ÔQ×VÑVÓXˆàÐ+Ð+r&   c          
      óÔ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[ P                  S[ P                  R,          S[ P
                  R,          3,          /# ry   )r   r   r    rl   r8   r9   )r!   r"   s   "€r#   r$   rJ   à   s`   ø€ ÷ 8ñ 8á×'Ñ'ð8ñ × Ñ  4Õ'ð8ñ 
‰u�|‰|™U×-Ñ-°Õ4±e×6FÑ6FÈÕ6MÐMÕ	Nñ	8r&   c                ó¾   € V P                   '       d   V P                  WR 7      MRw  r4V P                  W4      pVP                  ^4      P	                  ^^4      pWSV3# )©rz   )NN)rH   r�   rv   ÚflattenÚ	transpose)rc   rj   rz   r5   r6   Ú
embeddingss   &&&   r#   ÚforwardÚHieraPatchEmbeddings.forwardà   sa   € ð ?C¿k¿k¸kˆD×Ñ ÐÔ:È|ñ 	'ˆð ×%Ñ% lÓDˆ
Ø×'Ñ'¨Ó*×4Ñ4°Q¸Ó:ˆ
à¨KÐ7Ð7r&   )rX   rH   r^   r]   rW   rb   rU   r[   ©F©N)r(   r)   r*   r+   r,   rR   rv   r�   r•   r.   r/   Ú__classcell__©rg   r"   s   @@r#   rF   rF   ‘   s8   ù‡ € ñ÷
õ 
÷*?ò ?÷" ,ò  ,÷D8÷ 8ò 8r&   rF   c                   ó€   a a€ ] tR t^ït oRtRV3R lV 3R llltV3R l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# )ÚHieraEmbeddingsz*
Construct position and patch embeddings.
c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r   rd   rH   rk   N©r   rI   )r!   r"   s   "€r#   r$   ÚHieraEmbeddings.__annotate__ô   s'   ø€ ÷ 
cñ 
c™{ð 
c±Dð 
cÀTñ 
cr&   c                ó&  <€ \         SV `  4        VP                  V n        \        VP                  VP                  4       UUu. uF  w  r4W4,          NK  	  ppp\        WQP
                  4       UUu. uF  w  r4W4,          NK  	  uppV n        \        P                  ! V4      V n	        W n
        \        WR 7      V n        \        P                  ! \        P                   ! ^V P                  VP"                  4      4      V n        R# u uppi u uppi )©rH   N)rQ   rR   rZ   rY   rX   r\   r]   r�   r‚   Ú
num_tokensrH   rF   Úpatch_embeddingsr   Ú	Parameterr   r‡   r`   Úposition_embeddings)rc   rd   rH   re   rf   r[   rg   s   &&&   €r#   rR   ÚHieraEmbeddings.__init__ô   sÌ   ø€ Ü‰ÑÔØ"×/Ñ/ˆÔÜ36°v×7HÑ7HÈ&×J]ÑJ]Ô3^Ô_Ñ3^©4¨1 § Ñ3^ÐÑ_Ü69Ð:N×PgÑPgÔ6hÔ"iÑ6h©d¨a 1§6 6Ñ6hÒ"iˆÔÜŸ)š)Ð$8Ó9ˆŒØŒä 4°VÔ KˆÔä#%§<¢<´·²¸A¸t¿¹ÐPV×P`ÑP`Ó0aÓ#bˆÖ ùó  `ùÛ"is   ÁDÁ2Dc          
      ót   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RS[RS[ P                  /# )r   r”   Ú
pos_embedsÚheightÚwidthrk   )r   rl   rƒ   )r!   r"   s   "€r#   r$   rŸ      sA   ø€ ÷ $ñ $ÙŸ,™,ð$Ù49·L±Lð$ÙJMð$ÙVYð$á	�‰ñ$r&   c                óD  € VP                   ^,          pVP                   ^,          p\        P                  P                  4       '       g   WV8X  d	   W48X  d   V# VP                   R,          pW0P                  ^ ,          ,          pW@P                  ^,          ,          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V# )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, no class embeddings, and different patch strides.

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)ro   ÚmodeÚalign_cornerséÿÿÿÿ)rp   r   ÚjitÚ
is_tracingrZ   r   ÚreshapeÚpermuter   rr   rs   rq   )rc   r”   r¨   r©   rª   Únum_patchesÚnum_positionsr   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&&      r#   Úinterpolate_pos_encodingÚ(HieraEmbeddings.interpolate_pos_encoding   s  € ð !×&Ñ& qÕ)ˆØ"×(Ñ(¨Õ+ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?ØÐà×Ñ˜rÕ"ˆà×0Ñ0°Õ3Õ3ˆ
Ø×.Ñ.¨qÕ1Õ1ˆ	ä& }°cÕ'9Ó:ÐØ×'Ñ'¨Ð+=ÐSVÓWˆ
Ø×'Ñ'¨¨1¨a°Ó3ˆ
ä—]‘]×.Ñ.ØØÐ(ØØð	 /ó 
ˆ
ð  ×'Ñ'¨¨1¨a°Ó3×8Ñ8¸¸BÀÓDˆ
ØÐr&   c          
      ó`   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[RS[ P                  /# )r   r”   r©   rª   rº   rk   )r   rl   rƒ   rI   r   )r!   r"   s   "€r#   r$   rŸ   &  s?   ø€ ÷ 
ñ 
ÙŸ,™,ð
Ù03ð
Ù<?ð
Ù[_ð
á	×	Ñ	ñ
r&   c                ób   € V'       d   V P                  WP                  W#4      # V P                  # r˜   )rº   r¥   )rc   r”   r©   rª   rº   s   &&&&&r#   Úget_position_embeddingÚ&HieraEmbeddings.get_position_embedding&  s5   € ÷
 (ð ×)Ñ)¨*×6NÑ6NÐPVÓ^ð	
ð ×)Ñ)ð	
r&   c                óÚ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[RS[S[ P                  S[ P
                  R,          S[ P                  R,          3,          /# )r   rj   rz   Nrº   rk   )r   r   rI   r    rl   r8   r9   )r!   r"   s   "€r#   r$   rŸ   /  sj   ø€ ÷ 	8ñ 	8á×'Ñ'ð	8ñ × Ñ  4Õ'ð	8ñ #'ð		8ñ
 
‰u�|‰|™U×-Ñ-°Õ4±e×6FÑ6FÈÕ6MÐMÕ	Nñ	8r&   c                ó†   € VP                   RR w  rEV P                  WR7      w  rgpW`P                  WdWS4      ,           pWgV3# )r   Nr‘   rP   )rp   r£   r¾   )	rc   rj   rz   rº   r©   rª   r”   r5   r6   s	   &&&&     r#   r•   ÚHieraEmbeddings.forward/  sQ   € ð %×*Ñ*¨2¨3Ð/‰ˆØ37×3HÑ3HÈÐ3HÓ3cÑ0ˆ
 [Ø×"=Ñ"=¸jÐRWÓ"rÕrˆ
Ø¨KÐ7Ð7r&   )rH   r]   r¢   r£   rZ   r¥   r—   )NF)r(   r)   r*   r+   r,   rR   rº   r¾   r•   r.   r/   r™   rš   s   @@r#   rœ   rœ   ï   s:   ù‡ € ñ÷
cõ 
c÷$ð $÷L
ð 
÷	8÷ 	8ò 	8r&   rœ   c                   ó\   a a€ ] tR tRt oRtRV3R lV 3R llltR	V3R lR lltRtVtV ;t	# )
ÚHieraMaskUnitAttentioni;  z°
Computes either Mask Unit or Global Attention. Also is able to perform query pooling.

Note: this assumes the tokens have already been flattened and unrolled into mask units.
c                óB   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[ RS[RR/# )	r   Úhidden_sizeÚhidden_size_outputÚ	num_headsÚquery_strideÚwindow_sizeÚuse_mask_unit_attnrk   N)rƒ   rI   )r!   r"   s   "€r#   r$   Ú#HieraMaskUnitAttention.__annotate__B  sQ   ø€ ÷ 5ñ 5áð5ñ  ð5ñ ð	5ñ
 ð5ñ ð5ñ !ð5ð 
ñ5r&   c                ó&  <€ \         SV `  4        W0n        W@n        W n        W#,          V n        V P
                  R,          V n        \        P                  ! V^V,          4      V n	        \        P                  ! W"4      V n
        WPn        W`n        R# )r¬   Ng      à¿)rQ   rR   rÈ   rÉ   rÇ   Úhead_dimÚscaler   ÚLinearÚqkvÚprojrÊ   rË   )rc   rÆ   rÇ   rÈ   rÉ   rÊ   rË   rg   s   &&&&&&&€r#   rR   ÚHieraMaskUnitAttention.__init__B  sp   ø€ ô 	‰ÑÔØ"ŒØ(ÔØ"4Ôà*Õ7ˆŒØ—m‘m¨Õ,ˆŒ
ä—9’9˜[¨!Ð.@Õ*@ÓAˆŒÜ—I’IÐ0ÓEˆŒ	à&ÔØ"4Ör&   c          	      óŒ   <€ V ^8„  d   QhRS[ P                  RS[RS[S[ P                  S[ P                  R,          3,          /# ©r   r   Úoutput_attentionsrk   N©r   rl   rI   r    )r!   r"   s   "€r#   r$   rÌ   Y  sI   ø€ ÷ Yñ Yá—|‘|ðYñ  ðYñ 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñ	Yr&   c                ó6  € VP                   w  r4p^pV P                  '       d$   W@P                  V P                  ,          ,          pV P	                  V4      pVP                  VRV^V P                  V P                  4      pVP                  ^^ ^^^^4      pVP                  ^ 4      w  r‰p
V P                  ^8”  dO   VP                  W0P                  W`P                  RV P                  4      pVP                  ^R7      P                  pW€P                  ,          V	P                  RR4      ,          pVP                  RR7      pWº,          pVP                  ^^4      P                  VRV P                   4      pV P#                  V4      pV'       d   WË3# VR3# )z3Input should be of shape [batch, tokens, channels].r~   Nr°   rP   )rp   rË   rÉ   rÊ   rÑ   r³   rÈ   rÎ   r´   Úunbindrq   ÚmaxÚvaluesrÏ   r“   ÚsoftmaxrÇ   rÒ   )rc   r   rÖ   r‰   Úseq_lenÚ_rŠ   rÑ   ÚqueryÚkeyÚvalueÚattn_weightsÚattn_outputs   &&&          r#   r•   ÚHieraMaskUnitAttention.forwardY  sb  € ð "/×!4Ñ!4Ñˆ
˜QàˆØ×"×"Ð"Ø!×&7Ñ&7¸$×:JÑ:JÕ&JÕKˆKà�h‰h�}Ó%ˆØ�k‰k˜* b¨+°q¸$¿.¹.È$Ï-É-ÓXˆØ�k‰k˜!˜Q  1 a¨Ó+ˆàŸJ™J q›MÑˆ�Eà×Ñ˜qÔ à—J‘J˜z¯>©>¸;×HYÑHYÐ[]Ð_c×_lÑ_lÓmˆEØ—I‘I !�IÓ$×+Ñ+ˆEà§
¡
Õ*¨c¯m©m¸BÀÓ.CÕCˆØ#×+Ñ+°Ð+Ó3ˆà"Õ*ˆØ!×+Ñ+¨A¨qÓ1×9Ñ9¸*ÀbÈ$×JaÑJaÓbˆØ—i‘i Ó,ˆç.?�Ð*ÐXÀkÐSWÐEXÐXr&   )	rÎ   rÇ   rÈ   rÒ   rÑ   rÉ   rÏ   rË   rÊ   )é   é    Fr—   )
r(   r)   r*   r+   r,   rR   r•   r.   r/   r™   rš   s   @@r#   rÄ   rÄ   ;  s&   ù‡ € ñ÷5õ 5÷.Y÷ Yò Y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# )ÚHieraMlpiz  c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   r   rk   N)rƒ   )r!   r"   s   "€r#   r$   ÚHieraMlp.__annotate__{  s   ø€ ÷ ?ñ ?¡Cð ?¨Dñ ?r&   c                ó0  <€ \         SV `  4        \        VP                  ,          V n        \
        P                  ! V\        W!P                  ,          4      4      V n	        \
        P                  ! \        W!P                  ,          4      V4      V n
        R # r˜   )rQ   rR   r   Ú
hidden_actÚactivation_fnr   rÐ   rƒ   Ú	mlp_ratioÚfc1Úfc2)rc   rd   r   rg   s   &&&€r#   rR   ÚHieraMlp.__init__{  sa   ø€ Ü‰ÑÔÜ# F×$5Ñ$5Õ6ˆÔÜ—9’9˜S¤# c×,<Ñ,<Õ&<Ó"=Ó>ˆŒÜ—9’9œS ×'7Ñ'7Õ!7Ó8¸#Ó>ˆŽr&   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r   rk   ©r   rl   )r!   r"   s   "€r#   r$   rê   �  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í   rð   )rc   r   s   &&r#   r•   ÚHieraMlp.forward�  s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆØÐr&   )rí   rï   rð   ©	r(   r)   r*   r+   rR   r•   r.   r/   r™   rš   s   @@r#   rè   rè   z  s   ù‡ € ÷?ó ?÷÷ ð r&   rè   c                   ój   a a€ ] tR tRt oRtR
V3R lV 3R llltV3R lR ltV3R lR ltR	tVt	V ;t
# )ÚHieraDropPathi‰  zÃStochastic depth (DropPath) per sample, for residual blocks.

Identity when ``drop_prob`` is 0 or outside training. See `Deep Networks with Stochastic Depth
<https://arxiv.org/abs/1603.09382>`_.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Ú	drop_probrk   N)rt   )r!   r"   s   "€r#   r$   ÚHieraDropPath.__annotate__�  s   ø€ ÷ #ñ #¡%ð #°$ñ #r&   c                ó0   <€ \         SV `  4        Wn        R # r˜   )rQ   rR   rû   )rc   rû   rg   s   &&€r#   rR   ÚHieraDropPath.__init__�  s   ø€ Ü‰ÑÔØ"Žr&   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ró   rô   )r!   r"   s   "€r#   r$   rü   ”  s#   ø€ ÷ <ñ <¡U§\¡\ð <±e·l±lñ <r&   c                ó˜  € V P                   R 8X  g   V P                  '       g   V# ^V P                   ,
          pVP                  ^ ,          3RVP                  ^,
          ,          ,           p\        P
                  ! W1P                  VP                  R7      p\        P                  ! WB,           4      pVP                  V4      V,          # )ç        )Údtyper}   ©rå   )
rû   Útrainingrp   Úndimr   r„   r  r}   ÚfloorÚdiv)rc   r   Ú	keep_probrp   Úrandom_tensors   &&   r#   r•   ÚHieraDropPath.forward”  s•   € Ø�>‰>˜SÔ ¨¯¯¨Ø Ð Ø˜Ÿ™Õ&ˆ	Ø×$Ñ$ QÕ'Ð)¨D°M×4FÑ4FÈÕ4JÕ,KÕKˆÜŸ
š
 5×0CÑ0CÈM×L`ÑL`ÔaˆÜŸš MÕ$=Ó>ˆØ× Ñ  Ó+¨mÕ;Ð;r&   c                ó    <€ V ^8„  d   QhRS[ /# ©r   rk   )Ústr)r!   r"   s   "€r#   r$   rü   �  s   ø€ ÷ %ñ %™Cñ %r&   c                ó    € R V P                    2# )zp=©rû   ©rc   s   &r#   Ú
extra_reprÚHieraDropPath.extra_repr�  s   € Ø�D—N‘NÐ#Ð$Ð$r&   r  ©r  )r(   r)   r*   r+   r,   rR   r•   r  r.   r/   r™   rš   s   @@r#   rù   rù   ‰  s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %r&   rù   c                   óX   a a€ ] tR tRt oRV3R lV 3R llltRV3R lR lltRtVtV ;t# )	Ú
HieraLayeri¡  c                óH   <€ V ^8„  d   QhRS[ RS[ RS[ RS[RS[ RS[ RS[RR	/# )
r   rÆ   rÇ   rÈ   Ú	drop_pathrÉ   rÊ   rË   rk   N)rƒ   rt   rI   )r!   r"   s   "€r#   r$   ÚHieraLayer.__annotate__¢  sg   ø€ ÷  Cñ  Cñ ð Cñ  ð	 Cñ
 ð Cñ ð Cñ ð Cñ ð Cñ !ð Cð 
ñ Cr&   c	           	     óÊ  <€ \         S	V `  4        W n        W0n        W`n        \
        P                  ! W!P                  R 7      V n        \        VVVVVVR7      V n
        \
        P                  ! W1P                  R 7      V n        \        W4      V n        V^ 8”  d   \        V4      M\
        P                  ! 4       V n        W#8w  d   \
        P"                  ! W#4      V n        R# R# )©Úeps)rÆ   rÇ   rÈ   rÉ   rÊ   rË   N)rQ   rR   rÆ   rÇ   rÉ   r   Ú	LayerNormÚlayer_norm_epsÚlayernorm_beforerÄ   ÚattnÚlayernorm_afterrè   Úmlprù   ÚIdentityr  rÐ   rÒ   )
rc   rd   rÆ   rÇ   rÈ   r  rÉ   rÊ   rË   rg   s
   &&&&&&&&&€r#   rR   ÚHieraLayer.__init__¢  s²   ø€ ô 	‰ÑÔà&ÔØ"4ÔØ(Ôä "§¢¨[×>SÑ>SÔ TˆÔÜ*Ø#Ø1ØØ%Ø#Ø1ô
ˆŒ	ô  "Ÿ|š|Ð,>×DYÑDYÔZˆÔÜ˜FÓ7ˆŒà5>À´]œ yÔ1ÌÏÊËˆŒØÔ,ÜŸ	š	 +ÓBˆDŽIñ -r&   c          	      óŒ   <€ V ^8„  d   QhRS[ P                  RS[RS[S[ P                  S[ P                  R,          3,          /# rÕ   r×   )r!   r"   s   "€r#   r$   r  Ä  sD   ø€ ÷ -ñ -á—|‘|ð-ñ  ð-ñ 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñ	-r&   c                óî  € VP                   w  r4pV P                  V4      pV P                  V P                  8w  dS   V P	                  V4      pVP                  W0P                  RV P                  4      P                  ^R7      P                  pV P                  WbR7      w  rgWP                  V4      ,           pTpV P                  V4      pV P                  V4      pW€P                  V4      ,           pW3# )rå   r~   ©rÖ   r°   )rp   r  rÆ   rÇ   rÒ   rq   rÉ   rÚ   rÛ   r  r  r   r!  )	rc   r   rÖ   r‰   rÝ   rÞ   Úhidden_states_normrâ   Úresiduals	   &&&      r#   r•   ÚHieraLayer.forwardÄ  sè   € ð
 "/×!4Ñ!4Ñˆ
˜Qà!×2Ñ2°=ÓAÐØ×Ñ˜t×6Ñ6Ô6Ø ŸI™IÐ&8Ó9ˆMð ×"Ñ" :×/@Ñ/@À"Àd×F]ÑF]Ó^×bÑbÐghÐbÓi×pÑpð ð .2¯Y©YÐ7I¨YÓ-oÑ*Ð	Ø%¯©Ð7IÓ(JÕJˆà ˆØ×,Ñ,¨]Ó;ˆØŸ™ Ó/ˆØ §>¡>°-Ó#@Õ@ˆàÐ,Ð,r&   )	r  r  rÆ   rÇ   r   r  r!  rÒ   rÉ   )r  rå   ræ   Fr—   r÷   rš   s   @@r#   r  r  ¡  s!   ù‡ € ÷ Cõ  C÷D-÷ -ò -r&   r  c                   óX   a a€ ] tR tRt oRV3R lV 3R llltRV3R lR lltRtVtV ;t# )	Ú
HieraStageiÞ  c                ó‚   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[S[,          RS[S[ ,          RS[ RS[R	S[ R
,          RR
/
# )r   ÚdepthrÆ   rÇ   rÈ   r  rÉ   rÊ   rË   Ú	stage_numNrk   )rƒ   Úlistrt   rI   )r!   r"   s   "€r#   r$   ÚHieraStage.__annotate__ß  s}   ø€ ÷ #
ñ #
ñ ð#
ñ ð	#
ñ
  ð#
ñ ð#
ñ ™•;ð#
ñ ™3•ið#
ñ ð#
ñ !ð#
ñ ˜•:ð#
ð 
ñ#
r&   c                ób  <€ \         SV `  4        R pV
e$   VP                  V
^ 8”  d
   V
^,
          M^ ,          p\        P                  ! \        V4       Uu. uFB  p\        TV^ 8X  d   TMTTTWl,          W|,          TT	;'       g    T;'       d    V^ 8H  R7      NKD  	  up4      V n        R# u upi )FN)rd   rÆ   rÇ   rÈ   r  rÉ   rÊ   rË   )rQ   rR   Úmasked_unit_attentionr   Ú
ModuleListÚranger  Úlayers)rc   rd   r-  rÆ   rÇ   rÈ   r  rÉ   rÊ   rË   r.  Ú$previous_stage_used_masked_attentionre   rg   s   &&&&&&&&&&&  €r#   rR   ÚHieraStage.__init__ß  s¾   ø€ ô 	‰ÑÔð
 05Ð,ØÒ Ø39×3OÑ3OÐajÐmnÔanÐPYÐ\]ÖP]ÐtuÕ3vÐ0Ü—m’mô ˜uœóñ &�Aô Ø!Ø/0°A¬v¡Ð;MØ'9Ø'Ø'�lØ!-¥Ø +Ø'9×'nÐ'nÐ>b×>mÐ>mÐghÐlmÑgm÷	ñ &ñó
ˆŽùòs   Á.B,Â	B,ÂB,c          	      óŒ   <€ V ^8„  d   QhRS[ P                  RS[RS[S[ P                  S[ P                  R,          3,          /# rÕ   r×   )r!   r"   s   "€r#   r$   r0    s@   ø€ ÷ +ñ +Ù"Ÿ\™\ð+Ù>Bð+á	‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñ+r&   c                ó\   € \        V P                  4       F  w  r4V! WR 7      w  rK  	  VX3# )r&  )Ú	enumerater5  )rc   r   rÖ   re   Úlayer_modulerâ   s   &&&   r#   r•   ÚHieraStage.forward  s5   € ô  )¨¯©Ö5‰OˆAÙ,8¸Ô,lÑ)ˆ]™Lñ  6ð ˜lÐ*Ð*r&   )r5  r˜   r—   r÷   rš   s   @@r#   r+  r+  Þ  s   ù‡ € ÷#
õ #
÷J+÷ +ò +r&   r+  c                óœ   € V ^8„  d   QhR\         P                  R\        \        ,          R\        \        ,          R\         P                  /# )r   r   rp   Úmask_unit_shaperk   )r   rl   r/  rƒ   )r!   s   "r#   r$   r$     s>   € ÷ ñ ¤%§,¡,ð ´t¼Cµyð ÔSWÔX[ÕS\ð Ôaf×amÑamñ r&   c                ó,  € V P                   ^ ,          V P                   R,          rC\        W4       UUu. uF  w  rVWV,          NK  	  pppV P                  ! V.VOVOVN5!  p V P                  ^ ^^^^^4      p V P                  ! V.VOVN5!  p V # u uppi )a=  
Restore spatial organization by undoing windowed organization of mask units.

Args:
    hidden_states (`torch.Tensor`): The hidden states tensor of shape `[batch_size, num_mask_unit_height*num_mask_unit_width, hidden_size]`.
    shape (`list[int]`): The original shape of the hidden states tensor before windowing.
    mask_unit_shape (`list[int]`): The shape of the mask units used for windowing.

Returns:
    torch.Tensor: The restored hidden states tensor of shape [batch_size, num_mask_unit_height*mask_unit_height, num_mask_unit_width*mask_unit_width, hidden_size].
r°   )rp   rY   rq   r´   r³   )r   rp   r>  r‰   rÆ   rf   ÚmuÚnum_mask_unitss   &&&     r#   Úundo_windowingrB    s¦   € ð ,×1Ñ1°!Õ4°m×6IÑ6IÈ"Õ6M�ô ,/¨uÔ+FÔGÑ+F¡% !�a—g�gÑ+F€NÑGØ!×&Ò& zÐb°NÐbÀ_ÐbÐVaÓb€Mð "×)Ñ)¨!¨Q°°1°a¸Ó;€MØ!×)Ò)¨*ÐJ°uÐJ¸kÓJ€MàÐùó Hs   ´Bc                   ój   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tR
V3R lR lltRtVtV ;t	# )ÚHieraEncoderi'  c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r   rd   rk   Nr   )r!   r"   s   "€r#   r$   ÚHieraEncoder.__annotate__(  s   ø€ ÷ 0,ñ 0,™{ð 0,¨tñ 0,r&   c                ó¤  <€ \         SV `  4        \        VP                  4      p\        P
                  ! ^ VP                  VRR7       Uu. uF  q3P                  4       NK  	  pp\        P                  ! VP                  RR7      P                  ^ 4      P                  4       pVRVP                   p\        V4       Uu. uF+  qwV9   d!   \        P                  ! VP                  4      M^NK-  	  pp\         P"                  ! 4       V n        VP&                  p	^ .V,           p
\        P                  ! VP(                  4      p\        P                  ! VP                  4      p\+        VP                  4       FÉ  w  rÞ\-        VP&                  VP.                  V,          ,          4      p\1        VVV	VVP2                  V,          WJV,          W­^,           ,           WŠV,          W­^,           ,           \-        W¼V) ,          ,          4      VP4                  V,          VR7
      pTp	V P$                  P7                  V4       KË  	  \9        VP:                  VP<                  4       UUu. uF  w  ppVV,          NK  	  pppVP                  .\?        VP                  RR 4      ,          p/ V n         \        \?        VP                  4      4       F`  pVV3V P@                  V&   WÑP                  8  g   K&  \9        VVP                  4       UUu. uF  w  ppVV,          NK  	  pppVR,          pKb  	  RV n!        R# u upi u upi u uppi u uppi )ræ   Úcpur|   N)
rd   r-  rÆ   rÇ   rÈ   r  rÉ   rÊ   rË   r.  ºrå   NNFr°   )"rQ   rR   ÚsumÚdepthsr   ÚlinspaceÚdrop_path_rateÚitemÚtensorÚcumsumÚtolistÚnum_query_poolr4  r�   r‚   rÉ   r   r3  Ústagesr`   r\   r:  rƒ   Úembed_dim_multiplierr+  rÈ   r2  ÚappendrY   rX   rZ   rS   ÚscheduleÚgradient_checkpointing)rc   rd   Útotal_depthÚxÚdprÚcumulative_depthsÚquery_pool_layerre   Úquery_stridesrÆ   Ú
stage_endsÚmasked_unit_areaÚquery_stride_areaÚ	idx_stager-  rÇ   Ústagerf   Ú
stage_sizeÚunroll_schedulerg   s   &&                  €r#   rR   ÚHieraEncoder.__init__(  sÄ  ø€ Ü‰ÑÔÜ˜&Ÿ-™-Ó(ˆä!&§¢°°6×3HÑ3HÈ+Ð^cÕ!dÓeÑ!d˜A�v‰vŽxÑ!dˆÐeä!ŸLšL¨¯©¸uÔE×LÑLÈQÓO×VÑVÓXÐØ,Ð-D¨v×/DÑ/DÐEÐÜafÐgrÔasÓtÑasÐ\]Ð@PÔ;PœŸš 6×#6Ñ#6Ô7ÐVWÒWÑasˆÐtô —m’m“oˆŒØ×&Ñ&ˆØ�SÐ,Õ,ˆ
ÜŸ9š9 V×%<Ñ%<Ó=ÐÜ ŸIšI f×&9Ñ&9Ó:ÐÜ )¨&¯-©-Ö 8ÑˆIÜ!$ V×%5Ñ%5¸×8SÑ8SÐU^Õ8^Õ%^Ó!_ÐäØØØ'Ø#5Ø ×*Ñ*¨9Õ5Ø¨Õ3°jÈQÅÕ6OÐPØ*°iÕ+@À:ÐZ[ÍmÕC\Ð]ÜÐ 0ÀyÀjÕ3PÕ PÓQØ#)×#?Ñ#?À	Õ#JØ#ôˆEð -ˆKØ�K‰K×Ñ˜uÖ%ñ# !9ô, *-¨V×->Ñ->À×@SÑ@SÔ)TÔUÑ)T¡  A�a˜1—f�fÑ)Tˆ
ÑUØ!×.Ñ.Ð/´#°f·m±mÀCÀRÐ6HÓ2IÕIˆàˆŒÜœs 6§=¡=Ó1Ö2ˆIØ'6¸
Ð'BˆD�M‰M˜)Ñ$Ø×0Ñ0Ö0Ü14°ZÀ×ATÑATÔ1UÔVÑ1U©¨¨A˜a 1Ÿf˜fÑ1U�
ÑVØ"1°"Õ"5’ñ	 3ð ',ˆÖ#ùòY fùò uùó< Vùó Ws   ÁL<Ã 1MÉ(MÌMc                ó|   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  R,          RS[ P                  /# )r   r   Ú	stage_idxr5   Nrk   )r   rl   rƒ   r8   )r!   r"   s   "€r#   r$   rG  Z  sA   ø€ ÷ ,ñ ,Ù"Ÿ\™\ð,Ù69ð,ÙLQ×L\ÑL\Ð_cÕLcð,á	�‰ñ,r&   c           
     ó  € V P                   V,          w  rEVP                  w  rgp\        V4      p	^.V	,          p
V F¥  pVP                  ! V.VOV\        P
                  ! V4      ,          NV
OVN5!  pVP                  ^ ^^^^^^4      p\        V	4       F  pW¬;;,          W¼,          ,          uu&   K  	  VP                  ! VR.V
OVN5!  pVP                  ^,          pK§  	  VP                  ! Wg.V
OVN5!  pVe   V# \        WV
4      pV# )a,  
Roll the given tensor back up to spatial order assuming it's from the given block.

If no bool_masked_pos is provided returns:
    - [batch_size, height, width, hidden_size]
If a bool_masked_pos is provided returns:
    - [batch_size, num_mask_units, mask_unit_height, mask_unit_width, hidden_size]
r°   )
rW  rp   rS   rq   r�   r‚   r´   r4  r³   rB  )rc   r   rh  r5   rW  ro   r‰   rÝ   rÆ   Únum_dimr>  Ústridesre   s   &&&&         r#   ÚrerollÚHieraEncoder.rerollZ  s-  € ð Ÿ™ yÕ1‰ˆØ+8×+>Ñ+>Ñ(ˆ
˜[ä�d“)ˆØ˜# �-ˆãˆGà)×.Ò.ØðØ$ðØ&-´·²¸7Ó1CÕ&CðØFUðØWbóˆMð *×1Ñ1°!°Q¸¸1¸aÀÀAÓFˆMô ˜7–^�Ø×" g¥jÕ0Õ"ñ $à)×1Ò1°*¸bÐ`À?Ð`ÐT_Ó`ˆMØ#×)Ñ)¨!Õ,ŠGñ  ð$ &×*Ò*¨:Ð^ÀÐ^ÐR]Ó^ˆð Ò&Ø Ð ô ' }¸OÓLˆàÐr&   c                ó„   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[RS[RS[RS[S[,          /# )r   r   r5   NrÖ   Úoutput_hidden_statesÚreturn_dictrk   )r   rl   r8   rI   r    r
   )r!   r"   s   "€r#   r$   rG  ˆ  s[   ø€ ÷ )
ñ )
á—|‘|ð)
ñ ×)Ñ)¨DÕ0ð)
ñ  ð	)
ñ
 #ð)
ñ ð)
ñ 
‘Õ	 ñ)
r&   c                ó   € V'       d   RMR pV'       d   RMR pV'       d   RMR pV'       d'   Wa3,           pV P                  V^ VR7      p	Wy3,           p\        V P                  4       F]  w  r«V! W4      pV^ ,          pV'       d   WŒ^,          3,           pV'       g   K8  Wa3,           pV P                  WVR7      p	Wy3,           pK_  	  V'       g1   \        ;QJ d    . R WW‡3 4       F  NK  	  5# ! R WW‡3 4       4      # \	        VVVVR7      # )N)rh  r5   c              3   ó2   "  € T F  pVf   K	  Vx € K  	  R # 5ir˜   r'   )Ú.0Úvs   & r#   Ú	<genexpr>Ú'HieraEncoder.forward.<locals>.<genexpr>§  s   é € ð ál�AØ÷ ’Ûlùs   ‚�
)r   r   r   r   r'   )rl  r:  rT  r    r   )rc   r   r5   rÖ   ro  rp  Úall_hidden_statesÚall_reshaped_hidden_statesÚall_self_attentionsr   re   Ústage_moduleÚlayer_outputss   &&&&&&       r#   r•   ÚHieraEncoder.forwardˆ  s   € ÷ #7™B¸DÐß+?¡RÀTÐ"ß$5™b¸4ÐçØ 1Ð4DÕ DÐØ%)§[¡[°È!Ð]l [Ó%mÐ"Ø)CÐF_Õ)_Ð&ä(¨¯©Ö5‰OˆAÙ(¨ÓJˆMà)¨!Õ,ˆMç Ø&9È1Õ=MÐ<OÕ&OÐ#ç#Ñ#Ø$5Ð8HÕ$HÐ!Ø)-¯©°]Ðap¨Ó)qÐ&Ø-GÐJcÕ-cÒ*ñ  6÷ ß”5ñ à'Ð<OÑló—5ð �5ñ à'Ð<OÑlóó ð ô
 "Ø+Ø+Ø*Ø#=ô	
ð 	
r&   )rX  rW  rT  r˜   )NFFT)
r(   r)   r*   r+   rR   rl  r•   r.   r/   r™   rš   s   @@r#   rD  rD  '  s*   ù‡ € ÷0,ó 0,÷d,ò ,÷\)
÷ )
ò )
r&   rD  c          
      óì   € V ^8„  d   QhR\         P                  R\        \        \        3,          R\        \        \        3,          R\        \        \        ,          ,          R\         P                  /# )r   r   Úimage_shaperZ   rW  rk   )r   rl   r    rƒ   r/  )r!   s   "r#   r$   r$   ´  s[   € ÷ 3ñ 3Ü—<‘<ð3Ü.3´C¼°H­oð3ÜMRÔSVÔX[ÐS[Í_ð3ÜhlÔmqÔruÕmvÕhwð3ä
‡\�\ñ3r&   c           	     ó`  € V P                   w  rEp\        W4       UUu. uF  w  rxWx,          NK  	  p	ppT	p
V P                  ! V.V
,           V.,           !  p V EF  p\        W«4       UUu. uF  w  rxWx,          NK  	  p
pp\        W«4       UUu. uF  qÌ F  qÝNK  	  K  	  pppV.V,           V.,           pV P                  V4      p \        V4      p^ .\	        \        ^V^,
          ^4      4      ,           \	        \        ^V^,
          ^4      4      ,           V^,
          .,           pV P                  V4      p V P                  ^ \        V4      4      p V\        P                  ! V4      ,          pEK  	  V P                  R\        P                  ! V	4      V4      p V # u uppi u uppi u uppi )ap  
Reorders the tokens such that patches are contiguous in memory.
E.g., given [batch_size, (height, width), hidden_size] and stride of (stride, stride), this will re-order the tokens as
[batch_size, (stride, stride, height // stride, width // stride), hidden_size]

This allows operations like Max2d to be computed as x.view(batch_size, stride*stride, -1, hidden_size).max(dim=1).
Not only is this faster, but it also makes it easy to support inputs of arbitrary
dimensions in addition to patch-wise sparsity.

Performing this operation multiple times in sequence puts entire windows as contiguous
in memory. For instance, if you applied the stride (2, 2) 3 times, entire windows of
size 8x8 would be contiguous in memory, allowing operations like mask unit attention
computed easily and efficiently, while also allowing max to be applied sequentially.

Note: This means that intermediate values of the model are not in height x width order, so they
need to be re-rolled if you want to use the intermediate values as a height x width feature map.
The last block of the network is fine though, since by then the strides are all consumed.
r°   )rp   rY   rq   rS   r/  r4  r´   r’   r�   r‚   r³   )r   r~  rZ   rW  r‰   rÞ   rÆ   re   rf   ro   Úcurrent_sizerk  ÚpairrO  Ú	new_shapeÚnum_dimsr´   s   &&&&             r#   Úunrollr„  ´  s‰  € ð* "/×!4Ñ!4Ñ€J�;ä" ;Ô=Ô>Ñ=‘t�qˆA�FˆFÑ=€DÑ>à€LØ!×&Ò&¨*¨¸Õ)DÈÀ}Õ)TÑV€Mäˆô
 ,/¨|Ô+EÔFÑ+E¡4 1˜Ÿ˜Ñ+EˆÑFä&)¨,Ô&@ÔRÑ&@˜dÊTÀT’TÉT‘TÑ&@ˆ	ÑRà�L 9Õ,°¨}Õ<ˆ	Ø%×*Ñ*¨9Ó5ˆô �y“>ˆØ�#œœU 1 h°¥l°AÓ6Ó7Õ7¼$¼uÀQÈÐSTÍÐVWÓ?XÓ:YÕYÐ]eÐhiÕ]iÐ\jÕjˆØ%×-Ñ-¨gÓ6ˆð &×-Ñ-¨a´°W³Ó>ˆØ”d—i’i Ó(Õ(‹
ñ) ð, "×)Ñ)¨"¬d¯iªi¸«o¸{ÓK€MØÐùó9 ?ùó GùãRs   žFÁ*F$ÂF*c                   ó‚   a a€ ] tR tRt oRtRtR	t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# )
ÚHieraPreTrainedModeliê  Úhierarj   Tc                ó   <€ V ^8„  d   QhRR/# )r   rk   Nr'   )r!   r"   s   "€r#   r$   Ú!HieraPreTrainedModel.__annotate__ó  s   ø€ ÷ Gñ G tñ Gr&   c                ó–  <€ \         SV `  V4       V P                  P                  p\	        V\
        4      '       d%   \        P                  ! VP                  VR7       R# \	        V\        4      '       dG   \        P                  ! VP                  VR7       \        P                  ! VP                  VR7       R# \	        V\        P                  \        P                  \        P                  34      '       dV   \        P                  ! VP                   VR7       VP"                  e$   \        P$                  ! VP"                  V4       R# R# \	        V\        P&                  4      '       dY   \        P$                  ! VP"                  V4       \        P$                  ! VP                   V P                  P(                  4       R# R# )zInitialize the weights)ÚstdN)rQ   Ú_init_weightsrd   Úinitializer_rangeÚ
isinstancerœ   ÚinitÚtrunc_normal_r¥   ÚHieraDecoderÚ
mask_tokenÚdecoder_position_embeddingsr   rÐ   ÚConv1dr_   ÚweightÚbiasÚ	constant_r  Úlayer_norm_init)rc   Úmoduler‹  rg   s   && €r#   rŒ  Ú"HieraPreTrainedModel._init_weightsò  s  ø€ ô 	‰Ñ˜fÔ%Ø�k‰k×+Ñ+ˆä�fœo×.Ò.Ü×Ò˜v×9Ñ9¸s×Cä˜¤×-Ò-Ü×Ò˜v×0Ñ0°cÕ:Ü×Ò˜v×AÑAÀs×Kä˜¤§¡¬B¯I©I´r·y±yÐ A×BÒBÜ×Ò˜vŸ}™}°#Õ6Ø�{‰{Ò&Ü—’˜vŸ{™{¨CÖ0ñ 'ô ˜¤§¡×-Ò-Ü�NŠN˜6Ÿ;™;¨Ô,Ü�NŠN˜6Ÿ=™=¨$¯+©+×*EÑ*EÖFñ .r&   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ©r   rd   r   )r!   r"   s   "€r#   r$   r‰  ê  s   ø‡ ‚ áÑò r&   r'   )Úimage)r(   r)   r*   r+   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingr   Úno_gradrŒ  r-   r.   r/   r™   rš   s   @@r#   r†  r†  ê  sE   ù‡ € ð  ÐØ$€OØ!ÐØ&*Ð#à
‡]‚]ƒ_÷Gò Gó ðG÷ … 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# )ÚHieraPooleri	  c                ó    <€ V ^8„  d   QhRS[ /# rœ  r   )r!   r"   s   "€r#   r$   ÚHieraPooler.__annotate__
  s   ø€ ÷ .ñ .™{ñ .r&   c                ó4  <€ \         SV `  4        \        VP                  VP                  \        VP                  4      ^,
          ,          ,          4      p\        P                  ! W!P                  R7      V n
        \        P                  ! ^4      V n        R# )rå   r  N)rQ   rR   rƒ   r`   rU  rS   rL  r   r  r  Ú	layernormÚAdaptiveAvgPool1dÚpooler)rc   rd   Únum_featuresrg   s   && €r#   rR   ÚHieraPooler.__init__
  sh   ø€ Ü‰ÑÔÜ˜6×+Ñ+¨f×.IÑ.IÌcÐRX×R_ÑR_ÓN`ÐcdÕNdÕ.eÕeÓfˆÜŸš l×8MÑ8MÔNˆŒÜ×*Ò*¨1Ó-ˆŽr&   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ró   rô   )r!   r"   s   "€r#   r$   r¦    s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r&   c                óœ   € VP                  ^^4      pV P                  V4      p\        P                  ! V^4      pV P	                  V4      pV# r  )r“   rª  r   r’   r¨  )rc   r   Úpooled_outputs   && r#   r•   ÚHieraPooler.forward  sF   € Ø%×/Ñ/°°1Ó5ˆØŸ™ MÓ2ˆÜŸš m°QÓ7ˆØŸ™ }Ó5ˆØÐr&   )r¨  rª  r÷   rš   s   @@r#   r¤  r¤  	  s   ù‡ € ÷.ó .÷÷ ð r&   r¤  c                   ót   a a€ ] tR tRt oR	V3R lV 3R llltV3R lR lt]R
V3R lR ll4       tRtVt	V ;t
# )Ú
HieraModeli  c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   rd   Úadd_pooling_layerrH   rž   )r!   r"   s   "€r#   r$   ÚHieraModel.__annotate__  s#   ø€ ÷ ñ ™{ð ¹tð ÑTXñ r&   c                ó²  <€ \         SV `  V4       \        VP                  VP                  \        VP                  4      ^,
          ,          ,          4      V n        \        WR7      V n	        \        V4      V n        VP                  .\        VP                  RR 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 or not to apply pooling layer.
is_mae (`bool`, *optional*, defaults to `False`):
    Whether or not to run the model on MAE mode.
r¡   Nr°   )rQ   rR   rƒ   r`   rU  rS   rL  r«  rœ   r”   rD  ÚencoderrÉ   re  r¤  rª  Ú	post_init)rc   rd   r´  rH   rg   s   &&&&€r#   rR   ÚHieraModel.__init__  s¢   ø€ ô 	‰Ñ˜Ô Ü × 0Ñ 0°6×3NÑ3NÔSVÐW]×WdÑWdÓSeÐhiÕSiÕ3jÕ jÓkˆÔä)¨&Ô@ˆŒÜ# FÓ+ˆŒà &× 3Ñ 3Ð4´s¸6¿=¹=ÈÈ"Ð;MÓ7NÕNˆÔç->”k &Ô)ÀDˆŒð 	�‰Ör&   c                ó    <€ V ^8„  d   QhRS[ /# r  )rF   )r!   r"   s   "€r#   r$   rµ  .  s   ø€ ÷ 0ñ 0Ñ&:ñ 0r&   c                ó.   € V P                   P                  # r˜   ©r”   r£   r  s   &r#   Úget_input_embeddingsÚHieraModel.get_input_embeddings.  ó   € Ø�‰×/Ñ/Ð/r&   c                óÐ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[R,          RS[R,          RS[S[,          /# ©	r   rj   Nrz   rÖ   ro  rº   rp  rk   )r   rl   r   rI   r    r   )r!   r"   s   "€r#   r$   rµ  2  s„   ø€ ÷ F
ñ F
á—l‘l TÕ)ðF
ñ × Ñ  4Õ'ðF
ñ   $�;ð	F
ñ
 # T�kðF
ñ #'¨¥+ðF
ñ ˜D•[ðF
ñ 
Ñ+Õ	+ñF
r&   c           
     óÖ  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pVf   \	        R4      hV P                  WVR7      w  r‰p
VP                  R,          VP                  R	,          3p\        VVV P                   P                  V P                  R7      pV	ex   \        P                  ! V P                   P                  4      pVP                  w  rïpV	P                  R	4      P                  ^VV4      pVV,          pVP                  VR	V4      pV P!                  VV	VVVR7      pV^ ,          pRpV P"                  e   V P#                  V4      pV'       g,   Ve   VV3MV3pV	e   VWš3,           MTpVVR,          ,           # \%        VVV	V
VP&                  VP(                  VP*                  R7      # )
z®
noise (`torch.FloatTensor` of shape `(batch_size, num_mask_units)`, *optional*):
    Mainly used for testing purposes to control randomness and maintain the reproducibility
Nz You have to specify pixel_values)rº   rz   )r~  rZ   rW  )r5   rÖ   ro  rp  rJ  )r   r4   r5   r6   r   r   r   rP   r°   )rd   rÖ   ro  rp  rV   r”   rp   r„  rZ   re  r�   r‚   r\   Ú	unsqueezeÚtilerq   r·  rª  r2   r   r   r   )rc   rj   rz   rÖ   ro  rº   rp  ÚkwargsÚembedding_outputr5   r6   r~  r   Úmask_unit_arear‰   rÞ   rÆ   Ú	positionsÚencoder_outputsÚsequence_outputr¯  Úhead_outputss   &&&&&&&,              r#   r•   ÚHieraModel.forward1  sú  € ð 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆàÒÜÐ?Ó@Ð@à9=¿¹ØÐSXð :Ió :
Ñ6Ð¨;ð $×)Ñ)¨"Õ-¨|×/AÑ/AÀ"Õ/EÐFˆÜØØ#ØŸ™×1Ñ1Ø×)Ñ)ô	
ˆð Ò&Ü!ŸYšY t§{¡{×'CÑ'CÓDˆNØ)6×)<Ñ)<Ñ&ˆJ˜;Ø'×1Ñ1°"Ó5×:Ñ:¸1¸nÈkÓZˆIØ)¨)Õ4ˆMØ)×.Ñ.¨z¸2¸{ÓKˆMàŸ,™,ØØ+Ø/Ø!5Ø#ð 'ó 
ˆð *¨!Õ,ˆØˆØ�;‰;Ò"Ø ŸK™K¨Ó8ˆMçØ?LÒ?X˜O¨]Ñ;Ð_nÐ^pˆLàAPÒA\� Ð=Ö=Ðbnð ð   /°"Õ"5Õ5Ð5äØ-Ø'Ø+Ø#Ø)×7Ñ7Ø&×1Ñ1Ø#2×#IÑ#Iô
ð 	
r&   )r”   r·  r«  rª  re  )TF©NNNNNN)r(   r)   r*   r+   rR   r½  r   r•   r.   r/   r™   rš   s   @@r#   r²  r²    s;   ù‡ € ÷õ ÷(0ð 0ð ÷F
ñ F
ó ÷F
ð F
r&   r²  c                   óT   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tRtVtV ;t# )r‘  i{  c                ó    <€ V ^8„  d   QhRS[ /# rœ  r   )r!   r"   s   "€r#   r$   ÚHieraDecoder.__annotate__|  s   ø€ ÷ %Lñ %L™{ñ %Lr&   c                óL  <€ \         SV `  4        \        VP                  VP                  \        VP                  4      ^,
          ,          ,          4      p\        VP                  VP                  4       UUu. uF  w  r4W4,          NK  	  ppp\        WQP                  4       UUu. uF  w  r4W4VP                  ,          ,          NK   	  uppV n        \        VP                  VP                  4       UUu. uF  w  r4W4VP                  ,          ,          NK   	  uppV n        \        P                   ! W!P"                  4      V n        \        P&                  ! \(        P*                  ! ^^VP"                  4      4      V n        \        P&                  ! \(        P*                  ! ^\.        P0                  ! V P                  4      VP"                  4      4      V n        \5        VVP"                  VP"                  VP6                  VP8                  RR.VP8                  ,          ^.VP8                  ,          ^ R7	      V n        \        P<                  ! VP"                  VP>                  R7      V n         VP                  R,          VP                  R,          VP                  ,          ,          V n!        V PB                  \        VP                  4      ,          VPD                  ,          p\        P                   ! VP"                  V4      V n#        R# u uppi u uppi u uppi )rå   Fr  )	rd   rÆ   rÇ   rÈ   r-  rË   r  rÉ   rÊ   r  Nr°   )$rQ   rR   rƒ   r`   rU  rS   rL  rY   rX   rZ   rÉ   rS  Útokens_spatial_shape_finalr\   Úmask_unit_spatial_shape_finalr   rÐ   Údecoder_hidden_sizeÚdecoder_embeddingsr¤   r   r‡   r’  r�   r‚   r“  r+  Údecoder_num_headsÚdecoder_depthÚdecoder_blockr  r  Údecoder_normÚpred_striderW   Údecoder_pred)rc   rd   r«  re   rf   r[   Úpred_dimrg   s   &&     €r#   rR   ÚHieraDecoder.__init__|  sb  ø€ Ü‰ÑÔÜ˜6×+Ñ+¨f×.IÑ.IÌcÐRX×R_ÑR_ÓN`ÐcdÕNdÕ.eÕeÓfˆÜ36°v×7HÑ7HÈ&×J]ÑJ]Ô3^Ô_Ñ3^©4¨1 § Ñ3^ÐÑ_ä:=Ð>R×TgÑTgÔ:hô+
Ù:h±$°!ˆA�v×,Ñ,Õ-×-Ð-Ñ:hò+
ˆÔ'ô ;>¸f×>UÑ>UÐW]×WjÑWjÔ:kô.
Ù:k±$°!ˆA�v×,Ñ,Õ-×-Ð-Ñ:kò.
ˆÔ*ô #%§)¢)¨L×:TÑ:TÓ"UˆÔäŸ,š,¤u§{¢{°1°a¸×9SÑ9SÓ'TÓUˆŒä+-¯<ª<Ü�KŠK˜œ4Ÿ9š9 T×%DÑ%DÓEÀv×GaÑGaÓbó,
ˆÔ(ô (ØØ×2Ñ2Ø%×9Ñ9Ø×.Ñ.Ø×&Ñ&Ø$Ø�e˜f×2Ñ2Õ2Ø˜˜v×3Ñ3Õ3Øô

ˆÔô ŸLšL¨×)CÑ)CÈ×I^ÑI^Ô_ˆÔð "×.Ñ.¨rÕ2°f×6IÑ6IÈ"Õ6MÐQW×QfÑQfÕ6fÕgˆÔØ×$Ñ$¬¨F×,?Ñ,?Ó(@Õ@ÀF×DWÑDWÕWˆäŸIšI f×&@Ñ&@À(ÓKˆÖùóE  `ùó+
ùó.
s   Á:LÂ($LÃ8$L c          
      ó˜   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RS[S[ P                  S[ P                  3,          /# )r   Úencoder_hidden_statesr5   rÖ   rk   )r   rl   r8   rI   r    )r!   r"   s   "€r#   r$   rÐ  £  sQ   ø€ ÷ ;.ñ ;.á$Ÿ|™|ð;.ñ ×)Ñ)ð;.ñ  ð	;.ñ
 
‰u�|‰|™U×-Ñ-Ð-Õ	.ñ;.r&   c           
     óÌ  € V P                  V4      pVP                  R ,          w  rVpVP                  w  r‰\        P                  ! VV	VVVVP                  VP
                  R7      p
V P                  P                  ^^^^R4      pVP                  W‰^^^4      pVP                  RRWVV4      pVP                  4       W¢&   ^VP                  4       ,
          V,          VP                  4       V
,          ,           p
\        V
V P                  V P                  4      p\        VR,          V P                  V P                  4      pVP                  VP                  ^ ,          RVP                  R,          4      pVP                  VP                  ^ ,          R4      pW@P                  ,           pV P!                  WCR7      w  rLV P#                  V4      pV P%                  V4      pWB3# )rn   )r}   r  r&  r°   ).:ræ   rå   N)rÕ  rp   r   r‡   r}   r  r’  rq   r³   Úexpandr’   rt   rB  rÒ  rÓ  r“  rØ  rÙ  rÛ  )rc   rß  r5   rÖ   r   Úmask_unit_heightÚmask_unit_widthrÔ  r‰   rA  Údecoder_hidden_statesÚmask_tokensrâ   s   &&&&         r#   r•   ÚHieraDecoder.forward£  sç  € ð ×/Ñ/Ð0EÓFˆð BO×ATÑATÐUWÕAXÑ>ÐÐ+>Ø%4×%:Ñ%:Ñ"ˆ
ä %§¢ØØØØØØ ×'Ñ'Ø×%Ñ%ô!
Ðð —o‘o×*Ñ*¨1¨a°°A°rÓ:ˆØ)×1Ñ1°*ÈaÐQRÐTUÓVˆØ)×0Ñ0°°RÐ9IÐ\oÓpˆØ1>×1FÑ1FÓ1HÐÑ.à�×%Ñ%Ó'Õ'Øõ!à)×/Ñ/Ó1Ð4IÕIõ!JÐô
 'Ø!Ø×+Ñ+Ø×.Ñ.ó
ˆô
 )Ø˜HÕ%Ø×+Ñ+Ø×.Ñ.ó
ˆð &×-Ñ-¨m×.AÑ.AÀ!Õ.DÀbÈ-×J]ÑJ]Ð^`ÕJaÓbˆØ)×.Ñ.¨}×/BÑ/BÀ1Õ/EÀrÓJˆð &×(HÑ(HÕHˆð '+×&8Ñ&8¸Ð&8Ó&lÑ#ˆØ×)Ñ)¨-Ó8ˆð ×)Ñ)¨-Ó8ˆàÐ-Ð-r&   )	rØ  rÕ  rÙ  r“  rÛ  r’  rÓ  rÚ  rÒ  r—   r÷   rš   s   @@r#   r‘  r‘  {  s!   ù‡ € ÷%Ló %L÷N;.÷ ;.ò ;.r&   r‘  c                   ób   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V3R lR ltRtVtV ;t	# )	ÚHieraMultiScaleHeadiá  c                ó    <€ V ^8„  d   QhRS[ /# rœ  r   )r!   r"   s   "€r#   r$   Ú HieraMultiScaleHead.__annotate__â  s   ø€ ÷ <ñ <™{ñ <r&   c           
     óð  <€ \         SV `  4        \        VP                  VP                  4       UUu. uF  w  r#W#VP
                  ,          ,          NK   	  uppV n        \        \        VP                  4      4       Uu. uF0  p\        VP                  VP                  V,          ,          4      NK2  	  upV n        VP                  p\        P                  ! 4       V n        \        VP
                  4       F´  p\        W@P                  4       UUu. uF  w  r#W#,          NK  	  ppp\        WAP                  4       UUu. uF  w  r#W#,          NK  	  pppV P                   P#                  \        P$                  ! V P                  V,          V P                  R,          VVR7      4       K¶  	  V P                   P#                  \        P&                  ! 4       4       R# u uppi u upi u uppi u uppi )rå   )rM   rN   Nr°   )rQ   rR   rY   r\   rÉ   rS  rÓ  r4  rS   rL  rƒ   r`   rU  Ústage_dimensionsr   r3  Úmulti_scale_fusion_headsrV  r_   r"  )rc   rd   re   rf   Úcurrent_masked_unit_sizeÚidxÚkernelrg   s   &&     €r#   rR   ÚHieraMultiScaleHead.__init__â  s“  ø€ Ü‰ÑÔä:=¸f×>UÑ>UÐW]×WjÑWjÔ:kô.
Ù:k±$°!ˆA�v×,Ñ,Õ-×-Ð-Ñ:kò.
ˆÔ*ô MRÔRUÐV\×VcÑVcÓRdÔLeó!
ÙLeÀqŒC�× Ñ  6×#>Ñ#>ÀÕ#AÕAÖBÑLeñ!
ˆÔð $*×#:Ñ#:Ð Ü(*¯ª«ˆÔ%ä˜×.Ñ.Ö/ˆCÜ),Ð-E×GiÑGiÔ)jÔkÑ)j¡ �a—f�fÑ)jˆFÑkÜ;>Ð?W×YlÑYlÔ;mÔ'nÑ;m±4°1¨¯¨Ñ;mÐ$Ñ'nØ×)Ñ)×0Ñ0Ü—	’	Ø×)Ñ)¨#Õ.Ø×)Ñ)¨"Õ-Ø &Ø!ô	öñ 0ð 	×%Ñ%×,Ñ,¬R¯[ª[«]Ö;ùó).
ùò!
ùó lùÛ'ns   ³$G!Â 6G'ÄG,ÅG2c                óh   <€ V ^8„  d   QhRS[ P                  RS[P                  RS[P                  /# )r   Úheadr   rk   )r   ÚModuler   rl   )r!   r"   s   "€r#   r$   rê  ú  s1   ø€ ÷ ñ ¡b§i¡ið ÁÇÁð ÑQV×Q]ÑQ]ñ r&   c                óN  € \        V\        P                  4      '       d   V# VP                  w  r4rVpVP	                  W4,          WVV4      pVP                  ^ ^^^4      pV! V4      pVP                  ^ ^^^4      pVP                  R,          w  r‰pVP	                  W4W‰V4      pV# )ræ   rJ  )rŽ  r   r"  rp   r³   r´   )
rc   ró  r   r‰   rA  râ  rã  rÆ   Úmask_unit_height_finalÚmask_unit_width_finals
   &&&       r#   Úapply_fusion_headÚ%HieraMultiScaleHead.apply_fusion_headú  s»   € Ü�dœBŸK™K×(Ò(Ø Ð àUb×UhÑUhÑRˆ
Ð$4À{ð &×-Ñ-ØÕ'Ð)9ÈKó
ˆð &×-Ñ-¨a°°A°qÓ9ˆÙ˜]Ó+ˆð &×-Ñ-¨a°°A°qÓ9ˆØER×EXÑEXÐY[ÕE\ÑBÐ°{Ø%×-Ñ-ØÐ(>ÐWbó
ˆð Ðr&   c                ó^   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  /# )r   Úfeature_mapsrk   )r/  r   rl   )r!   r"   s   "€r#   r$   rê    s(   ø€ ÷ ñ ¡D©¯©Õ$6ð ¹5¿<¹<ñ r&   c                óv   € R p\        V P                  V4       F  w  r4W P                  W44      ,           pK  	  V# r  )rY   rí  rø  )rc   rû  r   ró  Úfeature_maps   &&   r#   r•   ÚHieraMultiScaleHead.forward  s=   € àˆÜ!$ T×%BÑ%BÀLÖ!QÑˆDØ)×,BÑ,BÀ4Ó,UÕUŠMñ "Rð Ðr&   )rÓ  rí  rì  )
r(   r)   r*   r+   rR   rø  r•   r.   r/   r™   rš   s   @@r#   rè  rè  á  s(   ù‡ € ÷<ó <÷0ð ÷,÷ ð r&   rè  a;  
    The Hiera Model transformer with the decoder on top for self-supervised pre-training.

    <Tip>

    Note that we provide a script to pre-train this model on custom data in our [examples
    directory](https://github.com/huggingface/transformers/tree/main/examples/pytorch/image-pretraining).

    </Tip>
    c                   ó‚   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V3R lR lt]RV3R lR	 ll4       tR
t	Vt
V ;t# )ÚHieraForPreTrainingi  c                ó$   <€ V ^8„  d   QhRS[ RR/# rF  r   )r!   r"   s   "€r#   r$   Ú HieraForPreTraining.__annotate__&  ó   ø€ ÷ ñ ™{ð ¨tñ r&   c                óX  <€ \         SV `  V4       \        VR RR7      V n        \        P
                  ! V P                  P                  VP                  R7      V n        \        V4      V n
        \        V4      V n        V P                  P                  V n        V P                  4        R# )FT©r´  rH   r  N)rQ   rR   r²  r‡  r   r  r«  r  Úencoder_normrè  Úmultiscale_fusionr‘  ÚdecoderrÚ  r¸  ©rc   rd   rg   s   &&€r#   rR   ÚHieraForPreTraining.__init__&  sz   ø€ Ü‰Ñ˜Ô ä ¸%ÈÔMˆŒ
ÜŸLšL¨¯©×)@Ñ)@Àf×F[ÑF[Ô\ˆÔä!4°VÓ!<ˆÔä# FÓ+ˆŒØŸ<™<×3Ñ3ˆÔð 	�‰Ör&   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   rj   r5   rk   ©r   rl   r8   )r!   r"   s   "€r#   r$   r  4  s3   ø€ ÷ ñ ©u¯|©|ð Ée×N^ÑN^ð Ñch×coÑcoñ r&   c                óš  € VP                  ^ ^^^4      pV P                  pVP                  ^W34      P                  ^W34      pVP                  ^^4      P                  ^4      pWB,          pV P                  P
                  '       dD   VP                  RRR7      pVP                  RRR7      pWE,
          VR,           R,          ,          pV# )ræ   T)r   Úkeepdimg�íµ ÷Æ°>r¬   r°   )r´   rÚ  Úunfoldr’   rd   Únormalize_pixel_lossÚmeanÚvar)rc   rj   r5   ro   Úlabelr  r  s   &&&    r#   Úget_pixel_label_2dÚ&HieraForPreTraining.get_pixel_label_2d4  s³   € à#×+Ñ+¨A¨q°!°QÓ7ˆà×ÑˆØ×#Ñ# A tÓ2×9Ñ9¸!¸TÓHˆØ—‘˜a Ó#×+Ñ+¨AÓ.ˆØÕ&ˆØ�;‰;×+×+Ð+Ø—:‘: "¨d�:Ó3ˆDØ—)‘) ¨D�)Ó1ˆCØ•\ c¨F¥l°sÕ%:Õ:ˆEàˆr&   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   rj   rC   r5   r  )r!   r"   s   "€r#   r$   r  C  s1   ø€ ÷ 	ñ 	©¯©ð 	¹u¿|¹|ð 	Ñ^c×^nÑ^nñ 	r&   c                ó|   € V( pV P                  W4      pW#,          pW$,
          ^,          pVP                  4       pV# )r   )r  r  )rc   rj   rC   r5   r  rB   s   &&&&  r#   Úforward_lossÚ HieraForPreTraining.forward_lossC  s>   € à*Ð*ˆØ×'Ñ'¨ÓFˆàÕ(ˆØ• 1Õ$ˆØ�y‰y‹{ˆàˆr&   c                óÐ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[R,          RS[R,          RS[S[,          /# rÁ  )r   rl   r   rI   r    r@   )r!   r"   s   "€r#   r$   r  O  s„   ø€ ÷ W
ñ W
á—l‘l TÕ)ðW
ñ × Ñ  4Õ'ðW
ñ   $�;ð	W
ñ
 # T�kðW
ñ #'¨¥+ðW
ñ ˜D•[ðW
ñ 
Ñ*Õ	*ñW
r&   c           
     ón  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pV P	                  VVVRVVR7      pVR,          p	V^,          p
V^,          pV	^V P                  P                   P
                  ^,            V	R,          3,           p	V P                  V	4      pV P                  V4      pV P                  VV
VR7      w  rÚV P                  WV
4      pV'       g]   WÚV3pV'       d   Wø^,          3,           pV'       d   Wø^,          3,           pV'       d   WøR,          3,           pVe   V3V,           # T# \        TTT
TV'       d   VP                  MRVP                  V'       d   VP                  R7      # RR7      # )ax  
noise (`torch.FloatTensor` of shape `(batch_size, num_mask_units)`, *optional*):
    Mainly used for testing purposes to control randomness and maintain the reproducibility

Examples:
```python
>>> from transformers import AutoImageProcessor, HieraForPreTraining
>>> import torch
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/hiera-tiny-224-mae-hf")
>>> model = HieraForPreTraining.from_pretrained("facebook/hiera-tiny-224-mae-hf")

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

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> loss = outputs.loss
>>> print(list(logits.shape))
[1, 196, 768]
```NT)rz   rÖ   ro  rº   rp  )r5   rÖ   )rB   rC   r5   r6   r   r   r   r°   )rd   rp  rÖ   ro  r‡  rS  r  r  r  r  r@   r   r   r   )rc   rj   rz   rÖ   ro  rº   rp  rÅ  Úoutputsrû  r5   Úids_to_restoreÚfused_hidden_statesrC   rB   Úoutputs   &&&&&&&,        r#   r•   ÚHieraForPreTraining.forwardN  s¾  € ðL &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆØ1BÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð —*‘*ØØØ/Ø!%Ø%=Ø#ð ó 
ˆð ˜r•{ˆØ! !�*ˆØ  �ˆà# A¨¯
©
×(9Ñ(9×(HÑ(HÈ1Õ(LÐMÐQ]Ð^`ÕQaÐPcÕcˆØ"×4Ñ4°\ÓBÐØ"×/Ñ/Ð0CÓDÐð #'§,¡,ØØ+Ø/ð #/ó #
Ñˆð × Ñ  °ÓGˆçØ¨~Ð>ˆFß#Ø¨1¥: -Õ/�ß Ø¨1¥: -Õ/�ß#Ø¨2¥; .Õ0�Ø)-Ò)9�T�G˜fÕ$ÐE¸vÐEä(ØØØ+Ø&ß3G˜'×/Ò/ÈTØ×)Ñ)ßEY 7×#AÑ#Aô
ð 	
ð `dô
ð 	
r&   )r  r  r‡  r  rÚ  rÍ  )r(   r)   r*   r+   rR   r  r  r   r•   r.   r/   r™   rš   s   @@r#   r   r     sE   ù‡ € ÷ó ÷ð ÷	ð 	ð ÷W
ñ W
ó ÷W
ð W
r&   r   aæ  
    Hiera Model transformer with an image classification head on top (a linear layer on top of the final hidden state with
    average pooling) e.g. for ImageNet.

    <Tip>

        Note that it's possible to fine-tune Hiera on higher resolution images than the ones it has been trained on, by
        setting `interpolate_pos_encoding` to `True` in the forward of the model. This will interpolate the pre-trained
        position embeddings to the higher resolution.

    </Tip>
    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	# )ÚHieraForImageClassificationi©  c                ó$   <€ V ^8„  d   QhRS[ RR/# rF  r   )r!   r"   s   "€r#   r$   Ú(HieraForImageClassification.__annotate__¸  r  r&   c                óN  <€ \         SV `  V4       VP                  V n        \        VR RR7      V n        VP                  ^ 8”  d6   \
        P                  ! V P                  P                  VP                  4      M\
        P                  ! 4       V n	        V P                  4        R# )TFr  N)rQ   rR   Ú
num_labelsr²  r‡  r   rÐ   r«  r"  Ú
classifierr¸  r	  s   &&€r#   rR   Ú$HieraForImageClassification.__init__¸  s|   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ ¸$ÀuÔMˆŒ
ð FL×EVÑEVÐYZÔEZŒB�IŠI�d—j‘j×-Ñ-¨v×/@Ñ/@ÔAÔ`b×`kÒ`kÓ`mð 	Œð
 	�‰Ör&   c                ó¨   <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[R,          RS[R,          RS[R,          RS[S[,          /# )r   ÚlabelsNrÖ   ro  rº   rp  rk   )r   rl   rI   r    r<   )r!   r"   s   "€r#   r$   r$  Ç  sh   ø€ ÷ 0
ñ 0
ñ —‘˜tÕ#ð0
ñ   $�;ð	0
ñ
 # T�kð0
ñ #'¨¥+ð0
ñ ˜D•[ð0
ñ 
Ñ2Õ	2ñ0
r&   c                óü  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pV P	                  VVVVVR7      pV^,          p	V P                  V	4      p
RpVe   V P                  W*V P                   4      pV'       g"   V
3VR,          ,           pVe   V3V,           # T# \        VV
VP                  VP                  VP                  R7      # )ab  
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
N)rÖ   ro  rº   rp  rn   )rB   rC   r   r   r   )rd   rp  rÖ   ro  r‡  r'  Úloss_functionr<   r   r   r   )rc   rj   r*  rÖ   ro  rº   rp  rÅ  r  r¯  rC   rB   r  s   &&&&&&&,     r#   r•   Ú#HieraForImageClassification.forwardÆ  s  € ð" &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆØ1BÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð —*‘*ØØ/Ø!5Ø%=Ø#ð ó 
ˆð   �
ˆà—‘ Ó/ˆàˆØÒØ×%Ñ% f°d·k±kÓBˆDçØ�Y ¨¥Õ,ˆFØ)-Ò)9�T�G˜fÕ$ÐE¸vÐEä0ØØØ!×/Ñ/Ø×)Ñ)Ø#*×#AÑ#Aô
ð 	
r&   )r'  r‡  r&  )NNNNN)
r(   r)   r*   r+   rR   r   r•   r.   r/   r™   rš   s   @@r#   r"  r"  ©  s-   ù‡ € ÷ó ð ÷0
ñ 0
ó ÷0
ð 0
r&   r"  zN
    Hiera backbone, to be used with frameworks like DETR and MaskFormer.
    c                   ón   a a€ ] tR tRt oV3R lV 3R lltR t]]RV3R lR ll4       4       tRt	Vt
V ;t# )	ÚHieraBackboneiú  c                ó    <€ V ^8„  d   QhRS[ /# rœ  r   )r!   r"   s   "€r#   r$   ÚHieraBackbone.__annotate__   s   ø€ ÷ ñ ™{ñ r&   c           	     ó0  <€ \         SV `  V4       VP                  .\        \	        VP
                  4      4       Uu. uF0  p\        VP                  VP                  V,          ,          4      NK2  	  up,           V n        \        VR R7      V n
        \        V4      V n        / p\        V P                  V P                  4       F  w  rE\         P"                  ! V4      W4&   K  	  \         P$                  ! V4      V n        V P)                  4        R# u upi )Fr¡   N)rQ   rR   r`   r4  rS   rL  rƒ   rU  r«  rœ   r”   rD  r·  rY   Úout_featuresÚchannelsr   r  Ú
ModuleDictÚhidden_states_normsr¸  )rc   rd   re   r6  rc  rW   rg   s   &&    €r#   rR   ÚHieraBackbone.__init__   sã   ø€ Ü‰Ñ˜Ô à#×-Ñ-Ð.ÜLQÔRUÐV\×VcÑVcÓRdÔLeó2
ÙLeÀqŒC�× Ñ  6×#>Ñ#>ÀÕ#AÕAÖBÑLeñ2
õ 
ˆÔô *¨&¸Ô?ˆŒÜ# FÓ+ˆŒð !ÐÜ#& t×'8Ñ'8¸$¿-¹-Ö#HÑˆEÜ)+¯ª°lÓ)CÐÓ&ñ $Iä#%§=¢=Ð1DÓ#EˆÔ ð 	�‰Öùò2
s   ½6Dc                ó.   € V P                   P                  # r˜   r¼  r  s   &r#   r½  Ú"HieraBackbone.get_input_embeddings  r¿  r&   c          
      óv   <€ V ^8„  d   QhRS[ P                  RS[R,          RS[R,          RS[R,          RS[/# )r   rj   ro  NrÖ   rp  rk   )r   rl   rI   r	   )r!   r"   s   "€r#   r$   r1    sT   ø€ ÷ J
ñ J
á—l‘lðJ
ñ # T�kðJ
ñ   $�;ð	J
ñ
 ˜D•[ðJ
ñ 
ñJ
r&   c                ó^  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pV P	                  V4      w  p pV P                  VVRVR7      pVR,          p	Rp
\        V P                  V	4       F—  w  r¼W°P                  9   g   K  VP                  w  rÞppVP                  WÞV,          V4      pV P                  V,          ! V4      pVP                  WÞVV4      pVP                  ^ ^^^4      P                  4       pW¬3,          p
K™  	  V'       g8   V
3pV'       d   VV^,          3,          pV'       d   VV^,          3,          pV# \        T
V'       d
   V^,          MRV'       d   V^,          R7      # RR7      # )aè  
Returns:

Examples:

```python
>>> from transformers import AutoImageProcessor, AutoBackbone
>>> import torch
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO

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

>>> processor = AutoImageProcessor.from_pretrained("facebook/hiera-tiny-224-hf")
>>> model = AutoBackbone.from_pretrained(
...     "facebook/hiera-tiny-224-hf", out_features=["stage1", "stage2", "stage3", "stage4"]
... )

>>> inputs = processor(image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 768, 7, 7]
```NT)rÖ   ro  rp  )rû  r   r   r°   r'   )rd   rp  ro  rÖ   r”   r·  rY   Ústage_namesr3  rp   rq   r6  r´   Ú
contiguousr	   )rc   rj   ro  rÖ   rp  rÅ  rÆ  rÞ   r  r   rû  rc  Úhidden_stater‰   r©   rª   rW   r  s   &&&&&,            r#   r•   ÚHieraBackbone.forward  s¤  € ðJ &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà!%§¡°Ó!>ÑÐ˜!˜Qà—,‘,ØØ/Ø!%Ø#ð	 ó 
ˆð   �ˆàˆÜ#& t×'7Ñ'7¸Ö#GÑˆEØ×)Ñ)Ö)Ø:F×:LÑ:LÑ7�
 E¨<Ø+×0Ñ0°Àe½^È\ÓZ�Ø#×7Ñ7¸Ö>¸|ÓL�Ø+×0Ñ0°ÀUÈLÓY�Ø+×3Ñ3°A°q¸!¸QÓ?×JÑJÓL�Ø Õ/’ñ $H÷ Ø"�_ˆFß#Ø˜7 1�:˜-Õ'�ß Ø˜7 1�:˜-Õ'�ØˆMäØ%ß(<˜' !ž*À$ß%6�w˜q•zô
ð 	
ð =Aô
ð 	
r&   )r”   r·  r6  r«  )NNN)r(   r)   r*   r+   rR   r½  r   r   r•   r.   r/   r™   rš   s   @@r#   r/  r/  ú  s>   ù‡ € ÷ó ò$0ð Ø ÷J
ñ J
ó !ó ÷J
ð J
r&   r/  )r"  r   r/  r²  r†  );r,   r�   Údataclassesr   r   r   Ú r   r�  Úactivationsr   Úbackbone_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr	   r
   r   r   r   Úmodeling_utilsr   Úutilsr   r   r   Úutils.genericr   Úconfiguration_hierar   Ú
get_loggerr(   Úloggerr   r2   r<   r@   rô  rF   rœ   rÄ   rè   rù   r  r+  rB  rD  r„  r†  r¤  r²  r‘  rè  r   r"  r/  Ú__all__r'   r&   r#   Ú<module>rM     s¨  ðñ ã Ý !ã Ý å &Ý !ß HÝ 9÷õ õ .ß 7Ñ 7Ý -Ý ,ð 
×	Ò	˜HÓ	%€ñ ðôð
 ôH˜ó Hó óðHñ  ðôð
 ôH�{ó Hó óðHñ2 ðôð
 ô
HÐ(=ó 
Hó óð
Hñ ðôð
 ôC ó Có óðCô2[8˜2Ÿ9™9ô [8ô|I8�b—i‘iô I8ôX<Y˜RŸY™Yô <Yô~ˆr�y‰yô ô%�B—I‘Iô %ô0:-�—‘ô :-ôz,+Ð+ô ,+õ^ô4J
�2—9‘9ô J
õZ3ðl ôG˜?ó Gó ðGô<�"—)‘)ô ð ô_
Ð%ó _
ó ð_
ôDc.�2—9‘9ô c.ôL5˜"Ÿ)™)ô 5ñp ð	ôôA
Ð.ó A
óðA
ñH ðôô@
Ð"6ó @
óð@
ñF ðôô
b
�MÐ#7ó b
óð
b
òJ x‚r&   