
    +jq                       d dl mZ d dlmZmZ d dlZd dlZd dlmZ erd dl	m
Z
 d dlZd dl	Zd dlZd dlZ G d d          Z G d d	          Z G d
 d          Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Z G d de          Z G d d          Z G d de          Z G d  d!          Z G d" d#          Z G d$ d%          Z G d& d'          Z G d( d)          Z  G d* d+          Z! G d, d-          Z" G d. d/          Z#eeeeeeeee!e"e#eeeeeeeeegZ$i Z%i Z&e$D ]Z'e'e%e'j(        <   e'j)        e&e'j(        <   dS )0    )annotations)TYPE_CHECKINGUnionN)IterableCLIPc                  L    e Zd Zd ZdZed             ZdZdZdZ	dZ
dZ	 dddZdS )PairConditioningSetPropertieszCond Pair Set Propsc                2    ddddddddfdd	gfd
dddddS )NCONDITIONINGFLOAT      ?              $@{Gz?defaultminmaxstepr   mask bounds)positive_NEWnegative_NEWstrengthset_cond_areaMASKHOOKSTIMESTEPS_RANGEmaskhooks	timestepsrequiredoptional ss    8/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_hooks.pyINPUT_TYPESz)PairConditioningSetProperties.INPUT_TYPES   sX     !3 2$#c$X\&]&]^#,m"<!>	  ##1 
 
 	
    Tr   r   positivenegativeadvanced/hooks/cond pairset_propertiesNr   floatr   strr$   torch.Tensorr%   comfy.hooks.HookGroupr&   tuplec                ^    t           j                            ||g|||||          \  }}	||	fS N)condsr   r   r$   r%   timesteps_rangecomfyr%   set_conds_props)
selfr   r   r   r   r$   r%   r&   final_positivefinal_negatives
             r-   r5   z,PairConditioningSetProperties.set_properties+   sL     */)D)DLZfKgMUerIMUZlu *E *w *w& //r/   NNN
r   r6   r   r7   r$   r8   r%   r9   r&   r:   __name__
__module____qualname__NodeIdNodeNameclassmethodr.   EXPERIMENTALRETURN_TYPESRETURN_NAMESCATEGORYFUNCTIONr5   r*   r/   r-   r
   r
      sr        ,F$H
 
 [
 L3L+L)HH ei0 0 0 0 0 0 0r/   r
   c                  L    e Zd Zd ZdZed             ZdZdZdZ	dZ
dZ	 dddZdS )'PairConditioningSetPropertiesAndCombinezCond Pair Set Props Combinec           
     6    ddddddddddfdd	gfd
