attachment
attachment
attachment
attachment

From the above image make a slide wise for presentation of cellulitis Contents are Introduction Definition Causes Types and classification Pathophysiology Symptoms, Clinical feature Diagnosis Differential diagnosis give any 4 make a table in realtion with cellulitis Complications 

analyse_media
analyse_media
Reading File
Reading File
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace/

Running Command

mkdir -p /home/daytona/workspace/cellulitis-ppt

Writing File

~/cellulitis-ppt/cellulitis.js

const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Cellulitis";

// ── Color palette ──────────────────────────────────────────────
const DARK_BG   = "0D2B3E"; // deep navy  (title / section slides)
const MID_BG    = "12404F"; // teal-dark
const LIGHT_BG  = "EAF4F4"; // near-white teal tint (content slides)
const ACCENT    = "1FA688"; // teal green
const ACCENT2   = "F4A261"; // warm amber
const WHITE     = "FFFFFF";
const DARK_TXT  = "0D2B3E";
const LIGHT_TXT = "EAF4F4";
const GREY      = "4A6274";

// ── Helper: add a section divider slide ────────────────────────
function sectionSlide(title, subtitle) {
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: DARK_BG } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 2.4, w: "100%", h: 0.06, fill: { color: ACCENT } });
  s.addText(title, {
    x: 0.7, y: 1.6, w: 8.6, h: 1.0,
    fontSize: 38, bold: true, color: WHITE, fontFace: "Calibri", align: "center"
  });
  if (subtitle) {
    s.addText(subtitle, {
      x: 1, y: 2.7, w: 8, h: 0.7,
      fontSize: 18, color: ACCENT, fontFace: "Calibri", align: "center", italic: true
    });
  }
  return s;
}

