circuit-json-to-lbrn 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/index.js +478 -2
  2. package/lib/element-handlers/addPcbCutout/addCirclePcbCutout.ts +52 -0
  3. package/lib/element-handlers/addPcbCutout/addPathPcbCutout.ts +73 -0
  4. package/lib/element-handlers/addPcbCutout/addPolygonPcbCutout.ts +68 -0
  5. package/lib/element-handlers/addPcbCutout/addRectPcbCutout.ts +71 -0
  6. package/lib/element-handlers/addPcbCutout/index.ts +31 -0
  7. package/lib/element-handlers/addPcbHole/addCirclePcbHole.ts +51 -0
  8. package/lib/element-handlers/addPcbHole/addOvalPcbHole.ts +59 -0
  9. package/lib/element-handlers/addPcbHole/addPillPcbHole.ts +59 -0
  10. package/lib/element-handlers/addPcbHole/addRectPcbHole.ts +61 -0
  11. package/lib/element-handlers/addPcbHole/addRotatedPillPcbHole.ts +62 -0
  12. package/lib/element-handlers/addPcbHole/index.ts +36 -0
  13. package/lib/index.ts +10 -0
  14. package/package.json +1 -1
  15. package/tests/examples/addPcbCutout/__snapshots__/pcb-cutout-circle.snap.svg +8 -0
  16. package/tests/examples/addPcbCutout/__snapshots__/pcb-cutout-path.snap.svg +8 -0
  17. package/tests/examples/addPcbCutout/__snapshots__/pcb-cutout-polygon.snap.svg +8 -0
  18. package/tests/examples/addPcbCutout/__snapshots__/pcb-cutout-rect.snap.svg +8 -0
  19. package/tests/examples/addPcbCutout/pcb-cutout-circle.test.ts +49 -0
  20. package/tests/examples/addPcbCutout/pcb-cutout-path.test.ts +44 -0
  21. package/tests/examples/addPcbCutout/pcb-cutout-polygon.test.ts +54 -0
  22. package/tests/examples/addPcbCutout/pcb-cutout-rect.test.ts +48 -0
  23. package/tests/examples/addPcbHole/__snapshots__/pcb-hole-circle.snap.svg +8 -0
  24. package/tests/examples/addPcbHole/__snapshots__/pcb-hole-oval.snap.svg +8 -0
  25. package/tests/examples/addPcbHole/__snapshots__/pcb-hole-pill.snap.svg +8 -0
  26. package/tests/examples/addPcbHole/__snapshots__/pcb-hole-rect.snap.svg +8 -0
  27. package/tests/examples/addPcbHole/__snapshots__/pcb-hole-rotated-pill.snap.svg +8 -0
  28. package/tests/examples/addPcbHole/__snapshots__/pcb-hole-with-soldermask.snap.svg +8 -0
  29. package/tests/examples/addPcbHole/pcb-hole-circle.test.ts +47 -0
  30. package/tests/examples/addPcbHole/pcb-hole-oval.test.ts +49 -0
  31. package/tests/examples/addPcbHole/pcb-hole-pill.test.ts +49 -0
  32. package/tests/examples/addPcbHole/pcb-hole-rect.test.ts +49 -0
  33. package/tests/examples/addPcbHole/pcb-hole-rotated-pill.test.ts +61 -0
  34. package/tests/examples/addPcbHole/pcb-hole-with-soldermask.test.ts +60 -0
