
    
3j                     p    S SK r S SKJrJrJr  S SKJr   " S S\5      r " S S5      rS r	 " S	 S
5      r
g)    N)KSAMPLER	CFGGuidersampling_function)trangec                   B   ^  \ rS rSrU 4S jrS rS r0 S4S jrSrU =r	$ )FlowEditGuider   c                 2   > [         TU ]  U5        0 U l        g N)super__init__cfgs)selfmodel_patcher	__class__s     ]/home/wildlama/comfy/ComfyUI/custom_nodes/ComfyUI-LTXVideo/tricks/nodes/ltx_flowedit_nodes.pyr   FlowEditGuider.__init__   s    '	    c                 &    U R                  U5        g r   )inner_set_condsr   kwargss     r   	set_condsFlowEditGuider.set_conds   s    V$r   c                     0 UEU l         g r   r   r   s     r   set_cfgsFlowEditGuider.set_cfgs   s    vJ	r   Nc                    US   S   nU R                   R                  U S3S 5      nU R                   R                  U S3S 5      nU R                  R                  XPR                  5      n[	        U R
                  UUUUUUUS9$ )Ntransformer_optionslatent_type	_positive	_negative)model_optionsseed)condsgetr   cfgr   inner_model)	r   xtimestepr$   r%   r!   positivenegativer(   s	            r   predict_noiseFlowEditGuider.predict_noise   s    #$9:=I::>>[M";TB::>>[M";TBiimmK2 '	
 		
r   r   )
__name__
__module____qualname____firstlineno__r   r   r   r.   __static_attributes____classcell__)r   s   @r   r   r      s#    % 8: 
 
r   r   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	LTXFlowEditCFGGuiderNode"   c                 6    SSSSSSSSSSSS	.4SS
SSSS	.4S.0$ )Nrequired)MODEL)CONDITIONINGFLOAT   r       g{Gz?)defaultminmaxstepg      @)model
source_pos
source_neg
target_pos
target_neg
source_cfg
target_cfg ss    r   INPUT_TYPES$LTXFlowEditCFGGuiderNode.INPUT_TYPES#   sS     #//// !!4FPTU
  #A6HRVW
 	
r   )GUIDER
get_guider	ltxtricksc                 `    [        U5      nUR                  UUUUS9  UR                  XgS9  U4$ )N)source_positivesource_negativetarget_positivetarget_negative)sourcetarget)r   r   r   )	r   rD   rE   rF   rG   rH   rI   rJ   guiders	            r   rQ   #LTXFlowEditCFGGuiderNode.get_guider<   sE      &&&&&	 	 	
 	z=yr   rK   N)r0   r1   r2   r3   classmethodrN   RETURN_TYPESFUNCTIONCATEGORYrQ   r4   rK   r   r   r7   r7   "   s*    
 
& LHHr   r7   c                 ~   ^ ^^ [         R                  " U5      m[         R                  " 5        SUUU 4S jj5       nU$ )Nc           	      F  > Uc  0 OUnUR                  S0 5      nUR                  S0 5      n0 UEnXvS'   XcS'   UR                  SS5      nUc  SnO[        R                  " U5      US'   0 UESS0 UESS0E00En	UTS  nUR                  5       n
[	        U5      S-
  nUR                  UR                  S   /5      n[        XS9 H  nX-   n[        R                  " UR                  TS	9R                  UR                  5      nSU-
  U-  X-  -   nXT-
  :  a(  U
UU-
  U-  -   nSUS'   SU	S   S   S'   U " UX-  40 U	D6nOXT-
  :X  a  U
UU-
  U-  -   n
U
nSnS
US'   U " UX-  40 UD6nUU-
  U-  nXUS-      X-   -
  U-  -  n
Uc  M  U" U
U
UT-   X-   X-   S.5        M     U
$ )Nr$   r    denoise_mask   r!   rX   r   )disable)	generatorrY   )r*   denoisedisigma	sigma_hat)r'   torch	ones_likeclonelennew_onesshaper   randntodevice)rD   x_initsigmas
extra_argscallbackrd   r$   r    rb   source_extra_argsx_tgtNs_inrg   rh   noisezt_srczt_tgtvt_srcvt_tgtv_deltare   refine_steps
skip_stepss                        r   flowedit_sample,get_flowedit_sample.<locals>.flowedit_sampleT   s;    &-R:
";+//0ErJ5!45/B+,&3?#!~~na8L).)FJ~&

%'W*='W}h'W
 
$K!OQ01+AIEKK	BEEfmmTE%i6)EM9F|##&6/\!AA5=#M2  "/23HI! vu|I7HIL((!Vf_$DDE19.65<>:>F,6GQUmfi/7::E#"$)^!'%+Y5 ,H r   )NNN)rj   manual_seedno_grad)r   r   r%   r   re   s   ``  @r   get_flowedit_sampler   Q   s?    !!$'I
]]_GKA A AF r   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	LTXFlowEditSamplerNode   c                 8    SSSSS.4SSSSS.4SSSSS.4S.0 S.$ )NINT   r   r?   )r@   rA   rB   )r   r   r%   )r:   optionalrK   rL   s    r   rN   "LTXFlowEditSamplerNode.INPUT_TYPES   sR    
  !!4FG
  !!4FG! Aa@R ST
 
 	
r   )SAMPLERbuildrR   c                 2    [        [        XU5      5      nU4$ r   )r   r   )r   r   r   r%   samplers        r   r   LTXFlowEditSamplerNode.build   s    .zNOzr   rK   N)r0   r1   r2   r3   r\   rN   r]   r^   r_   r   r4   rK   r   r   r   r      s*    
 
   LHHr   r   )rj   comfy.samplersr   r   r   tqdmr   r   r7   r   r   rK   r   r   <module>r      s9     A A 
Y 
8, ,^GT r   