This commit is contained in:
Oliver Kennedy 2019-02-10 23:30:01 -05:00
parent bc91b66c13
commit 353a4eb4b1
16 changed files with 5347 additions and 18 deletions

View file

@ -323,8 +323,58 @@ ACTONCH01|Charles|Acton|1967|1967|210|1942-01-11
<li>print(table)</li>
</ol>
</p>
<p class="fragment"><b>Problem:</b> A "table" can get very very big.</p>
</section>
<section>
<h3>Basic Mindset</h3>
<img src="graphics/2018-02-05-RA-Tree.svg" style="display: inline-block; vertical-align: middle;" />
<pre style="display: inline-block; vertical-align: middle; margin-left: 20px; width:550px;"><code class="python">
r = get_table("R")
s = get_table("S")
temp1 = apply_join(r, s, "R.B = S.B")
temp2 = apply_select(temp1, "S.C = 10")
result = apply_projection(temp2, "R.A")
</code></pre>
</section>
<section>
<h3>Select</h3>
<p class="fragment" style="display: inline-block; vertical-align: middle; margin-right: 100px">
$$\sigma_{A \neq 3} R$$
</p>
<table style="display: inline-block; vertical-align: middle;">
<tr><th>A</th><th>B</th></tr>
<tr><td>1</td><td>2</td></tr>
<tr class="fragment highlight-grey"><td>3</td><td>4</td></tr>
<tr><td>5</td><td>6</td></tr>
</table>
</section>
<section>
<h3>Select</h3>
<pre><code class="python">
def apply_select(input, condition)
result = []
for row in input:
if condition(row):
result += [row]
return result;
</code></pre>
<p class="fragment">(All-At-Once)</p>
</section>
<section>
<p><b>Problem:</b> A "table" can get very very big.</p>
</section>
<section>
<h2>Better Idea: Iterators</h2>
<dl>
@ -337,23 +387,23 @@ ACTONCH01|Charles|Acton|1967|1967|210|1942-01-11
</dl>
<p>All "functions" can be implemented as iterators that use constant space</p>
</section>
<section>
<h3>Example: Select</h3>
<pre><code class="java">
class FilterIterator implements RAIterator
{
RAIterator child;
Expression condition;
public FilterIterator(RAIterator child, Expression condition) {
this.child = child; this.condition = condition;
}
public boolean hasNext(){ /* ...? */ }
public Row next(){ /* ...? */ }
public void reset() { /* ...? */ }
}
</code></pre>
</section>
<section>
<h3>Select</h3>
<p style="display: inline-block; vertical-align: middle; margin-right: 100px">
$$\sigma_{A \neq 3} R$$
</p>
<table style="display: inline-block; vertical-align: middle; font-size: 80%">
<tr><th>A</th><th>B</th><td></td></tr>
<tr class="fragment"><td colspan="2"><code>getNext()</code></td><td style="text-align: left"><code>for row in input:</code></td></tr>
<tr class="fragment"><td>1</td><td>2</td><td class="fragment" style="color: green; text-align: left;"><code style="margin-left: 30px;">return row;</code></td></tr>
<tr class="fragment"><td colspan="2"><code>getNext()</code></td><td style="text-align: left"><code>for row in input:</code></td></tr>
<tr class="fragment"><td>3</td><td>4</td><td class="fragment" style="color: red; text-align: left;"><span style="margin-left: 30px;">X</span></td></tr>
<tr class="fragment" ><td>5</td><td>6</td><td class="fragment" style="color: green; text-align: left;"><code style="margin-left: 30px;">return row;</code></td></tr>
<tr class="fragment"><td colspan="2"><code>getNext()</code></td><td style="text-align: left"><code>for row in input:</code></td></tr>
<tr class="fragment"><td colspan="2"><code>None</code></td><td class="fragment" style="color: red; text-align: left;"><code>return None;</code></td></tr>
</table>
</section>
<section>
<h3>Example: Join (Naive)</h3>
<pre><code class="python">

View file

@ -0,0 +1,386 @@
---
template: templates/cse4562_2019_slides.erb
title: "Query Evaluation"
date: February 11, 2019
textbook: "Ch. 15.1-15.5, 16.7"
---
<section>
<section>
<h3>Query Evaluation Styles</h3>
<dl>
<dt class="fragment highlight-grey" data-fragment-index="2">All-At-Once (Collections)</dt>
<dd class="fragment highlight-grey" data-fragment-index="2">Bottom-up, one operator at a time.</dd>
<dt>Volcano-Style (Iterators)</dt>
<dd>Operators "request" one tuple at a time from children.</dd>
<dt class="fragment highlight-grey" data-fragment-index="1">Push-Style (Buffers)</dt>
<dd class="fragment highlight-grey" data-fragment-index="1">Operators continuously produce/consume tuples.</dd>
</dl>
</section>
<section>
<h3>Analyzing Volcano Operators</h3>
<ul>
<li>Memory Bounds</li>
<li>Disk IO Used</li>
<li class="fragment highlight-grey" data-fragment-index="1">CPU Used</li>
</ul>
<p class="fragment" data-fragment-index="1" style="margin-top: 30px;"><u>Data</u>bases are usually IO- or Memory-bound</p>
</section>
<section>
<h3>Memory Bounds</h3>
<ul>
<li class="fragment">Constant</li>
<li class="fragment">Scales with output</li>
<li class="fragment">Scales with part of the input</li>
<li class="fragment">Worse</li>
</ul>
<p style="font-size: 70%;" class="fragment"><b>Core Question: </b> Do we have enough memory to use this operator?</p>
</section>
<section>
<h3>Disk IO</h3>
<p style="text-align: left;">IO measured in:<br/>
<ul>
<li>Number of Tuples</li>
<li class="fragment highlight-grey">Number of Data Pages (absolute size)</li>
</ul>
</p>
<div class="fragment">
<h3>Accounting</h3>
<p class="fragment" style="margin-top: 50px;">Figure out the cost of each <b>individual</b> operator.</p>
<p class="fragment" style="margin-top: 50px;">Only count the number of IOs <b>added</b> by each operator.</p>
</div>
</section>
</section>
<section>
<section>
<h3>Table Scan ($R$)</h3>
<dl>
<dt>Memory Required?</dt>
<dd class="fragment">Constant!</dd>
<dt>IOs added?</dt>
<dd class="fragment">$|R|$ tuples read</dd>
</dl>
</section>
<section>
<h3>Select ($\sigma(R)$)</h3>
<svg data-src="graphics/2018-02-12-Flow-Select.svg" />
</section>
<section>
<h3>Select ($\sigma(R)$)</h3>
<dl>
<dt>Memory Required?</dt>
<dd class="fragment">Constant!</dd>
<dt>IOs added?</dt>
<dd class="fragment">None! (Can "inline" into cost of $R$)</dd>
</dl>
</section>
<section>
<h3>Project ($\pi(R)$)</h3>
<svg data-src="graphics/2018-02-12-Flow-Project.svg" />
</section>
<section>
<h3>Project ($\pi(R)$)</h3>
<dl>
<dt>Memory Required?</dt>
<dd class="fragment">Constant!</dd>
<dt>IOs added?</dt>
<dd class="fragment">None!</dd>
</dl>
</section>
<section>
<h3>Union ($R \cup S$)</h3>
<svg data-src="graphics/2018-02-12-Flow-Union.svg" />
</section>
<section>
<h3>Union ($R \cup S$)</h3>
<dl>
<dt>Memory Required?</dt>
<dd class="fragment">Constant!</dd>
<dt>IOs added?</dt>
<dd class="fragment">None!</dd>
</dl>
</section>
<section>
<h3>Cross ($R \times S$)</h3>
<svg data-src="graphics/2018-02-12-Flow-Cross.svg" />
</section>
<section>
<h3>Cross ($R \times S$)</h3>
<dl>
<dt>Memory Required?</dt>
<dd class="fragment">Constant!</dd>
<dt>IOs added?</dt>
<dd class="fragment">$|S| \cdot \texttt{cost}(R)$ tuples read</dd>
<dd class="fragment">(or $|R| \cdot \texttt{cost}(S)$)</dd>
</dl>
<p class="fragment">If $R$ is a query, this can be very expensive</p>
</section>
<section>
<h3>Cross ($R \times S$)</h3>
<p><b>Optimization 1: </b> Cache $R$ in memory</p>
<dl>
<dt>Memory Required?</dt>
<dd class="fragment">$O(|R|)$</dd>
<dt>IOs added?</dt>
<dd class="fragment">None!</dd>
</dl>
</section>
<section>
<h3>Cross ($R \times S$)</h3>
<p><b>Optimization 2: </b> Cache $R$ on disk</p>
<dl>
<dt>Memory Required?</dt>
<dd class="fragment">Constant</dd>
<dt>IOs added?</dt>
<dd class="fragment">$|R|$ tuples written.</dd>
<dd class="fragment">$(|S| - 1) \cdot |R|$ tuples read.</dd>
</dl>
</section>
<section>
<p>Is there a middle ground?</p>
</section>
</section>
<section>
<section>
<h3>Nested-Loop Join</h3>
<svg data-src="graphics/2018-02-12-Join-NLJ.svg" />
</section>
<section>
<p><b>Problem</b>: We need to evaluate <code>rhs</code> iterator<br/> once per record in <code>lhs</code></p>
</section>
<section>
<h3>Preloading Data</h3>
<p><b>Better Solution</b>: Load both <code>lhs</code> and <code>rhs</code> records in blocks.</p>
<pre><code class="python">
def apply_cross(lhs, rhs):
result = []
while r_block = lhs.take(100):
while s_block = rhs.take(100):
for r in r_block:
for s in s_block:
result += [r + s]
rhs.reset()
return result
</code></pre>
</section>
<section>
<h3>Block-Nested Loop Join</h3>
<svg data-src="graphics/2018-02-12-Join-BNLJ.svg" class="stretch" />
</section>
<section>
<h3>Block-Nested Loop ($R \times S$)</h3>
<p>(with $\mathcal B$ as the block size for $S$)</p>
<dl>
<dt>Memory Required?</dt>
<dd class="fragment">$O(\mathcal B)$</dd>
<dt>IOs added?</dt>
<dd class="fragment">$|R|$ tuples written.</dd>
<dd class="fragment">$(\frac{|S|}{\mathcal B} - 1) \cdot |R|$ tuples read.</dd>
</dl>
<p style="font-size: 70%;" class="fragment">In-memory caching is a special case of block-nested loop with $\mathcal B = |S|$</p>
<p style="font-size: 70%;" class="fragment">Does the block size for $R$ matter?</p>
</section>
<section>
<p>How big should the blocks be?</p>
<aside class="notes">As big as possible! Leads to the question of distributing available memory between multiple joins: A simple linear optimization problem.</aside>
</section>
</section>
<section>
<section>
<p>Cross product is expensive!<br/>Can we do better?</p>
<p class="fragment">$\sigma_c(R\times S) \equiv R\bowtie_c S$</p>
</section>
<section>
<h3>Cross Product</h3>
<svg data-src="graphics/2018-02-12-Join-Grid.svg" />
</section>
<section>
<p><b>Problem</b>: Naively, any tuple matches any other</p>
</section>
<section>
<h3>Join Conditions</h3>
<svg data-src="graphics/2018-02-12-Join-OrderGrid.svg" />
<p><b>Solution</b>: First organize the data</p>
</section>
</section>
<section>
<section>
<h3>Strategies for Implementing $R \bowtie_{R.A = S.A} S$</h3>
<dl>
<dt>In-Memory Index Join (1-pass Hash; Hash Join)</dt>
<dd>Build an in-memory index on one table, scan the other.</dd>
<dt>Partition Join (2-pass Hash; External Hash Join)</dt>
<dd>Partition both sides so that tuples don't join across partitions.</dd>
<dt>Sort/Merge Join</dt>
<dd>Sort all of the data upfront, then scan over both sides.</dd>
</dl>
</section>
<section>
<h3>Hash Functions</h3>
<ul>
<li>A hash function is a function that maps a large data value to a small fixed-size value<ul>
<li>Typically is deterministic &amp; pseudorandom</li>
</ul></li>
<li>Used in Checksums, Hash Tables, Partitioning, Bloom Filters, Caching, Cryptography, Password Storage, …</li>
<li>Examples: MD5, SHA1, SHA2<ul>
<li>MD5() part of OpenSSL (on most OSX / Linux / Unix)</li>
</ul></li>
<li>Can map h(k) to range [0,N) with h(k) % N (modulus)</li>
</ul>
</section>
<section>
<h3>Hash Functions</h3>
<p style="margin-top: 50px">
$$h(X) \mod N$$
<ul>
<li>Pseudorandom output between $[0, N)$</li>
<li>Always the same output for a given $X$</li>
</ul>
</p>
</section>
<section>
<h3>1-Pass Hash Join</h3>
<svg data-src="graphics/2018-02-12-Join-1PassHash.svg" />
</section>
<section>
<h3>1-Pass Hash Join</h3>
<dl>
<dt>Limited Queries</dt>
<dd>Only supports join conditions of the form $R.A = S.B$</dd>
<dt>Moderate-High Memory</dt>
<dd>Keeps 1 full relation in memory</dd>
<dt>Low Added IO Cost</dt>
<dd>Only requires 1 scan over each input.</dd>
</dl>
</section>
<section>
<p><b>Alternative: </b> Build an in-memory tree (e.g., B+Tree) instead of a hash table!</p>
<dl>
<dt>Limited Queries</dt>
<dd>Also supports $R.A \geq S.B$, $R.A > S.B$</dd>
<dt>Moderate-High Memory</dt>
<dd>Keeps 1 full relation in memory</dd>
<dt>Low Added IO Cost</dt>
<dd>Only requires 1 scan over each input.</dd>
</dl>
</section>
<section>
<h3>2-Pass Hash Join</h3>
<svg data-src="graphics/2018-02-12-Join-2PassHash.svg" />
</section>
<section>
<h3>2-Pass Hash Join</h3>
<dl>
<dt>Limited Queries</dt>
<dd>Only supports join conditions of the form $R.A = S.B$</dd>
<dt>Low Memory</dt>
<dd>Never need more than 1 pair of partitions in memory</dd>
<dt>High IO Cost</dt>
<dd>$|R| + |S|$ tuples written out</dd>
<dd>$|R| + |S|$ tuples read in</dd>
</dl>
</section>
<section>
<p>Why is it important that the hash function is pseudorandom?</p>
</section>
<section>
<p>What if the data is already organized (e.g., sorted) in a useful way?</p>
</section>
<section>
<!-- 2018-OK: The motivation for this algorithm fell completely flat.
It might help if we approach SortMerge with IOs/Mem/CPU in mind.
The slide also deserves some discussion of *which* conditions it
can be used to support efficiently.
It might also help to discuss use cases where it's appropriate.
-->
<h3>Sort/Merge Join</h3>
<svg data-src="graphics/2018-02-12-Join-SortMerge.svg" />
</section>
<section>
<h3>Sort/Merge Join</h3>
<dl>
<dt>Limited Queries</dt>
<dd>Only supports join conditions of the form $R.A = S.B$</dd>
<dt>Low Memory</dt>
<dd>Only needs to keep ~2 rows in memory at a time (not counting sort).</dd>
<dt>Low Added IO Cost</dt>
<dd>No added IO! (not counting sort).</dd>
</dl>
</section>
</section>

