
    oi                        S SK JrJrJrJrJrJrJrJr  S SK	r	S SK
Jr  S SKrSSKJrJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKrS r \R@                  " \5        S r! \R@                  " \!5        S r" \R@                  " \"5        S	 r# \R@                  " \#5        S
 r$ \R@                  " \$5        S r% \R@                  " \%5        S r& \R@                  " \&5        S r' \R@                  " \'5        g)    )AnyListOptionalTupleUnionDictSetCallableN   )TEMPORARY_PATCHEStorch_compile)patch_functionprocess_output_optionsKWARGS_TYPEraise_error
ImageInputPreTokenizedInput	TextInputCacheStaticCacheHybridCacheUnpackpatch_function_past_key_valuesdedentc            
        ^^^^^ SS K m SS Kn SSKJm  SSKJm  SSKJm  SSKJm      SS[        S[        [        [        [        [           [        [           4   S	[         T   S
T4UUUUU4S jjjn [#        U R$                  R&                  R(                  R*                  SU5        g ! [         a  n[        SU5      s S nA$ S nAff = f)Nr   )Gemma3ProcessorKwargs)make_nested_list_of_images)BatchFeature)	to_py_objzGemma3Processor.__call__imagestextkwargsreturnc           	      6  > Uc  Uc  [        S5      eU R                  " T 4SU R                  R                  0UD6nS nUb	   T!" U5      n [	        U[
        5      (       a  U/nO8[	        U[        5      (       d#  [	        US   [
        5      (       d  [        S5      e0 n	UGbW  U R                  " U40 US   D6n	U(       d8  U Vs/ s H+  nSR                  U R                  /[        U5      -  5      PM-     nn[        U5      [        U5      :w  a$  [        S[        U5       S[        U5       S	35      eT#" U	R                  S
5      5      n
Un[        [        X'U
5      5       GH^  u  nu  pnT"R                  U R                  U5       Vs/ s H  nUR                  5       PM     nn[        U5      [        U5      :w  a$  [        S[        U5       S[        U5       S35      eUn[	        U[         5      (       a(  [        U5      S:  a  U/S/[        U5      S-
  -  -   nO/ n[#        [        [        UU5      5      5       H}  u  nn[	        U[         5      (       d  M  US:  d  M%  SU R                   S3SR                  U R                  /U-  5      -   nUS U U-   UU[        U R                  5      -   S  -   nXU'   M     GMa     U Vs/ s H(  oR%                  U R                  U R&                  5      PM*     nnUS   R                  SS 5      nUS   R                  SS5      nU R                  " SSU0US   D6nU R                  R(                  /S-  nUS   nU Vs/ s H  nUS S U:X  a  USS  OUPM     snUS'   U(       aC  US   nU R*                  nU VVs/ s H  nU Vs/ s H  nUU:X  a  SOSPM     snPM      nnnUUS'   T" 0 UEU	EUS9$ ! [          a  nUc
  UnS n S nAGN[        U5      eS nAff = fs  snf s  snf s  snf s  snf s  snf s  snnf )Nz+Provide at least one of `text` or `images`.tokenizer_init_kwargsr   zAInvalid input text. Please provide a string, or a list of stringsimages_kwargs z1Received inconsistently sized batches of images (z) and text (z).	num_cropszPrompt contained z image tokens but received z images.r   zHere is the original image z0 and here are some crops to help you see better text_kwargsreturn_tensorsreturn_mm_token_type_idsTr!      	input_idstoken_type_ids)datatensor_type )
ValueError_merge_kwargs	tokenizerinit_kwargs
isinstancestrlistimage_processorjoin	boi_tokenlenpop	enumeratezipfinditerstartintreversedreplacefull_image_sequencebos_token_idimage_token_id)$selfr    r!   videosaudior"   output_kwargsbatched_imageseimage_inputsbatch_num_cropstext_with_crops	batch_idxpromptimages_for_itemnum_crops_for_itemmimage_indexesiterable_num_cropsnumidxformatted_image_textr*   r+   text_inputsdouble_bos_token_idr-   xrG   ymm_token_type_idsr   r   r   rer   s$                                  ]/home/james-whalen/.local/lib/python3.13/site-packages/unsloth_zoo/temporary_patches/gemma.py__call__'patch_Gemma3Processor.<locals>.__call__3   ss    <FNJKK**!
"&.."<"<
 
 (!;F!C 	dC  6DD$''
47C0H0H`aa//a-P_B`aL O]^~V$..!1CK!?@~^>"c$i/ GNH[G\\hilmqirhssuv 
 ((8(8(EFO"OLUVYZ^p  WA  MBH	HF5G46KKPV4W X4Wq4W X'3}+==$+C,>+??Z[^_n[oZppxy  &8"0#66=)A-.@-AQC3}K]`aKaDb-b*-/* !)c2Dm.T)U VHC!#s++a9$..9IIyz!hh'7#'=>? - "(0D!DvcTWX\XfXfTgNgNiGj!j5;	2 !W# MB6 \``[_QWNN4>>43K3KL[_D`&}599:JDQ#0#?#C#CD^`d#e nnO$O-2NO#~~::;A=,	Zc#dZcUVQrU6I-IAabEq$PZc#dK  $#K0I!00NW` aW`RS1!M1aqN':!"A1!MW` a
 ->K()!@K!@<!@n]]a  (<!D!F$Q-'(( _ !Y4 a $e "N asN   O 2O<	P/PP
P$P8P
O9O4)O44O9Prb   )NNNN)r`   ,transformers.models.gemma3.processing_gemma3r   transformers.image_utilsr   %transformers.feature_extraction_utilsr   transformers.utilsr   	Exceptionr   r   r   r   r   r   r   r   modelsgemma3processing_gemma3Gemma3Processor)transformersrM   rb   r   r   r   r`   r   s      @@@@@ra   patch_Gemma3Processorrn   (   s    :;VGF0 "^be^e^ I0$y/4HYCZZ[e^ ./e^ 
e^ e^L 	<&&--??OOQ[]efU  :5q99:s   B, ,
C6CCCc                     [         R                  R                  SS5      S:X  a  g  SS Kn U R                  R
                  R                  R                    U R                  R
                  R                  R                     S	S[        4S jjn [        U R                  R
                  R                  S5      (       a6  [        U R                  R
                  R                  R                  SU5        g [        U R                  R
                  R                  R                  SU5        g ! [         a  n[        SU5      s S nA$ S nAff = f)
NUNSLOTH_FORCE_FLOAT320r   2Gemma3ForConditionalGeneration._update_causal_maskis_trainingc                    U R                   R                  R                  S:X  a  U$ Ub  UR                  5       S:X  a  U$ [	        U[
        5      n[        R                  " [        R                  5      R                  nUR                  S S u  pU(       a  UR                  5       nO_[	        U[        5      (       a  UR                  5       nO9[	        U[        R                  5      (       a  UR                  S   O
US   U
-   S-   nUb  UR                  5       S:X  a  U$ [        R                  " X4U[        R                  UR                  S9nU
S:w  a  [        R                   " USS9nU[        R"                  " XR                  S	9UR%                  SS5      :  -  nUS S S S 2S S 24   R'                  U	SSS5      nUb  U
S:w  a  UR)                  S5      UR)                  S5      :H  nS
XS:H  '   UR)                  S5      R+                  UR                  [        R,                  S9nUR/                  5       nUS S 2S S 2S S 2S U
24   R1                  US5      US S 2S S 2S S 2S U
24'   Ub  UR/                  5       nUR                  S   nUS S 2S S 2S S 2S U24   US S 2S S S S 24   R+                  UR                  5      -   nUS:H  nUS S 2S S 2S S 2S U24   R1                  X5      US S 2S S 2S S 2S U24'   U$ )Nflash_attention_2   r,   r   r   )
fill_valuedtypedevice)diagonal)rz   F)ry           )configtext_config_attn_implementationdimr6   r   torchfinfofloat16minshapeget_max_cache_shaper   Tensorfullrz   triuarangereshapeexpand	unsqueezetoboolclonemasked_fill)rH   attention_maskr.   past_key_valuescache_positioninput_tensorrs   using_static_cache	min_dtypeinputs_lead_dimsequence_lengthtarget_lengthcausal_masktoken_type_maskmask_lengthpadding_masks                   ra   _update_causal_maskMpatch_Gemma3ForConditionalGeneration_causal_mask.<locals>._update_causal_mask   s    ;;""77;NN!!%.*<*<*>!*C "!'EKK.22	+7+=+=bq+A(+??AM55+??AM nell;; $$R(#A&81<  %.*<*<*>!*C!!jj,%--`n`u`u

 a**[1=Ku||M:O:OPSaSiSijlnoSppp!$a"23::?ArSUV %/Q*>,66q9^=U=UVW=XXO38Oa/0-77:==k>P>PX]XbXb=cO%++-K5@AqJZ?JZAZ5[5g5g6K1a!1/!112 %%++-K(..r2K 'q!Q'<=qRVX\^_O_@`@c@cdodvdv@wwL'1,L1<Q1l{l=R1S1_1_2K1a+-.     Gemma3Modelr   )F)osenvironget*transformers.models.gemma3.modeling_gemma3ri   rj   modeling_gemma3r   Gemma3ForConditionalGenerationrh   r   r   hasattrr   )rm   rM   r   s      ra   0patch_Gemma3ForConditionalGeneration_causal_maskr      s   	zz~~-s3s:FT9""22>>""22QQ "C CH 	|""))99=II|**11AAMMOdfyz|**11AA``bw  zM  	NW  TOQRSSTs   AD) )
E	3E>E	E	c                     [         R                  R                  SS5      S:X  a  g  SS Kn U R                  R
                  R                  R                    S[        R                  4S jn [        U R                  R
                  R                  R                  SUSS	9  g ! [         a  n[        SU5      s S nA$ S nAff = f)
Nrp   rq   r   rr   r-   c                     [         R                  R                  R                  UU R                  U R
                  S9nUR                  [         R                  5      U R                  -  $ )N)weightpadding_idx)	r   nn
functional	embeddingr   r   r   float32embed_scale)rH   r-   input_embedss      ra   forward4patch_Gemma3TextScaledWordEmbedding.<locals>.forward   sT    xx**44[[** 5 

 u}}-0@0@@@r   r   T	fullgraph)r   r   r   r   ri   rj   r   Gemma3TextScaledWordEmbeddingrh   r   r   r   r   rm   rM   r   s      ra   #patch_Gemma3TextScaledWordEmbeddingr      s    	zz~~-s3s:FT9""22PPA A 	<&&--==[[]fho  ~B  C  TOQRSSTs   .B   
C *B;5C ;C c                  b   [         R                  R                  SS5      S:X  a  g  SS Kn U R                  R
                  R                  R                    S n [        U R                  R
                  R                  R                  SUSS9  g ! [         a  n[        SU5      s S nA$ S nAff = f)	Nrp   rq   r   Gemma3RMSNorm.forwardc                 F   UR                  [        R                  5      nUR                  S5      R	                  SSS9nU[        R
                  " X0R                  -   5      -  nUSU R                  R                  [        R                  5      -   -  n[        R                  " [        R                  5      R                  n[        R                  " [        R                  5      R                  n[        R                  " XWUS9nUR                  [        R                  5      $ )Nr,   rw   Tkeepdim      ?)r   max)r   r   r   powmeanrsqrtepsr   r   r   r   r   clamp)	rH   r]   x_fp32variancehidden_states_fp32output_fp32fp16_maxfp16_minclamped_output_fp32s	            ra   r   $patch_Gemma3RMSNorm.<locals>.forward  s    emm$::a=%%b$%7#ekk(XX2E&FF )C$++..2O,OP ;;u}}-11;;u}}-11#kk+R"%%emm44r   r   Tr   r   r   r   r   ri   rj   r   Gemma3RMSNormrh   r   r   r   s      ra   patch_Gemma3RMSNormr   
  s    	zz~~-s3s:F79""22@@5  	<&&--==KKYX_mqr)  72A667   .B 
B.B)#B.)B.c                  b   [         R                  R                  SS5      S:X  a  g  SS Kn U R                  R
                  R                  R                    S n [        U R                  R
                  R                  R                  SUSS9  g ! [         a  n[        SU5      s S nA$ S nAff = f)	Nrp   rq   r   zGemma3MLP.forwardc                 P   U R                  U5      nU R                  U5      nUR                  [        R                  5      nUR                  [        R                  5      nU R                  U5      nXe-  nUR                  [        R                  5      nU R                  U5      n	U	$ N)	gate_projup_projr   r   r   act_fnr   	down_proj)
rH   r]   gate_proj_outup_proj_outgate_proj_fp32up_proj_fp32activated_fp32intermediate_fp32intermediate_fp16down_proj_outs
             ra   r    patch_Gemma3MLP.<locals>.forward0  s    q)ll1o '))%--8"~~emm4^4*9 .00?'89r   r   Fr   )r   r   r   r   ri   rj   r   	Gemma3MLPrh   r   r   r   s      ra   patch_Gemma3MLPr   (  s    	zz~~-s3s:F39""22<< 	<&&--==GGT[ino%  3.223r   c                    ^^^^	^
 [         R                  R                  SS5      S:X  a  g  SS Kn U R                  R
                  R                  R                    SSKJmJ	nJ
n  [        R                  R                  R                   m	[        R"                  R%                  T	SS9m	[        R&                  R(                  m
U4S jm [+        TSSS	9m  SS
[        R,                  S[        R,                  S[.        [        R,                     S[.        [0           S[.        [        R2                     S[4        S[6        [        R,                  [.        [        R,                     [.        [6        [        R,                        4   4UU	U
4S jjjm / n  SS
[        R,                  S[        R,                  S[.        [        R,                     S[.        [0           S[.        [        R2                     S[4        S[6        [        R,                  [.        [        R,                     [.        [6        [        R,                        4   4U4S jjjnUR9                  U5          SS
[        R,                  S[        R,                  S[.        [        R,                     S[.        [0           S[.        [        R2                     S[4        S[6        [        R,                  [.        [        R,                     [.        [6        [        R,                        4   4U4S jjjnUR9                  U5        [;        U R                  R
                  R                  R                  SU5        g ! [         a  n[        SU5      s S nA$ S nAff = f)Nrp   rq   r   apply_rotary_pos_embALL_ATTENTION_FUNCTIONSeager_attention_forwardGemma3Attention.forwardT	recursivec
                   > UR                  U5      R                  [        R                  5      R	                  SS5      n
UR                  U5      R                  [        R                  5      R	                  SS5      nUR                  U5      R                  [        R                  5      R	                  SS5      nU" U
5      nU	" U5      nUR                  [        R                  5      n
UR                  [        R                  5      n[        U[        5      (       a  [        U5      S:X  d  [        S5      eUu  nnUR                  [        R                  5      nUR                  [        R                  5      nT" XUUS9u  pUnUb=  UR                  [        R                  :w  a  UR                  [        R                  5      nU
R                  5       UR                  5       UR                  5       UUU4$ Nr   r,   zGPosition embeddings not provided as (cos, sin) tuple to Gemma3Attention)cossin)viewr   r   r   	transposer6   tupler<   r2   ry   r   
contiguoushidden_statesquery_states_fp16key_states_fp16value_states_fp16query_hidden_shapekv_hidden_shapeposition_embeddingsr   q_normk_normquery_states_fp32key_states_fp32value_states_fp32query_norm_out_fp16key_norm_out_fp16r   r   cos_fp32sin_fp32attn_mask_for_sdpar   s                       ra   prepare&patch_Gemma3Attention.<locals>.prepareP  s    .223EFII%--Xbbcdfgh+00ADDU]]S]]^_abc-22?CFFu}}U__`acde %%67$_5/225==A-00? .663?R;SWX;Xfgg&S66%--(66%--(-ABSlt  }E  .F* ,).@.F.F%**.T!3!6!6u}}!E((*&&(((*
 	
r   r   dynamicr   r   r   past_key_valuer   r"   r#   c                   > UR                   u  pxn	UR                   S S n
[        U SU R                  R                  5      n[        U SU R                  R                  5      nU R
                  nXxX4nXxX4nU R                  U5      nU R                  U5      nU R                  U5      n T" UUUUUUUUU R                  U R                  5
      u  nnnnnnUbT  UUUS.n[        U S5      (       a  U R                  b  U R                  US'   UR                  UUU R                  U5      u  nn UR                   S   S:  =(       a    US L =(       a    [        U SS	5      nT!" 5       (       a/  [        U[         R"                  5      (       a  UR%                  5       nT " UR'                  5       UR'                  5       UR'                  5       UU R(                  (       a  U R*                  OS
U[        U SS 5      [        U SS5      S:g  S9nS nUR-                  SS5      R'                  5       nUR/                  XxS5      nUR1                  [         R2                  5      nU R5                  U5      nUU4$ Nrw   	num_headsnum_key_value_heads)r   r   r   sliding_windowr,   r   	is_causalTr|   scalingnum_key_value_groups)	attn_mask	dropout_pr  scale
enable_gqa)r   getattrr}   num_attention_headsr  head_dimq_projk_projv_projr   r   r   r  update	layer_idxr6   r   r   itemr   trainingattention_dropoutr   r   r   r   o_proj"rH   r   r   r   r  r   r"   bszq_len_input_shaper  r  r  r   r   r   r   r   r   r  r  r  r  r  cache_kwargsr  attn_output_fp32attn_weightsattn_output_fp16attn_output_projectedr  scaled_dot_product_attentiontorch_jit_is_tracings"                                  ra   forward_function/patch_Gemma3Attention.<locals>.forward_function  s    &++A#))#2.
 D+t{{/N/NO	%d,A4;;CbCbc== ")>!*=H !KK6 KK6 KK6	8 KKKK
	
 %NL t-..43F3F3R262E2E./1?1F1F!2DNNL2.O.
	 &++A.2v7IT7QvV]^bdoquVv	  !!jELL&I&IW`WeWeWg97((*&&(((**26--..S!D)T2 '=qAQF	
  ,55a;FFH ,33CC+..u}}= !%,< =$l22r   c                    > T" XX#XE40 UD6$ r   r1   rH   r   r   r   r  r   r"   r1  s          ra   r   &patch_Gemma3Attention.<locals>.forward  )      5HZh  D  }C  D  	Dr   r   c                    > T" XX#XE40 UD6$ r   r1   rH   r   r   r   r   r   r"   r1  s          ra   r   r5    )      5HZi  E  ~D  E  	Er   r   NNr   r   r   r   ri   rj   r   Gemma3Attentionr   r   r   rh   r   r   r   r   r/  compilerdisablejit
is_tracingr   r   r   r   
LongTensorr   r   appendr   rm   r   r   rM   	functionsr   r   r1  r  r/  r0  s         @@@@@ra   patch_Gemma3AttentionrE  D  s   	zz~~-s3s:F99""22BB 	F  	F $)88#6#6#S#S #(>>#9#9:Vdh#9#i  99//-
\ 	GFG +/59x3||x3 #\\x3 !.	x3
 !x3 !!1!12x3 x3 
u||Xell3XeELL>Q5RR	Sx3 x3r 	I +/59	D||	D #\\	D !.		D
 !	D !!1!12	D 	D 
u||Xell3XeELL>Q5RR	S	D 	D W ,059	E||	E #\\	E !.		E
 "%	E !!1!12	E 	E 
u||Xell3XeELL>Q5RR	S	E 	E W"<#6#6#=#=#M#M#]#]_hjstS  94a889   8M 
M7!M2,M72M7c                  b   [         R                  R                  SS5      S:X  a  g  SS Kn U R                  R
                  R                  R                    S n [        U R                  R
                  R                  R                  SUSS	9  g ! [         a  n[        SU5      s S nA$ S nAff = f)
Nrp   rq   1r   r   c                 \   UR                  [        R                  5      nUR                  S5      R	                  SSS9nU[        R
                  " X0R                  -   5      -  nUSU R                  R                  [        R                  5      -   -  nUR                  UR                  5      $ )Nr,   rw   Tr   r   )	r   r   r   r   r   r   r   r   ry   )rH   r]   r   r   r   r   s         ra   r   ,patch_Gemma3RMSNorm_generic.<locals>.forward!  s    emm$::a=%%b$%7#ekk(XX2E&FF(C$++..2O,OP~~agg&&r   r   Tr   r   r   s      ra   patch_Gemma3RMSNorm_genericrK    s    	zz~~-s3s:F79""22@@' 	<&&--==KKYX_mqr  72A667r   c                    ^^^^	^
 [         R                  R                  SS5      S:X  a  g  SS Kn U R                  R
                  R                  R                    SSKJmJ	nJ
n  [        R                  R                  R                   m	[        R"                  R%                  T	SS9m	[        R&                  R(                  m
U4S	 jm [+        TSSS
9m  SS[        R,                  S[        R,                  S[.        [        R,                     S[.        [0           S[.        [        R2                     S[4        S[6        [        R,                  [.        [        R,                     [.        [6        [        R,                        4   4UU	U
4S jjjm / n  SS[        R,                  S[        R,                  S[.        [        R,                     S[.        [0           S[.        [        R2                     S[4        S[6        [        R,                  [.        [        R,                     [.        [6        [        R,                        4   4U4S jjjnUR9                  U5          SS[        R,                  S[        R,                  S[.        [        R,                     S[.        [0           S[.        [        R2                     S[4        S[6        [        R,                  [.        [        R,                     [.        [6        [        R,                        4   4U4S jjjnUR9                  U5        [;        U R                  R
                  R                  R                  SU5        g ! [         a  n[        SU5      s S nA$ S nAff = f)Nrp   rq   rH  r   r   r   Tr   c
                 Z  > UR                  U5      R                  SS5      n
UR                  U5      R                  SS5      nUR                  U5      R                  SS5      nU" U
5      nU	" U5      nUn
Un[        U[        5      (       a  [	        U5      S:X  d  [        S5      eUu  nnUnUnT" XUUS9u  pUnUb;  UR                  [        R                  :w  a  UnUR                  U
R                  5      nU
R                  5       UR                  5       UR                  5       UUU4$ r   )r   r   r6   r   r<   r2   ry   r   r   r   r   r   s                       ra   r  .patch_Gemma3Attention_generic.<locals>.prepare:  sT    .223EFPPQRTUV+00AKKAqQ-22?CMMaQRS %%67$_5/- .663?R;SWX;Xfgg&S-ABSlt  }E  .F* ,).@.F.F%**.T!3!3!6!67H7N7N!O((*&&(((*
 	
r   r
  r   r   r   r  r   r"   r#   c                   > UR                   u  pxn	UR                   S S n
[        U SU R                  R                  5      n[        U SU R                  R                  5      nU R
                  nXxX4nXxX4nU R                  U5      nU R                  U5      nU R                  U5      n T" UUUUUUUUU R                  U R                  5
      u  nnnnnnUbT  UUUS.n[        U S5      (       a  U R                  b  U R                  US'   UR                  UUU R                  U5      u  nn UR                   S   S:  =(       a    US L =(       a    [        U SS	5      nT!" 5       (       a/  [        U[         R"                  5      (       a  UR%                  5       nT " UR'                  5       UR'                  5       UR'                  5       UU R(                  (       a  U R*                  OS
U[        U SS 5      [        U SS5      S:g  S9nS nUR-                  SS5      R'                  5       nUR/                  XxS5      nUnU R1                  U5      nUU4$ r  )r   r  r}   r  r  r  r  r  r  r   r   r   r  r  r   r6   r   r   r!  r   r"  r#  r   r   r$  r%  s"                                  ra   r1  7patch_Gemma3Attention_generic.<locals>.forward_functionm  s~    &++A#))#2.
 D+t{{/N/NO	%d,A4;;CbCbc== ")>!*=H !KK6 KK6 KK6	8 KKKK
	
 %NL t-..43F3F3R262E2E./1?1F1F!2DNNL2.O.
	 &++A.2v7IT7QvV]^bdoquVv	  !!jELL&I&IW`WeWeWg97((*&&(((**26--..S!D)T2 '=qAQF	
  ,55a;FFH ,33CC+ !%,< =$l22r   c                    > T" XX#XE40 UD6$ r   r1   r4  s          ra   r   .patch_Gemma3Attention_generic.<locals>.forward  r6  r   r   c                    > T" XX#XE40 UD6$ r   r1   r8  s          ra   r   rR    r9  r   r   r:  r;  rC  s         @@@@@ra   patch_Gemma3Attention_genericrT  -  s   	zz~~-s3s:F99""22BB 	F  	F $)88#6#6#S#S #(>>#9#9:Vdh#9#i  99//.
^ 	GFG +/59x3||x3 #\\x3 !.	x3
 !x3 !!1!12x3 x3 
u||Xell3XeELL>Q5RR	Sx3 x3r 	I +/59	D||	D #\\	D !.		D
 !	D !!1!12	D 	D 
u||Xell3XeELL>Q5RR	S	D 	D W ,059	E||	E #\\	E !.		E
 "%	E !!1!12	E 	E 
u||Xell3XeELL>Q5RR	S	E 	E W"<#6#6#=#=#M#M#]#]_hjstW  94a889rF  )(typingr   r   r   r   r   r   r	   r
   r   torch.nnr   r   commonr   r   utilsr   r   r   r   r   r   r   r   r   r   r   r   r   inspectrn   rB  r   r   r   r   rE  rK  rT  r1   r   ra   <module>rZ     s  " J I I   	 4    rgf    . /QNd    I JC"    < =s4    , -p0     )Ou`    . /s"    4 5Ruf    6 7r   