Merge pull request #1442 from gavin-ts/elk-label-positions

adjust elk layouts for custom label/icon positions
This commit is contained in:
gavin-ts 2023-07-13 11:39:43 -07:00 committed by GitHub
commit b1d28c2dd7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 3360 additions and 2457 deletions

View file

@ -11,6 +11,8 @@ import (
"errors"
"fmt"
"math"
"regexp"
"strconv"
"strings"
"github.com/dop251/goja"
@ -180,6 +182,11 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
elkGraph.LayoutOptions.Direction = "DOWN"
}
// set label and icon positions for ELK
for _, obj := range g.Objects {
positionLabelsIcons(obj)
}
elkNodes := make(map[*d2graph.Object]*ELKNode)
elkEdges := make(map[*d2graph.Edge]*ELKEdge)
@ -214,18 +221,7 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
}
}
height := obj.Height
width := obj.Width
if obj.HasLabel() {
if obj.HasOutsideBottomLabel() || obj.Icon != nil {
height += float64(obj.LabelDimensions.Height) + label.PADDING
}
width = go2.Max(width, float64(obj.LabelDimensions.Width))
}
// reserve extra space for 3d/multiple by providing elk the larger dimensions
dx, dy := obj.GetModifierElementAdjustments()
width += dx
height += dy
width, height := adjustDimensions(obj)
n := &ELKNode{
ID: obj.AbsID(),
@ -262,41 +258,18 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
case "RIGHT", "LEFT":
n.LayoutOptions.NodeSizeMinimum = fmt.Sprintf("(%d, %d)", int(math.Ceil(width)), int(math.Ceil(height)))
}
if n.LayoutOptions.Padding == DefaultOpts.Padding {
labelHeight := 0
if obj.HasLabel() {
labelHeight = obj.LabelDimensions.Height + label.PADDING
}
n.Height += 100 + float64(labelHeight)
n.Width += 100
contentBox := geo.NewBox(geo.NewPoint(0, 0), float64(n.Width), float64(n.Height))
shapeType := d2target.DSL_SHAPE_TO_SHAPE_TYPE[obj.Shape.Value]
s := shape.NewShape(shapeType, contentBox)
paddingTop := n.Height - s.GetInnerBox().Height
n.Height -= (100 + float64(labelHeight))
n.Width -= 100
iconHeight := 0
if obj.Icon != nil && obj.Shape.Value != d2target.ShapeImage {
iconHeight = d2target.GetIconSize(s.GetInnerBox(), string(label.InsideTopLeft)) + label.PADDING*2
}
paddingTop += float64(go2.Max(labelHeight, iconHeight))
n.LayoutOptions.Padding = fmt.Sprintf("[top=%d,left=50,bottom=50,right=50]",
// Default padding
go2.Max(int(math.Ceil(paddingTop)), 50),
)
}
} else {
n.LayoutOptions = &elkOpts{
SelfLoopDistribution: "EQUALLY",
}
}
if obj.IsContainer() {
padding := parsePadding(opts.Padding)
padding = adjustPadding(obj, width, height, padding)
n.LayoutOptions.Padding = padding.String()
}
if obj.HasLabel() {
n.Labels = append(n.Labels, &ELKLabel{
Text: obj.Label.Value,
@ -313,6 +286,41 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
elkNodes[obj] = n
})
// adjust parent padding for children with outside positioned icons
for _, obj := range g.Objects {
if !obj.IsContainer() {
continue
}
var hasTop, hasBottom bool
for _, child := range obj.ChildrenArray {
if child.Shape.Value == d2target.ShapeImage || child.IconPosition == nil {
continue
}
switch label.Position(*child.IconPosition) {
case label.OutsideTopLeft, label.OutsideTopCenter, label.OutsideTopRight:
hasTop = true
case label.OutsideBottomLeft, label.OutsideBottomCenter, label.OutsideBottomRight:
hasBottom = true
}
if hasTop && hasBottom {
break
}
}
if hasTop || hasBottom {
padding := parsePadding(elkNodes[obj].LayoutOptions.Padding)
if hasTop {
padding.top = go2.Max(padding.top, d2target.MAX_ICON_SIZE+2*label.PADDING)
}
if hasBottom {
padding.bottom = go2.Max(padding.bottom, d2target.MAX_ICON_SIZE+2*label.PADDING)
}
elkNodes[obj].LayoutOptions.Padding = padding.String()
}
}
for _, edge := range g.Edges {
e := &ELKEdge{
ID: edge.AbsID(),
@ -407,29 +415,6 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
obj.Width = math.Ceil(n.Width)
obj.Height = math.Ceil(n.Height)
if obj.Icon != nil && obj.IconPosition == nil {
if len(obj.ChildrenArray) > 0 {
obj.IconPosition = go2.Pointer(string(label.InsideTopLeft))
if obj.LabelPosition == nil {
obj.LabelPosition = go2.Pointer(string(label.InsideTopRight))
}
} else {
obj.IconPosition = go2.Pointer(string(label.InsideMiddleCenter))
}
}
if obj.HasLabel() && obj.LabelPosition == nil {
if len(obj.ChildrenArray) > 0 {
obj.LabelPosition = go2.Pointer(string(label.InsideTopCenter))
} else if obj.HasOutsideBottomLabel() {
obj.LabelPosition = go2.Pointer(string(label.OutsideBottomCenter))
obj.Height -= float64(obj.LabelDimensions.Height) + label.PADDING
} else if obj.Icon != nil {
obj.LabelPosition = go2.Pointer(string(label.InsideTopCenter))
} else {
obj.LabelPosition = go2.Pointer(string(label.InsideMiddleCenter))
}
}
byID[obj.AbsID()] = obj
})
@ -463,18 +448,8 @@ func Layout(ctx context.Context, g *d2graph.Graph, opts *ConfigurableOpts) (err
edge.Route = points
}
// remove the extra width/height we added for 3d/multiple after all objects/connections are placed
// and shift the shapes down accordingly
for _, obj := range g.Objects {
dx, dy := obj.GetModifierElementAdjustments()
if dx != 0 || dy != 0 {
obj.TopLeft.Y += dy
obj.ShiftDescendants(0, dy)
if !obj.IsContainer() {
obj.Width -= dx
obj.Height -= dy
}
}
cleanupAdjustment(obj)
}
for _, edge := range g.Edges {
@ -808,3 +783,286 @@ func childrenMaxSelfLoop(parent *d2graph.Object, isWidth bool) int {
return max
}
type shapePadding struct {
top, left, bottom, right int
}
// parse out values from elk padding string. e.g. "[top=50,left=50,bottom=50,right=50]"
func parsePadding(in string) shapePadding {
reTop := regexp.MustCompile(`top=(\d+)`)
reLeft := regexp.MustCompile(`left=(\d+)`)
reBottom := regexp.MustCompile(`bottom=(\d+)`)
reRight := regexp.MustCompile(`right=(\d+)`)
padding := shapePadding{}
submatches := reTop.FindStringSubmatch(in)
if len(submatches) == 2 {
i, err := strconv.ParseInt(submatches[1], 10, 64)
if err == nil {
padding.top = int(i)
}
}
submatches = reLeft.FindStringSubmatch(in)
if len(submatches) == 2 {
i, err := strconv.ParseInt(submatches[1], 10, 64)
if err == nil {
padding.left = int(i)
}
}
submatches = reBottom.FindStringSubmatch(in)
if len(submatches) == 2 {
i, err := strconv.ParseInt(submatches[1], 10, 64)
if err == nil {
padding.bottom = int(i)
}
}
submatches = reRight.FindStringSubmatch(in)
i, err := strconv.ParseInt(submatches[1], 10, 64)
if len(submatches) == 2 {
if err == nil {
padding.right = int(i)
}
}
return padding
}
func (padding shapePadding) String() string {
return fmt.Sprintf("[top=%d,left=%d,bottom=%d,right=%d]", padding.top, padding.left, padding.bottom, padding.right)
}
func adjustPadding(obj *d2graph.Object, width, height float64, padding shapePadding) shapePadding {
if !obj.IsContainer() {
return padding
}
// compute extra space padding for label/icon
var extraTop, extraBottom, extraLeft, extraRight int
if obj.HasLabel() && obj.LabelPosition != nil {
labelHeight := obj.LabelDimensions.Height + 2*label.PADDING
labelWidth := obj.LabelDimensions.Width + 2*label.PADDING
switch label.Position(*obj.LabelPosition) {
case label.InsideTopLeft, label.InsideTopCenter, label.InsideTopRight:
// Note: for corners we only add height
extraTop = labelHeight
case label.InsideBottomLeft, label.InsideBottomCenter, label.InsideBottomRight:
extraBottom = labelHeight
case label.InsideMiddleLeft:
extraLeft = labelWidth
case label.InsideMiddleRight:
extraRight = labelWidth
}
}
if obj.Icon != nil && obj.Shape.Value != d2target.ShapeImage && obj.IconPosition != nil {
iconSize := d2target.MAX_ICON_SIZE + 2*label.PADDING
switch label.Position(*obj.IconPosition) {
case label.InsideTopLeft, label.InsideTopCenter, label.InsideTopRight:
extraTop = go2.Max(extraTop, iconSize)
case label.InsideBottomLeft, label.InsideBottomCenter, label.InsideBottomRight:
extraBottom = go2.Max(extraBottom, iconSize)
case label.InsideMiddleLeft:
extraLeft = go2.Max(extraLeft, iconSize)
case label.InsideMiddleRight:
extraRight = go2.Max(extraRight, iconSize)
}
}
maxChildWidth, maxChildHeight := math.Inf(-1), math.Inf(-1)
for _, c := range obj.ChildrenArray {
if c.Width > maxChildWidth {
maxChildWidth = c.Width
}
if c.Height > maxChildHeight {
maxChildHeight = c.Height
}
}
// We don't know exactly what the shape dimensions will be after layout, but for more accurate innerBox dimensions,
// we add the maxChildWidth and maxChildHeight with computed additions for the innerBox calculation
width += maxChildWidth + float64(extraLeft+extraRight)
height += maxChildHeight + float64(extraTop+extraBottom)
contentBox := geo.NewBox(geo.NewPoint(0, 0), width, height)
shapeType := d2target.DSL_SHAPE_TO_SHAPE_TYPE[obj.Shape.Value]
s := shape.NewShape(shapeType, contentBox)
innerBox := s.GetInnerBox()
// If the shape inner box + label/icon height becomes greater than the default padding, we want to use that
//
// ┌OUTER───────────────────────────┬────────────────────────────────────────────┐
// │ │ │
// │ ┌INNER──────── ┬ ─────────────│───────────────────────────────────────┐ │
// │ │ │Label Padding │ │ │
// │ │ ┌LABEL─ ┴ ─────────────│───────┐┬ ┌ICON── ┬ ────┐ │ │
// │ │ │ │ ││ │ │ │ │ │
// │ │ │ │ ││Label Height │ Icon│ │ │ │
// │ │ │ │ ││ │ Height│ │ │ │
// │ │ └──────────────────────│───────┘┴ │ │ │ │ │
// │ │ │ └────── ┴ ────┘ │ │
// │ │ │ │ │
// │ │ ┴Default ELK Padding │ │
// │ │ ┌CHILD────────────────────────────────────────────────────────┐ │ │
// │ │ │ │ │ │
// │ │ │ │ │ │
// │ │ │ │ │ │
// │ │ └─────────────────────────────────────────────────────────────┘ │ │
// │ │ │ │
// │ └─────────────────────────────────────────────────────────────────────┘ │
// │ │
// └─────────────────────────────────────────────────────────────────────────────┘
// estimated shape innerBox padding
innerTop := int(math.Ceil(innerBox.TopLeft.Y))
innerBottom := int(math.Ceil(height - (innerBox.TopLeft.Y + innerBox.Height)))
innerLeft := int(math.Ceil(innerBox.TopLeft.X))
innerRight := int(math.Ceil(width - (innerBox.TopLeft.X + innerBox.Width)))
padding.top = go2.Max(padding.top, innerTop+extraTop)
padding.bottom = go2.Max(padding.bottom, innerBottom+extraBottom)
padding.left = go2.Max(padding.left, innerLeft+extraLeft)
padding.right = go2.Max(padding.right, innerRight+extraRight)
return padding
}
func adjustDimensions(obj *d2graph.Object) (width, height float64) {
width = obj.Width
height = obj.Height
// reserve spacing for labels
if obj.HasLabel() {
var position label.Position
if obj.LabelPosition != nil {
position = label.Position(*obj.LabelPosition)
} else if len(obj.ChildrenArray) == 0 && obj.HasOutsideBottomLabel() {
position = label.OutsideBottomCenter
}
if position.IsShapePosition() {
switch position {
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom,
label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
width += float64(obj.LabelDimensions.Width) + label.PADDING
default:
// TODO labelWidth+2*label.PADDING
width = go2.Max(width, float64(obj.LabelDimensions.Width))
}
}
// special handling
if obj.HasOutsideBottomLabel() || obj.Icon != nil {
height += float64(obj.LabelDimensions.Height) + label.PADDING
}
}
if obj.Icon != nil && obj.Shape.Value != d2target.ShapeImage {
var position label.Position
if obj.IconPosition != nil {
position = label.Position(*obj.IconPosition)
}
if position.IsShapePosition() {
switch position {
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom,
label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
width += d2target.MAX_ICON_SIZE + label.PADDING
default:
width = go2.Max(width, d2target.MAX_ICON_SIZE+2*label.PADDING)
}
}
}
// reserve extra space for 3d/multiple by providing elk the larger dimensions
dx, dy := obj.GetModifierElementAdjustments()
width += dx
height += dy
return
}
func cleanupAdjustment(obj *d2graph.Object) {
// adjust size and position to account for space reserved for labels
if obj.HasLabel() {
position := label.Position(*obj.LabelPosition)
if position.IsShapePosition() {
var labelWidth float64
switch position {
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom,
label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
labelWidth = float64(obj.LabelDimensions.Width) + label.PADDING
obj.Width -= labelWidth
}
switch position {
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom:
obj.TopLeft.X += labelWidth
obj.ShiftDescendants(labelWidth/2, 0)
case label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
obj.ShiftDescendants(-labelWidth/2, 0)
}
}
}
if obj.Icon != nil && obj.Shape.Value != d2target.ShapeImage {
position := label.Position(*obj.IconPosition)
if position.IsShapePosition() {
var iconWidth float64
switch position {
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom,
label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
iconWidth = d2target.MAX_ICON_SIZE + label.PADDING
obj.Width -= iconWidth
}
switch position {
case label.OutsideLeftTop, label.OutsideLeftMiddle, label.OutsideLeftBottom:
obj.TopLeft.X += iconWidth
obj.ShiftDescendants(iconWidth/2, 0)
case label.OutsideRightTop, label.OutsideRightMiddle, label.OutsideRightBottom:
obj.ShiftDescendants(-iconWidth/2, 0)
}
}
}
// special handling to start/end connections below label
if obj.HasOutsideBottomLabel() {
obj.Height -= float64(obj.LabelDimensions.Height) + label.PADDING
}
// remove the extra width/height we added for 3d/multiple after all objects/connections are placed
// and shift the shapes down accordingly
dx, dy := obj.GetModifierElementAdjustments()
if dx != 0 || dy != 0 {
obj.TopLeft.Y += dy
obj.ShiftDescendants(0, dy)
if !obj.IsContainer() {
obj.Width -= dx
obj.Height -= dy
}
}
}
func positionLabelsIcons(obj *d2graph.Object) {
if obj.Icon != nil && obj.IconPosition == nil {
if len(obj.ChildrenArray) > 0 {
obj.IconPosition = go2.Pointer(string(label.InsideTopLeft))
if obj.LabelPosition == nil {
obj.LabelPosition = go2.Pointer(string(label.InsideTopRight))
return
}
} else {
obj.IconPosition = go2.Pointer(string(label.InsideMiddleCenter))
}
}
if obj.HasLabel() && obj.LabelPosition == nil {
if len(obj.ChildrenArray) > 0 {
obj.LabelPosition = go2.Pointer(string(label.InsideTopCenter))
} else if obj.HasOutsideBottomLabel() {
obj.LabelPosition = go2.Pointer(string(label.OutsideBottomCenter))
} else if obj.Icon != nil {
obj.LabelPosition = go2.Pointer(string(label.InsideTopCenter))
} else {
obj.LabelPosition = go2.Pointer(string(label.InsideMiddleCenter))
}
}
}

View file

@ -2782,6 +2782,7 @@ scenarios: {
loadFromFile(t, "label_positions"),
loadFromFile(t, "icon_positions"),
loadFromFile(t, "all_shapes_link"),
loadFromFile(t, "nested_shape_labels"),
}
runa(t, tcs)

View file

@ -31,7 +31,8 @@ non container: {
}
container: {
Default.Default.class: icon
Default.class: icon
Default.Default
OutsideTopLeft.class: [icon; OutsideTopLeft]
OutsideTopCenter.class: [icon; OutsideTopCenter]

View file

@ -0,0 +1,9 @@
aa: {
shape: package
bb.shape: diamond
}
cc: {
shape: diamond
dd.shape: circle
}

View file

@ -11,7 +11,7 @@
"y": 12
},
"width": 128,
"height": 128,
"height": 123,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,

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.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 250 130"><svg id="d2-svg" class="d2-2013875393" width="250" height="130" viewBox="11 11 250 130"><rect x="11.000000" y="11.000000" width="250.000000" height="130.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.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 250 125"><svg id="d2-svg" class="d2-802809420" width="250" height="125" viewBox="11 11 250 125"><rect x="11.000000" y="11.000000" width="250.000000" height="125.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
@ -11,78 +11,78 @@
opacity: 0.5;
}
.d2-2013875393 .fill-N1{fill:#0A0F25;}
.d2-2013875393 .fill-N2{fill:#676C7E;}
.d2-2013875393 .fill-N3{fill:#9499AB;}
.d2-2013875393 .fill-N4{fill:#CFD2DD;}
.d2-2013875393 .fill-N5{fill:#DEE1EB;}
.d2-2013875393 .fill-N6{fill:#EEF1F8;}
.d2-2013875393 .fill-N7{fill:#FFFFFF;}
.d2-2013875393 .fill-B1{fill:#0D32B2;}
.d2-2013875393 .fill-B2{fill:#0D32B2;}
.d2-2013875393 .fill-B3{fill:#E3E9FD;}
.d2-2013875393 .fill-B4{fill:#E3E9FD;}
.d2-2013875393 .fill-B5{fill:#EDF0FD;}
.d2-2013875393 .fill-B6{fill:#F7F8FE;}
.d2-2013875393 .fill-AA2{fill:#4A6FF3;}
.d2-2013875393 .fill-AA4{fill:#EDF0FD;}
.d2-2013875393 .fill-AA5{fill:#F7F8FE;}
.d2-2013875393 .fill-AB4{fill:#EDF0FD;}
.d2-2013875393 .fill-AB5{fill:#F7F8FE;}
.d2-2013875393 .stroke-N1{stroke:#0A0F25;}
.d2-2013875393 .stroke-N2{stroke:#676C7E;}
.d2-2013875393 .stroke-N3{stroke:#9499AB;}
.d2-2013875393 .stroke-N4{stroke:#CFD2DD;}
.d2-2013875393 .stroke-N5{stroke:#DEE1EB;}
.d2-2013875393 .stroke-N6{stroke:#EEF1F8;}
.d2-2013875393 .stroke-N7{stroke:#FFFFFF;}
.d2-2013875393 .stroke-B1{stroke:#0D32B2;}
.d2-2013875393 .stroke-B2{stroke:#0D32B2;}
.d2-2013875393 .stroke-B3{stroke:#E3E9FD;}
.d2-2013875393 .stroke-B4{stroke:#E3E9FD;}
.d2-2013875393 .stroke-B5{stroke:#EDF0FD;}
.d2-2013875393 .stroke-B6{stroke:#F7F8FE;}
.d2-2013875393 .stroke-AA2{stroke:#4A6FF3;}
.d2-2013875393 .stroke-AA4{stroke:#EDF0FD;}
.d2-2013875393 .stroke-AA5{stroke:#F7F8FE;}
.d2-2013875393 .stroke-AB4{stroke:#EDF0FD;}
.d2-2013875393 .stroke-AB5{stroke:#F7F8FE;}
.d2-2013875393 .background-color-N1{background-color:#0A0F25;}
.d2-2013875393 .background-color-N2{background-color:#676C7E;}
.d2-2013875393 .background-color-N3{background-color:#9499AB;}
.d2-2013875393 .background-color-N4{background-color:#CFD2DD;}
.d2-2013875393 .background-color-N5{background-color:#DEE1EB;}
.d2-2013875393 .background-color-N6{background-color:#EEF1F8;}
.d2-2013875393 .background-color-N7{background-color:#FFFFFF;}
.d2-2013875393 .background-color-B1{background-color:#0D32B2;}
.d2-2013875393 .background-color-B2{background-color:#0D32B2;}
.d2-2013875393 .background-color-B3{background-color:#E3E9FD;}
.d2-2013875393 .background-color-B4{background-color:#E3E9FD;}
.d2-2013875393 .background-color-B5{background-color:#EDF0FD;}
.d2-2013875393 .background-color-B6{background-color:#F7F8FE;}
.d2-2013875393 .background-color-AA2{background-color:#4A6FF3;}
.d2-2013875393 .background-color-AA4{background-color:#EDF0FD;}
.d2-2013875393 .background-color-AA5{background-color:#F7F8FE;}
.d2-2013875393 .background-color-AB4{background-color:#EDF0FD;}
.d2-2013875393 .background-color-AB5{background-color:#F7F8FE;}
.d2-2013875393 .color-N1{color:#0A0F25;}
.d2-2013875393 .color-N2{color:#676C7E;}
.d2-2013875393 .color-N3{color:#9499AB;}
.d2-2013875393 .color-N4{color:#CFD2DD;}
.d2-2013875393 .color-N5{color:#DEE1EB;}
.d2-2013875393 .color-N6{color:#EEF1F8;}
.d2-2013875393 .color-N7{color:#FFFFFF;}
.d2-2013875393 .color-B1{color:#0D32B2;}
.d2-2013875393 .color-B2{color:#0D32B2;}
.d2-2013875393 .color-B3{color:#E3E9FD;}
.d2-2013875393 .color-B4{color:#E3E9FD;}
.d2-2013875393 .color-B5{color:#EDF0FD;}
.d2-2013875393 .color-B6{color:#F7F8FE;}
.d2-2013875393 .color-AA2{color:#4A6FF3;}
.d2-2013875393 .color-AA4{color:#EDF0FD;}
.d2-2013875393 .color-AA5{color:#F7F8FE;}
.d2-2013875393 .color-AB4{color:#EDF0FD;}
.d2-2013875393 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="img"><g class="shape" ><image href="https://icons.terrastruct.com/infra/019-network.svg" x="12.000000" y="12.000000" width="128.000000" height="128.000000" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g></g><g id="ico"><g class="shape" ><rect x="160.000000" y="26.000000" width="100.000000" height="100.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><image href="https://icons.terrastruct.com/infra/019-network.svg" x="185.000000" y="51.000000" width="50" height="50" /></g><mask id="d2-2013875393" maskUnits="userSpaceOnUse" x="11" y="11" width="250" height="130">
<rect x="11" y="11" width="250" height="130" fill="white"></rect>
.d2-802809420 .fill-N1{fill:#0A0F25;}
.d2-802809420 .fill-N2{fill:#676C7E;}
.d2-802809420 .fill-N3{fill:#9499AB;}
.d2-802809420 .fill-N4{fill:#CFD2DD;}
.d2-802809420 .fill-N5{fill:#DEE1EB;}
.d2-802809420 .fill-N6{fill:#EEF1F8;}
.d2-802809420 .fill-N7{fill:#FFFFFF;}
.d2-802809420 .fill-B1{fill:#0D32B2;}
.d2-802809420 .fill-B2{fill:#0D32B2;}
.d2-802809420 .fill-B3{fill:#E3E9FD;}
.d2-802809420 .fill-B4{fill:#E3E9FD;}
.d2-802809420 .fill-B5{fill:#EDF0FD;}
.d2-802809420 .fill-B6{fill:#F7F8FE;}
.d2-802809420 .fill-AA2{fill:#4A6FF3;}
.d2-802809420 .fill-AA4{fill:#EDF0FD;}
.d2-802809420 .fill-AA5{fill:#F7F8FE;}
.d2-802809420 .fill-AB4{fill:#EDF0FD;}
.d2-802809420 .fill-AB5{fill:#F7F8FE;}
.d2-802809420 .stroke-N1{stroke:#0A0F25;}
.d2-802809420 .stroke-N2{stroke:#676C7E;}
.d2-802809420 .stroke-N3{stroke:#9499AB;}
.d2-802809420 .stroke-N4{stroke:#CFD2DD;}
.d2-802809420 .stroke-N5{stroke:#DEE1EB;}
.d2-802809420 .stroke-N6{stroke:#EEF1F8;}
.d2-802809420 .stroke-N7{stroke:#FFFFFF;}
.d2-802809420 .stroke-B1{stroke:#0D32B2;}
.d2-802809420 .stroke-B2{stroke:#0D32B2;}
.d2-802809420 .stroke-B3{stroke:#E3E9FD;}
.d2-802809420 .stroke-B4{stroke:#E3E9FD;}
.d2-802809420 .stroke-B5{stroke:#EDF0FD;}
.d2-802809420 .stroke-B6{stroke:#F7F8FE;}
.d2-802809420 .stroke-AA2{stroke:#4A6FF3;}
.d2-802809420 .stroke-AA4{stroke:#EDF0FD;}
.d2-802809420 .stroke-AA5{stroke:#F7F8FE;}
.d2-802809420 .stroke-AB4{stroke:#EDF0FD;}
.d2-802809420 .stroke-AB5{stroke:#F7F8FE;}
.d2-802809420 .background-color-N1{background-color:#0A0F25;}
.d2-802809420 .background-color-N2{background-color:#676C7E;}
.d2-802809420 .background-color-N3{background-color:#9499AB;}
.d2-802809420 .background-color-N4{background-color:#CFD2DD;}
.d2-802809420 .background-color-N5{background-color:#DEE1EB;}
.d2-802809420 .background-color-N6{background-color:#EEF1F8;}
.d2-802809420 .background-color-N7{background-color:#FFFFFF;}
.d2-802809420 .background-color-B1{background-color:#0D32B2;}
.d2-802809420 .background-color-B2{background-color:#0D32B2;}
.d2-802809420 .background-color-B3{background-color:#E3E9FD;}
.d2-802809420 .background-color-B4{background-color:#E3E9FD;}
.d2-802809420 .background-color-B5{background-color:#EDF0FD;}
.d2-802809420 .background-color-B6{background-color:#F7F8FE;}
.d2-802809420 .background-color-AA2{background-color:#4A6FF3;}
.d2-802809420 .background-color-AA4{background-color:#EDF0FD;}
.d2-802809420 .background-color-AA5{background-color:#F7F8FE;}
.d2-802809420 .background-color-AB4{background-color:#EDF0FD;}
.d2-802809420 .background-color-AB5{background-color:#F7F8FE;}
.d2-802809420 .color-N1{color:#0A0F25;}
.d2-802809420 .color-N2{color:#676C7E;}
.d2-802809420 .color-N3{color:#9499AB;}
.d2-802809420 .color-N4{color:#CFD2DD;}
.d2-802809420 .color-N5{color:#DEE1EB;}
.d2-802809420 .color-N6{color:#EEF1F8;}
.d2-802809420 .color-N7{color:#FFFFFF;}
.d2-802809420 .color-B1{color:#0D32B2;}
.d2-802809420 .color-B2{color:#0D32B2;}
.d2-802809420 .color-B3{color:#E3E9FD;}
.d2-802809420 .color-B4{color:#E3E9FD;}
.d2-802809420 .color-B5{color:#EDF0FD;}
.d2-802809420 .color-B6{color:#F7F8FE;}
.d2-802809420 .color-AA2{color:#4A6FF3;}
.d2-802809420 .color-AA4{color:#EDF0FD;}
.d2-802809420 .color-AA5{color:#F7F8FE;}
.d2-802809420 .color-AB4{color:#EDF0FD;}
.d2-802809420 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="img"><g class="shape" ><image href="https://icons.terrastruct.com/infra/019-network.svg" x="12.000000" y="12.000000" width="128.000000" height="123.000000" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g></g><g id="ico"><g class="shape" ><rect x="160.000000" y="26.000000" width="100.000000" height="100.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><image href="https://icons.terrastruct.com/infra/019-network.svg" x="185.000000" y="51.000000" width="50" height="50" /></g><mask id="d2-802809420" maskUnits="userSpaceOnUse" x="11" y="11" width="250" height="125">
<rect x="11" y="11" width="250" height="125" fill="white"></rect>
</mask></svg></svg>

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View file

@ -11,7 +11,7 @@
"y": 12
},
"width": 720,
"height": 1946,
"height": 1951,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -52,7 +52,7 @@
"y": 466
},
"width": 525,
"height": 1090,
"height": 1095,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -90,7 +90,7 @@
"type": "rectangle",
"pos": {
"x": 241,
"y": 816
"y": 821
},
"width": 334,
"height": 690,
@ -131,7 +131,7 @@
"type": "rectangle",
"pos": {
"x": 291,
"y": 866
"y": 871
},
"width": 193,
"height": 166,
@ -172,7 +172,7 @@
"type": "text",
"pos": {
"x": 341,
"y": 961
"y": 966
},
"width": 16,
"height": 21,
@ -212,7 +212,7 @@
"type": "rectangle",
"pos": {
"x": 377,
"y": 916
"y": 921
},
"width": 57,
"height": 66,
@ -253,7 +253,7 @@
"type": "text",
"pos": {
"x": 396,
"y": 1208
"y": 1213
},
"width": 80,
"height": 21,
@ -293,7 +293,7 @@
"type": "rectangle",
"pos": {
"x": 405,
"y": 1390
"y": 1395
},
"width": 63,
"height": 66,
@ -337,7 +337,7 @@
"y": 516
},
"width": 150,
"height": 215,
"height": 220,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -375,7 +375,7 @@
"type": "diamond",
"pos": {
"x": 200,
"y": 589
"y": 594
},
"width": 50,
"height": 92,
@ -416,7 +416,7 @@
"type": "oval",
"pos": {
"x": 323,
"y": 586
"y": 589
},
"width": 74,
"height": 74,
@ -457,7 +457,7 @@
"type": "rectangle",
"pos": {
"x": 259,
"y": 1842
"y": 1847
},
"width": 120,
"height": 66,
@ -643,19 +643,19 @@
"route": [
{
"x": 349,
"y": 982
"y": 987
},
{
"x": 349,
"y": 1168
"y": 1173
},
{
"x": 423.1659851074219,
"y": 1168
"y": 1173
},
{
"x": 423.1659851074219,
"y": 1208
"y": 1213
}
],
"animated": false,
@ -689,11 +689,11 @@
"route": [
{
"x": 436.5,
"y": 1229
"y": 1234
},
{
"x": 436.5,
"y": 1390
"y": 1395
}
],
"animated": false,
@ -727,19 +727,19 @@
"route": [
{
"x": 250,
"y": 731
"y": 736
},
{
"x": 250,
"y": 771
"y": 776
},
{
"x": 359,
"y": 771
"y": 776
},
{
"x": 359,
"y": 866
"y": 871
}
],
"animated": false,
@ -773,15 +773,15 @@
"route": [
{
"x": 279.8330078125,
"y": 1842
"y": 1847
},
{
"x": 279.8330078125,
"y": 1802
"y": 1807
},
{
"x": 70.5,
"y": 1802
"y": 1807
},
{
"x": 70.5,
@ -839,7 +839,7 @@
},
{
"x": 447.25,
"y": 816
"y": 821
}
],
"animated": false,
@ -885,15 +885,15 @@
},
{
"x": 680.5,
"y": 1752
"y": 1757
},
{
"x": 359.8330078125,
"y": 1752
"y": 1757
},
{
"x": 359.8330078125,
"y": 1842
"y": 1847
}
],
"animated": false,
@ -965,15 +965,15 @@
"route": [
{
"x": 339.8330078125,
"y": 1842
"y": 1847
},
{
"x": 339.8330078125,
"y": 1702
"y": 1707
},
{
"x": 665,
"y": 1702
"y": 1707
},
{
"x": 665,
@ -985,15 +985,15 @@
},
{
"x": 524,
"y": 1168
"y": 1173
},
{
"x": 449.8330078125,
"y": 1168
"y": 1173
},
{
"x": 449.8330078125,
"y": 1208
"y": 1213
}
],
"animated": false,
@ -1073,19 +1073,19 @@
"route": [
{
"x": 309.6659851074219,
"y": 1506
"y": 1511
},
{
"x": 309.6659851074219,
"y": 1702
"y": 1707
},
{
"x": 319.8330078125,
"y": 1702
"y": 1707
},
{
"x": 319.8330078125,
"y": 1842
"y": 1847
}
],
"animated": false,
@ -1119,19 +1119,19 @@
"route": [
{
"x": 200,
"y": 731
"y": 736
},
{
"x": 200,
"y": 1752
"y": 1757
},
{
"x": 299.8330078125,
"y": 1752
"y": 1757
},
{
"x": 299.8330078125,
"y": 1842
"y": 1847
}
],
"animated": false,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -11,7 +11,7 @@
"y": 12
},
"width": 286,
"height": 229,
"height": 210,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -49,7 +49,7 @@
"type": "rectangle",
"pos": {
"x": 128,
"y": 125
"y": 106
},
"width": 53,
"height": 66,

View file

@ -1,16 +1,16 @@
<?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.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 288 231"><svg id="d2-svg" class="d2-2560454251" width="288" height="231" viewBox="11 11 288 231"><rect x="11.000000" y="11.000000" width="288.000000" height="231.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-2560454251 .text {
font-family: "d2-2560454251-font-regular";
<?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.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 288 212"><svg id="d2-svg" class="d2-1866833890" width="288" height="212" viewBox="11 11 288 212"><rect x="11.000000" y="11.000000" width="288.000000" height="212.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-1866833890 .text {
font-family: "d2-1866833890-font-regular";
}
@font-face {
font-family: d2-2560454251-font-regular;
font-family: d2-1866833890-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-2560454251 .text-bold {
font-family: "d2-2560454251-font-bold";
.d2-1866833890 .text-bold {
font-family: "d2-1866833890-font-bold";
}
@font-face {
font-family: d2-2560454251-font-bold;
font-family: d2-1866833890-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
@ -25,79 +25,79 @@
opacity: 0.5;
}
.d2-2560454251 .fill-N1{fill:#0A0F25;}
.d2-2560454251 .fill-N2{fill:#676C7E;}
.d2-2560454251 .fill-N3{fill:#9499AB;}
.d2-2560454251 .fill-N4{fill:#CFD2DD;}
.d2-2560454251 .fill-N5{fill:#DEE1EB;}
.d2-2560454251 .fill-N6{fill:#EEF1F8;}
.d2-2560454251 .fill-N7{fill:#FFFFFF;}
.d2-2560454251 .fill-B1{fill:#0D32B2;}
.d2-2560454251 .fill-B2{fill:#0D32B2;}
.d2-2560454251 .fill-B3{fill:#E3E9FD;}
.d2-2560454251 .fill-B4{fill:#E3E9FD;}
.d2-2560454251 .fill-B5{fill:#EDF0FD;}
.d2-2560454251 .fill-B6{fill:#F7F8FE;}
.d2-2560454251 .fill-AA2{fill:#4A6FF3;}
.d2-2560454251 .fill-AA4{fill:#EDF0FD;}
.d2-2560454251 .fill-AA5{fill:#F7F8FE;}
.d2-2560454251 .fill-AB4{fill:#EDF0FD;}
.d2-2560454251 .fill-AB5{fill:#F7F8FE;}
.d2-2560454251 .stroke-N1{stroke:#0A0F25;}
.d2-2560454251 .stroke-N2{stroke:#676C7E;}
.d2-2560454251 .stroke-N3{stroke:#9499AB;}
.d2-2560454251 .stroke-N4{stroke:#CFD2DD;}
.d2-2560454251 .stroke-N5{stroke:#DEE1EB;}
.d2-2560454251 .stroke-N6{stroke:#EEF1F8;}
.d2-2560454251 .stroke-N7{stroke:#FFFFFF;}
.d2-2560454251 .stroke-B1{stroke:#0D32B2;}
.d2-2560454251 .stroke-B2{stroke:#0D32B2;}
.d2-2560454251 .stroke-B3{stroke:#E3E9FD;}
.d2-2560454251 .stroke-B4{stroke:#E3E9FD;}
.d2-2560454251 .stroke-B5{stroke:#EDF0FD;}
.d2-2560454251 .stroke-B6{stroke:#F7F8FE;}
.d2-2560454251 .stroke-AA2{stroke:#4A6FF3;}
.d2-2560454251 .stroke-AA4{stroke:#EDF0FD;}
.d2-2560454251 .stroke-AA5{stroke:#F7F8FE;}
.d2-2560454251 .stroke-AB4{stroke:#EDF0FD;}
.d2-2560454251 .stroke-AB5{stroke:#F7F8FE;}
.d2-2560454251 .background-color-N1{background-color:#0A0F25;}
.d2-2560454251 .background-color-N2{background-color:#676C7E;}
.d2-2560454251 .background-color-N3{background-color:#9499AB;}
.d2-2560454251 .background-color-N4{background-color:#CFD2DD;}
.d2-2560454251 .background-color-N5{background-color:#DEE1EB;}
.d2-2560454251 .background-color-N6{background-color:#EEF1F8;}
.d2-2560454251 .background-color-N7{background-color:#FFFFFF;}
.d2-2560454251 .background-color-B1{background-color:#0D32B2;}
.d2-2560454251 .background-color-B2{background-color:#0D32B2;}
.d2-2560454251 .background-color-B3{background-color:#E3E9FD;}
.d2-2560454251 .background-color-B4{background-color:#E3E9FD;}
.d2-2560454251 .background-color-B5{background-color:#EDF0FD;}
.d2-2560454251 .background-color-B6{background-color:#F7F8FE;}
.d2-2560454251 .background-color-AA2{background-color:#4A6FF3;}
.d2-2560454251 .background-color-AA4{background-color:#EDF0FD;}
.d2-2560454251 .background-color-AA5{background-color:#F7F8FE;}
.d2-2560454251 .background-color-AB4{background-color:#EDF0FD;}
.d2-2560454251 .background-color-AB5{background-color:#F7F8FE;}
.d2-2560454251 .color-N1{color:#0A0F25;}
.d2-2560454251 .color-N2{color:#676C7E;}
.d2-2560454251 .color-N3{color:#9499AB;}
.d2-2560454251 .color-N4{color:#CFD2DD;}
.d2-2560454251 .color-N5{color:#DEE1EB;}
.d2-2560454251 .color-N6{color:#EEF1F8;}
.d2-2560454251 .color-N7{color:#FFFFFF;}
.d2-2560454251 .color-B1{color:#0D32B2;}
.d2-2560454251 .color-B2{color:#0D32B2;}
.d2-2560454251 .color-B3{color:#E3E9FD;}
.d2-2560454251 .color-B4{color:#E3E9FD;}
.d2-2560454251 .color-B5{color:#EDF0FD;}
.d2-2560454251 .color-B6{color:#F7F8FE;}
.d2-2560454251 .color-AA2{color:#4A6FF3;}
.d2-2560454251 .color-AA4{color:#EDF0FD;}
.d2-2560454251 .color-AA5{color:#F7F8FE;}
.d2-2560454251 .color-AB4{color:#EDF0FD;}
.d2-2560454251 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="i can not see the title"><g class="shape" ><path d="M 12 36 C 12 12 141 12 155 12 C 169 12 298 12 298 36 V 217 C 298 241 169 241 155 241 C 141 241 12 241 12 217 V 36 Z" class=" stroke-B1 fill-AA4" style="stroke-width:2;" /><path d="M 12 36 C 12 60 141 60 155 60 C 169 60 298 60 298 36" class=" stroke-B1 fill-AA4" style="stroke-width:2;" /></g><text x="155.000000" y="93.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">i can not see the title</text></g><g id="i can not see the title.x"><g class="shape" ><rect x="128.000000" y="125.000000" width="53.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="154.500000" y="163.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">x</text></g><mask id="d2-2560454251" maskUnits="userSpaceOnUse" x="11" y="11" width="288" height="231">
<rect x="11" y="11" width="288" height="231" fill="white"></rect>
.d2-1866833890 .fill-N1{fill:#0A0F25;}
.d2-1866833890 .fill-N2{fill:#676C7E;}
.d2-1866833890 .fill-N3{fill:#9499AB;}
.d2-1866833890 .fill-N4{fill:#CFD2DD;}
.d2-1866833890 .fill-N5{fill:#DEE1EB;}
.d2-1866833890 .fill-N6{fill:#EEF1F8;}
.d2-1866833890 .fill-N7{fill:#FFFFFF;}
.d2-1866833890 .fill-B1{fill:#0D32B2;}
.d2-1866833890 .fill-B2{fill:#0D32B2;}
.d2-1866833890 .fill-B3{fill:#E3E9FD;}
.d2-1866833890 .fill-B4{fill:#E3E9FD;}
.d2-1866833890 .fill-B5{fill:#EDF0FD;}
.d2-1866833890 .fill-B6{fill:#F7F8FE;}
.d2-1866833890 .fill-AA2{fill:#4A6FF3;}
.d2-1866833890 .fill-AA4{fill:#EDF0FD;}
.d2-1866833890 .fill-AA5{fill:#F7F8FE;}
.d2-1866833890 .fill-AB4{fill:#EDF0FD;}
.d2-1866833890 .fill-AB5{fill:#F7F8FE;}
.d2-1866833890 .stroke-N1{stroke:#0A0F25;}
.d2-1866833890 .stroke-N2{stroke:#676C7E;}
.d2-1866833890 .stroke-N3{stroke:#9499AB;}
.d2-1866833890 .stroke-N4{stroke:#CFD2DD;}
.d2-1866833890 .stroke-N5{stroke:#DEE1EB;}
.d2-1866833890 .stroke-N6{stroke:#EEF1F8;}
.d2-1866833890 .stroke-N7{stroke:#FFFFFF;}
.d2-1866833890 .stroke-B1{stroke:#0D32B2;}
.d2-1866833890 .stroke-B2{stroke:#0D32B2;}
.d2-1866833890 .stroke-B3{stroke:#E3E9FD;}
.d2-1866833890 .stroke-B4{stroke:#E3E9FD;}
.d2-1866833890 .stroke-B5{stroke:#EDF0FD;}
.d2-1866833890 .stroke-B6{stroke:#F7F8FE;}
.d2-1866833890 .stroke-AA2{stroke:#4A6FF3;}
.d2-1866833890 .stroke-AA4{stroke:#EDF0FD;}
.d2-1866833890 .stroke-AA5{stroke:#F7F8FE;}
.d2-1866833890 .stroke-AB4{stroke:#EDF0FD;}
.d2-1866833890 .stroke-AB5{stroke:#F7F8FE;}
.d2-1866833890 .background-color-N1{background-color:#0A0F25;}
.d2-1866833890 .background-color-N2{background-color:#676C7E;}
.d2-1866833890 .background-color-N3{background-color:#9499AB;}
.d2-1866833890 .background-color-N4{background-color:#CFD2DD;}
.d2-1866833890 .background-color-N5{background-color:#DEE1EB;}
.d2-1866833890 .background-color-N6{background-color:#EEF1F8;}
.d2-1866833890 .background-color-N7{background-color:#FFFFFF;}
.d2-1866833890 .background-color-B1{background-color:#0D32B2;}
.d2-1866833890 .background-color-B2{background-color:#0D32B2;}
.d2-1866833890 .background-color-B3{background-color:#E3E9FD;}
.d2-1866833890 .background-color-B4{background-color:#E3E9FD;}
.d2-1866833890 .background-color-B5{background-color:#EDF0FD;}
.d2-1866833890 .background-color-B6{background-color:#F7F8FE;}
.d2-1866833890 .background-color-AA2{background-color:#4A6FF3;}
.d2-1866833890 .background-color-AA4{background-color:#EDF0FD;}
.d2-1866833890 .background-color-AA5{background-color:#F7F8FE;}
.d2-1866833890 .background-color-AB4{background-color:#EDF0FD;}
.d2-1866833890 .background-color-AB5{background-color:#F7F8FE;}
.d2-1866833890 .color-N1{color:#0A0F25;}
.d2-1866833890 .color-N2{color:#676C7E;}
.d2-1866833890 .color-N3{color:#9499AB;}
.d2-1866833890 .color-N4{color:#CFD2DD;}
.d2-1866833890 .color-N5{color:#DEE1EB;}
.d2-1866833890 .color-N6{color:#EEF1F8;}
.d2-1866833890 .color-N7{color:#FFFFFF;}
.d2-1866833890 .color-B1{color:#0D32B2;}
.d2-1866833890 .color-B2{color:#0D32B2;}
.d2-1866833890 .color-B3{color:#E3E9FD;}
.d2-1866833890 .color-B4{color:#E3E9FD;}
.d2-1866833890 .color-B5{color:#EDF0FD;}
.d2-1866833890 .color-B6{color:#F7F8FE;}
.d2-1866833890 .color-AA2{color:#4A6FF3;}
.d2-1866833890 .color-AA4{color:#EDF0FD;}
.d2-1866833890 .color-AA5{color:#F7F8FE;}
.d2-1866833890 .color-AB4{color:#EDF0FD;}
.d2-1866833890 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="i can not see the title"><g class="shape" ><path d="M 12 36 C 12 12 141 12 155 12 C 169 12 298 12 298 36 V 198 C 298 222 169 222 155 222 C 141 222 12 222 12 198 V 36 Z" class=" stroke-B1 fill-AA4" style="stroke-width:2;" /><path d="M 12 36 C 12 60 141 60 155 60 C 169 60 298 60 298 36" class=" stroke-B1 fill-AA4" style="stroke-width:2;" /></g><text x="155.000000" y="93.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">i can not see the title</text></g><g id="i can not see the title.x"><g class="shape" ><rect x="128.000000" y="106.000000" width="53.000000" height="66.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="154.500000" y="144.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">x</text></g><mask id="d2-1866833890" maskUnits="userSpaceOnUse" x="11" y="11" width="288" height="212">
<rect x="11" y="11" width="288" height="212" fill="white"></rect>
<rect x="34.500000" y="65.000000" width="241" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="150.500000" y="147.500000" width="8" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="150.500000" y="128.500000" width="8" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -11,7 +11,7 @@
"y": 12
},
"width": 497,
"height": 572,
"height": 583,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -49,10 +49,10 @@
"type": "rectangle",
"pos": {
"x": 78,
"y": 142
"y": 147
},
"width": 364,
"height": 392,
"height": 398,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -90,10 +90,10 @@
"type": "rectangle",
"pos": {
"x": 128,
"y": 228
"y": 238
},
"width": 264,
"height": 256,
"height": 257,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -131,7 +131,7 @@
"type": "rectangle",
"pos": {
"x": 178,
"y": 278
"y": 289
},
"width": 164,
"height": 156,
@ -172,7 +172,7 @@
"type": "rectangle",
"pos": {
"x": 228,
"y": 328
"y": 339
},
"width": 64,
"height": 56,

View file

@ -1,16 +1,16 @@
<?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.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 499 574"><svg id="d2-svg" class="d2-4155058823" width="499" height="574" viewBox="11 11 499 574"><rect x="11.000000" y="11.000000" width="499.000000" height="574.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-4155058823 .text {
font-family: "d2-4155058823-font-regular";
<?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.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 499 585"><svg id="d2-svg" class="d2-1286233434" width="499" height="585" viewBox="11 11 499 585"><rect x="11.000000" y="11.000000" width="499.000000" height="585.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-1286233434 .text {
font-family: "d2-1286233434-font-regular";
}
@font-face {
font-family: d2-4155058823-font-regular;
font-family: d2-1286233434-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-4155058823 .text-bold {
font-family: "d2-4155058823-font-bold";
.d2-1286233434 .text-bold {
font-family: "d2-1286233434-font-bold";
}
@font-face {
font-family: d2-4155058823-font-bold;
font-family: d2-1286233434-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
@ -25,82 +25,82 @@
opacity: 0.5;
}
.d2-4155058823 .fill-N1{fill:#0A0F25;}
.d2-4155058823 .fill-N2{fill:#676C7E;}
.d2-4155058823 .fill-N3{fill:#9499AB;}
.d2-4155058823 .fill-N4{fill:#CFD2DD;}
.d2-4155058823 .fill-N5{fill:#DEE1EB;}
.d2-4155058823 .fill-N6{fill:#EEF1F8;}
.d2-4155058823 .fill-N7{fill:#FFFFFF;}
.d2-4155058823 .fill-B1{fill:#0D32B2;}
.d2-4155058823 .fill-B2{fill:#0D32B2;}
.d2-4155058823 .fill-B3{fill:#E3E9FD;}
.d2-4155058823 .fill-B4{fill:#E3E9FD;}
.d2-4155058823 .fill-B5{fill:#EDF0FD;}
.d2-4155058823 .fill-B6{fill:#F7F8FE;}
.d2-4155058823 .fill-AA2{fill:#4A6FF3;}
.d2-4155058823 .fill-AA4{fill:#EDF0FD;}
.d2-4155058823 .fill-AA5{fill:#F7F8FE;}
.d2-4155058823 .fill-AB4{fill:#EDF0FD;}
.d2-4155058823 .fill-AB5{fill:#F7F8FE;}
.d2-4155058823 .stroke-N1{stroke:#0A0F25;}
.d2-4155058823 .stroke-N2{stroke:#676C7E;}
.d2-4155058823 .stroke-N3{stroke:#9499AB;}
.d2-4155058823 .stroke-N4{stroke:#CFD2DD;}
.d2-4155058823 .stroke-N5{stroke:#DEE1EB;}
.d2-4155058823 .stroke-N6{stroke:#EEF1F8;}
.d2-4155058823 .stroke-N7{stroke:#FFFFFF;}
.d2-4155058823 .stroke-B1{stroke:#0D32B2;}
.d2-4155058823 .stroke-B2{stroke:#0D32B2;}
.d2-4155058823 .stroke-B3{stroke:#E3E9FD;}
.d2-4155058823 .stroke-B4{stroke:#E3E9FD;}
.d2-4155058823 .stroke-B5{stroke:#EDF0FD;}
.d2-4155058823 .stroke-B6{stroke:#F7F8FE;}
.d2-4155058823 .stroke-AA2{stroke:#4A6FF3;}
.d2-4155058823 .stroke-AA4{stroke:#EDF0FD;}
.d2-4155058823 .stroke-AA5{stroke:#F7F8FE;}
.d2-4155058823 .stroke-AB4{stroke:#EDF0FD;}
.d2-4155058823 .stroke-AB5{stroke:#F7F8FE;}
.d2-4155058823 .background-color-N1{background-color:#0A0F25;}
.d2-4155058823 .background-color-N2{background-color:#676C7E;}
.d2-4155058823 .background-color-N3{background-color:#9499AB;}
.d2-4155058823 .background-color-N4{background-color:#CFD2DD;}
.d2-4155058823 .background-color-N5{background-color:#DEE1EB;}
.d2-4155058823 .background-color-N6{background-color:#EEF1F8;}
.d2-4155058823 .background-color-N7{background-color:#FFFFFF;}
.d2-4155058823 .background-color-B1{background-color:#0D32B2;}
.d2-4155058823 .background-color-B2{background-color:#0D32B2;}
.d2-4155058823 .background-color-B3{background-color:#E3E9FD;}
.d2-4155058823 .background-color-B4{background-color:#E3E9FD;}
.d2-4155058823 .background-color-B5{background-color:#EDF0FD;}
.d2-4155058823 .background-color-B6{background-color:#F7F8FE;}
.d2-4155058823 .background-color-AA2{background-color:#4A6FF3;}
.d2-4155058823 .background-color-AA4{background-color:#EDF0FD;}
.d2-4155058823 .background-color-AA5{background-color:#F7F8FE;}
.d2-4155058823 .background-color-AB4{background-color:#EDF0FD;}
.d2-4155058823 .background-color-AB5{background-color:#F7F8FE;}
.d2-4155058823 .color-N1{color:#0A0F25;}
.d2-4155058823 .color-N2{color:#676C7E;}
.d2-4155058823 .color-N3{color:#9499AB;}
.d2-4155058823 .color-N4{color:#CFD2DD;}
.d2-4155058823 .color-N5{color:#DEE1EB;}
.d2-4155058823 .color-N6{color:#EEF1F8;}
.d2-4155058823 .color-N7{color:#FFFFFF;}
.d2-4155058823 .color-B1{color:#0D32B2;}
.d2-4155058823 .color-B2{color:#0D32B2;}
.d2-4155058823 .color-B3{color:#E3E9FD;}
.d2-4155058823 .color-B4{color:#E3E9FD;}
.d2-4155058823 .color-B5{color:#EDF0FD;}
.d2-4155058823 .color-B6{color:#F7F8FE;}
.d2-4155058823 .color-AA2{color:#4A6FF3;}
.d2-4155058823 .color-AA4{color:#EDF0FD;}
.d2-4155058823 .color-AA5{color:#F7F8FE;}
.d2-4155058823 .color-AB4{color:#EDF0FD;}
.d2-4155058823 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="ninety nine"><g class="shape" ><rect x="12.000000" y="12.000000" width="497.000000" height="572.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="260.500000" y="116.000000" class="text fill-N1" style="text-anchor:middle;font-size:99px">ninety nine</text></g><g id="ninety nine.sixty four"><g class="shape" ><rect x="78.000000" y="142.000000" width="364.000000" height="392.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="260.000000" y="211.000000" class="text fill-N1" style="text-anchor:middle;font-size:64px">sixty four</text></g><g id="ninety nine.sixty four.thirty two"><g class="shape" ><rect x="128.000000" y="228.000000" width="264.000000" height="256.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="260.000000" y="265.000000" class="text fill-N1" style="text-anchor:middle;font-size:32px">thirty two</text></g><g id="ninety nine.sixty four.thirty two.sixteen"><g class="shape" ><rect x="178.000000" y="278.000000" width="164.000000" height="156.000000" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g><text x="260.000000" y="299.000000" class="text fill-N1" style="text-anchor:middle;font-size:16px">sixteen</text></g><g id="ninety nine.sixty four.thirty two.sixteen.eight"><g class="shape" ><rect x="228.000000" y="328.000000" width="64.000000" height="56.000000" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g><text x="260.000000" y="358.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:8px">eight</text></g><mask id="d2-4155058823" maskUnits="userSpaceOnUse" x="11" y="11" width="499" height="574">
<rect x="11" y="11" width="499" height="574" fill="white"></rect>
.d2-1286233434 .fill-N1{fill:#0A0F25;}
.d2-1286233434 .fill-N2{fill:#676C7E;}
.d2-1286233434 .fill-N3{fill:#9499AB;}
.d2-1286233434 .fill-N4{fill:#CFD2DD;}
.d2-1286233434 .fill-N5{fill:#DEE1EB;}
.d2-1286233434 .fill-N6{fill:#EEF1F8;}
.d2-1286233434 .fill-N7{fill:#FFFFFF;}
.d2-1286233434 .fill-B1{fill:#0D32B2;}
.d2-1286233434 .fill-B2{fill:#0D32B2;}
.d2-1286233434 .fill-B3{fill:#E3E9FD;}
.d2-1286233434 .fill-B4{fill:#E3E9FD;}
.d2-1286233434 .fill-B5{fill:#EDF0FD;}
.d2-1286233434 .fill-B6{fill:#F7F8FE;}
.d2-1286233434 .fill-AA2{fill:#4A6FF3;}
.d2-1286233434 .fill-AA4{fill:#EDF0FD;}
.d2-1286233434 .fill-AA5{fill:#F7F8FE;}
.d2-1286233434 .fill-AB4{fill:#EDF0FD;}
.d2-1286233434 .fill-AB5{fill:#F7F8FE;}
.d2-1286233434 .stroke-N1{stroke:#0A0F25;}
.d2-1286233434 .stroke-N2{stroke:#676C7E;}
.d2-1286233434 .stroke-N3{stroke:#9499AB;}
.d2-1286233434 .stroke-N4{stroke:#CFD2DD;}
.d2-1286233434 .stroke-N5{stroke:#DEE1EB;}
.d2-1286233434 .stroke-N6{stroke:#EEF1F8;}
.d2-1286233434 .stroke-N7{stroke:#FFFFFF;}
.d2-1286233434 .stroke-B1{stroke:#0D32B2;}
.d2-1286233434 .stroke-B2{stroke:#0D32B2;}
.d2-1286233434 .stroke-B3{stroke:#E3E9FD;}
.d2-1286233434 .stroke-B4{stroke:#E3E9FD;}
.d2-1286233434 .stroke-B5{stroke:#EDF0FD;}
.d2-1286233434 .stroke-B6{stroke:#F7F8FE;}
.d2-1286233434 .stroke-AA2{stroke:#4A6FF3;}
.d2-1286233434 .stroke-AA4{stroke:#EDF0FD;}
.d2-1286233434 .stroke-AA5{stroke:#F7F8FE;}
.d2-1286233434 .stroke-AB4{stroke:#EDF0FD;}
.d2-1286233434 .stroke-AB5{stroke:#F7F8FE;}
.d2-1286233434 .background-color-N1{background-color:#0A0F25;}
.d2-1286233434 .background-color-N2{background-color:#676C7E;}
.d2-1286233434 .background-color-N3{background-color:#9499AB;}
.d2-1286233434 .background-color-N4{background-color:#CFD2DD;}
.d2-1286233434 .background-color-N5{background-color:#DEE1EB;}
.d2-1286233434 .background-color-N6{background-color:#EEF1F8;}
.d2-1286233434 .background-color-N7{background-color:#FFFFFF;}
.d2-1286233434 .background-color-B1{background-color:#0D32B2;}
.d2-1286233434 .background-color-B2{background-color:#0D32B2;}
.d2-1286233434 .background-color-B3{background-color:#E3E9FD;}
.d2-1286233434 .background-color-B4{background-color:#E3E9FD;}
.d2-1286233434 .background-color-B5{background-color:#EDF0FD;}
.d2-1286233434 .background-color-B6{background-color:#F7F8FE;}
.d2-1286233434 .background-color-AA2{background-color:#4A6FF3;}
.d2-1286233434 .background-color-AA4{background-color:#EDF0FD;}
.d2-1286233434 .background-color-AA5{background-color:#F7F8FE;}
.d2-1286233434 .background-color-AB4{background-color:#EDF0FD;}
.d2-1286233434 .background-color-AB5{background-color:#F7F8FE;}
.d2-1286233434 .color-N1{color:#0A0F25;}
.d2-1286233434 .color-N2{color:#676C7E;}
.d2-1286233434 .color-N3{color:#9499AB;}
.d2-1286233434 .color-N4{color:#CFD2DD;}
.d2-1286233434 .color-N5{color:#DEE1EB;}
.d2-1286233434 .color-N6{color:#EEF1F8;}
.d2-1286233434 .color-N7{color:#FFFFFF;}
.d2-1286233434 .color-B1{color:#0D32B2;}
.d2-1286233434 .color-B2{color:#0D32B2;}
.d2-1286233434 .color-B3{color:#E3E9FD;}
.d2-1286233434 .color-B4{color:#E3E9FD;}
.d2-1286233434 .color-B5{color:#EDF0FD;}
.d2-1286233434 .color-B6{color:#F7F8FE;}
.d2-1286233434 .color-AA2{color:#4A6FF3;}
.d2-1286233434 .color-AA4{color:#EDF0FD;}
.d2-1286233434 .color-AA5{color:#F7F8FE;}
.d2-1286233434 .color-AB4{color:#EDF0FD;}
.d2-1286233434 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="ninety nine"><g class="shape" ><rect x="12.000000" y="12.000000" width="497.000000" height="583.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="260.500000" y="116.000000" class="text fill-N1" style="text-anchor:middle;font-size:99px">ninety nine</text></g><g id="ninety nine.sixty four"><g class="shape" ><rect x="78.000000" y="147.000000" width="364.000000" height="398.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="260.000000" y="216.000000" class="text fill-N1" style="text-anchor:middle;font-size:64px">sixty four</text></g><g id="ninety nine.sixty four.thirty two"><g class="shape" ><rect x="128.000000" y="238.000000" width="264.000000" height="257.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="260.000000" y="275.000000" class="text fill-N1" style="text-anchor:middle;font-size:32px">thirty two</text></g><g id="ninety nine.sixty four.thirty two.sixteen"><g class="shape" ><rect x="178.000000" y="289.000000" width="164.000000" height="156.000000" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g><text x="260.000000" y="310.000000" class="text fill-N1" style="text-anchor:middle;font-size:16px">sixteen</text></g><g id="ninety nine.sixty four.thirty two.sixteen.eight"><g class="shape" ><rect x="228.000000" y="339.000000" width="64.000000" height="56.000000" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g><text x="260.000000" y="369.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:8px">eight</text></g><mask id="d2-1286233434" maskUnits="userSpaceOnUse" x="11" y="11" width="499" height="585">
<rect x="11" y="11" width="499" height="585" fill="white"></rect>
<rect x="34.500000" y="17.000000" width="452" height="125" fill="rgba(0,0,0,0.75)"></rect>
<rect x="137.000000" y="147.000000" width="246" height="81" fill="rgba(0,0,0,0.75)"></rect>
<rect x="195.000000" y="233.000000" width="130" height="41" fill="rgba(0,0,0,0.75)"></rect>
<rect x="236.000000" y="283.000000" width="48" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="250.500000" y="350.500000" width="19" height="11" fill="rgba(0,0,0,0.75)"></rect>
<rect x="137.000000" y="152.000000" width="246" height="81" fill="rgba(0,0,0,0.75)"></rect>
<rect x="195.000000" y="243.000000" width="130" height="41" fill="rgba(0,0,0,0.75)"></rect>
<rect x="236.000000" y="294.000000" width="48" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="250.500000" y="361.500000" width="19" height="11" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -11,7 +11,7 @@
"y": 12
},
"width": 497,
"height": 572,
"height": 583,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -49,10 +49,10 @@
"type": "rectangle",
"pos": {
"x": 78,
"y": 142
"y": 147
},
"width": 364,
"height": 392,
"height": 398,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -90,10 +90,10 @@
"type": "rectangle",
"pos": {
"x": 128,
"y": 228
"y": 238
},
"width": 264,
"height": 256,
"height": 257,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -131,7 +131,7 @@
"type": "rectangle",
"pos": {
"x": 178,
"y": 278
"y": 289
},
"width": 164,
"height": 156,
@ -172,7 +172,7 @@
"type": "rectangle",
"pos": {
"x": 228,
"y": 328
"y": 339
},
"width": 64,
"height": 56,

View file

@ -1,16 +1,16 @@
<?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.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 499 574"><svg id="d2-svg" class="d2-4155058823" width="499" height="574" viewBox="11 11 499 574"><rect x="11.000000" y="11.000000" width="499.000000" height="574.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-4155058823 .text {
font-family: "d2-4155058823-font-regular";
<?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.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 499 585"><svg id="d2-svg" class="d2-1286233434" width="499" height="585" viewBox="11 11 499 585"><rect x="11.000000" y="11.000000" width="499.000000" height="585.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-1286233434 .text {
font-family: "d2-1286233434-font-regular";
}
@font-face {
font-family: d2-4155058823-font-regular;
font-family: d2-1286233434-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-4155058823 .text-bold {
font-family: "d2-4155058823-font-bold";
.d2-1286233434 .text-bold {
font-family: "d2-1286233434-font-bold";
}
@font-face {
font-family: d2-4155058823-font-bold;
font-family: d2-1286233434-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
@ -25,82 +25,82 @@
opacity: 0.5;
}
.d2-4155058823 .fill-N1{fill:#0A0F25;}
.d2-4155058823 .fill-N2{fill:#676C7E;}
.d2-4155058823 .fill-N3{fill:#9499AB;}
.d2-4155058823 .fill-N4{fill:#CFD2DD;}
.d2-4155058823 .fill-N5{fill:#DEE1EB;}
.d2-4155058823 .fill-N6{fill:#EEF1F8;}
.d2-4155058823 .fill-N7{fill:#FFFFFF;}
.d2-4155058823 .fill-B1{fill:#0D32B2;}
.d2-4155058823 .fill-B2{fill:#0D32B2;}
.d2-4155058823 .fill-B3{fill:#E3E9FD;}
.d2-4155058823 .fill-B4{fill:#E3E9FD;}
.d2-4155058823 .fill-B5{fill:#EDF0FD;}
.d2-4155058823 .fill-B6{fill:#F7F8FE;}
.d2-4155058823 .fill-AA2{fill:#4A6FF3;}
.d2-4155058823 .fill-AA4{fill:#EDF0FD;}
.d2-4155058823 .fill-AA5{fill:#F7F8FE;}
.d2-4155058823 .fill-AB4{fill:#EDF0FD;}
.d2-4155058823 .fill-AB5{fill:#F7F8FE;}
.d2-4155058823 .stroke-N1{stroke:#0A0F25;}
.d2-4155058823 .stroke-N2{stroke:#676C7E;}
.d2-4155058823 .stroke-N3{stroke:#9499AB;}
.d2-4155058823 .stroke-N4{stroke:#CFD2DD;}
.d2-4155058823 .stroke-N5{stroke:#DEE1EB;}
.d2-4155058823 .stroke-N6{stroke:#EEF1F8;}
.d2-4155058823 .stroke-N7{stroke:#FFFFFF;}
.d2-4155058823 .stroke-B1{stroke:#0D32B2;}
.d2-4155058823 .stroke-B2{stroke:#0D32B2;}
.d2-4155058823 .stroke-B3{stroke:#E3E9FD;}
.d2-4155058823 .stroke-B4{stroke:#E3E9FD;}
.d2-4155058823 .stroke-B5{stroke:#EDF0FD;}
.d2-4155058823 .stroke-B6{stroke:#F7F8FE;}
.d2-4155058823 .stroke-AA2{stroke:#4A6FF3;}
.d2-4155058823 .stroke-AA4{stroke:#EDF0FD;}
.d2-4155058823 .stroke-AA5{stroke:#F7F8FE;}
.d2-4155058823 .stroke-AB4{stroke:#EDF0FD;}
.d2-4155058823 .stroke-AB5{stroke:#F7F8FE;}
.d2-4155058823 .background-color-N1{background-color:#0A0F25;}
.d2-4155058823 .background-color-N2{background-color:#676C7E;}
.d2-4155058823 .background-color-N3{background-color:#9499AB;}
.d2-4155058823 .background-color-N4{background-color:#CFD2DD;}
.d2-4155058823 .background-color-N5{background-color:#DEE1EB;}
.d2-4155058823 .background-color-N6{background-color:#EEF1F8;}
.d2-4155058823 .background-color-N7{background-color:#FFFFFF;}
.d2-4155058823 .background-color-B1{background-color:#0D32B2;}
.d2-4155058823 .background-color-B2{background-color:#0D32B2;}
.d2-4155058823 .background-color-B3{background-color:#E3E9FD;}
.d2-4155058823 .background-color-B4{background-color:#E3E9FD;}
.d2-4155058823 .background-color-B5{background-color:#EDF0FD;}
.d2-4155058823 .background-color-B6{background-color:#F7F8FE;}
.d2-4155058823 .background-color-AA2{background-color:#4A6FF3;}
.d2-4155058823 .background-color-AA4{background-color:#EDF0FD;}
.d2-4155058823 .background-color-AA5{background-color:#F7F8FE;}
.d2-4155058823 .background-color-AB4{background-color:#EDF0FD;}
.d2-4155058823 .background-color-AB5{background-color:#F7F8FE;}
.d2-4155058823 .color-N1{color:#0A0F25;}
.d2-4155058823 .color-N2{color:#676C7E;}
.d2-4155058823 .color-N3{color:#9499AB;}
.d2-4155058823 .color-N4{color:#CFD2DD;}
.d2-4155058823 .color-N5{color:#DEE1EB;}
.d2-4155058823 .color-N6{color:#EEF1F8;}
.d2-4155058823 .color-N7{color:#FFFFFF;}
.d2-4155058823 .color-B1{color:#0D32B2;}
.d2-4155058823 .color-B2{color:#0D32B2;}
.d2-4155058823 .color-B3{color:#E3E9FD;}
.d2-4155058823 .color-B4{color:#E3E9FD;}
.d2-4155058823 .color-B5{color:#EDF0FD;}
.d2-4155058823 .color-B6{color:#F7F8FE;}
.d2-4155058823 .color-AA2{color:#4A6FF3;}
.d2-4155058823 .color-AA4{color:#EDF0FD;}
.d2-4155058823 .color-AA5{color:#F7F8FE;}
.d2-4155058823 .color-AB4{color:#EDF0FD;}
.d2-4155058823 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="ninety nine"><g class="shape" ><rect x="12.000000" y="12.000000" width="497.000000" height="572.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="260.500000" y="116.000000" class="text fill-N1" style="text-anchor:middle;font-size:99px">ninety nine</text></g><g id="ninety nine.sixty four"><g class="shape" ><rect x="78.000000" y="142.000000" width="364.000000" height="392.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="260.000000" y="211.000000" class="text fill-N1" style="text-anchor:middle;font-size:64px">sixty four</text></g><g id="ninety nine.sixty four.thirty two"><g class="shape" ><rect x="128.000000" y="228.000000" width="264.000000" height="256.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="260.000000" y="265.000000" class="text fill-N1" style="text-anchor:middle;font-size:32px">thirty two</text></g><g id="ninety nine.sixty four.thirty two.sixteen"><g class="shape" ><rect x="178.000000" y="278.000000" width="164.000000" height="156.000000" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g><text x="260.000000" y="299.000000" class="text fill-N1" style="text-anchor:middle;font-size:16px">sixteen</text></g><g id="ninety nine.sixty four.thirty two.sixteen.eight"><g class="shape" ><rect x="228.000000" y="328.000000" width="64.000000" height="56.000000" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g><text x="260.000000" y="358.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:8px">eight</text></g><mask id="d2-4155058823" maskUnits="userSpaceOnUse" x="11" y="11" width="499" height="574">
<rect x="11" y="11" width="499" height="574" fill="white"></rect>
.d2-1286233434 .fill-N1{fill:#0A0F25;}
.d2-1286233434 .fill-N2{fill:#676C7E;}
.d2-1286233434 .fill-N3{fill:#9499AB;}
.d2-1286233434 .fill-N4{fill:#CFD2DD;}
.d2-1286233434 .fill-N5{fill:#DEE1EB;}
.d2-1286233434 .fill-N6{fill:#EEF1F8;}
.d2-1286233434 .fill-N7{fill:#FFFFFF;}
.d2-1286233434 .fill-B1{fill:#0D32B2;}
.d2-1286233434 .fill-B2{fill:#0D32B2;}
.d2-1286233434 .fill-B3{fill:#E3E9FD;}
.d2-1286233434 .fill-B4{fill:#E3E9FD;}
.d2-1286233434 .fill-B5{fill:#EDF0FD;}
.d2-1286233434 .fill-B6{fill:#F7F8FE;}
.d2-1286233434 .fill-AA2{fill:#4A6FF3;}
.d2-1286233434 .fill-AA4{fill:#EDF0FD;}
.d2-1286233434 .fill-AA5{fill:#F7F8FE;}
.d2-1286233434 .fill-AB4{fill:#EDF0FD;}
.d2-1286233434 .fill-AB5{fill:#F7F8FE;}
.d2-1286233434 .stroke-N1{stroke:#0A0F25;}
.d2-1286233434 .stroke-N2{stroke:#676C7E;}
.d2-1286233434 .stroke-N3{stroke:#9499AB;}
.d2-1286233434 .stroke-N4{stroke:#CFD2DD;}
.d2-1286233434 .stroke-N5{stroke:#DEE1EB;}
.d2-1286233434 .stroke-N6{stroke:#EEF1F8;}
.d2-1286233434 .stroke-N7{stroke:#FFFFFF;}
.d2-1286233434 .stroke-B1{stroke:#0D32B2;}
.d2-1286233434 .stroke-B2{stroke:#0D32B2;}
.d2-1286233434 .stroke-B3{stroke:#E3E9FD;}
.d2-1286233434 .stroke-B4{stroke:#E3E9FD;}
.d2-1286233434 .stroke-B5{stroke:#EDF0FD;}
.d2-1286233434 .stroke-B6{stroke:#F7F8FE;}
.d2-1286233434 .stroke-AA2{stroke:#4A6FF3;}
.d2-1286233434 .stroke-AA4{stroke:#EDF0FD;}
.d2-1286233434 .stroke-AA5{stroke:#F7F8FE;}
.d2-1286233434 .stroke-AB4{stroke:#EDF0FD;}
.d2-1286233434 .stroke-AB5{stroke:#F7F8FE;}
.d2-1286233434 .background-color-N1{background-color:#0A0F25;}
.d2-1286233434 .background-color-N2{background-color:#676C7E;}
.d2-1286233434 .background-color-N3{background-color:#9499AB;}
.d2-1286233434 .background-color-N4{background-color:#CFD2DD;}
.d2-1286233434 .background-color-N5{background-color:#DEE1EB;}
.d2-1286233434 .background-color-N6{background-color:#EEF1F8;}
.d2-1286233434 .background-color-N7{background-color:#FFFFFF;}
.d2-1286233434 .background-color-B1{background-color:#0D32B2;}
.d2-1286233434 .background-color-B2{background-color:#0D32B2;}
.d2-1286233434 .background-color-B3{background-color:#E3E9FD;}
.d2-1286233434 .background-color-B4{background-color:#E3E9FD;}
.d2-1286233434 .background-color-B5{background-color:#EDF0FD;}
.d2-1286233434 .background-color-B6{background-color:#F7F8FE;}
.d2-1286233434 .background-color-AA2{background-color:#4A6FF3;}
.d2-1286233434 .background-color-AA4{background-color:#EDF0FD;}
.d2-1286233434 .background-color-AA5{background-color:#F7F8FE;}
.d2-1286233434 .background-color-AB4{background-color:#EDF0FD;}
.d2-1286233434 .background-color-AB5{background-color:#F7F8FE;}
.d2-1286233434 .color-N1{color:#0A0F25;}
.d2-1286233434 .color-N2{color:#676C7E;}
.d2-1286233434 .color-N3{color:#9499AB;}
.d2-1286233434 .color-N4{color:#CFD2DD;}
.d2-1286233434 .color-N5{color:#DEE1EB;}
.d2-1286233434 .color-N6{color:#EEF1F8;}
.d2-1286233434 .color-N7{color:#FFFFFF;}
.d2-1286233434 .color-B1{color:#0D32B2;}
.d2-1286233434 .color-B2{color:#0D32B2;}
.d2-1286233434 .color-B3{color:#E3E9FD;}
.d2-1286233434 .color-B4{color:#E3E9FD;}
.d2-1286233434 .color-B5{color:#EDF0FD;}
.d2-1286233434 .color-B6{color:#F7F8FE;}
.d2-1286233434 .color-AA2{color:#4A6FF3;}
.d2-1286233434 .color-AA4{color:#EDF0FD;}
.d2-1286233434 .color-AA5{color:#F7F8FE;}
.d2-1286233434 .color-AB4{color:#EDF0FD;}
.d2-1286233434 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="ninety nine"><g class="shape" ><rect x="12.000000" y="12.000000" width="497.000000" height="583.000000" class=" stroke-B1 fill-B4" style="stroke-width:2;" /></g><text x="260.500000" y="116.000000" class="text fill-N1" style="text-anchor:middle;font-size:99px">ninety nine</text></g><g id="ninety nine.sixty four"><g class="shape" ><rect x="78.000000" y="147.000000" width="364.000000" height="398.000000" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="260.000000" y="216.000000" class="text fill-N1" style="text-anchor:middle;font-size:64px">sixty four</text></g><g id="ninety nine.sixty four.thirty two"><g class="shape" ><rect x="128.000000" y="238.000000" width="264.000000" height="257.000000" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="260.000000" y="275.000000" class="text fill-N1" style="text-anchor:middle;font-size:32px">thirty two</text></g><g id="ninety nine.sixty four.thirty two.sixteen"><g class="shape" ><rect x="178.000000" y="289.000000" width="164.000000" height="156.000000" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g><text x="260.000000" y="310.000000" class="text fill-N1" style="text-anchor:middle;font-size:16px">sixteen</text></g><g id="ninety nine.sixty four.thirty two.sixteen.eight"><g class="shape" ><rect x="228.000000" y="339.000000" width="64.000000" height="56.000000" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g><text x="260.000000" y="369.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:8px">eight</text></g><mask id="d2-1286233434" maskUnits="userSpaceOnUse" x="11" y="11" width="499" height="585">
<rect x="11" y="11" width="499" height="585" fill="white"></rect>
<rect x="34.500000" y="17.000000" width="452" height="125" fill="rgba(0,0,0,0.75)"></rect>
<rect x="137.000000" y="147.000000" width="246" height="81" fill="rgba(0,0,0,0.75)"></rect>
<rect x="195.000000" y="233.000000" width="130" height="41" fill="rgba(0,0,0,0.75)"></rect>
<rect x="236.000000" y="283.000000" width="48" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="250.500000" y="350.500000" width="19" height="11" fill="rgba(0,0,0,0.75)"></rect>
<rect x="137.000000" y="152.000000" width="246" height="81" fill="rgba(0,0,0,0.75)"></rect>
<rect x="195.000000" y="243.000000" width="130" height="41" fill="rgba(0,0,0,0.75)"></rect>
<rect x="236.000000" y="294.000000" width="48" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="250.500000" y="361.500000" width="19" height="11" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 60 KiB

View file

@ -585,7 +585,7 @@
"y": 3469
},
"width": 327,
"height": 229,
"height": 210,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -623,7 +623,7 @@
"type": "rectangle",
"pos": {
"x": 129,
"y": 3582
"y": 3563
},
"width": 63,
"height": 66,
@ -1045,7 +1045,7 @@
"type": "rectangle",
"pos": {
"x": 212,
"y": 3582
"y": 3563
},
"width": 62,
"height": 66,
@ -1221,7 +1221,7 @@
"type": "rectangle",
"pos": {
"x": 294,
"y": 3582
"y": 3563
},
"width": 62,
"height": 66,
@ -1262,7 +1262,7 @@
"type": "parallelogram",
"pos": {
"x": 267,
"y": 3773
"y": 3754
},
"width": 115,
"height": 66,
@ -1774,7 +1774,7 @@
},
{
"x": 160.58299255371094,
"y": 3582
"y": 3563
}
],
"animated": false,
@ -2148,7 +2148,7 @@
},
{
"x": 243.08299255371094,
"y": 3582
"y": 3563
}
],
"animated": false,
@ -2316,7 +2316,7 @@
},
{
"x": 325.0830078125,
"y": 3582
"y": 3563
}
],
"animated": false,
@ -2350,11 +2350,11 @@
"route": [
{
"x": 325.0830078125,
"y": 3648
"y": 3629
},
{
"x": 325,
"y": 3773
"y": 3754
}
],
"animated": false,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

View file

@ -0,0 +1,212 @@
{
"name": "",
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "aa",
"type": "package",
"pos": {
"x": 0,
"y": 41
},
"width": 146,
"height": 151,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "AA4",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "aa",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 27,
"labelHeight": 36,
"labelPosition": "OUTSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "aa.bb",
"type": "diamond",
"pos": {
"x": 40,
"y": 70
},
"width": 66,
"height": 92,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "N4",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "bb",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 18,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "cc",
"type": "diamond",
"pos": {
"x": 166,
"y": 41
},
"width": 156,
"height": 151,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "N4",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "cc",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 25,
"labelHeight": 36,
"labelPosition": "OUTSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "cc.dd",
"type": "oval",
"pos": {
"x": 206,
"y": 78
},
"width": 76,
"height": 76,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "dd",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 19,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
}
],
"connections": [],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

View file

@ -0,0 +1,105 @@
<?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.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 324 193"><svg id="d2-svg" class="d2-1147027998" width="324" height="193" viewBox="-1 0 324 193"><rect x="-1.000000" y="0.000000" width="324.000000" height="193.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-1147027998 .text {
font-family: "d2-1147027998-font-regular";
}
@font-face {
font-family: d2-1147027998-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-1147027998 .text-bold {
font-family: "d2-1147027998-font-bold";
}
@font-face {
font-family: d2-1147027998-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
.connection {
stroke-linecap: round;
stroke-linejoin: round;
}
.blend {
mix-blend-mode: multiply;
opacity: 0.5;
}
.d2-1147027998 .fill-N1{fill:#0A0F25;}
.d2-1147027998 .fill-N2{fill:#676C7E;}
.d2-1147027998 .fill-N3{fill:#9499AB;}
.d2-1147027998 .fill-N4{fill:#CFD2DD;}
.d2-1147027998 .fill-N5{fill:#DEE1EB;}
.d2-1147027998 .fill-N6{fill:#EEF1F8;}
.d2-1147027998 .fill-N7{fill:#FFFFFF;}
.d2-1147027998 .fill-B1{fill:#0D32B2;}
.d2-1147027998 .fill-B2{fill:#0D32B2;}
.d2-1147027998 .fill-B3{fill:#E3E9FD;}
.d2-1147027998 .fill-B4{fill:#E3E9FD;}
.d2-1147027998 .fill-B5{fill:#EDF0FD;}
.d2-1147027998 .fill-B6{fill:#F7F8FE;}
.d2-1147027998 .fill-AA2{fill:#4A6FF3;}
.d2-1147027998 .fill-AA4{fill:#EDF0FD;}
.d2-1147027998 .fill-AA5{fill:#F7F8FE;}
.d2-1147027998 .fill-AB4{fill:#EDF0FD;}
.d2-1147027998 .fill-AB5{fill:#F7F8FE;}
.d2-1147027998 .stroke-N1{stroke:#0A0F25;}
.d2-1147027998 .stroke-N2{stroke:#676C7E;}
.d2-1147027998 .stroke-N3{stroke:#9499AB;}
.d2-1147027998 .stroke-N4{stroke:#CFD2DD;}
.d2-1147027998 .stroke-N5{stroke:#DEE1EB;}
.d2-1147027998 .stroke-N6{stroke:#EEF1F8;}
.d2-1147027998 .stroke-N7{stroke:#FFFFFF;}
.d2-1147027998 .stroke-B1{stroke:#0D32B2;}
.d2-1147027998 .stroke-B2{stroke:#0D32B2;}
.d2-1147027998 .stroke-B3{stroke:#E3E9FD;}
.d2-1147027998 .stroke-B4{stroke:#E3E9FD;}
.d2-1147027998 .stroke-B5{stroke:#EDF0FD;}
.d2-1147027998 .stroke-B6{stroke:#F7F8FE;}
.d2-1147027998 .stroke-AA2{stroke:#4A6FF3;}
.d2-1147027998 .stroke-AA4{stroke:#EDF0FD;}
.d2-1147027998 .stroke-AA5{stroke:#F7F8FE;}
.d2-1147027998 .stroke-AB4{stroke:#EDF0FD;}
.d2-1147027998 .stroke-AB5{stroke:#F7F8FE;}
.d2-1147027998 .background-color-N1{background-color:#0A0F25;}
.d2-1147027998 .background-color-N2{background-color:#676C7E;}
.d2-1147027998 .background-color-N3{background-color:#9499AB;}
.d2-1147027998 .background-color-N4{background-color:#CFD2DD;}
.d2-1147027998 .background-color-N5{background-color:#DEE1EB;}
.d2-1147027998 .background-color-N6{background-color:#EEF1F8;}
.d2-1147027998 .background-color-N7{background-color:#FFFFFF;}
.d2-1147027998 .background-color-B1{background-color:#0D32B2;}
.d2-1147027998 .background-color-B2{background-color:#0D32B2;}
.d2-1147027998 .background-color-B3{background-color:#E3E9FD;}
.d2-1147027998 .background-color-B4{background-color:#E3E9FD;}
.d2-1147027998 .background-color-B5{background-color:#EDF0FD;}
.d2-1147027998 .background-color-B6{background-color:#F7F8FE;}
.d2-1147027998 .background-color-AA2{background-color:#4A6FF3;}
.d2-1147027998 .background-color-AA4{background-color:#EDF0FD;}
.d2-1147027998 .background-color-AA5{background-color:#F7F8FE;}
.d2-1147027998 .background-color-AB4{background-color:#EDF0FD;}
.d2-1147027998 .background-color-AB5{background-color:#F7F8FE;}
.d2-1147027998 .color-N1{color:#0A0F25;}
.d2-1147027998 .color-N2{color:#676C7E;}
.d2-1147027998 .color-N3{color:#9499AB;}
.d2-1147027998 .color-N4{color:#CFD2DD;}
.d2-1147027998 .color-N5{color:#DEE1EB;}
.d2-1147027998 .color-N6{color:#EEF1F8;}
.d2-1147027998 .color-N7{color:#FFFFFF;}
.d2-1147027998 .color-B1{color:#0D32B2;}
.d2-1147027998 .color-B2{color:#0D32B2;}
.d2-1147027998 .color-B3{color:#E3E9FD;}
.d2-1147027998 .color-B4{color:#E3E9FD;}
.d2-1147027998 .color-B5{color:#EDF0FD;}
.d2-1147027998 .color-B6{color:#F7F8FE;}
.d2-1147027998 .color-AA2{color:#4A6FF3;}
.d2-1147027998 .color-AA4{color:#EDF0FD;}
.d2-1147027998 .color-AA5{color:#F7F8FE;}
.d2-1147027998 .color-AB4{color:#EDF0FD;}
.d2-1147027998 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="aa"><g class="shape" ><path d="M 0 41 L 73 41 L 73 71 L 146 71 L 146 192 L 0 192 Z" class=" stroke-B1 fill-AA4" style="stroke-width:2;" /></g><text x="73.000000" y="28.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">aa</text></g><g id="cc"><g class="shape" ><path d="M 244 192 C 243 192 243 192 243 191 L 167 118 C 166 117 166 116 167 115 L 243 42 C 244 41 245 41 246 42 L 322 116 C 323 117 323 118 322 119 L 245 191 C 245 192 245 192 244 192 Z" class=" stroke-B1 fill-N4" style="stroke-width:2;" /></g><text x="244.000000" y="28.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">cc</text></g><g id="aa.bb"><g class="shape" ><path d="M 73 162 C 73 162 73 162 72 162 L 40 117 C 40 117 40 116 40 115 L 72 70 C 72 70 73 70 73 70 L 105 115 C 105 115 105 116 105 117 L 74 162 C 73 162 73 162 73 162 Z" class=" stroke-B1 fill-N4" style="stroke-width:2;" /></g><text x="73.000000" y="121.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">bb</text></g><g id="cc.dd"><g class="shape" ><ellipse rx="38.000000" ry="38.000000" cx="244.000000" cy="116.000000" class="shape stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="244.000000" y="121.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">dd</text></g><mask id="d2-1147027998" maskUnits="userSpaceOnUse" x="-1" y="0" width="324" height="193">
<rect x="-1" y="0" width="324" height="193" fill="white"></rect>
<rect x="59.500000" y="0.000000" width="27" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="231.500000" y="0.000000" width="25" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="64.000000" y="105.500000" width="18" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="234.500000" y="105.500000" width="19" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,212 @@
{
"name": "",
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "aa",
"type": "package",
"pos": {
"x": 12,
"y": 17
},
"width": 166,
"height": 234,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "AA4",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "aa",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 27,
"labelHeight": 36,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "aa.bb",
"type": "diamond",
"pos": {
"x": 62,
"y": 109
},
"width": 66,
"height": 92,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "N4",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "bb",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 18,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
},
{
"id": "cc",
"type": "diamond",
"pos": {
"x": 198,
"y": 12
},
"width": 176,
"height": 244,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "N4",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "cc",
"fontSize": 28,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 25,
"labelHeight": 36,
"labelPosition": "INSIDE_TOP_CENTER",
"zIndex": 0,
"level": 1
},
{
"id": "cc.dd",
"type": "oval",
"pos": {
"x": 248,
"y": 119
},
"width": 76,
"height": 76,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B5",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "dd",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 19,
"labelHeight": 21,
"labelPosition": "INSIDE_MIDDLE_CENTER",
"zIndex": 0,
"level": 2
}
],
"connections": [],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

View file

@ -0,0 +1,105 @@
<?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.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 364 246"><svg id="d2-svg" class="d2-4125869403" width="364" height="246" viewBox="11 11 364 246"><rect x="11.000000" y="11.000000" width="364.000000" height="246.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-4125869403 .text {
font-family: "d2-4125869403-font-regular";
}
@font-face {
font-family: d2-4125869403-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-4125869403 .text-bold {
font-family: "d2-4125869403-font-bold";
}
@font-face {
font-family: d2-4125869403-font-bold;
src: url("data:application/font-woff;base64,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");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
.connection {
stroke-linecap: round;
stroke-linejoin: round;
}
.blend {
mix-blend-mode: multiply;
opacity: 0.5;
}
.d2-4125869403 .fill-N1{fill:#0A0F25;}
.d2-4125869403 .fill-N2{fill:#676C7E;}
.d2-4125869403 .fill-N3{fill:#9499AB;}
.d2-4125869403 .fill-N4{fill:#CFD2DD;}
.d2-4125869403 .fill-N5{fill:#DEE1EB;}
.d2-4125869403 .fill-N6{fill:#EEF1F8;}
.d2-4125869403 .fill-N7{fill:#FFFFFF;}
.d2-4125869403 .fill-B1{fill:#0D32B2;}
.d2-4125869403 .fill-B2{fill:#0D32B2;}
.d2-4125869403 .fill-B3{fill:#E3E9FD;}
.d2-4125869403 .fill-B4{fill:#E3E9FD;}
.d2-4125869403 .fill-B5{fill:#EDF0FD;}
.d2-4125869403 .fill-B6{fill:#F7F8FE;}
.d2-4125869403 .fill-AA2{fill:#4A6FF3;}
.d2-4125869403 .fill-AA4{fill:#EDF0FD;}
.d2-4125869403 .fill-AA5{fill:#F7F8FE;}
.d2-4125869403 .fill-AB4{fill:#EDF0FD;}
.d2-4125869403 .fill-AB5{fill:#F7F8FE;}
.d2-4125869403 .stroke-N1{stroke:#0A0F25;}
.d2-4125869403 .stroke-N2{stroke:#676C7E;}
.d2-4125869403 .stroke-N3{stroke:#9499AB;}
.d2-4125869403 .stroke-N4{stroke:#CFD2DD;}
.d2-4125869403 .stroke-N5{stroke:#DEE1EB;}
.d2-4125869403 .stroke-N6{stroke:#EEF1F8;}
.d2-4125869403 .stroke-N7{stroke:#FFFFFF;}
.d2-4125869403 .stroke-B1{stroke:#0D32B2;}
.d2-4125869403 .stroke-B2{stroke:#0D32B2;}
.d2-4125869403 .stroke-B3{stroke:#E3E9FD;}
.d2-4125869403 .stroke-B4{stroke:#E3E9FD;}
.d2-4125869403 .stroke-B5{stroke:#EDF0FD;}
.d2-4125869403 .stroke-B6{stroke:#F7F8FE;}
.d2-4125869403 .stroke-AA2{stroke:#4A6FF3;}
.d2-4125869403 .stroke-AA4{stroke:#EDF0FD;}
.d2-4125869403 .stroke-AA5{stroke:#F7F8FE;}
.d2-4125869403 .stroke-AB4{stroke:#EDF0FD;}
.d2-4125869403 .stroke-AB5{stroke:#F7F8FE;}
.d2-4125869403 .background-color-N1{background-color:#0A0F25;}
.d2-4125869403 .background-color-N2{background-color:#676C7E;}
.d2-4125869403 .background-color-N3{background-color:#9499AB;}
.d2-4125869403 .background-color-N4{background-color:#CFD2DD;}
.d2-4125869403 .background-color-N5{background-color:#DEE1EB;}
.d2-4125869403 .background-color-N6{background-color:#EEF1F8;}
.d2-4125869403 .background-color-N7{background-color:#FFFFFF;}
.d2-4125869403 .background-color-B1{background-color:#0D32B2;}
.d2-4125869403 .background-color-B2{background-color:#0D32B2;}
.d2-4125869403 .background-color-B3{background-color:#E3E9FD;}
.d2-4125869403 .background-color-B4{background-color:#E3E9FD;}
.d2-4125869403 .background-color-B5{background-color:#EDF0FD;}
.d2-4125869403 .background-color-B6{background-color:#F7F8FE;}
.d2-4125869403 .background-color-AA2{background-color:#4A6FF3;}
.d2-4125869403 .background-color-AA4{background-color:#EDF0FD;}
.d2-4125869403 .background-color-AA5{background-color:#F7F8FE;}
.d2-4125869403 .background-color-AB4{background-color:#EDF0FD;}
.d2-4125869403 .background-color-AB5{background-color:#F7F8FE;}
.d2-4125869403 .color-N1{color:#0A0F25;}
.d2-4125869403 .color-N2{color:#676C7E;}
.d2-4125869403 .color-N3{color:#9499AB;}
.d2-4125869403 .color-N4{color:#CFD2DD;}
.d2-4125869403 .color-N5{color:#DEE1EB;}
.d2-4125869403 .color-N6{color:#EEF1F8;}
.d2-4125869403 .color-N7{color:#FFFFFF;}
.d2-4125869403 .color-B1{color:#0D32B2;}
.d2-4125869403 .color-B2{color:#0D32B2;}
.d2-4125869403 .color-B3{color:#E3E9FD;}
.d2-4125869403 .color-B4{color:#E3E9FD;}
.d2-4125869403 .color-B5{color:#EDF0FD;}
.d2-4125869403 .color-B6{color:#F7F8FE;}
.d2-4125869403 .color-AA2{color:#4A6FF3;}
.d2-4125869403 .color-AA4{color:#EDF0FD;}
.d2-4125869403 .color-AA5{color:#F7F8FE;}
.d2-4125869403 .color-AB4{color:#EDF0FD;}
.d2-4125869403 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="aa"><g class="shape" ><path d="M 12 17 L 95 17 L 95 64 L 178 64 L 178 251 L 12 251 Z" class=" stroke-B1 fill-AA4" style="stroke-width:2;" /></g><text x="95.000000" y="96.800000" class="text fill-N1" style="text-anchor:middle;font-size:28px">aa</text></g><g id="cc"><g class="shape" ><path d="M 286 256 C 285 256 285 256 284 255 L 199 136 C 198 135 198 133 199 132 L 284 13 C 285 12 286 12 287 13 L 373 132 C 374 133 374 135 373 136 L 288 255 C 287 256 287 256 286 256 Z" class=" stroke-B1 fill-N4" style="stroke-width:2;" /></g><text x="286.000000" y="106.000000" class="text fill-N1" style="text-anchor:middle;font-size:28px">cc</text></g><g id="aa.bb"><g class="shape" ><path d="M 95 201 C 95 201 95 201 94 201 L 62 156 C 62 156 62 155 62 154 L 94 109 C 94 109 95 109 95 109 L 127 154 C 127 154 127 155 127 156 L 96 201 C 95 201 95 201 95 201 Z" class=" stroke-B1 fill-N4" style="stroke-width:2;" /></g><text x="95.000000" y="160.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">bb</text></g><g id="cc.dd"><g class="shape" ><ellipse rx="38.000000" ry="38.000000" cx="286.000000" cy="157.000000" class="shape stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="286.000000" y="162.500000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">dd</text></g><mask id="d2-4125869403" maskUnits="userSpaceOnUse" x="11" y="11" width="364" height="246">
<rect x="11" y="11" width="364" height="246" fill="white"></rect>
<rect x="81.500000" y="68.800000" width="27" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="273.500000" y="78.000000" width="25" height="36" fill="rgba(0,0,0,0.75)"></rect>
<rect x="86.000000" y="144.500000" width="18" height="21" fill="rgba(0,0,0,0.75)"></rect>
<rect x="276.500000" y="146.500000" width="19" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -52,7 +52,7 @@
"y": 213
},
"width": 294,
"height": 272,
"height": 254,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -90,7 +90,7 @@
"type": "rectangle",
"pos": {
"x": 119,
"y": 369
"y": 351
},
"width": 80,
"height": 66,
@ -131,7 +131,7 @@
"type": "rectangle",
"pos": {
"x": 132,
"y": 560
"y": 542
},
"width": 54,
"height": 66,
@ -330,7 +330,7 @@
},
{
"x": 145.66600036621094,
"y": 369
"y": 351
}
],
"animated": false,
@ -364,11 +364,11 @@
"route": [
{
"x": 159,
"y": 435
"y": 417
},
{
"x": 159,
"y": 560
"y": 542
}
],
"animated": false,
@ -414,7 +414,7 @@
},
{
"x": 172.33299255371094,
"y": 369
"y": 351
}
],
"animated": false,
@ -460,7 +460,7 @@
},
{
"x": 182,
"y": 213
"y": 214
}
],
"animated": false,
@ -498,7 +498,7 @@
},
{
"x": 286,
"y": 326
"y": 318
}
],
"animated": false,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -11,7 +11,7 @@
"y": 12
},
"width": 1388,
"height": 438,
"height": 411,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -49,7 +49,7 @@
"type": "oval",
"pos": {
"x": 62,
"y": 131
"y": 117
},
"width": 228,
"height": 200,
@ -90,7 +90,7 @@
"type": "diamond",
"pos": {
"x": 112,
"y": 199
"y": 185
},
"width": 128,
"height": 64,
@ -134,7 +134,7 @@
"y": 62
},
"width": 414,
"height": 338,
"height": 311,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -172,7 +172,7 @@
"type": "oval",
"pos": {
"x": 453,
"y": 222
"y": 174
},
"width": 128,
"height": 128,
@ -213,10 +213,10 @@
"type": "oval",
"pos": {
"x": 744,
"y": 123
"y": 125
},
"width": 266,
"height": 216,
"height": 184,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -254,7 +254,7 @@
"type": "hexagon",
"pos": {
"x": 813,
"y": 225
"y": 195
},
"width": 128,
"height": 64,
@ -295,10 +295,10 @@
"type": "hexagon",
"pos": {
"x": 1030,
"y": 119
"y": 124
},
"width": 320,
"height": 224,
"height": 187,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
@ -336,7 +336,7 @@
"type": "oval",
"pos": {
"x": 1126,
"y": 229
"y": 197
},
"width": 128,
"height": 64,
@ -377,7 +377,7 @@
"type": "cloud",
"pos": {
"x": 1420,
"y": 194
"y": 167
},
"width": 512,
"height": 256,
@ -418,7 +418,7 @@
"type": "cylinder",
"pos": {
"x": 1548,
"y": 1390
"y": 1363
},
"width": 256,
"height": 512,
@ -459,7 +459,7 @@
"type": "class",
"pos": {
"x": 1276,
"y": 720
"y": 693
},
"width": 800,
"height": 400,
@ -534,7 +534,7 @@
"type": "sql_table",
"pos": {
"x": 1276,
"y": 1972
"y": 1945
},
"width": 800,
"height": 400,
@ -718,7 +718,7 @@
"type": "rectangle",
"pos": {
"x": 2239,
"y": 384
"y": 357
},
"width": 114,
"height": 66,
@ -759,7 +759,7 @@
"type": "text",
"pos": {
"x": 2096,
"y": 520
"y": 493
},
"width": 400,
"height": 800,
@ -799,7 +799,7 @@
"type": "code",
"pos": {
"x": 2096,
"y": 1496
"y": 1469
},
"width": 400,
"height": 300,
@ -839,7 +839,7 @@
"type": "code",
"pos": {
"x": 2196,
"y": 1972
"y": 1945
},
"width": 199,
"height": 78,
@ -902,11 +902,11 @@
"route": [
{
"x": 1676,
"y": 449
"y": 422
},
{
"x": 1676,
"y": 720
"y": 693
}
],
"animated": false,
@ -940,11 +940,11 @@
"route": [
{
"x": 1676,
"y": 1120
"y": 1093
},
{
"x": 1676,
"y": 1390
"y": 1363
}
],
"animated": false,
@ -978,11 +978,11 @@
"route": [
{
"x": 1676,
"y": 1902
"y": 1875
},
{
"x": 1676,
"y": 1972
"y": 1945
}
],
"animated": false,
@ -1016,11 +1016,11 @@
"route": [
{
"x": 2296,
"y": 450
"y": 423
},
{
"x": 2296,
"y": 520
"y": 493
}
],
"animated": false,
@ -1054,11 +1054,11 @@
"route": [
{
"x": 2296,
"y": 1320
"y": 1293
},
{
"x": 2296,
"y": 1496
"y": 1469
}
],
"animated": false,
@ -1092,11 +1092,11 @@
"route": [
{
"x": 2296,
"y": 1796
"y": 1769
},
{
"x": 2296,
"y": 1972
"y": 1945
}
],
"animated": false,

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB