Browse Source

Begin presentation

Théophile Bastian 1 year ago
parent
commit
8413e2248f
9 changed files with 1937 additions and 0 deletions
  1. 2 0
      .gitignore
  2. 31 0
      Makefile
  3. 3 0
      imgs/.gitignore
  4. 1140 0
      imgs/mac.svg
  5. 532 0
      imgs/routing.svg
  6. 74 0
      imgs/split_layers.py
  7. 81 0
      slides.tex
  8. 63 0
      texlib/my_listings.sty
  9. 11 0
      texlib/todo.sty

+ 2 - 0
.gitignore

@@ -136,3 +136,5 @@ sympy-plots-for-*.tex/
 *.bak
 *.sav
 
+*.xdv
+*.pdf

+ 31 - 0
Makefile

@@ -0,0 +1,31 @@
+TARGET=slides.pdf
+
+SVGS=$(wildcard imgs/*.svg)
+SVG_PDFTEXS = $(patsubst imgs/%,imgs/pdf_tex/%,$(SVGS:.svg=.pdf_tex))
+SVG_PDF = $(patsubst imgs/%,imgs/pdf/%,$(SVGS:.svg=.pdf))
+AUTOGEN_SVGS_LIST=mac
+AUTOGEN_SVGS=$(addprefix imgs/_autogen/,$(AUTOGEN_SVGS_LIST))
+
+all: $(SVG_PDFTEXS) $(SVG_PDF) $(AUTOGEN_SVGS) $(TARGET)
+
+%.pdf: %.tex
+	latexmk -pdfxe $<
+
+imgs/_autogen/%: imgs/%.svg
+	imgs/split_layers.py "$*.svg"
+	cd "$@" ; inkscape --export-type=pdf *.svg
+
+imgs/pdf_tex/%.pdf_tex: imgs/%.svg
+	mkdir -p "imgs/pdf_tex"
+	inkscape "$<" -o "$(@:.pdf_tex=.pdf)" --export-latex 2>/dev/null
+	sed -i 's#\($(patsubst imgs/pdf_tex/%,%,$(@:.pdf_tex=.pdf))\)#imgs/pdf_tex/\1#g' $@
+
+imgs/pdf/%.pdf: imgs/%.svg
+	mkdir -p "imgs/pdf"
+	inkscape "$<" -o "$@" 2>/dev/null
+
+.PHONY: clean
+clean:
+	latexmk -C
+	rm -rf "imgs/pdf_tex" "imgs/pdf"
+	rm -rf imgs/_autogen

+ 3 - 0
imgs/.gitignore

@@ -0,0 +1,3 @@
+_autogen
+pdf
+pdf_tex

+ 1140 - 0
imgs/mac.svg

@@ -0,0 +1,1140 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1700"
+   height="800"
+   viewBox="0 0 449.79167 211.66666"
+   version="1.1"
+   id="svg8"
+   inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
+   sodipodi:docname="mac.svg">
+  <defs
+     id="defs2">
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker7795"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path7793"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:collect="always"
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker7582"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(0.6) rotate(180) translate(0,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path7580" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker7434"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(0.6) rotate(180) translate(0,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path7432" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker7210"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         transform="scale(0.4) rotate(180) translate(10,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path7208" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker7098"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(0.6) rotate(180) translate(0,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path7096" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker7010"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(0.6) rotate(180) translate(0,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path7008" />
+    </marker>
+    <linearGradient
+       id="bluered_prefix"
+       inkscape:collect="always">
+      <stop
+         id="stop6936"
+         offset="0"
+         style="stop-color:#8057f6;stop-opacity:1" />
+      <stop
+         style="stop-color:#b3329a;stop-opacity:1;"
+         offset="0.53214782"
+         id="stop6948" />
+      <stop
+         id="stop6944"
+         offset="1"
+         style="stop-color:#fd0018;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="orange_prefix"
+       inkscape:collect="always">
+      <stop
+         id="stop6924"
+         offset="0"
+         style="stop-color:#f8a800;stop-opacity:1" />
+      <stop
+         id="stop6932"
+         offset="1"
+         style="stop-color:#cd474b;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="blue_prefix">
+      <stop
+         style="stop-color:#2f00b6;stop-opacity:1"
+         offset="0"
+         id="stop6882" />
+      <stop
+         id="stop6891"
+         offset="0.2127676"
+         style="stop-color:#2000ff;stop-opacity:1" />
+      <stop
+         style="stop-color:#256dcb;stop-opacity:1"
+         offset="0.46569726"
+         id="stop6893" />
+      <stop
+         id="stop6895"
+         offset="0.66191947"
+         style="stop-color:#0888d4;stop-opacity:1" />
+      <stop
+         style="stop-color:#95ecf5;stop-opacity:1"
+         offset="1"
+         id="stop6884" />
+    </linearGradient>
+    <linearGradient
+       osb:paint="solid"
+       id="linearGradient6851">
+      <stop
+         id="stop6849"
+         offset="0"
+         style="stop-color:#7aff5c;stop-opacity:1;" />
+    </linearGradient>
+    <marker
+       inkscape:collect="always"
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4107"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4105"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4019"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4017"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker3949"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path3947"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker3867"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(0.6) rotate(180) translate(0,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path3865" />
+    </marker>
+    <marker
+       inkscape:collect="always"
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker3733"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(0.6) rotate(180) translate(0,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path3731" />
+    </marker>
+    <marker
+       inkscape:collect="always"
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker3661"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path3659"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:collect="always"
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="Arrow2Mend"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(0.6) rotate(180) translate(0,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path3184" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="Arrow1Mend"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         transform="scale(0.4) rotate(180) translate(10,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path3166" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="Arrow1Send"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Send">
+      <path
+         transform="scale(0.2) rotate(180) translate(6,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path3172" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="Arrow1Lend"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path3160" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="Arrow1Lstart"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lstart">
+      <path
+         transform="scale(0.8) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path3157" />
+    </marker>
+    <linearGradient
+       gradientTransform="translate(0.18303176,34.132415)"
+       gradientUnits="userSpaceOnUse"
+       y2="64.567757"
+       x2="242.26299"
+       y1="64.567757"
+       x1="189.2686"
+       id="linearGradient6880"
+       xlink:href="#blue_prefix"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(0.1830413,61.848773)"
+       y2="64.567757"
+       x2="242.26299"
+       y1="64.567757"
+       x1="189.2686"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient6899"
+       xlink:href="#orange_prefix"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="64.567757"
+       x2="242.26299"
+       y1="64.567757"
+       x1="189.2686"
+       gradientTransform="translate(0.08843736,6.4160612)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient6903"
+       xlink:href="#bluered_prefix"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="64.567757"
+       x2="242.26299"
+       y1="64.567757"
+       x1="189.2686"
+       gradientTransform="translate(0.18302074,6.4160612)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient6956"
+       xlink:href="#bluered_prefix"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="64.567757"
+       x2="242.26299"
+       y1="64.567757"
+       x1="189.2686"
+       gradientTransform="translate(0.08843736,6.4160612)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient6986"
+       xlink:href="#bluered_prefix"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.63898048"
+     inkscape:cx="758.13271"
+     inkscape:cy="403.07565"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer7"
+     inkscape:document-rotation="0"
+     showgrid="false"
+     units="px"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:object-nodes="false"
+     inkscape:window-width="1916"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="18"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     style="display:inline"
+     inkscape:label="Base"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       transform="translate(37.035063,-1.1447036e-5)"
+       id="g2786">
+      <ellipse
+         style="fill:#19a0d2;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.459777;stroke-linecap:round;stroke-linejoin:round"
+         id="circle2768"
+         cx="383.65247"
+         cy="105.83334"
+         rx="28.874279"
+         ry="28.874277" />
+      <path
+         style="stroke-width:0.0214238"
+         d="M 401.4771,109.26116 V 91.436522 q 0,-0.27851 -0.20352,-0.48203 -0.20353,-0.20353 -0.48204,-0.20353 h -34.27812 q -0.27851,0 -0.48204,0.20353 -0.20352,0.20352 -0.20352,0.48203 v 17.824638 q 0,0.27851 0.20352,0.48204 0.20353,0.20353 0.48204,0.20353 h 34.27812 q 0.27851,0 0.48204,-0.20353 0.20352,-0.20353 0.20352,-0.48204 z m 2.74225,-17.824638 v 23.309138 q 0,1.41398 -1.00692,2.4209 -1.00692,1.00692 -2.42089,1.00692 h -11.65456 q 0,0.79268 0.34278,1.66034 0.34278,0.86767 0.68556,1.5211 0.34279,0.65342 0.34279,0.93193 0,0.55702 -0.40706,0.96407 -0.40705,0.40706 -0.96407,0.40706 h -10.969 q -0.55702,0 -0.96407,-0.40706 -0.40705,-0.40705 -0.40705,-0.96407 0,-0.29993 0.34278,-0.94265 0.34278,-0.64271 0.68556,-1.49966 0.34278,-0.85695 0.34278,-1.67106 h -11.65456 q -1.41397,0 -2.42089,-1.00692 -1.00692,-1.00692 -1.00692,-2.4209 V 91.436522 q 0,-1.41397 1.00692,-2.42089 1.00692,-1.00692 2.42089,-1.00692 h 34.27812 q 1.41397,0 2.42089,1.00692 1.00692,1.00692 1.00692,2.42089 z"
+         id="path885" />
+    </g>
+    <g
+       transform="translate(-46.616813,-1.1447036e-5)"
+       id="g2772">
+      <ellipse
+         style="fill:#52ec46;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.459777;stroke-linecap:round;stroke-linejoin:round"
+         id="path2764"
+         cx="177.08437"
+         cy="105.83334"
+         rx="28.874279"
+         ry="28.874277" />
+      <path
+         id="path2105"
+         d="m 160.86334,117.9991 h 21.62804 v -2.7035 h -21.62804 z m 0,-10.81401 h 21.62804 v -2.70351 h -21.62804 z m 33.11793,9.46226 q 0,-0.84484 -0.59139,-1.43623 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43623 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z M 160.86334,96.371078 h 21.62804 v -2.7035 h -21.62804 z m 33.11793,9.462262 q 0,-0.84485 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43624 0,0.84484 0.59139,1.43623 0.5914,0.5914 1.43624,0.5914 0.84485,0 1.43624,-0.5914 0.59139,-0.59139 0.59139,-1.43623 z m 0,-10.814012 q 0,-0.84484 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.5914 -0.59139,1.43624 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z m 2.02763,17.572772 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.81402 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.814002 v 8.11051 h -37.84906 v -8.11051 z"
+         style="stroke-width:0.0211211" />
+    </g>
+    <text
+       id="text2750"
+       y="112.19526"
+       x="83.19696"
+       style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+       xml:space="preserve"><tspan
+         style="stroke-width:0.264583"
+         y="112.19526"
+         x="83.19696"
+         id="tspan2748"
+         sodipodi:role="line"></tspan></text>
+    <g
+       transform="translate(-8.6015521,0.00451257)"
+       id="g4458">
+      <g
+         id="g2981"
+         transform="translate(0,0.40306919)">
+        <g
+           transform="translate(0,-0.95189549)"
+           id="g2975">
+          <path
+             d="M 8.8418605,83.782468 H 74.507349 V 40.211915 H 8.8418605 Z"
+             style="fill:none;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.480345;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2130" />
+          <text
+             xml:space="preserve"
+             style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+             x="27.745659"
+             y="64.363541"
+             id="text2762"><tspan
+               sodipodi:role="line"
+               id="tspan2760"
+               x="27.745659"
+               y="64.363541"
+               style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Payload</tspan></text>
+        </g>
+      </g>
+      <g
+         id="g2970"
+         transform="translate(0,0.01744979)">
+        <g
+           transform="translate(-0.19538006)"
+           id="g2960">
+          <path
+             id="rect2107"
+             style="fill:#51ec46;fill-opacity:0.5;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             d="M 9.0371052,137.70529 V 171.9771 H 74.702864 v -34.27181 z" />
+          <path
+             id="path2892"
+             style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             d="M 9.0371052,137.70529 H 74.702864 v -9.82111 H 9.0371052 Z" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+           x="41.532494"
+           y="152.46408"
+           id="text2135"><tspan
+             sodipodi:role="line"
+             id="tspan2152"
+             x="41.532494"
+             y="152.46408"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583">Destination MAC</tspan><tspan
+             sodipodi:role="line"
+             x="41.532494"
+             y="163.48839"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             id="tspan2792">address</tspan></text>
+        <text
+           id="text2887"
+           y="135.97284"
+           x="27.004965"
+           style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+             y="135.97284"
+             x="27.004965"
+             id="tspan2885"
+             sodipodi:role="line">LAYER 2</tspan></text>
+      </g>
+      <g
+         id="g3017"
+         transform="translate(0,0.21477379)">
+        <path
+           id="path2919"
+           style="fill:#189fd1;fill-opacity:0.501961;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="M 8.8417251,93.132024 V 127.40383 H 74.507484 V 93.132024 Z" />
+        <path
+           id="path2921"
+           style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="M 8.8417251,93.132024 H 74.507484 V 83.310918 H 8.8417251 Z" />
+        <text
+           id="text2927"
+           y="107.89082"
+           x="41.532494"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             id="tspan2925"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             y="107.89082"
+             x="41.532494"
+             sodipodi:role="line">Destination IP</tspan><tspan
+             id="tspan2992"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             y="118.91512"
+             x="41.532494"
+             sodipodi:role="line">address</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           x="27.004967"
+           y="91.399574"
+           id="text2931"><tspan
+             sodipodi:role="line"
+             id="tspan2929"
+             x="27.004967"
+             y="91.399574"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583">LAYER 3</tspan></text>
+      </g>
+    </g>
+    <path
+       id="path3155"
+       d="M 70.047217,105.84884 H 95.022118"
+       style="fill:none;stroke:#000000;stroke-width:1.61403;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+  </g>
+  <g
+     style="display:inline"
+     inkscape:label="Key"
+     id="layer7"
+     inkscape:groupmode="layer">
+    <g
+       id="g7719">
+      <rect
+         style="fill:#4b4b4b;fill-opacity:0.1;stroke:#4b4b4b;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect7641"
+         width="51.076649"
+         height="56.782814"
+         x="393.25333"
+         y="5.0746088" />
+      <rect
+         style="fill:#0700ff;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.617426;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect7643"
+         width="9.9659071"
+         height="9.9659071"
+         x="395.68088"
+         y="11.454397" />
+      <text
+         xml:space="preserve"
+         style="font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+         x="408.97021"
+         y="19.701576"
+         id="text7647"><tspan
+           sodipodi:role="line"
+           id="tspan7645"
+           x="408.97021"
+           y="19.701576"
+           style="stroke-width:0.264583">IPv4 addr</tspan></text>
+      <path
+         d="m 405.61404,37.032979 -4.95022,2.858014 -4.95023,-2.858014 0,-5.716028 4.95023,-2.858014 4.95022,2.858014 z"
+         sodipodi:type="star"
+         style="fill:#0700ff;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.682882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path7651"
+         sodipodi:sides="6"
+         sodipodi:cx="400.66382"
+         sodipodi:cy="34.174965"
+         sodipodi:r1="5.7160282"
+         sodipodi:r2="4.9502258"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.0471976"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0" />
+      <path
+         d="m 405.42969,55.482781 -9.53174,0 4.76587,-8.254728 z"
+         sodipodi:type="star"
+         style="fill:#0700ff;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.607138;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path7653"
+         sodipodi:sides="3"
+         sodipodi:cx="400.66382"
+         sodipodi:cy="52.731205"
+         sodipodi:r1="5.5031524"
+         sodipodi:r2="2.7515762"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         inkscape:flatsided="true"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         inkscape:transform-center-y="-1.3757881"
+         inkscape:transform-center-x="9.9393759e-06" />
+      <text
+         xml:space="preserve"
+         style="font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+         x="408.97021"
+         y="37.43919"
+         id="text7657"><tspan
+           sodipodi:role="line"
+           id="tspan7655"
+           x="408.97021"
+           y="37.43919"
+           style="stroke-width:0.264583">IPv6 addr</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+         x="409.00467"
+         y="55.700222"
+         id="text7661"><tspan
+           sodipodi:role="line"
+           id="tspan7659"
+           x="409.00467"
+           y="55.700222"
+           style="stroke-width:0.264583">MAC addr</tspan></text>
+    </g>
+  </g>
+  <g
+     style="display:inline"
+     inkscape:label="Yellow router"
+     id="layer3"
+     inkscape:groupmode="layer">
+    <g
+       transform="translate(63.086593,-1.1447036e-5)"
+       id="g2776"
+       style="display:inline">
+      <ellipse
+         cy="105.83334"
+         cx="261.28979"
+         id="circle2766"
+         style="fill:#ffce00;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.459846;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+         rx="28.874279"
+         ry="28.874277" />
+      <path
+         style="stroke-width:0.0211211"
+         d="m 245.06878,117.9991 h 21.62804 v -2.7035 h -21.62804 z m 0,-10.81401 h 21.62804 v -2.70351 h -21.62804 z m 33.11793,9.46226 q 0,-0.84484 -0.59139,-1.43623 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43623 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z M 245.06878,96.371068 h 21.62804 v -2.70351 h -21.62804 z m 33.11793,9.462272 q 0,-0.84485 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43624 0,0.84484 0.59139,1.43623 0.5914,0.5914 1.43624,0.5914 0.84485,0 1.43624,-0.5914 0.59139,-0.59139 0.59139,-1.43623 z m 0,-10.814022 q 0,-0.84485 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43624 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z m 2.02763,17.572782 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.81402 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.814022 v 8.110525 h -37.84906 v -8.110525 z"
+         id="path1519" />
+    </g>
+    <g
+       transform="translate(78.259862,64.217428)"
+       id="g4256">
+      <path
+         style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 279.12184,41.615905 h 7.13883"
+         id="path3859" />
+      <path
+         id="path3861"
+         d="m 286.26067,41.615905 h 11.69456"
+         style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.32292, 1.32292;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         id="path3863"
+         d="m 297.95523,41.628616 h 9.4671"
+         style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4107)" />
+    </g>
+  </g>
+  <g
+     style="display:inline"
+     inkscape:label="Routing table"
+     id="layer4"
+     inkscape:groupmode="layer">
+    <g
+       transform="translate(3.9305993,25.93175)"
+       id="g6984">
+      <path
+         id="rect4864"
+         style="fill:#f4b8ff;fill-opacity:1;stroke:#4b4b4b;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+         d="M 697.18164,198.07031 V 548.00977 H 935.1875 V 198.07031 Z"
+         transform="scale(0.26458333)" />
+      <path
+         id="path4903"
+         style="fill:#f4b8ff;fill-opacity:1;stroke:#4b4b4b;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+         d="m 935.1875,198.07031 v 349.93946 h 235.5762 V 198.07031 Z"
+         transform="scale(0.26458333)" />
+      <path
+         id="path4881"
+         style="fill:#e85cff;fill-opacity:1;stroke:#4b4b4b;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+         d="M 935.1875,126.07031 H 697.18164 v 72 H 935.1875 Z"
+         transform="scale(0.26458333)" />
+      <path
+         id="path4899"
+         style="fill:#e85cff;fill-opacity:1;stroke:#4b4b4b;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+         d="m 935.1875,126.07031 v 72 h 235.5762 v -72 z"
+         transform="scale(0.26458333)" />
+      <path
+         id="path4876"
+         style="fill:#62186e;fill-opacity:1;stroke:#4b4b4b;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+         d="M 697.18164,126.07031 H 1170.7637 V 55.970703 H 697.18164 Z"
+         transform="scale(0.26458333)" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.3472px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583;stroke-miterlimit:4;stroke-dasharray:none"
+         x="214.01491"
+         y="27.428553"
+         id="text4872"><tspan
+           sodipodi:role="line"
+           id="tspan4870"
+           x="214.01491"
+           y="27.428553"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.3472px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583;stroke-miterlimit:4;stroke-dasharray:none">Routing table</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+         x="195.99313"
+         y="45.337883"
+         id="text4908"><tspan
+           sodipodi:role="line"
+           id="tspan4906"
+           x="195.99313"
+           y="45.337883"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Dest. prefix</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+         x="262.90738"
+         y="45.292667"
+         id="text4912"><tspan
+           sodipodi:role="line"
+           id="tspan4910"
+           x="262.90738"
+           y="45.292667"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Next hop</tspan></text>
+      <ellipse
+         style="mix-blend-mode:normal;fill:url(#linearGradient6880);fill-opacity:1;stroke:#5f5860;stroke-width:0.264583;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path4914"
+         cx="215.94884"
+         cy="98.700172"
+         rx="26.364902"
+         ry="8.741848" />
+      <ellipse
+         ry="8.741848"
+         rx="26.364902"
+         cy="126.41656"
+         cx="215.94884"
+         id="ellipse6897"
+         style="mix-blend-mode:normal;fill:url(#linearGradient6899);fill-opacity:1;stroke:#5f5860;stroke-width:0.264583;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <ellipse
+         style="mix-blend-mode:normal;fill:url(#linearGradient6986);fill-opacity:1;stroke:#5f5860;stroke-width:0.264583;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="ellipse6901"
+         cx="215.85425"
+         cy="70.98378"
+         rx="26.364902"
+         ry="8.741848" />
+      <ellipse
+         ry="8.741848"
+         rx="26.364902"
+         cy="70.98378"
+         cx="215.94884"
+         id="ellipse6954"
+         style="mix-blend-mode:normal;fill:url(#linearGradient6956);fill-opacity:1;stroke:#5f5860;stroke-width:0.264583;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <ellipse
+         style="mix-blend-mode:normal;fill:#ff0100;fill-opacity:1;stroke:#5f5860;stroke-width:0.264583;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="ellipse6958"
+         cx="278.59979"
+         cy="70.98378"
+         rx="26.364902"
+         ry="8.741848" />
+      <ellipse
+         ry="8.741848"
+         rx="26.364902"
+         cy="98.700172"
+         cx="278.59979"
+         id="ellipse6962"
+         style="mix-blend-mode:normal;fill:#ffce00;fill-opacity:0.8;stroke:#5f5860;stroke-width:0.264583;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <ellipse
+         style="mix-blend-mode:normal;fill:#fdca33;fill-opacity:1;stroke:#5f5860;stroke-width:0.264583;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="ellipse6964"
+         cx="278.59979"
+         cy="126.41656"
+         rx="26.364902"
+         ry="8.741848" />
+    </g>
+  </g>
+  <g
+     style="display:inline"
+     inkscape:label="Routing table - select"
+     id="layer5"
+     inkscape:groupmode="layer">
+    <ellipse
+       cx="251.0442"
+       cy="124.35675"
+       rx="68.589355"
+       ry="17.01281"
+       id="path6989"
+       style="fill:none;fill-opacity:0.479438;stroke:#ff0009;stroke-width:1.5875;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+  </g>
+  <g
+     style="display:inline"
+     inkscape:label="Outbound packet"
+     id="layer2"
+     inkscape:groupmode="layer">
+    <g
+       transform="translate(-2.5662515,0.00451256)"
+       id="g4412">
+      <g
+         id="g3051"
+         transform="translate(188.31359,0.40306919)">
+        <g
+           id="g3049"
+           transform="translate(0,-0.95189549)">
+          <path
+             id="path3043"
+             style="fill:none;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.480345;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             d="M 8.8418605,83.782468 H 74.507349 V 40.211915 H 8.8418605 Z" />
+          <text
+             id="text3047"
+             y="64.363541"
+             x="27.745659"
+             style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+             xml:space="preserve"><tspan
+               style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
+               y="64.363541"
+               x="27.745659"
+               id="tspan3045"
+               sodipodi:role="line">Payload</tspan></text>
+        </g>
+      </g>
+      <g
+         id="g3128"
+         transform="translate(18.90123,4.4520398)">
+        <path
+           id="path3053"
+           style="fill:#ffce00;fill-opacity:0.5;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 178.25409,133.2707 v 34.27181 h 65.66575 V 133.2707 Z" />
+        <path
+           id="path3055"
+           style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 178.25409,133.2707 h 65.66575 v -9.82111 h -65.66575 z" />
+        <text
+           id="text3063"
+           y="148.0295"
+           x="210.94485"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             y="148.0295"
+             x="210.94485"
+             id="tspan3059"
+             sodipodi:role="line">Destination MAC</tspan><tspan
+             id="tspan3061"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             y="159.0538"
+             x="210.94485"
+             sodipodi:role="line">address</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           x="196.41733"
+           y="131.53825"
+           id="text3067"><tspan
+             sodipodi:role="line"
+             id="tspan3065"
+             x="196.41733"
+             y="131.53825"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583">LAYER 2</tspan></text>
+      </g>
+      <g
+         id="g3085"
+         transform="translate(188.31359,0.2147726)">
+        <path
+           d="M 8.8417251,93.132024 V 127.40383 H 74.507484 V 93.132024 Z"
+           style="fill:#189fd1;fill-opacity:0.501961;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3071" />
+        <path
+           d="M 8.8417251,93.132024 H 74.507484 V 83.310918 H 8.8417251 Z"
+           style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3073" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+           x="41.532494"
+           y="107.89082"
+           id="text3079"><tspan
+             sodipodi:role="line"
+             x="41.532494"
+             y="107.89082"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             id="tspan3075">Destination IP</tspan><tspan
+             sodipodi:role="line"
+             x="41.532494"
+             y="118.91512"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             id="tspan3077">address</tspan></text>
+        <text
+           id="text3083"
+           y="91.399574"
+           x="27.004967"
+           style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+             y="91.399574"
+             x="27.004967"
+             id="tspan3081"
+             sodipodi:role="line">LAYER 3</tspan></text>
+      </g>
+    </g>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3661)"
+       d="m 163.47284,105.84604 h 24.9749"
+       id="path3657" />
+    <path
+       id="path3729"
+       d="m 264.39612,105.84604 h 24.9749"
+       style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3733)" />
+  </g>
+  <g
+     style="display:inline"
+     inkscape:label="ARP query"
+     id="layer6"
+     inkscape:groupmode="layer">
+    <path
+       sodipodi:nodetypes="czc"
+       id="path6998"
+       d="m 165.84999,93.439097 c 0,0 11.9266,-20.931873 61.67536,-20.931873 49.74876,0 55.96178,14.703118 61.67536,20.931873"
+       style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7582)" />
+    <g
+       transform="translate(-14.758234,11.071937)"
+       id="g7764">
+      <ellipse
+         style="fill:#51ec46;fill-opacity:0.2;stroke:#4b4b4b;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path7746"
+         cx="243.8148"
+         cy="38.164379"
+         rx="95.37513"
+         ry="18.149891" />
+      <g
+         id="g7753"
+         transform="translate(-4.1324793,0.73031961)">
+        <text
+           id="text7691"
+           y="41.222202"
+           x="174.95073"
+           style="font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
+             y="41.222202"
+             x="174.95073"
+             id="tspan7689"
+             sodipodi:role="line">Hey</tspan></text>
+        <text
+           id="text7695"
+           y="41.428905"
+           x="206.36722"
+           style="font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
+             y="41.428905"
+             x="206.36722"
+             id="tspan7693"
+             sodipodi:role="line">, what's your MAC address?</tspan></text>
+        <rect
+           style="display:inline;fill:#ffce00;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.617426;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect7707"
+           width="9.9659071"
+           height="9.9659071"
+           x="194.45468"
+           y="31.489674" />
+      </g>
+      <path
+         style="fill:#ffce00;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path7722"
+         sodipodi:type="arc"
+         sodipodi:cx="221.68204"
+         sodipodi:cy="36.015209"
+         sodipodi:rx="55.723831"
+         sodipodi:ry="13.842898"
+         sodipodi:start="0"
+         sodipodi:end="0.014983198"
+         sodipodi:open="true"
+         sodipodi:arc-type="arc"
+         d="m 277.40587,36.015209 a 55.723831,13.842898 0 0 1 -0.006,0.207403" />
+      <path
+         style="fill:#ffce00;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path7726"
+         sodipodi:type="arc"
+         sodipodi:cx="134.30948"
+         sodipodi:cy="13.632435"
+         sodipodi:rx="12.109524"
+         sodipodi:ry="5.4569273"
+         sodipodi:start="0"
+         sodipodi:end="0.014983198"
+         sodipodi:open="true"
+         sodipodi:arc-type="arc"
+         d="m 146.419,13.632435 a 12.109524,5.4569273 0 0 1 -0.001,0.08176" />
+    </g>
+  </g>
+  <g
+     style="display:inline"
+     inkscape:label="ARP answer"
+     id="layer8"
+     inkscape:groupmode="layer">
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7795)"
+       d="m 289.19946,121.17403 c 0,0 -11.9266,20.93199 -61.67536,20.93199 -49.74876,0 -55.96178,-14.70317 -61.67536,-20.93199"
+       id="path7791"
+       sodipodi:nodetypes="czc" />
+    <path
+       style="fill:#ffce00;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path7990"
+       sodipodi:type="arc"
+       sodipodi:cx="209.05109"
+       sodipodi:cy="162.97906"
+       sodipodi:rx="55.723831"
+       sodipodi:ry="13.842898"
+       sodipodi:start="0"
+       sodipodi:end="0.014983198"
+       sodipodi:open="true"
+       sodipodi:arc-type="arc"
+       d="m 264.77492,162.97906 a 55.723831,13.842898 0 0 1 -0.006,0.20741" />
+    <path
+       style="fill:#ffce00;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path7992"
+       sodipodi:type="arc"
+       sodipodi:cx="121.67854"
+       sodipodi:cy="140.59628"
+       sodipodi:rx="12.109524"
+       sodipodi:ry="5.4569273"
+       sodipodi:start="0"
+       sodipodi:end="0.014983198"
+       sodipodi:open="true"
+       sodipodi:arc-type="arc"
+       d="m 133.78807,140.59628 a 12.109524,5.4569273 0 0 1 -0.001,0.0818" />
+    <g
+       transform="translate(0,1.5875)"
+       id="g8050">
+      <g
+         id="g8037">
+        <ellipse
+           style="fill:#ffce00;fill-opacity:0.2;stroke:#4b4b4b;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="ellipse7976"
+           cx="231.18385"
+           cy="165.12823"
+           rx="95.37513"
+           ry="18.149891" />
+      </g>
+      <g
+         id="g8034"
+         transform="translate(22.198837,0.10336346)">
+        <text
+           xml:space="preserve"
+           style="font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+           x="158.1873"
+           y="168.91637"
+           id="text7980"><tspan
+             sodipodi:role="line"
+             id="tspan7978"
+             x="158.1873"
+             y="168.91637"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Hey</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+           x="189.60379"
+           y="168.91637"
+           id="text7984"><tspan
+             sodipodi:role="line"
+             id="tspan7982"
+             x="189.60379"
+             y="168.91637"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">, it's</tspan></text>
+        <rect
+           y="159.18384"
+           x="177.69125"
+           height="9.9659071"
+           width="9.9659071"
+           id="rect7986"
+           style="display:inline;fill:#51ec46;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.617426;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+        <text
+           id="text8022"
+           y="168.91637"
+           x="222.8497"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
+             y="168.91637"
+             x="222.8497"
+             id="tspan8020"
+             sodipodi:role="line">. Cheers!</tspan></text>
+        <path
+           inkscape:transform-center-x="4.8469618e-06"
+           inkscape:transform-center-y="-1.675209"
+           d="m 221.56655,169.2811 -11.60621,0 5.8031,-10.05127 z"
+           inkscape:randomized="0"
+           inkscape:rounded="0"
+           inkscape:flatsided="true"
+           sodipodi:arg2="1.5707963"
+           sodipodi:arg1="0.52359878"
+           sodipodi:r2="3.350425"
+           sodipodi:r1="6.70085"
+           sodipodi:cy="165.93068"
+           sodipodi:cx="215.76344"
+           sodipodi:sides="3"
+           id="path8024"
+           style="fill:#ffce00;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.354706;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           sodipodi:type="star" />
+      </g>
+    </g>
+  </g>
+</svg>

+ 532 - 0
imgs/routing.svg

@@ -0,0 +1,532 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1700"
+   height="800"
+   viewBox="0 0 449.79167 211.66666"
+   version="1.1"
+   id="svg8"
+   inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
+   sodipodi:docname="routing.svg">
+  <defs
+     id="defs2">
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4107"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4105"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4019"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4017"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker3949"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path3947"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker3867"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(0.6) rotate(180) translate(0,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path3865" />
+    </marker>
+    <marker
+       inkscape:collect="always"
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker3733"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(0.6) rotate(180) translate(0,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path3731" />
+    </marker>
+    <marker
+       inkscape:collect="always"
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker3661"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path3659"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:collect="always"
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="Arrow2Mend"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(0.6) rotate(180) translate(0,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path3184" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="Arrow1Mend"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         transform="scale(0.4) rotate(180) translate(10,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path3166" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="Arrow1Send"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Send">
+      <path
+         transform="scale(0.2) rotate(180) translate(6,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path3172" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="Arrow1Lend"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path3160" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="Arrow1Lstart"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lstart">
+      <path
+         transform="scale(0.8) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path3157" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.68631873"
+     inkscape:cx="1069.9059"
+     inkscape:cy="435.07968"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:document-rotation="0"
+     showgrid="false"
+     units="px"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:object-nodes="false"
+     inkscape:window-width="1916"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="18"
+     inkscape:window-maximized="1">
+    <sodipodi:guide
+       inkscape:color="rgb(0,0,255)"
+       inkscape:locked="false"
+       inkscape:label=""
+       id="guide4484"
+       orientation="0,1"
+       position="155.04456,105.83333" />
+    <sodipodi:guide
+       inkscape:color="rgb(0,0,255)"
+       inkscape:locked="false"
+       inkscape:label=""
+       id="guide4486"
+       orientation="-1,0"
+       position="224.89583,159.73242" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       transform="translate(37.035063,-1.1447036e-5)"
+       id="g2786">
+      <ellipse
+         style="fill:#19a0d2;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.459777;stroke-linecap:round;stroke-linejoin:round"
+         id="circle2768"
+         cx="383.65247"
+         cy="105.83334"
+         rx="28.874279"
+         ry="28.874277" />
+      <path
+         style="stroke-width:0.0214238"
+         d="M 401.4771,109.26116 V 91.436522 q 0,-0.27851 -0.20352,-0.48203 -0.20353,-0.20353 -0.48204,-0.20353 h -34.27812 q -0.27851,0 -0.48204,0.20353 -0.20352,0.20352 -0.20352,0.48203 v 17.824638 q 0,0.27851 0.20352,0.48204 0.20353,0.20353 0.48204,0.20353 h 34.27812 q 0.27851,0 0.48204,-0.20353 0.20352,-0.20353 0.20352,-0.48204 z m 2.74225,-17.824638 v 23.309138 q 0,1.41398 -1.00692,2.4209 -1.00692,1.00692 -2.42089,1.00692 h -11.65456 q 0,0.79268 0.34278,1.66034 0.34278,0.86767 0.68556,1.5211 0.34279,0.65342 0.34279,0.93193 0,0.55702 -0.40706,0.96407 -0.40705,0.40706 -0.96407,0.40706 h -10.969 q -0.55702,0 -0.96407,-0.40706 -0.40705,-0.40705 -0.40705,-0.96407 0,-0.29993 0.34278,-0.94265 0.34278,-0.64271 0.68556,-1.49966 0.34278,-0.85695 0.34278,-1.67106 h -11.65456 q -1.41397,0 -2.42089,-1.00692 -1.00692,-1.00692 -1.00692,-2.4209 V 91.436522 q 0,-1.41397 1.00692,-2.42089 1.00692,-1.00692 2.42089,-1.00692 h 34.27812 q 1.41397,0 2.42089,1.00692 1.00692,1.00692 1.00692,2.42089 z"
+         id="path885" />
+    </g>
+    <g
+       transform="translate(63.086594,-1.1447036e-5)"
+       id="g2776">
+      <ellipse
+         cy="105.83334"
+         cx="261.28979"
+         id="circle2766"
+         style="fill:#ffce00;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.459846;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+         rx="28.874279"
+         ry="28.874277" />
+      <path
+         style="stroke-width:0.0211211"
+         d="m 245.06878,117.9991 h 21.62804 v -2.7035 h -21.62804 z m 0,-10.81401 h 21.62804 v -2.70351 h -21.62804 z m 33.11793,9.46226 q 0,-0.84484 -0.59139,-1.43623 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43623 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z M 245.06878,96.371068 h 21.62804 v -2.70351 h -21.62804 z m 33.11793,9.462272 q 0,-0.84485 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43624 0,0.84484 0.59139,1.43623 0.5914,0.5914 1.43624,0.5914 0.84485,0 1.43624,-0.5914 0.59139,-0.59139 0.59139,-1.43623 z m 0,-10.814022 q 0,-0.84485 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43624 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z m 2.02763,17.572782 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.81402 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.814022 v 8.110525 h -37.84906 v -8.110525 z"
+         id="path1519" />
+    </g>
+    <g
+       transform="translate(-46.616813,-1.1447036e-5)"
+       id="g2772">
+      <ellipse
+         style="fill:#52ec46;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.459777;stroke-linecap:round;stroke-linejoin:round"
+         id="path2764"
+         cx="177.08437"
+         cy="105.83334"
+         rx="28.874279"
+         ry="28.874277" />
+      <path
+         id="path2105"
+         d="m 160.86334,117.9991 h 21.62804 v -2.7035 h -21.62804 z m 0,-10.81401 h 21.62804 v -2.70351 h -21.62804 z m 33.11793,9.46226 q 0,-0.84484 -0.59139,-1.43623 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43623 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z M 160.86334,96.371078 h 21.62804 v -2.7035 h -21.62804 z m 33.11793,9.462262 q 0,-0.84485 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.59139 -0.59139,1.43624 0,0.84484 0.59139,1.43623 0.5914,0.5914 1.43624,0.5914 0.84485,0 1.43624,-0.5914 0.59139,-0.59139 0.59139,-1.43623 z m 0,-10.814012 q 0,-0.84484 -0.59139,-1.43624 -0.59139,-0.59139 -1.43624,-0.59139 -0.84484,0 -1.43624,0.59139 -0.59139,0.5914 -0.59139,1.43624 0,0.84485 0.59139,1.43624 0.5914,0.59139 1.43624,0.59139 0.84485,0 1.43624,-0.59139 0.59139,-0.59139 0.59139,-1.43624 z m 2.02763,17.572772 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.81402 v 8.11051 h -37.84906 v -8.11051 z m 0,-10.814002 v 8.11051 h -37.84906 v -8.11051 z"
+         style="stroke-width:0.0211211" />
+    </g>
+    <text
+       id="text2750"
+       y="112.19526"
+       x="83.19696"
+       style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+       xml:space="preserve"><tspan
+         style="stroke-width:0.264583"
+         y="112.19526"
+         x="83.19696"
+         id="tspan2748"
+         sodipodi:role="line"></tspan></text>
+    <g
+       transform="translate(-8.6015521,0.00451257)"
+       id="g4458">
+      <g
+         id="g2981"
+         transform="translate(0,0.40306919)">
+        <g
+           transform="translate(0,-0.95189549)"
+           id="g2975">
+          <path
+             d="M 8.8418605,83.782468 H 74.507349 V 40.211915 H 8.8418605 Z"
+             style="fill:none;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.480345;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2130" />
+          <text
+             xml:space="preserve"
+             style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+             x="27.745659"
+             y="64.363541"
+             id="text2762"><tspan
+               sodipodi:role="line"
+               id="tspan2760"
+               x="27.745659"
+               y="64.363541"
+               style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Payload</tspan></text>
+        </g>
+      </g>
+      <g
+         id="g2970"
+         transform="translate(0,0.01744979)">
+        <g
+           transform="translate(-0.19538006)"
+           id="g2960">
+          <path
+             id="rect2107"
+             style="fill:#51ec46;fill-opacity:0.5;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             d="M 9.0371052,137.70529 V 171.9771 H 74.702864 v -34.27181 z" />
+          <path
+             id="path2892"
+             style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             d="M 9.0371052,137.70529 H 74.702864 v -9.82111 H 9.0371052 Z" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+           x="41.532494"
+           y="152.46408"
+           id="text2135"><tspan
+             sodipodi:role="line"
+             id="tspan2152"
+             x="41.532494"
+             y="152.46408"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583">Destination MAC</tspan><tspan
+             sodipodi:role="line"
+             x="41.532494"
+             y="163.48839"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             id="tspan2792">address</tspan></text>
+        <text
+           id="text2887"
+           y="135.97284"
+           x="27.004965"
+           style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+             y="135.97284"
+             x="27.004965"
+             id="tspan2885"
+             sodipodi:role="line">LAYER 2</tspan></text>
+      </g>
+      <g
+         id="g3017"
+         transform="translate(0,0.21477379)">
+        <path
+           id="path2919"
+           style="fill:#189fd1;fill-opacity:0.501961;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="M 8.8417251,93.132024 V 127.40383 H 74.507484 V 93.132024 Z" />
+        <path
+           id="path2921"
+           style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="M 8.8417251,93.132024 H 74.507484 V 83.310918 H 8.8417251 Z" />
+        <text
+           id="text2927"
+           y="107.89082"
+           x="41.532494"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             id="tspan2925"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             y="107.89082"
+             x="41.532494"
+             sodipodi:role="line">Destination IP</tspan><tspan
+             id="tspan2992"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             y="118.91512"
+             x="41.532494"
+             sodipodi:role="line">address</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           x="27.004967"
+           y="91.399574"
+           id="text2931"><tspan
+             sodipodi:role="line"
+             id="tspan2929"
+             x="27.004967"
+             y="91.399574"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583">LAYER 3</tspan></text>
+      </g>
+    </g>
+    <g
+       transform="translate(-2.5662515,0.00451256)"
+       id="g4412">
+      <g
+         id="g3051"
+         transform="translate(188.31359,0.40306919)">
+        <g
+           id="g3049"
+           transform="translate(0,-0.95189549)">
+          <path
+             id="path3043"
+             style="fill:none;fill-opacity:0.8;stroke:#4b4b4b;stroke-width:0.480345;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             d="M 8.8418605,83.782468 H 74.507349 V 40.211915 H 8.8418605 Z" />
+          <text
+             id="text3047"
+             y="64.363541"
+             x="27.745659"
+             style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
+             xml:space="preserve"><tspan
+               style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
+               y="64.363541"
+               x="27.745659"
+               id="tspan3045"
+               sodipodi:role="line">Payload</tspan></text>
+        </g>
+      </g>
+      <g
+         id="g3128"
+         transform="translate(18.90123,4.4520398)">
+        <path
+           id="path3053"
+           style="fill:#ffce00;fill-opacity:0.5;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 178.25409,133.2707 v 34.27181 h 65.66575 V 133.2707 Z" />
+        <path
+           id="path3055"
+           style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 178.25409,133.2707 h 65.66575 v -9.82111 h -65.66575 z" />
+        <text
+           id="text3063"
+           y="148.0295"
+           x="210.94485"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             y="148.0295"
+             x="210.94485"
+             id="tspan3059"
+             sodipodi:role="line">Destination MAC</tspan><tspan
+             id="tspan3061"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             y="159.0538"
+             x="210.94485"
+             sodipodi:role="line">address</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           x="196.41733"
+           y="131.53825"
+           id="text3067"><tspan
+             sodipodi:role="line"
+             id="tspan3065"
+             x="196.41733"
+             y="131.53825"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583">LAYER 2</tspan></text>
+      </g>
+      <g
+         id="g3085"
+         transform="translate(188.31359,0.2147726)">
+        <path
+           d="M 8.8417251,93.132024 V 127.40383 H 74.507484 V 93.132024 Z"
+           style="fill:#189fd1;fill-opacity:0.501961;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3071" />
+        <path
+           d="M 8.8417251,93.132024 H 74.507484 V 83.310918 H 8.8417251 Z"
+           style="fill:#4b4b4b;fill-opacity:1;stroke:#4b4b4b;stroke-width:0.480346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3073" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;white-space:pre;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+           x="41.532494"
+           y="107.89082"
+           id="text3079"><tspan
+             sodipodi:role="line"
+             x="41.532494"
+             y="107.89082"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             id="tspan3075">Destination IP</tspan><tspan
+             sodipodi:role="line"
+             x="41.532494"
+             y="118.91512"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
+             id="tspan3077">address</tspan></text>
+        <text
+           id="text3083"
+           y="91.399574"
+           x="27.004967"
+           style="font-weight:300;font-size:8.81944px;line-height:1.25;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Light';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           xml:space="preserve"><tspan
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+             y="91.399574"
+             x="27.004967"
+             id="tspan3081"
+             sodipodi:role="line">LAYER 3</tspan></text>
+      </g>
+    </g>
+    <path
+       id="path3155"
+       d="M 70.047217,105.84884 H 95.022118"
+       style="fill:none;stroke:#000000;stroke-width:1.61403;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3661)"
+       d="m 163.47284,105.84604 h 24.9749"
+       id="path3657" />
+    <path
+       id="path3729"
+       d="m 264.39612,105.84604 h 24.9749"
+       style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3733)" />
+    <g
+       transform="translate(78.259862,64.217427)"
+       id="g4256">
+      <path
+         style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 279.12184,41.615905 h 7.13883"
+         id="path3859" />
+      <path
+         id="path3861"
+         d="m 286.26067,41.615905 h 11.69456"
+         style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.32292, 1.32292;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         id="path3863"
+         d="m 297.95523,41.628616 h 9.4671"
+         style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4107)" />
+    </g>
+  </g>
+</svg>

+ 74 - 0
imgs/split_layers.py

@@ -0,0 +1,74 @@
+#!/usr/bin/env python3
+
+from xml.etree import ElementTree as ET
+import sys
+from pathlib import Path
+
+IN_DIR = Path(__file__).parent
+OUT_DIR = IN_DIR / "_autogen"
+
+namespaces = {
+    "svg": "http://www.w3.org/2000/svg",
+    "inkscape": "http://www.inkscape.org/namespaces/inkscape",
+}
+
+splits = {
+    "mac.svg": {
+        "_always": ["Base", "Key"],
+        "0": [],
+        "1": ["Routing table"],
+        "2": ["Routing table", "Routing table - select"],
+        "3": ["Yellow router"],
+        "4": ["Yellow router", "ARP query"],
+        "5": ["Yellow router", "ARP query", "ARP answer"],
+        "6": ["Yellow router", "Outbound packet"],
+    }
+}
+
+
+def process_svg(svg_splits, path, out_path):
+    out_path.mkdir(parents=True, exist_ok=True)
+    always = svg_splits.get("_always", [])
+
+    svg = ET.parse(path.as_posix())
+
+    for keyframe in svg_splits:
+        if keyframe.startswith("_"):  # special value -- eg `_always`
+            continue
+        layers = always + svg_splits[keyframe]
+
+        for layer_node in svg.findall(
+            ".//svg:g[@inkscape:groupmode='layer']", namespaces=namespaces
+        ):
+            layer_node.attrib["style"] = "display:none"
+        for layer_name in layers:
+            layer = svg.find(
+                ".//svg:g[@inkscape:groupmode='layer'][@inkscape:label='{}']".format(
+                    layer_name
+                ),
+                namespaces=namespaces,
+            )
+            if not layer:
+                raise Exception("Layer {} not found".format(layer_name))
+            layer.attrib["style"] = "display:inline"
+
+        keyframe_outpath = out_path / "{}.svg".format(keyframe)
+        svg.write(keyframe_outpath.as_posix(), encoding="utf-8")
+        print("Written {}".format(keyframe_outpath.as_posix()))
+
+
+def main():
+    processlist = []
+    if len(sys.argv) < 2:
+        processlist = splits.keys()
+    else:
+        processlist = [sys.argv[1]]
+
+    for svg_path in processlist:
+        process_svg(
+            splits[svg_path], IN_DIR / svg_path, OUT_DIR / (Path(svg_path).stem)
+        )
+
+
+if __name__ == "__main__":
+    main()

+ 81 - 0
slides.tex

@@ -0,0 +1,81 @@
+% vim: spell spelllang=en
+
+\documentclass[11pt,xcolor={usenames,dvipsnames},aspectratio=169]{beamer}
+\usetheme{metropolis}
+\usepackage[utf8]{inputenc}
+\usepackage[english]{babel}
+\usepackage[T1]{fontenc}
+
+\usepackage{texlib/my_listings}
+\usepackage{texlib/todo}
+
+\usepackage{booktabs}
+\usepackage[normalem]{ulem}
+
+%\usepackage{inconsolata}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{Announcing IPv4 routes with an IPv6 next-hop in the Babel
+routing protocol}
+\subtitle{\textit{aka.} draft-bastian-babel-v4ov6}
+\author[\slidecountline]
+{Théophile Bastian, Juliusz Chroboczek}
+\date{}
+%\subject{}
+%\logo{}
+\institute{
+    \href{https://ens.fr/}{ENS Paris},
+    \href{https://www.irif.fr/}{IRIF},
+    \href{https://www.nexedi.com/}{Nexedi}}
+
+\begin{document}
+
+\maketitle{}
+
+\begin{frame}{Traditional routing}
+    \begin{align*}
+        \text{Network prefix (IPvX)} &\longrightarrow \text{Next-Hop (IPvX)}
+    \end{align*}
+
+    \pause{}
+
+    \begin{table}
+        \centering
+        \textbf{IPv4 routing table} \\
+        \medskip
+        \begin{tabular}{@{} lcl @{}}
+            \toprule
+            Prefix & $\rightarrow$ & Next-Hop \\
+            \midrule
+            default & & 10.42.0.254 \\
+            10.102.0.0/16 & & 10.102.0.1 \\
+            10.102.10.0/24 & & 10.102.10.1 \\
+            \only<3>{10.0.0.0/8 & & \sout{fd80:1::1}} \\
+            \bottomrule
+        \end{tabular}
+    \end{table}
+
+    \todo{Better strikeout}
+\end{frame}
+
+\begin{frame}{The router's job}
+    \begin{figure}
+        \centering
+        \includegraphics[width=\columnwidth]{imgs/pdf/routing.pdf}
+    \end{figure}
+\end{frame}
+
+\begin{frame}{What's under the hull?}
+    \begin{figure}
+        \centering
+        \only<0>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/0.pdf}}
+        \only<1>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/1.pdf}}
+        \only<2>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/2.pdf}}
+        \only<3>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/3.pdf}}
+        \only<4>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/4.pdf}}
+        \only<5>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/5.pdf}}
+        \only<6>{\includegraphics[width=\columnwidth]{imgs/_autogen/mac/6.pdf}}
+    \end{figure}
+\end{frame}
+
+\end{document}

+ 63 - 0
texlib/my_listings.sty

@@ -0,0 +1,63 @@
+\usepackage{listings}
+\usepackage{algorithmicx}
+\usepackage{algpseudocode}
+\usepackage{color}
+\usepackage{xcolor}
+\usepackage{courier}
+\definecolor{color_comment}{HTML}{2D6F19}
+\definecolor{color_linenum}{HTML}{9E9E9E}
+\definecolor{color_strings}{HTML}{D300F3}
+
+
+\lstset{ %
+%	backgroundcolor=\color{white},   % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
+	basicstyle=\footnotesize\ttfamily,	% the size of the fonts that are used for the code
+	breakatwhitespace=false,         % sets if automatic breaks should only happen at whitespace
+	breaklines=true,                 % sets automatic line breaking
+	captionpos=b,                    % sets the caption-position to bottom
+	commentstyle=\color{color_comment},    % comment style
+%	deletekeywords={...},            % if you want to delete keywords from the given language
+%	escapeinside={\%*}{*)},          % if you want to add LaTeX within your code
+	extendedchars=true,              % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
+	frame=none,                         % adds a frame around the code
+	keepspaces=true,                 % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
+	keywordstyle=\color{blue},       % keyword style
+	morekeywords={*,...},            % if you want to add more keywords to the set
+	numbers=left,                    % where to put the line-numbers; possible values are (none, left, right)
+	numbersep=5pt,                   % how far the line-numbers are from the code
+	numberstyle=\tiny\color{color_linenum}, % the style that is used for the line-numbers
+	rulecolor=\color{black},         % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
+	showspaces=false,                % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
+	showstringspaces=false,          % underline spaces within strings only
+	showtabs=false,                  % show tabs within strings adding particular underscores
+	stepnumber=1,                    % the step between two line-numbers. If it's 1, each line will be numbered
+	stringstyle=\color{color_strings},  % string literal style
+	tabsize=4,                       % sets default tabsize to 2 spaces
+%	title=\lstname,                  % show the filename of files included with \lstinputlisting; also try caption instead of title
+%	inputencoding=utf8/latin1        % To accept utf8 encoding
+}
+
+\lstset{literate=
+	{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
+	{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
+	{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
+	{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
+	{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+	{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+	{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
+	{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
+	{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
+	{ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
+	{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
+	{€}{{\EUR}}1 {£}{{\pounds}}1 {¬}{{$\lnot$}}1 {∞}{{$\infty$}}1	
+}
+
+\newcommand{\true}{\lstinline$true$}
+\newcommand{\false}{\lstinline$false$}
+
+\newcommand{\lstbash}[1]{\lstinline[language=bash]$#1$}
+\newcommand{\lstocaml}[1]{\lstinline[language=Caml]$#1$}
+\newcommand{\lstcpp}[1]{\lstinline[language=C++]$#1$}
+\newcommand{\lstc}[1]{\lstinline[language=C]$#1$}
+\newcommand{\lstpython}[1]{\lstinline[language=python]$#1$}
+

+ 11 - 0
texlib/todo.sty

@@ -0,0 +1,11 @@
+\RequirePackage{xcolor}
+
+\definecolor{todobg}{HTML}{FF5F00}
+\definecolor{todofg}{HTML}{3700DA}
+\definecolor{notebg}{HTML}{87C23C}
+\definecolor{notefg}{HTML}{BC3423}
+
+\newcommand{\qtodo}[1]{\colorbox{todobg}{\textcolor{todofg}{#1}}}
+\newcommand{\todo}[1]{\qtodo{\textbf{TODO:}\,#1}}
+\newcommand{\qnote}[1]{\colorbox{notebg}{\textcolor{notefg}{#1}}}
+\newcommand{\tnote}[1]{\qnote{\textbf{NOTE:}\,#1}}