// ── Helper: content slide with title bar ───────────────────────
function contentSlide(title) {
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: LIGHT_BG } });
  // title bar
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: 0.85, fill: { color: DARK_BG } });
  // accent line
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0.85, w: "100%", h: 0.06, fill: { color: ACCENT } });
  s.addText(title, {
    x: 0.3, y: 0.06, w: 9.4, h: 0.73,
    fontSize: 24, bold: true, color: WHITE, fontFace: "Calibri", valign: "middle", margin: 0
  });
  return s;
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 1 – TITLE
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: DARK_BG } });
  // decorative left stripe
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: "100%", fill: { color: ACCENT } });
  // decorative bottom stripe
  s.addShape(pres.ShapeType.rect, { x: 0, y: 5.1, w: "100%", h: 0.525, fill: { color: MID_BG } });

  s.addText("CELLULITIS", {
    x: 0.5, y: 0.9, w: 9, h: 1.4,
    fontSize: 58, bold: true, color: WHITE, fontFace: "Calibri",
    align: "center", charSpacing: 8
  });
  s.addShape(pres.ShapeType.rect, { x: 2.5, y: 2.45, w: 5, h: 0.07, fill: { color: ACCENT } });
  s.addText("A Comprehensive Clinical Overview", {
    x: 0.5, y: 2.65, w: 9, h: 0.6,
    fontSize: 20, color: ACCENT, fontFace: "Calibri", align: "center", italic: true
  });
  s.addText("Bacterial Skin & Soft Tissue Infection", {
    x: 0.5, y: 3.3, w: 9, h: 0.5,
    fontSize: 15, color: LIGHT_TXT, fontFace: "Calibri", align: "center"
  });
  s.addText("Dermatology  |  Infectious Disease  |  Clinical Medicine", {
    x: 0.3, y: 5.15, w: 9.4, h: 0.45,
    fontSize: 12, color: ACCENT, fontFace: "Calibri", align: "center"
  });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 2 – TABLE OF CONTENTS
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Table of Contents");
  const items = [
    "01  Introduction",
    "02  Definition",
    "03  Causes & Risk Factors",
    "04  Types & Classification",
    "05  Pathophysiology",
    "06  Symptoms",
    "07  Clinical Features",
    "08  Diagnosis",
    "09  Differential Diagnosis",
    "10  Complications",
  ];
  const col1 = items.slice(0, 5);
  const col2 = items.slice(5);
  const bulletOpts = { bullet: { code: "25B8" }, fontSize: 16, color: DARK_TXT, fontFace: "Calibri", breakLine: true };
  s.addText(col1.map((t, i) => ({ text: t, options: { ...bulletOpts, breakLine: i < col1.length - 1 } })),
    { x: 0.6, y: 1.05, w: 4.1, h: 4.0, valign: "top", lineSpacingMultiple: 1.5 });
  s.addText(col2.map((t, i) => ({ text: t, options: { ...bulletOpts, breakLine: i < col2.length - 1 } })),
    { x: 5.0, y: 1.05, w: 4.7, h: 4.0, valign: "top", lineSpacingMultiple: 1.5 });
  // divider
  s.addShape(pres.ShapeType.rect, { x: 4.85, y: 1.0, w: 0.04, h: 4.1, fill: { color: ACCENT } });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 3 – INTRODUCTION
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Introduction");
  // top stat boxes
  const stats = [
    { val: "1.5–3%", lbl: "Global prevalence\n(annually)" },
    { val: "199–455", lbl: "Cases per 100,000\npersons/year" },
    { val: "2.5–5%", lbl: "Indian population\naffected annually" },
  ];
  stats.forEach((st, i) => {
    const bx = 0.5 + i * 3.17;
    s.addShape(pres.ShapeType.roundRect, { x: bx, y: 1.0, w: 2.85, h: 1.1, fill: { color: DARK_BG }, rectRadius: 0.1 });
    s.addText(st.val, { x: bx, y: 1.05, w: 2.85, h: 0.52, fontSize: 22, bold: true, color: ACCENT, align: "center", fontFace: "Calibri", margin: 0 });
    s.addText(st.lbl, { x: bx, y: 1.55, w: 2.85, h: 0.5, fontSize: 11, color: WHITE, align: "center", fontFace: "Calibri", margin: 0 });
  });
  // body text
  s.addText("Cellulitis is an acute bacterial infection affecting the deeper layers of the skin and subcutaneous tissue, typically caused by Streptococci or Staphylococci.", {
    x: 0.5, y: 2.3, w: 9, h: 0.85, fontSize: 15, color: DARK_TXT, fontFace: "Calibri", wrap: true
  });
  // risk factor boxes
  s.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 3.2, w: 4.2, h: 1.6, fill: { color: DARK_BG }, rectRadius: 0.1 });
  s.addText("Group 1 – Skin Barrier Breakdown", { x: 0.55, y: 3.22, w: 4.1, h: 0.4, fontSize: 13, bold: true, color: ACCENT, fontFace: "Calibri", margin: 0 });
  s.addText([
    { text: "• Skin injuries, surgical incisions", options: { breakLine: true } },
    { text: "• IV punctures, toe fissures", options: { breakLine: true } },
    { text: "• Insect/animal bites, skin infections", options: {} }
  ], { x: 0.6, y: 3.62, w: 4.0, h: 1.1, fontSize: 12, color: WHITE, fontFace: "Calibri" });
  s.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 3.2, w: 4.3, h: 1.6, fill: { color: MID_BG }, rectRadius: 0.1 });
  s.addText("Group 2 – Co-morbidities", { x: 5.25, y: 3.22, w: 4.2, h: 0.4, fontSize: 13, bold: true, color: ACCENT2, fontFace: "Calibri", margin: 0 });
  s.addText([
    { text: "• Diabetes mellitus", options: { breakLine: true } },
    { text: "• Venous insufficiency", options: { breakLine: true } },
    { text: "• Peripheral arterial disease", options: { breakLine: true } },
    { text: "• Lymphoedema", options: {} }
  ], { x: 5.3, y: 3.62, w: 4.1, h: 1.1, fontSize: 12, color: WHITE, fontFace: "Calibri" });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 4 – DEFINITION
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Definition");
  // large quote block
  s.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 1.1, w: 9, h: 2.1, fill: { color: DARK_BG }, rectRadius: 0.15 });
  s.addText('"Cellulitis is an acute, non-necrotising bacterial infection of the dermis and subcutaneous tissue characterised by localised redness, swelling, warmth, and tenderness — most commonly caused by beta-haemolytic Streptococci and Staphylococcus aureus."', {
    x: 0.7, y: 1.2, w: 8.6, h: 1.9,
    fontSize: 17, color: WHITE, fontFace: "Calibri", italic: true, align: "center", valign: "middle", wrap: true
  });
  // key points
  const kp = [
    { icon: "🦠", txt: "Caused by: Streptococci / Staphylococci" },
    { icon: "🔬", txt: "Layers involved: Dermis & subcutaneous tissue" },
    { icon: "📍", txt: "Commonly affects: Lower limbs (70% of cases)" },
    { icon: "⚠️", txt: "Requires prompt antibiotic treatment" },
  ];
  kp.forEach((k, i) => {
    const bx = i < 2 ? 0.5 : 5.2;
    const by = 3.4 + (i % 2) * 0.75;
    s.addShape(pres.ShapeType.roundRect, { x: bx, y: by, w: 4.4, h: 0.65, fill: { color: i % 2 === 0 ? ACCENT : MID_BG }, rectRadius: 0.08 });
    s.addText(`${k.icon}  ${k.txt}`, { x: bx + 0.1, y: by + 0.05, w: 4.2, h: 0.55, fontSize: 13, color: WHITE, fontFace: "Calibri", valign: "middle", margin: 0 });
  });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 5 – CAUSES
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Causes");
  // Primary pathogens
  s.addText("Primary Pathogens", { x: 0.5, y: 1.0, w: 9, h: 0.4, fontSize: 16, bold: true, color: DARK_TXT, fontFace: "Calibri" });
  const pathogens = [
    { name: "Group A Streptococcus\n(S. pyogenes)", note: "Most common cause\nof non-purulent cellulitis", color: DARK_BG },
    { name: "Staphylococcus\naureus (incl. MRSA)", note: "Common in purulent\ncellulitis / abscesses", color: MID_BG },
    { name: "H. influenzae\n(children)", note: "Facial cellulitis\nin unvaccinated children", color: "1a5276" },
    { name: "Aeromonas /\nPseudomonas", note: "Water exposure,\nimmunocompromised", color: "145a32" },
  ];
  pathogens.forEach((p, i) => {
    const bx = 0.3 + i * 2.4;
    s.addShape(pres.ShapeType.roundRect, { x: bx, y: 1.5, w: 2.2, h: 1.6, fill: { color: p.color }, rectRadius: 0.12 });
    s.addText(p.name, { x: bx + 0.05, y: 1.55, w: 2.1, h: 0.75, fontSize: 13, bold: true, color: ACCENT, fontFace: "Calibri", align: "center", wrap: true });
    s.addText(p.note, { x: bx + 0.05, y: 2.3, w: 2.1, h: 0.75, fontSize: 11, color: WHITE, fontFace: "Calibri", align: "center", wrap: true });
  });
  // Entry points
  s.addShape(pres.ShapeType.rect, { x: 0, y: 3.25, w: "100%", h: 0.04, fill: { color: ACCENT } });
  s.addText("Routes of Entry", { x: 0.5, y: 3.35, w: 9, h: 0.38, fontSize: 16, bold: true, color: DARK_TXT, fontFace: "Calibri" });
  const routes = ["Skin injuries & lacerations", "Surgical incisions", "IV puncture sites", "Insect / animal bites", "Toe web fissures", "Ulcers & wounds"];
  s.addText(routes.map((r, i) => ({ text: `◆  ${r}`, options: { breakLine: i < routes.length - 1, fontSize: 13, color: DARK_TXT } })),
    { x: 0.5, y: 3.78, w: 9.0, h: 1.5, fontFace: "Calibri", lineSpacingMultiple: 1.5 });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 6 – TYPES & CLASSIFICATION
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Types & Classification");
  const types = [
    { name: "Non-purulent\nCellulitis", desc: "No pus or abscess; most\ncommon type; typically\ncaused by Streptococci.", color: DARK_BG },
    { name: "Purulent\nCellulitis", desc: "Associated with pus,\nabscess or furuncle;\noften MRSA-related.", color: MID_BG },
    { name: "Periorbital\nCellulitis", desc: "Infection anterior to\norbital septum; can\naffect vision if severe.", color: "1a5276" },
    { name: "Orbital\nCellulitis", desc: "Behind orbital septum;\nserious: proptosis,\nophthalmoplegia.", color: "6e2f0a" },
    { name: "Facial /\nBuccal", desc: "Involves cheek; may\nextend to cavernous\nsinus (dangerous).", color: "145a32" },
  ];
  types.forEach((t, i) => {
    const row = Math.floor(i / 3);
    const col = i % 3;
    const bx = 0.35 + col * 3.12;
    const by = 1.05 + row * 2.1;
    const bw = 2.8;
    const bh = 1.9;
    s.addShape(pres.ShapeType.roundRect, { x: bx, y: by, w: bw, h: bh, fill: { color: t.color }, rectRadius: 0.12 });
    s.addShape(pres.ShapeType.rect, { x: bx, y: by, w: bw, h: 0.06, fill: { color: ACCENT } });
    s.addText(t.name, { x: bx + 0.05, y: by + 0.12, w: bw - 0.1, h: 0.65, fontSize: 14, bold: true, color: WHITE, fontFace: "Calibri", align: "center", wrap: true });
    s.addText(t.desc, { x: bx + 0.1, y: by + 0.85, w: bw - 0.2, h: 0.95, fontSize: 12, color: LIGHT_TXT, fontFace: "Calibri", align: "center", wrap: true });
  });
  // 4th and 5th cards – row 2
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 7 – PATHOPHYSIOLOGY
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Pathophysiology");
  const steps = [
    { n: "1", title: "Bacterial Entry", body: "Bacteria (Streptococci / Staphylococci) infiltrate through breaks in skin: injuries, bites, surgical sites." },
    { n: "2", title: "Invasion & Colonisation", body: "Pathogens penetrate deeper layers of dermis and subcutaneous tissue, evading initial defences." },
    { n: "3", title: "Immune Response", body: "WBCs recruited to site; inflammation marked by redness, warmth, and swelling." },
    { n: "4", title: "Toxin & Enzyme Release", body: "Bacteria release enzymes and toxins; immune mediators cause tissue damage and potential pus / abscess formation." },
    { n: "5", title: "Systemic Spread", body: "In severe cases, bacteria disseminate via bloodstream → fever, chills, malaise, septicemia." },
  ];
  steps.forEach((st, i) => {
    const by = 1.0 + i * 0.88;
    // circle
    s.addShape(pres.ShapeType.ellipse, { x: 0.3, y: by + 0.05, w: 0.55, h: 0.55, fill: { color: ACCENT } });
    s.addText(st.n, { x: 0.3, y: by + 0.05, w: 0.55, h: 0.55, fontSize: 16, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri", margin: 0 });
    // connector line (except last)
    if (i < steps.length - 1) {
      s.addShape(pres.ShapeType.rect, { x: 0.545, y: by + 0.6, w: 0.04, h: 0.28, fill: { color: GREY } });
    }
    // text
    s.addText(st.title, { x: 1.05, y: by + 0.04, w: 2.2, h: 0.35, fontSize: 14, bold: true, color: DARK_TXT, fontFace: "Calibri", margin: 0 });
    s.addText(st.body, { x: 3.4, y: by, w: 6.2, h: 0.8, fontSize: 12, color: GREY, fontFace: "Calibri", wrap: true });
    s.addShape(pres.ShapeType.rect, { x: 3.3, y: by + 0.1, w: 0.04, h: 0.6, fill: { color: ACCENT } });
  });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 8 – SYMPTOMS
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Symptoms");
  // two columns: local vs systemic
  s.addShape(pres.ShapeType.roundRect, { x: 0.4, y: 0.95, w: 4.3, h: 4.4, fill: { color: DARK_BG }, rectRadius: 0.12 });
  s.addShape(pres.ShapeType.roundRect, { x: 5.1, y: 0.95, w: 4.4, h: 4.4, fill: { color: MID_BG }, rectRadius: 0.12 });
  s.addText("🔴  Local Symptoms", { x: 0.5, y: 0.98, w: 4.1, h: 0.5, fontSize: 15, bold: true, color: ACCENT, fontFace: "Calibri" });
  const local = ["Erythema (redness)", "Oedema (swelling)", "Warmth / heat", "Tenderness & pain", "Induration (hardening)", "Skin lesions / wounds", "Ulcerations / abscesses", "Vesicles or bullae (blisters)"];
  s.addText(local.map((t, i) => ({ text: `•  ${t}`, options: { breakLine: i < local.length - 1 } })),
    { x: 0.6, y: 1.5, w: 4.0, h: 3.7, fontSize: 13, color: WHITE, fontFace: "Calibri", lineSpacingMultiple: 1.4, valign: "top" });
  s.addText("🌡️  Systemic Symptoms\n(Severe Cases)", { x: 5.2, y: 0.98, w: 4.1, h: 0.6, fontSize: 15, bold: true, color: ACCENT2, fontFace: "Calibri", wrap: true });
  const systemic = ["Fever & chills", "Malaise & fatigue", "Headache", "Nausea & vomiting", "Lymphadenopathy", "Leukocytosis (↑ WBC)", "Bacteremia (blood spread)"];
  s.addText(systemic.map((t, i) => ({ text: `•  ${t}`, options: { breakLine: i < systemic.length - 1 } })),
    { x: 5.25, y: 1.65, w: 4.1, h: 3.55, fontSize: 13, color: WHITE, fontFace: "Calibri", lineSpacingMultiple: 1.4, valign: "top" });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 9 – CLINICAL FEATURES
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Clinical Features");
  // severity bands
  const bands = [
    { label: "MILD", sub: "Localised with minimal systemic symptoms", color: "1a7a4a", w: 2.8 },
    { label: "MODERATE", sub: "Widespread with moderate systemic involvement", color: "d4870a", w: 3.4 },
    { label: "SEVERE", sub: "Extensive, life-threatening systemic complications", color: "922b21", w: 3.5 },
  ];
  let bx = 0.3;
  bands.forEach(b => {
    s.addShape(pres.ShapeType.roundRect, { x: bx, y: 1.0, w: b.w, h: 0.9, fill: { color: b.color }, rectRadius: 0.1 });
    s.addText(b.label, { x: bx + 0.05, y: 1.02, w: b.w - 0.1, h: 0.4, fontSize: 15, bold: true, color: WHITE, fontFace: "Calibri", align: "center" });
    s.addText(b.sub, { x: bx + 0.05, y: 1.42, w: b.w - 0.1, h: 0.44, fontSize: 10, color: WHITE, fontFace: "Calibri", align: "center", wrap: true });
    bx += b.w + 0.15;
  });
  // feature detail
  s.addText("Cardinal Local Signs", { x: 0.4, y: 2.1, w: 5.0, h: 0.38, fontSize: 15, bold: true, color: DARK_TXT, fontFace: "Calibri" });
  const signs = ["Erythema – spreading redness", "Oedema – pitting swelling", "Warmth – localised heat", "Tenderness – painful to palpation", "Induration – skin hardening", "Fistulas / ulcerations in advanced cases"];
  s.addText(signs.map((t, i) => ({ text: `◆  ${t}`, options: { breakLine: i < signs.length - 1, fontSize: 13, color: DARK_TXT } })),
    { x: 0.4, y: 2.55, w: 4.7, h: 2.7, fontFace: "Calibri", lineSpacingMultiple: 1.45, valign: "top" });
  // additional
  s.addShape(pres.ShapeType.roundRect, { x: 5.4, y: 2.1, w: 4.1, h: 3.1, fill: { color: DARK_BG }, rectRadius: 0.12 });
  s.addText("Additional Features", { x: 5.5, y: 2.15, w: 3.9, h: 0.4, fontSize: 14, bold: true, color: ACCENT, fontFace: "Calibri" });
  const add = ["Vesicles / bullae (blister-like)", "Lymphangitis (streaking)", "Lymphadenopathy (enlarged nodes)", "Facial: risk of orbital cellulitis", "Periorbital: potential vision loss"];
  s.addText(add.map((t, i) => ({ text: `•  ${t}`, options: { breakLine: i < add.length - 1, fontSize: 12, color: WHITE } })),
    { x: 5.55, y: 2.6, w: 3.85, h: 2.5, fontFace: "Calibri", lineSpacingMultiple: 1.5, valign: "top" });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 10 – DIAGNOSIS
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Diagnosis");
  // diagnostic criterion box
  s.addShape(pres.ShapeType.roundRect, { x: 0.4, y: 1.0, w: 9.2, h: 0.9, fill: { color: ACCENT }, rectRadius: 0.1 });
  s.addText("Diagnostic Criterion: Fulfillment of ≥ 2 of the following four criteria:", {
    x: 0.5, y: 1.02, w: 9.0, h: 0.35, fontSize: 15, bold: true, color: WHITE, fontFace: "Calibri", align: "center"
  });
  const crit = ["Warmth", "Erythema", "Oedema", "Tenderness"];
  s.addText(crit.map((c, i) => ({ text: `✔ ${c}   `, options: { bold: true, fontSize: 15, color: WHITE } })),
    { x: 1.5, y: 1.38, w: 7.5, h: 0.45, fontFace: "Calibri", align: "center" });
  // three method boxes
  const methods = [
    { title: "Clinical Evaluation", body: "Spreading erythematous inflammation in deep dermis & subcutaneous tissue. Primary diagnostic method.", color: DARK_BG },
    { title: "Blood Cultures", body: "Rule out bacteremia in immunocompromised patients; indicated when fever + leukocytosis present.", color: MID_BG },
    { title: "Tissue Cultures", body: "For immunocompromised patients not responding to empirical treatment; animal bites & penetrating wounds.", color: "1a5276" },
  ];
  methods.forEach((m, i) => {
    const bx = 0.3 + i * 3.22;
    s.addShape(pres.ShapeType.roundRect, { x: bx, y: 2.1, w: 3.0, h: 2.9, fill: { color: m.color }, rectRadius: 0.12 });
    s.addShape(pres.ShapeType.rect, { x: bx, y: 2.1, w: 3.0, h: 0.06, fill: { color: ACCENT } });
    s.addText(m.title, { x: bx + 0.1, y: 2.18, w: 2.8, h: 0.5, fontSize: 14, bold: true, color: WHITE, fontFace: "Calibri", align: "center" });
    s.addText(m.body, { x: bx + 0.12, y: 2.75, w: 2.76, h: 2.15, fontSize: 12, color: LIGHT_TXT, fontFace: "Calibri", wrap: true, valign: "top" });
  });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 11 – DIFFERENTIAL DIAGNOSIS (TABLE)
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Differential Diagnosis");
  s.addText("Comparison of Cellulitis with 4 Key Differentials", {
    x: 0.4, y: 0.9, w: 9.2, h: 0.38, fontSize: 14, bold: true, color: GREY, fontFace: "Calibri"
  });
  const headers = ["Condition", "Similarities to Cellulitis", "Distinguishing Features", "Key Differentiator"];
  const rows = [
    ["Erysipelas", "Erythema, warmth, oedema, fever", "Well-demarcated raised border; superficial (dermis only); shiny surface; more rapid spread", "Sharply demarcated, raised edge"],
    ["Necrotising Fasciitis", "Red, swollen, painful skin; systemic toxicity", "Severe pain disproportionate to appearance; skin necrosis; crepitus; haemorrhagic bullae; rapid progression", "Pain out of proportion + crepitus"],
    ["Deep Vein Thrombosis (DVT)", "Unilateral leg swelling, redness, warmth", "No fever; no spreading erythema; positive Homan's sign; confirmed by Doppler ultrasound", "Doppler USS confirms clot, no infection"],
    ["Contact Dermatitis", "Erythema, oedema, skin inflammation", "No systemic symptoms; intense pruritus; vesicular rash; history of allergen exposure", "Itch + allergen history, no fever"],
  ];
  // Table
  const colW = [1.8, 2.2, 3.0, 2.55];
  const rowH = 0.72;
  const startX = 0.3;
  const startY = 1.38;
  // header row
  let cx = startX;
  headers.forEach((h, i) => {
    s.addShape(pres.ShapeType.rect, { x: cx, y: startY, w: colW[i], h: 0.5, fill: { color: DARK_BG } });
    s.addText(h, { x: cx + 0.05, y: startY, w: colW[i] - 0.1, h: 0.5, fontSize: 12, bold: true, color: WHITE, fontFace: "Calibri", align: "center", valign: "middle", margin: 0 });
    cx += colW[i];
  });
  // data rows
  rows.forEach((row, ri) => {
    cx = startX;
    const by = startY + 0.5 + ri * rowH;
    const bg = ri % 2 === 0 ? "e8f4f0" : WHITE;
    row.forEach((cell, ci) => {
      s.addShape(pres.ShapeType.rect, { x: cx, y: by, w: colW[ci], h: rowH, fill: { color: ci === 0 ? MID_BG : bg }, line: { color: "ccdddd", width: 0.5 } });
      s.addText(cell, {
        x: cx + 0.05, y: by + 0.04, w: colW[ci] - 0.1, h: rowH - 0.08,
        fontSize: ci === 0 ? 12 : 10.5,
        bold: ci === 0,
        color: ci === 0 ? WHITE : DARK_TXT,
        fontFace: "Calibri",
        wrap: true, valign: "middle"
      });
      cx += colW[ci];
    });
  });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 12 – COMPLICATIONS
// ══════════════════════════════════════════════════════════════
{
  const s = contentSlide("Complications");
  const comps = [
    { icon: "🧫", title: "Abscess Formation", desc: "Localised pus collection within skin / subcutaneous tissue requiring drainage.", color: DARK_BG },
    { icon: "🦴", title: "Necrotising Fasciitis", desc: "Life-threatening deep tissue infection; surgical emergency — debridement required.", color: "7b1a1a" },
    { icon: "🩸", title: "Septicemia / Sepsis", desc: "Bacteria disseminate via bloodstream causing systemic inflammatory response.", color: "5b2c6f" },
    { icon: "💀", title: "Organ Failure", desc: "Uncontrolled sepsis may lead to multi-organ failure; ICU management needed.", color: "1a3a4a" },
    { icon: "🦠", title: "Gangrene", desc: "Tissue death due to ischaemia / infection; may necessitate amputation.", color: "4a1a00" },
    { icon: "👁️", title: "Orbital / Vision Loss", desc: "Facial & periorbital cellulitis may cause orbital cellulitis, cavernous sinus thrombosis, and vision loss.", color: "145a32" },
  ];
  comps.forEach((c, i) => {
    const row = Math.floor(i / 3);
    const col = i % 3;
    const bx = 0.3 + col * 3.23;
    const by = 1.0 + row * 2.15;
    s.addShape(pres.ShapeType.roundRect, { x: bx, y: by, w: 3.0, h: 2.0, fill: { color: c.color }, rectRadius: 0.12 });
    s.addShape(pres.ShapeType.rect, { x: bx, y: by, w: 3.0, h: 0.06, fill: { color: ACCENT } });
    s.addText(c.icon, { x: bx, y: by + 0.1, w: 3.0, h: 0.5, fontSize: 22, align: "center", fontFace: "Calibri", margin: 0 });
    s.addText(c.title, { x: bx + 0.07, y: by + 0.6, w: 2.86, h: 0.45, fontSize: 13, bold: true, color: WHITE, fontFace: "Calibri", align: "center" });
    s.addText(c.desc, { x: bx + 0.1, y: by + 1.1, w: 2.8, h: 0.82, fontSize: 10.5, color: LIGHT_TXT, fontFace: "Calibri", align: "center", wrap: true });
  });
}

// ══════════════════════════════════════════════════════════════
//  SLIDE 13 – CLOSING
// ══════════════════════════════════════════════════════════════
{
  const s = pres.addSlide();
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: DARK_BG } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: "100%", fill: { color: ACCENT } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 2.5, w: "100%", h: 0.06, fill: { color: ACCENT } });
  s.addText("Thank You", { x: 0.5, y: 0.7, w: 9, h: 1.2, fontSize: 52, bold: true, color: WHITE, fontFace: "Calibri", align: "center" });
  s.addText("Key Takeaway:", { x: 1.5, y: 2.75, w: 7, h: 0.45, fontSize: 17, bold: true, color: ACCENT, fontFace: "Calibri", align: "center" });
  s.addText("Early diagnosis and prompt antibiotic therapy are the cornerstones of\nmanaging cellulitis and preventing life-threatening complications.", {
    x: 1.2, y: 3.25, w: 7.6, h: 1.0,
    fontSize: 15, color: WHITE, fontFace: "Calibri", align: "center", wrap: true
  });
  s.addText("Contents: Introduction • Definition • Causes • Types • Pathophysiology • Symptoms • Clinical Features • Diagnosis • Differential Diagnosis • Complications", {
    x: 0.3, y: 4.55, w: 9.4, h: 0.6,
    fontSize: 10, color: GREY, fontFace: "Calibri", align: "center", wrap: true
  });
}