dddddS )Nr   r   r   r   r   r   r   r   r   )r2   r3   r   r   r   r   r   r   r!   r#   r'   r*   r+   s    r-   r.   z3PairConditioningSetPropertiesAndCombine.INPUT_TYPES6   s^     /. 2 2$#c$X\&]&]^#,m"<!>  ##1 
 
 	
r/   Tr0   r1   r4   r5   Nr   r6   r   r7   r$   r8   r%   r9   r&   r:   c
           	     d    t           j                            ||g||g|||||	          \  }
}|
|fS N)r=   	new_condsr   r   r$   r%   r>   r@   r%   set_conds_props_and_combine)rB   r2   r3   r   r   r   r   r$   r%   r&   rC   rD   s               r-   r5   z6PairConditioningSetPropertiesAndCombine.set_propertiesN   sf     */)P)PX`bjWk  yE  GS  xTYaq~UYaf  yB *Q *C *C& //r/   rE   rF   rG   r*   r/   r-   rT   rT   3   sr        6F,H
 
 [
" L3L+L)HH ei0 0 0 0 0 0 0r/   rT   c                  H    e Zd Zd ZdZed             ZdZdZdZ	dZ
	 dddZdS )ConditioningSetPropertieszCond Set Propsc                0    dddddddfdd	gfd
dddddS )Nr   r   r   r   r   r   r   r   r   )cond_NEWr   r   r   r   r!   r#   r'   r*   r+   s    r-   r.   z%ConditioningSetProperties.INPUT_TYPESY   sU     /$#c$X\&]&]^#,m"<!>  ##1 
 
 	
r/   Tr   advanced/hooks/cond singler5   Nr   r6   r   r7   r$   r8   r%   r9   r&   r:   c                X    t           j                            |g|||||          \  }|fS r<   r?   )rB   r^   r   r   r$   r%   r&   
final_conds           r-   r5   z(ConditioningSetProperties.set_propertiesm   s@     338*<DTa8<E[d 4 f f }r/   rE   rF   rH   rI   rJ   rK   rL   rM   r.   rN   rO   rQ   rR   r5   r*   r/   r-   r\   r\   V   sm        (FH
 
 [
 L$L+HH ei      r/   r\   c                  H    e Zd Zd ZdZed             ZdZdZdZ	dZ
	 dddZdS )#ConditioningSetPropertiesAndCombinezCond Set Props Combinec                2    ddddddddfdd	gfd
dddddS )Nr   r   r   r   r   r   r   r   r   )condr^   r   r   r   r   r!   r#   r'   r*   r+   s    r-   r.   z/ConditioningSetPropertiesAndCombine.INPUT_TYPESx   sX     +.$#c$X\&]&]^#,m"<!>	  ##1 
 
 	
r/   Tr   r_   r5   Nr   r6   r   r7   r$   r8   r%   r9   r&   r:   c           	     \    t           j                            |g|g|||||          \  }|fS rW   rY   )	rB   rf   r^   r   r   r$   r%   r&   ra   s	            r-   r5   z2ConditioningSetPropertiesAndCombine.set_properties   sH     ??tfYaXbHP`mDHPUgp @ r r }r/   rE   rF   rb   r*   r/   r-   rd   rd   u   sm        2F'H
 
 [
 L$L+HH ei      r/   rd   c                  F    e Zd Zd ZdZed             ZdZdZdZ	dZ
dZd Zd	S )
PairConditioningCombinezCond Pair Combinec                    ddddddiS )Nr(   r   )
positive_A
negative_A
positive_B
negative_Br*   r+   s    r-   r.   z#PairConditioningCombine.INPUT_TYPES   s'     ////	 
 	
r/   Tr0   r1   r4   combinec                Z    t           j                            ||g||g          \  }}||fS )N)r=   rX   rY   )rB   rk   rl   rm   rn   rC   rD   s          r-   ro   zPairConditioningCombine.combine   sL    ).)P)PXbdnWo  }G  IS  |T)P  *V  *V&00r/   N)rH   rI   rJ   rK   rL   rM   r.   rN   rO   rP   rQ   rR   ro   r*   r/   r-   ri   ri      sa        &F"H
 
 [
 L3L+L)HH1 1 1 1 1r/   ri   c                  L    e Zd ZdZdZed             ZdZdZdZ	dZ
dZ	 dddZd	S )$PairConditioningSetDefaultAndCombine!PairConditioningSetDefaultCombinezCond Pair Set Default Combinec                    dddddddidS )Nr   )r2   r3   positive_DEFAULTnegative_DEFAULTr%   r   r'   r*   r+   s    r-   r.   z0PairConditioningSetDefaultAndCombine.INPUT_TYPES   s5     .-$5$5	  

 

 
	
r/   Tr0   r1   r4   set_default_and_combineNr%   r9   c                \    t           j                            ||g||g|          \  }}||fS N)r=   rX   r%   r@   r%   set_default_conds_and_combine)rB   r2   r3   ru   rv   r%   rC   rD   s           r-   rw   z<PairConditioningSetDefaultAndCombine.set_default_and_combine   sR    ).)R)RZbdlYm  {K  M]  z^Y^ *S *` *`&//r/   Nr%   r9   )rH   rI   rJ   rK   rL   rM   r.   rN   rO   rP   rQ   rR   rw   r*   r/   r-   rr   rr      sq        0F.H
 
 [
 L3L+L)H(H >B0 0 0 0 0 0 0r/   rr   c                  H    e Zd ZdZdZed             ZdZdZdZ	dZ
	 dddZdS ) ConditioningSetDefaultAndCombineConditioningSetDefaultCombinezCond Set Default Combinec                    dddddidS )Nr   )rf   cond_DEFAULTr%   r   r'   r*   r+   s    r-   r.   z,ConditioningSetDefaultAndCombine.INPUT_TYPES   s/     * 1 
 
 
 	
