+
    œ°³j1n  ã                   ó  € ^ RI t ^ RIt^ RIHt ^ RIt^ RIHt ^ RIHu Ht	 ^RI
Ht ^RIHt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HtHt ^RIH t  ^RI!H"t" ^RI#H$t$H%t%  ! R R]PL                  4      t' ! R R]PL                  4      t( ! R R]PL                  4      t) ! R R]4      t* ! R R]PL                  4      t+ ! R R]4      t,]! RR7      ] ! R R]4      4       4       t- ! R R]PL                  4      t. ! R  R!]P^                  4      t0 ! R" R#]PL                  4      t1 ! R$ R%]*4      t2 ! R& R']*4      t3 ! R( R)]*4      t4]] ! R* R+]4      4       4       t5]! R,R7       ! R- R.]*4      4       t6. R/Ot7R# )0é    N)Ú	dataclass)Úinitialization)ÚACT2CLSÚACT2FN)Úfilter_output_hidden_states)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚModelOutput)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmerge_with_config_defaults)Úcapture_outputs)ÚSLANeXtConfigÚSLANeXtVisionConfigc                   óp   a a€ ] tR t^+t oRtV 3R 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# )ÚSLANeXtVisionAttentionz=Multi-head Attention block with relative position embeddings.c                ó¨  <€ \         SV `  4        V^ 8X  d;   VP                  VP                  ,          VP                  VP                  ,          3MW"3pVP                  V n        VP
                  VP                  ,          pVR,          V n        VP                  V n        \        P                  ! VP
                  VP
                  ^,          VP                  R7      V n        \        P                  ! VP
                  VP
                  4      V n        VP                  V n        V P                  '       dœ   Vf   \        R4      h\        P                   ! \"        P$                  ! ^V^ ,          ,          ^,
          V4      4      V n        \        P                   ! \"        P$                  ! ^V^,          ,          ^,
          V4      4      V n        R# R# )r   ©ÚbiasNzBInput size must be provided if using relative positional encoding.g      à¿)ÚsuperÚ__init__Ú
image_sizeÚ
patch_sizeÚnum_attention_headsÚhidden_sizeÚscaleÚattention_dropoutÚdropoutÚnnÚLinearÚqkv_biasÚqkvÚprojÚuse_rel_posÚ
ValueErrorÚ	ParameterÚtorchÚzerosÚ	rel_pos_hÚ	rel_pos_w)ÚselfÚconfigÚwindow_sizeÚ
input_sizeÚhead_dimÚ	__class__s   &&&  €Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/slanext/modeling_slanext.pyr   ÚSLANeXtVisionAttention.__init__.   sY  ø€ Ü‰ÑÔð ˜aÔð ×Ñ &×"3Ñ"3Õ3°V×5FÑ5FÈ&×J[ÑJ[Õ5[Ñ\àÐ+ð 	ð $*×#=Ñ#=ˆÔ Ø×%Ñ%¨×)CÑ)CÕCˆØ˜t•^ˆŒ
Ø×/Ñ/ˆŒä—9’9˜V×/Ñ/°×1CÑ1CÀaÕ1GÈfÏoÉoÔ^ˆŒÜ—I’I˜f×0Ñ0°&×2DÑ2DÓEˆŒ	à!×-Ñ-ˆÔØ××ÐØÒ!Ü Ð!eÓfÐfô  Ÿ\š\¬%¯+ª+°a¸*ÀQ½-Õ6GÈ!Õ6KÈXÓ*VÓWˆDŒNÜŸ\š\¬%¯+ª+°a¸*ÀQ½-Õ6GÈ!Õ6KÈXÓ*VÓWˆDŽNñ ó    c                óZ   <€ V ^8„  d   QhRS[ RS[ RS[P                  RS[P                  /# )é   Úq_sizeÚk_sizeÚrel_posÚreturn)Úintr*   ÚTensor)ÚformatÚ__classdict__s   "€r4   Ú__annotate__Ú#SLANeXtVisionAttention.__annotate__G   s1   ø€ ÷ 7ñ 7¡#ð 7©sð 7¹U¿\¹\ð 7ÉeÏlÉlñ 7r6   c                óv  € \        ^\        W4      ,          ^,
          4      p\        P                  ! VP	                  ^VP
                  ^ ,          R4      P                  ^^4      VRR7      pVP	                  RV4      P                  ^^ 4      p\        P                  ! V4      R,          \        W!,          R4      ,          p\        P                  ! V4      R,          \        W,          R4      ,          pWg,
          V^,
          \        W,          R4      ,          ,           pWXP                  4       ,          # )aa  
Get relative positional embeddings according to the relative positions of
    query and key sizes.

Args:
    q_size (int):
        size of the query.
    k_size (int):
        size of key k.
    rel_pos (`torch.Tensor`):
        relative position embeddings (L, channel).

Returns:
    Extracted positional embeddings according to relative positions.
Úlinear)ÚsizeÚmodeç      ð?éÿÿÿÿ)ºNNNN)NrI   )r=   ÚmaxÚFÚinterpolateÚreshapeÚshapeÚ	transposeÚpermuter*   ÚarangeÚlong)	r.   r9   r:   r;   Úmax_rel_distÚrel_pos_resizedÚq_coordsÚk_coordsÚrelative_coordss	   &&&&     r4   Úget_rel_posÚ"SLANeXtVisionAttention.get_rel_posG   sî   € ô  ˜1œs 6Ó2Õ2°QÕ6Ó7ˆäŸ-š-Ø�O‰O˜A˜wŸ}™}¨QÕ/°Ó4×>Ñ>¸qÀ!ÓDØØô
ˆð
 *×1Ñ1°"°lÓC×KÑKÈAÈqÓQˆô —<’< Ó'¨Õ0´3°vµÈÓ3LÕLˆÜ—<’< Ó'¨Õ0´3°vµÈÓ3LÕLˆØ#Õ.°6¸Aµ:ÄÀVÅ_ÐVYÓAZÕ2ZÕZˆà×3Ñ3Ó5Õ6Ð6r6   c                óº   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[S[S[3,          RS[S[S[3,          RS[ P                  /# )r8   Úqueryr,   r-   r9   r:   r<   )r*   r>   Útupler=   )r?   r@   s   "€r4   rA   rB   g   sg   ø€ ÷ ("ñ ("á�|‰|ð("ñ —<‘<ð("ñ —<‘<ð	("ñ
 ‘c™3�h•ð("ñ ‘c™3�h•ð("ñ 
�‰ñ("r6   c                ó*  € Vw  rgVw  r‰V P                  WhV4      p
V P                  WyV4      pVP                  w  rÍpVP                  WÆW~4      p\        P                  ! RWú4      p\        P                  ! RWû4      pVR,          VR,          ,           pV# )a&  
Calculate decomposed Relative Positional Embeddings from :paper:`mvitv2`.
https://github.com/facebookresearch/mvit/blob/19786631e330df9f3622e5402b4a419a263a2c80/mvit/models/attention.py

Args:
    query (`torch.Tensor`):
        query q in the attention layer with shape (batch_size, query_height * query_width, channel).
    rel_pos_h (`torch.Tensor`):
        relative position embeddings (Lh, channel) for height axis.
    rel_pos_w (`torch.Tensor`):
        relative position embeddings (Lw, channel) for width axis.
    q_size (tuple):
        spatial sequence size of query q with (query_height, query_width).
    k_size (tuple):
        spatial sequence size of key k with (key_height, key_width).

Returns:
    decomposed_rel_pos (`torch.Tensor`):
        decomposed relative position embeddings.
zbhwc,hkc->bhwkzbhwc,wkc->bhwk)rI   rI   rI   rI   N)rI   rI   rI   NrI   )rX   rN   rM   r*   Úeinsum)r.   r[   r,   r-   r9   r:   Úquery_heightÚquery_widthÚ
key_heightÚ	key_widthÚrelative_position_heightÚrelative_position_widthÚ
batch_sizeÚ_ÚdimÚreshaped_queryÚrel_hÚrel_wÚdecomposed_rel_poss   &&&&&&             r4   Úget_decomposed_rel_posÚ-SLANeXtVisionAttention.get_decomposed_rel_posg   s—   € ð8 %+Ñ!ˆØ &Ñˆ
Ø#'×#3Ñ#3°LÈiÓ#XÐ Ø"&×"2Ñ"2°;È9Ó"UÐà"Ÿ[™[Ñˆ
�sØŸ™ zÀÓRˆÜ—’Ð-¨~ÓXˆÜ—’Ð-¨~ÓWˆà"Ð#3Õ4°uÐ=MÕ7NÕNÐà!Ð!r6   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          /# ©r8   Úhidden_statesr<   )r*   r>   r\   )r?   r@   s   "€r4   rA   rB   ‘   s7   ø€ ÷ )ñ )¡U§\¡\ð )ÉeÑTY×T`ÑT`Ñbg×bnÑbnÐTnÕNoñ )r6   c                óì  € VP                   w  r4rVV P                  V4      P                  W4V,          ^V P                  R4      P	                  ^^ ^^^4      pVP                  ^W0P                  ,          WE,          R4      P                  ^ 4      w  r‰p
W€P                  ,          V	P                  RR4      ,          pV P                  '       dD   V P                  W€P                  V P                  WE3WE34      pVP                  V4      pW¼,           p\        P                  P                  P!                  V\        P"                  RR7      P%                  VP&                  4      p\        P                  P)                  W°P(                  V P*                  R7      pWÚ,          P                  W0P                  WER4      pVP	                  ^ ^^^^4      P                  W4VR4      pV P-                  V4      pWë3# )é   )Údtyperg   )ÚpÚtrainingrH   éþÿÿÿ)rN   r%   rM   r   rP   Úunbindr   rO   r'   rl   r,   r-   Ú
reshape_asr*   r"   Ú
functionalÚsoftmaxÚfloat32Útors   r!   ru   r&   )r.   rp   Úoutput_attentionsre   ÚheightÚwidthrf   r%   r[   ÚkeyÚvalueÚattn_weightsrk   Ú
attn_probsÚattn_outputs   &&&            r4   ÚforwardÚSLANeXtVisionAttention.forward‘   sª  € Ø'4×':Ñ':Ñ$ˆ
˜Eð �H‰H�]Ó#ß‰W�Z¨%¥°°D×4LÑ4LÈbÓQß‰W�Q˜˜1˜a Ó#ð 	ð  ŸK™K¨¨:×8PÑ8PÕ+PÐRXÕR`ÐbdÓe×lÑlÐmnÓoÑˆ�Eà§
¡
Õ*¨c¯m©m¸BÀÓ.CÕCˆà××ÐØ!%×!<Ñ!<Ø—~‘~ t§~¡~¸°ÈÈó"Ðð "4×!>Ñ!>¸|Ó!LÐØ'Õ<ˆLä—x‘x×*Ñ*×2Ñ2°<ÄuÇ}Á}ÐZ\Ð2Ó]×`Ñ`Ðaf×alÑalÓmˆä—]‘]×*Ñ*¨<¿<¹<ÐRV×R_ÑR_Ð*Ó`ˆ
à!Õ)×2Ñ2°:×?WÑ?WÐY_ÐhjÓkˆØ!×)Ñ)¨!¨Q°°1°aÓ8×@Ñ@ÀÐUZÐ\^Ó_ˆà—i‘i Ó,ˆØÐ(Ð(r6   )r!   r   r&   r%   r,   r-   r   r'   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   rX   rl   r…   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r3   r@   s   @@r4   r   r   +   s3   ù‡ € ÙGõX÷27ð 7÷@("ð ("÷T)÷ )ò )r6   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# )ÚSLANeXtAttentionGRUCellc                ó  <€ \         SV `  4        \        P                  ! WR R7      V n        \        P                  ! W"4      V n        \        P                  ! V^R R7      V n        \        P                  ! W,           V4      V n        R# )Fr   N)	r   r   r"   r#   Úinput_to_hiddenÚhidden_to_hiddenÚscoreÚGRUCellÚrnn)r.   r1   r   Únum_embeddingsr3   s   &&&&€r4   r   Ú SLANeXtAttentionGRUCell.__init__±   s[   ø€ Ü‰ÑÔä!Ÿyšy¨ÀuÔMˆÔÜ "§	¢	¨+Ó CˆÔÜ—Y’Y˜{¨A°EÔ:ˆŒ
ä—:’:˜jÕ9¸;ÓGˆŽr6   c          	      ó~   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[S[,          /# )r8   Úprev_hiddenÚbatch_hiddenÚchar_onehotsÚkwargs)r*   ÚFloatTensorr   r   )r?   r@   s   "€r4   rA   Ú$SLANeXtAttentionGRUCell.__annotate__º   sK   ø€ ÷ +ñ +á×&Ñ&ð+ñ ×'Ñ'ð+ñ ×'Ñ'ð	+ñ
 Ñ+Õ,ñ+r6   c                ó  € V P                  V4      pV P                  V4      P                  ^4      pWV,           p\        P                  ! V4      pV P                  V4      p\        P                  ! V^\        P                  R7      P                  VP                  4      pVP                  ^^4      p\        P                  ! W‚4      P                  ^4      p	\        P                  ! W“.^4      p
V P                  W¡4      pW¸3# )é   ©rg   rs   )r”   r•   Ú	unsqueezer*   Útanhr–   rK   rz   r{   r|   rs   rO   ÚmatmulÚsqueezeÚcatr˜   )r.   rœ   r�   rž   rŸ   Úbatch_hidden_projÚprev_hidden_projÚattention_scoresr‚   ÚcontextÚconcat_contextrp   s   &&&&,       r4   r…   ÚSLANeXtAttentionGRUCell.forwardº   sØ   € ð !×0Ñ0°Ó>ÐØ×0Ñ0°Ó=×GÑGÈÓJÐà,Õ?ÐÜ Ÿ:š:Ð&6Ó7ÐØŸ:™:Ð&6Ó7Ðä—y’yÐ!1°qÄÇÁÔN×QÑQÐRb×RhÑRhÓiˆØ#×-Ñ-¨a°Ó3ˆÜ—,’,˜|Ó:×BÑBÀ1ÓEˆÜŸš GÐ#:¸AÓ>ˆØŸ™ Ó=ˆàÐ*Ð*r6   )r•   r”   r˜   r–   ©	rˆ   r‰   rŠ   r‹   r   r…   r�   rŽ   r�   r�   s   @@r4   r’   r’   °   s   ù‡ € õH÷+÷ +ð +r6   r’   c                   ó<   a a€ ] tR t^Ñt oRV 3R lltR tRtVtV ;t# )Ú
SLANeXtMLPc                óþ   <€ \         SV `  4        \        P                  ! W4      V n        \        P                  ! W4      V n        Vf   \        P                  ! 4       V n        R # \        V,          ! 4       V n        R # r‡   )	r   r   r"   r#   Úfc1Úfc2ÚIdentityr   Úact_fn)r.   r   Úout_channelsÚ
activationr3   s   &&&&€r4   r   ÚSLANeXtMLP.__init__Ò   sN   ø€ Ü‰ÑÔÜ—9’9˜[Ó6ˆŒÜ—9’9˜[Ó7ˆŒØ'1Ò'9”b—k’k“mˆŽ¼wÀzÖ?RÓ?TˆŽr6   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r‡   )r´   rµ   r·   ©r.   rp   s   &&r4   r…   ÚSLANeXtMLP.forwardØ   s2   € ØŸ™ Ó/ˆØŸ™ Ó/ˆØŸ™ MÓ2ˆØÐr6   )r·   r´   rµ   r‡   r°   r�   s   @@r4   r²   r²   Ñ   s   ù‡ € ÷U÷ò r6   r²   c                   ó~   a a€ ] tR t^ßt oRtRtR	tRtRR.t]	P                  ! 4       V 3R l4       tV3R ltRtVtV ;t# )
ÚSLANeXtPreTrainedModelÚbackboneÚpixel_valuesTÚstructure_attention_cellÚstructure_generatorc                ón  <€ \         SV `  V4       \        V\        4      '       d0   VP                  e"   \
        P                  ! VP                  R4       \        V\        4      '       dU   VP                  '       dC   \
        P                  ! VP                  R4       \
        P                  ! VP                  R4       \        V\        P                  4      '       dã   VP                  ^ 8”  d(   R\        P                  ! VP                  4      ,          M^ p\
        P                   ! VP"                  V) V4       \
        P                   ! VP$                  V) V4       VP&                  e$   \
        P                   ! VP&                  V) V4       VP(                  e$   \
        P                   ! VP(                  V) V4       \        V\*        4      '       dÞ   R\        P                  ! V P,                  P                  R,          4      ,          pVP.                  3 F’  pVP1                  4        F{  p\        V\        P2                  4      '       g   K%  \
        P                   ! VP4                  V) V4       VP6                  f   KX  \
        P                   ! VP6                  V) V4       K}  	  K”  	  R# R# )zInitialize the weightsNg        rG   )r   Ú_init_weightsÚ
isinstanceÚSLANeXtVisionEncoderÚ	pos_embedÚinitÚ	constant_r   r'   r,   r-   r"   r—   r   ÚmathÚsqrtÚuniform_Ú	weight_ihÚ	weight_hhÚbias_ihÚbias_hhÚSLANeXtSLAHeadr/   rÃ   Úchildrenr#   Úweightr   )r.   ÚmoduleÚstdÚ	generatorÚlayerr3   s   &&   €r4   rÅ   Ú$SLANeXtPreTrainedModel._init_weightsç   sÕ  ø€ ô 	‰Ñ˜fÔ%ô �fÔ2×3Ò3Ø×ÑÒ+Ü—’˜v×/Ñ/°Ô5ô �fÔ4×5Ò5Ø×!×!Ð!Ü—’˜v×/Ñ/°Ô5Ü—’˜v×/Ñ/°Ô5ô �fœbŸj™j×)Ò)Ø9?×9KÑ9KÈaÔ9O�#œŸ	š	 &×"4Ñ"4Ó5Ö5ÐUVˆCÜ�MŠM˜&×*Ñ*¨S¨D°#Ô6Ü�MŠM˜&×*Ñ*¨S¨D°#Ô6Ø�~‰~Ò)Ü—’˜fŸn™n¨s¨d°CÔ8Ø�~‰~Ò)Ü—’˜fŸn™n¨s¨d°CÔ8ô �fœn×-Ò-ØœŸ	š	 $§+¡+×"9Ñ"9¸CÕ"?Ó@Õ@ˆCà$×8Ñ8Ó:�	Ø&×/Ñ/Ö1�EÜ! %¬¯©×3Ô3ÜŸš e§l¡l°S°D¸#Ô>Ø Ÿ:™:Ô1Ü ŸMšM¨%¯*©*°s°d¸CÖ@ó	 2ó ;ñ .r6   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ©r8   r/   ©r   )r?   r@   s   "€r4   rA   Ú#SLANeXtPreTrainedModel.__annotate__ß   s   ø‡ ‚ ÙÑò r6   © ©Úimage)rˆ   r‰   rŠ   r‹   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_keep_in_fp32_modules_strictr*   Úno_gradrÅ   Ú__annotate_func__r�   rŽ   r�   r�   s   @@r4   r¿   r¿   ß   sI   ù‡ € à"ÐØ$€OØ!ÐØ&*Ð#Ø$>Ð@UÐ#VÐ à
‡]‚]ƒ_ô"Aó ð"A÷ … r6   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# )ÚSLANeXtMLPBlocki  c                ó  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP
                  VP                  4      V n        \        VP                  ,          V n
        R # r‡   )r   r   r"   r#   r   Úmlp_dimÚlin1Úlin2r   Ú
hidden_actÚact©r.   r/   r3   s   &&€r4   r   ÚSLANeXtMLPBlock.__init__  sX   ø€ Ü‰ÑÔÜ—I’I˜f×0Ñ0°&·.±.ÓAˆŒ	Ü—I’I˜fŸn™n¨f×.@Ñ.@ÓAˆŒ	Ü˜&×+Ñ+Õ,ˆŽr6   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ro   ©r*   r>   )r?   r@   s   "€r4   rA   ÚSLANeXtMLPBlock.__annotate__  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r6   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r‡   )rì   rï   rí   r¼   s   &&r4   r…   ÚSLANeXtMLPBlock.forward  s2   € ØŸ	™	 -Ó0ˆØŸ™ Ó/ˆØŸ	™	 -Ó0ˆØÐr6   )rï   rì   rí   r°   r�   s   @@r4   ré   ré     s   ù‡ € õ-÷÷ ð r6   ré   c                   óh   a a€ ] tR tRt oV 3R ltV3R lR ltV3R lR ltV3R lR ltR	tVt	V ;t
# )
ÚSLANeXtVisionLayeri  c                ó4  <€ \         SV `  4        \        P                  ! VP                  VP
                  R 7      V n        \        W4      V n        \        P                  ! VP                  VP
                  R 7      V n	        \        V4      V n        W n        R# ))ÚepsN)r   r   r"   Ú	LayerNormr   Úlayer_norm_epsÚlayer_norm1r   ÚattnÚlayer_norm2ré   Úmlpr0   )r.   r/   r0   r3   s   &&&€r4   r   ÚSLANeXtVisionLayer.__init__  sj   ø€ Ü‰ÑÔÜŸ<š<¨×(:Ñ(:À×@UÑ@UÔVˆÔÜ*¨6Ó?ˆŒ	ÜŸ<š<¨×(:Ñ(:À×@UÑ@UÔVˆÔÜ" 6Ó*ˆŒØ&Ör6   c          
      ó€   <€ V ^8„  d   QhRS[ P                  RS[RS[S[ P                  S[S[S[3,          3,          /# )r8   rp   r0   r<   ©r*   r>   r=   r\   )r?   r@   s   "€r4   rA   ÚSLANeXtVisionLayer.__annotate__$  sE   ø€ ÷ 0ñ 0©e¯l©lð 0Éð 0ÑQVÑW\×WcÑWcÑejÑknÑpsÐksÕetÐWtÕQuñ 0r6   c           	     ó†  € VP                   w  r4rVW$V,          ,
          V,          pW%V,          ,
          V,          p\        P                  ! V^ ^ ^ V^ V34      pWG,           WX,           r©VP                  W9V,          W*V,          W&4      pVP	                  ^ ^^^^^4      P                  4       P                  RW"V4      pW¹V
33# )aw  
Args:
Partition into non-overlapping windows with padding if needed.
    hidden_states (tensor): input tokens with [batch_size, height, width, channel]. window_size (int): window
    size.

Returns:
    windows: windows after partition with [batch_size * num_windows, window_size, window_size, channel].
    (pad_height, pad_width): padded height and width before partition
rH   )rN   rK   ÚpadrM   rP   Ú
contiguous)r.   rp   r0   re   r~   r   ÚchannelÚpad_hÚpad_wÚ
pad_heightÚ	pad_widthÚwindowss   &&&         r4   Úwindow_partitionÚ#SLANeXtVisionLayer.window_partition$  sÆ   € ð .;×-@Ñ-@Ñ*ˆ
˜Eà¨Õ3Õ3°{ÕBˆØ {Õ2Õ2°kÕAˆÜŸš˜m¨a°°A°u¸aÀÐ-GÓHˆØ &¥°µ�Ià%×-Ñ-Ø kÕ1°;È[Õ@XÐZeó
ˆð  ×'Ñ'¨¨1¨a°°A°qÓ9×DÑDÓF×NÑNÈrÐS^ÐmtÓuˆØ YÐ/Ð/Ð/r6   c          
      óŒ   <€ V ^8„  d   QhRS[ P                  RS[RS[S[S[3,          RS[S[S[3,          RS[ P                  /# )r8   r  r0   Úpadding_shapeÚoriginal_shaper<   r  )r?   r@   s   "€r4   rA   r  <  sR   ø€ ÷ ñ Ù—|‘|ðÙ25ðÙFKÉCÑQTÈHÅoðÙglÑmpÑruÐmuÕgvðá	�‰ñr6   c                ó\  € Vw  rVVw  rxVP                   ^ ,          WV,          V,          V,          ,          p	VP                  W•V,          Wb,          W"R4      p
V
P                  ^ ^^^^^4      P                  4       P                  W•VR4      p
V
RRV1RV1R3,          P                  4       p
V
# )aó  
Args:
Window unpartition into original sequences and removing padding.
    hidden_states (tensor):
        input tokens with [batch_size * num_windows, window_size, window_size, channel].
    window_size (int):
        window size.
    padding_shape (Tuple):
        padded height and width (pad_height, pad_width).
    original_shape (Tuple): original height and width (height, width) before padding.

Returns:
    hidden_states: unpartitioned sequences with [batch_size, height, width, channel].
rI   NrH   )rN   rM   rP   r  )r.   r  r0   r  r  r  r  r~   r   re   rp   s   &&&&&      r4   Úwindow_unpartitionÚ%SLANeXtVisionLayer.window_unpartition<  s¹   € ð" !.Ñˆ
Ø&‰ˆØ—]‘] 1Õ%¨*Õ*@ÀKÕ*OÐS^Õ*^Õ_ˆ
ØŸ™Ø kÕ1°9Õ3KÈ[Ðgió
ˆð ×!Ñ! ! Q¨¨1¨a°Ó3×>Ñ>Ó@×HÑHÈÐajÐlnÓoð 	ð & a¨¨&¨°&°5°&¸!Ð&;Õ<×GÑGÓIˆØÐr6   c                ó^   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          /# ro   )r*   r>   r\   r    )r?   r@   s   "€r4   rA   r  Z  s*   ø€ ÷ ñ ¡U§\¡\ð ±e¹E×<MÑ<MÕ6Nñ r6   c                óº  € TpV P                  V4      pV P                  ^ 8”  dC   VP                  ^,          VP                  ^,          rCV P                  WP                  4      w  rV P	                  VR7      w  rV P                  ^ 8”  d    V P                  WP                  XXX34      pW!,           pV P                  V4      pWP                  V4      ,           pV# )r   )rp   )rý   r0   rN   r  rþ   r  rÿ   r   )r.   rp   Úresidualr~   r   r  r‚   Úlayernorm_outputs   &&      r4   r…   ÚSLANeXtVisionLayer.forwardZ  s×   € Ø ˆØ×(Ñ(¨Ó7ˆà×Ñ˜aÔØ)×/Ñ/°Õ2°M×4GÑ4GÈÕ4J�EØ+/×+@Ñ+@À×P`ÑP`Ó+aÑ(ˆMà&*§i¡iØ'ð '0ó '
Ñ#ˆð ×Ñ˜aÔØ ×3Ñ3°M×CSÑCSÐUbÐekÐmrÐdsÓtˆMà Õ0ˆØ×+Ñ+¨MÓ:ÐØ%¯©Ð1AÓ(BÕBˆØÐr6   )rþ   rý   rÿ   r   r0   )rˆ   r‰   rŠ   r‹   r   r  r  r…   r�   rŽ   r�   r�   s   @@r4   rø   rø     s-   ù‡ € õ'÷0ð 0÷0ð ÷<÷ ð r6   rø   zŸ
    Base class for slanext vision model's outputs that also contains image embeddings obtained by applying the projection
    layer to the pooler_output.
    )Úcustom_introc                   ó@   a € ] tR tRt o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚSLANeXtVisionEncoderOutputio  zì
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&   # )r8   NÚimage_embedsÚlast_hidden_state.rp   Ú
attentions)r*   r    r\   )r?   r@   s   "€r4   rA   Ú'SLANeXtVisionEncoderOutput.__annotate__o  sy   ø‡ ‚ ñ ×#Ñ# dÕ*Ñ1ñ ñ ×(Ñ(¨4Õ/Ñ6ñ ñ ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ ñ  ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò! r6   rÞ   )rˆ   r‰   rŠ   r‹   rŒ   r  r   rp   r!  rç   r�   rŽ   ©r@   s   @r4   r  r  o  s(   ø‡ € ñð
 .2€LØ26ÐØ:>€MØ7;€J÷! ƒ r6   r  c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )ÚSLANeXtPatchEmbeddingsi‚  zÜ
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                ó  <€ \         SV `  4        VP                  VP                  r2VP                  VP
                  rT\        V\        P                  P                  4      '       d   TMW"3p\        V\        P                  P                  4      '       d   TMW33pV^,          V^,          ,          V^ ,          V^ ,          ,          ,          pW n        W0n        W@n        W`n
        \        P                  ! WEW3R7      V n        R# )r£   )Úkernel_sizeÚstrideN)r   r   r   r   Únum_channelsr   rÆ   ÚcollectionsÚabcÚIterableÚnum_patchesr"   ÚConv2dÚ
projection)r.   r/   r   r   r)  r   r-  r3   s   &&     €r4   r   ÚSLANeXtPatchEmbeddings.__init__‰  sÃ   ø€ Ü‰ÑÔØ!'×!2Ñ!2°F×4EÑ4E�JØ$*×$7Ñ$7¸×9KÑ9K�kÜ#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ü#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ø! !•}¨
°1­Õ5¸*ÀQ½-È:ÐVWÍ=Õ:XÕYˆØ$ŒØ$ŒØ(ÔØ&ÔäŸ)š) LÈ:ÔiˆŽr6   c                óp  € VP                   w  r#rEW0P                  8w  d   \        R 4      hW@P                  ^ ,          8w  g   WPP                  ^,          8w  d;   \        RV RV RV P                  ^ ,           RV P                  ^,           R2	4      hV P	                  V4      P                  ^ ^^^4      pV# )zeMake sure that the channel dimension of the pixel values match with the one set in the configuration.zInput image size (Ú*z) doesn't match model (z).)rN   r)  r(   r   r/  rP   )r.   rÁ   re   r)  r~   r   Ú
embeddingss   &&     r4   r…   ÚSLANeXtPatchEmbeddings.forward—  s»   € Ø2>×2DÑ2DÑ/ˆ
 &Ø×,Ñ,Ô,ÜØwóð ð —_‘_ QÕ'Ô'¨5·O±OÀAÕ4FÔ+FÜØ$ V H¨A¨e¨WÐ4KÈDÏOÉOÐ\]ÕL^ÐK_Ð_`Ðae×apÑapÐqrÕasÐ`tÐtvÐwóð ð —_‘_ \Ó2×:Ñ:¸1¸aÀÀAÓFˆ
ØÐr6   )r   r)  r-  r   r/  ©
rˆ   r‰   rŠ   r‹   rŒ   r   r…   r�   rŽ   r�   r�   s   @@r4   r%  r%  ‚  s   ù‡ € ñõj÷ò r6   r%  c                   óZ   a a€ ] tR tRt oRtRRRR/V 3R lltV3R lV 3R	 lltR
tVtV ;t	# )ÚSLANeXtLayerNormi¥  a5  LayerNorm that supports two data formats: channels_last (default) or channels_first.
The ordering of the dimensions in the inputs. channels_last corresponds to inputs with shape (batch_size, height,
width, channels) while channels_first corresponds to inputs with shape (batch_size, channels, height, width).
rú   g�íµ ÷Æ°>Údata_formatÚchannels_lastc               ód   <€ \         SV `  ! V3R V/VB  VR9  d   \        RV 24      hW0n        R# )rú   zUnsupported data format: N)r9  Úchannels_first)r   r   ÚNotImplementedErrorr8  )r.   Únormalized_shaperú   r8  rŸ   r3   s   &&$$,€r4   r   ÚSLANeXtLayerNorm.__init__«  s=   ø€ Ü‰ÒÐ)Ñ=¨sÐ=°fÒ=ØÐAÔAÜ%Ð(AÀ+ÀÐ&OÓPÐPØ&Ör6   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r8   Úfeaturesr<   ró   )r?   r@   s   "€r4   rA   ÚSLANeXtLayerNorm.__annotate__±  s#   ø€ ÷ ñ ¡§¡ð ±·±ñ r6   c                óº   <€ V P                   R8X  d:   VP                  ^ ^^^4      p\        SV `  V4      pVP                  ^ ^^^4      pV# \        SV `  V4      pV# )zt
Args:
    features: Tensor of shape (batch_size, channels, height, width) OR (batch_size, height, width, channels)
r;  )r8  rP   r   r…   )r.   r@  r3   s   &&€r4   r…   ÚSLANeXtLayerNorm.forward±  sj   ø€ ð
 ×ÑÐ/Ô/Ø×'Ñ'¨¨1¨a°Ó3ˆHÜ‘w‘ xÓ0ˆHØ×'Ñ'¨¨1¨a°Ó3ˆHð ˆô ‘w‘ xÓ0ˆHØˆr6   ©r8  r5  r�   s   @@r4   r7  r7  ¥  s,   ù‡ € ñð
