folder check

This commit is contained in:
Alexander Wang 2023-07-29 09:56:36 -07:00
parent 3b0939fc18
commit fb542087f7
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
24 changed files with 393 additions and 121 deletions

View file

@ -15,6 +15,7 @@
- All font styles in sketch mode use a consistent font-family [#1463](https://github.com/terrastruct/d2/pull/1463)
- Tooltip and link icons are now positioned on shape border [#1466](https://github.com/terrastruct/d2/pull/1466)
- Tooltip and link icons are always rendered over shapes [#1467](https://github.com/terrastruct/d2/pull/1467)
- Boards with no objects are considered folders [#1504](https://github.com/terrastruct/d2/pull/1504)
#### Bugfixes ⛑️

View file

@ -92,6 +92,9 @@ func (c *compiler) compileBoard(g *d2graph.Graph, ir *d2ir.Map) *d2graph.Graph {
g.IsFolderOnly = true
}
}
if len(g.Objects) == 0 {
g.IsFolderOnly = true
}
return g
}

View file

@ -2832,6 +2832,21 @@ layers: {
assert.False(t, g.Layers[1].Scenarios[1].IsFolderOnly)
},
},
{
name: "isFolderOnly-shapes",
run: func(t *testing.T) {
g, _ := assertCompile(t, `
direction: right
steps: {
1: {
RJ
}
}
`, "")
assert.True(t, g.IsFolderOnly)
},
},
{
name: "scenarios_edge_index",
run: func(t *testing.T) {

View file

@ -74,8 +74,6 @@ func TestCLI_E2E(t *testing.T) {
writeFile(t, dir, "empty-layer.d2", `layers: { x: {} }`)
err := runTestMain(t, ctx, dir, env, "empty-layer.d2")
assert.Success(t, err)
assert.TestdataDir(t, filepath.Join(dir, "empty-layer"))
},
},
{

View file

@ -1,6 +1,6 @@
{
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"fontFamily": "SourceSansPro",
"shapes": [],
"connections": [],

View file

@ -1,4 +1,4 @@
<?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.0-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 0 0"><svg id="d2-svg" class="d2-121760133" width="0" height="0" viewBox="0 0 0 0"><rect x="0.000000" y="0.000000" width="0.000000" height="0.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[]]></style><style type="text/css"><![CDATA[.shape {
<?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.0-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 0 0"><svg id="d2-svg" width="0" height="0" viewBox="0 0 0 0"><style type="text/css"><![CDATA[]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
@ -82,7 +82,4 @@
.d2-121760133 .color-AA4{color:#EDF0FD;}
.d2-121760133 .color-AA5{color:#F7F8FE;}
.d2-121760133 .color-AB4{color:#EDF0FD;}
.d2-121760133 .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><mask id="d2-121760133" maskUnits="userSpaceOnUse" x="0" y="0" width="0" height="0">
<rect x="0" y="0" width="0" height="0" fill="white"></rect>
</mask></svg></svg>
.d2-121760133 .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><style type="text/css"><![CDATA[]]></style></svg></svg>

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -1,6 +1,6 @@
{
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"fontFamily": "SourceSansPro",
"shapes": [],
"connections": [],

View file

@ -1,4 +1,4 @@
<?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.0-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 0 0"><svg id="d2-svg" class="d2-121760133" width="0" height="0" viewBox="0 0 0 0"><rect x="0.000000" y="0.000000" width="0.000000" height="0.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[]]></style><style type="text/css"><![CDATA[.shape {
<?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.0-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 0 0"><svg id="d2-svg" width="0" height="0" viewBox="0 0 0 0"><style type="text/css"><![CDATA[]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
@ -82,7 +82,4 @@
.d2-121760133 .color-AA4{color:#EDF0FD;}
.d2-121760133 .color-AA5{color:#F7F8FE;}
.d2-121760133 .color-AB4{color:#EDF0FD;}
.d2-121760133 .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><mask id="d2-121760133" maskUnits="userSpaceOnUse" x="0" y="0" width="0" height="0">
<rect x="0" y="0" width="0" height="0" fill="white"></rect>
</mask></svg></svg>
.d2-121760133 .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><style type="text/css"><![CDATA[]]></style></svg></svg>

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -602,7 +602,7 @@
},
{
"name": "repair",
"isFolderOnly": false,
"isFolderOnly": true,
"fontFamily": "SourceSansPro",
"shapes": [],
"connections": [],

View file

@ -100,132 +100,119 @@
0%, 0.000000% {
opacity: 0;
}
0.000000%, 9.990000% {
0.000000%, 11.100000% {
opacity: 1;
}
10.000000%, 100% {
11.111111%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-393299205-1 {
0%, 9.990000% {
0%, 11.100000% {
opacity: 0;
}
10.000000%, 19.990000% {
11.111111%, 22.211111% {
opacity: 1;
}
20.000000%, 100% {
22.222222%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-393299205-2 {
0%, 19.990000% {
0%, 22.211111% {
opacity: 0;
}
20.000000%, 29.990000% {
22.222222%, 33.322222% {
opacity: 1;
}
30.000000%, 100% {
33.333333%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-393299205-3 {
0%, 29.990000% {
0%, 33.322222% {
opacity: 0;
}
30.000000%, 39.990000% {
33.333333%, 44.433333% {
opacity: 1;
}
40.000000%, 100% {
44.444444%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-393299205-4 {
0%, 39.990000% {
0%, 44.433333% {
opacity: 0;
}
40.000000%, 49.990000% {
44.444444%, 55.544444% {
opacity: 1;
}
50.000000%, 100% {
55.555556%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-393299205-5 {
0%, 49.990000% {
0%, 55.544444% {
opacity: 0;
}
50.000000%, 59.990000% {
55.555556%, 66.655556% {
opacity: 1;
}
60.000000%, 100% {
66.666667%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-393299205-6 {
0%, 59.990000% {
0%, 66.655556% {
opacity: 0;
}
60.000000%, 69.990000% {
66.666667%, 77.766667% {
opacity: 1;
}
70.000000%, 100% {
77.777778%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-393299205-7 {
0%, 69.990000% {
0%, 77.766667% {
opacity: 0;
}
70.000000%, 79.990000% {
77.777778%, 88.877778% {
opacity: 1;
}
80.000000%, 100% {
88.888889%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-393299205-8 {
0%, 79.990000% {
0%, 88.877778% {
opacity: 0;
}
80.000000%, 89.990000% {
88.888889%, 100.000000% {
opacity: 1;
}
90.000000%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-393299205-9 {
0%, 89.990000% {
opacity: 0;
}
90.000000%, 100.000000% {
opacity: 1;
}
}]]></style><g style="animation: d2Transition-d2-393299205-0 10000ms infinite" class="d2-393299205" width="394" height="68" viewBox="-1 -1 394 68"><rect x="-1.000000" y="-1.000000" width="394.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="window"><g class="shape" ><rect x="0.000000" y="0.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /><rect x="5.000000" y="5.000000" width="93.000000" height="56.000000" fill="transparent" class=" stroke-B1" style="stroke-width:2;" /></g><text x="51.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">window</text></g><g id="roof"><g class="shape" ><rect x="163.000000" y="0.000000" width="75.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="200.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">roof</text></g><g id="garage"><g class="shape" ><rect x="298.000000" y="0.000000" width="94.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="345.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">garage</text></g><mask id="d2-393299205" maskUnits="userSpaceOnUse" x="-1" y="-1" width="394" height="68">
}]]></style><g style="animation: d2Transition-d2-393299205-0 9000ms infinite" class="d2-393299205" width="394" height="68" viewBox="-1 -1 394 68"><rect x="-1.000000" y="-1.000000" width="394.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="window"><g class="shape" ><rect x="0.000000" y="0.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /><rect x="5.000000" y="5.000000" width="93.000000" height="56.000000" fill="transparent" class=" stroke-B1" style="stroke-width:2;" /></g><text x="51.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">window</text></g><g id="roof"><g class="shape" ><rect x="163.000000" y="0.000000" width="75.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="200.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">roof</text></g><g id="garage"><g class="shape" ><rect x="298.000000" y="0.000000" width="94.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="345.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">garage</text></g><mask id="d2-393299205" maskUnits="userSpaceOnUse" x="-1" y="-1" width="394" height="68">
<rect x="-1" y="-1" width="394" height="68" fill="white"></rect>
<rect x="22.500000" y="22.500000" width="58" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="185.500000" y="22.500000" width="30" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="320.500000" y="22.500000" width="49" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-393299205-1 10000ms infinite" class="d2-393299205" width="231" height="68" viewBox="-1 -1 231 68"><rect x="-1.000000" y="-1.000000" width="231.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="blinds"><g class="shape" ><rect x="0.000000" y="0.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="44.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">blinds</text></g><g id="glass"><g class="shape" ><rect x="148.000000" y="0.000000" width="81.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="188.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">glass</text></g><mask id="d2-1327917873" maskUnits="userSpaceOnUse" x="-1" y="-1" width="231" height="68">
</mask></g><g style="animation: d2Transition-d2-393299205-1 9000ms infinite" class="d2-393299205" width="231" height="68" viewBox="-1 -1 231 68"><rect x="-1.000000" y="-1.000000" width="231.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="blinds"><g class="shape" ><rect x="0.000000" y="0.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="44.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">blinds</text></g><g id="glass"><g class="shape" ><rect x="148.000000" y="0.000000" width="81.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="188.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">glass</text></g><mask id="d2-1327917873" maskUnits="userSpaceOnUse" x="-1" y="-1" width="231" height="68">
<rect x="-1" y="-1" width="231" height="68" fill="white"></rect>
<rect x="22.500000" y="22.500000" width="43" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="170.500000" y="22.500000" width="36" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-393299205-2 10000ms infinite" class="d2-393299205" width="473" height="68" viewBox="-1 -1 473 68"><rect x="-1.000000" y="-1.000000" width="473.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="shingles"><g class="shape" ><rect x="0.000000" y="0.000000" width="104.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="52.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">shingles</text></g><g id="starlink"><g class="shape" ><rect x="164.000000" y="0.000000" width="101.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="214.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">starlink</text></g><g id="utility hookup"><g class="shape" ><rect x="325.000000" y="0.000000" width="146.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="398.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">utility hookup</text></g><mask id="d2-776641380" maskUnits="userSpaceOnUse" x="-1" y="-1" width="473" height="68">
</mask></g><g style="animation: d2Transition-d2-393299205-2 9000ms infinite" class="d2-393299205" width="473" height="68" viewBox="-1 -1 473 68"><rect x="-1.000000" y="-1.000000" width="473.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="shingles"><g class="shape" ><rect x="0.000000" y="0.000000" width="104.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="52.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">shingles</text></g><g id="starlink"><g class="shape" ><rect x="164.000000" y="0.000000" width="101.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="214.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">starlink</text></g><g id="utility hookup"><g class="shape" ><rect x="325.000000" y="0.000000" width="146.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="398.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">utility hookup</text></g><mask id="d2-776641380" maskUnits="userSpaceOnUse" x="-1" y="-1" width="473" height="68">
<rect x="-1" y="-1" width="473" height="68" fill="white"></rect>
<rect x="22.500000" y="22.500000" width="59" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="186.500000" y="22.500000" width="56" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="347.500000" y="22.500000" width="101" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-393299205-3 10000ms infinite" class="d2-393299205" width="246" height="68" viewBox="-1 -1 246 68"><rect x="-1.000000" y="-1.000000" width="246.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="tools"><g class="shape" ><rect x="0.000000" y="0.000000" width="81.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="40.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">tools</text></g><g id="vehicles"><g class="shape" ><rect x="141.000000" y="0.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="192.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">vehicles</text></g><mask id="d2-3746301632" maskUnits="userSpaceOnUse" x="-1" y="-1" width="246" height="68">
</mask></g><g style="animation: d2Transition-d2-393299205-3 9000ms infinite" class="d2-393299205" width="246" height="68" viewBox="-1 -1 246 68"><rect x="-1.000000" y="-1.000000" width="246.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="tools"><g class="shape" ><rect x="0.000000" y="0.000000" width="81.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="40.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">tools</text></g><g id="vehicles"><g class="shape" ><rect x="141.000000" y="0.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="192.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">vehicles</text></g><mask id="d2-3746301632" maskUnits="userSpaceOnUse" x="-1" y="-1" width="246" height="68">
<rect x="-1" y="-1" width="246" height="68" fill="white"></rect>
<rect x="22.500000" y="22.500000" width="36" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="163.500000" y="22.500000" width="58" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-393299205-4 10000ms infinite" class="d2-393299205" width="0" height="0" viewBox="0 0 0 0"><rect x="0.000000" y="0.000000" width="0.000000" height="0.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><mask id="d2-3670727174" maskUnits="userSpaceOnUse" x="0" y="0" width="0" height="0">
<rect x="0" y="0" width="0" height="0" fill="white"></rect>
</mask></g><g style="animation: d2Transition-d2-393299205-5 10000ms infinite" class="d2-393299205" width="343" height="168" viewBox="9 -21 343 168"><rect x="9.000000" y="-21.000000" width="343.000000" height="168.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="10.000000" y="20.000000" width="341.000000" height="126.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="180.500000" y="7.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="40.000000" y="50.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="95.000000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="210.000000" y="50.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="265.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><mask id="d2-2345130346" maskUnits="userSpaceOnUse" x="9" y="-21" width="343" height="168">
</mask></g><g style="animation: d2Transition-d2-393299205-4 9000ms infinite" class="d2-393299205" width="343" height="168" viewBox="9 -21 343 168"><rect x="9.000000" y="-21.000000" width="343.000000" height="168.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="10.000000" y="20.000000" width="341.000000" height="126.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="180.500000" y="7.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="40.000000" y="50.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="95.000000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="210.000000" y="50.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="265.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><mask id="d2-2345130346" maskUnits="userSpaceOnUse" x="9" y="-21" width="343" height="168">
<rect x="9" y="-21" width="343" height="168" fill="white"></rect>
<rect x="87.000000" y="-21.000000" width="187" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="62.500000" y="72.500000" width="65" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="232.500000" y="72.500000" width="66" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-393299205-6 10000ms infinite" class="d2-393299205" width="343" height="354" viewBox="9 -21 343 354"><rect x="9.000000" y="-21.000000" width="343.000000" height="354.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="10.000000" y="20.000000" width="341.000000" height="126.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="180.500000" y="7.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="196.000000" y="266.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="266.000000" y="304.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="40.000000" y="50.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="95.000000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="210.000000" y="50.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="265.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 265.500000 148.000000 C 265.500000 202.000000 265.500000 226.000000 265.500000 262.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-490450223)" /></g><mask id="d2-490450223" maskUnits="userSpaceOnUse" x="9" y="-21" width="343" height="354">
</mask></g><g style="animation: d2Transition-d2-393299205-5 9000ms infinite" class="d2-393299205" width="343" height="354" viewBox="9 -21 343 354"><rect x="9.000000" y="-21.000000" width="343.000000" height="354.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="10.000000" y="20.000000" width="341.000000" height="126.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="180.500000" y="7.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="196.000000" y="266.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="266.000000" y="304.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="40.000000" y="50.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="95.000000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="210.000000" y="50.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="265.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 265.500000 148.000000 C 265.500000 202.000000 265.500000 226.000000 265.500000 262.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-490450223)" /></g><mask id="d2-490450223" maskUnits="userSpaceOnUse" x="9" y="-21" width="343" height="354">
<rect x="9" y="-21" width="343" height="354" fill="white"></rect>
<rect x="87.000000" y="-21.000000" width="187" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="218.500000" y="288.500000" width="95" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="62.500000" y="72.500000" width="65" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="232.500000" y="72.500000" width="66" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-393299205-7 10000ms infinite" class="d2-393299205" width="536" height="354" viewBox="9 -21 536 354"><rect x="9.000000" y="-21.000000" width="536.000000" height="354.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="10.000000" y="20.000000" width="341.000000" height="126.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="180.500000" y="7.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="196.000000" y="266.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="266.000000" y="304.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="obtain quotes"><g class="shape" ><rect x="401.000000" y="50.000000" width="143.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="472.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">obtain quotes</text></g><g id="negotiate"><g class="shape" ><rect x="417.000000" y="266.000000" width="112.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="473.000000" y="304.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">negotiate</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="40.000000" y="50.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="95.000000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="210.000000" y="50.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="265.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 265.500000 148.000000 C 265.500000 202.000000 265.500000 226.000000 265.500000 262.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-142948233)" /></g><g id="(obtain quotes -&gt; negotiate)[0]"><path d="M 472.500000 118.000000 C 472.500000 156.000000 472.500000 226.000000 472.500000 262.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-142948233)" /></g><mask id="d2-142948233" maskUnits="userSpaceOnUse" x="9" y="-21" width="536" height="354">
</mask></g><g style="animation: d2Transition-d2-393299205-6 9000ms infinite" class="d2-393299205" width="536" height="354" viewBox="9 -21 536 354"><rect x="9.000000" y="-21.000000" width="536.000000" height="354.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="10.000000" y="20.000000" width="341.000000" height="126.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="180.500000" y="7.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="196.000000" y="266.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="266.000000" y="304.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="obtain quotes"><g class="shape" ><rect x="401.000000" y="50.000000" width="143.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="472.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">obtain quotes</text></g><g id="negotiate"><g class="shape" ><rect x="417.000000" y="266.000000" width="112.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="473.000000" y="304.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">negotiate</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="40.000000" y="50.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="95.000000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="210.000000" y="50.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="265.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 265.500000 148.000000 C 265.500000 202.000000 265.500000 226.000000 265.500000 262.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-142948233)" /></g><g id="(obtain quotes -&gt; negotiate)[0]"><path d="M 472.500000 118.000000 C 472.500000 156.000000 472.500000 226.000000 472.500000 262.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-142948233)" /></g><mask id="d2-142948233" maskUnits="userSpaceOnUse" x="9" y="-21" width="536" height="354">
<rect x="9" y="-21" width="536" height="354" fill="white"></rect>
<rect x="87.000000" y="-21.000000" width="187" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="218.500000" y="288.500000" width="95" height="21" fill="rgba(0,0,0,0.75)"></rect>
@ -233,7 +220,7 @@
<rect x="439.500000" y="288.500000" width="67" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="62.500000" y="72.500000" width="65" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="232.500000" y="72.500000" width="66" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-393299205-8 10000ms infinite" class="d2-393299205" width="548" height="520" viewBox="9 -21 548 520"><rect x="9.000000" y="-21.000000" width="548.000000" height="520.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="10.000000" y="20.000000" width="341.000000" height="126.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="180.500000" y="7.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="196.000000" y="266.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="266.000000" y="304.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="obtain quotes"><g class="shape" ><rect x="401.000000" y="50.000000" width="143.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="472.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">obtain quotes</text></g><g id="negotiate"><g class="shape" ><rect x="417.000000" y="266.000000" width="112.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="473.000000" y="304.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">negotiate</text></g><g id="book the best bid"><g class="shape" ><rect x="389.000000" y="432.000000" width="167.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="472.500000" y="470.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">book the best bid</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="40.000000" y="50.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="95.000000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="210.000000" y="50.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="265.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 265.500000 148.000000 C 265.500000 202.000000 265.500000 226.000000 265.500000 262.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-2333849477)" /></g><g id="(obtain quotes -&gt; negotiate)[0]"><path d="M 472.500000 118.000000 C 472.500000 156.000000 472.500000 226.000000 472.500000 262.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-2333849477)" /></g><g id="(negotiate -&gt; book the best bid)[0]"><path d="M 472.500000 334.000000 C 472.500000 372.000000 472.500000 392.000000 472.500000 428.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-2333849477)" /></g><mask id="d2-2333849477" maskUnits="userSpaceOnUse" x="9" y="-21" width="548" height="520">
</mask></g><g style="animation: d2Transition-d2-393299205-7 9000ms infinite" class="d2-393299205" width="548" height="520" viewBox="9 -21 548 520"><rect x="9.000000" y="-21.000000" width="548.000000" height="520.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="10.000000" y="20.000000" width="341.000000" height="126.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="180.500000" y="7.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="196.000000" y="266.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="266.000000" y="304.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="obtain quotes"><g class="shape" ><rect x="401.000000" y="50.000000" width="143.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="472.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">obtain quotes</text></g><g id="negotiate"><g class="shape" ><rect x="417.000000" y="266.000000" width="112.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="473.000000" y="304.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">negotiate</text></g><g id="book the best bid"><g class="shape" ><rect x="389.000000" y="432.000000" width="167.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="472.500000" y="470.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">book the best bid</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="40.000000" y="50.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="95.000000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="210.000000" y="50.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="265.500000" y="88.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 265.500000 148.000000 C 265.500000 202.000000 265.500000 226.000000 265.500000 262.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-2333849477)" /></g><g id="(obtain quotes -&gt; negotiate)[0]"><path d="M 472.500000 118.000000 C 472.500000 156.000000 472.500000 226.000000 472.500000 262.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-2333849477)" /></g><g id="(negotiate -&gt; book the best bid)[0]"><path d="M 472.500000 334.000000 C 472.500000 372.000000 472.500000 392.000000 472.500000 428.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-2333849477)" /></g><mask id="d2-2333849477" maskUnits="userSpaceOnUse" x="9" y="-21" width="548" height="520">
<rect x="9" y="-21" width="548" height="520" fill="white"></rect>
<rect x="87.000000" y="-21.000000" width="187" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="218.500000" y="288.500000" width="95" height="21" fill="rgba(0,0,0,0.75)"></rect>
@ -242,7 +229,7 @@
<rect x="411.500000" y="454.500000" width="122" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="62.500000" y="72.500000" width="65" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="232.500000" y="72.500000" width="66" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-393299205-9 10000ms infinite" class="d2-393299205" width="838" height="68" viewBox="-1 -1 838 68"><rect x="-1.000000" y="-1.000000" width="838.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="window"><g class="shape" ><rect x="0.000000" y="0.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /><rect x="5.000000" y="5.000000" width="93.000000" height="56.000000" fill="transparent" class=" stroke-B1" style="stroke-width:2;" /></g><text x="51.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">window</text></g><g id="roof"><g class="shape" ><rect x="163.000000" y="0.000000" width="75.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="200.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">roof</text></g><g id="garage"><g class="shape" ><rect x="298.000000" y="0.000000" width="94.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="345.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">garage</text></g><g id="water"><g class="shape" ><rect x="452.000000" y="0.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="496.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">water</text></g><g id="rain"><g class="shape" ><rect x="600.000000" y="0.000000" width="73.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="636.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">rain</text></g><g id="thunder"><g class="shape" ><rect x="733.000000" y="0.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="784.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">thunder</text></g><mask id="d2-2729558277" maskUnits="userSpaceOnUse" x="-1" y="-1" width="838" height="68">
</mask></g><g style="animation: d2Transition-d2-393299205-8 9000ms infinite" class="d2-393299205" width="838" height="68" viewBox="-1 -1 838 68"><rect x="-1.000000" y="-1.000000" width="838.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="window"><g class="shape" ><rect x="0.000000" y="0.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /><rect x="5.000000" y="5.000000" width="93.000000" height="56.000000" fill="transparent" class=" stroke-B1" style="stroke-width:2;" /></g><text x="51.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">window</text></g><g id="roof"><g class="shape" ><rect x="163.000000" y="0.000000" width="75.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="200.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">roof</text></g><g id="garage"><g class="shape" ><rect x="298.000000" y="0.000000" width="94.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="345.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">garage</text></g><g id="water"><g class="shape" ><rect x="452.000000" y="0.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="496.000000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">water</text></g><g id="rain"><g class="shape" ><rect x="600.000000" y="0.000000" width="73.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="636.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">rain</text></g><g id="thunder"><g class="shape" ><rect x="733.000000" y="0.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="784.500000" y="38.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">thunder</text></g><mask id="d2-2729558277" maskUnits="userSpaceOnUse" x="-1" y="-1" width="838" height="68">
<rect x="-1" y="-1" width="838" height="68" fill="white"></rect>
<rect x="22.500000" y="22.500000" width="58" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="185.500000" y="22.500000" width="30" height="21" fill="rgba(0,0,0,0.75)"></rect>

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View file

@ -602,7 +602,7 @@
},
{
"name": "repair",
"isFolderOnly": false,
"isFolderOnly": true,
"fontFamily": "SourceSansPro",
"shapes": [],
"connections": [],

View file

@ -100,132 +100,119 @@
0%, 0.000000% {
opacity: 0;
}
0.000000%, 9.990000% {
0.000000%, 11.100000% {
opacity: 1;
}
10.000000%, 100% {
11.111111%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-659664847-1 {
0%, 9.990000% {
0%, 11.100000% {
opacity: 0;
}
10.000000%, 19.990000% {
11.111111%, 22.211111% {
opacity: 1;
}
20.000000%, 100% {
22.222222%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-659664847-2 {
0%, 19.990000% {
0%, 22.211111% {
opacity: 0;
}
20.000000%, 29.990000% {
22.222222%, 33.322222% {
opacity: 1;
}
30.000000%, 100% {
33.333333%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-659664847-3 {
0%, 29.990000% {
0%, 33.322222% {
opacity: 0;
}
30.000000%, 39.990000% {
33.333333%, 44.433333% {
opacity: 1;
}
40.000000%, 100% {
44.444444%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-659664847-4 {
0%, 39.990000% {
0%, 44.433333% {
opacity: 0;
}
40.000000%, 49.990000% {
44.444444%, 55.544444% {
opacity: 1;
}
50.000000%, 100% {
55.555556%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-659664847-5 {
0%, 49.990000% {
0%, 55.544444% {
opacity: 0;
}
50.000000%, 59.990000% {
55.555556%, 66.655556% {
opacity: 1;
}
60.000000%, 100% {
66.666667%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-659664847-6 {
0%, 59.990000% {
0%, 66.655556% {
opacity: 0;
}
60.000000%, 69.990000% {
66.666667%, 77.766667% {
opacity: 1;
}
70.000000%, 100% {
77.777778%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-659664847-7 {
0%, 69.990000% {
0%, 77.766667% {
opacity: 0;
}
70.000000%, 79.990000% {
77.777778%, 88.877778% {
opacity: 1;
}
80.000000%, 100% {
88.888889%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-659664847-8 {
0%, 79.990000% {
0%, 88.877778% {
opacity: 0;
}
80.000000%, 89.990000% {
88.888889%, 100.000000% {
opacity: 1;
}
90.000000%, 100% {
opacity: 0;
}
}@keyframes d2Transition-d2-659664847-9 {
0%, 89.990000% {
opacity: 0;
}
90.000000%, 100.000000% {
opacity: 1;
}
}]]></style><g style="animation: d2Transition-d2-659664847-0 10000ms infinite" class="d2-659664847" width="314" height="68" viewBox="11 11 314 68"><rect x="11.000000" y="11.000000" width="314.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="window"><g class="shape" ><rect x="12.000000" y="12.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /><rect x="17.000000" y="17.000000" width="93.000000" height="56.000000" fill="transparent" class=" stroke-B1" style="stroke-width:2;" /></g><text x="63.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">window</text></g><g id="roof"><g class="shape" ><rect x="135.000000" y="12.000000" width="75.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="172.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">roof</text></g><g id="garage"><g class="shape" ><rect x="230.000000" y="12.000000" width="94.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="277.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">garage</text></g><mask id="d2-659664847" maskUnits="userSpaceOnUse" x="11" y="11" width="314" height="68">
}]]></style><g style="animation: d2Transition-d2-659664847-0 9000ms infinite" class="d2-659664847" width="314" height="68" viewBox="11 11 314 68"><rect x="11.000000" y="11.000000" width="314.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="window"><g class="shape" ><rect x="12.000000" y="12.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /><rect x="17.000000" y="17.000000" width="93.000000" height="56.000000" fill="transparent" class=" stroke-B1" style="stroke-width:2;" /></g><text x="63.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">window</text></g><g id="roof"><g class="shape" ><rect x="135.000000" y="12.000000" width="75.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="172.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">roof</text></g><g id="garage"><g class="shape" ><rect x="230.000000" y="12.000000" width="94.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="277.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">garage</text></g><mask id="d2-659664847" maskUnits="userSpaceOnUse" x="11" y="11" width="314" height="68">
<rect x="11" y="11" width="314" height="68" fill="white"></rect>
<rect x="34.500000" y="34.500000" width="58" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="157.500000" y="34.500000" width="30" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="252.500000" y="34.500000" width="49" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-659664847-1 10000ms infinite" class="d2-659664847" width="191" height="68" viewBox="11 11 191 68"><rect x="11.000000" y="11.000000" width="191.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="blinds"><g class="shape" ><rect x="12.000000" y="12.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="56.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">blinds</text></g><g id="glass"><g class="shape" ><rect x="120.000000" y="12.000000" width="81.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="160.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">glass</text></g><mask id="d2-176978712" maskUnits="userSpaceOnUse" x="11" y="11" width="191" height="68">
</mask></g><g style="animation: d2Transition-d2-659664847-1 9000ms infinite" class="d2-659664847" width="191" height="68" viewBox="11 11 191 68"><rect x="11.000000" y="11.000000" width="191.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="blinds"><g class="shape" ><rect x="12.000000" y="12.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="56.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">blinds</text></g><g id="glass"><g class="shape" ><rect x="120.000000" y="12.000000" width="81.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="160.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">glass</text></g><mask id="d2-176978712" maskUnits="userSpaceOnUse" x="11" y="11" width="191" height="68">
<rect x="11" y="11" width="191" height="68" fill="white"></rect>
<rect x="34.500000" y="34.500000" width="43" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="142.500000" y="34.500000" width="36" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-659664847-2 10000ms infinite" class="d2-659664847" width="393" height="68" viewBox="11 11 393 68"><rect x="11.000000" y="11.000000" width="393.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="shingles"><g class="shape" ><rect x="12.000000" y="12.000000" width="104.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="64.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">shingles</text></g><g id="starlink"><g class="shape" ><rect x="136.000000" y="12.000000" width="101.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="186.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">starlink</text></g><g id="utility hookup"><g class="shape" ><rect x="257.000000" y="12.000000" width="146.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="330.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">utility hookup</text></g><mask id="d2-3621630373" maskUnits="userSpaceOnUse" x="11" y="11" width="393" height="68">
</mask></g><g style="animation: d2Transition-d2-659664847-2 9000ms infinite" class="d2-659664847" width="393" height="68" viewBox="11 11 393 68"><rect x="11.000000" y="11.000000" width="393.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="shingles"><g class="shape" ><rect x="12.000000" y="12.000000" width="104.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="64.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">shingles</text></g><g id="starlink"><g class="shape" ><rect x="136.000000" y="12.000000" width="101.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="186.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">starlink</text></g><g id="utility hookup"><g class="shape" ><rect x="257.000000" y="12.000000" width="146.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="330.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">utility hookup</text></g><mask id="d2-3621630373" maskUnits="userSpaceOnUse" x="11" y="11" width="393" height="68">
<rect x="11" y="11" width="393" height="68" fill="white"></rect>
<rect x="34.500000" y="34.500000" width="59" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="158.500000" y="34.500000" width="56" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="279.500000" y="34.500000" width="101" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-659664847-3 10000ms infinite" class="d2-659664847" width="206" height="68" viewBox="11 11 206 68"><rect x="11.000000" y="11.000000" width="206.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="tools"><g class="shape" ><rect x="12.000000" y="12.000000" width="81.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="52.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">tools</text></g><g id="vehicles"><g class="shape" ><rect x="113.000000" y="12.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="164.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">vehicles</text></g><mask id="d2-3748577948" maskUnits="userSpaceOnUse" x="11" y="11" width="206" height="68">
</mask></g><g style="animation: d2Transition-d2-659664847-3 9000ms infinite" class="d2-659664847" width="206" height="68" viewBox="11 11 206 68"><rect x="11.000000" y="11.000000" width="206.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="tools"><g class="shape" ><rect x="12.000000" y="12.000000" width="81.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="52.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">tools</text></g><g id="vehicles"><g class="shape" ><rect x="113.000000" y="12.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="164.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">vehicles</text></g><mask id="d2-3748577948" maskUnits="userSpaceOnUse" x="11" y="11" width="206" height="68">
<rect x="11" y="11" width="206" height="68" fill="white"></rect>
<rect x="34.500000" y="34.500000" width="36" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="135.500000" y="34.500000" width="58" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-659664847-4 10000ms infinite" class="d2-659664847" width="0" height="0" viewBox="0 0 0 0"><rect x="0.000000" y="0.000000" width="0.000000" height="0.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><mask id="d2-2351430763" maskUnits="userSpaceOnUse" x="0" y="0" width="0" height="0">
<rect x="0" y="0" width="0" height="0" fill="white"></rect>
</mask></g><g style="animation: d2Transition-d2-659664847-5 10000ms infinite" class="d2-659664847" width="343" height="168" viewBox="11 11 343 168"><rect x="11.000000" y="11.000000" width="343.000000" height="168.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="12.000000" y="12.000000" width="341.000000" height="166.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="182.500000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="62.000000" y="62.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="117.000000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="192.000000" y="62.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="247.500000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><mask id="d2-987832019" maskUnits="userSpaceOnUse" x="11" y="11" width="343" height="168">
</mask></g><g style="animation: d2Transition-d2-659664847-4 9000ms infinite" class="d2-659664847" width="343" height="168" viewBox="11 11 343 168"><rect x="11.000000" y="11.000000" width="343.000000" height="168.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="12.000000" y="12.000000" width="341.000000" height="166.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="182.500000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="62.000000" y="62.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="117.000000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="192.000000" y="62.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="247.500000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><mask id="d2-987832019" maskUnits="userSpaceOnUse" x="11" y="11" width="343" height="168">
<rect x="11" y="11" width="343" height="168" fill="white"></rect>
<rect x="89.000000" y="17.000000" width="187" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="84.500000" y="84.500000" width="65" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="214.500000" y="84.500000" width="66" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-659664847-6 10000ms infinite" class="d2-659664847" width="343" height="304" viewBox="11 11 343 304"><rect x="11.000000" y="11.000000" width="343.000000" height="304.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="12.000000" y="12.000000" width="341.000000" height="166.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="182.500000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="112.000000" y="248.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="182.000000" y="286.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="62.000000" y="62.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="117.000000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="192.000000" y="62.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="247.500000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 182.500000 180.000000 L 182.500000 244.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-4004375104)" /></g><mask id="d2-4004375104" maskUnits="userSpaceOnUse" x="11" y="11" width="343" height="304">
</mask></g><g style="animation: d2Transition-d2-659664847-5 9000ms infinite" class="d2-659664847" width="343" height="304" viewBox="11 11 343 304"><rect x="11.000000" y="11.000000" width="343.000000" height="304.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="12.000000" y="12.000000" width="341.000000" height="166.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="182.500000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="112.000000" y="248.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="182.000000" y="286.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="62.000000" y="62.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="117.000000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="192.000000" y="62.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="247.500000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 182.500000 180.000000 L 182.500000 244.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-4004375104)" /></g><mask id="d2-4004375104" maskUnits="userSpaceOnUse" x="11" y="11" width="343" height="304">
<rect x="11" y="11" width="343" height="304" fill="white"></rect>
<rect x="89.000000" y="17.000000" width="187" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="134.500000" y="270.500000" width="95" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="84.500000" y="84.500000" width="65" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="214.500000" y="84.500000" width="66" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-659664847-7 10000ms infinite" class="d2-659664847" width="506" height="304" viewBox="11 11 506 304"><rect x="11.000000" y="11.000000" width="506.000000" height="304.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="12.000000" y="12.000000" width="341.000000" height="166.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="182.500000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="112.000000" y="248.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="182.000000" y="286.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="obtain quotes"><g class="shape" ><rect x="373.000000" y="112.000000" width="143.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="444.500000" y="150.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">obtain quotes</text></g><g id="negotiate"><g class="shape" ><rect x="388.000000" y="248.000000" width="112.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="444.000000" y="286.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">negotiate</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="62.000000" y="62.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="117.000000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="192.000000" y="62.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="247.500000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 182.500000 180.000000 L 182.500000 244.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-312682591)" /></g><g id="(obtain quotes -&gt; negotiate)[0]"><path d="M 444.500000 180.000000 L 444.500000 244.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-312682591)" /></g><mask id="d2-312682591" maskUnits="userSpaceOnUse" x="11" y="11" width="506" height="304">
</mask></g><g style="animation: d2Transition-d2-659664847-6 9000ms infinite" class="d2-659664847" width="506" height="304" viewBox="11 11 506 304"><rect x="11.000000" y="11.000000" width="506.000000" height="304.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="12.000000" y="12.000000" width="341.000000" height="166.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="182.500000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="112.000000" y="248.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="182.000000" y="286.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="obtain quotes"><g class="shape" ><rect x="373.000000" y="112.000000" width="143.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="444.500000" y="150.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">obtain quotes</text></g><g id="negotiate"><g class="shape" ><rect x="388.000000" y="248.000000" width="112.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="444.000000" y="286.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">negotiate</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="62.000000" y="62.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="117.000000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="192.000000" y="62.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="247.500000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 182.500000 180.000000 L 182.500000 244.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-312682591)" /></g><g id="(obtain quotes -&gt; negotiate)[0]"><path d="M 444.500000 180.000000 L 444.500000 244.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-312682591)" /></g><mask id="d2-312682591" maskUnits="userSpaceOnUse" x="11" y="11" width="506" height="304">
<rect x="11" y="11" width="506" height="304" fill="white"></rect>
<rect x="89.000000" y="17.000000" width="187" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="134.500000" y="270.500000" width="95" height="21" fill="rgba(0,0,0,0.75)"></rect>
@ -233,7 +220,7 @@
<rect x="410.500000" y="270.500000" width="67" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="84.500000" y="84.500000" width="65" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="214.500000" y="84.500000" width="66" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-659664847-8 10000ms infinite" class="d2-659664847" width="518" height="440" viewBox="11 11 518 440"><rect x="11.000000" y="11.000000" width="518.000000" height="440.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="12.000000" y="12.000000" width="341.000000" height="166.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="182.500000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="112.000000" y="248.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="182.000000" y="286.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="obtain quotes"><g class="shape" ><rect x="373.000000" y="112.000000" width="143.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="444.500000" y="150.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">obtain quotes</text></g><g id="negotiate"><g class="shape" ><rect x="388.000000" y="248.000000" width="112.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="444.000000" y="286.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">negotiate</text></g><g id="book the best bid"><g class="shape" ><rect x="361.000000" y="384.000000" width="167.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="444.500000" y="422.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">book the best bid</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="62.000000" y="62.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="117.000000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="192.000000" y="62.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="247.500000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 182.500000 180.000000 L 182.500000 244.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1612412364)" /></g><g id="(obtain quotes -&gt; negotiate)[0]"><path d="M 444.500000 180.000000 L 444.500000 244.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1612412364)" /></g><g id="(negotiate -&gt; book the best bid)[0]"><path d="M 444.500000 316.000000 L 444.500000 380.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1612412364)" /></g><mask id="d2-1612412364" maskUnits="userSpaceOnUse" x="11" y="11" width="518" height="440">
</mask></g><g style="animation: d2Transition-d2-659664847-7 9000ms infinite" class="d2-659664847" width="518" height="440" viewBox="11 11 518 440"><rect x="11.000000" y="11.000000" width="518.000000" height="440.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="find contractors"><g class="shape" ><rect x="12.000000" y="12.000000" width="341.000000" height="166.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="182.500000" y="45.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">find contractors</text></g><g id="solicit quotes"><g class="shape" ><rect x="112.000000" y="248.000000" width="140.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="182.000000" y="286.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">solicit quotes</text></g><g id="obtain quotes"><g class="shape" ><rect x="373.000000" y="112.000000" width="143.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="444.500000" y="150.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">obtain quotes</text></g><g id="negotiate"><g class="shape" ><rect x="388.000000" y="248.000000" width="112.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="444.000000" y="286.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">negotiate</text></g><g id="book the best bid"><g class="shape" ><rect x="361.000000" y="384.000000" width="167.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="444.500000" y="422.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">book the best bid</text></g><g id="find contractors.craigslist"><g class="shape" ><rect x="62.000000" y="62.000000" width="110.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="117.000000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">craigslist</text></g><g id="find contractors.facebook"><g class="shape" ><rect x="192.000000" y="62.000000" width="111.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="247.500000" y="100.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">facebook</text></g><g id="(find contractors -&gt; solicit quotes)[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 182.500000 180.000000 L 182.500000 244.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1612412364)" /></g><g id="(obtain quotes -&gt; negotiate)[0]"><path d="M 444.500000 180.000000 L 444.500000 244.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1612412364)" /></g><g id="(negotiate -&gt; book the best bid)[0]"><path d="M 444.500000 316.000000 L 444.500000 380.000000" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1612412364)" /></g><mask id="d2-1612412364" maskUnits="userSpaceOnUse" x="11" y="11" width="518" height="440">
<rect x="11" y="11" width="518" height="440" fill="white"></rect>
<rect x="89.000000" y="17.000000" width="187" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="134.500000" y="270.500000" width="95" height="21" fill="rgba(0,0,0,0.75)"></rect>
@ -242,7 +229,7 @@
<rect x="383.500000" y="406.500000" width="122" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="84.500000" y="84.500000" width="65" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="214.500000" y="84.500000" width="66" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></g><g style="animation: d2Transition-d2-659664847-9 10000ms infinite" class="d2-659664847" width="638" height="68" viewBox="11 11 638 68"><rect x="11.000000" y="11.000000" width="638.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="window"><g class="shape" ><rect x="12.000000" y="12.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /><rect x="17.000000" y="17.000000" width="93.000000" height="56.000000" fill="transparent" class=" stroke-B1" style="stroke-width:2;" /></g><text x="63.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">window</text></g><g id="roof"><g class="shape" ><rect x="135.000000" y="12.000000" width="75.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="172.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">roof</text></g><g id="garage"><g class="shape" ><rect x="230.000000" y="12.000000" width="94.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="277.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">garage</text></g><g id="water"><g class="shape" ><rect x="344.000000" y="12.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="388.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">water</text></g><g id="rain"><g class="shape" ><rect x="452.000000" y="12.000000" width="73.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="488.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">rain</text></g><g id="thunder"><g class="shape" ><rect x="545.000000" y="12.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="596.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">thunder</text></g><mask id="d2-676377399" maskUnits="userSpaceOnUse" x="11" y="11" width="638" height="68">
</mask></g><g style="animation: d2Transition-d2-659664847-8 9000ms infinite" class="d2-659664847" width="638" height="68" viewBox="11 11 638 68"><rect x="11.000000" y="11.000000" width="638.000000" height="68.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><g id="window"><g class="shape" ><rect x="12.000000" y="12.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /><rect x="17.000000" y="17.000000" width="93.000000" height="56.000000" fill="transparent" class=" stroke-B1" style="stroke-width:2;" /></g><text x="63.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">window</text></g><g id="roof"><g class="shape" ><rect x="135.000000" y="12.000000" width="75.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="172.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">roof</text></g><g id="garage"><g class="shape" ><rect x="230.000000" y="12.000000" width="94.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="277.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">garage</text></g><g id="water"><g class="shape" ><rect x="344.000000" y="12.000000" width="88.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="388.000000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">water</text></g><g id="rain"><g class="shape" ><rect x="452.000000" y="12.000000" width="73.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="488.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">rain</text></g><g id="thunder"><g class="shape" ><rect x="545.000000" y="12.000000" width="103.000000" height="66.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="596.500000" y="50.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">thunder</text></g><mask id="d2-676377399" maskUnits="userSpaceOnUse" x="11" y="11" width="638" height="68">
<rect x="11" y="11" width="638" height="68" fill="white"></rect>
<rect x="34.500000" y="34.500000" width="58" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="157.500000" y="34.500000" width="30" height="21" fill="rgba(0,0,0,0.75)"></rect>

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View file

@ -1,7 +1,7 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile/root_direction.d2,0:0:0-0:16:16",
"nodes": [

View file

@ -1,7 +1,7 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile/root_sequence.d2,0:0:0-1:0:24",
"nodes": [

View file

@ -0,0 +1,287 @@
{
"graph": {
"name": "",
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,0:0:0-8:0:48",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,1:0:1-1:16:17",
"key": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,1:0:1-1:9:10",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,1:0:1-1:9:10",
"value": [
{
"string": "direction",
"raw_string": "direction"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,1:11:12-1:16:17",
"value": [
{
"string": "right",
"raw_string": "right"
}
]
}
}
}
},
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,3:0:19-7:1:47",
"key": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,3:0:19-3:5:24",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,3:0:19-3:5:24",
"value": [
{
"string": "steps",
"raw_string": "steps"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,3:7:26-7:1:47",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,4:2:30-6:3:45",
"key": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,4:2:30-4:3:31",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,4:2:30-4:3:31",
"value": [
{
"string": "1",
"raw_string": "1"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,4:5:33-6:3:45",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,5:4:39-5:6:41",
"key": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,5:4:39-5:6:41",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,5:4:39-5:6:41",
"value": [
{
"string": "RJ",
"raw_string": "RJ"
}
]
}
}
]
},
"primary": {},
"value": {}
}
}
]
}
}
}
}
]
}
}
}
}
]
},
"root": {
"id": "",
"id_val": "",
"attributes": {
"label": {
"value": ""
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": ""
},
"direction": {
"value": "right"
},
"constraint": null
},
"zIndex": 0
},
"edges": null,
"objects": null,
"steps": [
{
"name": "1",
"isFolderOnly": false,
"ast": {
"range": ",1:0:0-2:0:0",
"nodes": [
{
"map_key": {
"range": ",0:0:0-0:0:0",
"key": {
"range": ",0:0:0-0:0:0",
"path": [
{
"unquoted_string": {
"range": ",0:0:0-0:0:0",
"value": [
{
"string": "direction"
}
]
}
}
]
},
"primary": {
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,1:11:12-1:16:17",
"value": [
{
"string": "right",
"raw_string": "right"
}
]
}
},
"value": {}
}
},
{
"map_key": {
"range": ",0:0:0-0:0:0",
"key": {
"range": ",0:0:0-0:0:0",
"path": [
{
"unquoted_string": {
"range": ",0:0:0-0:0:0",
"value": [
{
"string": "RJ"
}
]
}
}
]
},
"primary": {},
"value": {}
}
}
]
},
"root": {
"id": "",
"id_val": "",
"attributes": {
"label": {
"value": ""
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": ""
},
"direction": {
"value": "right"
},
"constraint": null
},
"zIndex": 0
},
"edges": null,
"objects": [
{
"id": "RJ",
"id_val": "RJ",
"references": [
{
"key": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,5:4:39-5:6:41",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile2/boards/isFolderOnly-shapes.d2,5:4:39-5:6:41",
"value": [
{
"string": "RJ",
"raw_string": "RJ"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "RJ"
},
"labelDimensions": {
"width": 0,
"height": 0
},
"style": {},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": null
},
"zIndex": 0
}
]
}
]
},
"err": null
}

View file

@ -1,7 +1,7 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile2/nulls/basic/shape.d2,0:0:0-3:0:11",
"nodes": [

View file

@ -189,7 +189,7 @@
"scenarios": [
{
"name": "a",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": ",1:0:0-2:0:0",
"nodes": null

View file

@ -1,7 +1,7 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile2/vars/boards/layer-2.d2,0:0:0-15:0:135",
"nodes": [

View file

@ -1,7 +1,7 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile2/vars/boards/layer.d2,0:0:0-10:0:62",
"nodes": [

View file

@ -1,7 +1,7 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile2/vars/boards/overlay.d2,0:0:0-23:0:196",
"nodes": [

View file

@ -1,7 +1,7 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile2/vars/boards/replace.d2,0:0:0-13:0:109",
"nodes": [

View file

@ -1,7 +1,7 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile2/vars/boards/scenario.d2,0:0:0-10:0:65",
"nodes": [

View file

@ -1,7 +1,7 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2oracle/TestDelete/class_refs.d2,0:0:0-0:0:0",
"nodes": null

View file

@ -1,7 +1,7 @@
{
"graph": {
"name": "",
"isFolderOnly": false,
"isFolderOnly": true,
"ast": {
"range": "d2/testdata/d2oracle/TestDelete/flat.d2,0:0:0-0:0:0",
"nodes": null