View file

@ -0,0 +1,362 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CSE 4/562 - Spring 2018</title>
<meta name="description" content="CSE 4/562 - Spring 2018">
<meta name="author" content="Oliver Kennedy">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="../reveal.js-3.6.0/css/reveal.css">
<link rel="stylesheet" href="ubodin.css" id="theme">
<!-- Code syntax highlighting -->
<link rel="stylesheet" href="../reveal.js-3.6.0/lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../reveal.js-3.6.0/css/print/pdf.css' : '../reveal.js-3.6.0/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<script src="../reveal.js-3.6.0/lib/js/head.min.js"></script>
<!--[if lt IE 9]>
<script src="../reveal.js-3.6.0/lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="header">
<!-- Any Talk-Specific Header Content Goes Here -->
CSE 4/562 - Database Systems
</div>
<div class="slides">
<section>
<h1>Extended RA</h1>
<h3>CSE 4/562 Database Systems</h3>
<h5>February 12, 2018</h5>
</section>
<section>
<section>
<h3>Extended Relational Algebra</h3>
<dl>
<dt class="fragment highlight-grey" data-fragment-index="1">Set/Bag Operations</dt>
<dd class="fragment highlight-grey" data-fragment-index="1">Select ($\sigma$), Project ($\pi$), Join ($\bowtie$), Union ($\cup$)</dd>
<dt>Bag Operations</dt>
<dd>Distinct ($\delta$), Outer Joins (⟗)</dd>
<dt>List Operations</dt>
<dd>Sort ($\tau$), Limit</dd>
<dt>Arithmetic Operations</dt>
<dd>Extended Projection ($\pi$), Aggregation ($\sigma$), Grouping ($\gamma$)</dd>
</dl>
<dl>
</dl>
</section>
<section>
<h3>Extended Projection</h3>
<p style="margin: 50px;">Like normal projection, but can create new columns</p>
$\pi_{M \leftarrow A+B*C,\; N \leftarrow 2}(R)$
<p>produces 1 row for every row of R, with 2 columns: M and N</p>
</section>
</section>
<section>
<section>
<h3>Outer Join</h3>
<p class="fragment">... but first</p>
</section>
<section>
<h3><code>NULL</code> Values</h3>
<ul>
<li>Field values can be unknown or inapplicable.<ul>
<li>A tree with an unknown species.</li>
<li>The street of a tree in a park.</li>
<li>The '.' on many of your ID cards</li>
</ul></li>
<li>SQL provides a special <code>NULL</code> value for these cases</li>
</ul>
<p class="fragment">NULL makes things more complicated.</p>
</section>
<section>
$$\textbf{Trees.SPC_COMMON} = \texttt{'Brooklyn'}$$
<p style="margin: 50px;" class="fragment">
What happens if <b>Trees.SPC_COMMON</b> is NULL?
</p>
<div class="fragment">
$$\texttt{NULL} = \textbf{'Brooklyn'} \equiv \textbf{Unknown}$$
</div>
</section>
<section>
<table>
<tr><td>Unknown</td><td>AND</td><td>Unknown</td><td>$\equiv$</td><td>Unknown</td></tr>
<tr><td>Unknown</td><td>AND</td><td>True</td><td>$\equiv$</td><td>Unknown</td></tr>
<tr><td>Unknown</td><td>AND</td><td>False</td><td>$\equiv$</td><td>False</td></tr>
<tr><td colspan="5"></td></tr>
<tr><td>Unknown</td><td>OR</td><td>Unknown</td><td>$\equiv$</td><td>Unknown</td></tr>
<tr><td>Unknown</td><td>OR</td><td>True</td><td>$\equiv$</td><td>True</td></tr>
<tr><td>Unknown</td><td>OR</td><td>False</td><td>$\equiv$</td><td>Unknown</td></tr>
<tr><td colspan="5"></td></tr>
<tr><td></td><td>NOT</td><td>Unknown</td><td>$\equiv$</td><td>Unknown</td></tr>
</table>
<p class="fragment"><code>WHERE</code> clauses eliminate all non-True rows</p>
</section>
<section>
$$Streets \bowtie_{StreetName} Trees$$
<p style="margin-top: 100px;" class="fragment">What happens if some streets have no trees?</p>
</section>
<section>
<h3>Outer Join (⟗, ⟕, ⟖)</h3>
<ol>
<li>Include all results from the normal (inner) join.</li>
<li>Also include rows that don't get joined.</li>
</ol>
</section>
<section>
<h3>Outer Join</h3>
<dl>
<dt>Inner Join</dt>
<dd>Normal, plain, simple join</dd>
<dt>Left Outer Join (⟕)</dt>
<dd>Include un-joined rows from the left hand side</dd>
<dt>Right Outer Join (⟖)</dt>
<dd>Include un-joined rows from the right hand side</dd>
<dt>[Full] Outer Join (⟗)</dt>
<dd>Include un-joined rows from either side</dd>
</dl>
</section>
</section>
<section>
<section>
<h3>Sort / Limit</h3>
<p>
$$\tau_{A}(R)$$
The tuples of $R$ in ascending order according to 'A'
</p>
<p>
$$\textbf{L}_{n}(R)$$
The first $n$ tuples of R
<div style="font-size: 60%">(Typically combined with sort. If not, pick arbitrarily.)</div>
</p>
</section>
<section>
<h3>Sort</h3>
<p style="margin-top: 100px;">
Pick your favorite sort algorithm.
</p>
<p class="fragment">What happens if you don't have enough memory?</p>
</section>
<section>
<p><b>Key Idea:</b> Merging 2 sorted lists requires $O(1)$ memory.</p>
</section>
<section>
<h3>2-Way Sort</h3>
<dl>
<dt>Pass 1</dt>
<dd>Create lots of (small) sorted lists.</dd>
<dt>Pass 2+</dt>
<dd>Merge sorted lists of size $N$ into sorted lists of size $2N$</dd>
</dl>
</section>
<section>
<h3>Pass 1: Create Sorted Runs</h3>
<svg data-src="graphics/2018-02-14-Sort-Run.svg" style="margin: 100px;" />
</section>
<section>
<h3>Pass 2: Merge Sorted Runs</h3>
<svg data-src="graphics/2018-02-14-Merge-Run.svg" style="margin: 100px;" />
</section>
<section>
<p>Repeat Pass 2 As Needed.</p>
</section>
<section>
<p>What's the bottleneck?</p>
<p class="fragment">IO Cost: $O(N \cdot \lceil\log_2(N)\rceil)$<br/>(with $N$ blocks)</p>
</section>
<section>
<svg data-src="graphics/2018-02-14-Merge-Tree.svg" />
</section>
<section>
<h3>Using More Memory</h3>
<dl>
<dt>Pass 1</dt>
<dd>Sort Bigger Buffers</dd>
<dd class="fragment">Re-Use Memory When Done</dd>
<dt>Pass 2</dt>
<dd>Merge $K$ Runs Simultaneously: $O(N \cdot \lceil\log_K(N)\rceil)$ IO</dd>
</dl>
</section>
<section>
<h3>Replacement Sort</h3>
<img src="graphics/2018-02-14-ReplSort-1.svg" />
</section>
<section>
<h3>Replacement Sort</h3>
<img src="graphics/2018-02-14-ReplSort-2.svg" />
</section>
<section>
<h3>Replacement Sort</h3>
<img src="graphics/2018-02-14-ReplSort-3.svg" />
</section>
<section>
<h3>Replacement Sort</h3>
<img src="graphics/2018-02-14-ReplSort-4.svg" />
</section>
<section>
<h3>Replacement Sort</h3>
<img src="graphics/2018-02-14-ReplSort-5.svg" />
</section>
<section>
<h3>Replacement Sort</h3>
<img src="graphics/2018-02-14-ReplSort-6.svg" />
</section>
<section>
<h3>Replacement Sort</h3>
<img src="graphics/2018-02-14-ReplSort-7.svg" />
</section>
<section>
<h3>Replacement Sort</h3>
<img src="graphics/2018-02-14-ReplSort-8.svg" />
</section>
<section>
<p>On average, we'll get runs of size $2 \cdot |WS|$</p>
</section>
</section>
</div></div>
<script src="../reveal.js-3.6.0/js/reveal.js"></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/../reveal.js#configuration
Reveal.initialize({
controls: false,
progress: true,
history: true,
center: true,
slideNumber: true,
transition: 'fade', // none/fade/slide/convex/concave/zoom
chart: {
defaults: {
global: {
title: { fontColor: "#333", fontSize: 24 },
legend: {
labels: { fontColor: "#333", fontSize: 20 },
},
responsiveness: true
},
scale: {
scaleLabel: { fontColor: "#333", fontSize: 20 },
gridLines: { color: "#333", zeroLineColor: "#333" },
ticks: { fontColor: "#333", fontSize: 16 },
}
},
line: { borderColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ], "borderDash": [ [5,10], [0,0] ]},
bar: { backgroundColor: [
"rgba(220,220,220,0.8)",
"rgba(151,187,205,0.8)",
"rgba(205,151,187,0.8)",
"rgba(187,205,151,0.8)"
]
},
pie: { backgroundColor: [ ["rgba(0,0,0,.8)" , "rgba(220,20,20,.8)", "rgba(20,220,20,.8)", "rgba(220,220,20,.8)", "rgba(20,20,220,.8)"] ]},
radar: { borderColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ]},
},
// Optional ../reveal.js plugins
dependencies: [
{ src: '../reveal.js-3.6.0/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: '../reveal.js-3.6.0/plugin/math/math.js',
condition: function() { return true; },
mathjax: '../reveal.js-3.6.0/js/MathJax.js'
},
{ src: '../reveal.js-3.6.0/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: '../reveal.js-3.6.0/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: '../reveal.js-3.6.0/plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: '../reveal.js-3.6.0/plugin/zoom-js/zoom.js', async: true },
{ src: '../reveal.js-3.6.0/plugin/notes/notes.js', async: true },
// Chart.min.js
{ src: '../reveal.js-3.6.0/plugin/chart/Chart.min.js'},
// the plugin
{ src: '../reveal.js-3.6.0/plugin/chart/csv2chart.js'},
{ src: '../reveal.js-3.6.0/plugin/svginline/es6-promise.auto.js', async: false },
{ src: '../reveal.js-3.6.0/plugin/svginline/data-src-svg.js', async: false }
]
});
</script>
</body>
</html>