'°ð 'À/÷ '÷÷ ó r6   r7  c                   óD   a a€ ] tR tRt oV3R lV 3R lltR tRtVtV ;t# )ÚSLANeXtVisionNecki¿  c                ó    <€ V ^8„  d   QhRS[ /# rÛ   ©r   )r?   r@   s   "€r4   rA   ÚSLANeXtVisionNeck.__annotate__À  s   ø€ ÷ bñ bÑ2ñ br6   c                ón  <€ \         SV `  4        Wn        \        P                  ! VP
                  VP                  ^RR7      V n        \        VP                  RR7      V n	        \        P                  ! VP                  VP                  ^^RR7      V n
        \        VP                  RR7      V n        R# )r£   F)r'  r   r;  rD  )r'  Úpaddingr   N)r   r   r/   r"   r.  r   Úoutput_channelsÚconv1r7  rý   Úconv2rÿ   rð   s   &&€r4   r   ÚSLANeXtVisionNeck.__init__À  sŠ   ø€ Ü‰ÑÔØŒä—Y’Y˜v×1Ñ1°6×3IÑ3IÐWXÐ_dÔeˆŒ
Ü+¨F×,BÑ,BÐP`ÔaˆÔÜ—Y’Y˜v×5Ñ5°v×7MÑ7MÐ[\ÐfgÐnsÔtˆŒ
Ü+¨F×,BÑ,BÐP`ÔaˆÖr6   c                ó¶   € VP                  ^ ^^^4      pV P                  V4      pV P                  V4      pV P                  V4      pV P	                  V4      pV# )r   )rP   rM  rý   rN  rÿ   r¼   s   &&r4   r…   ÚSLANeXtVisionNeck.forwardÉ  sZ   € Ø%×-Ñ-¨a°°A°qÓ9ˆØŸ
™
 =Ó1ˆØ×(Ñ(¨Ó7ˆàŸ
™
 =Ó1ˆØ×(Ñ(¨Ó7ˆØÐr6   )r/   rM  rN  rý   rÿ   r°   r�   s   @@r4   rF  rF  ¿  s   ù‡ € ÷bó b÷ò r6   rF  c                   óŒ   a a€ ] tR tRt oR]R]/tRtV3R lV 3R lltR t	]
]! RR7      RV3R	 lR
 ll4       4       tRtVtV ;t# )rÇ   iÓ  rp   r!  c                ó    <€ V ^8„  d   QhRS[ /# rÛ   rH  )r?   r@   s   "€r4   rA   Ú!SLANeXtVisionEncoder.__annotate__×  s   ø€ ÷ ñ Ñ2ñ r6   c                óÌ  <€ \         SV `  V4       Wn        VP                  V n        \	        V4      V n        R V n        VP                  '       ds   \        P                  ! \        P                  ! ^VP                  VP                  ,          VP                  VP                  ,          VP                  4      4      V n        \        P                  ! 4       V n        \!        VP"                  4       FG  p\%        TW!P&                  9  d   VP(                  M^ R7      pV P                  P+                  V4       KI  	  \-        V4      V n        RV n        V P3                  4        R # )N)r0   F)r   r   r/   r   r%  Úpatch_embedrÈ   Úuse_abs_posr"   r)   r*   r+   r   r   Ú
