+
    œ°³jª|  ã                   ó€  € R t ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHt ^RI	H
t ^RIHt ^RIHt ^R	IHt ^R
IHtHtHt ^RIHtHt ^RIHt ^RIHt ^RIHtHtH t H!t!H"t" ^RI#H$t$ ^RI%H&t& ^RI'H(t( ]!PR                  ! ]*4      t+ ! R R]PX                  4      t-R5R R llt. ! R R]PX                  4      t/ ! R R]PX                  4      t0 ! R R]PX                  4      t1 ! R R]PX                  4      t2 ! R R]PX                  4      t3 ! R  R!]4      t4 ! R" R#]PX                  4      t5] ! R$ R%]4      4       t6] ! R& R']64      4       t7 ! R( R)]PX                  4      t8 ! R* R+]PX                  4      t9] ! R, R-]64      4       t:]! R.R/7      ] ! R0 R1]4      4       4       t;]! R2R/7       ! R3 R4]64      4       t<. R6Ot=R# )7zPyTorch Splinter model.)ÚCallable)Ú	dataclassN)Únn)ÚCrossEntropyLoss)Úinitialization)ÚACT2FN)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚModelOutputÚQuestionAnsweringModelOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingÚtorch_compilable_check)Úmerge_with_config_defaults)Úcapture_outputs©ÚSplinterConfigc                   óL   a a€ ] tR t^(t oRtV 3R ltRV3R lR lltRtVtV ;t	# )ÚSplinterEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.c                óœ  <€ \         SV `  4        \        P                  ! VP                  VP
                  VP                  R 7      V n        \        P                  ! VP                  VP
                  4      V n	        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP
                  VP                  R7      V n        \        P                  ! VP                  4      V n        \        P"                  ! \$        P&                  ! VP                  4      P)                  R4      RR7      V n        R# ))Úpadding_idx©ÚepsF)Ú
persistentN©é   éÿÿÿÿ)ÚsuperÚ__init__r   Ú	EmbeddingÚ
vocab_sizeÚhidden_sizeÚpad_token_idÚword_embeddingsÚmax_position_embeddingsÚposition_embeddingsÚtype_vocab_sizeÚtoken_type_embeddingsÚ	LayerNormÚlayer_norm_epsÚDropoutÚhidden_dropout_probÚdropoutÚBufferÚtorchÚarangeÚexpandÚposition_ids©ÚselfÚconfigÚ	__class__s   &&€Úo/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/splinter/modeling_splinter.pyr%   ÚSplinterEmbeddings.__init__+   sÚ   ø€ Ü‰ÑÔÜ!Ÿ|š|¨F×,=Ñ,=¸v×?QÑ?QÐ_e×_rÑ_rÔsˆÔÜ#%§<¢<°×0NÑ0NÐPV×PbÑPbÓ#cˆÔ Ü%'§\¢\°&×2HÑ2HÈ&×J\ÑJ\Ó%]ˆÔ"äŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŒô ŸIšI¤e§l¢l°6×3QÑ3QÓ&R×&YÑ&YÐZaÓ&bÐotÔuˆÖó    c          
      óÀ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[/# )é   Ú	input_idsNÚtoken_type_idsr8   Úinputs_embedsÚreturn)r5   Ú
LongTensorÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€r=   Ú__annotate__ÚSplinterEmbeddings.__annotate__7   si   ø€ ÷ ñ á×#Ñ# dÕ*ðñ ×(Ñ(¨4Õ/ðñ ×&Ñ&¨Õ-ð	ñ
 ×(Ñ(¨4Õ/ðñ 
ñr?   c                óî  € Ve   VP                  4       pMVP                  4       R R pV^,          pVf   V P                  RR V13,          pVf<   \        P                  ! V\        P                  V P                  P
                  R7      pVf   V P                  V4      pV P                  V4      pWG,           pV P                  V4      p	W‰,          pV P                  V4      pV P                  V4      pV# )N:NNN©ÚdtypeÚdevicer#   )Úsizer8   r5   ÚzerosÚlongrP   r*   r.   r,   r/   r3   )
r:   rB   rC   r8   rD   Úinput_shapeÚ
seq_lengthr.   Ú
embeddingsr,   s
   &&&&&     r=   ÚforwardÚSplinterEmbeddings.forward7   sä   € ð Ò Ø#Ÿ.™.Ó*‰Kà'×,Ñ,Ó.¨s°Ð3ˆKà  •^ˆ
àÒØ×,Ñ,¨Q°°°¨^Õ<ˆLàÒ!Ü"Ÿ[š[¨¼E¿J¹JÈt×O`ÑO`×OgÑOgÔhˆNàÒ Ø ×0Ñ0°Ó;ˆMØ $× :Ñ :¸>Ó JÐØ"Õ:ˆ
à"×6Ñ6°|ÓDÐØÕ)ˆ
à—^‘^ JÓ/ˆ
Ø—\‘\ *Ó-ˆ
ØÐr?   )r/   r3   r,   r8   r.   r*   )NNNN©
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r%   rW   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r<   rJ   s   @@r=   r   r   (   s   ù‡ € ÙQõ
v÷÷ ò r?   r   c                óÞ   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        /# )	rA   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingr3   )r   ÚModuler5   ÚTensorÚfloat)rI   s   "r=   rK   rK   Y   sg   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ñ%r?   c                 óÎ  € \         P                  ! WP                  ^^4      4      V,          pVe	   W„,           p\        P                  P                  VR\         P                  R7      P                  VP                  4      p\        P                  P                  W†V P                  R7      p\         P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )rA   )ÚdimrO   )ÚpÚtrainingr#   )r5   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxÚfloat32ÚtorO   r3   rp   Ú
contiguous)
rd   re   rf   rg   rh   ri   r3   ÚkwargsÚattn_weightsÚattn_outputs
   &&&&&&&,  r=   Úeager_attention_forwardr{   Y   s°   € ô —<’< §}¡}°Q¸Ó':Ó;¸gÕE€LØÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KØÐ$Ð$r?   c                   óH   a a€ ] tR t^pt oV 3R ltRV3R lR lltRtVtV ;t# )ÚSplinterSelfAttentionc                ó\  <€ \         SV `  4        VP                  VP                  ,          ^ 8w  d9   \	        VR4      '       g'   \        RVP                   RVP                   R24      hWn        VP                  V n        \        VP                  VP                  ,          4      V n        V P                  V P                  ,          V n	        \        P                  ! VP                  V P                  4      V n        \        P                  ! VP                  V P                  4      V n        \        P                  ! VP                  V P                  4      V n        \        P                  ! VP                   4      V n        VP                   V n        V P                  R,          V n        R# )é    Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (Ú)Ng      à¿)r$   r%   r(   Únum_attention_headsÚhasattrÚ
