~zainab/blog

604aa7f37b1e7b91d2a2269ab4d2729addb09350 — zainab-ali 11 months ago 2f5c810
Add diagrams and code references
A src/assets/images/stream-pull-1.svg => src/assets/images/stream-pull-1.svg +743 -0
@@ 0,0 1,743 @@
<?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"
   inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
   id="svg8"
   version="1.1"
   viewBox="0 0 381.25055 245.28823"
   height="327.05096"
   width="508.33405"
   sodipodi:docname="stream-pull-1.svg">
  <defs
     id="defs2">
    <marker
       style="overflow:visible"
       id="marker8256"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#1663b4;fill-opacity:1;fill-rule:evenodd;stroke:#1663b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8254" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker7707"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#1663b4;fill-opacity:1;fill-rule:evenodd;stroke:#1663b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path7705" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4902"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4566"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4564" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker3554"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path3552" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker3332"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#1663b4;fill-opacity:1;fill-rule:evenodd;stroke:#1663b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path3330" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker2376"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#1663b4;fill-opacity:1;fill-rule:evenodd;stroke:#1663b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path2374" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker1956"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#1663b4;fill-opacity:1;fill-rule:evenodd;stroke:#1663b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path1954" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Mstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mstart"
       inkscape:isstock="true">
      <path
         transform="scale(0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6785" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker9004"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Lstart"
       inkscape:isstock="true">
      <path
         transform="matrix(1.1,0,0,1.1,1.1,0)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path9002" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Lstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Lstart"
       inkscape:isstock="true">
      <path
         transform="matrix(1.1,0,0,1.1,1.1,0)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6779" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Mstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Mstart"
       inkscape:isstock="true">
      <path
         transform="matrix(0.4,0,0,0.4,4,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path6767" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8588"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8586" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker7643"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Mend"
       inkscape:isstock="true">
      <path
         transform="matrix(-0.4,0,0,-0.4,-4,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path7641" />
    </marker>
    <marker
       style="overflow:visible"
       id="DiamondSstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="DiamondSstart"
       inkscape:isstock="true">
      <path
         transform="matrix(0.2,0,0,0.2,1.2,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 Z"
         id="path6855" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker7475"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path7473" />
    </marker>
    <marker
       style="overflow:visible"
       id="EmptyDiamondMend"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="EmptyDiamondMend"
       inkscape:isstock="true">
      <path
         transform="matrix(0.4,0,0,0.4,-2.6,0)"
         style="fill:#ffffff;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 Z"
         id="path6888" />
    </marker>
    <marker
       style="overflow:visible"
       id="SquareS"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="SquareS"
       inkscape:isstock="true">
      <path
         transform="scale(0.2)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M -5,-5 V 5 H 5 V -5 Z"
         id="path6837" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Mend"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Mend"
       inkscape:isstock="true">
      <path
         transform="matrix(-0.4,0,0,-0.4,-4,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path6770" />
    </marker>
    <marker
       style="overflow:visible"
       id="TriangleInM"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="TriangleInM"
       inkscape:isstock="true">
      <path
         transform="scale(-0.4)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 5.77,0 -2.88,5 V -5 Z"
         id="path6897" />
    </marker>
    <marker
       style="overflow:visible"
       id="DotM"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="DotM"
       inkscape:isstock="true">
      <path
         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
         id="path6825" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Lend"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Lend"
       inkscape:isstock="true">
      <path
         transform="matrix(-0.8,0,0,-0.8,-10,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path843" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Lstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Lstart"
       inkscape:isstock="true">
      <path
         transform="matrix(0.8,0,0,0.8,10,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path840" />
    </marker>
    <font
       horiz-adv-x="1024"
       id="font1204"
       inkscape:label="font 1"
       horiz-origin-x="0"
       horiz-origin-y="0"
       vert-origin-x="512"
       vert-origin-y="768"
       vert-adv-y="1024">
      <font-face
         units-per-em="1024"
         id="font-face1206"
         font-family="SVGFont 1" />
      <missing-glyph
         d="M0,0h1000v1024h-1000z"
         id="missing-glyph1208" />
    </font>
    <marker
       style="overflow:visible"
       id="Arrow2Mend-0"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6788-6" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Mend-6"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6788-1" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-7"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-9" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-0"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-2" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Mstart-7"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mstart"
       inkscape:isstock="true">
      <path
         transform="scale(0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6785-5" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker7934-7"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path7932-5" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker1956-8"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path1954-9" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-9"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#1663b4;fill-opacity:1;fill-rule:evenodd;stroke:#1663b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-3" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-36-1"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#1663b4;fill-opacity:1;fill-rule:evenodd;stroke:#1663b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-1-9" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker3332-3"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path3330-6" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4902-0"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900-6" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4902-0-2"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900-6-0" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4902-1"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900-5" />
    </marker>
  </defs>
  <sodipodi:namedview
     inkscape:pagecheckerboard="true"
     units="px"
     showgrid="false"
     inkscape:document-rotation="0"
     inkscape:current-layer="layer1"
     inkscape:document-units="mm"
     inkscape:cy="184.34694"
     inkscape:cx="278.22496"
     inkscape:zoom="2.9086555"
     inkscape:pageshadow="2"
     inkscape:pageopacity="0.0"
     borderopacity="1.0"
     bordercolor="#666666"
     pagecolor="#ffffff"
     id="base"
     inkscape:window-width="2556"
     inkscape:window-height="1375"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="1"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0" />
  <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 />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     id="layer1"
     inkscape:groupmode="layer"
     inkscape:label="Layer 1"
     transform="translate(-129.44875,-26.021517)">
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1663b4;stroke-width:2.83465;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2376);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="m 234.50953,55.115673 c 31.12527,18.849775 36.06271,47.457897 1.54107,90.769627"
       id="path2181"
       sodipodi:nodetypes="cc" />
    <rect
       style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4902-1);paint-order:markers fill stroke;stop-color:#000000"
       id="rect4898-5"
       width="106.91856"
       height="33.891304"
       x="240.39876"
       y="90.215363" />
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1663b4;stroke-width:2.83465;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1956);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="M 196.69406,50.260819 C 171.40997,68.996282 169.59849,115.03182 195.33833,150.29496"
       id="path1773"
       sodipodi:nodetypes="cc" />
    <rect
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4902);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       id="rect4898"
       width="106.91856"
       height="33.891304"
       x="129.44875"
       y="75.990234" />
    <text
       xml:space="preserve"
       style="font-style:normal;font-weight:normal;font-size:30px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
       x="253.76794"
       y="45.935501"
       id="text1180"><tspan
         sodipodi:role="line"
         id="tspan1178"
         x="253.76794"
         y="45.935501"
         style="stroke-width:0.75" /></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
       x="199.39806"
       y="174.20673"
       id="text13"><tspan
         sodipodi:role="line"
         id="tspan11"
         x="199.39806"
         y="174.20673"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">pull</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
       x="214.36392"
       y="172.96826"
       id="text6415"
       transform="translate(29.658495,-56.052258)"><tspan
         sodipodi:role="line"
         id="tspan6413"
         x="214.36392"
         y="172.96826"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">stream</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75"
       x="176.81134"
       y="45.851517"
       id="text9"><tspan
         sodipodi:role="line"
         id="tspan7"
         x="176.81134"
         y="45.851517"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#1663b4;fill-opacity:1;stroke-width:0.75">stream</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
       x="146.37315"
       y="93.100739"
       id="text1184"
       transform="translate(-8.445665,7.2346624)"><tspan
         sodipodi:role="line"
         id="tspan1182"
         x="146.37315"
         y="93.100739"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">pull.echo</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
       x="381.59039"
       y="159.22102"
       id="text6496"><tspan
         sodipodi:role="line"
         id="tspan6494"
         x="381.59039"
         y="159.22102"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Stream.empty</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
       x="396.14279"
       y="204.02553"
       id="text6496-9"><tspan
         sodipodi:role="line"
         id="tspan6494-1"
         x="396.14279"
         y="204.02553"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Pull.done</tspan></text>
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:#1663b4;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker7707);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="m 419.30014,62.900044 0.34317,24.924352"
       id="path6594"
       sodipodi:nodetypes="cc" />
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#1663b4;fill-opacity:1;stroke-width:0.75"
       x="367.17819"
       y="54.353157"
       id="text6496-3"><tspan
         sodipodi:role="line"
         id="tspan6494-5"
         x="367.17819"
         y="54.353157"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Stream(&quot;hello&quot;)</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
       x="356.3121"
       y="104.83644"
       id="text6496-9-6"><tspan
         sodipodi:role="line"
         id="tspan6494-1-2"
         x="356.3121"
         y="104.83644"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Pull.output1(&quot;hello&quot;)</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
       x="241.5639"
       y="266.77225"
       id="text6496-9-7-6"><tspan
         sodipodi:role="line"
         x="241.5639"
         y="266.77225"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
         id="tspan1654">composed with &gt;&gt;</tspan></text>
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:#1663b4;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8256);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="m 425.62617,188.14273 1.69235,-25.10379"
       id="path6594-2"
       sodipodi:nodetypes="cc" />
    <path
       style="font-variation-settings:normal;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:#1663b4;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8122-9);paint-order:markers fill stroke;stop-color:#000000"
       d="m 441.07357,164.65184 0.34317,24.92435"
       id="path6594-4"
       sodipodi:nodetypes="cc" />
    <path
       style="font-variation-settings:normal;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:#1663b4;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8122-36-1);paint-order:markers fill stroke;stop-color:#000000"
       d="m 434.17667,87.241698 1.69235,-25.1038"
       id="path6594-2-7"
       sodipodi:nodetypes="cc" />
  </g>