@@ -0,0 +1,71 @@
1
+ import type { PcbCutoutRect } from "circuit-json"
2
+ import type { ConvertContext } from "../../ConvertContext"
3
+ import { ShapePath } from "lbrnts"
4
+ import { createRoundedRectPath } from "../../helpers/roundedRectShape"
5
+
6
+ /**
7
+ * Adds a rectangular PCB cutout to the project
8
+ * Cutouts are regions removed from the board entirely
9
+ */
10
+ export const addRectPcbCutout = (
11
+ cutout: PcbCutoutRect,
12
+ ctx: ConvertContext,
13
+ ): void => {
14
+ const {
15
+ project,
16
+ throughBoardCutSetting,
17
+ origin,
18
+ includeCopper,
19
+ includeSoldermask,
20
+ soldermaskMargin,
21
+ soldermaskCutSetting,
22
+ } = ctx
23
+ const centerX = cutout.center.x + origin.x
24
+ const centerY = cutout.center.y + origin.y
25
+
26
+ // Add the cutout - cut through the board
27
+ if (cutout.width > 0 && cutout.height > 0 && includeCopper) {
28
+ const rotation = (cutout.rotation ?? 0) * (Math.PI / 180) // Convert degrees to radians
29
+ const rectPath = createRoundedRectPath(
30
+ centerX,
31
+ centerY,
32
+ cutout.width,
33
+ cutout.height,
34
+ 0, // no border radius for cutouts
35
+ 4, // segments
36
+ rotation,
37
+ )
38
+ project.children.push(
39
+ new ShapePath({
40
+ cutIndex: throughBoardCutSetting.index,
41
+ verts: rectPath.verts,
42
+ prims: rectPath.prims,
43
+ isClosed: true,
44
+ }),
45
+ )
46
+ }
47
+
48
+ // Add soldermask opening if drawing soldermask
49
+ if (cutout.width > 0 && cutout.height > 0 && includeSoldermask) {
50
+ const rotation = (cutout.rotation ?? 0) * (Math.PI / 180) // Convert degrees to radians
51
+ const smWidth = cutout.width + 2 * soldermaskMargin
52
+ const smHeight = cutout.height + 2 * soldermaskMargin
53
+ const rectPath = createRoundedRectPath(
54
+ centerX,
55
+ centerY,
56
+ smWidth,
57
+ smHeight,
58
+ 0, // no border radius for cutouts
59
+ 4, // segments
60
+ rotation,
61
+ )
62
+ project.children.push(
63
+ new ShapePath({
64
+ cutIndex: soldermaskCutSetting.index,
65
+ verts: rectPath.verts,
66
+ prims: rectPath.prims,
67
+ isClosed: true,
68
+ }),
69
+ )
70
+ }
71
+ }
@@ -0,0 +1,31 @@
1
+ import type { PcbCutout } from "circuit-json"
2
+ import type { ConvertContext } from "../../ConvertContext"
3
+ import { addCirclePcbCutout } from "./addCirclePcbCutout"
4
+ import { addRectPcbCutout } from "./addRectPcbCutout"
5
+ import { addPolygonPcbCutout } from "./addPolygonPcbCutout"
6
+ import { addPathPcbCutout } from "./addPathPcbCutout"
7
+
8
+ /**
9
+ * Main dispatcher function that routes PCB cutouts to the appropriate handler
10
+ * based on their shape property
11
+ */
12
+ export const addPcbCutout = (cutout: PcbCutout, ctx: ConvertContext): void => {
13
+ switch (cutout.shape) {
14
+ case "circle":
15
+ return addCirclePcbCutout(cutout, ctx)
16
+
17
+ case "rect":
18
+ return addRectPcbCutout(cutout, ctx)
19
+
20
+ case "polygon":
21
+ return addPolygonPcbCutout(cutout, ctx)
22
+
23
+ case "path":
24
+ return addPathPcbCutout(cutout, ctx)
25
+
26
+ default:
27
+ // Type guard to ensure we handle all cases
28
+ const _exhaustive: never = cutout
29
+ console.warn(`Unknown cutout shape: ${(cutout as any).shape}`)
30
+ }
31
+ }
@@ -0,0 +1,51 @@
1
+ import type { PcbHoleCircle, PcbHoleCircleOrSquare } from "circuit-json"
2
+ import type { ConvertContext } from "../../ConvertContext"
3
+ import { ShapePath } from "lbrnts"
4
+ import { createCirclePath } from "../../helpers/circleShape"
5
+
6
+ /**
7
+ * Adds a circular PCB hole (non-plated) to the project
8
+ */
9
+ export const addCirclePcbHole = (
10
+ hole: PcbHoleCircle | PcbHoleCircleOrSquare,
11
+ ctx: ConvertContext,
12
+ ): void => {
13
+ const {
14
+ project,
15
+ throughBoardCutSetting,
16
+ soldermaskCutSetting,
17
+ origin,
18
+ includeSoldermask,
19
+ soldermaskMargin,
20
+ } = ctx
21
+ const centerX = hole.x + origin.x
22
+ const centerY = hole.y + origin.y
23
+
24
+ // Add soldermask opening if drawing soldermask
25
+ if (hole.hole_diameter > 0 && includeSoldermask) {
26
+ const smRadius = hole.hole_diameter / 2 + soldermaskMargin
27
+ const soldermaskPath = createCirclePath(centerX, centerY, smRadius)
28
+ project.children.push(
29
+ new ShapePath({
30
+ cutIndex: soldermaskCutSetting.index,
31
+ verts: soldermaskPath.verts,
32
+ prims: soldermaskPath.prims,
33
+ isClosed: true,
34
+ }),
35
+ )
36
+ }
37
+
38
+ // Add the hole - cut through the board
39
+ if (hole.hole_diameter > 0) {
40
+ const radius = hole.hole_diameter / 2
41
+ const circlePath = createCirclePath(centerX, centerY, radius)
42
+ project.children.push(
43
+ new ShapePath({
44
+ cutIndex: throughBoardCutSetting.index,
45
+ verts: circlePath.verts,
46
+ prims: circlePath.prims,
47
+ isClosed: true,
48
+ }),
49
+ )
50
+ }
51
+ }
@@ -0,0 +1,59 @@
1
+ import type { PcbHoleOval } from "circuit-json"
2
+ import type { ConvertContext } from "../../ConvertContext"
3
+ import { ShapePath } from "lbrnts"
4
+ import { createOvalPath } from "../../helpers/ovalShape"
5
+
6
+ /**
7
+ * Adds an oval PCB hole (non-plated) to the project
8
+ */
9
+ export const addOvalPcbHole = (
10
+ hole: PcbHoleOval,
11
+ ctx: ConvertContext,
12
+ ): void => {
13
+ const {
14
+ project,
15
+ throughBoardCutSetting,
16
+ soldermaskCutSetting,
17
+ origin,
18
+ includeSoldermask,
19
+ soldermaskMargin,
20
+ } = ctx
21
+ const centerX = hole.x + origin.x
22
+ const centerY = hole.y + origin.y
23
+
24
+ // Add soldermask opening if drawing soldermask
25
+ if (hole.hole_width > 0 && hole.hole_height > 0 && includeSoldermask) {
26
+ const soldermaskPath = createOvalPath(
27
+ centerX,
28
+ centerY,
29
+ hole.hole_width + soldermaskMargin * 2,
30
+ hole.hole_height + soldermaskMargin * 2,
31
+ )
32
+ project.children.push(
33
+ new ShapePath({
34
+ cutIndex: soldermaskCutSetting.index,
35
+ verts: soldermaskPath.verts,
36
+ prims: soldermaskPath.prims,
37
+ isClosed: true,
38
+ }),
39
+ )
40
+ }
41
+
42
+ // Add the hole - cut through the board
43
+ if (hole.hole_width > 0 && hole.hole_height > 0) {
44
+ const ovalPath = createOvalPath(
45
+ centerX,
46
+ centerY,
47
+ hole.hole_width,
48
+ hole.hole_height,
49
+ )
50
+ project.children.push(
51
+ new ShapePath({
52
+ cutIndex: throughBoardCutSetting.index,
53
+ verts: ovalPath.verts,
54
+ prims: ovalPath.prims,
55
+ isClosed: true,
56
+ }),
57
+ )
58
+ }
59
+ }
@@ -0,0 +1,59 @@
1
+ import type { PcbHolePill } from "circuit-json"
2
+ import type { ConvertContext } from "../../ConvertContext"
3
+ import { ShapePath } from "lbrnts"
4
+ import { createPillPath } from "../../helpers/pillShape"
5
+
6
+ /**
7
+ * Adds a pill-shaped PCB hole (non-plated) to the project
8
+ */
9
+ export const addPillPcbHole = (
10
+ hole: PcbHolePill,
11
+ ctx: ConvertContext,
12
+ ): void => {
13
+ const {
14
+ project,
15
+ throughBoardCutSetting,
16
+ soldermaskCutSetting,
17
+ origin,
18
+ includeSoldermask,
19
+ soldermaskMargin,
20
+ } = ctx
21
+ const centerX = hole.x + origin.x
22
+ const centerY = hole.y + origin.y
23
+
24
+ // Add soldermask opening if drawing soldermask
25
+ if (hole.hole_width > 0 && hole.hole_height > 0 && includeSoldermask) {
26
+ const soldermaskPath = createPillPath(
27
+ centerX,
28
+ centerY,
29
+ hole.hole_width + soldermaskMargin * 2,
30
+ hole.hole_height + soldermaskMargin * 2,
31
+ )
32
+ project.children.push(
33
+ new ShapePath({
34
+ cutIndex: soldermaskCutSetting.index,
35
+ verts: soldermaskPath.verts,
36
+ prims: soldermaskPath.prims,
37
+ isClosed: true,
38
+ }),
39
+ )
40
+ }
41
+
42
+ // Add the hole - cut through the board
43
+ if (hole.hole_width > 0 && hole.hole_height > 0) {
44
+ const pillPath = createPillPath(
45
+ centerX,
46
+ centerY,
47
+ hole.hole_width,
48
+ hole.hole_height,
49
+ )
50
+ project.children.push(
51
+ new ShapePath({
52
+ cutIndex: throughBoardCutSetting.index,
53
+ verts: pillPath.verts,
54
+ prims: pillPath.prims,
55
+ isClosed: true,
56
+ }),
57
+ )
58
+ }
59
+ }
@@ -0,0 +1,61 @@
1
+ import type { PcbHoleRect } from "circuit-json"
2
+ import type { ConvertContext } from "../../ConvertContext"
3
+ import { ShapePath } from "lbrnts"
4
+ import { createRoundedRectPath } from "../../helpers/roundedRectShape"
5
+
6
+ /**
7
+ * Adds a rectangular PCB hole (non-plated) to the project
8
+ */
9
+ export const addRectPcbHole = (
10
+ hole: PcbHoleRect,
11
+ ctx: ConvertContext,
12
+ ): void => {
13
+ const {
14
+ project,
15
+ throughBoardCutSetting,
16
+ soldermaskCutSetting,
17
+ origin,
18
+ includeSoldermask,
19
+ soldermaskMargin,
20
+ } = ctx
21
+ const centerX = hole.x + origin.x
22
+ const centerY = hole.y + origin.y
23
+
24
+ // Add soldermask opening if drawing soldermask
25
+ if (hole.hole_width > 0 && hole.hole_height > 0 && includeSoldermask) {
26
+ const soldermaskPath = createRoundedRectPath(
27
+ centerX,
28
+ centerY,
29
+ hole.hole_width + soldermaskMargin * 2,
30
+ hole.hole_height + soldermaskMargin * 2,
31
+ 0, // no border radius for rect holes
32
+ )
33
+ project.children.push(
34
+ new ShapePath({
35
+ cutIndex: soldermaskCutSetting.index,
36
+ verts: soldermaskPath.verts,
37
+ prims: soldermaskPath.prims,
38
+ isClosed: true,
39
+ }),
40
+ )
41
+ }
42
+
43
+ // Add the hole - cut through the board
44
+ if (hole.hole_width > 0 && hole.hole_height > 0) {
45
+ const rectPath = createRoundedRectPath(
46
+ centerX,
47
+ centerY,
48
+ hole.hole_width,
49
+ hole.hole_height,
50
+ 0, // no border radius for rect holes
51
+ )
52
+ project.children.push(
53
+ new ShapePath({
54
+ cutIndex: throughBoardCutSetting.index,
55
+ verts: rectPath.verts,
56
+ prims: rectPath.prims,
57
+ isClosed: true,
58
+ }),
59
+ )
60
+ }
61
+ }
@@ -0,0 +1,62 @@
1
+ import type { PcbHoleRotatedPill } from "circuit-json"
2
+ import type { ConvertContext } from "../../ConvertContext"
3
+ import { ShapePath } from "lbrnts"
4
+ import { createPillPath } from "../../helpers/pillShape"
5
+
6
+ /**
7
+ * Adds a rotated pill-shaped PCB hole (non-plated) to the project
8
+ */
9
+ export const addRotatedPillPcbHole = (
10
+ hole: PcbHoleRotatedPill,
11
+ ctx: ConvertContext,
12
+ ): void => {
13
+ const {
14
+ project,
15
+ throughBoardCutSetting,
16
+ soldermaskCutSetting,
17
+ origin,
18
+ includeSoldermask,
19
+ soldermaskMargin,
20
+ } = ctx
21
+ const centerX = hole.x + origin.x
22
+ const centerY = hole.y + origin.y
23
+ const rotation = (hole.ccw_rotation || 0) * (Math.PI / 180) // Convert degrees to radians
24
+
25
+ // Add soldermask opening if drawing soldermask
26
+ if (hole.hole_width > 0 && hole.hole_height > 0 && includeSoldermask) {
27
+ const soldermaskPath = createPillPath(
28
+ centerX,
29
+ centerY,
30
+ hole.hole_width + soldermaskMargin * 2,
31
+ hole.hole_height + soldermaskMargin * 2,
32
+ rotation,
33
+ )
34
+ project.children.push(
35
+ new ShapePath({
36
+ cutIndex: soldermaskCutSetting.index,
37
+ verts: soldermaskPath.verts,
38
+ prims: soldermaskPath.prims,
39
+ isClosed: true,
40
+ }),
41
+ )
42
+ }
43
+
44
+ // Add the hole - cut through the board
45
+ if (hole.hole_width > 0 && hole.hole_height > 0) {
46
+ const pillPath = createPillPath(
47
+ centerX,
48
+ centerY,
49
+ hole.hole_width,
50
+ hole.hole_height,
51
+ rotation,
52
+ )
53
+ project.children.push(
54
+ new ShapePath({
55
+ cutIndex: throughBoardCutSetting.index,
56
+ verts: pillPath.verts,
57
+ prims: pillPath.prims,
58
+ isClosed: true,
59
+ }),
60
+ )
61
+ }
62
+ }
@@ -0,0 +1,36 @@
1
+ import type { PcbHole } from "circuit-json"
2
+ import type { ConvertContext } from "../../ConvertContext"
3
+ import { addCirclePcbHole } from "./addCirclePcbHole"
4
+ import { addRectPcbHole } from "./addRectPcbHole"
5
+ import { addOvalPcbHole } from "./addOvalPcbHole"
6
+ import { addPillPcbHole } from "./addPillPcbHole"
7
+ import { addRotatedPillPcbHole } from "./addRotatedPillPcbHole"
8
+
9
+ /**
10
+ * Main dispatcher function that routes PCB holes to the appropriate handler
11
+ * based on their hole_shape property
12
+ */
13
+ export const addPcbHole = (hole: PcbHole, ctx: ConvertContext): void => {
14
+ switch (hole.hole_shape) {
15
+ case "circle":
16
+ case "square":
17
+ return addCirclePcbHole(hole, ctx)
18
+
19
+ case "rect":
20
+ return addRectPcbHole(hole, ctx)
21
+
22
+ case "oval":
23
+ return addOvalPcbHole(hole, ctx)
24
+
25
+ case "pill":
26
+ return addPillPcbHole(hole, ctx)
27
+
28
+ case "rotated_pill":
29
+ return addRotatedPillPcbHole(hole, ctx)
30
+
31
+ default:
32
+ // Type guard to ensure we handle all cases
33
+ const _exhaustive: never = hole
34
+ console.warn(`Unknown hole shape: ${(hole as any).hole_shape}`)
35
+ }
36
+ }
package/lib/index.ts CHANGED
@@ -14,6 +14,8 @@ import {
14
14
  calculateOriginFromBounds,
15
15
  } from "./calculateBounds"