// ══════════════════════════════════════════════════════════════
//  SAVE
// ══════════════════════════════════════════════════════════════
pres.writeFile({ fileName: "/home/daytona/workspace/cellulitis-ppt/Cellulitis_Presentation.pptx" })
  .then(() => console.log("✅ Saved: /home/daytona/workspace/cellulitis-ppt/Cellulitis_Presentation.pptx"))
  .catch(e => { console.error("❌ Error:", e); process.exit(1); });
Running Command

cd /home/daytona/workspace/cellulitis-ppt && node cellulitis.js 2>&1

Your presentation is ready! Here is a summary of all 13 slides:

Cellulitis Presentation - 13 Slides

Design: Deep navy + teal-green color palette with amber accents, dark title bars, and styled cards/boxes throughout.
SlideContent
1Title Slide - "CELLULITIS" with subtitle and specialty labels
2Table of Contents - all 10 topics listed in two columns
3Introduction - 3 stat boxes (global/Indian prevalence) + two risk factor group cards
4Definition - formal definition quote block + 4 key-point cards
5Causes - 4 pathogen cards + routes of entry section
6Types & Classification - 5 cards (Non-purulent, Purulent, Periorbital, Orbital, Facial)
7Pathophysiology - numbered 5-step flow (Entry → Invasion → Immune response → Toxin release → Systemic spread)
8Symptoms - two-column layout: Local vs Systemic
9Clinical Features - severity bands (Mild / Moderate / Severe) + cardinal signs + additional features
10Diagnosis - diagnostic criterion box + 3 method cards (Clinical / Blood culture / Tissue culture)
11Differential Diagnosis - full table comparing 4 conditions (Erysipelas, Necrotising Fasciitis, DVT, Contact Dermatitis) vs Cellulitis
12Complications - 6 complication cards (Abscess, Necrotising Fasciitis, Septicemia, Organ Failure, Gangrene, Orbital/Vision loss)
13Closing Slide - Thank You with key takeaway message