</svg>

A src/assets/images/stream-pull-2.svg => src/assets/images/stream-pull-2.svg +806 -0
@@ 0,0 1,806 @@
<?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"
   inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
   id="svg8"
   version="1.1"
   viewBox="0 0 483.43361 246.27359"
   height="328.36478"
   width="644.57812"
   sodipodi:docname="stream-pull-2.svg">
  <defs
     id="defs2">
    <marker
       style="overflow:visible"
       id="marker4902"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4566"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4564" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker3554"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path3552" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker3332"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#1663b4;fill-opacity:1;fill-rule:evenodd;stroke:#1663b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path3330" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker2376"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path2374" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker1956"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path1954" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Mstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mstart"
       inkscape:isstock="true">
      <path
         transform="scale(0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6785" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker9004"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Lstart"
       inkscape:isstock="true">
      <path
         transform="matrix(1.1,0,0,1.1,1.1,0)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path9002" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Lstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Lstart"
       inkscape:isstock="true">
      <path
         transform="matrix(1.1,0,0,1.1,1.1,0)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6779" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Mstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Mstart"
       inkscape:isstock="true">
      <path
         transform="matrix(0.4,0,0,0.4,4,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path6767" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8588"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8586" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker7643"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Mend"
       inkscape:isstock="true">
      <path
         transform="matrix(-0.4,0,0,-0.4,-4,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path7641" />
    </marker>
    <marker
       style="overflow:visible"
       id="DiamondSstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="DiamondSstart"
       inkscape:isstock="true">
      <path
         transform="matrix(0.2,0,0,0.2,1.2,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 Z"
         id="path6855" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker7475"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path7473" />
    </marker>
    <marker
       style="overflow:visible"
       id="EmptyDiamondMend"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="EmptyDiamondMend"
       inkscape:isstock="true">
      <path
         transform="matrix(0.4,0,0,0.4,-2.6,0)"
         style="fill:#ffffff;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 Z"
         id="path6888" />
    </marker>
    <marker
       style="overflow:visible"
       id="SquareS"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="SquareS"
       inkscape:isstock="true">
      <path
         transform="scale(0.2)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M -5,-5 V 5 H 5 V -5 Z"
         id="path6837" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Mend"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Mend"
       inkscape:isstock="true">
      <path
         transform="matrix(-0.4,0,0,-0.4,-4,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path6770" />
    </marker>
    <marker
       style="overflow:visible"
       id="TriangleInM"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="TriangleInM"
       inkscape:isstock="true">
      <path
         transform="scale(-0.4)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 5.77,0 -2.88,5 V -5 Z"
         id="path6897" />
    </marker>
    <marker
       style="overflow:visible"
       id="DotM"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="DotM"
       inkscape:isstock="true">
      <path
         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
         id="path6825" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Lend"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Lend"
       inkscape:isstock="true">
      <path
         transform="matrix(-0.8,0,0,-0.8,-10,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path843" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Lstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Lstart"
       inkscape:isstock="true">
      <path
         transform="matrix(0.8,0,0,0.8,10,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path840" />
    </marker>
    <font
       horiz-adv-x="1024"
       id="font1204"
       inkscape:label="font 1"
       horiz-origin-x="0"
       horiz-origin-y="0"
       vert-origin-x="512"
       vert-origin-y="768"
       vert-adv-y="1024">
      <font-face
         units-per-em="1024"
         id="font-face1206"
         font-family="SVGFont 1" />
      <missing-glyph
         d="M0,0h1000v1024h-1000z"
         id="missing-glyph1208" />
    </font>
    <marker
       style="overflow:visible"
       id="Arrow2Mend-0"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6788-6" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Mend-6"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6788-1" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-7"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-9" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-0"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-2" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Mstart-7"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mstart"
       inkscape:isstock="true">
      <path
         transform="scale(0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6785-5" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker7934-7"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path7932-5" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker1956-8"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path1954-9" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-36"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-1" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-9"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-3" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-36-1"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-1-9" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker3332-3"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path3330-6" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4902-0"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900-6" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4902-0-2"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900-6-0" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4902-1"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900-5" />
    </marker>
  </defs>
  <sodipodi:namedview
     inkscape:pagecheckerboard="true"
     units="px"
     showgrid="false"
     inkscape:document-rotation="0"
     inkscape:current-layer="layer1"
     inkscape:document-units="mm"
     inkscape:cy="193.46401"
     inkscape:cx="209.53142"
     inkscape:zoom="1.484589"
     inkscape:pageshadow="2"
     inkscape:pageopacity="0.0"
     borderopacity="1.0"
     bordercolor="#666666"
     pagecolor="#ffffff"
     id="base"
     inkscape:window-width="1276"
     inkscape:window-height="1375"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="1"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0" />
  <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 />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     id="layer1"
     inkscape:groupmode="layer"
     inkscape:label="Layer 1"
     transform="translate(-27.265688,-26.021517)">
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.83465;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2376);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="m 234.50953,55.115673 c 31.12527,18.849775 36.06271,47.457897 1.54107,90.769627"
       id="path2181"
       sodipodi:nodetypes="cc" />
    <rect
       style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4902-1);paint-order:markers fill stroke;stop-color:#000000"
       id="rect4898-5"
       width="106.91856"
       height="33.891304"
       x="240.39876"
       y="90.215363" />
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1663b4;stroke-width:2.83465;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3332);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="M 172.94681,49.916001 C 52.129708,78.359206 73.440443,175.58861 94.399784,208.34964"
       id="path3299"
       sodipodi:nodetypes="cc" />
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.83465;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1956);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="M 196.69406,50.260819 C 171.40997,68.996282 169.59849,115.03182 195.33833,150.29496"
       id="path1773"
       sodipodi:nodetypes="cc" />
    <rect
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4902);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       id="rect4898"
       width="106.91856"
       height="33.891304"
       x="129.44875"
       y="75.990234" />
    <text
       xml:space="preserve"
       style="font-style:normal;font-weight:normal;font-size:30px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
       x="253.76794"
       y="45.935501"
       id="text1180"><tspan
         sodipodi:role="line"
         id="tspan1178"
         x="253.76794"
         y="45.935501"
         style="stroke-width:0.75" /></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:'Source Code Pro';-inkscape-font-specification:'Source Code Pro, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
       x="199.39806"
       y="174.20673"
       id="text13"><tspan
         sodipodi:role="line"
         id="tspan11"
         x="199.39806"
         y="174.20673"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.75">pull</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
       x="214.36392"
       y="172.96826"
       id="text6415"
       transform="translate(29.658495,-56.052258)"><tspan
         sodipodi:role="line"
         id="tspan6413"
         x="214.36392"
         y="172.96826"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">stream</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
       x="176.81134"
       y="45.851517"
       id="text9"><tspan
         sodipodi:role="line"
         id="tspan7"
         x="176.81134"
         y="45.851517"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.75">stream</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
       x="146.37315"
       y="93.100739"
       id="text1184"
       transform="translate(-8.445665,7.2346624)"><tspan
         sodipodi:role="line"
         id="tspan1182"
         x="146.37315"
         y="93.100739"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">pull.echo</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="381.59039"
       y="159.22102"
       id="text6496"><tspan
         sodipodi:role="line"
         id="tspan6494"
         x="381.59039"
         y="159.22102"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Stream.empty</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="396.14279"
       y="204.02553"
       id="text6496-9"><tspan
         sodipodi:role="line"
         id="tspan6494-1"
         x="396.14279"
         y="204.02553"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Pull.done</tspan></text>
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8122);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="m 419.30014,62.900044 0.34317,24.924352"
       id="path6594"
       sodipodi:nodetypes="cc" />
    <rect
       style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4902-0);paint-order:markers fill stroke;stop-color:#000000"
       id="rect4898-3"
       width="140.89246"
       height="31.456827"
       x="27.265688"
       y="139.05499" />
    <text
       xml:space="preserve"
       style="font-size:30px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#1663b4;fill-opacity:1;stroke-width:0.75"
       x="31.826033"
       y="163.03059"
       id="text6671"><tspan
         sodipodi:role="line"
         id="tspan6669"
         x="31.826033"
         y="163.03059"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">pull.uncons1</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="367.17819"
       y="54.353157"
       id="text6496-3"><tspan
         sodipodi:role="line"
         id="tspan6494-5"
         x="367.17819"
         y="54.353157"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Stream(&quot;hello&quot;)</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="356.3121"
       y="104.83644"
       id="text6496-9-6"><tspan
         sodipodi:role="line"
         id="tspan6494-1-2"
         x="356.3121"
         y="104.83644"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Pull.output1(&quot;hello&quot;)</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#1663b4;stroke-width:0.75;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill-opacity:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1;"
       x="188.29559"
       y="201.81133"
       id="text6496-9-7"><tspan
         sodipodi:role="line"
         id="tspan6494-1-0"
         x="188.29559"
         y="201.81133"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1;">of Unit</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
       x="90.396294"
       y="248.8576"
       id="text6496-9-7-9"><tspan
         sodipodi:role="line"
         x="90.396294"
         y="248.8576"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
         id="tspan1555">of first </tspan><tspan
         sodipodi:role="line"
         x="90.396294"
         y="272.2951"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
         id="tspan1614">and rest</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
       x="101.9362"
       y="225.39583"
       id="text13-6"><tspan
         sodipodi:role="line"
         id="tspan11-0"
         x="101.9362"
         y="225.39583"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#1663b4;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">pull</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="241.5639"
       y="266.77225"
       id="text6496-9-7-6"><tspan
         sodipodi:role="line"
         x="241.5639"
         y="266.77225"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
         id="tspan1654">composed with &gt;&gt;</tspan></text>
    <path
       style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8122-36);paint-order:markers fill stroke;stop-color:#000000"
       d="m 425.62617,188.14273 1.69235,-25.10379"
       id="path6594-2"
       sodipodi:nodetypes="cc" />
    <path
       style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8122-9);paint-order:markers fill stroke;stop-color:#000000"
       d="m 441.07357,164.65184 0.34317,24.92435"
       id="path6594-4"
       sodipodi:nodetypes="cc" />
    <path
       style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8122-36-1);paint-order:markers fill stroke;stop-color:#000000"
       d="m 434.17667,87.241698 1.69235,-25.1038"
       id="path6594-2-7"
       sodipodi:nodetypes="cc" />
  </g>