r/   Tr   r_   rw   Nr%   r9   c                T    t           j                            |g|g|          \  }|fS ry   rz   )rB   rf   r   r%   final_conditionings        r-   rw   z8ConditioningSetDefaultAndCombine.set_default_and_combine   s=     % I IQUPVcobpNS !J !U !U	"$$r/   r|   r}   )rH   rI   rJ   rK   rL   rM   r.   rN   rO   rQ   rR   rw   r*   r/   r-   r   r      sl        ,F)H	
 	
 [	
 L$L+H(H >B% % % % % % %r/   r   c                  F    e Zd Zd ZdZed             ZdZdZdZ	dZ
dddZdS )SetClipHookszSet CLIP Hooksc                ,    dddddfddddfdddid	S )
Nr   BOOLEANTr   advancedF)clipapply_to_condsschedule_clipr%   r   r'   r*   r+   s    r-   r.   zSetClipHooks.INPUT_TYPES   sL     "#,$D.Q.Q"R"+D-Q-Q!R  	
 	
 		
r/   Tr   zadvanced/hooks/clipapply_hooksNr   r   r   boolr   r%   r9   c                x   ||                     d          }|r||_        |                                 |j        _        ||_        |j        s|j        j                            d            |j                            |t          j        	                    t          j        j
        j                             |fS )NT)disable_dynamic)cloneapply_hooks_to_condspatcherforced_hooksuse_clip_scheduleset_keyframes_on_hooksregister_all_hook_patchesr@   r%   create_target_dictEnumWeightTargetClip)rB   r   r   r   r%   s        r-   r   zSetClipHooks.apply_hooks   s    ::d:33D 2,1)(-DL%%2D") G)@@FFFL225%+:X:XY^YdYuYz:{:{|||wr/   r|   )r   r   r   r   r   r   r%   r9   )rH   rI   rJ   rK   rL   rM   r.   rN   rO   rQ   rR   r   r*   r/   r-   r   r      sf        FH

 

 [

 LL$HH
 
 
 
 
 
 
r/   r   c                  P    e Zd Zg dZd ZdZed             ZdZdZ	dZ
dZdZddZdS )ConditioningTimestepsRange)zprompt schedulingztimestep segmentszconditioning phaseszTimesteps Rangec                ,    dddddddfddddddfdiS )Nr(   r   r   r   MbP?r   )start_percentend_percentr*   r+   s    r-   r.   z&ConditioningTimestepsRange.INPUT_TYPES	  sE     ")s3s\a+b+b!c 'SSZ_)`)`a 
 	
r/   T)r"   r"   r"   )r"   BEFORE_RANGEAFTER_RANGEzadvanced/hookscreate_ranger   r6   r   c                    ||fd|f|dffS )Nr   r   r*   )rB   r   r   s      r-   r   z'ConditioningTimestepsRange.create_range  s    ,sM.B[RUDVWWr/   N)r   r6   r   r6   )rH   rI   rJ   SEARCH_ALIASESrK   rL   rM   r.   rN   rO   rP   rQ   rR   r   r*   r/   r-   r   r     sw        VVVN)F H
 
 [
 LLLELHHX X X X X Xr/   r   c                  L    e Zd Zd ZdZd Zed             ZdZdZ	dZ
dZdddZdS )CreateHookLorazCreate Hook LoRAc                    d | _         d S r|   )loaded_lorarB   s    r-   __init__zCreateHookLora.__init__$  s    r/   c                Z    t          j        d          fddddddfddddddfdd	d
idS )Nlorasr   r         4      4@r   r   )	lora_namestrength_modelstrength_clip
prev_hooksr   r'   folder_pathsget_filename_listr+   s    r-   r.   zCreateHookLora.INPUT_TYPES'  sf     +<WEEH#*ERV`d,e,e"f")s5QU_c+d+d!e  j	
 	
 		
r/   Tr   advanced/hooks/createcreate_hookNr   r7   r   r6   r   r   r9   c                   |t           j                                        }|                                 |dk    r	|dk    r|fS t	          j        d|          }d }| j        .| j        d         |k    r| j        d         }n| j        }d | _        ~|*t           j                            |d          }||f| _        t           j        	                    |||          }|
                    |          fS )Nr   r      T)	safe_load)lorar   r   )r@   r%   	HookGroupr   r   get_full_pathr   utilsload_torch_filecreate_hook_loraclone_and_combine)	rB   r   r   r   r   	lora_pathr   tempr%   s	            r-   r   zCreateHookLora.create_hook9  s    ..00JQ=A#5#5=  .w	BB	'"i//'*'#' <;..yD.IID )40D,,$~er,ss,,U3355r/   r|   )r   r7   r   r6   r   r6   r   r9   rH   rI   rJ   rK   rL   r   rM   r.   rN   rO   rQ   rR   r   r*   r/   r-   r   r   !  sw        F!H      

 

 [

 LL&HH6 6 6 6 6 6 6r/   r   c                  F    e Zd Zd ZdZed             ZdZdZdZ	dZ
dddZdS )CreateHookLoraModelOnlyzCreate Hook LoRA (MO)c                J    t          j        d          fddddddfdd	d
idS )Nr   r   r   r   r   r   r   )r   r   r   r   r'   r   r+   s    r-   r.   z#CreateHookLoraModelOnly.INPUT_TYPESU  sP     +<WEEH#*ERV`d,e,e"f 
 j
 
 	