View file

@ -0,0 +1,450 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CSE 4/562 - Spring 2018</title>
<meta name="description" content="CSE 4/562 - Spring 2018">
<meta name="author" content="Oliver Kennedy">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="../reveal.js-3.6.0/css/reveal.css">
<link rel="stylesheet" href="ubodin.css" id="theme">
<!-- Code syntax highlighting -->
<link rel="stylesheet" href="../reveal.js-3.6.0/lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? '../reveal.js-3.6.0/css/print/pdf.css' : '../reveal.js-3.6.0/css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="../reveal.js-3.6.0/lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="header">
<!-- Any Talk-Specific Header Content Goes Here -->
CSE 4/562 - Database Systems
</div>
<div class="slides">
<section>
<h1>SQL &amp;<br/> Physical Layout</h1>
<h3>CSE 4/562 Database Systems</h3>
<h5>January 31, 2018</h5>
</section>
<section>
<section>
<h2>SQL</h2>
<ul>
<li>Developed by IBM (for System R) in the 1970s.</li>
<li>Standard used by many vendors.<ul style="font-size: 70%" class="tight">
<li>SQL-86 (original standard)</li>
<li>SQL-89 (minor revisions; integrity constraints)</li>
<li>SQL-92 (major revision; basis for modern SQL)</li>
<li>SQL-99 (XML, window queries, generated default values)</li>
<li>SQL 2003 (major revisions to XML support)</li>
<li>SQL 2008 (minor extensions)</li>
<li>SQL 2011 (minor extensions; temporal databases)</li>
</li></ul>
</ul>
</section>
<section>
<h3>A Basic SQL Query</h3>
<svg data-src="graphics/2018-01-31-parts_of_sql.svg" height="400px"/>
</section>
<section>
<pre><code class="sql">
SELECT [DISTINCT] targetlist
FROM relationlist
WHERE condition
</code></pre>
<ol>
<li class="fragment">Compute the $2^n$ combinations of tuples in all relations appearing in <span style="color: red;">relationlist</span></li>
<li class="fragment">Discard tuples that fail the <span style="color: red;">condition</span></li>
<li class="fragment">Delete attributes not in <span style="color: red;">targetlist</span></li>
<li class="fragment">If <span style="font-family: Courier, fixedwidth;">DISTINCT</span> is specified, eliminate duplicate rows</li>
</ol>
<p style="font-size: 70%;" class="fragment">
This is the least efficient strategy to compute a query!
A good optimizer will find <b>more efficient strategies</b> to compute <b>the same answer.</b>
</p>
</section>
<section>
<h3>Example Data</h3>
<img src="graphics/2018-01-31-Trees.png" height="500px">
</section>
<section>
<pre><code class="SQL">SELECT * FROM Trees;</code></pre>
<p class="fragment" style="font-size: 70%">Wildcards (<code>*</code>, <code>tablename.*</code>) are special targets that select all attributes.</p>
<div style="width: 800px; overflow-x: scroll; font-size: small; margin-left: auto; margin-right: auto;" class="fragment">
<table>
<tr><th>CREATED_AT</th><th>TREE_ID</th><th>BLOCK_ID</th><th>THE_GEOM</th><th>TREE_DBH</th><th>STUMP_DIAM</th><th>CURB_LOC</th><th>STATUS</th><th>HEALTH</th><th>SPC_LATIN</th><th>SPC_COMMON</th><th>STEWARD</th><th>GUARDS</th><th>SIDEWALK</th><th>USER_TYPE</th><th>PROBLEMS</th><th>ROOT_STONE</th><th>ROOT_GRATE</th><th>ROOT_OTHER</th><th>TRNK_WIRE</th><th>TRNK_LIGHT</th><th>TRNK_OTHER</th><th>BRNCH_LIGH</th><th>BRNCH_SHOE</th><th>BRNCH_OTHE</th><th>ADDRESS</th><th>ZIPCODE</th><th>ZIP_CITY</th><th>CB_NUM</th><th>BOROCODE</th><th>BORONAME</th><th>CNCLDIST</th><th>ST_ASSEM</th><th>ST_SENATE</th><th>NTA</th><th>NTA_NAME</th><th>BORO_CT</th><th>STATE</th><th>LATITUDE</th><th>LONGITUDE</th><th>X_SP</th><th>Y_SP</th></tr>
<tr><td>'08/27/2015'</td><td>180683</td><td>348711</td><td>'POINT (-73.84421521958048 40.723091773924274)'</td><td>3</td><td>0</td><td>'OnCurb'</td><td>'Alive'</td><td>'Fair'</td><td>'Acer rubrum'</td><td>'red maple'</td><td>'None'</td><td>'None'</td><td>'NoDamage'</td><td>'TreesCount Staff'</td><td>'None'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'108-005 70 AVENUE'</td><td>'11375'</td><td>'Forest Hills'</td><td>406</td><td>4</td><td>'Queens'</td><td>29</td><td>28</td><td>16</td><td>'QN17'</td><td>'Forest Hills'</td><td>4073900</td><td>'New York'</td><td>40.72309177</td><td>-73.84421522</td><td>1027431.14821</td><td>202756.768749</td></tr>
<tr><td>'09/03/2015'</td><td>200540</td><td>315986</td><td>'POINT (-73.81867945834878 40.79411066708779)'</td><td>21</td><td>0</td><td>'OnCurb'</td><td>'Alive'</td><td>'Fair'</td><td>'Quercus palustris'</td><td>'pin oak'</td><td>'None'</td><td>'None'</td><td>'Damage'</td><td>'TreesCount Staff'</td><td>'Stones'</td><td>'Yes'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'147-074 7 AVENUE'</td><td>'11357'</td><td>'Whitestone'</td><td>407</td><td>4</td><td>'Queens'</td><td>19</td><td>27</td><td>11</td><td>'QN49'</td><td>'Whitestone'</td><td>4097300</td><td>'New York'</td><td>40.79411067</td><td>-73.81867946</td><td>1034455.70109</td><td>228644.837379</td></tr>
<tr><td>'09/05/2015'</td><td>204026</td><td>218365</td><td>'POINT (-73.93660770459083 40.717580740099116)'</td><td>3</td><td>0</td><td>'OnCurb'</td><td>'Alive'</td><td>'Good'</td><td>'Gleditsia triacanthos var. inermis'</td><td>'honeylocust'</td><td>'1or2'</td><td>'None'</td><td>'Damage'</td><td>'Volunteer'</td><td>'None'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'390 MORGAN AVENUE'</td><td>'11211'</td><td>'Brooklyn'</td><td>301</td><td>3</td><td>'Brooklyn'</td><td>34</td><td>50</td><td>18</td><td>'BK90'</td><td>'East Williamsburg'</td><td>3044900</td><td>'New York'</td><td>40.71758074</td><td>-73.9366077</td><td>1001822.83131</td><td>200716.891267</td></tr>
<tr><td>'09/05/2015'</td><td>204337</td><td>217969</td><td>'POINT (-73.93445615919741 40.713537494833226)'</td><td>10</td><td>0</td><td>'OnCurb'</td><td>'Alive'</td><td>'Good'</td><td>'Gleditsia triacanthos var. inermis'</td><td>'honeylocust'</td><td>'None'</td><td>'None'</td><td>'Damage'</td><td>'Volunteer'</td><td>'Stones'</td><td>'Yes'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'1027 GRAND STREET'</td><td>'11211'</td><td>'Brooklyn'</td><td>301</td><td>3</td><td>'Brooklyn'</td><td>34</td><td>53</td><td>18</td><td>'BK90'</td><td>'East Williamsburg'</td><td>3044900</td><td>'New York'</td><td>40.71353749</td><td>-73.93445616</td><td>1002420.35833</td><td>199244.253136</td></tr>
<tr><td>'08/30/2015'</td><td>189565</td><td>223043</td><td>'POINT (-73.97597938483258 40.66677775537875)'</td><td>21</td><td>0</td><td>'OnCurb'</td><td>'Alive'</td><td>'Good'</td><td>'Tilia americana'</td><td>'American linden'</td><td>'None'</td><td>'None'</td><td>'Damage'</td><td>'Volunteer'</td><td>'Stones'</td><td>'Yes'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'No'</td><td>'603 6 STREET'</td><td>'11215'</td><td>'Brooklyn'</td><td>306</td><td>3</td><td>'Brooklyn'</td><td>39</td><td>44</td><td>21</td><td>'BK37'</td><td>'Park Slope-Gowanus'</td><td>3016500</td><td>'New York'</td><td>40.66677776</td><td>-73.97597938</td><td>990913.775046</td><td>182202.425999</td></tr>
<tr class="fragment"><td colspan="42" style="text-align: left; font-weight: bold;">... and 683783 more</td></tr>
</table>
</div>
</section>
<section>
<pre><code class="sql">
SELECT tree_id, spc_common, boroname
FROM Trees
WHERE boroname = 'Brooklyn'
</code></pre>
<p>In English, what does this query compute?</p>
<p style="font-size: smaller;" class="fragment">What is the ID, Commmon Name and Borough of Trees in Brooklyn?</p>
<table style="font-size: small;" class="fragment">
<tr><th>TREE_ID</th><th>SPC_COMMON</th><th>BORONAME</th></tr>
<tr><td>204026</td><td>'honeylocust'</td><td>'Brooklyn'</td></tr>
<tr><td>204337</td><td>'honeylocust'</td><td>'Brooklyn'</td></tr>
<tr><td>189565</td><td>'American linden'</td><td>'Brooklyn'</td></tr>
<tr><td>192755</td><td>'London planetree'</td><td>'Brooklyn'</td></tr>
<tr><td>189465</td><td>'London planetree'</td><td>'Brooklyn'</td></tr>
<tr><td style="font-weight: bold;" colspan="3">... and 177287 more</td></tr>
</table>
</section>
<section>
<pre><code class="sql">
SELECT latitude, longitude
FROM Trees, SpeciesInfo
WHERE Trees.spc_common = SpeciesInfo.name
AND SpeciesInfo.has_unpleasant_smell = 'Yes';
</code></pre>
<p>In English, what does this query compute?</p>
<p style="font-size: smaller;" class="fragment">What are the coordinates of Trees with bad smells?</p>
<table style="font-size: small;" class="fragment">
<tr><th>LATITUDE</th><th>LONGITUDE</th></tr>
<tr><td>40.59378755</td><td>-73.9915968</td></tr>
<tr><td>40.69149917</td><td>-73.97258754</td></tr>
<tr><td>40.74829709</td><td>-73.98065645</td></tr>
<tr><td>40.68767857</td><td>-73.96764605</td></tr>
<tr><td>40.739991</td><td>-73.86526993</td></tr>
<tr><td style="font-weight: bold;" colspan="5">... and more</td>
</table>
</section>
<section>
<pre><code class="sql">
SELECT Trees.latitude, Trees.longitude
FROM Trees, SpeciesInfo
WHERE Trees.spc_common = SpeciesInfo.name
AND SpeciesInfo.has_unpleasant_smell = 'Yes';
</code></pre>
<p style="font-size: smaller;">... is the same as ...</p>
<pre><code class="sql">
SELECT T.latitude, T.longitude
FROM Trees T, SpeciesInfo S
WHERE T.spc_common = S.name
AND S.has_unpleasant_smell = 'Yes';
</code></pre>
<p style="font-size: smaller;">... is (usually) the same as ...</p>
<pre><code class="sql">
SELECT latitude, longitude
FROM Trees, SpeciesInfo
WHERE spc_common = name
AND has_unpleasant_smell = 'Yes';
</code></pre>
</section>
<section>
<h2>Expressions</h2>
<pre><code class="sql">
SELECT tree_id,
stump_diam / 2 AS stump_radius,
stump_area = 3.14 * stump_diam * stump_diam / 4
FROM Trees;
</code></pre>
<p style="font-size: 70%;">
Arithmetic expressions can appear in targets or conditions.
Use = or AS to assign names to these attributes.
(The behavior of unnamed attributes is unspecified)
</p>
</section>
<section>
<h2>Expressions</h2>
<pre><code class="sql">
SELECT tree_id, spc_common FROM Trees WHERE spc_common LIKE '%maple'
</code></pre>
<table style="font-size: small;">
<tr><th>TREE_ID</th><th>SPC_COMMON</th></tr>
<tr><td>180683</td><td>'red maple'</td></tr>
<tr><td>204325</td><td>'sycamore maple'</td></tr>
<tr><td>205044</td><td>'Amur maple'</td></tr>
<tr><td>184031</td><td>'red maple'</td></tr>
<tr><td>208974</td><td>'red maple'</td></tr>
</table>
<p style="font-size: 70%;">SQL uses single quotes for string literals</p>
<p style="font-size: 70%;"><code>LIKE</code> is used for String Matches</p>
<p style="font-size: 70%;"><code>%</code> matches 0 or more characters</p>
</section>
<section>
<h2>Union</h2>
<pre><code class="sql">
SELECT tree_id FROM Trees WHERE spc_common = 'red maple'
UNION [ALL]
SELECT tree_id FROM Trees WHERE spc_common = 'sycamore maple'
</code></pre>
<p style="font-size: 70%">Computes the <b>set-union</b> of any two <b>union-compatible</b> sets of tuples</p>
<p style="font-size: 70%">Adding <code>ALL</code> preserves duplicates across the inputs (<b>bag-union</b>).</p>
</section>
<section>
<h2>Aggregate Queries</h2>
<pre><code class="sql">
SELECT [DISTINCT] targetlist
FROM relationlist
WHERE condition
GROUP BY groupinglist
HAVING groupcondition
</code></pre>
<div style="font-size: 70%">
<p>The <span color="red">targetlist</span> now contains <b>(a)</b> Grouped attributes, and <b>(b)</b>Aggregate expressions.</p>
<p>Targets of type (a) must be a subset of the grouping-list</p>
<p style="font-size: 70%">(intuitively each answer tuple corresponds to a single group, and each group must have a single value for each attribute)</p>
<p style="margin-top: 20px"><span color="red">groupcondition</span> is applied <i>after</i> aggregation and may contain aggregate expressions.</p>
</div>
</section>
<section>
<h2>Aggregate Queries</h2>
<pre><code class="sql">
SELECT spc_common, count(*) FROM Trees GROUP BY spc_common
</code></pre>
<table style="font-size: small;">
<tr><th>SPC_COMMON </th><th>COUNT</th></tr>
<tr><td>''Schubert' chokecherry' </td><td>4888</td></tr>
<tr><td>'American beech' </td><td>273</td></tr>
<tr><td>'American elm' </td><td>7975</td></tr>
<tr><td>'American hophornbeam' </td><td>1081</td></tr>
<tr><td>'American hornbeam' </td><td>1517</td></tr>
<tr><td colspan="2" style="font-weight: bold;">... and more</td>
</table>
</section>
</section>
<section>
<section>
<h2>Physical Layout</h2>
</section>
<section>
<pre><code class="python">
from re import split;
with open('Trees.csv', 'r') as f:
for line in f:
fields = split(",", line);
if(fields[30] == 'Brooklyn'):
print(fields[0]);
</code></pre>
<aside class="notes">
Problems:
(1) Expensive: Full scan over the data + split expensive
(2) 'split' sensitive to formatting bugs
(3) Hardcoded Schema (e.g, 30 = BORONAME, 0 = TREE_ID)
(4) No type information (e.g., fields[5] / 2 for STUMP_DIAM)
</aside>
</section>
<section>
<h2>Record Layouts</h2>
</section>
<section>
<h3>Record Layout 1: Fixed</h3>
<svg data-src="graphics/2018-01-31-record-fixed.svg" />
</section>
<section>
<h3>Record Layout 2: Delimiters</h3>
<svg data-src="graphics/2018-01-31-record-separator.svg" />
</section>
<section>
<h3>Record Layout 2: Headers</h3>
<svg data-src="graphics/2018-01-31-record-header.svg" />
</section>
<section>
<h3>Record Formats</h3>
<dl>
<dt>Fixed</dt>
<dd>Constant-size fields. Field $i$ at byte $\sum_{j < i} |Field_j|$</dd>
<dt>Delimited</dt>
<dd>Special character or string (e.g., <code>,</code>) between fields</dd>
<dt>Header</dt>
<dd>Fixed-size header points to start of each field</dd>
<dt>&nbsp;</dt>
<dd>&nbsp;</dd>
</dl>
</section>
<section>
<h3>File Formats</h3>
<dl>
<dt>Fixed</dt>
<dd>Constant-size records. Record $i$ at byte $|Record| \times i$</dd>
<dt>Delimited</dt>
<dd>Special character or string (e.g., <code>\r\n</code>) at record end</dd>
<dt>Header</dt>
<dd>Index in file points to start of each record</dd>
<dt class="fragment" data-fragment-index="1">Paged</dt>
<dd class="fragment" data-fragment-index="1">Align records to paging boundaries</dd>
</dl>
</section>
<section>
<img src="graphics/2018-01-31-mem_hierarchy.png">
</section>
<section>
<svg data-src="graphics/2018-01-31-mem_bulk_loading.svg" class="stretch"/>
<imagecredits>openclipart.org</imagecredits>
</section>
<section>
<dl>
<dt>File</dt>
<dd>A collection of pages (or records)</dd>
<dt>Page</dt>
<dd>A fixed-size collection of records</dd>
<dd style="font-size: smaller;">Page size is usually dictated by hardware.<br/>Mem Page $\approx$ 4KB&nbsp;&nbsp;&nbsp;Cache Line $\approx$ 64B</dd>
<dt>Record</dt>
<dd>One or more fields (for now)</dd>
<dt>Field</dt>
<dd>A primitive value (for now)</dd>
</dl>
</section>
<section>
<svg data-src="graphics/2018-01-29-db_as_mediator.svg" class="stretch"/>
</section>
<section>
<pre><code class="python">
with db_open('Trees') as data:
for record in data:
if(record['BORONAME'] == 'Brooklyn'):
print(record['TREE_ID']);
</code></pre>
</section>
</section>
</div></div>
<script src="../reveal.js-3.6.0/lib/js/head.min.js"></script>
<script src="../reveal.js-3.6.0/js/reveal.js"></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/../reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
slideNumber: true,
transition: 'fade', // none/fade/slide/convex/concave/zoom
chart: {
defaults: {
global: {
title: { fontColor: "#333", fontSize: 24 },
legend: {
labels: { fontColor: "#333", fontSize: 20 },
},
responsiveness: true
},
scale: {
scaleLabel: { fontColor: "#333", fontSize: 20 },
gridLines: { color: "#333", zeroLineColor: "#333" },
ticks: { fontColor: "#333", fontSize: 16 },
}
},
line: { borderColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ], "borderDash": [ [5,10], [0,0] ]},
bar: { backgroundColor: [
"rgba(220,220,220,0.8)",
"rgba(151,187,205,0.8)",
"rgba(205,151,187,0.8)",
"rgba(187,205,151,0.8)"
]
},
pie: { backgroundColor: [ ["rgba(0,0,0,.8)" , "rgba(220,20,20,.8)", "rgba(20,220,20,.8)", "rgba(220,220,20,.8)", "rgba(20,20,220,.8)"] ]},
radar: { borderColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ]},
},
// Optional ../reveal.js plugins
dependencies: [
{ src: '../reveal.js-3.6.0/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: '../reveal.js-3.6.0/plugin/math/math.js',
condition: function() { return true; },
mathjax: '../reveal.js-3.6.0/js/MathJax.js'
},
{ src: '../reveal.js-3.6.0/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: '../reveal.js-3.6.0/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: '../reveal.js-3.6.0/plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: '../reveal.js-3.6.0/plugin/zoom-js/zoom.js', async: true },
{ src: '../reveal.js-3.6.0/plugin/notes/notes.js', async: true },
// Chart.min.js
{ src: '../reveal.js-3.6.0/plugin/chart/Chart.min.js'},
// the plugin
{ src: '../reveal.js-3.6.0/plugin/chart/csv2chart.js'},
{ src: '../reveal.js-3.6.0/plugin/svginline/es6-promise.auto.js', async: false },
{ src: '../reveal.js-3.6.0/plugin/svginline/data-src-svg.js', async: false }
]
});
</script>
</body>
</html>