ValueErrorr;   ÚintÚattention_head_sizeÚall_head_sizer   ÚLinearre   rf   rg   r1   Úattention_probs_dropout_probr3   Úattention_dropoutri   r9   s   &&€r=   r%   ÚSplinterSelfAttention.__init__q   sD  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Õ:¸aÔ?ÌÐPVÐXh×HiÒHiÜØ# F×$6Ñ$6Ð#7ð 8Ø ×4Ñ4Ð5°Qð8óð ð
 ŒØ#)×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÕ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔä—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
Ü—9’9˜V×/Ñ/°×1CÑ1CÓDˆŒÜ—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
ä—z’z &×"EÑ"EÓFˆŒØ!'×!DÑ!DˆÔØ×/Ñ/°Õ5ˆŽr?   c                óÄ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[S[ P                  S[ P                  R,          3,          /# ©rA   Úhidden_statesrh   Nrx   rE   )r5   rk   rG   r   r   rH   )rI   rJ   s   "€r=   rK   Ú"SplinterSelfAttention.__annotate__†   s_   ø€ ÷ )ñ )á—|‘|ð)ñ ×)Ñ)¨DÕ0ð)ñ Ñ+Õ,ð	)ñ
 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñ)r?   c                ó†  € VP                   R R p. VORNV P                  N5pV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p\        P                  ! V P                  P                  \        4      p	T	! V VVVV3RV P                  '       g   RMV P                  RV P                  /VB w  r«V
P                  ! . VORN5!  P!                  4       p
W«3# )Nr3   ç        ri   r#   )Úshaper†   re   Úviewrr   rf   rg   r   Úget_interfacer;   Ú_attn_implementationr{   rp   rŠ   ri   Úreshaperw   )r:   rŽ   rh   rx   rT   Úhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfacerz   ry   s   &&&,        r=   rW   ÚSplinterSelfAttention.forward†   sA  € ð $×)Ñ)¨#¨2Ð.ˆØC˜ÐC bÐC¨$×*BÑ*BÑCˆà—z‘z -Ó0×5Ñ5°lÓC×MÑMÈaÐQRÓSˆØ—X‘X˜mÓ,×1Ñ1°,Ó?×IÑIÈ!ÈQÓOˆ
Ø—z‘z -Ó0×5Ñ5°lÓC×MÑMÈaÐQRÓSˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØÐ(Ð(r?   )
r‡   rŠ   r†   r;   r3   rf   r‚   re   ri   rg   ©N©	rZ   r[   r\   r]   r%   rW   r_   r`   ra   rb   s   @@r=   r}   r}   p   s   ù‡ € õ6÷*)÷ )ò )r?   r}   c                   óD   a a€ ] tR t^§t oV 3R ltV3R lR ltRtVtV ;t# )ÚSplinterSelfOutputc                ó0  <€ \         SV `  4        \        P                  ! VP                  VP                  4      V n        \        P                  ! VP                  VP                  R 7      V n        \        P                  ! VP                  4      V n
        R# ©r   N)r$   r%   r   rˆ   r(   Údenser/   r0   r1   r2   r3   r9   s   &&€r=   r%   ÚSplinterSelfOutput.__init__¨   s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr?   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# ©rA   rŽ   Úinput_tensorrE   ©r5   rk   )rI   rJ   s   "€r=   rK   ÚSplinterSelfOutput.__annotate__®   ó1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð ÑRW×R^ÑR^ñ r?   c                óx   € V P                  V4      pV P                  V4      pV P                  W,           4      pV# r�   ©r£   r3   r/   ©r:   rŽ   r§   s   &&&r=   rW   ÚSplinterSelfOutput.forward®   ó5   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™ }Õ'CÓDˆØÐr?   ©r/   r£   r3   rž   rb   s   @@r=   r    r    §   ó   ù‡ € õ>÷÷ ð r?   r    c                   óH   a a€ ] tR t^¶t oV 3R ltRV3R lR lltRtVtV ;t# )ÚSplinterAttentionc                ód   <€ \         SV `  4        \        V4      V n        \	        V4      V n        R # r�   )r$   r%   r}   r:   r    Úoutputr9   s   &&€r=   r%   ÚSplinterAttention.__init__·   s&   ø€ Ü‰ÑÔÜ)¨&Ó1ˆŒ	Ü(¨Ó0ˆŽr?   c                óŒ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[ P                  /# r�   ©r5   rk   rG   r   r   )rI   rJ   s   "€r=   rK   ÚSplinterAttention.__annotate__¼   sL   ø€ ÷ ñ á—|‘|ðñ ×)Ñ)¨DÕ0ðñ Ñ+Õ,ð	ñ
 
�‰ñr?   c                óZ   € TpV P                   ! V3R V/VB w  rV P                  W4      pV# ©rh   )r:   rµ   )r:   rŽ   rh   rx   ÚresidualÚ_s   &&&,  r=   rW   ÚSplinterAttention.forward¼   sE   € ð !ˆØŸ9š9Øñ
à)ð
ð ñ
Ñˆð
 Ÿ™ MÓ<ˆØÐr?   )rµ   r:   r�   rž   rb   s   @@r=   r³   r³   ¶   s   ù‡ € õ1÷
