dont render unnecessarily with opacity 0

This commit is contained in:
Alexander Wang 2024-05-14 20:36:41 -07:00
parent 7269d3000f
commit 4274f10264
No known key found for this signature in database
GPG key ID: BE3937D0D52D8927
7 changed files with 1224 additions and 2 deletions

View file

@ -2,6 +2,8 @@
#### Improvements 🧹 #### Improvements 🧹
- Opacity 0 shapes no longer have a label mask which made any segment of connections going through them lower opacity [#1940](https://github.com/terrastruct/d2/pull/1940)
#### Bugfixes ⛑️ #### Bugfixes ⛑️
- Local relative icons are relative to the d2 file instead of CLI invoke path [#1924](https://github.com/terrastruct/d2/pull/1924) - Local relative icons are relative to the d2 file instead of CLI invoke path [#1924](https://github.com/terrastruct/d2/pull/1924)

View file

@ -1213,7 +1213,7 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
// Closes the class=shape // Closes the class=shape
fmt.Fprint(writer, `</g>`) fmt.Fprint(writer, `</g>`)
if targetShape.Icon != nil && targetShape.Type != d2target.ShapeImage { if targetShape.Icon != nil && targetShape.Type != d2target.ShapeImage && targetShape.Opacity != 0 {
iconPosition := label.FromString(targetShape.IconPosition) iconPosition := label.FromString(targetShape.IconPosition)
var box *geo.Box var box *geo.Box
if iconPosition.IsOutside() { if iconPosition.IsOutside() {
@ -1234,7 +1234,7 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
) )
} }
if targetShape.Label != "" { if targetShape.Label != "" && targetShape.Opacity != 0 {
labelPosition := label.FromString(targetShape.LabelPosition) labelPosition := label.FromString(targetShape.LabelPosition)
var box *geo.Box var box *geo.Box
if labelPosition.IsOutside() { if labelPosition.IsOutside() {

View file

@ -213,3 +213,21 @@ ok: {
} }
dog1 -> dog3 dog1 -> dog3
} }
-- opacity-zero-route --
grid: {
*.style.opacity: 0
grid-columns: 3
a
b
c
d
e
f
g
h
d.style.opacity: 1
}
out -> grid.d

View file

@ -0,0 +1,497 @@
{
"name": "",
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "grid",
"type": "rectangle",
"pos": {
"x": 0,
"y": 0
},
"width": 361,
"height": 398,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B4",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "grid",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 44,
"labelHeight": 36,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "grid.a",
"type": "rectangle",
"pos": {
"x": 60,
"y": 60
},
"width": 53,
"height": 66,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.b",
"type": "rectangle",
"pos": {
"x": 60,
"y": 166
},
"width": 53,
"height": 66,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.c",
"type": "rectangle",
"pos": {
"x": 60,
"y": 272
},
"width": 53,
"height": 66,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "c",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.d",
"type": "rectangle",
"pos": {
"x": 153,
"y": 60
},
"width": 54,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "d",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 9,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.e",
"type": "rectangle",
"pos": {
"x": 153,
"y": 166
},
"width": 54,
"height": 66,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "e",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.f",
"type": "rectangle",
"pos": {
"x": 153,
"y": 272
},
"width": 54,
"height": 66,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "f",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 6,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.g",
"type": "rectangle",
"pos": {
"x": 247,
"y": 60
},
"width": 54,
"height": 119,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "g",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 9,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.h",
"type": "rectangle",
"pos": {
"x": 247,
"y": 219
},
"width": 54,
"height": 119,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "h",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "out",
"type": "rectangle",
"pos": {
"x": 421,
"y": 166
},
"width": 69,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "out",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 24,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
}
],
"connections": [
{
"id": "(out -> grid.d)[0]",
"src": "out",
"srcArrow": "none",
"dst": "grid.d",
"dstArrow": "triangle",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelPercentage": 0,
"route": [
{
"x": 421,
"y": 186
},
{
"x": 207,
"y": 103
}
],
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
}
],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

View file

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.5-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 492 400"><svg id="d2-svg" class="d2-1723842539" width="492" height="400" viewBox="-1 -1 492 400"><rect x="-1.000000" y="-1.000000" width="492.000000" height="400.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-1723842539 .text {
font-family: "d2-1723842539-font-regular";
}
@font-face {
font-family: d2-1723842539-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-1723842539 .text-bold {
font-family: "d2-1723842539-font-bold";
}
@font-face {
font-family: d2-1723842539-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
.connection {
stroke-linecap: round;
stroke-linejoin: round;
}
.blend {
mix-blend-mode: multiply;
opacity: 0.5;
}
.d2-1723842539 .fill-N1{fill:#0A0F25;}
.d2-1723842539 .fill-N2{fill:#676C7E;}
.d2-1723842539 .fill-N3{fill:#9499AB;}
.d2-1723842539 .fill-N4{fill:#CFD2DD;}
.d2-1723842539 .fill-N5{fill:#DEE1EB;}
.d2-1723842539 .fill-N6{fill:#EEF1F8;}
.d2-1723842539 .fill-N7{fill:#FFFFFF;}
.d2-1723842539 .fill-B1{fill:#0D32B2;}
.d2-1723842539 .fill-B2{fill:#0D32B2;}
.d2-1723842539 .fill-B3{fill:#E3E9FD;}
.d2-1723842539 .fill-B4{fill:#E3E9FD;}
.d2-1723842539 .fill-B5{fill:#EDF0FD;}
.d2-1723842539 .fill-B6{fill:#F7F8FE;}
.d2-1723842539 .fill-AA2{fill:#4A6FF3;}
.d2-1723842539 .fill-AA4{fill:#EDF0FD;}
.d2-1723842539 .fill-AA5{fill:#F7F8FE;}
.d2-1723842539 .fill-AB4{fill:#EDF0FD;}
.d2-1723842539 .fill-AB5{fill:#F7F8FE;}
.d2-1723842539 .stroke-N1{stroke:#0A0F25;}
.d2-1723842539 .stroke-N2{stroke:#676C7E;}
.d2-1723842539 .stroke-N3{stroke:#9499AB;}
.d2-1723842539 .stroke-N4{stroke:#CFD2DD;}
.d2-1723842539 .stroke-N5{stroke:#DEE1EB;}
.d2-1723842539 .stroke-N6{stroke:#EEF1F8;}
.d2-1723842539 .stroke-N7{stroke:#FFFFFF;}
.d2-1723842539 .stroke-B1{stroke:#0D32B2;}
.d2-1723842539 .stroke-B2{stroke:#0D32B2;}
.d2-1723842539 .stroke-B3{stroke:#E3E9FD;}
.d2-1723842539 .stroke-B4{stroke:#E3E9FD;}
.d2-1723842539 .stroke-B5{stroke:#EDF0FD;}
.d2-1723842539 .stroke-B6{stroke:#F7F8FE;}
.d2-1723842539 .stroke-AA2{stroke:#4A6FF3;}
.d2-1723842539 .stroke-AA4{stroke:#EDF0FD;}
.d2-1723842539 .stroke-AA5{stroke:#F7F8FE;}
.d2-1723842539 .stroke-AB4{stroke:#EDF0FD;}
.d2-1723842539 .stroke-AB5{stroke:#F7F8FE;}
.d2-1723842539 .background-color-N1{background-color:#0A0F25;}
.d2-1723842539 .background-color-N2{background-color:#676C7E;}
.d2-1723842539 .background-color-N3{background-color:#9499AB;}
.d2-1723842539 .background-color-N4{background-color:#CFD2DD;}
.d2-1723842539 .background-color-N5{background-color:#DEE1EB;}
.d2-1723842539 .background-color-N6{background-color:#EEF1F8;}
.d2-1723842539 .background-color-N7{background-color:#FFFFFF;}
.d2-1723842539 .background-color-B1{background-color:#0D32B2;}
.d2-1723842539 .background-color-B2{background-color:#0D32B2;}
.d2-1723842539 .background-color-B3{background-color:#E3E9FD;}
.d2-1723842539 .background-color-B4{background-color:#E3E9FD;}
.d2-1723842539 .background-color-B5{background-color:#EDF0FD;}
.d2-1723842539 .background-color-B6{background-color:#F7F8FE;}
.d2-1723842539 .background-color-AA2{background-color:#4A6FF3;}
.d2-1723842539 .background-color-AA4{background-color:#EDF0FD;}
.d2-1723842539 .background-color-AA5{background-color:#F7F8FE;}
.d2-1723842539 .background-color-AB4{background-color:#EDF0FD;}
.d2-1723842539 .background-color-AB5{background-color:#F7F8FE;}
.d2-1723842539 .color-N1{color:#0A0F25;}
.d2-1723842539 .color-N2{color:#676C7E;}
.d2-1723842539 .color-N3{color:#9499AB;}
.d2-1723842539 .color-N4{color:#CFD2DD;}
.d2-1723842539 .color-N5{color:#DEE1EB;}
.d2-1723842539 .color-N6{color:#EEF1F8;}
.d2-1723842539 .color-N7{color:#FFFFFF;}
.d2-1723842539 .color-B1{color:#0D32B2;}
.d2-1723842539 .color-B2{color:#0D32B2;}
.d2-1723842539 .color-B3{color:#E3E9FD;}
.d2-1723842539 .color-B4{color:#E3E9FD;}
.d2-1723842539 .color-B5{color:#EDF0FD;}
.d2-1723842539 .color-B6{color:#F7F8FE;}
.d2-1723842539 .color-AA2{color:#4A6FF3;}
.d2-1723842539 .color-AA4{color:#EDF0FD;}
.d2-1723842539 .color-AA5{color:#F7F8FE;}
.d2-1723842539 .color-AB4{color:#EDF0FD;}
.d2-1723842539 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="grid"><g class="shape" ><rect x="0.000000" y="0.000000" width="361.000000" height="398.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="180.500000" y="33.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">grid</text></g><g id="out"><g class="shape" ><rect x="421.000000" y="166.000000" width="69.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="455.500000" y="204.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">out</text></g><g id="grid.a" style='opacity:0.000000'><g class="shape" ><rect x="60.000000" y="60.000000" width="53.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.b" style='opacity:0.000000'><g class="shape" ><rect x="60.000000" y="166.000000" width="53.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.c" style='opacity:0.000000'><g class="shape" ><rect x="60.000000" y="272.000000" width="53.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.d"><g class="shape" ><rect x="153.000000" y="60.000000" width="54.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="180.000000" y="98.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">d</text></g><g id="grid.e" style='opacity:0.000000'><g class="shape" ><rect x="153.000000" y="166.000000" width="54.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.f" style='opacity:0.000000'><g class="shape" ><rect x="153.000000" y="272.000000" width="54.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.g" style='opacity:0.000000'><g class="shape" ><rect x="247.000000" y="60.000000" width="54.000000" height="119.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.h" style='opacity:0.000000'><g class="shape" ><rect x="247.000000" y="219.000000" width="54.000000" height="119.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="(out -&gt; grid.d)[0]"><marker id="mk-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 419.135337 185.276790 L 210.729325 104.446421" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1723842539)" /></g><mask id="d2-1723842539" maskUnits="userSpaceOnUse" x="-1" y="-1" width="492" height="400">
<rect x="-1" y="-1" width="492" height="400" fill="white"></rect>
<rect x="158.500000" y="5.000000" width="44" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="443.500000" y="188.500000" width="24" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="175.500000" y="82.500000" width="9" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,497 @@
{
"name": "",
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "grid",
"type": "rectangle",
"pos": {
"x": 12,
"y": 12
},
"width": 361,
"height": 398,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B4",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "grid",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 44,
"labelHeight": 36,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "grid.a",
"type": "rectangle",
"pos": {
"x": 72,
"y": 72
},
"width": 53,
"height": 66,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "a",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.b",
"type": "rectangle",
"pos": {
"x": 72,
"y": 178
},
"width": 53,
"height": 66,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "b",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.c",
"type": "rectangle",
"pos": {
"x": 72,
"y": 284
},
"width": 53,
"height": 66,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "c",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.d",
"type": "rectangle",
"pos": {
"x": 165,
"y": 72
},
"width": 54,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "d",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 9,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.e",
"type": "rectangle",
"pos": {
"x": 165,
"y": 178
},
"width": 54,
"height": 66,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "e",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.f",
"type": "rectangle",
"pos": {
"x": 165,
"y": 284
},
"width": 54,
"height": 66,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "f",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 6,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.g",
"type": "rectangle",
"pos": {
"x": 259,
"y": 72
},
"width": 54,
"height": 119,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "g",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 9,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "grid.h",
"type": "rectangle",
"pos": {
"x": 259,
"y": 231
},
"width": 54,
"height": 119,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "h",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 8,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "out",
"type": "rectangle",
"pos": {
"x": 393,
"y": 178
},
"width": 69,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B6",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "out",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 24,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 1
}
],
"connections": [
{
"id": "(out -> grid.d)[0]",
"src": "out",
"srcArrow": "none",
"dst": "grid.d",
"dstArrow": "triangle",
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"stroke": "B1",
"borderRadius": 10,
"label": "",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N2",
"italic": true,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"labelPosition": "",
"labelPercentage": 0,
"route": [
{
"x": 393,
"y": 195
},
{
"x": 219,
"y": 117
}
],
"animated": false,
"tooltip": "",
"icon": null,
"zIndex": 0
}
],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

View file

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.5-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 452 400"><svg id="d2-svg" class="d2-2998709085" width="452" height="400" viewBox="11 11 452 400"><rect x="11.000000" y="11.000000" width="452.000000" height="400.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-2998709085 .text {
font-family: "d2-2998709085-font-regular";
}
@font-face {
font-family: d2-2998709085-font-regular;
src: url("data:application/font-woff;base64,d09GRgABAAAAAAn8AAoAAAAAD7wAAguFAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgXd/Vo2NtYXAAAAFUAAAAVAAAAGABRwF3Z2x5ZgAAAagAAAQtAAAFPGpOnMdoZWFkAAAF2AAAADYAAAA2G4Ue32hoZWEAAAYQAAAAJAAAACQKhAXSaG10eAAABjQAAABAAAAAQBqlA0psb2NhAAAGdAAAACIAAAAiDUYL3G1heHAAAAaYAAAAIAAAACAAKAD2bmFtZQAABrgAAAMjAAAIFAbDVU1wb3N0AAAJ3AAAAB0AAAAg/9EAMgADAgkBkAAFAAACigJYAAAASwKKAlgAAAFeADIBIwAAAgsFAwMEAwICBGAAAvcAAAADAAAAAAAAAABBREJPAEAAIP//Au7/BgAAA9gBESAAAZ8AAAAAAeYClAAAACAAA3icNMtBDgExAEbhr51BVd3OBSytJMJdiI2b/pIm81Zv86FYFAyrC7qmqm7uHl4JrvOfSX755pP3FFtFtVjt7B00R93JcOYPAAD//wEAAP//9wIOtXicVJNNaNt2GMbfv/wh0th1lOjDdmzLkmoptts4sSwriWWpdewsSe3YsROStEu6LFkd9hE2D1YCZT10H7mM7dDbLoPtstMogzLYLTDIPuhprAx26CkUusMwZgxG5WHJCctJOvx5n/d5nt8LLtgAwBTsAThgAHwwDBSATHBEjJMkAVdlVRUYhyohAt9Af5ifIbSQcWazzsnC88LBvXto/X3swYs3Zz5oNn/YunPH/OTkmZlGj58BBpluBz1EbQjCJQCGF5VMVs2IosC7cSmbldM0RQiS4HZL6ayquN0USR/llz/9nEiOJRbDUX5nZqNWxB38Mi3owsF22rNwrbZKsFNClJym42/dNH+bCSUKPPuxT0vFY4BBvdtB/2LHMAJRABcvSgIuEDKF21qkJaRkLH2KplGcX4g68EId46pjt17N3ZrTqrkSe1WIGh4unMaOj9bD0kfvNN7TS80btR0+2g0xAAAIxrsd9A1qQ8hS6dnqCTC4Za1nQ05nVcbtRsNX97Rrb+gTpUCCSoUvl6TGLD9DX+JqHq1Vq7c0nsmO+FOrU41mmFTDHAAGqW4H/X7qwc7MGi4p8mlYqnIm9M/N/dy2mtCjzkYRd4TKgasaOx2RDHHO8+FB9V09Emx8/2JqOhQvzZohJtWYWtsBzNr/J9QGP7DnHFCkG+fo0+0dnBUVYq69rhu76uZrCDO/c63NCbnRMFv9GTmNaXnZk29Vay397p43MFB5mSKyZASJi5WqlVMEABnYrzZPgqIqmX5OAk9RMiUQrxQKpQUmMTQ8Gio2m+hL3VVZXBvADc9WZdbcBAAHXOlG0Z+oDZOQh8oZRYr4v481VKYE2upY4CW7g37njtPOKZIesf8FXrTf/L3xtsgNB/gRv5RemSQveb/eJZiJWlrivcOxya3VVW2/nMhryaSWz86tyKmVi9xQ0H/9adFgp2nn4FiIHfc6yWJSWUrgLmNIYTPlODE4SjIRNX+lnEIPDUXRNEUxzMO8yAedzpEEJY1b2dQB0BPsGMheNmeMEgJh80nU6w6hkq68VL88EcvFsOOjXS61vWn+guJFXYyZX0C3CyUA+BZ7hIlwEQDc4Lvb49Pu9y/UBh+Mnuv3/A1QJI18uaZhNHPabcO4rRmViqEvLfXZ1Fr1WksrNhsre3srjebpzluoDYS1MyP3hvapx4l6EXcE5uNhZshD+tjZADpZH89emHc607p5bN+Nv9tBJWwfGLvHHhKqbIFwdjLPl/Lz5Qul+/e5hDfiGSJTnhvzyKu7Dg9nzfaVyQGnjg9as653O+gxOunlZ82S+zOI/pk8rcw3khNiju/txZc925soYz4p6lISbZjB8tiE7Qe+QifgsPwQ9To6MYOAuj9ii6Bij2AQgLB4s1Hys6zfz7LYYjjgj0T8gTD8BwAA//8BAAD//yEaEloAAAAAAQAAAAILhWlMZEVfDzz1AAMD6AAAAADYXaChAAAAAN1mLzb+Ov7bCG8DyAAAAAMAAgAAAAAAAAABAAAD2P7vAAAImP46/joIbwABAAAAAAAAAAAAAAAAAAAAEAKNAFkB+AA0AikAUgHIAC4CKwAvAfAALgEkAB4B+AAtAiAAUgD2AEUCHgAuAVsAUgFSABgCIABLAPYAUgAA/8kAAAAsAGQAmADGAPgBLAFOAboB3AHoAhQCNAJaAnwCiAKeAAAAAQAAABAAjAAMAGYABwABAAAAAAAAAAAAAAAAAAQAA3icnJTdThtXFIU/B9ttVDUXFYrIDTqXbZWM3QiiBK5MCYpVhFOP0x+pqjR4xj9iPDPyDFCqPkCv+xZ9i1z1OfoQVa+rs7wNNqoUgRCwzpy991lnr7UPsMm/bFCrPwT+av5guMZ2c8/wAx41nxre4Ljxt+H6SkyDuPGb4SZfNvqGP+J9/Q/DH7NT/9nwQ7bqR4Y/4Xl90/CnG45/DD9ih/cLXIOX/G64xhaF4Qds8pPhDR5jNWt1HtM23OAztg032QYGTKlImZIxxjFiyphz5iSUhCTMmTIiIcbRpUNKpa8ZkZBj/L9fI0Iq5kSqOKHCkRKSElEysYq/KivnrU4caTW3vQ4VEyJOlXFGRIYjZ0xORsKZ6lRUFOzRokXJUHwLKkoCSqakBOTMGdOixxHHDJgwpcRxpEqeWUjOiIpLIp3vLMJ3ZkhCRmmszsmIxdOJX6LsLsc4ehSKXa18vFbhKY7vlO255Yr9ikC/boXZ+rlLNhEX6meqrqTauZSCE+36czt8K1yxh7tXf9aZfLhHsf5XqnzKufSPpVQmJhnObdEhlINC9wTHgdZdQnXke7oMeEOPdwy07tCnT4cTBnR5rdwefRxf0+OEQ2V0hRd7R3LMCT/i+IauYnztxPqzUCzhFwpzdymOc91jRqGee+aB7prohndX2M9QvuaOUjlDzZGPdNIv05xFjM0VhRjO1MulN0rrX2yOmOkuXtubfT8NFzZ7yym+ItcMe7cuOHnlFow+pGpwyzOX+gmIiMk5VcSQnBktKq7E+y0R56Q4DtW9N5qSis51jj/nSi5JmIlBl0x15hT6G5lvQuM+XPO9s7ckVr5nenZ9q/uc4tSrG43eqXvLvdC6nKwo0DJV8xU3DcU1M+8nmqlV/qFyS71uOc/ok0j1VDe4/Q48J6DNDrvsM9E5Q+1c2BvR1jvR5hX76sEZiaJGcnViFXYJeMEuu7zixVrNDocc0GP/DhwXWT0OeH1rZ12nZRVndf4Um7b4Op5dr17eW6/P7+DLLzRRNy9jX9r4bl9YtRv/nxAx81zc1uqd3BOC/wAAAP//AQAA//8HW0wwAHicYmBmAIP/5xiMGLAAAAAAAP//AQAA//8vAQIDAAAA");
}
.d2-2998709085 .text-bold {
font-family: "d2-2998709085-font-bold";
}
@font-face {
font-family: d2-2998709085-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
.connection {
stroke-linecap: round;
stroke-linejoin: round;
}
.blend {
mix-blend-mode: multiply;
opacity: 0.5;
}
.d2-2998709085 .fill-N1{fill:#0A0F25;}
.d2-2998709085 .fill-N2{fill:#676C7E;}
.d2-2998709085 .fill-N3{fill:#9499AB;}
.d2-2998709085 .fill-N4{fill:#CFD2DD;}
.d2-2998709085 .fill-N5{fill:#DEE1EB;}
.d2-2998709085 .fill-N6{fill:#EEF1F8;}
.d2-2998709085 .fill-N7{fill:#FFFFFF;}
.d2-2998709085 .fill-B1{fill:#0D32B2;}
.d2-2998709085 .fill-B2{fill:#0D32B2;}
.d2-2998709085 .fill-B3{fill:#E3E9FD;}
.d2-2998709085 .fill-B4{fill:#E3E9FD;}
.d2-2998709085 .fill-B5{fill:#EDF0FD;}
.d2-2998709085 .fill-B6{fill:#F7F8FE;}
.d2-2998709085 .fill-AA2{fill:#4A6FF3;}
.d2-2998709085 .fill-AA4{fill:#EDF0FD;}
.d2-2998709085 .fill-AA5{fill:#F7F8FE;}
.d2-2998709085 .fill-AB4{fill:#EDF0FD;}
.d2-2998709085 .fill-AB5{fill:#F7F8FE;}
.d2-2998709085 .stroke-N1{stroke:#0A0F25;}
.d2-2998709085 .stroke-N2{stroke:#676C7E;}
.d2-2998709085 .stroke-N3{stroke:#9499AB;}
.d2-2998709085 .stroke-N4{stroke:#CFD2DD;}
.d2-2998709085 .stroke-N5{stroke:#DEE1EB;}
.d2-2998709085 .stroke-N6{stroke:#EEF1F8;}
.d2-2998709085 .stroke-N7{stroke:#FFFFFF;}
.d2-2998709085 .stroke-B1{stroke:#0D32B2;}
.d2-2998709085 .stroke-B2{stroke:#0D32B2;}
.d2-2998709085 .stroke-B3{stroke:#E3E9FD;}
.d2-2998709085 .stroke-B4{stroke:#E3E9FD;}
.d2-2998709085 .stroke-B5{stroke:#EDF0FD;}
.d2-2998709085 .stroke-B6{stroke:#F7F8FE;}
.d2-2998709085 .stroke-AA2{stroke:#4A6FF3;}
.d2-2998709085 .stroke-AA4{stroke:#EDF0FD;}
.d2-2998709085 .stroke-AA5{stroke:#F7F8FE;}
.d2-2998709085 .stroke-AB4{stroke:#EDF0FD;}
.d2-2998709085 .stroke-AB5{stroke:#F7F8FE;}
.d2-2998709085 .background-color-N1{background-color:#0A0F25;}
.d2-2998709085 .background-color-N2{background-color:#676C7E;}
.d2-2998709085 .background-color-N3{background-color:#9499AB;}
.d2-2998709085 .background-color-N4{background-color:#CFD2DD;}
.d2-2998709085 .background-color-N5{background-color:#DEE1EB;}
.d2-2998709085 .background-color-N6{background-color:#EEF1F8;}
.d2-2998709085 .background-color-N7{background-color:#FFFFFF;}
.d2-2998709085 .background-color-B1{background-color:#0D32B2;}
.d2-2998709085 .background-color-B2{background-color:#0D32B2;}
.d2-2998709085 .background-color-B3{background-color:#E3E9FD;}
.d2-2998709085 .background-color-B4{background-color:#E3E9FD;}
.d2-2998709085 .background-color-B5{background-color:#EDF0FD;}
.d2-2998709085 .background-color-B6{background-color:#F7F8FE;}
.d2-2998709085 .background-color-AA2{background-color:#4A6FF3;}
.d2-2998709085 .background-color-AA4{background-color:#EDF0FD;}
.d2-2998709085 .background-color-AA5{background-color:#F7F8FE;}
.d2-2998709085 .background-color-AB4{background-color:#EDF0FD;}
.d2-2998709085 .background-color-AB5{background-color:#F7F8FE;}
.d2-2998709085 .color-N1{color:#0A0F25;}
.d2-2998709085 .color-N2{color:#676C7E;}
.d2-2998709085 .color-N3{color:#9499AB;}
.d2-2998709085 .color-N4{color:#CFD2DD;}
.d2-2998709085 .color-N5{color:#DEE1EB;}
.d2-2998709085 .color-N6{color:#EEF1F8;}
.d2-2998709085 .color-N7{color:#FFFFFF;}
.d2-2998709085 .color-B1{color:#0D32B2;}
.d2-2998709085 .color-B2{color:#0D32B2;}
.d2-2998709085 .color-B3{color:#E3E9FD;}
.d2-2998709085 .color-B4{color:#E3E9FD;}
.d2-2998709085 .color-B5{color:#EDF0FD;}
.d2-2998709085 .color-B6{color:#F7F8FE;}
.d2-2998709085 .color-AA2{color:#4A6FF3;}
.d2-2998709085 .color-AA4{color:#EDF0FD;}
.d2-2998709085 .color-AA5{color:#F7F8FE;}
.d2-2998709085 .color-AB4{color:#EDF0FD;}
.d2-2998709085 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="grid"><g class="shape" ><rect x="12.000000" y="12.000000" width="361.000000" height="398.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="192.500000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">grid</text></g><g id="out"><g class="shape" ><rect x="393.000000" y="178.000000" width="69.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="427.500000" y="216.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">out</text></g><g id="grid.a" style='opacity:0.000000'><g class="shape" ><rect x="72.000000" y="72.000000" width="53.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.b" style='opacity:0.000000'><g class="shape" ><rect x="72.000000" y="178.000000" width="53.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.c" style='opacity:0.000000'><g class="shape" ><rect x="72.000000" y="284.000000" width="53.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.d"><g class="shape" ><rect x="165.000000" y="72.000000" width="54.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="192.000000" y="110.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">d</text></g><g id="grid.e" style='opacity:0.000000'><g class="shape" ><rect x="165.000000" y="178.000000" width="54.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.f" style='opacity:0.000000'><g class="shape" ><rect x="165.000000" y="284.000000" width="54.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.g" style='opacity:0.000000'><g class="shape" ><rect x="259.000000" y="72.000000" width="54.000000" height="119.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="grid.h" style='opacity:0.000000'><g class="shape" ><rect x="259.000000" y="231.000000" width="54.000000" height="119.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g></g><g id="(out -&gt; grid.d)[0]"><marker id="mk-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 391.174981 194.181888 L 222.650037 118.636224" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-2998709085)" /></g><mask id="d2-2998709085" maskUnits="userSpaceOnUse" x="11" y="11" width="452" height="400">
<rect x="11" y="11" width="452" height="400" fill="white"></rect>
<rect x="170.500000" y="17.000000" width="44" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="415.500000" y="200.500000" width="24" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="187.500000" y="94.500000" width="9" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

After

Width:  |  Height:  |  Size: 16 KiB