{
 "2": {
  "inputs": {
   "clip_name": "qwen3vl_4b_int8_convrot.safetensors",
   "type": "flux3",
   "device": "default"
  },
  "class_type": "CLIPLoader",
  "_meta": {
   "title": "Load CLIP"
  }
 },
 "3": {
  "inputs": {
   "vae_name": "flux2-vae.safetensors"
  },
  "class_type": "VAELoader",
  "_meta": {
   "title": "Load VAE"
  }
 },
 "4": {
  "inputs": {
   "text": [
    "52",
    0
   ],
   "clip": [
    "2",
    0
   ]
  },
  "class_type": "CLIPTextEncode",
  "_meta": {
   "title": "Positive Prompt"
  }
 },
 "7": {
  "inputs": {
   "seed": 341993890347040,
   "steps": 50,
   "cfg": 1,
   "sampler_name": "euler",
   "scheduler": "simple",
   "denoise": 1,
   "model": [
    "59",
    0
   ],
   "positive": [
    "17",
    0
   ],
   "negative": [
    "17",
    1
   ],
   "latent_image": [
    "17",
    2
   ]
  },
  "class_type": "KSampler",
  "_meta": {
   "title": "KSampler"
  }
 },
 "8": {
  "inputs": {
   "samples": [
    "7",
    0
   ],
   "vae": [
    "3",
    0
   ]
  },
  "class_type": "VAEDecode",
  "_meta": {
   "title": "VAE Decode"
  }
 },
 "9": {
  "inputs": {
   "filename_prefix": "image_flux3_klein_distilled_image_edit",
   "images": [
    "8",
    0
   ]
  },
  "class_type": "SaveImage",
  "_meta": {
   "title": "Save Image"
  }
 },
 "17": {
  "inputs": {
   "resolution": "resize",
   "positive": [
    "4",
    0
   ],
   "negative": [
    "58",
    0
   ],
   "vae": [
    "3",
    0
   ],
   "resolution.megapixels": 1,
   "images.image0": [
    "54",
    0
   ]
  },
  "class_type": "ReferenceMultiLatent",
  "_meta": {
   "title": "Set Reference Multi Latent"
  }
 },
 "18": {
  "inputs": {
   "compare_view": null,
   "image_a": [
    "54",
    0
   ],
   "image_b": [
    "9",
    0
   ]
  },
  "class_type": "ImageCompare",
  "_meta": {
   "title": "Compare Images"
  }
 },
 "34": {
  "inputs": {
   "source": [
    "49",
    0
   ]
  },
  "class_type": "PreviewAny",
  "_meta": {
   "title": "Preview as Text"
  }
 },
 "44": {
  "inputs": {
   "width": 1024,
   "height": 1024,
   "batch_size": 1
  },
  "class_type": "EmptyFlux2LatentImage",
  "_meta": {
   "title": "Empty Flux 2 Latent"
  }
 },
 "46": {
  "inputs": {
   "clip_name": "qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors",
   "type": "flux3",
   "device": "default"
  },
  "class_type": "CLIPLoader",
  "_meta": {
   "title": "Load CLIP"
  }
 },
 "47": {
  "inputs": {
   "max_length": 3584,
   "sampling_mode": "on",
   "thinking": false,
   "use_default_template": true,
   "mtp": "off",
   "clip": [
    "46",
    0
   ],
   "prompt": [
    "34",
    0
   ],
   "image": [
    "50",
    0
   ],
   "system_prompt": [
    "48",
    0
   ],
   "sampling_mode.temperature": 1,
   "sampling_mode.top_k": 1,
   "sampling_mode.top_p": 0.95,
   "sampling_mode.min_p": 0,
   "sampling_mode.repetition_penalty": 1,
   "sampling_mode.seed": 0,
   "sampling_mode.presence_penalty": 0
  },
  "class_type": "TextGenerate",
  "_meta": {
   "title": "Generate Text"
  }
 },
 "48": {
  "inputs": {
   "value": "You are the prompt upsampler of an image-editing model. You see the reference image(s), attached in order (the first image, the second image, ...), and the user's short request. Expand it into ONE detailed, self-contained instruction: the caption the editing model receives together with the same images. Output only the instruction as one continuous English prose block, with no greetings, explanations, Markdown, JSON, coordinates, ids or angle-bracket tokens. Read a vague or conversational request as the most plausible edit of the supplied images.\\n\\nPick the voice by task shape. When one reference stays and gets bounded changes, write an imperative editing instruction on it (\\\"Remove the ...\\\", \\\"Change the ... to ...\\\", \\\"Zoom in on ...\\\"); a whole-image transformation opens with its scope (\\\"Convert the entire image into ...\\\", \\\"Apply a ... filter over the entire scene\\\", \\\"Horizontally flip the entire image so that ...\\\", \\\"Shift the camera viewpoint to ...\\\", then where the major elements should now be). When the references are drawn into a newly composed frame (combining subjects, a new scene, a garment, object or style donor), write a generation request (\\\"Create a photograph of ...\\\", \\\"Create an anime-style illustration of ...\\\", \\\"Generate a new image featuring ...\\\") that says what to take from each image, by ordinal, and what is newly generated.\\n\\nKeep every explicit edit, constraint, count, position, style cue and piece of wording, and decide what is left open as one concrete plan. Ground everything in what is actually visible: identify each referent unambiguously by its real appearance, never mention content that is not there, and use every image the user attached. State every end state concretely (which color, how large, which pose, which material) and give new content enough appearance to be generated. Cover the knock-on effects of the change (shadows, reflections, occlusion, perspective, scale, lighting) and say what fills a removed region. A zoom-in names what stays in frame and which neighbors are cropped out; an outpainting continues the scene in the same medium. Describe the change, not the whole scene, and close an editing instruction with one compact clause naming what stays unchanged; transferred people keep their identity, face and accessories unless asked otherwise. Transcribe on-image text verbatim in its original language inside double quotes, with line breaks as \\\\n, and match the original font, size and color when replacing it. Name recognizable public figures, brands and landmarks you can see. Directions are frame-relative; use no evaluative or quality words. Typical length is 50 to 150 words.\\n\\nOutput only the instruction."
  },
  "class_type": "PrimitiveStringMultiline",
  "_meta": {
   "title": "Text (System prompt)"
  }
 },
 "49": {
  "inputs": {
   "prompt": "In <ref_image_0>, change the dress color <obj_1> to red",
   "element": [
    "55",
    2
   ]
  },
  "class_type": "Flux3LayoutPrompt",
  "_meta": {
   "title": "FLUX 3 Image Layout Prompt"
  }
 },
 "50": {
  "inputs": {
   "images.image0": [
    "54",
    0
   ]
  },
  "class_type": "BatchImagesNode",
  "_meta": {
   "title": "Batch Images"
  }
 },
 "51": {
  "inputs": {
   "switch": false,
   "on_false": [
    "47",
    0
   ],
   "on_true": [
    "34",
    0
   ]
  },
  "class_type": "ComfySwitchNode",
  "_meta": {
   "title": "If/Else Switch"
  }
 },
 "52": {
  "inputs": {
   "source": [
    "51",
    0
   ]
  },
  "class_type": "PreviewAny",
  "_meta": {
   "title": "Preview as Text"
  }
 },
 "54": {
  "inputs": {
   "image": "fashion_portrait_blue_silk_gown_vis.png"
  },
  "class_type": "LoadImage",
  "_meta": {
   "title": "Load Image"
  }
 },
 "55": {
  "inputs": {
   "width": 896,
   "height": 1152,
   "editor_state": {
    "__value__": []
   },
   "last_incoming": {
    "__value__": [
     {
      "x": 128,
      "y": 192,
      "width": 736,
      "height": 896,
      "metadata": {
       "type": "obj",
       "text": "",
       "desc": "dress",
       "palette": []
      }
     }
    ]
   },
   "background": [
    "54",
    0
   ]
  },
  "class_type": "CreateBoundingBoxes",
  "_meta": {
   "title": "Create Bounding Boxes"
  }
 },
 "58": {
  "inputs": {
   "text": "",
   "clip": [
    "2",
    0
   ]
  },
  "class_type": "CLIPTextEncode",
  "_meta": {
   "title": "Negative Prompt"
  }
 },
 "59": {
  "inputs": {
   "unet_name": "flux3-image-klein-base-int8-convrot.safetensors",
   "weight_dtype": "default"
  },
  "class_type": "UNETLoader",
  "_meta": {
   "title": "Load Diffusion Model"
  }
 }
}