÷ ò r?   r³   c                   óD   a a€ ] tR t^Ít oV 3R ltV3R lR ltRtVtV ;t# )ÚSplinterIntermediatec                ó"  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        VP                  \        4      '       d   \        VP                  ,          V n        R # VP                  V n        R # r�   )r$   r%   r   rˆ   r(   Úintermediate_sizer£   Ú
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnr9   s   &&€r=   r%   ÚSplinterIntermediate.__init__Î   s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬×-Ò-Ü'-¨f×.?Ñ.?Õ'@ˆDÖ$à'-×'8Ñ'8ˆDÖ$r?   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )rA   rŽ   rE   r¨   )rI   rJ   s   "€r=   rK   Ú!SplinterIntermediate.__annotate__Ö   s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r?   c                óJ   € V P                  V4      pV P                  V4      pV# r�   ©r£   rÆ   )r:   rŽ   s   &&r=   rW   ÚSplinterIntermediate.forwardÖ   s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr?   rË   rž   rb   s   @@r=   rÀ   rÀ   Í   s   ù‡ € õ9÷÷ ð r?   rÀ   c                   óD   a a€ ] tR t^Ýt oV 3R ltV3R lR ltRtVtV ;t# )ÚSplinterOutputc                ó0  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP
                  VP                  R 7      V n        \        P                  ! VP                  4      V n        R# r¢   )r$   r%   r   rˆ   rÂ   r(   r£   r/   r0   r1   r2   r3   r9   s   &&€r=   r%   ÚSplinterOutput.__init__Þ   s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr?   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# r¦   r¨   )rI   rJ   s   "€r=   rK   ÚSplinterOutput.__annotate__ä   rª   r?   c                óx   € V P                  V4      pV P                  V4      pV P                  W,           4      pV# r�   r¬   r­   s   &&&r=   rW   ÚSplinterOutput.forwardä   r¯   r?   r°   rž   rb   s   @@r=   rÎ   rÎ   Ý   r±   r?   rÎ   c                   óN   a a€ ] tR t^ìt oV 3R ltRV3R lR lltR tRtVtV ;t	# )ÚSplinterLayerc                ó´   <€ \         SV `  4        VP                  V n        ^V n        \	        V4      V n        \        V4      V n        \        V4      V n	        R# )r"   N)
r$   r%   Úchunk_size_feed_forwardÚseq_len_dimr³   Ú	attentionrÀ   ÚintermediaterÎ   rµ   r9   s   &&€r=   r%   ÚSplinterLayer.__init__í   sI   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ*¨6Ó2ˆŒÜ0°Ó8ˆÔÜ$ VÓ,ˆŽr?   c                óŒ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[ P                  /# r�   r¸   )rI   rJ   s   "€r=   rK   ÚSplinterLayer.__annotate__õ   sL   ø€ ÷ ñ á—|‘|ðñ ×)Ñ)¨DÕ0ðñ Ñ+Õ,ð	ñ
 
�‰ñr?   c                óˆ   € V P                   ! V3R V/VB p\        V P                  V P                  V P                  V4      pV# r»   )rÚ   r   Úfeed_forward_chunkrØ   rÙ   )r:   rŽ   rh   rx   s   &&&,r=   rW   ÚSplinterLayer.forwardõ   sW   € ð ŸšØñ
à)ð
ð ñ
ˆô 2Ø×#Ñ# T×%AÑ%AÀ4×CSÑCSÐUbó
ˆð Ðr?   c                óJ   € V P                  V4      pV P                  W!4      pV# r�   )rÛ   rµ   )r:   Úattention_outputÚintermediate_outputÚlayer_outputs   &&  r=   rà   Ú SplinterLayer.feed_forward_chunk  s)   € Ø"×/Ñ/Ð0@ÓAÐØ—{‘{Ð#6ÓIˆØÐr?   )rÚ   rØ   rÛ   rµ   rÙ   r�   )
rZ   r[   r\   r]   r%   rW   rà   r_   r`   ra   rb   s   @@r=   rÖ   rÖ   ì   s   ù‡ € õ-÷ò ÷$ò r?   rÖ   c                   óH   a a€ ] tR tRt oV 3R ltRV3R lR lltRtVtV ;t# )ÚSplinterEncoderi  c                óÖ   <€ \         SV `  4        Wn        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        R V n	        R# u upi )FN)
r$   r%   r;   r   Ú
ModuleListÚrangeÚnum_hidden_layersrÖ   ÚlayerÚgradient_checkpointing)r:   r;   Úir<   s   && €r=   r%   ÚSplinterEncoder.__init__  sR   ø€ Ü‰ÑÔØŒÜ—]’]Ä5È×IaÑIaÔCbÓ#cÑCb¸a¤M°&Ö$9ÑCbÑ#cÓdˆŒ
Ø&+ˆÖ#ùò $ds   ½A&c                óx   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[/# r�   )r5   rk   rG   r   r   r
   )rI   rJ   s   "€r=   rK   ÚSplinterEncoder.__annotate__  sH   ø€ ÷ 
ñ 
á—|‘|ð
ñ ×)Ñ)¨DÕ0ð
ñ Ñ+Õ,ð	
ñ
 