</svg>

A src/assets/images/stream-pull-4.svg => src/assets/images/stream-pull-4.svg +871 -0
@@ 0,0 1,871 @@
<?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"
   inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
   id="svg8"
   version="1.1"
   viewBox="0 0 464.43871 367.70214"
   height="490.2695"
   width="619.25159"
   sodipodi:docname="stream-pull-4.svg">
  <defs
     id="defs2">
    <marker
       style="overflow:visible"
       id="marker4902"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4566"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4564" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker3554"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path3552" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker3332"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path3330" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker2376"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path2374" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker1956"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path1954" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Mstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mstart"
       inkscape:isstock="true">
      <path
         transform="scale(0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6785" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker9004"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Lstart"
       inkscape:isstock="true">
      <path
         transform="matrix(1.1,0,0,1.1,1.1,0)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path9002" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Lstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Lstart"
       inkscape:isstock="true">
      <path
         transform="matrix(1.1,0,0,1.1,1.1,0)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6779" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Mstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Mstart"
       inkscape:isstock="true">
      <path
         transform="matrix(0.4,0,0,0.4,4,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path6767" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8588"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8586" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker7643"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Mend"
       inkscape:isstock="true">
      <path
         transform="matrix(-0.4,0,0,-0.4,-4,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path7641" />
    </marker>
    <marker
       style="overflow:visible"
       id="DiamondSstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="DiamondSstart"
       inkscape:isstock="true">
      <path
         transform="matrix(0.2,0,0,0.2,1.2,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 Z"
         id="path6855" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker7475"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path7473" />
    </marker>
    <marker
       style="overflow:visible"
       id="EmptyDiamondMend"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="EmptyDiamondMend"
       inkscape:isstock="true">
      <path
         transform="matrix(0.4,0,0,0.4,-2.6,0)"
         style="fill:#ffffff;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 Z"
         id="path6888" />
    </marker>
    <marker
       style="overflow:visible"
       id="SquareS"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="SquareS"
       inkscape:isstock="true">
      <path
         transform="scale(0.2)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M -5,-5 V 5 H 5 V -5 Z"
         id="path6837" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Mend"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Mend"
       inkscape:isstock="true">
      <path
         transform="matrix(-0.4,0,0,-0.4,-4,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path6770" />
    </marker>
    <marker
       style="overflow:visible"
       id="TriangleInM"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="TriangleInM"
       inkscape:isstock="true">
      <path
         transform="scale(-0.4)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 5.77,0 -2.88,5 V -5 Z"
         id="path6897" />
    </marker>
    <marker
       style="overflow:visible"
       id="DotM"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="DotM"
       inkscape:isstock="true">
      <path
         transform="matrix(0.4,0,0,0.4,2.96,0.4)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
         id="path6825" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Lend"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Lend"
       inkscape:isstock="true">
      <path
         transform="matrix(-0.8,0,0,-0.8,-10,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path843" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow1Lstart"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Lstart"
       inkscape:isstock="true">
      <path
         transform="matrix(0.8,0,0,0.8,10,0)"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
         id="path840" />
    </marker>
    <font
       horiz-adv-x="1024"
       id="font1204"
       inkscape:label="font 1"
       horiz-origin-x="0"
       horiz-origin-y="0"
       vert-origin-x="512"
       vert-origin-y="768"
       vert-adv-y="1024">
      <font-face
         units-per-em="1024"
         id="font-face1206"
         font-family="SVGFont 1" />
      <missing-glyph
         d="M0,0h1000v1024h-1000z"
         id="missing-glyph1208" />
    </font>
    <marker
       style="overflow:visible"
       id="Arrow2Mend-0"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6788-6" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Mend-6"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6788-1" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-7"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-9" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-0"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-2" />
    </marker>
    <marker
       style="overflow:visible"
       id="Arrow2Mstart-7"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mstart"
       inkscape:isstock="true">
      <path
         transform="scale(0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path6785-5" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker7934-7"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path7932-5" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker1956-8"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path1954-9" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-36"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-1" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-9"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-3" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker8122-36-1"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true"
       inkscape:collect="always">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path8120-1-9" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker3332-3"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#3171b4;fill-opacity:1;fill-rule:evenodd;stroke:#3171b4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path3330-6" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4902-0"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900-6" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4902-0-2"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900-6-0" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker4902-1"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path4900-5" />
    </marker>
    <marker
       style="overflow:visible"
       id="marker3332-36"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow2Mend"
       inkscape:isstock="true">
      <path
         transform="scale(-0.6)"
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
         id="path3330-7" />
    </marker>
  </defs>
  <sodipodi:namedview
     inkscape:pagecheckerboard="true"
     units="px"
     showgrid="false"
     inkscape:document-rotation="0"
     inkscape:current-layer="layer1"
     inkscape:document-units="mm"
     inkscape:cy="203.91006"
     inkscape:cx="183.59905"
     inkscape:zoom="1.4543278"
     inkscape:pageshadow="2"
     inkscape:pageopacity="0.0"
     borderopacity="1.0"
     bordercolor="#666666"
     pagecolor="#ffffff"
     id="base"
     inkscape:window-width="2556"
     inkscape:window-height="1375"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="1"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0" />
  <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
     id="layer1"
     inkscape:groupmode="layer"
     inkscape:label="Layer 1"
     transform="translate(-17.177807,-26.021517)">
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.83465;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2376);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="m 234.50953,55.115673 c 31.12527,18.849775 36.06271,47.457897 1.54107,90.769627"
       id="path2181"
       sodipodi:nodetypes="cc" />
    <rect
       style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4902-1);paint-order:markers fill stroke;stop-color:#000000"
       id="rect4898-5"
       width="85.176468"
       height="33.891304"
       x="240.39876"
       y="90.215363" />
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.83465;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3332);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="M 166.37868,35.751244 C -43.317337,61.146816 -22.905436,363.33465 183.58676,351.31196"
       id="path3299-1"
       sodipodi:nodetypes="cc" />
    <rect
       style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4902-0-2);paint-order:markers fill stroke;stop-color:#000000"
       id="rect4898-3-6"
       width="140.89246"
       height="31.456827"
       x="33.899311"
       y="306.07654" />
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.83465;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3332);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="M 172.94681,49.916001 C 52.129708,78.359206 73.440443,175.58861 94.399784,208.34964"
       id="path3299"
       sodipodi:nodetypes="cc" />
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.83465;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1956);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="M 196.69406,50.260819 C 171.40997,68.996282 169.59849,115.03182 195.33833,150.29496"
       id="path1773"
       sodipodi:nodetypes="cc" />
    <rect
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4902);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       id="rect4898"
       width="106.91856"
       height="33.891304"
       x="129.44875"
       y="75.990234" />
    <text
       xml:space="preserve"
       style="font-style:normal;font-weight:normal;font-size:30px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
       x="253.76794"
       y="45.935501"
       id="text1180"><tspan
         sodipodi:role="line"
         id="tspan1178"
         x="253.76794"
         y="45.935501"
         style="stroke-width:0.75" /></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:'Source Code Pro';-inkscape-font-specification:'Source Code Pro, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
       x="199.39806"
       y="174.20673"
       id="text13"><tspan
         sodipodi:role="line"
         id="tspan11"
         x="199.39806"
         y="174.20673"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.75">pull</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
       x="214.36392"
       y="172.96826"
       id="text6415"
       transform="translate(29.658495,-56.052258)"><tspan
         sodipodi:role="line"
         id="tspan6413"
         x="214.36392"
         y="172.96826"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">stream</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
       x="176.81134"
       y="45.851517"
       id="text9"><tspan
         sodipodi:role="line"
         id="tspan7"
         x="176.81134"
         y="45.851517"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.75">stream</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
       x="146.37315"
       y="93.100739"
       id="text1184"
       transform="translate(-8.445665,7.2346624)"><tspan
         sodipodi:role="line"
         id="tspan1182"
         x="146.37315"
         y="93.100739"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">pull.echo</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="352.5076"
       y="155.875"
       id="text6496"><tspan
         sodipodi:role="line"
         id="tspan6494"
         x="352.5076"
         y="155.875"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Stream.empty</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="367.06"
       y="200.6795"
       id="text6496-9"><tspan
         sodipodi:role="line"
         id="tspan6494-1"
         x="367.06"
         y="200.6795"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Pull.done</tspan></text>
    <path
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8122);paint-order:markers fill stroke;stop-color:#000000;stop-opacity:1"
       d="m 390.21736,59.554023 0.34317,24.924352"
       id="path6594"
       sodipodi:nodetypes="cc" />
    <rect
       style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4902-0);paint-order:markers fill stroke;stop-color:#000000"
       id="rect4898-3"
       width="111.48937"
       height="32.907261"
       x="56.66877"
       y="137.60458" />
    <text
       xml:space="preserve"
       style="font-size:30px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="31.826033"
       y="163.03059"
       id="text6671"><tspan
         sodipodi:role="line"
         id="tspan6669"
         x="31.826033"
         y="163.03059"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">pull.uncons1</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1;"
       x="14.359096"
       y="345.19815"
       id="text6675"
       transform="translate(24.651962,-15.041655)"><tspan
         sodipodi:role="line"
         id="tspan6673"
         x="14.359096"
         y="345.19815"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.25px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1;">pull.take(n)</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="338.0954"
       y="51.007137"
       id="text6496-3"><tspan
         sodipodi:role="line"
         id="tspan6494-5"
         x="338.0954"
         y="51.007137"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Stream(&quot;hello&quot;)</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="327.22931"
       y="101.49042"
       id="text6496-9-6"><tspan
         sodipodi:role="line"
         id="tspan6494-1-2"
         x="327.22931"
         y="101.49042"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">Pull.output1(&quot;hello&quot;)</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="188.29559"
       y="201.81133"
       id="text6496-9-7"><tspan
         sodipodi:role="line"
         id="tspan6494-1-0"
         x="188.29559"
         y="201.81133"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1">of Unit</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="90.396294"
       y="248.8576"
       id="text6496-9-7-9"><tspan
         sodipodi:role="line"
         x="90.396294"
         y="248.8576"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
         id="tspan1555">of first </tspan><tspan
         sodipodi:role="line"
         x="90.396294"
         y="272.2951"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
         id="tspan1614">and rest</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:'Source Code Pro';-inkscape-font-specification:'Source Code Pro, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
       x="101.9362"
       y="225.39583"
       id="text13-6"><tspan
         sodipodi:role="line"
         id="tspan11-0"
         x="101.9362"
         y="225.39583"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.75">pull</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;fill:#000000;stroke-width:0.75"
       x="241.5639"
       y="266.77225"
       id="text6496-9-7-6"><tspan
         sodipodi:role="line"
         x="241.5639"
         y="266.77225"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
         id="tspan1654">composed with &gt;&gt;</tspan></text>
    <text
       xml:space="preserve"
       style="font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;stroke-width:0.75;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1;stroke:none;"
       x="192.94083"
       y="365.74866"
       id="text6496-9-7-9-9"><tspan
         sodipodi:role="line"
         x="192.94083"
         y="365.74866"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1;"
         id="tspan1755">of rest with </tspan><tspan
         sodipodi:role="line"
         x="192.94083"
         y="389.18616"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.75px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1;"
         id="tspan1759">first n outputted</tspan></text>
    <text
       xml:space="preserve"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75;font-variant-position:normal;font-variant-alternates:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1;"
       x="201.14075"
       y="342.06525"
       id="text13-6-2"><tspan
         sodipodi:role="line"
         id="tspan11-0-3"
         x="201.14075"
         y="342.06525"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;font-family:Kalam;-inkscape-font-specification:Kalam;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.75;line-height:1.25;font-variant-position:normal;font-variant-alternates:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1;">pull</tspan></text>
    <path
       style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8122-36);paint-order:markers fill stroke;stop-color:#000000"
       d="m 396.54339,184.79671 1.69235,-25.10379"
       id="path6594-2"
       sodipodi:nodetypes="cc" />
    <path
       style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8122-9);paint-order:markers fill stroke;stop-color:#000000"
       d="m 411.99079,161.30582 0.34317,24.92435"
       id="path6594-4"
       sodipodi:nodetypes="cc" />
    <path
       style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.41732;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:0.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8122-36-1);paint-order:markers fill stroke;stop-color:#000000"
       d="m 405.09389,83.895677 1.69235,-25.1038"
       id="path6594-2-7"
       sodipodi:nodetypes="cc" />
  </g>
