From 36564b4767f682dae99a603cc072fe9aec9c9054 Mon Sep 17 00:00:00 2001 From: Vito Date: Mon, 19 Oct 2026 20:56:51 -0700 Subject: [PATCH] feat(parse): one generation-parameter parser in Python; scan links what the resolver cannot decide (#253) * feat(parse): port the browser generation-parameter parser to Python Adds utils/generation_params.py, a line-for-line port of extractGenerationParams in web/js/comfy-metadata.js, the parser behind the gallery, admin and metadata pages. The scan and live monitor can use it so every surface reads prompts the same way. The JavaScript parser is unchanged. The port reproduces the JavaScript value semantics the result depends on (property order, truthiness, String(), trim(), strict equality, Map keys, JSON.parse number rounding, and the inputs on which it throws), and runs its recursive tracing on an explicit stack so crafted graphs cannot exhaust the Python stack. Tests: - behaviour tests for each tracing rule, with JavaScript results as expected values, including the visit-limit boundary; - golden vectors of the JavaScript parser's results for every named case and every PNG fixture, so the comparison runs without Node; - a live comparison against the JavaScript parser when Node is present; - a randomized differential test over 9,000 generated graphs and workflows, coherent and corrupted, including inputs where the JavaScript throws. Five deliberate porting mistakes (trim, truthiness, prepend handling, visit limit, pair slot) each fail the tests. On a 38,602-file output folder, all 18,491 files with a workflow give identical results. * fix(scan): link the traced prompt when the pair resolver cannot decide The output scan skipped every file the pair resolver called ambiguous or unresolved, so workflows where several samplers share one prompt (a base pass, an upscale pass and a detailer) never reached the Library from a scan. It now links the positive prompt the shared parser traces for those files, the prompt the inspector and the legacy pages show. Files the resolver decides are stored as before, and graphs without a recognized sampler keep the legacy extractor (#252). Read-only scans of a 38,602-file output folder into temporary databases: - links: 1,500 before, 7,954 after; none of the 1,500 dropped or changed; - of the added links that differ from the pre-redesign scan, 1,275 replace a number, a LoRA tag, a fragment or a truncated prompt that scan stored. * refactor(parse): return a uniform pair from the SameValueZero key --- py/api/admin.py | 68 +- tests/fixtures/generation_params/vectors.json | 809 +++++++++++++++ tests/generation_params_cases.py | 444 +++++++++ tests/js/support/generation-params-oracle.mjs | 32 + tests/test_generation_params.py | 221 ++++ tests/test_generation_params_fuzz.py | 637 ++++++++++++ tests/test_generation_params_js_parity.py | 155 +++ tests/test_ingestion_resolver_profile.py | 14 +- tests/test_pair_scan.py | 76 +- utils/generation_params.py | 943 ++++++++++++++++++ 10 files changed, 3371 insertions(+), 28 deletions(-) create mode 100644 tests/fixtures/generation_params/vectors.json create mode 100644 tests/generation_params_cases.py create mode 100644 tests/js/support/generation-params-oracle.mjs create mode 100644 tests/test_generation_params.py create mode 100644 tests/test_generation_params_fuzz.py create mode 100644 tests/test_generation_params_js_parity.py create mode 100644 utils/generation_params.py diff --git a/py/api/admin.py b/py/api/admin.py index 0f3eb88..f5f3b0c 100644 --- a/py/api/admin.py +++ b/py/api/admin.py @@ -27,10 +27,22 @@ except ImportError: try: from ...database.operations import PromptDatabase from ...database.pair_ingestion import ingest_resolved_pair + from ...utils.generation_params import ( + PLACEHOLDERS, + GenerationParamsError, + extract_generation_params, + parse_js_json, + ) from ...utils.prompt_pair_resolver import resolve_prompt_pair except ImportError: from database.operations import PromptDatabase from database.pair_ingestion import ingest_resolved_pair + from utils.generation_params import ( + PLACEHOLDERS, + GenerationParamsError, + extract_generation_params, + parse_js_json, + ) from utils.prompt_pair_resolver import resolve_prompt_pair @@ -1511,6 +1523,21 @@ class AdminRoutesMixin: counts["pair_links_added"] += outcome.get("links_added", 0) return counts + @staticmethod + def _graph_prompt_text(metadata): + """The positive prompt the browser parser traces from the graphs, or None.""" + records = {} + for key in ("prompt", "workflow"): + value = metadata.get(key) + records[key] = parse_js_json(value) if isinstance(value, str) else value + try: + positive = extract_generation_params(records)["positivePrompt"] + except GenerationParamsError: + return None + if not isinstance(positive, str) or positive == PLACEHOLDERS["positivePrompt"]: + return None + return positive.strip() or None + def _ingest_scanned_file(self, media_file, metadata, detailed=False): """Enrich exact pairs; retain legacy positive-only import for absent pairs.""" if not metadata: @@ -1531,23 +1558,32 @@ class AdminRoutesMixin: self.db, str(media_file), canonical, resolution ) return result if detailed else result["status"] - if resolution["state"] == "ambiguous": - return "ambiguous" - if resolution["state"] == "unresolved": - if canonical.get("prompt") or not isinstance( - canonical.get("parameters"), str - ): + if canonical.get("prompt") and resolution["state"] in ( + "ambiguous", + "unresolved", + ): + # The resolver could not decide: link the prompt the inspector and the + # legacy pages show for this file (the browser parser, in Python). + # Graphs without a recognized sampler keep the legacy extractor below. + prompt_text = self._graph_prompt_text(metadata) + if not prompt_text: return resolution["state"] - parsed = self._parse_comfyui_prompt(metadata) - if not (parsed.get("prompt") or parsed.get("parameters")): - return None - - prompt_text = self._extract_readable_prompt(parsed) - if prompt_text is not None and not isinstance(prompt_text, str): - prompt_text = str(prompt_text) - if not (prompt_text and prompt_text.strip()): - return "found" - prompt_text = prompt_text.strip() + elif resolution["state"] == "ambiguous": + return "ambiguous" + elif resolution["state"] == "unresolved" and not isinstance( + canonical.get("parameters"), str + ): + return resolution["state"] + else: + parsed = self._parse_comfyui_prompt(metadata) + if not (parsed.get("prompt") or parsed.get("parameters")): + return None + prompt_text = self._extract_readable_prompt(parsed) + if prompt_text is not None and not isinstance(prompt_text, str): + prompt_text = str(prompt_text) + if not (prompt_text and prompt_text.strip()): + return "found" + prompt_text = prompt_text.strip() prompt_hash = generate_prompt_hash(prompt_text) existing = self.db.get_prompt_by_hash(prompt_hash) diff --git a/tests/fixtures/generation_params/vectors.json b/tests/fixtures/generation_params/vectors.json new file mode 100644 index 0000000..6839186 --- /dev/null +++ b/tests/fixtures/generation_params/vectors.json @@ -0,0 +1,809 @@ +[ + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "blurry, watermark", + "positivePrompt": "a cat on a windowsill", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:basic", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"2\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 512, \"height\": 512, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a cat on a windowsill\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, watermark\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"2\", 0]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"images\": [\"8\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "masterpiece, a dog 4k", + "positivePrompt": "masterpiece a cat 4k", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:prompt-manager-prepend-append", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"6\": {\"class_type\": \"PromptManager\", \"inputs\": {\"text\": \"a cat\", \"category\": \"\", \"tags\": \"\", \"search_text\": \"\", \"prepend_text\": \"masterpiece\", \"append_text\": \"4k\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"PromptManager\", \"inputs\": {\"text\": \"masterpiece, a dog\", \"category\": \"\", \"tags\": \"\", \"search_text\": \"\", \"prepend_text\": \"masterpiece\", \"append_text\": \"4k\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "No negative prompt found", + "positivePrompt": "first part, second part", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:linked-text-concat", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"10\": {\"class_type\": \"PrimitiveString\", \"inputs\": {\"value\": \"first part\"}}, \"11\": {\"class_type\": \"StringConcatenate\", \"inputs\": {\"string_a\": [\"10\", 0], \"string_b\": \"second part\", \"delimiter\": \", \", \"seed\": 3, \"string_c\": \" \"}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": [\"11\", 0], \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "pair negative", + "positivePrompt": "pair positive", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:prompt-manager-pair", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"8\": {\"class_type\": \"PromptManagerPair\", \"inputs\": {\"text\": \"pair positive\", \"negative_text\": \"pair negative\", \"prepend_text\": \"\", \"append_text\": \"\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"8\", 0], \"negative\": [\"8\", 1], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "negative through it", + "positivePrompt": "through a controlnet", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:conditioning-passthrough", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"through a controlnet\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"negative through it\", \"clip\": [\"4\", 1]}}, \"12\": {\"class_type\": \"ControlNetApplyAdvanced\", \"inputs\": {\"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"control_net\": [\"13\", 0]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"12\", 0], \"negative\": [\"12\", 1], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "from sampler five", + "positivePrompt": "from sampler five", + "sampler": "euler", + "seed": 55, + "steps": 20 + } + }, + "name": "case:first-sampler-in-js-key-order", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"from sampler twelve\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"from sampler five\", \"clip\": [\"4\", 1]}}, \"x\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"6\", 0], \"latent_image\": [\"2\", 0]}}, \"12\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 12, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"6\", 0], \"latent_image\": [\"2\", 0]}}, \"5\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 55, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"7\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 3.5, + "checkpoint": "example.safetensors", + "negativePrompt": "lowres", + "positivePrompt": "a red fox in snow", + "sampler": "dpmpp_2m", + "seed": 42, + "steps": 8 + } + }, + "name": "case:custom-sampler-cfg-guider", + "prompt": "{\"13\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"20\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow\", \"clip\": [\"13\", 1]}}, \"21\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"lowres\", \"clip\": [\"13\", 1]}}, \"22\": {\"class_type\": \"CFGGuider\", \"inputs\": {\"model\": [\"13\", 0], \"positive\": [\"20\", 0], \"negative\": [\"21\", 0], \"cfg\": 3.5}}, \"25\": {\"class_type\": \"RandomNoise\", \"inputs\": {\"noise_seed\": 42}}, \"16\": {\"class_type\": \"KSamplerSelect\", \"inputs\": {\"sampler_name\": \"dpmpp_2m\"}}, \"17\": {\"class_type\": \"BasicScheduler\", \"inputs\": {\"scheduler\": \"karras\", \"steps\": 8, \"denoise\": 1.0, \"model\": [\"13\", 0]}}, \"1300:8\": {\"class_type\": \"SamplerCustomAdvanced\", \"inputs\": {\"noise\": [\"25\", 0], \"guider\": [\"22\", 0], \"sampler\": [\"16\", 0], \"sigmas\": [\"17\", 0], \"latent_image\": [\"5\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": "Unknown", + "checkpoint": "example.safetensors", + "negativePrompt": "No negative prompt found", + "positivePrompt": "No prompt found", + "sampler": "dpmpp_2m", + "seed": "Unknown", + "steps": "Unknown" + } + }, + "name": "case:custom-sampler-basic-guider", + "prompt": "{\"13\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"20\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow\", \"clip\": [\"13\", 1]}}, \"21\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"lowres\", \"clip\": [\"13\", 1]}}, \"22\": {\"class_type\": \"BasicGuider\", \"inputs\": {\"model\": [\"13\", 0], \"conditioning\": [\"20\", 0]}}, \"25\": {\"class_type\": \"RandomNoise\", \"inputs\": {\"noise_seed\": 42}}, \"16\": {\"class_type\": \"KSamplerSelect\", \"inputs\": {\"sampler_name\": \"dpmpp_2m\"}}, \"17\": {\"class_type\": \"BasicScheduler\", \"inputs\": {\"scheduler\": \"karras\", \"steps\": 8, \"denoise\": 1.0, \"model\": [\"13\", 0]}}, \"1300:8\": {\"class_type\": \"SamplerCustomAdvanced\", \"inputs\": {\"noise\": [\"25\", 0], \"guider\": [\"22\", 0], \"sampler\": [\"16\", 0], \"sigmas\": [\"17\", 0], \"latent_image\": [\"5\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 2, + "checkpoint": "example.safetensors", + "negativePrompt": "No negative prompt found", + "positivePrompt": "No prompt found", + "sampler": "ddim", + "seed": 9, + "steps": 12 + } + }, + "name": "case:no-sampler-loose-settings", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"3\": {\"class_type\": \"MyKSamplerVariant\", \"inputs\": {\"noise_seed\": 9, \"steps\": 12, \"cfg\": 2, \"sampler_name\": \"ddim\"}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "seeded", + "positivePrompt": "seeded", + "sampler": "euler", + "seed": 77, + "steps": 20 + } + }, + "name": "case:primitive-seed", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"seeded\", \"clip\": [\"4\", 1]}}, \"30\": {\"class_type\": \"Seed (rgthree)\", \"inputs\": {\"other\": \"x\", \"seed\": 77}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": [\"30\", 0], \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"6\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "example.safetensors", + "negativePrompt": "noisy", + "positivePrompt": "a tidepool at noon", + "sampler": "dpmpp_2m", + "seed": 314, + "steps": 25 + } + }, + "name": "case:workflow-only", + "prompt": null, + "workflow": "{\"nodes\": [{\"id\": 4, \"type\": \"CheckpointLoaderSimple\", \"mode\": 0, \"inputs\": [], \"widgets_values\": [\"example.safetensors\"]}, {\"id\": 6, \"type\": \"CLIPTextEncode\", \"mode\": 0, \"inputs\": [{\"name\": \"clip\", \"link\": 3}], \"widgets_values\": [\"a tidepool at noon\"]}, {\"id\": 7, \"type\": \"CLIPTextEncode\", \"mode\": 0, \"inputs\": [{\"name\": \"clip\", \"link\": 5}], \"widgets_values\": [\"noisy\"]}, {\"id\": 10, \"type\": \"Reroute\", \"mode\": 0, \"inputs\": [{\"name\": \"\", \"link\": 7}]}, {\"id\": 3, \"type\": \"KSampler\", \"mode\": 0, \"inputs\": [{\"name\": \"model\", \"link\": 1}, {\"name\": \"positive\", \"link\": 8}, {\"name\": \"negative\", \"link\": 4}, {\"name\": \"latent_image\", \"link\": 2}], \"widgets_values\": [314, \"randomize\", 25, 6.5, \"dpmpp_2m\", \"karras\", 1]}, {\"id\": 11, \"type\": \"CLIPTextEncode\", \"mode\": 2, \"inputs\": [], \"widgets_values\": [\"muted node text\"]}], \"links\": [[1, 4, 0, 3, 0, \"MODEL\"], [3, 4, 1, 6, 0, \"CLIP\"], [5, 4, 1, 7, 0, \"CLIP\"], [7, 6, 0, 10, 0, \"CONDITIONING\"], [8, 10, 0, 3, 1, \"CONDITIONING\"], [4, 7, 0, 3, 2, \"CONDITIONING\"], {\"id\": 2, \"origin_id\": 99, \"origin_slot\": 0, \"target_id\": 3, \"target_slot\": 3, \"type\": \"LATENT\"}]}" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "the real negative", + "positivePrompt": "the real positive", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:overwritten-prompt-manager-text", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"25\": {\"class_type\": \"PromptManager\", \"inputs\": {\"text\": \"same saved text\", \"category\": \"\", \"tags\": \"\", \"search_text\": \"\", \"prepend_text\": \"\", \"append_text\": \"\", \"clip\": [\"4\", 1]}}, \"26\": {\"class_type\": \"PromptManager\", \"inputs\": {\"text\": \"same saved text\", \"category\": \"\", \"tags\": \"\", \"search_text\": \"\", \"prepend_text\": \"\", \"append_text\": \"\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"25\", 0], \"negative\": [\"26\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": "{\"nodes\": [{\"id\": 25, \"type\": \"PromptManager\", \"widgets_values\": [\"the real positive\"]}, {\"id\": 26, \"type\": \"PromptManager\", \"widgets_values\": [\"the real negative\"]}], \"links\": []}" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "No negative prompt found", + "positivePrompt": "No prompt found", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:conditioning-cycle", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"20\": {\"class_type\": \"ConditioningCombine\", \"inputs\": {\"conditioning_1\": [\"21\", 0]}}, \"21\": {\"class_type\": \"ConditioningCombine\", \"inputs\": {\"conditioning_1\": [\"20\", 0]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"20\", 0], \"negative\": [\"21\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "deep chain text", + "positivePrompt": "deep chain text", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:chain-within-visit-limit", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"1\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"deep chain text\", \"clip\": [\"4\", 1]}}, \"100\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"1\", 0]}}, \"101\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"100\", 0]}}, \"102\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"101\", 0]}}, \"103\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"102\", 0]}}, \"104\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"103\", 0]}}, \"105\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"104\", 0]}}, \"106\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"105\", 0]}}, \"107\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"106\", 0]}}, \"108\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"107\", 0]}}, \"109\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"108\", 0]}}, \"110\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"109\", 0]}}, \"111\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"110\", 0]}}, \"112\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"111\", 0]}}, \"113\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"112\", 0]}}, \"114\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"113\", 0]}}, \"115\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"114\", 0]}}, \"116\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"115\", 0]}}, \"117\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"116\", 0]}}, \"118\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"117\", 0]}}, \"119\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"118\", 0]}}, \"120\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"119\", 0]}}, \"121\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"120\", 0]}}, \"122\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"121\", 0]}}, \"123\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"122\", 0]}}, \"124\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"123\", 0]}}, \"125\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"124\", 0]}}, \"126\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"125\", 0]}}, \"127\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"126\", 0]}}, \"128\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"127\", 0]}}, \"129\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"128\", 0]}}, \"130\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"129\", 0]}}, \"131\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"130\", 0]}}, \"132\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"131\", 0]}}, \"133\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"132\", 0]}}, \"134\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"133\", 0]}}, \"135\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"134\", 0]}}, \"136\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"135\", 0]}}, \"137\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"136\", 0]}}, \"138\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"137\", 0]}}, \"139\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"138\", 0]}}, \"140\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"139\", 0]}}, \"141\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"140\", 0]}}, \"142\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"141\", 0]}}, \"143\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"142\", 0]}}, \"144\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"143\", 0]}}, \"145\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"144\", 0]}}, \"146\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"145\", 0]}}, \"147\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"146\", 0]}}, \"148\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"147\", 0]}}, \"149\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"148\", 0]}}, \"150\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"149\", 0]}}, \"151\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"150\", 0]}}, \"152\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"151\", 0]}}, \"153\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"152\", 0]}}, \"154\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"153\", 0]}}, \"155\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"154\", 0]}}, \"156\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"155\", 0]}}, \"157\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"156\", 0]}}, \"158\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"157\", 0]}}, \"159\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"158\", 0]}}, \"160\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"159\", 0]}}, \"161\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"160\", 0]}}, \"162\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"161\", 0]}}, \"163\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"162\", 0]}}, \"164\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"163\", 0]}}, \"165\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"164\", 0]}}, \"166\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"165\", 0]}}, \"167\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"166\", 0]}}, \"168\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"167\", 0]}}, \"169\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"168\", 0]}}, \"170\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"169\", 0]}}, \"171\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"170\", 0]}}, \"172\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"171\", 0]}}, \"173\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"172\", 0]}}, \"174\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"173\", 0]}}, \"175\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"174\", 0]}}, \"176\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"175\", 0]}}, \"177\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"176\", 0]}}, \"178\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"177\", 0]}}, \"179\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"178\", 0]}}, \"180\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"179\", 0]}}, \"181\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"180\", 0]}}, \"182\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"181\", 0]}}, \"183\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"182\", 0]}}, \"184\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"183\", 0]}}, \"185\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"184\", 0]}}, \"186\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"185\", 0]}}, \"187\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"186\", 0]}}, \"188\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"187\", 0]}}, \"189\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"188\", 0]}}, \"190\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"189\", 0]}}, \"191\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"190\", 0]}}, \"192\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"191\", 0]}}, \"193\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"192\", 0]}}, \"194\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"193\", 0]}}, \"195\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"194\", 0]}}, \"196\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"195\", 0]}}, \"197\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"196\", 0]}}, \"198\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"197\", 0]}}, \"199\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"198\", 0]}}, \"200\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"199\", 0]}}, \"201\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"200\", 0]}}, \"202\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"201\", 0]}}, \"203\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"202\", 0]}}, \"204\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"203\", 0]}}, \"205\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"204\", 0]}}, \"206\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"205\", 0]}}, \"207\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"206\", 0]}}, \"208\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"207\", 0]}}, \"209\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"208\", 0]}}, \"210\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"209\", 0]}}, \"211\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"210\", 0]}}, \"212\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"211\", 0]}}, \"213\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"212\", 0]}}, \"214\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"213\", 0]}}, \"215\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"214\", 0]}}, \"216\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"215\", 0]}}, \"217\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"216\", 0]}}, \"218\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"217\", 0]}}, \"219\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"218\", 0]}}, \"220\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"219\", 0]}}, \"221\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"220\", 0]}}, \"222\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"221\", 0]}}, \"223\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"222\", 0]}}, \"224\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"223\", 0]}}, \"225\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"224\", 0]}}, \"226\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"225\", 0]}}, \"227\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"226\", 0]}}, \"228\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"227\", 0]}}, \"229\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"228\", 0]}}, \"230\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"229\", 0]}}, \"231\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"230\", 0]}}, \"232\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"231\", 0]}}, \"233\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"232\", 0]}}, \"234\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"233\", 0]}}, \"235\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"234\", 0]}}, \"236\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"235\", 0]}}, \"237\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"236\", 0]}}, \"238\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"237\", 0]}}, \"239\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"238\", 0]}}, \"240\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"239\", 0]}}, \"241\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"240\", 0]}}, \"242\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"241\", 0]}}, \"243\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"242\", 0]}}, \"244\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"243\", 0]}}, \"245\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"244\", 0]}}, \"246\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"245\", 0]}}, \"247\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"246\", 0]}}, \"248\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"247\", 0]}}, \"249\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"248\", 0]}}, \"250\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"249\", 0]}}, \"251\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"250\", 0]}}, \"252\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"251\", 0]}}, \"253\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"252\", 0]}}, \"254\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"253\", 0]}}, \"255\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"254\", 0]}}, \"256\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"255\", 0]}}, \"257\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"256\", 0]}}, \"258\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"257\", 0]}}, \"259\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"258\", 0]}}, \"260\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"259\", 0]}}, \"261\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"260\", 0]}}, \"262\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"261\", 0]}}, \"263\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"262\", 0]}}, \"264\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"263\", 0]}}, \"265\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"264\", 0]}}, \"266\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"265\", 0]}}, \"267\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"266\", 0]}}, \"268\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"267\", 0]}}, \"269\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"268\", 0]}}, \"270\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"269\", 0]}}, \"271\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"270\", 0]}}, \"272\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"271\", 0]}}, \"273\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"272\", 0]}}, \"274\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"273\", 0]}}, \"275\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"274\", 0]}}, \"276\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"275\", 0]}}, \"277\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"276\", 0]}}, \"278\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"277\", 0]}}, \"279\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"278\", 0]}}, \"280\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"279\", 0]}}, \"281\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"280\", 0]}}, \"282\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"281\", 0]}}, \"283\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"282\", 0]}}, \"284\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"283\", 0]}}, \"285\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"284\", 0]}}, \"286\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"285\", 0]}}, \"287\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"286\", 0]}}, \"288\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"287\", 0]}}, \"289\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"288\", 0]}}, \"290\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"289\", 0]}}, \"291\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"290\", 0]}}, \"292\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"291\", 0]}}, \"293\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"292\", 0]}}, \"294\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"293\", 0]}}, \"295\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"294\", 0]}}, \"296\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"295\", 0]}}, \"297\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"296\", 0]}}, \"298\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"297\", 0]}}, \"299\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"298\", 0]}}, \"300\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"299\", 0]}}, \"301\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"300\", 0]}}, \"302\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"301\", 0]}}, \"303\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"302\", 0]}}, \"304\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"303\", 0]}}, \"305\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"304\", 0]}}, \"306\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"305\", 0]}}, \"307\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"306\", 0]}}, \"308\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"307\", 0]}}, \"309\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"308\", 0]}}, \"310\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"309\", 0]}}, \"311\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"310\", 0]}}, \"312\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"311\", 0]}}, \"313\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"312\", 0]}}, \"314\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"313\", 0]}}, \"315\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"314\", 0]}}, \"316\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"315\", 0]}}, \"317\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"316\", 0]}}, \"318\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"317\", 0]}}, \"319\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"318\", 0]}}, \"320\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"319\", 0]}}, \"321\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"320\", 0]}}, \"322\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"321\", 0]}}, \"323\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"322\", 0]}}, \"324\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"323\", 0]}}, \"325\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"324\", 0]}}, \"326\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"325\", 0]}}, \"327\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"326\", 0]}}, \"328\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"327\", 0]}}, \"329\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"328\", 0]}}, \"330\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"329\", 0]}}, \"331\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"330\", 0]}}, \"332\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"331\", 0]}}, \"333\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"332\", 0]}}, \"334\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"333\", 0]}}, \"335\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"334\", 0]}}, \"336\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"335\", 0]}}, \"337\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"336\", 0]}}, \"338\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"337\", 0]}}, \"339\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"338\", 0]}}, \"340\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"339\", 0]}}, \"341\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"340\", 0]}}, \"342\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"341\", 0]}}, \"343\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"342\", 0]}}, \"344\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"343\", 0]}}, \"345\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"344\", 0]}}, \"346\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"345\", 0]}}, \"347\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"346\", 0]}}, \"348\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"347\", 0]}}, \"349\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"348\", 0]}}, \"350\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"349\", 0]}}, \"351\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"350\", 0]}}, \"352\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"351\", 0]}}, \"353\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"352\", 0]}}, \"354\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"353\", 0]}}, \"355\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"354\", 0]}}, \"356\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"355\", 0]}}, \"357\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"356\", 0]}}, \"358\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"357\", 0]}}, \"359\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"358\", 0]}}, \"360\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"359\", 0]}}, \"361\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"360\", 0]}}, \"362\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"361\", 0]}}, \"363\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"362\", 0]}}, \"364\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"363\", 0]}}, \"365\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"364\", 0]}}, \"366\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"365\", 0]}}, \"367\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"366\", 0]}}, \"368\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"367\", 0]}}, \"369\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"368\", 0]}}, \"370\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"369\", 0]}}, \"371\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"370\", 0]}}, \"372\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"371\", 0]}}, \"373\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"372\", 0]}}, \"374\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"373\", 0]}}, \"375\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"374\", 0]}}, \"376\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"375\", 0]}}, \"377\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"376\", 0]}}, \"378\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"377\", 0]}}, \"379\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"378\", 0]}}, \"380\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"379\", 0]}}, \"381\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"380\", 0]}}, \"382\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"381\", 0]}}, \"383\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"382\", 0]}}, \"384\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"383\", 0]}}, \"385\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"384\", 0]}}, \"386\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"385\", 0]}}, \"387\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"386\", 0]}}, \"388\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"387\", 0]}}, \"389\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"388\", 0]}}, \"390\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"389\", 0]}}, \"391\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"390\", 0]}}, \"392\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"391\", 0]}}, \"393\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"392\", 0]}}, \"394\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"393\", 0]}}, \"395\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"394\", 0]}}, \"396\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"395\", 0]}}, \"397\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"396\", 0]}}, \"398\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"397\", 0]}}, \"399\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"398\", 0]}}, \"400\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"399\", 0]}}, \"401\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"400\", 0]}}, \"402\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"401\", 0]}}, \"403\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"402\", 0]}}, \"404\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"403\", 0]}}, \"405\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"404\", 0]}}, \"406\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"405\", 0]}}, \"407\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"406\", 0]}}, \"408\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"407\", 0]}}, \"409\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"408\", 0]}}, \"410\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"409\", 0]}}, \"411\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"410\", 0]}}, \"412\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"411\", 0]}}, \"413\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"412\", 0]}}, \"414\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"413\", 0]}}, \"415\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"414\", 0]}}, \"416\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"415\", 0]}}, \"417\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"416\", 0]}}, \"418\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"417\", 0]}}, \"419\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"418\", 0]}}, \"420\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"419\", 0]}}, \"421\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"420\", 0]}}, \"422\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"421\", 0]}}, \"423\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"422\", 0]}}, \"424\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"423\", 0]}}, \"425\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"424\", 0]}}, \"426\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"425\", 0]}}, \"427\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"426\", 0]}}, \"428\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"427\", 0]}}, \"429\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"428\", 0]}}, \"430\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"429\", 0]}}, \"431\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"430\", 0]}}, \"432\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"431\", 0]}}, \"433\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"432\", 0]}}, \"434\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"433\", 0]}}, \"435\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"434\", 0]}}, \"436\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"435\", 0]}}, \"437\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"436\", 0]}}, \"438\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"437\", 0]}}, \"439\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"438\", 0]}}, \"440\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"439\", 0]}}, \"441\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"440\", 0]}}, \"442\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"441\", 0]}}, \"443\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"442\", 0]}}, \"444\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"443\", 0]}}, \"445\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"444\", 0]}}, \"446\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"445\", 0]}}, \"447\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"446\", 0]}}, \"448\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"447\", 0]}}, \"449\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"448\", 0]}}, \"450\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"449\", 0]}}, \"451\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"450\", 0]}}, \"452\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"451\", 0]}}, \"453\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"452\", 0]}}, \"454\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"453\", 0]}}, \"455\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"454\", 0]}}, \"456\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"455\", 0]}}, \"457\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"456\", 0]}}, \"458\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"457\", 0]}}, \"459\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"458\", 0]}}, \"460\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"459\", 0]}}, \"461\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"460\", 0]}}, \"462\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"461\", 0]}}, \"463\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"462\", 0]}}, \"464\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"463\", 0]}}, \"465\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"464\", 0]}}, \"466\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"465\", 0]}}, \"467\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"466\", 0]}}, \"468\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"467\", 0]}}, \"469\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"468\", 0]}}, \"470\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"469\", 0]}}, \"471\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"470\", 0]}}, \"472\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"471\", 0]}}, \"473\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"472\", 0]}}, \"474\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"473\", 0]}}, \"475\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"474\", 0]}}, \"476\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"475\", 0]}}, \"477\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"476\", 0]}}, \"478\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"477\", 0]}}, \"479\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"478\", 0]}}, \"480\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"479\", 0]}}, \"481\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"480\", 0]}}, \"482\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"481\", 0]}}, \"483\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"482\", 0]}}, \"484\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"483\", 0]}}, \"485\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"484\", 0]}}, \"486\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"485\", 0]}}, \"487\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"486\", 0]}}, \"488\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"487\", 0]}}, \"489\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"488\", 0]}}, \"490\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"489\", 0]}}, \"491\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"490\", 0]}}, \"492\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"491\", 0]}}, \"493\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"492\", 0]}}, \"494\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"493\", 0]}}, \"495\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"494\", 0]}}, \"496\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"495\", 0]}}, \"497\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"496\", 0]}}, \"498\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"497\", 0]}}, \"499\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"498\", 0]}}, \"500\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"499\", 0]}}, \"501\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"500\", 0]}}, \"502\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"501\", 0]}}, \"503\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"502\", 0]}}, \"504\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"503\", 0]}}, \"505\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"504\", 0]}}, \"506\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"505\", 0]}}, \"507\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"506\", 0]}}, \"508\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"507\", 0]}}, \"509\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"508\", 0]}}, \"510\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"509\", 0]}}, \"511\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"510\", 0]}}, \"512\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"511\", 0]}}, \"513\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"512\", 0]}}, \"514\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"513\", 0]}}, \"515\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"514\", 0]}}, \"516\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"515\", 0]}}, \"517\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"516\", 0]}}, \"518\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"517\", 0]}}, \"519\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"518\", 0]}}, \"520\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"519\", 0]}}, \"521\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"520\", 0]}}, \"522\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"521\", 0]}}, \"523\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"522\", 0]}}, \"524\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"523\", 0]}}, \"525\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"524\", 0]}}, \"526\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"525\", 0]}}, \"527\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"526\", 0]}}, \"528\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"527\", 0]}}, \"529\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"528\", 0]}}, \"530\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"529\", 0]}}, \"531\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"530\", 0]}}, \"532\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"531\", 0]}}, \"533\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"532\", 0]}}, \"534\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"533\", 0]}}, \"535\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"534\", 0]}}, \"536\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"535\", 0]}}, \"537\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"536\", 0]}}, \"538\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"537\", 0]}}, \"539\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"538\", 0]}}, \"540\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"539\", 0]}}, \"541\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"540\", 0]}}, \"542\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"541\", 0]}}, \"543\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"542\", 0]}}, \"544\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"543\", 0]}}, \"545\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"544\", 0]}}, \"546\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"545\", 0]}}, \"547\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"546\", 0]}}, \"548\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"547\", 0]}}, \"549\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"548\", 0]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"549\", 0], \"negative\": [\"1\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "deep chain text", + "positivePrompt": "No prompt found", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:chain-beyond-visit-limit", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"1\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"deep chain text\", \"clip\": [\"4\", 1]}}, \"100\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"1\", 0]}}, \"101\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"100\", 0]}}, \"102\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"101\", 0]}}, \"103\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"102\", 0]}}, \"104\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"103\", 0]}}, \"105\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"104\", 0]}}, \"106\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"105\", 0]}}, \"107\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"106\", 0]}}, \"108\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"107\", 0]}}, \"109\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"108\", 0]}}, \"110\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"109\", 0]}}, \"111\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"110\", 0]}}, \"112\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"111\", 0]}}, \"113\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"112\", 0]}}, \"114\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"113\", 0]}}, \"115\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"114\", 0]}}, \"116\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"115\", 0]}}, \"117\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"116\", 0]}}, \"118\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"117\", 0]}}, \"119\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"118\", 0]}}, \"120\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"119\", 0]}}, \"121\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"120\", 0]}}, \"122\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"121\", 0]}}, \"123\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"122\", 0]}}, \"124\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"123\", 0]}}, \"125\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"124\", 0]}}, \"126\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"125\", 0]}}, \"127\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"126\", 0]}}, \"128\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"127\", 0]}}, \"129\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"128\", 0]}}, \"130\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"129\", 0]}}, \"131\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"130\", 0]}}, \"132\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"131\", 0]}}, \"133\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"132\", 0]}}, \"134\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"133\", 0]}}, \"135\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"134\", 0]}}, \"136\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"135\", 0]}}, \"137\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"136\", 0]}}, \"138\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"137\", 0]}}, \"139\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"138\", 0]}}, \"140\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"139\", 0]}}, \"141\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"140\", 0]}}, \"142\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"141\", 0]}}, \"143\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"142\", 0]}}, \"144\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"143\", 0]}}, \"145\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"144\", 0]}}, \"146\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"145\", 0]}}, \"147\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"146\", 0]}}, \"148\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"147\", 0]}}, \"149\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"148\", 0]}}, \"150\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"149\", 0]}}, \"151\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"150\", 0]}}, \"152\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"151\", 0]}}, \"153\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"152\", 0]}}, \"154\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"153\", 0]}}, \"155\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"154\", 0]}}, \"156\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"155\", 0]}}, \"157\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"156\", 0]}}, \"158\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"157\", 0]}}, \"159\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"158\", 0]}}, \"160\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"159\", 0]}}, \"161\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"160\", 0]}}, \"162\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"161\", 0]}}, \"163\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"162\", 0]}}, \"164\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"163\", 0]}}, \"165\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"164\", 0]}}, \"166\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"165\", 0]}}, \"167\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"166\", 0]}}, \"168\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"167\", 0]}}, \"169\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"168\", 0]}}, \"170\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"169\", 0]}}, \"171\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"170\", 0]}}, \"172\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"171\", 0]}}, \"173\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"172\", 0]}}, \"174\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"173\", 0]}}, \"175\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"174\", 0]}}, \"176\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"175\", 0]}}, \"177\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"176\", 0]}}, \"178\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"177\", 0]}}, \"179\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"178\", 0]}}, \"180\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"179\", 0]}}, \"181\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"180\", 0]}}, \"182\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"181\", 0]}}, \"183\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"182\", 0]}}, \"184\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"183\", 0]}}, \"185\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"184\", 0]}}, \"186\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"185\", 0]}}, \"187\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"186\", 0]}}, \"188\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"187\", 0]}}, \"189\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"188\", 0]}}, \"190\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"189\", 0]}}, \"191\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"190\", 0]}}, \"192\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"191\", 0]}}, \"193\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"192\", 0]}}, \"194\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"193\", 0]}}, \"195\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"194\", 0]}}, \"196\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"195\", 0]}}, \"197\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"196\", 0]}}, \"198\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"197\", 0]}}, \"199\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"198\", 0]}}, \"200\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"199\", 0]}}, \"201\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"200\", 0]}}, \"202\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"201\", 0]}}, \"203\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"202\", 0]}}, \"204\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"203\", 0]}}, \"205\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"204\", 0]}}, \"206\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"205\", 0]}}, \"207\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"206\", 0]}}, \"208\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"207\", 0]}}, \"209\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"208\", 0]}}, \"210\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"209\", 0]}}, \"211\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"210\", 0]}}, \"212\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"211\", 0]}}, \"213\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"212\", 0]}}, \"214\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"213\", 0]}}, \"215\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"214\", 0]}}, \"216\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"215\", 0]}}, \"217\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"216\", 0]}}, \"218\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"217\", 0]}}, \"219\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"218\", 0]}}, \"220\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"219\", 0]}}, \"221\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"220\", 0]}}, \"222\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"221\", 0]}}, \"223\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"222\", 0]}}, \"224\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"223\", 0]}}, \"225\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"224\", 0]}}, \"226\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"225\", 0]}}, \"227\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"226\", 0]}}, \"228\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"227\", 0]}}, \"229\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"228\", 0]}}, \"230\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"229\", 0]}}, \"231\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"230\", 0]}}, \"232\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"231\", 0]}}, \"233\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"232\", 0]}}, \"234\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"233\", 0]}}, \"235\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"234\", 0]}}, \"236\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"235\", 0]}}, \"237\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"236\", 0]}}, \"238\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"237\", 0]}}, \"239\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"238\", 0]}}, \"240\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"239\", 0]}}, \"241\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"240\", 0]}}, \"242\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"241\", 0]}}, \"243\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"242\", 0]}}, \"244\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"243\", 0]}}, \"245\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"244\", 0]}}, \"246\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"245\", 0]}}, \"247\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"246\", 0]}}, \"248\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"247\", 0]}}, \"249\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"248\", 0]}}, \"250\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"249\", 0]}}, \"251\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"250\", 0]}}, \"252\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"251\", 0]}}, \"253\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"252\", 0]}}, \"254\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"253\", 0]}}, \"255\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"254\", 0]}}, \"256\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"255\", 0]}}, \"257\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"256\", 0]}}, \"258\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"257\", 0]}}, \"259\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"258\", 0]}}, \"260\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"259\", 0]}}, \"261\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"260\", 0]}}, \"262\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"261\", 0]}}, \"263\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"262\", 0]}}, \"264\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"263\", 0]}}, \"265\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"264\", 0]}}, \"266\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"265\", 0]}}, \"267\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"266\", 0]}}, \"268\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"267\", 0]}}, \"269\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"268\", 0]}}, \"270\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"269\", 0]}}, \"271\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"270\", 0]}}, \"272\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"271\", 0]}}, \"273\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"272\", 0]}}, \"274\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"273\", 0]}}, \"275\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"274\", 0]}}, \"276\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"275\", 0]}}, \"277\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"276\", 0]}}, \"278\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"277\", 0]}}, \"279\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"278\", 0]}}, \"280\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"279\", 0]}}, \"281\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"280\", 0]}}, \"282\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"281\", 0]}}, \"283\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"282\", 0]}}, \"284\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"283\", 0]}}, \"285\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"284\", 0]}}, \"286\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"285\", 0]}}, \"287\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"286\", 0]}}, \"288\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"287\", 0]}}, \"289\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"288\", 0]}}, \"290\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"289\", 0]}}, \"291\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"290\", 0]}}, \"292\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"291\", 0]}}, \"293\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"292\", 0]}}, \"294\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"293\", 0]}}, \"295\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"294\", 0]}}, \"296\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"295\", 0]}}, \"297\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"296\", 0]}}, \"298\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"297\", 0]}}, \"299\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"298\", 0]}}, \"300\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"299\", 0]}}, \"301\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"300\", 0]}}, \"302\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"301\", 0]}}, \"303\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"302\", 0]}}, \"304\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"303\", 0]}}, \"305\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"304\", 0]}}, \"306\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"305\", 0]}}, \"307\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"306\", 0]}}, \"308\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"307\", 0]}}, \"309\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"308\", 0]}}, \"310\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"309\", 0]}}, \"311\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"310\", 0]}}, \"312\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"311\", 0]}}, \"313\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"312\", 0]}}, \"314\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"313\", 0]}}, \"315\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"314\", 0]}}, \"316\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"315\", 0]}}, \"317\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"316\", 0]}}, \"318\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"317\", 0]}}, \"319\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"318\", 0]}}, \"320\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"319\", 0]}}, \"321\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"320\", 0]}}, \"322\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"321\", 0]}}, \"323\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"322\", 0]}}, \"324\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"323\", 0]}}, \"325\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"324\", 0]}}, \"326\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"325\", 0]}}, \"327\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"326\", 0]}}, \"328\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"327\", 0]}}, \"329\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"328\", 0]}}, \"330\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"329\", 0]}}, \"331\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"330\", 0]}}, \"332\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"331\", 0]}}, \"333\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"332\", 0]}}, \"334\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"333\", 0]}}, \"335\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"334\", 0]}}, \"336\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"335\", 0]}}, \"337\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"336\", 0]}}, \"338\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"337\", 0]}}, \"339\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"338\", 0]}}, \"340\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"339\", 0]}}, \"341\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"340\", 0]}}, \"342\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"341\", 0]}}, \"343\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"342\", 0]}}, \"344\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"343\", 0]}}, \"345\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"344\", 0]}}, \"346\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"345\", 0]}}, \"347\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"346\", 0]}}, \"348\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"347\", 0]}}, \"349\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"348\", 0]}}, \"350\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"349\", 0]}}, \"351\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"350\", 0]}}, \"352\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"351\", 0]}}, \"353\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"352\", 0]}}, \"354\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"353\", 0]}}, \"355\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"354\", 0]}}, \"356\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"355\", 0]}}, \"357\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"356\", 0]}}, \"358\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"357\", 0]}}, \"359\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"358\", 0]}}, \"360\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"359\", 0]}}, \"361\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"360\", 0]}}, \"362\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"361\", 0]}}, \"363\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"362\", 0]}}, \"364\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"363\", 0]}}, \"365\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"364\", 0]}}, \"366\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"365\", 0]}}, \"367\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"366\", 0]}}, \"368\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"367\", 0]}}, \"369\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"368\", 0]}}, \"370\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"369\", 0]}}, \"371\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"370\", 0]}}, \"372\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"371\", 0]}}, \"373\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"372\", 0]}}, \"374\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"373\", 0]}}, \"375\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"374\", 0]}}, \"376\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"375\", 0]}}, \"377\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"376\", 0]}}, \"378\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"377\", 0]}}, \"379\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"378\", 0]}}, \"380\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"379\", 0]}}, \"381\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"380\", 0]}}, \"382\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"381\", 0]}}, \"383\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"382\", 0]}}, \"384\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"383\", 0]}}, \"385\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"384\", 0]}}, \"386\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"385\", 0]}}, \"387\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"386\", 0]}}, \"388\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"387\", 0]}}, \"389\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"388\", 0]}}, \"390\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"389\", 0]}}, \"391\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"390\", 0]}}, \"392\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"391\", 0]}}, \"393\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"392\", 0]}}, \"394\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"393\", 0]}}, \"395\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"394\", 0]}}, \"396\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"395\", 0]}}, \"397\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"396\", 0]}}, \"398\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"397\", 0]}}, \"399\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"398\", 0]}}, \"400\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"399\", 0]}}, \"401\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"400\", 0]}}, \"402\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"401\", 0]}}, \"403\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"402\", 0]}}, \"404\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"403\", 0]}}, \"405\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"404\", 0]}}, \"406\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"405\", 0]}}, \"407\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"406\", 0]}}, \"408\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"407\", 0]}}, \"409\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"408\", 0]}}, \"410\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"409\", 0]}}, \"411\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"410\", 0]}}, \"412\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"411\", 0]}}, \"413\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"412\", 0]}}, \"414\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"413\", 0]}}, \"415\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"414\", 0]}}, \"416\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"415\", 0]}}, \"417\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"416\", 0]}}, \"418\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"417\", 0]}}, \"419\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"418\", 0]}}, \"420\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"419\", 0]}}, \"421\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"420\", 0]}}, \"422\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"421\", 0]}}, \"423\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"422\", 0]}}, \"424\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"423\", 0]}}, \"425\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"424\", 0]}}, \"426\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"425\", 0]}}, \"427\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"426\", 0]}}, \"428\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"427\", 0]}}, \"429\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"428\", 0]}}, \"430\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"429\", 0]}}, \"431\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"430\", 0]}}, \"432\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"431\", 0]}}, \"433\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"432\", 0]}}, \"434\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"433\", 0]}}, \"435\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"434\", 0]}}, \"436\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"435\", 0]}}, \"437\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"436\", 0]}}, \"438\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"437\", 0]}}, \"439\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"438\", 0]}}, \"440\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"439\", 0]}}, \"441\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"440\", 0]}}, \"442\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"441\", 0]}}, \"443\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"442\", 0]}}, \"444\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"443\", 0]}}, \"445\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"444\", 0]}}, \"446\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"445\", 0]}}, \"447\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"446\", 0]}}, \"448\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"447\", 0]}}, \"449\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"448\", 0]}}, \"450\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"449\", 0]}}, \"451\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"450\", 0]}}, \"452\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"451\", 0]}}, \"453\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"452\", 0]}}, \"454\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"453\", 0]}}, \"455\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"454\", 0]}}, \"456\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"455\", 0]}}, \"457\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"456\", 0]}}, \"458\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"457\", 0]}}, \"459\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"458\", 0]}}, \"460\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"459\", 0]}}, \"461\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"460\", 0]}}, \"462\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"461\", 0]}}, \"463\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"462\", 0]}}, \"464\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"463\", 0]}}, \"465\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"464\", 0]}}, \"466\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"465\", 0]}}, \"467\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"466\", 0]}}, \"468\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"467\", 0]}}, \"469\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"468\", 0]}}, \"470\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"469\", 0]}}, \"471\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"470\", 0]}}, \"472\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"471\", 0]}}, \"473\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"472\", 0]}}, \"474\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"473\", 0]}}, \"475\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"474\", 0]}}, \"476\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"475\", 0]}}, \"477\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"476\", 0]}}, \"478\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"477\", 0]}}, \"479\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"478\", 0]}}, \"480\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"479\", 0]}}, \"481\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"480\", 0]}}, \"482\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"481\", 0]}}, \"483\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"482\", 0]}}, \"484\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"483\", 0]}}, \"485\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"484\", 0]}}, \"486\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"485\", 0]}}, \"487\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"486\", 0]}}, \"488\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"487\", 0]}}, \"489\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"488\", 0]}}, \"490\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"489\", 0]}}, \"491\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"490\", 0]}}, \"492\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"491\", 0]}}, \"493\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"492\", 0]}}, \"494\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"493\", 0]}}, \"495\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"494\", 0]}}, \"496\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"495\", 0]}}, \"497\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"496\", 0]}}, \"498\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"497\", 0]}}, \"499\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"498\", 0]}}, \"500\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"499\", 0]}}, \"501\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"500\", 0]}}, \"502\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"501\", 0]}}, \"503\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"502\", 0]}}, \"504\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"503\", 0]}}, \"505\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"504\", 0]}}, \"506\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"505\", 0]}}, \"507\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"506\", 0]}}, \"508\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"507\", 0]}}, \"509\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"508\", 0]}}, \"510\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"509\", 0]}}, \"511\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"510\", 0]}}, \"512\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"511\", 0]}}, \"513\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"512\", 0]}}, \"514\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"513\", 0]}}, \"515\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"514\", 0]}}, \"516\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"515\", 0]}}, \"517\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"516\", 0]}}, \"518\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"517\", 0]}}, \"519\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"518\", 0]}}, \"520\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"519\", 0]}}, \"521\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"520\", 0]}}, \"522\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"521\", 0]}}, \"523\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"522\", 0]}}, \"524\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"523\", 0]}}, \"525\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"524\", 0]}}, \"526\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"525\", 0]}}, \"527\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"526\", 0]}}, \"528\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"527\", 0]}}, \"529\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"528\", 0]}}, \"530\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"529\", 0]}}, \"531\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"530\", 0]}}, \"532\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"531\", 0]}}, \"533\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"532\", 0]}}, \"534\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"533\", 0]}}, \"535\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"534\", 0]}}, \"536\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"535\", 0]}}, \"537\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"536\", 0]}}, \"538\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"537\", 0]}}, \"539\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"538\", 0]}}, \"540\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"539\", 0]}}, \"541\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"540\", 0]}}, \"542\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"541\", 0]}}, \"543\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"542\", 0]}}, \"544\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"543\", 0]}}, \"545\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"544\", 0]}}, \"546\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"545\", 0]}}, \"547\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"546\", 0]}}, \"548\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"547\", 0]}}, \"549\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"548\", 0]}}, \"550\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"549\", 0]}}, \"551\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"550\", 0]}}, \"552\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"551\", 0]}}, \"553\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"552\", 0]}}, \"554\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"553\", 0]}}, \"555\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"554\", 0]}}, \"556\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"555\", 0]}}, \"557\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"556\", 0]}}, \"558\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"557\", 0]}}, \"559\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"558\", 0]}}, \"560\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"559\", 0]}}, \"561\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"560\", 0]}}, \"562\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"561\", 0]}}, \"563\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"562\", 0]}}, \"564\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"563\", 0]}}, \"565\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"564\", 0]}}, \"566\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"565\", 0]}}, \"567\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"566\", 0]}}, \"568\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"567\", 0]}}, \"569\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"568\", 0]}}, \"570\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"569\", 0]}}, \"571\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"570\", 0]}}, \"572\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"571\", 0]}}, \"573\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"572\", 0]}}, \"574\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"573\", 0]}}, \"575\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"574\", 0]}}, \"576\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"575\", 0]}}, \"577\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"576\", 0]}}, \"578\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"577\", 0]}}, \"579\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"578\", 0]}}, \"580\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"579\", 0]}}, \"581\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"580\", 0]}}, \"582\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"581\", 0]}}, \"583\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"582\", 0]}}, \"584\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"583\", 0]}}, \"585\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"584\", 0]}}, \"586\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"585\", 0]}}, \"587\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"586\", 0]}}, \"588\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"587\", 0]}}, \"589\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"588\", 0]}}, \"590\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"589\", 0]}}, \"591\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"590\", 0]}}, \"592\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"591\", 0]}}, \"593\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"592\", 0]}}, \"594\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"593\", 0]}}, \"595\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"594\", 0]}}, \"596\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"595\", 0]}}, \"597\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"596\", 0]}}, \"598\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"597\", 0]}}, \"599\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"598\", 0]}}, \"600\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"599\", 0]}}, \"601\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"600\", 0]}}, \"602\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"601\", 0]}}, \"603\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"602\", 0]}}, \"604\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"603\", 0]}}, \"605\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"604\", 0]}}, \"606\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"605\", 0]}}, \"607\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"606\", 0]}}, \"608\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"607\", 0]}}, \"609\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"608\", 0]}}, \"610\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"609\", 0]}}, \"611\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"610\", 0]}}, \"612\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"611\", 0]}}, \"613\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"612\", 0]}}, \"614\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"613\", 0]}}, \"615\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"614\", 0]}}, \"616\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"615\", 0]}}, \"617\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"616\", 0]}}, \"618\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"617\", 0]}}, \"619\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"618\", 0]}}, \"620\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"619\", 0]}}, \"621\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"620\", 0]}}, \"622\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"621\", 0]}}, \"623\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"622\", 0]}}, \"624\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"623\", 0]}}, \"625\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"624\", 0]}}, \"626\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"625\", 0]}}, \"627\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"626\", 0]}}, \"628\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"627\", 0]}}, \"629\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"628\", 0]}}, \"630\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"629\", 0]}}, \"631\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"630\", 0]}}, \"632\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"631\", 0]}}, \"633\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"632\", 0]}}, \"634\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"633\", 0]}}, \"635\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"634\", 0]}}, \"636\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"635\", 0]}}, \"637\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"636\", 0]}}, \"638\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"637\", 0]}}, \"639\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"638\", 0]}}, \"640\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"639\", 0]}}, \"641\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"640\", 0]}}, \"642\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"641\", 0]}}, \"643\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"642\", 0]}}, \"644\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"643\", 0]}}, \"645\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"644\", 0]}}, \"646\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"645\", 0]}}, \"647\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"646\", 0]}}, \"648\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"647\", 0]}}, \"649\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"648\", 0]}}, \"650\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"649\", 0]}}, \"651\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"650\", 0]}}, \"652\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"651\", 0]}}, \"653\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"652\", 0]}}, \"654\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"653\", 0]}}, \"655\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"654\", 0]}}, \"656\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"655\", 0]}}, \"657\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"656\", 0]}}, \"658\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"657\", 0]}}, \"659\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"658\", 0]}}, \"660\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"659\", 0]}}, \"661\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"660\", 0]}}, \"662\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"661\", 0]}}, \"663\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"662\", 0]}}, \"664\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"663\", 0]}}, \"665\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"664\", 0]}}, \"666\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"665\", 0]}}, \"667\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"666\", 0]}}, \"668\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"667\", 0]}}, \"669\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"668\", 0]}}, \"670\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"669\", 0]}}, \"671\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"670\", 0]}}, \"672\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"671\", 0]}}, \"673\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"672\", 0]}}, \"674\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"673\", 0]}}, \"675\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"674\", 0]}}, \"676\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"675\", 0]}}, \"677\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"676\", 0]}}, \"678\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"677\", 0]}}, \"679\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"678\", 0]}}, \"680\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"679\", 0]}}, \"681\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"680\", 0]}}, \"682\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"681\", 0]}}, \"683\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"682\", 0]}}, \"684\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"683\", 0]}}, \"685\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"684\", 0]}}, \"686\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"685\", 0]}}, \"687\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"686\", 0]}}, \"688\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"687\", 0]}}, \"689\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"688\", 0]}}, \"690\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"689\", 0]}}, \"691\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"690\", 0]}}, \"692\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"691\", 0]}}, \"693\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"692\", 0]}}, \"694\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"693\", 0]}}, \"695\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"694\", 0]}}, \"696\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"695\", 0]}}, \"697\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"696\", 0]}}, \"698\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"697\", 0]}}, \"699\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"698\", 0]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"699\", 0], \"negative\": [\"1\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "deep chain text", + "positivePrompt": "deep chain text", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:chain-at-last-visit", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"1\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"deep chain text\", \"clip\": [\"4\", 1]}}, \"100\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"1\", 0]}}, \"101\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"100\", 0]}}, \"102\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"101\", 0]}}, \"103\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"102\", 0]}}, \"104\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"103\", 0]}}, \"105\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"104\", 0]}}, \"106\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"105\", 0]}}, \"107\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"106\", 0]}}, \"108\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"107\", 0]}}, \"109\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"108\", 0]}}, \"110\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"109\", 0]}}, \"111\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"110\", 0]}}, \"112\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"111\", 0]}}, \"113\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"112\", 0]}}, \"114\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"113\", 0]}}, \"115\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"114\", 0]}}, \"116\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"115\", 0]}}, \"117\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"116\", 0]}}, \"118\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"117\", 0]}}, \"119\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"118\", 0]}}, \"120\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"119\", 0]}}, \"121\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"120\", 0]}}, \"122\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"121\", 0]}}, \"123\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"122\", 0]}}, \"124\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"123\", 0]}}, \"125\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"124\", 0]}}, \"126\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"125\", 0]}}, \"127\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"126\", 0]}}, \"128\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"127\", 0]}}, \"129\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"128\", 0]}}, \"130\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"129\", 0]}}, \"131\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"130\", 0]}}, \"132\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"131\", 0]}}, \"133\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"132\", 0]}}, \"134\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"133\", 0]}}, \"135\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"134\", 0]}}, \"136\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"135\", 0]}}, \"137\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"136\", 0]}}, \"138\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"137\", 0]}}, \"139\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"138\", 0]}}, \"140\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"139\", 0]}}, \"141\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"140\", 0]}}, \"142\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"141\", 0]}}, \"143\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"142\", 0]}}, \"144\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"143\", 0]}}, \"145\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"144\", 0]}}, \"146\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"145\", 0]}}, \"147\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"146\", 0]}}, \"148\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"147\", 0]}}, \"149\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"148\", 0]}}, \"150\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"149\", 0]}}, \"151\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"150\", 0]}}, \"152\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"151\", 0]}}, \"153\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"152\", 0]}}, \"154\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"153\", 0]}}, \"155\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"154\", 0]}}, \"156\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"155\", 0]}}, \"157\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"156\", 0]}}, \"158\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"157\", 0]}}, \"159\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"158\", 0]}}, \"160\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"159\", 0]}}, \"161\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"160\", 0]}}, \"162\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"161\", 0]}}, \"163\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"162\", 0]}}, \"164\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"163\", 0]}}, \"165\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"164\", 0]}}, \"166\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"165\", 0]}}, \"167\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"166\", 0]}}, \"168\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"167\", 0]}}, \"169\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"168\", 0]}}, \"170\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"169\", 0]}}, \"171\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"170\", 0]}}, \"172\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"171\", 0]}}, \"173\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"172\", 0]}}, \"174\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"173\", 0]}}, \"175\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"174\", 0]}}, \"176\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"175\", 0]}}, \"177\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"176\", 0]}}, \"178\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"177\", 0]}}, \"179\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"178\", 0]}}, \"180\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"179\", 0]}}, \"181\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"180\", 0]}}, \"182\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"181\", 0]}}, \"183\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"182\", 0]}}, \"184\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"183\", 0]}}, \"185\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"184\", 0]}}, \"186\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"185\", 0]}}, \"187\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"186\", 0]}}, \"188\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"187\", 0]}}, \"189\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"188\", 0]}}, \"190\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"189\", 0]}}, \"191\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"190\", 0]}}, \"192\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"191\", 0]}}, \"193\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"192\", 0]}}, \"194\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"193\", 0]}}, \"195\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"194\", 0]}}, \"196\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"195\", 0]}}, \"197\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"196\", 0]}}, \"198\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"197\", 0]}}, \"199\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"198\", 0]}}, \"200\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"199\", 0]}}, \"201\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"200\", 0]}}, \"202\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"201\", 0]}}, \"203\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"202\", 0]}}, \"204\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"203\", 0]}}, \"205\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"204\", 0]}}, \"206\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"205\", 0]}}, \"207\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"206\", 0]}}, \"208\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"207\", 0]}}, \"209\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"208\", 0]}}, \"210\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"209\", 0]}}, \"211\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"210\", 0]}}, \"212\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"211\", 0]}}, \"213\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"212\", 0]}}, \"214\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"213\", 0]}}, \"215\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"214\", 0]}}, \"216\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"215\", 0]}}, \"217\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"216\", 0]}}, \"218\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"217\", 0]}}, \"219\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"218\", 0]}}, \"220\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"219\", 0]}}, \"221\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"220\", 0]}}, \"222\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"221\", 0]}}, \"223\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"222\", 0]}}, \"224\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"223\", 0]}}, \"225\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"224\", 0]}}, \"226\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"225\", 0]}}, \"227\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"226\", 0]}}, \"228\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"227\", 0]}}, \"229\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"228\", 0]}}, \"230\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"229\", 0]}}, \"231\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"230\", 0]}}, \"232\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"231\", 0]}}, \"233\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"232\", 0]}}, \"234\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"233\", 0]}}, \"235\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"234\", 0]}}, \"236\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"235\", 0]}}, \"237\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"236\", 0]}}, \"238\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"237\", 0]}}, \"239\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"238\", 0]}}, \"240\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"239\", 0]}}, \"241\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"240\", 0]}}, \"242\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"241\", 0]}}, \"243\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"242\", 0]}}, \"244\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"243\", 0]}}, \"245\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"244\", 0]}}, \"246\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"245\", 0]}}, \"247\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"246\", 0]}}, \"248\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"247\", 0]}}, \"249\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"248\", 0]}}, \"250\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"249\", 0]}}, \"251\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"250\", 0]}}, \"252\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"251\", 0]}}, \"253\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"252\", 0]}}, \"254\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"253\", 0]}}, \"255\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"254\", 0]}}, \"256\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"255\", 0]}}, \"257\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"256\", 0]}}, \"258\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"257\", 0]}}, \"259\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"258\", 0]}}, \"260\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"259\", 0]}}, \"261\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"260\", 0]}}, \"262\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"261\", 0]}}, \"263\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"262\", 0]}}, \"264\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"263\", 0]}}, \"265\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"264\", 0]}}, \"266\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"265\", 0]}}, \"267\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"266\", 0]}}, \"268\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"267\", 0]}}, \"269\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"268\", 0]}}, \"270\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"269\", 0]}}, \"271\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"270\", 0]}}, \"272\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"271\", 0]}}, \"273\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"272\", 0]}}, \"274\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"273\", 0]}}, \"275\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"274\", 0]}}, \"276\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"275\", 0]}}, \"277\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"276\", 0]}}, \"278\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"277\", 0]}}, \"279\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"278\", 0]}}, \"280\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"279\", 0]}}, \"281\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"280\", 0]}}, \"282\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"281\", 0]}}, \"283\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"282\", 0]}}, \"284\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"283\", 0]}}, \"285\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"284\", 0]}}, \"286\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"285\", 0]}}, \"287\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"286\", 0]}}, \"288\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"287\", 0]}}, \"289\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"288\", 0]}}, \"290\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"289\", 0]}}, \"291\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"290\", 0]}}, \"292\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"291\", 0]}}, \"293\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"292\", 0]}}, \"294\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"293\", 0]}}, \"295\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"294\", 0]}}, \"296\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"295\", 0]}}, \"297\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"296\", 0]}}, \"298\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"297\", 0]}}, \"299\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"298\", 0]}}, \"300\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"299\", 0]}}, \"301\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"300\", 0]}}, \"302\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"301\", 0]}}, \"303\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"302\", 0]}}, \"304\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"303\", 0]}}, \"305\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"304\", 0]}}, \"306\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"305\", 0]}}, \"307\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"306\", 0]}}, \"308\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"307\", 0]}}, \"309\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"308\", 0]}}, \"310\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"309\", 0]}}, \"311\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"310\", 0]}}, \"312\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"311\", 0]}}, \"313\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"312\", 0]}}, \"314\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"313\", 0]}}, \"315\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"314\", 0]}}, \"316\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"315\", 0]}}, \"317\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"316\", 0]}}, \"318\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"317\", 0]}}, \"319\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"318\", 0]}}, \"320\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"319\", 0]}}, \"321\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"320\", 0]}}, \"322\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"321\", 0]}}, \"323\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"322\", 0]}}, \"324\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"323\", 0]}}, \"325\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"324\", 0]}}, \"326\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"325\", 0]}}, \"327\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"326\", 0]}}, \"328\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"327\", 0]}}, \"329\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"328\", 0]}}, \"330\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"329\", 0]}}, \"331\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"330\", 0]}}, \"332\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"331\", 0]}}, \"333\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"332\", 0]}}, \"334\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"333\", 0]}}, \"335\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"334\", 0]}}, \"336\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"335\", 0]}}, \"337\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"336\", 0]}}, \"338\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"337\", 0]}}, \"339\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"338\", 0]}}, \"340\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"339\", 0]}}, \"341\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"340\", 0]}}, \"342\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"341\", 0]}}, \"343\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"342\", 0]}}, \"344\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"343\", 0]}}, \"345\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"344\", 0]}}, \"346\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"345\", 0]}}, \"347\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"346\", 0]}}, \"348\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"347\", 0]}}, \"349\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"348\", 0]}}, \"350\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"349\", 0]}}, \"351\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"350\", 0]}}, \"352\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"351\", 0]}}, \"353\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"352\", 0]}}, \"354\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"353\", 0]}}, \"355\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"354\", 0]}}, \"356\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"355\", 0]}}, \"357\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"356\", 0]}}, \"358\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"357\", 0]}}, \"359\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"358\", 0]}}, \"360\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"359\", 0]}}, \"361\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"360\", 0]}}, \"362\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"361\", 0]}}, \"363\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"362\", 0]}}, \"364\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"363\", 0]}}, \"365\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"364\", 0]}}, \"366\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"365\", 0]}}, \"367\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"366\", 0]}}, \"368\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"367\", 0]}}, \"369\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"368\", 0]}}, \"370\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"369\", 0]}}, \"371\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"370\", 0]}}, \"372\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"371\", 0]}}, \"373\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"372\", 0]}}, \"374\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"373\", 0]}}, \"375\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"374\", 0]}}, \"376\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"375\", 0]}}, \"377\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"376\", 0]}}, \"378\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"377\", 0]}}, \"379\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"378\", 0]}}, \"380\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"379\", 0]}}, \"381\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"380\", 0]}}, \"382\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"381\", 0]}}, \"383\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"382\", 0]}}, \"384\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"383\", 0]}}, \"385\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"384\", 0]}}, \"386\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"385\", 0]}}, \"387\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"386\", 0]}}, \"388\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"387\", 0]}}, \"389\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"388\", 0]}}, \"390\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"389\", 0]}}, \"391\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"390\", 0]}}, \"392\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"391\", 0]}}, \"393\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"392\", 0]}}, \"394\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"393\", 0]}}, \"395\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"394\", 0]}}, \"396\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"395\", 0]}}, \"397\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"396\", 0]}}, \"398\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"397\", 0]}}, \"399\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"398\", 0]}}, \"400\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"399\", 0]}}, \"401\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"400\", 0]}}, \"402\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"401\", 0]}}, \"403\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"402\", 0]}}, \"404\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"403\", 0]}}, \"405\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"404\", 0]}}, \"406\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"405\", 0]}}, \"407\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"406\", 0]}}, \"408\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"407\", 0]}}, \"409\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"408\", 0]}}, \"410\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"409\", 0]}}, \"411\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"410\", 0]}}, \"412\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"411\", 0]}}, \"413\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"412\", 0]}}, \"414\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"413\", 0]}}, \"415\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"414\", 0]}}, \"416\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"415\", 0]}}, \"417\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"416\", 0]}}, \"418\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"417\", 0]}}, \"419\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"418\", 0]}}, \"420\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"419\", 0]}}, \"421\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"420\", 0]}}, \"422\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"421\", 0]}}, \"423\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"422\", 0]}}, \"424\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"423\", 0]}}, \"425\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"424\", 0]}}, \"426\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"425\", 0]}}, \"427\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"426\", 0]}}, \"428\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"427\", 0]}}, \"429\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"428\", 0]}}, \"430\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"429\", 0]}}, \"431\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"430\", 0]}}, \"432\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"431\", 0]}}, \"433\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"432\", 0]}}, \"434\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"433\", 0]}}, \"435\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"434\", 0]}}, \"436\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"435\", 0]}}, \"437\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"436\", 0]}}, \"438\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"437\", 0]}}, \"439\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"438\", 0]}}, \"440\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"439\", 0]}}, \"441\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"440\", 0]}}, \"442\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"441\", 0]}}, \"443\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"442\", 0]}}, \"444\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"443\", 0]}}, \"445\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"444\", 0]}}, \"446\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"445\", 0]}}, \"447\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"446\", 0]}}, \"448\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"447\", 0]}}, \"449\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"448\", 0]}}, \"450\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"449\", 0]}}, \"451\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"450\", 0]}}, \"452\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"451\", 0]}}, \"453\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"452\", 0]}}, \"454\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"453\", 0]}}, \"455\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"454\", 0]}}, \"456\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"455\", 0]}}, \"457\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"456\", 0]}}, \"458\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"457\", 0]}}, \"459\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"458\", 0]}}, \"460\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"459\", 0]}}, \"461\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"460\", 0]}}, \"462\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"461\", 0]}}, \"463\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"462\", 0]}}, \"464\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"463\", 0]}}, \"465\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"464\", 0]}}, \"466\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"465\", 0]}}, \"467\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"466\", 0]}}, \"468\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"467\", 0]}}, \"469\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"468\", 0]}}, \"470\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"469\", 0]}}, \"471\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"470\", 0]}}, \"472\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"471\", 0]}}, \"473\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"472\", 0]}}, \"474\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"473\", 0]}}, \"475\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"474\", 0]}}, \"476\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"475\", 0]}}, \"477\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"476\", 0]}}, \"478\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"477\", 0]}}, \"479\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"478\", 0]}}, \"480\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"479\", 0]}}, \"481\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"480\", 0]}}, \"482\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"481\", 0]}}, \"483\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"482\", 0]}}, \"484\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"483\", 0]}}, \"485\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"484\", 0]}}, \"486\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"485\", 0]}}, \"487\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"486\", 0]}}, \"488\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"487\", 0]}}, \"489\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"488\", 0]}}, \"490\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"489\", 0]}}, \"491\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"490\", 0]}}, \"492\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"491\", 0]}}, \"493\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"492\", 0]}}, \"494\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"493\", 0]}}, \"495\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"494\", 0]}}, \"496\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"495\", 0]}}, \"497\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"496\", 0]}}, \"498\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"497\", 0]}}, \"499\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"498\", 0]}}, \"500\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"499\", 0]}}, \"501\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"500\", 0]}}, \"502\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"501\", 0]}}, \"503\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"502\", 0]}}, \"504\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"503\", 0]}}, \"505\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"504\", 0]}}, \"506\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"505\", 0]}}, \"507\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"506\", 0]}}, \"508\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"507\", 0]}}, \"509\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"508\", 0]}}, \"510\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"509\", 0]}}, \"511\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"510\", 0]}}, \"512\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"511\", 0]}}, \"513\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"512\", 0]}}, \"514\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"513\", 0]}}, \"515\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"514\", 0]}}, \"516\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"515\", 0]}}, \"517\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"516\", 0]}}, \"518\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"517\", 0]}}, \"519\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"518\", 0]}}, \"520\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"519\", 0]}}, \"521\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"520\", 0]}}, \"522\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"521\", 0]}}, \"523\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"522\", 0]}}, \"524\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"523\", 0]}}, \"525\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"524\", 0]}}, \"526\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"525\", 0]}}, \"527\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"526\", 0]}}, \"528\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"527\", 0]}}, \"529\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"528\", 0]}}, \"530\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"529\", 0]}}, \"531\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"530\", 0]}}, \"532\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"531\", 0]}}, \"533\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"532\", 0]}}, \"534\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"533\", 0]}}, \"535\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"534\", 0]}}, \"536\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"535\", 0]}}, \"537\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"536\", 0]}}, \"538\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"537\", 0]}}, \"539\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"538\", 0]}}, \"540\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"539\", 0]}}, \"541\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"540\", 0]}}, \"542\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"541\", 0]}}, \"543\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"542\", 0]}}, \"544\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"543\", 0]}}, \"545\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"544\", 0]}}, \"546\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"545\", 0]}}, \"547\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"546\", 0]}}, \"548\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"547\", 0]}}, \"549\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"548\", 0]}}, \"550\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"549\", 0]}}, \"551\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"550\", 0]}}, \"552\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"551\", 0]}}, \"553\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"552\", 0]}}, \"554\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"553\", 0]}}, \"555\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"554\", 0]}}, \"556\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"555\", 0]}}, \"557\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"556\", 0]}}, \"558\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"557\", 0]}}, \"559\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"558\", 0]}}, \"560\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"559\", 0]}}, \"561\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"560\", 0]}}, \"562\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"561\", 0]}}, \"563\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"562\", 0]}}, \"564\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"563\", 0]}}, \"565\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"564\", 0]}}, \"566\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"565\", 0]}}, \"567\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"566\", 0]}}, \"568\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"567\", 0]}}, \"569\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"568\", 0]}}, \"570\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"569\", 0]}}, \"571\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"570\", 0]}}, \"572\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"571\", 0]}}, \"573\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"572\", 0]}}, \"574\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"573\", 0]}}, \"575\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"574\", 0]}}, \"576\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"575\", 0]}}, \"577\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"576\", 0]}}, \"578\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"577\", 0]}}, \"579\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"578\", 0]}}, \"580\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"579\", 0]}}, \"581\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"580\", 0]}}, \"582\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"581\", 0]}}, \"583\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"582\", 0]}}, \"584\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"583\", 0]}}, \"585\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"584\", 0]}}, \"586\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"585\", 0]}}, \"587\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"586\", 0]}}, \"588\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"587\", 0]}}, \"589\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"588\", 0]}}, \"590\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"589\", 0]}}, \"591\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"590\", 0]}}, \"592\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"591\", 0]}}, \"593\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"592\", 0]}}, \"594\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"593\", 0]}}, \"595\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"594\", 0]}}, \"596\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"595\", 0]}}, \"597\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"596\", 0]}}, \"598\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"597\", 0]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"598\", 0], \"negative\": [\"1\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "deep chain text", + "positivePrompt": "No prompt found", + "sampler": "euler", + "seed": 5, + "steps": 20 + } + }, + "name": "case:chain-one-past-last-visit", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"1\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"deep chain text\", \"clip\": [\"4\", 1]}}, \"100\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"1\", 0]}}, \"101\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"100\", 0]}}, \"102\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"101\", 0]}}, \"103\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"102\", 0]}}, \"104\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"103\", 0]}}, \"105\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"104\", 0]}}, \"106\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"105\", 0]}}, \"107\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"106\", 0]}}, \"108\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"107\", 0]}}, \"109\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"108\", 0]}}, \"110\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"109\", 0]}}, \"111\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"110\", 0]}}, \"112\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"111\", 0]}}, \"113\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"112\", 0]}}, \"114\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"113\", 0]}}, \"115\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"114\", 0]}}, \"116\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"115\", 0]}}, \"117\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"116\", 0]}}, \"118\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"117\", 0]}}, \"119\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"118\", 0]}}, \"120\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"119\", 0]}}, \"121\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"120\", 0]}}, \"122\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"121\", 0]}}, \"123\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"122\", 0]}}, \"124\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"123\", 0]}}, \"125\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"124\", 0]}}, \"126\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"125\", 0]}}, \"127\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"126\", 0]}}, \"128\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"127\", 0]}}, \"129\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"128\", 0]}}, \"130\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"129\", 0]}}, \"131\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"130\", 0]}}, \"132\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"131\", 0]}}, \"133\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"132\", 0]}}, \"134\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"133\", 0]}}, \"135\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"134\", 0]}}, \"136\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"135\", 0]}}, \"137\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"136\", 0]}}, \"138\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"137\", 0]}}, \"139\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"138\", 0]}}, \"140\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"139\", 0]}}, \"141\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"140\", 0]}}, \"142\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"141\", 0]}}, \"143\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"142\", 0]}}, \"144\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"143\", 0]}}, \"145\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"144\", 0]}}, \"146\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"145\", 0]}}, \"147\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"146\", 0]}}, \"148\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"147\", 0]}}, \"149\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"148\", 0]}}, \"150\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"149\", 0]}}, \"151\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"150\", 0]}}, \"152\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"151\", 0]}}, \"153\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"152\", 0]}}, \"154\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"153\", 0]}}, \"155\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"154\", 0]}}, \"156\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"155\", 0]}}, \"157\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"156\", 0]}}, \"158\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"157\", 0]}}, \"159\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"158\", 0]}}, \"160\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"159\", 0]}}, \"161\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"160\", 0]}}, \"162\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"161\", 0]}}, \"163\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"162\", 0]}}, \"164\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"163\", 0]}}, \"165\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"164\", 0]}}, \"166\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"165\", 0]}}, \"167\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"166\", 0]}}, \"168\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"167\", 0]}}, \"169\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"168\", 0]}}, \"170\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"169\", 0]}}, \"171\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"170\", 0]}}, \"172\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"171\", 0]}}, \"173\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"172\", 0]}}, \"174\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"173\", 0]}}, \"175\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"174\", 0]}}, \"176\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"175\", 0]}}, \"177\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"176\", 0]}}, \"178\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"177\", 0]}}, \"179\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"178\", 0]}}, \"180\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"179\", 0]}}, \"181\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"180\", 0]}}, \"182\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"181\", 0]}}, \"183\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"182\", 0]}}, \"184\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"183\", 0]}}, \"185\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"184\", 0]}}, \"186\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"185\", 0]}}, \"187\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"186\", 0]}}, \"188\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"187\", 0]}}, \"189\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"188\", 0]}}, \"190\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"189\", 0]}}, \"191\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"190\", 0]}}, \"192\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"191\", 0]}}, \"193\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"192\", 0]}}, \"194\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"193\", 0]}}, \"195\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"194\", 0]}}, \"196\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"195\", 0]}}, \"197\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"196\", 0]}}, \"198\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"197\", 0]}}, \"199\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"198\", 0]}}, \"200\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"199\", 0]}}, \"201\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"200\", 0]}}, \"202\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"201\", 0]}}, \"203\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"202\", 0]}}, \"204\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"203\", 0]}}, \"205\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"204\", 0]}}, \"206\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"205\", 0]}}, \"207\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"206\", 0]}}, \"208\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"207\", 0]}}, \"209\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"208\", 0]}}, \"210\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"209\", 0]}}, \"211\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"210\", 0]}}, \"212\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"211\", 0]}}, \"213\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"212\", 0]}}, \"214\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"213\", 0]}}, \"215\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"214\", 0]}}, \"216\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"215\", 0]}}, \"217\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"216\", 0]}}, \"218\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"217\", 0]}}, \"219\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"218\", 0]}}, \"220\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"219\", 0]}}, \"221\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"220\", 0]}}, \"222\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"221\", 0]}}, \"223\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"222\", 0]}}, \"224\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"223\", 0]}}, \"225\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"224\", 0]}}, \"226\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"225\", 0]}}, \"227\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"226\", 0]}}, \"228\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"227\", 0]}}, \"229\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"228\", 0]}}, \"230\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"229\", 0]}}, \"231\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"230\", 0]}}, \"232\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"231\", 0]}}, \"233\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"232\", 0]}}, \"234\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"233\", 0]}}, \"235\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"234\", 0]}}, \"236\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"235\", 0]}}, \"237\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"236\", 0]}}, \"238\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"237\", 0]}}, \"239\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"238\", 0]}}, \"240\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"239\", 0]}}, \"241\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"240\", 0]}}, \"242\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"241\", 0]}}, \"243\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"242\", 0]}}, \"244\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"243\", 0]}}, \"245\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"244\", 0]}}, \"246\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"245\", 0]}}, \"247\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"246\", 0]}}, \"248\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"247\", 0]}}, \"249\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"248\", 0]}}, \"250\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"249\", 0]}}, \"251\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"250\", 0]}}, \"252\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"251\", 0]}}, \"253\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"252\", 0]}}, \"254\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"253\", 0]}}, \"255\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"254\", 0]}}, \"256\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"255\", 0]}}, \"257\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"256\", 0]}}, \"258\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"257\", 0]}}, \"259\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"258\", 0]}}, \"260\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"259\", 0]}}, \"261\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"260\", 0]}}, \"262\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"261\", 0]}}, \"263\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"262\", 0]}}, \"264\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"263\", 0]}}, \"265\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"264\", 0]}}, \"266\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"265\", 0]}}, \"267\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"266\", 0]}}, \"268\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"267\", 0]}}, \"269\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"268\", 0]}}, \"270\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"269\", 0]}}, \"271\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"270\", 0]}}, \"272\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"271\", 0]}}, \"273\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"272\", 0]}}, \"274\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"273\", 0]}}, \"275\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"274\", 0]}}, \"276\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"275\", 0]}}, \"277\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"276\", 0]}}, \"278\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"277\", 0]}}, \"279\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"278\", 0]}}, \"280\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"279\", 0]}}, \"281\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"280\", 0]}}, \"282\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"281\", 0]}}, \"283\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"282\", 0]}}, \"284\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"283\", 0]}}, \"285\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"284\", 0]}}, \"286\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"285\", 0]}}, \"287\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"286\", 0]}}, \"288\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"287\", 0]}}, \"289\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"288\", 0]}}, \"290\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"289\", 0]}}, \"291\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"290\", 0]}}, \"292\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"291\", 0]}}, \"293\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"292\", 0]}}, \"294\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"293\", 0]}}, \"295\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"294\", 0]}}, \"296\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"295\", 0]}}, \"297\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"296\", 0]}}, \"298\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"297\", 0]}}, \"299\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"298\", 0]}}, \"300\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"299\", 0]}}, \"301\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"300\", 0]}}, \"302\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"301\", 0]}}, \"303\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"302\", 0]}}, \"304\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"303\", 0]}}, \"305\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"304\", 0]}}, \"306\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"305\", 0]}}, \"307\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"306\", 0]}}, \"308\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"307\", 0]}}, \"309\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"308\", 0]}}, \"310\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"309\", 0]}}, \"311\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"310\", 0]}}, \"312\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"311\", 0]}}, \"313\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"312\", 0]}}, \"314\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"313\", 0]}}, \"315\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"314\", 0]}}, \"316\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"315\", 0]}}, \"317\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"316\", 0]}}, \"318\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"317\", 0]}}, \"319\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"318\", 0]}}, \"320\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"319\", 0]}}, \"321\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"320\", 0]}}, \"322\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"321\", 0]}}, \"323\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"322\", 0]}}, \"324\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"323\", 0]}}, \"325\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"324\", 0]}}, \"326\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"325\", 0]}}, \"327\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"326\", 0]}}, \"328\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"327\", 0]}}, \"329\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"328\", 0]}}, \"330\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"329\", 0]}}, \"331\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"330\", 0]}}, \"332\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"331\", 0]}}, \"333\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"332\", 0]}}, \"334\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"333\", 0]}}, \"335\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"334\", 0]}}, \"336\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"335\", 0]}}, \"337\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"336\", 0]}}, \"338\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"337\", 0]}}, \"339\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"338\", 0]}}, \"340\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"339\", 0]}}, \"341\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"340\", 0]}}, \"342\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"341\", 0]}}, \"343\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"342\", 0]}}, \"344\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"343\", 0]}}, \"345\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"344\", 0]}}, \"346\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"345\", 0]}}, \"347\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"346\", 0]}}, \"348\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"347\", 0]}}, \"349\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"348\", 0]}}, \"350\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"349\", 0]}}, \"351\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"350\", 0]}}, \"352\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"351\", 0]}}, \"353\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"352\", 0]}}, \"354\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"353\", 0]}}, \"355\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"354\", 0]}}, \"356\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"355\", 0]}}, \"357\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"356\", 0]}}, \"358\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"357\", 0]}}, \"359\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"358\", 0]}}, \"360\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"359\", 0]}}, \"361\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"360\", 0]}}, \"362\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"361\", 0]}}, \"363\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"362\", 0]}}, \"364\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"363\", 0]}}, \"365\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"364\", 0]}}, \"366\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"365\", 0]}}, \"367\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"366\", 0]}}, \"368\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"367\", 0]}}, \"369\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"368\", 0]}}, \"370\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"369\", 0]}}, \"371\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"370\", 0]}}, \"372\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"371\", 0]}}, \"373\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"372\", 0]}}, \"374\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"373\", 0]}}, \"375\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"374\", 0]}}, \"376\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"375\", 0]}}, \"377\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"376\", 0]}}, \"378\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"377\", 0]}}, \"379\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"378\", 0]}}, \"380\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"379\", 0]}}, \"381\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"380\", 0]}}, \"382\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"381\", 0]}}, \"383\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"382\", 0]}}, \"384\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"383\", 0]}}, \"385\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"384\", 0]}}, \"386\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"385\", 0]}}, \"387\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"386\", 0]}}, \"388\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"387\", 0]}}, \"389\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"388\", 0]}}, \"390\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"389\", 0]}}, \"391\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"390\", 0]}}, \"392\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"391\", 0]}}, \"393\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"392\", 0]}}, \"394\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"393\", 0]}}, \"395\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"394\", 0]}}, \"396\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"395\", 0]}}, \"397\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"396\", 0]}}, \"398\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"397\", 0]}}, \"399\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"398\", 0]}}, \"400\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"399\", 0]}}, \"401\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"400\", 0]}}, \"402\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"401\", 0]}}, \"403\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"402\", 0]}}, \"404\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"403\", 0]}}, \"405\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"404\", 0]}}, \"406\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"405\", 0]}}, \"407\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"406\", 0]}}, \"408\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"407\", 0]}}, \"409\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"408\", 0]}}, \"410\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"409\", 0]}}, \"411\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"410\", 0]}}, \"412\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"411\", 0]}}, \"413\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"412\", 0]}}, \"414\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"413\", 0]}}, \"415\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"414\", 0]}}, \"416\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"415\", 0]}}, \"417\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"416\", 0]}}, \"418\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"417\", 0]}}, \"419\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"418\", 0]}}, \"420\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"419\", 0]}}, \"421\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"420\", 0]}}, \"422\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"421\", 0]}}, \"423\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"422\", 0]}}, \"424\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"423\", 0]}}, \"425\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"424\", 0]}}, \"426\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"425\", 0]}}, \"427\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"426\", 0]}}, \"428\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"427\", 0]}}, \"429\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"428\", 0]}}, \"430\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"429\", 0]}}, \"431\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"430\", 0]}}, \"432\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"431\", 0]}}, \"433\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"432\", 0]}}, \"434\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"433\", 0]}}, \"435\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"434\", 0]}}, \"436\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"435\", 0]}}, \"437\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"436\", 0]}}, \"438\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"437\", 0]}}, \"439\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"438\", 0]}}, \"440\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"439\", 0]}}, \"441\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"440\", 0]}}, \"442\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"441\", 0]}}, \"443\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"442\", 0]}}, \"444\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"443\", 0]}}, \"445\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"444\", 0]}}, \"446\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"445\", 0]}}, \"447\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"446\", 0]}}, \"448\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"447\", 0]}}, \"449\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"448\", 0]}}, \"450\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"449\", 0]}}, \"451\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"450\", 0]}}, \"452\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"451\", 0]}}, \"453\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"452\", 0]}}, \"454\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"453\", 0]}}, \"455\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"454\", 0]}}, \"456\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"455\", 0]}}, \"457\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"456\", 0]}}, \"458\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"457\", 0]}}, \"459\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"458\", 0]}}, \"460\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"459\", 0]}}, \"461\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"460\", 0]}}, \"462\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"461\", 0]}}, \"463\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"462\", 0]}}, \"464\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"463\", 0]}}, \"465\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"464\", 0]}}, \"466\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"465\", 0]}}, \"467\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"466\", 0]}}, \"468\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"467\", 0]}}, \"469\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"468\", 0]}}, \"470\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"469\", 0]}}, \"471\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"470\", 0]}}, \"472\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"471\", 0]}}, \"473\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"472\", 0]}}, \"474\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"473\", 0]}}, \"475\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"474\", 0]}}, \"476\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"475\", 0]}}, \"477\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"476\", 0]}}, \"478\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"477\", 0]}}, \"479\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"478\", 0]}}, \"480\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"479\", 0]}}, \"481\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"480\", 0]}}, \"482\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"481\", 0]}}, \"483\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"482\", 0]}}, \"484\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"483\", 0]}}, \"485\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"484\", 0]}}, \"486\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"485\", 0]}}, \"487\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"486\", 0]}}, \"488\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"487\", 0]}}, \"489\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"488\", 0]}}, \"490\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"489\", 0]}}, \"491\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"490\", 0]}}, \"492\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"491\", 0]}}, \"493\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"492\", 0]}}, \"494\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"493\", 0]}}, \"495\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"494\", 0]}}, \"496\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"495\", 0]}}, \"497\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"496\", 0]}}, \"498\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"497\", 0]}}, \"499\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"498\", 0]}}, \"500\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"499\", 0]}}, \"501\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"500\", 0]}}, \"502\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"501\", 0]}}, \"503\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"502\", 0]}}, \"504\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"503\", 0]}}, \"505\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"504\", 0]}}, \"506\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"505\", 0]}}, \"507\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"506\", 0]}}, \"508\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"507\", 0]}}, \"509\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"508\", 0]}}, \"510\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"509\", 0]}}, \"511\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"510\", 0]}}, \"512\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"511\", 0]}}, \"513\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"512\", 0]}}, \"514\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"513\", 0]}}, \"515\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"514\", 0]}}, \"516\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"515\", 0]}}, \"517\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"516\", 0]}}, \"518\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"517\", 0]}}, \"519\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"518\", 0]}}, \"520\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"519\", 0]}}, \"521\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"520\", 0]}}, \"522\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"521\", 0]}}, \"523\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"522\", 0]}}, \"524\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"523\", 0]}}, \"525\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"524\", 0]}}, \"526\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"525\", 0]}}, \"527\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"526\", 0]}}, \"528\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"527\", 0]}}, \"529\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"528\", 0]}}, \"530\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"529\", 0]}}, \"531\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"530\", 0]}}, \"532\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"531\", 0]}}, \"533\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"532\", 0]}}, \"534\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"533\", 0]}}, \"535\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"534\", 0]}}, \"536\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"535\", 0]}}, \"537\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"536\", 0]}}, \"538\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"537\", 0]}}, \"539\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"538\", 0]}}, \"540\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"539\", 0]}}, \"541\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"540\", 0]}}, \"542\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"541\", 0]}}, \"543\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"542\", 0]}}, \"544\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"543\", 0]}}, \"545\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"544\", 0]}}, \"546\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"545\", 0]}}, \"547\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"546\", 0]}}, \"548\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"547\", 0]}}, \"549\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"548\", 0]}}, \"550\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"549\", 0]}}, \"551\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"550\", 0]}}, \"552\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"551\", 0]}}, \"553\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"552\", 0]}}, \"554\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"553\", 0]}}, \"555\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"554\", 0]}}, \"556\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"555\", 0]}}, \"557\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"556\", 0]}}, \"558\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"557\", 0]}}, \"559\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"558\", 0]}}, \"560\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"559\", 0]}}, \"561\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"560\", 0]}}, \"562\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"561\", 0]}}, \"563\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"562\", 0]}}, \"564\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"563\", 0]}}, \"565\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"564\", 0]}}, \"566\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"565\", 0]}}, \"567\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"566\", 0]}}, \"568\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"567\", 0]}}, \"569\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"568\", 0]}}, \"570\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"569\", 0]}}, \"571\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"570\", 0]}}, \"572\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"571\", 0]}}, \"573\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"572\", 0]}}, \"574\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"573\", 0]}}, \"575\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"574\", 0]}}, \"576\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"575\", 0]}}, \"577\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"576\", 0]}}, \"578\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"577\", 0]}}, \"579\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"578\", 0]}}, \"580\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"579\", 0]}}, \"581\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"580\", 0]}}, \"582\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"581\", 0]}}, \"583\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"582\", 0]}}, \"584\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"583\", 0]}}, \"585\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"584\", 0]}}, \"586\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"585\", 0]}}, \"587\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"586\", 0]}}, \"588\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"587\", 0]}}, \"589\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"588\", 0]}}, \"590\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"589\", 0]}}, \"591\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"590\", 0]}}, \"592\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"591\", 0]}}, \"593\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"592\", 0]}}, \"594\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"593\", 0]}}, \"595\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"594\", 0]}}, \"596\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"595\", 0]}}, \"597\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"596\", 0]}}, \"598\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"597\", 0]}}, \"599\": {\"class_type\": \"ConditioningPass\", \"inputs\": {\"conditioning\": [\"598\", 0]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"599\", 0], \"negative\": [\"1\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 7, + "checkpoint": "example.safetensors", + "negativePrompt": "kept negative", + "positivePrompt": "No prompt found", + "sampler": "euler", + "seed": 0, + "steps": 20 + } + }, + "name": "case:blank-text-and-zero-seed", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \" \", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"kept negative\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 0, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 1, + "checkpoint": "example.safetensors", + "negativePrompt": "blurry, watermark", + "positivePrompt": "a lighthouse at dusk, oil painting", + "sampler": "lcm", + "seed": 111, + "steps": 4 + } + }, + "name": "case:shared-prompt-pipeline", + "prompt": "{\"1\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"5\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 111, \"steps\": 4, \"cfg\": 1.0, \"sampler_name\": \"lcm\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"1\", 0], \"positive\": [\"25\", 0], \"negative\": [\"26\", 0], \"latent_image\": [\"20\", 0]}}, \"6\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"5\", 0], \"vae\": [\"1\", 2]}}, \"11\": {\"class_type\": \"VAEEncode\", \"inputs\": {\"pixels\": [\"6\", 0], \"vae\": [\"1\", 2]}}, \"12\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 222, \"steps\": 6, \"cfg\": 1.0, \"sampler_name\": \"lcm\", \"scheduler\": \"normal\", \"denoise\": 0.45, \"model\": [\"1\", 0], \"positive\": [\"25\", 0], \"negative\": [\"26\", 0], \"latent_image\": [\"11\", 0]}}, \"13\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"12\", 0], \"vae\": [\"1\", 2]}}, \"17\": {\"class_type\": \"FaceDetailer\", \"inputs\": {\"seed\": 333, \"steps\": 4, \"cfg\": 1.0, \"sampler_name\": \"lcm\", \"image\": [\"13\", 0], \"model\": [\"1\", 0], \"clip\": [\"1\", 1], \"vae\": [\"1\", 2], \"positive\": [\"25\", 0], \"negative\": [\"26\", 0]}}, \"20\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 640, \"height\": 1536, \"batch_size\": 1}}, \"25\": {\"class_type\": \"PromptManager\", \"inputs\": {\"text\": \"a lighthouse at dusk, oil painting\", \"category\": \"\", \"tags\": \"\", \"search_text\": \"\", \"prepend_text\": \"\", \"append_text\": \"\", \"clip\": [\"4\", 1]}}, \"26\": {\"class_type\": \"PromptManager\", \"inputs\": {\"text\": \"blurry, watermark\", \"category\": \"\", \"tags\": \"\", \"search_text\": \"\", \"prepend_text\": \"\", \"append_text\": \"\", \"clip\": [\"4\", 1]}}, \"48\": {\"class_type\": \"KikoSaveImage\", \"inputs\": {\"filename_prefix\": [\"49\", 0], \"images\": [\"17\", 0]}}, \"49\": {\"class_type\": \"KikoProjectFilePath\", \"inputs\": {\"project_name\": \"example\"}}}", + "workflow": null + }, + { + "expected": { + "ok": false + }, + "name": "case:null-workflow-node", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"2\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 512, \"height\": 512, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a cat on a windowsill\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, watermark\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 5, \"steps\": 20, \"cfg\": 7, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"2\", 0]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"images\": [\"8\", 0]}}}", + "workflow": "{\"nodes\": [null], \"links\": []}" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": "Unknown", + "checkpoint": "Unknown", + "negativePrompt": "No negative prompt found", + "positivePrompt": "No prompt found", + "sampler": "Unknown", + "seed": "Unknown", + "steps": "Unknown" + } + }, + "name": "case:unparsable-records", + "prompt": "{\"3\": NaN}", + "workflow": "not json" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 1, + "checkpoint": "example.safetensors", + "negativePrompt": "x", + "positivePrompt": "x", + "sampler": "euler", + "seed": 4974052037430000000, + "steps": 20 + } + }, + "name": "case:seed-beyond-double-precision", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"example.safetensors\"}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"x\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 4974052037430000001, \"steps\": 20, \"cfg\": 1.0, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"6\", 0], \"latent_image\": [\"2\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": "Unknown", + "checkpoint": "Unknown", + "negativePrompt": "No negative prompt found", + "positivePrompt": "No prompt found", + "sampler": "Unknown", + "seed": "Unknown", + "steps": "Unknown" + } + }, + "name": "case:nothing", + "prompt": null, + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 1, + "checkpoint": "flux-2-klein-9b-fp8.safetensors", + "negativePrompt": "Detailer pass: refine the face", + "positivePrompt": "Detailer pass: refine the face", + "sampler": "euler", + "seed": 271828182845, + "steps": 20 + } + }, + "name": "tests/fixtures/inspection_parity/f01b.png", + "prompt": "{\"11\": {\"class_type\": \"VAELoader\", \"inputs\": {\"vae_name\": \"vae.safetensors\"}}, \"12\": {\"class_type\": \"CLIPLoader\", \"inputs\": {\"clip_name\": \"text_encoder.safetensors\", \"type\": \"flux2\"}}, \"13\": {\"class_type\": \"UNETLoader\", \"inputs\": {\"unet_name\": \"flux-2-klein-9b-fp8.safetensors\", \"weight_dtype\": \"default\"}}, \"14\": {\"class_type\": \"LoadImage\", \"inputs\": {\"image\": \"reference.png\"}}, \"21\": {\"class_type\": \"StringConstantMultiline\", \"inputs\": {\"string\": \"a red fox in snow, detailed fur,\", \"strip_newlines\": false}}, \"22\": {\"class_type\": \"StringConstantMultiline\", \"inputs\": {\"string\": \"soft winter light,\", \"strip_newlines\": false}}, \"31\": {\"class_type\": \"PrimitiveString\", \"inputs\": {\"value\": \"Project\"}}, \"32\": {\"class_type\": \"PrimitiveString\", \"inputs\": {\"value\": \"fixture\"}}, \"33\": {\"class_type\": \"PrimitiveString\", \"inputs\": {\"value\": \"IMG\"}}, \"34\": {\"class_type\": \"JoinStringMulti\", \"inputs\": {\"inputcount\": 2, \"delimiter\": \"_\", \"return_list\": false, \"string_1\": [\"32\", 0], \"string_2\": [\"33\", 0]}}, \"35\": {\"class_type\": \"JoinStringMulti\", \"inputs\": {\"inputcount\": 4, \"delimiter\": \"/\", \"return_list\": false, \"string_1\": [\"31\", 0], \"string_2\": [\"32\", 0], \"string_3\": [\"34\", 0], \"string_4\": [\"34\", 0]}}, \"41\": {\"class_type\": \"PrimitiveStringMultiline\", \"inputs\": {\"value\": \"Detailer pass: refine the face\"}}, \"42\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": [\"41\", 0], \"clip\": [\"12\", 0]}}, \"43\": {\"class_type\": \"ConditioningZeroOut\", \"inputs\": {\"conditioning\": [\"42\", 0]}}, \"44\": {\"class_type\": \"FaceDetailer\", \"inputs\": {\"image\": [\"14\", 0], \"model\": [\"13\", 0], \"clip\": [\"12\", 0], \"vae\": [\"11\", 0], \"positive\": [\"42\", 0], \"negative\": [\"43\", 0], \"seed\": 271828182845, \"steps\": 20, \"cfg\": 1, \"sampler_name\": \"euler\", \"scheduler\": \"simple\"}}, \"45\": {\"class_type\": \"PreviewImage\", \"inputs\": {\"images\": [\"44\", 0]}}, \"1100\": {\"class_type\": \"StringConstantMultiline\", \"inputs\": {\"string\": \"Scene 0: unique shot description\", \"strip_newlines\": false}}, \"1200\": {\"class_type\": \"JoinStringMulti\", \"inputs\": {\"inputcount\": 3, \"delimiter\": \" \", \"return_list\": false, \"string_1\": [\"21\", 0], \"string_2\": [\"1100\", 0], \"string_3\": [\"22\", 0]}}, \"1300:1\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": [\"1200\", 0], \"clip\": [\"12\", 0]}}, \"1300:2\": {\"class_type\": \"FluxGuidance\", \"inputs\": {\"guidance\": 3.5, \"conditioning\": [\"1300:1\", 0]}}, \"1300:10\": {\"class_type\": \"ImageExists\", \"inputs\": {\"image\": [\"14\", 0]}}, \"1300:20\": {\"class_type\": \"VAEEncode\", \"inputs\": {\"pixels\": [\"1300:10\", 0], \"vae\": [\"11\", 0]}}, \"1300:30\": {\"class_type\": \"ReferenceLatent\", \"inputs\": {\"conditioning\": [\"1300:2\", 0], \"latent\": [\"1300:20\", 0]}}, \"1300:40\": {\"class_type\": \"easy ifElse\", \"inputs\": {\"boolean\": [\"1300:10\", 1], \"on_true\": [\"1300:30\", 0], \"on_false\": [\"1300:2\", 0]}}, \"1300:11\": {\"class_type\": \"ImageExists\", \"inputs\": {\"image\": [\"14\", 0]}}, \"1300:21\": {\"class_type\": \"VAEEncode\", \"inputs\": {\"pixels\": [\"1300:11\", 0], \"vae\": [\"11\", 0]}}, \"1300:31\": {\"class_type\": \"ReferenceLatent\", \"inputs\": {\"conditioning\": [\"1300:40\", 0], \"latent\": [\"1300:21\", 0]}}, \"1300:41\": {\"class_type\": \"easy ifElse\", \"inputs\": {\"boolean\": [\"1300:11\", 1], \"on_true\": [\"1300:31\", 0], \"on_false\": [\"1300:40\", 0]}}, \"1300:12\": {\"class_type\": \"ImageExists\", \"inputs\": {\"image\": [\"14\", 0]}}, \"1300:22\": {\"class_type\": \"VAEEncode\", \"inputs\": {\"pixels\": [\"1300:12\", 0], \"vae\": [\"11\", 0]}}, \"1300:32\": {\"class_type\": \"ReferenceLatent\", \"inputs\": {\"conditioning\": [\"1300:41\", 0], \"latent\": [\"1300:22\", 0]}}, \"1300:42\": {\"class_type\": \"easy ifElse\", \"inputs\": {\"boolean\": [\"1300:12\", 1], \"on_true\": [\"1300:32\", 0], \"on_false\": [\"1300:41\", 0]}}, \"1300:13\": {\"class_type\": \"ImageExists\", \"inputs\": {\"image\": [\"14\", 0]}}, \"1300:23\": {\"class_type\": \"VAEEncode\", \"inputs\": {\"pixels\": [\"1300:13\", 0], \"vae\": [\"11\", 0]}}, \"1300:33\": {\"class_type\": \"ReferenceLatent\", \"inputs\": {\"conditioning\": [\"1300:42\", 0], \"latent\": [\"1300:23\", 0]}}, \"1300:43\": {\"class_type\": \"easy ifElse\", \"inputs\": {\"boolean\": [\"1300:13\", 1], \"on_true\": [\"1300:33\", 0], \"on_false\": [\"1300:42\", 0]}}, \"1300:3\": {\"class_type\": \"BasicGuider\", \"inputs\": {\"model\": [\"13\", 0], \"conditioning\": [\"1300:43\", 0]}}, \"1300:4\": {\"class_type\": \"RandomNoise\", \"inputs\": {\"noise_seed\": 1000}}, \"1300:5\": {\"class_type\": \"KSamplerSelect\", \"inputs\": {\"sampler_name\": \"euler\"}}, \"1300:6\": {\"class_type\": \"Flux2Scheduler\", \"inputs\": {\"steps\": 20, \"width\": 1024, \"height\": 1024}}, \"1300:7\": {\"class_type\": \"EmptyFlux2LatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"1300:8\": {\"class_type\": \"SamplerCustomAdvanced\", \"inputs\": {\"noise\": [\"1300:4\", 0], \"guider\": [\"1300:3\", 0], \"sampler\": [\"1300:5\", 0], \"sigmas\": [\"1300:6\", 0], \"latent_image\": [\"1300:7\", 0]}}, \"1300:9\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"1300:8\", 0], \"vae\": [\"11\", 0]}}, \"1400\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": [\"35\", 0], \"images\": [\"1300:9\", 0]}}}", + "workflow": "{\"last_node_id\": 19, \"nodes\": [{\"id\": 1, \"type\": \"VAELoader\", \"mode\": 0}, {\"id\": 2, \"type\": \"CLIPLoader\", \"mode\": 0}, {\"id\": 3, \"type\": \"UNETLoader\", \"mode\": 0}, {\"id\": 4, \"type\": \"LoadImage\", \"mode\": 0}, {\"id\": 5, \"type\": \"StringConstantMultiline\", \"mode\": 0}, {\"id\": 6, \"type\": \"StringConstantMultiline\", \"mode\": 0}, {\"id\": 7, \"type\": \"PrimitiveString\", \"mode\": 0}, {\"id\": 8, \"type\": \"PrimitiveString\", \"mode\": 0}, {\"id\": 9, \"type\": \"PrimitiveString\", \"mode\": 0}, {\"id\": 10, \"type\": \"JoinStringMulti\", \"mode\": 0}, {\"id\": 11, \"type\": \"JoinStringMulti\", \"mode\": 0}, {\"id\": 12, \"type\": \"PrimitiveStringMultiline\", \"mode\": 0}, {\"id\": 13, \"type\": \"CLIPTextEncode\", \"mode\": 0}, {\"id\": 14, \"type\": \"ConditioningZeroOut\", \"mode\": 0}, {\"id\": 15, \"type\": \"FaceDetailer\", \"mode\": 0}, {\"id\": 16, \"type\": \"PreviewImage\", \"mode\": 0}, {\"id\": 17, \"type\": \"StringConstantMultiline\", \"mode\": 0}, {\"id\": 18, \"type\": \"JoinStringMulti\", \"mode\": 0}, {\"id\": 19, \"type\": \"SaveImage\", \"mode\": 0}], \"links\": [], \"version\": 0.4, \"definitions\": {\"subgraphs\": [{\"id\": \"sg-0\", \"nodes\": [], \"links\": []}]}}" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f02.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}}", + "workflow": "{\"last_node_id\": 607, \"nodes\": [{\"id\": 1, \"type\": \"CheckpointLoaderSimple\", \"mode\": 0}, {\"id\": 2, \"type\": \"EmptyLatentImage\", \"mode\": 0}, {\"id\": 3, \"type\": \"CLIPTextEncode\", \"mode\": 0}, {\"id\": 4, \"type\": \"CLIPTextEncode\", \"mode\": 0}, {\"id\": 5, \"type\": \"KSampler\", \"mode\": 0}, {\"id\": 6, \"type\": \"VAEDecode\", \"mode\": 0}, {\"id\": 7, \"type\": \"SaveImage\", \"mode\": 0}, {\"id\": 8, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 9, \"type\": \"Note\", \"mode\": 0}, {\"id\": 10, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 11, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 12, \"type\": \"Note\", \"mode\": 0}, {\"id\": 13, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 14, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 15, \"type\": \"Note\", \"mode\": 0}, {\"id\": 16, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 17, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 18, \"type\": \"Note\", \"mode\": 0}, {\"id\": 19, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 20, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 21, \"type\": \"Note\", \"mode\": 0}, {\"id\": 22, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 23, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 24, \"type\": \"Note\", \"mode\": 0}, {\"id\": 25, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 26, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 27, \"type\": \"Note\", \"mode\": 0}, {\"id\": 28, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 29, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 30, \"type\": \"Note\", \"mode\": 0}, {\"id\": 31, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 32, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 33, \"type\": \"Note\", \"mode\": 0}, {\"id\": 34, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 35, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 36, \"type\": \"Note\", \"mode\": 0}, {\"id\": 37, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 38, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 39, \"type\": \"Note\", \"mode\": 0}, {\"id\": 40, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 41, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 42, \"type\": \"Note\", \"mode\": 0}, {\"id\": 43, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 44, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 45, \"type\": \"Note\", \"mode\": 0}, {\"id\": 46, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 47, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 48, \"type\": \"Note\", \"mode\": 0}, {\"id\": 49, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 50, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 51, \"type\": \"Note\", \"mode\": 0}, {\"id\": 52, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 53, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 54, \"type\": \"Note\", \"mode\": 0}, {\"id\": 55, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 56, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 57, \"type\": \"Note\", \"mode\": 0}, {\"id\": 58, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 59, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 60, \"type\": \"Note\", \"mode\": 0}, {\"id\": 61, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 62, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 63, \"type\": \"Note\", \"mode\": 0}, {\"id\": 64, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 65, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 66, \"type\": \"Note\", \"mode\": 0}, {\"id\": 67, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 68, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 69, \"type\": \"Note\", \"mode\": 0}, {\"id\": 70, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 71, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 72, \"type\": \"Note\", \"mode\": 0}, {\"id\": 73, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 74, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 75, \"type\": \"Note\", \"mode\": 0}, {\"id\": 76, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 77, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 78, \"type\": \"Note\", \"mode\": 0}, {\"id\": 79, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 80, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 81, \"type\": \"Note\", \"mode\": 0}, {\"id\": 82, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 83, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 84, \"type\": \"Note\", \"mode\": 0}, {\"id\": 85, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 86, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 87, \"type\": \"Note\", \"mode\": 0}, {\"id\": 88, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 89, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 90, \"type\": \"Note\", \"mode\": 0}, {\"id\": 91, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 92, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 93, \"type\": \"Note\", \"mode\": 0}, {\"id\": 94, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 95, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 96, \"type\": \"Note\", \"mode\": 0}, {\"id\": 97, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 98, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 99, \"type\": \"Note\", \"mode\": 0}, {\"id\": 100, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 101, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 102, \"type\": \"Note\", \"mode\": 0}, {\"id\": 103, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 104, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 105, \"type\": \"Note\", \"mode\": 0}, {\"id\": 106, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 107, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 108, \"type\": \"Note\", \"mode\": 0}, {\"id\": 109, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 110, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 111, \"type\": \"Note\", \"mode\": 0}, {\"id\": 112, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 113, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 114, \"type\": \"Note\", \"mode\": 0}, {\"id\": 115, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 116, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 117, \"type\": \"Note\", \"mode\": 0}, {\"id\": 118, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 119, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 120, \"type\": \"Note\", \"mode\": 0}, {\"id\": 121, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 122, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 123, \"type\": \"Note\", \"mode\": 0}, {\"id\": 124, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 125, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 126, \"type\": \"Note\", \"mode\": 0}, {\"id\": 127, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 128, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 129, \"type\": \"Note\", \"mode\": 0}, {\"id\": 130, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 131, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 132, \"type\": \"Note\", \"mode\": 0}, {\"id\": 133, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 134, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 135, \"type\": \"Note\", \"mode\": 0}, {\"id\": 136, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 137, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 138, \"type\": \"Note\", \"mode\": 0}, {\"id\": 139, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 140, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 141, \"type\": \"Note\", \"mode\": 0}, {\"id\": 142, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 143, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 144, \"type\": \"Note\", \"mode\": 0}, {\"id\": 145, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 146, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 147, \"type\": \"Note\", \"mode\": 0}, {\"id\": 148, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 149, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 150, \"type\": \"Note\", \"mode\": 0}, {\"id\": 151, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 152, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 153, \"type\": \"Note\", \"mode\": 0}, {\"id\": 154, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 155, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 156, \"type\": \"Note\", \"mode\": 0}, {\"id\": 157, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 158, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 159, \"type\": \"Note\", \"mode\": 0}, {\"id\": 160, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 161, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 162, \"type\": \"Note\", \"mode\": 0}, {\"id\": 163, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 164, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 165, \"type\": \"Note\", \"mode\": 0}, {\"id\": 166, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 167, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 168, \"type\": \"Note\", \"mode\": 0}, {\"id\": 169, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 170, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 171, \"type\": \"Note\", \"mode\": 0}, {\"id\": 172, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 173, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 174, \"type\": \"Note\", \"mode\": 0}, {\"id\": 175, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 176, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 177, \"type\": \"Note\", \"mode\": 0}, {\"id\": 178, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 179, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 180, \"type\": \"Note\", \"mode\": 0}, {\"id\": 181, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 182, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 183, \"type\": \"Note\", \"mode\": 0}, {\"id\": 184, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 185, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 186, \"type\": \"Note\", \"mode\": 0}, {\"id\": 187, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 188, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 189, \"type\": \"Note\", \"mode\": 0}, {\"id\": 190, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 191, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 192, \"type\": \"Note\", \"mode\": 0}, {\"id\": 193, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 194, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 195, \"type\": \"Note\", \"mode\": 0}, {\"id\": 196, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 197, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 198, \"type\": \"Note\", \"mode\": 0}, {\"id\": 199, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 200, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 201, \"type\": \"Note\", \"mode\": 0}, {\"id\": 202, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 203, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 204, \"type\": \"Note\", \"mode\": 0}, {\"id\": 205, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 206, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 207, \"type\": \"Note\", \"mode\": 0}, {\"id\": 208, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 209, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 210, \"type\": \"Note\", \"mode\": 0}, {\"id\": 211, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 212, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 213, \"type\": \"Note\", \"mode\": 0}, {\"id\": 214, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 215, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 216, \"type\": \"Note\", \"mode\": 0}, {\"id\": 217, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 218, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 219, \"type\": \"Note\", \"mode\": 0}, {\"id\": 220, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 221, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 222, \"type\": \"Note\", \"mode\": 0}, {\"id\": 223, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 224, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 225, \"type\": \"Note\", \"mode\": 0}, {\"id\": 226, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 227, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 228, \"type\": \"Note\", \"mode\": 0}, {\"id\": 229, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 230, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 231, \"type\": \"Note\", \"mode\": 0}, {\"id\": 232, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 233, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 234, \"type\": \"Note\", \"mode\": 0}, {\"id\": 235, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 236, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 237, \"type\": \"Note\", \"mode\": 0}, {\"id\": 238, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 239, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 240, \"type\": \"Note\", \"mode\": 0}, {\"id\": 241, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 242, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 243, \"type\": \"Note\", \"mode\": 0}, {\"id\": 244, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 245, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 246, \"type\": \"Note\", \"mode\": 0}, {\"id\": 247, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 248, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 249, \"type\": \"Note\", \"mode\": 0}, {\"id\": 250, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 251, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 252, \"type\": \"Note\", \"mode\": 0}, {\"id\": 253, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 254, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 255, \"type\": \"Note\", \"mode\": 0}, {\"id\": 256, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 257, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 258, \"type\": \"Note\", \"mode\": 0}, {\"id\": 259, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 260, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 261, \"type\": \"Note\", \"mode\": 0}, {\"id\": 262, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 263, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 264, \"type\": \"Note\", \"mode\": 0}, {\"id\": 265, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 266, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 267, \"type\": \"Note\", \"mode\": 0}, {\"id\": 268, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 269, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 270, \"type\": \"Note\", \"mode\": 0}, {\"id\": 271, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 272, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 273, \"type\": \"Note\", \"mode\": 0}, {\"id\": 274, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 275, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 276, \"type\": \"Note\", \"mode\": 0}, {\"id\": 277, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 278, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 279, \"type\": \"Note\", \"mode\": 0}, {\"id\": 280, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 281, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 282, \"type\": \"Note\", \"mode\": 0}, {\"id\": 283, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 284, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 285, \"type\": \"Note\", \"mode\": 0}, {\"id\": 286, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 287, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 288, \"type\": \"Note\", \"mode\": 0}, {\"id\": 289, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 290, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 291, \"type\": \"Note\", \"mode\": 0}, {\"id\": 292, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 293, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 294, \"type\": \"Note\", \"mode\": 0}, {\"id\": 295, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 296, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 297, \"type\": \"Note\", \"mode\": 0}, {\"id\": 298, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 299, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 300, \"type\": \"Note\", \"mode\": 0}, {\"id\": 301, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 302, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 303, \"type\": \"Note\", \"mode\": 0}, {\"id\": 304, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 305, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 306, \"type\": \"Note\", \"mode\": 0}, {\"id\": 307, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 308, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 309, \"type\": \"Note\", \"mode\": 0}, {\"id\": 310, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 311, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 312, \"type\": \"Note\", \"mode\": 0}, {\"id\": 313, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 314, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 315, \"type\": \"Note\", \"mode\": 0}, {\"id\": 316, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 317, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 318, \"type\": \"Note\", \"mode\": 0}, {\"id\": 319, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 320, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 321, \"type\": \"Note\", \"mode\": 0}, {\"id\": 322, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 323, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 324, \"type\": \"Note\", \"mode\": 0}, {\"id\": 325, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 326, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 327, \"type\": \"Note\", \"mode\": 0}, {\"id\": 328, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 329, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 330, \"type\": \"Note\", \"mode\": 0}, {\"id\": 331, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 332, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 333, \"type\": \"Note\", \"mode\": 0}, {\"id\": 334, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 335, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 336, \"type\": \"Note\", \"mode\": 0}, {\"id\": 337, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 338, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 339, \"type\": \"Note\", \"mode\": 0}, {\"id\": 340, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 341, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 342, \"type\": \"Note\", \"mode\": 0}, {\"id\": 343, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 344, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 345, \"type\": \"Note\", \"mode\": 0}, {\"id\": 346, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 347, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 348, \"type\": \"Note\", \"mode\": 0}, {\"id\": 349, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 350, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 351, \"type\": \"Note\", \"mode\": 0}, {\"id\": 352, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 353, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 354, \"type\": \"Note\", \"mode\": 0}, {\"id\": 355, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 356, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 357, \"type\": \"Note\", \"mode\": 0}, {\"id\": 358, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 359, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 360, \"type\": \"Note\", \"mode\": 0}, {\"id\": 361, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 362, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 363, \"type\": \"Note\", \"mode\": 0}, {\"id\": 364, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 365, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 366, \"type\": \"Note\", \"mode\": 0}, {\"id\": 367, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 368, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 369, \"type\": \"Note\", \"mode\": 0}, {\"id\": 370, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 371, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 372, \"type\": \"Note\", \"mode\": 0}, {\"id\": 373, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 374, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 375, \"type\": \"Note\", \"mode\": 0}, {\"id\": 376, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 377, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 378, \"type\": \"Note\", \"mode\": 0}, {\"id\": 379, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 380, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 381, \"type\": \"Note\", \"mode\": 0}, {\"id\": 382, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 383, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 384, \"type\": \"Note\", \"mode\": 0}, {\"id\": 385, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 386, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 387, \"type\": \"Note\", \"mode\": 0}, {\"id\": 388, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 389, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 390, \"type\": \"Note\", \"mode\": 0}, {\"id\": 391, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 392, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 393, \"type\": \"Note\", \"mode\": 0}, {\"id\": 394, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 395, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 396, \"type\": \"Note\", \"mode\": 0}, {\"id\": 397, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 398, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 399, \"type\": \"Note\", \"mode\": 0}, {\"id\": 400, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 401, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 402, \"type\": \"Note\", \"mode\": 0}, {\"id\": 403, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 404, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 405, \"type\": \"Note\", \"mode\": 0}, {\"id\": 406, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 407, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 408, \"type\": \"Note\", \"mode\": 0}, {\"id\": 409, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 410, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 411, \"type\": \"Note\", \"mode\": 0}, {\"id\": 412, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 413, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 414, \"type\": \"Note\", \"mode\": 0}, {\"id\": 415, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 416, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 417, \"type\": \"Note\", \"mode\": 0}, {\"id\": 418, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 419, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 420, \"type\": \"Note\", \"mode\": 0}, {\"id\": 421, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 422, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 423, \"type\": \"Note\", \"mode\": 0}, {\"id\": 424, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 425, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 426, \"type\": \"Note\", \"mode\": 0}, {\"id\": 427, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 428, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 429, \"type\": \"Note\", \"mode\": 0}, {\"id\": 430, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 431, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 432, \"type\": \"Note\", \"mode\": 0}, {\"id\": 433, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 434, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 435, \"type\": \"Note\", \"mode\": 0}, {\"id\": 436, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 437, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 438, \"type\": \"Note\", \"mode\": 0}, {\"id\": 439, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 440, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 441, \"type\": \"Note\", \"mode\": 0}, {\"id\": 442, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 443, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 444, \"type\": \"Note\", \"mode\": 0}, {\"id\": 445, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 446, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 447, \"type\": \"Note\", \"mode\": 0}, {\"id\": 448, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 449, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 450, \"type\": \"Note\", \"mode\": 0}, {\"id\": 451, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 452, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 453, \"type\": \"Note\", \"mode\": 0}, {\"id\": 454, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 455, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 456, \"type\": \"Note\", \"mode\": 0}, {\"id\": 457, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 458, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 459, \"type\": \"Note\", \"mode\": 0}, {\"id\": 460, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 461, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 462, \"type\": \"Note\", \"mode\": 0}, {\"id\": 463, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 464, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 465, \"type\": \"Note\", \"mode\": 0}, {\"id\": 466, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 467, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 468, \"type\": \"Note\", \"mode\": 0}, {\"id\": 469, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 470, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 471, \"type\": \"Note\", \"mode\": 0}, {\"id\": 472, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 473, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 474, \"type\": \"Note\", \"mode\": 0}, {\"id\": 475, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 476, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 477, \"type\": \"Note\", \"mode\": 0}, {\"id\": 478, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 479, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 480, \"type\": \"Note\", \"mode\": 0}, {\"id\": 481, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 482, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 483, \"type\": \"Note\", \"mode\": 0}, {\"id\": 484, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 485, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 486, \"type\": \"Note\", \"mode\": 0}, {\"id\": 487, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 488, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 489, \"type\": \"Note\", \"mode\": 0}, {\"id\": 490, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 491, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 492, \"type\": \"Note\", \"mode\": 0}, {\"id\": 493, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 494, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 495, \"type\": \"Note\", \"mode\": 0}, {\"id\": 496, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 497, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 498, \"type\": \"Note\", \"mode\": 0}, {\"id\": 499, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 500, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 501, \"type\": \"Note\", \"mode\": 0}, {\"id\": 502, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 503, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 504, \"type\": \"Note\", \"mode\": 0}, {\"id\": 505, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 506, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 507, \"type\": \"Note\", \"mode\": 0}, {\"id\": 508, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 509, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 510, \"type\": \"Note\", \"mode\": 0}, {\"id\": 511, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 512, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 513, \"type\": \"Note\", \"mode\": 0}, {\"id\": 514, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 515, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 516, \"type\": \"Note\", \"mode\": 0}, {\"id\": 517, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 518, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 519, \"type\": \"Note\", \"mode\": 0}, {\"id\": 520, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 521, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 522, \"type\": \"Note\", \"mode\": 0}, {\"id\": 523, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 524, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 525, \"type\": \"Note\", \"mode\": 0}, {\"id\": 526, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 527, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 528, \"type\": \"Note\", \"mode\": 0}, {\"id\": 529, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 530, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 531, \"type\": \"Note\", \"mode\": 0}, {\"id\": 532, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 533, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 534, \"type\": \"Note\", \"mode\": 0}, {\"id\": 535, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 536, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 537, \"type\": \"Note\", \"mode\": 0}, {\"id\": 538, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 539, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 540, \"type\": \"Note\", \"mode\": 0}, {\"id\": 541, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 542, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 543, \"type\": \"Note\", \"mode\": 0}, {\"id\": 544, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 545, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 546, \"type\": \"Note\", \"mode\": 0}, {\"id\": 547, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 548, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 549, \"type\": \"Note\", \"mode\": 0}, {\"id\": 550, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 551, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 552, \"type\": \"Note\", \"mode\": 0}, {\"id\": 553, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 554, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 555, \"type\": \"Note\", \"mode\": 0}, {\"id\": 556, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 557, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 558, \"type\": \"Note\", \"mode\": 0}, {\"id\": 559, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 560, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 561, \"type\": \"Note\", \"mode\": 0}, {\"id\": 562, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 563, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 564, \"type\": \"Note\", \"mode\": 0}, {\"id\": 565, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 566, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 567, \"type\": \"Note\", \"mode\": 0}, {\"id\": 568, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 569, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 570, \"type\": \"Note\", \"mode\": 0}, {\"id\": 571, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 572, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 573, \"type\": \"Note\", \"mode\": 0}, {\"id\": 574, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 575, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 576, \"type\": \"Note\", \"mode\": 0}, {\"id\": 577, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 578, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 579, \"type\": \"Note\", \"mode\": 0}, {\"id\": 580, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 581, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 582, \"type\": \"Note\", \"mode\": 0}, {\"id\": 583, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 584, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 585, \"type\": \"Note\", \"mode\": 0}, {\"id\": 586, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 587, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 588, \"type\": \"Note\", \"mode\": 0}, {\"id\": 589, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 590, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 591, \"type\": \"Note\", \"mode\": 0}, {\"id\": 592, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 593, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 594, \"type\": \"Note\", \"mode\": 0}, {\"id\": 595, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 596, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 597, \"type\": \"Note\", \"mode\": 0}, {\"id\": 598, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 599, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 600, \"type\": \"Note\", \"mode\": 0}, {\"id\": 601, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 602, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 603, \"type\": \"Note\", \"mode\": 0}, {\"id\": 604, \"type\": \"PrimitiveNode\", \"mode\": 0}, {\"id\": 605, \"type\": \"Reroute\", \"mode\": 0}, {\"id\": 606, \"type\": \"Note\", \"mode\": 0}, {\"id\": 607, \"type\": \"PrimitiveNode\", \"mode\": 0}], \"links\": [], \"version\": 0.4}" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f03.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"100\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"101\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"102\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"103\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"104\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"105\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"106\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"107\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"108\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"109\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"110\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"111\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"112\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"113\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"114\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"115\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"116\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"117\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"118\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"119\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"120\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"121\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"122\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"123\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"124\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"125\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"126\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"127\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"128\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"129\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"130\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"131\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"132\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"133\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"134\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"135\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"136\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"137\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"138\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"139\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"140\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"141\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"142\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"143\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"144\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"145\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"146\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"147\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"148\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"149\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"150\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"151\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"152\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"153\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"154\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"155\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"156\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"157\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"158\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"159\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"160\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"161\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"162\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"163\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"164\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"165\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"166\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"167\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"168\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"169\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"170\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"171\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"172\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"173\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"174\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"175\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"176\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"177\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"178\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"179\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"180\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"181\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"182\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"183\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"184\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"185\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"186\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"187\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"188\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"189\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"190\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"191\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"192\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"193\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"194\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"195\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"196\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"197\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"198\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"199\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"200\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"201\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"202\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"203\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"204\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"205\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"206\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"207\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"208\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"209\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"210\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"211\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"212\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"213\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"214\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"215\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"216\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"217\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"218\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"219\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"220\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"221\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"222\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"223\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"224\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"225\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"226\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"227\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"228\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"229\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"230\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"231\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"232\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"233\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"234\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"235\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"236\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"237\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"238\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"239\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"240\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"241\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"242\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"243\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"244\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"245\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"246\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"247\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"248\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"249\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"250\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"251\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"252\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"253\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"254\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"255\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"256\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"257\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"258\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"259\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"260\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"261\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"262\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"263\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"264\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"265\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"266\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"267\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"268\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"269\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"270\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"271\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"272\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"273\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"274\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"275\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"276\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"277\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"278\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"279\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"280\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"281\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"282\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"283\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"284\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"285\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"286\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"287\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"288\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"289\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"290\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"291\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"292\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"293\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"294\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"295\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"296\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"297\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"298\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"299\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"300\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"301\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"302\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"303\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"304\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"305\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"306\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"307\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"308\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"309\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"310\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"311\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"312\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"313\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"314\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"315\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"316\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"317\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"318\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"319\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"320\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"321\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"322\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"323\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"324\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"325\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"326\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"327\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"328\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"329\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"330\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"331\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"332\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"333\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"334\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"335\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"336\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"337\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"338\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"339\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"340\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"341\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"342\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"343\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"344\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"345\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"346\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"347\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"348\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"349\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"350\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"351\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"352\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"353\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"354\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"355\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"356\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"357\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"358\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"359\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"360\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"361\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"362\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"363\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"364\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"365\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"366\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"367\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"368\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"369\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"370\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"371\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"372\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"373\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"374\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"375\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"376\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"377\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"378\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"379\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"380\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"381\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"382\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"383\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"384\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"385\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"386\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"387\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"388\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"389\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"390\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"391\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"392\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"393\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"394\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"395\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"396\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"397\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"398\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"399\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"400\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"401\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"402\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"403\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"404\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"405\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"406\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"407\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"408\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"409\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"410\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"411\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"412\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"413\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"414\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"415\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"416\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"417\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"418\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"419\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"420\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"421\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"422\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"423\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"424\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"425\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"426\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"427\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"428\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"429\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"430\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"431\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"432\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"433\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"434\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"435\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"436\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"437\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"438\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"439\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"440\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"441\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"442\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"443\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"444\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"445\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"446\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"447\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"448\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"449\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"450\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"451\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"452\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"453\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"454\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"455\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"456\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"457\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"458\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"459\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"460\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"461\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"462\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"463\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"464\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"465\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"466\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"467\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"468\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"469\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"470\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"471\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"472\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"473\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"474\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"475\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"476\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"477\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"478\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"479\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"480\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"481\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"482\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"483\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"484\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"485\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"486\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"487\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"488\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"489\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"490\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"491\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"492\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"493\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"494\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"495\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"496\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"497\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"498\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"499\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"500\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"501\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"502\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"503\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"504\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"505\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"506\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"507\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"508\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"509\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"510\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"511\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"512\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"513\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"514\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"515\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"516\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"517\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"518\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"519\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"520\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"521\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"522\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"523\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"524\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"525\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"526\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"527\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"528\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"529\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"530\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"531\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"532\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"533\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"534\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"535\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"536\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"537\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"538\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"539\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"540\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"541\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"542\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"543\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"544\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"545\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"546\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"547\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"548\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"549\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"550\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"551\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"552\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"553\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"554\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"555\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"556\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"557\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"558\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"559\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"560\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"561\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"562\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"563\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"564\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"565\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"566\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"567\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"568\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"569\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"570\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"571\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"572\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"573\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"574\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"575\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"576\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"577\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"578\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"579\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"580\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"581\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"582\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"583\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"584\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"585\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"586\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"587\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"588\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"589\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"590\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"591\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"592\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"593\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"594\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"595\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"596\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"597\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}, \"598\": {\"class_type\": \"PrimitiveInt\", \"inputs\": {\"value\": 1}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "No prompt found", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f06a.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncodeSDXL\", \"inputs\": {\"text_g\": \"a red fox in snow, detailed fur\", \"text_l\": \"a red fox in snow, detailed fur\", \"width\": 1024, \"height\": 1024, \"crop_w\": 0, \"crop_h\": 0, \"target_width\": 1024, \"target_height\": 1024, \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "No prompt found", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f06b.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncodeFlux\", \"inputs\": {\"clip_l\": \"a red fox in snow, detailed fur\", \"t5xxl\": \"a red fox in snow, detailed fur\", \"guidance\": 3.5, \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f06c.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"FluxGuidance\", \"inputs\": {\"guidance\": 3.5, \"conditioning\": [\"10\", 0]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"10\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f06d.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"ConditioningCombine\", \"inputs\": {\"conditioning_1\": [\"10\", 0], \"conditioning_2\": [\"11\", 0]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"10\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"11\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a second subject\", \"clip\": [\"4\", 1]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f06e.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"ControlNetApplyAdvanced\", \"inputs\": {\"positive\": [\"10\", 0], \"negative\": [\"11\", 0], \"control_net\": [\"12\", 0], \"image\": [\"13\", 0], \"strength\": 1.0, \"start_percent\": 0, \"end_percent\": 1}}, \"7\": {\"class_type\": \"ControlNetApplyAdvanced\", \"inputs\": {\"positive\": [\"10\", 0], \"negative\": [\"11\", 0], \"control_net\": [\"12\", 0], \"image\": [\"13\", 0], \"strength\": 1.0, \"start_percent\": 0, \"end_percent\": 1}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 1], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"10\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"11\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"12\": {\"class_type\": \"ControlNetLoader\", \"inputs\": {\"control_net_name\": \"control.safetensors\"}}, \"13\": {\"class_type\": \"LoadImage\", \"inputs\": {\"image\": \"control.png\"}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f07a.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSamplerAdvanced\", \"inputs\": {\"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0], \"noise_seed\": 42, \"add_noise\": \"enable\", \"start_at_step\": 0, \"end_at_step\": 10000, \"return_with_leftover_noise\": \"disable\"}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f07b.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"SamplerCustomAdvanced\", \"inputs\": {\"noise\": [\"20\", 0], \"guider\": [\"21\", 0], \"sampler\": [\"22\", 0], \"sigmas\": [\"23\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"20\": {\"class_type\": \"RandomNoise\", \"inputs\": {\"noise_seed\": 42}}, \"21\": {\"class_type\": \"CFGGuider\", \"inputs\": {\"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"cfg\": 6.5}}, \"22\": {\"class_type\": \"KSamplerSelect\", \"inputs\": {\"sampler_name\": \"euler\"}}, \"23\": {\"class_type\": \"BasicScheduler\", \"inputs\": {\"model\": [\"4\", 0], \"scheduler\": \"normal\", \"steps\": 25, \"denoise\": 1.0}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur, winter", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f08.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": [\"30\", 0], \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"30\": {\"class_type\": \"StringConcatenate\", \"inputs\": {\"string_a\": [\"31\", 0], \"string_b\": \", winter\", \"delimiter\": \"\"}}, \"31\": {\"class_type\": \"PrimitiveStringMultiline\", \"inputs\": {\"value\": \"a red fox in snow, detailed fur\"}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f09.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"41\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"40\": {\"class_type\": \"LatentUpscaleBy\", \"inputs\": {\"upscale_method\": \"nearest-exact\", \"scale_by\": 1.5, \"samples\": [\"3\", 0]}}, \"41\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 0.5, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"40\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f10.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"VAEEncode\", \"inputs\": {\"pixels\": [\"50\", 0], \"vae\": [\"4\", 2]}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"50\": {\"class_type\": \"LoadImage\", \"inputs\": {\"image\": \"input.png\"}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f11.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyHunyuanLatentVideo\", \"inputs\": {\"width\": 640, \"height\": 384, \"length\": 17, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f12.png", + "prompt": null, + "workflow": "{\"nodes\": [{\"id\": 3, \"type\": \"KSampler\", \"mode\": 0, \"inputs\": [{\"name\": \"model\", \"link\": 1}, {\"name\": \"positive\", \"link\": 2}, {\"name\": \"negative\", \"link\": 3}, {\"name\": \"latent_image\", \"link\": 4}], \"widgets_values\": [42, \"fixed\", 25, 6.5, \"euler\", \"normal\", 1.0]}, {\"id\": 4, \"type\": \"CheckpointLoaderSimple\", \"mode\": 0, \"inputs\": [], \"widgets_values\": [\"sdxl_base.safetensors\"]}, {\"id\": 6, \"type\": \"CLIPTextEncode\", \"mode\": 0, \"inputs\": [], \"widgets_values\": [\"a red fox in snow, detailed fur\"]}, {\"id\": 7, \"type\": \"CLIPTextEncode\", \"mode\": 0, \"inputs\": [], \"widgets_values\": [\"blurry, lowres\"]}, {\"id\": 5, \"type\": \"EmptyLatentImage\", \"mode\": 0, \"inputs\": [], \"widgets_values\": [1024, 1024, 1]}], \"links\": [[1, 4, 0, 3, 0, \"MODEL\"], [2, 6, 0, 3, 1, \"CONDITIONING\"], [3, 7, 0, 3, 2, \"CONDITIONING\"], [4, 5, 0, 3, 3, \"LATENT\"]]}" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": "Unknown", + "checkpoint": "Unknown", + "negativePrompt": "No negative prompt found", + "positivePrompt": "No prompt found", + "sampler": "Unknown", + "seed": "Unknown", + "steps": "Unknown" + } + }, + "name": "tests/fixtures/inspection_parity/f14.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}, \"_meta\": {\"title\": \"CheckpointLoaderSimple\"}, \"is_changed\": [NaN]}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}, \"_meta\": {\"title\": \"EmptyLatentImage\"}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}, \"_meta\": {\"title\": \"CLIPTextEncode\"}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}, \"_meta\": {\"title\": \"CLIPTextEncode\"}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}, \"_meta\": {\"title\": \"KSampler\"}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}, \"_meta\": {\"title\": \"VAEDecode\"}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}, \"_meta\": {\"title\": \"SaveImage\"}}}", + "workflow": "{\"last_node_id\": 7, \"nodes\": [{\"id\": 1, \"type\": \"CheckpointLoaderSimple\", \"mode\": 0}, {\"id\": 2, \"type\": \"EmptyLatentImage\", \"mode\": 0}, {\"id\": 3, \"type\": \"CLIPTextEncode\", \"mode\": 0}, {\"id\": 4, \"type\": \"CLIPTextEncode\", \"mode\": 0}, {\"id\": 5, \"type\": \"KSampler\", \"mode\": 0}, {\"id\": 6, \"type\": \"VAEDecode\", \"mode\": 0}, {\"id\": 7, \"type\": \"SaveImage\", \"mode\": 0}], \"links\": [], \"version\": 0.4}" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f15.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}}", + "workflow": "{\"last_node_id\": 7, \"nodes\": [{\"id\": 1, \"type\": \"CheckpointLoaderSimple\", \"mode\": 0}, {\"id\": 2, \"type\": \"EmptyLatentImage\", \"mode\": 0}, {\"id\": 3, \"type\": \"CLIPTextEncode\", \"mode\": 0}, {\"id\": 4, \"type\": \"CLIPTextEncode\", \"mode\": 0}, {\"id\": 5, \"type\": \"KSampler\", \"mode\": 0}, {\"id\": 6, \"type\": \"VAEDecode\", \"mode\": 0}, {\"id\": 7, \"type\": \"SaveImage\", \"mode\": 0}], \"links\": [], \"version\": 0.4}" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f16.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}}", + "workflow": "{\"last_node_id\": 7, \"nodes\": [{\"id\": 1, \"type\": \"CheckpointLoaderSimple\", \"mode\": 0}, {\"id\": 2, \"type\": \"EmptyLatentImage\", \"mode\": 0}, {\"id\": 3, \"type\": \"CLIPTextEncode\", \"mode\": 0}, {\"id\": 4, \"type\": \"CLIPTextEncode\", \"mode\": 0}, {\"id\": 5, \"type\": \"KSampler\", \"mode\": 0}, {\"id\": 6, \"type\": \"VAEDecode\", \"mode\": 0}, {\"id\": 7, \"type\": \"SaveImage\", \"mode\": 0}], \"links\": [], \"version\": 0.4}" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": "Unknown", + "checkpoint": "flux1-dev.safetensors", + "negativePrompt": "No negative prompt found", + "positivePrompt": "No prompt found", + "sampler": "euler", + "seed": "Unknown", + "steps": "Unknown" + } + }, + "name": "tests/fixtures/inspection_parity/f17.png", + "prompt": "{\"10\": {\"class_type\": \"UNETLoader\", \"inputs\": {\"unet_name\": \"flux1-dev.safetensors\", \"weight_dtype\": \"default\"}}, \"11\": {\"class_type\": \"DualCLIPLoader\", \"inputs\": {\"clip_name1\": \"clip_l.safetensors\", \"clip_name2\": \"t5xxl.safetensors\", \"type\": \"flux\"}}, \"12\": {\"class_type\": \"VAELoader\", \"inputs\": {\"vae_name\": \"ae.safetensors\"}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"11\", 0]}}, \"26\": {\"class_type\": \"FluxGuidance\", \"inputs\": {\"guidance\": 3.5, \"conditioning\": [\"6\", 0]}}, \"22\": {\"class_type\": \"BasicGuider\", \"inputs\": {\"model\": [\"10\", 0], \"conditioning\": [\"26\", 0]}}, \"25\": {\"class_type\": \"RandomNoise\", \"inputs\": {\"noise_seed\": 42}}, \"16\": {\"class_type\": \"KSamplerSelect\", \"inputs\": {\"sampler_name\": \"euler\"}}, \"17\": {\"class_type\": \"BasicScheduler\", \"inputs\": {\"model\": [\"10\", 0], \"scheduler\": \"simple\", \"steps\": 20, \"denoise\": 1.0}}, \"27\": {\"class_type\": \"EmptySD3LatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"13\": {\"class_type\": \"SamplerCustomAdvanced\", \"inputs\": {\"noise\": [\"25\", 0], \"guider\": [\"22\", 0], \"sampler\": [\"16\", 0], \"sigmas\": [\"17\", 0], \"latent_image\": [\"27\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"13\", 0], \"vae\": [\"12\", 0]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}}", + "workflow": "{\"last_node_id\": 13, \"nodes\": [{\"id\": 1, \"type\": \"UNETLoader\", \"mode\": 0}, {\"id\": 2, \"type\": \"DualCLIPLoader\", \"mode\": 0}, {\"id\": 3, \"type\": \"VAELoader\", \"mode\": 0}, {\"id\": 4, \"type\": \"CLIPTextEncode\", \"mode\": 0}, {\"id\": 5, \"type\": \"FluxGuidance\", \"mode\": 0}, {\"id\": 6, \"type\": \"BasicGuider\", \"mode\": 0}, {\"id\": 7, \"type\": \"RandomNoise\", \"mode\": 0}, {\"id\": 8, \"type\": \"KSamplerSelect\", \"mode\": 0}, {\"id\": 9, \"type\": \"BasicScheduler\", \"mode\": 0}, {\"id\": 10, \"type\": \"EmptySD3LatentImage\", \"mode\": 0}, {\"id\": 11, \"type\": \"SamplerCustomAdvanced\", \"mode\": 0}, {\"id\": 12, \"type\": \"VAEDecode\", \"mode\": 0}, {\"id\": 13, \"type\": \"SaveImage\", \"mode\": 0}], \"links\": [], \"version\": 0.4}" + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f19.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"50\", 0]}}, \"10\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, sharp detailed face\", \"clip\": [\"4\", 1]}}, \"50\": {\"class_type\": \"FaceDetailer\", \"inputs\": {\"image\": [\"8\", 0], \"model\": [\"4\", 0], \"clip\": [\"4\", 1], \"vae\": [\"4\", 2], \"positive\": [\"10\", 0], \"negative\": [\"7\", 0], \"seed\": 7, \"steps\": 12, \"cfg\": 4.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 0.4}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "No prompt found", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f20.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"easy ifElse\", \"inputs\": {\"boolean\": true, \"on_true\": [\"10\", 0], \"on_false\": [\"11\", 0]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"10\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"11\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a grey wolf in fog\", \"clip\": [\"4\", 1]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "a red fox, in snow", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f21.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": [\"10\", 0], \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"10\": {\"class_type\": \"JoinStringMulti\", \"inputs\": {\"inputcount\": 2, \"delimiter\": \", \", \"return_list\": true, \"string_1\": [\"11\", 0], \"string_2\": [\"12\", 0]}}, \"11\": {\"class_type\": \"PrimitiveString\", \"inputs\": {\"value\": \"a red fox\"}}, \"12\": {\"class_type\": \"PrimitiveString\", \"inputs\": {\"value\": \"in snow\"}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "blurry, lowres", + "positivePrompt": "fox", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f22.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": [\"10\", 0], \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"blurry, lowres\", \"clip\": [\"4\", 1]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}, \"10\": {\"class_type\": \"PromptSearchList\", \"inputs\": {\"text\": \"fox\", \"category\": \"\", \"tags\": \"\", \"min_rating\": 0, \"limit\": 50}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "a red fox in snow, detailed fur", + "positivePrompt": "a red fox in snow, detailed fur", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f23.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"CLIPTextEncode\", \"inputs\": {\"text\": \"a red fox in snow, detailed fur\", \"clip\": [\"4\", 1]}}, \"7\": {\"class_type\": \"ConditioningZeroOut\", \"inputs\": {\"conditioning\": [\"6\", 0]}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"7\", 0], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}}", + "workflow": null + }, + { + "expected": { + "ok": true, + "result": { + "cfgScale": 6.5, + "checkpoint": "sdxl_base.safetensors", + "negativePrompt": "No negative prompt found", + "positivePrompt": "No prompt found", + "sampler": "euler", + "seed": 42, + "steps": 25 + } + }, + "name": "tests/fixtures/inspection_parity/f24.png", + "prompt": "{\"4\": {\"class_type\": \"CheckpointLoaderSimple\", \"inputs\": {\"ckpt_name\": \"sdxl_base.safetensors\"}}, \"5\": {\"class_type\": \"EmptyLatentImage\", \"inputs\": {\"width\": 1024, \"height\": 1024, \"batch_size\": 1}}, \"6\": {\"class_type\": \"TextEncodeQwenImage21\", \"inputs\": {\"clip\": [\"4\", 1], \"prompt\": \"a red fox in snow, detailed fur\", \"negative_prompt\": \"blurry, lowres\", \"vae\": [\"4\", 2], \"resolution\": 1024}}, \"3\": {\"class_type\": \"KSampler\", \"inputs\": {\"seed\": 42, \"steps\": 25, \"cfg\": 6.5, \"sampler_name\": \"euler\", \"scheduler\": \"normal\", \"denoise\": 1.0, \"model\": [\"4\", 0], \"positive\": [\"6\", 0], \"negative\": [\"6\", 1], \"latent_image\": [\"5\", 0]}}, \"8\": {\"class_type\": \"VAEDecode\", \"inputs\": {\"samples\": [\"3\", 0], \"vae\": [\"4\", 2]}}, \"9\": {\"class_type\": \"SaveImage\", \"inputs\": {\"filename_prefix\": \"ComfyUI\", \"images\": [\"8\", 0]}}}", + "workflow": null + } +] diff --git a/tests/generation_params_cases.py b/tests/generation_params_cases.py new file mode 100644 index 0000000..da76420 --- /dev/null +++ b/tests/generation_params_cases.py @@ -0,0 +1,444 @@ +"""Named workflow cases shared by the generation-parameter parser tests. + +Each case is the raw metadata records a file would carry, as text, so the cases +exercise ``parse_js_json`` as well as the tracing. The JS parity test runs every +case through the legacy browser parser too. Prompt texts and seeds are invented. +""" + +import json + + +def _text(value): + return None if value is None else json.dumps(value) + + +def case(prompt=None, workflow=None): + return {"prompt": _text(prompt), "workflow": _text(workflow)} + + +def encoder(text, clip=("4", 1)): + return { + "class_type": "CLIPTextEncode", + "inputs": {"text": text, "clip": list(clip)}, + } + + +def ksampler(positive, negative, model=("4", 0), **settings): + inputs = { + "seed": 5, + "steps": 20, + "cfg": 7, + "sampler_name": "euler", + "scheduler": "normal", + "denoise": 1.0, + "model": list(model), + "positive": list(positive), + "negative": list(negative), + "latent_image": ["2", 0], + } + inputs.update(settings) + return {"class_type": "KSampler", "inputs": inputs} + + +CHECKPOINT = { + "class_type": "CheckpointLoaderSimple", + "inputs": {"ckpt_name": "example.safetensors"}, +} +LATENT = { + "class_type": "EmptyLatentImage", + "inputs": {"width": 512, "height": 512, "batch_size": 1}, +} + + +def _basic(): + return { + "4": CHECKPOINT, + "2": LATENT, + "6": encoder("a cat on a windowsill"), + "7": encoder("blurry, watermark"), + "3": ksampler(("6", 0), ("7", 0)), + "9": {"class_type": "SaveImage", "inputs": {"images": ["8", 0]}}, + } + + +def _prompt_manager(text, prepend="", append=""): + return { + "class_type": "PromptManager", + "inputs": { + "text": text, + "category": "", + "tags": "", + "search_text": "", + "prepend_text": prepend, + "append_text": append, + "clip": ["4", 1], + }, + } + + +def _shared_prompt_pipeline(): + """One PromptManager pair feeds a base pass, an upscale pass and a detailer.""" + return { + "1": CHECKPOINT, + "5": ksampler( + ("25", 0), + ("26", 0), + ("1", 0), + seed=111, + steps=4, + cfg=1.0, + sampler_name="lcm", + latent_image=["20", 0], + ), + "6": { + "class_type": "VAEDecode", + "inputs": {"samples": ["5", 0], "vae": ["1", 2]}, + }, + "11": { + "class_type": "VAEEncode", + "inputs": {"pixels": ["6", 0], "vae": ["1", 2]}, + }, + "12": ksampler( + ("25", 0), + ("26", 0), + ("1", 0), + seed=222, + steps=6, + cfg=1.0, + sampler_name="lcm", + denoise=0.45, + latent_image=["11", 0], + ), + "13": { + "class_type": "VAEDecode", + "inputs": {"samples": ["12", 0], "vae": ["1", 2]}, + }, + "17": { + "class_type": "FaceDetailer", + "inputs": { + "seed": 333, + "steps": 4, + "cfg": 1.0, + "sampler_name": "lcm", + "image": ["13", 0], + "model": ["1", 0], + "clip": ["1", 1], + "vae": ["1", 2], + "positive": ["25", 0], + "negative": ["26", 0], + }, + }, + "20": { + "class_type": "EmptyLatentImage", + "inputs": {"width": 640, "height": 1536, "batch_size": 1}, + }, + "25": _prompt_manager("a lighthouse at dusk, oil painting"), + "26": _prompt_manager("blurry, watermark"), + "48": { + "class_type": "KikoSaveImage", + "inputs": {"filename_prefix": ["49", 0], "images": ["17", 0]}, + }, + "49": { + "class_type": "KikoProjectFilePath", + "inputs": {"project_name": "example"}, + }, + } + + +def _custom_sampler(guider): + return { + "13": CHECKPOINT, + "20": encoder("a red fox in snow", clip=("13", 1)), + "21": encoder("lowres", clip=("13", 1)), + "22": guider, + "25": {"class_type": "RandomNoise", "inputs": {"noise_seed": 42}}, + "16": {"class_type": "KSamplerSelect", "inputs": {"sampler_name": "dpmpp_2m"}}, + "17": { + "class_type": "BasicScheduler", + "inputs": { + "scheduler": "karras", + "steps": 8, + "denoise": 1.0, + "model": ["13", 0], + }, + }, + "1300:8": { + "class_type": "SamplerCustomAdvanced", + "inputs": { + "noise": ["25", 0], + "guider": ["22", 0], + "sampler": ["16", 0], + "sigmas": ["17", 0], + "latent_image": ["5", 0], + }, + }, + } + + +def _workflow_only(): + return { + "nodes": [ + { + "id": 4, + "type": "CheckpointLoaderSimple", + "mode": 0, + "inputs": [], + "widgets_values": ["example.safetensors"], + }, + { + "id": 6, + "type": "CLIPTextEncode", + "mode": 0, + "inputs": [{"name": "clip", "link": 3}], + "widgets_values": ["a tidepool at noon"], + }, + { + "id": 7, + "type": "CLIPTextEncode", + "mode": 0, + "inputs": [{"name": "clip", "link": 5}], + "widgets_values": ["noisy"], + }, + { + "id": 10, + "type": "Reroute", + "mode": 0, + "inputs": [{"name": "", "link": 7}], + }, + { + "id": 3, + "type": "KSampler", + "mode": 0, + "inputs": [ + {"name": "model", "link": 1}, + {"name": "positive", "link": 8}, + {"name": "negative", "link": 4}, + {"name": "latent_image", "link": 2}, + ], + "widgets_values": [314, "randomize", 25, 6.5, "dpmpp_2m", "karras", 1], + }, + { + "id": 11, + "type": "CLIPTextEncode", + "mode": 2, + "inputs": [], + "widgets_values": ["muted node text"], + }, + ], + "links": [ + [1, 4, 0, 3, 0, "MODEL"], + [3, 4, 1, 6, 0, "CLIP"], + [5, 4, 1, 7, 0, "CLIP"], + [7, 6, 0, 10, 0, "CONDITIONING"], + [8, 10, 0, 3, 1, "CONDITIONING"], + [4, 7, 0, 3, 2, "CONDITIONING"], + { + "id": 2, + "origin_id": 99, + "origin_slot": 0, + "target_id": 3, + "target_slot": 3, + "type": "LATENT", + }, + ], + } + + +def _chain(length): + graph = {"4": CHECKPOINT, "1": encoder("deep chain text")} + previous = "1" + for index in range(length): + node_id = str(100 + index) + graph[node_id] = { + "class_type": "ConditioningPass", + "inputs": {"conditioning": [previous, 0]}, + } + previous = node_id + graph["3"] = ksampler((previous, 0), ("1", 0)) + return graph + + +CASES = { + "basic": case(_basic()), + "prompt-manager-prepend-append": case( + { + "4": CHECKPOINT, + "6": _prompt_manager("a cat", prepend="masterpiece", append="4k"), + "7": _prompt_manager( + "masterpiece, a dog", prepend="masterpiece", append="4k" + ), + "3": ksampler(("6", 0), ("7", 0)), + } + ), + "linked-text-concat": case( + { + "4": CHECKPOINT, + "10": {"class_type": "PrimitiveString", "inputs": {"value": "first part"}}, + "11": { + "class_type": "StringConcatenate", + "inputs": { + "string_a": ["10", 0], + "string_b": "second part", + "delimiter": ", ", + "seed": 3, + "string_c": " ", + }, + }, + "6": { + "class_type": "CLIPTextEncode", + "inputs": {"text": ["11", 0], "clip": ["4", 1]}, + }, + "7": encoder(""), + "3": ksampler(("6", 0), ("7", 0)), + } + ), + "prompt-manager-pair": case( + { + "4": CHECKPOINT, + "8": { + "class_type": "PromptManagerPair", + "inputs": { + "text": "pair positive", + "negative_text": "pair negative", + "prepend_text": "", + "append_text": "", + "clip": ["4", 1], + }, + }, + "3": ksampler(("8", 0), ("8", 1)), + } + ), + "conditioning-passthrough": case( + { + "4": CHECKPOINT, + "6": encoder("through a controlnet"), + "7": encoder("negative through it"), + "12": { + "class_type": "ControlNetApplyAdvanced", + "inputs": { + "positive": ["6", 0], + "negative": ["7", 0], + "control_net": ["13", 0], + }, + }, + "3": ksampler(("12", 0), ("12", 1)), + } + ), + "first-sampler-in-js-key-order": case( + { + "4": CHECKPOINT, + "6": encoder("from sampler twelve"), + "7": encoder("from sampler five"), + "x": ksampler(("6", 0), ("6", 0)), + "12": ksampler(("6", 0), ("6", 0), seed=12), + "5": ksampler(("7", 0), ("7", 0), seed=55), + } + ), + "custom-sampler-cfg-guider": case( + _custom_sampler( + { + "class_type": "CFGGuider", + "inputs": { + "model": ["13", 0], + "positive": ["20", 0], + "negative": ["21", 0], + "cfg": 3.5, + }, + } + ) + ), + "custom-sampler-basic-guider": case( + _custom_sampler( + { + "class_type": "BasicGuider", + "inputs": {"model": ["13", 0], "conditioning": ["20", 0]}, + } + ) + ), + "no-sampler-loose-settings": case( + { + "4": CHECKPOINT, + "3": { + "class_type": "MyKSamplerVariant", + "inputs": { + "noise_seed": 9, + "steps": 12, + "cfg": 2, + "sampler_name": "ddim", + }, + }, + } + ), + "primitive-seed": case( + { + "4": CHECKPOINT, + "6": encoder("seeded"), + "30": { + "class_type": "Seed (rgthree)", + "inputs": {"other": "x", "seed": 77}, + }, + "3": ksampler(("6", 0), ("6", 0), seed=["30", 0]), + } + ), + "workflow-only": case(workflow=_workflow_only()), + "overwritten-prompt-manager-text": case( + { + "4": CHECKPOINT, + "25": _prompt_manager("same saved text"), + "26": _prompt_manager("same saved text"), + "3": ksampler(("25", 0), ("26", 0)), + }, + { + "nodes": [ + { + "id": 25, + "type": "PromptManager", + "widgets_values": ["the real positive"], + }, + { + "id": 26, + "type": "PromptManager", + "widgets_values": ["the real negative"], + }, + ], + "links": [], + }, + ), + "conditioning-cycle": case( + { + "4": CHECKPOINT, + "20": { + "class_type": "ConditioningCombine", + "inputs": {"conditioning_1": ["21", 0]}, + }, + "21": { + "class_type": "ConditioningCombine", + "inputs": {"conditioning_1": ["20", 0]}, + }, + "3": ksampler(("20", 0), ("21", 0)), + } + ), + "chain-within-visit-limit": case(_chain(450)), + "chain-beyond-visit-limit": case(_chain(600)), + "chain-at-last-visit": case(_chain(499)), + "chain-one-past-last-visit": case(_chain(500)), + "blank-text-and-zero-seed": case( + { + "4": CHECKPOINT, + "6": encoder(" "), + "7": encoder("kept negative"), + "3": ksampler(("6", 0), ("7", 0), seed=0), + } + ), + "shared-prompt-pipeline": case(_shared_prompt_pipeline()), + "null-workflow-node": case(_basic(), {"nodes": [None], "links": []}), + "unparsable-records": {"prompt": '{"3": NaN}', "workflow": "not json"}, + "seed-beyond-double-precision": case( + { + "4": CHECKPOINT, + "6": encoder("x"), + "3": ksampler(("6", 0), ("6", 0), cfg=1.0, seed=4974052037430000001), + } + ), + "nothing": case(), +} diff --git a/tests/js/support/generation-params-oracle.mjs b/tests/js/support/generation-params-oracle.mjs new file mode 100644 index 0000000..2ad065d --- /dev/null +++ b/tests/js/support/generation-params-oracle.mjs @@ -0,0 +1,32 @@ +// Runs the legacy browser parser (comfy-metadata.js extractGenerationParams) on +// one JSON case per input line and prints one JSON result per line. The Python +// port (utils/generation_params.py) must produce the same results. +// +// Input line: {"prompt": , "workflow": } +// Each present record is parsed with JSON.parse; a record that fails +// to parse is treated as absent, as the browser pages do. +// Output line: {"ok": true, "result": {...}} or {"ok": false} when the parser throws. +import path from 'node:path'; +import fs from 'node:fs'; +import { createRequire } from 'node:module'; +import { fileURLToPath } from 'node:url'; + +const here = path.dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); +const { extractGenerationParams } = require(path.join(here, '..', '..', '..', 'web', 'js', 'comfy-metadata.js')); + +function parsed(text) { + if (typeof text !== 'string') return undefined; + try { return JSON.parse(text); } catch { return undefined; } +} + +for (const line of fs.readFileSync(0, 'utf8').split('\n')) { + if (!line.trim()) continue; + const item = JSON.parse(line), data = {}; + const prompt = parsed(item.prompt), workflow = parsed(item.workflow); + if (prompt !== undefined) data.prompt = prompt; + if (workflow !== undefined) data.workflow = workflow; + let out; + try { out = { ok: true, result: extractGenerationParams(data) }; } catch { out = { ok: false }; } + process.stdout.write(JSON.stringify(out) + '\n'); +} diff --git a/tests/test_generation_params.py b/tests/test_generation_params.py new file mode 100644 index 0000000..d925bed --- /dev/null +++ b/tests/test_generation_params.py @@ -0,0 +1,221 @@ +"""Tests for utils.generation_params, the Python port of the browser parser. + +Expected values are what web/js/comfy-metadata.js extractGenerationParams +returns for the same input (tests/test_generation_params_js_parity.py checks +that directly when Node is available). +""" + +import os +import sys +import unittest + +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from utils.generation_params import ( # noqa: E402 + PLACEHOLDERS, + GenerationParamsError, + extract_generation_params, + extract_from_records, + parse_js_json, +) + +try: + from tests.generation_params_cases import CASES # noqa: E402 +except ImportError: # discovered with tests/ as the top-level directory + from generation_params_cases import CASES # noqa: E402 + + +def run(name): + return extract_from_records(CASES[name]["prompt"], CASES[name]["workflow"]) + + +class TracesPrompts(unittest.TestCase): + def test_sampler_prompts_and_settings(self): + self.assertEqual( + run("basic"), + { + "positivePrompt": "a cat on a windowsill", + "negativePrompt": "blurry, watermark", + "checkpoint": "example.safetensors", + "steps": 20, + "cfgScale": 7, + "sampler": "euler", + "seed": 5, + }, + ) + + def test_prompt_manager_joins_prepend_and_append_once(self): + result = run("prompt-manager-prepend-append") + self.assertEqual(result["positivePrompt"], "masterpiece a cat 4k") + # The text already starts with the prepend text, so it is not repeated. + self.assertEqual(result["negativePrompt"], "masterpiece, a dog 4k") + + def test_linked_text_joins_text_inputs_with_the_delimiter(self): + result = run("linked-text-concat") + self.assertEqual(result["positivePrompt"], "first part, second part") + self.assertEqual(result["negativePrompt"], PLACEHOLDERS["negativePrompt"]) + + def test_prompt_manager_pair_outputs(self): + result = run("prompt-manager-pair") + self.assertEqual(result["positivePrompt"], "pair positive") + self.assertEqual(result["negativePrompt"], "pair negative") + + def test_conditioning_passthrough_follows_the_role(self): + result = run("conditioning-passthrough") + self.assertEqual(result["positivePrompt"], "through a controlnet") + self.assertEqual(result["negativePrompt"], "negative through it") + + def test_several_samplers_sharing_one_prompt_pair(self): + result = run("shared-prompt-pipeline") + self.assertEqual(result["positivePrompt"], "a lighthouse at dusk, oil painting") + self.assertEqual(result["negativePrompt"], "blurry, watermark") + self.assertEqual( + (result["seed"], result["steps"], result["sampler"]), (111, 4, "lcm") + ) + + def test_overwritten_prompt_manager_text_is_recovered_from_widgets(self): + result = run("overwritten-prompt-manager-text") + self.assertEqual(result["positivePrompt"], "the real positive") + self.assertEqual(result["negativePrompt"], "the real negative") + + +class ChoosesTheSampler(unittest.TestCase): + def test_first_sampler_follows_javascript_key_order(self): + # Integer-like IDs come first in ascending order, then the others. + result = run("first-sampler-in-js-key-order") + self.assertEqual(result["positivePrompt"], "from sampler five") + self.assertEqual(result["seed"], 55) + + def test_custom_sampler_reads_its_guider_and_split_settings(self): + result = run("custom-sampler-cfg-guider") + self.assertEqual(result["positivePrompt"], "a red fox in snow") + self.assertEqual(result["negativePrompt"], "lowres") + self.assertEqual( + (result["seed"], result["steps"], result["cfgScale"], result["sampler"]), + (42, 8, 3.5, "dpmpp_2m"), + ) + + def test_a_guider_without_prompt_inputs_leaves_prompts_unknown(self): + result = run("custom-sampler-basic-guider") + self.assertEqual(result["positivePrompt"], PLACEHOLDERS["positivePrompt"]) + # KSamplerSelect still matches the loose /ksampler/ settings lookup. + self.assertEqual(result["sampler"], "dpmpp_2m") + self.assertEqual(result["seed"], PLACEHOLDERS["seed"]) + + def test_no_sampler_reads_loose_settings(self): + result = run("no-sampler-loose-settings") + self.assertEqual(result["positivePrompt"], PLACEHOLDERS["positivePrompt"]) + self.assertEqual( + (result["seed"], result["steps"], result["cfgScale"], result["sampler"]), + (9, 12, 2, "ddim"), + ) + self.assertEqual(result["checkpoint"], "example.safetensors") + + def test_linked_seed_prefers_the_input_of_the_same_name(self): + self.assertEqual(run("primitive-seed")["seed"], 77) + + +class ReadsTheWorkflow(unittest.TestCase): + def test_workflow_only_file(self): + self.assertEqual( + run("workflow-only"), + { + "positivePrompt": "a tidepool at noon", + "negativePrompt": "noisy", + "checkpoint": "example.safetensors", + "steps": 25, + "cfgScale": 6.5, + "sampler": "dpmpp_2m", + "seed": 314, + }, + ) + + +class StaysBounded(unittest.TestCase): + def test_cycles_terminate(self): + result = run("conditioning-cycle") + self.assertEqual(result["positivePrompt"], PLACEHOLDERS["positivePrompt"]) + + def test_long_chains_resolve_within_the_visit_limit(self): + self.assertEqual( + run("chain-within-visit-limit")["positivePrompt"], "deep chain text" + ) + + def test_chains_beyond_the_visit_limit_stop_without_recursion_errors(self): + result = run("chain-beyond-visit-limit") + self.assertEqual(result["positivePrompt"], PLACEHOLDERS["positivePrompt"]) + self.assertEqual(result["negativePrompt"], "deep chain text") + + def test_the_visit_limit_boundary_matches_the_browser_parser(self): + # 499 pass-through nodes and the encoder are exactly 500 visits. + self.assertEqual( + run("chain-at-last-visit")["positivePrompt"], "deep chain text" + ) + self.assertEqual( + run("chain-one-past-last-visit")["positivePrompt"], + PLACEHOLDERS["positivePrompt"], + ) + + def test_very_long_chains_do_not_exhaust_the_python_stack(self): + graph = {"1": {"class_type": "CLIPTextEncode", "inputs": {"text": "t"}}} + for index in range(5000): + graph[str(10 + index)] = { + "class_type": "P", + "inputs": {"conditioning": [str(9 + index if index else 1), 0]}, + } + graph["2"] = { + "class_type": "KSampler", + "inputs": { + "positive": ["5009", 0], + "negative": ["1", 0], + "model": ["1", 0], + }, + } + result = extract_generation_params({"prompt": graph}) + self.assertEqual(result["positivePrompt"], PLACEHOLDERS["positivePrompt"]) + self.assertEqual(result["negativePrompt"], "t") + + +class Placeholders(unittest.TestCase): + def test_blank_text_is_a_placeholder_and_zero_seed_is_kept(self): + result = run("blank-text-and-zero-seed") + self.assertEqual(result["positivePrompt"], PLACEHOLDERS["positivePrompt"]) + self.assertEqual(result["negativePrompt"], "kept negative") + self.assertEqual(result["seed"], 0) + + def test_nothing_recorded(self): + self.assertEqual(run("nothing"), dict(PLACEHOLDERS)) + self.assertEqual(run("unparsable-records"), dict(PLACEHOLDERS)) + + +class MalformedInput(unittest.TestCase): + def test_a_null_workflow_node_fails_like_the_browser_parser(self): + with self.assertRaises(GenerationParamsError): + run("null-workflow-node") + + +class ParsesLikeJavaScript(unittest.TestCase): + def test_rejects_non_standard_numbers(self): + for text in ('{"a": NaN}', '{"a": Infinity}', "[-Infinity]", "not json", ""): + with self.subTest(text=text): + self.assertIsNone(parse_js_json(text)) + + def test_large_integers_round_like_doubles(self): + self.assertEqual( + parse_js_json('{"seed": 9007199254740993}'), {"seed": 9007199254740992.0} + ) + self.assertEqual( + parse_js_json('{"seed": 9007199254740991}'), {"seed": 9007199254740991} + ) + + def test_seeds_beyond_double_precision_round_like_the_browser(self): + self.assertEqual( + run("seed-beyond-double-precision")["seed"], 4974052037430000001.0 + ) + + def test_duplicate_keys_keep_the_last_value(self): + self.assertEqual(parse_js_json('{"a": 1, "a": 2}'), {"a": 2}) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_generation_params_fuzz.py b/tests/test_generation_params_fuzz.py new file mode 100644 index 0000000..b71aa1c --- /dev/null +++ b/tests/test_generation_params_fuzz.py @@ -0,0 +1,637 @@ +"""Randomized differential test: the Python parser equals the browser parser. + +Generates seeded random API graphs and UI workflows, from realistic to +malformed, and requires utils.generation_params to return exactly what +web/js/comfy-metadata.js extractGenerationParams returns, or to fail where it +throws. Runs only where Node is available. Set PM_PARAMS_FUZZ_CASES to run more. +""" + +import json +import os +import random +import sys +import unittest + +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +try: + from tests.test_generation_params_js_parity import ( + NODE, + js_equal, + run_oracle, + run_python, + ) # noqa: E402 +except ImportError: # discovered with tests/ as the top-level directory + from test_generation_params_js_parity import ( + NODE, + js_equal, + run_oracle, + run_python, + ) # noqa: E402 + +CASE_COUNT = int(os.environ.get("PM_PARAMS_FUZZ_CASES", "3000")) +SEEDS = (20261020, 7, 424242) + +NODE_IDS = [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "9", + "10", + "12", + "25", + "26", + "100", + "1300:5", + "1300:8", + "x", + "05", + "4294967295", + "-1", + "constructor", +] +CLASS_TYPES = [ + "KSampler", + "KSamplerAdvanced", + "SamplerCustomAdvanced", + "CFGGuider", + "BasicGuider", + "CLIPTextEncode", + "PromptManager", + "PromptManagerPair", + "PromptManagerText", + "StringConcatenate", + "PrimitiveString", + "ControlNetApplyAdvanced", + "ConditioningCombine", + "CheckpointLoaderSimple", + "UNETLoader", + "LoraLoader", + "RandomNoise", + "KSamplerSelect", + "BasicScheduler", + "Reroute", + "MyKSamplerThing", + "SaveImage", + "FaceDetailer", + "toString", + "", +] +INPUT_KEYS = [ + "text", + "positive", + "negative", + "model", + "conditioning", + "conditioning_1", + "conditioning_to", + "guider", + "sigmas", + "noise", + "sampler", + "seed", + "noise_seed", + "steps", + "cfg", + "sampler_name", + "ckpt_name", + "unet_name", + "model_name", + "prepend_text", + "append_text", + "negative_text", + "delimiter", + "string_a", + "string_b", + "value", + "text_g", + "prompt", + "0", + "10", + "clip", +] +TEXTS = [ + "a cat", + " padded text ", + "", + " ", + "bom text ", + "line one\nline two", + "masterpiece", + "masterpiece, a dog", + "4k", + "a dog 4k", + "ünïcödé ✓", + ", ", +] +WORKFLOW_TYPES = [ + "KSampler", + "KSamplerAdvanced", + "CLIPTextEncode", + "PromptManager", + "PromptManagerPair", + "CheckpointLoaderSimple", + "CheckpointLoader", + "UNETLoader", + "MyUnetLoader", + "Reroute", + "GetNode", + "SetNode", + "Note", + "toString", + "valueOf", +] + + +class Generator: + def __init__(self, seed): + self.random = random.Random(seed) + + def pick(self, items): + return self.random.choice(items) + + def chance(self, probability): + return self.random.random() < probability + + def number(self): + return self.pick( + [ + 0, + 1, + 2, + 3, + 5, + 20, + 7, + 1.0, + 1.5, + 6.5, + 0.45, + 1.5e-7, + 2.5e21, + -3, + 9007199254740991, + ] + ) + + def link(self): + return [ + self.pick(NODE_IDS + [3, 12, 5.0]), + self.pick([0, 1, 2, 3, 1.0, 0, 0, 0, -1]), + ] + + def value(self, key): + roll = self.random.random() + if ( + key + in ( + "positive", + "negative", + "model", + "conditioning", + "conditioning_1", + "conditioning_to", + "guider", + "sigmas", + "noise", + "sampler", + "clip", + ) + and roll < 0.8 + ): + return self.link() + if roll < 0.3: + return self.link() + if roll < 0.6: + return self.pick(TEXTS) + if roll < 0.85: + return self.number() + return self.pick( + [True, False, None, [1, 2, 3], {"nested": "x"}, [], "randomize"] + ) + + def inputs(self): + if self.chance(0.04): + return self.pick([[], ["text"], "text", 3, None, True]) + keys = self.random.sample(INPUT_KEYS, self.random.randint(0, 9)) + return {key: self.value(key) for key in keys} + + def node(self): + if self.chance(0.03): + return self.pick([None, "node", 5, [1, 2]]) + node = {"class_type": self.pick(CLASS_TYPES), "inputs": self.inputs()} + if self.chance(0.05): + del node["class_type"] + return node + + def graph(self): + ids = self.random.sample(NODE_IDS, self.random.randint(1, 12)) + if self.chance(0.03): + return [self.node() for _ in ids] + return {node_id: self.node() for node_id in ids} + + def workflow_node(self, node_id): + if self.chance(0.02): + return self.pick([None, 3, "node"]) + node = { + "id": node_id, + "type": self.pick(WORKFLOW_TYPES), + "mode": self.pick([0, 0, 0, 2, 4]), + } + inputs = [] + for _ in range(self.random.randint(0, 4)): + item = { + "name": self.pick(INPUT_KEYS), + "link": self.pick([None, 1, 2, 3, 4, 5, 6, 7, 8, "2"]), + "type": self.pick(["CONDITIONING", "MODEL", "CLIP", "*", "STRING"]), + } + if self.chance(0.2): + item["widget"] = {"name": self.pick(INPUT_KEYS)} + inputs.append(item) + node["inputs"] = ( + inputs if not self.chance(0.03) else self.pick([{"a": 1}, "abc", None]) + ) + node["widgets_values"] = [ + self.value(self.pick(INPUT_KEYS)) for _ in range(self.random.randint(0, 6)) + ] + if self.chance(0.1): + node["widgets_values"].insert(1, "randomize") + if self.chance(0.05): + node["widgets_values_named"] = { + "text": self.pick(TEXTS), + "seed": self.number(), + } + return node + + def workflow(self): + if self.chance(0.03): + return self.pick([[], "workflow", {"nodes": "x"}, {"links": []}]) + ids = self.random.sample( + [1, 2, 3, 4, 5, 6, 7, 8, "9", 10.0], self.random.randint(1, 8) + ) + links = [] + for link_id in range(1, self.random.randint(1, 9)): + origin, slot = self.pick(ids), self.pick([0, 1, 2]) + if self.chance(0.5): + links.append( + [ + link_id, + origin, + slot, + self.pick(ids), + 0, + self.pick(["CONDITIONING", "MODEL", "*", "STRING"]), + ] + ) + else: + links.append( + { + "id": link_id, + "origin_id": origin, + "origin_slot": slot, + "type": self.pick(["CONDITIONING", "MODEL", "*"]), + } + ) + return { + "nodes": [self.workflow_node(node_id) for node_id in ids], + "links": links, + } + + # --- coherent pipelines, then corrupted ------------------------------------ + + def text_source(self, graph, ids, depth=0): + """A node id producing text: an encoder, PromptManager, pair or a text chain.""" + node_id = ids.pop() + kind = self.pick( + ["encoder", "manager", "pair", "concat", "primitive"] + if depth < 2 + else ["encoder", "manager"] + ) + if kind == "encoder": + text = ( + self.pick(TEXTS) + if self.chance(0.7) + else [self.text_source(graph, ids, depth + 1), 0] + ) + graph[node_id] = { + "class_type": "CLIPTextEncode", + "inputs": {"text": text, "clip": ["4", 1]}, + } + elif kind == "manager": + graph[node_id] = { + "class_type": self.pick(["PromptManager", "PromptManagerText"]), + "inputs": { + "text": self.pick(TEXTS), + "prepend_text": self.pick(TEXTS + ["masterpiece"]), + "append_text": self.pick(TEXTS + ["4k"]), + "clip": ["4", 1], + }, + } + elif kind == "pair": + graph[node_id] = { + "class_type": "PromptManagerPair", + "inputs": { + "text": self.pick(TEXTS), + "negative_text": self.pick(TEXTS), + "prepend_text": "", + "append_text": "", + }, + } + elif kind == "concat": + graph[node_id] = { + "class_type": "StringConcatenate", + "inputs": { + "string_a": ( + [self.text_source(graph, ids, depth + 1), 0] if ids else "x" + ), + "string_b": self.pick(TEXTS), + "delimiter": self.pick([", ", " ", 3, "|"]), + }, + } + else: + graph[node_id] = { + "class_type": "PrimitiveString", + "inputs": {"value": self.pick(TEXTS)}, + } + return node_id + + def conditioning(self, graph, ids, role): + source = self.text_source(graph, ids) + slot = ( + self.pick([0, 1, 2, 3]) + if graph[source]["class_type"] == "PromptManagerPair" + else 0 + ) + link = [source, slot] + for _ in range(self.pick([0, 0, 1, 2, 3])): + if not ids: + break + node_id = ids.pop() + key = self.pick([role, "conditioning", "conditioning_to", "conditioning_1"]) + graph[node_id] = { + "class_type": self.pick( + [ + "ControlNetApplyAdvanced", + "ConditioningCombine", + "ConditioningSetArea", + ] + ), + "inputs": {key: link, "strength": 1.0}, + } + link = [node_id, 0] + return link + + def pipeline(self): + ids = [str(i) for i in self.random.sample(range(1, 400), 120)] + [ + "1300:7", + "x", + "constructor", + ] + self.random.shuffle(ids) + graph = { + "4": { + "class_type": self.pick(["CheckpointLoaderSimple", "UNETLoader"]), + "inputs": { + self.pick( + ["ckpt_name", "unet_name", "gguf_name"] + ): "model.safetensors" + }, + } + } + for _ in range(self.pick([1, 1, 2, 3])): + positive, negative = self.conditioning( + graph, ids, "positive" + ), self.conditioning(graph, ids, "negative") + settings = { + "seed": self.number() if self.chance(0.8) else [ids.pop(), 0], + "steps": self.number(), + "cfg": self.number(), + "sampler_name": self.pick(["euler", "lcm", "dpmpp_2m"]), + } + if settings["seed"] and isinstance(settings["seed"], list): + graph[settings["seed"][0]] = { + "class_type": "Seed", + "inputs": {"seed": self.number(), "other": "x"}, + } + if self.chance(0.25): + guider = ids.pop() + graph[guider] = { + "class_type": "CFGGuider", + "inputs": { + "model": ["4", 0], + "positive": positive, + "negative": negative, + "cfg": self.number(), + }, + } + noise, chooser, sigmas = ids.pop(), ids.pop(), ids.pop() + graph[noise] = { + "class_type": "RandomNoise", + "inputs": {"noise_seed": self.number()}, + } + graph[chooser] = { + "class_type": "KSamplerSelect", + "inputs": {"sampler_name": "euler"}, + } + graph[sigmas] = { + "class_type": "BasicScheduler", + "inputs": {"steps": self.number()}, + } + graph[ids.pop()] = { + "class_type": "SamplerCustomAdvanced", + "inputs": { + "noise": [noise, 0], + "guider": [guider, 0], + "sampler": [chooser, 0], + "sigmas": [sigmas, 0], + }, + } + else: + graph[ids.pop()] = { + "class_type": self.pick( + ["KSampler", "KSamplerAdvanced", "FaceDetailer"] + ), + "inputs": { + "model": ["4", 0], + "positive": positive, + "negative": negative, + **settings, + }, + } + for _ in range(self.pick([0, 0, 1, 3])): # corruption + node_id = self.pick(list(graph)) + node = graph[node_id] + if ( + self.chance(0.5) + and isinstance(node, dict) + and isinstance(node.get("inputs"), dict) + and node["inputs"] + ): + key = self.pick(list(graph[node_id]["inputs"])) + graph[node_id]["inputs"][key] = self.value(key) + else: + graph[node_id] = self.node() + return graph + + def pipeline_workflow(self): + """A connected workflow: loader, encoders, Reroute or Set/Get hops, sampler.""" + nodes, links = [], [] + + def link(origin, slot, kind): + links.append( + [len(links) + 1, origin, slot, 0, 0, kind] + if self.chance(0.6) + else { + "id": len(links) + 1, + "origin_id": origin, + "origin_slot": slot, + "type": kind, + } + ) + return len(links) + + nodes.append( + { + "id": 4, + "type": self.pick( + ["CheckpointLoaderSimple", "UNETLoader", "MyUnetLoader"] + ), + "mode": 0, + "inputs": [], + "widgets_values": ["model.safetensors"], + } + ) + refs = [] + for index, role in enumerate(("positive", "negative")): + encoder = 10 + index + nodes.append( + { + "id": encoder, + "type": self.pick( + ["CLIPTextEncode", "PromptManager", "PromptManagerText"] + ), + "mode": self.pick([0, 0, 0, 4]), + "inputs": [ + {"name": "clip", "link": link(4, 1, "CLIP"), "type": "CLIP"} + ], + "widgets_values": [ + self.pick(TEXTS), + "", + "", + "", + self.pick(TEXTS), + self.pick(TEXTS), + ], + } + ) + ref = link(encoder, 0, "CONDITIONING") + hop = self.pick(["none", "none", "reroute", "setget"]) + if hop == "reroute": + nodes.append( + { + "id": 20 + index, + "type": "Reroute", + "mode": 0, + "inputs": [{"name": "", "link": ref}], + } + ) + ref = link(20 + index, 0, "*") + elif hop == "setget": + name = self.pick(["cond_" + role, "shared"]) + nodes.append( + { + "id": 30 + index, + "type": "SetNode", + "mode": 0, + "inputs": [{"name": "c", "link": ref}], + "widgets_values": [name], + } + ) + nodes.append( + { + "id": 40 + index, + "type": "GetNode", + "mode": 0, + "inputs": [], + "widgets_values": [name], + } + ) + ref = link(40 + index, 0, "CONDITIONING") + refs.append(ref) + widgets = [ + self.number(), + self.pick(["randomize", "fixed", "x"]), + self.number(), + self.number(), + "euler", + "normal", + 1, + ] + nodes.append( + { + "id": 3, + "type": self.pick(["KSampler", "KSamplerAdvanced"]), + "mode": 0, + "inputs": [ + {"name": "model", "link": link(4, 0, "MODEL"), "type": "MODEL"}, + {"name": "positive", "link": refs[0], "type": "CONDITIONING"}, + {"name": "negative", "link": refs[1], "type": "CONDITIONING"}, + ], + "widgets_values": widgets, + } + ) + if self.chance(0.3): + nodes[self.random.randrange(len(nodes))] = self.workflow_node( + self.pick([1, 2, 99]) + ) + return {"nodes": nodes, "links": links} + + def case(self): + roll = self.random.random() + structured = self.chance(0.7) + prompt = ( + json.dumps(self.pipeline() if structured else self.graph()) + if roll < 0.75 + else None + ) + workflow = ( + json.dumps(self.pipeline_workflow() if structured else self.workflow()) + if roll > 0.45 + else None + ) + if self.chance(0.02): + prompt = self.pick(['{"1": NaN}', "{", "null", "[]", '"text"', "12"]) + return {"prompt": prompt, "workflow": workflow} + + +@unittest.skipUnless(NODE, "Node is required to run the browser parser") +class RandomGraphs(unittest.TestCase): + def test_random_graphs_match_the_browser_parser(self): + for seed in SEEDS: + generator = Generator(seed) + cases = [generator.case() for _ in range(CASE_COUNT)] + expected = run_oracle(cases) + self.assertEqual(len(expected), len(cases)) + mismatches = [] + for index, (case, result) in enumerate(zip(cases, expected)): + actual = run_python(case) + if not js_equal(actual, result): + mismatches.append((index, case, actual, result)) + with self.subTest(seed=seed): + outcomes = { + "ok": sum(r["ok"] for r in expected), + "throws": sum(not r["ok"] for r in expected), + } + self.assertEqual( + mismatches[:3], + [], + f"{len(mismatches)} of {len(cases)} differ; outcomes {outcomes}", + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_generation_params_js_parity.py b/tests/test_generation_params_js_parity.py new file mode 100644 index 0000000..5258b70 --- /dev/null +++ b/tests/test_generation_params_js_parity.py @@ -0,0 +1,155 @@ +"""The Python generation-parameter parser equals the browser parser. + +Golden vectors (tests/fixtures/generation_params/vectors.json) hold the browser +parser's results for every named case and every PNG fixture, so this runs on +machines without Node. With Node, the live browser parser is compared too and +the vectors are checked for staleness. Regenerate them with: + + python tests/test_generation_params_js_parity.py --write-vectors +""" + +import json +import math +import shutil +import subprocess # nosec B404 - runs the repository's own Node oracle +import sys +import unittest +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +sys.path.insert(0, str(ROOT)) + +from utils.generation_params import ( # noqa: E402 + GenerationParamsError, + extract_from_records, +) + +try: + from tests.generation_params_cases import CASES # noqa: E402 +except ImportError: # discovered with tests/ as the top-level directory + from generation_params_cases import CASES # noqa: E402 + +VECTORS = ROOT / "tests" / "fixtures" / "generation_params" / "vectors.json" +ORACLE = ROOT / "tests" / "js" / "support" / "generation-params-oracle.mjs" +FIXTURE_DIRS = [ROOT / "tests" / "fixtures"] +NODE = shutil.which("node") + + +def fixture_cases(): + """Text records of every PNG fixture, keyed by its repository path.""" + from PIL import Image + + cases = {} + for directory in FIXTURE_DIRS: + for path in sorted(directory.rglob("*.png")): + with Image.open(path) as image: + info = {k: v for k, v in image.info.items() if isinstance(v, str)} + if "prompt" in info or "workflow" in info: + name = path.relative_to(ROOT).as_posix() + cases[name] = { + "prompt": info.get("prompt"), + "workflow": info.get("workflow"), + } + return cases + + +def all_cases(): + return {**{f"case:{k}": v for k, v in CASES.items()}, **fixture_cases()} + + +def run_oracle(cases): + """Browser parser results for case records, in order.""" + lines = "".join(json.dumps(case) + "\n" for case in cases) + completed = subprocess.run( # nosec B603 - fixed argv, no shell + [NODE, str(ORACLE)], + input=lines, + capture_output=True, + text=True, + encoding="utf-8", + check=True, + timeout=600, + ) + return [json.loads(line) for line in completed.stdout.splitlines()] + + +def run_python(case): + try: + return { + "ok": True, + "result": extract_from_records(case["prompt"], case["workflow"]), + } + except GenerationParamsError: + return {"ok": False} + + +def js_equal(left, right): + """Equality as JavaScript values: 1 == 1.0, but true is not 1.""" + if isinstance(left, bool) or isinstance(right, bool): + return isinstance(left, bool) and isinstance(right, bool) and left == right + if isinstance(left, (int, float)) and isinstance(right, (int, float)): + # Every JavaScript number is a double; compare as doubles. + left, right = float(left), float(right) + return left == right or (math.isnan(left) and math.isnan(right)) + if isinstance(left, list) and isinstance(right, list): + return len(left) == len(right) and all( + js_equal(a, b) for a, b in zip(left, right) + ) + if isinstance(left, dict) and isinstance(right, dict): + return left.keys() == right.keys() and all( + js_equal(left[k], right[k]) for k in left + ) + return type(left) is type(right) and left == right + + +def write_vectors(): + cases = all_cases() + results = run_oracle(cases.values()) + vectors = [ + {"name": name, **case, "expected": result} + for (name, case), result in zip(cases.items(), results) + ] + VECTORS.parent.mkdir(parents=True, exist_ok=True) + VECTORS.write_text(json.dumps(vectors, indent=1, sort_keys=True) + "\n", "utf-8") + print(f"wrote {len(vectors)} vectors to {VECTORS.relative_to(ROOT)}") + + +class GoldenVectors(unittest.TestCase): + def test_every_vector_matches(self): + vectors = json.loads(VECTORS.read_text("utf-8")) + self.assertGreater(len(vectors), len(CASES)) + for vector in vectors: + with self.subTest(vector=vector["name"]): + actual = run_python(vector) + self.assertTrue( + js_equal(actual, vector["expected"]), (actual, vector["expected"]) + ) + + def test_vectors_cover_every_case_and_fixture(self): + names = {vector["name"] for vector in json.loads(VECTORS.read_text("utf-8"))} + self.assertEqual(names, set(all_cases())) + + +@unittest.skipUnless(NODE, "Node is required to run the browser parser") +class LiveBrowserParser(unittest.TestCase): + def test_live_results_match_python_and_the_vectors(self): + cases = all_cases() + stored = { + vector["name"]: vector["expected"] + for vector in json.loads(VECTORS.read_text("utf-8")) + } + for (name, case), expected in zip(cases.items(), run_oracle(cases.values())): + with self.subTest(case=name): + self.assertTrue( + js_equal(run_python(case), expected), (run_python(case), expected) + ) + self.assertTrue( + js_equal(stored[name], expected), + "vectors are stale: regenerate them", + ) + + +if __name__ == "__main__": + if "--write-vectors" in sys.argv: + write_vectors() + else: + unittest.main() diff --git a/tests/test_ingestion_resolver_profile.py b/tests/test_ingestion_resolver_profile.py index bbc717c..a222849 100644 --- a/tests/test_ingestion_resolver_profile.py +++ b/tests/test_ingestion_resolver_profile.py @@ -8,6 +8,7 @@ leaves it unresolved, while the inspection profile resolves it. import logging import unittest +from pathlib import Path from unittest.mock import Mock, patch from utils import prompt_pair_resolver as resolver @@ -72,12 +73,19 @@ class TestIngestionKeepsDefaultProfile(unittest.TestCase): mixin = admin.AdminRoutesMixin.__new__(admin.AdminRoutesMixin) mixin.db = Mock() + mixin.db.get_prompt_by_hash.return_value = None + mixin.db.save_prompt.return_value = 7 spy = _Spy() with patch.object(admin, "resolve_prompt_pair", spy): - status = mixin._ingest_scanned_file("/out/f03.png", _f03_metadata()) - self.assertEqual(status, "unresolved") + status = mixin._ingest_scanned_file(Path("/out/f03.png"), _f03_metadata()) spy.assert_default_and_gated(self) - mixin.db.assert_not_called() + # The resolver leaves f03 unresolved; the scan links the prompt the + # browser parser traces, as the inspector shows it. + self.assertEqual(status, "added") + self.assertEqual( + mixin.db.save_prompt.call_args.args[0], "a red fox in snow, detailed fur" + ) + mixin.db.link_image_to_prompt.assert_called_once() if __name__ == "__main__": diff --git a/tests/test_pair_scan.py b/tests/test_pair_scan.py index c8d055d..945d19c 100644 --- a/tests/test_pair_scan.py +++ b/tests/test_pair_scan.py @@ -17,6 +17,14 @@ def graph(positive="cat", negative="blur"): } +def sampled_graph(positive="cat", negative="blur"): + """A KSampler with a model link, as real workflows have.""" + g = graph(positive, negative) + g["4"] = {"class_type": "CheckpointLoaderSimple", "inputs": {"ckpt_name": "m"}} + g["3"]["inputs"]["model"] = ["4", 0] + return g + + class TestPairScan(AdminAPITestCase): def test_pair_scan_repeated_is_unchanged_and_empty_negative_is_supported(self): path = self.output_dir / "pair.png" @@ -28,16 +36,66 @@ class TestPairScan(AdminAPITestCase): self.assertEqual(pairs[0]["negative_text"], "") self.assertEqual(pairs[0]["run_count"], 0) - def test_ambiguous_sampler_scan_does_not_save_a_guess(self): - g = graph() - g["4"] = {**g["3"]} - meta = {"prompt": json.dumps(g)} - self.assertEqual( - self.api._ingest_scanned_file(self.output_dir / "multi.png", meta), - "ambiguous", - ) + def _scanned(self, name, prompt_graph): + meta = {"prompt": json.dumps(prompt_graph)} + return self.api._ingest_scanned_file(self.output_dir / name, meta) + + def _texts(self): + return [p["text"] for p in self.api.db.get_recent_prompts()["prompts"]] + + def test_samplers_sharing_one_prompt_link_that_prompt(self): + g = sampled_graph() + g["5"] = {**g["3"]} + self.assertEqual(self._scanned("multi.png", g), "added") + self.assertEqual(self._texts(), ["cat"]) + + def test_samplers_with_different_prompts_link_the_first_sampler_prompt(self): + # The prompt the inspector and the legacy panels show for this file. + g = sampled_graph() + g["6"] = {"class_type": "CLIPTextEncode", "inputs": {"text": "dog"}} + g["12"] = {**g["3"], "inputs": {**g["3"]["inputs"], "positive": ["6", 0]}} + self.assertEqual(self._scanned("different.png", g), "added") + self.assertEqual(self._texts(), ["cat"]) + + def test_an_unsupported_pass_through_still_links_the_traced_prompt(self): + g = sampled_graph() + g["7"] = { + "class_type": "MyConditioningTweak", + "inputs": {"conditioning": ["1", 0]}, + } + g["3"]["inputs"]["positive"] = ["7", 0] + g["5"] = {**g["3"]} + self.assertEqual(self._scanned("tweak.png", g), "added") + self.assertEqual(self._texts(), ["cat"]) + + def test_a_graph_without_a_traceable_prompt_saves_nothing(self): + g = sampled_graph() + g["5"] = {**g["3"]} + for sampler in ("3", "5"): + g[sampler]["inputs"]["positive"] = ["9", 0] + g["9"] = { + "class_type": "BasicGuider", + "inputs": {"width": 2048, "height": 2048}, + } + self.assertEqual(self._scanned("untraceable.png", g), "ambiguous") self.assertEqual(self.api.db.list_prompt_pairs()["total"], 0) - self.assertEqual(self.api.db.get_recent_prompts()["prompts"], []) + self.assertEqual(self._texts(), []) + + def test_numeric_widgets_are_never_stored_as_a_prompt(self): + # The pre-redesign scan stored "2048" from a resolution widget here. + g = { + "1": {"class_type": "CLIPTextEncode", "inputs": {"text": ["8", 0]}}, + "8": {"class_type": "DisplayText", "inputs": {"text_size": 2048}}, + "3": { + "class_type": "SamplerCustomAdvanced", + "inputs": {"guider": ["4", 0], "sigmas": ["5", 0]}, + }, + "4": {"class_type": "BasicGuider", "inputs": {"conditioning": ["1", 0]}}, + } + self.assertIn( + self._scanned("numbers.png", g), ("ambiguous", "unresolved", "found") + ) + self.assertEqual(self._texts(), []) def test_batch_exposes_pair_counts_and_actual_unchanged_status(self): meta = {"parameters": "cat\nNegative prompt: blur\nSteps: 20, Sampler: Euler"} diff --git a/utils/generation_params.py b/utils/generation_params.py new file mode 100644 index 0000000..e039753 --- /dev/null +++ b/utils/generation_params.py @@ -0,0 +1,943 @@ +"""Generation parameters traced from ComfyUI metadata: the browser parser in Python. + +A port of ``extractGenerationParams`` in ``web/js/comfy-metadata.js``, the parser +behind the gallery, admin and metadata pages. For the same records it returns +what that function returns; ``tests/test_generation_params_js_parity.py`` +enforces it against the JavaScript itself. + +It traces the API ``prompt`` graph from the sampler: the positive and negative +inputs back to their text nodes, the model link back to a loader, and the +sampler settings, following primitives and pass-through nodes. Fields the API +graph cannot give are read from the UI ``workflow`` graph. + +The result depends on JavaScript value semantics, so those are reproduced +explicitly: property order, truthiness, ``String()``, ``trim()``, strict +equality, ``Map``/``Set`` keys, and the inputs on which the JavaScript throws +(raised here as ``GenerationParamsError``). The recursive tracing runs on an +explicit stack, so a crafted graph cannot exhaust the Python stack. +""" + +import json +import math +import re +from types import MappingProxyType + +__all__ = [ + "PLACEHOLDERS", + "GenerationParamsError", + "extract_generation_params", + "extract_from_records", + "parse_js_json", +] + +PLACEHOLDERS = MappingProxyType( + { + "positivePrompt": "No prompt found", + "negativePrompt": "No negative prompt found", + "checkpoint": "Unknown", + "steps": "Unknown", + "cfgScale": "Unknown", + "sampler": "Unknown", + "seed": "Unknown", + } +) + +# Upper bound on nodes expanded per lookup; crafted files can contain any graph. +MAX_VISITS = 500 +MODEL_NAME_KEYS = ("ckpt_name", "unet_name", "model_name", "gguf_name") +SEED_CONTROL_VALUES = frozenset(("fixed", "increment", "decrement", "randomize")) +PASS_THROUGH_TYPES = frozenset(("Reroute", "GetNode", "SetNode")) +MODE_MUTED = 2 +MODE_BYPASSED = 4 +# Widget order for core nodes, used when a workflow carries no widget names. +PROMPT_MANAGER_WIDGETS = ( + "text", + "category", + "tags", + "search_text", + "prepend_text", + "append_text", +) +WIDGET_POSITIONS = { + "KSampler": ("seed", "steps", "cfg", "sampler_name", "scheduler", "denoise"), + "KSamplerAdvanced": ( + "add_noise", + "noise_seed", + "steps", + "cfg", + "sampler_name", + "scheduler", + "start_at_step", + "end_at_step", + "return_with_leftover_noise", + ), + "CLIPTextEncode": ("text",), + "PromptManager": PROMPT_MANAGER_WIDGETS, + "PromptManagerText": PROMPT_MANAGER_WIDGETS, + "PromptManagerFocused": PROMPT_MANAGER_WIDGETS, + "PromptManagerSplit": PROMPT_MANAGER_WIDGETS, + "PromptManagerPair": ( + "text", + "negative_text", + "category", + "tags", + "search_text", + "prepend_text", + "append_text", + ), + "CheckpointLoader": ("config_name", "ckpt_name"), + "UNETLoader": ("unet_name", "weight_dtype"), +} + +# JavaScript regular expressions without the ``u`` flag fold case in ASCII only. +_FLAGS = re.IGNORECASE | re.ASCII +TEXT_KEYS = re.compile(r"(text|string|prompt|value)(_?[a-z0-9]+)?", _FLAGS) +_PROMPT_MANAGER = re.compile(r"promptmanager", _FLAGS) +_KSAMPLER = re.compile(r"ksampler", _FLAGS) +_CHECKPOINT_LOADER = re.compile(r"checkpointloader", _FLAGS) +_UNET = re.compile(r"unet", _FLAGS) +_SEED_NAME = re.compile(r"seed\Z") +_ARRAY_INDEX = re.compile(r"(?:0|[1-9][0-9]*)\Z") +_MAX_ARRAY_INDEX = 2**32 - 2 +_MAX_SAFE_INTEGER = 2**53 +# String.prototype.trim() removes WhiteSpace and LineTerminator code points. +_JS_WHITESPACE = "\t\n\v\f\r          " "    

   " +# Properties every object literal inherits; reading one yields a function or object. +_OBJECT_PROTOTYPE_KEYS = frozenset( + ( + "constructor", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "toLocaleString", + "toString", + "valueOf", + "__proto__", + "__defineGetter__", + "__defineSetter__", + "__lookupGetter__", + "__lookupSetter__", + ) +) + + +class GenerationParamsError(ValueError): + """The browser parser throws on this input, so there is no result.""" + + +class _Undefined: + """JavaScript ``undefined``: a missing property, distinct from JSON ``null``.""" + + __slots__ = () + + def __repr__(self): + return "undefined" + + +UNDEFINED = _Undefined() + + +# --- JavaScript value semantics ------------------------------------------------- + + +def _is_number(value): + return isinstance(value, (int, float)) and not isinstance(value, bool) + + +def _nullish(value): + return value is None or value is UNDEFINED + + +def _truthy(value): + if value is None or value is UNDEFINED or value is False: + return False + if _is_number(value): + return value != 0 and not (isinstance(value, float) and math.isnan(value)) + if isinstance(value, str): + return value != "" + return True + + +def _typeof(value): + if value is UNDEFINED: + return "undefined" + if isinstance(value, bool): + return "boolean" + if _is_number(value): + return "number" + if isinstance(value, str): + return "string" + return "object" + + +def _number_string(value): + """``String(number)`` for a double, per the ECMAScript Number::toString rules.""" + if isinstance(value, int): + return str(value) + if math.isnan(value): + return "NaN" + if math.isinf(value): + return "Infinity" if value > 0 else "-Infinity" + if value == 0: + return "0" + sign = "-" if value < 0 else "" + text = repr(abs(value)) + mantissa, _, exponent = text.partition("e") + whole, _, fraction = mantissa.partition(".") + raw = whole + fraction + leading = len(raw) - len(raw.lstrip("0")) + digits = raw.lstrip("0").rstrip("0") + point = len(whole) - leading + int(exponent or 0) + count = len(digits) + if count <= point <= 21: + body = digits + "0" * (point - count) + elif 0 < point <= 21: + body = digits[:point] + "." + digits[point:] + elif -6 < point <= 0: + body = "0." + "0" * -point + digits + else: + power = point - 1 + mark = ("+" if power >= 0 else "-") + str(abs(power)) + body = (digits if count == 1 else digits[0] + "." + digits[1:]) + "e" + mark + return sign + body + + +def _js_string(value): + """``String(value)`` for any JSON-derived value.""" + if value is UNDEFINED: + return "undefined" + if value is None: + return "null" + if value is True: + return "true" + if value is False: + return "false" + if _is_number(value): + return _number_string(value) + if isinstance(value, str): + return value + if isinstance(value, list): + return ",".join("" if _nullish(item) else _js_string(item) for item in value) + return "[object Object]" + + +def _key(value): + return value if isinstance(value, str) else _js_string(value) + + +def _index(key): + """The array index a property key names, or None.""" + if ( + _is_number(key) + and not isinstance(key, bool) + and float(key).is_integer() + and key >= 0 + ): + number = int(key) + return number if number <= _MAX_ARRAY_INDEX else None + text = _key(key) + if _ARRAY_INDEX.match(text) and int(text) <= _MAX_ARRAY_INDEX: + return int(text) + return None + + +def _get(obj, key): + """Property read ``obj[key]``; reading from null or undefined throws.""" + if obj is None or obj is UNDEFINED: + raise GenerationParamsError(f"cannot read {key!r} of {_js_string(obj)}") + if isinstance(obj, dict): + return obj.get(_key(key), UNDEFINED) + if isinstance(obj, (list, str)): + if key == "length": + return len(obj) + index = _index(key) + return obj[index] if index is not None and index < len(obj) else UNDEFINED + return UNDEFINED + + +def _has(obj, key): + """``key in obj``; throws on primitives.""" + if isinstance(obj, dict): + return _key(key) in obj + if isinstance(obj, list): + index = _index(key) + return key == "length" or (index is not None and index < len(obj)) + raise GenerationParamsError(f"cannot use 'in' on {_typeof(obj)}") + + +def _own(obj, key): + """``Object.prototype.hasOwnProperty.call(obj, key)``.""" + if obj is None or obj is UNDEFINED: + raise GenerationParamsError("hasOwnProperty on null or undefined") + if isinstance(obj, dict): + return _key(key) in obj + if isinstance(obj, (list, str)): + index = _index(key) + return key == "length" or (index is not None and index < len(obj)) + return False + + +def _ordered_keys(obj): + """Own property order: array indexes ascending, then other keys as inserted.""" + indexes = sorted( + (k for k in obj if _ARRAY_INDEX.match(k) and int(k) <= _MAX_ARRAY_INDEX), + key=int, + ) + marked = set(indexes) + return indexes + [k for k in obj if k not in marked] + + +def _entries(obj): + """``Object.entries(obj)``.""" + if obj is None or obj is UNDEFINED: + raise GenerationParamsError("Object.entries of null or undefined") + if isinstance(obj, dict): + return [(k, obj[k]) for k in _ordered_keys(obj)] + if isinstance(obj, (list, str)): + return [(str(i), item) for i, item in enumerate(obj)] + return [] + + +def _values(obj): + """``Object.values(obj)``.""" + return [value for _, value in _entries(obj)] + + +def _strict_equal(left, right): + """``left === right``.""" + if left is UNDEFINED or right is UNDEFINED or left is None or right is None: + return left is right + if isinstance(left, bool) or isinstance(right, bool): + return isinstance(left, bool) and isinstance(right, bool) and left == right + if _is_number(left) and _is_number(right): + return left == right + if isinstance(left, str) and isinstance(right, str): + return left == right + return left is right + + +def _same_value_key(value): + """A hashable key with ``Map``/``Set`` (SameValueZero) equality.""" + if value is UNDEFINED: + return ("undefined", None) + if value is None: + return ("null", None) + if isinstance(value, bool): + return ("boolean", value) + if _is_number(value): + return ( + ("nan", None) + if isinstance(value, float) and math.isnan(value) + else ("number", value) + ) + if isinstance(value, str): + return ("string", value) + return ("object", id(value)) + + +def _trim(text): + return text.strip(_JS_WHITESPACE) + + +def _first_truthy(*values): + """``a || b || ...``: the first truthy operand, else the last.""" + for value in values: + if _truthy(value): + return value + return values[-1] + + +def _and_chain(obj, *steps): + """``a && a[k1] && a[k1][k2] ...``: stops at the first falsy operand.""" + value = obj + for step in steps: + if not _truthy(value): + return value + value = _get(value, step) + return value + + +def _coalesce(value, fallback): + """``value ?? fallback()``; the fallback runs only when needed.""" + return fallback() if _nullish(value) else value + + +def _array(value): + """A value used with an Array method; anything else throws.""" + if isinstance(value, list): + return value + raise GenerationParamsError(f"{_typeof(value)} has no array methods") + + +def _iterate(value): + """``for (const x of value)``: arrays and strings iterate, other values throw.""" + if isinstance(value, (list, str)): + return value + raise GenerationParamsError(f"{_typeof(value)} is not iterable") + + +def _set(obj, key, value): + """``obj[key] = value`` on an object literal (``__proto__`` is not an own key).""" + name = _key(key) + if name == "__proto__" and name not in obj: + return + obj[name] = value + + +def _matches(pattern, value): + """``pattern.test(value || "")``.""" + return pattern.search(_js_string(value if _truthy(value) else "")) is not None + + +def _run(generator): + """Drive generator-based recursion on an explicit stack, not the call stack.""" + stack = [generator] + value = None + while stack: + try: + request = stack[-1].send(value) + except StopIteration as done: + stack.pop() + value = done.value + continue + stack.append(request) + value = None + return value + + +# --- Tracing --------------------------------------------------------------------- + + +def _is_link(value): + return ( + isinstance(value, list) + and len(value) == 2 + and (isinstance(value[0], str) or _is_number(value[0])) + and _is_number(value[1]) + ) + + +def _is_sampler(node): + """A KSampler or a guider (CFGGuider); the model link excludes pass-throughs.""" + if not _truthy(node): + return False + inputs = _get(node, "inputs") + return ( + _truthy(inputs) + and _is_link(_get(inputs, "positive")) + and _is_link(_get(inputs, "negative")) + and _is_link(_get(inputs, "model")) + ) + + +def _is_custom_sampler(node): + """SamplerCustomAdvanced-style nodes split settings across noise/sampler/sigmas.""" + if not _truthy(node): + return False + inputs = _get(node, "inputs") + return ( + _truthy(inputs) + and _is_link(_get(inputs, "guider")) + and _is_link(_get(inputs, "sigmas")) + ) + + +def _workflow_nodes(workflow): + if not _truthy(workflow): + return [] + nodes = _get(workflow, "nodes") + return nodes if isinstance(nodes, list) else [] + + +def _widgets_of(node): + values = _get(node, "widgets_values") + return values if isinstance(values, list) else [] + + +class _Context: + """The graph being traced and recovered PromptManager widget text.""" + + __slots__ = ("graph", "widget_text") + + def __init__(self, graph, widget_text): + self.graph = graph + self.widget_text = widget_text + + +def _create_context(graph, workflow): + """Recover PromptManager text overwritten by the pre-3.2.3 SaveImage patch. + + The signature is two or more PromptManager nodes with identical API text + whose workflow widgets differ; only those get their widget text back. + Otherwise the API graph is what actually ran and always wins. + """ + widgets = {} + for node in _workflow_nodes(workflow): + text = _get(_widgets_of(node), 0) + node_type = _get(node, "type") + if ( + not _strict_equal(node_type, "PromptManagerPair") + and _matches(_PROMPT_MANAGER, node_type) + and isinstance(text, str) + ): + widgets[_js_string(_get(node, "id"))] = text + by_api_text = {} + for node_id in widgets: + api_text = _and_chain(graph, node_id, "inputs", "text") + if isinstance(api_text, str): + by_api_text.setdefault(api_text, []).append(node_id) + widget_text = {} + for ids in by_api_text.values(): + if len(ids) > 1 and len({widgets[node_id] for node_id in ids}) > 1: + for node_id in ids: + widget_text[node_id] = widgets[node_id] + return _Context(graph, widget_text) + + +def _enter(context, link, seen): + """``(node_id, node)`` for a link; None when unresolved or already expanded.""" + if not _is_link(link) or len(seen) >= MAX_VISITS: + return None + node_id = _js_string(link[0]) + node = _get(context.graph, node_id) + key = f"{node_id}:{_js_string(link[1])}" + if not _truthy(node) or not _truthy(_get(node, "inputs")) or key in seen: + return None + seen.add(key) + return node_id, node + + +def _resolve_scalar(context, value, name, seen): + """A scalar input, following a link; an input named like the field wins.""" + if not _is_link(value): + return value + entered = _enter(context, value, seen) + if entered is None: + return UNDEFINED + inputs = _get(entered[1], "inputs") + if _truthy(name) and _own(inputs, name): + return (yield _resolve_scalar(context, _get(inputs, name), name, seen)) + for item in _values(inputs): + resolved = yield _resolve_scalar(context, item, name, seen) + if resolved is not UNDEFINED and _typeof(resolved) != "object": + return resolved + return UNDEFINED + + +def _resolve_linked_input(context, link, keys): + """The first of ``keys`` on the node a link points to, resolving further links.""" + seen = set() + entered = _enter(context, link, seen) + if entered is None: + return UNDEFINED + inputs = _get(entered[1], "inputs") + key = next((k for k in keys if _has(inputs, k)), None) + if key is None: + return UNDEFINED + return (yield _resolve_scalar(context, _get(inputs, key), key, seen)) + + +def _resolve_string(context, value, seen): + """A string input; text-producing nodes may be chained (concat, primitives).""" + if isinstance(value, str): + return value + entered = _enter(context, value, seen) + if entered is None: + return "" + node_id, node = entered + inputs = _get(node, "inputs") + if _strict_equal(_get(node, "class_type"), "PromptManagerPair"): + if _strict_equal(value[1], 3): + return (yield _resolve_string(context, _get(inputs, "negative_text"), seen)) + if _strict_equal(value[1], 2): + return (yield _compose_node_text(context, node_id, node, seen)) + return "" + if _has(inputs, "text"): + return (yield _compose_node_text(context, node_id, node, seen)) + delimiter = _get(inputs, "delimiter") + if not isinstance(delimiter, str): + delimiter = " " + parts = [] + for key, item in _entries(inputs): + if TEXT_KEYS.fullmatch(key): + parts.append((yield _resolve_string(context, item, seen))) + return delimiter.join(part for part in parts if _trim(part)) + + +def _compose_node_text(context, node_id, node, seen): + """An encoder's text, joined like PromptManager: prepend + text + append.""" + inputs = _get(node, "inputs") + if node_id in context.widget_text: + raw = context.widget_text[node_id] + else: + raw = yield _resolve_string(context, _get(inputs, "text"), seen) + text = _trim(raw) + if not text: + return "" + # One shared set even across siblings keeps crafted chains linear. + prepend = _trim( + (yield _resolve_string(context, _get(inputs, "prepend_text"), seen)) + ) + append = _trim((yield _resolve_string(context, _get(inputs, "append_text"), seen))) + # Older saves stored the already-combined prompt in ``text``. + parts = ( + prepend if prepend and not text.startswith(prepend) else "", + text, + append if append and not text.endswith(append) else "", + ) + return " ".join(part for part in parts if part) + + +def _trace_conditioning(context, link, role, seen): + """Follow a conditioning link upstream to the encoder that produced it.""" + entered = _enter(context, link, seen) + if entered is None: + return "" + node_id, node = entered + inputs = _get(node, "inputs") + if _strict_equal(_get(node, "class_type"), "PromptManagerPair"): + if _strict_equal(link[1], 1): + return (yield _resolve_string(context, _get(inputs, "negative_text"), seen)) + if _strict_equal(link[1], 0): + return (yield _compose_node_text(context, node_id, node, seen)) + return "" + if _has(inputs, "text"): + return (yield _compose_node_text(context, node_id, node, seen)) + # Pass-through nodes (ControlNet apply, conditioning combine/set area, ...). + following = _first_truthy( + _get(inputs, role), + _get(inputs, "conditioning"), + _get(inputs, "conditioning_to"), + _get(inputs, "conditioning_1"), + ) + return (yield _trace_conditioning(context, following, role, seen)) + + +def _trace_model_name(context, link, seen): + """Follow the model link upstream (through LoRA loaders etc.) to a loader.""" + entered = _enter(context, link, seen) + if entered is None: + return UNDEFINED + inputs = _get(entered[1], "inputs") + key = next((k for k in MODEL_NAME_KEYS if isinstance(_get(inputs, k), str)), None) + if key is not None: + return _get(inputs, key) + return (yield _trace_model_name(context, _get(inputs, "model"), seen)) + + +def _find_any_model_name(nodes): + for node in nodes: + inputs = _and_chain(node, "inputs") + if not _truthy(inputs): + inputs = {} + key = next( + (k for k in MODEL_NAME_KEYS if isinstance(_get(inputs, k), str)), None + ) + if key is not None: + return _get(inputs, key) + return UNDEFINED + + +def _from_prompt_graph(graph, workflow): + context = _create_context(graph, workflow) + nodes = _values(graph) + custom = next((node for node in nodes if _is_custom_sampler(node)), UNDEFINED) + guider = UNDEFINED + if custom is not UNDEFINED: + entered = _enter(context, _get(_get(custom, "inputs"), "guider"), set()) + guider = entered[1] if entered is not None else UNDEFINED + sampler = ( + guider + if _is_sampler(guider) + else next((n for n in nodes if _is_sampler(n)), UNDEFINED) + ) + + if sampler is UNDEFINED: + loose = next( + ( + n + for n in nodes + if _truthy(n) + and _truthy(_get(n, "inputs")) + and _matches(_KSAMPLER, _get(n, "class_type")) + ), + UNDEFINED, + ) + inputs = _and_chain(loose, "inputs") + if not _truthy(inputs): + inputs = {} + seed = _coalesce(_get(inputs, "seed"), lambda: _get(inputs, "noise_seed")) + return { + "checkpoint": _find_any_model_name(nodes), + "seed": (yield _resolve_scalar(context, seed, "seed", set())), + "steps": ( + yield _resolve_scalar(context, _get(inputs, "steps"), "steps", set()) + ), + "cfgScale": ( + yield _resolve_scalar(context, _get(inputs, "cfg"), "cfg", set()) + ), + "sampler": ( + yield _resolve_scalar( + context, _get(inputs, "sampler_name"), "sampler_name", set() + ) + ), + } + + inputs = _get(sampler, "inputs") + + def from_custom(field, keys): + if custom is UNDEFINED: + return UNDEFINED + return _run( + _resolve_linked_input(context, _get(_get(custom, "inputs"), field), keys) + ) + + result = { + "positivePrompt": ( + yield _trace_conditioning( + context, _get(inputs, "positive"), "positive", set() + ) + ), + "negativePrompt": ( + yield _trace_conditioning( + context, _get(inputs, "negative"), "negative", set() + ) + ), + } + model = yield _trace_model_name(context, _get(inputs, "model"), set()) + result["checkpoint"] = model if _truthy(model) else _find_any_model_name(nodes) + seed_value = _coalesce(_get(inputs, "seed"), lambda: _get(inputs, "noise_seed")) + seed_name = "seed" if _has(inputs, "seed") else "noise_seed" + seed = yield _resolve_scalar(context, seed_value, seed_name, set()) + result["seed"] = _coalesce( + seed, lambda: from_custom("noise", ("noise_seed", "seed")) + ) + steps = yield _resolve_scalar(context, _get(inputs, "steps"), "steps", set()) + result["steps"] = _coalesce(steps, lambda: from_custom("sigmas", ("steps",))) + result["cfgScale"] = yield _resolve_scalar( + context, _get(inputs, "cfg"), "cfg", set() + ) + sampler_name = yield _resolve_scalar( + context, _get(inputs, "sampler_name"), "sampler_name", set() + ) + result["sampler"] = _coalesce( + sampler_name, lambda: from_custom("sampler", ("sampler_name",)) + ) + return result + + +# --- UI workflow graph ------------------------------------------------------------- + + +def _widget_names(node): + inputs = _first_truthy(_get(node, "inputs"), []) + from_inputs = [ + _get(_get(item, "widget"), "name") + for item in _array(inputs) + if _truthy(item) + and _truthy(_get(item, "widget")) + and _truthy(_get(_get(item, "widget"), "name")) + ] + if from_inputs: + return from_inputs + node_type = _get(node, "type") + key = _js_string(node_type) + if key in _OBJECT_PROTOTYPE_KEYS: + raise GenerationParamsError(f"widget positions of {key!r} are not iterable") + if key in WIDGET_POSITIONS: + return list(WIDGET_POSITIONS[key]) + if _matches(_CHECKPOINT_LOADER, node_type): + return ["ckpt_name"] + if _matches(_UNET, node_type): + return ["unet_name"] + return [] + + +def _named_widgets(node): + """Map widget values to input names, skipping control_after_generate.""" + named = _get(node, "widgets_values_named") + if _truthy(named) and isinstance(named, dict): + return dict(named) + values = _widgets_of(node) + out = {} + position = 0 + for name in _iterate(_widget_names(node)): + if position >= len(values): + break + _set(out, name, values[position]) + position += 1 + following = values[position] if position < len(values) else UNDEFINED + if ( + _SEED_NAME.search(_js_string(name)) + and isinstance(following, str) + and following in SEED_CONTROL_VALUES + ): + position += 1 + return out + + +def _workflow_to_graph(workflow): + """Convert a UI workflow ({nodes, links}) into the API graph shape. + + Set/Get pairs, Reroutes and bypassed nodes resolve to their real source; + muted nodes are dropped. + """ + nodes = [ + n + for n in _workflow_nodes(workflow) + if _truthy(n) and not _nullish(_get(n, "id")) + ] + by_id = {} + for node in nodes: + by_id[_js_string(_get(node, "id"))] = node + links = {} + raw_links = _get(workflow, "links") + for link in raw_links if isinstance(raw_links, list) else []: + if isinstance(link, list): + links[_same_value_key(_get(link, 0))] = ( + _get(link, 1), + _get(link, 2), + _get(link, 5), + ) + elif _truthy(link) and _typeof(link) == "object": + links[_same_value_key(_get(link, "id"))] = ( + _get(link, "origin_id"), + _get(link, "origin_slot"), + _get(link, "type"), + ) + setters = {} + for node in nodes: + if _strict_equal(_get(node, "type"), "SetNode"): + setters[_same_value_key(_get(_widgets_of(node), 0))] = _and_chain( + node, "inputs", 0, "link" + ) + + def source(link_id): + hops = 0 + while True: + link = links.get(_same_value_key(link_id)) + node = by_id.get(_js_string(link[0])) if link is not None else None + if ( + node is None + or _strict_equal(_get(node, "mode"), MODE_MUTED) + or hops > MAX_VISITS + ): + return UNDEFINED + hops += 1 + node_type = _get(node, "type") + if _strict_equal(node_type, "Reroute"): + link_id = _and_chain(node, "inputs", 0, "link") + continue + if _strict_equal(node_type, "GetNode"): + link_id = setters.get( + _same_value_key(_get(_widgets_of(node), 0)), UNDEFINED + ) + continue + if _strict_equal(_get(node, "mode"), MODE_BYPASSED): + link_type = link[2] + same = next( + ( + item + for item in _array(_first_truthy(_get(node, "inputs"), [])) + if _truthy(item) + and not _nullish(_get(item, "link")) + and ( + not _truthy(link_type) + or _strict_equal(link_type, "*") + or _strict_equal(_get(item, "type"), link_type) + ) + ), + UNDEFINED, + ) + if same is UNDEFINED: + return UNDEFINED + link_id = _get(same, "link") + continue + return [_js_string(_get(node, "id")), link[1]] + + graph = {} + for node in nodes: + mode = _get(node, "mode") + node_type = _get(node, "type") + if ( + _strict_equal(mode, MODE_MUTED) + or _strict_equal(mode, MODE_BYPASSED) + or (isinstance(node_type, str) and node_type in PASS_THROUGH_TYPES) + ): + continue + inputs = _named_widgets(node) + for item in _iterate(_first_truthy(_get(node, "inputs"), [])): + if not _truthy(item) or _nullish(_get(item, "link")): + continue + found = source(_get(item, "link")) + if _truthy(found): + _set(inputs, _get(item, "name"), found) + _set(graph, _get(node, "id"), {"class_type": node_type, "inputs": inputs}) + return graph + + +# --- Public API ---------------------------------------------------------------------- + + +def _has_value(value): + return not _nullish(value) and not (isinstance(value, str) and value == "") + + +def extract_generation_params(data): + """Prompts, model and sampler settings from parsed ``prompt``/``workflow`` records. + + ``data`` holds the parsed records (``{"prompt": ..., "workflow": ...}``). Each + field falls back to its placeholder when neither graph provides it. + Raises ``GenerationParamsError`` where the browser parser throws. + """ + data = data if _truthy(data) else {} + prompt = _get(data, "prompt") + workflow = _get(data, "workflow") + primary = {} + if _truthy(prompt) and _typeof(prompt) == "object": + primary = _run(_from_prompt_graph(prompt, workflow)) + fallback = {} + if _truthy(workflow): + fallback = _run(_from_prompt_graph(_workflow_to_graph(workflow), None)) + merged = {} + for key, placeholder in PLACEHOLDERS.items(): + value = primary.get(key, UNDEFINED) + if not _has_value(value): + value = fallback.get(key, UNDEFINED) + merged[key] = value if _has_value(value) else placeholder + return merged + + +def _reject_constant(name): + raise ValueError(f"{name} is not JSON") + + +def _double_integer(text): + """Integers parse as doubles in JavaScript; beyond 2**53 they round.""" + value = int(text) + return value if -_MAX_SAFE_INTEGER <= value <= _MAX_SAFE_INTEGER else float(text) + + +def parse_js_json(text): + """``JSON.parse(text)``, or None where it throws (or the text is ``null``).""" + if not isinstance(text, str): + return None + try: + return json.loads( + text, parse_constant=_reject_constant, parse_int=_double_integer + ) + except (ValueError, RecursionError): + return None + + +def extract_from_records(prompt_text, workflow_text): + """``extract_generation_params`` for raw ``prompt``/``workflow`` record text. + + A record that is absent or fails to parse is treated as absent, as the + browser pages do. + """ + data = {} + for key, text in (("prompt", prompt_text), ("workflow", workflow_text)): + if isinstance(text, str): + data[key] = parse_js_json(text) + return extract_generation_params(data)