From 264500fbee23d463769f4ad045badc1e738101b4 Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Thu, 4 Dec 2014 15:27:55 +0100
Subject: [PATCH] Explanation Maven Windows profile

---
 .../Screen/EclipseConfig/windowsCmdJdkJre.png |  Bin 0 -> 10829 bytes
 Sd1/swd1.xml                                  |  360 ++-
 Sda2/Ref/Fig/concurrentOptimisticFail.svg     | 2076 +++++++++++++++++
 glossary.xml                                  |  112 +-
 4 files changed, 2384 insertions(+), 164 deletions(-)
 create mode 100644 Sd1/Ref/Screen/EclipseConfig/windowsCmdJdkJre.png
 create mode 100644 Sda2/Ref/Fig/concurrentOptimisticFail.svg

diff --git a/Sd1/Ref/Screen/EclipseConfig/windowsCmdJdkJre.png b/Sd1/Ref/Screen/EclipseConfig/windowsCmdJdkJre.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf90c90b475c458acf82facd7f5ba12ae6a1416d
GIT binary patch
literal 10829
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
U;!of!pwo7Q?Al(v?H^hH3nea44gdfE

literal 0
HcmV?d00001

diff --git a/Sd1/swd1.xml b/Sd1/swd1.xml
index 29026bbb8..4ac97a287 100644
--- a/Sd1/swd1.xml
+++ b/Sd1/swd1.xml
@@ -16,7 +16,7 @@
 
       <glosslist>
         <glossentry>
-          <glossterm>HdM mail server</glossterm>
+          <glossterm><xref linkend="glo_HdM"/> mail server</glossterm>
 
           <glossdef>
             <para>Either</para>
@@ -145,7 +145,8 @@
         </glossentry>
 
         <glossentry>
-          <glossterm>Eclipse IDE</glossterm>
+          <glossterm><xref linkend="glo_Eclipse"/> <xref
+          linkend="glo_IDE"/></glossterm>
 
           <glossdef>
             <itemizedlist>
@@ -169,7 +170,8 @@
               <listitem>
                 <para>Configure <filename
                 xlink:href="http://maven.mi.hdm-stuttgart.de/Archetypes/catalog.xml">catalog.xml</filename>
-                in your Eclipse IDE at
+                in your <xref linkend="glo_Eclipse"/> <xref
+                linkend="glo_IDE"/> at
                 <guimenu>Window--&gt;Preferences--&gt;Maven--&gt;Archetypes--&gt;Add
                 Remote Catalog</guimenu>. Click <guibutton>verify</guibutton>
                 to assure correct configuration.</para>
@@ -222,8 +224,8 @@
         </listitem>
 
         <listitem>
-          <para>Video tutorials based on older eclipse 3.3 version but still
-          (march 2014) valid.</para>
+          <para>Video tutorials based on older <xref linkend="glo_Eclipse"/>
+          3.3 version but still (march 2014) valid.</para>
 
           <itemizedlist>
             <listitem>
@@ -287,7 +289,8 @@
 
               <listitem>
                 <para>Reference documentation to be considered later: The
-                <productname>Greenfoot</productname> Java API for <link
+                <productname>Greenfoot</productname> Java <xref
+                linkend="glo_API"/> for <link
                 xlink:href="http://www.greenfoot.org/files/javadoc">online</link>
                 or <link
                 xlink:href="http://www.greenfoot.org/files/greenfoot-javadoc.zip">offline
@@ -553,9 +556,9 @@
               <para>You may evaluate the result by actually watching its
               moving direction. Is there another way?</para>
 
-              <para>Hint: The <productname>Greenfoot</productname> framework
-              allows you to inspect an object's internal attribute
-              values.</para>
+              <para>Hint: The <productname>Greenfoot</productname> <xref
+              linkend="glo_framework"/> allows you to inspect an object's
+              internal attribute values.</para>
             </question>
 
             <answer>
@@ -2138,7 +2141,8 @@ long sum = (long)a + b;</programlisting>
               <para>Implement a class representing fractions. You may find a
               dummy implementation containing some (not yet working) sample
               usage code being contained in a <code>main()</code> method. This
-              Maven archive also includes a Junit test.</para>
+              Maven archive also includes a <xref linkend="glo_Junit"/>
+              test.</para>
 
               <annotation role="make">
                 <para role="eclipse">P/fraction/V05</para>
@@ -3292,7 +3296,8 @@ Is 2016 a leap year? true</programlisting>
           <para>Creating a local Maven jar archive export by executing
           <quote><command>mvn</command> <option>install</option></quote> in
           project <xref linkend="sd1QandaGcd"/> at the command line.
-          Alternatively you may right click on your pom.xml file in Eclipse
+          Alternatively you may right click on your <xref
+          linkend="glo_pom.xml"/> file in <xref linkend="glo_Eclipse"/>
           hitting <quote>Run as Maven build</quote> using
           <parameter>install</parameter> as goal.</para>
         </listitem>
@@ -5054,7 +5059,7 @@ sin(4 * PI)=4518.2187229323445, difference=4518.2187229323445</programlisting>
 
                 <para>The above link contains a skeleton file
                 <filename>project.zip</filename>. You may import this project
-                into your eclipse workspace by:</para>
+                into your <xref linkend="glo_Eclipse"/> workspace by:</para>
 
                 <itemizedlist>
                   <listitem>
@@ -5069,8 +5074,9 @@ sin(4 * PI)=4518.2187229323445, difference=4518.2187229323445</programlisting>
 
                   <listitem>
                     <para>Choose File--&gt;Import--&gt;Maven--&gt;Existing
-                    maven projects in Eclipse and navigate to the
-                    <quote>myProject</quote> folder to import it.</para>
+                    maven projects in <xref linkend="glo_Eclipse"/> and
+                    navigate to the <quote>myProject</quote> folder to import
+                    it.</para>
                   </listitem>
                 </itemizedlist>
 
@@ -5083,7 +5089,7 @@ sin(4 * PI)=4518.2187229323445, difference=4518.2187229323445</programlisting>
                   </listitem>
 
                   <listitem>
-                    <para>A <productname>Junit</productname> test
+                    <para>A <xref linkend="glo_Junit"/> test
                     <classname>IntStoreTest</classname> which allows you to
                     test your ongoing implementation of
                     <classname>BoundedIntegerStore</classname>. This class
@@ -5179,7 +5185,7 @@ sin(4 * PI)=4518.2187229323445, difference=4518.2187229323445</programlisting>
                   </listitem>
                 </orderedlist>
 
-                <para>Modify and add <productname>Junit</productname> tests
+                <para>Modify and add <xref linkend="glo_Junit"/> tests
                 accordingly to reflect the new behaviour. Especially test
                 correct capacity reallocation for larger numbers of values
                 being added.</para>
@@ -5211,17 +5217,14 @@ sin(4 * PI)=4518.2187229323445, difference=4518.2187229323445</programlisting>
                 <methodname>void clear()</methodname> enabling a user to
                 support different sets of values.</para>
 
-                <para>Do not forget to extend your
-                <productname>Junit</productname> tests. You may want to import
-                an <link
+                <para>Do not forget to extend your <xref linkend="glo_Junit"/>
+                tests. You may want to import an <link
                 xlink:href="Ref/api/P/Array/integerStoreStat/eclipse.zip">eclipse
                 skeleton project</link> to start from.</para>
 
                 <caution>
                   <para>When testing for equality of double values you may
-                  find the <productname
-                  xlink:href="http://junit.org">Junit</productname> method
-                  <methodname
+                  find the <xref linkend="glo_Junit"/> method <methodname
                   xlink:href="http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertEquals(double,%20double)">assertEquals()</methodname>to
                   be marked as <link
                   xlink:href="http://docs.oracle.com/javase/1.5.0/docs/guide/javadoc/deprecation/deprecation.html">deprecated</link>.
@@ -5280,14 +5283,14 @@ sin(4 * PI)=4518.2187229323445, difference=4518.2187229323445</programlisting>
             xlink:href="http://docs.oracle.com/javase/tutorial/java/annotations">Lesson:
             Annotations</link>. Don't worry if you do not understand the
             complete article. The primary intention is about understanding the
-            <code>@Test</code> annotation in <productname>Junit</productname>,
-            see next topic.</para>
+            <code>@Test</code> annotation in <xref linkend="glo_Junit"/>, see
+            next topic.</para>
           </glossdef>
         </glossentry>
 
         <glossentry>
-          <glossterm>Unit testing using
-          <productname>Junit</productname></glossterm>
+          <glossterm>Unit testing using <xref
+          linkend="glo_Junit"/></glossterm>
 
           <glossdef>
             <para>Read <link
@@ -5714,7 +5717,8 @@ public class Driver {
 
                       <para>You may either construct a suitable copy
                       containing the current elements yourself or get
-                      enlightened by reading the API documentation of <link
+                      enlightened by reading the <xref linkend="glo_API"/>
+                      documentation of <link
                       xlink:href="http://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOfRange-int:A-int-int-">copyOfRange(...)</link>.</para>
                     </caution>
                   </listitem>
@@ -5743,9 +5747,9 @@ for (final int i: unsortedValues) {
                     <para>Do not forget to consider value sets which include
                     duplicates and write tests accordingly!</para>
 
-                    <para>Hint: The <productname
-                    xlink:href="http://junit.org">Junit</productname>
-                    framework provides a (convenience) method <methodname
+                    <para>Hint: The <xref linkend="glo_Junit"/> <xref
+                    linkend="glo_framework"/> provides a (convenience) method
+                    <methodname
                     xlink:href="http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertArrayEquals(int[],%20int[])">assertArrayEquals(...)</methodname>.</para>
                   </listitem>
 
@@ -5912,9 +5916,9 @@ for (final int i: unsortedValues) {
                     <para>Do not forget to consider value sets which include
                     duplicates and write tests accordingly!</para>
 
-                    <para>Hint: The <productname
-                    xlink:href="http://junit.org">Junit</productname>
-                    framework provides a (convenient) method <methodname
+                    <para>Hint: The <xref linkend="glo_Junit"/> <xref
+                    linkend="glo_framework"/> provides a (convenient) method
+                    <methodname
                     xlink:href="http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertArrayEquals(int[],%20int[])">assertArrayEquals(...)</methodname>.</para>
                   </listitem>
 
@@ -6108,7 +6112,8 @@ values newArray  | 1| 2| F| 7| 9|  | ...</programlisting>
         <listitem>
           <para>Read the <link
           xlink:href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html">String
-          API</link>. Try to understand methods concerning:</para>
+          <xref linkend="glo_API"/></link>. Try to understand methods
+          concerning:</para>
 
           <itemizedlist>
             <listitem>
@@ -6132,6 +6137,178 @@ values newArray  | 1| 2| F| 7| 9|  | ...</programlisting>
     <section xml:id="sd1StringExercise">
       <title>Exercises</title>
 
+      <section xml:id="greenfootConfigureEclipse">
+        <title>Developing <xref linkend="glo_Greenfoot"/> applications using
+        the <xref linkend="glo_Eclipse"/> <xref linkend="glo_IDE"/>.</title>
+
+        <para>Steps being described in this section are optional and only
+        required if you like to develop <xref linkend="glo_Greenfoot"/>
+        applications using <xref linkend="glo_Eclipse"/>.</para>
+
+        <para>When using the <xref linkend="glo_Greenfoot"/> <xref
+        linkend="glo_IDE"/> your <xref linkend="glo_Java"/> code uses services
+        from the underlying <productname>Greenfoot</productname> <xref
+        linkend="glo_framework"/> which in turn uses another framework called
+        <xref linkend="glo_BlueJ"/>. If you want to use <xref
+        linkend="glo_Eclipse"/> for <xref linkend="glo_Greenfoot"/>
+        development based on <xref linkend="glo_Maven"/> you have to define
+        <xref linkend="glo_Greenfoot"/> within the project's <xref
+        linkend="glo_pom.xml"/> file's dependency section. You must provide
+        both dependencies (at least locally on your workstation):</para>
+
+        <glosslist>
+          <glossentry>
+            <glossterm>Locally install <xref linkend="glo_BlueJ"/>
+            dependencies</glossterm>
+
+            <glossdef>
+              <para>Download <uri
+              xlink:href="http://www.mi.hdm-stuttgart.de/freedocs/topic/de.hdm_stuttgart.mi.swd1/Ref/api/P/Maven/bluej/eclipse.zip">http://www.mi.hdm-stuttgart.de/freedocs/topic/de.hdm_stuttgart.mi.swd1/Ref/api/P/Maven/bluej/eclipse.zip</uri>
+              and unzip it to a subfolder <filename>Bluej</filename>. Import
+              this Folder as a Maven project into <xref
+              linkend="glo_Eclipse"/> and right click on pom.xml choosing
+              <guisubmenu>mvn install</guisubmenu>. This will compile the
+              sources and install <xref linkend="glo_BlueJ"/> into your local
+              <xref linkend="glo_Maven"/> repository below
+              <filename>yourHomeDirPath/.m2</filename>.</para>
+            </glossdef>
+          </glossentry>
+
+          <glossentry>
+            <glossterm>Locally install <xref linkend="glo_Greenfoot"/>
+            dependencies</glossterm>
+
+            <glossdef>
+              <para>Repeat the previous step for <uri
+              xlink:href="http://www.mi.hdm-stuttgart.de/freedocs/topic/de.hdm_stuttgart.mi.swd1/Ref/api/P/Maven/greenfoot/eclipse.zip">http://www.mi.hdm-stuttgart.de/freedocs/topic/de.hdm_stuttgart.mi.swd1/Ref/api/P/Maven/greenfoot/eclipse.zip</uri>
+              using a subfolder <filename>Greenfoot</filename>.</para>
+            </glossdef>
+          </glossentry>
+
+          <glossentry>
+            <glossterm>Adding <xref linkend="glo_Maven"/> dependency to your
+            <productname>Greenfoot</productname> game project</glossterm>
+
+            <glossdef>
+              <para>You may now create your own <xref
+              linkend="glo_Greenfoot"/> Maven <xref linkend="glo_Eclipse"/>
+              project by adding the newly created <xref
+              linkend="glo_Greenfoot"/> Maven artifact as a project
+              dependency:</para>
+
+              <programlisting language="none">...
+  &lt;dependencies&gt;
+ ...
+    <emphasis role="bold">&lt;dependency&gt;
+      &lt;groupId&gt;de.hdm-stuttgart.mi&lt;/groupId&gt;
+      &lt;artifactId&gt;greenfoot&lt;/artifactId&gt;
+      &lt;version&gt;2.3.0&lt;/version&gt;
+    &lt;/dependency&gt;</emphasis>
+  &lt;/dependencies&gt;...</programlisting>
+
+              <para>Due to <xref linkend="glo_Greenfoot"/>'s simplicity and in
+              contrast to common <xref linkend="glo_Java"/> <quote>best
+              practice</quote> you'll off course have to create all classes
+              inside the <quote>default</quote> package ignoring or
+              suppressing related compiler warnings.</para>
+            </glossdef>
+          </glossentry>
+        </glosslist>
+
+        <caution>
+          <para>Caveat: Windows and Mac users may require further
+          configuration described below.</para>
+        </caution>
+
+        <para>On Windows you'll have to instruct <xref linkend="glo_Eclipse"/>
+        to use a <xref linkend="glo_JDK"/> and not just a <xref
+        linkend="glo_JRE"/> (being the default). Whenever you install a <xref
+        linkend="glo_JDK"/> (like <link
+        xlink:href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html">JDK
+        1.8.0</link>) on Windows a so called private <xref linkend="glo_JRE"/>
+        is being installed as well by default as well:</para>
+
+        <informalfigure>
+          <mediaobject>
+            <imageobject>
+              <imagedata fileref="Ref/Screen/EclipseConfig/windowsCmdJdkJre.png"/>
+            </imageobject>
+          </mediaobject>
+        </informalfigure>
+
+        <para>The problem: A library tools.jar being required by <xref
+        linkend="glo_BlueJ"/> is part of a <xref linkend="glo_JDK"/> but not
+        of a <xref linkend="glo_JRE"/>. Different resolutions are being
+        subsequently listed in descending order of ugliness (authors
+        opinion):</para>
+
+        <glosslist>
+          <glossentry>
+            <glossterm>Explicitly defining the <xref linkend="glo_JDK"/> in
+            <xref linkend="glo_Eclipse"/></glossterm>
+
+            <glossdef>
+              <para>Modify <filename>eclipse.ini</filename> in your <xref
+              linkend="glo_Eclipse"/> root installation directory pointing to
+              a <xref linkend="glo_JDK"/> in favour of the <xref
+              linkend="glo_JRE"/> default. The highlighted lines must appear
+              <emphasis role="bold">before</emphasis> any
+              <option>-vmargs</option> options.</para>
+
+              <programlisting language="none">...
+-showsplash
+org.eclipse.platform
+--launcher.XXMaxPermSize
+256m
+--launcher.defaultAction
+openFile
+--launcher.appendVmargs
+<emphasis role="bold">-vm
+C:\Program Files\Java\jdk1.8.0_25\bin/javaw
+</emphasis>-vmargs
+-Dosgi.requiredJavaVersion=1.6
+-Xms40m
+-Xmx2048m</programlisting>
+            </glossdef>
+          </glossentry>
+
+          <glossentry>
+            <glossterm>Fix <envar>JAVA_HOME</envar></glossterm>
+
+            <glossdef>
+              <para>Define the environment variable <envar>JAVA_HOME</envar>
+              on operating system level pointing to your <xref
+              linkend="glo_JDK"/> of choice's root directory:</para>
+
+              <programlisting language="none"><emphasis role="bold">set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_25</emphasis></programlisting>
+            </glossdef>
+          </glossentry>
+
+          <glossentry>
+            <glossterm>Setting a static path in <xref
+            linkend="glo_pom.xml"/></glossterm>
+
+            <glossdef>
+              <para>Explicitly set the required dependencies fully qualified
+              pathname in each <xref linkend="glo_pom.xml"/>:</para>
+
+              <programlisting language="none">&lt;dependency&gt;
+			&lt;groupId&gt;com.sun&lt;/groupId&gt;
+			&lt;artifactId&gt;tools&lt;/artifactId&gt;
+			&lt;version&gt;1.8.0&lt;/version&gt;
+			&lt;scope&gt;system&lt;/scope&gt;
+			<emphasis role="bold">&lt;systemPath&gt;C:\Program Files\Java\jdk1.8.0_25\lib\tools.jar&lt;/systemPath&gt;</emphasis>
+		&lt;/dependency&gt;</programlisting>
+            </glossdef>
+          </glossentry>
+        </glosslist>
+
+        <para>Needless to mention these path settings have to be revised
+        accordingly whenever your <xref linkend="glo_JDK"/> receives an update
+        to e.g. <xref linkend="glo_JDK"/> 1.8.0_31. The author humbly welcomes
+        any advice towards a better solution.</para>
+      </section>
+
       <section xml:id="sd1LifeWorld">
         <title>Creating the Game of life's world</title>
 
@@ -6140,85 +6317,18 @@ values newArray  | 1| 2| F| 7| 9|  | ...</programlisting>
           xlink:href="http://en.wikipedia.org/wiki/Conway's_Game_of_Life">Game
           of Life</quote>'s world</title>
 
-          <para>The following exercises may be carried out using the
-          <productname>Greenfoot</productname> environment. If you however
-          prefer Eclipse for development and use
-          <productname>Greenfoot</productname> just for running the examples
-          you may follow the subsequent steps.</para>
-
-          <para>Actually your Java game code uses the
-          <productname>Greenfoot</productname> runtime which in turn uses
-          another framework called <productname
-          xlink:href="http://www.bluej.org">blueJ</productname>. If you want
-          to use Eclipse for actual development you have to provide both Bluej
-          and Greenfoot to your project. This may be achieved by:</para>
-
           <glosslist>
-            <glossentry>
-              <glossterm>Locally install <xref linkend="glo_BlueJ"/>
-              dependencies</glossterm>
-
-              <glossdef>
-                <para>Download <uri
-                xlink:href="http://www.mi.hdm-stuttgart.de/freedocs/topic/de.hdm_stuttgart.mi.swd1/Ref/api/P/Maven/bluej/eclipse.zip">http://www.mi.hdm-stuttgart.de/freedocs/topic/de.hdm_stuttgart.mi.swd1/Ref/api/P/Maven/bluej/eclipse.zip</uri>
-                and unzip it to a subfolder <filename>Bluej</filename>. Import
-                this Folder as a Maven project into Eclipse and right click on
-                pom.xml choosing <guisubmenu>mvn install</guisubmenu>. This
-                will install Bluej into your local Maven repository below
-                <filename>yourHomeDirPath/.m2</filename>.</para>
-              </glossdef>
-            </glossentry>
-
-            <glossentry>
-              <glossterm>Locally install <xref linkend="glo_Greenfoot"/>
-              dependencies</glossterm>
-
-              <glossdef>
-                <para>Repeat the previous step for <uri
-                xlink:href="http://www.mi.hdm-stuttgart.de/freedocs/topic/de.hdm_stuttgart.mi.swd1/Ref/api/P/Maven/greenfoot/eclipse.zip">http://www.mi.hdm-stuttgart.de/freedocs/topic/de.hdm_stuttgart.mi.swd1/Ref/api/P/Maven/greenfoot/eclipse.zip</uri>
-                using a subfolder <filename>Greenfoot</filename>.</para>
-              </glossdef>
-            </glossentry>
-
-            <glossentry>
-              <glossterm>Open your own <productname>Greenfoot</productname>
-              game project</glossterm>
-
-              <glossdef>
-                <para>You may now create your own <xref
-                linkend="glo_Greenfoot"/> Maven <xref linkend="glo_Eclipse"/>
-                project by adding the newly created <xref
-                linkend="glo_Greenfoot"/> Maven artifact as a project
-                dependency:</para>
-
-                <programlisting language="none">...
-  &lt;dependencies&gt;
- ...
-    &lt;dependency&gt;
-      &lt;groupId&gt;de.hdm-stuttgart.mi&lt;/groupId&gt;
-      &lt;artifactId&gt;greenfoot&lt;/artifactId&gt;
-      &lt;version&gt;2.3.0&lt;/version&gt;
-    &lt;/dependency&gt;
-  &lt;/dependencies&gt;...</programlisting>
-
-                <para>Due to <productname>Greenfoot</productname>'s simplicity
-                and in contrast to common Java practice you'll off course have
-                to create all classes inside the <quote>default</quote>
-                package ignoring or suppressing compiler warnings.</para>
-              </glossdef>
-            </glossentry>
-
             <glossentry>
               <glossterm>Exporting to your separate
               <productname>Greenfoot</productname> environment</glossterm>
 
               <glossdef>
                 <para>As soon as you actually want to run your game copy all
-                Java files from your eclipse project to your
-                <productname>Greenfoot</productname> environment. A graphical
-                file manager might assist you or you may simply use shell
-                commands (You'll need to do this next term in <quote>Operating
-                Systems</quote> anyway) like e.g.:</para>
+                Java files from your <xref linkend="glo_Eclipse"/> project to
+                your <productname>Greenfoot</productname> environment. A
+                graphical file manager might assist you or you may simply use
+                shell commands (You'll need to do this next term in
+                <quote>Operating Systems</quote> anyway) like e.g.:</para>
 
                 <programlisting language="none">goik@goiki:~$ cd ~/workspace/life/src/main/java
 goik@goiki:~/workspace/life/src/main/java$ ls
@@ -6433,7 +6543,7 @@ goik@goiki:~/workspace/life/src/main/java$ cp *.java ~/my-scenarios/Life</progra
                     xlink:href="http://www.greenfoot.org/files/javadoc/greenfoot/Actor.html#act()">Actor</link>.
                     You'll learn about the temporal order in which these are
                     being invoked by the <productname>Greenfoot</productname>
-                    framework.</para>
+                    <xref linkend="glo_framework"/>.</para>
                   </listitem>
 
                   <listitem>
@@ -6541,7 +6651,8 @@ goik@goiki:~/workspace/life/src/main/java$ cp *.java ~/my-scenarios/Life</progra
                         <para><code>Hey, Roy! Am I mayor? Yeh!</code> --&gt;
                         <code>heyroyamimayoryeh</code></para>
 
-                        <para>You may search the API of class <classname
+                        <para>You may search the <xref linkend="glo_API"/> of
+                        class <classname
                         xlink:href="http://docs.oracle.com/javase/8/docs/api/java/lang/Character.html">Character</classname>
                         assisting you to distinguish letters from
                         non-letters.</para>
@@ -6747,12 +6858,13 @@ public class InputValidator {
                 </listitem>
 
                 <listitem>
-                  <para>Simulating command line arguments in eclipse requires
-                  a run time configuration. Click <guimenu>Run</guimenu>
-                  <guimenuitem>Run Configurations...</guimenuitem>. Choose
-                  <quote>Java Applications</quote> and "new launch
-                  configuration" from the panel's left side, choose your
-                  project and main class (if not already selected).</para>
+                  <para>Simulating command line arguments in <xref
+                  linkend="glo_Eclipse"/> requires a run time configuration.
+                  Click <guimenu>Run</guimenu> <guimenuitem>Run
+                  Configurations...</guimenuitem>. Choose <quote>Java
+                  Applications</quote> and "new launch configuration" from the
+                  panel's left side, choose your project and main class (if
+                  not already selected).</para>
 
                   <screenshot>
                     <info>
@@ -6848,7 +6960,8 @@ public class InputValidator {
                     </glossentry>
 
                     <glossentry>
-                      <glossterm>From inside Eclipse:</glossterm>
+                      <glossterm>From inside <xref
+                      linkend="glo_Eclipse"/>:</glossterm>
 
                       <glossdef>
                         <para>Create a maven run time configuration (see
@@ -7163,7 +7276,7 @@ final BufferedReader inputBufferedReader = new BufferedReader(fileReader);</prog
                 </glossentry>
               </glosslist>
 
-              <para><productname>Junit</productname> tests of internal
+              <para><xref linkend="glo_Junit"/> tests of internal
               functionality:</para>
 
               <glosslist>
@@ -7747,9 +7860,9 @@ c12.equals("dummy"):false
                   </listitem>
 
                   <listitem>
-                    <para>Write a <productname>Junit</productname> test which
-                    reads from a given input file and compares its result with
-                    a hard coded set of expected strings.</para>
+                    <para>Write a <xref linkend="glo_Junit"/> test which reads
+                    from a given input file and compares its result with a
+                    hard coded set of expected strings.</para>
                   </listitem>
                 </orderedlist>
               </question>
@@ -7760,7 +7873,7 @@ c12.equals("dummy"):false
                 </annotation>
 
                 <para>The input file smalltest.txt may be used to define a
-                <productname>Junit</productname> test:</para>
+                <xref linkend="glo_Junit"/> test:</para>
 
                 <programlisting language="java">  @Test
   public void testWordSet() throws FileNotFoundException, IOException {
@@ -7878,8 +7991,8 @@ public class LengthCompare  implements Comparator&lt;String&gt; {
                   </listitem>
 
                   <listitem>
-                    <para>Write a <productname>Junit</productname> test to
-                    assure correct sorting of strings.</para>
+                    <para>Write a <xref linkend="glo_Junit"/> test to assure
+                    correct sorting of strings.</para>
                   </listitem>
                 </orderedlist>
               </question>
@@ -8094,7 +8207,8 @@ public class WordFrequency {
                 <para role="eclipse">P/HtmlFormatting/Simple/Exercise</para>
               </annotation>
 
-              <para>Import the above project into eclipse. Executing
+              <para>Import the above project into <xref
+              linkend="glo_Eclipse"/>. Executing
               <classname>de.hdm_stuttgart.mi.sd1.htmlformat.Address2text</classname>
               yields the following output:</para>
 
diff --git a/Sda2/Ref/Fig/concurrentOptimisticFail.svg b/Sda2/Ref/Fig/concurrentOptimisticFail.svg
new file mode 100644
index 000000000..25ad653e3
--- /dev/null
+++ b/Sda2/Ref/Fig/concurrentOptimisticFail.svg
@@ -0,0 +1,2076 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:ns1="http://sozi.baierouge.fr"
+   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"
+   sodipodi:docname="concurrentOptimisticFail.svg"
+   inkscape:version="0.48.4 r9939"
+   version="1.1"
+   id="svg2"
+   height="418.78125"
+   width="536.09375">
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.1424092"
+     inkscape:cx="335.3683"
+     inkscape:cy="222.97191"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1176"
+     inkscape:window-x="0"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-global="false"
+     objecttolerance="10000"
+     guidetolerance="10000"
+     units="mm"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4604"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-37.27414px"
+       originy="-243.20196px" />
+  </sodipodi:namedview>
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="DiamondMend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DiamondMend"
+       style="overflow:visible">
+      <path
+         id="path4249"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,-2.6,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path4158"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="EmptyTriangleOutL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleOutL"
+       style="overflow:visible">
+      <path
+         id="path4309"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.8,0,0,0.8,-4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Lstart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lstart">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path3841" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareM"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3914"
+         d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="scale(0.4,0.4)" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Lend"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path3844" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DiamondM"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DiamondM">
+      <path
+         inkscape:connector-curvature="0"
+         transform="scale(0.4,0.4)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         id="path3923" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DiamondMH"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DiamondMH">
+      <path
+         inkscape:connector-curvature="0"
+         transform="scale(0.4,0.4)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         id="path4656" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1LendB"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LendB">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path4659" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareMU"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareMU"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path5221"
+         d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         transform="scale(0.4,0.4)" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Lend3"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend3">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path5224" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DiamondMo"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DiamondMo">
+      <path
+         inkscape:connector-curvature="0"
+         transform="scale(0.4,0.4)"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         id="path5799" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1LendO"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LendO">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path5802" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DiamondM1"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DiamondM1">
+      <path
+         inkscape:connector-curvature="0"
+         transform="scale(0.4,0.4)"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         id="path6393" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1LendV"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LendV">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6396" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareMN"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareMN"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path7813"
+         d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         transform="scale(0.4,0.4)" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1LstartP"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LstartP">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path7816" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareMb"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareMb"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path9491"
+         d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         transform="scale(0.4,0.4)" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1LendX"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LendX">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path9494" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareM8"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareM8"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path10143"
+         d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         transform="scale(0.4,0.4)" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1LendT"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LendT">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path10146" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareMNT"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareMNT"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path12195"
+         d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         transform="scale(0.4,0.4)" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1LstartPJ"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LstartPJ">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path12198" />
+    </marker>
+    <marker
+       inkscape:stockid="SquareMNTL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SquareMNTL"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path12907"
+         d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         transform="scale(0.4,0.4)" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Lendx"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lendx">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path12910" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="DiamondMoY"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="DiamondMoY">
+      <path
+         inkscape:connector-curvature="0"
+         transform="scale(0.4,0.4)"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         id="path13187" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1LendOe"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1LendOe">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#00ff00;fill-rule:evenodd;stroke:#00ff00;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path13190" />
+    </marker>
+    <marker
+       inkscape:stockid="EmptyTriangleOutLt"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleOutLt"
+       style="overflow:visible">
+      <path
+         id="path4692"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         transform="matrix(0.8,0,0,0.8,-4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="EmptyTriangleOutLt"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleOutLt-8"
+       style="overflow:visible">
+      <path
+         id="path4692-6"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         transform="matrix(0.8,0,0,0.8,-4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="EmptyTriangleOutLt"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleOutLt-3"
+       style="overflow:visible">
+      <path
+         id="path4692-7"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         transform="matrix(0.8,0,0,0.8,-4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1MendK"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1MendK">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path5820"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mendw"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mendw">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6591"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6594"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6-6"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6594-3"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-8"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-5" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-3"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-1"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-1" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-33"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-55"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-39"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-559"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-88"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-57"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6-9"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6594-5"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1MendK-6"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1MendK">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#ff0000;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path5820-7"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-4"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-3"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-6"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-06"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-5"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-58"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-16"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-6"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend6z-45"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend6z">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path6949-9"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <metadata
+     id="metadata7">
+    <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
+     transform="translate(-37.27414,-390.37897)"
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1">
+    <rect
+       y="417.87314"
+       x="349.56961"
+       height="199.09865"
+       width="75.529861"
+       id="rect6832-8-7"
+       style="fill:#f2f2f2;stroke:none" />
+    <rect
+       y="418.67703"
+       x="220.14207"
+       height="198.29477"
+       width="60.255787"
+       id="rect6832-8"
+       style="fill:#f2f2f2;stroke:none" />
+    <rect
+       y="542.20227"
+       x="470.04712"
+       height="219.77136"
+       width="59.100609"
+       id="view50-5"
+       style="fill:#f2f2f2;stroke:none" />
+    <rect
+       transform="translate(0,502.36221)"
+       y="40"
+       x="125"
+       height="220"
+       width="90"
+       id="rect6832"
+       style="fill:#f2f2f2;stroke:none" />
+    <text
+       transform="translate(0,308.2677)"
+       sodipodi:linespacing="125%"
+       id="text3004"
+       y="81.43441"
+       x="97.984795"
+       style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       xml:space="preserve"><tspan
+         y="81.43441"
+         x="97.984795"
+         id="tspan3006"
+         sodipodi:role="line" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="51.716835"
+       y="590.13226"
+       id="text4576"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4578"
+         x="51.716835"
+         y="590.13226">Database</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="57.058464"
+       y="728.79333"
+       id="text4584"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="57.058464"
+         y="728.79333"
+         id="tspan4588">Client 1</tspan></text>
+    <g
+       id="g4179"
+       transform="translate(1,19.000027)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596"
+         y="563.36218"
+         x="144"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="563.36218"
+           x="144"
+           id="tspan4598"
+           sodipodi:role="line">Jim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602"
+           sodipodi:role="line">37</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       transform="translate(116,159.00003)"
+       id="g4179-8">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-7"
+         y="563.36218"
+         x="144"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="563.36218"
+           x="144"
+           id="tspan4598-5"
+           sodipodi:role="line">Sid</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-4"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602-71"
+           sodipodi:role="line">37</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175-1"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177-60"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       transform="translate(1,159.00006)"
+       id="g4179-51">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-1"
+         y="563.36218"
+         x="144"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="563.36218"
+           x="144"
+           id="tspan4598-25"
+           sodipodi:role="line">Jim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-31"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602-8"
+           sodipodi:role="line">37</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175-0"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177-8"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       transform="translate(338.00974,158.19616)"
+       id="g4179-8-6">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-7-8"
+         y="563.36218"
+         x="144"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="563.36218"
+           x="144"
+           id="tspan4598-5-3"
+           sodipodi:role="line">Sid</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-4-2"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602-71-7"
+           sodipodi:role="line">37</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175-1-0"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177-60-8"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="434.38489"
+       y="695.90057"
+       id="text3223"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3225"
+         x="434.38489"
+         y="695.90057">not</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="428.35568"
+       y="711.52783"
+       id="text3227"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3229"
+         x="428.35568"
+         y="711.52783">equal</tspan></text>
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#ff0000;stroke:#ff0000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1MendK)"
+       d="m 458.72716,693.6655 21.97929,-5.67601"
+       id="path3231"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#ff0000;stroke:#ff0000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6)"
+       d="m 463.50182,711.70447 15.59684,18.87333"
+       id="path3231-0"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 165,717.36221 90,0"
+       id="path3231-0-2"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="220"
+       y="732.36218"
+       id="text7197"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan7199"
+         x="220"
+         y="732.36218">edit</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.99685039, 0.9992126;stroke-dashoffset:0"
+       d="m 45,135 440.8587,-0.40195"
+       id="path7201"
+       inkscape:connector-curvature="0"
+       transform="translate(0,502.36221)"
+       sodipodi:nodetypes="cc" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 490,598.34272 0,64.01949"
+       id="path3231-0-2-0"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 155,602.36221 0,105"
+       id="path3231-0-2-6"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g7293"
+       transform="translate(-104,-119.99997)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text7257"
+         y="777.36218"
+         x="250"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="777.36218"
+           x="250"
+           id="tspan7259"
+           sodipodi:role="line">r</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7261"
+         y="787.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="787.36218"
+           x="249"
+           id="tspan7263"
+           sodipodi:role="line">e</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7265"
+         y="797.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="797.36218"
+           x="249"
+           id="tspan7267"
+           sodipodi:role="line">a</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7269"
+         y="811.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="811.36218"
+           x="249"
+           id="tspan7271"
+           sodipodi:role="line">d</tspan></text>
+    </g>
+    <g
+       id="g7293-1"
+       transform="translate(246,-159.99997)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text7257-0"
+         y="777.36218"
+         x="250"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="777.36218"
+           x="250"
+           id="tspan7259-6"
+           sodipodi:role="line">r</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7261-0"
+         y="787.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="787.36218"
+           x="249"
+           id="tspan7263-7"
+           sodipodi:role="line">e</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7265-8"
+         y="797.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="797.36218"
+           x="249"
+           id="tspan7267-0"
+           sodipodi:role="line">a</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7269-7"
+         y="811.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="811.36218"
+           x="249"
+           id="tspan7271-3"
+           sodipodi:role="line">d</tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="540.64636"
+       y="763.52502"
+       id="text7375"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan7377"
+         x="540.64636"
+         y="763.52502">Time</tspan></text>
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:none;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DiamondMend);marker-end:url(#Arrow1Lend)"
+       d="m 119.60006,773.96791 448.14069,-0.99788"
+       id="path7379"
+       inkscape:connector-curvature="0" />
+    <g
+       transform="translate(368.98903,-340.85261)"
+       id="group30">
+      <rect
+         y="764.0553"
+         x="-142.33704"
+         height="187.11328"
+         width="197.42996"
+         id="view30"
+         style="fill:none;stroke:#0000ff;stroke-width:0.99921262;stroke-miterlimit:4;stroke-dasharray:none">
+        <title
+           id="title4592">Client side change</title>
+      </rect>
+      <text
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Sans"
+         x="-140.96068"
+         y="944.93225"
+         id="text8123"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan8125"
+           x="-140.96068"
+           y="944.93225">30</tspan></text>
+    </g>
+    <g
+       id="g4179-9"
+       transform="translate(100.20207,19.313639)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-54"
+         y="563.36218"
+         x="144"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="563.36218"
+           x="144"
+           id="tspan4598-7"
+           sodipodi:role="line">Jim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-9"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602-5"
+           sodipodi:role="line">37</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175-56"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177-3"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4179-92"
+       transform="translate(256.14621,15.21178)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-60"
+         y="564.81512"
+         x="141.5784"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="564.81512"
+           x="141.5784"
+           id="tspan4598-72"
+           sodipodi:role="line">Kim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-2"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602-9"
+           sodipodi:role="line">38</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175-10"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177-603"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="46.346935"
+       y="436.62521"
+       id="text4584-8"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="46.346935"
+         y="436.62521"
+         id="tspan4588-5">Client 2</tspan></text>
+    <g
+       transform="translate(8.0389767,42.606576)"
+       id="g9512">
+      <g
+         transform="translate(91.788679,-161.47396)"
+         id="g4179-9-6">
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="144"
+           y="563.36218"
+           id="text4596-54-5"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan4598-7-8"
+             x="144"
+             y="563.36218">Jim</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="145"
+           y="579.36218"
+           id="text4600-9-6"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan4602-5-2"
+             x="145"
+             y="579.36218">37</tspan></text>
+        <rect
+           style="fill:none;stroke:#000000"
+           id="rect4175-56-7"
+           width="25"
+           height="30"
+           x="140"
+           y="50"
+           transform="translate(0,502.36221)" />
+        <path
+           style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 140,65 25,0 0,0"
+           id="path4177-3-3"
+           inkscape:connector-curvature="0"
+           transform="translate(0,502.36221)" />
+      </g>
+    </g>
+    <g
+       transform="translate(-6.4311811,41.802678)"
+       id="g9480">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-54-6"
+         y="402.79425"
+         x="314.40662"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="402.79425"
+           x="314.40662"
+           id="tspan4598-7-2"
+           sodipodi:role="line">Kim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-9-3"
+         y="418.04306"
+         x="318.28616"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="418.04306"
+           x="318.28616"
+           id="tspan4602-5-4"
+           sodipodi:role="line">37</tspan></text>
+      <rect
+         y="391.04309"
+         x="313.28616"
+         height="30"
+         width="25"
+         id="rect4175-56-0"
+         style="fill:none;stroke:#000000" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4177-3-7"
+         d="m 313.28617,406.0431 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 252.81184,570.77087 0.76737,-104.10474"
+       id="path3231-0-2-20"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g7293-7"
+       transform="translate(-7.2565342,-287.73251)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text7257-3"
+         y="777.36218"
+         x="250"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="777.36218"
+           x="250"
+           id="tspan7259-3"
+           sodipodi:role="line">r</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7261-9"
+         y="787.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="787.36218"
+           x="249"
+           id="tspan7263-1"
+           sodipodi:role="line">e</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7265-4"
+         y="797.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="797.36218"
+           x="249"
+           id="tspan7267-2"
+           sodipodi:role="line">a</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7269-9"
+         y="811.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="811.36218"
+           x="249"
+           id="tspan7271-1"
+           sodipodi:role="line">d</tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="270.72177"
+       y="445.92776"
+       id="text7197-1"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan7199-7"
+         x="270.72177"
+         y="445.92776">edit</tspan></text>
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 265.1876,448.28729 39.35444,0"
+       id="path3231-0-2-8"
+       inkscape:connector-curvature="0" />
+    <g
+       transform="translate(44.264561,41.842249)"
+       id="g9480-3">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-54-6-7"
+         y="402.79425"
+         x="314.40662"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="402.79425"
+           x="314.40662"
+           id="tspan4598-7-2-3"
+           sodipodi:role="line">Kim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-9-3-9"
+         y="418.04306"
+         x="318.28616"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="418.04306"
+           x="318.28616"
+           id="tspan4602-5-4-1"
+           sodipodi:role="line">37</tspan></text>
+      <rect
+         y="391.04309"
+         x="313.28616"
+         height="30"
+         width="25"
+         id="rect4175-56-0-3"
+         style="fill:none;stroke:#000000" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4177-3-7-8"
+         d="m 313.28617,406.0431 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4179-9-68"
+       transform="translate(218.35463,15.577937)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-54-3"
+         y="563.36218"
+         x="144"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="563.36218"
+           x="144"
+           id="tspan4598-7-1"
+           sodipodi:role="line">Jim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-9-0"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602-5-5"
+           sodipodi:role="line">37</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175-56-8"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177-3-5"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4179-9-68-9"
+       transform="translate(217.95269,-77.272243)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-54-3-9"
+         y="563.36218"
+         x="144"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="563.36218"
+           x="144"
+           id="tspan4598-7-1-8"
+           sodipodi:role="line">Jim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-9-0-5"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602-5-5-1"
+           sodipodi:role="line">37</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175-56-8-7"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177-3-5-6"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g7293-1-0"
+       transform="translate(111.31837,-251.55711)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text7257-0-0"
+         y="777.36218"
+         x="250"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="777.36218"
+           x="250"
+           id="tspan7259-6-5"
+           sodipodi:role="line">r</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7261-0-5"
+         y="787.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="787.36218"
+           x="249"
+           id="tspan7263-7-0"
+           sodipodi:role="line">e</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7265-8-2"
+         y="797.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="797.36218"
+           x="249"
+           id="tspan7267-0-3"
+           sodipodi:role="line">a</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7269-7-1"
+         y="811.36218"
+         x="249"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="811.36218"
+           x="249"
+           id="tspan7271-3-0"
+           sodipodi:role="line">d</tspan></text>
+    </g>
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 371.73925,567.8398 -0.0365,-61.09622"
+       id="path3231-0-2-20-0"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="304.20624"
+       y="482.57654"
+       id="text3223-9"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3225-0"
+         x="304.20624"
+         y="482.57654">still</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="299.38284"
+       y="494.98822"
+       id="text3227-0"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan3229-6"
+         x="299.38284"
+         y="494.98822">equal</tspan></text>
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#ff0000;stroke:#ff0000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1MendK)"
+       d="M 336.58747,479.13567 360.57651,460.5973"
+       id="path3231-05"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#ff0000;stroke:#ff0000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6)"
+       d="m 336.53875,491.54736 25.24361,6.01096"
+       id="path3231-0-5"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g4179-92-0"
+       transform="translate(255.33392,-119.07492)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-60-4"
+         y="564.81512"
+         x="141.5784"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="564.81512"
+           x="141.5784"
+           id="tspan4598-72-0"
+           sodipodi:role="line">Kim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-2-1"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602-9-3"
+           sodipodi:role="line">38</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175-10-8"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177-603-3"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 409.84366,464.14583 0.40195,101.78441"
+       id="path3231-0-2-6-1"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g7303-6"
+       transform="translate(107.76957,-300.04669)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text7273-5"
+         y="777.36218"
+         x="304"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="777.36218"
+           x="304"
+           id="tspan7275-4"
+           sodipodi:role="line">w</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7277-7"
+         y="787.36218"
+         x="307"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="787.36218"
+           x="307"
+           id="tspan7279-8"
+           sodipodi:role="line">r</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7281-2"
+         y="800.36218"
+         x="307"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="800.36218"
+           x="307"
+           id="tspan7283-5"
+           sodipodi:role="line">i</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7285-3"
+         y="811.36218"
+         x="307"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="811.36218"
+           x="307"
+           id="tspan7287-0"
+           sodipodi:role="line">t</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text7289-7"
+         y="821.36218"
+         x="306"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="821.36218"
+           x="306"
+           id="tspan7291-4"
+           sodipodi:role="line">e</tspan></text>
+    </g>
+    <g
+       id="g4179-92-6"
+       transform="translate(337.73342,15.577937)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-60-2"
+         y="564.81512"
+         x="141.5784"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="564.81512"
+           x="141.5784"
+           id="tspan4598-72-8"
+           sodipodi:role="line">Kim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-2-6"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602-9-2"
+           sodipodi:role="line">38</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175-10-5"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177-603-6"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4179-92-6-9"
+       transform="translate(337.73343,111.64371)">
+      <text
+         sodipodi:linespacing="125%"
+         id="text4596-60-2-0"
+         y="564.81512"
+         x="141.5784"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="564.81512"
+           x="141.5784"
+           id="tspan4598-72-8-6"
+           sodipodi:role="line">Kim</tspan></text>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4600-2-6-5"
+         y="579.36218"
+         x="145"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="579.36218"
+           x="145"
+           id="tspan4602-9-2-3"
+           sodipodi:role="line">38</tspan></text>
+      <rect
+         transform="translate(0,502.36221)"
+         y="50"
+         x="140"
+         height="30"
+         width="25"
+         id="rect4175-10-5-0"
+         style="fill:none;stroke:#000000" />
+      <path
+         transform="translate(0,502.36221)"
+         inkscape:connector-curvature="0"
+         id="path4177-603-6-1"
+         d="m 140,65 25,0 0,0"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       sodipodi:linespacing="125%"
+       id="text10060"
+       y="554.27484"
+       x="475.19913"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       xml:space="preserve"><tspan
+         y="554.27484"
+         x="475.19913"
+         id="tspan10062"
+         sodipodi:role="line">Rollback</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.99685039, 0.9992126;stroke-dashoffset:0"
+       d="m 45.11468,532.49558 310.62728,-0.40195"
+       id="path7201-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.99685039, 0.9992126;stroke-dashoffset:0"
+       d="m 375.11467,532.09362 32.4787,-0.40195"
+       id="path7201-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.99685039, 0.9992126;stroke-dashoffset:0"
+       d="m 414.50565,532.09362 149.44581,0"
+       id="path7201-5-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.99685039, 0.9992126;stroke-dashoffset:0"
+       d="m 505.54706,636.80129 61.01707,0"
+       id="path7201-5-7-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <g
+       transform="translate(-358.53836,-298.24603)"
+       id="group10">
+      <rect
+         ry="0"
+         y="688.97858"
+         x="396.16928"
+         height="418.05881"
+         width="535.38202"
+         id="view10"
+         style="fill:none;stroke:#0000ff;stroke-width:0.70866144;stroke-miterlimit:4;stroke-dasharray:none" />
+      <text
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Sans"
+         x="908.26019"
+         y="734.47485"
+         id="text10132"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan10134"
+           x="908.26019"
+           y="734.47485">10</tspan></text>
+    </g>
+    <g
+       transform="translate(495.67035,-201.51711)"
+       id="group40">
+      <rect
+         ry="0"
+         y="760.83972"
+         x="-147.96432"
+         height="189.52496"
+         width="219.9391"
+         id="view30-3"
+         style="fill:none;stroke:#0000ff;stroke-width:0.99921262;stroke-miterlimit:4;stroke-dasharray:none">
+        <title
+           id="title4592-2">Client side change</title>
+      </rect>
+      <text
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Sans"
+         x="-140.96068"
+         y="944.93225"
+         id="text8123-2"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan8125-2"
+           x="-140.96068"
+           y="944.93225">40</tspan></text>
+    </g>
+    <g
+       id="group20"
+       transform="translate(2.3062254,4.9968216)">
+      <rect
+         style="fill:none;stroke:#0000ff;stroke-width:1.0629921;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+         id="rect15119"
+         width="233.31313"
+         height="209.09776"
+         x="49.192089"
+         y="562.08331" />
+      <text
+         xml:space="preserve"
+         style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Sans"
+         x="55.342022"
+         y="765.41553"
+         id="text15121"
+         sodipodi:linespacing="125%"><tspan
+           sodipodi:role="line"
+           id="tspan15123"
+           x="55.342022"
+           y="765.41553">20</tspan></text>
+    </g>
+    <text
+       sodipodi:linespacing="125%"
+       id="text3922"
+       y="409.10367"
+       x="271.74283"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       xml:space="preserve"><tspan
+         y="409.10367"
+         x="271.74283"
+         id="tspan3924"
+         sodipodi:role="line">Long transaction</tspan></text>
+    <path
+       transform="translate(37.27659,416.00309)"
+       inkscape:connector-curvature="0"
+       id="path3926"
+       d="M 183.18731,-24.142754 182.91552,5.4824942"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path3926-7"
+       d="m 426.07399,392.53982 -0.27179,29.62525"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 275.95029,798.17759 -149.01838,-0.0137"
+       id="path3231-0-2-20-0-5"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 415.6607,798.50858 113.48769,-0.31162"
+       id="path3231-0-2-20-0-8"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 384.93054,404.84493 39.91682,0.0568"
+       id="path3231-0-2-20-0-3"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:#000000;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend6z)"
+       d="m 268.87567,404.57314 -46.51281,-0.21498"
+       id="path3231-0-2-20-0-9"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0"
+       id="path3926-3"
+       d="m 124.68365,762.58463 0.65419,44.94976"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0"
+       id="path3926-39"
+       d="m 530.23246,762.37525 0.0262,45.64194"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <text
+       sodipodi:linespacing="125%"
+       id="text3922-7"
+       y="800.83777"
+       x="295.25751"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       xml:space="preserve"><tspan
+         y="800.83777"
+         x="295.25751"
+         id="tspan3924-5"
+         sodipodi:role="line">Long transaction</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="374.57156"
+       y="613.15881"
+       id="text6011"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan6013"
+         x="374.57156"
+         y="613.15881">Commit</tspan></text>
+  </g>
+  <script
+     id="sozi-script"
+     ns1:version="14.10-05142318">function namespace(b,d,a){var c=b;d.split(&quot;.&quot;).forEach(function(e){if(typeof c[e]===&quot;undefined&quot;){c[e]={}}c=c[e]});if(a){a(c,b)}return c}namespace(this,&quot;sozi.events&quot;,function(b){var a={};b.listen=function(c,d){if(!a.hasOwnProperty(c)){a[c]=[]}a[c].push(d)};b.fire=function(d){var c=Array.prototype.slice.call(arguments,1);if(a.hasOwnProperty(d)){a[d].forEach(function(e){e.apply(null,c)})}}});namespace(this,&quot;sozi.proto&quot;,function(a){a.Object={installConstructors:function(){function b(){}b.prototype=this;this.instance=function(){var c=new b();c.construct.apply(c,arguments);return c};this.subtype=function(d){var c=new b();c.augment(d);c.installConstructors();return c}},construct:function(){},augment:function(c){for(var b in c){if(c.hasOwnProperty(b)){this[b]=c[b]}}return this},bind:function(c){var b=this;return function(){return c.apply(b,arguments)}}};a.Object.installConstructors()});namespace(this,&quot;sozi.actions&quot;,function(A,g){var u=namespace(g,&quot;sozi.player&quot;);var v=namespace(g,&quot;sozi.display&quot;);var n=g.document;var o=0;var w=1;var t=1.05;var y=5;var m=5;var r=false;var i=0;var h=0;function a(C,B,D){u.stop();v.viewPorts.player.zoom(C&gt;0?t:1/t,B,D)}function x(B){u.stop();v.viewPorts.player.rotate(B&gt;0?y:-y)}function s(){if(sozi.framelist.isVisible()){sozi.framelist.hide();u.restart()}else{u.stop();sozi.framelist.show()}}function d(B){return v.viewPorts.player.contains(B.clientX,B.clientY)}function f(B){if(!d(B)){return}if(B.button===o){n.documentElement.addEventListener(&quot;mousemove&quot;,q,false);r=false;i=B.clientX;h=B.clientY}else{if(B.button===w){s()}}B.stopPropagation();B.preventDefault()}function q(B){if(!d(B)){return}u.stop();if(!r&amp;&amp;(Math.abs(B.clientX-i)&gt;m||Math.abs(B.clientY-h)&gt;m)){r=true}if(r){sozi.events.fire(&quot;sozi.player.cleanup&quot;);v.viewPorts.player.drag(B.clientX-i,B.clientY-h);i=B.clientX;h=B.clientY}B.stopPropagation()}function c(B){if(!d(B)){return}if(B.button===o){n.documentElement.removeEventListener(&quot;mousemove&quot;,q,false)}B.stopPropagation();B.preventDefault()}function p(B){if(!d(B)){return}u.moveToPrevious();B.stopPropagation();B.preventDefault()}function e(B){if(!d(B)){return}if(!r&amp;&amp;B.button!==w){u.moveToNext()}B.stopPropagation();B.preventDefault()}function j(B){if(!d(B)){return}if(!B){B=g.event}var C=0;if(B.wheelDelta){C=B.wheelDelta}else{if(B.detail){C=-B.detail}}if(C!==0){if(B.shiftKey){x(C)}else{a(C,B.clientX,B.clientY)}}B.stopPropagation();B.preventDefault()}function l(B){if(B.altKey||B.ctrlKey||B.metaKey){return}switch(B.charCode||B.which){case 43:a(1,g.innerWidth/2,g.innerHeight/2);break;case 45:a(-1,g.innerWidth/2,g.innerHeight/2);break;case 61:u.moveToCurrent();break;case 70:case 102:u.showAll();break;case 84:case 116:s();break;case 82:x(-1);break;case 114:x(1);break;default:return}B.stopPropagation();B.preventDefault()}function b(B){if(B.altKey||B.ctrlKey||B.metaKey){return}switch(B.keyCode){case 36:if(B.shiftKey){u.jumpToFirst()}else{u.moveToFirst()}break;case 35:if(B.shiftKey){u.jumpToLast()}else{u.moveToLast()}break;case 38:case 33:case 37:if(B.shiftKey){u.jumpToPrevious()}else{u.moveToPrevious()}break;case 40:case 34:case 39:case 13:case 32:if(B.shiftKey){u.jumpToNext()}else{u.moveToNext()}break;default:return}B.stopPropagation();B.preventDefault()}function z(B){B.stopPropagation()}function k(){var C=n.getElementsByTagName(&quot;a&quot;);for(var D=0;D&lt;C.length;D+=1){C[D].addEventListener(&quot;click&quot;,z,false);C[D].addEventListener(&quot;contextmenu&quot;,z,false)}var B=n.documentElement;B.addEventListener(&quot;click&quot;,e,false);B.addEventListener(&quot;mousedown&quot;,f,false);B.addEventListener(&quot;mouseup&quot;,c,false);B.addEventListener(&quot;contextmenu&quot;,p,false);B.addEventListener(&quot;DOMMouseScroll&quot;,j,false);g.onmousewheel=j;B.addEventListener(&quot;keypress&quot;,l,false);B.addEventListener(&quot;keydown&quot;,b,false)}sozi.events.listen(&quot;sozi.display.ready&quot;,k)});namespace(this,&quot;sozi.animation&quot;,function(d,g){var h=g.mozRequestAnimationFrame||g.webkitRequestAnimationFrame||g.msRequestAnimationFrame||g.oRequestAnimationFrame;var k=function(){return g.performance&amp;&amp;g.performance.now?g.performance.now():Date.now()};d.setAnimationFrameHandlers=function(l,m){h=l;k=m};var i=40;var c;var j=[];function e(){if(j.length&gt;0){if(h){h(e)}j.forEach(function(l){l.step(k())})}else{if(!h){g.clearInterval(c)}}}function b(){if(h){h(e)}else{c=g.setInterval(function(){e(k())},i)}}function a(l){j.push(l);if(j.length===1){b()}}function f(l){j.splice(j.indexOf(l),1)}d.Animator=sozi.proto.Object.subtype({construct:function(){this.durationMs=0;this.data=null;this.initialTime=0;this.started=false},start:function(l,m){this.durationMs=l;this.data=m;this.initialTime=k();this.onStep(0);if(!this.started){this.started=true;a(this)}},stop:function(){if(this.started){f(this);this.started=false}},step:function(m){var l=m-this.initialTime;if(l&gt;=this.durationMs){this.stop();this.onStep(1);this.onDone()}else{this.onStep(l/this.durationMs)}},onStep:function(l){},onDone:function(){}});d.profiles={linear:function(l){return l},accelerate:function(l){return Math.pow(l,3)},&quot;strong-accelerate&quot;:function(l){return Math.pow(l,5)},decelerate:function(l){return 1-Math.pow(1-l,3)},&quot;strong-decelerate&quot;:function(l){return 1-Math.pow(1-l,5)},&quot;accelerate-decelerate&quot;:function(l){var m=l&lt;=0.5?l:1-l,n=Math.pow(2*m,3)/2;return l&lt;=0.5?n:1-n},&quot;strong-accelerate-decelerate&quot;:function(l){var m=l&lt;=0.5?l:1-l,n=Math.pow(2*m,5)/2;return l&lt;=0.5?n:1-n},&quot;decelerate-accelerate&quot;:function(l){var m=l&lt;=0.5?l:1-l,n=(1-Math.pow(1-2*m,2))/2;return l&lt;=0.5?n:1-n},&quot;strong-decelerate-accelerate&quot;:function(l){var m=l&lt;=0.5?l:1-l,n=(1-Math.pow(1-2*m,3))/2;return l&lt;=0.5?n:1-n},&quot;immediate-beginning&quot;:function(l){return 1},&quot;immediate-end&quot;:function(l){return l===1?1:0},&quot;immediate-middle&quot;:function(l){return l&gt;=0.5?1:0}}});namespace(this,&quot;sozi.display&quot;,function(c,g){var f=&quot;http://www.w3.org/2000/svg&quot;;var b=&quot;http://www.w3.org/1999/xlink&quot;;var i=g.document;var k;var h;var j;c.viewPorts={};var e;c.CameraState=sozi.proto.Object.subtype({construct:function(){this.cx=this.cy=0;this.width=this.height=1;this.angle=0;this.clipped=true;this.transitionZoomPercent=0;this.transitionProfile=sozi.animation.profiles.linear;this.transitionPath=null},setCenter:function(l,m){this.cx=l;this.cy=m;return this},setSize:function(m,l){this.width=m;this.height=l;return this},setClipped:function(l){this.clipped=l;return this},setAngle:function(l){this.angle=(l+180)%360-180;return this},setRawAngle:function(l){this.angle=l;return this},setTransitionZoomPercent:function(l){this.transitionZoomPercent=l;return this},setTransitionProfile:function(l){this.transitionProfile=l;return this},setTransitionPath:function(l){this.transitionPath=l;return this},setAtElement:function(p){var s,o,t,m;if(p.nodeName===&quot;rect&quot;){s=p.x.baseVal.value;o=p.y.baseVal.value;t=p.width.baseVal.value;m=p.height.baseVal.value}else{var q=p.getBBox();s=q.x;o=q.y;t=q.width;m=q.height}var n=i.documentElement.createSVGPoint();n.x=s+t/2;n.y=o+m/2;var r=p.getCTM();n=n.matrixTransform(r);var l=Math.sqrt(r.a*r.a+r.b*r.b);return this.setCenter(n.x,n.y).setSize(t*l,m*l).setAngle(Math.atan2(r.b,r.a)*180/Math.PI)},setAtState:function(l){return this.setCenter(l.cx,l.cy).setSize(l.width,l.height).setAngle(l.angle).setClipped(l.clipped).setTransitionZoomPercent(l.transitionZoomPercent).setTransitionProfile(l.transitionProfile).setTransitionPath(l.transitionPath)},interpolatableAttributes:[&quot;width&quot;,&quot;height&quot;,&quot;angle&quot;],interpolate:function(n,o,t,v,r){var p=1-t;for(var q=0;q&lt;this.interpolatableAttributes.length;q+=1){var s=this.interpolatableAttributes[q];this[s]=o[s]*t+n[s]*p}var l=r?n.transitionPath:o.transitionPath;if(v&amp;&amp;l){var x=l.getTotalLength();if(r){var m=l.getPointAtLength(x);var u=l.getPointAtLength(0);var w=l.getPointAtLength(x*p)}else{var m=l.getPointAtLength(0);var u=l.getPointAtLength(x);var w=l.getPointAtLength(x*t)}this.cx=w.x+(o.cx-u.x)*t+(n.cx-m.x)*p;this.cy=w.y+(o.cy-u.y)*t+(n.cy-m.y)*p}else{this.cx=o.cx*t+n.cx*p;this.cy=o.cy*t+n.cy*p}}});c.Camera=c.CameraState.subtype({construct:function(n,o){c.CameraState.construct.call(this);this.viewPort=n;this.svgClipRect=i.createElementNS(f,&quot;rect&quot;);var m=i.createElementNS(f,&quot;clipPath&quot;);m.setAttribute(&quot;id&quot;,&quot;sozi-clip-path-&quot;+n.id+&quot;-&quot;+o);m.appendChild(this.svgClipRect);n.svgGroup.appendChild(m);var l=i.createElementNS(f,&quot;g&quot;);l.setAttribute(&quot;clip-path&quot;,&quot;url(#sozi-clip-path-&quot;+n.id+&quot;-&quot;+o+&quot;)&quot;);n.svgGroup.appendChild(l);if(n.isPrimary){this.svgLayer=i.createElementNS(f,&quot;g&quot;);this.svgLayer.appendChild(i.getElementById(o))}else{this.svgLayer=i.createElementNS(f,&quot;use&quot;);this.svgLayer.setAttributeNS(b,&quot;href&quot;,&quot;#&quot;+o)}l.appendChild(this.svgLayer)},setAtState:function(l){return c.CameraState.setAtState.call(this,l).update()},getScale:function(){return Math.min(this.viewPort.width/this.width,this.viewPort.height/this.height)},rotate:function(l){return this.setAngle(this.angle+l).update()},zoom:function(m,l,n){return this.setSize(this.width/m,this.height/m).drag((1-m)*(l-this.viewPort.width/2),(1-m)*(n-this.viewPort.height/2))},drag:function(m,l){var q=this.getScale();var o=this.angle*Math.PI/180;var n=Math.sin(o);var p=Math.cos(o);return this.setCenter(this.cx-(m*p-l*n)/q,this.cy-(m*n+l*p)/q).setClipped(false).update()},update:function(){var q=this.getScale();var n=this.width*q;var m=this.height*q;var l=(this.viewPort.width-n)/2;var r=(this.viewPort.height-m)/2;this.svgClipRect.setAttribute(&quot;x&quot;,this.clipped?l:0);this.svgClipRect.setAttribute(&quot;y&quot;,this.clipped?r:0);this.svgClipRect.setAttribute(&quot;width&quot;,this.clipped?n:this.viewPort.width);this.svgClipRect.setAttribute(&quot;height&quot;,this.clipped?m:this.viewPort.height);var p=-this.cx+this.width/2+l/q;var o=-this.cy+this.height/2+r/q;this.svgLayer.setAttribute(&quot;transform&quot;,&quot;scale(&quot;+q+&quot;)translate(&quot;+p+&quot;,&quot;+o+&quot;)rotate(&quot;+(-this.angle)+&quot;,&quot;+this.cx+&quot;,&quot;+this.cy+&quot;)&quot;);return this}});c.ViewPort=sozi.proto.Object.subtype({construct:function(n,m,l){this.id=n;c.viewPorts[n]=this;this.isPrimary=!!l;if(this.isPrimary){if(e){throw&quot;Failed to create a primary viewport. A primary viewport already exists.&quot;}else{e=this}}this.svgGroup=i.createElementNS(f,&quot;g&quot;);this.svgGroup.setAttribute(&quot;class&quot;,&quot;sozi-viewport&quot;);this.svgGroup.setAttribute(&quot;id&quot;,&quot;sozi-viewport-&quot;+n);i.documentElement.appendChild(this.svgGroup);this.setLocation(0,0).setSize(g.innerWidth,g.innerHeight);this.cameras={};m.forEach(function(o){this.cameras[o]=c.Camera.instance(this,o)},this)},setSize:function(m,l){this.width=m;this.height=l;return this},setLocation:function(l,m){this.x=l;this.y=m;return this},contains:function(l,m){return l&gt;=this.x&amp;&amp;l&lt;this.x+this.width&amp;&amp;m&gt;=this.y&amp;&amp;m&lt;this.y+this.height},getDocumentState:function(){var m=c.CameraState.instance().setCenter(k.x+k.width/2,k.y+k.height/2).setSize(k.width,k.height).setClipped(false);var l={};for(var n in this.cameras){l[n]=m}return l},update:function(){this.svgGroup.setAttribute(&quot;transform&quot;,&quot;translate(&quot;+this.x+&quot;,&quot;+this.y+&quot;)&quot;);for(var l in this.cameras){this.cameras[l].update()}return this},showFrame:function(l){for(var m in l.states){this.cameras[m].setAtState(l.states[m])}return this},drag:function(m,l){for(var n in this.cameras){this.cameras[n].drag(m,l)}return this},zoom:function(m,l,o){for(var n in this.cameras){this.cameras[n].zoom(m,l,o)}return this},rotate:function(l){for(var m in this.cameras){this.cameras[m].rotate(l)}return this},onWindowResize:function(m,l){this.setLocation(this.x*m,this.y*l).setSize(this.width*m,this.height*l).update()}});function d(){var l=i.documentElement;k=l.getBBox();h=g.innerWidth;j=g.innerHeight;l.setAttribute(&quot;width&quot;,h);l.setAttribute(&quot;height&quot;,j);sozi.events.fire(&quot;sozi.display.ready&quot;)}function a(){var l=i.documentElement;l.setAttribute(&quot;width&quot;,g.innerWidth);l.setAttribute(&quot;height&quot;,g.innerHeight);for(var m in c.viewPorts){c.viewPorts[m].onWindowResize(g.innerWidth/h,g.innerHeight/j)}h=g.innerWidth;j=g.innerHeight}sozi.events.listen(&quot;sozi.document.ready&quot;,d);g.addEventListener(&quot;resize&quot;,a,false)});namespace(this,&quot;sozi.document&quot;,function(c,e){var g=e.document;var b=&quot;http://sozi.baierouge.fr&quot;;var d={title:&quot;Untitled&quot;,sequence:&quot;0&quot;,hide:&quot;true&quot;,clip:&quot;true&quot;,&quot;show-in-frame-list&quot;:&quot;true&quot;,&quot;timeout-enable&quot;:&quot;false&quot;,&quot;timeout-ms&quot;:&quot;5000&quot;,&quot;transition-duration-ms&quot;:&quot;1000&quot;,&quot;transition-zoom-percent&quot;:&quot;0&quot;,&quot;transition-profile&quot;:&quot;linear&quot;,&quot;transition-path-hide&quot;:&quot;true&quot;};var h=[&quot;g&quot;,&quot;image&quot;,&quot;path&quot;,&quot;rect&quot;,&quot;circle&quot;,&quot;ellipse&quot;,&quot;line&quot;,&quot;polyline&quot;,&quot;polygon&quot;,&quot;text&quot;,&quot;clippath&quot;];c.frames=[];c.idLayerList=[];function j(l,k){return l.getAttributeNS(b,k)||d[k]}function i(o,p,k){var l=o.states[p]=o.states[p]||sozi.display.CameraState.instance();if(typeof l.transitionZoomPercent===&quot;undefined&quot;||k.hasAttributeNS(b,&quot;transition-zoom-percent&quot;)){l.setTransitionZoomPercent(parseInt(j(k,&quot;transition-zoom-percent&quot;),10))}if(typeof l.transitionProfile===&quot;undefined&quot;||k.hasAttributeNS(b,&quot;transition-profile&quot;)){l.setTransitionProfile(sozi.animation.profiles[j(k,&quot;transition-profile&quot;)])}if(typeof l.transitionPath===&quot;undefined&quot;||k.hasAttributeNS(b,&quot;transition-path&quot;)){var n=g.getElementById(k.getAttributeNS(b,&quot;transition-path&quot;));if(n&amp;&amp;n.nodeName===&quot;path&quot;){l.setTransitionPath(n);if(j(k,&quot;transition-path-hide&quot;)===&quot;true&quot;){n.style.visibility=&quot;hidden&quot;}}}if(k.hasAttributeNS(b,&quot;refid&quot;)){var m=g.getElementById(k.getAttributeNS(b,&quot;refid&quot;));if(m){l.setAtElement(m);if(j(k,&quot;hide&quot;)===&quot;true&quot;){m.style.visibility=&quot;hidden&quot;}}}if(k.hasAttributeNS(b,&quot;clip&quot;)){l.setClipped(j(k,&quot;clip&quot;)===&quot;true&quot;)}}function a(){var l=[];var p=g.getElementsByTagNameNS(b,&quot;layer&quot;);for(var n=0;n&lt;p.length;n+=1){var s=p[n].getAttributeNS(b,&quot;group&quot;);if(s&amp;&amp;l.indexOf(s)===-1){l.push(s)}}var r=g.documentElement;var o=&quot;http://www.w3.org/2000/svg&quot;;var q=g.createElementNS(o,&quot;g&quot;);var k=Array.prototype.slice.call(r.childNodes);k.forEach(function(u,t){if(!u.getAttribute){r.removeChild(u)}else{if(l.indexOf(u.getAttribute(&quot;id&quot;))!==-1){if(q.firstChild){q.setAttribute(&quot;id&quot;,&quot;sozi-wrapper-&quot;+t);c.idLayerList.push(&quot;sozi-wrapper-&quot;+t);r.insertBefore(q,u);q=g.createElementNS(o,&quot;g&quot;)}c.idLayerList.push(u.getAttribute(&quot;id&quot;))}else{if(h.indexOf(u.localName.toLowerCase())!==-1){r.removeChild(u);q.appendChild(u)}}}});if(q.firstChild){q.setAttribute(&quot;id&quot;,&quot;sozi-wrapper-&quot;+k.length);c.idLayerList.push(&quot;sozi-wrapper-&quot;+k.length);r.appendChild(q)}var m=Array.prototype.slice.call(g.getElementsByTagNameNS(b,&quot;frame&quot;));m.sort(function(u,t){var w=parseInt(j(u,&quot;sequence&quot;),10);var v=parseInt(j(t,&quot;sequence&quot;),10);return w-v});m.forEach(function(v,u){var x={id:v.getAttribute(&quot;id&quot;),title:j(v,&quot;title&quot;),showInFrameList:j(v,&quot;show-in-frame-list&quot;)===&quot;true&quot;,sequence:parseInt(j(v,&quot;sequence&quot;),10),timeoutEnable:j(v,&quot;timeout-enable&quot;)===&quot;true&quot;,timeoutMs:parseInt(j(v,&quot;timeout-ms&quot;),10),transitionDurationMs:parseInt(j(v,&quot;transition-duration-ms&quot;),10),states:{}};c.idLayerList.forEach(function(A){if(u===0||A.search(&quot;sozi-wrapper-[0-9]+&quot;)!==-1){i(x,A,v)}else{var z=x.states[A]=sozi.display.CameraState.instance();var y=c.frames[c.frames.length-1].states[A];z.setAtState(y)}});var t=Array.prototype.slice.call(v.getElementsByTagNameNS(b,&quot;layer&quot;));t.forEach(function(y){var z=y.getAttributeNS(b,&quot;group&quot;);if(z&amp;&amp;c.idLayerList.indexOf(z)!==-1){i(x,z,y)}});for(var w in x.states){if(x.states.hasOwnProperty(w)){c.frames.push(x);break}}})}c.getFrameIndexForId=function(l){for(var k=0;k&lt;c.frames.length;k+=1){if(c.frames[k].id===l){return k}}return -1};function f(){g.documentElement.removeAttribute(&quot;viewBox&quot;);a();sozi.events.fire(&quot;sozi.document.ready&quot;)}e.addEventListener(&quot;load&quot;,f,false)});namespace(this,&quot;sozi.framelist&quot;,function(u,k){var o=k.document;var c=5;var i;var p;var j=0;var h;var s;var b;var v;var w;var t;var e=300;var f=&quot;decelerate&quot;;var a=&quot;http://www.w3.org/2000/svg&quot;;function n(z){var x=z.relatedTarget,y=o.documentElement;while(x&amp;&amp;x!==i&amp;&amp;x!==y){x=x.parentNode}if(x!==i){u.hide();sozi.player.restart();z.stopPropagation()}}function r(y){var x=p.getCTM().f;if(x&lt;=-k.innerHeight/2){x+=k.innerHeight/2}else{if(x&lt;0){x=0}}p.setAttribute(&quot;transform&quot;,&quot;translate(0,&quot;+x+&quot;)&quot;);y.stopPropagation()}function d(y){var x=p.getCTM().f;if(x+j&gt;=k.innerHeight*3/2){x-=k.innerHeight/2}else{if(x+j&gt;k.innerHeight+2*c){x=k.innerHeight-j-4*c}}p.setAttribute(&quot;transform&quot;,&quot;translate(0,&quot;+x+&quot;)&quot;);y.stopPropagation()}function g(x){return function(y){sozi.player.previewFrame(x);y.stopPropagation()}}function l(x){x.stopPropagation()}function q(){i=o.createElementNS(a,&quot;g&quot;);i.setAttribute(&quot;id&quot;,&quot;sozi-toc&quot;);o.documentElement.appendChild(i);p=o.createElementNS(a,&quot;g&quot;);i.appendChild(p);var y=o.createElementNS(a,&quot;rect&quot;);y.setAttribute(&quot;id&quot;,&quot;sozi-toc-background&quot;);y.setAttribute(&quot;x&quot;,c);y.setAttribute(&quot;y&quot;,c);y.setAttribute(&quot;rx&quot;,c);y.setAttribute(&quot;ry&quot;,c);y.addEventListener(&quot;click&quot;,l,false);y.addEventListener(&quot;mousedown&quot;,l,false);y.addEventListener(&quot;mouseout&quot;,n,false);p.appendChild(y);var A=0;sozi.document.frames.forEach(function(D,E){if(D.showInFrameList){var C=o.createElementNS(a,&quot;text&quot;);C.appendChild(o.createTextNode(D.title));C.setAttribute(&quot;id&quot;,&quot;sozi-toc-&quot;+D.id);p.appendChild(C);if(E===sozi.player.currentFrameIndex){C.setAttribute(&quot;class&quot;,&quot;sozi-toc-current&quot;)}var B=C.getBBox().width;j+=C.getBBox().height;if(B&gt;A){A=B}C.setAttribute(&quot;x&quot;,2*c);C.setAttribute(&quot;y&quot;,j+c);C.addEventListener(&quot;click&quot;,g(E),false);C.addEventListener(&quot;mousedown&quot;,l,false)}});var x=o.createElementNS(a,&quot;path&quot;);x.setAttribute(&quot;class&quot;,&quot;sozi-toc-arrow&quot;);x.setAttribute(&quot;d&quot;,&quot;M&quot;+(A+3*c)+&quot;,&quot;+(5*c)+&quot; l&quot;+(4*c)+&quot;,0 l-&quot;+(2*c)+&quot;,-&quot;+(3*c)+&quot; z&quot;);x.addEventListener(&quot;click&quot;,r,false);x.addEventListener(&quot;mousedown&quot;,l,false);i.appendChild(x);var z=o.createElementNS(a,&quot;path&quot;);z.setAttribute(&quot;class&quot;,&quot;sozi-toc-arrow&quot;);z.setAttribute(&quot;d&quot;,&quot;M&quot;+(A+3*c)+&quot;,&quot;+(7*c)+&quot; l&quot;+(4*c)+&quot;,0 l-&quot;+(2*c)+&quot;,&quot;+(3*c)+&quot; z&quot;);z.addEventListener(&quot;click&quot;,d,false);z.addEventListener(&quot;mousedown&quot;,l,false);i.appendChild(z);y.setAttribute(&quot;width&quot;,A+7*c);y.setAttribute(&quot;height&quot;,j+2*c);h=-A-9*c;s=0;w=v=h;i.setAttribute(&quot;transform&quot;,&quot;translate(&quot;+h+&quot;,0)&quot;);t=sozi.animation.Animator.instance().augment({onStep:function(B){var D=sozi.animation.profiles[f](B),C=1-D;w=v*D+b*C;i.setAttribute(&quot;transform&quot;,&quot;translate(&quot;+w+&quot;,0)&quot;)}})}function m(x){var y=Array.prototype.slice.call(o.getElementsByClassName(&quot;sozi-toc-current&quot;));y.forEach(function(A){A.removeAttribute(&quot;class&quot;)});var z=sozi.document.frames[x];if(z.showInFrameList){o.getElementById(&quot;sozi-toc-&quot;+z.id).setAttribute(&quot;class&quot;,&quot;sozi-toc-current&quot;)}}u.show=function(){o.documentElement.appendChild(i);b=w;v=s;t.start(e)};u.hide=function(){b=w;v=h;t.start(e)};u.isVisible=function(){return v===s};sozi.events.listen(&quot;sozi.player.ready&quot;,q);sozi.events.listen(&quot;sozi.player.cleanup&quot;,u.hide);sozi.events.listen(&quot;sozi.player.framechange&quot;,m)});namespace(this,&quot;sozi.framenumber&quot;,function(a,d){var g=d.document;var e;var k,i;var f;var b=&quot;http://www.w3.org/2000/svg&quot;;function h(){var m=k.getBBox(),n=Math.max(m.width,m.height)*0.75,l=n*1.25;f.setAttribute(&quot;r&quot;,n);e.setAttribute(&quot;transform&quot;,&quot;translate(&quot;+l+&quot;,&quot;+l+&quot;)&quot;)}function c(){e=g.createElementNS(b,&quot;g&quot;);k=g.createElementNS(b,&quot;text&quot;);f=g.createElementNS(b,&quot;circle&quot;);e.setAttribute(&quot;id&quot;,&quot;sozi-framenumber&quot;);f.setAttribute(&quot;cx&quot;,0);f.setAttribute(&quot;cy&quot;,0);e.appendChild(f);i=g.createTextNode(sozi.player.currentFrameIndex+1);k.setAttribute(&quot;text-anchor&quot;,&quot;middle&quot;);k.setAttribute(&quot;dominant-baseline&quot;,&quot;central&quot;);k.setAttribute(&quot;x&quot;,0);k.setAttribute(&quot;y&quot;,0);k.appendChild(i);e.appendChild(k);g.documentElement.appendChild(e);h()}function j(l){i.nodeValue=l+1}sozi.events.listen(&quot;sozi.player.ready&quot;,c);sozi.events.listen(&quot;sozi.player.framechange&quot;,j)});namespace(this,&quot;sozi.links&quot;,function(c,e){var b=&quot;http://www.w3.org/2000/svg&quot;;var a=&quot;http://www.w3.org/1999/xlink&quot;;function f(g){return function(h){sozi.player.moveToFrame(g);h.preventDefault();h.stopPropagation()}}function d(){var h=e.document.getElementsByTagNameNS(b,&quot;a&quot;);for(var j=0;j&lt;h.length;j+=1){var g=h[j].getAttributeNS(a,&quot;href&quot;);if(g&amp;&amp;g[0]===&quot;#&quot;){h[j].addEventListener(&quot;click&quot;,f(sozi.location.getFrameIndexForHash(g)),false)}}}sozi.events.listen(&quot;sozi.document.ready&quot;,d)});namespace(this,&quot;sozi.location&quot;,function(a,d){var b=false;a.getFrameIndex=function(){return a.getFrameIndexForHash(d.location.hash)};a.getFrameIndexForHash=function(g){var h=g?g.slice(1):&quot;1&quot;;var f;if(/^[0-9]+$/.test(h)){f=parseInt(h,10)-1}else{f=sozi.document.getFrameIndexForId(h)}if(f&lt;0){return 0}else{if(f&gt;=sozi.document.frames.length){return sozi.document.frames.length-1}else{return f}}};function e(){var f=a.getFrameIndex();if(!b){sozi.player.moveToFrame(f)}b=false}function c(f){b=true;d.location.hash=&quot;#&quot;+sozi.document.frames[f].id}d.addEventListener(&quot;hashchange&quot;,e,false);sozi.events.listen(&quot;sozi.player.framechange&quot;,c)});namespace(this,&quot;sozi.player&quot;,function(d,g){var l;var c;var i;var e=500;var n=-10;var j=&quot;linear&quot;;var f=0;d.currentFrameIndex=0;var k=false;var m=false;function h(){if(sozi.document.frames[d.currentFrameIndex].timeoutEnable){m=true;var o=(d.currentFrameIndex+1)%sozi.document.frames.length;i=g.setTimeout(function(){d.moveToFrame(o)},sozi.document.frames[d.currentFrameIndex].timeoutMs)}}d.startFromIndex=function(o){k=true;m=false;f=o;d.currentFrameIndex=o;l.showFrame(sozi.document.frames[o]);h()};d.restart=function(){d.startFromIndex(d.currentFrameIndex)};d.stop=function(){c.stop();if(m){g.clearTimeout(i);m=false}k=false;f=d.currentFrameIndex};function b(o,y,w){var z={ss:((o&lt;0)?Math.max(y,w):Math.min(y,w))*(100-o)/100,ts:0.5,k:0};if(o!==0){var s=y-w;var r=y-z.ss;var q=w-z.ss;if(s!==0){var p=Math.sqrt(r*q);var x=(r-p)/s;var t=(r+p)/s;z.ts=(x&gt;0&amp;&amp;x&lt;=1)?x:t}z.k=r/z.ts/z.ts}return z}d.jumpToFrame=function(o){d.stop();sozi.events.fire(&quot;sozi.player.cleanup&quot;);f=o;d.currentFrameIndex=o;l.showFrame(sozi.document.frames[o]);sozi.events.fire(&quot;sozi.player.framechange&quot;,o)};d.getAnimationData=function(o,q,s,p,v,t){var r={};for(var w in o){r[w]={initialState:sozi.display.CameraState.instance(),finalState:sozi.display.CameraState.instance(),useTransitionPath:v,reverseTransitionPath:t};r[w].profile=p||q[w].transitionProfile;r[w].initialState.setAtState(o[w]);if(q.hasOwnProperty(w)){r[w].finalState.setAtState(q[w])}else{r[w].finalState.setAtState(o[w])}if(r[w].finalState.angle-r[w].initialState.angle&gt;180){r[w].finalState.setRawAngle(r[w].finalState.angle-360)}else{if(r[w].finalState.angle-r[w].initialState.angle&lt;-180){r[w].initialState.setRawAngle(r[w].initialState.angle-360)}}var u=s||q[w].transitionZoomPercent;if(u&amp;&amp;q.hasOwnProperty(w)){r[w].zoomWidth=b(u,o[w].width,q[w].width);r[w].zoomHeight=b(u,o[w].height,q[w].height)}}return r};d.previewFrame=function(o){d.currentFrameIndex=o;c.start(e,d.getAnimationData(l.cameras,sozi.document.frames[o].states,n,sozi.animation.profiles[j]),false,false);sozi.events.fire(&quot;sozi.player.framechange&quot;,o)};d.moveToFrame=function(r){if(m){g.clearTimeout(i);m=false}var q,t,s,p,o;if(r===(d.currentFrameIndex-1)%sozi.document.frames.length){q=sozi.document.frames[d.currentFrameIndex].transitionDurationMs;t=undefined;s=undefined;p=true;o=true}else{if(r===(d.currentFrameIndex+1)%sozi.document.frames.length){q=sozi.document.frames[r].transitionDurationMs;t=undefined;s=undefined;p=true;o=false}else{q=e;t=n;s=sozi.animation.profiles[j];p=false;o=false}}sozi.events.fire(&quot;sozi.player.cleanup&quot;);k=true;d.currentFrameIndex=r;c.start(q,d.getAnimationData(l.cameras,sozi.document.frames[r].states,t,s,p,o));sozi.events.fire(&quot;sozi.player.framechange&quot;,r)};d.jumpToFirst=function(){d.jumpToFrame(0)};d.moveToFirst=function(){d.moveToFrame(0)};d.jumpToPrevious=function(){var o=d.currentFrameIndex;if(!c.started||f&lt;=d.currentFrameIndex){o-=1}if(o&gt;=0){d.jumpToFrame(o)}};d.moveToPrevious=function(){for(var o=d.currentFrameIndex-1;o&gt;=0;o-=1){var p=sozi.document.frames[o];if(!p.timeoutEnable||p.timeoutMs!==0){d.moveToFrame(o);break}}};d.jumpToNext=function(){var o=d.currentFrameIndex;if(!c.started||f&gt;=d.currentFrameIndex){o+=1}if(o&lt;sozi.document.frames.length){d.jumpToFrame(o)}};d.moveToNext=function(){if(d.currentFrameIndex&lt;sozi.document.frames.length-1||sozi.document.frames[d.currentFrameIndex].timeoutEnable){d.moveToFrame((d.currentFrameIndex+1)%sozi.document.frames.length)}};d.jumpToLast=function(){d.jumpToFrame(sozi.document.frames.length-1)};d.moveToLast=function(){d.moveToFrame(sozi.document.frames.length-1)};d.moveToCurrent=function(){d.moveToFrame(d.currentFrameIndex)};d.showAll=function(){d.stop();sozi.events.fire(&quot;sozi.player.cleanup&quot;);c.start(e,d.getAnimationData(l.cameras,l.getDocumentState(),n,sozi.animation.profiles[j],false,false))};function a(){l=sozi.display.ViewPort.instance(&quot;player&quot;,sozi.document.idLayerList,true);d.startFromIndex(sozi.location.getFrameIndex());g.setTimeout(l.bind(l.update),1);sozi.events.fire(&quot;sozi.player.ready&quot;)}d.onAnimationStep=function(o,q){for(var s in q){var p=l.cameras[s];p.interpolate(q[s].initialState,q[s].finalState,q[s].profile(o),q[s].useTransitionPath,q[s].reverseTransitionPath);var r;if(q[s].zoomWidth&amp;&amp;q[s].zoomWidth.k!==0){r=o-q[s].zoomWidth.ts;p.width=q[s].zoomWidth.k*r*r+q[s].zoomWidth.ss}if(q[s].zoomHeight&amp;&amp;q[s].zoomHeight.k!==0){r=o-q[s].zoomHeight.ts;p.height=q[s].zoomHeight.k*r*r+q[s].zoomHeight.ss}p.setClipped(q[s].finalState.clipped)}l.update()};c=sozi.animation.Animator.instance().augment({onStep:function(o){d.onAnimationStep(o,this.data)},onDone:function(){for(var o in this.data){l.cameras[o].setAtState(this.data[o].finalState)}l.update();f=d.currentFrameIndex;if(k){h()}}});sozi.events.listen(&quot;sozi.display.ready&quot;,a)});</script>
+  <style
+     id="sozi-style"
+     ns1:version="14.10-05142318">#sozi-toc text{fill:#eff;font-family:Verdana,sans-serif;font-size:12pt}#sozi-toc text:hover{fill:#0cf;cursor:pointer}#sozi-toc text.sozi-toc-current{fill:#fa4}#sozi-toc-background{stroke:#222;stroke-opacity:.1;stroke-width:10;fill:#222;fill-opacity:.9}.sozi-toc-arrow{fill:#eff;fill-opacity:.75;stroke:none}.sozi-toc-arrow:hover{fill:#0cf}#sozi-framenumber circle{stroke:#222;stroke-opacity:.1;stroke-width:4;fill:#222;fill-opacity:.9}#sozi-framenumber text{fill:#eff;font-family:Verdana,sans-serif;font-size:12pt}</style>
+  <script
+     id="sozi-extras-media-script"
+     ns1:version="14.10-05142318">this.addEventListener(&quot;load&quot;,function(){var h=&quot;http://www.w3.org/2000/svg&quot;,l=&quot;http://sozi.baierouge.fr&quot;,s=&quot;http://www.w3.org/1999/xhtml&quot;,m=this,o=m.document,q=[],r,e,d,c,p,a,g,f,b;function n(i){i.stopPropagation()}function t(i,j,k){sozi.events.listen(&quot;sozi.player.framechange&quot;,function(u){var v=sozi.document.frames[u].id;if(v===j){i.play()}else{if(v===k){i.pause()}}})}q.push(o.getElementsByTagNameNS(l,&quot;video&quot;));q.push(o.getElementsByTagNameNS(l,&quot;audio&quot;));r=[];for(c=0;c&lt;q.length;c+=1){for(e=0;e&lt;q[c].length;e+=1){p=q[c][e].parentNode;b=o.createElementNS(s,&quot;source&quot;);b.setAttribute(&quot;type&quot;,q[c][e].getAttributeNS(l,&quot;type&quot;));b.setAttribute(&quot;src&quot;,q[c][e].getAttributeNS(l,&quot;src&quot;));for(d=0;d&lt;r.length;d+=1){if(r[d].rect===p){break}}if(d===r.length){p.setAttribute(&quot;visibility&quot;,&quot;hidden&quot;);f=o.createElementNS(s,q[c][e].localName);f.setAttribute(&quot;controls&quot;,&quot;controls&quot;);if(q[c][e].localName===&quot;video&quot;){f.setAttribute(&quot;width&quot;,p.getAttribute(&quot;width&quot;));f.setAttribute(&quot;height&quot;,p.getAttribute(&quot;height&quot;))}f.addEventListener(&quot;click&quot;,n,false);f.addEventListener(&quot;contextmenu&quot;,n,false);g=o.createElementNS(s,&quot;html&quot;);g.appendChild(f);a=o.createElementNS(h,&quot;foreignObject&quot;);a.setAttribute(&quot;x&quot;,p.getAttribute(&quot;x&quot;));a.setAttribute(&quot;y&quot;,p.getAttribute(&quot;y&quot;));a.setAttribute(&quot;width&quot;,p.getAttribute(&quot;width&quot;));a.setAttribute(&quot;height&quot;,p.getAttribute(&quot;height&quot;));a.appendChild(g);p.parentNode.insertBefore(a,p.nextSibling);if(q[c][e].hasAttributeNS(l,&quot;start-frame&quot;)){t(f,q[c][e].getAttributeNS(l,&quot;start-frame&quot;),q[c][e].getAttributeNS(l,&quot;stop-frame&quot;))}r.push({rect:q[c][e].parentNode,htmlMedia:f})}r[d].htmlMedia.appendChild(b)}}},false);</script>
+  <ns1:frame
+     ns1:transition-path-hide="true"
+     ns1:transition-profile="linear"
+     ns1:transition-zoom-percent="0.0"
+     ns1:transition-duration-ms="1000.0"
+     ns1:timeout-ms="5000.0"
+     ns1:timeout-enable="false"
+     ns1:show-in-frame-list="true"
+     ns1:clip="true"
+     ns1:hide="true"
+     ns1:sequence="1"
+     ns1:title="Overview 1"
+     ns1:refid="group10" />
+  <ns1:frame
+     ns1:refid="group20"
+     ns1:title="Client 1 read"
+     ns1:sequence="2"
+     ns1:hide="true"
+     ns1:clip="true"
+     ns1:show-in-frame-list="true"
+     ns1:timeout-enable="false"
+     ns1:timeout-ms="5000.0"
+     ns1:transition-duration-ms="1000.0"
+     ns1:transition-zoom-percent="0.0"
+     ns1:transition-profile="linear"
+     ns1:transition-path-hide="true" />
+  <ns1:frame
+     ns1:transition-path-hide="true"
+     ns1:transition-profile="linear"
+     ns1:transition-zoom-percent="0.0"
+     ns1:transition-duration-ms="1000.0"
+     ns1:timeout-ms="5000.0"
+     ns1:timeout-enable="false"
+     ns1:show-in-frame-list="true"
+     ns1:clip="true"
+     ns1:hide="true"
+     ns1:sequence="3"
+     ns1:title="Modify Client 2"
+     ns1:refid="group30" />
+  <ns1:frame
+     ns1:refid="group40"
+     ns1:title="Re-read Client 1 and rollback"
+     ns1:sequence="4"
+     ns1:hide="true"
+     ns1:clip="true"
+     ns1:show-in-frame-list="true"
+     ns1:timeout-enable="false"
+     ns1:timeout-ms="5000.0"
+     ns1:transition-duration-ms="1000.0"
+     ns1:transition-zoom-percent="0.0"
+     ns1:transition-profile="linear"
+     ns1:transition-path-hide="true" />
+  <ns1:frame
+     ns1:transition-path-hide="true"
+     ns1:transition-profile="linear"
+     ns1:transition-zoom-percent="0.0"
+     ns1:transition-duration-ms="1000.0"
+     ns1:timeout-ms="5000.0"
+     ns1:timeout-enable="false"
+     ns1:show-in-frame-list="true"
+     ns1:clip="true"
+     ns1:hide="true"
+     ns1:sequence="5"
+     ns1:title="Overview 2"
+     ns1:refid="group10" />
+</svg>
diff --git a/glossary.xml b/glossary.xml
index d2efae243..5f33c011e 100644
--- a/glossary.xml
+++ b/glossary.xml
@@ -9,7 +9,8 @@
           xmlns:db="http://docbook.org/ns/docbook">
   <glosslist>
     <glossentry xml:id="glo_ApacheDirectoryStudio">
-      <glossterm>Apache Directory Studio</glossterm>
+      <glossterm><productname>Apache Directory
+      Studio</productname></glossterm>
 
       <glossdef>
         <para><link xlink:href="http://directory.apache.org/studio">Apache
@@ -27,7 +28,7 @@
     </glossentry>
 
     <glossentry xml:id="glo_BlueJ">
-      <glossterm>BjueJ</glossterm>
+      <glossterm><productname>BjueJ</productname></glossterm>
 
       <glossdef>
         <para><link xlink:href="http://www.bluej.org">Java Development
@@ -85,10 +86,10 @@
     </glossentry>
 
     <glossentry xml:id="glo_Eclipse">
-      <glossterm>Eclipse</glossterm>
+      <glossterm><productname>Eclipse</productname></glossterm>
 
       <glossdef>
-        <para>Professional Java <xref linkend="glo_IDE"/> available from <link
+        <para>Java <xref linkend="glo_IDE"/> available from <link
         xlink:href="http://eclipse.org">eclipse.org</link>.</para>
       </glossdef>
     </glossentry>
@@ -123,8 +124,37 @@
       </glossdef>
     </glossentry>
 
+    <glossentry xml:id="glo_framework">
+      <glossterm>Framework</glossterm>
+
+      <glossdef>
+        <para>Software providing an abstraction for a particular problem
+        domain thereby facilitating development. Examples:</para>
+
+        <glosslist>
+          <glossentry>
+            <glossterm><xref linkend="glo_Junit"/></glossterm>
+
+            <glossdef>
+              <para>Management of unit tests.</para>
+            </glossdef>
+          </glossentry>
+
+          <glossentry>
+            <glossterm><link
+            xlink:href="http://www.eclipse.org/eclipselink">Eclipse
+            link</link></glossterm>
+
+            <glossdef>
+              <para>Persisting Java objects.</para>
+            </glossdef>
+          </glossentry>
+        </glosslist>
+      </glossdef>
+    </glossentry>
+
     <glossentry xml:id="glo_Git">
-      <glossterm><acronym>Git</acronym></glossterm>
+      <glossterm><productname>Git</productname></glossterm>
 
       <glossdef>
         <para><link xlink:href="http://git-scm.com">The Git version control
@@ -133,10 +163,10 @@
     </glossentry>
 
     <glossentry xml:id="glo_Greenfoot">
-      <glossterm><acronym>Greenfoot</acronym></glossterm>
+      <glossterm><productname>Greenfoot</productname></glossterm>
 
       <glossdef>
-        <para><link xlink:href="???">Teach and learn Java
+        <para><link xlink:href="http://www.greenfoot.org">Teach and learn Java
         programming</link>.</para>
       </glossdef>
     </glossentry>
@@ -151,7 +181,7 @@
       </glossdef>
     </glossentry>
 
-    <glossentry xml:id="org_HdM">
+    <glossentry xml:id="glo_HdM">
       <glossterm><orgname>HdM</orgname></glossterm>
 
       <glossdef>
@@ -199,33 +229,6 @@
       </glossdef>
     </glossentry>
 
-    <glossentry xml:id="glo_JAXB">
-      <glossterm>Jaxb</glossterm>
-
-      <glossdef>
-        <para>Java Architecture for XML Binding</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><link xlink:href="https://jaxb.java.net">JAXB
-            homepage</link></para>
-          </listitem>
-
-          <listitem>
-            <para><link
-            xlink:href="https://docs.oracle.com/javase/tutorial/jaxb">Oracle
-            tutorial</link></para>
-          </listitem>
-
-          <listitem>
-            <para><link
-            xlink:href="https://www.jcp.org/en/jsr/detail?id=222">JSR 222:
-            JavaTM Architecture for XML Binding (JAXB) 2.0</link></para>
-          </listitem>
-        </itemizedlist>
-      </glossdef>
-    </glossentry>
-
     <glossentry xml:id="glo_Jar">
       <glossterm><acronym>Jar</acronym></glossterm>
 
@@ -256,6 +259,33 @@
       </glossdef>
     </glossentry>
 
+    <glossentry xml:id="glo_JAXB">
+      <glossterm><acronym>JAXB</acronym></glossterm>
+
+      <glossdef>
+        <para>Java Architecture for XML Binding</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><link xlink:href="https://jaxb.java.net">JAXB
+            homepage</link></para>
+          </listitem>
+
+          <listitem>
+            <para><link
+            xlink:href="https://docs.oracle.com/javase/tutorial/jaxb">Oracle
+            tutorial</link></para>
+          </listitem>
+
+          <listitem>
+            <para><link
+            xlink:href="https://www.jcp.org/en/jsr/detail?id=222">JSR 222:
+            JavaTM Architecture for XML Binding (JAXB) 2.0</link></para>
+          </listitem>
+        </itemizedlist>
+      </glossdef>
+    </glossentry>
+
     <glossentry xml:id="glo_JDBC">
       <glossterm><trademark>JDBC</trademark></glossterm>
 
@@ -287,7 +317,7 @@
     </glossentry>
 
     <glossentry xml:id="glo_Junit">
-      <glossterm><acronym>Junit</acronym></glossterm>
+      <glossterm><productname>Junit</productname></glossterm>
 
       <glossdef>
         <para><link xlink:href="http://junit.org">Junit</link></para>
@@ -325,7 +355,7 @@
     </glossentry>
 
     <glossentry xml:id="glo_Maven">
-      <glossterm>Maven</glossterm>
+      <glossterm><productname>Maven</productname></glossterm>
 
       <glossdef>
         <para><link xlink:href="http://maven.apache.org">Software project
@@ -376,8 +406,8 @@
 
       <glossdef>
         <para><link xlink:href="http://maven.apache.org">project object
-        model</link> file describing a <xref linkend="glo_Maven"/>
-        project</para>
+        model</link> file describing a <xref linkend="glo_Maven"/> project or
+        module</para>
       </glossdef>
     </glossentry>
 
@@ -429,7 +459,7 @@
     </glossentry>
 
     <glossentry xml:id="glo_Svn">
-      <glossterm><acronym>Svn</acronym></glossterm>
+      <glossterm><productname>Svn</productname></glossterm>
 
       <glossdef>
         <para><link xlink:href="https://subversion.apache.org">The Svn version
@@ -495,7 +525,7 @@
     </glossentry>
 
     <glossentry xml:id="glo_xjc">
-      <glossterm>xjc</glossterm>
+      <glossterm><productname>xjc</productname></glossterm>
 
       <glossdef>
         <para><link xlink:href="https://jaxb.java.net/2.2.4/docs/xjc.html">
-- 
GitLab