ñ
r?   c                óT   € V P                    F  pV! VV3/ VB pK  	  \        VR 7      # )©Úlast_hidden_state)rí   r
   )r:   rŽ   rh   rx   Úlayer_modules   &&&, r=   rW   ÚSplinterEncoder.forward  s>   € ð !ŸJœJˆLÙ(ØØñð ñŠMñ 'ô Ø+ô
ð 	
r?   )r;   rî   rí   r�   rž   rb   s   @@r=   rè   rè     s   ù‡ € õ,÷
÷ 
ò 
r?   rè   c                   óR   a a€ ] tR tRt oRtRtR]R]/tV 3R lt	V3R lt
RtVtV ;t# )	ÚSplinterPreTrainedModeli'  ÚsplinterTrŽ   Ú
attentionsc                ó  <€ \         SV `  V4       \        V\        4      '       db   \        P
                  ! VP                  \        P                  ! VP                  P                  R,          4      P                  R4      4       R# R# )r"   Nr#   r!   )r$   Ú_init_weightsrÃ   r   ÚinitÚcopy_r8   r5   r6   r’   r7   )r:   rd   r<   s   &&€r=   rý   Ú%SplinterPreTrainedModel._init_weights1  s^   ø€ Ü‰Ñ˜fÔ%Ü�fÔ0×1Ò1Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÖhñ 2r?   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )rA   r;   r   )rI   rJ   s   "€r=   rK   Ú$SplinterPreTrainedModel.__annotate__'  s   ø‡ ‚ áÑò r?   © )rZ   r[   r\   r]   Úbase_model_prefixÚsupports_gradient_checkpointingrÖ   r}   Ú_can_record_outputsrý   Ú__annotate_func__r_   r`   ra   rb   s   @@r=   rù   rù   '  s3   ù‡ € ð #ÐØ&*Ð#à˜ØÐ+ðÐõ
i÷ … r?   rù   c                   óv   a a€ ] tR tRt oRtV 3R ltR tR t]]	]
R	V3R lR ll4       4       4       tRtVtV ;t# )
ÚSplinterModeli7  a"  
The model is an encoder (with only self-attention) following the architecture described in [Attention is all you
need](https://huggingface.co/papers/1706.03762) by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones,
Aidan N. Gomez, Lukasz Kaiser and Illia Polosukhin.
c                ó’   <€ \         SV `  V4       Wn        \        V4      V n        \        V4      V n        V P                  4        R # r�   )r$   r%   r;   r   rV   rè   ÚencoderÚ	post_initr9   s   &&€r=   r%   ÚSplinterModel.__init__?  s9   ø€ Ü‰Ñ˜Ô ØŒä,¨VÓ4ˆŒÜ& vÓ.ˆŒð 	�‰Ör?   c                ó.   € V P                   P                  # r�   ©rV   r*   )r:   s   &r=   Úget_input_embeddingsÚ"SplinterModel.get_input_embeddingsI  s   € Ø�‰×.Ñ.Ð.r?   c                ó&   € WP                   n        R # r�   r  )r:   rg   s   &&r=   Úset_input_embeddingsÚ"SplinterModel.set_input_embeddingsL  s   € Ø*/�‰Ö'r?   c                ó  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[S[,          /# )	rA   rB   Nrh   rC   r8   rD   rx   rE   )r5   rk   r   r   rH   r
   )rI   rJ   s   "€r=   rK   ÚSplinterModel.__annotate__R  s’   ø€ ÷ @
ñ @
á—<‘< $Õ&ð@
ñ Ÿ™ tÕ+ð@
ñ Ÿ™ tÕ+ð	@
ñ
 —l‘l TÕ)ð@
ñ —|‘| dÕ*ð@
ñ Ñ+Õ,ð@
ñ 
‘Õ	 ñ@
r?   c                ó8  € Ve   Ve   \        R4      hVe#   V P                  W4       VP                  4       pM#Ve   VP                  4       RR
 pM\        R4      hVw  r‰Ve   VP                  MVP                  p
Vf   \        P
                  ! W‰3V
R7      pVf(   \        P                  ! V\        P                  V
R7      pV P                  VVVVR7      p\        V P                  VVR7      pV P                  ! V3RV/VB pV^ ,          p\        VR	7      # )a‹  
token_type_ids (`torch.LongTensor` of shape `batch_size, sequence_length`, *optional*):
    Segment token indices to indicate first and second portions of the inputs. Indices are selected in `[0,
    1]`:

    - 0 corresponds to a *sentence A* token,
    - 1 corresponds to a *sentence B* token.

    [What are token type IDs?](../glossary#token-type-ids)
position_ids (`torch.LongTensor` of shape `batch_size, sequence_length`, *optional*):
    Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
    config.max_position_embeddings - 1]`.

    [What are position IDs?](../glossary#position-ids)
NzDYou cannot specify both input_ids and inputs_embeds at the same timez5You have to specify either input_ids or inputs_embeds©rP   rN   )rB   r8   rC   rD   )r;   rD   rh   rh   rô   r#   )r„   Ú%warn_if_padding_and_no_attention_maskrQ   rP   r5   ÚonesrR   rS   rV   r   r;   r  r
   )r:   rB   rh   rC   r8   rD   rx   rT   Ú
batch_sizerU   rP   Úembedding_outputÚencoder_outputsÚsequence_outputs   &&&&&&,       r=   rW   ÚSplinterModel.forwardO  s1  € ð6 Ò  ]Ò%>ÜÐcÓdÐdØÒ"Ø×6Ñ6°yÔQØ#Ÿ.™.Ó*‰KØÒ&Ø'×,Ñ,Ó.¨s°Ð3‰KäÐTÓUÐUà!,Ñˆ
Ø%.Ò%:�×!Ò!À×@TÑ@TˆàÒ!Ü"ŸZšZ¨*Ð)AÈ6ÔRˆNØÒ!Ü"Ÿ[š[¨¼E¿J¹JÈvÔVˆNàŸ?™?ØØ%Ø)Ø'ð	 +ó 
Ðô 3Ø—;‘;Ø*Ø)ô
ˆð Ÿ,š,Øñ
à)ð
ð ñ
ˆð
 *¨!Õ,ˆäØ-ô