r/   Tr   r   create_hook_model_onlyNr   r7   r   r6   r   r9   c                4    |                      ||d|          S )Nr   )r   r   r   r   r   )rB   r   r   r   s       r-   r   z.CreateHookLoraModelOnly.create_hook_model_onlyf  s!    )Nbcpz{{{r/   r|   )r   r7   r   r6   r   r9   rH   rI   rJ   rK   rL   rM   r.   rN   rO   rQ   rR   r   r*   r/   r-   r   r   R  sm        &F&H	
 	
 [	
 LL&H'H| | | | | | |r/   r   c                  N    e Zd Zd ZdZd Zed             ZdZdZ	dZ
dZ	 dddZdS )CreateHookModelAsLorazCreate Hook Model as LoRAc                    d | _         d S r|   )loaded_weightsr   s    r-   r   zCreateHookModelAsLora.__init__m  s     #r/   c                Z    t          j        d          fddddddfddddddfdd	d
idS )Ncheckpointsr   r   r   r   r   r   )	ckpt_namer   r   r   r   r'   r   r+   s    r-   r.   z!CreateHookModelAsLora.INPUT_TYPESr  sf     +<]KKN#*ERV`d,e,e"f")s5QU_c+d+d!e  j	
 	
 		
r/   Tr   r   r   Nr   r7   r   r6   r   r   r9   c                   |t           j                                        }|                                 t	          j        d|          }d }d }| j        ;| j        d         |k    r| j        d         }| j        d         }n| j        }d | _        ~|t           j                            |ddt	          j	        d                    }	t           j        
                    |	d                   }t           j        
                    |	d         r|	d         j        n|	d                   }|||f| _        t           j                            ||||          }
|                    |
          fS )	Nr   r   r      T
embeddings)
output_vaeoutput_clipembedding_directory)weights_modelweights_clipr   r   )r@   r%   r   r   r   r   r   sdload_checkpoint_guess_configget_folder_pathsget_patch_weights_from_modelr   create_hook_model_as_lorar   )rB   r   r   r   r   	ckpt_pathr   r   r   outr%   s              r-   r   z!CreateHookModelAsLora.create_hook  sz   ..00J .}iHH	*"1%22 $ 3A 6#215*&*# (77	d`d  {G  {X  Ye  {f  {f7  g  gC!KDDSVLLM ;CCVYZ[V\DhCFNNbefgbhiiL#,m\"JD55M`lEScp 6 r r,,U3355r/   r|   )r   r7   r   r6   r   r6   r   r9   r   r*   r/   r-   r   r   i  s|        $F*H# # #
 

 

 [

 LL&HH 7;6 6 6 6 6 6 6r/   r   c                  H    e Zd Zd ZdZed             ZdZdZdZ	dZ
	 dddZdS )CreateHookModelAsLoraModelOnlyzCreate Hook Model as LoRA (MO)c                J    t          j        d          fddddddfdd	d
