Devesh36/key-finder
A compact BLE key finder for keys, bags and remotes: replaceable CR2032, piezo alert, status LED and pair button in a 38 mm black keyring enclosure. Includes routed PCB, enclosed/exploded assembly and BOM. Firmware/app and physical qualification remain separate.
- Version
- 0.1.2
- License
- unset
- Stars
- 0
dist/index.js
import { jsx, jsxs } from 'react/jsx-runtime';
import { jscad, assembly } from 'tscircuit';
import { renderToJscadPlan } from 'jscad-fiber/headless';
import { Fragment } from 'react';
// All copper paths are declared natively in index.circuit.tsx. The router
// contributes no extra paths; standard connectivity and geometry checks remain on.
async function manualRouting(input) {
const traces = [];
const handlers = { complete: [], error: [], progress: [] };
const router = {
input, isRouting: false,
on(event, callback) { handlers[event].push(callback); },
async start() {
this.isRouting = true;
queueMicrotask(() => {
this.isRouting = false;
handlers.complete.forEach(fn => fn({ type: 'complete', traces }));
});
},
stop() { this.isRouting = false; },
solveSync() { return traces; },
};
return router;
}
// Local pad offsets from the imported/native footprints; used only for explicit via placement.
const padOffsets = {
"U1.pin1": {
"x": -3.499866,
"y": 3.50012
},
"U1.pin2": {
"x": -3.700018,
"y": 2.600198
},
"U1.pin3": {
"x": -3.050032,
"y": 2.275332
},
"U1.pin4": {
"x": -3.700018,
"y": 1.950212
},
"U1.pin5": {
"x": -3.050032,
"y": 1.625346
},
"U1.pin6": {
"x": -3.700018,
"y": 1.300226
},
"U1.pin7": {
"x": -3.499866,
"y": 0.400304
},
"U1.pin8": {
"x": -2.599944,
"y": 0.200152
},
"U1.pin9": {
"x": -2.275078,
"y": 0.850138
},
"U1.pin10": {
"x": -1.949958,
"y": 0.200152
},
"U1.pin11": {
"x": -1.625092,
"y": 0.850138
},
"U1.pin12": {
"x": -1.299972,
"y": 0.200152
},
"U1.pin13": {
"x": -0.975106,
"y": 0.850138
},
"U1.pin14": {
"x": -0.649986,
"y": 0.200152
},
"U1.pin15": {
"x": -0.32512,
"y": 0.850138
},
"U1.pin16": {
"x": 0.0,
"y": 0.200152
},
"U1.pin17": {
"x": 0.32512,
"y": 0.850138
},
"U1.pin18": {
"x": 0.649986,
"y": 0.200152
},
"U1.pin19": {
"x": 0.975106,
"y": 0.850138
},
"U1.pin20": {
"x": 1.299972,
"y": 0.200152
},
"U1.pin21": {
"x": 1.625092,
"y": 0.850138
},
"U1.pin22": {
"x": 1.949958,
"y": 0.200152
},
"U1.pin23": {
"x": 2.275078,
"y": 0.850138
},
"U1.pin24": {
"x": 2.599944,
"y": 0.200152
},
"U1.pin25": {
"x": 3.499866,
"y": 0.400304
},
"U1.pin26": {
"x": 3.700018,
"y": 1.300226
},
"U1.pin27": {
"x": 3.050032,
"y": 1.625346
},
"U1.pin28": {
"x": 3.700018,
"y": 1.950212
},
"U1.pin29": {
"x": 3.050032,
"y": 2.275332
},
"U1.pin30": {
"x": 3.700018,
"y": 2.600198
},
"U1.pin31": {
"x": 3.499866,
"y": 3.50012
},
"U1.pin32": {
"x": 2.599944,
"y": 3.700272
},
"U1.pin33": {
"x": 2.275078,
"y": 3.050286
},
"U1.pin34": {
"x": 1.949958,
"y": 3.700272
},
"U1.pin35": {
"x": 1.625092,
"y": 3.050286
},
"U1.pin36": {
"x": 1.299972,
"y": 3.700272
},
"U1.pin37": {
"x": 0.975106,
"y": 3.050286
},
"U1.pin38": {
"x": 0.649986,
"y": 3.700272
},
"U1.pin39": {
"x": 0.32512,
"y": 3.050286
},
"U1.pin40": {
"x": 0.0,
"y": 3.700272
},
"U1.pin41": {
"x": -0.32512,
"y": 3.050286
},
"U1.pin42": {
"x": -0.649986,
"y": 3.700272
},
"U1.pin43": {
"x": -0.975106,
"y": 3.050286
},
"U1.pin44": {
"x": -1.299972,
"y": 3.700272
},
"U1.pin45": {
"x": -1.625092,
"y": 3.050286
},
"U1.pin46": {
"x": -1.949958,
"y": 3.700272
},
"U1.pin47": {
"x": -2.275078,
"y": 3.050286
},
"U1.pin48": {
"x": -2.599944,
"y": 3.700272
},
"U1.pin49": {
"x": 2.275078,
"y": 2.275332
},
"U1.pin50": {
"x": 1.625092,
"y": 2.275332
},
"U1.pin51": {
"x": 0.975106,
"y": 2.275332
},
"U1.pin52": {
"x": 0.32512,
"y": 2.275332
},
"U1.pin53": {
"x": -0.32512,
"y": 2.275332
},
"U1.pin54": {
"x": -0.975106,
"y": 2.275332
},
"U1.pin55": {
"x": -1.625092,
"y": 2.275332
},
"U1.pin56": {
"x": -2.275078,
"y": 2.275332
},
"U1.pin57": {
"x": 2.275078,
"y": 1.625346
},
"U1.pin58": {
"x": 1.625092,
"y": 1.625346
},
"U1.pin59": {
"x": 0.975106,
"y": 1.625346
},
"U1.pin60": {
"x": 0.32512,
"y": 1.625346
},
"U1.pin61": {
"x": -0.32512,
"y": 1.625346
},
"U1.pin62": {
"x": -0.975106,
"y": 1.625346
},
"U1.pin63": {
"x": -1.625092,
"y": 1.625346
},
"U1.pin64": {
"x": -2.275078,
"y": 1.625346
},
"U1.pin65": {
"x": -3.700018,
"y": -0.549656
},
"U1.pin66": {
"x": -3.700018,
"y": -1.549654
},
"U1.pin67": {
"x": -3.700018,
"y": -2.549652
},
"U1.pin68": {
"x": -3.499866,
"y": -3.499612
},
"U1.pin69": {
"x": -2.499868,
"y": -3.700272
},
"U1.pin70": {
"x": -1.500124,
"y": -3.700272
},
"U1.pin71": {
"x": -0.500126,
"y": -3.700272
},
"U1.pin72": {
"x": 0.499872,
"y": -3.700272
},
"U1.pin73": {
"x": 1.500124,
"y": -3.700272
},
"U1.pin74": {
"x": 2.500122,
"y": -3.700272
},
"U1.pin75": {
"x": 3.499866,
"y": -3.499612
},
"U1.pin76": {
"x": 3.700018,
"y": -2.549652
},
"U1.pin77": {
"x": 3.700018,
"y": -1.549654
},
"U1.pin78": {
"x": 3.700018,
"y": -0.549656
},
"BT1.pin3": {
"x": 0,
"y": 0
},
"BT1.pin1": {
"x": 11.450066,
"y": 0
},
"BT1.pin2": {
"x": -11.450066,
"y": 0
},
"C1.pin1": {
"x": -0.825,
"y": 0.0
},
"C1.pin2": {
"x": 0.825,
"y": 0.0
},
"C2.pin1": {
"x": -0.9125,
"y": 0.0
},
"C2.pin2": {
"x": 0.9125,
"y": 0.0
},
"R1.pin1": {
"x": -0.825,
"y": 0.0
},
"R1.pin2": {
"x": 0.825,
"y": 0.0
},
"R2.pin1": {
"x": -0.825,
"y": 0.0
},
"R2.pin2": {
"x": 0.825,
"y": 0.0
},
"R3.pin1": {
"x": -0.825,
"y": 0.0
},
"R3.pin2": {
"x": 0.825,
"y": 0.0
},
"R4.pin1": {
"x": -0.825,
"y": 0
},
"R4.pin2": {
"x": 0.825,
"y": 0
},
"R5.pin1": {
"x": -0.825,
"y": 0.0
},
"R5.pin2": {
"x": 0.825,
"y": 0.0
},
"LED1.pin1": {
"x": -0.748995,
"y": -3429e-6
},
"LED1.pin2": {
"x": 0.748995,
"y": 0.003429
},
"SW1.pin1": {
"x": -1.324991,
"y": 0.375031
},
"SW1.pin2": {
"x": -1.324991,
"y": -0.375031
},
"SW1.pin3": {
"x": 1.324991,
"y": 0.375031
},
"SW1.pin4": {
"x": 1.324991,
"y": -0.375031
},
"BZ1.pin1": {
"x": -1.5,
"y": 0
},
"BZ1.pin2": {
"x": 1.5,
"y": 0
},
"TP1.pin1": {
"x": 0,
"y": 0
},
"TP2.pin1": {
"x": 0,
"y": 0
},
"TP3.pin1": {
"x": 0,
"y": 0
},
"TP4.pin1": {
"x": 0,
"y": 0
},
"TP5.pin1": {
"x": 0,
"y": 0
}
};
const pinLabels$3 = {
pin1: ["VSS5"],
pin2: ["P0_09NFC1"],
pin3: ["P0_12TRACEDATA1"],
pin4: ["P0_10NFC2"],
pin5: ["P0_14"],
pin6: ["P0_26"],
pin7: ["VSS6"],
pin8: ["D_POS"],
pin9: ["P0_16"],
pin10: ["D_NEG"],
pin11: ["P0_21"],
pin12: ["VBUS"],
pin13: ["P0_18RESET"],
pin14: ["VSS1"],
pin15: ["P0_20"],
pin16: ["VSS2"],
pin17: ["P0_22"],
pin18: ["VSS3"],
pin19: ["P0_24"],
pin20: ["OUT_ANT"],
pin21: ["VSS9"],
pin22: ["OUT_MOD"],
pin23: ["VSS10"],
pin24: ["VSS4"],
pin25: ["VSS7"],
pin26: ["VCC_nRF"],
pin27: ["P0_17"],
pin28: ["SWDIO"],
pin29: ["P0_13"],
pin30: ["SWDCLK"],
pin31: ["VSS8"],
pin32: ["P0_08"],
pin33: ["P0_07TRACECLK"],
pin34: ["P0_06"],
pin35: ["P0_04AIN2"],
pin36: ["P0_05AIN3"],
pin37: ["P0_15"],
pin38: ["P0_03AIN1"],
pin39: ["P0_27"],
pin40: ["P0_02AIN0"],
pin41: ["P0_25"],
pin42: ["P0_31AIN7"],
pin43: ["P0_11TRACEDATA2"],
pin44: ["P0_30AIN6"],
pin45: ["P0_19"],
pin46: ["P0_29AIN5"],
pin47: ["P0_23"],
pin48: ["P0_28AIN4"],
pin49: ["P1_02"],
pin50: ["P1_06"],
pin51: ["P1_15"],
pin52: ["P1_14"],
pin53: ["P1_13"],
pin54: ["P1_05"],
pin55: ["P1_08"],
pin56: ["P1_09TRACEDATA3"],
pin57: ["P1_00TRACEDATA0"],
pin58: ["P1_03"],
pin59: ["P1_12"],
pin60: ["P1_10"],
pin61: ["P1_11"],
pin62: ["P1_07"],
pin63: ["P1_04"],
pin64: ["P1_01"],
pin65: ["NC1"],
pin66: ["NC2"],
pin67: ["NC3"],
pin68: ["NC4"],
pin69: ["NC5"],
pin70: ["NC6"],
pin71: ["NC7"],
pin72: ["NC8"],
pin73: ["NC9"],
pin74: ["NC10"],
pin75: ["NC11"],
pin76: ["NC12"],
pin77: ["NC13"],
pin78: ["NC14"]
};
const pinAttributes = {
pin1: { requiresGround: true },
pin7: { requiresGround: true },
pin26: { requiresPower: true },
pin14: { requiresGround: true },
pin16: { requiresGround: true },
pin18: { requiresGround: true },
pin21: { requiresGround: true },
pin23: { requiresGround: true },
pin24: { requiresGround: true },
pin25: { requiresGround: true },
pin31: { requiresGround: true },
pin65: { doNotConnect: true },
pin66: { doNotConnect: true },
pin67: { doNotConnect: true },
pin68: { doNotConnect: true },
pin69: { doNotConnect: true },
pin70: { doNotConnect: true },
pin71: { doNotConnect: true },
pin72: { doNotConnect: true },
pin73: { doNotConnect: true },
pin74: { doNotConnect: true },
pin75: { doNotConnect: true },
pin76: { doNotConnect: true },
pin77: { doNotConnect: true },
pin78: { doNotConnect: true }
};
const ISP1807_LR_RS = (props) => {
return (jsx("chip", { pinLabels: pinLabels$3, pinAttributes: pinAttributes, supplierPartNumbers: {
"jlcpcb": [
"C5264268"
]
}, manufacturerPartNumber: "ISP1807-LR-RS", footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin57"], pcbX: "2.275205mm", pcbY: "1.625219mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin58"], pcbX: "1.625219mm", pcbY: "1.625219mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin59"], pcbX: "0.975233mm", pcbY: "1.625219mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin60"], pcbX: "0.325247mm", pcbY: "1.625219mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin61"], pcbX: "-0.324993mm", pcbY: "1.625219mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin62"], pcbX: "-0.974979mm", pcbY: "1.625219mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin63"], pcbX: "-1.624965mm", pcbY: "1.625219mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin64"], pcbX: "-2.274951mm", pcbY: "1.625219mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin56"], pcbX: "-2.274951mm", pcbY: "2.275205mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin55"], pcbX: "-1.624965mm", pcbY: "2.275205mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin54"], pcbX: "-0.974979mm", pcbY: "2.275205mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin53"], pcbX: "-0.324993mm", pcbY: "2.275205mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin52"], pcbX: "0.325247mm", pcbY: "2.275205mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin51"], pcbX: "0.975233mm", pcbY: "2.275205mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin50"], pcbX: "1.625219mm", pcbY: "2.275205mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin49"], pcbX: "2.275205mm", pcbY: "2.275205mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin2"], pcbX: "-3.699891mm", pcbY: "2.600071mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin4"], pcbX: "-3.699891mm", pcbY: "1.950085mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin6"], pcbX: "-3.699891mm", pcbY: "1.300099mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin8"], pcbX: "-2.599817mm", pcbY: "0.200025mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin10"], pcbX: "-1.949831mm", pcbY: "0.200025mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin12"], pcbX: "-1.299845mm", pcbY: "0.200025mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin14"], pcbX: "-0.649859mm", pcbY: "0.200025mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin16"], pcbX: "0.000127mm", pcbY: "0.200025mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin18"], pcbX: "0.650113mm", pcbY: "0.200025mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin20"], pcbX: "1.300099mm", pcbY: "0.200025mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin22"], pcbX: "1.950085mm", pcbY: "0.200025mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin24"], pcbX: "2.600071mm", pcbY: "0.200025mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin26"], pcbX: "3.700145mm", pcbY: "1.300099mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin28"], pcbX: "3.700145mm", pcbY: "1.950085mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin30"], pcbX: "3.700145mm", pcbY: "2.600071mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin32"], pcbX: "2.600071mm", pcbY: "3.700145mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin34"], pcbX: "1.950085mm", pcbY: "3.700145mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin36"], pcbX: "1.300099mm", pcbY: "3.700145mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin38"], pcbX: "0.650113mm", pcbY: "3.700145mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin40"], pcbX: "0.000127mm", pcbY: "3.700145mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin42"], pcbX: "-0.649859mm", pcbY: "3.700145mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin44"], pcbX: "-1.299845mm", pcbY: "3.700145mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin46"], pcbX: "-1.949831mm", pcbY: "3.700145mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin48"], pcbX: "-2.599817mm", pcbY: "3.700145mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin1"], pcbX: "-3.499739mm", pcbY: "3.499993mm", width: "0.8001mm", height: "0.8001mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin7"], pcbX: "-3.499739mm", pcbY: "0.400177mm", width: "0.8001mm", height: "0.8001mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin25"], pcbX: "3.499993mm", pcbY: "0.400177mm", width: "0.8001mm", height: "0.8001mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin31"], pcbX: "3.499993mm", pcbY: "3.499993mm", width: "0.8001mm", height: "0.8001mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin65"], pcbX: "-3.699891mm", pcbY: "-0.549783mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin66"], pcbX: "-3.699891mm", pcbY: "-1.549781mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin67"], pcbX: "-3.699891mm", pcbY: "-2.549779mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin68"], pcbX: "-3.499739mm", pcbY: "-3.499739mm", width: "0.8001mm", height: "0.8001mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin69"], pcbX: "-2.499741mm", pcbY: "-3.700399mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin70"], pcbX: "-1.499997mm", pcbY: "-3.700399mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin71"], pcbX: "-0.499999mm", pcbY: "-3.700399mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin72"], pcbX: "0.499999mm", pcbY: "-3.700399mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin73"], pcbX: "1.500251mm", pcbY: "-3.700399mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin74"], pcbX: "2.500249mm", pcbY: "-3.700399mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin75"], pcbX: "3.499993mm", pcbY: "-3.499739mm", width: "0.8001mm", height: "0.8001mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin76"], pcbX: "3.700145mm", pcbY: "-2.549779mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin77"], pcbX: "3.700145mm", pcbY: "-1.549781mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin78"], pcbX: "3.700145mm", pcbY: "-0.549783mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin3"], pcbX: "-3.049905mm", pcbY: "2.275205mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin5"], pcbX: "-3.049905mm", pcbY: "1.625219mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin9"], pcbX: "-2.274951mm", pcbY: "0.850011mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin11"], pcbX: "-1.624965mm", pcbY: "0.850011mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin13"], pcbX: "-0.974979mm", pcbY: "0.850011mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin15"], pcbX: "-0.324993mm", pcbY: "0.850011mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin17"], pcbX: "0.325247mm", pcbY: "0.850011mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin19"], pcbX: "0.975233mm", pcbY: "0.850011mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin21"], pcbX: "1.625219mm", pcbY: "0.850011mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin23"], pcbX: "2.275205mm", pcbY: "0.850011mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin29"], pcbX: "3.050159mm", pcbY: "2.275205mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin27"], pcbX: "3.050159mm", pcbY: "1.625219mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin33"], pcbX: "2.275205mm", pcbY: "3.050159mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin35"], pcbX: "1.625219mm", pcbY: "3.050159mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin37"], pcbX: "0.975233mm", pcbY: "3.050159mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin39"], pcbX: "0.325247mm", pcbY: "3.050159mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin41"], pcbX: "-0.324993mm", pcbY: "3.050159mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin43"], pcbX: "-0.974979mm", pcbY: "3.050159mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin45"], pcbX: "-1.624965mm", pcbY: "3.050159mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin47"], pcbX: "-2.274951mm", pcbY: "3.050159mm", width: "0.40005mm", height: "0.40005mm", shape: "rect" }), jsx("silkscreencircle", { pcbX: "-4.299839mm", pcbY: "4.499737mm", radius: "0.199898mm" }), jsx("silkscreenrect", { pcbX: "0mm", pcbY: "0mm", width: "8.199882mm", height: "8.199882mm", strokeWidth: "0.1519936mm" }), jsx("silkscreentext", { text: "{NAME}", pcbX: "-0.185039mm", pcbY: "5.693793mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("courtyardoutline", { outline: [{ "x": -4.249864999999886, "y": 4.249864999999886 }, { "x": 4.250118999999927, "y": 4.249864999999886 }, { "x": 4.250118999999927, "y": -4.250119000000041 }, { "x": -4.249864999999886, "y": -4.250119000000041 }, { "x": -4.249864999999886, "y": 4.249864999999886 }] })] }), cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C5264268.obj?uuid=dd472b1cdc7d4fe3a8ccf99455ff230c",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C5264268.step?uuid=dd472b1cdc7d4fe3a8ccf99455ff230c",
pcbRotationOffset: 0,
modelOriginPosition: { x: -12700000002041634e-20, y: 0.00012700000002041634, z: -0.02 },
}, ...props }));
};
const pinLabels$2 = {
pin1: ["pin1"],
pin2: ["pin2"],
pin3: ["pin3"]
};
const MY_2032_16 = (props) => {
return (jsx("chip", { pinLabels: pinLabels$2, symbol: jsxs("symbol", { children: [jsx("port", { name: "pin3", pinNumber: 3, aliases: ["3"], direction: "right", schX: 0.5, schY: 0, schStemLength: 0.4 }), jsx("port", { name: "pin1", pinNumber: 1, aliases: ["1"], direction: "left", schX: -0.5, schY: 0, schStemLength: 0.4 }), jsx("schematicpath", { points: [{ "x": 0.1, "y": 0.1 }, { "x": 0.1, "y": -0.08 }], strokeColor: "#880000" }), jsx("schematicpath", { points: [{ "x": 0.0334, "y": 0.18 }, { "x": 0.0334, "y": -0.14 }], strokeColor: "#880000" }), jsx("schematicpath", { points: [{ "x": -0.0334, "y": 0.1 }, { "x": -0.0334, "y": -0.08 }], strokeColor: "#880000" }), jsx("schematicpath", { points: [{ "x": -0.1, "y": 0.18 }, { "x": -0.1, "y": -0.14 }], strokeColor: "#880000" }), jsx("port", { name: "pin2", pinNumber: 2, aliases: ["2"], direction: "left", schX: -0.5, schY: -0.2, schStemLength: 0.2 }), jsx("schematicpath", { points: [{ "x": -0.3, "y": -0.2 }, { "x": -0.3, "y": 0 }], strokeColor: "#880000" }), jsx("schematictext", { schX: 0, schY: 0.408, text: "{NAME}", fontSize: 0.2, anchor: "bottom_center" })] }), supplierPartNumbers: {
"jlcpcb": [
"C2902340"
]
}, manufacturerPartNumber: "MY-2032-16", footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin2"], pcbX: "11.450066mm", pcbY: "0mm", width: "2.999994mm", height: "4.99999mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin1"], pcbX: "-11.450066mm", pcbY: "0mm", width: "2.999994mm", height: "3.499993mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin3"], pcbX: "0mm", pcbY: "0mm", radius: "4.99999mm", shape: "circle" }), jsx("silkscreenpath", { route: [{ "x": 4.9502060000002075, "y": -2.5499059999999645 }, { "x": 7.710170000000176, "y": -2.5499059999999645 }, { "x": 7.710170000000176, "y": 1.1200892000000522 }] }), jsx("silkscreenpath", { route: [{ "x": -7.6100177999998095, "y": -2.5399999999999636 }, { "x": -7.6100177999998095, "y": 1.0899901999999884 }] }), jsx("silkscreenpath", { route: [{ "x": 4.9502060000002075, "y": -1.9618705999999975 }, { "x": 7.710170000000176, "y": -1.9618705999999975 }] }), jsx("silkscreenpath", { route: [{ "x": 4.9502060000002075, "y": -0.43787059999999656 }, { "x": 7.710170000000176, "y": -0.43787059999999656 }] }), jsx("silkscreenpath", { route: [{ "x": 4.9502060000002075, "y": -2.5499313999999913 }, { "x": 4.9502060000002075, "y": 1.0801096000000143 }] }), jsx("silkscreenpath", { route: [{ "x": 4.9502060000002075, "y": -2.5499313999999913 }, { "x": 7.710170000000176, "y": -2.5499313999999913 }, { "x": 7.710170000000176, "y": 1.120114600000079 }] }), jsx("silkscreenpath", { route: [{ "x": -7.6100177999998095, "y": -2.5399999999999636 }, { "x": -4.850002999999788, "y": -2.5399999999999636 }, { "x": -4.850002999999788, "y": 1.1299698000000262 }] }), jsx("silkscreenpath", { route: [{ "x": -7.6100177999998095, "y": -0.4279391999999689 }, { "x": -4.850002999999788, "y": -0.4279391999999689 }] }), jsx("silkscreenpath", { route: [{ "x": -7.6100177999998095, "y": -1.9519391999999698 }, { "x": -4.850002999999788, "y": -1.9519391999999698 }] }), jsx("silkscreenpath", { route: [{ "x": 4.9502060000002075, "y": -1.9618452000000843 }, { "x": 7.710170000000176, "y": -1.9618452000000843 }] }), jsx("silkscreenpath", { route: [{ "x": 4.9502060000002075, "y": -0.4378452000000834 }, { "x": 7.710170000000176, "y": -0.4378452000000834 }] }), jsx("silkscreenpath", { route: [{ "x": 4.9502060000002075, "y": -2.5499059999999645 }, { "x": 4.9502060000002075, "y": 1.0801096000000143 }] }), jsx("silkscreenpath", { route: [{ "x": -10.449966399999767, "y": 1.9811238000000913 }, { "x": -10.449966399999767, "y": 4.499990999999909 }, { "x": 10.439984200000254, "y": 4.499990999999909 }] }), jsx("silkscreenpath", { route: [{ "x": 10.449991800000134, "y": -2.7311349999999948 }, { "x": 10.449991800000134, "y": -4.499991000000023 }, { "x": -10.449966399999767, "y": -4.499991000000023 }, { "x": -10.449966399999767, "y": -1.9811492000000044 }] }), jsx("silkscreenpath", { route: [{ "x": 10.449991800000134, "y": 4.499990999999909 }, { "x": 10.449991800000134, "y": 2.7311349999999948 }] }), jsx("silkscreenpath", { route: [{ "x": -4.849977599999875, "y": 1.1299951999999394 }, { "x": -4.875011388167422, "y": 1.3688386861260824 }, { "x": -4.941070306081201, "y": 1.5997263661330408 }, { "x": -5.046154066034887, "y": 1.8156668783324221 }, { "x": -5.187080694120709, "y": 2.010121466632995 }, { "x": -5.359582881539723, "y": 2.17720197641961 }, { "x": -5.558437200241428, "y": 2.3118491499828906 }, { "x": -5.77762227019673, "y": 2.4099858226572906 }, { "x": -6.010501088943215, "y": 2.468640380826855 }, { "x": -6.250022002398282, "y": 2.4860367434520185 }, { "x": -6.488932231470812, "y": 2.4616481424384347 }, { "x": -6.719997488812055, "y": 2.3962130733644926 }, { "x": -6.93622103562825, "y": 2.29171293356967 }, { "x": -7.13105554543904, "y": 2.151312024734807 }, { "x": -7.298601359468876, "y": 1.9792617366911145 }, { "x": -7.433785130430124, "y": 1.78077181381434 }, { "x": -7.532513445294853, "y": 1.5618526020972467 }, { "x": -7.591796775310286, "y": 1.3291330537193744 }, { "x": -7.6098399999997355, "y": 1.0896600000000944 }] }), jsx("silkscreenpath", { route: [{ "x": 7.710170000000176, "y": 1.1200892000000522 }, { "x": 4.950282200000288, "y": 1.0797794000000067 }] }), jsx("silkscreenpath", { route: [{ "x": 7.710170000000176, "y": 1.1200892000000522 }, { "x": 4.950282200000288, "y": 1.0797794000000067 }] }), jsx("silkscreentext", { text: "{NAME}", pcbX: "0mm", pcbY: "6.0546mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("fabricationnotepath", { route: [{ "x": -7.609992399999783, "y": -1.8249391999999034 }, { "x": -4.849977599999875, "y": -1.8249391999999034 }, { "x": -4.976977599999941, "y": -1.9519391999999698 }, { "x": -4.849977599999875, "y": -2.0789391999999225 }, { "x": -7.609992399999783, "y": -2.0789391999999225 }, { "x": -7.48299239999983, "y": -1.9519391999999698 }, { "x": -7.609992399999783, "y": -1.8249391999999034 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": -7.736992399999849, "y": -2.5399999999999636 }, { "x": -7.736992399999849, "y": 1.0899901999999884 }, { "x": -7.609992399999783, "y": 0.9629902000000357 }, { "x": -7.48299239999983, "y": 1.0899901999999884 }, { "x": -7.48299239999983, "y": -2.5399999999999636 }, { "x": -7.609992399999783, "y": -2.413000000000011 }, { "x": -7.736992399999849, "y": -2.5399999999999636 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": -7.609992399999783, "y": -2.413000000000011 }, { "x": -4.976977599999941, "y": -2.413000000000011 }, { "x": -4.976977599999941, "y": 1.129995200000053 }, { "x": -4.849977599999875, "y": 1.0029952000001003 }, { "x": -4.722977599999922, "y": 1.129995200000053 }, { "x": -4.722977599999922, "y": -2.5399999999999636 }, { "x": -4.760175038789043, "y": -2.6298025612106812 }, { "x": -4.849977599999875, "y": -2.6669999999999163 }, { "x": -7.609992399999783, "y": -2.6669999999999163 }, { "x": -7.48299239999983, "y": -2.5399999999999636 }, { "x": -7.609992399999783, "y": -2.413000000000011 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": -7.609992399999783, "y": -0.3009391999999025 }, { "x": -4.849977599999875, "y": -0.3009391999999025 }, { "x": -4.976977599999941, "y": -0.4279391999999689 }, { "x": -4.849977599999875, "y": -0.5549391999999216 }, { "x": -7.609992399999783, "y": -0.5549391999999216 }, { "x": -7.48299239999983, "y": -0.4279391999999689 }, { "x": -7.609992399999783, "y": -0.3009391999999025 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": -7.609814599999822, "y": 0.9609251800001175 }, { "x": -7.699574980345119, "y": 0.9980804016717002 }, { "x": -7.736814599999889, "y": 1.0878058000000692 }, { "x": -7.736814599999889, "y": 1.0878058000000692 }, { "x": -7.736869811946804, "y": 1.0952491790468457 }, { "x": -7.73688825999966, "y": 1.1026927399999522 }, { "x": -7.73688825999966, "y": 1.1026927399999522 }, { "x": -7.718333560021847, "y": 1.338452556736911 }, { "x": -7.663126338381289, "y": 1.568407184343755 }, { "x": -7.5726259800970865, "y": 1.7868943767133487 }, { "x": -7.449060904343469, "y": 1.9885342540517286 }, { "x": -7.295473693374902, "y": 2.168361773375068 }, { "x": -7.115646174051562, "y": 2.321948984343635 }, { "x": -6.914006296713183, "y": 2.4455140600973664 }, { "x": -6.695519104343475, "y": 2.5360144183814555 }, { "x": -6.465564476736745, "y": 2.591221640022127 }, { "x": -6.229804659999786, "y": 2.6097763399999394 }, { "x": -6.229804659999786, "y": 2.609776340000053 }, { "x": -5.996955979977201, "y": 2.591679977134959 }, { "x": -5.769699205109873, "y": 2.53782513135468 }, { "x": -5.553491976200917, "y": 2.4495051432163564 }, { "x": -5.353526575836099, "y": 2.328841044188721 }, { "x": -5.174605234131377, "y": 2.1787306194351004 }, { "x": -5.021024801711519, "y": 2.0027788166169103 }, { "x": -4.8964735595315005, "y": 1.8052111719769073 }, { "x": -4.803942643683627, "y": 1.5907723327954955 }, { "x": -4.745654212350701, "y": 1.3646121132387634 }, { "x": -4.723008079999886, "y": 1.1321618200000785 }, { "x": -4.722952199999781, "y": 1.1282603800000288 }, { "x": -4.76014963878913, "y": 1.0384578187893112 }, { "x": -4.849952199999848, "y": 1.0012603799999624 }, { "x": -4.849952199999848, "y": 1.0012603799999624 }, { "x": -4.939712580345258, "y": 1.0384156016715451 }, { "x": -4.9769521999998005, "y": 1.1281410000000278 }, { "x": -4.9769521999998005, "y": 1.1281410000000278 }, { "x": -5.004122838766989, "y": 1.3699899384758965 }, { "x": -5.077529990046173, "y": 1.6020255883100845 }, { "x": -5.19440474590067, "y": 1.8154955957979837 }, { "x": -5.350338606157493, "y": 2.0023479007833203 }, { "x": -5.5394497664455, "y": 2.155534459291175 }, { "x": -5.754604979069541, "y": 2.26927709480492 }, { "x": -5.987688618160746, "y": 2.3392854503127865 }, { "x": -6.229908799999748, "y": 2.362918820000118 }, { "x": -6.229908799999748, "y": 2.362918820000118 }, { "x": -6.4743747696252285, "y": 2.3388410235786523 }, { "x": -6.709446049135977, "y": 2.2675329305276364 }, { "x": -6.926088981090061, "y": 2.151734870873156 }, { "x": -7.115978099107224, "y": 1.9958968991074926 }, { "x": -7.271816070872887, "y": 1.8060077810903294 }, { "x": -7.387614130527481, "y": 1.5893648491362455 }, { "x": -7.458922223578497, "y": 1.3542935696254972 }, { "x": -7.483000019999849, "y": 1.109827600000017 }, { "x": -7.483000019999849, "y": 1.1098174400001426 }, { "x": -7.482966496728977, "y": 1.1007900421172963 }, { "x": -7.4828679399996645, "y": 1.091763119999996 }, { "x": -7.482829839999795, "y": 1.0907623599999852 }, { "x": -7.482831108161577, "y": 1.0907839501081753 }, { "x": -7.482832379999763, "y": 1.0908055400000194 }, { "x": -7.482804439999768, "y": 1.090140060000067 }, { "x": -7.48281459999987, "y": 1.0879251800000702 }, { "x": -7.520012038788991, "y": 0.9981226187893526 }, { "x": -7.609814599999822, "y": 0.9609251800001175 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": 4.950231400000121, "y": -1.834845200000018 }, { "x": 7.710246200000142, "y": -1.834845200000018 }, { "x": 7.58324620000019, "y": -1.9618451999999706 }, { "x": 7.710246200000142, "y": -2.088845200000037 }, { "x": 4.950231400000121, "y": -2.088845200000037 }, { "x": 5.077231400000073, "y": -1.9618451999999706 }, { "x": 4.950231400000121, "y": -1.834845200000018 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": 4.823231400000054, "y": -2.549906000000078 }, { "x": 4.823231400000054, "y": 1.0800842000001012 }, { "x": 4.950231400000121, "y": 0.9530842000000348 }, { "x": 5.077231400000073, "y": 1.0800842000001012 }, { "x": 5.077231400000073, "y": -2.549906000000078 }, { "x": 4.950231400000121, "y": -2.4229060000000118 }, { "x": 4.823231400000054, "y": -2.549906000000078 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": 4.950231400000121, "y": -2.4229060000000118 }, { "x": 7.58324620000019, "y": -2.4229060000000118 }, { "x": 7.58324620000019, "y": 1.1200891999999385 }, { "x": 7.710246200000142, "y": 0.9930891999999858 }, { "x": 7.837246200000209, "y": 1.1200891999999385 }, { "x": 7.837246200000209, "y": -2.549906000000078 }, { "x": 7.80004876121086, "y": -2.639708561210682 }, { "x": 7.710246200000142, "y": -2.676906000000031 }, { "x": 4.950231400000121, "y": -2.676906000000031 }, { "x": 5.077231400000073, "y": -2.549906000000078 }, { "x": 4.950231400000121, "y": -2.4229060000000118 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": 4.950231400000121, "y": -0.31084520000001703 }, { "x": 7.710246200000142, "y": -0.31084520000001703 }, { "x": 7.58324620000019, "y": -0.43784519999996974 }, { "x": 7.710246200000142, "y": -0.5648452000000361 }, { "x": 4.950231400000121, "y": -0.5648452000000361 }, { "x": 5.077231400000073, "y": -0.43784519999996974 }, { "x": 4.950231400000121, "y": -0.31084520000001703 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": 5.077409200000261, "y": 1.0780268000000888 }, { "x": 5.040211761210912, "y": 0.9882242387893712 }, { "x": 4.950409200000195, "y": 0.9510268000001361 }, { "x": 4.950409200000195, "y": 0.9510268000001361 }, { "x": 4.860651510262869, "y": 0.9881793262890142 }, { "x": 4.823409200000242, "y": 1.0778997999999547 }, { "x": 4.823409200000242, "y": 1.0778997999999547 }, { "x": 4.823352724309416, "y": 1.0853419059263842 }, { "x": 4.823333000000275, "y": 1.0927841999999828 }, { "x": 4.823333000000275, "y": 1.0927841999999828 }, { "x": 4.841887699978088, "y": 1.3285440167369416 }, { "x": 4.8970949216186455, "y": 1.558498644343672 }, { "x": 4.987595279902848, "y": 1.7769858367133793 }, { "x": 5.111160355656239, "y": 1.9786257140518728 }, { "x": 5.264747566625033, "y": 2.1584532333750985 }, { "x": 5.444575085948145, "y": 2.312040444343893 }, { "x": 5.646214963286752, "y": 2.4356055200972833 }, { "x": 5.86470215565646, "y": 2.5261058783817134 }, { "x": 6.094656783263304, "y": 2.581313100022271 }, { "x": 6.330416600000149, "y": 2.5998678000000837 }, { "x": 6.330424220000168, "y": 2.5998678000000837 }, { "x": 6.563273391010966, "y": 2.5817713448188897 }, { "x": 6.790530618906246, "y": 2.5279162568525635 }, { "x": 7.006738228790709, "y": 2.4395958879753152 }, { "x": 7.20670390684586, "y": 2.3189312878206465 }, { "x": 7.385625395862235, "y": 2.168820265911222 }, { "x": 7.53920582340163, "y": 1.9928677995822 }, { "x": 7.66375689294, "y": 1.7952994589822993 }, { "x": 7.756287459809073, "y": 1.5808599282855766 }, { "x": 7.814575364755683, "y": 1.3546990601685138 }, { "x": 7.837220800000068, "y": 1.1222481999999445 }, { "x": 7.837271600000122, "y": 1.1183620000000474 }, { "x": 7.800074161210887, "y": 1.028559438789216 }, { "x": 7.7102716000000555, "y": 0.991361999999981 }, { "x": 7.7102716000000555, "y": 0.991361999999981 }, { "x": 7.620513910262844, "y": 1.0285145262889728 }, { "x": 7.583271600000103, "y": 1.118235000000027 }, { "x": 7.583271600000103, "y": 1.118235000000027 }, { "x": 7.5561011078305, "y": 1.3600824518672425 }, { "x": 7.482694390301845, "y": 1.592116672276802 }, { "x": 7.365820338676826, "y": 1.8055853624310885 }, { "x": 7.209887426066871, "y": 1.9924365127736792 }, { "x": 7.020777420433092, "y": 2.1456221236793453 }, { "x": 6.805623525110718, "y": 2.2593640550284135 }, { "x": 6.572541315362628, "y": 2.329371976854304 }, { "x": 6.3303226200001745, "y": 2.353005200000098 }, { "x": 6.330315000000155, "y": 2.353005200000098 }, { "x": 6.085850516962978, "y": 2.3289275499947735 }, { "x": 5.85078066691176, "y": 2.257619890565593 }, { "x": 5.634139052355067, "y": 2.1418225350746525 }, { "x": 5.444251089046361, "y": 1.9859855109536966 }, { "x": 5.288414064925405, "y": 1.7960975476449903 }, { "x": 5.172616709434465, "y": 1.5794559330884113 }, { "x": 5.101309050005511, "y": 1.3443860830370795 }, { "x": 5.077231400000073, "y": 1.0999215999999024 }, { "x": 5.077231400000073, "y": 1.0997031600001037 }, { "x": 5.077263147135341, "y": 1.0907824539689273 }, { "x": 5.077358400000207, "y": 1.081862200000046 }, { "x": 5.077409200000261, "y": 1.0780268000000888 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": 5.077358400000207, "y": 1.0816082000000051 }, { "x": 5.077409200000261, "y": 1.0802366000000347 }, { "x": 5.077410473076839, "y": 1.0802086601399878 }, { "x": 5.077411740000343, "y": 1.080180720000044 }, { "x": 5.077358400000207, "y": 1.0816082000000051 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": -4.72296743999982, "y": 1.1310975600000575 }, { "x": -4.722968708161375, "y": 1.1311191501082476 }, { "x": -4.722969979999675, "y": 1.1311407400000917 }, { "x": -4.72294203999968, "y": 1.1304752600000256 }, { "x": -4.72296743999982, "y": 1.1310975600000575 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("courtyardoutline", { outline: [{ "x": -13.200062999999886, "y": 5.249990000000025 }, { "x": 13.200063, "y": 5.249990000000025 }, { "x": 13.200063, "y": -5.249990000000025 }, { "x": -13.200062999999886, "y": -5.249990000000025 }, { "x": -13.200062999999886, "y": 5.249990000000025 }] })] }), cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2902340.obj?uuid=b7c4af856efc4d488adee17cddcf4126",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2902340.step?uuid=b7c4af856efc4d488adee17cddcf4126",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0.000012699999842880061, y: 0, z: -3.75 },
}, ...props }));
};
const pinLabels$1 = {
pin1: ["pin1"],
pin2: ["pin2"],
pin3: ["pin3"],
pin4: ["pin4"]
};
const A_1TS026A_1600_0553_CT = (props) => {
const { name = "SW1", ...restProps } = props;
return (jsx("pushbutton", { name: name, pinLabels: pinLabels$1, supplierPartNumbers: {
"jlcpcb": [
"C913784"
]
}, manufacturerPartNumber: "1TS026A-1600-0553-CT", footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin1"], pcbX: "-1.324991mm", pcbY: "0.375031mm", width: "0.5500116mm", height: "0.5500116mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin3"], pcbX: "1.324991mm", pcbY: "0.375031mm", width: "0.5500116mm", height: "0.5500116mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin2"], pcbX: "-1.324991mm", pcbY: "-0.375031mm", width: "0.5500116mm", height: "0.5500116mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin4"], pcbX: "1.324991mm", pcbY: "-0.375031mm", width: "0.5500116mm", height: "0.5500116mm", shape: "rect" }), jsx("silkscreenpath", { route: [{ "x": -0.874928399999817, "y": 0.8000491999999895 }, { "x": 0.8749538000001849, "y": 0.8000491999999895 }] }), jsx("silkscreenpath", { route: [{ "x": -0.874928399999817, "y": -0.7999475999999959 }, { "x": 0.8749538000001849, "y": -0.7999475999999959 }] }), jsx("silkscreencircle", { pcbX: "0.000127mm", pcbY: "0.000127mm", radius: "0.381mm" }), jsx("silkscreentext", { text: "{NAME}", pcbX: "0.004191mm", pcbY: "1.832231mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("courtyardoutline", { outline: [{ "x": -1.8499967999999853, "y": 1.0499984000000495 }, { "x": 1.849996800000099, "y": 1.0499984000000495 }, { "x": 1.849996800000099, "y": -1.0499983999999358 }, { "x": -1.8499967999999853, "y": -1.0499983999999358 }, { "x": -1.8499967999999853, "y": 1.0499984000000495 }] })] }), cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C913784.obj?uuid=df61dab2ec6b48a78c606e3739a9ccb7",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C913784.step?uuid=df61dab2ec6b48a78c606e3739a9ccb7",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0, y: 0, z: -0.05 },
}, ...restProps }));
};
const pinLabels = {
pin1: ["cathode", "neg"],
pin2: ["anode", "pos"]
};
const XL_1608SURC_06 = (props) => {
const { name = "LED1", ...restProps } = props;
return (jsx("led", { name: name, pinLabels: pinLabels, supplierPartNumbers: {
"jlcpcb": [
"C965799"
]
}, manufacturerPartNumber: "XL-1608SURC-06", footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin1", "cathode", "neg"], pcbX: "-0.7489952mm", pcbY: "-0.003429mm", width: "0.7999984mm", height: "0.7999984mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin2", "anode", "pos"], pcbX: "0.7489952mm", pcbY: "0.003429mm", width: "0.7999984mm", height: "0.7999984mm", shape: "rect" }), jsx("silkscreenpath", { route: [{ "x": 0.2203958000000057, "y": -0.3235452000000123 }, { "x": 0.21048979999989115, "y": -0.3235452000000123 }, { "x": -0.11960860000010598, "y": 0.006477000000018052 }] }), jsx("silkscreenpath", { route: [{ "x": 0.2203958000000057, "y": 0.3564890000001242 }, { "x": 0.2203958000000057, "y": 0.3464814000001297 }, { "x": -0.11960860000010598, "y": 0.006477000000018052 }] }), jsx("silkscreenpath", { route: [{ "x": 0.2203958000000057, "y": 0.3564890000001242 }, { "x": 0.2203958000000057, "y": -0.3235452000000123 }] }), jsx("silkscreenpath", { route: [{ "x": 0.24043639999990774, "y": 0.7565136000000621 }, { "x": 1.3904975999998896, "y": 0.7565136000000621 }] }), jsx("silkscreenpath", { route: [{ "x": 0.24043639999990774, "y": -0.7436103999999659 }, { "x": 1.3904975999998896, "y": -0.7436103999999659 }] }), jsx("silkscreenpath", { route: [{ "x": 1.3904975999998896, "y": 0.7564628000000084 }, { "x": 1.3904975999998896, "y": -0.7235189999998966 }] }), jsx("silkscreenpath", { route: [{ "x": -0.13957299999992756, "y": -0.7458963999999924 }, { "x": -1.189685200000099, "y": -0.7458963999999924 }] }), jsx("silkscreenpath", { route: [{ "x": -1.4896337999999787, "y": -0.345795599999974 }, { "x": -1.4896337999999787, "y": -0.4458207999998649 }, { "x": -1.189685200000099, "y": -0.7458963999999924 }] }), jsx("silkscreenpath", { route: [{ "x": -1.4896337999999787, "y": 0.3541268000000173 }, { "x": -1.4896337999999787, "y": -0.345795599999974 }] }), jsx("silkscreenpath", { route: [{ "x": -1.4896337999999787, "y": 0.3541268000000173 }, { "x": -1.4896337999999787, "y": 0.4542790000000423 }, { "x": -1.189685200000099, "y": 0.7542276000000356 }] }), jsx("silkscreenpath", { route: [{ "x": -0.13957299999992756, "y": 0.7542276000000356 }, { "x": -1.189685200000099, "y": 0.7542276000000356 }] }), jsx("silkscreenpath", { route: [{ "x": 0.2203958000000057, "y": 0.006477000000018052 }, { "x": -0.11960860000010598, "y": 0.006477000000018052 }] }), jsx("silkscreentext", { text: "{NAME}", pcbX: "-0.0653542mm", pcbY: "1.768477mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("fabricationnotepath", { route: [{ "x": 0.5289295999998558, "y": 0.06832600000007005 }, { "x": 1.068933599999923, "y": 0.06832600000007005 }, { "x": 1.068933599999923, "y": -0.061671199999977944 }, { "x": 0.5289295999998558, "y": -0.061671199999977944 }, { "x": 0.5289295999998558, "y": 0.06832600000007005 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": 0.7345679999999675, "y": -0.2671318000000156 }, { "x": 0.7345679999999675, "y": 0.27287220000005163 }, { "x": 0.8645397999999886, "y": 0.27287220000005163 }, { "x": 0.8645397999999886, "y": -0.2671318000000156 }, { "x": 0.7345679999999675, "y": -0.2671318000000156 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": -1.0700004000000263, "y": 0.06146800000010444 }, { "x": -0.5299964000000728, "y": 0.06146800000010444 }, { "x": -0.5299964000000728, "y": -0.06852919999994356 }, { "x": -1.0700004000000263, "y": -0.06852919999994356 }, { "x": -1.0700004000000263, "y": 0.06146800000010444 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("courtyardoutline", { outline: [{ "x": -1.398994400000106, "y": 0.6534282000000076 }, { "x": 1.3989943999999923, "y": 0.6534282000000076 }, { "x": 1.3989943999999923, "y": -0.6534282000000076 }, { "x": -1.398994400000106, "y": -0.6534282000000076 }, { "x": -1.398994400000106, "y": 0.6534282000000076 }] })] }), cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C965799.obj?uuid=d0740cb8891c49a88b6949cb978926f3",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C965799.step?uuid=d0740cb8891c49a88b6949cb978926f3",
pcbRotationOffset: 0,
modelOriginPosition: { x: -12700000070253736e-21, y: 0.00005079999993995443, z: -0.01 },
}, ...restProps }));
};
// Native outline: 34 mm circle with a flat above the battery, leaving room for
// the enclosure's keyring eye. Rounded coordinates avoid scientific notation.
const outline = Array.from({ length: 128 }, (_, i) => {
const a = i * Math.PI / 64;
return { x: +(17 * Math.cos(a)).toFixed(5), y: +Math.min(10.7, 17 * Math.sin(a)).toFixed(5) };
}).filter((p, i, a) => i === 0 || p.x !== a[i - 1].x || p.y !== a[i - 1].y);
const loc = (pcbX, pcbY, schX, schY, schSectionName) => ({ pcbX: `${pcbX}mm`, pcbY: `${pcbY}mm`, schX: schX * 0.45, schY: schY * 0.45, schSectionName, schSheetName: "main" });
const grounds = [1, 7, 14, 16, 18, 21, 23, 24, 25, 31];
const used = [...grounds, 13, 20, 22, 26, 28, 30, 32, 34, 36, 38];
const nets = {
VBAT: ["BT1.pin1", "BT1.pin2", "U1.pin26", "C1.pin1", "C2.pin1", "R4.pin1", "R5.pin1", "TP1.pin1"],
GND: ["BT1.pin3", ...grounds.map(p => `U1.pin${p}`), "C1.pin2", "C2.pin2", "LED1.pin1", "SW1.pin3", "SW1.pin4", "TP2.pin1"],
PIEZO_A: ["U1.pin34", "R1.pin1"], PIEZO_A_OUT: ["R1.pin2", "BZ1.pin1"],
PIEZO_B: ["U1.pin36", "R2.pin1"], PIEZO_B_OUT: ["R2.pin2", "BZ1.pin2"],
STATUS: ["U1.pin32", "R3.pin1"], LED_A: ["R3.pin2", "LED1.pin2"],
PAIR_N: ["U1.pin38", "R4.pin2", "SW1.pin1", "SW1.pin2"],
RESET_N: ["U1.pin13", "R5.pin2", "TP5.pin1"],
SWDIO: ["U1.pin28", "TP3.pin1"], SWDCLK: ["U1.pin30", "TP4.pin1"],
};
const pt = (x, y) => ({ x, y });
const down = (x, y) => ({ x, y, via: true, fromLayer: "top", toLayer: "bottom" });
const up = (x, y) => ({ x, y, via: true, fromLayer: "bottom", toLayer: "top" });
const manualRoutes = [
["PIEZO_A_DRIVE", ".U1 > .pin34", ".R1 > .pin1", [0, -10.7], [pt(1.950085, -5.6), pt(0.975, -4.5)]],
["PIEZO_B_DRIVE", ".U1 > .pin36", ".R2 > .pin1", [0, -10.7], [pt(1.300099, -5.95), pt(-2.325, -5.95), pt(-2.325, -4.5)]],
["LED_DRIVE", ".U1 > .pin32", ".R3 > .pin1", [0, -10.7], [pt(2.600071, -5.4), pt(4.275, -5.4), pt(5.175, -4.5)]],
["LED_LIMITED", ".R3 > .pin2", ".LED1 > .pin2", [6, -4.5], [pt(10.75, -4.5), pt(10.75, -1)]],
["PIEZO_A_LEAD", ".R1 > .pin2", ".BZ1 > .pin1", [1.8, -4.5], [pt(2.625, -2.8), pt(-8.5, -2.8), pt(-8.5, 2)]],
["PIEZO_B_LEAD", ".R2 > .pin2", ".BZ1 > .pin2", [-1.5, -4.5], [down(-0.675, -5.5), pt(-5.5, -5.5), up(-5.5, 2)]],
["PAIR_SIGNAL", ".U1 > .pin38", ".R4 > .pin2", [0, -10.7], [down(0.650113, -6.35), pt(8, -6.35), up(8, 3), pt(6.825, 3)]],
["PAIR_SWITCH", ".R4 > .pin2", ".SW1 > .pin1", [6, 3], [pt(7.5, 4.375031), pt(8.675009, 4.375031)]],
["PAIR_CONTACTS", ".SW1 > .pin1", ".SW1 > .pin2", [10, 4], [pt(8.675009, 3.624969)]],
["RESET_PAD", ".R5 > .pin2", ".TP5 > .pin1", [-6, -6.5], [down(-5.175, -6.5), pt(-5.175, -6), pt(-14, -6), pt(-14, 7.8), pt(3, 7.8), up(3, 5)]],
["SWD_DATA", ".U1 > .pin28", ".TP3 > .pin1", [0, -10.7], [pt(13.7, -8.749915), pt(13.7, 7), pt(-3, 7), pt(-3, 5)]],
["SWD_CLOCK", ".U1 > .pin30", ".TP4 > .pin1", [0, -10.7], [pt(4.5, -8.099929), pt(4.5, -6.2), pt(12.8, -6.2), pt(12.8, 6.3), pt(0, 6.3), pt(0, 5)]],
];
function KeyFinderBoard() {
return jsxs("board", { title: "Key Finder", outline: outline, width: 34, height: 34, thickness: 1, layers: 4, isViaInPadAllowed: true, doubleSidedAssembly: true, solderMaskColor: "black", schTraceAutoLabelEnabled: true, autorouter: { local: true, algorithmFn: manualRouting, traceClearance: 0.15, allowViaInPad: true }, minTraceWidth: 0.15, minBoardEdgeClearance: 0.3, minViaHoleDiameter: 0.2, minViaPadDiameter: 0.4, minViaEdgeToPadEdgeClearance: 0.15, children: [jsxs("schematicsheet", { name: "main", displayName: "KEY FINDER \u2022 CR2032 / BLE / PIEZO", children: [jsx("schematicsection", { name: "power", displayName: " " }), jsx("schematicsection", { name: "radio", displayName: " " }), jsx("schematicsection", { name: "alert", displayName: " " }), jsx("schematictext", { text: "POWER / CR2032", schX: -9, schY: 8, fontSize: 0.3 }), jsx("schematictext", { text: "BLE / PROGRAMMING", schX: 0, schY: 8, fontSize: 0.3 }), jsx("schematictext", { text: "ALERT / PAIR", schX: 9, schY: 8, fontSize: 0.3 })] }), jsxs(ISP1807_LR_RS, { name: "U1", ...loc(0, -10.7, 0, 0, "radio"), schWidth: 5, schHeight: 12, noConnect: Array.from({ length: 78 }, (_, i) => i + 1).filter(p => !used.includes(p)).map(p => `pin${p}`), children: [jsx("silkscreentext", { text: "KEY FINDER", pcbX: 0, pcbY: 19.3, fontSize: 0.85 }), jsx("silkscreentext", { text: "ANTENNA - KEEP CLEAR", pcbX: 0, pcbY: -4.8, fontSize: 0.55 }), jsx("silkscreentext", { text: "PAIR", pcbX: 10, pcbY: 17.3, fontSize: 0.6 }), ['VREF', 'GND', 'DIO', 'CLK', 'RST'].map((text, i) => jsx(Fragment, { children: jsx("silkscreentext", { text: text, pcbX: -9 + i * 3, pcbY: 17.6, fontSize: 0.5 }) }, text))] }), jsx(MY_2032_16, { name: "BT1", layer: "bottom", ...loc(0, 0, -22, 12, "power") }), jsx("capacitor", { name: "C1", capacitance: "100nF", footprint: "0603", manufacturerPartNumber: "CL10B104KB8NNNC", ...loc(6.5, -7.8, -20, 7, "power") }), jsx("capacitor", { name: "C2", capacitance: "10uF", footprint: "0805", manufacturerPartNumber: "CL21A106KPFNNNE", ...loc(10.2, -7.6, -16, 7, "power") }), jsx("resistor", { name: "R1", resistance: "1k", footprint: "0603", manufacturerPartNumber: "RC0603FR-071KL", ...loc(1.8, -4.5, 17, 8, "alert") }), jsx("resistor", { name: "R2", resistance: "1k", footprint: "0603", manufacturerPartNumber: "RC0603FR-071KL", ...loc(-1.5, -4.5, 17, 4, "alert") }), jsx("resistor", { name: "R3", resistance: "3.3k", footprint: "0603", manufacturerPartNumber: "RC0603FR-073K3L", ...loc(6, -4.5, 17, -2, "alert") }), jsx("resistor", { name: "R4", resistance: "100k", footprint: "0603", manufacturerPartNumber: "RC0603FR-07100KL", ...loc(6, 3, 17, -8, "alert") }), jsx("resistor", { name: "R5", resistance: "100k", footprint: "0603", manufacturerPartNumber: "RC0603FR-07100KL", ...loc(-6, -6.5, -14, -5, "radio") }), jsx(XL_1608SURC_06, { name: "LED1", ...loc(10, -1, 22, -2, "alert") }), jsx(A_1TS026A_1600_0553_CT, { internallyConnectedPins: [["pin1", "pin2"], ["pin3", "pin4"]], name: "SW1", ...loc(10, 4, 22, -8, "alert") }), jsx("chip", { name: "BZ1", doNotPlace: true, manufacturerPartNumber: "AB1541B-LW100-R", pinLabels: { pin1: "PIEZO_A", pin2: "PIEZO_B" }, ...loc(-7, 2, 24, 6, "alert"), schWidth: 3, schHeight: 2, footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin1"], shape: "circle", radius: 0.8, pcbX: -1.5 }), jsx("smtpad", { portHints: ["pin2"], shape: "circle", radius: 0.8, pcbX: 1.5 }), jsx("courtyardoutline", { outline: [{ x: -2.5, y: -1 }, { x: 2.5, y: -1 }, { x: 2.5, y: 1 }, { x: -2.5, y: 1 }] }), jsx("silkscreentext", { text: "PIEZO A B", pcbY: 1.8, fontSize: 0.6 })] }) }), ['VTREF', 'GND', 'SWDIO', 'SWDCLK', 'RESET'].map((label, i) => jsx("testpoint", { name: `TP${i + 1}`, doNotPlace: true, footprintVariant: "pad", padDiameter: 1.2, ...loc(-9 + i * 3, 5, -12 + i * 3, -15, "radio") }, label)), Object.entries(nets).map(([name, pins]) => jsxs(Fragment, { children: [jsx("net", { name: name, isGroundNet: name === 'GND', isPowerNet: name === 'VBAT', nominalTraceWidth: 0.15 }), pins.map(pin => {
const selector = `.${pin.split('.')[0]} > .${pin.split('.')[1]}`;
const plane = name === 'GND' ? 'inner1' : name === 'VBAT' ? 'inner2' : undefined;
return jsx(Fragment, { children: jsx("trace", { from: selector, to: `net.${name}`, pcbPathRelativeTo: plane ? selector : undefined, pcbPath: plane ? [{ ...padOffsets[pin], via: true, fromLayer: pin.startsWith('BT1.') ? 'bottom' : 'top', toLayer: pin.startsWith('BT1.') ? 'top' : 'bottom' }] : undefined }) }, pin);
})] }, name)), jsx("trace", { name: "RESET_ESCAPE", from: ".U1 > .pin13", to: ".R5 > .pin2", pcbPathRelativeTo: ".U1 > .pin13", pcbPath: [{ x: -0.974979, y: 0.850011, via: true, fromLayer: "top", toLayer: "bottom" }, { x: -5.175, y: 0.850011 }, { x: -5.175, y: 4.2, via: true, fromLayer: "bottom", toLayer: "top" }], thickness: 0.15 }), manualRoutes.map(([name, from, to, origin, path]) => jsx(Fragment, { children: jsx("trace", { name: name, from: from, to: to, thickness: 0.15, pcbPath: path.map(p => ({ ...p, x: p.x - origin[0], y: p.y - origin[1] })) }) }, name)), jsx("trace", { name: "ANT_BRIDGE", from: ".U1 > .pin20", to: ".U1 > .pin22", pcbPath: [{ x: 1.300099, y: 0.200025 }, { x: 1.950085, y: 0.200025 }], thickness: 0.15 }), jsx("keepout", { shape: "rect", width: 18, height: 6.29, pcbX: 0, pcbY: -13.855, layers: ["top", "inner1", "inner2", "bottom"], excludeRefs: [".U1"] }), jsx("copperpour", { name: "POWER", layer: "inner2", connectsTo: "net.VBAT", unbroken: true, clearance: 0.15, boardEdgeMargin: 0.35 }), jsx("copperpour", { name: "GROUND", layer: "inner1", connectsTo: "net.GND", unbroken: true, clearance: 0.15, boardEdgeMargin: 0.35 })] });
}
// Lowercase wordmark outlines from Noto Sans Regular (SIL Open Font License).
// Coordinates in millimetres; no runtime font or network dependency.
const wordmarkContours = [[[-5.5744, -7.7826], [-5.6061, -7.7813], [-5.6363, -7.7775], [-5.6651, -7.771], [-5.6923, -7.762], [-5.7181, -7.7504], [-5.7424, -7.7363], [-5.7652, -7.7196], [-5.7865, -7.7002], [-5.8059, -7.6782], [-5.8226, -7.6535], [-5.8367, -7.6259], [-5.8483, -7.5955], [-5.8573, -7.5623], [-5.8638, -7.5264], [-5.8676, -7.4876], [-5.8689, -7.4461], [-5.8689, -6.3592], [-5.3255, -6.3592], [-5.3255, -6.1208], [-5.8689, -6.1208], [-5.8689, -5.6896], [-6.0512, -5.6896], [-6.1739, -6.0893], [-6.4439, -6.212], [-6.4439, -6.3592], [-6.1775, -6.3592], [-6.1775, -7.4531], [-6.1762, -7.5085], [-6.1726, -7.5607], [-6.1666, -7.6097], [-6.1582, -7.6555], [-6.1473, -7.6982], [-6.1341, -7.7377], [-6.1184, -7.774], [-6.1003, -7.8072], [-6.0803, -7.8375], [-6.0588, -7.8656], [-6.0358, -7.8912], [-6.0114, -7.9145], [-5.9854, -7.9355], [-5.958, -7.9541], [-5.9291, -7.9703], [-5.8987, -7.9842], [-5.8673, -7.9961], [-5.8351, -8.0065], [-5.8022, -8.0152], [-5.7686, -8.0224], [-5.7343, -8.0279], [-5.6992, -8.0319], [-5.6635, -8.0343], [-5.627, -8.0351], [-5.6059, -8.0348], [-5.5845, -8.0341], [-5.5629, -8.0328], [-5.5411, -8.0311], [-5.5191, -8.0289], [-5.4969, -8.0262], [-5.4744, -8.023], [-5.4517, -8.0193], [-5.4296, -8.0152], [-5.4088, -8.0108], [-5.3893, -8.0062], [-5.3711, -8.0013], [-5.3542, -7.9961], [-5.3387, -7.9907], [-5.3244, -7.985], [-5.3115, -7.979], [-5.3115, -7.7441], [-5.3233, -7.7475], [-5.336, -7.751], [-5.3496, -7.7543], [-5.3641, -7.7577], [-5.3794, -7.7609], [-5.3956, -7.7641], [-5.4127, -7.7673], [-5.4307, -7.7704], [-5.449, -7.7732], [-5.4673, -7.7757], [-5.4854, -7.7778], [-5.5034, -7.7796], [-5.5214, -7.7809], [-5.5392, -7.7819], [-5.5568, -7.7824], [-5.5744, -7.7826]], [[-3.7128, -7.4811], [-3.7138, -7.4442], [-3.7169, -7.4089], [-3.7222, -7.3752], [-3.7294, -7.3431], [-3.7388, -7.3125], [-3.7503, -7.2836], [-3.7638, -7.2562], [-3.7794, -7.2304], [-3.797, -7.2059], [-3.8164, -7.1824], [-3.8377, -7.1597], [-3.8609, -7.138], [-3.8859, -7.1172], [-3.9128, -7.0973], [-3.9416, -7.0784], [-3.9722, -7.0604], [-4.0046, -7.0429], [-4.0386, -7.0256], [-4.0743, -7.0083], [-4.1116, -6.9912], [-4.1505, -6.9741], [-4.1911, -6.9572], [-4.2334, -6.9404], [-4.2772, -6.9237], [-4.3208, -6.9065], [-4.3621, -6.8898], [-4.4012, -6.8738], [-4.4381, -6.8584], [-4.4727, -6.8436], [-4.505, -6.8293], [-4.5351, -6.8157], [-4.563, -6.8027], [-4.5887, -6.79], [-4.6126, -6.7771], [-4.6345, -6.7641], [-4.6546, -6.751], [-4.6727, -6.7378], [-4.6889, -6.7245], [-4.7031, -6.7111], [-4.7155, -6.6975], [-4.7262, -6.6836], [-4.7354, -6.669], [-4.7433, -6.6536], [-4.7497, -6.6375], [-4.7546, -6.6207], [-4.7582, -6.6032], [-4.7603, -6.585], [-4.7611, -6.5661], [-4.7595, -6.5405], [-4.7548, -6.5162], [-4.747, -6.4934], [-4.7361, -6.4719], [-4.722, -6.4517], [-4.7049, -6.433], [-4.6846, -6.4156], [-4.6611, -6.3995], [-4.6348, -6.3852], [-4.6056, -6.3727], [-4.5736, -6.3622], [-4.5389, -6.3535], [-4.5013, -6.3468], [-4.461, -6.342], [-4.4178, -6.3391], [-4.3719, -6.3382], [-4.3378, -6.3387], [-4.304, -6.3404], [-4.2703, -6.3431], [-4.2369, -6.347], [-4.2037, -6.3519], [-4.1707, -6.3579], [-4.138, -6.365], [-4.1054, -6.3732], [-4.0732, -6.3822], [-4.0412, -6.3917], [-4.0096, -6.4015], [-3.9784, -6.4118], [-3.9474, -6.4225], [-3.9168, -6.4337], [-3.8865, -6.4453], [-3.8565, -6.4574], [-3.7513, -6.212], [-3.7841, -6.1975], [-3.8174, -6.1838], [-3.8513, -6.171], [-3.8859, -6.1589], [-3.921, -6.1477], [-3.9568, -6.1374], [-3.9931, -6.1278], [-4.0301, -6.1191], [-4.0677, -6.1113], [-4.106, -6.1045], [-4.145, -6.0988], [-4.1848, -6.0941], [-4.2252, -6.0904], [-4.2664, -6.0878], [-4.3083, -6.0863], [-4.3509, -6.0858], [-4.4279, -6.0878], [-4.5011, -6.0939], [-4.5705, -6.104], [-4.6362, -6.1182], [-4.698, -6.1364], [-4.7561, -6.1587], [-4.8104, -6.1851], [-4.861, -6.2155], [-4.9066, -6.2496], [-4.9461, -6.2871], [-4.9795, -6.3281], [-5.0069, -6.3724], [-5.0282, -6.4201], [-5.0434, -6.4712], [-5.0525, -6.5257], [-5.0556, -6.5836], [-5.0545, -6.6213], [-5.0512, -6.6572], [-5.0457, -6.6914], [-5.038, -6.7238], [-5.0282, -6.7545], [-5.0161, -6.7834], [-5.0019, -6.8106], [-4.9854, -6.836], [-4.967, -6.8601], [-4.9467, -6.8834], [-4.9245, -6.9057], [-4.9004, -6.9272], [-4.8745, -6.9478], [-4.8467, -6.9675], [-4.8171, -6.9863], [-4.7856, -7.0043], [-4.7523, -7.0218], [-4.7175, -7.0394], [-4.6809, -7.0569], [-4.6427, -7.0744], [-4.6029, -7.092], [-4.5614, -7.1095], [-4.5183, -7.127], [-4.4736, -7.1446], [-4.4285, -7.1619], [-4.386, -7.1787], [-4.3463, -7.1952], [-4.3092, -7.2112], [-4.2749, -7.2267], [-4.2432, -7.2418], [-4.2142, -7.2565], [-4.1878, -7.2708], [-4.1638, -7.2848], [-4.1417, -7.2988], [-4.1215, -7.3128], [-4.1033, -7.3269], [-4.0869, -7.3409], [-4.0725, -7.3549], [-4.06, -7.3689], [-4.0494, -7.383], [-4.0403, -7.3972], [-4.0325, -7.4119], [-4.0259, -7.427], [-4.0204, -7.4426], [-4.0162, -7.4586], [-4.0132, -7.475], [-4.0114, -7.4919], [-4.0108, -7.5092], [-4.0124, -7.5399], [-4.0174, -7.5691], [-4.0256, -7.5967], [-4.0371, -7.6227], [-4.0519, -7.6471], [-4.07, -7.6699], [-4.0913, -7.6911], [-4.116, -7.7108], [-4.1443, -7.7284], [-4.1767, -7.7437], [-4.2131, -7.7567], [-4.2536, -7.7673], [-4.2981, -7.7755], [-4.3467, -7.7814], [-4.3993, -7.785], [-4.456, -7.7861], [-4.4972, -7.7854], [-4.5381, -7.7832], [-4.5789, -7.7795], [-4.6195, -7.7743], [-4.66, -7.7676], [-4.7003, -7.7595], [-4.7404, -7.7499], [-4.7803, -7.7388], [-4.8195, -7.7268], [-4.8571, -7.7146], [-4.8933, -7.7021], [-4.928, -7.6893], [-4.9613, -7.6762], [-4.993, -7.6629], [-5.0233, -7.6493], [-5.052, -7.6354], [-5.052, -7.9159], [-5.0244, -7.9295], [-4.9956, -7.9424], [-4.9659, -7.9545], [-4.935, -7.9658], [-4.9032, -7.9764], [-4.8703, -7.9862], [-4.8364, -7.9952], [-4.8014, -8.0035], [-4.765, -8.0109], [-4.727, -8.0173], [-4.6872, -8.0227], [-4.6458, -8.0272], [-4.6027, -8.0306], [-4.5578, -8.0331], [-4.5113, -8.0346], [-4.4631, -8.0351], [-4.3793, -8.0329], [-4.3, -8.0263], [-4.2251, -8.0153], [-4.1545, -8], [-4.0884, -7.9803], [-4.0266, -7.9562], [-3.9692, -7.9277], [-3.9161, -7.8948], [-3.8685, -7.8577], [-3.8272, -7.8164], [-3.7922, -7.7709], [-3.7636, -7.7213], [-3.7414, -7.6675], [-3.7255, -7.6095], [-3.716, -7.5474], [-3.7128, -7.4811]], [[-2.5032, -8.0351], [-2.4637, -8.0346], [-2.4256, -8.0334], [-2.3889, -8.0314], [-2.3538, -8.0285], [-2.3201, -8.0248], [-2.288, -8.0203], [-2.2572, -8.0149], [-2.228, -8.0088], [-2.1998, -8.0018], [-2.1723, -7.9942], [-2.1453, -7.9858], [-2.1189, -7.9768], [-2.0931, -7.967], [-2.068, -7.9565], [-2.0434, -7.9453], [-2.0194, -7.9334], [-2.0194, -7.6599], [-2.0443, -7.6711], [-2.0697, -7.6818], [-2.0958, -7.6921], [-2.1224, -7.702], [-2.1497, -7.7114], [-2.1775, -7.7204], [-2.206, -7.7289], [-2.235, -7.7371], [-2.265, -7.7445], [-2.2961, -7.7509], [-2.3283, -7.7563], [-2.3617, -7.7607], [-2.3962, -7.7642], [-2.4319, -7.7666], [-2.4688, -7.7681], [-2.5067, -7.7686], [-2.5713, -7.7658], [-2.6318, -7.7573], [-2.6881, -7.7432], [-2.7403, -7.7235], [-2.7884, -7.6981], [-2.8325, -7.667], [-2.8724, -7.6304], [-2.9082, -7.5881], [-2.9398, -7.5404], [-2.9672, -7.4878], [-2.9904, -7.4302], [-3.0094, -7.3676], [-3.0242, -7.3], [-3.0347, -7.2275], [-3.041, -7.1499], [-3.0431, -7.0674], [-3.0345, -6.9006], [-3.0085, -6.7561], [-2.9653, -6.6337], [-2.9047, -6.5336], [-2.8268, -6.4558], [-2.7316, -6.4002], [-2.619, -6.3668], [-2.4892, -6.3557], [-2.4645, -6.3562], [-2.4393, -6.3575], [-2.4136, -6.3597], [-2.3875, -6.3627], [-2.361, -6.3667], [-2.3341, -6.3715], [-2.3067, -6.3772], [-2.2789, -6.3838], [-2.2512, -6.3908], [-2.2245, -6.398], [-2.1987, -6.4053], [-2.1737, -6.4127], [-2.1496, -6.4202], [-2.1263, -6.4278], [-2.104, -6.4355], [-2.0825, -6.4434], [-1.9879, -6.1874], [-2.0097, -6.1771], [-2.033, -6.1672], [-2.0579, -6.1576], [-2.0843, -6.1484], [-2.1122, -6.1396], [-2.1417, -6.1312], [-2.1727, -6.1232], [-2.2052, -6.1156], [-2.2387, -6.1086], [-2.2725, -6.1025], [-2.3066, -6.0974], [-2.3411, -6.0932], [-2.3759, -6.09], [-2.411, -6.0876], [-2.4464, -6.0862], [-2.4822, -6.0858], [-2.5445, -6.0873], [-2.605, -6.0921], [-2.6639, -6.1001], [-2.721, -6.1112], [-2.7765, -6.1255], [-2.8303, -6.143], [-2.8823, -6.1636], [-2.9327, -6.1874], [-2.9809, -6.2147], [-3.0266, -6.2455], [-3.0697, -6.28], [-3.1102, -6.318], [-3.1481, -6.3597], [-3.1835, -6.405], [-3.2163, -6.4539], [-3.2465, -6.5065], [-3.2736, -6.5628], [-3.2971, -6.6233], [-3.317, -6.6877], [-3.3333, -6.7563], [-3.3459, -6.8289], [-3.355, -6.9055], [-3.3604, -6.9862], [-3.3622, -7.0709], [-3.3605, -7.1523], [-3.3553, -7.23], [-3.3467, -7.304], [-3.3346, -7.3742], [-3.3191, -7.4407], [-3.3001, -7.5035], [-3.2776, -7.5625], [-3.2518, -7.6179], [-3.2228, -7.6696], [-3.1913, -7.7178], [-3.1571, -7.7625], [-3.1203, -7.8037], [-3.0808, -7.8414], [-3.0388, -7.8755], [-2.9941, -7.9062], [-2.9467, -7.9334], [-2.8972, -7.9572], [-2.8461, -7.9779], [-2.7932, -7.9953], [-2.7386, -8.0096], [-2.6823, -8.0208], [-2.6243, -8.0287], [-2.5646, -8.0335], [-2.5032, -8.0351]], [[-1.4164, -5.4161], [-1.4353, -5.4169], [-1.4534, -5.4191], [-1.4708, -5.4228], [-1.4874, -5.428], [-1.5032, -5.4346], [-1.5183, -5.4428], [-1.5326, -5.4524], [-1.5461, -5.4635], [-1.5584, -5.4761], [-1.5691, -5.4905], [-1.5782, -5.5066], [-1.5856, -5.5244], [-1.5913, -5.5438], [-1.5954, -5.565], [-1.5979, -5.5879], [-1.5987, -5.6125], [-1.5979, -5.6362], [-1.5954, -5.6585], [-1.5913, -5.6792], [-1.5856, -5.6984], [-1.5782, -5.716], [-1.5691, -5.7321], [-1.5584, -5.7467], [-1.5461, -5.7597], [-1.5326, -5.7712], [-1.5183, -5.7812], [-1.5032, -5.7896], [-1.4874, -5.7965], [-1.4708, -5.8019], [-1.4534, -5.8057], [-1.4353, -5.808], [-1.4164, -5.8088], [-1.3991, -5.808], [-1.3823, -5.8057], [-1.366, -5.8019], [-1.3502, -5.7965], [-1.3349, -5.7896], [-1.3201, -5.7812], [-1.3058, -5.7712], [-1.2919, -5.7597], [-1.2792, -5.7467], [-1.2682, -5.7321], [-1.2588, -5.716], [-1.2512, -5.6984], [-1.2452, -5.6792], [-1.241, -5.6585], [-1.2384, -5.6362], [-1.2376, -5.6125], [-1.2384, -5.5879], [-1.241, -5.565], [-1.2452, -5.5438], [-1.2512, -5.5244], [-1.2588, -5.5066], [-1.2682, -5.4905], [-1.2792, -5.4761], [-1.2919, -5.4635], [-1.3058, -5.4524], [-1.3201, -5.4428], [-1.3349, -5.4346], [-1.3502, -5.428], [-1.366, -5.4228], [-1.3823, -5.4191], [-1.3991, -5.4169], [-1.4164, -5.4161]], [[-1.5742, -6.1208], [-1.5742, -8], [-1.2656, -8], [-1.2656, -6.1208]], [[0.2069, -6.0858], [0.1586, -6.0875], [0.112, -6.0928], [0.067, -6.1015], [0.0237, -6.1138], [-0.018, -6.1296], [-0.0581, -6.1489], [-0.0965, -6.1717], [-0.1332, -6.198], [-0.1683, -6.2267], [-0.2018, -6.2567], [-0.2336, -6.288], [-0.2638, -6.3207], [-0.2924, -6.3546], [-0.3193, -6.3899], [-0.3445, -6.4265], [-0.3681, -6.4644], [-0.3821, -6.4644], [-0.4172, -6.1208], [-0.6696, -6.1208], [-0.6696, -8], [-0.3611, -8], [-0.3611, -6.9973], [-0.3599, -6.9507], [-0.3564, -6.9056], [-0.3505, -6.862], [-0.3423, -6.8198], [-0.3317, -6.7791], [-0.3187, -6.7399], [-0.3034, -6.7022], [-0.2857, -6.666], [-0.2661, -6.6315], [-0.2449, -6.5989], [-0.2221, -6.5684], [-0.1976, -6.5398], [-0.1717, -6.5132], [-0.1441, -6.4885], [-0.1149, -6.4658], [-0.0841, -6.4451], [-0.0523, -6.4266], [-0.0199, -6.4106], [0.013, -6.397], [0.0465, -6.386], [0.0805, -6.3773], [0.115, -6.3712], [0.1502, -6.3675], [0.1858, -6.3662], [0.1982, -6.3663], [0.2107, -6.3667], [0.2234, -6.3672], [0.2362, -6.368], [0.2492, -6.369], [0.2624, -6.3702], [0.2757, -6.3716], [0.2892, -6.3732], [0.3027, -6.3751], [0.3159, -6.377], [0.3288, -6.379], [0.3414, -6.3811], [0.3537, -6.3834], [0.3658, -6.3857], [0.3776, -6.3882], [0.3892, -6.3908], [0.4277, -6.1068], [0.4161, -6.1042], [0.4039, -6.1019], [0.3913, -6.0996], [0.3782, -6.0976], [0.3646, -6.0957], [0.3505, -6.094], [0.3359, -6.0924], [0.3208, -6.091], [0.3056, -6.0898], [0.2907, -6.0887], [0.276, -6.0878], [0.2616, -6.0871], [0.2475, -6.0865], [0.2337, -6.0861], [0.2201, -6.0858], [0.2069, -6.0858]], [[1.5321, -8.0351], [1.5717, -8.0346], [1.6098, -8.0334], [1.6464, -8.0314], [1.6815, -8.0285], [1.7152, -8.0248], [1.7474, -8.0203], [1.7781, -8.0149], [1.8073, -8.0088], [1.8355, -8.0018], [1.8631, -7.9942], [1.8901, -7.9858], [1.9164, -7.9768], [1.9422, -7.967], [1.9674, -7.9565], [1.9919, -7.9453], [2.0159, -7.9334], [2.0159, -7.6599], [1.9911, -7.6711], [1.9656, -7.6818], [1.9396, -7.6921], [1.9129, -7.702], [1.8857, -7.7114], [1.8578, -7.7204], [1.8294, -7.7289], [1.8003, -7.7371], [1.7704, -7.7445], [1.7393, -7.7509], [1.707, -7.7563], [1.6736, -7.7607], [1.6391, -7.7642], [1.6034, -7.7666], [1.5666, -7.7681], [1.5286, -7.7686], [1.464, -7.7658], [1.4036, -7.7573], [1.3472, -7.7432], [1.295, -7.7235], [1.2469, -7.6981], [1.2029, -7.667], [1.163, -7.6304], [1.1272, -7.5881], [1.0955, -7.5404], [1.0681, -7.4878], [1.0449, -7.4302], [1.0259, -7.3676], [1.0112, -7.3], [1.0006, -7.2275], [0.9943, -7.1499], [0.9922, -7.0674], [1.0008, -6.9006], [1.0268, -6.7561], [1.0701, -6.6337], [1.1307, -6.5336], [1.2086, -6.4558], [1.3038, -6.4002], [1.4163, -6.3668], [1.5461, -6.3557], [1.5709, -6.3562], [1.5961, -6.3575], [1.6217, -6.3597], [1.6478, -6.3627], [1.6743, -6.3667], [1.7013, -6.3715], [1.7286, -6.3772], [1.7565, -6.3838], [1.7841, -6.3908], [1.8108, -6.398], [1.8367, -6.4053], [1.8617, -6.4127], [1.8858, -6.4202], [1.909, -6.4278], [1.9313, -6.4355], [1.9528, -6.4434], [2.0475, -6.1874], [2.0257, -6.1771], [2.0023, -6.1672], [1.9775, -6.1576], [1.9511, -6.1484], [1.9231, -6.1396], [1.8936, -6.1312], [1.8626, -6.1232], [1.8301, -6.1156], [1.7966, -6.1086], [1.7628, -6.1025], [1.7287, -6.0974], [1.6942, -6.0932], [1.6595, -6.09], [1.6243, -6.0876], [1.5889, -6.0862], [1.5531, -6.0858], [1.4909, -6.0873], [1.4303, -6.0921], [1.3714, -6.1001], [1.3143, -6.1112], [1.2588, -6.1255], [1.2051, -6.143], [1.153, -6.1636], [1.1026, -6.1874], [1.0544, -6.2147], [1.0087, -6.2455], [0.9656, -6.28], [0.9251, -6.318], [0.8872, -6.3597], [0.8518, -6.405], [0.819, -6.4539], [0.7888, -6.5065], [0.7617, -6.5628], [0.7382, -6.6233], [0.7183, -6.6877], [0.7021, -6.7563], [0.6894, -6.8289], [0.6804, -6.9055], [0.6749, -6.9862], [0.6731, -7.0709], [0.6749, -7.1523], [0.68, -7.23], [0.6887, -7.304], [0.7007, -7.3742], [0.7163, -7.4407], [0.7353, -7.5035], [0.7577, -7.5625], [0.7836, -7.6179], [0.8125, -7.6696], [0.8441, -7.7178], [0.8782, -7.7625], [0.915, -7.8037], [0.9545, -7.8414], [0.9966, -7.8755], [1.0413, -7.9062], [1.0886, -7.9334], [1.1381, -7.9572], [1.1893, -7.9779], [1.2422, -7.9953], [1.2968, -8.0096], [1.353, -8.0208], [1.411, -8.0287], [1.4707, -8.0335], [1.5321, -8.0351]], [[3.7233, -6.1208], [3.7233, -7.099], [3.7214, -7.179], [3.7157, -7.2541], [3.7063, -7.3245], [3.6931, -7.39], [3.6761, -7.4507], [3.6553, -7.5065], [3.6307, -7.5576], [3.6023, -7.6038], [3.5691, -7.6449], [3.5299, -7.6805], [3.4848, -7.7107], [3.4336, -7.7353], [3.3765, -7.7545], [3.3134, -7.7682], [3.2444, -7.7764], [3.1694, -7.7791], [3.0716, -7.7721], [2.9868, -7.7511], [2.9151, -7.716], [2.8565, -7.6669], [2.8108, -7.6038], [2.7782, -7.5267], [2.7587, -7.4355], [2.7522, -7.3304], [2.7522, -6.1208], [2.4401, -6.1208], [2.4401, -7.3514], [2.4428, -7.4378], [2.4509, -7.518], [2.4643, -7.5922], [2.4831, -7.6604], [2.5072, -7.7224], [2.5368, -7.7784], [2.5717, -7.8282], [2.6119, -7.872], [2.6575, -7.9102], [2.7083, -7.9434], [2.7644, -7.9714], [2.8258, -7.9943], [2.8924, -8.0121], [2.9643, -8.0249], [3.0414, -8.0325], [3.1238, -8.0351], [3.169, -8.034], [3.2136, -8.0308], [3.2576, -8.0254], [3.3008, -8.018], [3.3435, -8.0084], [3.3854, -7.9966], [3.4267, -7.9827], [3.4674, -7.9667], [3.5066, -7.9484], [3.5436, -7.9276], [3.5785, -7.9043], [3.6111, -7.8786], [3.6416, -7.8504], [3.6698, -7.8198], [3.6959, -7.7867], [3.7198, -7.7511], [3.7338, -7.7511], [3.7794, -8], [4.0318, -8], [4.0318, -6.1208]], [[4.7856, -5.4161], [4.7667, -5.4169], [4.7486, -5.4191], [4.7312, -5.4228], [4.7146, -5.428], [4.6988, -5.4346], [4.6837, -5.4428], [4.6694, -5.4524], [4.6559, -5.4635], [4.6436, -5.4761], [4.6329, -5.4905], [4.6238, -5.5066], [4.6164, -5.5244], [4.6107, -5.5438], [4.6066, -5.565], [4.6041, -5.5879], [4.6033, -5.6125], [4.6041, -5.6362], [4.6066, -5.6585], [4.6107, -5.6792], [4.6164, -5.6984], [4.6238, -5.716], [4.6329, -5.7321], [4.6436, -5.7467], [4.6559, -5.7597], [4.6694, -5.7712], [4.6837, -5.7812], [4.6988, -5.7896], [4.7146, -5.7965], [4.7312, -5.8019], [4.7486, -5.8057], [4.7667, -5.808], [4.7856, -5.8088], [4.8029, -5.808], [4.8197, -5.8057], [4.836, -5.8019], [4.8518, -5.7965], [4.8671, -5.7896], [4.8819, -5.7812], [4.8962, -5.7712], [4.9101, -5.7597], [4.9228, -5.7467], [4.9338, -5.7321], [4.9432, -5.716], [4.9508, -5.6984], [4.9568, -5.6792], [4.961, -5.6585], [4.9636, -5.6362], [4.9644, -5.6125], [4.9636, -5.5879], [4.961, -5.565], [4.9568, -5.5438], [4.9508, -5.5244], [4.9432, -5.5066], [4.9338, -5.4905], [4.9228, -5.4761], [4.9101, -5.4635], [4.8962, -5.4524], [4.8819, -5.4428], [4.8671, -5.4346], [4.8518, -5.428], [4.836, -5.4228], [4.8197, -5.4191], [4.8029, -5.4169], [4.7856, -5.4161]], [[4.6278, -6.1208], [4.6278, -8], [4.9364, -8], [4.9364, -6.1208]], [[6.1599, -7.7826], [6.1282, -7.7813], [6.098, -7.7775], [6.0693, -7.771], [6.042, -7.762], [6.0163, -7.7504], [5.992, -7.7363], [5.9692, -7.7196], [5.9478, -7.7002], [5.9285, -7.6782], [5.9118, -7.6535], [5.8976, -7.6259], [5.886, -7.5955], [5.877, -7.5623], [5.8706, -7.5264], [5.8667, -7.4876], [5.8654, -7.4461], [5.8654, -6.3592], [6.4088, -6.3592], [6.4088, -6.1208], [5.8654, -6.1208], [5.8654, -5.6896], [5.6831, -5.6896], [5.5604, -6.0893], [5.2905, -6.212], [5.2905, -6.3592], [5.5569, -6.3592], [5.5569, -7.4531], [5.5581, -7.5085], [5.5617, -7.5607], [5.5678, -7.6097], [5.5762, -7.6555], [5.587, -7.6982], [5.6003, -7.7377], [5.616, -7.774], [5.634, -7.8072], [5.6541, -7.8375], [5.6756, -7.8656], [5.6985, -7.8912], [5.723, -7.9145], [5.7489, -7.9355], [5.7764, -7.9541], [5.8053, -7.9703], [5.8356, -7.9842], [5.8671, -7.9961], [5.8993, -8.0065], [5.9322, -8.0152], [5.9658, -8.0224], [6.0001, -8.0279], [6.0351, -8.0319], [6.0709, -8.0343], [6.1073, -8.0351], [6.1285, -8.0348], [6.1498, -8.0341], [6.1714, -8.0328], [6.1932, -8.0311], [6.2153, -8.0289], [6.2375, -8.0262], [6.26, -8.023], [6.2826, -8.0193], [6.3048, -8.0152], [6.3256, -8.0108], [6.3451, -8.0062], [6.3633, -8.0013], [6.3801, -7.9961], [6.3957, -7.9907], [6.4099, -7.985], [6.4229, -7.979], [6.4229, -7.7441], [6.411, -7.7475], [6.3983, -7.751], [6.3847, -7.7543], [6.3703, -7.7577], [6.3549, -7.7609], [6.3387, -7.7641], [6.3216, -7.7673], [6.3037, -7.7704], [6.2853, -7.7732], [6.2671, -7.7757], [6.2489, -7.7778], [6.2309, -7.7796], [6.213, -7.7809], [6.1952, -7.7819], [6.1775, -7.7824], [6.1599, -7.7826]]];
// Millimetres in PCB coordinates. PCB surfaces ±0.5; enclosure -5.2 to +3.2.
// Black comes from geometry color, so exports retain it across render backends.
function Cylinder({ radius, height, center, segments = 64 }) {
const points = Array.from({ length: segments }, (_, i) => [radius * Math.cos(i * 2 * Math.PI / segments), radius * Math.sin(i * 2 * Math.PI / segments)]);
return jsx(jscad.translate, { offset: [center[0], center[1], center[2] - height / 2], children: jsx(jscad.extrudeLinear, { height: height, children: jsx(jscad.polygon, { points: points }) }) });
}
const black = '#1e2228';
function EyeCut() { return jsx(Cylinder, { radius: 2.2, height: 30, center: [0, 14.2, 0], segments: 64 }); }
function Base() {
return jsx(jscad.colorize, { color: black, children: jsxs(jscad.subtract, { children: [jsxs(jscad.union, { children: [jsxs(jscad.subtract, { children: [jsxs(jscad.hull, { children: [[0, 1, 2, 3, 4, 5, 6].map(i => { const a = i * Math.PI / 12; return jsx(Fragment, { children: jsx(Cylinder, { radius: 18 + Math.sin(a), height: 0.04, center: [0, 0, -4.18 - Math.cos(a)], segments: 128 }) }, i); }), jsx(Cylinder, { radius: 19, height: 6.2, center: [0, 0, -1.1], segments: 128 })] }), jsx(Cylinder, { radius: 17.8, height: 10, center: [0, 0, 0.5], segments: 96 }), jsx(jscad.cuboid, { size: [3, 3, 0.65], center: [18.5, 0, 1.8] })] }), jsx(Cylinder, { radius: 3.1, height: 7.2, center: [0, 14.2, -1.6], segments: 64 }), [-1, 1].flatMap(x => [-1, 1].map(y => jsx(Fragment, { children: jsx(jscad.cuboid, { size: [1.1, 1.6, 3.9], center: [x * 16.9, y * 3, -2.45] }) }, `${x},${y}`)))] }), jsx(EyeCut, {})] }) });
}
function Lid() {
return jsx(jscad.colorize, { color: black, children: jsxs(jscad.subtract, { children: [jsxs(jscad.union, { children: [jsx(jscad.hull, { children: [0, 1, 2, 3, 4, 5, 6].map(i => { const a = i * Math.PI / 12; return jsx(Fragment, { children: jsx(Cylinder, { radius: 18 + Math.cos(a), height: 0.04, center: [0, 0, 2.18 + Math.sin(a)], segments: 128 }) }, i); }) }), jsxs(jscad.subtract, { children: [jsx(Cylinder, { radius: 17.6, height: 0.6, center: [0, 0, 1.8], segments: 96 }), jsx(Cylinder, { radius: 17.15, height: 1, center: [0, 0, 1.8], segments: 96 }), jsx(Cylinder, { radius: 3.35, height: 2, center: [0, 14.2, 1.8], segments: 64 })] }), jsxs(jscad.subtract, { children: [jsx(Cylinder, { radius: 7.7, height: 0.3, center: [-2, 1, 1.95], segments: 64 }), jsx(Cylinder, { radius: 7.1, height: 1, center: [-2, 1, 1.95], segments: 64 })] })] }), jsx(EyeCut, {}), jsx(Cylinder, { radius: 2.4, height: 5, center: [10, 4, 2], segments: 48 }), jsx(Cylinder, { radius: 0.65, height: 5, center: [10, -1, 2], segments: 32 }), [-1, 0, 1].map(i => jsx(Fragment, { children: jsx(jscad.hull, { children: [-1, 1].map(s => jsx(Fragment, { children: jsx(Cylinder, { radius: 0.3, height: 5, center: [-2 + s * 2, 1 + i * 1.3, 2], segments: 24 }) }, s)) }) }, i))] }) });
}
function Button() {
return jsx(jscad.colorize, { color: '#30343a', children: jsxs(jscad.union, { children: [jsxs(jscad.hull, { children: [jsx(Cylinder, { radius: 2.18, height: 0.75, center: [10, 4, 2.475], segments: 64 }), jsx(Cylinder, { radius: 1.98, height: 0.10, center: [10, 4, 3.10], segments: 64 })] }), jsx(Cylinder, { radius: 2.75, height: 0.25, center: [10, 4, 1.975], segments: 48 }), jsx(Cylinder, { radius: 0.65, height: 0.76, center: [10, 4, 1.47], segments: 32 })] }) });
}
function Lens() {
return jsx(jscad.colorize, { color: '#982d35', children: jsxs(jscad.union, { children: [jsx(Cylinder, { radius: 0.55, height: 1.4, center: [10, -1, 2.45], segments: 32 }), jsx(Cylinder, { radius: 0.9, height: 0.2, center: [10, -1, 1.85], segments: 32 })] }) });
}
function Cell() { return jsx(jscad.colorize, { color: '#bfc4ca', children: jsx(Cylinder, { radius: 10, height: 3.2, center: [0, 0, -2.45], segments: 96 }) }); }
function Piezo() {
return jsxs(jscad.union, { children: [jsx(jscad.colorize, { color: '#b59b52', children: jsx(Cylinder, { radius: 7.5, height: 0.10, center: [-2, 1, 1.75], segments: 72 }) }), jsx(jscad.colorize, { color: '#e2e2d7', children: jsx(Cylinder, { radius: 4.5, height: 0.08, center: [-2, 1, 1.66], segments: 64 }) })] });
}
function Wires() {
return jsx(jscad.union, { children: [-1, 1].map((s, i) => jsx(Fragment, { children: jsxs(jscad.colorize, { color: i ? '#d9d9d3' : '#ad3932', children: [jsxs(jscad.hull, { children: [jsx(jscad.sphere, { radius: 0.18, center: [-7 + s * 1.5, 2, 0.75] }), jsx(jscad.sphere, { radius: 0.18, center: [-7 + s * 1.5, 3.6, 1.3] })] }), jsxs(jscad.hull, { children: [jsx(jscad.sphere, { radius: 0.18, center: [-7 + s * 1.5, 3.6, 1.3] }), jsx(jscad.sphere, { radius: 0.18, center: [-5 + s * 1.5, 3.6, 1.6] })] })] }) }, s)) });
}
// A thin nonconductive blue print on the flat front surface.
function Wordmark() {
return jsx(jscad.colorize, { color: "#3388ff", children: jsx(jscad.translate, { offset: [0, 0, 3.2], children: jsx(jscad.extrudeLinear, { height: 0.06, children: jsx(jscad.union, { children: wordmarkContours.map((points, i) => jsx(jscad.polygon, { points: points }, i)) }) }) }) });
}
function KeyFinderAssembly({ exploded = false }) {
const lift = exploded ? 14 : 0;
return jsxs(assembly.device, { name: "Key Finder", children: [jsx(KeyFinderBoard, {}), jsx(assembly.printedpart, { name: "CASE_BACK", displayName: "Matte black removable back \u2022 \u00D838 mm", material: "petg", jscad: jsx(jscad.translate, { offset: [0, 0, exploded ? -19 : 0], children: jsx(Base, {}) }) }), jsx(assembly.printedpart, { name: "CASE_FRONT", displayName: "Front \u2022 keyring eye and sound vents", material: "petg", jscad: jsx(jscad.translate, { offset: [0, 0, lift], children: jsx(Lid, {}) }) }), jsx(assembly.part, { name: "FRONT_WORDMARK", displayName: "tscircuit \u2022 blue nonconductive surface print", cadModel: { jscad: renderToJscadPlan(jsx(jscad.translate, { offset: [0, 0, lift], children: jsx(Wordmark, {}) })) } }), jsx(assembly.printedpart, { name: "PAIR_BUTTON", displayName: "Pair / silence button cap", material: "petg", jscad: jsx(jscad.translate, { offset: [0, 0, lift], children: jsx(Button, {}) }) }), jsx(assembly.printedpart, { name: "STATUS_LENS", displayName: "Status LED lens \u2022 translucent material", material: "petg", jscad: jsx(jscad.translate, { offset: [0, 0, lift], children: jsx(Lens, {}) }) }), jsx(assembly.part, { name: "CR2032", displayName: "Panasonic CR2032 \u2022 20 \u00D7 3.2 mm \u2022 replaceable, non-rechargeable", cadModel: { jscad: renderToJscadPlan(jsx(jscad.translate, { offset: [0, 0, exploded ? -8 : 0], children: jsx(Cell, {}) })) } }), jsx(assembly.part, { name: "PIEZO_DISC", displayName: "PUI AB1541B-LW100-R \u2022 15 mm \u2022 wired to BZ1", cadModel: { jscad: renderToJscadPlan(jsx(jscad.translate, { offset: [0, 0, exploded ? 7 : 0], children: jsx(Piezo, {}) })) } }), !exploded && jsx(assembly.part, { name: "PIEZO_LEADS", displayName: "Two insulated piezo leads \u2022 illustrative route", cadModel: { jscad: renderToJscadPlan(jsx(Wires, {})) } })] });
}
function EnclosedKeyFinder() { return jsx(KeyFinderAssembly, {}); }
export { KeyFinderAssembly, EnclosedKeyFinder as default };