ð 	
r?   )r;   rV   r  )NNNNN)rZ   r[   r\   r]   r^   r%   r  r  r   r   r   rW   r_   r`   ra   rb   s   @@r=   r	  r	  7  sK   ù‡ € ñõò/ò0ð  ØØ÷@
ñ @
ó ó ó  ÷@
ð @
r?   r	  c                   óH   a a€ ] tR tRt oRV 3R lltV3R lR ltRtVtV ;t# )ÚSplinterFullyConnectedLayeri•  c                ó
  <€ \         SV `  4        Wn        W n        \        P
                  ! V P                  V P                  4      V n        \        V,          V n        \        P                  ! V P                  4      V n	        R # r�   )
r$   r%   Ú	input_dimÚ
output_dimr   rˆ   r£   r   Úact_fnr/   )r:   r#  r$  rÄ   r<   s   &&&&€r=   r%   Ú$SplinterFullyConnectedLayer.__init__–  sR   ø€ Ü‰ÑÔà"ŒØ$Œä—Y’Y˜tŸ~™~¨t¯©Ó?ˆŒ
Ü˜ZÕ(ˆŒÜŸš d§o¡oÓ6ˆŽr?   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )rA   ÚinputsrE   r¨   )rI   rJ   s   "€r=   rK   Ú(SplinterFullyConnectedLayer.__annotate__   s#   ø€ ÷ ñ ™eŸl™lð ©u¯|©|ñ r?   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r�   )r£   r%  r/   )r:   r(  rŽ   s   && r=   rW   Ú#SplinterFullyConnectedLayer.forward   s2   € ØŸ
™
 6Ó*ˆØŸ™ MÓ2ˆØŸ™ }Ó5ˆØÐr?   )r/   r%  r£   r#  r$  )Úgelurž   rb   s   @@r=   r!  r!  •  s   ù‡ € ÷7÷÷ ð r?   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	# )ÚQuestionAwareSpanSelectionHeadi§  z^
Implementation of Question-Aware Span Selection (QASS) head, described in Splinter's paper:

c                ó  <€ \         SV `  4        \        VP                  VP                  4      V n        \        VP                  VP                  4      V n        \        VP                  VP                  4      V n        \        VP                  VP                  4      V n        \        P                  ! VP                  VP                  R R7      V n
        \        P                  ! VP                  VP                  R R7      V n        R# )F)ÚbiasN)r$   r%   r!  r(   Úquery_start_transformÚquery_end_transformÚstart_transformÚend_transformr   rˆ   Ústart_classifierÚend_classifierr9   s   &&€r=   r%   Ú'QuestionAwareSpanSelectionHead.__init__­  sÀ   ø€ Ü‰ÑÔä%@À×ASÑASÐU[×UgÑUgÓ%hˆÔ"Ü#>¸v×?QÑ?QÐSY×SeÑSeÓ#fˆÔ Ü:¸6×;MÑ;MÈv×OaÑOaÓbˆÔÜ8¸×9KÑ9KÈV×M_ÑM_Ó`ˆÔä "§	¢	¨&×*<Ñ*<¸f×>PÑ>PÐW\Ô ]ˆÔÜ Ÿiši¨×(:Ñ(:¸F×<NÑ<NÐUZÔ[ˆÖr?   c                ó  € VP                  4       w   r4VP                  R4      P                  ^^V4      p\        P                  ! V^VR7      pV P                  V4      pV P                  V4      pV P                  V4      p	V P                  V4      p
V P                  V4      pV	P                  ^ ^^4      p	\        P                  ! W¹4      pV P                  V4      pV
P                  ^ ^^4      p
\        P                  ! Wº4      pWÍ3# )r"   )rn   Úindexr#   )rQ   Ú	unsqueezeÚrepeatr5   Úgatherr1  r2  r3  r4  r5  Úpermuterq   r6  )r:   r(  Ú	positionsr½   rn   r9  Úgathered_repsÚquery_start_repsÚquery_end_repsÚ
start_repsÚend_repsrŽ   Ústart_logitsÚ
end_logitss   &&&           r=   rW   Ú&QuestionAwareSpanSelectionHead.forward¸  sñ   € Ø—K‘K“M‰	ˆˆ1Ø×#Ñ# BÓ'×.Ñ.¨q°!°SÓ9ˆÜŸš V°¸%Ô@ˆà×5Ñ5°mÓDÐØ×1Ñ1°-Ó@ˆØ×)Ñ)¨&Ó1ˆ
Ø×%Ñ% fÓ-ˆà×-Ñ-Ð.>Ó?ˆØ×'Ñ'¨¨1¨aÓ0ˆ
Ü—|’| MÓ>ˆà×+Ñ+¨NÓ;ˆØ×#Ñ# A q¨!Ó,ˆÜ—\’\ -Ó:ˆ
àÐ'Ð'r?   )r6  r4  r2  r1  r5  r3  rY   rb   s   @@r=   r.  r.  §  s   ù‡ € ñõ
	\÷(ò (r?   r.  c                   ó\   a a€ ] tR tRt oV 3R lt]]RV3R lR ll4       4       tRtVt	V ;t