Cellulitis Presentation

Presentation · PPTX

Merge the both urticaria and cellulitis ppt and make one ppt

Browsing Directory

/home/daytona/workspace

Browsing Directory

~/urticaria-ppt

Browsing Directory

~/cellulitis-ppt

Reading File
Reading File
Running Command

python3 -c "import pptx; print('pptx available:', pptx.__version__)"

Running Command

node -e "const p = require('pptxgenjs'); console.log('pptxgenjs ok');"

Running Command

ls /home/daytona/skills/pptx/scripts/office/ && ls /home/daytona/skills/pptx/scripts/

Running Command

cd /home/daytona/workspace && mkdir -p merged-ppt && \ python3 /home/daytona/skills/pptx/scripts/office/unpack.py cellulitis-ppt/Cellulitis_Presentation.pptx merged-ppt/unpacked_cellulitis/ 2>&1 | tail -5 && \ python3 /home/daytona/skills/pptx/scripts/office/unpack.py urticaria-ppt/Urticaria_Presentation.pptx merged-ppt/unpacked_urticaria/ 2>&1 | tail -5

Running Command

cd /home/daytona/workspace && mkdir -p merged-ppt/unpacked_c merged-ppt/unpacked_u && \ unzip -q cellulitis-ppt/Cellulitis_Presentation.pptx -d merged-ppt/unpacked_c && \ unzip -q urticaria-ppt/Urticaria_Presentation.pptx -d merged-ppt/unpacked_u && \ echo "Both unpacked OK"

