imrishabh18/pedometer

This code defines and assembles a simple radio receiver hardware circuit using specific imported capacitors, inductors, RF connectors, and oscillator components with precise footprints and schematic attributes.

Version
1.1.3
License
unset
Stars
0

docs/fixes/easyeda-bga-regressions.patch

diff --git a/tests/convert-to-soup-tests/bga-round-pads.test.ts b/tests/convert-to-soup-tests/bga-round-pads.test.ts
new file mode 100644
index 0000000..4bff12f
--- /dev/null
+++ b/tests/convert-to-soup-tests/bga-round-pads.test.ts
@@ -0,0 +1,40 @@
+import { expect, test } from "bun:test"
+import { EasyEdaJsonSchema } from "lib/schemas/easy-eda-json-schema"
+import { convertEasyEdaJsonToCircuitJson } from "lib/convert-easyeda-json-to-tscircuit-soup-json"
+import { generateFootprintTsx } from "lib/websafe/generate-footprint-tsx"
+import charger from "../assets/C2868498.raweasy.json"
+import gauge from "../assets/C6075475.raweasy.json"
+
+for (const [name, raw, count, diameter, firstBall, lastBall] of [
+  ["BQ25150YFPR", charger, 20, 0.1999996, "A1", "E4"],
+  ["BQ27427YZFR", gauge, 9, 0.2400046, "A1", "C3"],
+] as const) {
+  test(`${name} preserves circular BGA lands and ball identities`, () => {
+    const parsed = EasyEdaJsonSchema.parse(raw)
+    const originalPads = parsed.packageDetail.dataStr.shape.filter(
+      (shape) => shape.type === "PAD",
+    )
+    expect(originalPads).toHaveLength(count)
+    expect(originalPads.every((pad) => pad.shape === "ELLIPSE")).toBe(true)
+
+    const circuit = convertEasyEdaJsonToCircuitJson(parsed)
+    const pads = circuit.filter((e) => e.type === "pcb_smtpad")
+    expect(pads).toHaveLength(count)
+    for (const pad of pads) {
+      expect(pad.shape).toBe("circle")
+      if (pad.shape !== "circle") throw new Error("Round pad lost")
+      expect(pad.radius * 2).toBeCloseTo(diameter, 7)
+    }
+    const ports = circuit.filter((e) => e.type === "source_port")
+    expect(ports[0].port_hints).toContain(firstBall)
+    expect(ports.at(-1)!.port_hints).toContain(lastBall)
+    for (const [index, pad] of pads.entries()) {
+      expect(pad.port_hints).toContain(`pin${index + 1}`)
+      expect(ports[index].port_hints).toContain(originalPads[index].number)
+    }
+    const tsx = generateFootprintTsx(circuit)
+    expect(tsx.match(/<smtpad[^>]*shape="circle"/g)).toHaveLength(count)
+    expect(tsx).not.toMatch(/<smtpad[^>]*shape="rect"/)
+    expect(tsx).not.toContain("<via")
+  })
+}
diff --git a/tests/assets/C2868498.raweasy.json b/tests/assets/C2868498.raweasy.json
new file mode 100644
index 0000000..14ba4e5
--- /dev/null
+++ b/tests/assets/C2868498.raweasy.json
@@ -0,0 +1,276 @@
+{
+  "uuid": "a8a8f3be8f5f4b65b991ddc12376fcfb",
+  "title": "BQ25150YFPR",
+  "description": "",
+  "docType": 2,
+  "type": 3,
+  "thumb": "/component/a8a8f3be8f5f4b65b991ddc12376fcfb.png",
+  "lcsc": {
+    "id": 3073175,
+    "number": "C2868498"
+  },
+  "szlcsc": {
+    "id": 3073175,
+    "number": "C2868498"
+  },
+  "owner": {
+    "uuid": "0819f05c4eef4c71ace90d822a990e87",
+    "username": "LCSC",
+    "nickname": "LCSC",
+    "avatar": "//image.lceda.cn/avatars/2018/6/kFlrasi7W06gTdBLAqW3fkrqbDhbowynuSzkjqso.png"
+  },
+  "tags": [
+    "Battery Management ICs"
+  ],
+  "updateTime": 1715587540,
+  "updated_at": "2024-05-13 08:17:17",
+  "dataStr": {
+    "head": {
+      "docType": "2",
+      "editorVersion": "6.4.32",
+      "x": 400,
+      "y": 300,
+      "c_para": {
+        "pre": "U?",
+        "name": "BQ25150YFPR",
+        "package": "DSBGA-20_L2.0-W1.6-P0.40-BL",
+        "Contributor": "LCSC",
+        "Supplier": "LCSC",
+        "Supplier Part": "C2868498",
+        "Manufacturer": "TI(德州仪器)",
+        "Manufacturer Part": "BQ25150YFPR",
+        "JLCPCB Part Class": "Extended Part"
+      },
+      "uuid": "a8a8f3be8f5f4b65b991ddc12376fcfb",
+      "puuid": "6ddcfc0fa7e74e439f33390d10e5e38b",
+      "importFlag": 0,
+      "c_spiceCmd": null,
+      "pre": "U?",
+      "name": "BQ25150YFPR",
+      "hasIdFlag": true,
+      "utime": 1646976732
+    },
+    "canvas": "CA~1000~1000~#FFFFFF~yes~#CCCCCC~5~1000~1000~line~5~pixel~5~400~300",
+    "shape": [
+      "R~365~245~2~2~70~110~#880000~1~0~none~gge1~0~",
+      "E~370~250~1.5~1.5~#880000~1~0~#880000~gge2~0",
+      "P~show~0~E4~445~255~0~gge4E4~0^^445~255^^M 445 255 h -10~#880000^^1~431.3~259~0~VINLS~end~~~#0000FF^^1~435.5~254~0~E4~start~~~#0000FF^^0~438~255^^0~M 435 258 L 432 255 L 435 252",
+      "P~show~0~E3~445~265~0~gge4E3~0^^445~265^^M 445 265 h -10~#880000^^1~431.3~269~0~SCL~end~~~#0000FF^^1~435.5~264~0~E3~start~~~#0000FF^^0~438~265^^0~M 435 268 L 432 265 L 435 262",
+      "P~show~0~E2~445~275~0~gge4E2~0^^445~275^^M 445 275 h -10~#880000^^1~431.3~279~0~SDA~end~~~#0000FF^^1~435.5~274~0~E2~start~~~#0000FF^^0~438~275^^0~M 435 278 L 432 275 L 435 272",
+      "P~show~0~E1~445~285~0~gge4E1~0^^445~285^^M 445 285 h -10~#880000^^1~431.3~289~0~VIO~end~~~#0000FF^^1~435.5~284~0~E1~start~~~#0000FF^^0~438~285^^0~M 435 288 L 432 285 L 435 282",
+      "P~show~0~D4~445~295~0~gge4D4~0^^445~295^^M 445 295 h -10~#880000^^1~431.3~299~0~LSLDO~end~~~#0000FF^^1~435.5~294~0~D4~start~~~#0000FF^^0~438~295^^0~M 435 298 L 432 295 L 435 292",
+      "P~show~0~D3~445~305~0~gge4D3~0^^445~305^^M 445 305 h -10~#880000^^1~431.3~309~0~LP#~end~~~#0000FF^^1~435.5~304~0~D3~start~~~#0000FF^^0~438~305^^0~M 435 308 L 432 305 L 435 302",
+      "P~show~0~D2~445~315~0~gge4D2~0^^445~315^^M 445 315 h -10~#880000^^1~431.3~319~0~INT#~end~~~#0000FF^^1~435.5~314~0~D2~start~~~#0000FF^^0~438~315^^0~M 435 318 L 432 315 L 435 312",
+      "P~show~0~D1~445~325~0~gge4D1~0^^445~325^^M 445 325 h -10~#FF0000^^1~431.3~329~0~VDD~end~~~#FF0000^^1~435.5~324~0~D1~start~~~#FF0000^^0~438~325^^0~M 435 328 L 432 325 L 435 322",
+      "P~show~0~C4~445~335~0~gge4C4~0^^445~335^^M 445 335 h -10~#880000^^1~431.3~339~0~ADCIN~end~~~#0000FF^^1~435.5~334~0~C4~start~~~#0000FF^^0~438~335^^0~M 435 338 L 432 335 L 435 332",
+      "P~show~0~C3~445~345~0~gge4C3~0^^445~345^^M 445 345 h -10~#880000^^1~431.3~349~0~IMAX~end~~~#0000FF^^1~435.5~344~0~C3~start~~~#0000FF^^0~438~345^^0~M 435 348 L 432 345 L 435 342",
+      "P~show~0~C2~355~345~180~gge4C2~0^^355~345^^M 355 345 h 10~#880000^^1~368.7~349~0~CE#~start~~~#0000FF^^1~364.5~344~0~C2~end~~~#0000FF^^0~362~345^^0~M 365 342 L 368 345 L 365 348",
+      "P~show~0~C1~355~335~180~gge4C1~0^^355~335^^M 355 335 h 10~#880000^^1~368.7~339~0~MR#~start~~~#0000FF^^1~364.5~334~0~C1~end~~~#0000FF^^0~362~335^^0~M 365 332 L 368 335 L 365 338",
+      "P~show~0~B4~355~325~180~gge4B4~0^^355~325^^M 355 325 h 10~#880000^^1~368.7~329~0~TS~start~~~#0000FF^^1~364.5~324~0~B4~end~~~#0000FF^^0~362~325^^0~M 365 322 L 368 325 L 365 328",
+      "P~show~0~B3~355~315~180~gge4B3~0^^355~315^^M 355 315 h 10~#880000^^1~368.7~319~0~BAT~start~~~#0000FF^^1~364.5~314~0~B3~end~~~#0000FF^^0~362~315^^0~M 365 312 L 368 315 L 365 318",
+      "P~show~0~B2~355~305~180~gge4B2~0^^355~305^^M 355 305 h 10~#880000^^1~368.7~309~0~PMID~start~~~#0000FF^^1~364.5~304~0~B2~end~~~#0000FF^^0~362~305^^0~M 365 302 L 368 305 L 365 308",
+      "P~show~0~B1~355~295~180~gge4B1~0^^355~295^^M 355 295 h 10~#880000^^1~368.7~299~0~PG#~start~~~#0000FF^^1~364.5~294~0~B1~end~~~#0000FF^^0~362~295^^0~M 365 292 L 368 295 L 365 298",
+      "P~show~0~A4~355~285~180~gge4A4~0^^355~285^^M 355 285 h 10~#000000^^1~368.7~289~0~GND~start~~~#000000^^1~364.5~284~0~A4~end~~~#000000^^0~362~285^^0~M 365 282 L 368 285 L 365 288",
+      "P~show~0~A3~355~275~180~gge4A3~0^^355~275^^M 355 275 h 10~#880000^^1~368.7~279~0~BAT~start~~~#0000FF^^1~364.5~274~0~A3~end~~~#0000FF^^0~362~275^^0~M 365 272 L 368 275 L 365 278",
+      "P~show~0~A2~355~265~180~gge4A2~0^^355~265^^M 355 265 h 10~#880000^^1~368.7~269~0~PMID~start~~~#0000FF^^1~364.5~264~0~A2~end~~~#0000FF^^0~362~265^^0~M 365 262 L 368 265 L 365 268",
+      "P~show~0~A1~355~255~180~gge4A1~0^^355~255^^M 355 255 h 10~#880000^^1~368.7~259~0~IN~start~~~#0000FF^^1~364.5~254~0~A1~end~~~#0000FF^^0~362~255^^0~M 365 252 L 368 255 L 365 258"
+    ],
+    "BBox": {
+      "x": 352,
+      "y": 244.5,
+      "width": 96.6,
+      "height": 110.5
+    },
+    "colors": []
+  },
+  "jlcOnSale": 1,
+  "datastrid": "340f987ddb504697adab65b8c832b463",
+  "verify": true,
+  "SMT": true,
+  "writable": false,
+  "isFavorite": false,
+  "packageDetail": {
+    "uuid": "6ddcfc0fa7e74e439f33390d10e5e38b",
+    "title": "DSBGA-20_L2.0-W1.6-R4-C5-P0.40-BL-1",
+    "docType": 4,
+    "updateTime": 1668336432,
+    "owner": {
+      "uuid": "0819f05c4eef4c71ace90d822a990e87",
+      "username": "lcsc",
+      "nickname": "LCSC",
+      "avatar": "//image.lceda.cn/avatars/2018/6/kFlrasi7W06gTdBLAqW3fkrqbDhbowynuSzkjqso.png"
+    },
+    "datastrid": "9587a143bdc34b3cb02d5af3e32d2aa1",
+    "writable": false,
+    "dataStr": {
+      "head": {
+        "docType": "4",
+        "editorVersion": "6.5.22",
+        "x": 400,
+        "y": 300,
+        "c_para": {
+          "package": "DSBGA-20_L2.0-W1.6-R4-C5-P0.40-BL-1",
+          "pre": "U?",
+          "Contributor": "lcsc",
+          "link": "https://www.ti.com/lit/ds/symlink/lm3646.pdf?ts=1633520912654&ref_url=https%253A%252F%252Fwww.ti.com%252Fsitesearch%252Fdocs%252Funiversalsearch.tsp%253FlangPref%253Den-US%2526searchTerm%253DLM3646YFQR%2526nr%253D3",
+          "3DModel": "DSBGA-20_L2.0-W1.6-R4-C5-P0.40-BL-1"
+        },
+        "uuid": "6ddcfc0fa7e74e439f33390d10e5e38b",
+        "utime": 1668336431,
+        "importFlag": 0,
+        "transformList": "",
+        "hasIdFlag": true,
+        "uuid_3d": "7e563cdf35fc483bbbeb36900027e7f2"
+      },
+      "canvas": "CA~1000~1000~#000000~yes~#FFFFFF~1~1000~1000~line~1~mm~1~45~visible~0.1~400~300~0~yes",
+      "shape": [
+        "CIRCLE~396.063~303.1496~0.1181~0.2362~101~gge105~0~~",
+        "CIRCLE~396.85~302.756~0.394~0.7874~12~rep69~0~~",
+        "CIRCLE~396.85~302.362~0.246~0.4921~100~rep3~0~~",
+        "CIRCLE~396.85~300.787~0.246~0.4921~100~rep5~0~~",
+        "CIRCLE~396.85~299.213~0.246~0.4921~100~rep7~0~~",
+        "CIRCLE~396.85~297.638~0.246~0.4921~100~rep9~0~~",
+        "CIRCLE~398.425~302.362~0.246~0.4921~100~rep11~0~~",
+        "CIRCLE~398.425~300.787~0.246~0.4921~100~rep13~0~~",
+        "CIRCLE~398.425~299.213~0.246~0.4921~100~rep15~0~~",
+        "CIRCLE~398.425~297.638~0.246~0.4921~100~rep17~0~~",
+        "CIRCLE~400~302.362~0.246~0.4921~100~rep19~0~~",
+        "CIRCLE~400~300.787~0.246~0.4921~100~rep21~0~~",
+        "CIRCLE~400~299.213~0.246~0.4921~100~rep23~0~~",
+        "CIRCLE~400~297.638~0.246~0.4921~100~rep25~0~~",
+        "CIRCLE~401.575~302.362~0.246~0.4921~100~rep27~0~~",
+        "CIRCLE~401.575~300.787~0.246~0.4921~100~rep29~0~~",
+        "CIRCLE~401.575~299.213~0.246~0.4921~100~rep31~0~~",
+        "CIRCLE~401.575~297.638~0.246~0.4921~100~rep33~0~~",
+        "CIRCLE~403.15~302.362~0.246~0.4921~100~rep35~0~~",
+        "CIRCLE~403.15~300.787~0.246~0.4921~100~rep37~0~~",
+        "CIRCLE~403.15~299.213~0.246~0.4921~100~rep39~0~~",
+        "CIRCLE~403.15~297.638~0.246~0.4921~100~rep41~0~~",
+        "SOLIDREGION~99~~M396.063 303.1496 403.937 303.1496 L403.937 303.1496 403.937 296.8504 L403.937 296.8504 396.063 296.8504 L396.063 296.8504 396.063 303.1496  Z~solid~rep2~~~~0",
+        "SOLIDREGION~5~~M396.53544 301.9685 397.16536 301.9685 L397.16536 301.9685 397.2441 302.04724 L397.2441 302.04724 397.2441 302.67716 L397.2441 302.67716 397.16536 302.7559 L397.16536 302.7559 396.53544 302.7559 L396.53544 302.7559 396.4567 302.67716 L396.4567 302.67716 396.4567 302.04724  Z~solid~rep43~~~~0",
+        "SOLIDREGION~5~~M396.53544 300.3937 397.16536 300.3937 L397.16536 300.3937 397.2441 300.47244 L397.2441 300.47244 397.2441 301.10236 L397.2441 301.10236 397.16536 301.1811 L397.16536 301.1811 396.53544 301.1811 L396.53544 301.1811 396.4567 301.10236 L396.4567 301.10236 396.4567 300.47244  Z~solid~rep44~~~~0",
+        "SOLIDREGION~5~~M396.53544 298.8189 397.16536 298.8189 L397.16536 298.8189 397.2441 298.89764 L397.2441 298.89764 397.2441 299.52756 L397.2441 299.52756 397.16536 299.6063 L397.16536 299.6063 396.53544 299.6063 L396.53544 299.6063 396.4567 299.52756 L396.4567 299.52756 396.4567 298.89764  Z~solid~rep45~~~~0",
+        "SOLIDREGION~5~~M396.53544 297.2441 397.16536 297.2441 L397.16536 297.2441 397.2441 297.32284 L397.2441 297.32284 397.2441 297.95276 L397.2441 297.95276 397.16536 298.0315 L397.16536 298.0315 396.53544 298.0315 L396.53544 298.0315 396.4567 297.95276 L396.4567 297.95276 396.4567 297.32284  Z~solid~rep46~~~~0",
+        "SOLIDREGION~5~~M398.11024 301.9685 398.74016 301.9685 L398.74016 301.9685 398.8189 302.04724 L398.8189 302.04724 398.8189 302.67716 L398.8189 302.67716 398.74016 302.7559 L398.74016 302.7559 398.11024 302.7559 L398.11024 302.7559 398.0315 302.67716 L398.0315 302.67716 398.0315 302.04724  Z~solid~rep47~~~~0",
+        "SOLIDREGION~5~~M398.11024 300.3937 398.74016 300.3937 L398.74016 300.3937 398.8189 300.47244 L398.8189 300.47244 398.8189 301.10236 L398.8189 301.10236 398.74016 301.1811 L398.74016 301.1811 398.11024 301.1811 L398.11024 301.1811 398.0315 301.10236 L398.0315 301.10236 398.0315 300.47244  Z~solid~rep48~~~~0",
+        "SOLIDREGION~5~~M398.11024 298.8189 398.74016 298.8189 L398.74016 298.8189 398.8189 298.89764 L398.8189 298.89764 398.8189 299.52756 L398.8189 299.52756 398.74016 299.6063 L398.74016 299.6063 398.11024 299.6063 L398.11024 299.6063 398.0315 299.52756 L398.0315 299.52756 398.0315 298.89764  Z~solid~rep49~~~~0",
+        "SOLIDREGION~5~~M398.11024 297.2441 398.74016 297.2441 L398.74016 297.2441 398.8189 297.32284 L398.8189 297.32284 398.8189 297.95276 L398.8189 297.95276 398.74016 298.0315 L398.74016 298.0315 398.11024 298.0315 L398.11024 298.0315 398.0315 297.95276 L398.0315 297.95276 398.0315 297.32284  Z~solid~rep50~~~~0",
+        "SOLIDREGION~5~~M399.68504 301.9685 400.31496 301.9685 L400.31496 301.9685 400.3937 302.04724 L400.3937 302.04724 400.3937 302.67716 L400.3937 302.67716 400.31496 302.7559 L400.31496 302.7559 399.68504 302.7559 L399.68504 302.7559 399.6063 302.67716 L399.6063 302.67716 399.6063 302.04724  Z~solid~rep51~~~~0",
+        "SOLIDREGION~5~~M399.68504 300.3937 400.31496 300.3937 L400.31496 300.3937 400.3937 300.47244 L400.3937 300.47244 400.3937 301.10236 L400.3937 301.10236 400.31496 301.1811 L400.31496 301.1811 399.68504 301.1811 L399.68504 301.1811 399.6063 301.10236 L399.6063 301.10236 399.6063 300.47244  Z~solid~rep52~~~~0",
+        "SOLIDREGION~5~~M399.68504 298.8189 400.31496 298.8189 L400.31496 298.8189 400.3937 298.89764 L400.3937 298.89764 400.3937 299.52756 L400.3937 299.52756 400.31496 299.6063 L400.31496 299.6063 399.68504 299.6063 L399.68504 299.6063 399.6063 299.52756 L399.6063 299.52756 399.6063 298.89764  Z~solid~rep53~~~~0",
+        "SOLIDREGION~5~~M399.68504 297.2441 400.31496 297.2441 L400.31496 297.2441 400.3937 297.32284 L400.3937 297.32284 400.3937 297.95276 L400.3937 297.95276 400.31496 298.0315 L400.31496 298.0315 399.68504 298.0315 L399.68504 298.0315 399.6063 297.95276 L399.6063 297.95276 399.6063 297.32284  Z~solid~rep54~~~~0",
+        "SOLIDREGION~5~~M401.25984 301.9685 401.88976 301.9685 L401.88976 301.9685 401.9685 302.04724 L401.9685 302.04724 401.9685 302.67716 L401.9685 302.67716 401.88976 302.7559 L401.88976 302.7559 401.25984 302.7559 L401.25984 302.7559 401.1811 302.67716 L401.1811 302.67716 401.1811 302.04724  Z~solid~rep55~~~~0",
+        "SOLIDREGION~5~~M401.25984 300.3937 401.88976 300.3937 L401.88976 300.3937 401.9685 300.47244 L401.9685 300.47244 401.9685 301.10236 L401.9685 301.10236 401.88976 301.1811 L401.88976 301.1811 401.25984 301.1811 L401.25984 301.1811 401.1811 301.10236 L401.1811 301.10236 401.1811 300.47244  Z~solid~rep56~~~~0",
+        "SOLIDREGION~5~~M401.25984 298.8189 401.88976 298.8189 L401.88976 298.8189 401.9685 298.89764 L401.9685 298.89764 401.9685 299.52756 L401.9685 299.52756 401.88976 299.6063 L401.88976 299.6063 401.25984 299.6063 L401.25984 299.6063 401.1811 299.52756 L401.1811 299.52756 401.1811 298.89764  Z~solid~rep57~~~~0",
+        "SOLIDREGION~5~~M401.25984 297.2441 401.88976 297.2441 L401.88976 297.2441 401.9685 297.32284 L401.9685 297.32284 401.9685 297.95276 L401.9685 297.95276 401.88976 298.0315 L401.88976 298.0315 401.25984 298.0315 L401.25984 298.0315 401.1811 297.95276 L401.1811 297.95276 401.1811 297.32284  Z~solid~rep58~~~~0",
+        "SOLIDREGION~5~~M402.83464 301.9685 403.46456 301.9685 L403.46456 301.9685 403.5433 302.04724 L403.5433 302.04724 403.5433 302.67716 L403.5433 302.67716 403.46456 302.7559 L403.46456 302.7559 402.83464 302.7559 L402.83464 302.7559 402.7559 302.67716 L402.7559 302.67716 402.7559 302.04724  Z~solid~rep59~~~~0",
+        "SOLIDREGION~5~~M402.83464 300.3937 403.46456 300.3937 L403.46456 300.3937 403.5433 300.47244 L403.5433 300.47244 403.5433 301.10236 L403.5433 301.10236 403.46456 301.1811 L403.46456 301.1811 402.83464 301.1811 L402.83464 301.1811 402.7559 301.10236 L402.7559 301.10236 402.7559 300.47244  Z~solid~rep60~~~~0",
+        "SOLIDREGION~5~~M402.83464 298.8189 403.46456 298.8189 L403.46456 298.8189 403.5433 298.89764 L403.5433 298.89764 403.5433 299.52756 L403.5433 299.52756 403.46456 299.6063 L403.46456 299.6063 402.83464 299.6063 L402.83464 299.6063 402.7559 299.52756 L402.7559 299.52756 402.7559 298.89764  Z~solid~rep61~~~~0",
+        "SOLIDREGION~5~~M402.83464 297.2441 403.46456 297.2441 L403.46456 297.2441 403.5433 297.32284 L403.5433 297.32284 403.5433 297.95276 L403.5433 297.95276 403.46456 298.0315 L403.46456 298.0315 402.83464 298.0315 L402.83464 298.0315 402.7559 297.95276 L402.7559 297.95276 402.7559 297.32284  Z~solid~rep62~~~~0",
+        "PAD~ELLIPSE~396.85~302.362~0.7874~0.7874~1~~A1~0~~0~rep4~0~~Y~0~-393.7~0.2~396.8504,302.3622",
+        "PAD~ELLIPSE~396.85~300.787~0.7874~0.7874~1~~A2~0~~0~rep6~0~~Y~0~-393.7~0.2~396.8504,300.7874",
+        "PAD~ELLIPSE~396.85~299.213~0.7874~0.7874~1~~A3~0~~0~rep8~0~~Y~0~-393.7~0.2~396.8504,299.2126",
+        "PAD~ELLIPSE~396.85~297.638~0.7874~0.7874~1~~A4~0~~0~rep10~0~~Y~0~-393.7~0.2~396.8504,297.6378",
+        "PAD~ELLIPSE~398.425~302.362~0.7874~0.7874~1~~B1~0~~0~rep12~0~~Y~0~-393.7~0.2~398.4252,302.3622",
+        "PAD~ELLIPSE~398.425~300.787~0.7874~0.7874~1~~B2~0~~0~rep14~0~~Y~0~-393.7~0.2~398.4252,300.7874",
+        "PAD~ELLIPSE~398.425~299.213~0.7874~0.7874~1~~B3~0~~0~rep16~0~~Y~0~-393.7~0.2~398.4252,299.2126",
+        "PAD~ELLIPSE~398.425~297.638~0.7874~0.7874~1~~B4~0~~0~rep18~0~~Y~0~-393.7~0.2~398.4252,297.6378",
+        "PAD~ELLIPSE~400~302.362~0.7874~0.7874~1~~C1~0~~0~rep20~0~~Y~0~-393.7~0.2~400,302.3622",
+        "PAD~ELLIPSE~400~300.787~0.7874~0.7874~1~~C2~0~~0~rep22~0~~Y~0~-393.7~0.2~400,300.7874",
+        "PAD~ELLIPSE~400~299.213~0.7874~0.7874~1~~C3~0~~0~rep24~0~~Y~0~-393.7~0.2~400,299.2126",
+        "PAD~ELLIPSE~400~297.638~0.7874~0.7874~1~~C4~0~~0~rep26~0~~Y~0~-393.7~0.2~400,297.6378",
+        "PAD~ELLIPSE~401.575~302.362~0.7874~0.7874~1~~D1~0~~0~rep28~0~~Y~0~-393.7~0.2~401.5748,302.3622",
+        "PAD~ELLIPSE~401.575~300.787~0.7874~0.7874~1~~D2~0~~0~rep30~0~~Y~0~-393.7~0.2~401.5748,300.7874",
+        "PAD~ELLIPSE~401.575~299.213~0.7874~0.7874~1~~D3~0~~0~rep32~0~~Y~0~-393.7~0.2~401.5748,299.2126",
+        "PAD~ELLIPSE~401.575~297.638~0.7874~0.7874~1~~D4~0~~0~rep34~0~~Y~0~-393.7~0.2~401.5748,297.6378",
+        "PAD~ELLIPSE~403.15~302.362~0.7874~0.7874~1~~E1~0~~0~rep36~0~~Y~0~-393.7~0.2~403.1496,302.3622",
+        "PAD~ELLIPSE~403.15~300.787~0.7874~0.7874~1~~E2~0~~0~rep38~0~~Y~0~-393.7~0.2~403.1496,300.7874",
+        "PAD~ELLIPSE~403.15~299.213~0.7874~0.7874~1~~E3~0~~0~rep40~0~~Y~0~-393.7~0.2~403.1496,299.2126",
+        "PAD~ELLIPSE~403.15~297.638~0.7874~0.7874~1~~E4~0~~0~rep42~0~~Y~0~-393.7~0.2~403.1496,297.6378",
+        "TRACK~0.6~3~~395.763 296.5504 404.237 296.5504 404.237 303.4496 395.763 303.4496 395.763 296.5504~rep63~0",
+        "CIRCLE~396~305~0.3937~1.1811~3~rep67~0~~",
+        "SVGNODE~{\"gId\":\"g1_outline\",\"nodeName\":\"g\",\"nodeType\":1,\"layerid\":\"19\",\"attrs\":{\"c_width\":\"7.874\",\"c_height\":\"6.2992\",\"c_rotation\":\"0,0,0\",\"z\":\"0\",\"c_origin\":\"400,300\",\"uuid\":\"8f5bf60570c946a0add15337ad8d14e8\",\"c_etype\":\"outline3D\",\"id\":\"g1_outline\",\"title\":\"DSBGA-20_L2.0-W1.6-R4-C5-P0.40-BL-1\",\"layerid\":\"19\",\"transform\":\"scale(1) translate(0, 0)\"},\"childNodes\":[{\"gId\":\"g1_outline_line0\",\"nodeName\":\"polyline\",\"nodeType\":1,\"attrs\":{\"fill\":\"none\",\"id\":\"g1_outline_line0\",\"c_shapetype\":\"line\",\"points\":\"396.063 296.8504 396.063 303.1496 403.937 303.1496 403.937 296.8504 396.063 296.8504 396.063 296.8504\"}},{\"gId\":\"g1_outline_line1\",\"nodeName\":\"polyline\",\"nodeType\":1,\"attrs\":{\"fill\":\"none\",\"id\":\"g1_outline_line1\",\"c_shapetype\":\"line\",\"points\":\"397.9528 297.4409 397.9528 297.6378 397.9528 297.8346 398.0709 297.9921 398.2284 298.1102 398.2678 298.1102 398.3071 298.1102 398.3465 298.1102 398.4252 298.1102 398.504 298.1102 398.5434 298.1102 398.6221 298.1102 398.7796 297.9921 398.8977 297.8346 398.8977 297.6378 398.8977 297.4409 398.7796 297.2834 398.6221 297.1653 398.4252 297.126 398.2284 297.1653 398.0709 297.2834 398.1497 297.2047 398.1103 297.2834 398.0709 297.2834 398.2284 297.1653 398.189 297.2047 398.1497 297.2047 398.0709 297.2834 397.9528 297.4409 397.9528 297.4409\"}},{\"gId\":\"g1_outline_line2\",\"nodeName\":\"polyline\",\"nodeType\":1,\"attrs\":{\"fill\":\"none\",\"id\":\"g1_outline_line2\",\"c_shapetype\":\"line\",\"points\":\"399.5276 297.4409 399.5276 297.6378 399.5276 297.8346 399.6457 297.9921 399.8032 298.1102 399.8426 298.1102 399.9213 298.1102 400 298.1102 400.1182 298.1102 400.1575 298.1102 400.1969 298.1102 400.3544 297.9921 400.4725 297.8346 400.5119 297.6378 400.4725 297.4409 400.3544 297.2834 400.1969 297.1653 400.2756 297.2047 400.1575 297.1653 400.1969 297.1653 400.3544 297.2834 400.2756 297.2047 400.1969 297.1653 400 297.126 399.8032 297.1653 399.7245 297.2441 399.6457 297.2834 399.8032 297.1653 399.8426 297.1653 399.7245 297.2047 399.8032 297.1653 399.6457 297.2834 399.5276 297.4409 399.5276 297.4409\"}},{\"gId\":\"g1_outline_line3\",\"nodeName\":\"polyline\",\"nodeType\":1,\"attrs\":{\"fill\":\"none\",\"id\":\"g1_outline_line3\",\"c_shapetype\":\"line\",\"points\":\"401.1024 297.4409 401.1024 297.6378 401.1024 297.8346 401.2205 297.9921 401.4174 298.1102 401.4567 298.1102 401.4961 298.1102 401.5748 298.1102 401.6536 298.1102 401.693 298.1102 401.7323 298.1102 401.7717 298.1102 401.9292 297.9921 402.0473 297.8346 402.0867 297.6378 402.0473 297.4409 401.9292 297.2834 401.8504 297.2047 401.8111 297.2047 401.7717 297.1653 401.9292 297.2834 401.8898 297.2834 401.8504 297.2047 401.9292 297.2834 401.7717 297.1653 401.5748 297.126 401.378 297.1653 401.2205 297.2834 401.1024 297.4409 401.1024 297.4409\"}},{\"gId\":\"g1_outline_line4\",\"nodeName\":\"polyline\",\"nodeType\":1,\"attrs\":{\"fill\":\"none\",\"id\":\"g1_outline_line4\",\"c_shapetype\":\"line\",\"points\":\"402.6772 299.0157 402.6772 299.2126 402.6772 299.4094 402.7953 299.5669 402.9528 299.685 402.9922 299.685 403.0315 299.685 403.0709 299.685 403.1496 299.685 403.2284 299.685 403.3071 299.685 403.3465 299.685 403.504 299.5669 403.6221 299.4094 403.6615 299.2126 403.6221 299.0157 403.504 298.8582 403.4252 298.7795 403.3465 298.7401 403.1496 298.7008 402.9528 298.7401 402.7953 298.8582 402.6772 299.0157 402.6772 299.0157\"}},{\"gId\":\"g1_outline_line5\",\"nodeName\":\"polyline\",\"nodeType\":1,\"attrs\":{\"fill\":\"none\",\"id\":\"g1_outline_line5\",\"c_shapetype\":\"line\",\"points\":\"402.6772 300.5905 402.6772 300.7874 402.6772 300.9842 402.7953 301.1417 402.9528 301.2598 402.9922 301.2598 403.0315 301.2598 403.0709 301.2598 403.1496 301.2598 403.2284 301.2598 403.3071 301.2598 403.3465 301.2598 403.504 301.1417 403.6221 300.9842 403.6615 300.7874 403.6221 300.5905 403.504 300.433 403.4252 300.3543 403.3465 300.3149 403.1496 300.2756 402.9528 300.3149 402.7953 300.433 402.6772 300.5905 402.6772 300.5905\"}}]}"
+      ],
+      "layers": [
+        "1~TopLayer~#FF0000~true~true~true~",
+        "2~BottomLayer~#0000FF~true~false~true~",
+        "3~TopSilkLayer~#FFCC00~true~false~true~",
+        "4~BottomSilkLayer~#66CC33~true~false~true~",
+        "5~TopPasteMaskLayer~#808080~true~false~true~",
+        "6~BottomPasteMaskLayer~#800000~true~false~true~",
+        "7~TopSolderMaskLayer~#800080~true~false~true~0.3",
+        "8~BottomSolderMaskLayer~#AA00FF~true~false~true~0.3",
+        "9~Ratlines~#6464FF~true~false~true~",
+        "10~BoardOutLine~#FF00FF~true~false~true~",
+        "11~Multi-Layer~#C0C0C0~true~false~true~",
+        "12~Document~#FFFFFF~true~false~true~",
+        "13~TopAssembly~#33CC99~true~false~true~",
+        "14~BottomAssembly~#5555FF~true~false~true~",
+        "15~Mechanical~#F022F0~true~false~true~",
+        "19~3DModel~#66CCFF~true~false~true~",
+        "21~Inner1~#999966~false~false~false~~",
+        "22~Inner2~#008000~false~false~false~~",
+        "23~Inner3~#00FF00~false~false~false~~",
+        "24~Inner4~#BC8E00~false~false~false~~",
+        "25~Inner5~#70DBFA~false~false~false~~",
+        "26~Inner6~#00CC66~false~false~false~~",
+        "27~Inner7~#9966FF~false~false~false~~",
+        "28~Inner8~#800080~false~false~false~~",
+        "29~Inner9~#008080~false~false~false~~",
+        "30~Inner10~#15935F~false~false~false~~",
+        "31~Inner11~#000080~false~false~false~~",
+        "32~Inner12~#00B400~false~false~false~~",
+        "33~Inner13~#2E4756~false~false~false~~",
+        "34~Inner14~#99842F~false~false~false~~",
+        "35~Inner15~#FFFFAA~false~false~false~~",
+        "36~Inner16~#99842F~false~false~false~~",
+        "37~Inner17~#2E4756~false~false~false~~",
+        "38~Inner18~#3535FF~false~false~false~~",
+        "39~Inner19~#8000BC~false~false~false~~",
+        "40~Inner20~#43AE5F~false~false~false~~",
+        "41~Inner21~#C3ECCE~false~false~false~~",
+        "42~Inner22~#728978~false~false~false~~",
+        "43~Inner23~#39503F~false~false~false~~",
+        "44~Inner24~#0C715D~false~false~false~~",
+        "45~Inner25~#5A8A80~false~false~false~~",
+        "46~Inner26~#2B937E~false~false~false~~",
+        "47~Inner27~#23999D~false~false~false~~",
+        "48~Inner28~#45B4E3~false~false~false~~",
+        "49~Inner29~#215DA1~false~false~false~~",
+        "50~Inner30~#4564D7~false~false~false~~",
+        "51~Inner31~#6969E9~false~false~false~~",
+        "52~Inner32~#9069E9~false~false~false~~",
+        "99~ComponentShapeLayer~#00CCCC~true~false~true~0.4",
+        "100~LeadShapeLayer~#CC9999~true~false~true~",
+        "101~ComponentMarkingLayer~#66FFCC~true~false~true~",
+        "Hole~Hole~#222222~false~false~true~",
+        "DRCError~DRCError~#FAD609~false~false~true~"
+      ],
+      "objects": [
+        "All~true~false",
+        "Component~true~true",
+        "Prefix~true~true",
+        "Name~true~false",
+        "Track~true~true",
+        "Pad~true~true",
+        "Via~true~true",
+        "Hole~true~true",
+        "Copper_Area~true~true",
+        "Circle~true~true",
+        "Arc~true~true",
+        "Solid_Region~true~true",
+        "Text~true~true",
+        "Image~true~true",
+        "Rect~true~true",
+        "Dimension~true~true",
+        "Protractor~true~true"
+      ],
+      "BBox": {
+        "x": 395.6,
+        "y": 296.6,
+        "width": 8.6,
+        "height": 8.8
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/assets/C6075475.raweasy.json b/tests/assets/C6075475.raweasy.json
new file mode 100644
index 0000000..5c2e5d2
--- /dev/null
+++ b/tests/assets/C6075475.raweasy.json
@@ -0,0 +1,231 @@
+{
+  "uuid": "87f893df36f84e38b54946b296148728",
+  "title": "BQ27427YZFR",
+  "description": "",
+  "docType": 2,
+  "type": 3,
+  "thumb": "/component/87f893df36f84e38b54946b296148728.png",
+  "lcsc": {
+    "id": 7015475,
+    "number": "C6075475"
+  },
+  "szlcsc": {
+    "id": 7015475,
+    "number": "C6075475"
+  },
+  "owner": {
+    "uuid": "0819f05c4eef4c71ace90d822a990e87",
+    "username": "lcsc",
+    "nickname": "LCSC",
+    "avatar": "//image.lceda.cn/avatars/2018/6/kFlrasi7W06gTdBLAqW3fkrqbDhbowynuSzkjqso.png"
+  },
+  "tags": [],
+  "updateTime": 1702519506,
+  "updated_at": "2025-01-14 22:28:52",
+  "dataStr": {
+    "head": {
+      "docType": "2",
+      "editorVersion": "6.5.34",
+      "x": 400,
+      "y": 300,
+      "c_para": {
+        "pre": "U?",
+        "name": "BQ27427YZFR",
+        "package": "DSBGA-9_L1.6-W1.6-R3-C3-P0.50-TL",
+        "Supplier": "LCSC",
+        "Supplier Part": "C6075475",
+        "Manufacturer": "TI(德州仪器)",
+        "Manufacturer Part": "BQ27427YZFR",
+        "JLCPCB Part Class": "Extended Part",
+        "Contributor": "lcsc"
+      },
+      "puuid": "1d4021c3e7834333bb70c3afa319dd77",
+      "utime": 1693386948,
+      "uuid": "87f893df36f84e38b54946b296148728",
+      "importFlag": 0,
+      "c_spiceCmd": null,
+      "pre": "U?",
+      "name": "BQ27427YZFR",
+      "hasIdFlag": true
+    },
+    "canvas": "CA~1000~1000~#FFFFFF~yes~#CCCCCC~5~1000~1000~line~5~pixel~5~400~300",
+    "shape": [
+      "R~365~270~2~2~70~60~#880000~1~0~none~gge1~0~",
+      "E~370~275~1.5~1.5~#880000~1~0~#880000~gge2~0",
+      "P~show~0~A1~355~280~180~gge4A1~0^^355~280^^M355,280h10~#880000^^1~368.7~284~0~GPOUT~start~~~#0000FF^^1~364.5~279~0~A1~end~~~#0000FF^^0~362~280^^0~M 365 283 L 368 280 L 365 277",
+      "P~show~0~A2~355~290~180~gge4A2~0^^355~290^^M355,290h10~#880000^^1~368.7~294~0~SDA~start~~~#0000FF^^1~364.5~289~0~A2~end~~~#0000FF^^0~362~290^^0~M 365 293 L 368 290 L 365 287",
+      "P~show~0~A3~355~300~180~gge4A3~0^^355~300^^M355,300h10~#880000^^1~368.7~304~0~SCL~start~~~#0000FF^^1~364.5~299~0~A3~end~~~#0000FF^^0~362~300^^0~M 365 303 L 368 300 L 365 297",
+      "P~show~0~B1~355~310~180~gge4B1~0^^355~310^^M355,310h10~#880000^^1~368.7~314~0~BIN~start~~~#0000FF^^1~364.5~309~0~B1~end~~~#0000FF^^0~362~310^^0~M 365 313 L 368 310 L 365 307",
+      "P~show~0~B2~355~320~180~gge4B2~0^^355~320^^M355,320h10~#000000^^1~368.7~324~0~VSS~start~~~#000000^^1~364.5~319~0~B2~end~~~#000000^^0~362~320^^0~M 365 323 L 368 320 L 365 317",
+      "P~show~0~B3~445~315~0~gge4B3~0^^445~315^^M445,315h-10~#FF0000^^1~431.3~319~0~VDD~end~~~#FF0000^^1~435.5~314~0~B3~start~~~#FF0000^^0~438~315^^0~M 435 312 L 432 315 L 435 318",
+      "P~show~0~C1~445~305~0~gge4C1~0^^445~305^^M445,305h-10~#000000^^1~431.3~309~0~VSS~end~~~#000000^^1~435.5~304~0~C1~start~~~#000000^^0~438~305^^0~M 435 302 L 432 305 L 435 308",
+      "P~show~0~C2~445~295~0~gge4C2~0^^445~295^^M445,295h-10~#880000^^1~431.3~299~0~SRX~end~~~#0000FF^^1~435.5~294~0~C2~start~~~#0000FF^^0~438~295^^0~M 435 292 L 432 295 L 435 298",
+      "P~show~0~C3~445~285~0~gge4C3~0^^445~285^^M445,285h-10~#880000^^1~431.3~289~0~BAT~end~~~#0000FF^^1~435.5~284~0~C3~start~~~#0000FF^^0~438~285^^0~M 435 282 L 432 285 L 435 288"
+    ],
+    "BBox": {
+      "x": 352.2,
+      "y": 269.7,
+      "width": 95.8,
+      "height": 60.3
+    },
+    "colors": []
+  },
+  "jlcOnSale": 1,
+  "datastrid": "2c8fe77f643145ee9be57782dba62ea5",
+  "verify": true,
+  "SMT": true,
+  "writable": false,
+  "isFavorite": false,
+  "packageDetail": {
+    "uuid": "1d4021c3e7834333bb70c3afa319dd77",
+    "title": "DSBGA-9_L1.6-W1.6-R3-C3-P0.50-TL",
+    "docType": 4,
+    "updateTime": 1693982293,
+    "owner": {
+      "uuid": "0819f05c4eef4c71ace90d822a990e87",
+      "username": "lcsc",
+      "nickname": "LCSC",
+      "avatar": "//image.lceda.cn/avatars/2018/6/kFlrasi7W06gTdBLAqW3fkrqbDhbowynuSzkjqso.png"
+    },
+    "datastrid": "146e7047e1884de2b52f554a85834369",
+    "writable": false,
+    "dataStr": {
+      "head": {
+        "docType": "4",
+        "editorVersion": "6.5.34",
+        "newgId": true,
+        "c_para": {
+          "package": "DSBGA-9_L1.6-W1.6-R3-C3-P0.50-TL",
+          "pre": "U?",
+          "Contributor": "lcsc",
+          "link": "https://www.ti.com/lit/ds/symlink/bq27421-g1.pdf?HQS=dis-dk-null-digikeymode-dsf-pf-null-wwe&ts=1642096323635&ref_url=https%253A%252F%252Fwww.ti.com%252Fgeneral%252Fdocs%252Fsuppproductinfo.tsp%253FdistId%253D10%2526gotoUrl%253Dhttps%253A%252F%252Fwww.ti.com%252Flit%252Fgpn%252Fbq27421-g1",
+          "3DModel": "DSBGA-9_L1.6-W1.6-R3-C3-P0.50-TL"
+        },
+        "x": 4003.4515,
+        "y": 3001.0165,
+        "hasIdFlag": true,
+        "utime": 1693980427,
+        "uuid": "1d4021c3e7834333bb70c3afa319dd77",
+        "importFlag": 0,
+        "transformList": "",
+        "uuid_3d": "941199280799419dbb45710d5bce5762"
+      },
+      "canvas": "CA~1000~1000~#000000~yes~#FFFFFF~10~1000~1000~line~0.5~mm~1~45~visible~0.5~4003.4515~3001.0165~0~none",
+      "shape": [
+        "CIRCLE~4000.263~2997.906~0.118~0.2362~101~gge301~0~~",
+        "CIRCLE~4001.09~2999.048~0.394~0.7874~12~gge298~0~~",
+        "CIRCLE~4001.483~2999.048~0.295~0.5906~100~gge271~0~~",
+        "CIRCLE~4001.483~3001.016~0.295~0.5906~100~gge274~0~~",
+        "CIRCLE~4001.483~3002.985~0.295~0.5906~100~gge277~0~~",
+        "CIRCLE~4003.452~2999.048~0.295~0.5906~100~gge280~0~~",
+        "CIRCLE~4003.452~3001.016~0.295~0.5906~100~gge283~0~~",
+        "CIRCLE~4003.452~3002.985~0.295~0.5906~100~gge286~0~~",
+        "CIRCLE~4005.42~2999.048~0.295~0.5906~100~gge289~0~~",
+        "CIRCLE~4005.42~3001.016~0.295~0.5906~100~gge292~0~~",
+        "CIRCLE~4005.42~3002.985~0.295~0.5906~100~gge295~0~~",
+        "SOLIDREGION~99~~M 4000.2634 2997.905 L 4006.6414 2997.905 L 4006.6414 3004.1254 L 4000.2634 3004.1254 Z~solid~gge268~~~~0",
+        "SOLIDREGION~5~~M 4001.0705 2998.4561 L 4001.8973 2998.4561 L 4002.0744 2998.6333 L 4002.0744 2999.4601 L 4001.8973 2999.6372 L 4001.0705 2999.6372 L 4000.8933 2999.4601 L 4000.8933 2998.6333 Z~solid~gge241~~~~0",
+        "SOLIDREGION~5~~M 4001.0705 3000.4246 L 4001.8973 3000.4246 L 4002.0744 3000.6018 L 4002.0744 3001.4286 L 4001.8973 3001.6058 L 4001.0705 3001.6058 L 4000.8933 3001.4286 L 4000.8933 3000.6018 Z~solid~gge244~~~~0",
+        "SOLIDREGION~5~~M 4001.0705 3002.3932 L 4001.8973 3002.3932 L 4002.0744 3002.5703 L 4002.0744 3003.3971 L 4001.8973 3003.5743 L 4001.0705 3003.5743 L 4000.8933 3003.3971 L 4000.8933 3002.5703 Z~solid~gge247~~~~0",
+        "SOLIDREGION~5~~M 4003.039 2998.4561 L 4003.8658 2998.4561 L 4004.043 2998.6333 L 4004.043 2999.4601 L 4003.8658 2999.6372 L 4003.039 2999.6372 L 4002.8618 2999.4601 L 4002.8618 2998.6333 Z~solid~gge250~~~~0",
+        "SOLIDREGION~5~~M 4003.039 3000.4246 L 4003.8658 3000.4246 L 4004.043 3000.6018 L 4004.043 3001.4286 L 4003.8658 3001.6058 L 4003.039 3001.6058 L 4002.8618 3001.4286 L 4002.8618 3000.6018 Z~solid~gge253~~~~0",
+        "SOLIDREGION~5~~M 4003.039 3002.3932 L 4003.8658 3002.3932 L 4004.043 3002.5703 L 4004.043 3003.3971 L 4003.8658 3003.5743 L 4003.039 3003.5743 L 4002.8618 3003.3971 L 4002.8618 3002.5703 Z~solid~gge256~~~~0",
+        "SOLIDREGION~5~~M 4005.0075 2998.4561 L 4005.8343 2998.4561 L 4006.0115 2998.6333 L 4006.0115 2999.4601 L 4005.8343 2999.6372 L 4005.0075 2999.6372 L 4004.8304 2999.4601 L 4004.8304 2998.6333 Z~solid~gge259~~~~0",
+        "SOLIDREGION~5~~M 4005.0075 3000.4246 L 4005.8343 3000.4246 L 4006.0115 3000.6018 L 4006.0115 3001.4286 L 4005.8343 3001.6058 L 4005.0075 3001.6058 L 4004.8304 3001.4286 L 4004.8304 3000.6018 Z~solid~gge262~~~~0",
+        "SOLIDREGION~5~~M 4005.0075 3002.3932 L 4005.8343 3002.3932 L 4006.0115 3002.5703 L 4006.0115 3003.3971 L 4005.8343 3003.5743 L 4005.0075 3003.5743 L 4004.8304 3003.3971 L 4004.8304 3002.5703 Z~solid~gge265~~~~0",
+        "PAD~ELLIPSE~4001.483~2999.048~0.9449~0.9449~1~~A1~0~~270~gge214~0~~Y~0~-393.7008~0.1500~4001.4839,2999.0467",
+        "PAD~ELLIPSE~4001.483~3001.016~0.9449~0.9449~1~~B1~0~~270~gge217~0~~Y~0~-393.7008~0.1500~4001.4839,3001.0152",
+        "PAD~ELLIPSE~4001.483~3002.985~0.9449~0.9449~1~~C1~0~~270~gge220~0~~Y~0~-393.7008~0.1500~4001.4839,3002.9837",
+        "PAD~ELLIPSE~4003.452~2999.048~0.9449~0.9449~1~~A2~0~~270~gge223~0~~Y~0~-393.7008~0.1500~4003.4524,2999.0467",
+        "PAD~ELLIPSE~4003.452~3001.016~0.9449~0.9449~1~~B2~0~~270~gge226~0~~Y~0~-393.7008~0.1500~4003.4524,3001.0152",
+        "PAD~ELLIPSE~4003.452~3002.985~0.9449~0.9449~1~~C2~0~~270~gge229~0~~Y~0~-393.7008~0.1500~4003.4524,3002.9837",
+        "PAD~ELLIPSE~4005.42~2999.048~0.9449~0.9449~1~~A3~0~~270~gge232~0~~Y~0~-393.7008~0.1500~4005.4209,2999.0467",
+        "PAD~ELLIPSE~4005.42~3001.016~0.9449~0.9449~1~~B3~0~~270~gge235~0~~Y~0~-393.7008~0.1500~4005.4209,3001.0152",
+        "PAD~ELLIPSE~4005.42~3002.985~0.9449~0.9449~1~~C3~0~~270~gge238~0~~Y~0~-393.7008~0.1500~4005.4209,3002.9837",
+        "TRACK~0.6~3~~3999.9634 2997.6051 4006.9414 2997.6051 4006.9414 3004.4254 3999.9634 3004.4254 3999.9634 2997.6051~gge310~0",
+        "CIRCLE~3998.388~2999.048~0.394~0.7874~3~gge211~0~~",
+        "SVGNODE~{\"gId\":\"g1_outline\",\"nodeName\":\"g\",\"nodeType\":1,\"layerid\":\"19\",\"attrs\":{\"c_width\":\"6.37794\",\"c_height\":\"6.37794\",\"c_rotation\":\"0,0,0\",\"z\":\"0\",\"c_origin\":\"4003.4514,3001.0162\",\"uuid\":\"2ca51a507e444609a2e12240e03fe96e\",\"c_etype\":\"outline3D\",\"id\":\"g1_outline\",\"title\":\"DSBGA-9_L1.6-W1.6-R3-C3-P0.50-TL\",\"layerid\":\"19\",\"transform\":\"scale(1) translate(0, 0)\"},\"childNodes\":[{\"gId\":\"g1_outline_line0\",\"nodeName\":\"polyline\",\"nodeType\":1,\"attrs\":{\"fill\":\"none\",\"id\":\"g1_outline_line0\",\"c_shapetype\":\"line\",\"points\":\"4000.2625 2997.8272 4000.2625 3000.0319 4000.2625 3000.8193 4000.2625 3002.0004 4000.2625 3003.1028 4000.2625 3003.3783 4000.2625 3003.4571 4000.2625 3003.8114 4000.2625 3003.8902 4000.2625 3004.2051 4002.1916 3004.2051 4002.4672 3004.2051 4004.4357 3004.2051 4004.7901 3004.2051 4005.0263 3004.2051 4005.2231 3004.2051 4005.2625 3004.2051 4005.3806 3004.2051 4005.6168 3004.2051 4005.6956 3004.2051 4005.7743 3004.2051 4006.0499 3004.2051 4006.2467 3004.2051 4006.4436 3004.2051 4006.6404 3004.2051 4006.6404 3003.8902 4006.6404 3003.772 4006.6404 3003.4571 4006.6404 3003.3783 4006.6404 3003.1028 4006.6404 3002.0004 4006.6404 3000.8193 4006.6404 3000.0319 4006.6404 2997.8272 4006.4436 2997.8272 4006.2467 2997.8272 4006.0499 2997.8272 4005.7743 2997.8272 4005.6956 2997.8272 4005.6168 2997.8272 4005.3806 2997.8272 4005.2625 2997.8272 4005.2231 2997.8272 4005.0263 2997.8272 4004.7901 2997.8272 4004.4357 2997.8272 4002.4672 2997.8272 4002.1916 2997.8272 4000.2625 2997.8272 4000.2625 2997.8272\"}}]}"
+      ],
+      "layers": [
+        "1~TopLayer~#FF0000~true~true~true~",
+        "2~BottomLayer~#0000FF~true~false~true~",
+        "3~TopSilkLayer~#FFCC00~true~false~true~",
+        "4~BottomSilkLayer~#66CC33~true~false~true~",
+        "5~TopPasteMaskLayer~#808080~true~false~true~",
+        "6~BottomPasteMaskLayer~#800000~true~false~true~",
+        "7~TopSolderMaskLayer~#800080~true~false~true~0.3",
+        "8~BottomSolderMaskLayer~#AA00FF~true~false~true~0.3",
+        "9~Ratlines~#6464FF~false~false~true~",
+        "10~BoardOutLine~#FF00FF~true~false~true~",
+        "11~Multi-Layer~#C0C0C0~true~false~true~",
+        "12~Document~#FFFFFF~true~false~true~",
+        "13~TopAssembly~#33CC99~true~false~true~",
+        "14~BottomAssembly~#5555FF~true~false~true~",
+        "15~Mechanical~#F022F0~true~false~true~",
+        "19~3DModel~#66CCFF~true~false~true~",
+        "21~Inner1~#999966~false~false~false~~",
+        "22~Inner2~#008000~false~false~false~~",
+        "23~Inner3~#00FF00~false~false~false~~",
+        "24~Inner4~#BC8E00~false~false~false~~",
+        "25~Inner5~#70DBFA~false~false~false~~",
+        "26~Inner6~#00CC66~false~false~false~~",
+        "27~Inner7~#9966FF~false~false~false~~",
+        "28~Inner8~#800080~false~false~false~~",
+        "29~Inner9~#008080~false~false~false~~",
+        "30~Inner10~#15935F~false~false~false~~",
+        "31~Inner11~#000080~false~false~false~~",
+        "32~Inner12~#00B400~false~false~false~~",
+        "33~Inner13~#2E4756~false~false~false~~",
+        "34~Inner14~#99842F~false~false~false~~",
+        "35~Inner15~#FFFFAA~false~false~false~~",
+        "36~Inner16~#99842F~false~false~false~~",
+        "37~Inner17~#2E4756~false~false~false~~",
+        "38~Inner18~#3535FF~false~false~false~~",
+        "39~Inner19~#8000BC~false~false~false~~",
+        "40~Inner20~#43AE5F~false~false~false~~",
+        "41~Inner21~#C3ECCE~false~false~false~~",
+        "42~Inner22~#728978~false~false~false~~",
+        "43~Inner23~#39503F~false~false~false~~",
+        "44~Inner24~#0C715D~false~false~false~~",
+        "45~Inner25~#5A8A80~false~false~false~~",
+        "46~Inner26~#2B937E~false~false~false~~",
+        "47~Inner27~#23999D~false~false~false~~",
+        "48~Inner28~#45B4E3~false~false~false~~",
+        "49~Inner29~#215DA1~false~false~false~~",
+        "50~Inner30~#4564D7~false~false~false~~",
+        "51~Inner31~#6969E9~false~false~false~~",
+        "52~Inner32~#9069E9~false~false~false~~",
+        "99~ComponentShapeLayer~#00CCCC~true~false~true~0.4",
+        "100~LeadShapeLayer~#CC9999~true~false~true~",
+        "101~ComponentMarkingLayer~#66FFCC~true~false~true~",
+        "Hole~Hole~#222222~false~false~true~",
+        "DRCError~DRCError~#FAD609~false~false~true~"
+      ],
+      "objects": [
+        "All~true~false",
+        "Component~true~true",
+        "Prefix~true~true",
+        "Name~true~false",
+        "Track~true~true",
+        "Pad~true~true",
+        "Via~true~true",
+        "Hole~true~true",
+        "Copper_Area~true~true",
+        "Circle~true~true",
+        "Arc~true~true",
+        "Solid_Region~true~true",
+        "Text~true~true",
+        "Image~true~true",
+        "Rect~true~true",
+        "Dimension~true~true",
+        "Protractor~true~true"
+      ],
+      "BBox": {
+        "x": 3998,
+        "y": 2997.6,
+        "width": 8.9,
+        "height": 6.8
+      }
+    }
+  }
+}
\ No newline at end of file