View file

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="70.793213mm"
height="99.454781mm"
viewBox="0 0 70.793213 99.454781"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-02-05-RA-Tree.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="322.8304"
inkscape:cy="-5.2800578"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="10"
fit-margin-left="10"
fit-margin-right="10"
fit-margin-bottom="10"
inkscape:window-width="1920"
inkscape:window-height="1031"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-61.865121,-51.13384)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="84.520554"
y="90.656136"
id="text12"><tspan
sodipodi:role="line"
x="84.520554"
y="90.656136"
style="stroke-width:0.26458332"
id="tspan16">σ<tspan
style="font-size:4.93888903px;baseline-shift:sub"
id="tspan22">S.C=10</tspan></tspan></text>
<text
id="text28"
y="66.906097"
x="89.329224"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
id="tspan26"
style="stroke-width:0.26458332"
y="66.906097"
x="89.329224"
sodipodi:role="line">π<tspan
id="tspan24"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;baseline-shift:sub;text-anchor:start">R.A</tspan></tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="83.719574"
y="114.66895"
id="text34"><tspan
sodipodi:role="line"
x="83.719574"
y="114.66895"
style="stroke-width:0.26458332"
id="tspan39">⋈<tspan
style="font-size:4.93888903px;baseline-shift:sub"
id="tspan30">R.B=S.B</tspan></tspan></text>
<g
id="g58"
transform="translate(21.114293,-9.3544271)">
<text
id="text48"
y="149.79836"
x="49.712132"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="149.79836"
x="49.712132"
id="tspan46"
sodipodi:role="line">R</tspan></text>
<text
id="text52"
y="149.79318"
x="95.415215"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="149.79318"
x="95.415215"
id="tspan50"
sodipodi:role="line">S</tspan></text>
</g>
<g
id="g957"
transform="translate(-0.28091898)">
<path
inkscape:connector-curvature="0"
id="path60"
d="M 74.578941,131.02562 95.425965,118.46395"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 120.50635,131.02562 99.659303,118.46395"
id="path62"
inkscape:connector-curvature="0" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 97.261726,109.91133 V 94.944236"
id="path64"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 97.261726,84.520724 V 70.622709"
id="path66"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