Running Command

ls -lh /home/daytona/workspace/cellulitis-ppt/Cellulitis_Presentation.pptx /home/daytona/workspace/urticaria-ppt/Urticaria_Presentation.pptx

Running Command

python3 << 'EOF' import zipfile, os os.makedirs("/home/daytona/workspace/merged-ppt/unpacked_c", exist_ok=True) with zipfile.ZipFile("/home/daytona/workspace/cellulitis-ppt/Cellulitis_Presentation.pptx") as z: z.extractall("/home/daytona/workspace/merged-ppt/unpacked_c") print("cellulitis extracted") EOF

Reading File
Reading File
Reading File
Reading File
Reading File
Running Command

# Extract urticaria body (lines 1-654 of urticaria.js, stripping require/pres init/writeFile) # Extract cellulitis body, stripping its require/pres init/writeFile # Combine into one file node << 'NODEOF' const fs = require('fs'); let u = fs.readFileSync('/home/daytona/workspace/urticaria-ppt/urticaria.js', 'utf8'); let c = fs.readFileSync('/home/daytona/workspace/cellulitis-ppt/cellulitis.js', 'utf8'); // Strip urticaria: remove require + pres init + color constants + helpers + writeFile at end // We keep only the SLIDE blocks // Find first slide block in urticaria const uStart = u.indexOf('// ─── SLIDE 1: TITLE SLIDE'); const uEnd = u.lastIndexOf('pres.writeFile'); const uSlides = u.substring(uStart, uEnd).trimEnd(); // Find first slide block in cellulitis (after helpers) const cStart = c.indexOf('// ══════════════════════════════════════════════════════════════\n// SLIDE 1 – TITLE'); const cEnd = c.lastIndexOf('pres.writeFile'); const cSlides = c.substring(cStart, cEnd).trimEnd(); // Extract urticaria color constants and helpers const uColorsStart = u.indexOf('// ─── COLOR PALETTE'); const uHelpersEnd = u.indexOf('// ─── SLIDE 1: TITLE SLIDE'); const uHelpers = u.substring(uColorsStart, uHelpersEnd); // Extract cellulitis color constants and helpers const cColorsStart = c.indexOf('// ── Color palette'); const cHelpersEnd = c.indexOf('// ══════════════════════════════════════════════════════════════\n// SLIDE 1 – TITLE'); const cHelpers = c.substring(cColorsStart, cHelpersEnd); fs.writeFileSync('/tmp/debug.txt', `uStart=${uStart}\nuEnd=${uEnd}\ncStart=${cStart}\ncEnd=${cEnd}\n` + `uHelpersLen=${uHelpers.length}\ncHelpersLen=${cHelpers.length}\n` ); console.log('u slides chars:', uSlides.length, '| c slides chars:', cSlides.length); console.log('Done parsing'); NODEOF