16
16
  import { addPcbVia } from "./element-handlers/addPcbVia"
17
+ import { addPcbHole } from "./element-handlers/addPcbHole"
18
+ import { addPcbCutout } from "./element-handlers/addPcbCutout"
17
19
  // import { writeDebugSvg } from "./writeDebugSvg"
18
20
 
19
21
  export const convertCircuitJsonToLbrn = (
@@ -109,6 +111,14 @@ export const convertCircuitJsonToLbrn = (
109
111
  addPcbVia(via, ctx)
110
112
  }
111
113
 
114
+ for (const hole of db.pcb_hole.list()) {
115
+ addPcbHole(hole, ctx)
116
+ }
117
+
118
+ for (const cutout of db.pcb_cutout.list()) {
119
+ addPcbCutout(cutout, ctx)
120
+ }
121
+
112
122
  // Draw each individual shape geometry as a ShapePath
113
123
  // FOR DEBUGGING!!!
114
124
  // for (const net of Object.keys(connMap.netMap)) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "circuit-json-to-lbrn",
3
3
  "main": "dist/index.js",
4
- "version": "0.0.16",
4
+ "version": "0.0.18",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "start": "bun run site/index.html",
@@ -0,0 +1,8 @@
1
+ <svg width="800" height="1400" viewBox="0 0 800 1400" xmlns="http://www.w3.org/2000/svg">
2
+ <g transform="translate(0, 0)">
3
+ <style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><circle class="pcb-cutout pcb-cutout-circle" cx="263.6363636363636" cy="163.63636363636363" r="54.54545454545455" fill="#FF26E2" data-type="pcb_cutout" data-pcb-layer="drill"/><circle class="pcb-cutout pcb-cutout-circle" cx="536.3636363636364" cy="436.3636363636364" r="81.81818181818181" fill="#FF26E2" data-type="pcb_cutout" data-pcb-layer="drill"/>
4
+ </g>
5
+ <g transform="translate(0, 600) scale(20, 20) translate(19.9, 19.9)">
6
+ <rect x="-19.9" y="-19.9" width="40" height="40" fill="white"/><g transform="matrix(1 0 0 -1 0 0.20000000000000284)"><g transform="matrix(1,0,0,1,0,0)"><path d="M -9.9 -9.9 L 10.1 -9.9 L 10.1 10.1 L -9.9 10.1 L -9.9 -9.9 L -9.9 -9.9 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M -9.9 -9.9 L 10.1 -9.9 L 10.1 10.1 L -9.9 10.1 L -9.9 -9.9 L -9.9 -9.9" fill="none" stroke="#FF0000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M -2.9000000000000004 5.1 L -2.9096305466556065 5.2960342806591205 L -2.9384294391935395 5.4901806440322565 L -2.9861193285355827 5.680569354508925 L -3.052240934977427 5.865366864730179 L -3.1361574713032905 6.042793473651995 L -3.2370607753949097 6.211140466039204 L -3.3539790932745266 6.368786568327291 L -3.4857864376269054 6.514213562373095 L -3.6312134316727094 6.646020906725473 L -3.788859533960796 6.76293922460509 L -3.9572065263480045 6.8638425286967095 L -4.134633135269821 6.947759065022574 L -4.319430645491075 7.013880671464417 L -4.5098193559677435 7.0615705608064605 L -4.703965719340879 7.090369453344393 L -4.9 7.1 L -5.096034280659121 7.090369453344394 L -5.290180644032256 7.0615705608064605 L -5.4805693545089245 7.013880671464418 L -5.66536686473018 6.947759065022574 L -5.842793473651996 6.8638425286967095 L -6.011140466039205 6.76293922460509 L -6.168786568327291 6.646020906725473 L -6.314213562373095 6.514213562373095 L -6.446020906725474 6.368786568327291 L -6.562939224605091 6.211140466039204 L -6.66384252869671 6.0427934736519955 L -6.747759065022574 5.86536686473018 L -6.813880671464418 5.680569354508925 L -6.861570560806461 5.4901806440322565 L -6.890369453344394 5.296034280659121 L -6.9 5.1 L -6.890369453344395 4.903965719340879 L -6.861570560806461 4.709819355967743 L -6.8138806714644184 4.5194306454910755 L -6.747759065022574 4.33463313526982 L -6.66384252869671 4.157206526348005 L -6.562939224605091 3.9888595339607957 L -6.446020906725474 3.831213431672709 L -6.314213562373096 3.6857864376269047 L -6.168786568327292 3.5539790932745263 L -6.011140466039205 3.437060775394909 L -5.842793473651996 3.3361574713032898 L -5.665366864730181 3.2522409349774266 L -5.480569354508925 3.186119328535582 L -5.290180644032258 3.138429439193539 L -5.096034280659121 3.109630546655606 L -4.9 3.0999999999999996 L -4.70396571934088 3.109630546655606 L -4.5098193559677435 3.138429439193539 L -4.319430645491076 3.1861193285355816 L -4.13463313526982 3.2522409349774266 L -3.9572065263480054 3.3361574713032898 L -3.788859533960797 3.437060775394909 L -3.631213431672709 3.553979093274526 L -3.4857864376269054 3.6857864376269043 L -3.353979093274527 3.831213431672708 L -3.2370607753949097 3.9888595339607953 L -3.1361574713032905 4.157206526348004 L -3.0522409349774273 4.334633135269819 L -2.9861193285355827 4.519430645491075 L -2.9384294391935395 4.709819355967742 L -2.9096305466556065 4.903965719340879 L -2.9000000000000004 5.1 L -2.9000000000000004 5.1 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><clipPath id="clip-1764627670784-sxvpqol5n__stack1"><path d="M -2.8000000000000003 5.1 L -2.8101120739883867 5.305835994692077 L -2.8403509111532164 5.509689676233869 L -2.8904252949623617 5.709597822234371 L -2.959852981726298 5.903635207966688 L -3.0479653448684547 6.089933147334595 L -3.153913814164655 6.266697489341164 L -3.276678047938253 6.432225896743655 L -3.4150757595082504 6.584924240491749 L -3.567774103256345 6.723321952061747 L -3.7333025106588353 6.846086185835345 L -3.910066852665405 6.952034655131545 L -4.096364792033311 7.040147018273702 L -4.290402177765629 7.109574705037638 L -4.490310323766131 7.159649088846784 L -4.694164005307923 7.189887926011613 L -4.9 7.199999999999999 L -5.105835994692078 7.189887926011613 L -5.3096896762338694 7.159649088846784 L -5.509597822234371 7.109574705037638 L -5.7036352079666885 7.040147018273702 L -5.889933147334595 6.952034655131545 L -6.0666974893411645 6.846086185835345 L -6.232225896743656 6.723321952061747 L -6.38492424049175 6.58492424049175 L -6.523321952061748 6.432225896743655 L -6.646086185835346 6.266697489341164 L -6.7520346551315455 6.0899331473345955 L -6.8401470182737025 5.903635207966689 L -6.909574705037639 5.709597822234371 L -6.959649088846785 5.50968967623387 L -6.989887926011614 5.305835994692077 L -7 5.1 L -6.989887926011614 4.894164005307922 L -6.959649088846785 4.69031032376613 L -6.909574705037639 4.490402177765629 L -6.8401470182737025 4.2963647920333115 L -6.7520346551315455 4.110066852665405 L -6.646086185835346 3.9333025106588355 L -6.523321952061748 3.7677741032563445 L -6.384924240491751 3.61507575950825 L -6.232225896743657 3.4766780479382526 L -6.0666974893411645 3.3539138141646543 L -5.889933147334596 3.2479653448684545 L -5.70363520796669 3.159852981726298 L -5.5095978222343716 3.090425294962361 L -5.30968967623387 3.040350911153216 L -5.105835994692077 3.010112073988386 L -4.9 2.9999999999999996 L -4.6941640053079245 3.010112073988386 L -4.490310323766131 3.0403509111532157 L -4.29040217776563 3.090425294962361 L -4.096364792033311 3.1598529817262975 L -3.9100668526654054 3.247965344868454 L -3.7333025106588362 3.3539138141646543 L -3.567774103256345 3.476678047938252 L -3.415075759508251 3.615075759508249 L -3.2766780479382533 3.767774103256343 L -3.153913814164655 3.933302510658835 L -3.047965344868455 4.110066852665404 L -2.9598529817262986 4.29636479203331 L -2.8904252949623617 4.4904021777656284 L -2.840350911153217 4.69031032376613 L -2.8101120739883867 4.894164005307923 L -2.8000000000000003 5.1 L -2.8000000000000003 5.1 Z"/></clipPath><g clip-path="url(#clip-1764627670784-sxvpqol5n__stack1)"><line x1="-3.054344160979066" y1="2.9999999999999996" x2="-2.8000000000000003" y2="3.2543441609790653" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.308902602206223" y1="2.9999999999999996" x2="-2.8000000000000003" y2="3.508902602206222" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.5634610434333807" y1="2.9999999999999996" x2="-2.8000000000000003" y2="3.76346104343338" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.8180194846605358" y1="2.9999999999999996" x2="-2.8000000000000003" y2="4.018019484660535" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-4.072577925887693" y1="2.9999999999999996" x2="-2.8000000000000003" y2="4.272577925887692" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-4.32713636711485" y1="2.9999999999999996" x2="-2.8000000000000003" y2="4.527136367114849" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-4.581694808342007" y1="2.9999999999999996" x2="-2.8000000000000003" y2="4.7816948083420066" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-4.836253249569165" y1="2.9999999999999996" x2="-2.8000000000000003" y2="5.036253249569164" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-5.090811690796322" y1="2.9999999999999996" x2="-2.8000000000000003" y2="5.290811690796321" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-5.345370132023479" y1="2.9999999999999996" x2="-2.8000000000000003" y2="5.5453701320234785" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-5.5999285732506365" y1="2.9999999999999996" x2="-2.8000000000000003" y2="5.799928573250636" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-5.854487014477794" y1="2.9999999999999996" x2="-2.8000000000000003" y2="6.054487014477793" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-6.109045455704949" y1="2.9999999999999996" x2="-2.8000000000000003" y2="6.309045455704949" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-6.3636038969321085" y1="2.9999999999999996" x2="-2.8000000000000003" y2="6.563603896932107" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-6.618162338159264" y1="2.9999999999999996" x2="-2.8000000000000003" y2="6.818162338159262" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-6.872720779386423" y1="2.9999999999999996" x2="-2.8000000000000003" y2="7.072720779386421" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="3.127279220613578" x2="-2.9272792206135785" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="3.3818376618407364" x2="-3.181837661840738" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="3.636396103067893" x2="-3.436396103067893" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="3.890954544295052" x2="-3.690954544295052" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="4.145512985522206" x2="-3.945512985522207" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="4.4000714267493635" x2="-4.200071426749364" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="4.654629867976521" x2="-4.4546298679765215" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="4.909188309203678" x2="-4.709188309203679" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="5.163746750430835" x2="-4.963746750430836" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="5.418305191657993" x2="-5.2183051916579934" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="5.67286363288515" x2="-5.472863632885151" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="5.927422074112307" x2="-5.727422074112308" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="6.181980515339465" x2="-5.981980515339465" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="6.43653895656662" x2="-6.236538956566621" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="6.691097397793779" x2="-6.49109739779378" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-7" y1="6.945655839020935" x2="-6.745655839020936" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="6.945655839020933" x2="-3.0543441609790665" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="6.6910973977937775" x2="-3.308902602206222" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="6.4365389565666185" x2="-3.563461043433381" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="6.181980515339465" x2="-3.818019484660535" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="5.927422074112307" x2="-4.072577925887693" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="5.67286363288515" x2="-4.32713636711485" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="5.418305191657993" x2="-4.581694808342007" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="5.163746750430835" x2="-4.836253249569165" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="4.909188309203678" x2="-5.090811690796322" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="4.654629867976521" x2="-5.345370132023479" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="4.4000714267493635" x2="-5.5999285732506365" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="4.145512985522206" x2="-5.854487014477794" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="3.8909545442950506" x2="-6.109045455704948" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="3.6363961030678924" x2="-6.363603896932108" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="3.381837661840735" x2="-6.618162338159262" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.8000000000000003" y1="3.127279220613578" x2="-6.872720779386423" y2="7.199999999999999" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.927279220613579" y1="2.9999999999999996" x2="-7" y2="7.072720779386422" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.1818376618407362" y1="2.9999999999999996" x2="-7" y2="6.818162338159263" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.4363961030678936" y1="2.9999999999999996" x2="-7" y2="6.563603896932108" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.690954544295051" y1="2.9999999999999996" x2="-7" y2="6.309045455704949" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.9455129855222064" y1="2.9999999999999996" x2="-7" y2="6.054487014477793" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-4.200071426749364" y1="2.9999999999999996" x2="-7" y2="5.799928573250636" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-4.4546298679765215" y1="2.9999999999999996" x2="-7" y2="5.5453701320234785" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-4.709188309203679" y1="2.9999999999999996" x2="-7" y2="5.290811690796321" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-4.963746750430836" y1="2.9999999999999996" x2="-7" y2="5.036253249569164" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-5.2183051916579934" y1="2.9999999999999996" x2="-7" y2="4.7816948083420066" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-5.47286363288515" y1="2.9999999999999996" x2="-7" y2="4.527136367114849" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-5.727422074112307" y1="2.9999999999999996" x2="-7" y2="4.272577925887692" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-5.9819805153394645" y1="2.9999999999999996" x2="-7" y2="4.018019484660535" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-6.23653895656662" y1="2.9999999999999996" x2="-7" y2="3.76346104343338" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-6.491097397793778" y1="2.9999999999999996" x2="-7" y2="3.5089026022062213" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-6.745655839020935" y1="2.9999999999999996" x2="-7" y2="3.254344160979065" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/></g><path d="M -2.8000000000000003 5.1 L -2.8101120739883867 5.305835994692077 L -2.8403509111532164 5.509689676233869 L -2.8904252949623617 5.709597822234371 L -2.959852981726298 5.903635207966688 L -3.0479653448684547 6.089933147334595 L -3.153913814164655 6.266697489341164 L -3.276678047938253 6.432225896743655 L -3.4150757595082504 6.584924240491749 L -3.567774103256345 6.723321952061747 L -3.7333025106588353 6.846086185835345 L -3.910066852665405 6.952034655131545 L -4.096364792033311 7.040147018273702 L -4.290402177765629 7.109574705037638 L -4.490310323766131 7.159649088846784 L -4.694164005307923 7.189887926011613 L -4.9 7.199999999999999 L -5.105835994692078 7.189887926011613 L -5.3096896762338694 7.159649088846784 L -5.509597822234371 7.109574705037638 L -5.7036352079666885 7.040147018273702 L -5.889933147334595 6.952034655131545 L -6.0666974893411645 6.846086185835345 L -6.232225896743656 6.723321952061747 L -6.38492424049175 6.58492424049175 L -6.523321952061748 6.432225896743655 L -6.646086185835346 6.266697489341164 L -6.7520346551315455 6.0899331473345955 L -6.8401470182737025 5.903635207966689 L -6.909574705037639 5.709597822234371 L -6.959649088846785 5.50968967623387 L -6.989887926011614 5.305835994692077 L -7 5.1 L -6.989887926011614 4.894164005307922 L -6.959649088846785 4.69031032376613 L -6.909574705037639 4.490402177765629 L -6.8401470182737025 4.2963647920333115 L -6.7520346551315455 4.110066852665405 L -6.646086185835346 3.9333025106588355 L -6.523321952061748 3.7677741032563445 L -6.384924240491751 3.61507575950825 L -6.232225896743657 3.4766780479382526 L -6.0666974893411645 3.3539138141646543 L -5.889933147334596 3.2479653448684545 L -5.70363520796669 3.159852981726298 L -5.5095978222343716 3.090425294962361 L -5.30968967623387 3.040350911153216 L -5.105835994692077 3.010112073988386 L -4.9 2.9999999999999996 L -4.6941640053079245 3.010112073988386 L -4.490310323766131 3.0403509111532157 L -4.29040217776563 3.090425294962361 L -4.096364792033311 3.1598529817262975 L -3.9100668526654054 3.247965344868454 L -3.7333025106588362 3.3539138141646543 L -3.567774103256345 3.476678047938252 L -3.415075759508251 3.615075759508249 L -3.2766780479382533 3.767774103256343 L -3.153913814164655 3.933302510658835 L -3.047965344868455 4.110066852665404 L -2.9598529817262986 4.29636479203331 L -2.8904252949623617 4.4904021777656284 L -2.840350911153217 4.69031032376613 L -2.8101120739883867 4.894164005307923 L -2.8000000000000003 5.1 L -2.8000000000000003 5.1 Z" fill="none" stroke="#FF0000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M 8.1 -4.9 L 8.08555418001659 -4.605948579011319 L 8.042355841209691 -4.3147290339516156 L 7.970821007196626 -4.029145968236613 L 7.87163859753386 -3.751949702904731 L 7.7457637930450645 -3.4858097895220075 L 7.594408836907635 -3.233289300941194 L 7.41903136008821 -2.996820147509064 L 7.2213203435596425 -2.778679656440358 L 7.003179852490936 -2.5809686399117893 L 6.766710699058807 -2.4055911630923648 L 6.514190210477993 -2.2542362069549355 L 6.248050297095269 -2.1283614024661404 L 5.970854031763387 -2.0291789928033737 L 5.6852709660483844 -1.957644158790309 L 5.394051420988682 -1.9144458199834098 L 5.1 -1.9000000000000004 L 4.805948579011318 -1.9144458199834098 L 4.514729033951615 -1.957644158790309 L 4.2291459682366135 -2.0291789928033737 L 3.9519497029047304 -2.1283614024661404 L 3.6858097895220068 -2.254236206954935 L 3.433289300941194 -2.4055911630923643 L 3.1968201475090634 -2.580968639911789 L 2.9786796564403573 -2.7786796564403575 L 2.7809686399117886 -2.996820147509064 L 2.6055911630923636 -3.233289300941194 L 2.454236206954935 -3.4858097895220066 L 2.3283614024661397 -3.7519497029047306 L 2.229178992803373 -4.029145968236613 L 2.1576441587903084 -4.314729033951615 L 2.114445819983409 -4.605948579011318 L 2.0999999999999996 -4.9 L 2.114445819983409 -5.194051420988682 L 2.1576441587903084 -5.485270966048385 L 2.229178992803373 -5.7708540317633865 L 2.328361402466139 -6.048050297095269 L 2.4542362069549344 -6.314190210477993 L 2.605591163092363 -6.566710699058806 L 2.780968639911788 -6.803179852490937 L 2.978679656440357 -7.021320343559642 L 3.196820147509062 -7.21903136008821 L 3.433289300941193 -7.394408836907636 L 3.685809789522006 -7.545763793045065 L 3.9519497029047286 -7.67163859753386 L 4.229145968236613 -7.770821007196627 L 4.514729033951614 -7.842355841209692 L 4.805948579011318 -7.885554180016591 L 5.099999999999999 -7.9 L 5.39405142098868 -7.885554180016591 L 5.6852709660483844 -7.842355841209692 L 5.970854031763386 -7.770821007196627 L 6.248050297095269 -7.67163859753386 L 6.5141902104779925 -7.545763793045065 L 6.766710699058805 -7.394408836907637 L 7.003179852490936 -7.219031360088211 L 7.221320343559642 -7.021320343559643 L 7.419031360088209 -6.803179852490938 L 7.594408836907635 -6.566710699058807 L 7.7457637930450645 -6.314190210477994 L 7.87163859753386 -6.048050297095271 L 7.970821007196626 -5.770854031763388 L 8.042355841209691 -5.485270966048386 L 8.08555418001659 -5.194051420988682 L 8.1 -4.9 L 8.1 -4.9 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><clipPath id="clip-1764627670784-c401vgn6f__stack1"><path d="M 8.2 -4.9 L 8.185072652683811 -4.596146864978363 L 8.140434369250015 -4.295220001750002 L 8.066515040769847 -4.000117500511167 L 7.964026550784989 -3.713681359668222 L 7.8339559194799 -3.4386701158394075 L 7.67755579813789 -3.1777322776392336 L 7.496332405424484 -2.933380819092699 L 7.292031021678297 -2.7079689783217034 L 7.066619180907301 -2.5036675945755156 L 6.822267722360767 -2.32244420186211 L 6.5613298841605925 -2.1660440805201 L 6.286318640331778 -2.035973449215011 L 5.999882499488833 -1.933484959230153 L 5.704779998249998 -1.859565630749986 L 5.403853135021638 -1.81492734731619 L 5.1 -1.8000000000000003 L 4.796146864978361 -1.81492734731619 L 4.495220001750003 -1.859565630749986 L 4.200117500511167 -1.9334849592301526 L 3.9136813596682214 -2.035973449215011 L 3.638670115839407 -2.1660440805201 L 3.3777322776392333 -2.3224442018621096 L 3.133380819092699 -2.503667594575515 L 2.9079689783217026 -2.707968978321703 L 2.703667594575515 -2.933380819092699 L 2.522444201862109 -3.1777322776392336 L 2.366044080520099 -3.4386701158394066 L 2.2359734492150105 -3.7136813596682217 L 2.1334849592301524 -4.000117500511167 L 2.059565630749985 -4.2952200017500015 L 2.0149273473161893 -4.596146864978362 L 1.9999999999999996 -4.9 L 2.0149273473161893 -5.203853135021638 L 2.059565630749985 -5.504779998249998 L 2.133484959230152 -5.799882499488833 L 2.2359734492150105 -6.086318640331778 L 2.366044080520099 -6.361329884160593 L 2.5224442018621085 -6.622267722360767 L 2.7036675945755144 -6.866619180907301 L 2.9079689783217018 -7.092031021678297 L 3.1333808190926975 -7.296332405424485 L 3.377732277639233 -7.477555798137891 L 3.638670115839406 -7.6339559194799005 L 3.9136813596682196 -7.764026550784989 L 4.200117500511166 -7.866515040769848 L 4.495220001750001 -7.940434369250014 L 4.796146864978362 -7.985072652683811 L 5.099999999999999 -8 L 5.403853135021636 -7.985072652683811 L 5.704779998249998 -7.940434369250015 L 5.999882499488832 -7.866515040769848 L 6.286318640331778 -7.764026550784989 L 6.5613298841605925 -7.6339559194799005 L 6.822267722360765 -7.4775557981378915 L 7.066619180907301 -7.296332405424485 L 7.292031021678296 -7.092031021678299 L 7.496332405424484 -6.8666191809073025 L 7.67755579813789 -6.6222677223607676 L 7.8339559194799 -6.361329884160594 L 7.964026550784988 -6.086318640331781 L 8.066515040769847 -5.7998824994888345 L 8.140434369250013 -5.504779998249999 L 8.185072652683811 -5.203853135021638 L 8.2 -4.9 L 8.2 -4.9 Z"/></clipPath><g clip-path="url(#clip-1764627670784-c401vgn6f__stack1)"><line x1="7.982123368838192" y1="-8" x2="8.2" y2="-7.782123368838192" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="7.727564927611034" y1="-8" x2="8.2" y2="-7.527564927611035" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="7.473006486383877" y1="-8" x2="8.2" y2="-7.273006486383878" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="7.218448045156721" y1="-8" x2="8.2" y2="-7.018448045156721" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="6.963889603929562" y1="-8" x2="8.2" y2="-6.763889603929563" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="6.709331162702406" y1="-8" x2="8.2" y2="-6.509331162702407" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="6.454772721475248" y1="-8" x2="8.2" y2="-6.254772721475248" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="6.200214280248091" y1="-8" x2="8.2" y2="-6.000214280248092" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="5.945655839020935" y1="-8" x2="8.2" y2="-5.745655839020936" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="5.6910973977937775" y1="-8" x2="8.2" y2="-5.491097397793779" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="5.43653895656662" y1="-8" x2="8.2" y2="-5.236538956566621" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="5.181980515339465" y1="-8" x2="8.2" y2="-4.981980515339465" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="4.927422074112307" y1="-8" x2="8.2" y2="-4.727422074112308" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="4.67286363288515" y1="-8" x2="8.2" y2="-4.472863632885151" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="4.418305191657992" y1="-8" x2="8.2" y2="-4.2183051916579934" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="4.163746750430835" y1="-8" x2="8.2" y2="-3.963746750430836" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.909188309203677" y1="-8" x2="8.2" y2="-3.7091883092036797" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.654629867976521" y1="-8" x2="8.2" y2="-3.4546298679765215" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.4000714267493626" y1="-8" x2="8.2" y2="-3.200071426749365" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.145512985522206" y1="-8" x2="8.2" y2="-2.945512985522207" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.89095454429505" y1="-8" x2="8.2" y2="-2.690954544295053" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.636396103067893" y1="-8" x2="8.2" y2="-2.436396103067894" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.3818376618407355" y1="-8" x2="8.2" y2="-2.1818376618407367" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.127279220613578" y1="-8" x2="8.2" y2="-1.9272792206135794" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-7.872720779386421" x2="8.07272077938642" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-7.618162338159264" x2="7.818162338159263" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-7.363603896932107" x2="7.563603896932106" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-7.109045455704949" x2="7.309045455704949" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-6.854487014477794" x2="7.054487014477793" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-6.5999285732506365" x2="6.799928573250636" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-6.345370132023479" x2="6.5453701320234785" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-6.090811690796322" x2="6.290811690796321" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-5.836253249569165" x2="6.036253249569164" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-5.581694808342007" x2="5.781694808342007" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-5.327136367114851" x2="5.52713636711485" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-5.072577925887693" x2="5.272577925887692" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-4.818019484660535" x2="5.018019484660535" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-4.563461043433381" x2="4.76346104343338" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-4.3089026022062225" x2="4.508902602206222" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-4.054344160979066" x2="4.254344160979066" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-3.7997857197519087" x2="3.999785719751908" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-3.5452272785247514" x2="3.7452272785247507" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-3.290668837297594" x2="3.4906688372975934" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-3.0361103960704368" x2="3.236110396070436" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-2.7815519548432794" x2="2.9815519548432787" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-2.526993513616122" x2="2.7269935136161214" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-2.272435072388964" x2="2.472435072388963" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9999999999999996" y1="-2.0178766311618084" x2="2.2178766311618077" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-2.0178766311618084" x2="7.982123368838192" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-2.2724350723889657" x2="7.727564927611034" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-2.526993513616123" x2="7.473006486383877" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-2.7815519548432794" x2="7.218448045156721" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-3.0361103960704376" x2="6.963889603929562" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-3.290668837297594" x2="6.709331162702406" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-3.5452272785247514" x2="6.454772721475249" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-3.7997857197519096" x2="6.20021428024809" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-4.054344160979066" x2="5.945655839020935" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-4.308902602206222" x2="5.6910973977937775" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-4.563461043433381" x2="5.43653895656662" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-4.818019484660535" x2="5.181980515339465" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-5.072577925887694" x2="4.9274220741123065" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-5.32713636711485" x2="4.67286363288515" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-5.581694808342009" x2="4.418305191657993" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-5.836253249569165" x2="4.163746750430835" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-6.090811690796324" x2="3.909188309203678" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-6.345370132023479" x2="3.654629867976521" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-6.599928573250638" x2="3.4000714267493644" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-6.854487014477794" x2="3.145512985522206" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-7.109045455704949" x2="2.8909545442950506" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-7.3636038969321085" x2="2.6363961030678924" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-7.618162338159264" x2="2.381837661840736" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.2" y1="-7.872720779386423" x2="2.1272792206135778" y2="-1.8000000000000003" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="8.07272077938642" y1="-8" x2="1.9999999999999996" y2="-1.9272792206135785" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="7.8181623381592615" y1="-8" x2="1.9999999999999996" y2="-2.1818376618407376" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="7.563603896932106" y1="-8" x2="1.9999999999999996" y2="-2.4363961030678922" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="7.309045455704948" y1="-8" x2="1.9999999999999996" y2="-2.690954544295052" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="7.054487014477793" y1="-8" x2="1.9999999999999996" y2="-2.945512985522207" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="6.799928573250636" y1="-8" x2="1.9999999999999996" y2="-3.2000714267493633" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="6.5453701320234785" y1="-8" x2="1.9999999999999996" y2="-3.4546298679765215" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="6.29081169079632" y1="-8" x2="1.9999999999999996" y2="-3.709188309203678" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="6.036253249569164" y1="-8" x2="1.9999999999999996" y2="-3.963746750430836" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="5.781694808342006" y1="-8" x2="1.9999999999999996" y2="-4.2183051916579934" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="5.527136367114849" y1="-8" x2="1.9999999999999996" y2="-4.47286363288515" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="5.272577925887691" y1="-8" x2="1.9999999999999996" y2="-4.727422074112307" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="5.018019484660535" y1="-8" x2="1.9999999999999996" y2="-4.981980515339465" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="4.76346104343338" y1="-8" x2="1.9999999999999996" y2="-5.236538956566619" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="4.508902602206221" y1="-8" x2="1.9999999999999996" y2="-5.491097397793778" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="4.254344160979065" y1="-8" x2="1.9999999999999996" y2="-5.745655839020934" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.999785719751908" y1="-8" x2="1.9999999999999996" y2="-6.000214280248091" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.74522727852475" y1="-8" x2="1.9999999999999996" y2="-6.254772721475249" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.4906688372975934" y1="-8" x2="1.9999999999999996" y2="-6.509331162702406" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.236110396070436" y1="-8" x2="1.9999999999999996" y2="-6.763889603929563" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.9815519548432787" y1="-8" x2="1.9999999999999996" y2="-7.01844804515672" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.7269935136161205" y1="-8" x2="1.9999999999999996" y2="-7.273006486383879" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.472435072388964" y1="-8" x2="1.9999999999999996" y2="-7.527564927611035" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.2178766311618077" y1="-8" x2="1.9999999999999996" y2="-7.782123368838192" stroke="#FF0000" stroke-width="0.1" stroke-opacity="0.8"/></g><path d="M 8.2 -4.9 L 8.185072652683811 -4.596146864978363 L 8.140434369250015 -4.295220001750002 L 8.066515040769847 -4.000117500511167 L 7.964026550784989 -3.713681359668222 L 7.8339559194799 -3.4386701158394075 L 7.67755579813789 -3.1777322776392336 L 7.496332405424484 -2.933380819092699 L 7.292031021678297 -2.7079689783217034 L 7.066619180907301 -2.5036675945755156 L 6.822267722360767 -2.32244420186211 L 6.5613298841605925 -2.1660440805201 L 6.286318640331778 -2.035973449215011 L 5.999882499488833 -1.933484959230153 L 5.704779998249998 -1.859565630749986 L 5.403853135021638 -1.81492734731619 L 5.1 -1.8000000000000003 L 4.796146864978361 -1.81492734731619 L 4.495220001750003 -1.859565630749986 L 4.200117500511167 -1.9334849592301526 L 3.9136813596682214 -2.035973449215011 L 3.638670115839407 -2.1660440805201 L 3.3777322776392333 -2.3224442018621096 L 3.133380819092699 -2.503667594575515 L 2.9079689783217026 -2.707968978321703 L 2.703667594575515 -2.933380819092699 L 2.522444201862109 -3.1777322776392336 L 2.366044080520099 -3.4386701158394066 L 2.2359734492150105 -3.7136813596682217 L 2.1334849592301524 -4.000117500511167 L 2.059565630749985 -4.2952200017500015 L 2.0149273473161893 -4.596146864978362 L 1.9999999999999996 -4.9 L 2.0149273473161893 -5.203853135021638 L 2.059565630749985 -5.504779998249998 L 2.133484959230152 -5.799882499488833 L 2.2359734492150105 -6.086318640331778 L 2.366044080520099 -6.361329884160593 L 2.5224442018621085 -6.622267722360767 L 2.7036675945755144 -6.866619180907301 L 2.9079689783217018 -7.092031021678297 L 3.1333808190926975 -7.296332405424485 L 3.377732277639233 -7.477555798137891 L 3.638670115839406 -7.6339559194799005 L 3.9136813596682196 -7.764026550784989 L 4.200117500511166 -7.866515040769848 L 4.495220001750001 -7.940434369250014 L 4.796146864978362 -7.985072652683811 L 5.099999999999999 -8 L 5.403853135021636 -7.985072652683811 L 5.704779998249998 -7.940434369250015 L 5.999882499488832 -7.866515040769848 L 6.286318640331778 -7.764026550784989 L 6.5613298841605925 -7.6339559194799005 L 6.822267722360765 -7.4775557981378915 L 7.066619180907301 -7.296332405424485 L 7.292031021678296 -7.092031021678299 L 7.496332405424484 -6.8666191809073025 L 7.67755579813789 -6.6222677223607676 L 7.8339559194799 -6.361329884160594 L 7.964026550784988 -6.086318640331781 L 8.066515040769847 -5.7998824994888345 L 8.140434369250013 -5.504779998249999 L 8.185072652683811 -5.203853135021638 L 8.2 -4.9 L 8.2 -4.9 Z" fill="none" stroke="#FF0000" stroke-width="0.1"/></g></g>
7
+ </g>
8
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg width="800" height="1400" viewBox="0 0 800 1400" xmlns="http://www.w3.org/2000/svg">
2
+ <g transform="translate(0, 0)">
3
+ <style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/>
4
+ </g>
5
+ <g transform="translate(0, 600) scale(20, 20) translate(19.9, 19.9)">
6
+ <rect x="-19.9" y="-19.9" width="40" height="40" fill="white"/><g transform="matrix(1 0 0 -1 0 0.20000000000000284)"><g transform="matrix(1,0,0,1,0,0)"><path d="M -9.9 -9.9 L 10.1 -9.9 L 10.1 10.1 L -9.9 10.1 L -9.9 -9.9 L -9.9 -9.9 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M -7.9 0.1 L -3.9 4.1 L 0.1 0.1 L -3.9 -3.9 L -7.9 0.1 L -7.9 0.1" fill="none" stroke="#0000FF" stroke-width="0.1"/></g></g>
7
+ </g>
8
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg width="800" height="1400" viewBox="0 0 800 1400" xmlns="http://www.w3.org/2000/svg">
2
+ <g transform="translate(0, 0)">
3
+ <style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><polygon class="pcb-cutout pcb-cutout-polygon" points="181.8181818181818,136.36363636363637 290.9090909090909,81.81818181818181 345.45454545454544,136.36363636363637 290.9090909090909,190.9090909090909" fill="#FF26E2" data-type="pcb_cutout" data-pcb-layer="drill"/><polygon class="pcb-cutout pcb-cutout-polygon" points="481.8181818181818,381.8181818181818 590.9090909090909,381.8181818181818 590.9090909090909,490.9090909090909 536.3636363636364,518.1818181818182 481.8181818181818,490.9090909090909" fill="#FF26E2" data-type="pcb_cutout" data-pcb-layer="drill"/>
4
+ </g>
5
+ <g transform="translate(0, 600) scale(20, 20) translate(19.9, 19.9)">
6
+ <rect x="-19.9" y="-19.9" width="40" height="40" fill="white"/><g transform="matrix(1 0 0 -1 0 0.20000000000000284)"><g transform="matrix(1,0,0,1,0,0)"><path d="M -9.9 -9.9 L 10.1 -9.9 L 10.1 10.1 L -9.9 10.1 L -9.9 -9.9 L -9.9 -9.9 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M -7.9 6.1 L -3.9 8.1 L -1.9 6.1 L -3.9 4.1 L -7.9 6.1 L -7.9 6.1 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M 3.1 -2.9 L 7.1 -2.9 L 7.1 -6.9 L 5.1 -7.9 L 3.1 -6.9 L 3.1 -2.9 L 3.1 -2.9 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g></g>
7
+ </g>
8
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg width="800" height="1400" viewBox="0 0 800 1400" xmlns="http://www.w3.org/2000/svg">
2
+ <g transform="translate(0, 0)">
3
+ <style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><rect class="pcb-cutout pcb-cutout-rect" x="-54.54545454545455" y="-40.90909090909091" width="109.0909090909091" height="81.81818181818181" fill="#FF26E2" transform="matrix(1,0,0,1,263.6363636363636,163.63636363636363)" data-type="pcb_cutout" data-pcb-layer="drill"/><rect class="pcb-cutout pcb-cutout-rect" x="-40.90909090909091" y="-54.54545454545455" width="81.81818181818181" height="109.0909090909091" fill="#FF26E2" transform="matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,536.3636363636364,436.3636363636364)" data-type="pcb_cutout" data-pcb-layer="drill"/>
4
+ </g>
5
+ <g transform="translate(0, 600) scale(20, 20) translate(19.9, 19.9)">
6
+ <rect x="-19.9" y="-19.9" width="40" height="40" fill="white"/><g transform="matrix(1 0 0 -1 0 0.20000000000000284)"><g transform="matrix(1,0,0,1,0,0)"><path d="M -9.9 -9.9 L 10.1 -9.9 L 10.1 10.1 L -9.9 10.1 L -9.9 -9.9 L -9.9 -9.9 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M -6.9 3.5999999999999996 L -2.9000000000000004 3.5999999999999996 L -2.9000000000000004 3.5999999999999996 L -2.9000000000000004 3.5999999999999996 L -2.9000000000000004 6.6 L -2.9000000000000004 6.6 L -2.9000000000000004 6.6 L -6.9 6.6 L -6.9 6.6 L -6.9 6.6 L -6.9 3.5999999999999996 L -6.9 3.5999999999999996 L -6.9 3.5999999999999996 L -6.9 3.5999999999999996 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M 5.453553390593273 -7.374873734152917 L 7.574873734152916 -5.253553390593274 L 7.574873734152916 -5.253553390593274 L 7.574873734152916 -5.253553390593274 L 4.746446609406727 -2.425126265847084 L 4.746446609406727 -2.425126265847084 L 4.746446609406727 -2.425126265847084 L 2.6251262658470833 -4.546446609406726 L 2.6251262658470833 -4.546446609406726 L 2.6251262658470833 -4.546446609406726 L 5.453553390593273 -7.374873734152917 L 5.453553390593273 -7.374873734152917 L 5.453553390593273 -7.374873734152917 L 5.453553390593273 -7.374873734152917 Z" fill="none" stroke="#0000FF" stroke-width="0.1"/></g></g>
7
+ </g>
8
+ </svg>