@ -0,0 +1,423 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="185.3418mm"
height="107.16741mm"
viewBox="0 0 185.3418 107.16741"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-02-12-Flow-Cross.svg">
<defs
id="defs2">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker10141"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path10139"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path868"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker9660"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path9658"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker8965"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path8963"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker7249"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
inkscape:connector-curvature="0"
id="path7247"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker5139"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path5137"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker4462"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
inkscape:connector-curvature="0"
id="path4460"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker3960"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path3958"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1227"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1225"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1193"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1191"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="331.24022"
inkscape:cy="251.75303"
inkscape:document-units="mm"
inkscape:current-layer="g8961"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1031"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(23.819361,-13.025584)">
<g
id="g9869">
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path40"
d="m 129.79702,13.026488 0.0756,20.902083"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
<text
id="text3432"
y="21.11385"
x="131.89551"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="21.11385"
x="131.89551"
id="tspan3430"
sodipodi:role="line">start</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="94.508446"
y="45.230064"
id="text12"
class="fragment"><tspan
sodipodi:role="line"
id="tspan10"
x="94.508446"
y="45.230064"
style="stroke-width:0.26458332">Have Old 'r'?</tspan></text>
<g
id="g8961"
class="fragment"
transform="translate(-39.952084,-46.566667)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="113.11009"
y="88.318016"
id="text8953"><tspan
sodipodi:role="line"
id="tspan8951"
x="113.11009"
y="88.318016"
style="font-size:7.05555534px;stroke-width:0.26458332">no</tspan></text>
<text
id="text8957"
y="68.449379"
x="17.008928"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="68.449379"
x="17.008928"
id="tspan8955"
sodipodi:role="line">Read LHS Row 'r'</tspan><tspan
style="stroke-width:0.26458332"
y="81.678543"
x="17.008928"
sodipodi:role="line"
id="tspan10281">and Reset RHS</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path8959"
d="M 133.46339,85.862501 97.97143,76.526488"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8965)" />
</g>
<g
id="g9929"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="57.490177"
y="81.94313"
id="text5083"><tspan
sodipodi:role="line"
id="tspan5081"
x="57.490177"
y="81.94313"
style="stroke-width:0.26458332">Read RHS Row 's'</tspan></text>
<text
id="text9648"
y="60.801346"
x="53.843437"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="60.801346"
x="53.843437"
id="tspan9646"
sodipodi:role="line">not empty</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker9660)"
d="m 41.652975,38.502083 17.160118,32.99732"
id="path9654"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</g>
<g
id="g9644"
transform="translate(-0.26458367,56.35625)"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="98.028847"
y="39.634682"
id="text3391"><tspan
sodipodi:role="line"
id="tspan3389"
x="98.028847"
y="39.634682"
style="font-size:7.05555534px;stroke-width:0.26458332">not empty</tspan></text>
<text
id="text16"
y="63.686882"
x="70.719345"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="63.686882"
x="70.719345"
id="tspan14"
sodipodi:role="line">Return &lt;r s&gt;</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path32"
d="M 88.219642,27.91875 104.85059,53.243153"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker7249)" />
</g>
<g
id="g9907"
class="fragment">
<text
id="text5079"
y="61.330517"
x="117.60801"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="61.330517"
x="117.60801"
id="tspan5077"
sodipodi:role="line">yes</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker10141)"
d="m 121.55714,48.820834 -15.11905,22.67857"
id="path5085"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</g>
<g
transform="translate(-143.13958,-8.9958333)"
class="fragment"
id="g3932">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="126.65983"
y="82.309517"
id="text3924"><tspan
sodipodi:role="line"
id="tspan3922"
x="126.65983"
y="82.309517"
style="stroke-width:0.26458332">Done</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4462)"
d="m 146.84375,46.628571 -8.20208,24.984226"
id="path3926"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
id="text3930"
y="58.420097"
x="118.93092"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="58.420097"
x="118.93092"
id="tspan3928"
sodipodi:role="line">empty</tspan></text>
</g>
<g
id="g5135"
class="fragment"
transform="translate(-22.754167,35.983333)">
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path5129"
d="M 86.783333,51.126488 C 59.680757,74.970227 41.200165,10.149137 39.612512,1.2878217"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5139)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="44.847588"
y="58.420097"
id="text5133"><tspan
sodipodi:role="line"
id="tspan5131"
x="44.847588"
y="58.420097"
style="font-size:7.05555534px;stroke-width:0.26458332">empty</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="162.57216mm"
height="105.71951mm"
viewBox="0 0 162.57216 105.71951"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-02-12-Flow-Project.svg">
<defs
id="defs2">
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1227"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1225"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1193"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1191"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1165"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1163"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1143"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1141"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path850"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="42.71157"
inkscape:cy="326.28069"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1031"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-7.012178,-13.025584)">
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 95.930357,13.026488 0.07559,20.902083"
id="path40"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="56.143864"
y="46.023815"
id="text12"
class="fragment"><tspan
sodipodi:role="line"
id="tspan10"
x="56.143864"
y="46.023815"
style="stroke-width:0.26458332">Read One Row</tspan></text>
<g
id="g3198"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="37.439262"
y="59.478432"
id="text3391"><tspan
sodipodi:role="line"
id="tspan3389"
x="37.439262"
y="59.478432"
style="font-size:7.05555534px;stroke-width:0.26458332">not empty</tspan></text>
<text
id="text16"
y="82.472298"
x="19.65476"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.472298"
x="19.65476"
id="tspan14"
sodipodi:role="line">Compute New Row</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path32"
d="M 82.398808,48.291667 67.27976,70.970237"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1165)" />
</g>
<g
id="g3232"
class="fragment">
<text
id="text24"
y="118.59524"
x="36.537827"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="118.59524"
x="36.537827"
id="tspan22"
sodipodi:role="line">Return Row</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path36"
d="M 65.578867,86.089285 65.389881,108.61667"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1227)" />
</g>
<g
id="g3215"
class="fragment">
<text
id="text20"
y="82.309517"
x="139.09525"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.309517"
x="139.09525"
id="tspan18"
sodipodi:role="line">Done!</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path34"
d="m 121.70833,49.803571 15.875,18.898809"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1143)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="130.57259"
y="59.213848"
id="text3377"><tspan
sodipodi:role="line"
id="tspan3375"
x="130.57259"
y="59.213848"
style="font-size:7.05555534px;stroke-width:0.26458332">empty</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="98.028847"
y="21.11385"
id="text3432"><tspan
sodipodi:role="line"
id="tspan3430"
x="98.028847"
y="21.11385"
style="font-size:7.05555534px;stroke-width:0.26458332">start</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,285 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="162.57216mm"
height="105.71951mm"
viewBox="0 0 162.57216 105.71951"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-02-12-Flow-Select.svg">
<defs
id="defs2">
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1227"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1225"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1193"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1191"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1165"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1163"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1143"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1141"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path850"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="42.71157"
inkscape:cy="326.28069"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1031"
inkscape:window-x="0"
inkscape:window-y="1"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-7.012178,-13.025584)">
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 95.930357,13.026488 0.07559,20.902083"
id="path40"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="56.143864"
y="46.023815"
id="text12"
class="fragment"><tspan
sodipodi:role="line"
id="tspan10"
x="56.143864"
y="46.023815"
style="stroke-width:0.26458332">Read One Row</tspan></text>
<g
id="g3198"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="37.439262"
y="59.743015"
id="text3391"><tspan
sodipodi:role="line"
id="tspan3389"
x="37.439262"
y="59.743015"
style="font-size:7.05555534px;stroke-width:0.26458332">not empty</tspan></text>
<text
id="text16"
y="82.472298"
x="19.65476"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.472298"
x="19.65476"
id="tspan14"
sodipodi:role="line">Check Condition</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path32"
d="M 82.398808,48.291667 67.27976,70.970237"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1165)" />
</g>
<g
id="g3232"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="80.830925"
y="93.345093"
id="text3383"><tspan
sodipodi:role="line"
id="tspan3381"
x="80.830925"
y="93.345093"
style="font-size:7.05555534px;stroke-width:0.26458332">satisfied</tspan></text>
<text
id="text24"
y="118.59524"
x="64.319077"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="118.59524"
x="64.319077"
id="tspan22"
sodipodi:role="line">Return Row</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path36"
d="M 74.839284,86.089285 89.202381,106.5"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1227)" />
</g>
<g
id="g3416"
class="fragment">
<path
class=""
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path38"
d="m 45.357142,86.089285 c 0,0 -9.751785,23.812495 -27.214285,21.166665 C 6.7657737,105.13928 6.7657738,74.069643 7.5595238,56.607143 c 0,-14.022917 5.7844582,-34.311254 27.2898812,-38.780357 20.396751,-0.385142 30.1625,16.101785 30.1625,16.101785"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1193)" />
<text
id="text3387"
y="112.92427"
x="10.187177"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="112.92427"
x="10.187177"
id="tspan3385"
sodipodi:role="line">unsatisfied</tspan></text>
</g>
<g
id="g3215"
class="fragment">
<text
id="text20"
y="82.309517"
x="139.09525"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.309517"
x="139.09525"
id="tspan18"
sodipodi:role="line">Done!</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path34"
d="m 121.70833,49.803571 15.875,18.898809"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1143)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="130.57259"
y="59.213848"
id="text3377"><tspan
sodipodi:role="line"
id="tspan3375"
x="130.57259"
y="59.213848"
style="font-size:7.05555534px;stroke-width:0.26458332">empty</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="98.028847"
y="21.11385"
id="text3432"><tspan
sodipodi:role="line"
id="tspan3430"
x="98.028847"
y="21.11385"
style="font-size:7.05555534px;stroke-width:0.26458332">start</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,372 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="173.15916mm"
height="103.56505mm"
viewBox="0 0 173.15917 103.56505"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="2018-02-12-Flow-Union.svg">
<defs
id="defs2">
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker1886"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Lend">
<path
transform="scale(1.1) rotate(180) translate(1,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path1884" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker1816"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Lend">
<path
transform="scale(1.1) rotate(180) translate(1,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path1814" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker1752"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Lend">
<path
transform="scale(1.1) rotate(180) translate(1,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path1750" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker1688"
style="overflow:visible;"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path1686"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path1431"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker1228"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path1226"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1089"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1087"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1047"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1045"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker3960"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path3958"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1227"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1225"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1193"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1191"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="-193.9972"
inkscape:cy="198.13782"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-20.693457,-13.025584)">
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1886)"
d="m 95.930357,13.026488 0.07559,20.902083"
id="path40"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="98.028847"
y="21.11385"
id="text3432"><tspan
sodipodi:role="line"
id="tspan3430"
x="98.028847"
y="21.11385"
style="font-size:7.05555534px;stroke-width:0.26458332">start</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="56.143864"
y="46.023815"
id="text12"
class="fragment"><tspan
sodipodi:role="line"
id="tspan10"
x="56.143864"
y="46.023815"
style="stroke-width:0.26458332">Read LHS Row</tspan></text>
<g
id="g3198"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="37.703846"
y="59.743015"
id="text3391"><tspan
sodipodi:role="line"
id="tspan3389"
x="37.703846"
y="59.743015"
style="font-size:7.05555534px;stroke-width:0.26458332">not empty</tspan></text>
<text
id="text16"
y="82.472298"
x="19.65476"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.472298"
x="19.65476"
id="tspan14"
sodipodi:role="line">Return Row</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path32"
d="M 82.398808,48.291667 67.27976,70.970237"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1688)" />
</g>
<g
transform="translate(-8.2020834,-0.52916667)"
class="fragment"
id="g3932">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="125.07233"
y="82.309517"
id="text3924"><tspan
sodipodi:role="line"
id="tspan3922"
x="125.07233"
y="82.309517"
style="stroke-width:0.26458332">Read RHS Row</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1816)"
d="m 120.65,48.745238 17.99167,22.867559"
id="path3926"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
id="text3930"
y="59.213848"
x="130.57259"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="59.213848"
x="130.57259"
id="tspan3928"
sodipodi:role="line">empty</tspan></text>
</g>
<g
class="fragment"
id="g3956"
transform="translate(57.414583,44.45)">
<text
id="text3948"
y="45.190933"
x="30.824678"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:7.05555534px;stroke-width:0.26458332"
y="45.190933"
x="30.824678"
id="tspan3946"
sodipodi:role="line">not empty</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1752)"
d="M 56.998808,33.475 25.475593,33.663987"
id="path3954"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</g>
<g
id="g3215"
class="fragment"
transform="translate(-3.175,34.13125)">
<text
id="text20"
y="82.309517"
x="139.09525"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="82.309517"
x="139.09525"
id="tspan18"
sodipodi:role="line">Done!</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path34"
d="M 151.87083,50.597321 152.4,72.406547"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="126.86842"
y="68.474266"
id="text3377"><tspan
sodipodi:role="line"
id="tspan3375"
x="126.86842"
y="68.474266"
style="font-size:7.05555534px;stroke-width:0.26458332">empty</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,430 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="141.67162mm"
height="80.71843mm"
viewBox="0 0 501.98604 286.01019"
id="svg4281"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="2018-02-12-Join-1PassHash.svg">
<defs
id="defs4283" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.8"
inkscape:cx="306.9147"
inkscape:cy="123.17883"
inkscape:document-units="px"
inkscape:current-layer="g8432"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1388"
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="metadata4286">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-60.364196,-146.85447)">
<g
id="g8400">
<rect
y="179.89833"
x="177.75493"
height="108.78987"
width="188.7899"
id="rect8348"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.61618328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.61618328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect8350"
width="188.7899"
height="108.78987"
x="177.75493"
y="291.3269" />
<text
sodipodi:linespacing="125%"
id="text8352"
y="282.86465"
x="279.29282"
style="font-style:normal;font-weight:normal;font-size:20.00000191px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="282.86465"
x="279.29282"
id="tspan8354"
sodipodi:role="line">h(A) = 0</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:20.00000191px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="279.29282"
y="394.29324"
id="text8356"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8358"
x="279.29282"
y="394.29324">h(A) = 1</tspan></text>
</g>
<g
id="g8474">
<g
class="fragment"
id="g4208">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471"
width="96.428566"
height="64.285713"
x="61.250008"
y="148.79077" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="194.5051"
id="text5040"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5042"
x="107.99999"
y="194.5051">1</tspan></text>
</g>
<g
transform="matrix(0.37283942,0,0,0.37283942,188.92948,137.71923)"
id="g8368"
class="fragment">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect8370"
width="96.428566"
height="64.285713"
x="61.250008"
y="212.50505" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="260.21939"
id="text8372"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8374"
x="107.99999"
y="260.21939">1</tspan></text>
</g>
<g
class="fragment"
id="g4213">
<rect
y="212.50505"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4837"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text5044"
y="260.21939"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="107.99999"
id="tspan5046"
sodipodi:role="line">3</tspan></text>
</g>
<g
id="g8392"
transform="matrix(0.37283942,0,0,0.37283942,240.7152,257.3621)"
class="fragment">
<rect
y="212.50505"
x="-77.6455"
height="64.285713"
width="96.428566"
id="rect8394"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text8396"
y="260.21939"
x="-30.895515"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="-30.895515"
id="tspan8398"
sodipodi:role="line">3</tspan></text>
</g>
<g
class="fragment"
id="g8341">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4839"
width="96.428566"
height="64.285713"
x="61.250008"
y="276.21933" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="323.07654"
id="text5048"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5050"
x="107.99999"
y="323.07654">2</tspan></text>
</g>
<g
id="g8376"
transform="matrix(0.37283942,0,0,0.37283942,228.2152,137.71923)"
class="fragment">
<rect
y="212.50505"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect8378"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text8380"
y="260.21939"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="107.99999"
id="tspan8382"
sodipodi:role="line">2</tspan></text>
</g>
<g
class="fragment"
id="g4223">
<rect
y="339.50504"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4841"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text5052"
y="386.64798"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="386.64798"
x="107.99999"
id="tspan5054"
sodipodi:role="line">1</tspan></text>
</g>
<g
transform="matrix(0.37283942,0,0,0.37283942,266.78663,137.71923)"
id="g8384"
class="fragment">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect8386"
width="96.428566"
height="64.285713"
x="61.250008"
y="212.50505" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="260.21939"
id="text8388"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8390"
x="107.99999"
y="260.21939">1</tspan></text>
</g>
<text
class="fragment"
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="91.792862"
y="436.34125"
id="text8275"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8277"
x="91.792862"
y="436.34125">✔</tspan></text>
</g>
<g
id="g8432">
<g
transform="translate(258.42869,-16.764772)"
id="g4228"
class="fragment">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471-7"
width="96.428566"
height="64.285713"
x="206.60716"
y="164.50507" />
<text
sodipodi:linespacing="125%"
id="text5060"
y="209.5051"
x="252.28571"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="209.5051"
x="252.28571"
id="tspan5062"
sodipodi:role="line">3</tspan></text>
</g>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 464.64989,183.22184 367.86417,344.65041"
id="path8596"
inkscape:connector-curvature="0"
class="fragment"
sodipodi:nodetypes="cc" />
<g
transform="translate(162.57156,47.292695)"
id="g4233"
class="fragment">
<rect
y="164.50507"
x="302.46429"
height="64.285713"
width="96.428566"
id="rect4843"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="348.71426"
y="209.5051"
id="text5064"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5066"
x="348.71426"
y="209.5051">2</tspan></text>
</g>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 465.00703,243.57898 368.57846,233.22184"
id="path8598"
inkscape:connector-curvature="0"
class="fragment"
sodipodi:nodetypes="cc" />
<g
transform="translate(67.428701,111.35016)"
id="g4238"
class="fragment">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4845"
width="96.428566"
height="64.285713"
x="397.60715"
y="164.50507" />
<text
sodipodi:linespacing="125%"
id="text5068"
y="209.5051"
x="446.57141"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="209.5051"
x="446.57141"
id="tspan5070"
sodipodi:role="line">1</tspan></text>
</g>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 464.29274,310.00755 368.57846,233.93612"
id="path8600"
inkscape:connector-curvature="0"
class="fragment"
sodipodi:nodetypes="cc" />
<g
transform="translate(184.57145,0)"
id="g8336"
class="fragment">
<rect
y="339.91269"
x="280.46442"
height="64.285713"
width="96.428566"
id="rect4847"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="328.00009"
y="384.91272"
id="text5072"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5074"
x="328.00009"
y="384.91272">3</tspan></text>
</g>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 464.29274,371.79327 367.86417,344.65041"
id="path8602"
inkscape:connector-curvature="0"
class="fragment"
sodipodi:nodetypes="cc" />
<text
class="fragment"
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="497.79276"
y="435.36218"
id="text8279"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8281"
x="497.79276"
y="435.36218">✔</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -0,0 +1,608 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="191.83719mm"
height="80.718437mm"
viewBox="0 0 679.73807 286.01022"
id="svg4281"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="2018-02-12-Join-2PassHash.svg">
<defs
id="defs4283">
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker4535"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path4282"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker4633"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
id="path4635"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker4605"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
id="path4607"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path4271"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(0.8,0,0,0.8,10,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="203.30987"
inkscape:cy="173.41795"
inkscape:document-units="px"
inkscape:current-layer="g8432"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1388"
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="metadata4286">
<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
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-60.364181,-146.85447)">
<g
id="g8632"
transform="translate(265.60915,0)">
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.61618328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect8634"
width="188.7899"
height="108.78987"
x="177.75493"
y="179.89833" />
<rect
y="291.3269"
x="177.75493"
height="108.78987"
width="188.7899"
id="rect8636"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.61618328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:20.00000191px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="279.29282"
y="282.86465"
id="text8638"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8640"
x="279.29282"
y="282.86465">h(A) = 0</tspan></text>
<text
sodipodi:linespacing="125%"
id="text8642"
y="394.29324"
x="279.29282"
style="font-style:normal;font-weight:normal;font-size:20.00000191px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="394.29324"
x="279.29282"
id="tspan8644"
sodipodi:role="line">h(A) = 1</tspan></text>
</g>
<g
id="g8400">
<rect
y="179.89833"
x="177.75493"
height="108.78987"
width="188.7899"
id="rect8348"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.61618328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.61618328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect8350"
width="188.7899"
height="108.78987"
x="177.75493"
y="291.3269" />
<text
sodipodi:linespacing="125%"
id="text8352"
y="282.86465"
x="279.29282"
style="font-style:normal;font-weight:normal;font-size:20.00000191px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="282.86465"
x="279.29282"
id="tspan8354"
sodipodi:role="line">h(A) = 0</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:20.00000191px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="279.29282"
y="394.29324"
id="text8356"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8358"
x="279.29282"
y="394.29324">h(A) = 1</tspan></text>
</g>
<g
id="g8474">
<g
class="fragment"
id="g4208">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471"
width="96.428566"
height="64.285713"
x="61.250008"
y="148.79077" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="194.5051"
id="text5040"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5042"
x="107.99999"
y="194.5051">1</tspan></text>
</g>
<g
transform="matrix(0.37283942,0,0,0.37283942,188.92948,137.71923)"
id="g8368"
class="fragment">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect8370"
width="96.428566"
height="64.285713"
x="61.250008"
y="212.50505" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="260.21939"
id="text8372"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8374"
x="107.99999"
y="260.21939">1</tspan></text>
</g>
<g
class="fragment"
id="g4213">
<rect
y="212.50505"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4837"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text5044"
y="260.21939"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="107.99999"
id="tspan5046"
sodipodi:role="line">3</tspan></text>
</g>
<g
id="g8392"
transform="matrix(0.37283942,0,0,0.37283942,240.7152,257.3621)"
class="fragment">
<rect
y="212.50505"
x="-77.6455"
height="64.285713"
width="96.428566"
id="rect8394"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text8396"
y="260.21939"
x="-30.895515"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="-30.895515"
id="tspan8398"
sodipodi:role="line">3</tspan></text>
</g>
<g
class="fragment"
id="g8341">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4839"
width="96.428566"
height="64.285713"
x="61.250008"
y="276.21933" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="323.07654"
id="text5048"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5050"
x="107.99999"
y="323.07654">2</tspan></text>
</g>
<g
id="g8376"
transform="matrix(0.37283942,0,0,0.37283942,228.2152,137.71923)"
class="fragment">
<rect
y="212.50505"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect8378"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text8380"
y="260.21939"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="107.99999"
id="tspan8382"
sodipodi:role="line">2</tspan></text>
</g>
<g
class="fragment"
id="g4223">
<rect
y="339.50504"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4841"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text5052"
y="386.64798"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="386.64798"
x="107.99999"
id="tspan5054"
sodipodi:role="line">1</tspan></text>
</g>
<g
transform="matrix(0.37283942,0,0,0.37283942,266.78663,137.71923)"
id="g8384"
class="fragment">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect8386"
width="96.428566"
height="64.285713"
x="61.250008"
y="212.50505" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="260.21939"
id="text8388"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8390"
x="107.99999"
y="260.21939">1</tspan></text>
</g>
<text
class="fragment"
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="91.792862"
y="436.34125"
id="text8275"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8277"
x="91.792862"
y="436.34125">✔</tspan></text>
</g>
<g
id="g8432"
transform="translate(-117.85714,0)">
<g
transform="translate(554.03784,-16.764772)"
id="g4228"
class="fragment">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471-7"
width="96.428566"
height="64.285713"
x="206.60716"
y="164.50507" />
<text
sodipodi:linespacing="125%"
id="text5060"
y="209.5051"
x="252.28571"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="209.5051"
x="252.28571"
id="tspan5062"
sodipodi:role="line">3</tspan></text>
</g>
<g
class="fragment"
id="g4249"
transform="matrix(0.37283942,0,0,0.37283942,552.58143,258.81777)">
<rect
y="212.50505"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4251"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text4253"
y="260.21939"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="107.99999"
id="tspan4255"
sodipodi:role="line">3</tspan></text>
</g>
<g
transform="translate(458.18071,47.292695)"
id="g4233"
class="fragment">
<rect
y="164.50507"
x="302.46429"
height="64.285713"
width="96.428566"
id="rect4843"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="348.71426"
y="209.5051"
id="text5064"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5066"
x="348.71426"
y="209.5051">2</tspan></text>
</g>
<g
transform="matrix(0.37283942,0,0,0.37283942,552.58143,137.59946)"
id="g8384-4"
class="fragment">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect8386-2"
width="96.428566"
height="64.285713"
x="61.250008"
y="212.50505" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="260.21939"
id="text8388-5"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8390-1"
x="107.99999"
y="260.21939">2</tspan></text>
</g>
<g
transform="translate(363.03785,111.35016)"
id="g4238"
class="fragment">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4845"
width="96.428566"
height="64.285713"
x="397.60715"
y="164.50507" />
<text
sodipodi:linespacing="125%"
id="text5068"
y="209.5051"
x="446.57141"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="209.5051"
x="446.57141"
id="tspan5070"
sodipodi:role="line">1</tspan></text>
</g>
<g
class="fragment"
id="g4229"
transform="matrix(0.37283942,0,0,0.37283942,590.96723,137.59946)">
<rect
y="212.50505"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4231"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text4233"
y="260.21939"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="107.99999"
id="tspan4235"
sodipodi:role="line">1</tspan></text>
</g>
<g
transform="translate(480.1806,0)"
id="g8336"
class="fragment">
<rect
y="339.91269"
x="280.46442"
height="64.285713"
width="96.428566"
id="rect4847"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="328.00009"
y="384.91272"
id="text5072"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5074"
x="328.00009"
y="384.91272">3</tspan></text>
</g>
<g
transform="matrix(0.37283942,0,0,0.37283942,590.96723,258.81777)"
id="g4241"
class="fragment">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4243"
width="96.428566"
height="64.285713"
x="61.250008"
y="212.50505" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="260.21939"
id="text4245"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4247"
x="107.99999"
y="260.21939">3</tspan></text>
</g>
<text
class="fragment"
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="793.40186"
y="435.36218"
id="text8279"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8281"
x="793.40186"
y="435.36218">✔</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#marker4535)"
d="m 486.07848,230.7218 72.14286,0"
id="path4265"
inkscape:connector-curvature="0"
class="fragment" />
<path
inkscape:connector-curvature="0"
id="path4603"
d="m 486.07848,350.00751 72.14286,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4605);marker-end:url(#marker4633)"
class="fragment" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 25 KiB