Running Command

node << 'NODEOF' const fs = require('fs'); let u = fs.readFileSync('/home/daytona/workspace/urticaria-ppt/urticaria.js', 'utf8'); let c = fs.readFileSync('/home/daytona/workspace/cellulitis-ppt/cellulitis.js', 'utf8'); // ── Urticaria: colors, helpers, and slides const uColorsStart = u.indexOf('// ─── COLOR PALETTE'); const uEnd = u.lastIndexOf('pres.writeFile'); const uBody = u.substring(uColorsStart, uEnd).trimEnd(); // ── Cellulitis: colors, helpers, and slides // Cellulitis uses variable names like DARK_BG etc that conflict. // We prefix with C_ by renaming inside cBody const cColorsStart = c.indexOf('// ── Color palette'); const cEnd = c.lastIndexOf('pres.writeFile'); let cBody = c.substring(cColorsStart, cEnd).trimEnd(); // Rename cellulitis constants to avoid collision with urticaria (different names already – check) // Urticaria uses: DARK_TEAL, MED_TEAL, LIGHT_TEAL, ACCENT, WHITE, DARK_TEXT, LIGHT_GREY // Cellulitis uses: DARK_BG, MID_BG, LIGHT_BG, ACCENT, ACCENT2, WHITE, DARK_TXT, LIGHT_TXT, GREY // Conflicts: ACCENT (both use it), WHITE (both) // Rename cellulitis ACCENT -> C_ACCENT, ACCENT2 -> C_ACCENT2, WHITE -> C_WHITE (they are same value), // DARK_TXT -> C_DARK_TXT, LIGHT_TXT -> C_LIGHT_TXT, GREY -> C_GREY // Use word boundary replacements const renames = { 'DARK_BG': 'C_DARK_BG', 'MID_BG': 'C_MID_BG', 'LIGHT_BG': 'C_LIGHT_BG', 'ACCENT2': 'C_ACCENT2', 'DARK_TXT': 'C_DARK_TXT', 'LIGHT_TXT': 'C_LIGHT_TXT', }; // Also rename the cellulitis ACCENT -> C_ACCENT and contentSlide/sectionSlide helpers Object.entries(renames).forEach(([from, to]) => { cBody = cBody.split(from).join(to); }); // Rename ACCENT used in cellulitis body (but NOT the word ACCENT2 since we already did it) // We'll rename the standalone ACCENT uses: after the renames, remaining 'ACCENT' in cBody is the cellulitis accent // First rename C_ACCENT2 back to a placeholder to avoid double-rename: cBody = cBody.split('C_ACCENT2').join('__CACCENT2__'); cBody = cBody.split('ACCENT').join('C_ACCENT'); cBody = cBody.split('__CACCENT2__').join('C_ACCENT2'); // Rename WHITE in cellulitis (same hex but avoids confusion) cBody = cBody.split('WHITE').join('C_WHITE'); // Rename helper functions to avoid collision cBody = cBody.split('function sectionSlide').join('function c_sectionSlide'); cBody = cBody.split('function contentSlide').join('function c_contentSlide'); cBody = cBody.split('sectionSlide(').join('c_sectionSlide('); cBody = cBody.split('contentSlide(').join('c_contentSlide('); // Rename GREY -> C_GREY in cellulitis cBody = cBody.split('const C_GREY').join('const C_GREY__SKIP'); // already done if it was just GREY // Actually let's check: cellulitis uses GREY cBody = cBody.split('\nconst GREY').join('\nconst C_GREY'); cBody = cBody.split('"' + 'GREY"').join('"C_GREY"'); // Simple replacement for remaining bare GREY usage cBody = cBody.replace(/\bGREY\b/g, 'C_GREY'); cBody = cBody.split('C_GREY__SKIP').join('C_GREY'); // Build the merged script const merged = `const pptxgen = require("pptxgenjs"); const pres = new pptxgen(); pres.layout = "LAYOUT_16x9"; pres.title = "Urticaria & Cellulitis – Combined Clinical Presentation"; // ════════════════════════════════════════════════════════════ // UNIFIED COVER SLIDE // ════════════════════════════════════════════════════════════ { const s = pres.addSlide(); s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: "0B1F2E" } }); // Left accent stripe s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.2, h: "100%", fill: { color: "1FA688" } }); // Right accent stripe s.addShape(pres.ShapeType.rect, { x: 9.8, y: 0, w: 0.2, h: "100%", fill: { color: "F5A623" } }); // Center divider line s.addShape(pres.ShapeType.rect, { x: 0.2, y: 2.7, w: 9.6, h: 0.06, fill: { color: "1FA688" } }); s.addText("DERMATOLOGY", { x: 0.3, y: 0.4, w: 9.4, h: 0.5, fontSize: 14, color: "1FA688", fontFace: "Calibri", align: "center", charSpacing: 6, bold: true }); s.addText("URTICARIA", { x: 0.3, y: 0.95, w: 4.5, h: 1.3, fontSize: 44, bold: true, color: "FFFFFF", fontFace: "Calibri", align: "center" }); s.addText("&", { x: 4.6, y: 1.15, w: 0.8, h: 0.9, fontSize: 32, bold: true, color: "F5A623", fontFace: "Calibri", align: "center" }); s.addText("CELLULITIS", { x: 5.2, y: 0.95, w: 4.5, h: 1.3, fontSize: 44, bold: true, color: "FFFFFF", fontFace: "Calibri", align: "center" }); s.addText("A Combined Clinical Overview | Skin & Soft Tissue Disorders", { x: 0.3, y: 2.85, w: 9.4, h: 0.55, fontSize: 15, color: "F5A623", fontFace: "Calibri", align: "center", italic: true }); s.addText("Part I: Urticaria (Hives & Wheals) — Immunological Skin Hypersensitivity", { x: 0.3, y: 3.55, w: 9.4, h: 0.45, fontSize: 13, color: "AACFCF", fontFace: "Calibri", align: "center" }); s.addText("Part II: Cellulitis — Acute Bacterial Skin & Soft Tissue Infection", { x: 0.3, y: 4.1, w: 9.4, h: 0.45, fontSize: 13, color: "AACFCF", fontFace: "Calibri", align: "center" }); s.addText("Dermatology | Infectious Disease | Clinical Medicine", { x: 0.3, y: 4.9, w: 9.4, h: 0.45, fontSize: 11, color: "4A6274", fontFace: "Calibri", align: "center" }); } // ════════════════════════════════════════════════════════════ // PART I: URTICARIA SLIDES // ════════════════════════════════════════════════════════════ ${uBody} // ════════════════════════════════════════════════════════════ // PART I → PART II DIVIDER SLIDE // ════════════════════════════════════════════════════════════ { const s = pres.addSlide(); s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: "0B1F2E" } }); s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.2, h: "100%", fill: { color: "1FA688" } }); s.addShape(pres.ShapeType.rect, { x: 0.2, y: 2.55, w: 9.6, h: 0.07, fill: { color: "1FA688" } }); s.addText("PART II", { x: 0.3, y: 0.75, w: 9.4, h: 0.6, fontSize: 18, color: "1FA688", fontFace: "Calibri", align: "center", bold: true, charSpacing: 6 }); s.addText("CELLULITIS", { x: 0.3, y: 1.5, w: 9.4, h: 1.3, fontSize: 52, bold: true, color: "FFFFFF", fontFace: "Calibri", align: "center", charSpacing: 6 }); s.addText("Acute Bacterial Skin & Soft Tissue Infection", { x: 0.3, y: 2.75, w: 9.4, h: 0.55, fontSize: 17, color: "F5A623", fontFace: "Calibri", align: "center", italic: true }); s.addText("Caused by Streptococci & Staphylococci | Dermis & Subcutaneous Tissue", { x: 0.3, y: 3.45, w: 9.4, h: 0.45, fontSize: 13, color: "AACFCF", fontFace: "Calibri", align: "center" }); } // ════════════════════════════════════════════════════════════ // PART II: CELLULITIS SLIDES // ════════════════════════════════════════════════════════════ ${cBody} // ════════════════════════════════════════════════════════════ // UNIFIED CLOSING SLIDE // ════════════════════════════════════════════════════════════ { const s = pres.addSlide(); s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: "100%", h: "100%", fill: { color: "0B1F2E" } }); s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.2, h: "100%", fill: { color: "1FA688" } }); s.addShape(pres.ShapeType.rect, { x: 9.8, y: 0, w: 0.2, h: "100%", fill: { color: "F5A623" } }); s.addShape(pres.ShapeType.rect, { x: 0.2, y: 2.7, w: 9.6, h: 0.06, fill: { color: "1FA688" } }); s.addText("Thank You", { x: 0.3, y: 0.65, w: 9.4, h: 1.2, fontSize: 50, bold: true, color: "FFFFFF", fontFace: "Calibri", align: "center" }); s.addText("Key Takeaways", { x: 1.5, y: 2.85, w: 7, h: 0.45, fontSize: 17, bold: true, color: "1FA688", fontFace: "Calibri", align: "center" }); s.addText("Urticaria: IgE-mediated mast cell degranulation causing wheals; management with antihistamines.", { x: 0.8, y: 3.35, w: 8.4, h: 0.55, fontSize: 13, color: "AACFCF", fontFace: "Calibri", align: "center", wrap: true }); s.addText("Cellulitis: Bacterial invasion of dermis & subcutaneous tissue; prompt antibiotic therapy is key.", { x: 0.8, y: 3.95, w: 8.4, h: 0.55, fontSize: 13, color: "AACFCF", fontFace: "Calibri", align: "center", wrap: true }); s.addText("Dermatology | Infectious Disease | Clinical Medicine", { x: 0.3, y: 4.95, w: 9.4, h: 0.38, fontSize: 11, color: "4A6274", fontFace: "Calibri", align: "center" }); } // ════════════════════════════════════════════════════════════ // SAVE // ════════════════════════════════════════════════════════════ pres.writeFile({ fileName: "/home/daytona/workspace/merged-ppt/Urticaria_and_Cellulitis_Combined.pptx" }) .then(() => console.log("✅ Saved successfully!")) .catch(e => { console.error("❌ Error:", e); process.exit(1); }); `; fs.mkdirSync('/home/daytona/workspace/merged-ppt', { recursive: true }); fs.writeFileSync('/home/daytona/workspace/merged-ppt/merge.js', merged); console.log('merge.js written, length:', merged.length); NODEOF