idS )Nr   r   r   r   r   r   r   )r   r   r   r   r'   r   r+   s    r-   r.   z*CreateHookModelAsLoraModelOnly.INPUT_TYPES  sP     +<]KKN#*ERV`d,e,e"f 
 j
 
 	
r/   Tr   r   r   Nr   r7   r   r6   r   r9   c                4    |                      ||d|          S )Nr   )r   r   r   r   r   )rB   r   r   r   s       r-   r   z5CreateHookModelAsLoraModelOnly.create_hook_model_only  s!    )Nber|}}}r/   r|   )r   r7   r   r6   r   r9   r   r*   r/   r-   r   r     st        -F/H	
 	
 [	
 LL&H'H BF~ ~ ~ ~ ~ ~ ~r/   r   c                  F    e Zd Zd ZdZed             ZdZdZdZ	dZ
dddZdS )SetHookKeyframeszSet Hook Keyframesc                    ddiddidS )Nr%   r   hook_kfHOOK_KEYFRAMESr'   r*   r+   s    r-   r.   zSetHookKeyframes.INPUT_TYPES  s*      .	
 
 	
r/   Tr   advanced/hooks/schedulingset_hook_keyframesNr%   r9   r   comfy.hooks.HookKeyframeGroupc                `    |*|                                 }|                    |           |fS )N)r   )r   r   )rB   r%   r   s      r-   r   z#SetHookKeyframes.set_hook_keyframes  s3    KKMME(((999xr/   r|   )r%   r9   r   r   )rH   rI   rJ   rK   rL   rM   r.   rN   rO   rQ   rR   r   r*   r/   r-   r   r     sf        F#H
 
 [
 LL*H#H      r/   r   c                  R    e Zd Zg dZd ZdZed             ZdZdZ	dZ
dZdZdddZd	S )CreateHookKeyframe)zhook schedulingzstrength animationz
timed hookzCreate Hook Keyframec                2    ddddddfddddddfd	d
didS )Nr   r   r   r   r   r   r   r   )strength_multr   prev_hook_kfr   r'   r*   r+   s    r-   r.   zCreateHookKeyframe.INPUT_TYPES  sU     #*s5QU_c+d+d!e")s3s\a+b+b!c 
  3
 
 	
r/   Tr   HOOK_KFr   create_hook_keyframeNr   r6   r   r   r   c                    |t           j                                        }|                                }t           j                            ||          }|                    |           |fS )N)r   r   )r@   r%   HookKeyframeGroupr   HookKeyframeadd)rB   r   r   r   keyframes        r-   r   z'CreateHookKeyframe.create_hook_keyframe  sc     ;88::L#))++;++]R_+``"""r/   r|   )r   r6   r   r6   r   r   )rH   rI   rJ   r   rK   rL   rM   r.   rN   rO   rP   rQ   rR   r   r*   r/   r-   r   r     sv        LLLN!F%H	
 	
 [	
 L&LL*H%H      r/   r   c                  T    e Zd Zg dZd ZdZed             ZdZdZ	dZ
dZdZ	 dddZd
S )CreateHookKeyframesInterpolated)zease hook strengthzsmooth hook transitionzinterpolate keyframeszCreate Hook Keyframes Interp.c                    ddddddfddddddft           j        j        j        fddddddfddddddfddd	d
ddfddddfdddidS )Nr   r   r   r   r   r   INT   r   d   r   r   FTr   )strength_startstrength_endinterpolationr   r   keyframes_countprint_keyframesr   r   r'   )r@   r%   InterpolationMethod_LISTr+   s    r-   r.   z+CreateHookKeyframesInterpolated.INPUT_TYPES  s     $+CPT^c,d,d"g!(c#d\a*b*b e"'+"A"G!J")s3s\a+b+b!c 'SSZ_)`)`a$)q3XY+Z+Z#[$-5d/S/S#T   3
 
 	
r/   Tr   r   r   create_hook_keyframesFNr  r6   r  r  r7   r   r   r  intr   r   c	                   |t           j                                        }|                                }t           j        j                            |||t           j        j        j                  }	t           j        j                            ||||          }
d}t          |	|
          D ]^\  }}d}|rd}d}|                    t           j        	                    |||                     |rt          j        d| d|            _|fS )	Nnum_fromnum_tolengthmethodTr   r   Fr   r   guarantee_stepsHook Keyframe - start_percent: = )r@   r%   r   r   r
  get_weightsLINEARzipr   r   logginginfo)rB   r  r  r  r   r   r  r	  r   percents	strengthsis_firstpercentr   r  s                  r-   r  z5CreateHookKeyframesInterpolated.create_hook_keyframes  sC     ;88::L#))++;2>>^i  sBFKkFeFl ? n nK3??`l  vE  N[?  \  \	!$Xy!9!9 	V 	VGXO !"# U[55xW^p5  A  A  B  B  B VTgTT(TTUUUr/   )FN)r  r6   r  r6   r  r7   r   r6   r   r6   r  r  r   r   rH   rI   rJ   r   rK   rL   rM   r.   rN   rO   rP   rQ   rR   r  r*   r/   r-   r   r     s}        ^^^N.F.H
 
 [
  L&LL*H&H bf      r/   r   c                  T    e Zd ZddgZd ZdZed             ZdZdZ	dZ
dZd	Z	 dddZd
S )CreateHookKeyframesFromFloatszbatch keyframeszstrength list to keyframesz!Create Hook Keyframes From Floatsc                N    ddddddfdddddd	fdddddd	fd
dddfdddidS )NFLOATSr   T)r   r   r   
forceInputr   r   r   r   r   Fr   )floats_strengthr   r   r	  r   r   r'   r*   r+   s    r-   r.   z)CreateHookKeyframesFromFloats.INPUT_TYPES)  sz     %-"RQVfj.k.k#l")s3s\a+b+b!c 'SSZ_)`)`a$-5d/S/S#T	   3

 

 
	