View file

@ -0,0 +1,274 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="107.84523mm"
height="153.58023mm"
viewBox="0 0 107.84523 153.58023"
version="1.1"
id="svg10469"
inkscape:version="0.91 r13725"
sodipodi:docname="2018-02-12-Join-BNLJ.svg">
<defs
id="defs10463" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="-108.00703"
inkscape:cy="177.30339"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1388"
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="metadata10466">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-24.696428,-35.190475)">
<g
id="g10604">
<g
id="g10525">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471"
width="27.214285"
height="18.142857"
x="24.946428"
y="35.440475" />
<rect
y="53.583332"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10473"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10529">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10475"
width="27.214285"
height="18.142857"
x="24.946428"
y="74.372025" />
<rect
y="92.514885"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10477"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10533">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10479"
width="27.214285"
height="18.142857"
x="24.946428"
y="113.30355" />
<rect
y="131.44637"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10481"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10537">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10483"
width="27.214285"
height="18.142857"
x="24.946428"
y="152.235" />
<rect
y="170.37785"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10485"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10558">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471-7"
width="27.214285"
height="18.142857"
x="105.07738"
y="35.440475" />
<rect
y="53.583328"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10473-9"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10554">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10475-3"
width="27.214285"
height="18.142857"
x="105.07738"
y="74.372032" />
<rect
y="92.514885"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10477-8"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10550">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10479-0"
width="27.214285"
height="18.142857"
x="105.07738"
y="113.30355" />
<rect
y="131.44637"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10481-2"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g10546">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10483-4"
width="27.214285"
height="18.142857"
x="105.07738"
y="152.235" />
<rect
y="170.37785"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10485-8"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
<g
id="g10615"
style="stroke:#000000"
class="fragment">
<path
inkscape:connector-curvature="0"
id="path10560"
d="m 52.160712,53.583331 52.916668,0"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10562"
d="M 105.07738,92.514886 52.160713,53.583332 105.07738,131.44637"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10564"
d="M 52.160712,53.583331 105.07738,170.37785"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g10619"
style="stroke:#000000"
class="fragment">
<path
inkscape:connector-curvature="0"
id="path10566"
d="m 105.07738,53.583331 -52.916668,38.931554 52.916668,0"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10568"
d="M 105.07738,131.44637 52.160712,92.514877 105.07738,170.37785"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g10629"
style="stroke:#000000"
class="fragment">
<path
inkscape:connector-curvature="0"
id="path10570"
d="M 52.160712,131.44636 105.07738,53.583329"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
style="stroke:#000000"
id="g10623">
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 105.07738,92.514885 -52.916668,38.931525 52.916668,0"
id="path10572"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 52.160712,131.44636 52.916668,38.93149"
id="path10574"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g10633"
style="stroke:#000000"
class="fragment">
<path
inkscape:connector-curvature="0"
id="path10576"
d="M 105.07738,53.583331 52.160712,170.37785 105.07738,92.514885"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path10578"
d="m 105.07738,131.44637 -52.916668,38.93148 52.916668,0"
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.7 KiB