Running Command

cd /home/daytona/workspace/merged-ppt && node merge.js 2>&1

Running Command

# The issue: c_contentSlide and c_sectionSlide functions are defined AFTER the slide code calls them. # This happens because the urticaria slides (which come first) run first and the cellulitis helpers # are declared later in the file using const/let (not hoisted). # Fix: move the cellulitis helper function declarations to the top of the cellulitis section, # before the slide blocks. node << 'NODEOF' const fs = require('fs'); let src = fs.readFileSync('/home/daytona/workspace/merged-ppt/merge.js', 'utf8'); // The c_contentSlide and c_sectionSlide are defined inside the cellulitis color/helper block. // Find where PART II cellulitis slides start and where the helper functions are. // The functions appear after "PART II: CELLULITIS SLIDES" section header. // Let's find the function definitions and move them before the first slide block. // Extract function c_sectionSlide and c_contentSlide from wherever they are const fnSectionMatch = src.match(/function c_sectionSlide\([\s\S]*?\n\}/); const fnContentMatch = src.match(/function c_contentSlide\([\s\S]*?\n\}/); console.log('sectionSlide found:', !!fnSectionMatch); console.log('contentSlide found:', !!fnContentMatch); // Find the PART II CELLULITIS block start const part2Marker = '// PART II: CELLULITIS SLIDES'; const part2Idx = src.indexOf(part2Marker); // Find where the cellulitis color constants start (after Part II marker) const cColorIdx = src.indexOf('// ── Color palette', part2Idx); // Find where the first cellulitis slide block starts const cFirstSlide = src.indexOf('// ══════════', cColorIdx); console.log('part2Idx:', part2Idx, 'cColorIdx:', cColorIdx, 'cFirstSlide:', cFirstSlide); // Check if functions are defined before or after cFirstSlide const fn1Idx = src.indexOf('function c_sectionSlide'); const fn2Idx = src.indexOf('function c_contentSlide'); console.log('fn1Idx:', fn1Idx, 'fn2Idx:', fn2Idx, 'cFirstSlide:', cFirstSlide); NODEOF

Model call limits exceeded: run limit (20/20)
This is a shared conversation. Sign in to Orris to start your own chat.