</svg>

M src/chapter-page.css.pp => src/chapter-page.css.pp +24 -0
@@ 165,6 165,8 @@ body.chapter-page footer {
◊(define quotation-indent action-indent)
◊(define quotation-paragraph-spacing (* 4 paragraph-spacing))
◊(define article-paragraph-spacing (* 4 paragraph-spacing))
◊(define image-spacing (* 4 paragraph-spacing))
◊(define image-padding-spacing (* 2 paragraph-spacing))

body.chapter-page header h1.bookTitle {
    margin: 0;


@@ 238,6 240,15 @@ body.chapter-page main ul {
    list-style-type: square;
}

body.chapter-page main ol.code-references {
    list-style-type: code-references;
}
body.chapter-page main ol.code-references li {
    padding-left: 6px;
}



body.chapter-page main div.book div.read-navigation {
    display: flex;
    justify-content: space-around;


@@ 358,6 369,12 @@ body.chapter-page main div.quotation > p.author:before {
  content: "⸺ ";
}

body.chapter-page main img.diagram {
    display: block;
    margin: ◊|image-spacing|px auto;
    padding: ◊|image-padding-spacing|px;
}

/* Colours and fonts */

body.chapter-page {


@@ 396,6 413,13 @@ body.chapter-page main div.snippet {
  font-family: ◊|monospace-font|, sans-serif;
}

body.chapter-page main img.diagram {
    border: 1px solid ◊|diagram-border-colour|;
    box-shadow: -5px 5px 5px ◊|diagram-shadow-colour|;
}



body.chapter-page main div.buffer > div.modeline,
body.getting-started main div.buffer > div.modeline {
  background-color: ◊|snippet-heading-bg-colour|;

M src/chapters/fs2/pulls.html.pm => src/chapters/fs2/pulls.html.pm +44 -6
@@ 73,6 73,10 @@ transformations. With a bit of thought we can code this up as a pipe.}

◊snippet[#:name "world-pipe"]{}

◊p{Our mental picture of a pull is a bit like this:}

◊diagram[#:name "stream-pull-1.svg"]{}

◊headline-link{Food for thought}

◊p{


@@ 223,9 227,18 @@ pipe to take the first element in a stream. We could start by using

◊snippet[#:name "take1"]{}

◊p{
If the first element is present, we output it using
◊code-inline{Pull.output1}. Otherwise, we terminate the pull with ◊code-inline{Pull.done}.
◊p{The result is one of two things:}

◊code-references{
◊item{If the stream is non-empty, the result is a ◊code-inline{Some}
of a tuple of the first element and the rest of the stream. The first
element is usually referred to as the “head” of the stream, so we’ll
name this ◊code-inline{h}. If the head is present we output it using
◊code-inline{Pull.output1}.
}

◊item{If the stream is empty, the result is a ◊code-inline{None}. We
terminate with ◊code-inline{Pull.done}.}
}

◊snippet[#:name "take1-complete"]{}


@@ 236,6 249,19 @@ Let’s try it out:

◊snippet[#:name "take1-run"]{}

◊p{Updating our mental picture with results and ◊code-inline{uncons1} we have:}

◊diagram[#:name "stream-pull-2.svg"]{}

◊p{
If you’re still a bit suspicious of ◊code-inline{uncons1} it might help to
compare it to the act of pattern matching on a
◊code-inline{List}. Pattern matching on a list has a non‑empty case
◊code-inline{::}, which gives the first element and the rest of
the list; and an empty case ◊code-inline{Nil}. ◊external-link[#:href "https://gist.io/@daenyth/024c5584da01acabe7a435c8a53c4f3c
"]{Gavin Bisesi’s excellent gist on pulls} goes into this in detail.
}

◊headline-link{Recursion}

◊p{


@@ 252,12 278,21 @@ pull that does this for us — ◊code-inline{pull.take}.
◊p{Take a moment to examine that type signature.}


◊p{It gives us a pull with an output type of ◊code-inline{String}:
it outputs the number of elements we ask it to take. More interestingly, it results in an ◊code-inline{Option[Stream[Nothing, String]]}
representing the rest of the stream. We can use this to manipulate the remaining output.
◊items{
◊item{
It gives us a pull with an output type of ◊code-inline{String}:
it outputs the number of elements we ask it to take.
}
◊item{
More interestingly, it results in an ◊code-inline{Option[Stream[Nothing, String]]}.
This represents the rest of the stream, which we can use to manipulate the remaining output.
}
}

◊p{Which is exactly what we need to write our ◊code-inline{serveThen} pipe.}



◊headline-link{Serving jiaozi}

◊p{The ◊code-inline{serveThen} pipe should take a given number of


@@ 286,3 321,6 @@ converting it back to a pull.}
◊p{If we give it a spin we do indeed see leftovers.}

◊snippet[#:name "run-sim"]{}

◊image[#:name "chopsticks.svg"]{}


M src/chapters/fs2/recap.html.pm => src/chapters/fs2/recap.html.pm +22 -6
@@ 1,8 1,7 @@
#lang pollen

◊image[#:name "chopsticks.svg"]{}

◊p{Here’s a quick run down of what you’ve learned.}
◊p{To summarize:}

◊items{
◊item{Stream transformations are built using pulls.}


@@ 12,7 11,24 @@ converted to streams.}
◊item{Pulls are monads — they can be composed using ◊code-inline{flatMap}.}
}

◊p{You’re now well equipped to be creative with your own custom pulls. If you
need more inspiration, have a peek inside the ◊external-link[#:href
"https://github.com/typelevel/fs2"]{fs2 codebase} to see how its own
pipes and are written.}
◊diagram[#:name "stream-pull-4.svg"]{}

◊p{You’re now well equipped to be creative with your own custom pulls. If you need more inspiration, take a look at the following posts.}

◊items{
◊item{◊external-link[#:href
"https://gist.io/@daenyth/024c5584da01acabe7a435c8a53c4f3c "]{Gavin
Bisesi’s excellent gist} explores a more advanced usage of pulls with effects as well as some gotchas of working with effect evaluation.

}
◊item{Have a look at the ◊external-link[#:href "https://github.com/typelevel/fs2"]{fs2 codebase} to see how its own pipes and are written.}
◊item{Read ◊external-link[#:href "https://gitter.im/functional-streams-for-scala/fs2?at=5acb7b81109bb04332a39a41"]{Fabio Labella’s explanation on Gitter} to learn more about the reasoning behind pulls.}}

◊headline2{Credits}

◊p{Many thanks to ◊external-link[#:href "https://github.com/SystemFW"]{Fabio Labella}, ◊external-link[#:href
"https://github.com/daenyth"]{Gavin Bisesi}, ◊external-link[#:href
"https://github.com/mpilquist"]{Michael Pilquist} and
◊external-link[#:href "https://github.com/arosien"]{Adam Rosien} for
giving this a reassuring read.}


M src/chapters/fs2/snippets.md => src/chapters/fs2/snippets.md +2 -2
@@ 265,8 265,8 @@ def take1: Pipe[Pure, String, String] = { in =>
```scala mdoc:silent
def take1: Pipe[Pure, String, String] = { in =>
  in.pull.uncons1.flatMap {
    case Some((h, _)) => Pull.output1(h)
    case None => Pull.done
    case Some((h, _)) => Pull.output1(h) // Ⓐ
    case None => Pull.done // Ⓑ
  }.stream
}
```

M src/main.css.pp => src/main.css.pp +7 -0
@@ 53,3 53,10 @@ body {
  line-height: 1.6;
  text-rendering: optimizeLegibility;
}

@counter-style code-references {
  system: fixed;
  symbols: Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ;
  suffix: " ";
}


M src/pollen.rkt => src/pollen.rkt +9 -0
@@ 13,6 13,7 @@
         headline2
         headline3
         headline-link
         code-references
         items
         item
         snippet


@@ 21,6 22,7 @@
         note
         external-link
         image
         diagram
         abstract
         )



@@ 44,6 46,7 @@
  `(h2 ([id ,(page-internal-id text)]) ,text))

;;; Lists
(define code-references (default-tag-function 'ol #:class "code-references"))
(define items (default-tag-function 'ul))
(define item (default-tag-function 'li 'p))



@@ 86,5 89,11 @@
  `(img ([src ,(string-append "/assets/images/" name)]
         [alt ,(apply string-append text)])))

(define (diagram #:name name . text)
  `(img ([src ,(string-append "/assets/images/" name)]
         [alt ,(apply string-append text)]
         [class "diagram"])))


(define (abstract . text)
  `(p ([class "abstract"]) ,@text))

M src/theme.rkt => src/theme.rkt +4 -0
@@ 38,6 38,10 @@
;; #CDDBEC
(define snippet-heading-bg-colour "#4e8cce54")

(define diagram-border-colour faint-stitch-colour)
(define diagram-shadow-colour pale-needle-colour)



;; Inline code colour
;; #fbfbfb