# )ÚSplinterForQuestionAnsweringiÍ  c                ó¨   <€ \         SV `  V4       \        V4      V n        \	        V4      V n        VP                  V n        V P                  4        R # r�   ©r$   r%   r	  rú   r.  Úsplinter_qassÚquestion_token_idr  r9   s   &&€r=   r%   Ú%SplinterForQuestionAnswering.__init__Ï  óC   ø€ Ü‰Ñ˜Ô ä% fÓ-ˆŒÜ;¸FÓCˆÔØ!'×!9Ñ!9ˆÔð 	�‰Ör?   c                ó†  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[S[,          RS[S[,          /
# ©rA   rB   Nrh   rC   r8   rD   Ústart_positionsÚend_positionsÚquestion_positionsrx   rE   )r5   rk   rF   r   r   rH   r   )rI   rJ   s   "€r=   rK   Ú)SplinterForQuestionAnswering.__annotate__Û  sÕ   ø€ ÷ W
ñ W
á—<‘< $Õ&ðW
ñ Ÿ™ tÕ+ðW
ñ Ÿ™ tÕ+ð	W
ñ
 —l‘l TÕ)ðW
ñ —|‘| dÕ*ðW
ñ ×)Ñ)¨DÕ0ðW
ñ ×'Ñ'¨$Õ.ðW
ñ "×,Ñ,¨tÕ3ðW
ñ Ñ+Õ,ðW
ñ 
Ñ-Õ	-ñW
r?   c	                óú  € Rp
Vf¨   VeF   \         P                  ! \         P                  ! WP                  4      P	                  4       RR7      pMK\         P
                  ! VP                  ^ 4      \         P                  VP                  VP                  R7      pVP                  R4      pRp
V P                  ! V3RVRVRVR	V/V	B pV^ ,          pV P                  WØ4      w  rïV
'       d"   VP                  ^4      VP                  ^4      rþVe   V^V,
          \         P                  ! VP                  4      P                   ,          ,           pV^V,
          \         P                  ! VP                  4      P                   ,          ,           pRpVeÄ   VeÀ   \#        VP                  4       4      ^8”  d   VP                  R4      p\#        VP                  4       4      ^8”  d   VP                  R4      pVP                  ^4      pVP%                  ^ V4       VP%                  ^ V4       \'        VR
7      pV! Wæ4      pV! W÷4      pVV,           ^,          p\)        VVVVP*                  VP,                  R7      # )aI  
token_type_ids (`torch.LongTensor` of shape `batch_size, sequence_length`, *optional*):
    Segment token indices to indicate first and second portions of the inputs. Indices are selected in `[0,
    1]`:

    - 0 corresponds to a *sentence A* token,
    - 1 corresponds to a *sentence B* token.

    [What are token type IDs?](../glossary#token-type-ids)
position_ids (`torch.LongTensor` of shape `batch_size, sequence_length`, *optional*):
    Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
    config.max_position_embeddings - 1]`.

    [What are position IDs?](../glossary#position-ids)
question_positions (`torch.LongTensor` of shape `(batch_size, num_questions)`, *optional*):
    The positions of all question tokens. If given, start_logits and end_logits will be of shape `(batch_size,
    num_questions, sequence_length)`. If None, the first question token in each sequence in the batch will be
    the only one for which start_logits and end_logits are calculated and they will be of shape `(batch_size,
    sequence_length)`.
FN)rn   )rO   ÚlayoutrP   Trh   rC   r8   rD   ©Úignore_index©ÚlossrD  rE  rŽ   rû   r#   )r5   ÚargmaxÚeqrL  r…   rR   rQ   rS   rV  rP   r:  rú   rK  ÚsqueezeÚfinforO   ÚminÚlenÚclamp_r   r   rŽ   rû   )r:   rB   rh   rC   r8   rD   rQ  rR  rS  rx   Úquestion_positions_were_noneÚ"question_position_for_each_exampleÚoutputsr  rD  rE  Ú
total_lossÚignored_indexÚloss_fctÚ
start_lossÚend_losss   &&&&&&&&&,           r=   rW   Ú$SplinterForQuestionAnswering.forwardÙ  sL  € ðD (-Ð$ØÒ%ØÒ$Ü5:·\²\Ü—X’X˜i×)?Ñ)?Ó@×EÑEÓGÈRô6Ñ2ô 6;·[²[Ø!×&Ñ& qÓ)´·±ÀM×DXÑDXÐan×auÑauô6Ð2ð "D×!MÑ!MÈbÓ!QÐØ+/Ð(à—-’-Øñ
à)ð
ð *ð
ð &ð	
ð
 (ð
ð ñ
ˆð " !�*ˆØ#'×#5Ñ#5°oÓ#ZÑ ˆç'Ø'3×';Ñ';¸AÓ'>À
×@RÑ@RÐSTÓ@U˜*àÒ%Ø'¨1¨~Õ+=ÄÇÂÈ\×M_ÑM_ÓA`×AdÑAdÕ*dÕdˆLØ# q¨>Õ'9¼U¿[º[È×IYÑIYÓ=Z×=^Ñ=^Õ&^Õ^ˆJàˆ
ØÒ&¨=Ò+Dä�?×'Ñ'Ó)Ó*¨QÔ.Ø"1×"9Ñ"9¸"Ó"=�Ü�=×%Ñ%Ó'Ó(¨1Ô,Ø -× 5Ñ 5°bÓ 9�à(×-Ñ-¨aÓ0ˆMØ×"Ñ" 1 mÔ4Ø× Ñ   MÔ2ä'°]ÔCˆHÙ! ,Ó@ˆJÙ 
Ó:ˆHØ$ xÕ/°1Õ4ˆJä+ØØ%Ø!Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r?   ©rL  rú   rK  ©NNNNNNNN)rZ   r[   r\   r]   r%   r   r   rW   r_   r`   ra   rb   s   @@r=   rH  rH  Í  s4   ù‡ € õð Ø÷W
ñ W
ó ó ÷W
ð W
r?   rH  zB
    Class for outputs of Splinter as a span selection model.
    )Úcustom_introc                   óD   a € ] tR tRt o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚSplinterForPreTrainingOutputi5  aÏ  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when start and end positions are provided):
    Total span extraction loss is the sum of a Cross-Entropy for the start and end positions.
start_logits (`torch.FloatTensor` of shape `(batch_size, num_questions, sequence_length)`):
    Span-start scores (before SoftMax).
end_logits (`torch.FloatTensor` of shape `(batch_size, num_questions, sequence_length)`):
    Span-end scores (before SoftMax).
Nc                ó   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   # )rA   NrZ  rD  rE  rŽ   rû   )r5   rG   rH   )rI   rJ   s   "€r=   rK   Ú)SplinterForPreTrainingOutput.__annotate__5  s‡   ø‡ ‚ ñ  ×
Ñ
˜dÕ
"Ñ)ñ! ñ" ×#Ñ# dÕ*Ñ1ñ# ñ$ ×!Ñ! DÕ(Ñ/ñ% ñ& ™×*Ñ*Õ+¨dÕ2Ñ9ñ' ñ( ‘e×'Ñ'Õ(¨4Õ/Ñ6ò) r?   r  )rZ   r[   r\   r]   r^   rZ  rD  rE  rŽ   rû   r  r_   r`   )rJ   s   @r=   ro  ro  5  s,   ø‡ € ñð &*€DØ-1€LØ+/€JØ59€MØ26€J÷) ƒ r?   ro  zý
    Splinter Model for the recurring span selection task as done during the pretraining. The difference to the QA task
    is that we do not have a question, but multiple question tokens that replace the occurrences of recurring spans
    instead.
    c                   ón   a a€ ] tR tRt oV 3R lt]]RV3R lR ll4       4       tV3R lR ltRt	Vt
