← Commit history

Add CAD files for LQM18JNR10J00D (templated from LQM18PN1R0MFRL — same 0603 inductor package)

AravK ·31ca858fb3 ·3mo ago ·parent 11b3534
9 files changed +3542−78
LQM18JNR10J00D-fpview.htmladded+803
@@ -0,0 +1,803 @@+<!DOCTYPE html>+<html lang="en">+<head>+<meta charset="UTF-8">+<meta name="viewport" content="width=device-width, initial-scale=1.0">+<title>LQM18JNR10J00D</title>+<style>+  * { margin: 0; padding: 0; box-sizing: border-box; }+  body {+    background: #0d1117;+    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;+    overflow: hidden;+    height: 100vh;+    display: flex;+    flex-direction: column;+    color: #e6edf3;+  }++  .toolbar {+    display: flex;+    align-items: center;+    gap: 6px;+    padding: 8px 14px;+    background: #161b22;+    border-bottom: 1px solid #21262d;+    flex-shrink: 0;+    font-size: 13px;+  }+  .toolbar .title {+    font-weight: 600;+    color: #00b8b0;+    font-size: 15px;+    letter-spacing: 0.02em;+    overflow: hidden;+    text-overflow: ellipsis;+    white-space: nowrap;+    min-width: 0;+  }+  .toolbar .badge {+    font-size: 10px;+    padding: 2px 6px;+    border-radius: 4px;+    background: rgba(0, 184, 176, 0.12);+    color: #00b8b0;+    border: 1px solid rgba(0, 184, 176, 0.25);+    margin-left: 6px;+  }+  .toolbar .spacer { flex: 1; }+  .toolbar .sep {+    width: 1px;+    height: 22px;+    background: #21262d;+    margin: 0 4px;+    flex-shrink: 0;+  }+  .toolbar .btn-group {+    display: flex;+    align-items: center;+    gap: 2px;+    flex-shrink: 0;+  }+  .toolbar button {+    background: rgba(0, 184, 176, 0.12);+    border: 1px solid rgba(0, 184, 176, 0.25);+    border-radius: 4px;+    padding: 4px 10px;+    cursor: pointer;+    font-size: 12px;+    color: #8b949e;+    transition: all 0.15s;+  }+  .toolbar button:hover { background: rgba(0,184,176,0.18); color: #e6edf3; border-color: rgba(0,184,176,0.4); }+  .toolbar button:active { background: rgba(0,184,176,0.28); }+  .toolbar button.active { background: rgba(0,184,176,0.2); color: #00b8b0; border-color: rgba(0,184,176,0.4); }+  .toolbar .zoom-level {+    font-size: 11px;+    color: #8b949e;+    min-width: 44px;+    text-align: center;+    font-variant-numeric: tabular-nums;+  }++  .canvas-wrap {+    flex: 1;+    overflow: hidden;+    position: relative;+    cursor: grab;+    background-color: #0d1117;+    background-image:+      linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),+      linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);+    background-size: 20px 20px;+  }+  .canvas-wrap.dragging { cursor: grabbing; }+  .canvas-wrap.no-grid { background-image: none; }++  .canvas {+    position: absolute;+    transform-origin: 0 0;+  }+  .canvas svg { display: block; }++  .tooltip {+    display: none;+    position: fixed;+    background: #21262d;+    backdrop-filter: blur(12px);+    color: #e6edf3;+    padding: 10px 14px;+    border-radius: 8px;+    border: 1px solid rgba(0, 184, 176, 0.25);+    font-size: 12px;+    line-height: 1.6;+    pointer-events: none;+    z-index: 100;+    max-width: 280px;+    box-shadow: 0 8px 24px rgba(0,0,0,0.4);+  }+  .tooltip.visible { display: block; }+  .tooltip .tt-pad { font-weight: 700; font-size: 15px; color: #00e6dc; }+  .tooltip .tt-signal { color: #f0c040; font-size: 13px; margin-left: 6px; font-weight: 600; }+  .tooltip .tt-dims {+    display: inline-block;+    margin-top: 4px;+    padding: 2px 8px;+    border-radius: 4px;+    font-size: 11px;+    font-weight: 500;+    background: rgba(200,52,52,0.15);+    color: #C83434;+    border: 1px solid rgba(200,52,52,0.3);+  }+  .tooltip .tt-desc {+    margin-top: 6px;+    padding-top: 6px;+    border-top: 1px solid #21262d;+    color: #8b949e;+    font-size: 11px;+    line-height: 1.5;+  }+  .tooltip.sticky {+    pointer-events: auto;+    user-select: text;+    border-color: #00e6dc;+  }+  .tooltip .tt-hint {+    margin-top: 6px;+    font-size: 9px;+    color: #484f58;+    text-align: center;+  }+  .tooltip .tt-source {+    margin-top: 6px;+    padding-top: 4px;+    border-top: 1px solid #21262d;+    font-size: 9px;+  }+  .tooltip .tt-source-label { color: #8C6BF7; }+  .tooltip .tt-source a { color: #58a6ff; text-decoration: none; }+  .tooltip .tt-source a:hover { text-decoration: underline; }++  .edit-btn {+    position: absolute; top: 10px; right: 10px; z-index: 100;+    display: flex; align-items: center; gap: 6px;+    padding: 5px 10px;+    background: rgba(22,27,34,0.75);+    backdrop-filter: blur(8px);+    border: 1px solid rgba(140,107,247,0.2);+    border-radius: 6px;+    color: #8b949e; font-size: 11px;+    cursor: pointer; text-decoration: none;+    transition: all 0.2s; opacity: 0.7;+  }+  .edit-btn:hover {+    opacity: 1;+    background: rgba(140,107,247,0.12);+    border-color: rgba(140,107,247,0.4);+    color: #C5B3FF;+  }+  .edit-btn svg { width: 12px; height: 12px; }++  /* Regen prompt modal */+  .regen-overlay {+    display: none;+    position: fixed; inset: 0;+    background: rgba(0,0,0,0.6);+    z-index: 2000;+    align-items: center; justify-content: center;+  }+  .regen-overlay.visible { display: flex; }+  .regen-modal {+    background: #161b22;+    border: 1px solid #21262d;+    border-radius: 10px;+    padding: 20px 24px;+    max-width: 520px;+    width: 90%;+    box-shadow: 0 12px 40px rgba(0,0,0,0.5);+  }+  .regen-modal h3 {+    margin: 0 0 12px;+    font-size: 14px;+    font-weight: 600;+    color: #00b8b0;+  }+  .regen-modal .prompt-text {+    background: undefined;+    border: 1px solid #21262d;+    border-radius: 6px;+    padding: 12px 14px;+    font-size: 13px;+    line-height: 1.5;+    color: undefined;+    white-space: pre-wrap;+    word-break: break-word;+    user-select: all;+  }+  .regen-modal .modal-footer {+    display: flex;+    align-items: center;+    justify-content: space-between;+    margin-top: 14px;+  }+  .regen-modal .copy-status {+    font-size: 11px;+    color: #484f58;+  }+  .regen-modal .copy-status.copied { color: #00b8b0; }+  .regen-modal .modal-btns { display: flex; gap: 8px; }+  .regen-modal .modal-btns button {+    padding: 6px 14px;+    border-radius: 6px;+    border: 1px solid #21262d;+    background: #161b22;+    color: #8b949e;+    font-size: 12px;+    cursor: pointer;+  }+  .regen-modal .modal-btns button:hover { background: rgba(255,255,255,0.06); }+  .regen-modal .modal-btns .copy-btn {+    background: rgba(0,184,176,0.12);+    border-color: rgba(0,184,176,0.3);+    color: #00b8b0;+  }+  .regen-modal .modal-btns .copy-btn:hover { background: rgba(0,184,176,0.22); }++  /* Pad highlight */+  .pad-highlight {+    stroke: #00b8b0 !important;+    stroke-width: 0.15 !important;+    fill-opacity: 0.6 !important;+  }++  .bottom-panel {+    background: #161b22;+    border-top: 1px solid #21262d;+    flex-shrink: 0;+  }+  .info-row {+    display: flex;+    align-items: baseline;+    flex-wrap: wrap;+    gap: 1px 0;+    padding: 5px 8px;+    font-size: 10px;+  }+  .info-item {+    display: inline-flex;+    align-items: baseline;+    gap: 5px;+    padding: 1px 0;+    margin-right: 8px;+  }+  .info-item::after {+    content: '';+    display: inline-block;+    width: 1px;+    height: 10px;+    background: #21262d;+    margin-left: 8px;+    vertical-align: middle;+  }+  .info-item:last-child::after { display: none; }+  .info-item:last-child { margin-right: 0; }+  .info-label {+    color: #484f58;+    text-transform: uppercase;+    letter-spacing: 0.04em;+    font-size: 9px;+  }+  .info-value { color: #8b949e; }+  .info-value a { color: #00b8b0; text-decoration: none; }+  .info-value a:hover { text-decoration: underline; }+  .info-divider {+    height: 1px;+    background: #21262d;+    margin: 0 8px;+  }+  .coord-row {+    display: flex;+    align-items: center;+    justify-content: space-between;+    padding: 4px 8px;+    font-size: 10px;+    color: #8b949e;+    font-variant-numeric: tabular-nums;+  }+</style>+</head>+<body>++<div class="toolbar">+  <span class="title">LQM18JNR10J00D</span>+  <span class="badge">Footprint</span>+  <span class="badge" style="background:rgba(248,81,73,0.15);color:#f85149;border-color:rgba(248,81,73,0.3);">Local Render</span>+  <div class="spacer"></div>+  <div class="btn-group">+    <button onclick="zoomOut()">&#x2212;</button>+    <span class="zoom-level" id="zoom-level">100%</span>+    <button onclick="zoomIn()">&#x2b;</button>+  </div>+  <div class="sep"></div>+  <button onclick="zoomFit()">Fit</button>+  <button onclick="zoomReset()">1:1</button>+  <button onclick="toggleGrid()" id="grid-btn" class="active">Grid</button>+  <button onclick="toggleSolder()" id="solder-btn" class="active" title="250µm solder jet blobs for Adom InstaPCB paste jetting. Adom uses this placement data for its jetting sequence. Blob count, position, and size (250–600µm) are adjustable. Placement accuracy: ±50µm.">Solder</button>+  <button onclick="toggleLabels()" id="labels-btn">Labels</button>+  <div class="sep"></div>+  <button onclick="showRegenPrompt()" id="regen-btn" title="Show regeneration prompt to paste into Claude Code">Regen</button>+</div>++<div class="regen-overlay" id="regen-overlay" onclick="if(event.target===this)closeRegenPrompt()">+  <div class="regen-modal">+    <h3>Regeneration Prompt</h3>+    <div class="prompt-text" id="regen-prompt-text"></div>+    <div class="modal-footer">+      <span class="copy-status" id="regen-copy-status">Copied to clipboard</span>+      <div class="modal-btns">+        <button onclick="closeRegenPrompt()">Close</button>+        <button class="copy-btn" onclick="copyRegenText()">Copy</button>+      </div>+    </div>+  </div>+</div>++<div class="canvas-wrap" id="canvas-wrap">+  <div class="canvas" id="canvas">+    <svg xmlns="http://www.w3.org/2000/svg" viewBox="-2.5 -1.75 5.0 3.5">+<rect x="-2.5" y="-1.75" width="5.0" height="3.5" fill="#0d1117"/>+<rect x="-1.5" y="-0.75" width="3.0" height="1.5" fill="none" stroke="#FF26E2" stroke-width="0.05" stroke-dasharray="0.2,0.1"/>+<rect x="-0.8" y="-0.4" width="1.6" height="0.8" fill="none" stroke="#6e7681" stroke-width="0.1"/>+<rect x="-0.92" y="-0.52" width="1.84" height="1.04" fill="none" stroke="#00cccc" stroke-width="0.12"/>+<line x1="-1.1" y1="-0.7" x2="-0.5" y2="-0.7" stroke="#00cccc" stroke-width="0.12"/>+<rect x="-1.25" y="-0.5" width="0.9" height="1.0" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/>+<text x="-0.8" y="0.0" text-anchor="middle" dominant-baseline="central" font-size="0.405" fill="#fff" font-family="sans-serif">1</text>+<rect x="0.35000000000000003" y="-0.5" width="0.9" height="1.0" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/>+<text x="0.8" y="0.0" text-anchor="middle" dominant-baseline="central" font-size="0.405" fill="#fff" font-family="sans-serif">2</text>+<text x="2.2" y="1.45" text-anchor="end" font-size="0.250" fill="#484f58" font-family="sans-serif" font-style="italic">Local render — KiCad service unavailable</text>+</svg>+  </div>+  <a class="edit-btn" href="https://coder.john-service-wiki-a054078430ce38e4.containers.adom.inc/proxy/8785/wiki/components/lqm18jnr10j00d/edit?field=content" target="_blank" title="Suggest corrections on Adom Wiki">+    <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">+      <path d="M11.5 1.5l3 3L5 14H2v-3L11.5 1.5z"/>+      <path d="M9.5 3.5l3 3"/>+    </svg>+    Suggest edit+  </a>+</div>++<div class="tooltip" id="tooltip"></div>++<div class="bottom-panel">+  <div class="info-row">+    +    +    <div class="info-item"><span class="info-label">Desc</span><span class="info-value">Murata · Chip Coil (Chip Inductor) · Consumer & Industrial Equipment</span></div><div class="info-item"><span class="info-label">Pads</span><span class="info-value">2</span></div><div class="info-item"><span class="info-label">Body</span><span class="info-value">1.6 &times; 0.8 mm</span></div><div class="info-item"><span class="info-label">Courtyard</span><span class="info-value">3.0 &times; 1.5 mm</span></div>+  </div>+  <div class="info-divider"></div>+  <div class="coord-row">+    <span id="cursor-pos">X: 0.00 &nbsp; Y: 0.00 mm</span>+  </div>+</div>++<script>+  const pads = [{"number": "1", "signal": "", "x": -0.8, "y": 0.0, "width": 0.9, "height": 1.0, "shape": "roundrect", "mountType": "smd", "rotation": 0, "desc": ""}, {"number": "2", "signal": "", "x": 0.8, "y": 0.0, "width": 0.9, "height": 1.0, "shape": "roundrect", "mountType": "smd", "rotation": 0, "desc": ""}];+  const svgW = 5.0;+  const svgH = 3.5;+  const svgVbX = -2.5;+  const svgVbY = -1.75;+  const offsetX = 2.5;+  const offsetY = 1.75;+  const datasheetUrl = "";+  const _partName = "";+  const _fpName = "LQM18JNR10J00D";+  const _kicadModPath = "/home/adom/project/project-content/schematics/footprints/LQM18JNR10J00D/LQM18JNR10J00D.kicad_mod";++  const wrap = document.getElementById('canvas-wrap');+  const canvas = document.getElementById('canvas');+  const tooltip = document.getElementById('tooltip');+  const zoomLabel = document.getElementById('zoom-level');+  const cursorPos = document.getElementById('cursor-pos');++  let scale = 1, panX = 0, panY = 0;+  let isDragging = false;+  let dragStartX, dragStartY, panStartX, panStartY;+  let gridVisible = true;++  const MM_TO_PX = 3.78;+  const svgPxW = svgW * MM_TO_PX;+  const svgPxH = svgH * MM_TO_PX;++  const svgEl = canvas.querySelector('svg');+  if (svgEl) {+    svgEl.setAttribute('width', svgPxW + 'px');+    svgEl.setAttribute('height', svgPxH + 'px');+  }++  function updateTransform() {+    canvas.style.transform = 'translate(' + panX + 'px,' + panY + 'px) scale(' + scale + ')';+    zoomLabel.textContent = Math.round(scale * 100) + '%';+  }++  function zoomFit() {+    const ww = wrap.clientWidth, wh = wrap.clientHeight;+    if (ww === 0 || wh === 0) return; // iframe not laid out yet — ResizeObserver will retry+    const margin = 24;+    // Use getBBox() to fit to visible content only (excludes hidden labels)+    let fitW = svgPxW, fitH = svgPxH, fitX = 0, fitY = 0;+    if (svgEl) {+      try {+        const bb = svgEl.getBBox();+        if (bb.width > 0 && bb.height > 0) {+          fitW = bb.width * MM_TO_PX;+          fitH = bb.height * MM_TO_PX;+          fitX = (bb.x - svgVbX) * MM_TO_PX;+          fitY = (bb.y - svgVbY) * MM_TO_PX;+        }+      } catch {}+    }+    scale = Math.min((ww - margin * 2) / fitW, (wh - margin * 2) / fitH, 100);+    panX = (ww - fitW * scale) / 2 - fitX * scale;+    panY = (wh - fitH * scale) / 2 - fitY * scale;+    updateTransform();+  }++  function zoomReset() {+    scale = 1;+    panX = (wrap.clientWidth - svgPxW) / 2;+    panY = (wrap.clientHeight - svgPxH) / 2;+    updateTransform();+  }++  function zoomIn() { zoomAt(wrap.clientWidth / 2, wrap.clientHeight / 2, 1.25); }+  function zoomOut() { zoomAt(wrap.clientWidth / 2, wrap.clientHeight / 2, 0.8); }++  function zoomAt(cx, cy, factor) {+    const ns = Math.max(0.1, Math.min(scale * factor, 40));+    const r = ns / scale;+    panX = cx - (cx - panX) * r;+    panY = cy - (cy - panY) * r;+    scale = ns;+    updateTransform();+  }++  function toggleGrid() {+    gridVisible = !gridVisible;+    wrap.classList.toggle('no-grid', !gridVisible);+    document.getElementById('grid-btn').classList.toggle('active', gridVisible);+  }++  // ── Solder blob jetting layer ──+  let solderVisible = true;+  let solderGroup = null;++  function setupSolderBlobs() {+    if (!svgEl) return;++    solderGroup = document.createElementNS('http://www.w3.org/2000/svg', 'g');+    solderGroup.setAttribute('id', 'solder-layer');+    solderGroup.style.display = '';+    solderGroup.style.pointerEvents = 'none';++    const BLOB_RADIUS = 0.125;   // 250µm diameter / 2+    const BLOB_SPACING = 0.25;   // center-to-center (blobs touching — fills the pad)++    pads.forEach(pad => {+      if (pad.mountType !== 'smd') return;++      const cx = pad.x + offsetX;+      const cy = pad.y + offsetY;+      const rot = (pad.rotation || 0) * Math.PI / 180;++      // Each axis computed independently: if pad is wide enough, grid; otherwise single centered blob+      const inset = BLOB_RADIUS;  // blob edges align with pad edges — no overhang+      const availW = pad.width - 2 * inset;+      const availH = pad.height - 2 * inset;++      // At minimum 1 blob per axis — even narrow pads get a centered row/column+      const nCols = availW > 0 ? Math.max(1, Math.floor(availW / BLOB_SPACING) + 1) : 1;+      const nRows = availH > 0 ? Math.max(1, Math.floor(availH / BLOB_SPACING) + 1) : 1;+      const spanW = availW > 0 ? availW : 0;+      const spanH = availH > 0 ? availH : 0;+      const stepX = nCols > 1 ? spanW / (nCols - 1) : 0;+      const stepY = nRows > 1 ? spanH / (nRows - 1) : 0;+      const startX = -spanW / 2;+      const startY = -spanH / 2;+      const cosR = Math.cos(rot);+      const sinR = Math.sin(rot);++      for (let row = 0; row < nRows; row++) {+        for (let col = 0; col < nCols; col++) {+          const lx = startX + col * stepX;+          const ly = startY + row * stepY;+          const rx = lx * cosR - ly * sinR;+          const ry = lx * sinR + ly * cosR;++          const circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');+          circle.setAttribute('cx', (cx + rx).toFixed(4));+          circle.setAttribute('cy', (cy + ry).toFixed(4));+          circle.setAttribute('r', BLOB_RADIUS.toFixed(4));+          circle.setAttribute('fill', '#D4AA70');+          circle.setAttribute('fill-opacity', '0.75');+          circle.setAttribute('stroke', '#B8860B');+          circle.setAttribute('stroke-width', '0.015');+          solderGroup.appendChild(circle);+        }+      }+    });++    svgEl.appendChild(solderGroup);+  }++  function toggleSolder() {+    solderVisible = !solderVisible;+    if (solderGroup) solderGroup.style.display = solderVisible ? '' : 'none';+    document.getElementById('solder-btn').classList.toggle('active', solderVisible);+  }++  // ── Label visibility toggle ──+  let labelsVisible = false;+  let labelGroups = [];++  function setupLabelToggle() {+    if (!svgEl) return;+    // KiCad SVGs render labels as <g> containing <text> + <g class="stroked-text">+    // Find all <text> elements and collect their parent <g> groups+    svgEl.querySelectorAll('text').forEach(txt => {+      const parent = txt.parentElement;+      if (parent && parent.tagName === 'g' && !labelGroups.includes(parent)) {+        labelGroups.push(parent);+        parent.style.display = 'none';  // hidden by default+      }+    });+  }++  function toggleLabels() {+    labelsVisible = !labelsVisible;+    labelGroups.forEach(g => g.style.display = labelsVisible ? '' : 'none');+    document.getElementById('labels-btn').classList.toggle('active', labelsVisible);+  }++  // ── Regen prompt modal ──+  let _regenPrompt = '';+  function buildRegenPrompt() {+    const name = _partName || _fpName;+    const folder = _kicadModPath.replace(/\/[^/]+$/, '');+    return 'Regenerate the FpView for ' + name + '.\n\n'+      + 'Footprint: ' + _kicadModPath + '\n'+      + 'Metadata: ' + folder + '/\n\n'+      + 'Re-export the SVG via the KiCad service, regenerate the FpView HTML at the same path, '+      + 'and re-display it.';+  }+  function showRegenPrompt() {+    _regenPrompt = buildRegenPrompt();+    document.getElementById('regen-prompt-text').textContent = _regenPrompt;+    document.getElementById('regen-overlay').classList.add('visible');+    const status = document.getElementById('regen-copy-status');+    navigator.clipboard.writeText(_regenPrompt).then(() => {+      status.textContent = 'Copied to clipboard';+      status.classList.add('copied');+    }).catch(() => {+      status.textContent = 'Click Copy to copy';+      status.classList.remove('copied');+    });+  }+  function closeRegenPrompt() {+    document.getElementById('regen-overlay').classList.remove('visible');+  }+  function copyRegenText() {+    navigator.clipboard.writeText(_regenPrompt).then(() => {+      const status = document.getElementById('regen-copy-status');+      status.textContent = 'Copied to clipboard';+      status.classList.add('copied');+    });+  }++  wrap.addEventListener('wheel', (e) => {+    e.preventDefault();+    const r = wrap.getBoundingClientRect();+    zoomAt(e.clientX - r.left, e.clientY - r.top, e.deltaY < 0 ? 1.12 : 0.89);+  }, { passive: false });++  wrap.addEventListener('mousedown', (e) => {+    if (e.button !== 0) return;+    isDragging = true;+    dragStartX = e.clientX; dragStartY = e.clientY;+    panStartX = panX; panStartY = panY;+    wrap.classList.add('dragging');+  });+  window.addEventListener('mousemove', (e) => {+    const r = wrap.getBoundingClientRect();+    // Convert screen coords to kicad_mod coords+    const svgX = (e.clientX - r.left - panX) / scale / MM_TO_PX;+    const svgY = (e.clientY - r.top - panY) / scale / MM_TO_PX;+    const kicadX = svgX - offsetX;+    const kicadY = svgY - offsetY;+    cursorPos.innerHTML = 'X: ' + kicadX.toFixed(2) + ' &nbsp; Y: ' + kicadY.toFixed(2) + ' mm';+    if (!isDragging) return;+    panX = panStartX + (e.clientX - dragStartX);+    panY = panStartY + (e.clientY - dragStartY);+    updateTransform();+  });+  window.addEventListener('mouseup', () => { isDragging = false; wrap.classList.remove('dragging'); });++  // ── Pad hit zones ──+  let highlightedRects = [];+  let stickyPad = null;++  function setupPadHitZones() {+    if (!svgEl) return;+    pads.forEach(pad => {+      const cx = pad.x + offsetX;+      const cy = pad.y + offsetY;+      const rx = cx - pad.width / 2;+      const ry = cy - pad.height / 2;++      const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');+      rect.setAttribute('x', rx);+      rect.setAttribute('y', ry);+      rect.setAttribute('width', pad.width);+      rect.setAttribute('height', pad.height);+      rect.setAttribute('fill', 'transparent');+      rect.setAttribute('stroke', 'none');+      rect.setAttribute('data-pad', pad.number);+      rect.style.cursor = 'pointer';+      rect.style.pointerEvents = 'all';+      svgEl.appendChild(rect);++      rect.addEventListener('mouseenter', (ev) => showPadTooltip(ev.clientX, ev.clientY, pad, rect));+      rect.addEventListener('mousemove', (ev) => showPadTooltip(ev.clientX, ev.clientY, pad, rect));+      rect.addEventListener('mouseleave', () => hidePadTooltip(rect));+      rect.addEventListener('click', (ev) => { ev.stopPropagation(); handlePadClick(pad, rect); });+    });+  }++  function buildTooltipHtml(pad) {+    let html = '<div><span class="tt-pad">Pad ' + pad.number + '</span>';+    if (pad.signal) html += '<span class="tt-signal">' + pad.signal + '</span>';+    html += '</div>';+    html += '<div><span class="tt-dims">' + pad.width.toFixed(3) + ' × ' + pad.height.toFixed(3) + ' mm · ' + pad.shape + ' · ' + pad.mountType + '</span></div>';+    if (pad.desc) {+      html += '<div class="tt-desc">' + pad.desc + '</div>';+    }+    if (datasheetUrl) {+      html += '<div class="tt-source"><span class="tt-source-label">Source:</span> <a href="' + datasheetUrl + '" target="_blank">Datasheet</a></div>';+    }+    html += '<div class="tt-hint">click to pin · select text</div>';+    return html;+  }++  function positionTooltip(x, y) {+    // Render first to measure+    tooltip.style.left = '0px';+    tooltip.style.top = '0px';+    const ttRect = tooltip.getBoundingClientRect();+    const ttW = ttRect.width, ttH = ttRect.height;+    const pad = 14;+    let tx = x + 14, ty = y + 14;+    if (tx + ttW > window.innerWidth - pad) tx = x - ttW - 14;+    if (ty + ttH > window.innerHeight - pad) ty = y - ttH - 14;+    tx = Math.max(pad, Math.min(tx, window.innerWidth - ttW - pad));+    ty = Math.max(pad, Math.min(ty, window.innerHeight - ttH - pad));+    tooltip.style.left = tx + 'px';+    tooltip.style.top = ty + 'px';+  }++  function showPadTooltip(x, y, pad, rect) {+    if (stickyPad !== null) return; // suppress hover while sticky++    clearHighlight();+    rect.setAttribute('stroke', '#00b8b1');+    rect.setAttribute('stroke-width', '0.12');+    rect.setAttribute('fill', 'rgba(0,184,177,0.2)');+    highlightedRects.push(rect);++    tooltip.innerHTML = buildTooltipHtml(pad);+    tooltip.classList.add('visible');+    tooltip.classList.remove('sticky');+    positionTooltip(x, y);+  }++  function hidePadTooltip(rect) {+    if (stickyPad !== null) return; // don't hide while sticky+    tooltip.classList.remove('visible');+    clearHighlight();+  }++  function handlePadClick(pad, rect) {+    if (stickyPad === pad.number) {+      // Unpin+      stickyPad = null;+      tooltip.classList.remove('sticky', 'visible');+      clearHighlight();+    } else {+      // Pin this pad+      stickyPad = pad.number;+      clearHighlight();+      rect.setAttribute('stroke', '#00b8b1');+      rect.setAttribute('stroke-width', '0.12');+      rect.setAttribute('fill', 'rgba(0,184,177,0.2)');+      highlightedRects.push(rect);+      tooltip.innerHTML = buildTooltipHtml(pad);+      tooltip.classList.add('visible', 'sticky');+      // Remove hint when sticky+      const hint = tooltip.querySelector('.tt-hint');+      if (hint) hint.style.display = 'none';+    }+  }++  // Dismiss sticky tooltip on click outside+  document.addEventListener('click', (e) => {+    if (stickyPad !== null && !tooltip.contains(e.target)) {+      stickyPad = null;+      tooltip.classList.remove('sticky', 'visible');+      clearHighlight();+    }+  });++  function clearHighlight() {+    highlightedRects.forEach(r => {+      r.setAttribute('fill', 'transparent');+      r.setAttribute('stroke', 'none');+    });+    highlightedRects = [];+  }++  wrap.addEventListener('mouseleave', () => {+    if (stickyPad !== null) return;+    tooltip.classList.remove('visible');+    clearHighlight();+  });++  // Keyboard+  window.addEventListener('keydown', (e) => {+    if (e.key === 'Escape') closeRegenPrompt();+    else if (e.key === 'f' || e.key === 'F') zoomFit();+    else if (e.key === '1') zoomReset();+    else if (e.key === '+' || e.key === '=') zoomIn();+    else if (e.key === '-') zoomOut();+    else if (e.key === 'g' || e.key === 'G') toggleGrid();+    else if (e.key === 's' || e.key === 'S') toggleSolder();+    else if (e.key === 'l' || e.key === 'L') toggleLabels();+  });++  // Screenshot capture via postMessage (parent viewer sends mgmt_capture_request)+  window.addEventListener('message', (e) => {+    if (e.data?.type === 'mgmt_capture_request' && svgEl) {+      const xml = new XMLSerializer().serializeToString(svgEl);+      parent.postMessage({+        type: 'mgmt_canvas_capture',+        _reqId: e.data._reqId,+        svgXml: xml,+        svgWidth: svgW,+        svgHeight: svgH,+        bgColor: 'undefined',+      }, '*');+    }+  });++  // Auto-fit on window/container resize+  new ResizeObserver(() => zoomFit()).observe(wrap);+  window.addEventListener('resize', () => requestAnimationFrame(zoomFit));++  // Init — set up layers then fit. Use multiple retries because srcdoc iframes+  // may not have layout dimensions during the first requestAnimationFrame.+  let inited = false;+  function init() {+    if (inited) return;+    setupLabelToggle();+    setupSolderBlobs();+    setupPadHitZones();+    inited = true;+  }+  function initAndFit() {+    init();+    zoomFit();+  }+  requestAnimationFrame(initAndFit);+  setTimeout(initAndFit, 100);+  setTimeout(initAndFit, 500);+</script>+</body>+</html>\ No newline at end of file
LQM18JNR10J00D-symview.htmladded+1204
@@ -0,0 +1,1204 @@+<!DOCTYPE html>+<html lang="en">+<head>+<meta charset="UTF-8">+<meta name="viewport" content="width=device-width, initial-scale=1.0">+<title>LQM18JNR10J00D</title>+<style>+  * { margin: 0; padding: 0; box-sizing: border-box; }+  body {+    background: #0d1117;+    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;+    overflow: hidden;+    height: 100vh;+    display: flex;+    flex-direction: column;+    color: #e6edf3;+  }++  /* ── Top toolbar ── */+  .toolbar {+    display: flex;+    align-items: center;+    gap: 6px;+    padding: 8px 14px;+    background: #161b22;+    border-bottom: 1px solid #21262d;+    flex-shrink: 0;+    font-size: 13px;+  }+  .toolbar .title {+    font-weight: 600;+    color: #00b8b0;+    font-size: 15px;+    letter-spacing: 0.02em;+  }+  .toolbar .spacer { flex: 1; }+  .toolbar .sep {+    width: 1px;+    height: 22px;+    background: #21262d;+    margin: 0 4px;+    flex-shrink: 0;+  }+  .toolbar .btn-group {+    display: flex;+    align-items: center;+    gap: 2px;+    flex-shrink: 0;+  }+  .toolbar button {+    background: rgba(0, 184, 176, 0.12);+    border: 1px solid rgba(0, 184, 176, 0.25);+    border-radius: 4px;+    padding: 4px 10px;+    cursor: pointer;+    font-size: 12px;+    color: #8b949e;+    transition: all 0.15s;+  }+  .toolbar button:hover { background: rgba(0,184,176,0.18); color: #e6edf3; border-color: rgba(0,184,176,0.4); }+  .toolbar button:active { background: rgba(0,184,176,0.28); }+  .toolbar button.active { background: rgba(0,184,176,0.2); color: #00b8b0; border-color: rgba(0,184,176,0.4); }+  .toolbar .zoom-level {+    font-size: 11px;+    color: #8b949e;+    min-width: 44px;+    text-align: center;+    font-variant-numeric: tabular-nums;+  }++  /* ── Canvas (dark background) ── */+  .canvas-wrap {+    flex: 1;+    overflow: hidden;+    position: relative;+    cursor: grab;+    background-color: #0d1117;+    background-image:+      radial-gradient(ellipse at 50% 50%, rgba(0,184,176,0.03) 0%, transparent 70%),+      linear-gradient(rgba(255,255,255,0.015) 1px, transparent 1px),+      linear-gradient(90deg, rgba(255,255,255,0.015) 1px, transparent 1px);+    background-size: 100% 100%, 20px 20px, 20px 20px;+  }+  .canvas-wrap.dragging { cursor: grabbing; }+  .canvas-wrap.no-grid {+    background-image: radial-gradient(ellipse at 50% 50%, rgba(0,184,176,0.03) 0%, transparent 70%);+    background-size: 100% 100%;+  }++  .canvas {+    position: absolute;+    transform-origin: 0 0;+  }+  .canvas svg { display: block; }++  /* ── Tooltip ── */+  .tooltip {+    display: none;+    position: fixed;+    background: #21262d;+    backdrop-filter: blur(16px);+    -webkit-backdrop-filter: blur(16px);+    color: #e6edf3;+    padding: 10px 14px;+    border-radius: 10px;+    border: 1px solid rgba(0, 184, 176, 0.25);+    font-size: 12px;+    line-height: 1.6;+    pointer-events: none;+    user-select: none;+    z-index: 100;+    max-width: 300px;+    box-shadow: 0 8px 24px rgba(0,0,0,0.4);+    transition: border-color 0.15s;+  }+  .tooltip.visible { display: block; }+  .tooltip.sticky {+    pointer-events: auto;+    user-select: text;+    border-color: #00e6dc;+    box-shadow: 0 8px 32px rgba(0,184,176,0.15), 0 8px 24px rgba(0,0,0,0.4);+  }+  .tooltip .tt-name { font-weight: 700; font-size: 15px; color: #00e6dc; }+  .tooltip .tt-pin { color: #8b949e; font-size: 11px; margin-left: 4px; }+  .tooltip .tt-type {+    display: inline-block;+    margin-top: 4px;+    padding: 2px 8px;+    border-radius: 4px;+    font-size: 11px;+    font-weight: 500;+  }+  .tooltip .tt-desc {+    margin-top: 6px;+    padding-top: 6px;+    border-top: 1px solid #21262d;+    color: #8b949e;+    font-size: 11px;+    line-height: 1.5;+  }+  .tooltip .tt-source {+    margin-top: 6px;+    padding-top: 6px;+    border-top: 1px solid #21262d;+    font-size: 10px;+    color: #484f58;+  }+  .tooltip .tt-source a { color: #00b8b0; text-decoration: none; }+  .tooltip .tt-source a:hover { text-decoration: underline; }+  .tooltip .tt-source-label { color: #E6B450; font-weight: 600; }+  .tooltip .tt-hint {+    margin-top: 6px;+    font-size: 9px;+    color: #484f58;+    font-style: italic;+  }+  .tooltip .tt-group-name { font-weight: 700; font-size: 14px; color: #E6B450; }+  .tooltip .tt-group-badge {+    display: inline-block;+    margin-top: 4px;+    padding: 2px 8px;+    border-radius: 4px;+    font-size: 11px;+    font-weight: 500;+    background: rgba(230,180,80,0.15);+    color: #FFD180;+    border: 1px solid rgba(230,180,80,0.3);+  }++  /* ── Wiki edit button ── */+  .edit-btn {+    position: absolute; top: 10px; right: 10px; z-index: 100;+    display: flex; align-items: center; gap: 6px;+    padding: 5px 10px;+    background: rgba(22,27,34,0.75);+    backdrop-filter: blur(8px);+    border: 1px solid rgba(230,180,80,0.2);+    border-radius: 6px;+    color: #8b949e; font-size: 11px;+    cursor: pointer; text-decoration: none;+    transition: all 0.2s; opacity: 0.7;+  }+  .edit-btn:hover {+    opacity: 1;+    background: rgba(230,180,80,0.12);+    border-color: rgba(230,180,80,0.4);+    color: #FFD180;+  }+  .edit-btn svg { width: 12px; height: 12px; }++  /* Regen prompt modal */+  .regen-overlay {+    display: none;+    position: fixed; inset: 0;+    background: rgba(0,0,0,0.6);+    z-index: 2000;+    align-items: center; justify-content: center;+  }+  .regen-overlay.visible { display: flex; }+  .regen-modal {+    background: undefined;+    border: 1px solid undefined;+    border-radius: 10px;+    padding: 20px 24px;+    max-width: 520px;+    width: 90%;+    box-shadow: 0 12px 40px rgba(0,0,0,0.5);+  }+  .regen-modal h3 {+    margin: 0 0 12px;+    font-size: 14px;+    font-weight: 600;+    color: undefined;+  }+  .regen-modal .prompt-text {+    background: undefined;+    border: 1px solid undefined;+    border-radius: 6px;+    padding: 12px 14px;+    font-size: 13px;+    line-height: 1.5;+    color: undefined;+    white-space: pre-wrap;+    word-break: break-word;+    user-select: all;+  }+  .regen-modal .modal-footer {+    display: flex;+    align-items: center;+    justify-content: space-between;+    margin-top: 14px;+  }+  .regen-modal .copy-status {+    font-size: 11px;+    color: undefined;+  }+  .regen-modal .copy-status.copied { color: undefined; }+  .regen-modal .modal-btns { display: flex; gap: 8px; }+  .regen-modal .modal-btns button {+    padding: 6px 14px;+    border-radius: 6px;+    border: 1px solid undefined;+    background: undefined;+    color: undefined;+    font-size: 12px;+    cursor: pointer;+  }+  .regen-modal .modal-btns button:hover { background: rgba(255,255,255,0.06); }+  .regen-modal .modal-btns .copy-btn {+    background: rgba(0,230,220,0.12);+    border-color: rgba(0,230,220,0.3);+    color: undefined;+  }+  .regen-modal .modal-btns .copy-btn:hover { background: rgba(0,230,220,0.22); }++  /* Pin highlight on hover */+  .canvas svg .pin-highlight path, .canvas svg path.pin-highlight { stroke: #00e6dc !important; }+  .canvas svg .group-highlight path { stroke: #FFD180 !important; }++  /* Discrete pin label highlight (injected <text> elements) */+  .canvas svg text.pin-label-highlight { fill: #00e6dc !important; }+  .canvas svg text.pin-num-highlight { fill: #00e6dc !important; }++  /* Discrete pin hit zone outline (visible on hover) */+  .canvas svg rect.pin-hit-zone { fill: rgba(0,230,220,0.06); stroke: #00e6dc; stroke-width: 0.12; stroke-dasharray: 0.3,0.2; stroke-opacity: 0.5; pointer-events: all; cursor: pointer; rx: 0.3; }+  .canvas svg rect.pin-hit-zone:hover { fill: rgba(0,230,220,0.12); stroke-opacity: 0.8; stroke-width: 0.15; }++  /* ── Bottom panel ── */+  .bottom-panel {+    background: #161b22;+    border-top: 1px solid #21262d;+    flex-shrink: 0;+  }+  .info-row {+    display: flex;+    align-items: baseline;+    flex-wrap: wrap;+    gap: 1px 0;+    padding: 5px 8px;+    font-size: 10px;+  }+  .info-item {+    display: inline-flex;+    align-items: baseline;+    gap: 5px;+    padding: 1px 0;+    margin-right: 8px;+  }+  .info-item::after {+    content: '';+    display: inline-block;+    width: 1px;+    height: 10px;+    background: #21262d;+    margin-left: 8px;+    vertical-align: middle;+  }+  .info-item:last-child::after { display: none; }+  .info-item:last-child { margin-right: 0; }+  .info-label {+    color: #484f58;+    text-transform: uppercase;+    letter-spacing: 0.04em;+    font-size: 9px;+  }+  .info-value { color: #8b949e; }+  .info-value a { color: #00b8b0; text-decoration: none; }+  .info-value a:hover { text-decoration: underline; }+  .info-divider { height: 1px; background: #21262d; margin: 0 8px; }+  .coord-row {+    display: flex;+    align-items: center;+    justify-content: space-between;+    padding: 4px 8px;+    font-size: 10px;+    color: #8b949e;+    font-variant-numeric: tabular-nums;+  }+</style>+</head>+<body>++<div class="toolbar">+  <span class="title">LQM18JNR10J00D</span>+  <div class="spacer"></div>+  <div class="btn-group">+    <button onclick="zoomOut()">&#x2212;</button>+    <span class="zoom-level" id="zoom-level">100%</span>+    <button onclick="zoomIn()">&#x2b;</button>+  </div>+  <div class="sep"></div>+  <button onclick="zoomFit()">Fit</button>+  <button onclick="zoomReset()">1:1</button>+  <button onclick="toggleGrid()" id="grid-btn" class="active">Grid</button>+  <button onclick="toggleBBox()" id="bbox-btn" class="active">BBox</button>+  <button onclick="toggleHits()" id="hits-btn">Hits</button>+  <div class="sep"></div>+  <button onclick="showRegenPrompt()" title="Show regeneration prompt to paste into Claude Code">Regen</button>+</div>++<div class="regen-overlay" id="regen-overlay" onclick="if(event.target===this)closeRegenPrompt()">+  <div class="regen-modal">+    <h3>Regeneration Prompt</h3>+    <div class="prompt-text" id="regen-prompt-text"></div>+    <div class="modal-footer">+      <span class="copy-status" id="regen-copy-status">Copied to clipboard</span>+      <div class="modal-btns">+        <button onclick="closeRegenPrompt()">Close</button>+        <button class="copy-btn" onclick="copyRegenText()">Copy</button>+      </div>+    </div>+  </div>+</div>++<div class="canvas-wrap" id="canvas-wrap">+  <a class="edit-btn" href="https://coder.john-service-wiki-a054078430ce38e4.containers.adom.inc/proxy/8785/wiki/components/lqm18jnr10j00d/edit?field=content" target="_blank" title="Suggest corrections to this symbol on the Adom Wiki">+    <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">+      <path d="M11.5 1.5l3 3L5 14H2v-3L11.5 1.5z"/>+      <path d="M9.5 3.5l3 3"/>+    </svg>+    Suggest edit+  </a>+  <div class="canvas" id="canvas">+    <svg+  xmlns:svg="http://www.w3.org/2000/svg"+  xmlns="http://www.w3.org/2000/svg"+  xmlns:xlink="http://www.w3.org/1999/xlink"+  xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"+  version="1.1"+  width="6.2738mm" height="10.0584mm" viewBox="-2.4806 -4.0808 10.6000 18.2200">++<defs>+  <linearGradient id="adom-body-grad" x1="0" y1="0" x2="0" y2="1">+    <stop offset="0%" stop-color="#1a2332"/>+    <stop offset="100%" stop-color="#141c27"/>+  </linearGradient>+</defs>++<style>+  /* Stroked text groups (KiCad renders text as paths in <g class="stroked-text">) */+  g.stroked-text path {+    stroke: #ffffff !important;+    fill: #ffffff !important;+  }++  /* Hidden text elements (used for hit detection) */+  text[opacity="0"] {+    fill: #ffffff !important;+  }++  /* Pin highlight state (toggled by JS) */+  .pin-highlight path {+    stroke: #00e6dc !important;+  }+  .pin-highlight g.stroked-text path {+    stroke: #00e6dc !important;+  }++  /* Group label highlight */+  .group-highlight g.stroked-text path {+    stroke: #FFD180 !important;+  }+</style>++  <desc>Image generated by Eeschema-SVG </desc>+<g style="fill:none; fill-opacity:1.0000;stroke:#000000; stroke-opacity:1.0000;+stroke-linecap:round; stroke-linejoin:round;"+ transform="translate(0 0) scale(1 1)">+</g>+<g style="fill:none; +stroke:#4a5568; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">+<path d="M2.8194 3.7588 A0.6348 0.6348 0.0 0 0 2.8194 2.4892" />+<path d="M2.8194 5.0288 A0.6348 0.6348 0.0 0 0 2.8194 3.7592" />+<path d="M2.8194 6.2988 A0.6348 0.6348 0.0 0 0 2.8194 5.0292" />+<path d="M2.8194 7.5688 A0.6348 0.6348 0.0 0 0 2.8194 6.2992" />+<path d="M2.8194 2.4892+L2.8194 1.2192+" />+<path d="M2.8194 7.5692+L2.8194 8.8392+" />+</g>+<g style="fill:none; +stroke:#484f58; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">+<g transform="rotate(-90.000000 1.5494 5.0292)">++</g>+<g transform="rotate(-90.000000 4.7244 5.0292)">++</g>+</g> +<text x="2.819" y="0.219" font-size="1.1" font-family="sans-serif" fill="#ffffff" text-anchor="middle" class="pin-num-label">1</text>+<text x="2.819" y="10.939" font-size="1.1" font-family="sans-serif" fill="#ffffff" text-anchor="middle" class="pin-num-label">2</text>+<rect x="-2.1806" y="-3.7807999999999997" width="10" height="17.619999999999997" fill="none" stroke="#00e6dc" stroke-width="0.1" stroke-dasharray="0.3,0.3" opacity="0.4" class="debug-bbox"/></svg>+  </div>+</div>++<div class="tooltip" id="tooltip"></div>++<div class="bottom-panel">+  <div class="info-row">+    <div class="info-item"><span class="info-label">Pins</span><span class="info-value">2</span></div><div class="info-item"><span class="info-label">Datasheet</span><span class="info-value"><a href="~" target="_blank">PDF</a></span></div><div class="info-item"><span class="info-label">Desc</span><span class="info-value">Inductor</span></div>+  </div>+  <div class="info-divider"></div>+  <div class="coord-row">+    <span id="cursor-pos">X: 0.00 &nbsp; Y: 0.00 mm</span>+    <span style="margin-left:auto;color:#00b8b0;font-weight:600;font-size:12px">SymView</span>+  </div>+</div>++<script>+  const pins = [{"name":"1","number":"1","type":"Passive","electricalType":"passive","color":"#78909c","desc":"","x":0,"y":3.81,"angle":270,"length":1.27},{"name":"2","number":"2","type":"Passive","electricalType":"passive","color":"#78909c","desc":"","x":0,"y":-3.81,"angle":90,"length":1.27}];+  const groups = [];+  const svgW = 10.6;+  const svgH = 18.22;+  const contentBounds = {"x":-2.1806,"y":-3.7807999999999997,"w":10,"h":17.619999999999997};+  const svgOffset = {"x":2.8194,"y":5.0292};+  const hidePinNames = true;+  const hidePinNumbers = true;+  const datasheetUrl = "~";+  const mfrName = "";+  const _symbolName = "LQM18JNR10J00D";+  const _symPath = "/home/adom/project/project-content/schematics/symbols/LQM18JNR10J00D/LQM18JNR10J00D.kicad_sym";++  const wrap = document.getElementById('canvas-wrap');+  const canvas = document.getElementById('canvas');+  const tooltip = document.getElementById('tooltip');+  const zoomLabel = document.getElementById('zoom-level');+  const cursorPos = document.getElementById('cursor-pos');++  let scale = 1, panX = 0, panY = 0;+  let isDragging = false;+  let dragStartX, dragStartY, panStartX, panStartY;+  let gridVisible = true;+  let stickyPin = null; // currently pinned tooltip++  const MM_TO_PX = 3.78;+  const svgPxW = svgW * MM_TO_PX;+  const svgPxH = svgH * MM_TO_PX;++  const svgEl = canvas.querySelector('svg');+  if (svgEl) {+    svgEl.setAttribute('width', svgPxW + 'px');+    svgEl.setAttribute('height', svgPxH + 'px');+  }++  function updateTransform() {+    canvas.style.transform = 'translate(' + panX + 'px,' + panY + 'px) scale(' + scale + ')';+    zoomLabel.textContent = Math.round(scale * 100) + '%';+  }++  function zoomFit() {+    const ww = wrap.clientWidth, wh = wrap.clientHeight;+    const pad = 40;+    // Read the bbox rect directly from the SVG DOM — it's already positioned correctly+    const bboxRect = svgEl ? svgEl.querySelector('.debug-bbox') : null;+    if (bboxRect) {+      const bb = bboxRect.getBBox();+      const vb = svgEl.viewBox.baseVal;+      // Convert SVG user-space coords to pixel coords within the SVG element+      const pxPerUnitX = svgPxW / vb.width;+      const pxPerUnitY = svgPxH / vb.height;+      const pxX = (bb.x - vb.x) * pxPerUnitX;+      const pxY = (bb.y - vb.y) * pxPerUnitY;+      const pxW = bb.width * pxPerUnitX;+      const pxH = bb.height * pxPerUnitY;+      scale = Math.min((ww - pad * 2) / pxW, (wh - pad * 2) / pxH, 10);+      if (!isFinite(scale) || scale <= 0) scale = 1;+      panX = (ww - pxW * scale) / 2 - pxX * scale;+      panY = (wh - pxH * scale) / 2 - pxY * scale;+    } else {+      scale = Math.min((ww - pad * 2) / svgPxW, (wh - pad * 2) / svgPxH, 10);+      if (!isFinite(scale) || scale <= 0) scale = 1;+      panX = (ww - svgPxW * scale) / 2;+      panY = (wh - svgPxH * scale) / 2;+    }+    updateTransform();+  }++  function zoomReset() {+    scale = 1;+    panX = (wrap.clientWidth - svgPxW) / 2;+    panY = (wrap.clientHeight - svgPxH) / 2;+    updateTransform();+  }++  function zoomIn() { zoomAt(wrap.clientWidth / 2, wrap.clientHeight / 2, 1.25); }+  function zoomOut() { zoomAt(wrap.clientWidth / 2, wrap.clientHeight / 2, 0.8); }++  function zoomAt(cx, cy, factor) {+    const ns = Math.max(0.1, Math.min(scale * factor, 20));+    const r = ns / scale;+    panX = cx - (cx - panX) * r;+    panY = cy - (cy - panY) * r;+    scale = ns;+    updateTransform();+  }++  function toggleGrid() {+    gridVisible = !gridVisible;+    wrap.classList.toggle('no-grid', !gridVisible);+    document.getElementById('grid-btn').classList.toggle('active', gridVisible);+  }++  let bboxVisible = true;+  function toggleBBox() {+    bboxVisible = !bboxVisible;+    const el = svgEl && svgEl.querySelector('.debug-bbox');+    if (el) el.setAttribute('opacity', bboxVisible ? '0.4' : '0');+    document.getElementById('bbox-btn').classList.toggle('active', bboxVisible);+  }++  let hitsVisible = false;+  function toggleHits() {+    hitsVisible = !hitsVisible;+    if (svgEl) {+      svgEl.querySelectorAll('.pin-hit-zone').forEach(r => {+        r.style.visibility = hitsVisible ? '' : 'hidden';+      });+    }+    document.getElementById('hits-btn').classList.toggle('active', hitsVisible);+  }++  // ── Regen prompt modal ──+  let _regenPrompt = '';+  function buildRegenPrompt() {+    const folder = _symPath.substring(0, _symPath.lastIndexOf('/'));+    return 'Regenerate the SymView for ' + _symbolName + '.\n\n'+      + 'Symbol: ' + _symPath + '\n'+      + 'Metadata: ' + folder + '/' + _symbolName + '-metadata.json\n\n'+      + 'Re-export the SVG via the KiCad service, regenerate the SymView HTML at the same path, '+      + 'and re-display it in the Adom app.';+  }+  function showRegenPrompt() {+    _regenPrompt = buildRegenPrompt();+    document.getElementById('regen-prompt-text').textContent = _regenPrompt;+    document.getElementById('regen-overlay').classList.add('visible');+    const status = document.getElementById('regen-copy-status');+    navigator.clipboard.writeText(_regenPrompt).then(() => {+      status.textContent = 'Copied to clipboard';+      status.classList.add('copied');+    }).catch(() => {+      status.textContent = 'Click Copy to copy';+      status.classList.remove('copied');+    });+  }+  function closeRegenPrompt() {+    document.getElementById('regen-overlay').classList.remove('visible');+  }+  function copyRegenText() {+    navigator.clipboard.writeText(_regenPrompt).then(() => {+      const status = document.getElementById('regen-copy-status');+      status.textContent = 'Copied to clipboard';+      status.classList.add('copied');+    });+  }++  // Mouse wheel zoom+  wrap.addEventListener('wheel', (e) => {+    e.preventDefault();+    const r = wrap.getBoundingClientRect();+    zoomAt(e.clientX - r.left, e.clientY - r.top, e.deltaY < 0 ? 1.12 : 0.89);+  }, { passive: false });++  // Pan+  wrap.addEventListener('mousedown', (e) => {+    if (e.button !== 0) return;+    isDragging = true;+    dragStartX = e.clientX; dragStartY = e.clientY;+    panStartX = panX; panStartY = panY;+    wrap.classList.add('dragging');+  });+  window.addEventListener('mousemove', (e) => {+    const r = wrap.getBoundingClientRect();+    const mx = (e.clientX - r.left - panX) / scale / MM_TO_PX;+    const my = (e.clientY - r.top - panY) / scale / MM_TO_PX;+    cursorPos.innerHTML = 'X: ' + mx.toFixed(2) + ' &nbsp; Y: ' + my.toFixed(2) + ' mm';+    if (!isDragging) return;+    panX = panStartX + (e.clientX - dragStartX);+    panY = panStartY + (e.clientY - dragStartY);+    updateTransform();+  });+  window.addEventListener('mouseup', () => { isDragging = false; wrap.classList.remove('dragging'); });++  // ── Pin highlighting ──+  const pinTextGroups = new Map();+  const pinWireGroups = new Map();+  if (svgEl) {+    // Build text group lookup+    svgEl.querySelectorAll('g.stroked-text').forEach(g => {+      const desc = g.querySelector('desc');+      if (desc) pinTextGroups.set(desc.textContent.trim(), g);+    });++    // Build wire group lookup using coordinate matching (not sibling navigation)+    if (svgOffset) {+      const ox = svgOffset.x, oy = svgOffset.y;+      // Collect all simple 2-point line paths in the SVG+      const allPaths = svgEl.querySelectorAll('path');+      const wirePaths = [];+      allPaths.forEach(p => {+        const d = p.getAttribute('d');+        if (!d) return;+        const m = d.match(/^M([\d.]+)\s+([\d.]+)\s+L([\d.]+)\s+([\d.]+)\s*$/);+        if (m) wirePaths.push({ el: p, x1: parseFloat(m[1]), y1: parseFloat(m[2]), x2: parseFloat(m[3]), y2: parseFloat(m[4]) });+      });++      for (const pin of pins) {+        const tipX = ox + pin.x;+        const tipY = oy - pin.y;+        const wireLen = pin.length || 2.54;+        const isHoriz = (pin.angle === 0 || pin.angle === 180);++        for (const w of wirePaths) {+          const dx = Math.abs(w.x2 - w.x1), dy = Math.abs(w.y2 - w.y1);+          const len = Math.sqrt(dx * dx + dy * dy);+          if (Math.abs(len - wireLen) > 0.05) continue;+          if (isHoriz && dy > 0.01) continue;+          if (!isHoriz && dx > 0.01) continue;+          // Check if one endpoint is near the pin tip+          const d1 = Math.hypot(w.x1 - tipX, w.y1 - tipY);+          const d2 = Math.hypot(w.x2 - tipX, w.y2 - tipY);+          if (Math.min(d1, d2) < 0.1) {+            // Found the wire path element directly+            pinWireGroups.set(pin.name, w.el);+            break;+          }+        }+      }+    }+  }++  function highlightPin(pin) {+    clearHighlight();+    // IC symbols: stroked-text groups+    [pin.name, pin.number].forEach(label => {+      const g = pinTextGroups.get(label);+      if (g) g.classList.add('pin-highlight');+    });+    const wireG = pinWireGroups.get(pin.name);+    if (wireG) wireG.classList.add('pin-highlight');+    // Discrete symbols: injected <text> labels+    if (svgEl && hidePinNames) {+      svgEl.querySelectorAll('text.pin-label').forEach(t => {+        if (t.textContent.trim() === pin.name) t.classList.add('pin-label-highlight');+      });+      svgEl.querySelectorAll('text.pin-num-label').forEach(t => {+        if (t.textContent.trim() === pin.number) t.classList.add('pin-num-highlight');+      });+    }+  }+  function clearHighlight() {+    if (svgEl) {+      svgEl.querySelectorAll('.pin-highlight').forEach(g => g.classList.remove('pin-highlight'));+      svgEl.querySelectorAll('.group-highlight').forEach(g => g.classList.remove('group-highlight'));+      svgEl.querySelectorAll('.pin-label-highlight').forEach(t => t.classList.remove('pin-label-highlight'));+      svgEl.querySelectorAll('.pin-num-highlight').forEach(t => t.classList.remove('pin-num-highlight'));+    }+  }++  // ── Tooltip positioning ──+  function positionTooltip(x, y) {+    const tw = tooltip.offsetWidth || 280;+    const th = tooltip.offsetHeight || 120;+    let tx = x + 14;+    let ty = y + 14;+    if (tx + tw > window.innerWidth - 14) tx = x - tw - 14;+    if (ty + th > window.innerHeight - 14) ty = y - th - 14;+    tx = Math.max(14, tx);+    ty = Math.max(14, ty);+    tooltip.style.left = tx + 'px';+    tooltip.style.top = ty + 'px';+  }++  // ── Source attribution HTML ──+  function sourceHtml() {+    if (!datasheetUrl || !mfrName) return '';+    return '<div class="tt-source"><span class="tt-source-label">Source:</span> <a href="' + datasheetUrl + '" target="_blank">' + mfrName + ' Datasheet</a></div>';+  }++  function hintHtml() {+    return '<div class="tt-hint">click to pin &middot; select text</div>';+  }++  function showTooltip(x, y, pin) {+    if (stickyPin) return; // don't override sticky+    highlightPin(pin);+    let html = '<div><span class="tt-name">' + pin.name + '</span><span class="tt-pin">Pin ' + pin.number + '</span></div>' ++      '<div><span class="tt-type" style="background:' + pin.color + '22; color:' + pin.color + '; border:1px solid ' + pin.color + '44">' + pin.type + '</span></div>';+    if (pin.desc) html += '<div class="tt-desc">' + pin.desc + '</div>';+    html += sourceHtml();+    html += hintHtml();+    tooltip.innerHTML = html;+    tooltip.classList.add('visible');+    tooltip.classList.remove('sticky');+    positionTooltip(x, y);+  }++  function showGroupTooltip(x, y, group) {+    if (stickyPin) return;+    clearHighlight();+    const g = pinTextGroups.get(group.name);+    if (g) g.classList.add('group-highlight');+    let html = '<div><span class="tt-group-name">' + group.name + '</span></div>' ++      '<div><span class="tt-group-badge">Function Group</span></div>';+    if (group.desc) html += '<div class="tt-desc">' + group.desc + '</div>';+    tooltip.innerHTML = html;+    tooltip.classList.add('visible');+    tooltip.classList.remove('sticky');+    positionTooltip(x, y);+  }++  function hideTooltip() {+    if (stickyPin) return;+    tooltip.classList.remove('visible');+    clearHighlight();+  }++  // ── Sticky tooltip (click-to-pin) ──+  function toggleSticky(pin, x, y) {+    if (stickyPin === pin) {+      // Unpin+      stickyPin = null;+      tooltip.classList.remove('sticky');+      hideTooltip();+    } else {+      // Pin+      stickyPin = pin;+      highlightPin(pin);+      let html = '<div><span class="tt-name">' + pin.name + '</span><span class="tt-pin">Pin ' + pin.number + '</span></div>' ++        '<div><span class="tt-type" style="background:' + pin.color + '22; color:' + pin.color + '; border:1px solid ' + pin.color + '44">' + pin.type + '</span></div>';+      if (pin.desc) html += '<div class="tt-desc">' + pin.desc + '</div>';+      html += sourceHtml();+      tooltip.innerHTML = html;+      tooltip.classList.add('visible', 'sticky');+      positionTooltip(x, y);+    }+  }++  // Dismiss sticky on click outside+  document.addEventListener('click', (e) => {+    if (!stickyPin) return;+    if (tooltip.contains(e.target)) return; // click inside tooltip+    if (e.target.closest('[data-pin]') || e.target.closest('[data-pin-num]') || e.target.closest('[data-pin-wire]')) return;+    stickyPin = null;+    tooltip.classList.remove('sticky', 'visible');+    clearHighlight();+  });++  wrap.addEventListener('mouseleave', hideTooltip);++  // ── Pin hit zones ──+  function setupPinHitZones() {+    if (!svgEl) return;++    if (hidePinNames) {+      // Discrete components (hidden pin names): compute hit zones from injected labels+      // Covers MOSFETs, resistors, etc. — standard KiCad discrete symbols hide pin names+      // but may leave pin numbers visible, so we check hidePinNames only+      setupDiscreteHitZones();+    } else {+      // Standard IC: use hidden text elements for hit detection+      setupTextHitZones();+    }+  }++  function setupTextHitZones() {+    // IC symbols: two hit zones per pin, derived from actual rendered text bounds (getBBox):+    //   1. INSIDE body — covers pin name text (bbox from stroked-text group)+    //   2. OUTSIDE body — covers pin wire + number area (bbox or coordinate-based)+    if (!svgOffset) return;+    const ox = svgOffset.x, oy = svgOffset.y;+    const pitch = 2.54;+    const zoneH = pitch * 0.95;+    const wireExt = 1.5;+    const pad = 0.3; // padding around text bbox++    // Build lookup: text content → stroked-text group bbox+    const textBBoxMap = {};+    svgEl.querySelectorAll('g.stroked-text').forEach(g => {+      const desc = g.querySelector('desc');+      if (desc) {+        try {+          const bbox = g.getBBox();+          if (bbox.width > 0 && bbox.height > 0) {+            const key = desc.textContent.trim();+            if (!textBBoxMap[key]) textBBoxMap[key] = [];+            textBBoxMap[key].push(bbox);+          }+        } catch (e) {}+      }+    });++    function addHitZone(hx, hy, hw, hh, pin) {+      const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');+      rect.setAttribute('x', hx);+      rect.setAttribute('y', hy);+      rect.setAttribute('width', hw);+      rect.setAttribute('height', hh);+      rect.setAttribute('class', 'pin-hit-zone');+      rect.setAttribute('data-pin', pin.name);+      rect.setAttribute('rx', '0.3');+      svgEl.appendChild(rect);+      rect.addEventListener('mouseenter', (ev) => showTooltip(ev.clientX, ev.clientY, pin));+      rect.addEventListener('mousemove', (ev) => { if (!stickyPin) positionTooltip(ev.clientX, ev.clientY); });+      rect.addEventListener('mouseleave', hideTooltip);+      rect.addEventListener('click', (ev) => { ev.stopPropagation(); toggleSticky(pin, ev.clientX, ev.clientY); });+    }++    for (const pin of pins) {+      const tipSvgX = ox + pin.x;+      const tipSvgY = oy - pin.y;+      const wireLen = pin.length || 2.54;+      const isHoriz = (pin.angle === 0 || pin.angle === 180);++      // Pin name hitbox: use actual text bbox if available+      const nameBBoxes = textBBoxMap[pin.name];+      if (nameBBoxes && nameBBoxes.length > 0) {+        // Pick the bbox closest to this pin's body-edge position+        const bodyEdgeX = isHoriz+          ? (pin.angle === 0 ? tipSvgX + wireLen : tipSvgX - wireLen)+          : tipSvgX;+        const bodyEdgeY = isHoriz+          ? tipSvgY+          : (pin.angle === 90 ? tipSvgY - wireLen : tipSvgY + wireLen);+        let best = nameBBoxes[0];+        let bestDist = Infinity;+        for (const bb of nameBBoxes) {+          const cx = bb.x + bb.width / 2, cy = bb.y + bb.height / 2;+          const d = Math.hypot(cx - bodyEdgeX, cy - bodyEdgeY);+          if (d < bestDist) { bestDist = d; best = bb; }+        }+        addHitZone(best.x - pad, best.y - pad, best.width + pad * 2, best.height + pad * 2, pin);+      } else {+        // Fallback: fixed-width zone inside body+        const bodyDepth = 8;+        if (isHoriz) {+          const cy = tipSvgY - zoneH / 2;+          if (pin.angle === 0) addHitZone(tipSvgX + wireLen, cy, bodyDepth, zoneH, pin);+          else addHitZone(tipSvgX - wireLen - bodyDepth, cy, bodyDepth, zoneH, pin);+        } else {+          const cx = tipSvgX - zoneH / 2;+          if (pin.angle === 90) addHitZone(cx, tipSvgY - wireLen - bodyDepth, zoneH, bodyDepth, pin);+          else addHitZone(cx, tipSvgY + wireLen, zoneH, bodyDepth, pin);+        }+      }++      // Pin number hitbox: use actual text bbox if available+      const numBBoxes = textBBoxMap[pin.number];+      if (numBBoxes && numBBoxes.length > 0) {+        const tipDist = (bb) => Math.hypot(bb.x + bb.width / 2 - tipSvgX, bb.y + bb.height / 2 - tipSvgY);+        let best = numBBoxes[0], bestD = tipDist(best);+        for (const bb of numBBoxes) { const d = tipDist(bb); if (d < bestD) { bestD = d; best = bb; } }+        addHitZone(best.x - pad, best.y - pad, best.width + pad * 2, best.height + pad * 2, pin);+      } else {+        // Fallback: wire area+        if (isHoriz) {+          const cy = tipSvgY - zoneH / 2;+          if (pin.angle === 0) addHitZone(tipSvgX - wireExt, cy, wireLen + wireExt, zoneH, pin);+          else addHitZone(tipSvgX, cy, wireLen + wireExt, zoneH, pin);+        } else {+          const cx = tipSvgX - zoneH / 2;+          if (pin.angle === 90) addHitZone(cx, tipSvgY, zoneH, wireLen + wireExt, pin);+          else addHitZone(cx, tipSvgY - wireExt, zoneH, wireLen + wireExt, pin);+        }+      }+    }+  }++  function setupDiscreteHitZones() {+    // For discrete components (hidden pin names/numbers), create hit zones+    // using getBBox() on injected text labels for precise alignment.+    // Falls back to coordinate-based zones if text elements aren't found.+    if (!svgOffset) return;+    const ox = svgOffset.x, oy = svgOffset.y;+    const pad = 0.5; // generous padding for easy hover on small labels++    // Build lookup: text content → getBBox for injected labels+    const labelBBoxMap = {};+    const allTextEls = svgEl.querySelectorAll('text.pin-label, text.pin-num-label');+    allTextEls.forEach(t => {+      try {+        const bbox = t.getBBox();+        if (bbox.width > 0 && bbox.height > 0) {+          const key = t.textContent.trim();+          if (!labelBBoxMap[key]) labelBBoxMap[key] = [];+          labelBBoxMap[key].push(bbox);+        }+      } catch (e) {}+    });++    for (const pin of pins) {+      const tipSvgX = ox + pin.x;+      const tipSvgY = oy - pin.y;+      const wireLen = pin.length || 2.54;++      // Collect bounding boxes of this pin's name and number labels+      const bboxes = [];++      // Find name label bbox (closest to pin tip)+      const nameBBs = labelBBoxMap[pin.name];+      if (nameBBs) {+        let best = nameBBs[0], bestD = Infinity;+        for (const bb of nameBBs) {+          const d = Math.hypot(bb.x + bb.width / 2 - tipSvgX, bb.y + bb.height / 2 - tipSvgY);+          if (d < bestD) { bestD = d; best = bb; }+        }+        bboxes.push(best);+      }++      // Find number label bbox (closest to pin tip)+      const numBBs = labelBBoxMap[pin.number];+      if (numBBs) {+        let best = numBBs[0], bestD = Infinity;+        for (const bb of numBBs) {+          const d = Math.hypot(bb.x + bb.width / 2 - tipSvgX, bb.y + bb.height / 2 - tipSvgY);+          if (d < bestD) { bestD = d; best = bb; }+        }+        bboxes.push(best);+      }++      if (bboxes.length > 0) {+        // Union text bboxes into a single hit zone (just covers labels near the tip)+        let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;+        for (const bb of bboxes) {+          minX = Math.min(minX, bb.x);+          minY = Math.min(minY, bb.y);+          maxX = Math.max(maxX, bb.x + bb.width);+          maxY = Math.max(maxY, bb.y + bb.height);+        }++        const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');+        rect.setAttribute('x', minX - pad);+        rect.setAttribute('y', minY - pad);+        rect.setAttribute('width', maxX - minX + pad * 2);+        rect.setAttribute('height', maxY - minY + pad * 2);+        rect.setAttribute('class', 'pin-hit-zone');+        rect.setAttribute('data-pin-wire', pin.name);+        rect.setAttribute('rx', '0.3');+        svgEl.appendChild(rect);++        rect.addEventListener('mouseenter', (ev) => showTooltip(ev.clientX, ev.clientY, pin));+        rect.addEventListener('mousemove', (ev) => { if (!stickyPin) positionTooltip(ev.clientX, ev.clientY); });+        rect.addEventListener('mouseleave', hideTooltip);+        rect.addEventListener('click', (ev) => { ev.stopPropagation(); toggleSticky(pin, ev.clientX, ev.clientY); });+      } else {+        // Fallback: coordinate-based zone around wire area+        const perpHalf = 1.5;+        let hitX, hitY, hitW, hitH;+        switch (pin.angle) {+          case 0:   hitX = tipSvgX - 1; hitY = tipSvgY - perpHalf; hitW = wireLen + 1; hitH = perpHalf * 2; break;+          case 180: hitX = tipSvgX - wireLen; hitY = tipSvgY - perpHalf; hitW = wireLen + 1; hitH = perpHalf * 2; break;+          case 270: hitX = tipSvgX - perpHalf; hitY = tipSvgY; hitW = perpHalf * 2; hitH = wireLen + 1; break;+          case 90:  hitX = tipSvgX - perpHalf; hitY = tipSvgY - wireLen; hitW = perpHalf * 2; hitH = wireLen + 1; break;+          default:  hitX = tipSvgX - 2; hitY = tipSvgY - 2; hitW = 4; hitH = 4;+        }+        const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');+        rect.setAttribute('x', hitX);+        rect.setAttribute('y', hitY);+        rect.setAttribute('width', hitW);+        rect.setAttribute('height', hitH);+        rect.setAttribute('class', 'pin-hit-zone');+        rect.setAttribute('data-pin-wire', pin.name);+        rect.setAttribute('rx', '0.3');+        svgEl.appendChild(rect);+        rect.addEventListener('mouseenter', (ev) => showTooltip(ev.clientX, ev.clientY, pin));+        rect.addEventListener('mousemove', (ev) => { if (!stickyPin) positionTooltip(ev.clientX, ev.clientY); });+        rect.addEventListener('mouseleave', hideTooltip);+        rect.addEventListener('click', (ev) => { ev.stopPropagation(); toggleSticky(pin, ev.clientX, ev.clientY); });+      }+    }+  }++  // ── Group label hit zones ──+  function setupGroupHitZones() {+    if (!svgEl) return;+    const texts = svgEl.querySelectorAll('text');+    texts.forEach(textEl => {+      const label = textEl.textContent.trim();+      const group = groups.find(g => g.name === label);+      if (!group) return;+      const fSize = parseFloat(textEl.getAttribute('font-size')) || 1;+      if (Math.abs(fSize - 1.016) > 0.1) return;++      const x = parseFloat(textEl.getAttribute('x')) || 0;+      const y = parseFloat(textEl.getAttribute('y')) || 0;+      const tLen = parseFloat(textEl.getAttribute('textLength')) || 6;+      const anchor = textEl.getAttribute('text-anchor') || 'start';++      const padX = fSize * 0.4;+      const padY = fSize * 0.15; // tight vertical padding to avoid spilling into pin zones+      let rx, rw = tLen + padX * 2, rh = fSize + padY * 2;+      if (anchor === 'end') rx = x - tLen - padX;+      else if (anchor === 'middle') rx = x - tLen / 2 - padX;+      else rx = x - padX;+      const ry = y - fSize - padY;++      const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');+      rect.setAttribute('x', rx);+      rect.setAttribute('y', ry);+      rect.setAttribute('width', rw);+      rect.setAttribute('height', rh);+      rect.setAttribute('class', 'pin-hit-zone');+      rect.setAttribute('data-group', group.name);+      rect.setAttribute('rx', '0.3');+      svgEl.appendChild(rect);++      rect.addEventListener('mouseenter', (ev) => showGroupTooltip(ev.clientX, ev.clientY, group));+      rect.addEventListener('mousemove', (ev) => { if (!stickyPin) positionTooltip(ev.clientX, ev.clientY); });+      rect.addEventListener('mouseleave', hideTooltip);+    });+  }++  // Keyboard shortcuts+  window.addEventListener('keydown', (e) => {+    if (e.key === 'f' || e.key === 'F') zoomFit();+    else if (e.key === '1') zoomReset();+    else if (e.key === '+' || e.key === '=') zoomIn();+    else if (e.key === '-') zoomOut();+    else if (e.key === 'g' || e.key === 'G') toggleGrid();+    else if (e.key === 'Escape') {+      closeRegenPrompt();+      stickyPin = null;+      tooltip.classList.remove('sticky', 'visible');+      clearHighlight();+    }+  });++  // Auto-fit on window/container resize (e.g. iframe becoming visible)+  new ResizeObserver(() => zoomFit()).observe(wrap);++  // Init+  requestAnimationFrame(() => {+    zoomFit();+    setupPinHitZones();+    setupGroupHitZones();+    // Hide hit zones by default (user can toggle with Hits button)+    if (!hitsVisible && svgEl) {+      svgEl.querySelectorAll('.pin-hit-zone').forEach(r => { r.style.visibility = 'hidden'; });+    }+  });++  // Zoom to a named region of the symbol (for AI screenshot verification)+  // Regions: 'top', 'bottom', 'left', 'right', 'fit' (full symbol)+  function zoomToRegion(region) {+    if (!contentBounds) { zoomFit(); return; }+    const ww = wrap.clientWidth, wh = wrap.clientHeight;+    const svgEl = document.querySelector('#canvas svg');+    if (!svgEl) return;+    const vb = svgEl.viewBox.baseVal;+    const svgPxW = svgEl.clientWidth || svgEl.getBoundingClientRect().width;+    const svgPxH = svgEl.clientHeight || svgEl.getBoundingClientRect().height;+    const pxPerUnitX = svgPxW / vb.width;+    const pxPerUnitY = svgPxH / vb.height;++    // Content bounds in SVG user-space+    const cb = contentBounds;+    const cx = cb.x, cy = cb.y, cw = cb.w || cb.width, ch = cb.h || cb.height;+    // Region crop (SVG user-space coordinates)+    let rx, ry, rw, rh;+    const margin = 2; // mm padding+    if (region === 'top') {+      rx = cx - margin; ry = cy - margin; rw = cw + margin * 2; rh = Math.min(ch * 0.12, 50) + margin;+    } else if (region === 'bottom') {+      const cropH = Math.min(ch * 0.12, 50);+      ry = cy + ch - cropH - margin; rx = cx - margin; rw = cw + margin * 2; rh = cropH + margin * 2;+    } else if (region === 'top-left') {+      rx = cx - margin; ry = cy - margin; rw = cw * 0.4 + margin; rh = Math.min(ch * 0.12, 50) + margin;+    } else if (region === 'top-right') {+      rx = cx + cw * 0.6 - margin; ry = cy - margin; rw = cw * 0.4 + margin * 2; rh = Math.min(ch * 0.12, 50) + margin;+    } else if (region === 'bottom-left') {+      const cropH = Math.min(ch * 0.12, 50);+      ry = cy + ch - cropH - margin; rx = cx - margin; rw = cw * 0.4 + margin; rh = cropH + margin * 2;+    } else if (region === 'bottom-right') {+      const cropH = Math.min(ch * 0.12, 50);+      ry = cy + ch - cropH - margin; rx = cx + cw * 0.6 - margin; rw = cw * 0.4 + margin * 2; rh = cropH + margin * 2;+    } else if (region === 'left') {+      rx = cx - margin; ry = cy - margin; rw = cw * 0.35 + margin; rh = ch + margin * 2;+    } else if (region === 'right') {+      rx = cx + cw * 0.65 - margin; ry = cy - margin; rw = cw * 0.35 + margin * 2; rh = ch + margin * 2;+    } else {+      zoomFit(); return;+    }+    // Convert to pixel coords+    const pxX = (rx - vb.x) * pxPerUnitX;+    const pxY = (ry - vb.y) * pxPerUnitY;+    const pxW = rw * pxPerUnitX;+    const pxH = rh * pxPerUnitY;+    // Compute scale to fit region in viewport+    const ns = Math.min(ww / pxW, wh / pxH) * 0.92;+    scale = Math.max(0.1, Math.min(ns, 20));+    panX = ww / 2 - (pxX + pxW / 2) * scale;+    panY = wh / 2 - (pxY + pxH / 2) * scale;+    updateTransform();+  }++  // Screenshot capture handler for Adom Viewer mgmt relay+  // Send SVG data back to parent for rendering (avoids sandbox restrictions on Image loading)+  window.addEventListener('message', (e) => {+    // Zoom-to-region command (from AI via mgmt relay)+    if (e.data?.type === 'sym_zoom_region') {+      zoomToRegion(e.data.region || 'fit');+      return;+    }+    if (e.data?.type === 'mgmt_capture_request') {+      const reqId = e.data._reqId;+      try {+        const svg = document.querySelector('#canvas svg');+        if (!svg) { window.parent.postMessage({ type: 'mgmt_canvas_capture', _reqId: reqId, data: null }, '*'); return; }+        const clone = svg.cloneNode(true);+        // Inline pin-hit-zone styles so they're visible in standalone SVG+        clone.querySelectorAll('.pin-hit-zone').forEach(el => {+          el.setAttribute('fill', 'rgba(0,230,220,0.06)');+          el.setAttribute('stroke', '#00e6dc');+          el.setAttribute('stroke-width', '0.12');+          el.setAttribute('stroke-dasharray', '0.3,0.2');+          el.setAttribute('stroke-opacity', '0.5');+          el.setAttribute('rx', '0.3');+        });+        const vb = svg.getAttribute('viewBox');+        const parts = vb ? vb.split(/\s+/).map(Number) : [0, 0, 100, 100];+        let vbX = parts[0], vbY = parts[1], vbW = parts[2] || 100, vbH = parts[3] || 100;++        // Crop to visible viewport when zoomed/panned+        const svgPxW = svg.clientWidth || svg.getBoundingClientRect().width;+        const svgPxH = svg.clientHeight || svg.getBoundingClientRect().height;+        const ww = wrap.clientWidth, wh = wrap.clientHeight;+        if (scale !== 1 || panX !== (ww - svgPxW) / 2 || panY !== (wh - svgPxH) / 2) {+          const pxPerUnitX = svgPxW / vbW;+          const pxPerUnitY = svgPxH / vbH;+          // Visible viewport in pixel space of the SVG element+          const visLeft = -panX / scale;+          const visTop = -panY / scale;+          const visW = ww / scale;+          const visH = wh / scale;+          // Convert to SVG user-space+          vbX = vbX + visLeft / pxPerUnitX;+          vbY = vbY + visTop / pxPerUnitY;+          vbW = visW / pxPerUnitX;+          vbH = visH / pxPerUnitY;+        }++        clone.setAttribute('viewBox', vbX + ' ' + vbY + ' ' + vbW + ' ' + vbH);+        clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');+        const xml = new XMLSerializer().serializeToString(clone);+        // Send SVG XML + dimensions to parent for canvas rendering+        window.parent.postMessage({+          type: 'mgmt_canvas_capture',+          _reqId: reqId,+          svgXml: xml,+          svgWidth: vbW,+          svgHeight: vbH,+          bgColor: '#0d1117'+        }, '*');+      } catch (err) {+        window.parent.postMessage({ type: 'mgmt_canvas_capture', _reqId: reqId, data: null }, '*');+      }+    }+  });+</script>+</body>+</html>\ No newline at end of file
LQM18JNR10J00D.glbadded
⋯ 1 unchanged line ⋯
LQM18JNR10J00D.html+72−78
@@ -149,9 +149,9 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t   <div class="tags">     <span class="tag pkg">0603</span>     <span class="tag mfr">Murata</span>-    <span class="tag series">LQM18JN</span>+    <span class="tag series">LQM18PN_FR</span>     <span class="tag rohs">RoHS</span>-    <span class="tag app">Signal / EMI</span>+    <span class="tag app">Power</span>   </div> </div> @@ -163,32 +163,32 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t       <div class="spec-card highlight">         <div class="sc-label">Inductance</div>         <div class="sc-value">100nH</div>-        <div class="sc-detail">&plusmn;5%</div>+        <div class="sc-detail">±20%</div>       </div>       <div class="spec-card">         <div class="sc-label">Rated Current</div>-        <div class="sc-value">650mA</div>+        <div class="sc-value">950mA</div>         <div class="sc-detail">&Delta;T &le; 40&deg;C</div>       </div>       <div class="spec-card">         <div class="sc-label">DCR</div>-        <div class="sc-value">0.41&Omega;</div>-        <div class="sc-detail">&plusmn;25%</div>+        <div class="sc-value">0.20&Omega;</div>+        <div class="sc-detail">±20%</div>       </div>       <div class="spec-card">         <div class="sc-label">SRF</div>-        <div class="sc-value">200MHz</div>+        <div class="sc-value">100MHz</div>         <div class="sc-detail">minimum</div>       </div>       <div class="spec-card">         <div class="sc-label">Q Factor</div>-        <div class="sc-value">8</div>-        <div class="sc-detail">min @ 25MHz</div>+        <div class="sc-value">&mdash;</div>+        <div class="sc-detail">&mdash;</div>       </div>       <div class="spec-card">         <div class="sc-label">Mouser</div>-        <div class="sc-value">$0.13</div>-        <div class="sc-detail">7,525 in stock</div>+        <div class="sc-value">$0.17</div>+        <div class="sc-detail">3,614 in stock</div>       </div>     </div>   </div>@@ -201,14 +201,14 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t         <h2 class="section-title">Electrical Characteristics</h2>         <div class="card">           <table class="detail-table">-            <tr><td>Inductance</td><td>100nH &plusmn;5%</td></tr>-            <tr><td>Q Factor (min)</td><td>8 @ 25MHz / 1mA</td></tr>-            <tr><td>DC Resistance (typ)</td><td>0.41&Omega;</td></tr>-            <tr><td>DC Resistance (max)</td><td>0.51&Omega;</td></tr>-            <tr><td>Self-Resonant Frequency</td><td>&ge;200 MHz</td></tr>-            <tr><td>Rated Current</td><td>650mA</td></tr>+            <tr><td>Inductance</td><td>100nH ±20%</td></tr>+            <tr><td>Q Factor (min)</td><td>&mdash;</td></tr>+            <tr><td>DC Resistance (typ)</td><td>0.20&Omega;</td></tr>+            <tr><td>DC Resistance (max)</td><td>0.25&Omega;</td></tr>+            <tr><td>Self-Resonant Frequency</td><td>&ge;100 MHz</td></tr>+            <tr><td>Rated Current</td><td>950mA</td></tr>             <tr><td>Rated Current Condition</td><td>&Delta;T &le; 40&deg;C rise</td></tr>-            <tr><td>Test Frequency</td><td>25 MHz</td></tr>+            <tr><td>Test Frequency</td><td>1 MHz</td></tr>             <tr><td>Test Equipment</td><td>Keysight 4294A</td></tr>           </table>         </div>@@ -220,7 +220,7 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t         <div class="card">           <table class="detail-table">             <tr><td>Operating Temp</td><td>&minus;40&deg;C to +85&deg;C</td></tr>-            <tr><td>Storage Temp</td><td>&minus;40&deg;C to +85&deg;C</td></tr>+            <tr><td>Storage Temp</td><td>&minus;55&deg;C to +125&deg;C</td></tr>             <tr><td>Storage Humidity</td><td>15% to 85% RH</td></tr>             <tr><td>Shelf Life</td><td>6 months</td></tr>             <tr><td>Solder Compatibility</td><td>Sn-3.0Ag-0.5Cu</td></tr>@@ -268,11 +268,11 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t               <line x1="445" y1="40" x2="445" y2="78" stroke="#484f58" stroke-width="0.5"/>               <line x1="441" y1="40" x2="449" y2="40" stroke="#484f58" stroke-width="0.5"/>               <line x1="441" y1="78" x2="449" y2="78" stroke="#484f58" stroke-width="0.5"/>-              <text x="455" y="63" fill="#e6edf3" font-size="10">0.55 &plusmn; 0.10</text>+              <text x="455" y="63" fill="#e6edf3" font-size="10">0.80 &plusmn; 0.15</text>                <!-- Physical specs -->               <text x="110" y="160" fill="#8b949e" font-size="10" text-anchor="middle">0603 (1608 metric)</text>-              <text x="370" y="100" fill="#8b949e" font-size="10" text-anchor="middle">Mass: 0.004g</text>+              <text x="370" y="100" fill="#8b949e" font-size="10" text-anchor="middle">Mass: 0.005g</text>             </svg>           </div>         </div>@@ -298,7 +298,7 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t   <div class="section">     <h2 class="section-title">Impedance Behavior</h2>     <div class="chart-wrap">-      <h3>Impedance vs. Frequency (characteristic shape for 100nH ferrite inductor)</h3>+      <h3>Impedance vs. Frequency (characteristic shape for 1.0&micro;H ferrite inductor)</h3>       <svg id="impedance-chart" width="100%" height="260" viewBox="0 0 700 260">         <!-- Grid -->         <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>@@ -322,7 +322,7 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t          <!-- SRF annotation -->         <line x1="420" y1="55" x2="420" y2="230" stroke="#00b8b0" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>-        <text x="420" y="248" fill="#00b8b0" font-size="10" text-anchor="middle">SRF: 200 MHz</text>+        <text x="420" y="248" fill="#00b8b0" font-size="10" text-anchor="middle">SRF: 100 MHz</text>          <!-- Region labels (positioned at top, away from curves) -->         <rect x="140" y="24" width="100" height="20" rx="4" fill="rgba(0,184,176,0.12)"/>@@ -336,11 +336,10 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t          <!-- Y axis labels (Z = 2πfL for inductive region) -->         <text x="55" y="214" fill="#484f58" font-size="9" text-anchor="end">0 &Omega;</text>-        <text x="55" y="190" fill="#484f58" font-size="9" text-anchor="end">6 &Omega;</text>-        <text x="55" y="170" fill="#484f58" font-size="9" text-anchor="end">19 &Omega;</text>-        <text x="55" y="140" fill="#484f58" font-size="9" text-anchor="end">31 &Omega;</text>-        <text x="55" y="100" fill="#484f58" font-size="9" text-anchor="end">75 &Omega;</text>-        <text x="55" y="58" fill="#484f58" font-size="9" text-anchor="end">500 &Omega;</text>+        <text x="55" y="185" fill="#484f58" font-size="9" text-anchor="end">63 &Omega;</text>+        <text x="55" y="140" fill="#484f58" font-size="9" text-anchor="end">314 &Omega;</text>+        <text x="55" y="80" fill="#484f58" font-size="9" text-anchor="end">600 &Omega;</text>+        <text x="55" y="58" fill="#484f58" font-size="9" text-anchor="end">900 &Omega;</text>         <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">|Z| impedance</text>          <!-- X axis labels -->@@ -350,7 +349,7 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t         <text x="540" y="248" fill="#484f58" font-size="9" text-anchor="middle">500M</text>         <text x="660" y="248" fill="#484f58" font-size="9" text-anchor="middle">1G</text>       </svg>-      <div class="chart-note">Impedance peaks at the self-resonant frequency (200 MHz). Below SRF the part behaves as an inductor; above SRF it's capacitive. Use at &le; &frac13; SRF (~66 MHz) for predictable inductive behavior.</div>+      <div class="chart-note">Impedance peaks at the self-resonant frequency (SRF). Below SRF the part behaves as an inductor; above SRF it's capacitive. Use at &le; &frac13; SRF for predictable inductive behavior.</div>     </div>   </div> @@ -439,38 +438,38 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t     <div class="env-grid">       <div class="env-card">         <div class="env-name">Heat Resistance</div>-        <div class="env-spec">No damage, &Delta;L &le; &plusmn;20%</div>+        <div class="env-spec">No damage, &Delta;L &le; &plusmn;30%</div>         <div class="env-detail">85&deg;C, 1000h</div>       </div>       <div class="env-card">         <div class="env-name">Cold Resistance</div>-        <div class="env-spec">No damage, &Delta;L &le; &plusmn;20%</div>+        <div class="env-spec">No damage, &Delta;L &le; &plusmn;30%</div>         <div class="env-detail">&minus;40&deg;C, 1000h</div>       </div>       <div class="env-card">         <div class="env-name">Humidity</div>-        <div class="env-spec">No damage, &Delta;L &le; &plusmn;20%</div>+        <div class="env-spec">No damage, &Delta;L &le; &plusmn;30%</div>         <div class="env-detail">70&deg;C, 90&ndash;95% RH, 1000h</div>       </div>       <div class="env-card">         <div class="env-name">Temperature Cycle</div>-        <div class="env-spec">No damage, &Delta;L &le; &plusmn;50%</div>+        <div class="env-spec">No damage, &Delta;L &le; &plusmn;30%</div>         <div class="env-detail">&minus;40&deg;C &harr; +85&deg;C, 100 cycles</div>       </div>       <div class="env-card">         <div class="env-name">Soldering Heat</div>         <div class="env-spec">No damage, &Delta;L &le; &plusmn;30%</div>-        <div class="env-detail">260&deg;C, 10s immersion</div>+        <div class="env-detail">270&plusmn;5&deg;C, 10s immersion</div>       </div>       <div class="env-card">         <div class="env-name">Solderability</div>-        <div class="env-spec">&ge;95% wetting</div>-        <div class="env-detail">245&deg;C, 3s, Sn-3.0Ag-0.5Cu</div>+        <div class="env-spec">&ge;90% wetting</div>+        <div class="env-detail">240&plusmn;5&deg;C, 3&plusmn;1s, Sn-3.0Ag-0.5Cu</div>       </div>       <div class="env-card">         <div class="env-name">Vibration</div>         <div class="env-spec">No damage</div>-        <div class="env-detail">10&ndash;2000Hz, 2h &times; 3 axes (6h total)</div>+        <div class="env-detail">10&ndash;2000Hz, 245 m/s&sup2;, 4h&times;3 axes (12h total)</div>       </div>       <div class="env-card">         <div class="env-name">Mechanical Shear</div>@@ -525,15 +524,15 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t       </div>       <div class="vendor-card">         <div class="vc-name digikey">DigiKey</div>-        <div class="vc-price">$0.13</div>-        <div class="vc-detail">21,960 in stock</div>+        <div class="vc-price">$0.17</div>+        <div class="vc-detail">25,703 in stock</div>         <div class="vc-detail">Status: Active</div>         <a class="vc-link" href="https://www.digikey.com/en/products/detail/murata-electronics/LQM18JNR10J00D/7564138" target="_blank">View on DigiKey &rarr;</a>       </div>       <div class="vendor-card">         <div class="vc-name jlcpcb">JLCPCB / LCSC</div>         <div class="vc-price">&mdash;</div>-        <div class="vc-detail">2,575 in stock</div>+        <div class="vc-detail">10,918 in stock</div>         <div class="vc-detail">Extended part</div>         <a class="vc-link" href="https://lcsc.com/product-detail/Inductors-SMD_Murata-Electronics-Murata-Electronics-LQM18JNR10J00D_C2044854.html" target="_blank">View on LCSC &rarr;</a>       </div>@@ -547,8 +546,8 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t     <div class="card">       <table class="detail-table">         <tr><td>Datasheet</td><td><button class="copy-btn" title="Copy link to clipboard" id="ds-copy-btn">&#x2398;</button>-<script>document.getElementById('ds-copy-btn').addEventListener('click',function(){var t=document.createElement('textarea');t.value='https://www.mouser.com/datasheet/3/76/2/JELF243B_0077.pdf';document.body.appendChild(t);t.select();document.execCommand('copy');document.body.removeChild(t);this.textContent='Copied!';var b=this;setTimeout(function(){b.innerHTML='⎘'},1500)})</script> <a href="https://www.mouser.com/datasheet/3/76/2/JELF243B_0077.pdf" target="_blank">JELF243B-0077 (PDF) &rarr;</a></td></tr>-        <tr><td>Spec Number</td><td>JELF243B-0077B-01</td></tr>+<script>document.getElementById('ds-copy-btn').addEventListener('click',function(){var t=document.createElement('textarea');t.value='https://www.mouser.com/datasheet/3/76/2/JELF243B_0033.pdf';document.body.appendChild(t);t.select();document.execCommand('copy');document.body.removeChild(t);this.textContent='Copied!';var b=this;setTimeout(function(){b.innerHTML='⎘'},1500)})</script> <a href="https://www.mouser.com/datasheet/3/76/2/JELF243B_0033.pdf" target="_blank">JELF243B-0033 (PDF) &rarr;</a></td></tr>+        <tr><td>Spec Number</td><td>JELF243B-0033</td></tr>         <tr><td>Manufacturer</td><td>Murata Mfg. Co., Ltd</td></tr>         <tr><td>Inventory Source</td><td><a href="https://inventory-2w8z8d9ojzzl.adom.cloud" target="_blank">Adom Parts Inventory &rarr;</a></td></tr>       </table>@@ -570,7 +569,7 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t   </div>    <div class="source">-    LQM18JNR10J00D characterization &middot; Data from Murata datasheet JELF243B-0077 + adom-parts-search &middot; 2026-05-29+    LQM18JNR10J00D characterization &middot; Data from Murata datasheet JELF243B-0033 + adom-parts-search &middot; 2026-05-29   </div>  </div>@@ -635,8 +634,8 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t     const pcbMat = new THREE.MeshStandardMaterial({ color: 0x0a2a0a, metalness: 0.0, roughness: 0.6 });     const dotMat = new THREE.MeshStandardMaterial({ color: 0x00b8b0, emissive: 0x005550, metalness: 0.0, roughness: 0.5 }); -    // Body: 1.6 x 0.8 x 0.55 mm — shrunk inward so terminals don't overlap-    const bodyW = 1.6, bodyD = 0.8, bodyH = 0.55;+    // Body: 1.6 x 0.8 x 0.80 mm — shrunk inward so terminals don't overlap+    const bodyW = 1.6, bodyD = 0.8, bodyH = 0.80;     const termW = 0.35;     const innerW = bodyW - termW * 2 + 0.02; // body stops just inside the terminal zone     const body = new THREE.Mesh(new THREE.BoxGeometry(innerW*S, bodyH*S, bodyD*S), bodyMat);@@ -851,21 +850,16 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t   // Impedance chart data (log frequency vs impedance)   // x: SVG x coord, y: SVG y coord, vx: frequency Hz, vy: impedance ohms   const impedanceData = [-    {sx:60,  sy:210, vx:1e6,   vy:0.63},-    {sx:120, sy:200, vx:3e6,   vy:1.9},-    {sx:180, sy:190, vx:10e6,  vy:6.3},-    {sx:220, sy:175, vx:18e6,  vy:11},-    {sx:260, sy:158, vx:30e6,  vy:19},-    {sx:300, sy:140, vx:50e6,  vy:31},-    {sx:340, sy:118, vx:80e6,  vy:50},-    {sx:380, sy:100, vx:120e6, vy:75},-    {sx:400, sy:78,  vx:160e6, vy:150},-    {sx:420, sy:55,  vx:200e6, vy:500},-    {sx:440, sy:65,  vx:240e6, vy:300},-    {sx:480, sy:100, vx:320e6, vy:80},-    {sx:540, sy:140, vx:500e6, vy:32},-    {sx:600, sy:170, vx:750e6, vy:14},-    {sx:660, sy:195, vx:1e9,   vy:8},+    {"sx": 60, "sy": 207, "vx": 1000000.0, "vy": 6.3},+    {"sx": 180, "sy": 185, "vx": 10000000.0, "vy": 63},+    {"sx": 260, "sy": 158, "vx": 30000000.0, "vy": 188},+    {"sx": 300, "sy": 140, "vx": 50000000.0, "vy": 314},+    {"sx": 380, "sy": 80, "vx": 90000000.0, "vy": 600},+    {"sx": 420, "sy": 55, "vx": 110000000.0, "vy": 900},+    {"sx": 460, "sy": 75, "vx": 150000000.0, "vy": 400},+    {"sx": 540, "sy": 140, "vx": 300000000.0, "vy": 50},+    {"sx": 600, "sy": 170, "vx": 500000000.0, "vy": 20},+    {"sx": 660, "sy": 190, "vx": 1000000000.0, "vy": 6},   ];    function fmtFreq(f) {@@ -883,15 +877,15 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t    // Reflow chart data (time vs temperature)   const reflowData = [-    {sx:80,  sy:185, vx:0,   vy:25},-    {sx:200, sy:140, vx:60,  vy:150},-    {sx:300, sy:140, vx:150, vy:150},-    {sx:380, sy:90,  vx:195, vy:220},-    {sx:420, sy:35,  vx:210, vy:245},-    {sx:460, sy:35,  vx:225, vy:245},-    {sx:500, sy:90,  vx:240, vy:220},-    {sx:580, sy:140, vx:280, vy:150},-    {sx:660, sy:185, vx:360, vy:25},+    {"sx": 80, "sy": 185, "vx": 0, "vy": 25},+    {"sx": 200, "sy": 140, "vx": 60, "vy": 150},+    {"sx": 300, "sy": 140, "vx": 150, "vy": 150},+    {"sx": 380, "sy": 90, "vx": 195, "vy": 220},+    {"sx": 420, "sy": 35, "vx": 210, "vy": 245},+    {"sx": 460, "sy": 35, "vx": 225, "vy": 245},+    {"sx": 500, "sy": 90, "vx": 240, "vy": 220},+    {"sx": 580, "sy": 140, "vx": 280, "vy": 150},+    {"sx": 660, "sy": 185, "vx": 360, "vy": 25},   ];    function fmtTime(t) { return t.toFixed(0) + 's'; }@@ -899,15 +893,15 @@ document.getElementById('copyFullUrl').addEventListener('click',function(){var t    // Reflow chart — multi-curve with click to switch   const reflowLimit = [-    {sx:80,  sy:185, vx:0,   vy:25},-    {sx:200, sy:140, vx:60,  vy:150},-    {sx:300, sy:140, vx:150, vy:150},-    {sx:370, sy:75,  vx:190, vy:230},-    {sx:410, sy:20,  vx:205, vy:260},-    {sx:470, sy:20,  vx:230, vy:260},-    {sx:510, sy:75,  vx:250, vy:230},-    {sx:580, sy:140, vx:280, vy:150},-    {sx:660, sy:185, vx:360, vy:25},+    {"sx": 80, "sy": 185, "vx": 0, "vy": 25},+    {"sx": 200, "sy": 140, "vx": 60, "vy": 150},+    {"sx": 300, "sy": 140, "vx": 150, "vy": 150},+    {"sx": 370, "sy": 75, "vx": 190, "vy": 230},+    {"sx": 410, "sy": 20, "vx": 205, "vy": 260},+    {"sx": 470, "sy": 20, "vx": 230, "vy": 260},+    {"sx": 510, "sy": 75, "vx": 250, "vy": 230},+    {"sx": 580, "sy": 140, "vx": 280, "vy": 150},+    {"sx": 660, "sy": 185, "vx": 360, "vy": 25},   ];    const reflowCurves = [
LQM18JNR10J00D.kicad_modadded+23
@@ -0,0 +1,23 @@+(footprint "LQM18JNR10J00D"+  (version 20240108)+  (generator "adom-footprint")+  (layer "F.Cu")+  (descr "Murata · Chip Coil (Chip Inductor) · Consumer & Industrial Equipment")+  (attr smd)+  (fp_rect (start -1.5 -0.75) (end 1.5 0.75)+    (stroke (width 0.05) (type default)) (fill none) (layer "F.CrtYd"))+  (fp_rect (start -0.8 -0.4) (end 0.8 0.4)+    (stroke (width 0.1) (type default)) (fill none) (layer "F.Fab"))+  (fp_rect (start -0.92 -0.52) (end 0.92 0.52)+    (stroke (width 0.12) (type default)) (fill none) (layer "F.SilkS"))+  (fp_line (start -1.1 -0.7) (end -0.5 -0.7)+    (stroke (width 0.12) (type default)) (layer "F.SilkS"))+  (fp_text reference "REF**" (at 0 -2.8)+    (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))+  (fp_text value "LQM18JNR10J00D" (at 0 2.8)+    (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))+  (pad "1" smd roundrect (at -0.8 0) (size 0.9 1)+    (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25))+  (pad "2" smd roundrect (at 0.8 0) (size 0.9 1)+    (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25))+)
LQM18JNR10J00D.kicad_symadded+127
@@ -0,0 +1,127 @@+(kicad_symbol_lib+  (version 20231120)+  (generator "adom")+  (symbol "LQM18JNR10J00D"+    (pin_numbers (hide yes))+    (pin_names (offset 1.016) (hide yes))+    (exclude_from_sim no)+    (in_bom yes)+    (on_board yes)+    (property "Reference" "L"+      (at -1.27 0 90)+      (effects+      (font+       (size 1.27 1.27)+      )+     )+    )+    (property "Value" "LQM18JNR10J00D"+      (at 1.905 0 90)+      (effects+      (font+       (size 1.27 1.27)+      )+     )+    )+    (property "Footprint" ""+      (at 0 0 0)+      (effects (font (size 1.27 1.27)) (hide yes))+    )+    (property "Datasheet" "~"+      (at 0 0 0)+      (effects (font (size 1.27 1.27)) (hide yes))+    )+    (property "Description" "Inductor"+      (at 0 0 0)+      (effects (font (size 1.27 1.27)) (hide yes))+    )+    (symbol "LQM18JNR10J00D_0_1"+     (arc+      (start 0 2.54)+      (mid 0.6323 1.905)+      (end 0 1.27)+      (stroke+       (width 0)+       (type default)+      )+      (fill+       (type none)+      )+     )+     (arc+      (start 0 1.27)+      (mid 0.6323 0.635)+      (end 0 0)+      (stroke+       (width 0)+       (type default)+      )+      (fill+       (type none)+      )+     )+     (arc+      (start 0 0)+      (mid 0.6323 -0.635)+      (end 0 -1.27)+      (stroke+       (width 0)+       (type default)+      )+      (fill+       (type none)+      )+     )+     (arc+      (start 0 -1.27)+      (mid 0.6323 -1.905)+      (end 0 -2.54)+      (stroke+       (width 0)+       (type default)+      )+      (fill+       (type none)+      )+     )+    )+    (symbol "LQM18JNR10J00D_1_1"+     (pin passive line+      (at 0 3.81 270)+      (length 1.27)+      (name "1"+       (effects+        (font+         (size 1.27 1.27)+        )+       )+      )+      (number "1"+       (effects+        (font+         (size 1.27 1.27)+        )+       )+      )+     )+     (pin passive line+      (at 0 -3.81 90)+      (length 1.27)+      (name "2"+       (effects+        (font+         (size 1.27 1.27)+        )+       )+      )+      (number "2"+       (effects+        (font+         (size 1.27 1.27)+        )+       )+      )+     )+    )+  )+)
LQM18JNR10J00D.lbradded+83
@@ -0,0 +1,83 @@+<?xml version="1.0" encoding="utf-8"?>+<!DOCTYPE eagle SYSTEM "eagle.dtd">+<eagle version="9.6.2">+<drawing>+<settings><setting alwaysvectorfont="no"/></settings>+<grid distance="0.1" unitdist="inch" unit="inch" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="inch" altunit="inch"/>+<layers>+<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>+<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>+<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>+<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>+<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>+<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>+<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>+<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>+<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>+<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>+<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>+<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>+<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>+<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>+<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>+<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>+<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>+<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>+<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>+<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>+<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>+<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>+<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>+<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>+<layer number="39" name="tKeepout" color="4" fill="11" visible="no" active="yes"/>+<layer number="40" name="bKeepout" color="1" fill="11" visible="no" active="yes"/>+<layer number="41" name="tRestrict" color="4" fill="10" visible="no" active="yes"/>+<layer number="42" name="bRestrict" color="1" fill="10" visible="no" active="yes"/>+<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="yes"/>+<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>+<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>+<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>+<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>+<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>+<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>+<layer number="91" name="Nets" color="2" fill="1" visible="yes" active="yes"/>+<layer number="92" name="Busses" color="1" fill="1" visible="yes" active="yes"/>+<layer number="93" name="Pins" color="2" fill="1" visible="no" active="yes"/>+<layer number="94" name="Symbols" color="4" fill="1" visible="yes" active="yes"/>+<layer number="95" name="Names" color="7" fill="1" visible="yes" active="yes"/>+<layer number="96" name="Values" color="7" fill="1" visible="yes" active="yes"/>+<layer number="97" name="Info" color="7" fill="1" visible="yes" active="yes"/>+<layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/>+</layers>+<library>+<description>LQM18JNR10J00D — 100nH 0603 — Murata</description>+<packages></packages>+<symbols>+<symbol name="LQM18JNR10J00D">+  <wire x1="-1.016" y1="2.54" x2="1.016" y2="2.54" width="0.254" layer="94"/>+  <wire x1="1.016" y1="2.54" x2="1.016" y2="-2.54" width="0.254" layer="94"/>+  <wire x1="1.016" y1="-2.54" x2="-1.016" y2="-2.54" width="0.254" layer="94"/>+  <wire x1="-1.016" y1="-2.54" x2="-1.016" y2="2.54" width="0.254" layer="94"/>+  <text x="0" y="5.08" size="1.27" layer="95" align="bottom-center">&gt;NAME</text>+  <text x="0" y="-5.08" size="1.27" layer="96" align="top-center">&gt;VALUE</text>+  <pin name="1" x="0" y="3.81" length="middle" direction="pas" rot="R270"/>+  <pin name="2" x="0" y="-3.81" length="middle" direction="pas" rot="R90"/>+</symbol>+</symbols>+<devicesets>+<deviceset name="LQM18JNR10J00D" prefix="L">+  <description>100nH 0603 — Murata</description>+  <gates>+    <gate name="G$1" symbol="LQM18JNR10J00D" x="0" y="0"/>+  </gates>+  <devices>+    <device name="">+      <connects/>+      <technologies><technology name=""/></technologies>+    </device>+  </devices>+</deviceset>+</devicesets>+</library>+</drawing>+</eagle>\ No newline at end of file
LQM18JNR10J00D.stepadded+1123
@@ -0,0 +1,1123 @@+ISO-10303-21;+HEADER;+/* L_0603_1608Metric.step 3D STEP model for use in ECAD systems+ * Copyright (C) 2017, kicad StepUp+ * + * This work is licensed under the [Creative Commons CC-BY-SA 4.0 License](https://creativecommons.org/licenses/by-sa/4.0/legalcode), + * with the following exception:+ * To the extent that the creation of electronic designs that use 'Licensed Material' can be considered to be 'Adapted Material', + * then the copyright holder waives article 3 of the license with respect to these designs and any generated files which use data provided + * as part of the 'Licensed Material'.+ * You are free to use the library data in your own projects without the obligation to share your project files under this or any other license agreement.+ * However, if you wish to redistribute these libraries, or parts thereof (including in modified form) as a collection then the exception above does not apply. + * Please refer to https://github.com/KiCad/kicad-packages3D/blob/master/LICENSE.md for further clarification of the exception.+ * Disclaimer of Warranties and Limitation of Liability.+ * These libraries are provided in the hope that they will be useful, but are provided without warranty of any kind, express or implied.+ * *USE 3D CAD DATA AT YOUR OWN RISK*+ * *DO NOT RELY UPON ANY INFORMATION FOUND HERE WITHOUT INDEPENDENT VERIFICATION.*+ * + */++FILE_DESCRIPTION(+/* description */ ('model of L_0603_1608Metric'),+/* implementation_level */ '2;1');++FILE_NAME(+/* name */ 'L_0603_1608Metric.step',+/* time_stamp */ '2017-12-10T01:58:04',+/* author */ ('kicad StepUp','ksu'),+/* organization */ ('FreeCAD'),+/* preprocessor_version */ 'OCC',+/* originating_system */ 'kicad StepUp',+/* authorisation */ '');++FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));+ENDSEC;++DATA;+#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',+'automotive_design',2000,#2);+#2 = APPLICATION_CONTEXT(+'core data for automotive mechanical design processes');+#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);+#4 = PRODUCT_DEFINITION_SHAPE('','',#5);+#5 = PRODUCT_DEFINITION('design','',#6,#9);+#6 = PRODUCT_DEFINITION_FORMATION('','',#7);+#7 = PRODUCT('L_0603_1608Metric','L_0603_1608Metric','',(#8));+#8 = PRODUCT_CONTEXT('',#2,'mechanical');+#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');+#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#869);+#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);+#12 = CARTESIAN_POINT('',(0.,0.,0.));+#13 = DIRECTION('',(0.,0.,1.));+#14 = DIRECTION('',(1.,0.,-0.));+#15 = MANIFOLD_SOLID_BREP('',#16);+#16 = CLOSED_SHELL('',(#17,#93,#124,#149,#174,#198,#222,#247,#272,#289,+#375,#407,#431,#456,#480,#505,#529,#554,#571,#657,#688,#713,#738,+#762,#786,#811,#836,#853));+#17 = ADVANCED_FACE('',(#18),#88,.F.);+#18 = FACE_BOUND('',#19,.F.);+#19 = EDGE_LOOP('',(#20,#30,#39,#47,#56,#64,#73,#81));+#20 = ORIENTED_EDGE('',*,*,#21,.F.);+#21 = EDGE_CURVE('',#22,#24,#26,.T.);+#22 = VERTEX_POINT('',#23);+#23 = CARTESIAN_POINT('',(-0.8,-0.4,3.E-02));+#24 = VERTEX_POINT('',#25);+#25 = CARTESIAN_POINT('',(-0.8,-0.4,0.77));+#26 = LINE('',#27,#28);+#27 = CARTESIAN_POINT('',(-0.8,-0.4,0.));+#28 = VECTOR('',#29,1.);+#29 = DIRECTION('',(0.,0.,1.));+#30 = ORIENTED_EDGE('',*,*,#31,.T.);+#31 = EDGE_CURVE('',#22,#32,#34,.T.);+#32 = VERTEX_POINT('',#33);+#33 = CARTESIAN_POINT('',(-0.8,-0.37,0.));+#34 = CIRCLE('',#35,3.E-02);+#35 = AXIS2_PLACEMENT_3D('',#36,#37,#38);+#36 = CARTESIAN_POINT('',(-0.8,-0.37,3.E-02));+#37 = DIRECTION('',(1.,0.,-0.));+#38 = DIRECTION('',(0.,0.,1.));+#39 = ORIENTED_EDGE('',*,*,#40,.T.);+#40 = EDGE_CURVE('',#32,#41,#43,.T.);+#41 = VERTEX_POINT('',#42);+#42 = CARTESIAN_POINT('',(-0.8,0.37,0.));+#43 = LINE('',#44,#45);+#44 = CARTESIAN_POINT('',(-0.8,-0.4,0.));+#45 = VECTOR('',#46,1.);+#46 = DIRECTION('',(0.,1.,0.));+#47 = ORIENTED_EDGE('',*,*,#48,.F.);+#48 = EDGE_CURVE('',#49,#41,#51,.T.);+#49 = VERTEX_POINT('',#50);+#50 = CARTESIAN_POINT('',(-0.8,0.4,3.E-02));+#51 = CIRCLE('',#52,3.E-02);+#52 = AXIS2_PLACEMENT_3D('',#53,#54,#55);+#53 = CARTESIAN_POINT('',(-0.8,0.37,3.E-02));+#54 = DIRECTION('',(-1.,0.,0.));+#55 = DIRECTION('',(0.,0.,1.));+#56 = ORIENTED_EDGE('',*,*,#57,.T.);+#57 = EDGE_CURVE('',#49,#58,#60,.T.);+#58 = VERTEX_POINT('',#59);+#59 = CARTESIAN_POINT('',(-0.8,0.4,0.77));+#60 = LINE('',#61,#62);+#61 = CARTESIAN_POINT('',(-0.8,0.4,0.));+#62 = VECTOR('',#63,1.);+#63 = DIRECTION('',(0.,0.,1.));+#64 = ORIENTED_EDGE('',*,*,#65,.T.);+#65 = EDGE_CURVE('',#58,#66,#68,.T.);+#66 = VERTEX_POINT('',#67);+#67 = CARTESIAN_POINT('',(-0.8,0.37,0.8));+#68 = CIRCLE('',#69,3.E-02);+#69 = AXIS2_PLACEMENT_3D('',#70,#71,#72);+#70 = CARTESIAN_POINT('',(-0.8,0.37,0.77));+#71 = DIRECTION('',(1.,0.,-0.));+#72 = DIRECTION('',(0.,0.,1.));+#73 = ORIENTED_EDGE('',*,*,#74,.F.);+#74 = EDGE_CURVE('',#75,#66,#77,.T.);+#75 = VERTEX_POINT('',#76);+#76 = CARTESIAN_POINT('',(-0.8,-0.37,0.8));+#77 = LINE('',#78,#79);+#78 = CARTESIAN_POINT('',(-0.8,-0.4,0.8));+#79 = VECTOR('',#80,1.);+#80 = DIRECTION('',(0.,1.,0.));+#81 = ORIENTED_EDGE('',*,*,#82,.F.);+#82 = EDGE_CURVE('',#24,#75,#83,.T.);+#83 = CIRCLE('',#84,3.E-02);+#84 = AXIS2_PLACEMENT_3D('',#85,#86,#87);+#85 = CARTESIAN_POINT('',(-0.8,-0.37,0.77));+#86 = DIRECTION('',(-1.,0.,0.));+#87 = DIRECTION('',(0.,0.,1.));+#88 = PLANE('',#89);+#89 = AXIS2_PLACEMENT_3D('',#90,#91,#92);+#90 = CARTESIAN_POINT('',(-0.8,-0.4,0.));+#91 = DIRECTION('',(1.,0.,0.));+#92 = DIRECTION('',(0.,0.,1.));+#93 = ADVANCED_FACE('',(#94),#119,.F.);+#94 = FACE_BOUND('',#95,.F.);+#95 = EDGE_LOOP('',(#96,#106,#112,#113));+#96 = ORIENTED_EDGE('',*,*,#97,.F.);+#97 = EDGE_CURVE('',#98,#100,#102,.T.);+#98 = VERTEX_POINT('',#99);+#99 = CARTESIAN_POINT('',(-0.5,-0.4,3.E-02));+#100 = VERTEX_POINT('',#101);+#101 = CARTESIAN_POINT('',(-0.5,-0.4,0.77));+#102 = LINE('',#103,#104);+#103 = CARTESIAN_POINT('',(-0.5,-0.4,0.));+#104 = VECTOR('',#105,1.);+#105 = DIRECTION('',(0.,0.,1.));+#106 = ORIENTED_EDGE('',*,*,#107,.F.);+#107 = EDGE_CURVE('',#22,#98,#108,.T.);+#108 = LINE('',#109,#110);+#109 = CARTESIAN_POINT('',(-0.8,-0.4,3.E-02));+#110 = VECTOR('',#111,1.);+#111 = DIRECTION('',(1.,0.,0.));+#112 = ORIENTED_EDGE('',*,*,#21,.T.);+#113 = ORIENTED_EDGE('',*,*,#114,.T.);+#114 = EDGE_CURVE('',#24,#100,#115,.T.);+#115 = LINE('',#116,#117);+#116 = CARTESIAN_POINT('',(-0.8,-0.4,0.77));+#117 = VECTOR('',#118,1.);+#118 = DIRECTION('',(1.,0.,0.));+#119 = PLANE('',#120);+#120 = AXIS2_PLACEMENT_3D('',#121,#122,#123);+#121 = CARTESIAN_POINT('',(-0.8,-0.4,0.));+#122 = DIRECTION('',(0.,1.,0.));+#123 = DIRECTION('',(0.,0.,1.));+#124 = ADVANCED_FACE('',(#125),#144,.T.);+#125 = FACE_BOUND('',#126,.T.);+#126 = EDGE_LOOP('',(#127,#128,#136,#143));+#127 = ORIENTED_EDGE('',*,*,#31,.T.);+#128 = ORIENTED_EDGE('',*,*,#129,.T.);+#129 = EDGE_CURVE('',#32,#130,#132,.T.);+#130 = VERTEX_POINT('',#131);+#131 = CARTESIAN_POINT('',(-0.5,-0.37,0.));+#132 = LINE('',#133,#134);+#133 = CARTESIAN_POINT('',(-0.8,-0.37,0.));+#134 = VECTOR('',#135,1.);+#135 = DIRECTION('',(1.,0.,0.));+#136 = ORIENTED_EDGE('',*,*,#137,.F.);+#137 = EDGE_CURVE('',#98,#130,#138,.T.);+#138 = CIRCLE('',#139,3.E-02);+#139 = AXIS2_PLACEMENT_3D('',#140,#141,#142);+#140 = CARTESIAN_POINT('',(-0.5,-0.37,3.E-02));+#141 = DIRECTION('',(1.,0.,-0.));+#142 = DIRECTION('',(0.,0.,1.));+#143 = ORIENTED_EDGE('',*,*,#107,.F.);+#144 = CYLINDRICAL_SURFACE('',#145,3.E-02);+#145 = AXIS2_PLACEMENT_3D('',#146,#147,#148);+#146 = CARTESIAN_POINT('',(-0.8,-0.37,3.E-02));+#147 = DIRECTION('',(1.,0.,0.));+#148 = DIRECTION('',(0.,-1.,0.));+#149 = ADVANCED_FACE('',(#150),#169,.T.);+#150 = FACE_BOUND('',#151,.F.);+#151 = EDGE_LOOP('',(#152,#153,#161,#168));+#152 = ORIENTED_EDGE('',*,*,#82,.T.);+#153 = ORIENTED_EDGE('',*,*,#154,.T.);+#154 = EDGE_CURVE('',#75,#155,#157,.T.);+#155 = VERTEX_POINT('',#156);+#156 = CARTESIAN_POINT('',(-0.5,-0.37,0.8));+#157 = LINE('',#158,#159);+#158 = CARTESIAN_POINT('',(-0.8,-0.37,0.8));+#159 = VECTOR('',#160,1.);+#160 = DIRECTION('',(1.,0.,0.));+#161 = ORIENTED_EDGE('',*,*,#162,.F.);+#162 = EDGE_CURVE('',#100,#155,#163,.T.);+#163 = CIRCLE('',#164,3.E-02);+#164 = AXIS2_PLACEMENT_3D('',#165,#166,#167);+#165 = CARTESIAN_POINT('',(-0.5,-0.37,0.77));+#166 = DIRECTION('',(-1.,0.,0.));+#167 = DIRECTION('',(0.,0.,1.));+#168 = ORIENTED_EDGE('',*,*,#114,.F.);+#169 = CYLINDRICAL_SURFACE('',#170,3.E-02);+#170 = AXIS2_PLACEMENT_3D('',#171,#172,#173);+#171 = CARTESIAN_POINT('',(-0.8,-0.37,0.77));+#172 = DIRECTION('',(1.,0.,0.));+#173 = DIRECTION('',(0.,-1.,0.));+#174 = ADVANCED_FACE('',(#175),#193,.F.);+#175 = FACE_BOUND('',#176,.F.);+#176 = EDGE_LOOP('',(#177,#178,#179,#187));+#177 = ORIENTED_EDGE('',*,*,#40,.F.);+#178 = ORIENTED_EDGE('',*,*,#129,.T.);+#179 = ORIENTED_EDGE('',*,*,#180,.T.);+#180 = EDGE_CURVE('',#130,#181,#183,.T.);+#181 = VERTEX_POINT('',#182);+#182 = CARTESIAN_POINT('',(-0.5,0.37,0.));+#183 = LINE('',#184,#185);+#184 = CARTESIAN_POINT('',(-0.5,-0.4,0.));+#185 = VECTOR('',#186,1.);+#186 = DIRECTION('',(0.,1.,0.));+#187 = ORIENTED_EDGE('',*,*,#188,.F.);+#188 = EDGE_CURVE('',#41,#181,#189,.T.);+#189 = LINE('',#190,#191);+#190 = CARTESIAN_POINT('',(-0.8,0.37,0.));+#191 = VECTOR('',#192,1.);+#192 = DIRECTION('',(1.,0.,0.));+#193 = PLANE('',#194);+#194 = AXIS2_PLACEMENT_3D('',#195,#196,#197);+#195 = CARTESIAN_POINT('',(-0.8,-0.4,0.));+#196 = DIRECTION('',(0.,0.,1.));+#197 = DIRECTION('',(1.,0.,0.));+#198 = ADVANCED_FACE('',(#199),#217,.T.);+#199 = FACE_BOUND('',#200,.T.);+#200 = EDGE_LOOP('',(#201,#202,#203,#211));+#201 = ORIENTED_EDGE('',*,*,#74,.F.);+#202 = ORIENTED_EDGE('',*,*,#154,.T.);+#203 = ORIENTED_EDGE('',*,*,#204,.T.);+#204 = EDGE_CURVE('',#155,#205,#207,.T.);+#205 = VERTEX_POINT('',#206);+#206 = CARTESIAN_POINT('',(-0.5,0.37,0.8));+#207 = LINE('',#208,#209);+#208 = CARTESIAN_POINT('',(-0.5,-0.4,0.8));+#209 = VECTOR('',#210,1.);+#210 = DIRECTION('',(0.,1.,0.));+#211 = ORIENTED_EDGE('',*,*,#212,.F.);+#212 = EDGE_CURVE('',#66,#205,#213,.T.);+#213 = LINE('',#214,#215);+#214 = CARTESIAN_POINT('',(-0.8,0.37,0.8));+#215 = VECTOR('',#216,1.);+#216 = DIRECTION('',(1.,0.,0.));+#217 = PLANE('',#218);+#218 = AXIS2_PLACEMENT_3D('',#219,#220,#221);+#219 = CARTESIAN_POINT('',(-0.8,-0.4,0.8));+#220 = DIRECTION('',(0.,0.,1.));+#221 = DIRECTION('',(1.,0.,0.));+#222 = ADVANCED_FACE('',(#223),#242,.T.);+#223 = FACE_BOUND('',#224,.F.);+#224 = EDGE_LOOP('',(#225,#226,#227,#236));+#225 = ORIENTED_EDGE('',*,*,#48,.T.);+#226 = ORIENTED_EDGE('',*,*,#188,.T.);+#227 = ORIENTED_EDGE('',*,*,#228,.F.);+#228 = EDGE_CURVE('',#229,#181,#231,.T.);+#229 = VERTEX_POINT('',#230);+#230 = CARTESIAN_POINT('',(-0.5,0.4,3.E-02));+#231 = CIRCLE('',#232,3.E-02);+#232 = AXIS2_PLACEMENT_3D('',#233,#234,#235);+#233 = CARTESIAN_POINT('',(-0.5,0.37,3.E-02));+#234 = DIRECTION('',(-1.,0.,0.));+#235 = DIRECTION('',(0.,0.,1.));+#236 = ORIENTED_EDGE('',*,*,#237,.F.);+#237 = EDGE_CURVE('',#49,#229,#238,.T.);+#238 = LINE('',#239,#240);+#239 = CARTESIAN_POINT('',(-0.8,0.4,3.E-02));+#240 = VECTOR('',#241,1.);+#241 = DIRECTION('',(1.,0.,0.));+#242 = CYLINDRICAL_SURFACE('',#243,3.E-02);+#243 = AXIS2_PLACEMENT_3D('',#244,#245,#246);+#244 = CARTESIAN_POINT('',(-0.8,0.37,3.E-02));+#245 = DIRECTION('',(1.,0.,0.));+#246 = DIRECTION('',(0.,1.,0.));+#247 = ADVANCED_FACE('',(#248),#267,.T.);+#248 = FACE_BOUND('',#249,.T.);+#249 = EDGE_LOOP('',(#250,#251,#252,#261));+#250 = ORIENTED_EDGE('',*,*,#65,.T.);+#251 = ORIENTED_EDGE('',*,*,#212,.T.);+#252 = ORIENTED_EDGE('',*,*,#253,.F.);+#253 = EDGE_CURVE('',#254,#205,#256,.T.);+#254 = VERTEX_POINT('',#255);+#255 = CARTESIAN_POINT('',(-0.5,0.4,0.77));+#256 = CIRCLE('',#257,3.E-02);+#257 = AXIS2_PLACEMENT_3D('',#258,#259,#260);+#258 = CARTESIAN_POINT('',(-0.5,0.37,0.77));+#259 = DIRECTION('',(1.,0.,-0.));+#260 = DIRECTION('',(0.,0.,1.));+#261 = ORIENTED_EDGE('',*,*,#262,.F.);+#262 = EDGE_CURVE('',#58,#254,#263,.T.);+#263 = LINE('',#264,#265);+#264 = CARTESIAN_POINT('',(-0.8,0.4,0.77));+#265 = VECTOR('',#266,1.);+#266 = DIRECTION('',(1.,0.,0.));+#267 = CYLINDRICAL_SURFACE('',#268,3.E-02);+#268 = AXIS2_PLACEMENT_3D('',#269,#270,#271);+#269 = CARTESIAN_POINT('',(-0.8,0.37,0.77));+#270 = DIRECTION('',(1.,0.,0.));+#271 = DIRECTION('',(0.,1.,0.));+#272 = ADVANCED_FACE('',(#273),#284,.T.);+#273 = FACE_BOUND('',#274,.T.);+#274 = EDGE_LOOP('',(#275,#281,#282,#283));+#275 = ORIENTED_EDGE('',*,*,#276,.F.);+#276 = EDGE_CURVE('',#229,#254,#277,.T.);+#277 = LINE('',#278,#279);+#278 = CARTESIAN_POINT('',(-0.5,0.4,0.));+#279 = VECTOR('',#280,1.);+#280 = DIRECTION('',(0.,0.,1.));+#281 = ORIENTED_EDGE('',*,*,#237,.F.);+#282 = ORIENTED_EDGE('',*,*,#57,.T.);+#283 = ORIENTED_EDGE('',*,*,#262,.T.);+#284 = PLANE('',#285);+#285 = AXIS2_PLACEMENT_3D('',#286,#287,#288);+#286 = CARTESIAN_POINT('',(-0.8,0.4,0.));+#287 = DIRECTION('',(0.,1.,0.));+#288 = DIRECTION('',(0.,0.,1.));+#289 = ADVANCED_FACE('',(#290,#300),#370,.T.);+#290 = FACE_BOUND('',#291,.T.);+#291 = EDGE_LOOP('',(#292,#293,#294,#295,#296,#297,#298,#299));+#292 = ORIENTED_EDGE('',*,*,#97,.F.);+#293 = ORIENTED_EDGE('',*,*,#137,.T.);+#294 = ORIENTED_EDGE('',*,*,#180,.T.);+#295 = ORIENTED_EDGE('',*,*,#228,.F.);+#296 = ORIENTED_EDGE('',*,*,#276,.T.);+#297 = ORIENTED_EDGE('',*,*,#253,.T.);+#298 = ORIENTED_EDGE('',*,*,#204,.F.);+#299 = ORIENTED_EDGE('',*,*,#162,.F.);+#300 = FACE_BOUND('',#301,.T.);+#301 = EDGE_LOOP('',(#302,#313,#321,#330,#338,#347,#355,#364));+#302 = ORIENTED_EDGE('',*,*,#303,.F.);+#303 = EDGE_CURVE('',#304,#306,#308,.T.);+#304 = VERTEX_POINT('',#305);+#305 = CARTESIAN_POINT('',(-0.5,-0.37,6.E-02));+#306 = VERTEX_POINT('',#307);+#307 = CARTESIAN_POINT('',(-0.5,-0.34,3.E-02));+#308 = CIRCLE('',#309,3.E-02);+#309 = AXIS2_PLACEMENT_3D('',#310,#311,#312);+#310 = CARTESIAN_POINT('',(-0.5,-0.34,6.E-02));+#311 = DIRECTION('',(1.,0.,-0.));+#312 = DIRECTION('',(0.,0.,1.));+#313 = ORIENTED_EDGE('',*,*,#314,.T.);+#314 = EDGE_CURVE('',#304,#315,#317,.T.);+#315 = VERTEX_POINT('',#316);+#316 = CARTESIAN_POINT('',(-0.5,-0.37,0.74));+#317 = LINE('',#318,#319);+#318 = CARTESIAN_POINT('',(-0.5,-0.37,3.E-02));+#319 = VECTOR('',#320,1.);+#320 = DIRECTION('',(0.,0.,1.));+#321 = ORIENTED_EDGE('',*,*,#322,.T.);+#322 = EDGE_CURVE('',#315,#323,#325,.T.);+#323 = VERTEX_POINT('',#324);+#324 = CARTESIAN_POINT('',(-0.5,-0.34,0.77));+#325 = CIRCLE('',#326,3.E-02);+#326 = AXIS2_PLACEMENT_3D('',#327,#328,#329);+#327 = CARTESIAN_POINT('',(-0.5,-0.34,0.74));+#328 = DIRECTION('',(-1.,0.,0.));+#329 = DIRECTION('',(0.,0.,1.));+#330 = ORIENTED_EDGE('',*,*,#331,.T.);+#331 = EDGE_CURVE('',#323,#332,#334,.T.);+#332 = VERTEX_POINT('',#333);+#333 = CARTESIAN_POINT('',(-0.5,0.34,0.77));+#334 = LINE('',#335,#336);+#335 = CARTESIAN_POINT('',(-0.5,-0.37,0.77));+#336 = VECTOR('',#337,1.);+#337 = DIRECTION('',(0.,1.,0.));+#338 = ORIENTED_EDGE('',*,*,#339,.F.);+#339 = EDGE_CURVE('',#340,#332,#342,.T.);+#340 = VERTEX_POINT('',#341);+#341 = CARTESIAN_POINT('',(-0.5,0.37,0.74));+#342 = CIRCLE('',#343,3.E-02);+#343 = AXIS2_PLACEMENT_3D('',#344,#345,#346);+#344 = CARTESIAN_POINT('',(-0.5,0.34,0.74));+#345 = DIRECTION('',(1.,0.,-0.));+#346 = DIRECTION('',(0.,0.,1.));+#347 = ORIENTED_EDGE('',*,*,#348,.F.);+#348 = EDGE_CURVE('',#349,#340,#351,.T.);+#349 = VERTEX_POINT('',#350);+#350 = CARTESIAN_POINT('',(-0.5,0.37,6.E-02));+#351 = LINE('',#352,#353);+#352 = CARTESIAN_POINT('',(-0.5,0.37,3.E-02));+#353 = VECTOR('',#354,1.);+#354 = DIRECTION('',(0.,0.,1.));+#355 = ORIENTED_EDGE('',*,*,#356,.T.);+#356 = EDGE_CURVE('',#349,#357,#359,.T.);+#357 = VERTEX_POINT('',#358);+#358 = CARTESIAN_POINT('',(-0.5,0.34,3.E-02));+#359 = CIRCLE('',#360,3.E-02);+#360 = AXIS2_PLACEMENT_3D('',#361,#362,#363);+#361 = CARTESIAN_POINT('',(-0.5,0.34,6.E-02));+#362 = DIRECTION('',(-1.,0.,0.));+#363 = DIRECTION('',(0.,0.,1.));+#364 = ORIENTED_EDGE('',*,*,#365,.F.);+#365 = EDGE_CURVE('',#306,#357,#366,.T.);+#366 = LINE('',#367,#368);+#367 = CARTESIAN_POINT('',(-0.5,-0.37,3.E-02));+#368 = VECTOR('',#369,1.);+#369 = DIRECTION('',(0.,1.,0.));+#370 = PLANE('',#371);+#371 = AXIS2_PLACEMENT_3D('',#372,#373,#374);+#372 = CARTESIAN_POINT('',(-0.5,-0.4,0.));+#373 = DIRECTION('',(1.,0.,0.));+#374 = DIRECTION('',(0.,0.,1.));+#375 = ADVANCED_FACE('',(#376),#402,.T.);+#376 = FACE_BOUND('',#377,.T.);+#377 = EDGE_LOOP('',(#378,#379,#387,#396));+#378 = ORIENTED_EDGE('',*,*,#303,.T.);+#379 = ORIENTED_EDGE('',*,*,#380,.T.);+#380 = EDGE_CURVE('',#306,#381,#383,.T.);+#381 = VERTEX_POINT('',#382);+#382 = CARTESIAN_POINT('',(0.5,-0.34,3.E-02));+#383 = LINE('',#384,#385);+#384 = CARTESIAN_POINT('',(-0.5,-0.34,3.E-02));+#385 = VECTOR('',#386,1.);+#386 = DIRECTION('',(1.,0.,0.));+#387 = ORIENTED_EDGE('',*,*,#388,.F.);+#388 = EDGE_CURVE('',#389,#381,#391,.T.);+#389 = VERTEX_POINT('',#390);+#390 = CARTESIAN_POINT('',(0.5,-0.37,6.E-02));+#391 = CIRCLE('',#392,3.E-02);+#392 = AXIS2_PLACEMENT_3D('',#393,#394,#395);+#393 = CARTESIAN_POINT('',(0.5,-0.34,6.E-02));+#394 = DIRECTION('',(1.,0.,-0.));+#395 = DIRECTION('',(0.,0.,1.));+#396 = ORIENTED_EDGE('',*,*,#397,.F.);+#397 = EDGE_CURVE('',#304,#389,#398,.T.);+#398 = LINE('',#399,#400);+#399 = CARTESIAN_POINT('',(-0.5,-0.37,6.E-02));+#400 = VECTOR('',#401,1.);+#401 = DIRECTION('',(1.,0.,0.));+#402 = CYLINDRICAL_SURFACE('',#403,3.E-02);+#403 = AXIS2_PLACEMENT_3D('',#404,#405,#406);+#404 = CARTESIAN_POINT('',(-0.5,-0.34,6.E-02));+#405 = DIRECTION('',(1.,0.,0.));+#406 = DIRECTION('',(0.,-1.,0.));+#407 = ADVANCED_FACE('',(#408),#426,.F.);+#408 = FACE_BOUND('',#409,.F.);+#409 = EDGE_LOOP('',(#410,#411,#412,#420));+#410 = ORIENTED_EDGE('',*,*,#365,.F.);+#411 = ORIENTED_EDGE('',*,*,#380,.T.);+#412 = ORIENTED_EDGE('',*,*,#413,.T.);+#413 = EDGE_CURVE('',#381,#414,#416,.T.);+#414 = VERTEX_POINT('',#415);+#415 = CARTESIAN_POINT('',(0.5,0.34,3.E-02));+#416 = LINE('',#417,#418);+#417 = CARTESIAN_POINT('',(0.5,-0.37,3.E-02));+#418 = VECTOR('',#419,1.);+#419 = DIRECTION('',(0.,1.,0.));+#420 = ORIENTED_EDGE('',*,*,#421,.F.);+#421 = EDGE_CURVE('',#357,#414,#422,.T.);+#422 = LINE('',#423,#424);+#423 = CARTESIAN_POINT('',(-0.5,0.34,3.E-02));+#424 = VECTOR('',#425,1.);+#425 = DIRECTION('',(1.,0.,0.));+#426 = PLANE('',#427);+#427 = AXIS2_PLACEMENT_3D('',#428,#429,#430);+#428 = CARTESIAN_POINT('',(-0.5,-0.37,3.E-02));+#429 = DIRECTION('',(0.,0.,1.));+#430 = DIRECTION('',(1.,0.,0.));+#431 = ADVANCED_FACE('',(#432),#451,.T.);+#432 = FACE_BOUND('',#433,.F.);+#433 = EDGE_LOOP('',(#434,#435,#436,#445));+#434 = ORIENTED_EDGE('',*,*,#356,.T.);+#435 = ORIENTED_EDGE('',*,*,#421,.T.);+#436 = ORIENTED_EDGE('',*,*,#437,.F.);+#437 = EDGE_CURVE('',#438,#414,#440,.T.);+#438 = VERTEX_POINT('',#439);+#439 = CARTESIAN_POINT('',(0.5,0.37,6.E-02));+#440 = CIRCLE('',#441,3.E-02);+#441 = AXIS2_PLACEMENT_3D('',#442,#443,#444);+#442 = CARTESIAN_POINT('',(0.5,0.34,6.E-02));+#443 = DIRECTION('',(-1.,0.,0.));+#444 = DIRECTION('',(0.,0.,1.));+#445 = ORIENTED_EDGE('',*,*,#446,.F.);+#446 = EDGE_CURVE('',#349,#438,#447,.T.);+#447 = LINE('',#448,#449);+#448 = CARTESIAN_POINT('',(-0.5,0.37,6.E-02));+#449 = VECTOR('',#450,1.);+#450 = DIRECTION('',(1.,0.,0.));+#451 = CYLINDRICAL_SURFACE('',#452,3.E-02);+#452 = AXIS2_PLACEMENT_3D('',#453,#454,#455);+#453 = CARTESIAN_POINT('',(-0.5,0.34,6.E-02));+#454 = DIRECTION('',(1.,0.,0.));+#455 = DIRECTION('',(0.,1.,0.));+#456 = ADVANCED_FACE('',(#457),#475,.T.);+#457 = FACE_BOUND('',#458,.T.);+#458 = EDGE_LOOP('',(#459,#467,#468,#469));+#459 = ORIENTED_EDGE('',*,*,#460,.F.);+#460 = EDGE_CURVE('',#438,#461,#463,.T.);+#461 = VERTEX_POINT('',#462);+#462 = CARTESIAN_POINT('',(0.5,0.37,0.74));+#463 = LINE('',#464,#465);+#464 = CARTESIAN_POINT('',(0.5,0.37,3.E-02));+#465 = VECTOR('',#466,1.);+#466 = DIRECTION('',(0.,0.,1.));+#467 = ORIENTED_EDGE('',*,*,#446,.F.);+#468 = ORIENTED_EDGE('',*,*,#348,.T.);+#469 = ORIENTED_EDGE('',*,*,#470,.T.);+#470 = EDGE_CURVE('',#340,#461,#471,.T.);+#471 = LINE('',#472,#473);+#472 = CARTESIAN_POINT('',(-0.5,0.37,0.74));+#473 = VECTOR('',#474,1.);+#474 = DIRECTION('',(1.,0.,0.));+#475 = PLANE('',#476);+#476 = AXIS2_PLACEMENT_3D('',#477,#478,#479);+#477 = CARTESIAN_POINT('',(-0.5,0.37,3.E-02));+#478 = DIRECTION('',(0.,1.,0.));+#479 = DIRECTION('',(0.,0.,1.));+#480 = ADVANCED_FACE('',(#481),#500,.T.);+#481 = FACE_BOUND('',#482,.T.);+#482 = EDGE_LOOP('',(#483,#484,#492,#499));+#483 = ORIENTED_EDGE('',*,*,#339,.T.);+#484 = ORIENTED_EDGE('',*,*,#485,.T.);+#485 = EDGE_CURVE('',#332,#486,#488,.T.);+#486 = VERTEX_POINT('',#487);+#487 = CARTESIAN_POINT('',(0.5,0.34,0.77));+#488 = LINE('',#489,#490);+#489 = CARTESIAN_POINT('',(-0.5,0.34,0.77));+#490 = VECTOR('',#491,1.);+#491 = DIRECTION('',(1.,0.,0.));+#492 = ORIENTED_EDGE('',*,*,#493,.F.);+#493 = EDGE_CURVE('',#461,#486,#494,.T.);+#494 = CIRCLE('',#495,3.E-02);+#495 = AXIS2_PLACEMENT_3D('',#496,#497,#498);+#496 = CARTESIAN_POINT('',(0.5,0.34,0.74));+#497 = DIRECTION('',(1.,0.,-0.));+#498 = DIRECTION('',(0.,0.,1.));+#499 = ORIENTED_EDGE('',*,*,#470,.F.);+#500 = CYLINDRICAL_SURFACE('',#501,3.E-02);+#501 = AXIS2_PLACEMENT_3D('',#502,#503,#504);+#502 = CARTESIAN_POINT('',(-0.5,0.34,0.74));+#503 = DIRECTION('',(1.,0.,0.));+#504 = DIRECTION('',(0.,1.,0.));+#505 = ADVANCED_FACE('',(#506),#524,.T.);+#506 = FACE_BOUND('',#507,.T.);+#507 = EDGE_LOOP('',(#508,#509,#517,#523));+#508 = ORIENTED_EDGE('',*,*,#331,.F.);+#509 = ORIENTED_EDGE('',*,*,#510,.T.);+#510 = EDGE_CURVE('',#323,#511,#513,.T.);+#511 = VERTEX_POINT('',#512);+#512 = CARTESIAN_POINT('',(0.5,-0.34,0.77));+#513 = LINE('',#514,#515);+#514 = CARTESIAN_POINT('',(-0.5,-0.34,0.77));+#515 = VECTOR('',#516,1.);+#516 = DIRECTION('',(1.,0.,0.));+#517 = ORIENTED_EDGE('',*,*,#518,.T.);+#518 = EDGE_CURVE('',#511,#486,#519,.T.);+#519 = LINE('',#520,#521);+#520 = CARTESIAN_POINT('',(0.5,-0.37,0.77));+#521 = VECTOR('',#522,1.);+#522 = DIRECTION('',(0.,1.,0.));+#523 = ORIENTED_EDGE('',*,*,#485,.F.);+#524 = PLANE('',#525);+#525 = AXIS2_PLACEMENT_3D('',#526,#527,#528);+#526 = CARTESIAN_POINT('',(-0.5,-0.37,0.77));+#527 = DIRECTION('',(0.,0.,1.));+#528 = DIRECTION('',(1.,0.,0.));+#529 = ADVANCED_FACE('',(#530),#549,.T.);+#530 = FACE_BOUND('',#531,.F.);+#531 = EDGE_LOOP('',(#532,#533,#534,#543));+#532 = ORIENTED_EDGE('',*,*,#322,.T.);+#533 = ORIENTED_EDGE('',*,*,#510,.T.);+#534 = ORIENTED_EDGE('',*,*,#535,.F.);+#535 = EDGE_CURVE('',#536,#511,#538,.T.);+#536 = VERTEX_POINT('',#537);+#537 = CARTESIAN_POINT('',(0.5,-0.37,0.74));+#538 = CIRCLE('',#539,3.E-02);+#539 = AXIS2_PLACEMENT_3D('',#540,#541,#542);+#540 = CARTESIAN_POINT('',(0.5,-0.34,0.74));+#541 = DIRECTION('',(-1.,0.,0.));+#542 = DIRECTION('',(0.,0.,1.));+#543 = ORIENTED_EDGE('',*,*,#544,.F.);+#544 = EDGE_CURVE('',#315,#536,#545,.T.);+#545 = LINE('',#546,#547);+#546 = CARTESIAN_POINT('',(-0.5,-0.37,0.74));+#547 = VECTOR('',#548,1.);+#548 = DIRECTION('',(1.,0.,0.));+#549 = CYLINDRICAL_SURFACE('',#550,3.E-02);+#550 = AXIS2_PLACEMENT_3D('',#551,#552,#553);+#551 = CARTESIAN_POINT('',(-0.5,-0.34,0.74));+#552 = DIRECTION('',(1.,0.,0.));+#553 = DIRECTION('',(0.,-1.,0.));+#554 = ADVANCED_FACE('',(#555),#566,.F.);+#555 = FACE_BOUND('',#556,.F.);+#556 = EDGE_LOOP('',(#557,#563,#564,#565));+#557 = ORIENTED_EDGE('',*,*,#558,.F.);+#558 = EDGE_CURVE('',#389,#536,#559,.T.);+#559 = LINE('',#560,#561);+#560 = CARTESIAN_POINT('',(0.5,-0.37,3.E-02));+#561 = VECTOR('',#562,1.);+#562 = DIRECTION('',(0.,0.,1.));+#563 = ORIENTED_EDGE('',*,*,#397,.F.);+#564 = ORIENTED_EDGE('',*,*,#314,.T.);+#565 = ORIENTED_EDGE('',*,*,#544,.T.);+#566 = PLANE('',#567);+#567 = AXIS2_PLACEMENT_3D('',#568,#569,#570);+#568 = CARTESIAN_POINT('',(-0.5,-0.37,3.E-02));+#569 = DIRECTION('',(0.,1.,0.));+#570 = DIRECTION('',(0.,0.,1.));+#571 = ADVANCED_FACE('',(#572,#642),#652,.F.);+#572 = FACE_BOUND('',#573,.F.);+#573 = EDGE_LOOP('',(#574,#584,#593,#601,#610,#618,#627,#635));+#574 = ORIENTED_EDGE('',*,*,#575,.F.);+#575 = EDGE_CURVE('',#576,#578,#580,.T.);+#576 = VERTEX_POINT('',#577);+#577 = CARTESIAN_POINT('',(0.5,-0.4,3.E-02));+#578 = VERTEX_POINT('',#579);+#579 = CARTESIAN_POINT('',(0.5,-0.4,0.77));+#580 = LINE('',#581,#582);+#581 = CARTESIAN_POINT('',(0.5,-0.4,0.));+#582 = VECTOR('',#583,1.);+#583 = DIRECTION('',(0.,0.,1.));+#584 = ORIENTED_EDGE('',*,*,#585,.T.);+#585 = EDGE_CURVE('',#576,#586,#588,.T.);+#586 = VERTEX_POINT('',#587);+#587 = CARTESIAN_POINT('',(0.5,-0.37,0.));+#588 = CIRCLE('',#589,3.E-02);+#589 = AXIS2_PLACEMENT_3D('',#590,#591,#592);+#590 = CARTESIAN_POINT('',(0.5,-0.37,3.E-02));+#591 = DIRECTION('',(1.,0.,-0.));+#592 = DIRECTION('',(0.,0.,1.));+#593 = ORIENTED_EDGE('',*,*,#594,.T.);+#594 = EDGE_CURVE('',#586,#595,#597,.T.);+#595 = VERTEX_POINT('',#596);+#596 = CARTESIAN_POINT('',(0.5,0.37,0.));+#597 = LINE('',#598,#599);+#598 = CARTESIAN_POINT('',(0.5,-0.4,0.));+#599 = VECTOR('',#600,1.);+#600 = DIRECTION('',(0.,1.,0.));+#601 = ORIENTED_EDGE('',*,*,#602,.F.);+#602 = EDGE_CURVE('',#603,#595,#605,.T.);+#603 = VERTEX_POINT('',#604);+#604 = CARTESIAN_POINT('',(0.5,0.4,3.E-02));+#605 = CIRCLE('',#606,3.E-02);+#606 = AXIS2_PLACEMENT_3D('',#607,#608,#609);+#607 = CARTESIAN_POINT('',(0.5,0.37,3.E-02));+#608 = DIRECTION('',(-1.,0.,0.));+#609 = DIRECTION('',(0.,0.,1.));+#610 = ORIENTED_EDGE('',*,*,#611,.T.);+#611 = EDGE_CURVE('',#603,#612,#614,.T.);+#612 = VERTEX_POINT('',#613);+#613 = CARTESIAN_POINT('',(0.5,0.4,0.77));+#614 = LINE('',#615,#616);+#615 = CARTESIAN_POINT('',(0.5,0.4,0.));+#616 = VECTOR('',#617,1.);+#617 = DIRECTION('',(0.,0.,1.));+#618 = ORIENTED_EDGE('',*,*,#619,.T.);+#619 = EDGE_CURVE('',#612,#620,#622,.T.);+#620 = VERTEX_POINT('',#621);+#621 = CARTESIAN_POINT('',(0.5,0.37,0.8));+#622 = CIRCLE('',#623,3.E-02);+#623 = AXIS2_PLACEMENT_3D('',#624,#625,#626);+#624 = CARTESIAN_POINT('',(0.5,0.37,0.77));+#625 = DIRECTION('',(1.,0.,-0.));+#626 = DIRECTION('',(0.,0.,1.));+#627 = ORIENTED_EDGE('',*,*,#628,.F.);+#628 = EDGE_CURVE('',#629,#620,#631,.T.);+#629 = VERTEX_POINT('',#630);+#630 = CARTESIAN_POINT('',(0.5,-0.37,0.8));+#631 = LINE('',#632,#633);+#632 = CARTESIAN_POINT('',(0.5,-0.4,0.8));+#633 = VECTOR('',#634,1.);+#634 = DIRECTION('',(0.,1.,0.));+#635 = ORIENTED_EDGE('',*,*,#636,.F.);+#636 = EDGE_CURVE('',#578,#629,#637,.T.);+#637 = CIRCLE('',#638,3.E-02);+#638 = AXIS2_PLACEMENT_3D('',#639,#640,#641);+#639 = CARTESIAN_POINT('',(0.5,-0.37,0.77));+#640 = DIRECTION('',(-1.,0.,0.));+#641 = DIRECTION('',(0.,0.,1.));+#642 = FACE_BOUND('',#643,.F.);+#643 = EDGE_LOOP('',(#644,#645,#646,#647,#648,#649,#650,#651));+#644 = ORIENTED_EDGE('',*,*,#388,.F.);+#645 = ORIENTED_EDGE('',*,*,#558,.T.);+#646 = ORIENTED_EDGE('',*,*,#535,.T.);+#647 = ORIENTED_EDGE('',*,*,#518,.T.);+#648 = ORIENTED_EDGE('',*,*,#493,.F.);+#649 = ORIENTED_EDGE('',*,*,#460,.F.);+#650 = ORIENTED_EDGE('',*,*,#437,.T.);+#651 = ORIENTED_EDGE('',*,*,#413,.F.);+#652 = PLANE('',#653);+#653 = AXIS2_PLACEMENT_3D('',#654,#655,#656);+#654 = CARTESIAN_POINT('',(0.5,-0.4,0.));+#655 = DIRECTION('',(1.,0.,0.));+#656 = DIRECTION('',(0.,0.,1.));+#657 = ADVANCED_FACE('',(#658),#683,.F.);+#658 = FACE_BOUND('',#659,.F.);+#659 = EDGE_LOOP('',(#660,#670,#676,#677));+#660 = ORIENTED_EDGE('',*,*,#661,.F.);+#661 = EDGE_CURVE('',#662,#664,#666,.T.);+#662 = VERTEX_POINT('',#663);+#663 = CARTESIAN_POINT('',(0.8,-0.4,3.E-02));+#664 = VERTEX_POINT('',#665);+#665 = CARTESIAN_POINT('',(0.8,-0.4,0.77));+#666 = LINE('',#667,#668);+#667 = CARTESIAN_POINT('',(0.8,-0.4,0.));+#668 = VECTOR('',#669,1.);+#669 = DIRECTION('',(0.,0.,1.));+#670 = ORIENTED_EDGE('',*,*,#671,.F.);+#671 = EDGE_CURVE('',#576,#662,#672,.T.);+#672 = LINE('',#673,#674);+#673 = CARTESIAN_POINT('',(0.5,-0.4,3.E-02));+#674 = VECTOR('',#675,1.);+#675 = DIRECTION('',(1.,0.,0.));+#676 = ORIENTED_EDGE('',*,*,#575,.T.);+#677 = ORIENTED_EDGE('',*,*,#678,.T.);+#678 = EDGE_CURVE('',#578,#664,#679,.T.);+#679 = LINE('',#680,#681);+#680 = CARTESIAN_POINT('',(0.5,-0.4,0.77));+#681 = VECTOR('',#682,1.);+#682 = DIRECTION('',(1.,0.,0.));+#683 = PLANE('',#684);+#684 = AXIS2_PLACEMENT_3D('',#685,#686,#687);+#685 = CARTESIAN_POINT('',(0.5,-0.4,0.));+#686 = DIRECTION('',(0.,1.,0.));+#687 = DIRECTION('',(0.,0.,1.));+#688 = ADVANCED_FACE('',(#689),#708,.T.);+#689 = FACE_BOUND('',#690,.T.);+#690 = EDGE_LOOP('',(#691,#692,#700,#707));+#691 = ORIENTED_EDGE('',*,*,#585,.T.);+#692 = ORIENTED_EDGE('',*,*,#693,.T.);+#693 = EDGE_CURVE('',#586,#694,#696,.T.);+#694 = VERTEX_POINT('',#695);+#695 = CARTESIAN_POINT('',(0.8,-0.37,0.));+#696 = LINE('',#697,#698);+#697 = CARTESIAN_POINT('',(0.5,-0.37,0.));+#698 = VECTOR('',#699,1.);+#699 = DIRECTION('',(1.,0.,0.));+#700 = ORIENTED_EDGE('',*,*,#701,.F.);+#701 = EDGE_CURVE('',#662,#694,#702,.T.);+#702 = CIRCLE('',#703,3.E-02);+#703 = AXIS2_PLACEMENT_3D('',#704,#705,#706);+#704 = CARTESIAN_POINT('',(0.8,-0.37,3.E-02));+#705 = DIRECTION('',(1.,0.,-0.));+#706 = DIRECTION('',(0.,0.,1.));+#707 = ORIENTED_EDGE('',*,*,#671,.F.);+#708 = CYLINDRICAL_SURFACE('',#709,3.E-02);+#709 = AXIS2_PLACEMENT_3D('',#710,#711,#712);+#710 = CARTESIAN_POINT('',(0.5,-0.37,3.E-02));+#711 = DIRECTION('',(1.,0.,0.));+#712 = DIRECTION('',(0.,-1.,0.));+#713 = ADVANCED_FACE('',(#714),#733,.T.);+#714 = FACE_BOUND('',#715,.F.);+#715 = EDGE_LOOP('',(#716,#717,#725,#732));+#716 = ORIENTED_EDGE('',*,*,#636,.T.);+#717 = ORIENTED_EDGE('',*,*,#718,.T.);+#718 = EDGE_CURVE('',#629,#719,#721,.T.);+#719 = VERTEX_POINT('',#720);+#720 = CARTESIAN_POINT('',(0.8,-0.37,0.8));+#721 = LINE('',#722,#723);+#722 = CARTESIAN_POINT('',(0.5,-0.37,0.8));+#723 = VECTOR('',#724,1.);+#724 = DIRECTION('',(1.,0.,0.));+#725 = ORIENTED_EDGE('',*,*,#726,.F.);+#726 = EDGE_CURVE('',#664,#719,#727,.T.);+#727 = CIRCLE('',#728,3.E-02);+#728 = AXIS2_PLACEMENT_3D('',#729,#730,#731);+#729 = CARTESIAN_POINT('',(0.8,-0.37,0.77));+#730 = DIRECTION('',(-1.,0.,0.));+#731 = DIRECTION('',(0.,0.,1.));+#732 = ORIENTED_EDGE('',*,*,#678,.F.);+#733 = CYLINDRICAL_SURFACE('',#734,3.E-02);+#734 = AXIS2_PLACEMENT_3D('',#735,#736,#737);+#735 = CARTESIAN_POINT('',(0.5,-0.37,0.77));+#736 = DIRECTION('',(1.,0.,0.));+#737 = DIRECTION('',(0.,-1.,0.));+#738 = ADVANCED_FACE('',(#739),#757,.F.);+#739 = FACE_BOUND('',#740,.F.);+#740 = EDGE_LOOP('',(#741,#742,#743,#751));+#741 = ORIENTED_EDGE('',*,*,#594,.F.);+#742 = ORIENTED_EDGE('',*,*,#693,.T.);+#743 = ORIENTED_EDGE('',*,*,#744,.T.);+#744 = EDGE_CURVE('',#694,#745,#747,.T.);+#745 = VERTEX_POINT('',#746);+#746 = CARTESIAN_POINT('',(0.8,0.37,0.));+#747 = LINE('',#748,#749);+#748 = CARTESIAN_POINT('',(0.8,-0.4,0.));+#749 = VECTOR('',#750,1.);+#750 = DIRECTION('',(0.,1.,0.));+#751 = ORIENTED_EDGE('',*,*,#752,.F.);+#752 = EDGE_CURVE('',#595,#745,#753,.T.);+#753 = LINE('',#754,#755);+#754 = CARTESIAN_POINT('',(0.5,0.37,0.));+#755 = VECTOR('',#756,1.);+#756 = DIRECTION('',(1.,0.,0.));+#757 = PLANE('',#758);+#758 = AXIS2_PLACEMENT_3D('',#759,#760,#761);+#759 = CARTESIAN_POINT('',(0.5,-0.4,0.));+#760 = DIRECTION('',(0.,0.,1.));+#761 = DIRECTION('',(1.,0.,0.));+#762 = ADVANCED_FACE('',(#763),#781,.T.);+#763 = FACE_BOUND('',#764,.T.);+#764 = EDGE_LOOP('',(#765,#766,#767,#775));+#765 = ORIENTED_EDGE('',*,*,#628,.F.);+#766 = ORIENTED_EDGE('',*,*,#718,.T.);+#767 = ORIENTED_EDGE('',*,*,#768,.T.);+#768 = EDGE_CURVE('',#719,#769,#771,.T.);+#769 = VERTEX_POINT('',#770);+#770 = CARTESIAN_POINT('',(0.8,0.37,0.8));+#771 = LINE('',#772,#773);+#772 = CARTESIAN_POINT('',(0.8,-0.4,0.8));+#773 = VECTOR('',#774,1.);+#774 = DIRECTION('',(0.,1.,0.));+#775 = ORIENTED_EDGE('',*,*,#776,.F.);+#776 = EDGE_CURVE('',#620,#769,#777,.T.);+#777 = LINE('',#778,#779);+#778 = CARTESIAN_POINT('',(0.5,0.37,0.8));+#779 = VECTOR('',#780,1.);+#780 = DIRECTION('',(1.,0.,0.));+#781 = PLANE('',#782);+#782 = AXIS2_PLACEMENT_3D('',#783,#784,#785);+#783 = CARTESIAN_POINT('',(0.5,-0.4,0.8));+#784 = DIRECTION('',(0.,0.,1.));+#785 = DIRECTION('',(1.,0.,0.));+#786 = ADVANCED_FACE('',(#787),#806,.T.);+#787 = FACE_BOUND('',#788,.F.);+#788 = EDGE_LOOP('',(#789,#790,#791,#800));+#789 = ORIENTED_EDGE('',*,*,#602,.T.);+#790 = ORIENTED_EDGE('',*,*,#752,.T.);+#791 = ORIENTED_EDGE('',*,*,#792,.F.);+#792 = EDGE_CURVE('',#793,#745,#795,.T.);+#793 = VERTEX_POINT('',#794);+#794 = CARTESIAN_POINT('',(0.8,0.4,3.E-02));+#795 = CIRCLE('',#796,3.E-02);+#796 = AXIS2_PLACEMENT_3D('',#797,#798,#799);+#797 = CARTESIAN_POINT('',(0.8,0.37,3.E-02));+#798 = DIRECTION('',(-1.,0.,0.));+#799 = DIRECTION('',(0.,0.,1.));+#800 = ORIENTED_EDGE('',*,*,#801,.F.);+#801 = EDGE_CURVE('',#603,#793,#802,.T.);+#802 = LINE('',#803,#804);+#803 = CARTESIAN_POINT('',(0.5,0.4,3.E-02));+#804 = VECTOR('',#805,1.);+#805 = DIRECTION('',(1.,0.,0.));+#806 = CYLINDRICAL_SURFACE('',#807,3.E-02);+#807 = AXIS2_PLACEMENT_3D('',#808,#809,#810);+#808 = CARTESIAN_POINT('',(0.5,0.37,3.E-02));+#809 = DIRECTION('',(1.,0.,0.));+#810 = DIRECTION('',(0.,1.,0.));+#811 = ADVANCED_FACE('',(#812),#831,.T.);+#812 = FACE_BOUND('',#813,.T.);+#813 = EDGE_LOOP('',(#814,#815,#816,#825));+#814 = ORIENTED_EDGE('',*,*,#619,.T.);+#815 = ORIENTED_EDGE('',*,*,#776,.T.);+#816 = ORIENTED_EDGE('',*,*,#817,.F.);+#817 = EDGE_CURVE('',#818,#769,#820,.T.);+#818 = VERTEX_POINT('',#819);+#819 = CARTESIAN_POINT('',(0.8,0.4,0.77));+#820 = CIRCLE('',#821,3.E-02);+#821 = AXIS2_PLACEMENT_3D('',#822,#823,#824);+#822 = CARTESIAN_POINT('',(0.8,0.37,0.77));+#823 = DIRECTION('',(1.,0.,-0.));+#824 = DIRECTION('',(0.,0.,1.));+#825 = ORIENTED_EDGE('',*,*,#826,.F.);+#826 = EDGE_CURVE('',#612,#818,#827,.T.);+#827 = LINE('',#828,#829);+#828 = CARTESIAN_POINT('',(0.5,0.4,0.77));+#829 = VECTOR('',#830,1.);+#830 = DIRECTION('',(1.,0.,0.));+#831 = CYLINDRICAL_SURFACE('',#832,3.E-02);+#832 = AXIS2_PLACEMENT_3D('',#833,#834,#835);+#833 = CARTESIAN_POINT('',(0.5,0.37,0.77));+#834 = DIRECTION('',(1.,0.,0.));+#835 = DIRECTION('',(0.,1.,0.));+#836 = ADVANCED_FACE('',(#837),#848,.T.);+#837 = FACE_BOUND('',#838,.T.);+#838 = EDGE_LOOP('',(#839,#845,#846,#847));+#839 = ORIENTED_EDGE('',*,*,#840,.F.);+#840 = EDGE_CURVE('',#793,#818,#841,.T.);+#841 = LINE('',#842,#843);+#842 = CARTESIAN_POINT('',(0.8,0.4,0.));+#843 = VECTOR('',#844,1.);+#844 = DIRECTION('',(0.,0.,1.));+#845 = ORIENTED_EDGE('',*,*,#801,.F.);+#846 = ORIENTED_EDGE('',*,*,#611,.T.);+#847 = ORIENTED_EDGE('',*,*,#826,.T.);+#848 = PLANE('',#849);+#849 = AXIS2_PLACEMENT_3D('',#850,#851,#852);+#850 = CARTESIAN_POINT('',(0.5,0.4,0.));+#851 = DIRECTION('',(0.,1.,0.));+#852 = DIRECTION('',(0.,0.,1.));+#853 = ADVANCED_FACE('',(#854),#864,.T.);+#854 = FACE_BOUND('',#855,.T.);+#855 = EDGE_LOOP('',(#856,#857,#858,#859,#860,#861,#862,#863));+#856 = ORIENTED_EDGE('',*,*,#661,.F.);+#857 = ORIENTED_EDGE('',*,*,#701,.T.);+#858 = ORIENTED_EDGE('',*,*,#744,.T.);+#859 = ORIENTED_EDGE('',*,*,#792,.F.);+#860 = ORIENTED_EDGE('',*,*,#840,.T.);+#861 = ORIENTED_EDGE('',*,*,#817,.T.);+#862 = ORIENTED_EDGE('',*,*,#768,.F.);+#863 = ORIENTED_EDGE('',*,*,#726,.F.);+#864 = PLANE('',#865);+#865 = AXIS2_PLACEMENT_3D('',#866,#867,#868);+#866 = CARTESIAN_POINT('',(0.8,-0.4,0.));+#867 = DIRECTION('',(1.,0.,0.));+#868 = DIRECTION('',(0.,0.,1.));+#869 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#873)) GLOBAL_UNIT_ASSIGNED_CONTEXT+((#870,#871,#872)) REPRESENTATION_CONTEXT('Context #1',+'3D Context with UNIT and UNCERTAINTY') );+#870 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );+#871 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );+#872 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );+#873 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#870,+'distance_accuracy_value','confusion accuracy');+#874 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));+#875 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#876,+#884,#891,#898,#905,#912,#919,#926,#933,#940,#947,#955,#962,#969,+#976,#983,#990,#997,#1004,#1011,#1018,#1025,#1032,#1039,#1046,#1053,+#1060,#1067),#869);+#876 = STYLED_ITEM('color',(#877),#17);+#877 = PRESENTATION_STYLE_ASSIGNMENT((#878));+#878 = SURFACE_STYLE_USAGE(.BOTH.,#879);+#879 = SURFACE_SIDE_STYLE('',(#880));+#880 = SURFACE_STYLE_FILL_AREA(#881);+#881 = FILL_AREA_STYLE('',(#882));+#882 = FILL_AREA_STYLE_COLOUR('',#883);+#883 = COLOUR_RGB('',0.824000000954,0.819999992847,0.78100001812);+#884 = STYLED_ITEM('color',(#885),#93);+#885 = PRESENTATION_STYLE_ASSIGNMENT((#886));+#886 = SURFACE_STYLE_USAGE(.BOTH.,#887);+#887 = SURFACE_SIDE_STYLE('',(#888));+#888 = SURFACE_STYLE_FILL_AREA(#889);+#889 = FILL_AREA_STYLE('',(#890));+#890 = FILL_AREA_STYLE_COLOUR('',#883);+#891 = STYLED_ITEM('color',(#892),#124);+#892 = PRESENTATION_STYLE_ASSIGNMENT((#893));+#893 = SURFACE_STYLE_USAGE(.BOTH.,#894);+#894 = SURFACE_SIDE_STYLE('',(#895));+#895 = SURFACE_STYLE_FILL_AREA(#896);+#896 = FILL_AREA_STYLE('',(#897));+#897 = FILL_AREA_STYLE_COLOUR('',#883);+#898 = STYLED_ITEM('color',(#899),#149);+#899 = PRESENTATION_STYLE_ASSIGNMENT((#900));+#900 = SURFACE_STYLE_USAGE(.BOTH.,#901);+#901 = SURFACE_SIDE_STYLE('',(#902));+#902 = SURFACE_STYLE_FILL_AREA(#903);+#903 = FILL_AREA_STYLE('',(#904));+#904 = FILL_AREA_STYLE_COLOUR('',#883);+#905 = STYLED_ITEM('color',(#906),#174);+#906 = PRESENTATION_STYLE_ASSIGNMENT((#907));+#907 = SURFACE_STYLE_USAGE(.BOTH.,#908);+#908 = SURFACE_SIDE_STYLE('',(#909));+#909 = SURFACE_STYLE_FILL_AREA(#910);+#910 = FILL_AREA_STYLE('',(#911));+#911 = FILL_AREA_STYLE_COLOUR('',#883);+#912 = STYLED_ITEM('color',(#913),#198);+#913 = PRESENTATION_STYLE_ASSIGNMENT((#914));+#914 = SURFACE_STYLE_USAGE(.BOTH.,#915);+#915 = SURFACE_SIDE_STYLE('',(#916));+#916 = SURFACE_STYLE_FILL_AREA(#917);+#917 = FILL_AREA_STYLE('',(#918));+#918 = FILL_AREA_STYLE_COLOUR('',#883);+#919 = STYLED_ITEM('color',(#920),#222);+#920 = PRESENTATION_STYLE_ASSIGNMENT((#921));+#921 = SURFACE_STYLE_USAGE(.BOTH.,#922);+#922 = SURFACE_SIDE_STYLE('',(#923));+#923 = SURFACE_STYLE_FILL_AREA(#924);+#924 = FILL_AREA_STYLE('',(#925));+#925 = FILL_AREA_STYLE_COLOUR('',#883);+#926 = STYLED_ITEM('color',(#927),#247);+#927 = PRESENTATION_STYLE_ASSIGNMENT((#928));+#928 = SURFACE_STYLE_USAGE(.BOTH.,#929);+#929 = SURFACE_SIDE_STYLE('',(#930));+#930 = SURFACE_STYLE_FILL_AREA(#931);+#931 = FILL_AREA_STYLE('',(#932));+#932 = FILL_AREA_STYLE_COLOUR('',#883);+#933 = STYLED_ITEM('color',(#934),#272);+#934 = PRESENTATION_STYLE_ASSIGNMENT((#935));+#935 = SURFACE_STYLE_USAGE(.BOTH.,#936);+#936 = SURFACE_SIDE_STYLE('',(#937));+#937 = SURFACE_STYLE_FILL_AREA(#938);+#938 = FILL_AREA_STYLE('',(#939));+#939 = FILL_AREA_STYLE_COLOUR('',#883);+#940 = STYLED_ITEM('color',(#941),#289);+#941 = PRESENTATION_STYLE_ASSIGNMENT((#942));+#942 = SURFACE_STYLE_USAGE(.BOTH.,#943);+#943 = SURFACE_SIDE_STYLE('',(#944));+#944 = SURFACE_STYLE_FILL_AREA(#945);+#945 = FILL_AREA_STYLE('',(#946));+#946 = FILL_AREA_STYLE_COLOUR('',#883);+#947 = STYLED_ITEM('color',(#948),#375);+#948 = PRESENTATION_STYLE_ASSIGNMENT((#949));+#949 = SURFACE_STYLE_USAGE(.BOTH.,#950);+#950 = SURFACE_SIDE_STYLE('',(#951));+#951 = SURFACE_STYLE_FILL_AREA(#952);+#952 = FILL_AREA_STYLE('',(#953));+#953 = FILL_AREA_STYLE_COLOUR('',#954);+#954 = COLOUR_RGB('',0.273000001907,0.273000001907,0.273000001907);+#955 = STYLED_ITEM('color',(#956),#407);+#956 = PRESENTATION_STYLE_ASSIGNMENT((#957));+#957 = SURFACE_STYLE_USAGE(.BOTH.,#958);+#958 = SURFACE_SIDE_STYLE('',(#959));+#959 = SURFACE_STYLE_FILL_AREA(#960);+#960 = FILL_AREA_STYLE('',(#961));+#961 = FILL_AREA_STYLE_COLOUR('',#954);+#962 = STYLED_ITEM('color',(#963),#431);+#963 = PRESENTATION_STYLE_ASSIGNMENT((#964));+#964 = SURFACE_STYLE_USAGE(.BOTH.,#965);+#965 = SURFACE_SIDE_STYLE('',(#966));+#966 = SURFACE_STYLE_FILL_AREA(#967);+#967 = FILL_AREA_STYLE('',(#968));+#968 = FILL_AREA_STYLE_COLOUR('',#954);+#969 = STYLED_ITEM('color',(#970),#456);+#970 = PRESENTATION_STYLE_ASSIGNMENT((#971));+#971 = SURFACE_STYLE_USAGE(.BOTH.,#972);+#972 = SURFACE_SIDE_STYLE('',(#973));+#973 = SURFACE_STYLE_FILL_AREA(#974);+#974 = FILL_AREA_STYLE('',(#975));+#975 = FILL_AREA_STYLE_COLOUR('',#954);+#976 = STYLED_ITEM('color',(#977),#480);+#977 = PRESENTATION_STYLE_ASSIGNMENT((#978));+#978 = SURFACE_STYLE_USAGE(.BOTH.,#979);+#979 = SURFACE_SIDE_STYLE('',(#980));+#980 = SURFACE_STYLE_FILL_AREA(#981);+#981 = FILL_AREA_STYLE('',(#982));+#982 = FILL_AREA_STYLE_COLOUR('',#954);+#983 = STYLED_ITEM('color',(#984),#505);+#984 = PRESENTATION_STYLE_ASSIGNMENT((#985));+#985 = SURFACE_STYLE_USAGE(.BOTH.,#986);+#986 = SURFACE_SIDE_STYLE('',(#987));+#987 = SURFACE_STYLE_FILL_AREA(#988);+#988 = FILL_AREA_STYLE('',(#989));+#989 = FILL_AREA_STYLE_COLOUR('',#954);+#990 = STYLED_ITEM('color',(#991),#529);+#991 = PRESENTATION_STYLE_ASSIGNMENT((#992));+#992 = SURFACE_STYLE_USAGE(.BOTH.,#993);+#993 = SURFACE_SIDE_STYLE('',(#994));+#994 = SURFACE_STYLE_FILL_AREA(#995);+#995 = FILL_AREA_STYLE('',(#996));+#996 = FILL_AREA_STYLE_COLOUR('',#954);+#997 = STYLED_ITEM('color',(#998),#554);+#998 = PRESENTATION_STYLE_ASSIGNMENT((#999));+#999 = SURFACE_STYLE_USAGE(.BOTH.,#1000);+#1000 = SURFACE_SIDE_STYLE('',(#1001));+#1001 = SURFACE_STYLE_FILL_AREA(#1002);+#1002 = FILL_AREA_STYLE('',(#1003));+#1003 = FILL_AREA_STYLE_COLOUR('',#954);+#1004 = STYLED_ITEM('color',(#1005),#571);+#1005 = PRESENTATION_STYLE_ASSIGNMENT((#1006));+#1006 = SURFACE_STYLE_USAGE(.BOTH.,#1007);+#1007 = SURFACE_SIDE_STYLE('',(#1008));+#1008 = SURFACE_STYLE_FILL_AREA(#1009);+#1009 = FILL_AREA_STYLE('',(#1010));+#1010 = FILL_AREA_STYLE_COLOUR('',#883);+#1011 = STYLED_ITEM('color',(#1012),#657);+#1012 = PRESENTATION_STYLE_ASSIGNMENT((#1013));+#1013 = SURFACE_STYLE_USAGE(.BOTH.,#1014);+#1014 = SURFACE_SIDE_STYLE('',(#1015));+#1015 = SURFACE_STYLE_FILL_AREA(#1016);+#1016 = FILL_AREA_STYLE('',(#1017));+#1017 = FILL_AREA_STYLE_COLOUR('',#883);+#1018 = STYLED_ITEM('color',(#1019),#688);+#1019 = PRESENTATION_STYLE_ASSIGNMENT((#1020));+#1020 = SURFACE_STYLE_USAGE(.BOTH.,#1021);+#1021 = SURFACE_SIDE_STYLE('',(#1022));+#1022 = SURFACE_STYLE_FILL_AREA(#1023);+#1023 = FILL_AREA_STYLE('',(#1024));+#1024 = FILL_AREA_STYLE_COLOUR('',#883);+#1025 = STYLED_ITEM('color',(#1026),#713);+#1026 = PRESENTATION_STYLE_ASSIGNMENT((#1027));+#1027 = SURFACE_STYLE_USAGE(.BOTH.,#1028);+#1028 = SURFACE_SIDE_STYLE('',(#1029));+#1029 = SURFACE_STYLE_FILL_AREA(#1030);+#1030 = FILL_AREA_STYLE('',(#1031));+#1031 = FILL_AREA_STYLE_COLOUR('',#883);+#1032 = STYLED_ITEM('color',(#1033),#738);+#1033 = PRESENTATION_STYLE_ASSIGNMENT((#1034));+#1034 = SURFACE_STYLE_USAGE(.BOTH.,#1035);+#1035 = SURFACE_SIDE_STYLE('',(#1036));+#1036 = SURFACE_STYLE_FILL_AREA(#1037);+#1037 = FILL_AREA_STYLE('',(#1038));+#1038 = FILL_AREA_STYLE_COLOUR('',#883);+#1039 = STYLED_ITEM('color',(#1040),#762);+#1040 = PRESENTATION_STYLE_ASSIGNMENT((#1041));+#1041 = SURFACE_STYLE_USAGE(.BOTH.,#1042);+#1042 = SURFACE_SIDE_STYLE('',(#1043));+#1043 = SURFACE_STYLE_FILL_AREA(#1044);+#1044 = FILL_AREA_STYLE('',(#1045));+#1045 = FILL_AREA_STYLE_COLOUR('',#883);+#1046 = STYLED_ITEM('color',(#1047),#786);+#1047 = PRESENTATION_STYLE_ASSIGNMENT((#1048));+#1048 = SURFACE_STYLE_USAGE(.BOTH.,#1049);+#1049 = SURFACE_SIDE_STYLE('',(#1050));+#1050 = SURFACE_STYLE_FILL_AREA(#1051);+#1051 = FILL_AREA_STYLE('',(#1052));+#1052 = FILL_AREA_STYLE_COLOUR('',#883);+#1053 = STYLED_ITEM('color',(#1054),#811);+#1054 = PRESENTATION_STYLE_ASSIGNMENT((#1055));+#1055 = SURFACE_STYLE_USAGE(.BOTH.,#1056);+#1056 = SURFACE_SIDE_STYLE('',(#1057));+#1057 = SURFACE_STYLE_FILL_AREA(#1058);+#1058 = FILL_AREA_STYLE('',(#1059));+#1059 = FILL_AREA_STYLE_COLOUR('',#883);+#1060 = STYLED_ITEM('color',(#1061),#836);+#1061 = PRESENTATION_STYLE_ASSIGNMENT((#1062));+#1062 = SURFACE_STYLE_USAGE(.BOTH.,#1063);+#1063 = SURFACE_SIDE_STYLE('',(#1064));+#1064 = SURFACE_STYLE_FILL_AREA(#1065);+#1065 = FILL_AREA_STYLE('',(#1066));+#1066 = FILL_AREA_STYLE_COLOUR('',#883);+#1067 = STYLED_ITEM('color',(#1068),#853);+#1068 = PRESENTATION_STYLE_ASSIGNMENT((#1069));+#1069 = SURFACE_STYLE_USAGE(.BOTH.,#1070);+#1070 = SURFACE_SIDE_STYLE('',(#1071));+#1071 = SURFACE_STYLE_FILL_AREA(#1072);+#1072 = FILL_AREA_STYLE('',(#1073));+#1073 = FILL_AREA_STYLE_COLOUR('',#883);+ENDSEC;+END-ISO-10303-21;
LQM18JNR10J00D.svgadded+107
@@ -0,0 +1,107 @@+<?xml version="1.0" standalone="no"?>+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg+  xmlns:svg="http://www.w3.org/2000/svg"+  xmlns="http://www.w3.org/2000/svg"+  xmlns:xlink="http://www.w3.org/1999/xlink"+  xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"+  version="1.1"+  width="6.2738mm" height="10.0584mm" viewBox="0.0000 0.0000 6.2738 10.0584">+<title>SVG Image created as L_unit1.svg date 2026-06-08T19:59:38 </title>+  <desc>Image generated by Eeschema-SVG </desc>+<g style="fill:#000000; fill-opacity:1.0000;stroke:#000000; stroke-opacity:1.0000;+stroke-linecap:round; stroke-linejoin:round;"+ transform="translate(0 0) scale(1 1)">+</g>+<g style="fill:none; +stroke:#840000; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">+<path d="M2.8194 3.7588 A0.6348 0.6348 0.0 0 0 2.8194 2.4892" />+<path d="M2.8194 5.0288 A0.6348 0.6348 0.0 0 0 2.8194 3.7592" />+<path d="M2.8194 6.2988 A0.6348 0.6348 0.0 0 0 2.8194 5.0292" />+<path d="M2.8194 7.5688 A0.6348 0.6348 0.0 0 0 2.8194 6.2992" />+<path d="M2.8194 2.4892+L2.8194 1.2192+" />+<path d="M2.8194 7.5692+L2.8194 8.8392+" />+</g>+<g style="fill:none; +stroke:#006464; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">+<g transform="rotate(-90.000000 1.5494 5.0292)">+<text x="1.5494" y="5.6642"+textLength="2.3199" font-size="1.6933" lengthAdjust="spacingAndGlyphs"+text-anchor="middle" opacity="0" stroke-opacity="0">L?</text>+</g>+<g class="stroked-text"><desc>L?</desc>+<path d="M2.1289 5.1803+L2.1289 5.7851+" />+<path d="M2.1289 5.7851+L0.8589 5.7851+" />+<path d="M2.0080 4.5755+L2.0685 4.5151+" />+<path d="M2.0685 4.5151+L2.1289 4.5755+" />+<path d="M2.1289 4.5755+L2.0685 4.6360+" />+<path d="M2.0685 4.6360+L2.0080 4.5755+" />+<path d="M2.0080 4.5755+L2.1289 4.5755+" />+<path d="M0.9194 4.8174+L0.8589 4.6965+" />+<path d="M0.8589 4.6965+L0.8589 4.3941+" />+<path d="M0.8589 4.3941+L0.9194 4.2732+" />+<path d="M0.9194 4.2732+L1.0404 4.2127+" />+<path d="M1.0404 4.2127+L1.1613 4.2127+" />+<path d="M1.1613 4.2127+L1.2823 4.2732+" />+<path d="M1.2823 4.2732+L1.3427 4.3336+" />+<path d="M1.3427 4.3336+L1.4032 4.4546+" />+<path d="M1.4032 4.4546+L1.4637 4.5151+" />+<path d="M1.4637 4.5151+L1.5846 4.5755+" />+<path d="M1.5846 4.5755+L1.6451 4.5755+" />+</g><g transform="rotate(-90.000000 4.7244 5.0292)">+<text x="4.7244" y="5.6642"+textLength="1.2313" font-size="1.6933" lengthAdjust="spacingAndGlyphs"+text-anchor="middle" opacity="0" stroke-opacity="0">L</text>+</g>+<g class="stroked-text"><desc>L</desc>+<path d="M5.3039 4.6360+L5.3039 5.2408+" />+<path d="M5.3039 5.2408+L4.0339 5.2408+" />+</g></g> +</svg>