by adom
0603 SMD Green LED · 3.2 V drop · 25 mA max
← Commit history
Publish IN-S63BTG characterization with datasheet-verified specs
9 files changed
+5409
IN-S63BTG-fpview.htmladded+790@@ -0,0 +1,790 @@+<!DOCTYPE html>+<html lang="en">+<head>+<meta charset="UTF-8">+<meta name="viewport" content="width=device-width, initial-scale=1.0">+<title>IN-S63BTG</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">IN-S63BTG</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()">−</button>+ <span class="zoom-level" id="zoom-level">100%</span>+ <button onclick="zoomIn()">+</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="0 0 10 10"><text x="5" y="5" text-anchor="middle" font-size="1" fill="#888">No geometry</text></svg>+ </div>+ <a class="edit-btn" href="https://coder.john-service-wiki-a054078430ce38e4.containers.adom.inc/proxy/8785/wiki/components/in-s63btg/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">Pads</span><span class="info-value">0</span></div>+ </div>+ <div class="info-divider"></div>+ <div class="coord-row">+ <span id="cursor-pos">X: 0.00 Y: 0.00 mm</span>+ </div>+</div>++<script>+ const pads = [];+ const svgW = 10;+ const svgH = 10;+ const svgVbX = 0;+ const svgVbY = 0;+ const offsetX = 0;+ const offsetY = 0;+ const datasheetUrl = "";+ const _partName = "";+ const _fpName = "IN-S63BTG";+ const _kicadModPath = "/home/adom/project/project-content/schematics/footprints/IN-S63BTG/IN-S63BTG.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) + ' 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>
IN-S63BTG-symview.htmladded+1292@@ -0,0 +1,1292 @@+<!DOCTYPE html>+<html lang="en">+<head>+<meta charset="UTF-8">+<meta name="viewport" content="width=device-width, initial-scale=1.0">+<title>IN-S63BTG</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">IN-S63BTG</span>+ <div class="spacer"></div>+ <div class="btn-group">+ <button onclick="zoomOut()">−</button>+ <span class="zoom-level" id="zoom-level">100%</span>+ <button onclick="zoomIn()">+</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/in-s63btg/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="10.5156mm" height="8.5598mm" viewBox="-3.6617 -1.0201 18.2200 10.6000">++<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)">+<path style="fill:none; +stroke:#4a5568; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 2.4003,5.0419+0.8763,6.5659+1.6383,6.5659+0.8763,6.5659+0.8763,5.8039+" /> +<path style="fill:none; +stroke:#4a5568; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 3.6703,5.0419+2.1463,6.5659+2.9083,6.5659+2.1463,6.5659+2.1463,5.8039+" /> +<path style="fill:none; +stroke:#4a5568; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 4.1783,4.2799+6.7183,4.2799+" /> +<path style="fill:none; +stroke:#4a5568; stroke-width:0.2540; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 4.1783,5.5499+4.1783,3.0099+" /> +<path style="fill:none; +stroke:#4a5568; stroke-width:0.2540; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 6.7183,5.5499+6.7183,3.0099+4.1783,4.2799+Z" /> +</g>+<g style="fill:none; +stroke:#4a5568; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">+<path d="M4.1783 4.2799+L1.6383 4.2799+" />+<path d="M6.7183 4.2799+L9.2583 4.2799+" />+</g>+<g style="fill:none; +stroke:#484f58; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">++<text x="5.4483" y="7.4549"+textLength="3.6503" font-size="1.6933" lengthAdjust="spacingAndGlyphs"+text-anchor="middle" opacity="0" stroke-opacity="0">LED</text>+<g class="stroked-text"><desc>LED</desc>+<path d="M4.6319 7.3994+L4.0271 7.3994+" />+<path d="M4.0271 7.3994+L4.0271 6.1294+" />+<path d="M5.0552 6.7342+L5.4786 6.7342+" />+<path d="M5.6600 7.3994+L5.0552 7.3994+" />+<path d="M5.0552 7.3994+L5.0552 6.1294+" />+<path d="M5.0552 6.1294+L5.6600 6.1294+" />+<path d="M6.2042 7.3994+L6.2042 6.1294+" />+<path d="M6.2042 6.1294+L6.5066 6.1294+" />+<path d="M6.5066 6.1294+L6.6880 6.1899+" />+<path d="M6.6880 6.1899+L6.8090 6.3109+" />+<path d="M6.8090 6.3109+L6.8695 6.4318+" />+<path d="M6.8695 6.4318+L6.9299 6.6737+" />+<path d="M6.9299 6.6737+L6.9299 6.8551+" />+<path d="M6.9299 6.8551+L6.8695 7.0970+" />+<path d="M6.8695 7.0970+L6.8090 7.2180+" />+<path d="M6.8090 7.2180+L6.6880 7.3390+" />+<path d="M6.6880 7.3390+L6.5066 7.3994+" />+<path d="M6.5066 7.3994+L6.2042 7.3994+" />+</g></g> +<text x="0.638" y="4.665" font-size="1.1" font-family="sans-serif" fill="#ffffff" text-anchor="end" class="pin-label">K</text>+<text x="1.638" y="5.530" font-size="0.75" font-family="sans-serif" fill="#8b949e" text-anchor="middle" class="pin-num-label">1</text>+<text x="10.258" y="4.665" font-size="1.1" font-family="sans-serif" fill="#ffffff" text-anchor="start" class="pin-label">A</text>+<text x="9.258" y="5.530" font-size="0.75" font-family="sans-serif" fill="#8b949e" text-anchor="middle" class="pin-num-label">2</text>+<rect x="-3.3617000000000004" y="-0.7201000000000004" width="17.62" height="10" 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">Light emitting diode</span></div>+ </div>+ <div class="info-divider"></div>+ <div class="coord-row">+ <span id="cursor-pos">X: 0.00 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":"K","number":"1","type":"Passive","electricalType":"passive","color":"#78909c","desc":"","x":-3.81,"y":0,"angle":0,"length":2.54},{"name":"A","number":"2","type":"Passive","electricalType":"passive","color":"#78909c","desc":"","x":3.81,"y":0,"angle":180,"length":2.54}];+ const groups = [];+ const svgW = 18.22;+ const svgH = 10.6;+ const contentBounds = {"x":-3.3617000000000004,"y":-0.7201000000000004,"w":17.62,"h":10};+ const svgOffset = {"x":5.4483,"y":4.2799};+ const hidePinNames = true;+ const hidePinNumbers = true;+ const datasheetUrl = "~";+ const mfrName = "";+ const _symbolName = "IN-S63BTG";+ const _symPath = "/home/adom/project/project-content/schematics/symbols/IN-S63BTG/IN-S63BTG.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) + ' 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 · 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>
IN-S63BTG.htmladded+904@@ -0,0 +1,904 @@+<!DOCTYPE html>+<html lang="en">+<head>+<meta charset="UTF-8">+<meta name="viewport" content="width=device-width, initial-scale=1.0">+<title>IN-S63BTG — Component Characterization</title>+<style>+ @font-face { font-family: 'Familjen Grotesk'; src: url('https://adom.inc/fonts/familjen-grotesk/familjen-grotesk-latin-700-normal.woff2') format('woff2'); font-weight: 700; }+ @font-face { font-family: 'Familjen Grotesk'; src: url('https://adom.inc/fonts/familjen-grotesk/familjen-grotesk-latin-500-normal.woff2') format('woff2'); font-weight: 500; }+ @font-face { font-family: 'Satoshi'; src: url('https://adom.inc/fonts/satoshi/satoshi-400-normal.woff2') format('woff2'); font-weight: 400; }+ @font-face { font-family: 'Satoshi'; src: url('https://adom.inc/fonts/satoshi/satoshi-500-normal.woff2') format('woff2'); font-weight: 500; }+ @font-face { font-family: 'JetBrains Mono'; src: url('https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2') format('woff2'); font-weight: 400; }++ :root {+ --bg: #0d1117; --surface: #161b22; --elevated: #1c2128; --border: #30363d; --border-muted: #21262d;+ --text: #e6edf3; --text-muted: #8b949e; --text-dim: #484f58;+ --accent: #00b8b0; --accent-bright: #00e6dc; --accent-dim: rgba(0,184,176,0.12); --accent-border: rgba(0,184,176,0.25);+ --green: #3fb950; --orange: #d29922; --red: #f85149; --purple: #8C6BF7; --blue: #58a6ff;+ --led-color: #32CD32; --led-dim: #32CD321e; --led-border: #32CD3259;+ }+ * { margin: 0; padding: 0; box-sizing: border-box; }+ body { font-family: 'Satoshi', sans-serif; background: var(--bg); color: var(--text); font-size: 13px; line-height: 1.6; overflow-y: auto; }+ h1,h2,h3 { font-family: 'Familjen Grotesk', sans-serif; font-weight: 700; }+ code { font-family: 'JetBrains Mono', monospace; font-size: 12px; }+ a { color: var(--accent); text-decoration: none; }+ a:hover { color: var(--accent-bright); text-decoration: underline; }++ .header { background: var(--surface); border-bottom: 1px solid var(--border-muted); padding: 20px 24px; }+ .header-top { display: flex; align-items: center; gap: 12px; margin-bottom: 4px; }+ .header .brand { color: var(--accent); font-family: 'Familjen Grotesk', sans-serif; font-size: 12px; font-weight: 600; }+ .header .vsep { width: 1px; height: 16px; background: var(--border); }+ .header .crumb { color: var(--text-dim); font-size: 12px; }+ .header h1 { font-size: 22px; margin-bottom: 2px; }+ .header h1 .val { color: #32CD32; }+ .header .subtitle { color: var(--text-muted); font-size: 13px; }+ .header .tags { display: flex; gap: 6px; margin-top: 10px; flex-wrap: wrap; }+ .tag { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 12px; font-size: 11px; font-weight: 500; }+ .tag.pkg { background: rgba(0,184,176,0.12); color: var(--accent); }+ .tag.mfr { background: rgba(88,166,255,0.12); color: var(--blue); }+ .tag.series { background: rgba(140,107,247,0.12); color: var(--purple); }+ .tag.rohs { background: rgba(63,185,80,0.12); color: var(--green); }+ .tag.app { background: var(--led-dim); color: var(--led-color); }++ .container { max-width: 1100px; margin: 0 auto; padding: 24px; }+ .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }+ .grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }+ @media (max-width: 800px) { .grid-2, .grid-3 { grid-template-columns: 1fr; } }++ .section { margin-bottom: 28px; }+ .section-title { font-size: 14px; color: var(--text); margin-bottom: 12px; padding-bottom: 6px; border-bottom: 1px solid var(--border-muted); display: flex; align-items: center; gap: 8px; }++ .card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 16px; }+ .card:hover { border-color: var(--accent-border); }++ .spec-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }+ .spec-card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 12px 14px; text-align: center; }+ .spec-card .sc-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-dim); margin-bottom: 4px; }+ .spec-card .sc-value { font-size: 22px; font-weight: 700; font-family: 'Familjen Grotesk', sans-serif; }+ .spec-card .sc-detail { font-size: 11px; color: var(--text-muted); margin-top: 2px; }+ .spec-card.highlight { border-color: var(--led-border); background: linear-gradient(180deg, #32CD320f, var(--surface)); }+ .spec-card.highlight .sc-value { color: var(--led-color); }++ .detail-table { width: 100%; border-collapse: collapse; }+ .detail-table tr { border-bottom: 1px solid var(--border-muted); }+ .detail-table tr:last-child { border-bottom: none; }+ .detail-table td { padding: 8px 0; }+ .detail-table td:first-child { color: var(--text-muted); font-size: 12px; width: 45%; }+ .detail-table td:last-child { font-family: 'JetBrains Mono', monospace; font-size: 13px; text-align: right; }++ .chart-wrap { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 16px; }+ .chart-wrap h3 { font-size: 13px; color: var(--text); margin-bottom: 12px; }+ .chart-wrap .chart-note { font-size: 11px; color: var(--text-dim); margin-top: 8px; }+ svg text { font-family: 'JetBrains Mono', monospace; }++ .pkg-drawing { display: flex; align-items: center; justify-content: center; padding: 20px; }++ .env-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }+ @media (max-width: 700px) { .env-grid { grid-template-columns: 1fr; } }+ .env-card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 12px 14px; }+ .env-card .env-name { font-size: 12px; font-weight: 600; margin-bottom: 4px; }+ .env-card .env-spec { font-size: 11px; color: var(--text-muted); }+ .env-card .env-detail { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--text); margin-top: 4px; }++ .vendor-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }+ @media (max-width: 700px) { .vendor-cards { grid-template-columns: 1fr; } }+ .vendor-card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 14px; }+ .vendor-card .vc-name { font-size: 12px; font-weight: 600; margin-bottom: 6px; }+ .vendor-card .vc-name.mouser { color: var(--blue); }+ .vendor-card .vc-name.digikey { color: var(--red); }+ .vendor-card .vc-name.jlcpcb { color: var(--green); }+ .vendor-card .vc-price { font-size: 20px; font-weight: 700; font-family: 'Familjen Grotesk', sans-serif; }+ .vendor-card .vc-detail { font-size: 11px; color: var(--text-muted); margin-top: 4px; }+ .vendor-card .vc-link { display: inline-block; margin-top: 8px; font-size: 11px; color: var(--accent); }+ .vendor-card.recommended { border-color: var(--accent-border); }+ .vendor-card.recommended::before { content: 'RECOMMENDED'; display: block; font-size: 9px; letter-spacing: 1px; color: var(--accent); margin-bottom: 6px; font-weight: 600; }++ .copy-btn { background: none; border: 1px solid var(--border); color: var(--text-muted); border-radius: 4px; padding: 2px 6px; font-size: 13px; cursor: pointer; font-family: 'JetBrains Mono', monospace; vertical-align: middle; transition: border-color 0.15s, color 0.15s; }+ .copy-btn:hover { border-color: var(--accent); color: var(--accent); }++ .dl-btn { display: inline-block; margin-top: 10px; padding: 6px 14px; background: var(--accent-dim); border: 1px solid var(--accent-border); border-radius: 6px; color: var(--accent); font-size: 11px; font-weight: 500; font-family: 'Satoshi', sans-serif; text-decoration: none; transition: background 0.15s, border-color 0.15s; }+ .dl-btn:hover { background: rgba(0,184,176,0.2); border-color: var(--accent); text-decoration: none; color: var(--accent-bright); }++ .open-full-banner { display: flex; align-items: center; justify-content: center; padding: 12px 24px; background: linear-gradient(90deg, rgba(0,184,176,0.12), rgba(0,184,176,0.06)); border-bottom: 1px solid var(--accent-border); }+ .open-full-btn { display: inline-flex; align-items: center; gap: 8px; padding: 8px 20px; background: var(--accent); color: var(--bg); font-family: 'Familjen Grotesk', sans-serif; font-size: 13px; font-weight: 600; border-radius: 6px; text-decoration: none; transition: background 0.15s; cursor: pointer; border: none; }+ .open-full-btn:hover { background: var(--accent-bright); text-decoration: none; color: var(--bg); }++ .source { text-align: center; color: var(--text-dim); font-size: 11px; padding: 24px 0 12px; border-top: 1px solid var(--border-muted); margin-top: 20px; }++ .color-swatch { border-radius: 8px; padding: 20px; text-align: center; position: relative; overflow: hidden; }+ .color-swatch .swatch-block { width: 100%; height: 80px; border-radius: 6px; margin-bottom: 12px; position: relative; }+ .color-swatch .swatch-label { font-size: 14px; font-weight: 600; font-family: 'Familjen Grotesk', sans-serif; }+ .color-swatch .swatch-detail { font-size: 11px; color: var(--text-muted); margin-top: 4px; }++ .calc-card { background: var(--surface); border: 1px solid var(--led-border); border-radius: 8px; padding: 20px; }+ .calc-card h3 { font-size: 14px; color: var(--led-color); margin-bottom: 16px; font-family: 'Familjen Grotesk', sans-serif; }+ .calc-inputs { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }+ .calc-field label { display: block; font-size: 11px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; }+ .calc-field input { width: 100%; background: var(--bg); border: 1px solid var(--border); color: var(--text); border-radius: 6px; padding: 8px 12px; font-family: 'JetBrains Mono', monospace; font-size: 14px; outline: none; transition: border-color 0.15s; }+ .calc-field input:focus { border-color: var(--led-color); }+ .calc-field .unit { font-size: 11px; color: var(--text-dim); margin-top: 2px; }+ .calc-results { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }+ .calc-result { background: var(--bg); border: 1px solid var(--border-muted); border-radius: 6px; padding: 10px 12px; }+ .calc-result .cr-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-dim); margin-bottom: 2px; }+ .calc-result .cr-value { font-size: 18px; font-weight: 700; font-family: 'Familjen Grotesk', sans-serif; color: var(--led-color); }+ .calc-result .cr-detail { font-size: 11px; color: var(--text-muted); margin-top: 2px; }+ .calc-schematic { margin-top: 16px; text-align: center; }+</style>+</head>+<body>++<div class="open-full-banner" id="fullPageBanner" style="display:none">+ <span style="color:var(--text-muted);font-size:12px;margin-right:8px">Full page:</span>+ <code style="color:var(--accent);font-size:11px;background:var(--elevated);padding:4px 8px;border-radius:4px;user-select:all">https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63btg/IN-S63BTG.html</code>+ <button class="open-full-btn" id="copyFullUrl" style="margin-left:8px">Copy Link</button>+</div>+<script>+if(window.self!==window.top){document.getElementById('fullPageBanner').style.display='flex'}+document.getElementById('copyFullUrl').addEventListener('click',function(){var t=document.createElement('textarea');t.value='https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63btg/IN-S63BTG.html';document.body.appendChild(t);t.select();document.execCommand('copy');document.body.removeChild(t);this.textContent='Copied!';var b=this;setTimeout(function(){b.textContent='Copy Link'},1500)});+</script>++<div class="header">+ <div class="header-top">+ <div class="brand">Adom</div>+ <div class="vsep"></div>+ <div class="crumb">Components › LEDs › 0603</div>+ </div>+ <h1>IN-S63BTG — <span class="val">Green</span></h1>+ <div class="subtitle">Inolux Corporation · Top View SMD LED · 0603 (1.6 × 0.8mm) · InGaN</div>+ <div class="tags">+ <span class="tag pkg">0603</span>+ <span class="tag mfr">Inolux</span>+ <span class="tag series">IN-S63BT</span>+ <span class="tag rohs">RoHS</span>+ <span class="tag app">Green LED</span>+ </div>+</div>++<div class="container">++ <!-- Key Specs -->+ <div class="section">+ <div class="spec-cards">+ <div class="spec-card highlight">+ <div class="sc-label">Wavelength</div>+ <div class="sc-value" style="color:#32CD32">527nm</div>+ <div class="sc-detail">530nm peak</div>+ </div>+ <div class="spec-card">+ <div class="sc-label">Luminous Intensity</div>+ <div class="sc-value">720mcd</div>+ <div class="sc-detail">@ 20mA</div>+ </div>+ <div class="spec-card">+ <div class="sc-label">Forward Voltage</div>+ <div class="sc-value">3.3V</div>+ <div class="sc-detail">typical @ 20mA</div>+ </div>+ <div class="spec-card">+ <div class="sc-label">Forward Current</div>+ <div class="sc-value">25mA</div>+ <div class="sc-detail">20mA typical</div>+ </div>+ <div class="spec-card">+ <div class="sc-label">Viewing Angle</div>+ <div class="sc-value">120°</div>+ <div class="sc-detail">2θ½</div>+ </div>+ <div class="spec-card">+ <div class="sc-label">Package</div>+ <div class="sc-value">0603</div>+ <div class="sc-detail">1.6×0.8×0.3mm</div>+ </div>+ </div>+ </div>++ <div class="grid-2">+ <!-- Left column -->+ <div>+ <!-- Electrical Characteristics -->+ <div class="section">+ <h2 class="section-title">Electrical Characteristics</h2>+ <div class="card">+ <table class="detail-table">+ <tr><td>Forward Voltage (typ)</td><td>3.3V @ 20mA</td></tr>+ <tr><td>Forward Voltage (max)</td><td>3.6V</td></tr>+ <tr><td>Reverse Voltage (max)</td><td>5V</td></tr>+ <tr><td>Forward Current (max)</td><td>25mA</td></tr>+ <tr><td>Peak Forward Current</td><td>100mA (1/10, 0.1ms)</td></tr>+ <tr><td>Power Dissipation</td><td>75mW</td></tr>+ <tr><td>Dominant Wavelength</td><td>527nm</td></tr>+ <tr><td>Peak Wavelength</td><td>530nm</td></tr>+ <tr><td>Luminous Intensity</td><td>720 mcd @ 20mA</td></tr>+ <tr><td>Viewing Angle (2θ½)</td><td>120°</td></tr>+ <tr><td>Material</td><td>InGaN</td></tr>+ <tr><td>Lens Type</td><td>Clear</td></tr>+ </table>+ </div>+ </div>++ <!-- Operating Conditions -->+ <div class="section">+ <h2 class="section-title">Operating Conditions</h2>+ <div class="card">+ <table class="detail-table">+ <tr><td>Operating Temp</td><td>−30°C to +85°C</td></tr>+ <tr><td>Storage Temp</td><td>−40°C to +90°C</td></tr>+ <tr><td>ESD Sensitivity</td><td>InGaN — handle with care</td></tr>+ <tr><td>Polarity</td><td>Cathode marked on package</td></tr>+ </table>+ <div style="margin-top:10px;padding:8px 12px;background:rgba(248,81,73,0.08);border:1px solid rgba(248,81,73,0.2);border-radius:6px;font-size:11px;color:var(--red)">+ ⚠ ESD Sensitive Device — InGaN LEDs require proper ESD precautions during handling and assembly. Use grounded wrist straps and ESD-safe workstations.+ </div>+ </div>+ </div>+ </div>++ <!-- Right column -->+ <div>+ <!-- Package Drawing -->+ <div class="section">+ <h2 class="section-title">Package & Dimensions</h2>+ <div class="card">+ <div class="pkg-drawing">+ <svg width="100%" height="200" viewBox="0 0 500 200">+ <!-- Top view -->+ <text x="120" y="14" fill="#8b949e" font-size="10" text-anchor="middle">Top View</text>+ <rect x="55" y="24" width="130" height="65" rx="3" fill="#1c2128" stroke="#30363d" stroke-width="1.5"/>+ <rect x="55" y="24" width="25" height="65" rx="1" fill="#32CD3222" stroke="#32CD32" stroke-width="1"/>+ <rect x="160" y="24" width="25" height="65" rx="1" fill="#32CD3222" stroke="#32CD32" stroke-width="1"/>+ <line x1="155" y1="28" x2="155" y2="85" stroke="#32CD32" stroke-width="1.5" stroke-dasharray="3,2"/>+ <rect x="92" y="38" width="36" height="37" rx="1" fill="#32CD3240" stroke="#32CD3280" stroke-width="0.8"/>+ <path d="M110,47 Q125,35 135,47" stroke="#32CD3299" stroke-width="0.6" fill="none"/>+ <text x="168" y="18" fill="#32CD32" font-size="9" text-anchor="middle">K (cathode)</text>+ <text x="68" y="18" fill="#8b949e" font-size="9" text-anchor="middle">A</text>++ <line x1="55" y1="102" x2="185" y2="102" stroke="#484f58" stroke-width="0.5"/>+ <line x1="55" y1="98" x2="55" y2="106" stroke="#484f58" stroke-width="0.5"/>+ <line x1="185" y1="98" x2="185" y2="106" stroke="#484f58" stroke-width="0.5"/>+ <text x="120" y="118" fill="#e6edf3" font-size="10" text-anchor="middle">1.6 ± 0.1</text>++ <line x1="195" y1="24" x2="195" y2="89" stroke="#484f58" stroke-width="0.5"/>+ <line x1="191" y1="24" x2="199" y2="24" stroke="#484f58" stroke-width="0.5"/>+ <line x1="191" y1="89" x2="199" y2="89" stroke="#484f58" stroke-width="0.5"/>+ <text x="215" y="60" fill="#e6edf3" font-size="10">0.8 ± 0.1</text>++ <!-- Side view -->+ <text x="380" y="14" fill="#8b949e" font-size="10" text-anchor="middle">Side View</text>+ <rect x="315" y="48" width="130" height="30" rx="2" fill="#1c2128" stroke="#30363d" stroke-width="1.5"/>+ <path d="M320,48 Q380,40 445,48" stroke="#32CD3280" stroke-width="1.5" fill="#32CD3214"/>+ <rect x="315" y="48" width="20" height="30" rx="1" fill="#32CD3222" stroke="#32CD32" stroke-width="1"/>+ <rect x="425" y="48" width="20" height="30" rx="1" fill="#32CD3222" stroke="#32CD32" stroke-width="1"/>+ <line x1="455" y1="38" x2="455" y2="78" stroke="#484f58" stroke-width="0.5"/>+ <line x1="451" y1="38" x2="459" y2="38" stroke="#484f58" stroke-width="0.5"/>+ <line x1="451" y1="78" x2="459" y2="78" stroke="#484f58" stroke-width="0.5"/>+ <text x="465" y="62" fill="#e6edf3" font-size="10">0.3 ± 0.05</text>++ <text x="120" y="145" fill="#8b949e" font-size="10" text-anchor="middle">0603 (1608 metric)</text>+ <text x="380" y="100" fill="#8b949e" font-size="10" text-anchor="middle">Clear lens · InGaN</text>++ <rect x="55" y="158" width="390" height="28" rx="4" fill="#32CD320f" stroke="#32CD3233" stroke-width="0.5"/>+ <text x="250" y="176" fill="#32CD32" font-size="10" text-anchor="middle">⚠ Polarized — cathode mark on package indicates negative terminal</text>+ </svg>+ </div>+ </div>+ </div>++ <!-- Land Pattern -->+ <div class="section">+ <h2 class="section-title">Recommended Land Pattern</h2>+ <div class="card">+ <table class="detail-table">+ <tr><td>Pad Width</td><td>0.7 ± 0.1mm</td></tr>+ <tr><td>Pad Height</td><td>0.7 ± 0.1mm</td></tr>+ <tr><td>Pad Spacing (center-to-center)</td><td>0.7 ± 0.1mm</td></tr>+ <tr><td>Polarity</td><td>Cathode marked on PCB</td></tr>+ </table>+ </div>+ </div>+ </div>+ </div>++ <!-- Color Swatch -->+ <div class="section">+ <h2 class="section-title">Emission Color</h2>+ <div class="card color-swatch">+ <div class="swatch-block" style="background: linear-gradient(135deg, #32CD32, #228B22); box-shadow: 0 4px 24px #32CD3244; display:flex; align-items:center; justify-content:center;">+ <span style="font-size:28px;font-weight:700;font-family:'Familjen Grotesk',sans-serif;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,0.5)">Green</span>+ </div>+ <div class="swatch-label" style="color:#32CD32">527nm Dominant Wavelength</div>+ <div class="swatch-detail">Peak wavelength 530nm · InGaN semiconductor · CSS approximation: #32CD32</div>+ </div>+ </div>++ <!-- Spectral Distribution -->+ <div class="section">+ <h2 class="section-title">Spectral Distribution</h2>+ <div class="chart-wrap">+ <h3>Emission Spectrum — Relative Intensity vs. Wavelength</h3>+ <svg id="spectral-chart" width="100%" height="280" viewBox="0 0 700 280">+ <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>+ <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="20" x2="660" y2="20" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>++ <defs>+ <linearGradient id="ledGrad" x1="0" y1="0" x2="0" y2="1">+ <stop offset="0%" stop-color="#32CD32" stop-opacity="0.6"/>+ <stop offset="100%" stop-color="#32CD32" stop-opacity="0.05"/>+ </linearGradient>+ </defs>+ <path d="M60,220 L60,220 L64,220 L68,220 L72,220 L76,220 L80,220 L84,220 L88,220 L92,220 L96,220 L100,220 L104,220 L108,220 L112,220 L116,220 L120,220 L124,220 L128,220 L132,220 L136,220 L140,220 L144,220 L148,220 L152,220 L156,220 L160,220 L164,220 L168,220 L172,220 L176,220 L180,220 L184,220 L188,220 L192,220 L196,220 L200,220 L204,220 L208,220 L212,219 L216,219 L220,219 L224,218 L228,217 L232,216 L236,214 L240,211 L244,208 L248,203 L252,197 L256,190 L260,182 L264,171 L268,160 L272,146 L276,132 L280,116 L284,100 L288,84 L292,68 L296,54 L300,41 L304,31 L308,24 L312,20 L316,20 L320,24 L324,31 L328,41 L332,54 L336,68 L340,84 L344,100 L348,116 L352,132 L356,146 L360,160 L364,171 L368,182 L372,190 L376,197 L380,203 L384,208 L388,211 L392,214 L396,216 L400,217 L404,218 L408,219 L412,219 L416,219 L420,220 L424,220 L428,220 L432,220 L436,220 L440,220 L444,220 L448,220 L452,220 L456,220 L460,220 L464,220 L468,220 L472,220 L476,220 L480,220 L484,220 L488,220 L492,220 L496,220 L500,220 L504,220 L508,220 L512,220 L516,220 L520,220 L524,220 L528,220 L532,220 L536,220 L540,220 L544,220 L548,220 L552,220 L556,220 L560,220 L564,220 L568,220 L572,220 L576,220 L580,220 L584,220 L588,220 L592,220 L596,220 L600,220 L604,220 L608,220 L612,220 L616,220 L620,220 L624,220 L628,220 L632,220 L636,220 L640,220 L644,220 L648,220 L652,220 L656,220 L660,220 L660,220 Z" fill="url(#ledGrad)" opacity="0.3"/>+ <path d="M60,220 L60,220 L64,220 L68,220 L72,220 L76,220 L80,220 L84,220 L88,220 L92,220 L96,220 L100,220 L104,220 L108,220 L112,220 L116,220 L120,220 L124,220 L128,220 L132,220 L136,220 L140,220 L144,220 L148,220 L152,220 L156,220 L160,220 L164,220 L168,220 L172,220 L176,220 L180,220 L184,220 L188,220 L192,220 L196,220 L200,220 L204,220 L208,220 L212,219 L216,219 L220,219 L224,218 L228,217 L232,216 L236,214 L240,211 L244,208 L248,203 L252,197 L256,190 L260,182 L264,171 L268,160 L272,146 L276,132 L280,116 L284,100 L288,84 L292,68 L296,54 L300,41 L304,31 L308,24 L312,20 L316,20 L320,24 L324,31 L328,41 L332,54 L336,68 L340,84 L344,100 L348,116 L352,132 L356,146 L360,160 L364,171 L368,182 L372,190 L376,197 L380,203 L384,208 L388,211 L392,214 L396,216 L400,217 L404,218 L408,219 L412,219 L416,219 L420,220 L424,220 L428,220 L432,220 L436,220 L440,220 L444,220 L448,220 L452,220 L456,220 L460,220 L464,220 L468,220 L472,220 L476,220 L480,220 L484,220 L488,220 L492,220 L496,220 L500,220 L504,220 L508,220 L512,220 L516,220 L520,220 L524,220 L528,220 L532,220 L536,220 L540,220 L544,220 L548,220 L552,220 L556,220 L560,220 L564,220 L568,220 L572,220 L576,220 L580,220 L584,220 L588,220 L592,220 L596,220 L600,220 L604,220 L608,220 L612,220 L616,220 L620,220 L624,220 L628,220 L632,220 L636,220 L640,220 L644,220 L648,220 L652,220 L656,220 L660,220" stroke="#32CD32" stroke-width="2.5" fill="none"/>++ <!-- Peak annotation -->+ <circle cx="314" cy="22" r="4" fill="#32CD32" opacity="0.9"/>+ <line x1="314" y1="22" x2="314" y2="220" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>+ <text x="314" y="238" fill="#32CD32" font-size="10" text-anchor="middle">527nm</text>++ <!-- FWHM indicator -->+ <line x1="279" y1="120" x2="349" y2="120" stroke="#32CD32" stroke-width="1" stroke-dasharray="4,2" opacity="0.6"/>+ <text x="364" y="116" fill="#8b949e" font-size="9">FWHM ~35nm</text>++ <!-- Y axis labels -->+ <text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0%</text>+ <text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">25%</text>+ <text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">50%</text>+ <text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">75%</text>+ <text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">100%</text>+ <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Relative Intensity</text>++ <!-- X axis labels -->+ <text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">400</text>+ <text x="180" y="255" fill="#484f58" font-size="9" text-anchor="middle">440</text>+ <text x="300" y="255" fill="#484f58" font-size="9" text-anchor="middle">480</text>+ <text x="420" y="255" fill="#484f58" font-size="9" text-anchor="middle">560</text>+ <text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">640</text>+ <text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">700</text>+ <text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Wavelength (nm)</text>+ </svg>+ <div class="chart-note">Green emission centered at 527nm dominant wavelength (530nm peak). The spectral width (~35nm FWHM) is typical of InGaN LEDs.</div>+ </div>+ </div>++ <!-- IV Curve -->+ <div class="section">+ <h2 class="section-title">Forward Current vs. Forward Voltage</h2>+ <div class="chart-wrap">+ <h3>IV Characteristic — the essential curve for circuit design</h3>+ <svg id="iv-chart" width="100%" height="280" viewBox="0 0 700 280">+ <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>+ <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="20" x2="660" y2="20" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="231" y1="20" x2="231" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="403" y1="20" x2="403" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="574" y1="20" x2="574" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>++ <defs>+ <linearGradient id="ivGrad" x1="0" y1="0" x2="0" y2="1">+ <stop offset="0%" stop-color="#32CD32" stop-opacity="0.6"/>+ <stop offset="100%" stop-color="#32CD32" stop-opacity="0.05"/>+ </linearGradient>+ </defs>+ <path d="M60,220 L495,220 L502,220 L510,217 L518,210 L525,196 L540,140 L555,116 L570,92 L592,56 L615,20 L615,220 L60,220 Z" fill="url(#ivGrad)" opacity="0.15"/>+ <path d="M60,220 L495,220 L502,220 L510,217 L518,210 L525,196 L540,140 L555,116 L570,92 L592,56 L615,20" stroke="#32CD32" stroke-width="2.5" fill="none"/>++ <!-- Operating point -->+ <circle cx="540" cy="140" r="5" fill="#32CD32" opacity="0.9"/>+ <line x1="540" y1="140" x2="540" y2="220" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>+ <line x1="60" y1="140" x2="540" y2="140" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>+ <rect x="545" y="126" width="110" height="28" rx="4" fill="#32CD321e"/>+ <text x="600" y="139" fill="#32CD32" font-size="10" text-anchor="middle">Typ: 3.3V, 20mA</text>+ <text x="600" y="150" fill="#8b949e" font-size="8" text-anchor="middle">Operating point</text>++ <!-- Max If line -->+ <line x1="60" y1="120" x2="660" y2="120" stroke="#f85149" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.3"/>+ <text x="100" y="114" fill="#f85149" font-size="9">25mA max</text>++ <!-- Y axis labels -->+ <text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>+ <text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">12.5</text>+ <text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">25</text>+ <text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">37.5</text>+ <text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">50</text>+ <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Forward Current (mA)</text>++ <text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">0</text>+ <text x="231" y="255" fill="#484f58" font-size="9" text-anchor="middle">1.0</text>+ <text x="403" y="255" fill="#484f58" font-size="9" text-anchor="middle">2.0</text>+ <text x="574" y="255" fill="#484f58" font-size="9" text-anchor="middle">3.0</text>+ <text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Forward Voltage (V)</text>+ </svg>+ <div class="chart-note">Characteristic exponential IV curve for a InGaN green LED. Design point: 3.3V typical at 20mA. Never exceed 25mA continuous forward current.</div>+ </div>+ </div>++ <!-- Derating -->+ <div class="section">+ <h2 class="section-title">Forward Current Derating</h2>+ <div class="chart-wrap">+ <h3>Maximum Forward Current vs. Ambient Temperature</h3>+ <svg id="derating-chart" width="100%" height="280" viewBox="0 0 700 280">+ <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>+ <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>++ <defs>+ <linearGradient id="derateGrad" x1="0" y1="0" x2="0" y2="1">+ <stop offset="0%" stop-color="#32CD32" stop-opacity="0.6"/>+ <stop offset="100%" stop-color="#32CD32" stop-opacity="0.05"/>+ </linearGradient>+ </defs>+ <!-- Derating: flat at 25mA until 25C, linear down to 0mA at ~89C -->+ <path d="M60,20 L210,20 L540,187 L565,220 L60,220 Z" fill="url(#derateGrad)" opacity="0.12"/>+ <path d="M60,20 L210,20" stroke="#32CD32" stroke-width="2.5" fill="none"/>+ <path d="M210,20 L540,187" stroke="#32CD32" stroke-width="2.5" fill="none"/>+ <path d="M540,187 L565,220" stroke="#32CD32" stroke-width="2.5" fill="none" stroke-dasharray="4,3"/>++ <circle cx="210" cy="20" r="4" fill="#32CD32" opacity="0.9"/>+ <text x="210" y="40" fill="#32CD32" font-size="10" text-anchor="middle">25mA @ 25°C</text>+ <circle cx="540" cy="187" r="4" fill="#32CD32" opacity="0.9"/>+ <text x="540" y="178" fill="#32CD32" font-size="10" text-anchor="middle">5mA @ 80°C</text>++ <rect x="200" y="100" width="110" height="20" rx="4" fill="rgba(63,185,80,0.12)"/>+ <text x="255" y="114" fill="#3fb950" font-size="10" text-anchor="middle">Safe operating</text>++ <text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>+ <text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">7.5</text>+ <text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">15</text>+ <text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">22.5</text>+ <text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">30</text>+ <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Max If (mA)</text>++ <text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">0</text>+ <text x="210" y="255" fill="#484f58" font-size="9" text-anchor="middle">25</text>+ <text x="360" y="255" fill="#484f58" font-size="9" text-anchor="middle">50</text>+ <text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">80</text>+ <text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">100</text>+ <text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Ambient Temperature (°C)</text>+ </svg>+ <div class="chart-note">Maximum forward current decreases linearly with temperature above 25°C. At 85°C, significant derating is required. Design margin is critical in enclosed or high-temperature applications.</div>+ </div>+ </div>++ <!-- Brightness vs Current -->+ <div class="section">+ <h2 class="section-title">Luminous Intensity vs. Forward Current</h2>+ <div class="chart-wrap">+ <h3>Relative Brightness (normalized at 20mA)</h3>+ <svg id="brightness-current-chart" width="100%" height="280" viewBox="0 0 700 280">+ <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>+ <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>++ <path d="M60,220 Q120,168 180,155 Q240,135 300,120 Q360,106 420,95 Q480,78 540,64 Q600,52 660,40"+ stroke="#32CD32" stroke-width="2.5" fill="none"/>+ <path d="M60,220 L660,20" stroke="#484f58" stroke-width="1" stroke-dasharray="5,4" opacity="0.4"/>+ <text x="600" y="50" fill="#484f58" font-size="9">Linear</text>++ <circle cx="300" cy="120" r="5" fill="#32CD32" opacity="0.9"/>+ <line x1="60" y1="120" x2="300" y2="120" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>+ <line x1="300" y1="120" x2="300" y2="220" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>+ <text x="310" y="114" fill="#32CD32" font-size="10">1.0 @ 20mA</text>++ <text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>+ <text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">0.5</text>+ <text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">1.0</text>+ <text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">1.5</text>+ <text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">2.0</text>+ <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Relative Brightness</text>++ <text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">0</text>+ <text x="180" y="255" fill="#484f58" font-size="9" text-anchor="middle">10</text>+ <text x="300" y="255" fill="#484f58" font-size="9" text-anchor="middle">20</text>+ <text x="420" y="255" fill="#484f58" font-size="9" text-anchor="middle">30</text>+ <text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">40</text>+ <text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">50</text>+ <text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Forward Current (mA)</text>+ </svg>+ <div class="chart-note">Brightness increases sublinearly with current. Diminishing returns at higher drive currents — optimize for efficiency at or below 20mA.</div>+ </div>+ </div>++ <!-- Brightness vs Temperature -->+ <div class="section">+ <h2 class="section-title">Luminous Intensity vs. Temperature</h2>+ <div class="chart-wrap">+ <h3>Relative Brightness vs. Ambient Temperature (normalized at 25°C)</h3>+ <svg id="brightness-temp-chart" width="100%" height="280" viewBox="0 0 700 280">+ <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>+ <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>++ <path d="M60,70 L180,95 L240,105 L300,112 L390,120 L480,134 L540,142 L600,148 L660,150"+ stroke="#32CD32" stroke-width="2.5" fill="none"/>+ <circle cx="390" cy="120" r="5" fill="#32CD32" opacity="0.9"/>+ <line x1="60" y1="120" x2="390" y2="120" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>+ <line x1="390" y1="120" x2="390" y2="220" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>+ <text x="400" y="114" fill="#32CD32" font-size="10">1.0 @ 25°C</text>++ <text x="100" y="62" fill="#58a6ff" font-size="9">Brighter when cold</text>+ <text x="570" y="165" fill="#f85149" font-size="9">Dimmer when hot</text>++ <text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>+ <text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">0.5</text>+ <text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">1.0</text>+ <text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">1.5</text>+ <text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">2.0</text>+ <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Relative Brightness</text>++ <text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">-30</text>+ <text x="180" y="255" fill="#484f58" font-size="9" text-anchor="middle">-10</text>+ <text x="300" y="255" fill="#484f58" font-size="9" text-anchor="middle">10</text>+ <text x="390" y="255" fill="#484f58" font-size="9" text-anchor="middle">25</text>+ <text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">50</text>+ <text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">70</text>+ <text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Ambient Temperature (°C)</text>+ </svg>+ <div class="chart-note">InGaN LEDs lose brightness at elevated temperatures. At 70°C, expect ~30% reduction. Account for this in designs with wide temperature swings.</div>+ </div>+ </div>++ <!-- Resistor Calculator -->+ <div class="section">+ <h2 class="section-title">LED Resistor Calculator</h2>+ <div class="calc-card">+ <h3>⚡ Series Resistor Selection</h3>+ <div class="calc-inputs">+ <div class="calc-field">+ <label>Supply Voltage</label>+ <input type="number" id="calc-vsupply" value="5.0" step="0.1" min="0">+ <div class="unit">Volts</div>+ </div>+ <div class="calc-field">+ <label>Desired Current</label>+ <input type="number" id="calc-iled" value="20" step="1" min="0">+ <div class="unit">Milliamps</div>+ </div>+ </div>+ <div class="calc-results">+ <div class="calc-result">+ <div class="cr-label">Calculated Resistor</div>+ <div class="cr-value" id="calc-r-exact">90.0 Ω</div>+ <div class="cr-detail" id="calc-r-formula">R = (5.0V - 3.3V) / 20mA</div>+ </div>+ <div class="calc-result">+ <div class="cr-label">Nearest E24 Value</div>+ <div class="cr-value" id="calc-r-e24">91.0 Ω</div>+ <div class="cr-detail" id="calc-r-actual">Actual If = 19.8mA</div>+ </div>+ <div class="calc-result">+ <div class="cr-label">Resistor Power</div>+ <div class="cr-value" id="calc-p-resistor">35.6 mW</div>+ <div class="cr-detail" id="calc-p-r-detail">P = (V<sub>supply</sub> - V<sub>f</sub>) × I<sub>f</sub></div>+ </div>+ <div class="calc-result">+ <div class="cr-label">LED Power</div>+ <div class="cr-value" id="calc-p-led">63.3 mW</div>+ <div class="cr-detail" id="calc-p-led-detail">P = V<sub>f</sub> × I<sub>f</sub> (max 75mW)</div>+ </div>+ </div>+ <div class="calc-schematic">+ <svg width="400" height="80" viewBox="0 0 400 80" style="max-width:100%">+ <text x="20" y="38" fill="#e6edf3" font-size="11" font-family="JetBrains Mono,monospace" id="calc-svg-vsupply">5.0V</text>+ <line x1="50" y1="35" x2="90" y2="35" stroke="#e6edf3" stroke-width="1.5"/>+ <path d="M90,35 L100,25 L110,45 L120,25 L130,45 L140,25 L150,45 L160,35" stroke="#00b8b0" stroke-width="2" fill="none"/>+ <text x="125" y="60" fill="#00b8b0" font-size="10" text-anchor="middle" font-family="JetBrains Mono,monospace" id="calc-svg-r">91.0Ω</text>+ <line x1="160" y1="35" x2="210" y2="35" stroke="#e6edf3" stroke-width="1.5"/>+ <polygon points="210,22 210,48 240,35" fill="none" stroke="#32CD32" stroke-width="2"/>+ <line x1="240" y1="22" x2="240" y2="48" stroke="#32CD32" stroke-width="2"/>+ <line x1="230" y1="18" x2="238" y2="10" stroke="#32CD32" stroke-width="1"/>+ <line x1="235" y1="22" x2="243" y2="14" stroke="#32CD32" stroke-width="1"/>+ <polygon points="238,10 234,13 237,14" fill="#32CD32"/>+ <polygon points="243,14 239,17 242,18" fill="#32CD32"/>+ <text x="225" y="65" fill="#32CD32" font-size="10" text-anchor="middle" font-family="JetBrains Mono,monospace">LED</text>+ <line x1="240" y1="35" x2="300" y2="35" stroke="#e6edf3" stroke-width="1.5"/>+ <line x1="300" y1="28" x2="300" y2="42" stroke="#e6edf3" stroke-width="1.5"/>+ <line x1="290" y1="42" x2="310" y2="42" stroke="#e6edf3" stroke-width="1.5"/>+ <line x1="294" y1="47" x2="306" y2="47" stroke="#e6edf3" stroke-width="1.2"/>+ <line x1="297" y1="52" x2="303" y2="52" stroke="#e6edf3" stroke-width="0.8"/>+ <text x="320" y="42" fill="#8b949e" font-size="10" font-family="JetBrains Mono,monospace">GND</text>+ <text x="180" y="26" fill="#8b949e" font-size="9" text-anchor="middle" font-family="JetBrains Mono,monospace" id="calc-svg-if">20mA</text>+ <line x1="168" y1="30" x2="192" y2="30" stroke="#8b949e" stroke-width="0.5"/>+ <polygon points="192,30 187,27 187,33" fill="#8b949e"/>+ </svg>+ </div>+ </div>+ </div>++ <!-- Environmental -->+ <div class="section">+ <h2 class="section-title">Environmental & Handling</h2>+ <div class="env-grid">+ <div class="env-card">+ <div class="env-name">ESD Sensitivity</div>+ <div class="env-spec">InGaN — ESD precautions required</div>+ <div class="env-detail">Use grounded wrist straps & ESD-safe tools</div>+ </div>+ <div class="env-card">+ <div class="env-name">Operating Temperature</div>+ <div class="env-spec">Continuous operation range</div>+ <div class="env-detail">−30°C to +85°C</div>+ </div>+ <div class="env-card">+ <div class="env-name">Storage Temperature</div>+ <div class="env-spec">Unbiased storage</div>+ <div class="env-detail">−40°C to +90°C</div>+ </div>+ <div class="env-card">+ <div class="env-name">Moisture Sensitivity</div>+ <div class="env-spec">MSL noted in packaging</div>+ <div class="env-detail">Follow J-STD-020 bake requirements</div>+ </div>+ </div>+ </div>++ <!-- Symbol, Footprint & 3D View -->+ <div class="section">+ <h2 class="section-title">Symbol, Footprint & 3D Model</h2>+ <div class="grid-2" style="margin-bottom:12px">+ <!-- Interactive SymView -->+ <div class="card" style="padding:0;overflow:hidden">+ <div style="font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-dim);padding:12px 16px 0">Schematic Symbol</div>+ <iframe src="IN-S63BTG-symview.html" style="width:100%;height:340px;border:none;display:block" allow="fullscreen"></iframe>+ </div>+ <!-- Interactive FpView -->+ <div class="card" style="padding:0;overflow:hidden">+ <div style="font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-dim);padding:12px 16px 0">Footprint (0603)</div>+ <iframe src="IN-S63BTG-fpview.html" style="width:100%;height:340px;border:none;display:block" allow="fullscreen"></iframe>+ </div>+ </div>+ <!-- 3D Model -->+ <div class="card" style="text-align:center;margin-bottom:12px">+ <div style="font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-dim);margin-bottom:12px">3D Model (interactive)</div>+ <canvas id="viewer3d" width="600" height="300" style="width:100%;height:300px;border-radius:4px;cursor:grab"></canvas>+ <div style="font-size:10px;color:var(--text-dim);margin-top:6px">Click & drag to rotate · Scroll to zoom</div>+ </div>+ <!-- Download / Export Bar -->+ <div class="card" style="display:flex;align-items:center;gap:10px;flex-wrap:wrap">+ <span style="font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px">Export:</span>+ <a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63btg/IN-S63BTG.kicad_sym" download>KiCad Symbol (.kicad_sym)</a>+ <a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63btg/IN-S63BTG.kicad_mod" download>KiCad Footprint (.kicad_mod)</a>+ <a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63btg/IN-S63BTG.lbr" download>Fusion 360 (.lbr)</a>+ <a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63btg/IN-S63BTG.step" download>3D Model (.step)</a>+ </div>+ </div>++ <!-- Documents -->+ <div class="section">+ <h2 class="section-title">Documents</h2>+ <div class="card">+ <table class="detail-table">+ <tr><td>Datasheet</td><td><a href="http://www.inolux-corp.com/datasheet/SMDLED/Mono%20Color%20Top%20View/IN-S63BT%20Series.pdf" target="_blank">IN-S63BT Series (PDF) →</a></td></tr>+ <tr><td>Series</td><td>IN-S63BT</td></tr>+ <tr><td>Manufacturer</td><td>Inolux Corporation</td></tr>+ </table>+ </div>+ </div>++ <div class="source">+ IN-S63BTG characterization · Data from Inolux IN-S63BT Series datasheet · 2026-06-03+ </div>++</div>++<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>+<script src="https://cdn.jsdelivr.net/npm/[email protected]/examples/js/pmrem/PMREMGenerator.js"></script>+<script>+(function() {+ // ==================== 3D Viewer — IN-S63BTG (0603 LED, green) ====================+ var canvas = document.getElementById('viewer3d');+ if (canvas && window.THREE) {+ var scene = new THREE.Scene();+ var renderer = new THREE.WebGLRenderer({ canvas: canvas, antialias: true, alpha: true, logarithmicDepthBuffer: true });+ renderer.setSize(canvas.width, canvas.height);+ renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));+ renderer.outputEncoding = THREE.sRGBEncoding;+ renderer.toneMapping = THREE.ACESFilmicToneMapping;+ renderer.toneMappingExposure = 1.2;+ renderer.physicallyCorrectLights = true;+ canvas.style.background = 'linear-gradient(180deg, #5a6b7e 0%, #2a3340 100%)';++ var camera = new THREE.PerspectiveCamera(35, canvas.width / canvas.height, 0.01, 1000);++ var pmremGen = new THREE.PMREMGenerator(renderer);+ pmremGen.compileEquirectangularShader();+ var envScene = new THREE.Scene();+ envScene.background = new THREE.Color(0x3a4550);+ var envLight1 = new THREE.DirectionalLight(0xffffff, 2);+ envLight1.position.set(1, 3, 2); envScene.add(envLight1);+ var envLight2 = new THREE.DirectionalLight(0x8899bb, 1);+ envLight2.position.set(-2, 1, -1); envScene.add(envLight2);+ var envRT = pmremGen.fromScene(envScene, 0.04);+ scene.environment = envRT.texture;++ scene.add(new THREE.HemisphereLight(0xe6edf3, 0xb3a699, 0.5));+ var keyLight = new THREE.DirectionalLight(0xffffff, 1.5);+ keyLight.position.set(2, 5, 3); scene.add(keyLight);+ var fillLight = new THREE.DirectionalLight(0x8899aa, 0.5);+ fillLight.position.set(-3, 2, -2); scene.add(fillLight);+ var rimLight = new THREE.DirectionalLight(parseInt('#32CD32'.slice(1), 16), 0.4);+ rimLight.position.set(0, -1, 3); scene.add(rimLight);++ var S = 1.5; // 0603 is bigger than 0402 so scale less+ var bodyW = 1.6, bodyD = 0.8, bodyH = 0.3;+ var lensH = 0.08;+ var termW = 0.25;++ var bodyMat = new THREE.MeshStandardMaterial({ color: 0x2a2018, metalness: 0.0, roughness: 0.4 });+ var lensMat = new THREE.MeshStandardMaterial({+ color: parseInt('#32CD32'.slice(1), 16), metalness: 0.0, roughness: 0.15,+ transparent: true, opacity: 0.55,+ emissive: parseInt('#228B22'.slice(1), 16), emissiveIntensity: 0.3+ });+ var termMat = new THREE.MeshStandardMaterial({ color: 0xc8ccd1, metalness: 1.0, roughness: 0.25 });+ var padMat = new THREE.MeshStandardMaterial({ color: 0xc9a04c, metalness: 1.0, roughness: 0.22 });+ var pcbMat = new THREE.MeshStandardMaterial({ color: 0x0a2a0a, metalness: 0.0, roughness: 0.6 });+ var cathodeMat = new THREE.MeshStandardMaterial({ color: parseInt('#32CD32'.slice(1), 16), emissive: parseInt('#228B22'.slice(1), 16), emissiveIntensity: 0.5, metalness: 0.0, roughness: 0.5 });++ var innerW = bodyW - termW * 2 + 0.02;+ var body = new THREE.Mesh(new THREE.BoxGeometry(innerW*S, bodyH*S, bodyD*S), bodyMat);+ body.position.y = bodyH*S/2; scene.add(body);++ var lens = new THREE.Mesh(new THREE.BoxGeometry(bodyW*0.85*S, lensH*S, bodyD*0.85*S), lensMat);+ lens.position.y = (bodyH + lensH/2)*S; scene.add(lens);++ function makeTerminal(xSign) {+ var group = new THREE.Group();+ var front = new THREE.Mesh(new THREE.BoxGeometry(termW*S, bodyH*S, bodyD*S*0.99), termMat);+ front.position.set(xSign*(bodyW/2 - termW/2)*S, bodyH*S/2, 0);+ group.add(front);+ var bot = new THREE.Mesh(new THREE.BoxGeometry((termW+0.03)*S, 0.04*S, bodyD*S*0.99), termMat);+ bot.position.set(xSign*(bodyW/2 - termW/2)*S, 0.02*S, 0);+ group.add(bot);+ return group;+ }+ scene.add(makeTerminal(-1));+ scene.add(makeTerminal(1));++ var cathMark = new THREE.Mesh(new THREE.BoxGeometry(0.02*S, 0.02*S, bodyD*0.7*S), cathodeMat);+ cathMark.position.set(0.4*S, (bodyH + lensH + 0.02)*S, 0); scene.add(cathMark);++ var pcb = new THREE.Mesh(new THREE.BoxGeometry(10*S, 0.08*S, 8*S), pcbMat);+ pcb.position.y = -0.04*S; scene.add(pcb);++ var pad1 = new THREE.Mesh(new THREE.BoxGeometry(0.7*S, 0.025*S, 0.7*S), padMat);+ pad1.position.set(-0.35*S, 0.005*S, 0); scene.add(pad1);+ var pad2 = new THREE.Mesh(new THREE.BoxGeometry(0.7*S, 0.025*S, 0.7*S), padMat);+ pad2.position.set(0.35*S, 0.005*S, 0); scene.add(pad2);++ var gridMat2 = new THREE.LineBasicMaterial({ color: 0x0d3d0d, transparent: true, opacity: 0.3 });+ for (var i = -8; i <= 8; i++) {+ var pts1 = [new THREE.Vector3(i*0.4*S, 0.045*S, -4*S), new THREE.Vector3(i*0.4*S, 0.045*S, 4*S)];+ scene.add(new THREE.Line(new THREE.BufferGeometry().setFromPoints(pts1), gridMat2));+ var pts2 = [new THREE.Vector3(-4*S, 0.045*S, i*0.4*S), new THREE.Vector3(4*S, 0.045*S, i*0.4*S)];+ scene.add(new THREE.Line(new THREE.BufferGeometry().setFromPoints(pts2), gridMat2));+ }++ var isDragging = false, prevX = 0, prevY = 0;+ var theta = Math.PI/4, phi = Math.PI/5.5, radius = 5.0;+ var target = new THREE.Vector3(0, 0.3, 0);++ function updateCamera() {+ camera.position.x = radius * Math.sin(theta) * Math.cos(phi);+ camera.position.y = radius * Math.sin(phi) + target.y;+ camera.position.z = radius * Math.cos(theta) * Math.cos(phi);+ camera.lookAt(target);+ }+ updateCamera();++ canvas.addEventListener('mousedown', function(e) { isDragging = true; prevX = e.clientX; prevY = e.clientY; canvas.style.cursor = 'grabbing'; });+ window.addEventListener('mouseup', function() { isDragging = false; canvas.style.cursor = 'grab'; });+ canvas.addEventListener('mousemove', function(e) {+ if (!isDragging) return;+ theta -= (e.clientX - prevX) * 0.008;+ phi = Math.max(0.05, Math.min(Math.PI/2.2, phi + (e.clientY - prevY) * 0.008));+ prevX = e.clientX; prevY = e.clientY;+ updateCamera();+ });+ canvas.addEventListener('wheel', function(e) {+ e.preventDefault();+ radius = Math.max(2, Math.min(12, radius + e.deltaY * 0.004));+ updateCamera();+ }, { passive: false });++ function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); }+ animate();+ }++ // ==================== Resistor Calculator ====================+ var VF_TYP = 3.3;+ var E24 = [10,11,12,13,15,16,18,20,22,24,27,30,33,36,39,43,47,51,56,62,68,75,82,91];++ function nearestE24(val) {+ if (val <= 0) return 0;+ var decade = 1;+ while (val >= 100) { val /= 10; decade *= 10; }+ while (val < 10) { val *= 10; decade /= 10; }+ var best = E24[0], bestDist = Math.abs(val - E24[0]);+ for (var i = 1; i < E24.length; i++) {+ var d = Math.abs(val - E24[i]);+ if (d < bestDist) { bestDist = d; best = E24[i]; }+ }+ return best * decade;+ }++ function formatResistance(r) {+ if (r >= 1e6) return (r/1e6).toFixed(1) + ' MΩ';+ if (r >= 1e3) return (r/1e3).toFixed(0) + ' kΩ';+ if (r >= 100) return r.toFixed(0) + ' Ω';+ if (r >= 10) return r.toFixed(1) + ' Ω';+ return r.toFixed(2) + ' Ω';+ }++ function updateCalculator() {+ var vSupply = parseFloat(document.getElementById('calc-vsupply').value) || 0;+ var iLed = parseFloat(document.getElementById('calc-iled').value) || 0;+ var iLedA = iLed / 1000;+ var vDrop = vSupply - VF_TYP;+ var rExact = vDrop > 0 && iLedA > 0 ? vDrop / iLedA : 0;+ var rE24 = nearestE24(rExact);+ var iActual = rE24 > 0 ? vDrop / rE24 : 0;+ var pResistor = vDrop * iActual;+ var pLed = VF_TYP * iActual;++ document.getElementById('calc-r-exact').innerHTML = rExact > 0 ? formatResistance(rExact) : '—';+ document.getElementById('calc-r-formula').textContent = 'R = (' + vSupply.toFixed(1) + 'V - ' + VF_TYP + 'V) / ' + iLed.toFixed(0) + 'mA';+ document.getElementById('calc-r-e24').innerHTML = rE24 > 0 ? formatResistance(rE24) : '—';+ document.getElementById('calc-r-actual').textContent = iActual > 0 ? 'Actual If = ' + (iActual * 1000).toFixed(1) + 'mA' : '';+ document.getElementById('calc-p-resistor').textContent = pResistor > 0 ? (pResistor * 1000).toFixed(1) + ' mW' : '—';+ document.getElementById('calc-p-led').textContent = pLed > 0 ? (pLed * 1000).toFixed(1) + ' mW' : '—';++ var svgVs = document.getElementById('calc-svg-vsupply');+ if (svgVs) svgVs.textContent = vSupply.toFixed(1) + 'V';+ var svgR = document.getElementById('calc-svg-r');+ if (svgR) svgR.textContent = rE24 > 0 ? formatResistance(rE24) : '—';+ var svgIf = document.getElementById('calc-svg-if');+ if (svgIf) svgIf.textContent = iActual > 0 ? (iActual * 1000).toFixed(1) + 'mA' : '';++ var pLedEl = document.getElementById('calc-p-led');+ if (pLed * 1000 > 75) { pLedEl.style.color = '#f85149'; } else { pLedEl.style.color = ''; }++ var rExactEl = document.getElementById('calc-r-exact');+ if (vDrop <= 0) { rExactEl.innerHTML = '<span style="color:#f85149">V<sub>supply</sub> too low</span>'; }+ }++ document.getElementById('calc-vsupply').addEventListener('input', updateCalculator);+ document.getElementById('calc-iled').addEventListener('input', updateCalculator);+ updateCalculator();+})();+</script>+</body>+</html>
IN-S63BTG.kicad_modadded+15@@ -0,0 +1,15 @@+(footprint "IN-S63BTG"+ (version 20240108)+ (generator "adom-footprint")+ (layer "F.Cu")+ (descr "Inolux Corporation · Top View SMD LED · 0603 (1.6 × 0.8mm) · InGaN")+ (attr smd)+ (fp_text reference "REF**" (at 0 -2.8)+ (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))+ (fp_text value "IN-S63BTG" (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))+)
IN-S63BTG.kicad_symadded+139@@ -0,0 +1,139 @@+(kicad_symbol_lib+ (version 20231120)+ (generator "adom")+ (symbol "IN-S63BTG"+ (pin_numbers (hide yes))+ (pin_names (offset 1.016) (hide yes))+ (exclude_from_sim no)+ (in_bom yes)+ (on_board yes)+ (property "Reference" "D"+ (at 0 2.54 0)+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (property "Value" "IN-S63BTG"+ (at 0 -2.54 0)+ (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" "Light emitting diode"+ (at 0 0 0)+ (effects (font (size 1.27 1.27)) (hide yes))+ )+ (symbol "IN-S63BTG_0_1"+ (polyline+ (pts+ (xy -3.048 -0.762) (xy -4.572 -2.286) (xy -3.81 -2.286) (xy -4.572 -2.286) (xy -4.572 -1.524)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy -1.778 -0.762) (xy -3.302 -2.286) (xy -2.54 -2.286) (xy -3.302 -2.286) (xy -3.302 -1.524)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy -1.27 0) (xy 1.27 0)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy -1.27 -1.27) (xy -1.27 1.27)+ )+ (stroke+ (width 0.254)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy 1.27 -1.27) (xy 1.27 1.27) (xy -1.27 0) (xy 1.27 -1.27)+ )+ (stroke+ (width 0.254)+ (type default)+ )+ (fill+ (type none)+ )+ )+ )+ (symbol "IN-S63BTG_1_1"+ (pin passive line+ (at -3.81 0 0)+ (length 2.54)+ (name "K"+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (number "1"+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ )+ (pin passive line+ (at 3.81 0 180)+ (length 2.54)+ (name "A"+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (number "2"+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ )+ )+ )+)
IN-S63BTG.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>IN-S63BTG — Green 0603 — Inolux Corporation</description>+<packages></packages>+<symbols>+<symbol name="IN-S63BTG">+ <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">>NAME</text>+ <text x="0" y="-5.08" size="1.27" layer="96" align="top-center">>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="IN-S63BTG" prefix="D">+ <description>Green 0603 — Inolux Corporation</description>+ <gates>+ <gate name="G$1" symbol="IN-S63BTG" x="0" y="0"/>+ </gates>+ <devices>+ <device name="">+ <connects/>+ <technologies><technology name=""/></technologies>+ </device>+ </devices>+</deviceset>+</devicesets>+</library>+</drawing>+</eagle>
IN-S63BTG.stepadded+1958@@ -0,0 +1,1958 @@+ISO-10303-21;+HEADER;+/* LED_0603_1608Metric.step 3D STEP model for use in ECAD systems+ * Copyright (C) 2018, 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 LED_0603_1608Metric'),+/* implementation_level */ '2;1');++FILE_NAME(+/* name */ 'LED_0603_1608Metric.step',+/* time_stamp */ '2018-03-14T23:51:15',+/* 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('LED_0603_1608Metric','LED_0603_1608Metric','',(#8));+#8 = PRODUCT_CONTEXT('',#2,'mechanical');+#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');+#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#1538);+#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,#57,#104,#183,#207,#247,#278,#295,#328,#352,+#419,#540,#607,#631,#662,#695,#751,#775,#799,#823,#856,#868,#931,+#956,#973,#997,#1015,#1033,#1051,#1068,#1085,#1116,#1141,#1166,#1190+,#1207,#1238,#1262,#1279,#1307,#1332,#1356,#1381,#1428,#1445,#1457,+#1479,#1491,#1509,#1527));+#17 = ADVANCED_FACE('',(#18),#52,.F.);+#18 = FACE_BOUND('',#19,.F.);+#19 = EDGE_LOOP('',(#20,#30,#38,#46));+#20 = ORIENTED_EDGE('',*,*,#21,.T.);+#21 = EDGE_CURVE('',#22,#24,#26,.T.);+#22 = VERTEX_POINT('',#23);+#23 = CARTESIAN_POINT('',(-0.5,-0.4,0.47));+#24 = VERTEX_POINT('',#25);+#25 = CARTESIAN_POINT('',(-0.45,-0.4,1.1));+#26 = LINE('',#27,#28);+#27 = CARTESIAN_POINT('',(-0.5,-0.4,0.47));+#28 = VECTOR('',#29,1.);+#29 = DIRECTION('',(7.911630099812E-02,0.,0.996865392576));+#30 = ORIENTED_EDGE('',*,*,#31,.T.);+#31 = EDGE_CURVE('',#24,#32,#34,.T.);+#32 = VERTEX_POINT('',#33);+#33 = CARTESIAN_POINT('',(0.45,-0.4,1.1));+#34 = LINE('',#35,#36);+#35 = CARTESIAN_POINT('',(-0.45,-0.4,1.1));+#36 = VECTOR('',#37,1.);+#37 = DIRECTION('',(1.,0.,0.));+#38 = ORIENTED_EDGE('',*,*,#39,.T.);+#39 = EDGE_CURVE('',#32,#40,#42,.T.);+#40 = VERTEX_POINT('',#41);+#41 = CARTESIAN_POINT('',(0.5,-0.4,0.47));+#42 = LINE('',#43,#44);+#43 = CARTESIAN_POINT('',(0.45,-0.4,1.1));+#44 = VECTOR('',#45,1.);+#45 = DIRECTION('',(7.911630099812E-02,0.,-0.996865392576));+#46 = ORIENTED_EDGE('',*,*,#47,.T.);+#47 = EDGE_CURVE('',#40,#22,#48,.T.);+#48 = LINE('',#49,#50);+#49 = CARTESIAN_POINT('',(0.5,-0.4,0.47));+#50 = VECTOR('',#51,1.);+#51 = DIRECTION('',(-1.,0.,0.));+#52 = PLANE('',#53);+#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);+#54 = CARTESIAN_POINT('',(-8.772411109409E-18,-0.4,0.775044128294));+#55 = DIRECTION('',(0.,1.,0.));+#56 = DIRECTION('',(0.,0.,1.));+#57 = ADVANCED_FACE('',(#58),#99,.T.);+#58 = FACE_BOUND('',#59,.T.);+#59 = EDGE_LOOP('',(#60,#70,#78,#84,#85,#93));+#60 = ORIENTED_EDGE('',*,*,#61,.T.);+#61 = EDGE_CURVE('',#62,#64,#66,.T.);+#62 = VERTEX_POINT('',#63);+#63 = CARTESIAN_POINT('',(-0.5,0.4,0.47));+#64 = VERTEX_POINT('',#65);+#65 = CARTESIAN_POINT('',(-0.5,0.3,0.47));+#66 = LINE('',#67,#68);+#67 = CARTESIAN_POINT('',(-0.5,0.4,0.47));+#68 = VECTOR('',#69,1.);+#69 = DIRECTION('',(0.,-1.,0.));+#70 = ORIENTED_EDGE('',*,*,#71,.F.);+#71 = EDGE_CURVE('',#72,#64,#74,.T.);+#72 = VERTEX_POINT('',#73);+#73 = CARTESIAN_POINT('',(-0.5,-0.3,0.47));+#74 = LINE('',#75,#76);+#75 = CARTESIAN_POINT('',(-0.5,-0.4,0.47));+#76 = VECTOR('',#77,1.);+#77 = DIRECTION('',(0.,1.,0.));+#78 = ORIENTED_EDGE('',*,*,#79,.T.);+#79 = EDGE_CURVE('',#72,#22,#80,.T.);+#80 = LINE('',#81,#82);+#81 = CARTESIAN_POINT('',(-0.5,0.4,0.47));+#82 = VECTOR('',#83,1.);+#83 = DIRECTION('',(0.,-1.,0.));+#84 = ORIENTED_EDGE('',*,*,#21,.T.);+#85 = ORIENTED_EDGE('',*,*,#86,.F.);+#86 = EDGE_CURVE('',#87,#24,#89,.T.);+#87 = VERTEX_POINT('',#88);+#88 = CARTESIAN_POINT('',(-0.45,0.4,1.1));+#89 = LINE('',#90,#91);+#90 = CARTESIAN_POINT('',(-0.45,0.4,1.1));+#91 = VECTOR('',#92,1.);+#92 = DIRECTION('',(0.,-1.,0.));+#93 = ORIENTED_EDGE('',*,*,#94,.F.);+#94 = EDGE_CURVE('',#62,#87,#95,.T.);+#95 = LINE('',#96,#97);+#96 = CARTESIAN_POINT('',(-0.5,0.4,0.47));+#97 = VECTOR('',#98,1.);+#98 = DIRECTION('',(7.911630099812E-02,0.,0.996865392576));+#99 = PLANE('',#100);+#100 = AXIS2_PLACEMENT_3D('',#101,#102,#103);+#101 = CARTESIAN_POINT('',(-0.5,0.4,0.47));+#102 = DIRECTION('',(-0.996865392576,0.,7.911630099812E-02));+#103 = DIRECTION('',(7.911630099812E-02,0.,0.996865392576));+#104 = ADVANCED_FACE('',(#105),#178,.F.);+#105 = FACE_BOUND('',#106,.F.);+#106 = EDGE_LOOP('',(#107,#117,#125,#133,#139,#140,#148,#156,#164,#172)+);+#107 = ORIENTED_EDGE('',*,*,#108,.F.);+#108 = EDGE_CURVE('',#109,#111,#113,.T.);+#109 = VERTEX_POINT('',#110);+#110 = CARTESIAN_POINT('',(-0.77,-0.4,3.E-02));+#111 = VERTEX_POINT('',#112);+#112 = CARTESIAN_POINT('',(-0.725,-0.4,3.E-02));+#113 = LINE('',#114,#115);+#114 = CARTESIAN_POINT('',(-0.77,-0.4,3.E-02));+#115 = VECTOR('',#116,1.);+#116 = DIRECTION('',(1.,0.,0.));+#117 = ORIENTED_EDGE('',*,*,#118,.T.);+#118 = EDGE_CURVE('',#109,#119,#121,.T.);+#119 = VERTEX_POINT('',#120);+#120 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#121 = LINE('',#122,#123);+#122 = CARTESIAN_POINT('',(-0.77,-0.4,3.E-02));+#123 = VECTOR('',#124,1.);+#124 = DIRECTION('',(0.,0.,1.));+#125 = ORIENTED_EDGE('',*,*,#126,.T.);+#126 = EDGE_CURVE('',#119,#127,#129,.T.);+#127 = VERTEX_POINT('',#128);+#128 = CARTESIAN_POINT('',(-0.725,-0.4,0.47));+#129 = LINE('',#130,#131);+#130 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#131 = VECTOR('',#132,1.);+#132 = DIRECTION('',(1.,0.,0.));+#133 = ORIENTED_EDGE('',*,*,#134,.T.);+#134 = EDGE_CURVE('',#127,#22,#135,.T.);+#135 = LINE('',#136,#137);+#136 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#137 = VECTOR('',#138,1.);+#138 = DIRECTION('',(1.,0.,0.));+#139 = ORIENTED_EDGE('',*,*,#47,.F.);+#140 = ORIENTED_EDGE('',*,*,#141,.T.);+#141 = EDGE_CURVE('',#40,#142,#144,.T.);+#142 = VERTEX_POINT('',#143);+#143 = CARTESIAN_POINT('',(0.725,-0.4,0.47));+#144 = LINE('',#145,#146);+#145 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#146 = VECTOR('',#147,1.);+#147 = DIRECTION('',(1.,0.,0.));+#148 = ORIENTED_EDGE('',*,*,#149,.T.);+#149 = EDGE_CURVE('',#142,#150,#152,.T.);+#150 = VERTEX_POINT('',#151);+#151 = CARTESIAN_POINT('',(0.77,-0.4,0.47));+#152 = LINE('',#153,#154);+#153 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#154 = VECTOR('',#155,1.);+#155 = DIRECTION('',(1.,0.,0.));+#156 = ORIENTED_EDGE('',*,*,#157,.F.);+#157 = EDGE_CURVE('',#158,#150,#160,.T.);+#158 = VERTEX_POINT('',#159);+#159 = CARTESIAN_POINT('',(0.77,-0.4,3.E-02));+#160 = LINE('',#161,#162);+#161 = CARTESIAN_POINT('',(0.77,-0.4,3.E-02));+#162 = VECTOR('',#163,1.);+#163 = DIRECTION('',(0.,0.,1.));+#164 = ORIENTED_EDGE('',*,*,#165,.F.);+#165 = EDGE_CURVE('',#166,#158,#168,.T.);+#166 = VERTEX_POINT('',#167);+#167 = CARTESIAN_POINT('',(0.725,-0.4,3.E-02));+#168 = LINE('',#169,#170);+#169 = CARTESIAN_POINT('',(-0.77,-0.4,3.E-02));+#170 = VECTOR('',#171,1.);+#171 = DIRECTION('',(1.,0.,0.));+#172 = ORIENTED_EDGE('',*,*,#173,.F.);+#173 = EDGE_CURVE('',#111,#166,#174,.T.);+#174 = LINE('',#175,#176);+#175 = CARTESIAN_POINT('',(-0.77,-0.4,3.E-02));+#176 = VECTOR('',#177,1.);+#177 = DIRECTION('',(1.,0.,0.));+#178 = PLANE('',#179);+#179 = AXIS2_PLACEMENT_3D('',#180,#181,#182);+#180 = CARTESIAN_POINT('',(-0.77,-0.4,3.E-02));+#181 = DIRECTION('',(0.,1.,0.));+#182 = DIRECTION('',(0.,0.,1.));+#183 = ADVANCED_FACE('',(#184),#202,.T.);+#184 = FACE_BOUND('',#185,.T.);+#185 = EDGE_LOOP('',(#186,#187,#188,#196));+#186 = ORIENTED_EDGE('',*,*,#86,.T.);+#187 = ORIENTED_EDGE('',*,*,#31,.T.);+#188 = ORIENTED_EDGE('',*,*,#189,.F.);+#189 = EDGE_CURVE('',#190,#32,#192,.T.);+#190 = VERTEX_POINT('',#191);+#191 = CARTESIAN_POINT('',(0.45,0.4,1.1));+#192 = LINE('',#193,#194);+#193 = CARTESIAN_POINT('',(0.45,0.4,1.1));+#194 = VECTOR('',#195,1.);+#195 = DIRECTION('',(0.,-1.,0.));+#196 = ORIENTED_EDGE('',*,*,#197,.F.);+#197 = EDGE_CURVE('',#87,#190,#198,.T.);+#198 = LINE('',#199,#200);+#199 = CARTESIAN_POINT('',(-0.45,0.4,1.1));+#200 = VECTOR('',#201,1.);+#201 = DIRECTION('',(1.,0.,0.));+#202 = PLANE('',#203);+#203 = AXIS2_PLACEMENT_3D('',#204,#205,#206);+#204 = CARTESIAN_POINT('',(-0.45,0.4,1.1));+#205 = DIRECTION('',(0.,0.,1.));+#206 = DIRECTION('',(1.,0.,0.));+#207 = ADVANCED_FACE('',(#208),#242,.T.);+#208 = FACE_BOUND('',#209,.T.);+#209 = EDGE_LOOP('',(#210,#211,#212,#220,#228,#236));+#210 = ORIENTED_EDGE('',*,*,#189,.T.);+#211 = ORIENTED_EDGE('',*,*,#39,.T.);+#212 = ORIENTED_EDGE('',*,*,#213,.F.);+#213 = EDGE_CURVE('',#214,#40,#216,.T.);+#214 = VERTEX_POINT('',#215);+#215 = CARTESIAN_POINT('',(0.5,-0.3,0.47));+#216 = LINE('',#217,#218);+#217 = CARTESIAN_POINT('',(0.5,0.4,0.47));+#218 = VECTOR('',#219,1.);+#219 = DIRECTION('',(0.,-1.,0.));+#220 = ORIENTED_EDGE('',*,*,#221,.T.);+#221 = EDGE_CURVE('',#214,#222,#224,.T.);+#222 = VERTEX_POINT('',#223);+#223 = CARTESIAN_POINT('',(0.5,0.3,0.47));+#224 = LINE('',#225,#226);+#225 = CARTESIAN_POINT('',(0.5,-0.4,0.47));+#226 = VECTOR('',#227,1.);+#227 = DIRECTION('',(0.,1.,0.));+#228 = ORIENTED_EDGE('',*,*,#229,.F.);+#229 = EDGE_CURVE('',#230,#222,#232,.T.);+#230 = VERTEX_POINT('',#231);+#231 = CARTESIAN_POINT('',(0.5,0.4,0.47));+#232 = LINE('',#233,#234);+#233 = CARTESIAN_POINT('',(0.5,0.4,0.47));+#234 = VECTOR('',#235,1.);+#235 = DIRECTION('',(0.,-1.,0.));+#236 = ORIENTED_EDGE('',*,*,#237,.F.);+#237 = EDGE_CURVE('',#190,#230,#238,.T.);+#238 = LINE('',#239,#240);+#239 = CARTESIAN_POINT('',(0.45,0.4,1.1));+#240 = VECTOR('',#241,1.);+#241 = DIRECTION('',(7.911630099812E-02,0.,-0.996865392576));+#242 = PLANE('',#243);+#243 = AXIS2_PLACEMENT_3D('',#244,#245,#246);+#244 = CARTESIAN_POINT('',(0.45,0.4,1.1));+#245 = DIRECTION('',(0.996865392576,0.,7.911630099812E-02));+#246 = DIRECTION('',(7.911630099812E-02,0.,-0.996865392576));+#247 = ADVANCED_FACE('',(#248),#273,.T.);+#248 = FACE_BOUND('',#249,.T.);+#249 = EDGE_LOOP('',(#250,#258,#266,#272));+#250 = ORIENTED_EDGE('',*,*,#251,.F.);+#251 = EDGE_CURVE('',#252,#62,#254,.T.);+#252 = VERTEX_POINT('',#253);+#253 = CARTESIAN_POINT('',(-0.725,0.4,0.47));+#254 = LINE('',#255,#256);+#255 = CARTESIAN_POINT('',(-0.77,0.4,0.47));+#256 = VECTOR('',#257,1.);+#257 = DIRECTION('',(1.,0.,0.));+#258 = ORIENTED_EDGE('',*,*,#259,.F.);+#259 = EDGE_CURVE('',#260,#252,#262,.T.);+#260 = VERTEX_POINT('',#261);+#261 = CARTESIAN_POINT('',(-0.725,0.3,0.47));+#262 = LINE('',#263,#264);+#263 = CARTESIAN_POINT('',(-0.725,5.E-02,0.47));+#264 = VECTOR('',#265,1.);+#265 = DIRECTION('',(0.,1.,0.));+#266 = ORIENTED_EDGE('',*,*,#267,.F.);+#267 = EDGE_CURVE('',#64,#260,#268,.T.);+#268 = LINE('',#269,#270);+#269 = CARTESIAN_POINT('',(-0.7475,0.3,0.47));+#270 = VECTOR('',#271,1.);+#271 = DIRECTION('',(-1.,0.,0.));+#272 = ORIENTED_EDGE('',*,*,#61,.F.);+#273 = PLANE('',#274);+#274 = AXIS2_PLACEMENT_3D('',#275,#276,#277);+#275 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#276 = DIRECTION('',(0.,0.,1.));+#277 = DIRECTION('',(1.,0.,0.));+#278 = ADVANCED_FACE('',(#279),#290,.T.);+#279 = FACE_BOUND('',#280,.T.);+#280 = EDGE_LOOP('',(#281,#282,#283,#284));+#281 = ORIENTED_EDGE('',*,*,#94,.T.);+#282 = ORIENTED_EDGE('',*,*,#197,.T.);+#283 = ORIENTED_EDGE('',*,*,#237,.T.);+#284 = ORIENTED_EDGE('',*,*,#285,.T.);+#285 = EDGE_CURVE('',#230,#62,#286,.T.);+#286 = LINE('',#287,#288);+#287 = CARTESIAN_POINT('',(0.5,0.4,0.47));+#288 = VECTOR('',#289,1.);+#289 = DIRECTION('',(-1.,0.,0.));+#290 = PLANE('',#291);+#291 = AXIS2_PLACEMENT_3D('',#292,#293,#294);+#292 = CARTESIAN_POINT('',(-8.772411109409E-18,0.4,0.775044128294));+#293 = DIRECTION('',(0.,1.,0.));+#294 = DIRECTION('',(0.,0.,1.));+#295 = ADVANCED_FACE('',(#296),#323,.T.);+#296 = FACE_BOUND('',#297,.F.);+#297 = EDGE_LOOP('',(#298,#299,#308,#316));+#298 = ORIENTED_EDGE('',*,*,#71,.F.);+#299 = ORIENTED_EDGE('',*,*,#300,.F.);+#300 = EDGE_CURVE('',#301,#72,#303,.T.);+#301 = VERTEX_POINT('',#302);+#302 = CARTESIAN_POINT('',(-0.53,-0.3,0.5));+#303 = CIRCLE('',#304,3.E-02);+#304 = AXIS2_PLACEMENT_3D('',#305,#306,#307);+#305 = CARTESIAN_POINT('',(-0.53,-0.3,0.47));+#306 = DIRECTION('',(-0.,1.,0.));+#307 = DIRECTION('',(1.,0.,0.));+#308 = ORIENTED_EDGE('',*,*,#309,.T.);+#309 = EDGE_CURVE('',#301,#310,#312,.T.);+#310 = VERTEX_POINT('',#311);+#311 = CARTESIAN_POINT('',(-0.53,0.3,0.5));+#312 = LINE('',#313,#314);+#313 = CARTESIAN_POINT('',(-0.53,-0.4,0.5));+#314 = VECTOR('',#315,1.);+#315 = DIRECTION('',(0.,1.,0.));+#316 = ORIENTED_EDGE('',*,*,#317,.T.);+#317 = EDGE_CURVE('',#310,#64,#318,.T.);+#318 = CIRCLE('',#319,3.E-02);+#319 = AXIS2_PLACEMENT_3D('',#320,#321,#322);+#320 = CARTESIAN_POINT('',(-0.53,0.3,0.47));+#321 = DIRECTION('',(-0.,1.,0.));+#322 = DIRECTION('',(1.,0.,0.));+#323 = CYLINDRICAL_SURFACE('',#324,3.E-02);+#324 = AXIS2_PLACEMENT_3D('',#325,#326,#327);+#325 = CARTESIAN_POINT('',(-0.53,-0.4,0.47));+#326 = DIRECTION('',(0.,1.,0.));+#327 = DIRECTION('',(1.,0.,0.));+#328 = ADVANCED_FACE('',(#329),#347,.T.);+#329 = FACE_BOUND('',#330,.T.);+#330 = EDGE_LOOP('',(#331,#339,#340,#341));+#331 = ORIENTED_EDGE('',*,*,#332,.F.);+#332 = EDGE_CURVE('',#127,#333,#335,.T.);+#333 = VERTEX_POINT('',#334);+#334 = CARTESIAN_POINT('',(-0.725,-0.3,0.47));+#335 = LINE('',#336,#337);+#336 = CARTESIAN_POINT('',(-0.725,-0.35,0.47));+#337 = VECTOR('',#338,1.);+#338 = DIRECTION('',(0.,1.,0.));+#339 = ORIENTED_EDGE('',*,*,#134,.T.);+#340 = ORIENTED_EDGE('',*,*,#79,.F.);+#341 = ORIENTED_EDGE('',*,*,#342,.F.);+#342 = EDGE_CURVE('',#333,#72,#343,.T.);+#343 = LINE('',#344,#345);+#344 = CARTESIAN_POINT('',(-2.25E-02,-0.3,0.47));+#345 = VECTOR('',#346,1.);+#346 = DIRECTION('',(1.,0.,0.));+#347 = PLANE('',#348);+#348 = AXIS2_PLACEMENT_3D('',#349,#350,#351);+#349 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#350 = DIRECTION('',(0.,0.,1.));+#351 = DIRECTION('',(1.,0.,0.));+#352 = ADVANCED_FACE('',(#353),#414,.F.);+#353 = FACE_BOUND('',#354,.F.);+#354 = EDGE_LOOP('',(#355,#365,#374,#382,#391,#399,#405,#406,#407,#408)+);+#355 = ORIENTED_EDGE('',*,*,#356,.F.);+#356 = EDGE_CURVE('',#357,#359,#361,.T.);+#357 = VERTEX_POINT('',#358);+#358 = CARTESIAN_POINT('',(-0.77,-0.4,-3.469446951954E-18));+#359 = VERTEX_POINT('',#360);+#360 = CARTESIAN_POINT('',(-0.725,-0.4,0.));+#361 = LINE('',#362,#363);+#362 = CARTESIAN_POINT('',(-0.8,-0.4,0.));+#363 = VECTOR('',#364,1.);+#364 = DIRECTION('',(1.,0.,0.));+#365 = ORIENTED_EDGE('',*,*,#366,.F.);+#366 = EDGE_CURVE('',#367,#357,#369,.T.);+#367 = VERTEX_POINT('',#368);+#368 = CARTESIAN_POINT('',(-0.8,-0.4,3.E-02));+#369 = CIRCLE('',#370,3.E-02);+#370 = AXIS2_PLACEMENT_3D('',#371,#372,#373);+#371 = CARTESIAN_POINT('',(-0.77,-0.4,3.E-02));+#372 = DIRECTION('',(0.,-1.,0.));+#373 = DIRECTION('',(0.,0.,1.));+#374 = ORIENTED_EDGE('',*,*,#375,.T.);+#375 = EDGE_CURVE('',#367,#376,#378,.T.);+#376 = VERTEX_POINT('',#377);+#377 = CARTESIAN_POINT('',(-0.8,-0.4,0.47));+#378 = LINE('',#379,#380);+#379 = CARTESIAN_POINT('',(-0.8,-0.4,0.));+#380 = VECTOR('',#381,1.);+#381 = DIRECTION('',(0.,0.,1.));+#382 = ORIENTED_EDGE('',*,*,#383,.T.);+#383 = EDGE_CURVE('',#376,#384,#386,.T.);+#384 = VERTEX_POINT('',#385);+#385 = CARTESIAN_POINT('',(-0.77,-0.4,0.5));+#386 = CIRCLE('',#387,3.E-02);+#387 = AXIS2_PLACEMENT_3D('',#388,#389,#390);+#388 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#389 = DIRECTION('',(0.,1.,0.));+#390 = DIRECTION('',(0.,0.,1.));+#391 = ORIENTED_EDGE('',*,*,#392,.T.);+#392 = EDGE_CURVE('',#384,#393,#395,.T.);+#393 = VERTEX_POINT('',#394);+#394 = CARTESIAN_POINT('',(-0.725,-0.4,0.5));+#395 = LINE('',#396,#397);+#396 = CARTESIAN_POINT('',(-0.8,-0.4,0.5));+#397 = VECTOR('',#398,1.);+#398 = DIRECTION('',(1.,0.,0.));+#399 = ORIENTED_EDGE('',*,*,#400,.F.);+#400 = EDGE_CURVE('',#127,#393,#401,.T.);+#401 = LINE('',#402,#403);+#402 = CARTESIAN_POINT('',(-0.725,-0.4,0.375));+#403 = VECTOR('',#404,1.);+#404 = DIRECTION('',(0.,0.,1.));+#405 = ORIENTED_EDGE('',*,*,#126,.F.);+#406 = ORIENTED_EDGE('',*,*,#118,.F.);+#407 = ORIENTED_EDGE('',*,*,#108,.T.);+#408 = ORIENTED_EDGE('',*,*,#409,.F.);+#409 = EDGE_CURVE('',#359,#111,#410,.T.);+#410 = LINE('',#411,#412);+#411 = CARTESIAN_POINT('',(-0.725,-0.4,0.375));+#412 = VECTOR('',#413,1.);+#413 = DIRECTION('',(0.,0.,1.));+#414 = PLANE('',#415);+#415 = AXIS2_PLACEMENT_3D('',#416,#417,#418);+#416 = CARTESIAN_POINT('',(-0.8,-0.4,0.));+#417 = DIRECTION('',(0.,1.,0.));+#418 = DIRECTION('',(0.,0.,1.));+#419 = ADVANCED_FACE('',(#420,#509),#535,.F.);+#420 = FACE_BOUND('',#421,.F.);+#421 = EDGE_LOOP('',(#422,#430,#431,#439,#447,#455,#463,#471,#479,#487,+#495,#503));+#422 = ORIENTED_EDGE('',*,*,#423,.F.);+#423 = EDGE_CURVE('',#111,#424,#426,.T.);+#424 = VERTEX_POINT('',#425);+#425 = CARTESIAN_POINT('',(-0.725,-0.3,3.E-02));+#426 = LINE('',#427,#428);+#427 = CARTESIAN_POINT('',(-0.725,-0.35,3.E-02));+#428 = VECTOR('',#429,1.);+#429 = DIRECTION('',(0.,1.,0.));+#430 = ORIENTED_EDGE('',*,*,#173,.T.);+#431 = ORIENTED_EDGE('',*,*,#432,.F.);+#432 = EDGE_CURVE('',#433,#166,#435,.T.);+#433 = VERTEX_POINT('',#434);+#434 = CARTESIAN_POINT('',(0.725,-0.3,3.E-02));+#435 = LINE('',#436,#437);+#436 = CARTESIAN_POINT('',(0.725,-0.45,3.E-02));+#437 = VECTOR('',#438,1.);+#438 = DIRECTION('',(0.,-1.,0.));+#439 = ORIENTED_EDGE('',*,*,#440,.F.);+#440 = EDGE_CURVE('',#441,#433,#443,.T.);+#441 = VERTEX_POINT('',#442);+#442 = CARTESIAN_POINT('',(0.5,-0.3,3.E-02));+#443 = LINE('',#444,#445);+#444 = CARTESIAN_POINT('',(-2.25E-02,-0.3,3.E-02));+#445 = VECTOR('',#446,1.);+#446 = DIRECTION('',(1.,0.,0.));+#447 = ORIENTED_EDGE('',*,*,#448,.T.);+#448 = EDGE_CURVE('',#441,#449,#451,.T.);+#449 = VERTEX_POINT('',#450);+#450 = CARTESIAN_POINT('',(0.5,0.3,3.E-02));+#451 = LINE('',#452,#453);+#452 = CARTESIAN_POINT('',(0.5,-0.4,3.E-02));+#453 = VECTOR('',#454,1.);+#454 = DIRECTION('',(0.,1.,0.));+#455 = ORIENTED_EDGE('',*,*,#456,.F.);+#456 = EDGE_CURVE('',#457,#449,#459,.T.);+#457 = VERTEX_POINT('',#458);+#458 = CARTESIAN_POINT('',(0.725,0.3,3.E-02));+#459 = LINE('',#460,#461);+#460 = CARTESIAN_POINT('',(-0.7475,0.3,3.E-02));+#461 = VECTOR('',#462,1.);+#462 = DIRECTION('',(-1.,0.,0.));+#463 = ORIENTED_EDGE('',*,*,#464,.F.);+#464 = EDGE_CURVE('',#465,#457,#467,.T.);+#465 = VERTEX_POINT('',#466);+#466 = CARTESIAN_POINT('',(0.725,0.4,3.E-02));+#467 = LINE('',#468,#469);+#468 = CARTESIAN_POINT('',(0.725,-5.E-02,3.E-02));+#469 = VECTOR('',#470,1.);+#470 = DIRECTION('',(0.,-1.,0.));+#471 = ORIENTED_EDGE('',*,*,#472,.F.);+#472 = EDGE_CURVE('',#473,#465,#475,.T.);+#473 = VERTEX_POINT('',#474);+#474 = CARTESIAN_POINT('',(-0.725,0.4,3.E-02));+#475 = LINE('',#476,#477);+#476 = CARTESIAN_POINT('',(-0.77,0.4,3.E-02));+#477 = VECTOR('',#478,1.);+#478 = DIRECTION('',(1.,0.,0.));+#479 = ORIENTED_EDGE('',*,*,#480,.F.);+#480 = EDGE_CURVE('',#481,#473,#483,.T.);+#481 = VERTEX_POINT('',#482);+#482 = CARTESIAN_POINT('',(-0.725,0.3,3.E-02));+#483 = LINE('',#484,#485);+#484 = CARTESIAN_POINT('',(-0.725,5.E-02,3.E-02));+#485 = VECTOR('',#486,1.);+#486 = DIRECTION('',(0.,1.,0.));+#487 = ORIENTED_EDGE('',*,*,#488,.F.);+#488 = EDGE_CURVE('',#489,#481,#491,.T.);+#489 = VERTEX_POINT('',#490);+#490 = CARTESIAN_POINT('',(-0.5,0.3,3.E-02));+#491 = LINE('',#492,#493);+#492 = CARTESIAN_POINT('',(-0.7475,0.3,3.E-02));+#493 = VECTOR('',#494,1.);+#494 = DIRECTION('',(-1.,0.,0.));+#495 = ORIENTED_EDGE('',*,*,#496,.F.);+#496 = EDGE_CURVE('',#497,#489,#499,.T.);+#497 = VERTEX_POINT('',#498);+#498 = CARTESIAN_POINT('',(-0.5,-0.3,3.E-02));+#499 = LINE('',#500,#501);+#500 = CARTESIAN_POINT('',(-0.5,-0.4,3.E-02));+#501 = VECTOR('',#502,1.);+#502 = DIRECTION('',(0.,1.,0.));+#503 = ORIENTED_EDGE('',*,*,#504,.F.);+#504 = EDGE_CURVE('',#424,#497,#505,.T.);+#505 = LINE('',#506,#507);+#506 = CARTESIAN_POINT('',(-2.25E-02,-0.3,3.E-02));+#507 = VECTOR('',#508,1.);+#508 = DIRECTION('',(1.,0.,0.));+#509 = FACE_BOUND('',#510,.F.);+#510 = EDGE_LOOP('',(#511,#521,#529));+#511 = ORIENTED_EDGE('',*,*,#512,.T.);+#512 = EDGE_CURVE('',#513,#515,#517,.T.);+#513 = VERTEX_POINT('',#514);+#514 = CARTESIAN_POINT('',(0.277128129211,0.32,3.E-02));+#515 = VERTEX_POINT('',#516);+#516 = CARTESIAN_POINT('',(0.277128129211,-0.32,3.E-02));+#517 = LINE('',#518,#519);+#518 = CARTESIAN_POINT('',(0.277128129211,0.32,3.E-02));+#519 = VECTOR('',#520,1.);+#520 = DIRECTION('',(0.,-1.,0.));+#521 = ORIENTED_EDGE('',*,*,#522,.T.);+#522 = EDGE_CURVE('',#515,#523,#525,.T.);+#523 = VERTEX_POINT('',#524);+#524 = CARTESIAN_POINT('',(-0.277128129211,0.,3.E-02));+#525 = LINE('',#526,#527);+#526 = CARTESIAN_POINT('',(0.277128129211,-0.32,3.E-02));+#527 = VECTOR('',#528,1.);+#528 = DIRECTION('',(-0.866025403784,0.5,0.));+#529 = ORIENTED_EDGE('',*,*,#530,.T.);+#530 = EDGE_CURVE('',#523,#513,#531,.T.);+#531 = LINE('',#532,#533);+#532 = CARTESIAN_POINT('',(-0.277128129211,0.,3.E-02));+#533 = VECTOR('',#534,1.);+#534 = DIRECTION('',(0.866025403784,0.5,0.));+#535 = PLANE('',#536);+#536 = AXIS2_PLACEMENT_3D('',#537,#538,#539);+#537 = CARTESIAN_POINT('',(-0.77,-0.4,3.E-02));+#538 = DIRECTION('',(0.,0.,1.));+#539 = DIRECTION('',(1.,0.,0.));+#540 = ADVANCED_FACE('',(#541),#602,.F.);+#541 = FACE_BOUND('',#542,.F.);+#542 = EDGE_LOOP('',(#543,#553,#559,#560,#561,#562,#570,#578,#587,#595)+);+#543 = ORIENTED_EDGE('',*,*,#544,.F.);+#544 = EDGE_CURVE('',#545,#547,#549,.T.);+#545 = VERTEX_POINT('',#546);+#546 = CARTESIAN_POINT('',(0.725,-0.4,0.));+#547 = VERTEX_POINT('',#548);+#548 = CARTESIAN_POINT('',(0.77,-0.4,-3.469446951954E-18));+#549 = LINE('',#550,#551);+#550 = CARTESIAN_POINT('',(0.5,-0.4,0.));+#551 = VECTOR('',#552,1.);+#552 = DIRECTION('',(1.,0.,0.));+#553 = ORIENTED_EDGE('',*,*,#554,.F.);+#554 = EDGE_CURVE('',#166,#545,#555,.T.);+#555 = LINE('',#556,#557);+#556 = CARTESIAN_POINT('',(0.725,-0.4,0.375));+#557 = VECTOR('',#558,1.);+#558 = DIRECTION('',(0.,0.,-1.));+#559 = ORIENTED_EDGE('',*,*,#165,.T.);+#560 = ORIENTED_EDGE('',*,*,#157,.T.);+#561 = ORIENTED_EDGE('',*,*,#149,.F.);+#562 = ORIENTED_EDGE('',*,*,#563,.F.);+#563 = EDGE_CURVE('',#564,#142,#566,.T.);+#564 = VERTEX_POINT('',#565);+#565 = CARTESIAN_POINT('',(0.725,-0.4,0.5));+#566 = LINE('',#567,#568);+#567 = CARTESIAN_POINT('',(0.725,-0.4,0.375));+#568 = VECTOR('',#569,1.);+#569 = DIRECTION('',(0.,0.,-1.));+#570 = ORIENTED_EDGE('',*,*,#571,.T.);+#571 = EDGE_CURVE('',#564,#572,#574,.T.);+#572 = VERTEX_POINT('',#573);+#573 = CARTESIAN_POINT('',(0.77,-0.4,0.5));+#574 = LINE('',#575,#576);+#575 = CARTESIAN_POINT('',(0.5,-0.4,0.5));+#576 = VECTOR('',#577,1.);+#577 = DIRECTION('',(1.,0.,0.));+#578 = ORIENTED_EDGE('',*,*,#579,.F.);+#579 = EDGE_CURVE('',#580,#572,#582,.T.);+#580 = VERTEX_POINT('',#581);+#581 = CARTESIAN_POINT('',(0.8,-0.4,0.47));+#582 = CIRCLE('',#583,3.E-02);+#583 = AXIS2_PLACEMENT_3D('',#584,#585,#586);+#584 = CARTESIAN_POINT('',(0.77,-0.4,0.47));+#585 = DIRECTION('',(0.,-1.,0.));+#586 = DIRECTION('',(0.,0.,1.));+#587 = ORIENTED_EDGE('',*,*,#588,.F.);+#588 = EDGE_CURVE('',#589,#580,#591,.T.);+#589 = VERTEX_POINT('',#590);+#590 = CARTESIAN_POINT('',(0.8,-0.4,3.E-02));+#591 = LINE('',#592,#593);+#592 = CARTESIAN_POINT('',(0.8,-0.4,0.));+#593 = VECTOR('',#594,1.);+#594 = DIRECTION('',(0.,0.,1.));+#595 = ORIENTED_EDGE('',*,*,#596,.T.);+#596 = EDGE_CURVE('',#589,#547,#597,.T.);+#597 = CIRCLE('',#598,3.E-02);+#598 = AXIS2_PLACEMENT_3D('',#599,#600,#601);+#599 = CARTESIAN_POINT('',(0.77,-0.4,3.E-02));+#600 = DIRECTION('',(0.,1.,0.));+#601 = DIRECTION('',(0.,0.,1.));+#602 = PLANE('',#603);+#603 = AXIS2_PLACEMENT_3D('',#604,#605,#606);+#604 = CARTESIAN_POINT('',(0.5,-0.4,0.));+#605 = DIRECTION('',(0.,1.,0.));+#606 = DIRECTION('',(0.,0.,1.));+#607 = ADVANCED_FACE('',(#608),#626,.T.);+#608 = FACE_BOUND('',#609,.T.);+#609 = EDGE_LOOP('',(#610,#618,#619,#620));+#610 = ORIENTED_EDGE('',*,*,#611,.F.);+#611 = EDGE_CURVE('',#214,#612,#614,.T.);+#612 = VERTEX_POINT('',#613);+#613 = CARTESIAN_POINT('',(0.725,-0.3,0.47));+#614 = LINE('',#615,#616);+#615 = CARTESIAN_POINT('',(-2.25E-02,-0.3,0.47));+#616 = VECTOR('',#617,1.);+#617 = DIRECTION('',(1.,0.,0.));+#618 = ORIENTED_EDGE('',*,*,#213,.T.);+#619 = ORIENTED_EDGE('',*,*,#141,.T.);+#620 = ORIENTED_EDGE('',*,*,#621,.F.);+#621 = EDGE_CURVE('',#612,#142,#622,.T.);+#622 = LINE('',#623,#624);+#623 = CARTESIAN_POINT('',(0.725,-0.45,0.47));+#624 = VECTOR('',#625,1.);+#625 = DIRECTION('',(0.,-1.,0.));+#626 = PLANE('',#627);+#627 = AXIS2_PLACEMENT_3D('',#628,#629,#630);+#628 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#629 = DIRECTION('',(0.,0.,1.));+#630 = DIRECTION('',(1.,0.,0.));+#631 = ADVANCED_FACE('',(#632),#657,.T.);+#632 = FACE_BOUND('',#633,.T.);+#633 = EDGE_LOOP('',(#634,#642,#643,#651));+#634 = ORIENTED_EDGE('',*,*,#635,.F.);+#635 = EDGE_CURVE('',#230,#636,#638,.T.);+#636 = VERTEX_POINT('',#637);+#637 = CARTESIAN_POINT('',(0.725,0.4,0.47));+#638 = LINE('',#639,#640);+#639 = CARTESIAN_POINT('',(-0.77,0.4,0.47));+#640 = VECTOR('',#641,1.);+#641 = DIRECTION('',(1.,0.,0.));+#642 = ORIENTED_EDGE('',*,*,#229,.T.);+#643 = ORIENTED_EDGE('',*,*,#644,.F.);+#644 = EDGE_CURVE('',#645,#222,#647,.T.);+#645 = VERTEX_POINT('',#646);+#646 = CARTESIAN_POINT('',(0.725,0.3,0.47));+#647 = LINE('',#648,#649);+#648 = CARTESIAN_POINT('',(-0.7475,0.3,0.47));+#649 = VECTOR('',#650,1.);+#650 = DIRECTION('',(-1.,0.,0.));+#651 = ORIENTED_EDGE('',*,*,#652,.F.);+#652 = EDGE_CURVE('',#636,#645,#653,.T.);+#653 = LINE('',#654,#655);+#654 = CARTESIAN_POINT('',(0.725,-5.E-02,0.47));+#655 = VECTOR('',#656,1.);+#656 = DIRECTION('',(0.,-1.,0.));+#657 = PLANE('',#658);+#658 = AXIS2_PLACEMENT_3D('',#659,#660,#661);+#659 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#660 = DIRECTION('',(0.,0.,1.));+#661 = DIRECTION('',(1.,0.,0.));+#662 = ADVANCED_FACE('',(#663),#690,.T.);+#663 = FACE_BOUND('',#664,.T.);+#664 = EDGE_LOOP('',(#665,#666,#675,#683));+#665 = ORIENTED_EDGE('',*,*,#221,.F.);+#666 = ORIENTED_EDGE('',*,*,#667,.T.);+#667 = EDGE_CURVE('',#214,#668,#670,.T.);+#668 = VERTEX_POINT('',#669);+#669 = CARTESIAN_POINT('',(0.53,-0.3,0.5));+#670 = CIRCLE('',#671,3.E-02);+#671 = AXIS2_PLACEMENT_3D('',#672,#673,#674);+#672 = CARTESIAN_POINT('',(0.53,-0.3,0.47));+#673 = DIRECTION('',(0.,1.,-0.));+#674 = DIRECTION('',(-1.,0.,0.));+#675 = ORIENTED_EDGE('',*,*,#676,.T.);+#676 = EDGE_CURVE('',#668,#677,#679,.T.);+#677 = VERTEX_POINT('',#678);+#678 = CARTESIAN_POINT('',(0.53,0.3,0.5));+#679 = LINE('',#680,#681);+#680 = CARTESIAN_POINT('',(0.53,-0.4,0.5));+#681 = VECTOR('',#682,1.);+#682 = DIRECTION('',(0.,1.,0.));+#683 = ORIENTED_EDGE('',*,*,#684,.F.);+#684 = EDGE_CURVE('',#222,#677,#685,.T.);+#685 = CIRCLE('',#686,3.E-02);+#686 = AXIS2_PLACEMENT_3D('',#687,#688,#689);+#687 = CARTESIAN_POINT('',(0.53,0.3,0.47));+#688 = DIRECTION('',(0.,1.,-0.));+#689 = DIRECTION('',(-1.,0.,0.));+#690 = CYLINDRICAL_SURFACE('',#691,3.E-02);+#691 = AXIS2_PLACEMENT_3D('',#692,#693,#694);+#692 = CARTESIAN_POINT('',(0.53,-0.4,0.47));+#693 = DIRECTION('',(0.,1.,0.));+#694 = DIRECTION('',(-1.,0.,0.));+#695 = ADVANCED_FACE('',(#696),#746,.T.);+#696 = FACE_BOUND('',#697,.T.);+#697 = EDGE_LOOP('',(#698,#706,#714,#720,#721,#722,#723,#731,#739,#745)+);+#698 = ORIENTED_EDGE('',*,*,#699,.F.);+#699 = EDGE_CURVE('',#700,#473,#702,.T.);+#700 = VERTEX_POINT('',#701);+#701 = CARTESIAN_POINT('',(-0.77,0.4,3.E-02));+#702 = LINE('',#703,#704);+#703 = CARTESIAN_POINT('',(-0.77,0.4,3.E-02));+#704 = VECTOR('',#705,1.);+#705 = DIRECTION('',(1.,0.,0.));+#706 = ORIENTED_EDGE('',*,*,#707,.T.);+#707 = EDGE_CURVE('',#700,#708,#710,.T.);+#708 = VERTEX_POINT('',#709);+#709 = CARTESIAN_POINT('',(-0.77,0.4,0.47));+#710 = LINE('',#711,#712);+#711 = CARTESIAN_POINT('',(-0.77,0.4,3.E-02));+#712 = VECTOR('',#713,1.);+#713 = DIRECTION('',(0.,0.,1.));+#714 = ORIENTED_EDGE('',*,*,#715,.T.);+#715 = EDGE_CURVE('',#708,#252,#716,.T.);+#716 = LINE('',#717,#718);+#717 = CARTESIAN_POINT('',(-0.77,0.4,0.47));+#718 = VECTOR('',#719,1.);+#719 = DIRECTION('',(1.,0.,0.));+#720 = ORIENTED_EDGE('',*,*,#251,.T.);+#721 = ORIENTED_EDGE('',*,*,#285,.F.);+#722 = ORIENTED_EDGE('',*,*,#635,.T.);+#723 = ORIENTED_EDGE('',*,*,#724,.T.);+#724 = EDGE_CURVE('',#636,#725,#727,.T.);+#725 = VERTEX_POINT('',#726);+#726 = CARTESIAN_POINT('',(0.77,0.4,0.47));+#727 = LINE('',#728,#729);+#728 = CARTESIAN_POINT('',(-0.77,0.4,0.47));+#729 = VECTOR('',#730,1.);+#730 = DIRECTION('',(1.,0.,0.));+#731 = ORIENTED_EDGE('',*,*,#732,.F.);+#732 = EDGE_CURVE('',#733,#725,#735,.T.);+#733 = VERTEX_POINT('',#734);+#734 = CARTESIAN_POINT('',(0.77,0.4,3.E-02));+#735 = LINE('',#736,#737);+#736 = CARTESIAN_POINT('',(0.77,0.4,3.E-02));+#737 = VECTOR('',#738,1.);+#738 = DIRECTION('',(0.,0.,1.));+#739 = ORIENTED_EDGE('',*,*,#740,.F.);+#740 = EDGE_CURVE('',#465,#733,#741,.T.);+#741 = LINE('',#742,#743);+#742 = CARTESIAN_POINT('',(-0.77,0.4,3.E-02));+#743 = VECTOR('',#744,1.);+#744 = DIRECTION('',(1.,0.,0.));+#745 = ORIENTED_EDGE('',*,*,#472,.F.);+#746 = PLANE('',#747);+#747 = AXIS2_PLACEMENT_3D('',#748,#749,#750);+#748 = CARTESIAN_POINT('',(-0.77,0.4,3.E-02));+#749 = DIRECTION('',(0.,1.,0.));+#750 = DIRECTION('',(0.,0.,1.));+#751 = ADVANCED_FACE('',(#752),#770,.F.);+#752 = FACE_BOUND('',#753,.F.);+#753 = EDGE_LOOP('',(#754,#762,#768,#769));+#754 = ORIENTED_EDGE('',*,*,#755,.F.);+#755 = EDGE_CURVE('',#756,#310,#758,.T.);+#756 = VERTEX_POINT('',#757);+#757 = CARTESIAN_POINT('',(-0.725,0.3,0.5));+#758 = LINE('',#759,#760);+#759 = CARTESIAN_POINT('',(-0.7625,0.3,0.5));+#760 = VECTOR('',#761,1.);+#761 = DIRECTION('',(1.,0.,0.));+#762 = ORIENTED_EDGE('',*,*,#763,.T.);+#763 = EDGE_CURVE('',#756,#260,#764,.T.);+#764 = LINE('',#765,#766);+#765 = CARTESIAN_POINT('',(-0.725,0.3,0.75));+#766 = VECTOR('',#767,1.);+#767 = DIRECTION('',(-0.,-0.,-1.));+#768 = ORIENTED_EDGE('',*,*,#267,.F.);+#769 = ORIENTED_EDGE('',*,*,#317,.F.);+#770 = PLANE('',#771);+#771 = AXIS2_PLACEMENT_3D('',#772,#773,#774);+#772 = CARTESIAN_POINT('',(-0.725,0.3,0.75));+#773 = DIRECTION('',(0.,-1.,0.));+#774 = DIRECTION('',(1.,0.,0.));+#775 = ADVANCED_FACE('',(#776),#794,.F.);+#776 = FACE_BOUND('',#777,.F.);+#777 = EDGE_LOOP('',(#778,#779,#787,#793));+#778 = ORIENTED_EDGE('',*,*,#763,.F.);+#779 = ORIENTED_EDGE('',*,*,#780,.F.);+#780 = EDGE_CURVE('',#781,#756,#783,.T.);+#781 = VERTEX_POINT('',#782);+#782 = CARTESIAN_POINT('',(-0.725,0.4,0.5));+#783 = LINE('',#784,#785);+#784 = CARTESIAN_POINT('',(-0.725,5.E-02,0.5));+#785 = VECTOR('',#786,1.);+#786 = DIRECTION('',(0.,-1.,0.));+#787 = ORIENTED_EDGE('',*,*,#788,.F.);+#788 = EDGE_CURVE('',#252,#781,#789,.T.);+#789 = LINE('',#790,#791);+#790 = CARTESIAN_POINT('',(-0.725,0.4,0.375));+#791 = VECTOR('',#792,1.);+#792 = DIRECTION('',(0.,0.,1.));+#793 = ORIENTED_EDGE('',*,*,#259,.F.);+#794 = PLANE('',#795);+#795 = AXIS2_PLACEMENT_3D('',#796,#797,#798);+#796 = CARTESIAN_POINT('',(-0.725,0.5,0.75));+#797 = DIRECTION('',(-1.,0.,0.));+#798 = DIRECTION('',(0.,-1.,0.));+#799 = ADVANCED_FACE('',(#800),#818,.F.);+#800 = FACE_BOUND('',#801,.F.);+#801 = EDGE_LOOP('',(#802,#810,#816,#817));+#802 = ORIENTED_EDGE('',*,*,#803,.F.);+#803 = EDGE_CURVE('',#804,#333,#806,.T.);+#804 = VERTEX_POINT('',#805);+#805 = CARTESIAN_POINT('',(-0.725,-0.3,0.5));+#806 = LINE('',#807,#808);+#807 = CARTESIAN_POINT('',(-0.725,-0.3,0.75));+#808 = VECTOR('',#809,1.);+#809 = DIRECTION('',(-0.,-0.,-1.));+#810 = ORIENTED_EDGE('',*,*,#811,.F.);+#811 = EDGE_CURVE('',#301,#804,#812,.T.);+#812 = LINE('',#813,#814);+#813 = CARTESIAN_POINT('',(-3.75E-02,-0.3,0.5));+#814 = VECTOR('',#815,1.);+#815 = DIRECTION('',(-1.,0.,0.));+#816 = ORIENTED_EDGE('',*,*,#300,.T.);+#817 = ORIENTED_EDGE('',*,*,#342,.F.);+#818 = PLANE('',#819);+#819 = AXIS2_PLACEMENT_3D('',#820,#821,#822);+#820 = CARTESIAN_POINT('',(0.725,-0.3,0.75));+#821 = DIRECTION('',(0.,1.,0.));+#822 = DIRECTION('',(-1.,0.,0.));+#823 = ADVANCED_FACE('',(#824),#851,.T.);+#824 = FACE_BOUND('',#825,.T.);+#825 = EDGE_LOOP('',(#826,#834,#840,#841,#847,#848,#849,#850));+#826 = ORIENTED_EDGE('',*,*,#827,.F.);+#827 = EDGE_CURVE('',#828,#781,#830,.T.);+#828 = VERTEX_POINT('',#829);+#829 = CARTESIAN_POINT('',(-0.77,0.4,0.5));+#830 = LINE('',#831,#832);+#831 = CARTESIAN_POINT('',(-0.8,0.4,0.5));+#832 = VECTOR('',#833,1.);+#833 = DIRECTION('',(1.,0.,0.));+#834 = ORIENTED_EDGE('',*,*,#835,.F.);+#835 = EDGE_CURVE('',#384,#828,#836,.T.);+#836 = LINE('',#837,#838);+#837 = CARTESIAN_POINT('',(-0.77,-0.4,0.5));+#838 = VECTOR('',#839,1.);+#839 = DIRECTION('',(0.,1.,0.));+#840 = ORIENTED_EDGE('',*,*,#392,.T.);+#841 = ORIENTED_EDGE('',*,*,#842,.F.);+#842 = EDGE_CURVE('',#804,#393,#843,.T.);+#843 = LINE('',#844,#845);+#844 = CARTESIAN_POINT('',(-0.725,-0.35,0.5));+#845 = VECTOR('',#846,1.);+#846 = DIRECTION('',(0.,-1.,0.));+#847 = ORIENTED_EDGE('',*,*,#811,.F.);+#848 = ORIENTED_EDGE('',*,*,#309,.T.);+#849 = ORIENTED_EDGE('',*,*,#755,.F.);+#850 = ORIENTED_EDGE('',*,*,#780,.F.);+#851 = PLANE('',#852);+#852 = AXIS2_PLACEMENT_3D('',#853,#854,#855);+#853 = CARTESIAN_POINT('',(-0.8,-0.4,0.5));+#854 = DIRECTION('',(0.,0.,1.));+#855 = DIRECTION('',(1.,0.,0.));+#856 = ADVANCED_FACE('',(#857),#863,.F.);+#857 = FACE_BOUND('',#858,.F.);+#858 = EDGE_LOOP('',(#859,#860,#861,#862));+#859 = ORIENTED_EDGE('',*,*,#842,.F.);+#860 = ORIENTED_EDGE('',*,*,#803,.T.);+#861 = ORIENTED_EDGE('',*,*,#332,.F.);+#862 = ORIENTED_EDGE('',*,*,#400,.T.);+#863 = PLANE('',#864);+#864 = AXIS2_PLACEMENT_3D('',#865,#866,#867);+#865 = CARTESIAN_POINT('',(-0.725,-0.3,0.75));+#866 = DIRECTION('',(-1.,0.,0.));+#867 = DIRECTION('',(0.,-1.,0.));+#868 = ADVANCED_FACE('',(#869),#926,.F.);+#869 = FACE_BOUND('',#870,.F.);+#870 = EDGE_LOOP('',(#871,#881,#887,#888,#896,#904,#912,#920));+#871 = ORIENTED_EDGE('',*,*,#872,.F.);+#872 = EDGE_CURVE('',#873,#875,#877,.T.);+#873 = VERTEX_POINT('',#874);+#874 = CARTESIAN_POINT('',(-0.77,0.4,-3.469446951954E-18));+#875 = VERTEX_POINT('',#876);+#876 = CARTESIAN_POINT('',(-0.725,0.4,0.));+#877 = LINE('',#878,#879);+#878 = CARTESIAN_POINT('',(-0.8,0.4,0.));+#879 = VECTOR('',#880,1.);+#880 = DIRECTION('',(1.,0.,0.));+#881 = ORIENTED_EDGE('',*,*,#882,.F.);+#882 = EDGE_CURVE('',#357,#873,#883,.T.);+#883 = LINE('',#884,#885);+#884 = CARTESIAN_POINT('',(-0.77,-0.4,-3.469446951954E-18));+#885 = VECTOR('',#886,1.);+#886 = DIRECTION('',(0.,1.,0.));+#887 = ORIENTED_EDGE('',*,*,#356,.T.);+#888 = ORIENTED_EDGE('',*,*,#889,.F.);+#889 = EDGE_CURVE('',#890,#359,#892,.T.);+#890 = VERTEX_POINT('',#891);+#891 = CARTESIAN_POINT('',(-0.725,-0.3,0.));+#892 = LINE('',#893,#894);+#893 = CARTESIAN_POINT('',(-0.725,-0.35,0.));+#894 = VECTOR('',#895,1.);+#895 = DIRECTION('',(0.,-1.,0.));+#896 = ORIENTED_EDGE('',*,*,#897,.F.);+#897 = EDGE_CURVE('',#898,#890,#900,.T.);+#898 = VERTEX_POINT('',#899);+#899 = CARTESIAN_POINT('',(-0.53,-0.3,-3.469446951954E-18));+#900 = LINE('',#901,#902);+#901 = CARTESIAN_POINT('',(-3.75E-02,-0.3,0.));+#902 = VECTOR('',#903,1.);+#903 = DIRECTION('',(-1.,0.,0.));+#904 = ORIENTED_EDGE('',*,*,#905,.T.);+#905 = EDGE_CURVE('',#898,#906,#908,.T.);+#906 = VERTEX_POINT('',#907);+#907 = CARTESIAN_POINT('',(-0.53,0.3,-3.469446951954E-18));+#908 = LINE('',#909,#910);+#909 = CARTESIAN_POINT('',(-0.53,-0.4,-3.469446951954E-18));+#910 = VECTOR('',#911,1.);+#911 = DIRECTION('',(0.,1.,0.));+#912 = ORIENTED_EDGE('',*,*,#913,.F.);+#913 = EDGE_CURVE('',#914,#906,#916,.T.);+#914 = VERTEX_POINT('',#915);+#915 = CARTESIAN_POINT('',(-0.725,0.3,0.));+#916 = LINE('',#917,#918);+#917 = CARTESIAN_POINT('',(-0.7625,0.3,0.));+#918 = VECTOR('',#919,1.);+#919 = DIRECTION('',(1.,0.,0.));+#920 = ORIENTED_EDGE('',*,*,#921,.F.);+#921 = EDGE_CURVE('',#875,#914,#922,.T.);+#922 = LINE('',#923,#924);+#923 = CARTESIAN_POINT('',(-0.725,5.E-02,0.));+#924 = VECTOR('',#925,1.);+#925 = DIRECTION('',(0.,-1.,0.));+#926 = PLANE('',#927);+#927 = AXIS2_PLACEMENT_3D('',#928,#929,#930);+#928 = CARTESIAN_POINT('',(-0.8,-0.4,0.));+#929 = DIRECTION('',(0.,0.,1.));+#930 = DIRECTION('',(1.,0.,0.));+#931 = ADVANCED_FACE('',(#932),#951,.T.);+#932 = FACE_BOUND('',#933,.F.);+#933 = EDGE_LOOP('',(#934,#935,#936,#945));+#934 = ORIENTED_EDGE('',*,*,#366,.T.);+#935 = ORIENTED_EDGE('',*,*,#882,.T.);+#936 = ORIENTED_EDGE('',*,*,#937,.F.);+#937 = EDGE_CURVE('',#938,#873,#940,.T.);+#938 = VERTEX_POINT('',#939);+#939 = CARTESIAN_POINT('',(-0.8,0.4,3.E-02));+#940 = CIRCLE('',#941,3.E-02);+#941 = AXIS2_PLACEMENT_3D('',#942,#943,#944);+#942 = CARTESIAN_POINT('',(-0.77,0.4,3.E-02));+#943 = DIRECTION('',(0.,-1.,0.));+#944 = DIRECTION('',(0.,0.,1.));+#945 = ORIENTED_EDGE('',*,*,#946,.F.);+#946 = EDGE_CURVE('',#367,#938,#947,.T.);+#947 = LINE('',#948,#949);+#948 = CARTESIAN_POINT('',(-0.8,-0.4,3.E-02));+#949 = VECTOR('',#950,1.);+#950 = DIRECTION('',(0.,1.,0.));+#951 = CYLINDRICAL_SURFACE('',#952,3.E-02);+#952 = AXIS2_PLACEMENT_3D('',#953,#954,#955);+#953 = CARTESIAN_POINT('',(-0.77,-0.4,3.E-02));+#954 = DIRECTION('',(0.,1.,0.));+#955 = DIRECTION('',(-1.,0.,0.));+#956 = ADVANCED_FACE('',(#957),#968,.F.);+#957 = FACE_BOUND('',#958,.F.);+#958 = EDGE_LOOP('',(#959,#960,#966,#967));+#959 = ORIENTED_EDGE('',*,*,#423,.T.);+#960 = ORIENTED_EDGE('',*,*,#961,.T.);+#961 = EDGE_CURVE('',#424,#890,#962,.T.);+#962 = LINE('',#963,#964);+#963 = CARTESIAN_POINT('',(-0.725,-0.3,0.75));+#964 = VECTOR('',#965,1.);+#965 = DIRECTION('',(-0.,-0.,-1.));+#966 = ORIENTED_EDGE('',*,*,#889,.T.);+#967 = ORIENTED_EDGE('',*,*,#409,.T.);+#968 = PLANE('',#969);+#969 = AXIS2_PLACEMENT_3D('',#970,#971,#972);+#970 = CARTESIAN_POINT('',(-0.725,-0.3,0.75));+#971 = DIRECTION('',(-1.,0.,0.));+#972 = DIRECTION('',(0.,-1.,0.));+#973 = ADVANCED_FACE('',(#974),#992,.F.);+#974 = FACE_BOUND('',#975,.F.);+#975 = EDGE_LOOP('',(#976,#977,#978,#986));+#976 = ORIENTED_EDGE('',*,*,#375,.F.);+#977 = ORIENTED_EDGE('',*,*,#946,.T.);+#978 = ORIENTED_EDGE('',*,*,#979,.T.);+#979 = EDGE_CURVE('',#938,#980,#982,.T.);+#980 = VERTEX_POINT('',#981);+#981 = CARTESIAN_POINT('',(-0.8,0.4,0.47));+#982 = LINE('',#983,#984);+#983 = CARTESIAN_POINT('',(-0.8,0.4,0.));+#984 = VECTOR('',#985,1.);+#985 = DIRECTION('',(0.,0.,1.));+#986 = ORIENTED_EDGE('',*,*,#987,.F.);+#987 = EDGE_CURVE('',#376,#980,#988,.T.);+#988 = LINE('',#989,#990);+#989 = CARTESIAN_POINT('',(-0.8,-0.4,0.47));+#990 = VECTOR('',#991,1.);+#991 = DIRECTION('',(0.,1.,0.));+#992 = PLANE('',#993);+#993 = AXIS2_PLACEMENT_3D('',#994,#995,#996);+#994 = CARTESIAN_POINT('',(-0.8,-0.4,0.));+#995 = DIRECTION('',(1.,0.,0.));+#996 = DIRECTION('',(0.,0.,1.));+#997 = ADVANCED_FACE('',(#998),#1010,.T.);+#998 = FACE_BOUND('',#999,.T.);+#999 = EDGE_LOOP('',(#1000,#1001,#1002,#1009));+#1000 = ORIENTED_EDGE('',*,*,#383,.T.);+#1001 = ORIENTED_EDGE('',*,*,#835,.T.);+#1002 = ORIENTED_EDGE('',*,*,#1003,.F.);+#1003 = EDGE_CURVE('',#980,#828,#1004,.T.);+#1004 = CIRCLE('',#1005,3.E-02);+#1005 = AXIS2_PLACEMENT_3D('',#1006,#1007,#1008);+#1006 = CARTESIAN_POINT('',(-0.77,0.4,0.47));+#1007 = DIRECTION('',(0.,1.,0.));+#1008 = DIRECTION('',(0.,0.,1.));+#1009 = ORIENTED_EDGE('',*,*,#987,.F.);+#1010 = CYLINDRICAL_SURFACE('',#1011,3.E-02);+#1011 = AXIS2_PLACEMENT_3D('',#1012,#1013,#1014);+#1012 = CARTESIAN_POINT('',(-0.77,-0.4,0.47));+#1013 = DIRECTION('',(0.,1.,0.));+#1014 = DIRECTION('',(-1.,0.,0.));+#1015 = ADVANCED_FACE('',(#1016),#1028,.F.);+#1016 = FACE_BOUND('',#1017,.F.);+#1017 = EDGE_LOOP('',(#1018,#1019,#1020,#1027));+#1018 = ORIENTED_EDGE('',*,*,#961,.F.);+#1019 = ORIENTED_EDGE('',*,*,#504,.T.);+#1020 = ORIENTED_EDGE('',*,*,#1021,.T.);+#1021 = EDGE_CURVE('',#497,#898,#1022,.T.);+#1022 = CIRCLE('',#1023,3.E-02);+#1023 = AXIS2_PLACEMENT_3D('',#1024,#1025,#1026);+#1024 = CARTESIAN_POINT('',(-0.53,-0.3,3.E-02));+#1025 = DIRECTION('',(-0.,1.,0.));+#1026 = DIRECTION('',(1.,0.,0.));+#1027 = ORIENTED_EDGE('',*,*,#897,.T.);+#1028 = PLANE('',#1029);+#1029 = AXIS2_PLACEMENT_3D('',#1030,#1031,#1032);+#1030 = CARTESIAN_POINT('',(0.725,-0.3,0.75));+#1031 = DIRECTION('',(0.,1.,0.));+#1032 = DIRECTION('',(-1.,0.,0.));+#1033 = ADVANCED_FACE('',(#1034),#1046,.T.);+#1034 = FACE_BOUND('',#1035,.T.);+#1035 = EDGE_LOOP('',(#1036,#1037,#1038,#1039));+#1036 = ORIENTED_EDGE('',*,*,#496,.F.);+#1037 = ORIENTED_EDGE('',*,*,#1021,.T.);+#1038 = ORIENTED_EDGE('',*,*,#905,.T.);+#1039 = ORIENTED_EDGE('',*,*,#1040,.F.);+#1040 = EDGE_CURVE('',#489,#906,#1041,.T.);+#1041 = CIRCLE('',#1042,3.E-02);+#1042 = AXIS2_PLACEMENT_3D('',#1043,#1044,#1045);+#1043 = CARTESIAN_POINT('',(-0.53,0.3,3.E-02));+#1044 = DIRECTION('',(-0.,1.,0.));+#1045 = DIRECTION('',(1.,0.,0.));+#1046 = CYLINDRICAL_SURFACE('',#1047,3.E-02);+#1047 = AXIS2_PLACEMENT_3D('',#1048,#1049,#1050);+#1048 = CARTESIAN_POINT('',(-0.53,-0.4,3.E-02));+#1049 = DIRECTION('',(0.,1.,0.));+#1050 = DIRECTION('',(1.,0.,0.));+#1051 = ADVANCED_FACE('',(#1052),#1063,.F.);+#1052 = FACE_BOUND('',#1053,.F.);+#1053 = EDGE_LOOP('',(#1054,#1055,#1061,#1062));+#1054 = ORIENTED_EDGE('',*,*,#488,.T.);+#1055 = ORIENTED_EDGE('',*,*,#1056,.T.);+#1056 = EDGE_CURVE('',#481,#914,#1057,.T.);+#1057 = LINE('',#1058,#1059);+#1058 = CARTESIAN_POINT('',(-0.725,0.3,0.75));+#1059 = VECTOR('',#1060,1.);+#1060 = DIRECTION('',(-0.,-0.,-1.));+#1061 = ORIENTED_EDGE('',*,*,#913,.T.);+#1062 = ORIENTED_EDGE('',*,*,#1040,.F.);+#1063 = PLANE('',#1064);+#1064 = AXIS2_PLACEMENT_3D('',#1065,#1066,#1067);+#1065 = CARTESIAN_POINT('',(-0.725,0.3,0.75));+#1066 = DIRECTION('',(0.,-1.,0.));+#1067 = DIRECTION('',(1.,0.,0.));+#1068 = ADVANCED_FACE('',(#1069),#1080,.F.);+#1069 = FACE_BOUND('',#1070,.F.);+#1070 = EDGE_LOOP('',(#1071,#1072,#1073,#1079));+#1071 = ORIENTED_EDGE('',*,*,#1056,.F.);+#1072 = ORIENTED_EDGE('',*,*,#480,.T.);+#1073 = ORIENTED_EDGE('',*,*,#1074,.F.);+#1074 = EDGE_CURVE('',#875,#473,#1075,.T.);+#1075 = LINE('',#1076,#1077);+#1076 = CARTESIAN_POINT('',(-0.725,0.4,0.375));+#1077 = VECTOR('',#1078,1.);+#1078 = DIRECTION('',(0.,0.,1.));+#1079 = ORIENTED_EDGE('',*,*,#921,.T.);+#1080 = PLANE('',#1081);+#1081 = AXIS2_PLACEMENT_3D('',#1082,#1083,#1084);+#1082 = CARTESIAN_POINT('',(-0.725,0.5,0.75));+#1083 = DIRECTION('',(-1.,0.,0.));+#1084 = DIRECTION('',(0.,-1.,0.));+#1085 = ADVANCED_FACE('',(#1086),#1111,.F.);+#1086 = FACE_BOUND('',#1087,.F.);+#1087 = EDGE_LOOP('',(#1088,#1089,#1097,#1105));+#1088 = ORIENTED_EDGE('',*,*,#464,.T.);+#1089 = ORIENTED_EDGE('',*,*,#1090,.T.);+#1090 = EDGE_CURVE('',#457,#1091,#1093,.T.);+#1091 = VERTEX_POINT('',#1092);+#1092 = CARTESIAN_POINT('',(0.725,0.3,0.));+#1093 = LINE('',#1094,#1095);+#1094 = CARTESIAN_POINT('',(0.725,0.3,0.75));+#1095 = VECTOR('',#1096,1.);+#1096 = DIRECTION('',(-0.,-0.,-1.));+#1097 = ORIENTED_EDGE('',*,*,#1098,.T.);+#1098 = EDGE_CURVE('',#1091,#1099,#1101,.T.);+#1099 = VERTEX_POINT('',#1100);+#1100 = CARTESIAN_POINT('',(0.725,0.4,0.));+#1101 = LINE('',#1102,#1103);+#1102 = CARTESIAN_POINT('',(0.725,-5.E-02,0.));+#1103 = VECTOR('',#1104,1.);+#1104 = DIRECTION('',(0.,1.,0.));+#1105 = ORIENTED_EDGE('',*,*,#1106,.F.);+#1106 = EDGE_CURVE('',#465,#1099,#1107,.T.);+#1107 = LINE('',#1108,#1109);+#1108 = CARTESIAN_POINT('',(0.725,0.4,0.375));+#1109 = VECTOR('',#1110,1.);+#1110 = DIRECTION('',(0.,0.,-1.));+#1111 = PLANE('',#1112);+#1112 = AXIS2_PLACEMENT_3D('',#1113,#1114,#1115);+#1113 = CARTESIAN_POINT('',(0.725,0.3,0.75));+#1114 = DIRECTION('',(1.,0.,0.));+#1115 = DIRECTION('',(0.,1.,0.));+#1116 = ADVANCED_FACE('',(#1117),#1136,.F.);+#1117 = FACE_BOUND('',#1118,.F.);+#1118 = EDGE_LOOP('',(#1119,#1120,#1121,#1130));+#1119 = ORIENTED_EDGE('',*,*,#1090,.F.);+#1120 = ORIENTED_EDGE('',*,*,#456,.T.);+#1121 = ORIENTED_EDGE('',*,*,#1122,.F.);+#1122 = EDGE_CURVE('',#1123,#449,#1125,.T.);+#1123 = VERTEX_POINT('',#1124);+#1124 = CARTESIAN_POINT('',(0.53,0.3,-3.469446951954E-18));+#1125 = CIRCLE('',#1126,3.E-02);+#1126 = AXIS2_PLACEMENT_3D('',#1127,#1128,#1129);+#1127 = CARTESIAN_POINT('',(0.53,0.3,3.E-02));+#1128 = DIRECTION('',(0.,1.,-0.));+#1129 = DIRECTION('',(-1.,0.,0.));+#1130 = ORIENTED_EDGE('',*,*,#1131,.T.);+#1131 = EDGE_CURVE('',#1123,#1091,#1132,.T.);+#1132 = LINE('',#1133,#1134);+#1133 = CARTESIAN_POINT('',(-0.1125,0.3,0.));+#1134 = VECTOR('',#1135,1.);+#1135 = DIRECTION('',(1.,0.,0.));+#1136 = PLANE('',#1137);+#1137 = AXIS2_PLACEMENT_3D('',#1138,#1139,#1140);+#1138 = CARTESIAN_POINT('',(-0.725,0.3,0.75));+#1139 = DIRECTION('',(0.,-1.,0.));+#1140 = DIRECTION('',(1.,0.,0.));+#1141 = ADVANCED_FACE('',(#1142),#1161,.T.);+#1142 = FACE_BOUND('',#1143,.F.);+#1143 = EDGE_LOOP('',(#1144,#1145,#1154,#1160));+#1144 = ORIENTED_EDGE('',*,*,#448,.F.);+#1145 = ORIENTED_EDGE('',*,*,#1146,.F.);+#1146 = EDGE_CURVE('',#1147,#441,#1149,.T.);+#1147 = VERTEX_POINT('',#1148);+#1148 = CARTESIAN_POINT('',(0.53,-0.3,-3.469446951954E-18));+#1149 = CIRCLE('',#1150,3.E-02);+#1150 = AXIS2_PLACEMENT_3D('',#1151,#1152,#1153);+#1151 = CARTESIAN_POINT('',(0.53,-0.3,3.E-02));+#1152 = DIRECTION('',(0.,1.,-0.));+#1153 = DIRECTION('',(-1.,0.,0.));+#1154 = ORIENTED_EDGE('',*,*,#1155,.T.);+#1155 = EDGE_CURVE('',#1147,#1123,#1156,.T.);+#1156 = LINE('',#1157,#1158);+#1157 = CARTESIAN_POINT('',(0.53,-0.4,-3.469446951954E-18));+#1158 = VECTOR('',#1159,1.);+#1159 = DIRECTION('',(0.,1.,0.));+#1160 = ORIENTED_EDGE('',*,*,#1122,.T.);+#1161 = CYLINDRICAL_SURFACE('',#1162,3.E-02);+#1162 = AXIS2_PLACEMENT_3D('',#1163,#1164,#1165);+#1163 = CARTESIAN_POINT('',(0.53,-0.4,3.E-02));+#1164 = DIRECTION('',(0.,1.,0.));+#1165 = DIRECTION('',(-1.,0.,0.));+#1166 = ADVANCED_FACE('',(#1167),#1185,.F.);+#1167 = FACE_BOUND('',#1168,.F.);+#1168 = EDGE_LOOP('',(#1169,#1170,#1178,#1184));+#1169 = ORIENTED_EDGE('',*,*,#440,.T.);+#1170 = ORIENTED_EDGE('',*,*,#1171,.T.);+#1171 = EDGE_CURVE('',#433,#1172,#1174,.T.);+#1172 = VERTEX_POINT('',#1173);+#1173 = CARTESIAN_POINT('',(0.725,-0.3,0.));+#1174 = LINE('',#1175,#1176);+#1175 = CARTESIAN_POINT('',(0.725,-0.3,0.75));+#1176 = VECTOR('',#1177,1.);+#1177 = DIRECTION('',(-0.,-0.,-1.));+#1178 = ORIENTED_EDGE('',*,*,#1179,.T.);+#1179 = EDGE_CURVE('',#1172,#1147,#1180,.T.);+#1180 = LINE('',#1181,#1182);+#1181 = CARTESIAN_POINT('',(0.6125,-0.3,0.));+#1182 = VECTOR('',#1183,1.);+#1183 = DIRECTION('',(-1.,0.,0.));+#1184 = ORIENTED_EDGE('',*,*,#1146,.T.);+#1185 = PLANE('',#1186);+#1186 = AXIS2_PLACEMENT_3D('',#1187,#1188,#1189);+#1187 = CARTESIAN_POINT('',(0.725,-0.3,0.75));+#1188 = DIRECTION('',(0.,1.,0.));+#1189 = DIRECTION('',(-1.,0.,0.));+#1190 = ADVANCED_FACE('',(#1191),#1202,.F.);+#1191 = FACE_BOUND('',#1192,.F.);+#1192 = EDGE_LOOP('',(#1193,#1194,#1195,#1196));+#1193 = ORIENTED_EDGE('',*,*,#1171,.F.);+#1194 = ORIENTED_EDGE('',*,*,#432,.T.);+#1195 = ORIENTED_EDGE('',*,*,#554,.T.);+#1196 = ORIENTED_EDGE('',*,*,#1197,.T.);+#1197 = EDGE_CURVE('',#545,#1172,#1198,.T.);+#1198 = LINE('',#1199,#1200);+#1199 = CARTESIAN_POINT('',(0.725,-0.45,0.));+#1200 = VECTOR('',#1201,1.);+#1201 = DIRECTION('',(0.,1.,0.));+#1202 = PLANE('',#1203);+#1203 = AXIS2_PLACEMENT_3D('',#1204,#1205,#1206);+#1204 = CARTESIAN_POINT('',(0.725,-0.5,0.75));+#1205 = DIRECTION('',(1.,0.,0.));+#1206 = DIRECTION('',(0.,1.,0.));+#1207 = ADVANCED_FACE('',(#1208),#1233,.T.);+#1208 = FACE_BOUND('',#1209,.T.);+#1209 = EDGE_LOOP('',(#1210,#1218,#1219,#1227));+#1210 = ORIENTED_EDGE('',*,*,#1211,.T.);+#1211 = EDGE_CURVE('',#1212,#513,#1214,.T.);+#1212 = VERTEX_POINT('',#1213);+#1213 = CARTESIAN_POINT('',(0.277128129211,0.32,1.5E-02));+#1214 = LINE('',#1215,#1216);+#1215 = CARTESIAN_POINT('',(0.277128129211,0.32,1.5E-02));+#1216 = VECTOR('',#1217,1.);+#1217 = DIRECTION('',(0.,0.,1.));+#1218 = ORIENTED_EDGE('',*,*,#512,.T.);+#1219 = ORIENTED_EDGE('',*,*,#1220,.F.);+#1220 = EDGE_CURVE('',#1221,#515,#1223,.T.);+#1221 = VERTEX_POINT('',#1222);+#1222 = CARTESIAN_POINT('',(0.277128129211,-0.32,1.5E-02));+#1223 = LINE('',#1224,#1225);+#1224 = CARTESIAN_POINT('',(0.277128129211,-0.32,1.5E-02));+#1225 = VECTOR('',#1226,1.);+#1226 = DIRECTION('',(0.,0.,1.));+#1227 = ORIENTED_EDGE('',*,*,#1228,.F.);+#1228 = EDGE_CURVE('',#1212,#1221,#1229,.T.);+#1229 = LINE('',#1230,#1231);+#1230 = CARTESIAN_POINT('',(0.277128129211,0.32,1.5E-02));+#1231 = VECTOR('',#1232,1.);+#1232 = DIRECTION('',(0.,-1.,0.));+#1233 = PLANE('',#1234);+#1234 = AXIS2_PLACEMENT_3D('',#1235,#1236,#1237);+#1235 = CARTESIAN_POINT('',(0.277128129211,0.32,1.5E-02));+#1236 = DIRECTION('',(1.,0.,0.));+#1237 = DIRECTION('',(0.,-1.,0.));+#1238 = ADVANCED_FACE('',(#1239),#1257,.T.);+#1239 = FACE_BOUND('',#1240,.T.);+#1240 = EDGE_LOOP('',(#1241,#1249,#1250,#1251));+#1241 = ORIENTED_EDGE('',*,*,#1242,.T.);+#1242 = EDGE_CURVE('',#1243,#523,#1245,.T.);+#1243 = VERTEX_POINT('',#1244);+#1244 = CARTESIAN_POINT('',(-0.277128129211,0.,1.5E-02));+#1245 = LINE('',#1246,#1247);+#1246 = CARTESIAN_POINT('',(-0.277128129211,0.,1.5E-02));+#1247 = VECTOR('',#1248,1.);+#1248 = DIRECTION('',(0.,0.,1.));+#1249 = ORIENTED_EDGE('',*,*,#530,.T.);+#1250 = ORIENTED_EDGE('',*,*,#1211,.F.);+#1251 = ORIENTED_EDGE('',*,*,#1252,.F.);+#1252 = EDGE_CURVE('',#1243,#1212,#1253,.T.);+#1253 = LINE('',#1254,#1255);+#1254 = CARTESIAN_POINT('',(-0.277128129211,0.,1.5E-02));+#1255 = VECTOR('',#1256,1.);+#1256 = DIRECTION('',(0.866025403784,0.5,0.));+#1257 = PLANE('',#1258);+#1258 = AXIS2_PLACEMENT_3D('',#1259,#1260,#1261);+#1259 = CARTESIAN_POINT('',(-0.277128129211,0.,1.5E-02));+#1260 = DIRECTION('',(-0.5,0.866025403784,0.));+#1261 = DIRECTION('',(0.866025403784,0.5,0.));+#1262 = ADVANCED_FACE('',(#1263),#1274,.T.);+#1263 = FACE_BOUND('',#1264,.T.);+#1264 = EDGE_LOOP('',(#1265,#1266,#1267,#1268));+#1265 = ORIENTED_EDGE('',*,*,#1220,.T.);+#1266 = ORIENTED_EDGE('',*,*,#522,.T.);+#1267 = ORIENTED_EDGE('',*,*,#1242,.F.);+#1268 = ORIENTED_EDGE('',*,*,#1269,.F.);+#1269 = EDGE_CURVE('',#1221,#1243,#1270,.T.);+#1270 = LINE('',#1271,#1272);+#1271 = CARTESIAN_POINT('',(0.277128129211,-0.32,1.5E-02));+#1272 = VECTOR('',#1273,1.);+#1273 = DIRECTION('',(-0.866025403784,0.5,0.));+#1274 = PLANE('',#1275);+#1275 = AXIS2_PLACEMENT_3D('',#1276,#1277,#1278);+#1276 = CARTESIAN_POINT('',(0.277128129211,-0.32,1.5E-02));+#1277 = DIRECTION('',(-0.5,-0.866025403784,0.));+#1278 = DIRECTION('',(-0.866025403784,0.5,0.));+#1279 = ADVANCED_FACE('',(#1280),#1302,.F.);+#1280 = FACE_BOUND('',#1281,.F.);+#1281 = EDGE_LOOP('',(#1282,#1290,#1291,#1292,#1293,#1294,#1295,#1296));+#1282 = ORIENTED_EDGE('',*,*,#1283,.F.);+#1283 = EDGE_CURVE('',#1099,#1284,#1286,.T.);+#1284 = VERTEX_POINT('',#1285);+#1285 = CARTESIAN_POINT('',(0.77,0.4,-3.469446951954E-18));+#1286 = LINE('',#1287,#1288);+#1287 = CARTESIAN_POINT('',(0.5,0.4,0.));+#1288 = VECTOR('',#1289,1.);+#1289 = DIRECTION('',(1.,0.,0.));+#1290 = ORIENTED_EDGE('',*,*,#1098,.F.);+#1291 = ORIENTED_EDGE('',*,*,#1131,.F.);+#1292 = ORIENTED_EDGE('',*,*,#1155,.F.);+#1293 = ORIENTED_EDGE('',*,*,#1179,.F.);+#1294 = ORIENTED_EDGE('',*,*,#1197,.F.);+#1295 = ORIENTED_EDGE('',*,*,#544,.T.);+#1296 = ORIENTED_EDGE('',*,*,#1297,.T.);+#1297 = EDGE_CURVE('',#547,#1284,#1298,.T.);+#1298 = LINE('',#1299,#1300);+#1299 = CARTESIAN_POINT('',(0.77,-0.4,-3.469446951954E-18));+#1300 = VECTOR('',#1301,1.);+#1301 = DIRECTION('',(0.,1.,0.));+#1302 = PLANE('',#1303);+#1303 = AXIS2_PLACEMENT_3D('',#1304,#1305,#1306);+#1304 = CARTESIAN_POINT('',(0.5,-0.4,0.));+#1305 = DIRECTION('',(0.,0.,1.));+#1306 = DIRECTION('',(1.,0.,0.));+#1307 = ADVANCED_FACE('',(#1308),#1327,.T.);+#1308 = FACE_BOUND('',#1309,.T.);+#1309 = EDGE_LOOP('',(#1310,#1311,#1312,#1321));+#1310 = ORIENTED_EDGE('',*,*,#596,.T.);+#1311 = ORIENTED_EDGE('',*,*,#1297,.T.);+#1312 = ORIENTED_EDGE('',*,*,#1313,.F.);+#1313 = EDGE_CURVE('',#1314,#1284,#1316,.T.);+#1314 = VERTEX_POINT('',#1315);+#1315 = CARTESIAN_POINT('',(0.8,0.4,3.E-02));+#1316 = CIRCLE('',#1317,3.E-02);+#1317 = AXIS2_PLACEMENT_3D('',#1318,#1319,#1320);+#1318 = CARTESIAN_POINT('',(0.77,0.4,3.E-02));+#1319 = DIRECTION('',(0.,1.,0.));+#1320 = DIRECTION('',(0.,0.,1.));+#1321 = ORIENTED_EDGE('',*,*,#1322,.F.);+#1322 = EDGE_CURVE('',#589,#1314,#1323,.T.);+#1323 = LINE('',#1324,#1325);+#1324 = CARTESIAN_POINT('',(0.8,-0.4,3.E-02));+#1325 = VECTOR('',#1326,1.);+#1326 = DIRECTION('',(0.,1.,0.));+#1327 = CYLINDRICAL_SURFACE('',#1328,3.E-02);+#1328 = AXIS2_PLACEMENT_3D('',#1329,#1330,#1331);+#1329 = CARTESIAN_POINT('',(0.77,-0.4,3.E-02));+#1330 = DIRECTION('',(0.,1.,0.));+#1331 = DIRECTION('',(1.,0.,0.));+#1332 = ADVANCED_FACE('',(#1333),#1351,.T.);+#1333 = FACE_BOUND('',#1334,.T.);+#1334 = EDGE_LOOP('',(#1335,#1336,#1337,#1345));+#1335 = ORIENTED_EDGE('',*,*,#588,.F.);+#1336 = ORIENTED_EDGE('',*,*,#1322,.T.);+#1337 = ORIENTED_EDGE('',*,*,#1338,.T.);+#1338 = EDGE_CURVE('',#1314,#1339,#1341,.T.);+#1339 = VERTEX_POINT('',#1340);+#1340 = CARTESIAN_POINT('',(0.8,0.4,0.47));+#1341 = LINE('',#1342,#1343);+#1342 = CARTESIAN_POINT('',(0.8,0.4,0.));+#1343 = VECTOR('',#1344,1.);+#1344 = DIRECTION('',(0.,0.,1.));+#1345 = ORIENTED_EDGE('',*,*,#1346,.F.);+#1346 = EDGE_CURVE('',#580,#1339,#1347,.T.);+#1347 = LINE('',#1348,#1349);+#1348 = CARTESIAN_POINT('',(0.8,-0.4,0.47));+#1349 = VECTOR('',#1350,1.);+#1350 = DIRECTION('',(0.,1.,0.));+#1351 = PLANE('',#1352);+#1352 = AXIS2_PLACEMENT_3D('',#1353,#1354,#1355);+#1353 = CARTESIAN_POINT('',(0.8,-0.4,0.));+#1354 = DIRECTION('',(1.,0.,0.));+#1355 = DIRECTION('',(0.,0.,1.));+#1356 = ADVANCED_FACE('',(#1357),#1376,.T.);+#1357 = FACE_BOUND('',#1358,.F.);+#1358 = EDGE_LOOP('',(#1359,#1360,#1368,#1375));+#1359 = ORIENTED_EDGE('',*,*,#579,.T.);+#1360 = ORIENTED_EDGE('',*,*,#1361,.T.);+#1361 = EDGE_CURVE('',#572,#1362,#1364,.T.);+#1362 = VERTEX_POINT('',#1363);+#1363 = CARTESIAN_POINT('',(0.77,0.4,0.5));+#1364 = LINE('',#1365,#1366);+#1365 = CARTESIAN_POINT('',(0.77,-0.4,0.5));+#1366 = VECTOR('',#1367,1.);+#1367 = DIRECTION('',(0.,1.,0.));+#1368 = ORIENTED_EDGE('',*,*,#1369,.F.);+#1369 = EDGE_CURVE('',#1339,#1362,#1370,.T.);+#1370 = CIRCLE('',#1371,3.E-02);+#1371 = AXIS2_PLACEMENT_3D('',#1372,#1373,#1374);+#1372 = CARTESIAN_POINT('',(0.77,0.4,0.47));+#1373 = DIRECTION('',(0.,-1.,0.));+#1374 = DIRECTION('',(0.,0.,1.));+#1375 = ORIENTED_EDGE('',*,*,#1346,.F.);+#1376 = CYLINDRICAL_SURFACE('',#1377,3.E-02);+#1377 = AXIS2_PLACEMENT_3D('',#1378,#1379,#1380);+#1378 = CARTESIAN_POINT('',(0.77,-0.4,0.47));+#1379 = DIRECTION('',(0.,1.,0.));+#1380 = DIRECTION('',(1.,0.,0.));+#1381 = ADVANCED_FACE('',(#1382),#1423,.T.);+#1382 = FACE_BOUND('',#1383,.T.);+#1383 = EDGE_LOOP('',(#1384,#1392,#1400,#1406,#1407,#1415,#1421,#1422));+#1384 = ORIENTED_EDGE('',*,*,#1385,.F.);+#1385 = EDGE_CURVE('',#1386,#1362,#1388,.T.);+#1386 = VERTEX_POINT('',#1387);+#1387 = CARTESIAN_POINT('',(0.725,0.4,0.5));+#1388 = LINE('',#1389,#1390);+#1389 = CARTESIAN_POINT('',(0.5,0.4,0.5));+#1390 = VECTOR('',#1391,1.);+#1391 = DIRECTION('',(1.,0.,0.));+#1392 = ORIENTED_EDGE('',*,*,#1393,.F.);+#1393 = EDGE_CURVE('',#1394,#1386,#1396,.T.);+#1394 = VERTEX_POINT('',#1395);+#1395 = CARTESIAN_POINT('',(0.725,0.3,0.5));+#1396 = LINE('',#1397,#1398);+#1397 = CARTESIAN_POINT('',(0.725,-5.E-02,0.5));+#1398 = VECTOR('',#1399,1.);+#1399 = DIRECTION('',(0.,1.,0.));+#1400 = ORIENTED_EDGE('',*,*,#1401,.F.);+#1401 = EDGE_CURVE('',#677,#1394,#1402,.T.);+#1402 = LINE('',#1403,#1404);+#1403 = CARTESIAN_POINT('',(-0.1125,0.3,0.5));+#1404 = VECTOR('',#1405,1.);+#1405 = DIRECTION('',(1.,0.,0.));+#1406 = ORIENTED_EDGE('',*,*,#676,.F.);+#1407 = ORIENTED_EDGE('',*,*,#1408,.F.);+#1408 = EDGE_CURVE('',#1409,#668,#1411,.T.);+#1409 = VERTEX_POINT('',#1410);+#1410 = CARTESIAN_POINT('',(0.725,-0.3,0.5));+#1411 = LINE('',#1412,#1413);+#1412 = CARTESIAN_POINT('',(0.6125,-0.3,0.5));+#1413 = VECTOR('',#1414,1.);+#1414 = DIRECTION('',(-1.,0.,0.));+#1415 = ORIENTED_EDGE('',*,*,#1416,.F.);+#1416 = EDGE_CURVE('',#564,#1409,#1417,.T.);+#1417 = LINE('',#1418,#1419);+#1418 = CARTESIAN_POINT('',(0.725,-0.45,0.5));+#1419 = VECTOR('',#1420,1.);+#1420 = DIRECTION('',(0.,1.,0.));+#1421 = ORIENTED_EDGE('',*,*,#571,.T.);+#1422 = ORIENTED_EDGE('',*,*,#1361,.T.);+#1423 = PLANE('',#1424);+#1424 = AXIS2_PLACEMENT_3D('',#1425,#1426,#1427);+#1425 = CARTESIAN_POINT('',(0.5,-0.4,0.5));+#1426 = DIRECTION('',(0.,0.,1.));+#1427 = DIRECTION('',(1.,0.,0.));+#1428 = ADVANCED_FACE('',(#1429),#1440,.F.);+#1429 = FACE_BOUND('',#1430,.F.);+#1430 = EDGE_LOOP('',(#1431,#1437,#1438,#1439));+#1431 = ORIENTED_EDGE('',*,*,#1432,.F.);+#1432 = EDGE_CURVE('',#1409,#612,#1433,.T.);+#1433 = LINE('',#1434,#1435);+#1434 = CARTESIAN_POINT('',(0.725,-0.3,0.75));+#1435 = VECTOR('',#1436,1.);+#1436 = DIRECTION('',(-0.,-0.,-1.));+#1437 = ORIENTED_EDGE('',*,*,#1416,.F.);+#1438 = ORIENTED_EDGE('',*,*,#563,.T.);+#1439 = ORIENTED_EDGE('',*,*,#621,.F.);+#1440 = PLANE('',#1441);+#1441 = AXIS2_PLACEMENT_3D('',#1442,#1443,#1444);+#1442 = CARTESIAN_POINT('',(0.725,-0.5,0.75));+#1443 = DIRECTION('',(1.,0.,0.));+#1444 = DIRECTION('',(0.,1.,0.));+#1445 = ADVANCED_FACE('',(#1446),#1452,.F.);+#1446 = FACE_BOUND('',#1447,.F.);+#1447 = EDGE_LOOP('',(#1448,#1449,#1450,#1451));+#1448 = ORIENTED_EDGE('',*,*,#1408,.F.);+#1449 = ORIENTED_EDGE('',*,*,#1432,.T.);+#1450 = ORIENTED_EDGE('',*,*,#611,.F.);+#1451 = ORIENTED_EDGE('',*,*,#667,.T.);+#1452 = PLANE('',#1453);+#1453 = AXIS2_PLACEMENT_3D('',#1454,#1455,#1456);+#1454 = CARTESIAN_POINT('',(0.725,-0.3,0.75));+#1455 = DIRECTION('',(0.,1.,0.));+#1456 = DIRECTION('',(-1.,0.,0.));+#1457 = ADVANCED_FACE('',(#1458),#1474,.F.);+#1458 = FACE_BOUND('',#1459,.F.);+#1459 = EDGE_LOOP('',(#1460,#1461,#1467,#1468));+#1460 = ORIENTED_EDGE('',*,*,#1393,.F.);+#1461 = ORIENTED_EDGE('',*,*,#1462,.T.);+#1462 = EDGE_CURVE('',#1394,#645,#1463,.T.);+#1463 = LINE('',#1464,#1465);+#1464 = CARTESIAN_POINT('',(0.725,0.3,0.75));+#1465 = VECTOR('',#1466,1.);+#1466 = DIRECTION('',(-0.,-0.,-1.));+#1467 = ORIENTED_EDGE('',*,*,#652,.F.);+#1468 = ORIENTED_EDGE('',*,*,#1469,.F.);+#1469 = EDGE_CURVE('',#1386,#636,#1470,.T.);+#1470 = LINE('',#1471,#1472);+#1471 = CARTESIAN_POINT('',(0.725,0.4,0.375));+#1472 = VECTOR('',#1473,1.);+#1473 = DIRECTION('',(0.,0.,-1.));+#1474 = PLANE('',#1475);+#1475 = AXIS2_PLACEMENT_3D('',#1476,#1477,#1478);+#1476 = CARTESIAN_POINT('',(0.725,0.3,0.75));+#1477 = DIRECTION('',(1.,0.,0.));+#1478 = DIRECTION('',(0.,1.,0.));+#1479 = ADVANCED_FACE('',(#1480),#1486,.F.);+#1480 = FACE_BOUND('',#1481,.F.);+#1481 = EDGE_LOOP('',(#1482,#1483,#1484,#1485));+#1482 = ORIENTED_EDGE('',*,*,#1462,.F.);+#1483 = ORIENTED_EDGE('',*,*,#1401,.F.);+#1484 = ORIENTED_EDGE('',*,*,#684,.F.);+#1485 = ORIENTED_EDGE('',*,*,#644,.F.);+#1486 = PLANE('',#1487);+#1487 = AXIS2_PLACEMENT_3D('',#1488,#1489,#1490);+#1488 = CARTESIAN_POINT('',(-0.725,0.3,0.75));+#1489 = DIRECTION('',(0.,-1.,0.));+#1490 = DIRECTION('',(1.,0.,0.));+#1491 = ADVANCED_FACE('',(#1492),#1504,.T.);+#1492 = FACE_BOUND('',#1493,.T.);+#1493 = EDGE_LOOP('',(#1494,#1495,#1496,#1497,#1498,#1499,#1500,#1501,+#1502,#1503));+#1494 = ORIENTED_EDGE('',*,*,#872,.F.);+#1495 = ORIENTED_EDGE('',*,*,#937,.F.);+#1496 = ORIENTED_EDGE('',*,*,#979,.T.);+#1497 = ORIENTED_EDGE('',*,*,#1003,.T.);+#1498 = ORIENTED_EDGE('',*,*,#827,.T.);+#1499 = ORIENTED_EDGE('',*,*,#788,.F.);+#1500 = ORIENTED_EDGE('',*,*,#715,.F.);+#1501 = ORIENTED_EDGE('',*,*,#707,.F.);+#1502 = ORIENTED_EDGE('',*,*,#699,.T.);+#1503 = ORIENTED_EDGE('',*,*,#1074,.F.);+#1504 = PLANE('',#1505);+#1505 = AXIS2_PLACEMENT_3D('',#1506,#1507,#1508);+#1506 = CARTESIAN_POINT('',(-0.8,0.4,0.));+#1507 = DIRECTION('',(0.,1.,0.));+#1508 = DIRECTION('',(0.,0.,1.));+#1509 = ADVANCED_FACE('',(#1510),#1522,.T.);+#1510 = FACE_BOUND('',#1511,.T.);+#1511 = EDGE_LOOP('',(#1512,#1513,#1514,#1515,#1516,#1517,#1518,#1519,+#1520,#1521));+#1512 = ORIENTED_EDGE('',*,*,#1283,.F.);+#1513 = ORIENTED_EDGE('',*,*,#1106,.F.);+#1514 = ORIENTED_EDGE('',*,*,#740,.T.);+#1515 = ORIENTED_EDGE('',*,*,#732,.T.);+#1516 = ORIENTED_EDGE('',*,*,#724,.F.);+#1517 = ORIENTED_EDGE('',*,*,#1469,.F.);+#1518 = ORIENTED_EDGE('',*,*,#1385,.T.);+#1519 = ORIENTED_EDGE('',*,*,#1369,.F.);+#1520 = ORIENTED_EDGE('',*,*,#1338,.F.);+#1521 = ORIENTED_EDGE('',*,*,#1313,.T.);+#1522 = PLANE('',#1523);+#1523 = AXIS2_PLACEMENT_3D('',#1524,#1525,#1526);+#1524 = CARTESIAN_POINT('',(0.5,0.4,0.));+#1525 = DIRECTION('',(0.,1.,0.));+#1526 = DIRECTION('',(0.,0.,1.));+#1527 = ADVANCED_FACE('',(#1528),#1533,.T.);+#1528 = FACE_BOUND('',#1529,.T.);+#1529 = EDGE_LOOP('',(#1530,#1531,#1532));+#1530 = ORIENTED_EDGE('',*,*,#1252,.T.);+#1531 = ORIENTED_EDGE('',*,*,#1228,.T.);+#1532 = ORIENTED_EDGE('',*,*,#1269,.T.);+#1533 = PLANE('',#1534);+#1534 = AXIS2_PLACEMENT_3D('',#1535,#1536,#1537);+#1535 = CARTESIAN_POINT('',(9.237604307034E-02,0.,1.5E-02));+#1536 = DIRECTION('',(-0.,-0.,-1.));+#1537 = DIRECTION('',(-1.,0.,0.));+#1538 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1542))+GLOBAL_UNIT_ASSIGNED_CONTEXT((#1539,#1540,#1541)) REPRESENTATION_CONTEXT+('Context #1','3D Context with UNIT and UNCERTAINTY') );+#1539 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );+#1540 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );+#1541 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );+#1542 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(2.E-07),#1539,+'distance_accuracy_value','confusion accuracy');+#1543 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));+#1544 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(+#1545,#1553,#1560,#1567,#1574,#1581,#1588,#1595,#1603,#1610,#1617,+#1624,#1631,#1638,#1645,#1652,#1659,#1666,#1673,#1680,#1687,#1694,+#1701,#1708,#1715,#1722,#1729,#1736,#1743,#1750,#1757,#1764,#1771,+#1778,#1785,#1792,#1800,#1807,#1814,#1821,#1828,#1835,#1842,#1849,+#1856,#1863,#1870,#1877,#1884,#1891),#1538);+#1545 = STYLED_ITEM('color',(#1546),#17);+#1546 = PRESENTATION_STYLE_ASSIGNMENT((#1547));+#1547 = SURFACE_STYLE_USAGE(.BOTH.,#1548);+#1548 = SURFACE_SIDE_STYLE('',(#1549));+#1549 = SURFACE_STYLE_FILL_AREA(#1550);+#1550 = FILL_AREA_STYLE('',(#1551));+#1551 = FILL_AREA_STYLE_COLOUR('',#1552);+#1552 = COLOUR_RGB('',0.894999980927,0.89099997282,0.813000023365);+#1553 = STYLED_ITEM('color',(#1554),#57);+#1554 = PRESENTATION_STYLE_ASSIGNMENT((#1555));+#1555 = SURFACE_STYLE_USAGE(.BOTH.,#1556);+#1556 = SURFACE_SIDE_STYLE('',(#1557));+#1557 = SURFACE_STYLE_FILL_AREA(#1558);+#1558 = FILL_AREA_STYLE('',(#1559));+#1559 = FILL_AREA_STYLE_COLOUR('',#1552);+#1560 = STYLED_ITEM('color',(#1561),#104);+#1561 = PRESENTATION_STYLE_ASSIGNMENT((#1562));+#1562 = SURFACE_STYLE_USAGE(.BOTH.,#1563);+#1563 = SURFACE_SIDE_STYLE('',(#1564));+#1564 = SURFACE_STYLE_FILL_AREA(#1565);+#1565 = FILL_AREA_STYLE('',(#1566));+#1566 = FILL_AREA_STYLE_COLOUR('',#1552);+#1567 = STYLED_ITEM('color',(#1568),#183);+#1568 = PRESENTATION_STYLE_ASSIGNMENT((#1569));+#1569 = SURFACE_STYLE_USAGE(.BOTH.,#1570);+#1570 = SURFACE_SIDE_STYLE('',(#1571));+#1571 = SURFACE_STYLE_FILL_AREA(#1572);+#1572 = FILL_AREA_STYLE('',(#1573));+#1573 = FILL_AREA_STYLE_COLOUR('',#1552);+#1574 = STYLED_ITEM('color',(#1575),#207);+#1575 = PRESENTATION_STYLE_ASSIGNMENT((#1576));+#1576 = SURFACE_STYLE_USAGE(.BOTH.,#1577);+#1577 = SURFACE_SIDE_STYLE('',(#1578));+#1578 = SURFACE_STYLE_FILL_AREA(#1579);+#1579 = FILL_AREA_STYLE('',(#1580));+#1580 = FILL_AREA_STYLE_COLOUR('',#1552);+#1581 = STYLED_ITEM('color',(#1582),#247);+#1582 = PRESENTATION_STYLE_ASSIGNMENT((#1583));+#1583 = SURFACE_STYLE_USAGE(.BOTH.,#1584);+#1584 = SURFACE_SIDE_STYLE('',(#1585));+#1585 = SURFACE_STYLE_FILL_AREA(#1586);+#1586 = FILL_AREA_STYLE('',(#1587));+#1587 = FILL_AREA_STYLE_COLOUR('',#1552);+#1588 = STYLED_ITEM('color',(#1589),#278);+#1589 = PRESENTATION_STYLE_ASSIGNMENT((#1590));+#1590 = SURFACE_STYLE_USAGE(.BOTH.,#1591);+#1591 = SURFACE_SIDE_STYLE('',(#1592));+#1592 = SURFACE_STYLE_FILL_AREA(#1593);+#1593 = FILL_AREA_STYLE('',(#1594));+#1594 = FILL_AREA_STYLE_COLOUR('',#1552);+#1595 = STYLED_ITEM('color',(#1596),#295);+#1596 = PRESENTATION_STYLE_ASSIGNMENT((#1597));+#1597 = SURFACE_STYLE_USAGE(.BOTH.,#1598);+#1598 = SURFACE_SIDE_STYLE('',(#1599));+#1599 = SURFACE_STYLE_FILL_AREA(#1600);+#1600 = FILL_AREA_STYLE('',(#1601));+#1601 = FILL_AREA_STYLE_COLOUR('',#1602);+#1602 = COLOUR_RGB('',0.85900002718,0.737999975681,0.495999991894);+#1603 = STYLED_ITEM('color',(#1604),#328);+#1604 = PRESENTATION_STYLE_ASSIGNMENT((#1605));+#1605 = SURFACE_STYLE_USAGE(.BOTH.,#1606);+#1606 = SURFACE_SIDE_STYLE('',(#1607));+#1607 = SURFACE_STYLE_FILL_AREA(#1608);+#1608 = FILL_AREA_STYLE('',(#1609));+#1609 = FILL_AREA_STYLE_COLOUR('',#1552);+#1610 = STYLED_ITEM('color',(#1611),#352);+#1611 = PRESENTATION_STYLE_ASSIGNMENT((#1612));+#1612 = SURFACE_STYLE_USAGE(.BOTH.,#1613);+#1613 = SURFACE_SIDE_STYLE('',(#1614));+#1614 = SURFACE_STYLE_FILL_AREA(#1615);+#1615 = FILL_AREA_STYLE('',(#1616));+#1616 = FILL_AREA_STYLE_COLOUR('',#1602);+#1617 = STYLED_ITEM('color',(#1618),#419);+#1618 = PRESENTATION_STYLE_ASSIGNMENT((#1619));+#1619 = SURFACE_STYLE_USAGE(.BOTH.,#1620);+#1620 = SURFACE_SIDE_STYLE('',(#1621));+#1621 = SURFACE_STYLE_FILL_AREA(#1622);+#1622 = FILL_AREA_STYLE('',(#1623));+#1623 = FILL_AREA_STYLE_COLOUR('',#1552);+#1624 = STYLED_ITEM('color',(#1625),#540);+#1625 = PRESENTATION_STYLE_ASSIGNMENT((#1626));+#1626 = SURFACE_STYLE_USAGE(.BOTH.,#1627);+#1627 = SURFACE_SIDE_STYLE('',(#1628));+#1628 = SURFACE_STYLE_FILL_AREA(#1629);+#1629 = FILL_AREA_STYLE('',(#1630));+#1630 = FILL_AREA_STYLE_COLOUR('',#1602);+#1631 = STYLED_ITEM('color',(#1632),#607);+#1632 = PRESENTATION_STYLE_ASSIGNMENT((#1633));+#1633 = SURFACE_STYLE_USAGE(.BOTH.,#1634);+#1634 = SURFACE_SIDE_STYLE('',(#1635));+#1635 = SURFACE_STYLE_FILL_AREA(#1636);+#1636 = FILL_AREA_STYLE('',(#1637));+#1637 = FILL_AREA_STYLE_COLOUR('',#1552);+#1638 = STYLED_ITEM('color',(#1639),#631);+#1639 = PRESENTATION_STYLE_ASSIGNMENT((#1640));+#1640 = SURFACE_STYLE_USAGE(.BOTH.,#1641);+#1641 = SURFACE_SIDE_STYLE('',(#1642));+#1642 = SURFACE_STYLE_FILL_AREA(#1643);+#1643 = FILL_AREA_STYLE('',(#1644));+#1644 = FILL_AREA_STYLE_COLOUR('',#1552);+#1645 = STYLED_ITEM('color',(#1646),#662);+#1646 = PRESENTATION_STYLE_ASSIGNMENT((#1647));+#1647 = SURFACE_STYLE_USAGE(.BOTH.,#1648);+#1648 = SURFACE_SIDE_STYLE('',(#1649));+#1649 = SURFACE_STYLE_FILL_AREA(#1650);+#1650 = FILL_AREA_STYLE('',(#1651));+#1651 = FILL_AREA_STYLE_COLOUR('',#1602);+#1652 = STYLED_ITEM('color',(#1653),#695);+#1653 = PRESENTATION_STYLE_ASSIGNMENT((#1654));+#1654 = SURFACE_STYLE_USAGE(.BOTH.,#1655);+#1655 = SURFACE_SIDE_STYLE('',(#1656));+#1656 = SURFACE_STYLE_FILL_AREA(#1657);+#1657 = FILL_AREA_STYLE('',(#1658));+#1658 = FILL_AREA_STYLE_COLOUR('',#1552);+#1659 = STYLED_ITEM('color',(#1660),#751);+#1660 = PRESENTATION_STYLE_ASSIGNMENT((#1661));+#1661 = SURFACE_STYLE_USAGE(.BOTH.,#1662);+#1662 = SURFACE_SIDE_STYLE('',(#1663));+#1663 = SURFACE_STYLE_FILL_AREA(#1664);+#1664 = FILL_AREA_STYLE('',(#1665));+#1665 = FILL_AREA_STYLE_COLOUR('',#1602);+#1666 = STYLED_ITEM('color',(#1667),#775);+#1667 = PRESENTATION_STYLE_ASSIGNMENT((#1668));+#1668 = SURFACE_STYLE_USAGE(.BOTH.,#1669);+#1669 = SURFACE_SIDE_STYLE('',(#1670));+#1670 = SURFACE_STYLE_FILL_AREA(#1671);+#1671 = FILL_AREA_STYLE('',(#1672));+#1672 = FILL_AREA_STYLE_COLOUR('',#1602);+#1673 = STYLED_ITEM('color',(#1674),#799);+#1674 = PRESENTATION_STYLE_ASSIGNMENT((#1675));+#1675 = SURFACE_STYLE_USAGE(.BOTH.,#1676);+#1676 = SURFACE_SIDE_STYLE('',(#1677));+#1677 = SURFACE_STYLE_FILL_AREA(#1678);+#1678 = FILL_AREA_STYLE('',(#1679));+#1679 = FILL_AREA_STYLE_COLOUR('',#1602);+#1680 = STYLED_ITEM('color',(#1681),#823);+#1681 = PRESENTATION_STYLE_ASSIGNMENT((#1682));+#1682 = SURFACE_STYLE_USAGE(.BOTH.,#1683);+#1683 = SURFACE_SIDE_STYLE('',(#1684));+#1684 = SURFACE_STYLE_FILL_AREA(#1685);+#1685 = FILL_AREA_STYLE('',(#1686));+#1686 = FILL_AREA_STYLE_COLOUR('',#1602);+#1687 = STYLED_ITEM('color',(#1688),#856);+#1688 = PRESENTATION_STYLE_ASSIGNMENT((#1689));+#1689 = SURFACE_STYLE_USAGE(.BOTH.,#1690);+#1690 = SURFACE_SIDE_STYLE('',(#1691));+#1691 = SURFACE_STYLE_FILL_AREA(#1692);+#1692 = FILL_AREA_STYLE('',(#1693));+#1693 = FILL_AREA_STYLE_COLOUR('',#1602);+#1694 = STYLED_ITEM('color',(#1695),#868);+#1695 = PRESENTATION_STYLE_ASSIGNMENT((#1696));+#1696 = SURFACE_STYLE_USAGE(.BOTH.,#1697);+#1697 = SURFACE_SIDE_STYLE('',(#1698));+#1698 = SURFACE_STYLE_FILL_AREA(#1699);+#1699 = FILL_AREA_STYLE('',(#1700));+#1700 = FILL_AREA_STYLE_COLOUR('',#1602);+#1701 = STYLED_ITEM('color',(#1702),#931);+#1702 = PRESENTATION_STYLE_ASSIGNMENT((#1703));+#1703 = SURFACE_STYLE_USAGE(.BOTH.,#1704);+#1704 = SURFACE_SIDE_STYLE('',(#1705));+#1705 = SURFACE_STYLE_FILL_AREA(#1706);+#1706 = FILL_AREA_STYLE('',(#1707));+#1707 = FILL_AREA_STYLE_COLOUR('',#1602);+#1708 = STYLED_ITEM('color',(#1709),#956);+#1709 = PRESENTATION_STYLE_ASSIGNMENT((#1710));+#1710 = SURFACE_STYLE_USAGE(.BOTH.,#1711);+#1711 = SURFACE_SIDE_STYLE('',(#1712));+#1712 = SURFACE_STYLE_FILL_AREA(#1713);+#1713 = FILL_AREA_STYLE('',(#1714));+#1714 = FILL_AREA_STYLE_COLOUR('',#1602);+#1715 = STYLED_ITEM('color',(#1716),#973);+#1716 = PRESENTATION_STYLE_ASSIGNMENT((#1717));+#1717 = SURFACE_STYLE_USAGE(.BOTH.,#1718);+#1718 = SURFACE_SIDE_STYLE('',(#1719));+#1719 = SURFACE_STYLE_FILL_AREA(#1720);+#1720 = FILL_AREA_STYLE('',(#1721));+#1721 = FILL_AREA_STYLE_COLOUR('',#1602);+#1722 = STYLED_ITEM('color',(#1723),#997);+#1723 = PRESENTATION_STYLE_ASSIGNMENT((#1724));+#1724 = SURFACE_STYLE_USAGE(.BOTH.,#1725);+#1725 = SURFACE_SIDE_STYLE('',(#1726));+#1726 = SURFACE_STYLE_FILL_AREA(#1727);+#1727 = FILL_AREA_STYLE('',(#1728));+#1728 = FILL_AREA_STYLE_COLOUR('',#1602);+#1729 = STYLED_ITEM('color',(#1730),#1015);+#1730 = PRESENTATION_STYLE_ASSIGNMENT((#1731));+#1731 = SURFACE_STYLE_USAGE(.BOTH.,#1732);+#1732 = SURFACE_SIDE_STYLE('',(#1733));+#1733 = SURFACE_STYLE_FILL_AREA(#1734);+#1734 = FILL_AREA_STYLE('',(#1735));+#1735 = FILL_AREA_STYLE_COLOUR('',#1602);+#1736 = STYLED_ITEM('color',(#1737),#1033);+#1737 = PRESENTATION_STYLE_ASSIGNMENT((#1738));+#1738 = SURFACE_STYLE_USAGE(.BOTH.,#1739);+#1739 = SURFACE_SIDE_STYLE('',(#1740));+#1740 = SURFACE_STYLE_FILL_AREA(#1741);+#1741 = FILL_AREA_STYLE('',(#1742));+#1742 = FILL_AREA_STYLE_COLOUR('',#1602);+#1743 = STYLED_ITEM('color',(#1744),#1051);+#1744 = PRESENTATION_STYLE_ASSIGNMENT((#1745));+#1745 = SURFACE_STYLE_USAGE(.BOTH.,#1746);+#1746 = SURFACE_SIDE_STYLE('',(#1747));+#1747 = SURFACE_STYLE_FILL_AREA(#1748);+#1748 = FILL_AREA_STYLE('',(#1749));+#1749 = FILL_AREA_STYLE_COLOUR('',#1602);+#1750 = STYLED_ITEM('color',(#1751),#1068);+#1751 = PRESENTATION_STYLE_ASSIGNMENT((#1752));+#1752 = SURFACE_STYLE_USAGE(.BOTH.,#1753);+#1753 = SURFACE_SIDE_STYLE('',(#1754));+#1754 = SURFACE_STYLE_FILL_AREA(#1755);+#1755 = FILL_AREA_STYLE('',(#1756));+#1756 = FILL_AREA_STYLE_COLOUR('',#1602);+#1757 = STYLED_ITEM('color',(#1758),#1085);+#1758 = PRESENTATION_STYLE_ASSIGNMENT((#1759));+#1759 = SURFACE_STYLE_USAGE(.BOTH.,#1760);+#1760 = SURFACE_SIDE_STYLE('',(#1761));+#1761 = SURFACE_STYLE_FILL_AREA(#1762);+#1762 = FILL_AREA_STYLE('',(#1763));+#1763 = FILL_AREA_STYLE_COLOUR('',#1602);+#1764 = STYLED_ITEM('color',(#1765),#1116);+#1765 = PRESENTATION_STYLE_ASSIGNMENT((#1766));+#1766 = SURFACE_STYLE_USAGE(.BOTH.,#1767);+#1767 = SURFACE_SIDE_STYLE('',(#1768));+#1768 = SURFACE_STYLE_FILL_AREA(#1769);+#1769 = FILL_AREA_STYLE('',(#1770));+#1770 = FILL_AREA_STYLE_COLOUR('',#1602);+#1771 = STYLED_ITEM('color',(#1772),#1141);+#1772 = PRESENTATION_STYLE_ASSIGNMENT((#1773));+#1773 = SURFACE_STYLE_USAGE(.BOTH.,#1774);+#1774 = SURFACE_SIDE_STYLE('',(#1775));+#1775 = SURFACE_STYLE_FILL_AREA(#1776);+#1776 = FILL_AREA_STYLE('',(#1777));+#1777 = FILL_AREA_STYLE_COLOUR('',#1602);+#1778 = STYLED_ITEM('color',(#1779),#1166);+#1779 = PRESENTATION_STYLE_ASSIGNMENT((#1780));+#1780 = SURFACE_STYLE_USAGE(.BOTH.,#1781);+#1781 = SURFACE_SIDE_STYLE('',(#1782));+#1782 = SURFACE_STYLE_FILL_AREA(#1783);+#1783 = FILL_AREA_STYLE('',(#1784));+#1784 = FILL_AREA_STYLE_COLOUR('',#1602);+#1785 = STYLED_ITEM('color',(#1786),#1190);+#1786 = PRESENTATION_STYLE_ASSIGNMENT((#1787));+#1787 = SURFACE_STYLE_USAGE(.BOTH.,#1788);+#1788 = SURFACE_SIDE_STYLE('',(#1789));+#1789 = SURFACE_STYLE_FILL_AREA(#1790);+#1790 = FILL_AREA_STYLE('',(#1791));+#1791 = FILL_AREA_STYLE_COLOUR('',#1602);+#1792 = STYLED_ITEM('color',(#1793),#1207);+#1793 = PRESENTATION_STYLE_ASSIGNMENT((#1794));+#1794 = SURFACE_STYLE_USAGE(.BOTH.,#1795);+#1795 = SURFACE_SIDE_STYLE('',(#1796));+#1796 = SURFACE_STYLE_FILL_AREA(#1797);+#1797 = FILL_AREA_STYLE('',(#1798));+#1798 = FILL_AREA_STYLE_COLOUR('',#1799);+#1799 = COLOUR_RGB('',0.340000003576,0.680000007153,0.444999992847);+#1800 = STYLED_ITEM('color',(#1801),#1238);+#1801 = PRESENTATION_STYLE_ASSIGNMENT((#1802));+#1802 = SURFACE_STYLE_USAGE(.BOTH.,#1803);+#1803 = SURFACE_SIDE_STYLE('',(#1804));+#1804 = SURFACE_STYLE_FILL_AREA(#1805);+#1805 = FILL_AREA_STYLE('',(#1806));+#1806 = FILL_AREA_STYLE_COLOUR('',#1799);+#1807 = STYLED_ITEM('color',(#1808),#1262);+#1808 = PRESENTATION_STYLE_ASSIGNMENT((#1809));+#1809 = SURFACE_STYLE_USAGE(.BOTH.,#1810);+#1810 = SURFACE_SIDE_STYLE('',(#1811));+#1811 = SURFACE_STYLE_FILL_AREA(#1812);+#1812 = FILL_AREA_STYLE('',(#1813));+#1813 = FILL_AREA_STYLE_COLOUR('',#1799);+#1814 = STYLED_ITEM('color',(#1815),#1279);+#1815 = PRESENTATION_STYLE_ASSIGNMENT((#1816));+#1816 = SURFACE_STYLE_USAGE(.BOTH.,#1817);+#1817 = SURFACE_SIDE_STYLE('',(#1818));+#1818 = SURFACE_STYLE_FILL_AREA(#1819);+#1819 = FILL_AREA_STYLE('',(#1820));+#1820 = FILL_AREA_STYLE_COLOUR('',#1602);+#1821 = STYLED_ITEM('color',(#1822),#1307);+#1822 = PRESENTATION_STYLE_ASSIGNMENT((#1823));+#1823 = SURFACE_STYLE_USAGE(.BOTH.,#1824);+#1824 = SURFACE_SIDE_STYLE('',(#1825));+#1825 = SURFACE_STYLE_FILL_AREA(#1826);+#1826 = FILL_AREA_STYLE('',(#1827));+#1827 = FILL_AREA_STYLE_COLOUR('',#1602);+#1828 = STYLED_ITEM('color',(#1829),#1332);+#1829 = PRESENTATION_STYLE_ASSIGNMENT((#1830));+#1830 = SURFACE_STYLE_USAGE(.BOTH.,#1831);+#1831 = SURFACE_SIDE_STYLE('',(#1832));+#1832 = SURFACE_STYLE_FILL_AREA(#1833);+#1833 = FILL_AREA_STYLE('',(#1834));+#1834 = FILL_AREA_STYLE_COLOUR('',#1602);+#1835 = STYLED_ITEM('color',(#1836),#1356);+#1836 = PRESENTATION_STYLE_ASSIGNMENT((#1837));+#1837 = SURFACE_STYLE_USAGE(.BOTH.,#1838);+#1838 = SURFACE_SIDE_STYLE('',(#1839));+#1839 = SURFACE_STYLE_FILL_AREA(#1840);+#1840 = FILL_AREA_STYLE('',(#1841));+#1841 = FILL_AREA_STYLE_COLOUR('',#1602);+#1842 = STYLED_ITEM('color',(#1843),#1381);+#1843 = PRESENTATION_STYLE_ASSIGNMENT((#1844));+#1844 = SURFACE_STYLE_USAGE(.BOTH.,#1845);+#1845 = SURFACE_SIDE_STYLE('',(#1846));+#1846 = SURFACE_STYLE_FILL_AREA(#1847);+#1847 = FILL_AREA_STYLE('',(#1848));+#1848 = FILL_AREA_STYLE_COLOUR('',#1602);+#1849 = STYLED_ITEM('color',(#1850),#1428);+#1850 = PRESENTATION_STYLE_ASSIGNMENT((#1851));+#1851 = SURFACE_STYLE_USAGE(.BOTH.,#1852);+#1852 = SURFACE_SIDE_STYLE('',(#1853));+#1853 = SURFACE_STYLE_FILL_AREA(#1854);+#1854 = FILL_AREA_STYLE('',(#1855));+#1855 = FILL_AREA_STYLE_COLOUR('',#1602);+#1856 = STYLED_ITEM('color',(#1857),#1445);+#1857 = PRESENTATION_STYLE_ASSIGNMENT((#1858));+#1858 = SURFACE_STYLE_USAGE(.BOTH.,#1859);+#1859 = SURFACE_SIDE_STYLE('',(#1860));+#1860 = SURFACE_STYLE_FILL_AREA(#1861);+#1861 = FILL_AREA_STYLE('',(#1862));+#1862 = FILL_AREA_STYLE_COLOUR('',#1602);+#1863 = STYLED_ITEM('color',(#1864),#1457);+#1864 = PRESENTATION_STYLE_ASSIGNMENT((#1865));+#1865 = SURFACE_STYLE_USAGE(.BOTH.,#1866);+#1866 = SURFACE_SIDE_STYLE('',(#1867));+#1867 = SURFACE_STYLE_FILL_AREA(#1868);+#1868 = FILL_AREA_STYLE('',(#1869));+#1869 = FILL_AREA_STYLE_COLOUR('',#1602);+#1870 = STYLED_ITEM('color',(#1871),#1479);+#1871 = PRESENTATION_STYLE_ASSIGNMENT((#1872));+#1872 = SURFACE_STYLE_USAGE(.BOTH.,#1873);+#1873 = SURFACE_SIDE_STYLE('',(#1874));+#1874 = SURFACE_STYLE_FILL_AREA(#1875);+#1875 = FILL_AREA_STYLE('',(#1876));+#1876 = FILL_AREA_STYLE_COLOUR('',#1602);+#1877 = STYLED_ITEM('color',(#1878),#1491);+#1878 = PRESENTATION_STYLE_ASSIGNMENT((#1879));+#1879 = SURFACE_STYLE_USAGE(.BOTH.,#1880);+#1880 = SURFACE_SIDE_STYLE('',(#1881));+#1881 = SURFACE_STYLE_FILL_AREA(#1882);+#1882 = FILL_AREA_STYLE('',(#1883));+#1883 = FILL_AREA_STYLE_COLOUR('',#1602);+#1884 = STYLED_ITEM('color',(#1885),#1509);+#1885 = PRESENTATION_STYLE_ASSIGNMENT((#1886));+#1886 = SURFACE_STYLE_USAGE(.BOTH.,#1887);+#1887 = SURFACE_SIDE_STYLE('',(#1888));+#1888 = SURFACE_STYLE_FILL_AREA(#1889);+#1889 = FILL_AREA_STYLE('',(#1890));+#1890 = FILL_AREA_STYLE_COLOUR('',#1602);+#1891 = STYLED_ITEM('color',(#1892),#1527);+#1892 = PRESENTATION_STYLE_ASSIGNMENT((#1893));+#1893 = SURFACE_STYLE_USAGE(.BOTH.,#1894);+#1894 = SURFACE_SIDE_STYLE('',(#1895));+#1895 = SURFACE_STYLE_FILL_AREA(#1896);+#1896 = FILL_AREA_STYLE('',(#1897));+#1897 = FILL_AREA_STYLE_COLOUR('',#1799);+ENDSEC;+END-ISO-10303-21;
IN-S63BTG.svgadded+214@@ -0,0 +1,214 @@+<?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="10.5156mm" height="8.5598mm" viewBox="0.0000 0.0000 10.5156 8.5598">+<title>SVG Image created as LED_unit1.svg date 2026-06-08T19:59:36 </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)">+<path style="fill:none; +stroke:#840000; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 2.4003,5.0419+0.8763,6.5659+1.6383,6.5659+0.8763,6.5659+0.8763,5.8039+" /> +<path style="fill:none; +stroke:#840000; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 3.6703,5.0419+2.1463,6.5659+2.9083,6.5659+2.1463,6.5659+2.1463,5.8039+" /> +<path style="fill:none; +stroke:#840000; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 4.1783,4.2799+6.7183,4.2799+" /> +<path style="fill:none; +stroke:#840000; stroke-width:0.2540; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 4.1783,5.5499+4.1783,3.0099+" /> +<path style="fill:none; +stroke:#840000; stroke-width:0.2540; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 6.7183,5.5499+6.7183,3.0099+4.1783,4.2799+Z" /> +</g>+<g style="fill:none; +stroke:#840000; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">+<path d="M4.1783 4.2799+L1.6383 4.2799+" />+<path d="M6.7183 4.2799+L9.2583 4.2799+" />+</g>+<g style="fill:none; +stroke:#006464; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">+<text x="5.4483" y="2.3749"+textLength="2.5618" font-size="1.6933" lengthAdjust="spacingAndGlyphs"+text-anchor="middle" opacity="0" stroke-opacity="0">D?</text>+<g class="stroked-text"><desc>D?</desc>+<path d="M4.5713 2.3194+L4.5713 1.0494+" />+<path d="M4.5713 1.0494+L4.8737 1.0494+" />+<path d="M4.8737 1.0494+L5.0551 1.1099+" />+<path d="M5.0551 1.1099+L5.1761 1.2309+" />+<path d="M5.1761 1.2309+L5.2366 1.3518+" />+<path d="M5.2366 1.3518+L5.2970 1.5937+" />+<path d="M5.2970 1.5937+L5.2970 1.7751+" />+<path d="M5.2970 1.7751+L5.2366 2.0170+" />+<path d="M5.2366 2.0170+L5.1761 2.1380+" />+<path d="M5.1761 2.1380+L5.0551 2.2590+" />+<path d="M5.0551 2.2590+L4.8737 2.3194+" />+<path d="M4.8737 2.3194+L4.5713 2.3194+" />+<path d="M6.0228 2.1985+L6.0832 2.2590+" />+<path d="M6.0832 2.2590+L6.0228 2.3194+" />+<path d="M6.0228 2.3194+L5.9623 2.2590+" />+<path d="M5.9623 2.2590+L6.0228 2.1985+" />+<path d="M6.0228 2.1985+L6.0228 2.3194+" />+<path d="M5.7809 1.1099+L5.9018 1.0494+" />+<path d="M5.9018 1.0494+L6.2042 1.0494+" />+<path d="M6.2042 1.0494+L6.3251 1.1099+" />+<path d="M6.3251 1.1099+L6.3856 1.2309+" />+<path d="M6.3856 1.2309+L6.3856 1.3518+" />+<path d="M6.3856 1.3518+L6.3251 1.4728+" />+<path d="M6.3251 1.4728+L6.2647 1.5332+" />+<path d="M6.2647 1.5332+L6.1437 1.5937+" />+<path d="M6.1437 1.5937+L6.0832 1.6542+" />+<path d="M6.0832 1.6542+L6.0228 1.7751+" />+<path d="M6.0228 1.7751+L6.0228 1.8356+" />+</g><text x="5.4483" y="7.4549"+textLength="3.6503" font-size="1.6933" lengthAdjust="spacingAndGlyphs"+text-anchor="middle" opacity="0" stroke-opacity="0">LED</text>+<g class="stroked-text"><desc>LED</desc>+<path d="M4.6319 7.3994+L4.0271 7.3994+" />+<path d="M4.0271 7.3994+L4.0271 6.1294+" />+<path d="M5.0552 6.7342+L5.4786 6.7342+" />+<path d="M5.6600 7.3994+L5.0552 7.3994+" />+<path d="M5.0552 7.3994+L5.0552 6.1294+" />+<path d="M5.0552 6.1294+L5.6600 6.1294+" />+<path d="M6.2042 7.3994+L6.2042 6.1294+" />+<path d="M6.2042 6.1294+L6.5066 6.1294+" />+<path d="M6.5066 6.1294+L6.6880 6.1899+" />+<path d="M6.6880 6.1899+L6.8090 6.3109+" />+<path d="M6.8090 6.3109+L6.8695 6.4318+" />+<path d="M6.8695 6.4318+L6.9299 6.6737+" />+<path d="M6.9299 6.6737+L6.9299 6.8551+" />+<path d="M6.9299 6.8551+L6.8695 7.0970+" />+<path d="M6.8695 7.0970+L6.8090 7.2180+" />+<path d="M6.8090 7.2180+L6.6880 7.3390+" />+<path d="M6.6880 7.3390+L6.5066 7.3994+" />+<path d="M6.5066 7.3994+L6.2042 7.3994+" />+</g></g> +</svg>
README.md+14@@ -1,3 +1,17 @@ # IN-S63BTG +**Inolux Corporation** · Green · 0603 · LED+ Inolux Corporation · Top View SMD LED · 0603 (1.6 × 0.8mm) · InGaN++## Characterization++<iframe src="/blob/component/in-s63btg/IN-S63BTG.html" width="100%" height="2400" frameborder="0" style="border: none; border-radius: 8px;" allowfullscreen></iframe>++## Downloads++| File | Description |+|------|-------------|+| [IN-S63BTG.kicad_sym](/blob/component/in-s63btg/IN-S63BTG.kicad_sym) | KiCad Symbol |+| [IN-S63BTG.kicad_mod](/blob/component/in-s63btg/IN-S63BTG.kicad_mod) | KiCad Footprint |+| [IN-S63BTG.step](/blob/component/in-s63btg/IN-S63BTG.step) | 3D STEP Model |