V ;t# )	ÚSplinterForPreTrainingiL  c                ó¨   <€ \         SV `  V4       \        V4      V n        \	        V4      V n        VP                  V n        V P                  4        R # r�   rJ  r9   s   &&€r=   r%   ÚSplinterForPreTraining.__init__T  rN  r?   c                ó†  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[S[,          RS[S[,          /
# rP  )r5   rk   rF   r   r   rH   ro  )rI   rJ   s   "€r=   rK   Ú#SplinterForPreTraining.__annotate__`  sÕ   ø€ ÷ n
ñ n
á—<‘< $Õ&ðn
ñ Ÿ™ tÕ+ðn
ñ Ÿ™ tÕ+ð	n
ñ
 —l‘l TÕ)ðn
ñ —|‘| dÕ*ðn
ñ ×)Ñ)¨DÕ0ðn
ñ ×'Ñ'¨$Õ.ðn
ñ "×,Ñ,¨tÕ3ðn
ñ Ñ+Õ,ðn
ñ 
Ñ-Õ	-ñn
r?   c	                ó   € Vf   Ve   Ve   \        R4      hVf   Vf   \        R4      hVf   V P                  V4      pV P                  ! V3RVRVRVRV/V	B p
V
^ ,          pVP                  4       w  rÍpV P	                  W¸4      w  ppVP                  ^4      pVe¡   VP                  ^4      P                  VVV4      pV^V,
          \        P                  ! VP                  4      P                  ,          ,           pV^V,
          \        P                  ! VP                  4      P                  ,          ,           pRpVeç   Veã   VP                  ^ \        ^ V^,
          4      4       VP                  ^ \        ^ V^,
          4      4       \        V P                  P                  R7      pV! VP!                  VV,          V4      VP!                  VV,          4      4      pV! VP!                  VV,          V4      VP!                  VV,          4      4      pVV,           ^,          p\#        VVVV
P$                  V
P&                  R	7      # )
a
  