ModuleListÚlayersÚrangeÚnum_hidden_layersrø   Úglobal_attn_indexesr0   ÚappendrF  ÚneckÚgradient_checkpointingÚ	post_init)r.   r/   ÚirØ   r3   s   &&  €r4   r   ÚSLANeXtVisionEncoder.__init__×  s  ø€ Ü‰Ñ˜Ô ØŒØ ×+Ñ+ˆŒÜ1°&Ó9ˆÔàˆŒØ××ÐäŸ\š\Ü—’ØØ×%Ñ%¨×):Ñ):Õ:Ø×%Ñ%¨×):Ñ):Õ:Ø×&Ñ&ó	óˆDŒNô —m’m“oˆŒÜ�v×/Ñ/Ö0ˆAÜ&ØØ23×;UÑ;UÔ2U˜F×.Ò.Ð[\ôˆEð �K‰K×Ñ˜uÖ%ñ 1ô & fÓ-ˆŒ	à&+ˆÔ#Ø�‰Ör6   c                ó   € V P                   # r‡   )rV  )r.   s   &r4   Úget_input_embeddingsÚ)SLANeXtVisionEncoder.get_input_embeddingsö  s   € Ø×ÑÐr6   F)Útie_last_hidden_statesc                ón   <€ V ^8„  d   QhRS[ P                  R,          RS[S[,          RS[S[,          /# )r8   rÁ   NrŸ   r<   )r*   r    r   r   r\   r  )r?   r@   s   "€r4   rA   rT  û  s<   ø€ ÷ 
ñ 
Ù!×-Ñ-°Õ4ð
ÙGMÑN`ÕGað
á	Ñ+Õ	+ñ
r6   c                óò   € Vf   \        R4      hV P                  V4      pV P                  e   W0P                  ,           pV P                   F  pV! V4      pK  	  V P	                  V4      p\        VR7      # )Nz You have to specify pixel_values)r   )r(   rV  rÈ   rY  r^  r  )r.   rÁ   rŸ   rp   Úlayer_modules   &&,  r4   r…   ÚSLANeXtVisionEncoder.forwardù  sr   € ð
 ÒÜÐ?Ó@Ð@à×(Ñ(¨Ó6ˆØ�>‰>Ò%Ø)¯N©NÕ:ˆMØ ŸKœKˆLÙ(¨Ó7ŠMñ (àŸ	™	 -Ó0ˆÜ)Ø+ô
ð 	
r6   )r/   r_  r   rY  r^  rV  rÈ   rß   r‡   )rˆ   r‰   rŠ   r‹   rø   r   Ú_can_record_outputsrã   r   rd  r   r   r…   r�   rŽ   r�   r�   s   @@r4   rÇ   rÇ   Ó  sV   ù‡ € Ø*Ð,>ÀÐNdÐeÐØ!Ð÷ó ò> ð  Ù¨EÔ2÷
ñ 
ó 3ó  ÷
ð 
r6   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tVtV ;t# )ÚSLANeXtBackbonei  c                ó.   <€ V ^8„  d   QhRS[ R,          /# ©r8   r/   N©Údict)r?   r@   s   "€r4   rA   ÚSLANeXtBackbone.__annotate__  s   ø€ ÷ 
ñ 
á�t•ñ
r6   c           	     óä   <€ \         SV `  V4       \        VP                  4      V n        \
        P                  ! VP                  VP                  ^^^RR7      V n	        V P                  4        R# )rr   F)r'  r(  rK  r   N)r   r   rÇ   Úvision_configÚvision_towerr"   r.  Úpost_conv_in_channelsÚpost_conv_out_channelsÚ	post_convr`  ©r.   r/   rŸ   r3   s   &&,€r4   r   ÚSLANeXtBackbone.__init__  s^   ø€ ô
 	‰Ñ˜Ô Ü0°×1EÑ1EÓFˆÔÜŸšØ×(Ñ(¨&×*GÑ*GÐUVÐ_`ÐjkÐrwô
ˆŒð 	�‰Ör6   c                óJ   <€ V ^8„  d   QhRS[ P                  RS[S[,          /# )r8   rp   rŸ   )r*   r>   r   r   )r?   r@   s   "€r4   rA   rr    s%   ø€ ÷ 
ñ 
¡U§\¡\ð 
¹VÑDVÕ=Wñ 
r6   c                óä   € V P                   ! V3/ VB pV P                  VP                  4      pVP                  ^4      P	                  ^^4      p\        VVP                  VP                  R7      # )r8   )r   rp   r!  )ru  rx  r   ÚflattenrO   r	   rp   r!  )r.   rp   rŸ   Úvision_outputs   &&, r4   r…   ÚSLANeXtBackbone.forward  sj   € Ø×)Ò)¨-ÑB¸6ÑBˆØŸ™ }×'FÑ'FÓGˆØ%×-Ñ-¨aÓ0×:Ñ:¸1¸aÓ@ˆÜØ+Ø'×5Ñ5Ø$×/Ñ/ô
ð 	
r6   )rx  ru  r‡   r°   r�   s   @@r4   rm  rm    s   ù‡ € ÷
õ 
÷
÷ 
ð 
r6   rm  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4       4       4       t
RtVtV ;t# )	rÒ   i$  r!  c                ó.   <€ V ^8„  d   QhRS[ R,          /# ro  rp  )r?   r@   s   "€r4   rA   ÚSLANeXtSLAHead.__annotate__)  s   ø€ ÷ ñ á�t•ñr6   c                óð   <€ \         SV `  V4       \        VP                  VP                  VP
                  4      V n        \        VP                  VP
                  4      V n        V P                  4        R # r‡   )
r   r   r’   rw  r   r¸   rÂ   r²   rÃ   r`  ry  s   &&,€r4   r   ÚSLANeXtSLAHead.__init__)  s_   ø€ ô
 	‰Ñ˜Ô ä(?Ø×)Ñ)¨6×+=Ñ+=¸v×?RÑ?Ró)
ˆÔ%ô $.¨f×.@Ñ.@À&×BUÑBUÓ#VˆÔ à�‰Ör6   c                ór   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          /# )r8   rp   ÚtargetsNrŸ   )r*   r    r>   r   r   )r?   r@   s   "€r4   rA   r‚  :  sC   ø€ ÷ fñ fá×(Ñ(ðfñ —‘ Õ$ðfñ Ñ+Õ,ñ	fr6   c                ón  € \         P                  ! VP                  ^ ,          V P                  P                  3\         P
                  VP                  R7      p\         P                  ! VP                  ^ ,          .\         P                  VP                  R7      p. p. p\        V P                  P                  ^,           4       EF
  p\        P                  ! WPP                  P                  4      P                  4       p	V P                  WAP                  4       V	4      w  rHV P                  V4      p
V
P!                  ^R7      pVP#                  V
4       VP#                  V4       \         P$                  ! V^R7      P'                  V P                  P                  ^,
          4      P)                  R4      P+                  4       '       g   EK   M	  \        P,                  ! \         P$                  ! V^R7      R\         P
                  R7      P/                  VP0                  4      p\3        W¶R7      # )r   )rs   Údevice)rE   rs   rˆ  )rg   r¤   )r   rp   rH   )r*   r+   rN   r/   r   r{   rˆ  rR   rZ  Úmax_text_lengthrK   Úone_hotr¸   ÚfloatrÂ   rÃ   Úargmaxr]  ÚstackÚeqÚanyÚallrz   r|   rs   r	   )r.   rp   r†  rŸ   r@  Úpredicted_charsÚstructure_preds_listÚstructure_ids_listrf   Úembedding_featureÚstructure_stepÚstructure_predss   &&&,        r4   r…   ÚSLANeXtSLAHead.forward7  s¢  € ô —;’;Ø× Ñ  Õ# T§[¡[×%<Ñ%<Ð=ÄUÇ]Á]Ð[h×[oÑ[oô
ˆô  Ÿ+š+¨M×,?Ñ,?ÀÕ,BÐ+CÌ5Ï:É:Ð^k×^rÑ^rÔsˆà!ÐØÐÜ�t—{‘{×2Ñ2°QÕ6×7ˆAÜ !§	¢	¨/¿;¹;×;SÑ;SÓ T× ZÑ ZÓ \ÐØ×7Ñ7¸×BUÑBUÓBWÐYjÓk‰KˆHØ!×5Ñ5°hÓ?ˆNØ,×3Ñ3¸Ð3Ó:ˆOà ×'Ñ'¨Ô7Ø×%Ñ% oÔ6Ü�{Š{Ð-°1Ô5×8Ñ8¸¿¹×9QÑ9QÐTUÕ9UÓV×ZÑZÐ[]Ó^×bÑb×dÕdÙñ 8ô Ÿ)š)¤E§K¢KÐ0DÈ!Ô$LÐRTÔ\a×\iÑ\iÔj×mÑmØ×Ñó
ˆô °ÔeÐer6   )rÂ   rÃ   r‡   )rˆ   r‰   rŠ   r‹   r’   rk  r   r   r   r   r…   r�   rŽ   r�   r�   s   @@r4   rÒ   rÒ   $  sO   ù‡ € àÐ-ðÐ÷õ ð  ØØ ÷fñ fó !ó ó  ÷fð fr6   rÒ   c                   ó8   a € ] tR tRt o RtRtRtV 3R ltRtV t	R# )Ú SLANeXtForTableRecognitionOutputiX  aY  
head_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Hidden-states of the SLANeXtSLAHead at each prediction step, varies up to max `self.config.max_text_length` states (depending on early exits).
head_attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
    Attentions of the SLANeXtSLAHead at each prediction step, varies up to max `self.config.max_text_length` attentions (depending on early exits).
Nc                óv   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   # )r8   NÚhead_hidden_statesÚhead_attentions)r*   r    )r?   r@   s   "€r4   rA   Ú-SLANeXtForTableRecognitionOutput.__annotate__X  s5   ø‡ ‚ ñ ×)Ñ)¨DÕ0Ñ7ñ ñ ×&Ñ&¨Õ-Ñ4ò r6   rÞ   )
rˆ   r‰   rŠ   r‹   rŒ   r›  rœ  rç   r�   rŽ   r#  s   @r4   r™  r™  X  s   ø‡ € ñð 48ÐØ04€O÷ ƒ r6   r™  z¼
    SLANeXt Table Recognition model for table recognition tasks. Wraps the core SLANeXtPreTrainedModel
    and returns outputs compatible with the Transformers table recognition API.
    c                   ód   a a€ ] tR tRt oV3R lV 3R llt]]V3R lR l4       4       tRtVt	V ;t
# )ÚSLANeXtForTableRecognitionif  c                ó    <€ V ^8„  d   QhRS[ /# rÛ   rÜ   )r?   r@   s   "€r4   rA   Ú'SLANeXtForTableRecognition.__annotate__m  s   ø€ ÷ ñ ™}ñ r6   c                óŠ   <€ \         SV `  V4       \        VR 7      V n        \	        VR 7      V n        V P                  4        R# ))r/   N)r   r   rm  rÀ   rÒ   Úheadr`  rð   s   &&€r4   r   Ú#SLANeXtForTableRecognition.__init__m  s2   ø€ Ü‰Ñ˜Ô Ü'¨vÔ6ˆŒÜ"¨&Ô1ˆŒ	Ø�‰Ör6   c                ó„   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[ P                  ,          S[,          /# )r8   rÁ   rŸ   r<   )r*   r    r   r   r\   r™  )r?   r@   s   "€r4   rA   r¡  u  sB   ø€ ÷ 
ñ 
Ù!×-Ñ-ð
Ù9?Ñ@RÕ9Sð
á	‰u× Ñ Õ	!Ñ$DÕ	Dñ
r6   c                óæ   € V P                   ! V3/ VB pV P                  ! VP                  3/ VB p\        VP                  VP                  VP
                  VP                  VP
                  R 7      # ))r   rp   r!  r›  rœ  )rÀ   r£  r   r™  rp   r!  )r.   rÁ   rŸ   Úbackbone_outputsÚhead_outputss   &&,  r4   r…   Ú"SLANeXtForTableRecognition.forwards  sl   € ð
  Ÿ=š=¨Ñ@¸Ñ@ÐØ—y’yÐ!1×!CÑ!CÑNÀvÑNˆÜ/Ø*×<Ñ<Ø*×8Ñ8Ø'×2Ñ2Ø+×9Ñ9Ø(×3Ñ3ô
ð 	
r6   )rÀ   r£  )rˆ   r‰   rŠ   r‹   r   r   r   r…   r�   rŽ   r�   r�   s   @@r4   rŸ  rŸ  f  s0   ù‡ € ÷ó ð Ø÷
ó ó ÷
ð 
r6   rŸ  )rÒ   rm  rŸ  r¿   )8r*  rË   Údataclassesr   r*   Útorch.nnr"   Útorch.nn.functionalry   rK   Ú r   rÉ   Úactivationsr   r   Úbackbone_utilsr   Úmodeling_layersr   Úmodeling_outputsr	   r
   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_slanextr   r   ÚModuler   r’   r²   r¿   ré   rø   r  r%  rû   r7  rF  rÇ   rm  rÒ   r™  rŸ  Ú__all__rÞ   r6   r4   Ú<module>rº     s  ðó, Û Ý !ã Ý ß Ð å &ß *Ý 9Ý 9ß <Ý -Ý &ß IÑ IÝ 7Ý 5ß EôB)˜RŸY™Yô B)ôJ+˜bŸi™iô +ôB�—‘ô ô+A˜_ô +Aô\�b—i‘iô ôQÐ3ô Qñh ðôð ô	< ó 	<ó óð	<ô ˜RŸY™Yô  ôF�r—|‘|ô ô4˜Ÿ	™	ô ô(6
Ð1ô 6
ôr
Ð,ô 
ô01fÐ+ô 1fðh Ø
ô	5 ó 	5ó ó ð	5ñ ðôô
Ð!7ó 
óð
ò. h‚r6   