r/   Tr   r   r   r  NFr(  Union[float, list[float]]r   r6   r   r   r   c                   |t           j                                        }|                                }t	          |          t
          t          fv rt          |          g}n;t          |t                    rn%t          dt	          |          j
         d          t           j        j                            ||t          |          t           j        j        j                  }d}t          ||          D ]^\  }}	d}
|rd}
d}|                    t           j                            |	||
                     |rt%          j        d	| d
|	            _|fS )NzDfloats_strength must be either an iterable input or a float, but was.r  Tr   r   Fr  r  r  )r@   r%   r   r   typer6   r  
isinstancer   	Exception__repr__r
  r  lenr  r  r   r   r  r  )rB   r(  r   r   r   r	  r  r  r   r   r  s              r-   r  z3CreateHookKeyframesFromFloats.create_hook_keyframes=  s     ;88::L#))++  UCL00$_556OO22 	F  Ecghwcxcx  dB  E  E  E  F  F  F;2>>^iru  wF  sG  sGFKkFeFl ? n n !$X!?!? 	V 	VGXO !"# U[55xW^p5  A  A  B  B  B VTgTT(TTUUUr/   )NF)r(  r)  r   r6   r   r6   r   r   r!  r*   r/   r-   r#  r#  %  s}        ')EFN,F2H
 
 [
 L&LL*H&H af      r/   r#  c                  <    e Zd Zed             ZdZdZdZdZd
dZ	d	S )SetModelHooksOnCondc                    ddddiS )Nr(   r   r   )conditioningr%   r*   r+   s    r-   r.   zSetModelHooksOnCond.INPUT_TYPES[  s!      1# 
 	
r/   Tr   zadvanced/hooks/manualattach_hookr%   r9   c                D    t           j                            ||          fS r|   )r@   r%   set_hooks_for_conditioning)rB   r4  r%   s      r-   r5  zSetModelHooksOnCond.attach_hooki  s    66|UKKMMr/   Nr}   )
rH   rI   rJ   rM   r.   rN   rO   rQ   rR   r5  r*   r/   r-   r2  r2  Z  s]        
 
 [
 L$L&HHN N N N N Nr/   r2  c                  P    e Zd ZdgZdZdZed             ZdZdZ	dZ
dZ	 	 dddZd	S )CombineHookszmerge hooksCombineHooks2zCombine Hooks [2]c                    i ddddS )Nr   )hooks_Ahooks_Br'   r*   r+   s    r-   r.   zCombineHooks.INPUT_TYPESt  s(     &% 
 
 	
r/   Tr   advanced/hooks/combinecombine_hooksNr<  r9   r=  c                T    ||g}t           j        j                            |          fS r|   r@   r%   r   combine_all_hooks)rB   r<  r=  
candidatess       r-   r?  zCombineHooks.combine_hooks  s*     w'
%77
CCEEr/   )NN)r<  r9   r=  r9   )rH   rI   rJ   r   rK   rL   rM   r.   rN   rO   rQ   rR   r?  r*   r/   r-   r9  r9  p  s|        #_NF"H
 
 [
 LL'HH 6:59F F F F F F Fr/   r9  c                  N    e Zd ZdZdZed             ZdZdZdZ	dZ
	 	 	 	 dddZdS )CombineHooksFourCombineHooks4zCombine Hooks [4]c                    i ddddddS )Nr   )r<  r=  hooks_Chooks_Dr'   r*   r+   s    r-   r.   zCombineHooksFour.INPUT_TYPES  s.     &%%%	 	
 	
 		