input_ids (`torch.LongTensor` of shape `(batch_size, num_questions, sequence_length)`):
    Indices of input sequence tokens in the vocabulary.

    Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
    [`PreTrainedTokenizer.__call__`] for details.

    [What are input IDs?](../glossary#input-ids)
token_type_ids (`torch.LongTensor` of shape `batch_size, num_questions, sequence_length`, *optional*):
    Segment token indices to indicate first and second portions of the inputs. Indices are selected in `[0,
    1]`:

    - 0 corresponds to a *sentence A* token,
    - 1 corresponds to a *sentence B* token.

    [What are token type IDs?](../glossary#token-type-ids)
position_ids (`torch.LongTensor` of shape `batch_size, num_questions, sequence_length`, *optional*):
    Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
    config.max_position_embeddings - 1]`.

    [What are position IDs?](../glossary#position-ids)
inputs_embeds (`torch.FloatTensor` of shape `(batch_size, num_questions, sequence_length, hidden_size)`, *optional*):
    Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation. This
    is useful if you want more control over how to convert *input_ids* indices into associated vectors than the
    model's internal embedding lookup matrix.
start_positions (`torch.LongTensor` of shape `(batch_size, num_questions)`, *optional*):
    Labels for position (index) of the start of the labelled span for computing the token classification loss.
    Positions are clamped to the length of the sequence (`sequence_length`). Position outside of the sequence
    are not taken into account for computing the loss.
end_positions (`torch.LongTensor` of shape `(batch_size, num_questions)`, *optional*):
    Labels for position (index) of the end of the labelled span for computing the token classification loss.
    Positions are clamped to the length of the sequence (`sequence_length`). Position outside of the sequence
    are not taken into account for computing the loss.
question_positions (`torch.LongTensor` of shape `(batch_size, num_questions)`, *optional*):
    The positions of all question tokens. If given, start_logits and end_logits will be of shape `(batch_size,
    num_questions, sequence_length)`. If None, the first question token in each sequence in the batch will be
    the only one for which start_logits and end_logits are calculated and they will be of shape `(batch_size,
    sequence_length)`.
NzCquestion_positions must be specified in order to calculate the lossz?question_positions must be specified when inputs_embeds is usedrh   rC   r8   rD   rW  rY  )Ú	TypeErrorÚ_prepare_question_positionsrú   rQ   rK  r:  r7   r5   r^  rO   r_  ra  Úmaxr   r;   r)   r“   ro  rŽ   rû   )r:   rB   rh   rC   r8   rD   rQ  rR  rS  rx   rd  r  r  Úsequence_lengthrn   rD  rE  Únum_questionsÚ attention_mask_for_each_questionre  rg  rh  ri  s   &&&&&&&&&,             r=   rW   ÚSplinterForPreTraining.forward^  sR  € ðj Ò%¨/Ò*EÈ-ÒJcÜÐaÓbÐbàÒ'¨IÒ,=ÜÐ]Ó^Ð^àÒ'Ø!%×!AÑ!AÀ)Ó!LÐà—-’-Øñ
à)ð
ð *ð
ð &ð	
ð
 (ð
ð ñ
ˆð " !�*ˆØ+:×+?Ñ+?Ó+AÑ(ˆ
 Sà#'×#5Ñ#5°oÓ#ZÑ ˆ�jà*×/Ñ/°Ó2ˆØÒ%Ø/=×/GÑ/GÈÓ/J×/QÑ/QØ˜M¨?ó0Ð,ð (¨1Ð/OÕ+OÔSX×S^ÒS^Ð_k×_qÑ_qÓSr×SvÑSvÕ*vÕvˆLØ# qÐ+KÕ'KÌuÏ{Ê{Ð[e×[kÑ[kÓOl×OpÑOpÕ&pÕpˆJàˆ
àÒ&¨=Ò+Dà×"Ñ" 1¤c¨!¨_¸qÕ-@Ó&AÔBØ× Ñ  ¤C¨¨?¸QÕ+>Ó$?Ô@ô (°T·[±[×5MÑ5MÔNˆHÙ!Ø×!Ñ! *¨}Õ"<¸oÓNØ×$Ñ$ Z°-Õ%?Ó@óˆJñ  Ø—‘ 
¨]Õ :¸OÓLØ×"Ñ" :°Õ#=Ó>óˆHð % xÕ/°1Õ4ˆJä+ØØ%Ø!Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r?   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )rA   rB   rE   r¨   )rI   rJ   s   "€r=   rK   rw  Ð  s#   ø€ ÷ ñ ±U·\±\ð ÁeÇlÁlñ r?   c                ó\  € \         P                  ! WP                  P                  8H  4      w  r#\         P                  ! V4      p\        VP                  ^ 4      VP                  ^ 4      8H  R4       \         P                  ! W"RR7      p\         P                  ! VP                  ^ 4      VP                  R7      V,
          p\         P                  ! VP                  ^ 4      VP                  4       3V P                  P                  \         P                  VP                  R7      pW7W&3&   V# )r   z?All samples in the batch must have at least one question token.Úleft)Úsider  rN   )r5   Úwherer;   rL  Úbincountr   rQ   Úsearchsortedr6   rP   Úfullr{  r)   rS   )r:   rB   ÚrowsÚflat_positionsr}  Ú	first_idxÚcolsr>  s   &&      r=   rz  Ú2SplinterForPreTraining._prepare_question_positionsÐ  sá   € Ü$Ÿ{š{¨9¿¹×8UÑ8UÑ+UÓVÑˆÜŸš tÓ,ˆÜØ×Ñ˜qÓ! Y§^¡^°AÓ%6Ñ6ØMô	
ô
 ×&Ò& t¸Ô?ˆ	Ü�|Š|˜DŸI™I a›L°·±Ô=À	ÕIˆÜ—J’JØ�^‰^˜AÓ × 1Ñ 1Ó 3Ð4Ø�K‰K×$Ñ$Ü—*‘*Ø×#Ñ#ô	
ˆ	ð !/�$�*ÑØÐr?   rk  rl  )rZ   r[   r\   r]   r%   r   r   rW   rz  r_   r`   ra   rb   s   @@r=   rs  rs  L  s>   ù‡ € õð Ø÷n
ñ n
ó ó ðn
÷`÷ ð r?   rs  )r‘   )rH  rs  rÖ   r	  rù   )>r^   Úcollections.abcr   Údataclassesr   r5   r   Útorch.nnr   Ú r   rþ   Úactivationsr   Úmasking_utilsr   Úmodeling_layersr	   Úmodeling_outputsr
   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_splinterr   Ú
get_loggerrZ   Úloggerrj   r   r{   r}   r    r³   rÀ   rÎ   rÖ   rè   rù   r	  r!  r.  rH  ro  rs  Ú__all__r  r?   r=   Ú<module>rŸ     s¹  ðñ å $Ý !ã Ý Ý %å &Ý !Ý 6Ý 9ß ZÑ Zß FÝ &Ý 6ß jÕ jÝ 7Ý 5Ý 2ð 
×	Ò	˜HÓ	%€ô-˜Ÿ™ô -÷b%ô.3)˜BŸI™Iô 3)ôn˜Ÿ™ô ô˜Ÿ	™	ô ô.˜2Ÿ9™9ô ô �R—Y‘Yô ôÐ.ô ôD
�b—i‘iô 
ð2 ôi˜oó ió ðið ôZ
Ð+ó Z
ó ðZ
ôz "§)¡)ô ô$#( R§Y¡Yô #(ðL ôd
Ð#:ó d
ó ðd
ñN ðôð
 ô7 ;ó 7ó óð7ñ" ðôôNÐ4ó NóðNòb‚r?   