
    
3j                     ~    S SK r S SKrS SKrS SKrS SKJs  Jr  S SK	J
r
  S SKJr  S\" S/5      0rS r " S S5      rg)	    N)optimized_attention)	rearrangelayers   c                    U R                   S   n[        XUS-  S-
  -
  5      nUS-
  S-  n[        R                  " U* XAS9n[        R                  " SXR-  R                  S5      -  5      nXfR                  5       -  nUR                  U R                  U R                  S9n[        R                  " US S 2S 4   US S S 24   5      nUR                  U R                   S   SUR                   S	   UR                   S   5      nUS-  US-  US-  US-  /n	[        R                  " X	S
S9n [        R                  " XU R                   S   S9n U $ )N            ?)stepsg      )devicedtyper   reflect)mode)groups)shapemintorchlinspaceexppowsumtor   r   mmexpandFpadconv2d)
imgkernel_sizesigmaheight
ksize_halfxpdfx_kernelkernel2dpaddings
             W/home/wildlama/comfy/ComfyUI/custom_nodes/ComfyUI-LTXVideo/tricks/nodes/ltx_pag_node.pygaussian_blur_2dr+      s,   YYr]FkVaZ!^#<=K/S(J
{JBA
))DAI??1--
.CWWYH{{#**CII{>HxxD)8D!G+<=Hsyy}a1BHNNSTDUVHa!1;!3C[TUEUVG
%%9
-C
((32
7CJ    c                   >    \ rS rSr\S 5       rSrSrSr\	S4S jr
Srg	)
LTXPerturbedAttentionNode$   c           
      J    SSSSSSSS.4SSSSSSS.4SS	SSSSS.4S
.SS0S.$ )NMODELFLOATg       @g        g      Y@g{Gz?)defaultr   maxsteproundr   g      @)modelscalerescalecfgattn_override)ATTN_OVERRIDE)requiredoptional )ss    r*   INPUT_TYPES%LTXPerturbedAttentionNode.INPUT_TYPES%   s}     $#&"$ $!%	 #&"$ $!%	 #&"$ $!%	- D  !3E&
 &	
r,   r1   patchzltxtricks/attnPAGc                    ^^^^^^	^
 UR                  5       nSS jm	SU4S jjm
UUUU	UUU
4S jnUR                  U5        U4$ )Nc                     U$ )Nr@   )qkvheadsattn_precisiontransformer_optionss         r*   pag_fn/LTXPerturbedAttentionNode.patch.<locals>.pag_fnY   s    Hr,   c                    > U R                   u  pgnUS   u  ppn[        U SXS9n [        R                  " ST-  5      S-   [        R                  " ST-  5      S-  -
  n[	        XT5      n [        U SU
S9n [        XX#US	9$ )
Noriginal_shapezb (f h w) d -> b (f d) w h)hw   r
   r	   zb (f d) w h -> b (f h w) d)f)rL   )r   r   mathceilr+   r   )rH   rI   rJ   rK   rL   rM   _sequence_lengthbcrU   rR   rS   r!   r9   s                 r*   seg_fn/LTXPerturbedAttentionNode.patch.<locals>.seg_fn\   s    $%GG!A/0@AMA!!9QDA))AI.2TYYq5y5IA5MMK 7A!9Q?A&qQnUUr,   c           
        > U S   nU S   nU S   nU R                  SS 5      c  SOSnU S   nU S   nU S	   R                  5       nU S
   nTS:X  a  US:X  a  U$ X2U-
  -   $ TS:X  a  TOTn	TS    H.  n
[        R                  R	                  XySS[        U
5      5      nM0     [        R                  R                  X/XU5      u  nUTX#-
  -  -   TX+-
  -  -   nTS:  a0  UR                  5       UR                  5       -  nTU-  ST-
  -   nX-  nU$ )Nr8   cond_denoiseduncond_denoiseduncondr
   r	   condr"   model_optionsinputr   rE   r   layer	self_attn)	getcopycomfymodel_patcherset_model_options_patch_replaceintsamplerscalc_cond_batchstd)argsr8   	cond_preduncond_pred	len_condsrb   r"   rc   r%   attn_fn	block_idx	perturbedoutputfactorr<   	attn_typer;   rN   r:   r9   r\   s                 r*   post_cfg_function:LTXPerturbedAttentionNode.patch.<locals>.post_cfg_functionf   sQ   ME_-I01K!XXh5=1I<DME 1668MWAz>$$"+&=>> )U 2fG*84	 % 3 3 S S!G[#i.! 5
 !>>99vqLY 0129012 
 {"6::<7 6)Q[9Mr,   )NN)clone#set_model_sampler_post_cfg_function)selfr8   r9   r:   r;   r<   ry   mrz   rN   r\   s     `````  @@r*   rD   LTXPerturbedAttentionNode.patchT   s>     KKM		V+	 +	Z 	
--.?@tr,   r@   N)__name__
__module____qualname____firstlineno__classmethodrB   RETURN_TYPESFUNCTIONCATEGORYDEFAULT_PAG_LTXrD   __static_attributes__r@   r,   r*   r.   r.   $   s5    '
 '
R LHH 9HSXAr,   r.   )rV   comfy.model_patcherri   comfy.samplersr   torch.nn.functionalnn
functionalr   comfy.ldm.modules.attentionr   einopsr   setr   r+   r.   r@   r,   r*   <module>r      s>          ; S"Y'.q qr,   