r/   Tr   r>  r?  Nr<  r9   r=  rH  rI  c                X    ||||g}t           j        j                            |          fS r|   rA  )rB   r<  r=  rH  rI  rC  s         r-   r?  zCombineHooksFour.combine_hooks  s.    
 w9
%77
CCEEr/   )NNNN)r<  r9   r=  r9   rH  r9   rI  r9   rH   rI   rJ   rK   rL   rM   r.   rN   rO   rQ   rR   r?  r*   r/   r-   rE  rE    s{        F"H

 

 [

 LL'HH 6:595959	F F F F F F Fr/   rE  c                  V    e Zd ZdZdZed             ZdZdZdZ	dZ
	 	 	 	 	 	 	 	 dddZdS )CombineHooksEightCombineHooks8zCombine Hooks [8]c           
         i ddddddddddS )Nr   )r<  r=  rH  rI  hooks_Ehooks_Fhooks_Ghooks_Hr'   r*   r+   s    r-   r.   zCombineHooksEight.INPUT_TYPES  s:     &%%%%%%%	 	
 
 	
r/   Tr   r>  r?  Nr<  r9   r=  rH  rI  rP  rQ  rR  rS  c	                `    ||||||||g}	t           j        j                            |	          fS r|   rA  )
rB   r<  r=  rH  rI  rP  rQ  rR  rS  rC  s
             r-   r?  zCombineHooksEight.combine_hooks  s7     w'7GU\]
%77
CCEEr/   )NNNNNNNN)r<  r9   r=  r9   rH  r9   rI  r9   rP  r9   rQ  r9   rR  r9   rS  r9   rK  r*   r/   r-   rM  rM    s        F"H
 
 [
  LL'HH 6:59595959595959
F 
F 
F 
F 
F 
F 
Fr/   rM  )*
__future__r   typingr   r   r  torchcollections.abcr   comfy.sdr   comfy.hooksr@   comfy.utilsr   r
   rT   r\   rd   ri   rr   r   r   r   r   r   r   r   r   r   r   r#  r2  r9  rE  rM  	node_listNODE_CLASS_MAPPINGSNODE_DISPLAY_NAME_MAPPINGSnoderK   rL   r*   r/   r-   <module>r`     s   " " " " " " ' ' ' ' ' ' ' '   $ $ $ $ $ $              
0 0 0 0 0 0 0 0B!0 !0 !0 !0 !0 !0 !0 !0F       >       @1 1 1 1 1 1 1 100 0 0 0 0 0 0 0:% % % % % % % %4       BX X X X X X X X8/6 /6 /6 /6 /6 /6 /6 /6b| | | | |n | | |.56 56 56 56 56 56 56 56n~ ~ ~ ~ ~%: ~ ~ ~<       2       <. . . . . . . .`0 0 0 0 0 0 0 0jN N N N N N N N,F F F F F F F F4F F F F F F F F:#F #F #F #F #F #F #F #FR "#!'!+$(3	6    < <D'+$.2mt{++< <r/   