View file

@ -0,0 +1,368 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="148.66866mm"
height="101.85mm"
viewBox="0 0 526.7787 360.88582"
id="svg4281"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="2018-02-12-Join-Grid.svg">
<defs
id="defs4283" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="-117.32522"
inkscape:cy="65.003142"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1388"
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="metadata4286">
<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
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-60.364181,-64.333526)">
<g
id="g4882"
class="fragment">
<path
inkscape:connector-curvature="0"
id="path4849"
d="m 229.28571,425.21935 0,-320.71429"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 325.71428,425.21935 0,-320.71429"
id="path4851"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path4853"
d="m 420.71428,425.21935 0,-320.71429"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 515.71428,425.21935 0,-320.71429"
id="path4855"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path4857"
d="m 128.57143,183.79078 458.57143,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 128.57143,246.64792 458.57143,0"
id="path4859"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path4861"
d="m 128.57143,312.36221 458.57143,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 128.57143,374.50507 458.57143,0"
id="path4863"
inkscape:connector-curvature="0" />
</g>
<g
id="g5084">
<rect
y="148.79077"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect10471"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4837"
width="96.428566"
height="64.285713"
x="61.250008"
y="212.50505" />
<rect
y="276.21933"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4839"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4841"
width="96.428566"
height="64.285713"
x="61.250008"
y="339.50504" />
<g
id="g4188"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="194.5051"
id="text5040"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5042"
x="107.99999"
y="194.5051">1</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5044"
y="260.21939"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="107.99999"
id="tspan5046"
sodipodi:role="line">3</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="323.07654"
id="text5048"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5050"
x="107.99999"
y="323.07654">2</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5052"
y="386.64798"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="386.64798"
x="107.99999"
id="tspan5054"
sodipodi:role="line">1</tspan></text>
</g>
</g>
<g
id="g5102">
<rect
y="65.219353"
x="182.32144"
height="64.285713"
width="96.428566"
id="rect10471-7"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4843"
width="96.428566"
height="64.285713"
x="278.17859"
y="65.219353" />
<rect
y="65.219353"
x="373.32144"
height="64.285713"
width="96.428566"
id="rect4845"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4847"
width="96.428566"
height="64.285713"
x="469.03574"
y="65.219353" />
<g
id="g4198"
class="fragment">
<text
sodipodi:linespacing="125%"
id="text5060"
y="110.21938"
x="227.99998"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="110.21938"
x="227.99998"
id="tspan5062"
sodipodi:role="line">3</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="324.42856"
y="110.21938"
id="text5064"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5066"
x="324.42856"
y="110.21938">2</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5068"
y="110.21938"
x="422.28571"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="110.21938"
x="422.28571"
id="tspan5070"
sodipodi:role="line">3</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="516.57141"
y="110.21938"
id="text5072"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5074"
x="516.57141"
y="110.21938">1</tspan></text>
</g>
</g>
<g
id="g4875"
class="fragment">
<rect
y="280.36221"
x="276.39288"
height="64.285713"
width="96.428566"
id="rect4865"
style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4867"
width="96.428566"
height="64.285713"
x="373.53574"
y="216.07649" />
<rect
y="340.50507"
x="471.25003"
height="64.285713"
width="96.428566"
id="rect4869"
style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4871"
width="96.428566"
height="64.285713"
x="471.25003"
y="151.21935" />
<rect
y="215.50505"
x="180.53574"
height="64.285713"
width="96.428566"
id="rect4873"
style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="228.71426"
y="262.21939"
id="text5076"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5078"
x="228.71426"
y="262.21939">3</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5135"
y="328.07654"
x="324.42856"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="328.07654"
x="324.42856"
id="tspan5137"
sodipodi:role="line">2</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5139"
y="262.21939"
x="420.85712"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="262.21939"
x="420.85712"
id="tspan5141"
sodipodi:role="line">3</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="519.85712"
y="197.36224"
id="text5143"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5145"
x="519.85712"
y="197.36224">1</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5147"
y="387.36224"
x="519.85712"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="387.36224"
x="519.85712"
id="tspan5149"
sodipodi:role="line">1</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="513.22131"
y="112.36221"
id="text4184"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4186"
x="513.22131"
y="112.36221"></tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,263 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="107.84523mm"
height="145.11356mm"
viewBox="0 0 107.84523 145.11356"
version="1.1"
id="svg10469"
inkscape:version="0.91 r13725"
sodipodi:docname="2018-02-12-Join-NLJ.svg">
<defs
id="defs10463" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="-113.84083"
inkscape:cy="81.737399"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1388"
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="metadata10466">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-24.696428,-35.190484)">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471"
width="27.214285"
height="18.142857"
x="24.946428"
y="35.440475" />
<rect
y="53.583332"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10473"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10475"
width="27.214285"
height="18.142857"
x="24.946428"
y="71.549805" />
<rect
y="89.692665"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10477"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10479"
width="27.214285"
height="18.142857"
x="24.946428"
y="107.6591" />
<rect
y="125.80192"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10481"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10483"
width="27.214285"
height="18.142857"
x="24.946428"
y="143.76833" />
<rect
y="161.91118"
x="24.946428"
height="18.142857"
width="27.214285"
id="rect10485"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g4221"
class="fragment"
transform="matrix(1.0317471,0,0,0.99998823,-1.6524342,0.00126849)">
<path
inkscape:connector-curvature="0"
id="path4213"
d="m 105.41198,44.555142 -53.339997,0 52.493337,18.062224"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4215"
d="M 104.56532,79.268477 52.354206,45.119586 105.12976,99.024035"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4217"
d="M 104.28309,116.52181 52.354206,44.837364 104.56532,135.71293"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4219"
d="M 104.84754,153.49293 52.354206,44.837364 104.56532,170.99071"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471-7"
width="27.214285"
height="18.142857"
x="105.07738"
y="35.440475" />
<rect
y="53.583328"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10473-9"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10475-3"
width="27.214285"
height="18.142857"
x="105.07738"
y="71.549812" />
<rect
y="89.692665"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10477-8"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10479-0"
width="27.214285"
height="18.142857"
x="105.07738"
y="107.6591" />
<rect
y="125.80192"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10481-2"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10483-4"
width="27.214285"
height="18.142857"
x="105.07738"
y="143.76833" />
<rect
y="161.91118"
x="105.07738"
height="18.142857"
width="27.214285"
id="rect10485-8"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g4235"
class="fragment"
transform="matrix(1.0107094,0,0,1.0068195,-0.55954858,-0.30465241)">
<path
inkscape:connector-curvature="0"
id="path4227"
d="m 104.56531,44.837371 -52.211108,18.908888 51.928888,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4229"
d="M 104.56531,78.421814 52.636424,63.746259 104.56531,97.612927"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4231"
d="M 104.84753,115.39293 52.636424,64.028481 104.84754,133.45515"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4233"
d="M 104.56531,150.38848 52.354202,63.746259 104.84754,168.73293"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g4263"
class="fragment">
<text
class=""
sodipodi:linespacing="125%"
id="text4255"
y="149.25945"
x="72.674202"
style="font-style:normal;font-weight:normal;font-size:11.28888893px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="149.25945"
x="72.674202"
id="tspan4257"
sodipodi:role="line">...</tspan></text>
<text
class=""
sodipodi:linespacing="125%"
id="text4251"
y="136.84181"
x="72.674202"
style="font-style:normal;font-weight:normal;font-size:11.28888893px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="136.84181"
x="72.674202"
id="tspan4253"
sodipodi:role="line">...</tspan></text>
<text
class=""
sodipodi:linespacing="125%"
id="text4259"
y="161.67708"
x="72.674202"
style="font-style:normal;font-weight:normal;font-size:11.28888893px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="161.67708"
x="72.674202"
id="tspan4261"
sodipodi:role="line">...</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1,353 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="148.66866mm"
height="101.85mm"
viewBox="0 0 526.7787 360.88582"
id="svg4281"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="2018-02-12-Join-OrderGrid.svg">
<defs
id="defs4283" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="-117.32522"
inkscape:cy="65.358271"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1388"
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="metadata4286">
<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
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-60.364181,-64.333526)">
<g
id="g4218"
transform="translate(194.85714,193.57143)">
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.52339476px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 229.28571,230.21936 0,-87.85714"
id="path5172"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path5174"
d="m 325.71428,232.36222 0,-90.00001"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5297392px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.68472427px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 173.57143,183.79078 215,0"
id="path5180"
inkscape:connector-curvature="0" />
<rect
y="149.07648"
x="276.39288"
height="64.285713"
width="96.428566"
id="rect4865"
style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="149.07648"
x="180.53574"
height="64.285713"
width="96.428566"
id="rect4873"
style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="228.71426"
y="195.79941"
id="text5076"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5078"
x="228.71426"
y="195.79941">3</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5135"
y="195.77988"
x="324.42856"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="195.77988"
x="324.42856"
id="tspan5137"
sodipodi:role="line">3</tspan></text>
</g>
<g
id="g4229"
transform="translate(-95.714286,64.285714)">
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.55035925px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 420.71428,294.50507 0,-97.14285"
id="path5176"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path5182"
d="m 351.42857,246.64792 137.85715,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.54829103px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4867"
width="96.428566"
height="64.285713"
x="373.53574"
y="214.07649" />
<text
sodipodi:linespacing="125%"
id="text5139"
y="260.21939"
x="420.85712"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="420.85712"
id="tspan5141"
sodipodi:role="line">2</tspan></text>
</g>
<g
id="g4207"
transform="translate(-290,-128.57143)">
<path
inkscape:connector-curvature="0"
id="path5178"
d="m 515.71428,425.21936 0,-166.42858"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.72036862px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.55394369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 446.42857,312.36221 140.71429,0"
id="path5184"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path5186"
d="m 445,374.50507 142.14286,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.55674845px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="342.50507"
x="471.25003"
height="64.285713"
width="96.428566"
id="rect4869"
style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4871"
width="96.428566"
height="64.285713"
x="471.25003"
y="278.21936" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="519.85712"
y="326.36224"
id="text5143"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5145"
x="519.85712"
y="326.36224">1</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5147"
y="391.36224"
x="519.85712"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="391.36224"
x="519.85712"
id="tspan5149"
sodipodi:role="line">1</tspan></text>
</g>
<g
id="g5084">
<rect
y="148.79077"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect10471"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4837"
width="96.428566"
height="64.285713"
x="61.250008"
y="212.50505" />
<rect
y="276.21933"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4839"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4841"
width="96.428566"
height="64.285713"
x="61.250008"
y="339.50504" />
<text
sodipodi:linespacing="125%"
id="text5040"
y="194.5051"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="194.5051"
x="107.99999"
id="tspan5042"
sodipodi:role="line">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="260.21939"
id="text5044"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5046"
x="107.99999"
y="260.21939">1</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5048"
y="323.07654"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="323.07654"
x="107.99999"
id="tspan5050"
sodipodi:role="line">2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="386.64798"
id="text5052"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5054"
x="107.99999"
y="386.64798">3</tspan></text>
</g>
<g
id="g5102">
<rect
y="65.219353"
x="182.32144"
height="64.285713"
width="96.428566"
id="rect10471-7"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4843"
width="96.428566"
height="64.285713"
x="278.17859"
y="65.219353" />
<rect
y="65.219353"
x="373.32144"
height="64.285713"
width="96.428566"
id="rect4845"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4847"
width="96.428566"
height="64.285713"
x="469.03574"
y="65.219353" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="227.99998"
y="110.21938"
id="text5060"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5062"
x="227.99998"
y="110.21938">1</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5064"
y="110.21938"
x="324.42856"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="110.21938"
x="324.42856"
id="tspan5066"
sodipodi:role="line">2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="422.28571"
y="110.21938"
id="text5068"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5070"
x="422.28571"
y="110.21938">3</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5072"
y="110.21938"
x="516.57141"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="110.21938"
x="516.57141"
id="tspan5074"
sodipodi:role="line">3</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,303 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="89.581459mm"
height="80.718445mm"
viewBox="0 0 317.41462 286.01024"
id="svg4281"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="2018-02-12-Join-SortMerge.svg">
<defs
id="defs4283" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="-118.03951"
inkscape:cy="101.21991"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1388"
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="metadata4286">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-60.364181,-146.85447)">
<g
id="g4248"
class="fragment">
<g
id="g4208">
<rect
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471"
width="96.428566"
height="64.285713"
x="61.250008"
y="148.79077" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="107.99999"
y="194.5051"
id="text5040"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5042"
x="107.99999"
y="194.5051">1</tspan></text>
</g>
<g
transform="translate(73.857238,-16.764772)"
id="g4228">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10471-7"
width="96.428566"
height="64.285713"
x="206.60716"
y="164.50507" />
<text
sodipodi:linespacing="125%"
id="text5060"
y="209.5051"
x="252.28571"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="209.5051"
x="252.28571"
id="tspan5062"
sodipodi:role="line">1</tspan></text>
</g>
</g>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 158.22132,179.50507 120.71429,0"
id="path4258"
inkscape:connector-curvature="0"
class="fragment" />
<g
id="g4260"
class="fragment">
<g
id="g4213">
<rect
y="212.50505"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4837"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text5044"
y="260.21939"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="260.21939"
x="107.99999"
id="tspan5046"
sodipodi:role="line">1</tspan></text>
</g>
<g
transform="translate(-21.999894,47.292695)"
id="g4233">
<rect
y="164.50507"
x="302.46429"
height="64.285713"
width="96.428566"
id="rect4843"
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="348.71426"
y="209.5051"
id="text5064"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5066"
x="348.71426"
y="209.5051">2</tspan></text>
</g>
</g>
<path
class="fragment"
inkscape:connector-curvature="0"
id="path4288"
d="m 158.22132,245.21936 120.71429,-65"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<g
id="g4218"
class="fragment">
<rect
y="276.21933"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4839"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text5048"
y="323.07654"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="323.07654"
x="107.99999"
id="tspan5050"
sodipodi:role="line">2</tspan></text>
</g>
<path
sodipodi:nodetypes="cc"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 158.22132,311.64793 120.71429,-65"
id="path4290"
inkscape:connector-curvature="0"
class="fragment" />
<g
id="g4292"
class="fragment">
<g
id="g4223">
<rect
y="339.50504"
x="61.250008"
height="64.285713"
width="96.428566"
id="rect4841"
style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text5052"
y="386.64798"
x="107.99999"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="386.64798"
x="107.99999"
id="tspan5054"
sodipodi:role="line">3</tspan></text>
</g>
<g
transform="translate(-117.14275,111.35016)"
id="g4238">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4845"
width="96.428566"
height="64.285713"
x="397.60715"
y="164.50507" />
<text
sodipodi:linespacing="125%"
id="text5068"
y="209.5051"
x="446.57141"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="209.5051"
x="446.57141"
id="tspan5070"
sodipodi:role="line">3</tspan></text>
</g>
</g>
<path
class="fragment"
inkscape:connector-curvature="0"
id="path4302"
d="m 158.22132,379.50507 120.71429,-65"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<g
id="g4243"
transform="translate(-212.85704,175.40763)"
class="fragment">
<rect
style="fill:#800000;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4847"
width="96.428566"
height="64.285713"
x="493.32144"
y="164.50507" />
<text
sodipodi:linespacing="125%"
id="text5072"
y="209.5051"
x="540.85712"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="209.5051"
x="540.85712"
id="tspan5074"
sodipodi:role="line">3</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="304.6499"
y="260.93362"
id="text8275"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8277"
x="304.6499"
y="260.93362">✔</tspan></text>
</g>
<path
class="fragment"
inkscape:connector-curvature="0"
id="path4304"
d="m 158.22132,379.50507 120.71429,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text8279"
y="435.36218"
x="313.22131"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
class="fragment"><tspan
y="435.36218"
x="313.22131"
id="tspan8281"
sodipodi:role="line">✔</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB