regenerated documentation

This commit is contained in:
Frank Morgner
2021-04-28 02:13:40 +02:00
parent 29a818c69a
commit 27b3dfb62b
216 changed files with 26154 additions and 24712 deletions

View File

@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 8e5f2a4bcebac1b2d77d5116e3094531
config: b6c0a435aa7d2e7b87f7f3b438fbe297
tags: 645f666f9bcd5a90fca523b33c5a78b7

View File

@@ -1,35 +1,23 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Android Smart Card Emulator &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../_static/basic.css" type="text/css" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Android Smart Card Emulator &#8212; vsmartcard 2021-04-28 documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/bootswatch-3.3.4/flatly/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2017-01-16',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="../_static/js/jquery-fix.js"></script>
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/js/jquery-1.11.0.min.js"></script>
<script src="../_static/js/jquery-fix.js"></script>
<script src="../_static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
<script src="../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-16 documentation" href="../index.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Tizen Smart Card Emulator" href="../TCardEmulator/README.html" />
<link rel="prev" title="Remote Smart Card Reader" href="../remote-reader/README.html" />
<meta charset='utf-8'>
@@ -37,8 +25,7 @@
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
<meta name="apple-mobile-web-app-capable" content="yes">
</head>
<body>
</head><body>
<a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img
@@ -84,7 +71,7 @@
aria-labelledby="dLabelGlobalToc"><ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="">Android Smart Card Emulator</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li>
@@ -119,11 +106,11 @@
<li>
<a href="../remote-reader/README.html" title="Previous Chapter: Remote Smart Card Reader"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; Remote Smart Car...</span>
<a href="../remote-reader/README.html" title="Previous Chapter: Remote Smart Card Reader"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; Remote Smart ...</span>
</a>
</li>
<li>
<a href="../TCardEmulator/README.html" title="Next Chapter: Tizen Smart Card Emulator"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">Tizen Smart Card... &raquo;</span>
<a href="../TCardEmulator/README.html" title="Next Chapter: Tizen Smart Card Emulator"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">Tizen Smart C... &raquo;</span>
</a>
</li>
@@ -156,114 +143,82 @@
<div class="section" id="android-smart-card-emulator">
<span id="acardemulator"></span><h1>Android Smart Card Emulator<a class="headerlink" href="#android-smart-card-emulator" title="Permalink to this headline"></a></h1>
<div class="sidebar">
<p class="first sidebar-title">Use an Android phone as contact-less smart card</p>
<table class="last docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">License:</th><td class="field-body">GPL version 3</td>
</tr>
<tr class="field-even field"><th class="field-name" colspan="2">Tested Platform:</th></tr>
<tr class="field-even field"><td>&nbsp;</td><td class="field-body">Android, CyanogenMod</td>
</tr>
</tbody>
</table>
<p class="sidebar-title">Use an Android phone as contact-less smart card</p>
<dl class="field-list simple">
<dt class="field-odd">License</dt>
<dd class="field-odd"><p>GPL version 3</p>
</dd>
<dt class="field-even">Tested Platform</dt>
<dd class="field-even"><p>Android, CyanogenMod</p>
</dd>
</dl>
</div>
<p>The Android Smart Card Emulator allows the emulation of a contact-less smart card.
The emulator uses Android&#8217;s <abbr title="host card emulation">HCE</abbr> to fetch APDUs from a contact-less reader.
The emulator uses Androids <abbr title="host card emulation">HCE</abbr> to fetch APDUs from a contact-less reader.
The app allows to process the Command APDUs either by delegating them to a
remote virtual smart card or by a built-in Java Card simulator. The response
APDUs are then returned to the smart card reader. Together with
<a class="reference internal" href="../TCardEmulator/README.html#tcardemulator"><em>Tizen Smart Card Emulator</em></a> it is also possible to use a smartwatch as communication
<a class="reference internal" href="../TCardEmulator/README.html#tcardemulator"><span class="std std-ref">Tizen Smart Card Emulator</span></a> it is also possible to use a smartwatch as communication
device instead of the phone.</p>
<p>With the built-in Java Card runtime of <a class="reference external" href="http://www.jcardsim.org/">jCardSim</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a> the app includes the following
<p>With the built-in Java Card runtime of <a class="reference external" href="http://www.jcardsim.org/">jCardSim</a> <a class="footnote-reference brackets" href="#id4" id="id5">1</a> the app includes the following
Applets:</p>
<ul class="simple">
<li><a class="reference external" href="https://github.com/licel/jcardsim/blob/master/src/main/java/com/licel/jcardsim/samples/HelloWorldApplet.java">Hello World Applet</a> <a class="footnote-reference" href="#id3" id="id4">[2]</a> (application identifier <tt class="docutils literal"><span class="pre">F000000001</span></tt>)</li>
<li><a class="reference external" href="https://developers.yubico.com/ykneo-openpgp/">OpenPGP Applet</a> <a class="footnote-reference" href="#id5" id="id6">[3]</a> (application identifier <tt class="docutils literal"><span class="pre">D2760001240102000000000000010000</span></tt>)</li>
<li><a class="reference external" href="https://developers.yubico.com/ykneo-oath/">OATH Applet</a> <a class="footnote-reference" href="#id7" id="id8">[4]</a> (application identifier <tt class="docutils literal"><span class="pre">A000000527210101</span></tt>)</li>
<li><a class="reference external" href="http://www.pwendland.net/IsoApplet/">ISO Applet</a> <a class="footnote-reference" href="#id9" id="id10">[5]</a> (application identifier <tt class="docutils literal"><span class="pre">F276A288BCFBA69D34F31001</span></tt>)</li>
<li><a class="reference external" href="https://github.com/vletoux/GidsApplet">GIDS Applet</a> <a class="footnote-reference" href="#id11" id="id12">[6]</a> (application identifier <tt class="docutils literal"><span class="pre">A000000397425446590201</span></tt>)</li>
<li><p><a class="reference external" href="https://developers.yubico.com/ykneo-openpgp/">OpenPGP Applet</a> <a class="footnote-reference brackets" href="#id6" id="id7">2</a> (application identifier <code class="docutils literal notranslate"><span class="pre">D2760001240102000000000000010000</span></code>)</p></li>
<li><p><a class="reference external" href="https://developers.yubico.com/ykneo-oath/">OATH Applet</a> <a class="footnote-reference brackets" href="#id8" id="id9">3</a> (application identifier <code class="docutils literal notranslate"><span class="pre">A000000527210101</span></code>)</p></li>
<li><p><a class="reference external" href="http://www.pwendland.net/IsoApplet/">ISO Applet</a> <a class="footnote-reference brackets" href="#id10" id="id11">4</a> (application identifier <code class="docutils literal notranslate"><span class="pre">F276A288BCFBA69D34F31001</span></code>)</p></li>
<li><p><a class="reference external" href="https://github.com/vletoux/GidsApplet">GIDS Applet</a> <a class="footnote-reference brackets" href="#id12" id="id13">5</a> (application identifier <code class="docutils literal notranslate"><span class="pre">A000000397425446590201</span></code>)</p></li>
</ul>
<p>The remote interface can be used together with the <a class="reference internal" href="../virtualsmartcard/README.html#vicc"><em>Virtual Smart Card</em></a>, which allows
<p>The remote interface can be used together with the <a class="reference internal" href="../virtualsmartcard/README.html#vicc"><span class="std std-ref">Virtual Smart Card</span></a>, which allows
emulating the following cards:</p>
<ul class="simple">
<li>Generic ISO-7816 smart card</li>
<li>German electronic identity card (nPA)</li>
<li>Electronic passport</li>
<li><p>Generic ISO-7816 smart card</p></li>
<li><p>German electronic identity card (nPA)</p></li>
<li><p>Electronic passport</p></li>
</ul>
<p>The remote interface can also be used together with the <a class="reference internal" href="../pcsc-relay/README.html#pcsc-relay"><em>PC/SC Relay</em></a>,
<p>The remote interface can also be used together with the <a class="reference internal" href="../pcsc-relay/README.html#pcsc-relay"><span class="std std-ref">PC/SC Relay</span></a>,
which allows emulating a contactless card from an existing contact-based card
(by relaying the commands from PC/SC to the phone).</p>
<p>You may also attach your own simulation to the remote interface by implementing
a simple interface through a socket communication.</p>
<div class="figure">
<p><img src="../_images/tikz-f7010fa8209b3752026a52619d57bbebb8fa2bcd.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ;
\end{pgfonlayer}" /></p>
<p class="caption">Simulate a contact-less Java Card with Android Smart Card Emulator</p></div><div class="figure">
<p><img src="../_images/tikz-ae1e764f23cec8b5d67952bc6d8bbe66280e80d1.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\node (vicc) [aktivbox, right=2cm of phone, kleiner] {\texttt{vicc --reversed}};
\begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ;
\path[linie] (phone) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc) ;
\end{pgfonlayer}" /></p>
<p class="caption">Simulate a contact-less smart card with a remote virtual smart card</p></div><div class="figure">
<p><img src="../_images/tikz-30c9c7049675e5b06e8364c63b0718d51986e380.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\node (pcsc-relay) [aktivbox, right=2cm of phone, kleiner] {\texttt{pcsc-relay --emulator=vpcd}};
\node (card) [below=.5cm of pcsc-relay)] {\includegraphics[width=0.8cm]{$wd/bilder/smartcard.pdf}};
\node (reader2) [below=1cm of pcsc-relay] {\includegraphics[width=1.3cm]{$wd/bilder/my_cardreader.pdf}};
\begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ;
\path[linie] (phone) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (pcsc-relay) ;
\path[linie] (pcsc-relay) edge (reader2) ;
\end{pgfonlayer}" /></p>
<p class="caption">Relaying a contact-based smart card with pcsc-relay</p></div><p>The Android Smart Card Emulator has the following dependencies:</p>
<div class="figure" id="id1" style="text-align: center">
<p><img src="../_images/tikz-f7010fa8209b3752026a52619d57bbebb8fa2bcd.svg" alt="Figure made with TikZ" /></p>
<p class="caption"><span class="caption-text">Simulate a contact-less Java Card with Android Smart Card Emulator</span></p>
</div><div class="figure" id="id2" style="text-align: center">
<p><img src="../_images/tikz-ae1e764f23cec8b5d67952bc6d8bbe66280e80d1.svg" alt="Figure made with TikZ" /></p>
<p class="caption"><span class="caption-text">Simulate a contact-less smart card with a remote virtual smart card</span></p>
</div><div class="figure" id="id3" style="text-align: center">
<p><img src="../_images/tikz-30c9c7049675e5b06e8364c63b0718d51986e380.svg" alt="Figure made with TikZ" /></p>
<p class="caption"><span class="caption-text">Relaying a contact-based smart card with pcsc-relay</span></p>
</div><p>The Android Smart Card Emulator has the following dependencies:</p>
<ul class="simple">
<li>NFC hardware built into the smartphone for <abbr title="host card emulation">HCE</abbr></li>
<li>Android 4.4 &#8220;KitKat&#8221; (or newer) or CyanogenMod 11 (or newer)</li>
<li>permissions for a data connection (communication with Virtual Smart Card) and
<li><p>NFC hardware built into the smartphone for <abbr title="host card emulation">HCE</abbr></p></li>
<li><p>Android 4.4 “KitKat” (or newer) or CyanogenMod 11 (or newer)</p></li>
<li><p>permissions for a data connection (communication with Virtual Smart Card) and
for using NFC (communication to the reader); scanning the configuration via
QR code requires permission to access the camera</li>
<li>Virtual Smart Card <a class="reference internal" href="../virtualsmartcard/README.html#vicc-install"><em>installed on the host computer</em></a> for
using the remote interface</li>
QR code requires permission to access the camera</p></li>
<li><p>Virtual Smart Card <a class="reference internal" href="../virtualsmartcard/README.html#vicc-install"><span class="std std-ref">installed on the host computer</span></a> for
using the remote interface</p></li>
</ul>
<p>Please note that the currently emulated applets are verifying the PIN by
transmitting it without any protection between card and terminal. You may want
to have a look at <a class="reference external" href="http://sar.informatik.hu-berlin.de/research/publications/SAR-PR-2014-08/SAR-PR-2014-08_.pdf">Erik Nellesson&#8217;s</a>
<a class="reference external" href="https://github.com/eriknellessen/Virtual-Keycard">Virtual Keycard</a> <a class="footnote-reference" href="#id13" id="id14">[7]</a>, which uses the PACE protocol for PIN verification.</p>
to have a look at <a class="reference external" href="http://sar.informatik.hu-berlin.de/research/publications/SAR-PR-2014-08/SAR-PR-2014-08_.pdf">Erik Nellessons</a>
<a class="reference external" href="https://github.com/eriknellessen/Virtual-Keycard">Virtual Keycard</a> <a class="footnote-reference brackets" href="#id14" id="id15">6</a>, which uses the PACE protocol for PIN verification.</p>
<div class="section" id="download-and-install">
<span id="acardemulator-install"></span><h2>Download and Install<a class="headerlink" href="#download-and-install" title="Permalink to this headline"></a></h2>
<p>The Android Smart Card Emulator is available on <a class="reference external" href="https://f-droid.org/repository/browse/?fdid=com.vsmartcard.remotesmartcardreader.app">F-Droid</a> <a class="footnote-reference" href="#id15" id="id16">[8]</a>.</p>
<p>The Android Smart Card Emulator is available on <a class="reference external" href="https://f-droid.org/repository/browse/?fdid=com.vsmartcard.remotesmartcardreader.app">F-Droid</a> <a class="footnote-reference brackets" href="#id16" id="id17">7</a>.</p>
<a class="reference external image-reference" href="https://f-droid.org/repository/browse/?fdid=com.vsmartcard.acardemulator"><img alt="Android Smart Card Emulator on F-Droid" src="../_images/acardemu-qrcode.png" style="width: 265px; height: 265px;" /></a>
<p>To manually compile the app you need to fetch the sources and initialize the
submodules:</p>
<div class="highlight-sh"><div class="highlight"><pre>git clone https://github.com/frankmorgner/vsmartcard.git
<span class="nb">cd </span>vsmartcard
<span class="c"># fetch the applets that are in the submodules</span>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>git clone https://github.com/frankmorgner/vsmartcard.git
<span class="nb">cd</span> vsmartcard
<span class="c1"># fetch the applets that are in the submodules</span>
git submodule init
git submodule update
</pre></div>
</div>
<p>We use <a class="reference external" href="http://developer.android.com/sdk/installing/studio.html">Android Studio</a> <a class="footnote-reference" href="#id17" id="id18">[9]</a> to build and deploy the application. Use
<em class="menuselection">File ‣ Open</em> to select <tt class="file docutils literal"><span class="pre">vsmartcard/ACardEmulator</span></tt>.
Attach your smartphone and choose <em class="menuselection">Run ‣ Run &#8216;app&#8217;</em>.</p>
<p>We use <a class="reference external" href="http://developer.android.com/sdk/installing/studio.html">Android Studio</a> <a class="footnote-reference brackets" href="#id18" id="id19">8</a> to build and deploy the application. Use
<span class="menuselection">File ‣ Open</span> to select <code class="file docutils literal notranslate"><span class="pre">vsmartcard/ACardEmulator</span></code>.
Attach your smartphone and choose <span class="menuselection">Run ‣ Run app</span>.</p>
</div>
<div class="section" id="question">
<h2>Question<a class="headerlink" href="#question" title="Permalink to this headline"></a></h2>
@@ -272,60 +227,32 @@ more than welcome! Please use our <a class="reference external" href="https://gi
</div>
<div class="section" id="notes-and-references">
<h2>Notes and References<a class="headerlink" href="#notes-and-references" title="Permalink to this headline"></a></h2>
<table class="docutils footnote" frame="void" id="id1" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id2">[1]</a></td><td><a class="reference external" href="http://www.jcardsim.org/">http://www.jcardsim.org/</a></td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id3" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id4">[2]</a></td><td><a class="reference external" href="https://github.com/licel/jcardsim/blob/master/src/main/java/com/licel/jcardsim/samples/HelloWorldApplet.java">https://github.com/licel/jcardsim/blob/master/src/main/java/com/licel/jcardsim/samples/HelloWorldApplet.java</a></td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id5" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id6">[3]</a></td><td><a class="reference external" href="https://developers.yubico.com/ykneo-openpgp/">https://developers.yubico.com/ykneo-openpgp/</a></td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id7" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id8">[4]</a></td><td><a class="reference external" href="https://developers.yubico.com/ykneo-oath/">https://developers.yubico.com/ykneo-oath/</a></td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id9" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id10">[5]</a></td><td><a class="reference external" href="http://www.pwendland.net/IsoApplet/">http://www.pwendland.net/IsoApplet/</a></td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id11" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id12">[6]</a></td><td><a class="reference external" href="https://github.com/vletoux/GidsApplet">https://github.com/vletoux/GidsApplet</a></td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id13" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id14">[7]</a></td><td><a class="reference external" href="https://github.com/eriknellessen/Virtual-Keycard">https://github.com/eriknellessen/Virtual-Keycard</a></td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id15" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id16">[8]</a></td><td><a class="reference external" href="https://f-droid.org/repository/browse/?fdid=com.vsmartcard.remotesmartcardreader.app">https://f-droid.org/repository/browse/?fdid=com.vsmartcard.remotesmartcardreader.app</a></td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id17" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id18">[9]</a></td><td><a class="reference external" href="http://developer.android.com/sdk/installing/studio.html">http://developer.android.com/sdk/installing/studio.html</a></td></tr>
</tbody>
</table>
<dl class="footnote brackets">
<dt class="label" id="id4"><span class="brackets"><a class="fn-backref" href="#id5">1</a></span></dt>
<dd><p><a class="reference external" href="http://www.jcardsim.org/">http://www.jcardsim.org/</a></p>
</dd>
<dt class="label" id="id6"><span class="brackets"><a class="fn-backref" href="#id7">2</a></span></dt>
<dd><p><a class="reference external" href="https://developers.yubico.com/ykneo-openpgp/">https://developers.yubico.com/ykneo-openpgp/</a></p>
</dd>
<dt class="label" id="id8"><span class="brackets"><a class="fn-backref" href="#id9">3</a></span></dt>
<dd><p><a class="reference external" href="https://developers.yubico.com/ykneo-oath/">https://developers.yubico.com/ykneo-oath/</a></p>
</dd>
<dt class="label" id="id10"><span class="brackets"><a class="fn-backref" href="#id11">4</a></span></dt>
<dd><p><a class="reference external" href="http://www.pwendland.net/IsoApplet/">http://www.pwendland.net/IsoApplet/</a></p>
</dd>
<dt class="label" id="id12"><span class="brackets"><a class="fn-backref" href="#id13">5</a></span></dt>
<dd><p><a class="reference external" href="https://github.com/vletoux/GidsApplet">https://github.com/vletoux/GidsApplet</a></p>
</dd>
<dt class="label" id="id14"><span class="brackets"><a class="fn-backref" href="#id15">6</a></span></dt>
<dd><p><a class="reference external" href="https://github.com/eriknellessen/Virtual-Keycard">https://github.com/eriknellessen/Virtual-Keycard</a></p>
</dd>
<dt class="label" id="id16"><span class="brackets"><a class="fn-backref" href="#id17">7</a></span></dt>
<dd><p><a class="reference external" href="https://f-droid.org/repository/browse/?fdid=com.vsmartcard.remotesmartcardreader.app">https://f-droid.org/repository/browse/?fdid=com.vsmartcard.remotesmartcardreader.app</a></p>
</dd>
<dt class="label" id="id18"><span class="brackets"><a class="fn-backref" href="#id19">8</a></span></dt>
<dd><p><a class="reference external" href="http://developer.android.com/sdk/installing/studio.html">http://developer.android.com/sdk/installing/studio.html</a></p>
</dd>
</dl>
</div>
</div>
@@ -341,7 +268,7 @@ more than welcome! Please use our <a class="reference external" href="https://gi
</p>
<p>
&copy; Copyright 2009-2017 by Dominik Oepen and Frank Morgner.<br/>
&copy; Copyright 2009-2021 by Dominik Oepen and Frank Morgner.<br/>
</p>
</div>
</footer>

View File

@@ -1,35 +1,23 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tizen Smart Card Emulator &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../_static/basic.css" type="text/css" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Tizen Smart Card Emulator &#8212; vsmartcard 2021-04-28 documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/bootswatch-3.3.4/flatly/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2017-01-16',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="../_static/js/jquery-fix.js"></script>
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/js/jquery-1.11.0.min.js"></script>
<script src="../_static/js/jquery-fix.js"></script>
<script src="../_static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
<script src="../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-16 documentation" href="../index.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="PC/SC Relay" href="../pcsc-relay/README.html" />
<link rel="prev" title="Android Smart Card Emulator" href="../ACardEmulator/README.html" />
<meta charset='utf-8'>
@@ -37,8 +25,7 @@
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
<meta name="apple-mobile-web-app-capable" content="yes">
</head>
<body>
</head><body>
<a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img
@@ -85,7 +72,7 @@
<li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li>
</ul>
@@ -119,7 +106,7 @@
<li>
<a href="../ACardEmulator/README.html" title="Previous Chapter: Android Smart Card Emulator"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; Android Smart Ca...</span>
<a href="../ACardEmulator/README.html" title="Previous Chapter: Android Smart Card Emulator"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; Android Smart...</span>
</a>
</li>
<li>
@@ -156,50 +143,45 @@
<div class="section" id="tizen-smart-card-emulator">
<span id="tcardemulator"></span><h1>Tizen Smart Card Emulator<a class="headerlink" href="#tizen-smart-card-emulator" title="Permalink to this headline"></a></h1>
<div class="sidebar">
<p class="first sidebar-title">Use a Tizen smartwatch as contact-less smart card</p>
<table class="last docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">License:</th><td class="field-body">GPL version 3</td>
</tr>
<tr class="field-even field"><th class="field-name" colspan="2">Tested Platform:</th></tr>
<tr class="field-even field"><td>&nbsp;</td><td class="field-body">Tizen (Samsung Gear S2)</td>
</tr>
</tbody>
</table>
<p class="sidebar-title">Use a Tizen smartwatch as contact-less smart card</p>
<dl class="field-list simple">
<dt class="field-odd">License</dt>
<dd class="field-odd"><p>GPL version 3</p>
</dd>
<dt class="field-even">Tested Platform</dt>
<dd class="field-even"><p>Tizen (Samsung Gear S2)</p>
</dd>
</dl>
</div>
<p>The Tizen Smart Card Emulator allows the emulation of a contact-less smart card.
The emulator uses Tizen&#8217;s <abbr title="host card emulation">HCE</abbr> to fetch APDUs from a contact-less reader.
The headless Tizen service delegates the Command APDUs via Samsung&#8217;s Accessory
Protocol to the <a class="reference internal" href="../ACardEmulator/README.html#acardemulator"><em>Android Smart Card Emulator</em></a>. The android app processes the commands and
The emulator uses Tizens <abbr title="host card emulation">HCE</abbr> to fetch APDUs from a contact-less reader.
The headless Tizen service delegates the Command APDUs via Samsungs Accessory
Protocol to the <a class="reference internal" href="../ACardEmulator/README.html#acardemulator"><span class="std std-ref">Android Smart Card Emulator</span></a>. The android app processes the commands and
sends responses back to the contact-less reader via the Tizen Smart Card
Emulator.</p>
<p>You may also attach your own simulation by using the Samsung Accessory Protocol
for communicating with the tizen service.</p>
<div class="figure">
<p><img src="../_images/tikz-b87c5ab6092153f7f845370e9964b266e5d97f55.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (gears2) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/gears2.jpg}};
\node (phone) [right=-.5cm of gears2] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (gears2.west) ;
\end{pgfonlayer}" /></p>
<p class="caption">Simulate a contact-less smart card with Android Smart Card Emulator</p></div><div class="section" id="download-and-install">
<div class="figure" id="id1" style="text-align: center">
<p><img src="../_images/tikz-b87c5ab6092153f7f845370e9964b266e5d97f55.svg" alt="Figure made with TikZ" /></p>
<p class="caption"><span class="caption-text">Simulate a contact-less smart card with Android Smart Card Emulator</span></p>
</div><div class="section" id="download-and-install">
<h2>Download and Install<a class="headerlink" href="#download-and-install" title="Permalink to this headline"></a></h2>
<p>To manually compile the app you need to fetch the sources and initialize the
submodules:</p>
<div class="highlight-sh"><div class="highlight"><pre>git clone https://github.com/frankmorgner/vsmartcard.git
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>git clone https://github.com/frankmorgner/vsmartcard.git
</pre></div>
</div>
<p>We use <a class="reference external" href="https://developer.tizen.org/development/tools/download">Tizen SDK</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a> to build and deploy the application. Use
<em class="menuselection">Import...</em> to select <em class="menuselection">Tizen ‣ Tizen Project</em>.
In the next dialog choose <tt class="file docutils literal"><span class="pre">Tizen/TCardEmulator</span></tt>. To be able to build and
<p>We use <a class="reference external" href="https://developer.tizen.org/development/tools/download">Tizen SDK</a> <a class="footnote-reference brackets" href="#id2" id="id3">1</a> to build and deploy the application. Use
<span class="menuselection">Import</span> to select <span class="menuselection">Tizen ‣ Tizen Project</span>.
In the next dialog choose <code class="file docutils literal notranslate"><span class="pre">Tizen/TCardEmulator</span></code>. To be able to build and
install the Tizen service on the smartwatch, you need to <a class="reference external" href="https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included">install the
appropriate SDK extensions and register as app developer</a> <a class="footnote-reference" href="#id3" id="id4">[2]</a>.</p>
appropriate SDK extensions and register as app developer</a> <a class="footnote-reference brackets" href="#id4" id="id5">2</a>.</p>
<p>More usefull ressources:</p>
<ul class="simple">
<li><p><a class="reference external" href="https://developer.tizen.org/development/guides/native-application/connectivity-and-wireless/nfc">Tizen Developers: Near Field Communication (NFC)</a> <a class="footnote-reference brackets" href="#id6" id="id7">3</a></p></li>
<li><p><a class="reference external" href="http://developer.samsung.com/html/techdoc/ProgrammingGuide_Accessory.pdf">Programming Guide: Accessory</a> <a class="footnote-reference brackets" href="#id8" id="id9">4</a></p></li>
<li><p><a class="reference external" href="http://developer.samsung.com/html/techdoc/Guidelines_on_Connecting_GearS2_device_using_WiFi_151222.pdf">Guidelines on Connecting a Gear S2 Device Using Wi-Fi</a> <a class="footnote-reference brackets" href="#id10" id="id11">5</a></p></li>
</ul>
</div>
<div class="section" id="question">
<h2>Question<a class="headerlink" href="#question" title="Permalink to this headline"></a></h2>
@@ -208,18 +190,23 @@ more than welcome! Please use our <a class="reference external" href="https://gi
</div>
<div class="section" id="notes-and-references">
<h2>Notes and References<a class="headerlink" href="#notes-and-references" title="Permalink to this headline"></a></h2>
<table class="docutils footnote" frame="void" id="id1" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id2">[1]</a></td><td><a class="reference external" href="https://developer.tizen.org/development/tools/download">https://developer.tizen.org/development/tools/download</a></td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id3" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id4">[2]</a></td><td><a class="reference external" href="https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included">https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included</a></td></tr>
</tbody>
</table>
<dl class="footnote brackets">
<dt class="label" id="id2"><span class="brackets"><a class="fn-backref" href="#id3">1</a></span></dt>
<dd><p><a class="reference external" href="https://developer.tizen.org/development/tools/download">https://developer.tizen.org/development/tools/download</a></p>
</dd>
<dt class="label" id="id4"><span class="brackets"><a class="fn-backref" href="#id5">2</a></span></dt>
<dd><p><a class="reference external" href="https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included">https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included</a></p>
</dd>
<dt class="label" id="id6"><span class="brackets"><a class="fn-backref" href="#id7">3</a></span></dt>
<dd><p><a class="reference external" href="https://developer.tizen.org/development/guides/native-application/connectivity-and-wireless/nfc">https://developer.tizen.org/development/guides/native-application/connectivity-and-wireless/nfc</a></p>
</dd>
<dt class="label" id="id8"><span class="brackets"><a class="fn-backref" href="#id9">4</a></span></dt>
<dd><p><a class="reference external" href="http://developer.samsung.com/html/techdoc/ProgrammingGuide_Accessory.pdf">http://developer.samsung.com/html/techdoc/ProgrammingGuide_Accessory.pdf</a></p>
</dd>
<dt class="label" id="id10"><span class="brackets"><a class="fn-backref" href="#id11">5</a></span></dt>
<dd><p><a class="reference external" href="http://developer.samsung.com/html/techdoc/Guidelines_on_Connecting_GearS2_device_using_WiFi_151222.pdf">http://developer.samsung.com/html/techdoc/Guidelines_on_Connecting_GearS2_device_using_WiFi_151222.pdf</a></p>
</dd>
</dl>
</div>
</div>
@@ -235,7 +222,7 @@ more than welcome! Please use our <a class="reference external" href="https://gi
</p>
<p>
&copy; Copyright 2009-2017 by Dominik Oepen and Frank Morgner.<br/>
&copy; Copyright 2009-2021 by Dominik Oepen and Frank Morgner.<br/>
</p>
</div>
</footer>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -1,4 +1,4 @@
<map id="inheritance91c24ce5a0" name="inheritance91c24ce5a0">
<area shape="rect" id="node1" title="A class whose instances are single test cases." alt="" coords="5,5,172,31"/>
<area shape="rect" id="node2" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM" title="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM" alt="" coords="220,5,639,31"/>
<area shape="rect" id="node1" title="A class whose instances are single test cases." alt="" coords="5,5,173,31"/>
<area shape="rect" id="node2" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM" target="_top" title="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM" alt="" coords="221,5,648,31"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -1,3 +1,3 @@
<map id="inheritancef021466e51" name="inheritancef021466e51">
<area shape="rect" id="node1" href="#virtualsmartcard.SWutils.SwError" title="virtualsmartcard.SWutils.SwError" alt="" coords="5,5,239,31"/>
<area shape="rect" id="node1" href="#virtualsmartcard.SWutils.SwError" target="_top" title="virtualsmartcard.SWutils.SwError" alt="" coords="5,5,243,31"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -0,0 +1,6 @@
<map id="inheritancef880455e0d" name="inheritancef880455e0d">
<area shape="rect" id="node1" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" target="_top" title="virtualsmartcard.SEutils.Security_Environment" alt="" coords="5,55,331,80"/>
<area shape="rect" id="node4" href="#virtualsmartcard.cards.ePass.ePass_SE" target="_top" title="This class implements the Security Environment of the ICAO Passports. It" alt="" coords="391,55,665,80"/>
<area shape="rect" id="node2" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" target="_top" title="This class is used to store the data needed by the SAM." alt="" coords="35,5,301,31"/>
<area shape="rect" id="node3" href="#virtualsmartcard.cards.ePass.PassportSAM" target="_top" title="SAM for ICAO ePassport. Implements Basic access control and key derivation" alt="" coords="379,5,677,31"/>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1,4 @@
<map id="inheritance7064aeb8f6" name="inheritance7064aeb8f6">
<area shape="rect" id="node1" href="#virtualsmartcard.SEutils.ControlReferenceTemplate" target="_top" title="Control Reference Templates are used to configure the Security" alt="" coords="5,55,360,80"/>
<area shape="rect" id="node2" href="#virtualsmartcard.SEutils.Security_Environment" target="_top" title="virtualsmartcard.SEutils.Security_Environment" alt="" coords="20,5,345,31"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

View File

@@ -1,6 +0,0 @@
<map id="inheritancef880455e0d" name="inheritancef880455e0d">
<area shape="rect" id="node1" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" title="virtualsmartcard.SEutils.Security_Environment" alt="" coords="5,55,324,80"/>
<area shape="rect" id="node4" href="#virtualsmartcard.cards.ePass.ePass_SE" title="This class implements the Security Environment of the ICAO Passports. It" alt="" coords="383,55,655,80"/>
<area shape="rect" id="node2" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" title="This class is used to store the data needed by the SAM." alt="" coords="36,5,293,31"/>
<area shape="rect" id="node3" href="#virtualsmartcard.cards.ePass.PassportSAM" title="SAM for ICAO ePassport. Implements Basic access control and key derivation" alt="" coords="372,5,667,31"/>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -1,4 +1,4 @@
<map id="inheritancedaa185e5f0" name="inheritancedaa185e5f0">
<area shape="rect" id="node1" title="A class whose instances are single test cases." alt="" coords="5,5,172,31"/>
<area shape="rect" id="node2" href="#virtualsmartcard.tests.utils_test.TestUtils" title="virtualsmartcard.tests.utils_test.TestUtils" alt="" coords="220,5,503,31"/>
<area shape="rect" id="node1" title="A class whose instances are single test cases." alt="" coords="5,5,173,31"/>
<area shape="rect" id="node2" href="#virtualsmartcard.tests.utils_test.TestUtils" target="_top" title="virtualsmartcard.tests.utils_test.TestUtils" alt="" coords="221,5,512,31"/>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -0,0 +1,5 @@
<map id="inheritance4bd50c7c14" name="inheritance4bd50c7c14">
<area shape="rect" id="node1" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS" target="_top" title="virtualsmartcard.VirtualSmartcard.Iso7816OS" alt="" coords="387,55,704,80"/>
<area shape="rect" id="node2" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS" target="_top" title="Base class for a smart card OS" alt="" coords="5,55,339,80"/>
<area shape="rect" id="node3" href="#virtualsmartcard.VirtualSmartcard.VirtualICC" target="_top" title="This class is responsible for maintaining the communication of the virtual" alt="" coords="15,5,329,31"/>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,4 @@
<map id="inheritancee548df9983" name="inheritancee548df9983">
<area shape="rect" id="node1" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" target="_top" title="Base class for a smart card OS" alt="" coords="5,5,339,31"/>
<area shape="rect" id="node2" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS" target="_top" title="This class implements the commands used for the PC/SC&#45;lite &#160;smart &#160;card" alt="" coords="387,5,736,31"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,9 +0,0 @@
<map id="inheritance498eda02c2" name="inheritance498eda02c2">
<area shape="rect" id="node1" href="#virtualsmartcard.SmartcardFilesystem.DF" title="Class for a dedicated file" alt="" coords="250,20,446,37"/>
<area shape="rect" id="node4" href="#virtualsmartcard.SmartcardFilesystem.MF" title="Class for a master file" alt="" coords="523,20,719,37"/>
<area shape="rect" id="node2" href="#virtualsmartcard.SmartcardFilesystem.File" title="Template class for a smartcard file." alt="" coords="12,37,209,54"/>
<area shape="rect" id="node3" href="#virtualsmartcard.SmartcardFilesystem.EF" title="Template class for an elementary file." alt="" coords="250,53,445,71"/>
<area shape="rect" id="node6" href="#virtualsmartcard.SmartcardFilesystem.RecordStructureEF" title="Class for an elementary file with record structure." alt="" coords="489,53,754,71"/>
<area shape="rect" id="node7" href="#virtualsmartcard.SmartcardFilesystem.TransparentStructureEF" title="Class for an elementary file with transparent structure." alt="" coords="478,87,764,104"/>
<area shape="rect" id="node5" href="#virtualsmartcard.SmartcardFilesystem.Record" title="virtualsmartcard.SmartcardFilesystem.Record" alt="" coords="4,4,217,21"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

View File

@@ -1,5 +0,0 @@
<map id="inheritance4bd50c7c14" name="inheritance4bd50c7c14">
<area shape="rect" id="node1" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="virtualsmartcard.VirtualSmartcard.Iso7816OS" alt="" coords="383,55,695,80"/>
<area shape="rect" id="node2" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="Base class for a smart card OS" alt="" coords="5,55,335,80"/>
<area shape="rect" id="node3" href="#virtualsmartcard.VirtualSmartcard.VirtualICC" title="This class is responsible for maintaining the communication of the virtual" alt="" coords="17,5,323,31"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@@ -1,5 +1,5 @@
<map id="inheritance305ec42f0e" name="inheritance305ec42f0e">
<area shape="rect" id="node1" href="#virtualsmartcard.utils.APDU" title="Base class for an APDU" alt="" coords="5,31,204,56"/>
<area shape="rect" id="node2" href="#virtualsmartcard.utils.C_APDU" title="Class for a command APDU" alt="" coords="252,5,467,31"/>
<area shape="rect" id="node3" href="#virtualsmartcard.utils.R_APDU" title="Class for a response APDU" alt="" coords="252,55,467,80"/>
<area shape="rect" id="node1" href="#virtualsmartcard.utils.APDU" target="_top" title="Base class for an APDU" alt="" coords="5,31,208,56"/>
<area shape="rect" id="node2" href="#virtualsmartcard.utils.C_APDU" target="_top" title="Class for a command APDU" alt="" coords="256,5,475,31"/>
<area shape="rect" id="node3" href="#virtualsmartcard.utils.R_APDU" target="_top" title="Class for a response APDU" alt="" coords="256,55,475,80"/>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,13 @@
<map id="inheritance645263d8d9" name="inheritance645263d8d9">
<area shape="rect" id="node1" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" target="_top" title="virtualsmartcard.SEutils.Security_Environment" alt="" coords="5,79,173,93"/>
<area shape="rect" id="node11" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE" target="_top" title="virtualsmartcard.cards.cryptoflex.CryptoflexSE" alt="" coords="204,79,372,93"/>
<area shape="rect" id="node2" href="virtualsmartcard.SmartcardFilesystem.html#virtualsmartcard.SmartcardFilesystem.DF" target="_top" title="Class for a dedicated file" alt="" coords="212,54,364,67"/>
<area shape="rect" id="node4" href="virtualsmartcard.SmartcardFilesystem.html#virtualsmartcard.SmartcardFilesystem.MF" target="_top" title="Class for a master file" alt="" coords="409,54,562,67"/>
<area shape="rect" id="node3" href="virtualsmartcard.SmartcardFilesystem.html#virtualsmartcard.SmartcardFilesystem.File" target="_top" title="Template class for a smartcard file." alt="" coords="12,54,166,67"/>
<area shape="rect" id="node8" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF" target="_top" title="virtualsmartcard.cards.cryptoflex.CryptoflexMF" alt="" coords="595,54,765,67"/>
<area shape="rect" id="node5" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" target="_top" title="This class is used to store the data needed by the SAM." alt="" coords="20,28,158,41"/>
<area shape="rect" id="node10" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM" target="_top" title="virtualsmartcard.cards.cryptoflex.CryptoflexSAM" alt="" coords="200,28,376,41"/>
<area shape="rect" id="node6" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.Iso7816OS" target="_top" title="virtualsmartcard.VirtualSmartcard.Iso7816OS" alt="" coords="206,3,370,16"/>
<area shape="rect" id="node9" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS" target="_top" title="virtualsmartcard.cards.cryptoflex.CryptoflexOS" alt="" coords="401,3,570,16"/>
<area shape="rect" id="node7" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" target="_top" title="Base class for a smart card OS" alt="" coords="3,3,175,16"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -1,4 +0,0 @@
<map id="inheritancee548df9983" name="inheritancee548df9983">
<area shape="rect" id="node1" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="Base class for a smart card OS" alt="" coords="5,5,335,31"/>
<area shape="rect" id="node2" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS" title="This class implements the commands used for the PC/SC&#45;lite &#160;smart &#160;card" alt="" coords="383,5,725,31"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,3 @@
<map id="inheritancea75424a3c7" name="inheritancea75424a3c7">
<area shape="rect" id="node1" href="#virtualsmartcard.cards.RelayMiddleman.RelayMiddleman" target="_top" title="The RelayMiddleman class serves as a base from which a user might derive" alt="" coords="5,5,403,31"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -1,4 +0,0 @@
<map id="inheritance7064aeb8f6" name="inheritance7064aeb8f6">
<area shape="rect" id="node1" href="#virtualsmartcard.SEutils.ControlReferenceTemplate" title="Control Reference Templates are used to configure the Security" alt="" coords="5,55,353,80"/>
<area shape="rect" id="node2" href="#virtualsmartcard.SEutils.Security_Environment" title="virtualsmartcard.SEutils.Security_Environment" alt="" coords="20,5,339,31"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

View File

@@ -1,6 +0,0 @@
<map id="inheritancea62cb97bf3" name="inheritancea62cb97bf3">
<area shape="rect" id="node1" title="A class whose instances are single test cases." alt="" coords="3,20,113,37"/>
<area shape="rect" id="node3" href="#virtualsmartcard.tests.CardGenerator_test.ISO7816GeneratorTest" title="virtualsmartcard.tests.CardGenerator_test.ISO7816GeneratorTest" alt="" coords="144,20,434,37"/>
<area shape="rect" id="node2" href="#virtualsmartcard.tests.CardGenerator_test.CryptoflexGeneratorTest" title="virtualsmartcard.tests.CardGenerator_test.CryptoflexGeneratorTest" alt="" coords="465,3,765,20"/>
<area shape="rect" id="node4" href="#virtualsmartcard.tests.CardGenerator_test.TestNPACardGenerator" title="virtualsmartcard.tests.CardGenerator_test.TestNPACardGenerator" alt="" coords="469,36,761,52"/>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -1,3 +1,3 @@
<map id="inheritancecb03a25959" name="inheritancecb03a25959">
<area shape="rect" id="node1" href="#virtualsmartcard.CardGenerator.CardGenerator" title="This class is used to generate the SAM and filesystem for the" alt="" coords="5,5,331,31"/>
<area shape="rect" id="node1" href="#virtualsmartcard.CardGenerator.CardGenerator" target="_top" title="This class is used to generate the SAM and filesystem for the" alt="" coords="5,5,332,31"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,11 +0,0 @@
<map id="inheritance6f1df1879c" name="inheritance6f1df1879c">
<area shape="rect" id="node1" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.ControlReferenceTemplate" title="Control Reference Templates are used to configure the Security" alt="" coords="4,117,269,136"/>
<area shape="rect" id="node7" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT" title="virtualsmartcard.cards.nPA.nPA_AT_CRT" alt="" coords="318,117,530,136"/>
<area shape="rect" id="node2" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" title="virtualsmartcard.SEutils.Security_Environment" alt="" coords="15,79,258,98"/>
<area shape="rect" id="node9" href="#virtualsmartcard.cards.nPA.nPA_SE" title="virtualsmartcard.cards.nPA.nPA_SE" alt="" coords="330,79,518,98"/>
<area shape="rect" id="node3" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" title="This class is used to store the data needed by the SAM." alt="" coords="39,42,234,61"/>
<area shape="rect" id="node8" href="#virtualsmartcard.cards.nPA.nPA_SAM" title="virtualsmartcard.cards.nPA.nPA_SAM" alt="" coords="326,42,522,61"/>
<area shape="rect" id="node4" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="virtualsmartcard.VirtualSmartcard.Iso7816OS" alt="" coords="305,4,543,23"/>
<area shape="rect" id="node6" href="#virtualsmartcard.cards.nPA.NPAOS" title="virtualsmartcard.cards.nPA.NPAOS" alt="" coords="579,4,764,23"/>
<area shape="rect" id="node5" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="Base class for a smart card OS" alt="" coords="11,4,262,23"/>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,4 @@
<map id="inheritanceeed1b727ec" name="inheritanceeed1b727ec">
<area shape="rect" id="node1" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" target="_top" title="Base class for a smart card OS" alt="" coords="5,5,339,31"/>
<area shape="rect" id="node2" href="#virtualsmartcard.cards.Relay.RelayOS" target="_top" title="This class implements relaying of a (physical) smartcard. The RelayOS" alt="" coords="387,5,653,31"/>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -1,4 +1,4 @@
<map id="inheritance34477d81d3" name="inheritance34477d81d3">
<area shape="rect" id="node1" title="A class whose instances are single test cases." alt="" coords="5,5,172,31"/>
<area shape="rect" id="node2" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils" title="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils" alt="" coords="220,5,591,31"/>
<area shape="rect" id="node1" title="A class whose instances are single test cases." alt="" coords="5,5,173,31"/>
<area shape="rect" id="node2" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils" target="_top" title="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils" alt="" coords="221,5,600,31"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -1,13 +0,0 @@
<map id="inheritance645263d8d9" name="inheritance645263d8d9">
<area shape="rect" id="node1" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" title="virtualsmartcard.SEutils.Security_Environment" alt="" coords="6,80,172,93"/>
<area shape="rect" id="node11" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE" title="virtualsmartcard.cards.cryptoflex.CryptoflexSE" alt="" coords="203,80,372,93"/>
<area shape="rect" id="node2" href="virtualsmartcard.SmartcardFilesystem.html#virtualsmartcard.SmartcardFilesystem.DF" title="Class for a dedicated file" alt="" coords="212,54,363,68"/>
<area shape="rect" id="node4" href="virtualsmartcard.SmartcardFilesystem.html#virtualsmartcard.SmartcardFilesystem.MF" title="Class for a master file" alt="" coords="410,54,561,68"/>
<area shape="rect" id="node3" href="virtualsmartcard.SmartcardFilesystem.html#virtualsmartcard.SmartcardFilesystem.File" title="Template class for a smartcard file." alt="" coords="13,54,165,68"/>
<area shape="rect" id="node8" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF" title="virtualsmartcard.cards.cryptoflex.CryptoflexMF" alt="" coords="596,54,765,68"/>
<area shape="rect" id="node5" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" title="This class is used to store the data needed by the SAM." alt="" coords="22,29,156,42"/>
<area shape="rect" id="node10" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM" title="virtualsmartcard.cards.cryptoflex.CryptoflexSAM" alt="" coords="200,29,375,42"/>
<area shape="rect" id="node6" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="virtualsmartcard.VirtualSmartcard.Iso7816OS" alt="" coords="206,3,369,16"/>
<area shape="rect" id="node9" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS" title="virtualsmartcard.cards.cryptoflex.CryptoflexOS" alt="" coords="400,3,571,16"/>
<area shape="rect" id="node7" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="Base class for a smart card OS" alt="" coords="3,3,175,16"/>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@@ -0,0 +1,6 @@
<map id="inheritancea62cb97bf3" name="inheritancea62cb97bf3">
<area shape="rect" id="node1" title="A class whose instances are single test cases." alt="" coords="3,20,113,36"/>
<area shape="rect" id="node3" href="#virtualsmartcard.tests.CardGenerator_test.ISO7816GeneratorTest" target="_top" title="virtualsmartcard.tests.CardGenerator_test.ISO7816GeneratorTest" alt="" coords="144,20,435,36"/>
<area shape="rect" id="node2" href="#virtualsmartcard.tests.CardGenerator_test.CryptoflexGeneratorTest" target="_top" title="virtualsmartcard.tests.CardGenerator_test.CryptoflexGeneratorTest" alt="" coords="466,3,765,20"/>
<area shape="rect" id="node4" href="#virtualsmartcard.tests.CardGenerator_test.TestNPACardGenerator" target="_top" title="virtualsmartcard.tests.CardGenerator_test.TestNPACardGenerator" alt="" coords="469,36,761,52"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -1,4 +0,0 @@
<map id="inheritanceeed1b727ec" name="inheritanceeed1b727ec">
<area shape="rect" id="node1" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="Base class for a smart card OS" alt="" coords="5,5,335,31"/>
<area shape="rect" id="node2" href="#virtualsmartcard.cards.Relay.RelayOS" title="This class implements relaying of a (physical) smartcard. The RelayOS" alt="" coords="383,5,644,31"/>
</map>

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,9 @@
<map id="inheritance498eda02c2" name="inheritance498eda02c2">
<area shape="rect" id="node1" href="#virtualsmartcard.SmartcardFilesystem.DF" target="_top" title="Class for a dedicated file" alt="" coords="250,20,447,37"/>
<area shape="rect" id="node4" href="#virtualsmartcard.SmartcardFilesystem.MF" target="_top" title="Class for a master file" alt="" coords="523,20,721,37"/>
<area shape="rect" id="node2" href="#virtualsmartcard.SmartcardFilesystem.File" target="_top" title="Template class for a smartcard file." alt="" coords="11,37,211,53"/>
<area shape="rect" id="node3" href="#virtualsmartcard.SmartcardFilesystem.EF" target="_top" title="Template class for an elementary file." alt="" coords="251,53,446,69"/>
<area shape="rect" id="node6" href="#virtualsmartcard.SmartcardFilesystem.RecordStructureEF" target="_top" title="Class for an elementary file with record structure." alt="" coords="490,53,754,69"/>
<area shape="rect" id="node7" href="#virtualsmartcard.SmartcardFilesystem.TransparentStructureEF" target="_top" title="Class for an elementary file with transparent structure." alt="" coords="479,86,764,102"/>
<area shape="rect" id="node5" href="#virtualsmartcard.SmartcardFilesystem.Record" target="_top" title="virtualsmartcard.SmartcardFilesystem.Record" alt="" coords="4,4,218,20"/>
</map>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,3 +1,3 @@
<map id="inheritance8b3e5dd7ee" name="inheritance8b3e5dd7ee">
<area shape="rect" id="node1" href="#virtualsmartcard.SmartcardSAM.SAM" title="This class is used to store the data needed by the SAM." alt="" coords="5,5,263,31"/>
<area shape="rect" id="node1" href="#virtualsmartcard.SmartcardSAM.SAM" target="_top" title="This class is used to store the data needed by the SAM." alt="" coords="5,5,271,31"/>
</map>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 4.6 MiB

After

Width:  |  Height:  |  Size: 4.6 MiB

View File

@@ -135,13 +135,13 @@
</defs>
<g id="surface1">
<g clip-path="url(#clip1)" clip-rule="nonzero">
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C -36.997406 0.248 -54.556 25.513625 -91.556 25.513625 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C -37.14975 0.248 -54.403656 25.513625 -91.556 25.513625 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C -35.981781 0.248 -55.571625 8.505813 -91.556 8.505813 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C -35.981781 0.248 -55.571625 -8.505906 -91.556 -8.505906 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C -37.14975 0.248 -54.403656 -25.513719 -91.556 -25.513719 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
</g>
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C 36.998687 0.248 54.553375 25.513625 91.553375 25.513625 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C 37.151031 0.248 54.404937 25.513625 91.553375 25.513625 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C 35.983062 0.248 55.569 8.505813 91.553375 8.505813 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C 35.983062 0.248 55.569 -8.505906 91.553375 -8.505906 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C 37.151031 0.248 54.404937 -25.513719 91.553375 -25.513719 " transform="matrix(1,0,0,-1,221.681,32.873)"/>

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 2.6 MiB

After

Width:  |  Height:  |  Size: 2.6 MiB

View File

@@ -149,7 +149,7 @@
</defs>
<g id="surface1">
<path style="fill:none;stroke-width:22.67754;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0003125 2.574 C -20.097969 2.574 -25.019844 27.409937 -45.1175 27.409937 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
<path style="fill:none;stroke-width:22.67754;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0003125 2.574 C -21.2425 2.574 -24.328437 -27.410375 -45.570625 -27.410375 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
<path style="fill:none;stroke-width:22.67754;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0003125 2.574 C -21.340156 2.574 -24.226875 -27.410375 -45.570625 -27.410375 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
<path style="fill:none;stroke-width:22.67754;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0003125 2.574 C 31.066094 2.574 44.566094 27.409937 75.6325 27.409937 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
<path style="fill:none;stroke-width:22.67754;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0003125 2.574 C 34.136406 2.574 47.948906 -27.410375 82.085625 -27.410375 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 51.75 3.570312 L 74.769531 3.570312 C 76.972656 3.570312 80.539062 3.570312 82.742188 3.570312 C 85.542969 3.570312 91.046875 9.074219 91.046875 15.863281 C 91.046875 22.648438 85.542969 28.152344 82.742188 28.152344 C 80.539062 28.152344 76.972656 28.152344 74.769531 28.152344 L 20.753906 28.152344 C 18.554688 28.152344 14.984375 28.152344 12.785156 28.152344 C 9.980469 28.152344 4.476562 22.648438 4.476562 15.863281 C 4.476562 9.074219 9.980469 3.570312 12.785156 3.570312 C 14.984375 3.570312 18.554688 3.570312 20.753906 3.570312 L 43.777344 3.570312 C 45.980469 3.570312 49.546875 3.570312 51.75 3.570312 Z M 51.75 3.570312 "/>

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 785 KiB

After

Width:  |  Height:  |  Size: 797 KiB

View File

@@ -523,22 +523,24 @@
<use xlink:href="#glyph3-2" x="398.295009" y="35.158"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-15" x="334.1" y="55.315"/>
<use xlink:href="#glyph3-16" x="342.660371" y="55.315"/>
<use xlink:href="#glyph3-17" x="348.114921" y="55.315"/>
<use xlink:href="#glyph3-18" x="354.176017" y="55.315"/>
<use xlink:href="#glyph3-5" x="359.630567" y="55.315"/>
<use xlink:href="#glyph3-13" x="364.478571" y="55.315"/>
<use xlink:href="#glyph3-15" x="334.099" y="55.315"/>
<use xlink:href="#glyph3-16" x="342.659371" y="55.315"/>
<use xlink:href="#glyph3-17" x="348.113921" y="55.315"/>
<use xlink:href="#glyph3-18" x="354.175017" y="55.315"/>
<use xlink:href="#glyph3-5" x="359.629567" y="55.315"/>
<use xlink:href="#glyph3-13" x="364.477571" y="55.315"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="372.35385" y="55.315"/>
<use xlink:href="#glyph3-2" x="380.687312" y="55.315"/>
<use xlink:href="#glyph3-3" x="384.960406" y="55.315"/>
<use xlink:href="#glyph3-4" x="387.990954" y="55.315"/>
<use xlink:href="#glyph3-1" x="372.35285" y="55.315"/>
<use xlink:href="#glyph3-2" x="380.686312" y="55.315"/>
<use xlink:href="#glyph3-3" x="384.959406" y="55.315"/>
<use xlink:href="#glyph3-4" x="387.989954" y="55.315"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-5" x="393.443322" y="55.315"/>
<use xlink:href="#glyph3-2" x="398.291326" y="55.315"/>
<use xlink:href="#glyph3-5" x="393.442322" y="55.315"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="398.301235" y="55.315"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-8" x="338.357" y="104.861"/>

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

@@ -257,18 +257,25 @@
<symbol overflow="visible" id="glyph3-17">
<path style="stroke:none;" d="M 5.140625 -2.328125 C 5.140625 -3.734375 4.046875 -4.890625 2.71875 -4.890625 C 1.359375 -4.890625 0.3125 -3.703125 0.3125 -2.328125 C 0.3125 -0.921875 1.4375 0.125 2.71875 0.125 C 4.03125 0.125 5.140625 -0.953125 5.140625 -2.328125 Z M 2.71875 -0.15625 C 2.25 -0.15625 1.78125 -0.375 1.484375 -0.890625 C 1.203125 -1.359375 1.203125 -2.03125 1.203125 -2.421875 C 1.203125 -2.84375 1.203125 -3.4375 1.46875 -3.921875 C 1.765625 -4.421875 2.28125 -4.640625 2.71875 -4.640625 C 3.203125 -4.640625 3.671875 -4.40625 3.953125 -3.9375 C 4.234375 -3.46875 4.234375 -2.828125 4.234375 -2.421875 C 4.234375 -2.03125 4.234375 -1.4375 3.984375 -0.953125 C 3.75 -0.46875 3.265625 -0.15625 2.71875 -0.15625 Z M 2.71875 -0.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph4-1">
<path style="stroke:none;" d="M 4.421875 -2.5 C 4.421875 -3.5625 3.53125 -4.421875 2.5 -4.421875 C 1.421875 -4.421875 0.546875 -3.53125 0.546875 -2.5 C 0.546875 -1.4375 1.421875 -0.5625 2.5 -0.5625 C 3.53125 -0.5625 4.421875 -1.421875 4.421875 -2.5 Z M 4.421875 -2.5 "/>
</symbol>
<symbol overflow="visible" id="glyph5-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph5-1">
<path style="stroke:none;" d="M 5.71875 -2.546875 L 5.71875 -2.90625 L 0 -2.90625 L 0 -2.546875 Z M 5.71875 -2.546875 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<g transform="matrix(1,0,0,1,0,-5)">
<rect x="1" y="1" width="1" height="1"/>
<rect x="2" y="1" width="1" height="1"/>
<rect x="3" y="1" width="1" height="1"/>
<rect x="1" y="2" width="1" height="1"/>
<rect x="2" y="2" width="1" height="1"/>
<rect x="3" y="2" width="1" height="1"/>
<rect x="1" y="3" width="1" height="1"/>
<rect x="2" y="3" width="1" height="1"/>
<rect x="3" y="3" width="1" height="1"/>
</g>
</symbol>
</g>
<clipPath id="clip1">
<path d="M 116 25 L 447.542969 25 L 447.542969 256.527344 L 116 256.527344 Z M 116 25 "/>
@@ -314,10 +321,10 @@
<filter id="alpha" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
<feColorMatrix type="matrix" in="SourceGraphic" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<image id="image30" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAADFklEQVR4nO2Z25LaQAxEm8vC5v+/NQnLNQ92F42QBgw2zkOfKtV4WbKBY1mWxoAxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMeb/ZzH3B+hZAFj2K4OvX/pjruf++PzJD/gKn5S7ArDuV41liCgX6GRqnEOc+jjKypMxG1PK/ZJYJ1EJHiL3FOIY4iDx8UwfW+5GgmI36GRG0czkJdqCgTprs4w94F7sXtZ9/97JGUPuCp3ALa5it7iKVdFZJmcZ/EjuSdaYqVyjUI0fOZ6Md+Qu0UnMIsqmYBXNbNZaHLOXVOWgKgFR6o+s8XjXv3901i/+uy8A331sZW3JjpGVCQa7BxKzVsVWQjOpKlT/713/+qh1+RW5lBnlVrJ5vMG97KxUaAYTzdqYrXr5VzKrExnr/Q4j1uOhclWQyvuFW8GV9Ex2lsnMXu0WmLGsqzFDK5lDa/pfjNTGDZG7xO1dP7vUVb6KjfK3uJeuN0IVDFwzlpd/JrOV+UDdacSWjifubYbIjc0/Q9uqGLFL4AmIWa7yKZs3uwuuX5i1kb/TGx8zL4riGjuUaqBZDXDSZGhZiM19a30m4nTGL80b5gZdZu36dY1OVKyVi2St4tnP/3ZpGCI3jpxZnJI1m6AOuK+DwG2W/pbXWWtZY5nB/Jnlgn9fs1aj9dkvsn685lbj5Rq3srIbR9Wzao3jTY2Xrl7y+l5tu7IWS1fta7MToSdEj0dhaFnYoy1OyRp/bZ+qnld7Xa2ncSKr+tqW7F2I7ATMJpf1T6kkMvihs4ktG4ezdqn195+ZyKJsFa3Ho47DrwwRZwB/UE9K+iW1PatG4Kyxj1dFNqG1prRsqHgke7SMJe9u3MT9hWxPocrUVpPPG1kmN2ZwrMVDxuFJN2/G2nJc4PFGTbW3G8dQ3VfI9nOzvdzWPm62OzZJpkam2Cxfod4Be2azXLuE+Jgny15Ob7FMVJI/xice8+i09uhRjw4BkUcb5lkGHzHjs7a5HlBmTx+qTRUS5XLUVcHGGGOMMcYYY4wxxphZ+QeTJfLeqOjuywAAAABJRU5ErkJggg=="/>
<image id="image35" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAADFElEQVR4nO2ZW5OiUAyE28vo7P//rbvLeN0H6LKNCYiC7EN/VanDOI6DTZOTBMAYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGPP/s1r6BDpWANbdyuDr1+6Y66U7vnzyBF/hk+JuAGy7VWMdIooLtGJqXEKcuzjJyouxGHOK+yWxTaISeIy45xCnEEeJjzt9anF3EhR2h1bMKDSdvEa/wEDt2syxRzwKe5D10L13dqYQd4NWwD1uwu5xE1aFzpycOXhI3LOs0alco6AaP3I8G++Iu0YrYhZRbAqsQtPNmouje0mVDqoUEEX9SVZG071/crYv/t0XgO8u9rL2iR0jSxMMVg8kulaFrQStxPxJ/nfTvT5pXn5FXIoZxa3E5vEOj2JnqUIdTNS10a16+z8rpqYh/X8NJszHY8VVgVS8X7gXuBI9EztzMt2r1QIdy7waHVqJOTan/8VEZdwYcde43/WzW13FV2Gj+Hs8iq4boQoM3BzL2z8Ts8/5QF1pxJKOF+5txogbi3+GllUxYpXACxBdruJTbG52V9y+MHMjf6cbH50XheIaK5SqodmM0KSXsWkhFvd96zMRuzN+aW6YO7TOarp1i1aomCtXyVrFs+f/dmoYI25sObM4J2vWQR3xmAeBe5f+lteZa5lj6WD+zHTBz1fXavSd+1XWj+fcqr3c4l6sbOOoalbNcdzUeOvqLa/v1bIr5t4mrAzd/PRC6AXR40kYmxYO6BdOyQp/3eWrmldrXc2nsSOr6to+sZsQ2QVYTFzmP6USkcGTzjq2rB3OyqW+zx/qyDKxVWg9nrQdfqWJuAD4g7pT0i+p5VnVAmeFfbwrsg6tr0vLmoohsSdzLHl3cBPnC9lMoXJqX5HPjSwTNzo45uIx7fCsw5upRo4rDA9qqtlubEN1rpDNc7NZbt8cN5uOzeLUyBzD8g3qCdgzw3KtEuJjnsy97N5imqhE/hifeMyj3drQox5tAiJDA/PMwScs+KxtqQeU2dOHaqhCnnmGZowxxhhjjDHGGGOMWZR/jHfx6sviE14AAAAASUVORK5CYII="/>
<mask id="mask3">
<g filter="url(#alpha)">
<use xlink:href="#image30"/>
<use xlink:href="#image35"/>
</g>
</mask>
<clipPath id="clip8">
@@ -326,14 +333,14 @@
<clipPath id="clip9">
<path d="M 69.664062 61.234375 C 69.664062 67.335938 56.269531 72.277344 39.753906 72.277344 C 23.230469 72.277344 9.835938 67.335938 9.835938 61.234375 C 9.835938 55.136719 23.230469 50.195312 39.753906 50.195312 C 56.269531 50.195312 69.664062 55.136719 69.664062 61.234375 Z M 69.664062 61.234375 "/>
</clipPath>
<radialGradient id="radial0" gradientUnits="userSpaceOnUse" cx="12.574219" cy="67.5" fx="12.574219" fy="67.5" r="8.765625" gradientTransform="matrix(3.412284,0,0,1.259506,-3.159742,-23.782672)">
<radialGradient id="radial0" gradientUnits="userSpaceOnUse" cx="29.37206" cy="157.67294" fx="29.37206" fy="157.67294" r="20.475583" gradientTransform="matrix(1.460804,0,0,0.539196,-3.159742,-23.782672)">
<stop offset="0" style="stop-color:rgb(0%,0%,0%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(0%,0%,0%);stop-opacity:1;"/>
</radialGradient>
<clipPath id="clip7">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface33" clip-path="url(#clip7)">
<g id="surface34" clip-path="url(#clip7)">
<g clip-path="url(#clip8)" clip-rule="nonzero">
<g clip-path="url(#clip9)" clip-rule="evenodd">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#radial0);" d="M 9.835938 50.195312 L 9.835938 72.277344 L 69.664062 72.277344 L 69.664062 50.195312 Z M 9.835938 50.195312 "/>
@@ -343,25 +350,25 @@
<clipPath id="clip10">
<path d="M 0.347656 0.34375 L 85.394531 0.34375 L 85.394531 85.394531 L 0.347656 85.394531 Z M 0.347656 0.34375 "/>
</clipPath>
<image id="image40" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAAAx0lEQVR4nO3UIU5DQRhG0VtaW4GohISgWQU7J8GikWBxbKBB9MEK3p+Gl3OSmbFfrpgCAAAAAAAAAAAAAAAAAAAAAAAA/rtdtV9e1nOuzofqVB2vPGZrvqrvQ3W3HNbz1hL3vnq68pit+aw+xJ3xWvX7LYi7rtu6xD1VD9fdsjnHusTdLy/rufm7mCHuIHEHiTtI3EHiDhJ3kLiDxB0k7iBxB4k7SNxB4g4Sd5C4g8QdJO4gcQeJO0jcQbvquXq89pCNeanefwAmBQwCda6T+AAAAABJRU5ErkJggg=="/>
<image id="image45" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAAAx0lEQVR4nO3UIU5DQRhG0VtaW4GohISgWQU7J8GikWBxbKBB9MEK3p+Gl3OSmbFfrpgCAAAAAAAAAAAAAAAAAAAAAAAA/rtdtV9e1nOuzofqVB2vPGZrvqrvQ3W3HNbz1hL3vnq68pit+aw+xJ3xWvX7LYi7rtu6xD1VD9fdsjnHusTdLy/rufm7mCHuIHEHiTtI3EHiDhJ3kLiDxB0k7iBxB4k7SNxB4g4Sd5C4g8QdJO4gcQeJO0jcQbvquXq89pCNeanefwAmBQwCda6T+AAAAABJRU5ErkJggg=="/>
<mask id="mask4">
<g filter="url(#alpha)">
<use xlink:href="#image40"/>
<use xlink:href="#image45"/>
</g>
</mask>
<clipPath id="clip11">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface43" clip-path="url(#clip11)">
<g id="surface44" clip-path="url(#clip11)">
<path style="fill:none;stroke-width:0.512;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(84.70459%,87.449646%,83.920288%);stroke-opacity:1;stroke-miterlimit:4;" d="M 24.565163 25.172255 C 24.565163 26.808942 21.401137 28.133459 17.499896 28.133459 C 13.598654 28.133459 10.434628 26.808942 10.434628 25.172255 C 10.434628 23.535568 13.598654 22.207523 17.499896 22.207523 C 21.401137 22.207523 24.565163 23.535568 24.565163 25.172255 Z M 24.565163 25.172255 " transform="matrix(2.21484,0,0,2.21484,0.346,0.34514)"/>
</g>
<clipPath id="clip12">
<path d="M 0.347656 0.34375 L 85.394531 0.34375 L 85.394531 85.394531 L 0.347656 85.394531 Z M 0.347656 0.34375 "/>
</clipPath>
<image id="image50" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAADCUlEQVR4nO2Zy3LqQAxEG3DIzf9/bHhzF7bKTaMZbBjHmz5VKmVDsI81Y40AjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGLMKm5W+c0expdhIBHfKN8o3AFfK1+UvfzpLy90C6AB8DblDLzSyylXBgcrluFJcKJ+HfFnq5l6xhNwvij1GsSyY5arkmlyuWq3Yi8RZ4jTkW/M7LtBK7g69yD2Ab4xiQy5HiK5VcE1uqWIzsackH4d8anTvRT6V26GXGVL57z0eBato3Sa2GCVnciNKYmMbCJEhk+OIUe6RYhG6Nz+3QS/wn2SOTLJWc7ZNcPUGLDbklrYAFaoiI/hajsNnm/KO3B16mRGZ5Cmys+2CBWdytWKz5Z9VZunB8p5/QOMqnitXxdZiiuzaDYdg3Q64WrU6Ix/kf/PqqL04gYaC58plISrrHekqW0WEXBYb1aoVGpWXPaDaHq7tXXzPx8yRyy8fDu0CuFPQh/BKOouOl1xsB7zsQ+YB+UswE1fqh3Xf77CC3A3Gm8hyFjvK+nD0QYTkHzwKv2IU+YvnamZJWe+smbeFUo7v+Ig5cnUpzQk9VZUOAWf0EoBR6h2PLdaFPsP/h0OPyZwjMCF/xBy5urR0eWlrpIcErpzgjkexR/TVWdpzuTvgbiAqm19wekLTa+Rr59xsPjFXbkjjpTbldKUvC34paceQtWPxeRZT62UPeJSuPa4+BH0YTZjbLZzxPLma8vJgmaVeV9slfUFlc4Ts4KCnMJar0jPxTbYE4L1DxAm5xOymWSa3W9lApzTAyeYKOv3SwwRXZ3Y6K8luyqezhayFyg4JtUrN9mVdGUC+Ml5NwUqHDI1FxpItpmIxZ+C+tjaweTVTyPZtIG/2S8Ob7FicSV501tt6ntvhuUrjQFAbN045lmb7Or8kdUiebRchuNm+WmPJXyJ2qA/K9aw/V+6cuW7zidcU/vI3tPjtrFSxfErKrq02C8hiddb4gbLGVLl/sqyNMcYYY4wxxhhjjDHGGGOMMcYYsyj/AVcXASZodC/AAAAAAElFTkSuQmCC"/>
<image id="image55" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAADCUlEQVR4nO2Zy3LqQAxEG3DIzf9/bHhzF7bKTaMZbBjHmz5VKmVDsI81Y40AjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGLMKm5W+c0expdhIBHfKN8o3AFfK1+UvfzpLy90C6AB8DblDLzSyylXBgcrluFJcKJ+HfFnq5l6xhNwvij1GsSyY5arkmlyuWq3Yi8RZ4jTkW/M7LtBK7g69yD2Ab4xiQy5HiK5VcE1uqWIzsackH4d8anTvRT6V26GXGVL57z0eBato3Sa2GCVnciNKYmMbCJEhk+OIUe6RYhG6Nz+3QS/wn2SOTLJWc7ZNcPUGLDbklrYAFaoiI/hajsNnm/KO3B16mRGZ5Cmys+2CBWdytWKz5Z9VZunB8p5/QOMqnitXxdZiiuzaDYdg3Q64WrU6Ix/kf/PqqL04gYaC58plISrrHekqW0WEXBYb1aoVGpWXPaDaHq7tXXzPx8yRyy8fDu0CuFPQh/BKOouOl1xsB7zsQ+YB+UswE1fqh3Xf77CC3A3Gm8hyFjvK+nD0QYTkHzwKv2IU+YvnamZJWe+smbeFUo7v+Ig5cnUpzQk9VZUOAWf0EoBR6h2PLdaFPsP/h0OPyZwjMCF/xBy5urR0eWlrpIcErpzgjkexR/TVWdpzuTvgbiAqm19wekLTa+Rr59xsPjFXbkjjpTbldKUvC34paceQtWPxeRZT62UPeJSuPa4+BH0YTZjbLZzxPLma8vJgmaVeV9slfUFlc4Ts4KCnMJar0jPxTbYE4L1DxAm5xOymWSa3W9lApzTAyeYKOv3SwwRXZ3Y6K8luyqezhayFyg4JtUrN9mVdGUC+Ml5NwUqHDI1FxpItpmIxZ+C+tjaweTVTyPZtIG/2S8Ob7FicSV501tt6ntvhuUrjQFAbN045lmb7Or8kdUiebRchuNm+WmPJXyJ2qA/K9aw/V+6cuW7zidcU/vI3tPjtrFSxfErKrq02C8hiddb4gbLGVLl/sqyNMcYYY4wxxhhjjDHGGGOMMcYYsyj/AVcXASZodC/AAAAAAElFTkSuQmCC"/>
<mask id="mask5">
<g filter="url(#alpha)">
<use xlink:href="#image50"/>
<use xlink:href="#image55"/>
</g>
</mask>
<clipPath id="clip14">
@@ -370,14 +377,14 @@
<clipPath id="clip15">
<path d="M 69.664062 51.660156 C 69.664062 57.757812 56.269531 62.699219 39.753906 62.699219 C 23.230469 62.699219 9.835938 57.757812 9.835938 51.660156 C 9.835938 45.558594 23.230469 40.621094 39.753906 40.621094 C 56.269531 40.621094 69.664062 45.558594 69.664062 51.660156 Z M 69.664062 51.660156 "/>
</clipPath>
<radialGradient id="radial1" gradientUnits="userSpaceOnUse" cx="12.574219" cy="67.5" fx="12.574219" fy="67.5" r="8.765625" gradientTransform="matrix(3.412284,0,0,1.259506,-3.159742,-33.358098)">
<radialGradient id="radial1" gradientUnits="userSpaceOnUse" cx="29.37206" cy="157.67294" fx="29.37206" fy="157.67294" r="20.475583" gradientTransform="matrix(1.460804,0,0,0.539196,-3.159742,-33.358098)">
<stop offset="0" style="stop-color:rgb(0%,0%,0%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(0%,0%,0%);stop-opacity:1;"/>
</radialGradient>
<clipPath id="clip13">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface53" clip-path="url(#clip13)">
<g id="surface54" clip-path="url(#clip13)">
<g clip-path="url(#clip14)" clip-rule="nonzero">
<g clip-path="url(#clip15)" clip-rule="evenodd">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#radial1);" d="M 9.835938 40.621094 L 9.835938 62.699219 L 69.664062 62.699219 L 69.664062 40.621094 Z M 9.835938 40.621094 "/>
@@ -725,31 +732,31 @@
<clipPath id="clip22">
<path d="M 0.347656 0.34375 L 85.394531 0.34375 L 85.394531 85.394531 L 0.347656 85.394531 Z M 0.347656 0.34375 "/>
</clipPath>
<image id="image60" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAAAtUlEQVR4nO3aMQoCQRREwV5ZUBAU739FExHEwMBg9wg2I0MVTN684EeTAAAAAAAAAAAAAAAAAAAAAAD/b0lySXIcPWQyzyTvNcl1f/zOJ3vcc5Lb4DGzuSfJmu00HMZumc6SiFolbpG4ReIWiVskbpG4ReIWiVskbpG4ReIWiVskbpG4ReIWiVskbpG4ReIWiVskbpG4ReIWiVskbpG4ReIWiVskbpG4RUu2j8+n0UMm80jy+gKcWAdrUO890wAAAABJRU5ErkJggg=="/>
<image id="image65" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAAAtUlEQVR4nO3aMQoCQRREwV5ZUBAU739FExHEwMBg9wg2I0MVTN684EeTAAAAAAAAAAAAAAAAAAAAAAD/b0lySXIcPWQyzyTvNcl1f/zOJ3vcc5Lb4DGzuSfJmu00HMZumc6SiFolbpG4ReIWiVskbpG4ReIWiVskbpG4ReIWiVskbpG4ReIWiVskbpG4ReIWiVskbpG4ReIWiVskbpG4ReIWiVskbpG4RUu2j8+n0UMm80jy+gKcWAdrUO890wAAAABJRU5ErkJggg=="/>
<mask id="mask6">
<g filter="url(#alpha)">
<use xlink:href="#image60"/>
<use xlink:href="#image65"/>
</g>
</mask>
<clipPath id="clip23">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface63" clip-path="url(#clip23)">
<g id="surface64" clip-path="url(#clip23)">
<path style="fill:none;stroke-width:0.796945;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:4;" d="M 4.940791 22.98883 L 30.085455 22.98883 " transform="matrix(2.21484,0,0,2.21484,0.346,0.34514)"/>
</g>
<image id="image70" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACm0lEQVR4nO2aW07DMBBFb1E++GUViD2wBtbLMuiCaPgoSZ06DzuZse84MxJSrmmT06NqGk97AfAF4ANekvUN4NoBeAfwWRmmtfoBcH2pTdFyuVzFcrmK5XIVy+UqVlcboLHqgz+XK1CjTLhckZoTGh673MxKEgqXm1y5QvvwyS43rr1C++c1l3svCaFRPrNcDaHh2unkags93Tu3lNAotyq3mlA0KpdBaFM9l02o+bbAKjTKVuSaERoeM8u1KHTIAPjkWhYaXZNBbitCo1xLbrNCw+OScs8gNMzqcs8mdLKmIffUQsNjKbkuNM6H5LrQ9Zwt14Wm5RuQJteF5mcAy3JdqIDgUK4LFT5nh3t/uJHDqrx47dz9H9wOnohBGBvjKPfXAKwFoWGO2gIzrAWhk7W5tsAIm/Ri2PLcBxoN3EZmYFjLk55bG6YFoeGayq2YFixzfl4bt79DYIZlzGuPAfB45+65FSsJy5JznhO9c5lhLQidrKXcijHAls4i51y6FaOENcao2nMZhNVkFO+5DMIYGGflssKKvNjSeW/PZRDGzpjVc2vDWhA6ZADbPZcF1oLQiIl1+5sEz56Ztr9bmYEhh7H69jcHljUvrjGOHBkYRBhLbX9FYI0xHvr2tzSsBaFhLt5zGYSVYizScxmElWYu+jUPg7CSjAB85Kh5DR85al7DR46K2UeOetlHjorZR46aTD5yVMw+ctRjzP7xc01Y1rz0mCq/uNkLy5S3HjNuf33kKM8IwEeOmow+clRiHOX6yFHpGlo9l0FYbUbRnssgjInxcM9lEMbKuKvnMghjZ8z6mqc2rAWhYQawPltggrUgNBLMuP3dygwMSYws298kWPL8vIYLgDcAr3hUj2n1Cf/b8xzp89Ex/AHlXHZ58gBgzwAAAABJRU5ErkJggg=="/>
<image id="image75" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACm0lEQVR4nO2aW07DMBBFb1E++GUViD2wBtbLMuiCaPgoSZ06DzuZse84MxJSrmmT06NqGk97AfAF4ANekvUN4NoBeAfwWRmmtfoBcH2pTdFyuVzFcrmK5XIVy+UqVlcboLHqgz+XK1CjTLhckZoTGh673MxKEgqXm1y5QvvwyS43rr1C++c1l3svCaFRPrNcDaHh2unkags93Tu3lNAotyq3mlA0KpdBaFM9l02o+bbAKjTKVuSaERoeM8u1KHTIAPjkWhYaXZNBbitCo1xLbrNCw+OScs8gNMzqcs8mdLKmIffUQsNjKbkuNM6H5LrQ9Zwt14Wm5RuQJteF5mcAy3JdqIDgUK4LFT5nh3t/uJHDqrx47dz9H9wOnohBGBvjKPfXAKwFoWGO2gIzrAWhk7W5tsAIm/Ri2PLcBxoN3EZmYFjLk55bG6YFoeGayq2YFixzfl4bt79DYIZlzGuPAfB45+65FSsJy5JznhO9c5lhLQidrKXcijHAls4i51y6FaOENcao2nMZhNVkFO+5DMIYGGflssKKvNjSeW/PZRDGzpjVc2vDWhA6ZADbPZcF1oLQiIl1+5sEz56Ztr9bmYEhh7H69jcHljUvrjGOHBkYRBhLbX9FYI0xHvr2tzSsBaFhLt5zGYSVYizScxmElWYu+jUPg7CSjAB85Kh5DR85al7DR46K2UeOetlHjorZR46aTD5yVMw+ctRjzP7xc01Y1rz0mCq/uNkLy5S3HjNuf33kKM8IwEeOmow+clRiHOX6yFHpGlo9l0FYbUbRnssgjInxcM9lEMbKuKvnMghjZ8z6mqc2rAWhYQawPltggrUgNBLMuP3dygwMSYws298kWPL8vIYLgDcAr3hUj2n1Cf/b8xzp89Ex/AHlXHZ58gBgzwAAAABJRU5ErkJggg=="/>
<mask id="mask7">
<g filter="url(#alpha)">
<use xlink:href="#image70"/>
<use xlink:href="#image75"/>
</g>
</mask>
<clipPath id="clip25">
<path d="M 0.347656 0.34375 L 79 0.34375 L 79 64 L 0.347656 64 Z M 0.347656 0.34375 "/>
</clipPath>
<clipPath id="clip24">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface73" clip-path="url(#clip24)">
<g id="surface74" clip-path="url(#clip24)">
<g clip-path="url(#clip25)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:4;" d="M 5.531621 2.163397 L 29.406441 2.136942 C 29.637482 2.133415 29.854414 2.323892 29.875578 2.655462 L 30.965527 22.500293 C 31.007855 23.343327 30.531664 23.93063 29.683338 23.93063 L 5.265307 23.93063 C 4.418745 23.93063 3.991936 23.343327 4.034264 22.500293 L 5.097758 2.902376 C 5.124213 2.33271 5.230034 2.163397 5.531621 2.163397 Z M 5.531621 2.163397 " transform="matrix(2.21484,0,0,2.21484,0.346,0.34514)"/>
</g>
@@ -758,16 +765,16 @@
<path d="M 0.347656 0.34375 L 85.394531 0.34375 L 85.394531 85.394531 L 0.347656 85.394531 Z M 0.347656 0.34375 "/>
</clipPath>
<clipPath id="clip26">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface90" clip-path="url(#clip26)">
<g id="surface94" clip-path="url(#clip26)">
<g clip-path="url(#clip27)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:0.531429;" d="M 0.347656 85.394531 L 85.394531 85.394531 L 85.394531 0.34375 L 0.347656 0.34375 Z M 0.347656 85.394531 "/>
</g>
</g>
<mask id="mask8">
<g filter="url(#alpha)">
<use xlink:href="#surface90"/>
<use xlink:href="#surface94"/>
</g>
</mask>
<clipPath id="clip29">
@@ -776,6 +783,12 @@
<clipPath id="clip31">
<path d="M 0.347656 0.34375 L 85.394531 0.34375 L 85.394531 85.394531 L 0.347656 85.394531 Z M 0.347656 0.34375 "/>
</clipPath>
<image id="image88" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAABRElEQVR4nO3ZSw4BURCF4SOxJwPrsA5bswwDG/JqBmiatGdV36rr/5ITEpPbJ5XSzUjSXNJUwzncvNb6fiFpNZY0kTSTvcMfZylJ458rLH8hpdI8+WwvfVZuycNmS9NXbm0XWiLt5O4lbQMcqKa0k7uTtAlwoJrSmVzKtQ2TS7k5064FyrUPk+sYJtcxTC7ldg9c+gzv5mEtZDp89HQmdx3gQDWFLzTHpNu5mcLkOobJpdycYS04hskdolx+LLdP6rXQ6CTqU+Xb5V4uIPLFREu7Frbi8det3IxrIXpS79zoYXKHKJdbMfuwFhzDWjDOA8o1KLEP5RqU2KfGcj95inT1bbnZHoOLqO3f31CyroUUopebWpRyqzR0uX/Fq1zoWq5EieYu5b66b8WXRucAAAAAAAAAAAAAAAAAAAAAAAAAAHDvCJOY8HcHZGDMAAAAAElFTkSuQmCC"/>
<mask id="mask9">
<g filter="url(#alpha)">
<use xlink:href="#image88"/>
</g>
</mask>
<clipPath id="clip33">
<path d="M 14 8 L 59 8 L 59 41 L 14 41 Z M 14 8 "/>
</clipPath>
@@ -792,40 +805,35 @@
<stop offset="1" style="stop-color:rgb(98.822021%,98.822021%,100%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip32">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface85" clip-path="url(#clip32)">
<g id="surface87" clip-path="url(#clip32)">
<g clip-path="url(#clip33)" clip-rule="nonzero">
<g clip-path="url(#clip34)" clip-rule="evenodd">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 14.363281 8.753906 L 14.363281 40.421875 L 58.925781 40.421875 L 58.925781 8.753906 Z M 14.363281 8.753906 "/>
</g>
</g>
</g>
<mask id="mask9">
<g filter="url(#alpha)">
<use xlink:href="#surface85"/>
</g>
</mask>
<clipPath id="clip30">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface87" clip-path="url(#clip30)">
<g id="surface91" clip-path="url(#clip30)">
<g clip-path="url(#clip31)" clip-rule="nonzero">
<use xlink:href="#surface85" mask="url(#mask9)"/>
<use xlink:href="#surface87" mask="url(#mask9)"/>
</g>
</g>
<clipPath id="clip28">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface92" clip-path="url(#clip28)">
<g id="surface93" clip-path="url(#clip28)">
<g clip-path="url(#clip29)" clip-rule="nonzero">
<use xlink:href="#surface87"/>
<use xlink:href="#surface91"/>
</g>
</g>
<image id="image99" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAAC/UlEQVR4nO2Z624iMQxGzaXl/R8XWGB/FAv3G9vJIGhXq3Mka0JblcyJJ4kzZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAkm9/uwJ2tffXFrxpmy77e7uHta/jZ9R6/yk/J3ZvZTmIbrjFUctXPKDbKvSZxKeJmb+TVcjf2JTKLnS0lV4I1g7WvKjaTe7Fa7J9w1XhZxr9C7keIfXJ9RnI2RSg3W8odZWsm9Szts7Sfzu5n5brMT/suN4tKtErOsjibe81ysTers9XlXWwpM4rUOEl7FWvkbuwh8zPER3MdZbULriR7Bmd9raaCTKpmqkpViXo9yeepqWM/80f2EHaw72I1OvFVVmfZnE0TWeZW00D22FdZqRJVqMY+tFtGcj1bo9RD8rMZ8Zlsb+vUESVHwU6Um0ntHvNZgTrocbC93WbxSK7KOdhS7ui6JuM1q+Oi59mrYrNHfq1AlTezHfSF7mjFotfJ9S+stlY6h8aIwqLsmYFQ6VG0y73aUqbGsRGnVAtkta2L7d29Lws6uVml5LGV9lbaGvpIxdDB0qdEB8BlHu8RhWWLm275qm2f3lN2f9kW0RfcVXKzkYydr6qhONLdftNHPFu0/Lsu9niEs8z17NUVPW634v42y0CN7h71d/55tdwoIcu+rmw1ERWFxZuLj3a2k9CMs/C/ujl3Zt49Jm3dlulAZXGpBI4WtGq7MVsZxU6cbLwP1gVGxWaPf5QcB2wke1Z8NRAeZQU3s8/17UZW/WjWrNl2VftcFTuq0EaD2m3NRsVCJ/48Ere2/K2KhExiVzRohVYVD7Nyq9K3qtAq4VlhkYme4tmzhZ31QjU7uyz19ujwRllzaKOLW3ZYE6XrvHuyYrvV8YpTsZ3NHdTMSs2yVvs6OsvtDnCqaSPL6tVCI+84LK8KjzXnudXbiEj2FmL2oLw7z30ZP/UmQouHbXLtXvVkfdWqqpsiMslvfw30r7xDM6sroK6Pldy3vr4B+L/5C6XgUhnLKGLmAAAAAElFTkSuQmCC"/>
<image id="image104" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAAC+klEQVR4nO2Z224jIRAFO74k//+5dtb2PmSQO2dOA2PZyWpVJbUgFyW46AGaiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAHefvtASzs4mssrdWIWI/1tkTrX9P3rkv8Kj8l9xARe4ldanOo5GqcWWyWezVxKeIWL+TZct/iS6SLfawlV4I1g3WsKtbJvUQt9k9qNZ6W8c+Qe0xxMO0jkt0SodxiLXeUrU7qp/Q/pf9wdj8qt8l8j+9yXVSiVbLLYrf2Rnixt6iztcm7xFpmFqlxlv4mtsh9i7vM9xTHTjvK6ia4ktwy2I21WgqcVM1UlaoStT3L11NLx2Hml+Iu7CO+i3VxNP1eVrtsdsuEy9xqGXCPfZWVKlGFahxSv8tIbsvWLPXDfG+reF1WdOnIkrPgRpbrpPYe81mBOul5slu/m8UjuSrnI9ZyR+2MeJfhuum17FWx7pHfKlDlzRwH20Z3imLT68lt/7A6WukamiMLy7JnJkKlZ9FN7jXWMjVOHXFKtUFWx7rcPyxjWNGT6yqlFjvp76SvoY9UDp0sfUp0AprM0xJZmNvc9MhXHfv0M7nPV1WRlp5cN5N58FU1lGe6d97cL63btNr/usT9EXaZ27JXd/R83MrnW5eBGr3PqD9rX2+WmyW47OuVrSGisrD84fKj7U4SmnGR/lZvzZ1Zd0+mr8cynSgXl0rgaEOrjhuzlVEexDnG52DdYFSse/yz5DxhI9mz4quJaFFWcDPn3HbccNWPZs2WY1d1zlWxowptNKm9o9moWOiJt5tYZmv5W1VnTmKvaNAKrSoeZuVWpW9VoVXCXWHhRE/x6N3CPvpCNTt7Wdr6o8sbZculjW5u7rImS9d197z8bBPPuBXbx9xFzaxUl7U61tFdbu8Cp1o2XFZvFpp5xWV5VXhsuc+t3kZk3FuI2Yvy3n3u0/ipNxFaPOxM23vV48aqVVVviXCSX/4a6F95hxbxQAUUtdyXvr4B+L/5C5VzUhji5NjtAAAAAElFTkSuQmCC"/>
<mask id="mask10">
<g filter="url(#alpha)">
<use xlink:href="#image99"/>
<use xlink:href="#image104"/>
</g>
</mask>
<clipPath id="clip36">
@@ -834,14 +842,14 @@
<clipPath id="clip37">
<path d="M 81.414062 73.453125 C 81.414062 79.203125 64.480469 83.867188 43.585938 83.867188 C 22.703125 83.867188 5.769531 79.203125 5.769531 73.453125 C 5.769531 67.699219 22.703125 63.035156 43.585938 63.035156 C 64.480469 63.035156 81.414062 67.699219 81.414062 73.453125 Z M 81.414062 73.453125 "/>
</clipPath>
<radialGradient id="radial2" gradientUnits="userSpaceOnUse" cx="12.574219" cy="67.5" fx="12.574219" fy="67.5" r="8.765625" gradientTransform="matrix(4.314486,0,0,1.188047,-10.668545,-6.743097)">
<radialGradient id="radial2" gradientUnits="userSpaceOnUse" cx="34.595027" cy="185.710488" fx="34.595027" fy="185.710488" r="24.11657" gradientTransform="matrix(1.568182,0,0,0.431818,-10.668545,-6.743097)">
<stop offset="0" style="stop-color:rgb(0%,0%,0%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(0%,0%,0%);stop-opacity:1;"/>
</radialGradient>
<clipPath id="clip35">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface102" clip-path="url(#clip35)">
<g id="surface103" clip-path="url(#clip35)">
<g clip-path="url(#clip36)" clip-rule="nonzero">
<g clip-path="url(#clip37)" clip-rule="evenodd">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#radial2);" d="M 5.769531 63.035156 L 5.769531 83.867188 L 81.414062 83.867188 L 81.414062 63.035156 Z M 5.769531 63.035156 "/>
@@ -1056,22 +1064,22 @@
<clipPath id="clip47">
<path d="M 0.347656 0.34375 L 85.394531 0.34375 L 85.394531 85.394531 L 0.347656 85.394531 Z M 0.347656 0.34375 "/>
</clipPath>
<image id="image109" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAABPklEQVR4nO3XXU7CQBiF4bdYBcMyXIo7dxWug3hhghdeaAyGoNNO5+dr3+cCGujJnH6ZTAAkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSdLKDK0LNDLcuP7ru/+uL9/PwMeY07CQ0g+eek9O/o0Zw015oNT7Wj14jfw7wAjcAbvOykXPn+BruHvgobNy0fMj3y8H4DFQ8dJrLLH+z3D3wLFS8a3k72H6cHMXjjKc3PysndtD8Qh5h1sw3+RY2Er+16+FY6DiEfJXx0JP5aLnr46FkgtHG07VndtT8Qj5qjt3a/nFdm5u8dw1Wq/f9XDXmF/sWChRLno+aee2Lu5wKxePkE86FlqVi55P+vtbsnjuGq3XL3ostCqem59z/1Q76He4Uz7r1q3hXl6v8sFrGIBn4Kl1kZV5AV4/AcYZDWH7geIZAAAAAElFTkSuQmCC"/>
<image id="image114" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAABPklEQVR4nO3XXU7CQBiF4bdYBcMyXIo7dxWug3hhghdeaAyGoNNO5+dr3+cCGujJnH6ZTAAkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSdLKDK0LNDLcuP7ru/+uL9/PwMeY07CQ0g+eek9O/o0Zw015oNT7Wj14jfw7wAjcAbvOykXPn+BruHvgobNy0fMj3y8H4DFQ8dJrLLH+z3D3wLFS8a3k72H6cHMXjjKc3PysndtD8Qh5h1sw3+RY2Er+16+FY6DiEfJXx0JP5aLnr46FkgtHG07VndtT8Qj5qjt3a/nFdm5u8dw1Wq/f9XDXmF/sWChRLno+aee2Lu5wKxePkE86FlqVi55P+vtbsnjuGq3XL3ostCqem59z/1Q76He4Uz7r1q3hXl6v8sFrGIBn4Kl1kZV5AV4/AcYZDWH7geIZAAAAAElFTkSuQmCC"/>
<mask id="mask11">
<g filter="url(#alpha)">
<use xlink:href="#image109"/>
<use xlink:href="#image114"/>
</g>
</mask>
<clipPath id="clip48">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface112" clip-path="url(#clip48)">
<g id="surface113" clip-path="url(#clip48)">
<path style="fill:none;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(97.647095%,100%,96.076965%);stroke-opacity:1;stroke-miterlimit:4;" d="M 4.901991 30.061152 L 30.362351 30.061152 L 32.473466 36.53559 L 2.663892 36.53559 Z M 4.901991 30.061152 " transform="matrix(2.21484,0,0,2.21484,0.346,0.34514)"/>
</g>
<image id="image119" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACh0lEQVR4nO2bPU4kMRBGXzPDoAGGS3AIAkLOwDk4JQlHQCJYCWnDFSkQEJiW3eo/j10lsfh7EpoIe/TUqvlc7eqAB+CWtngDnoBH4Bn49NhkC9wA9x6L/2D+AXvgL/AHJ7knHov+B5wCV99/p16btCp3R5S789qkVbn9k3sAzrw2aVVuRxDbP70utCoX4IIod+uxQctyd4Sn94DTj1rLct0Tg+RKrgtpHJNcYzbEmnvw2KBluRCf3CscXLQuty8NLolBcuNhQnKNcU0Mkiu5bqQ1d2+9eOtywbGBI7lwjlNikNwg1CUxSK7jMVhyHROD5Dqe0iQ3OHBJDJIbSBs4G6tFJTfQJwbT0iC5AZcfNckNuMQxyQ2kl0Qk15j0lHZutajkRtLEYILkRvbE0mByOU9yI+YNHMmNmMcxyY2Y9xgkN5KWBdVcY04wTgySO+QSwwaO5A4xvbMruUPSxFBddyV3iGkDR3KHmPZ1JXfIlvjkXtQuJrlj0jjW1SwkuWPOMDqpSe4Yszu7kjvGrIEjuWPMhq4ld0wax6qGriV3TIdRA0dypzEZupbcaUxOapI7jUmPQXKnMYljkjuNyfs0yZ2mH7ruBRchufNUD11L7jzVpUFy56lu4EjuPNWJQXLnqb6zK7nzpGWhaOhacpepauBI7jJVQ9eSu0zVnV3JXaaqgSO5y1QlBsldRmXBkQ0ViUFy10m7Y0fd2ZXcdYp7DJK7TnGPQXLXKY5jkrtO8ZtgyV0nLQtHDV1Lbh693KPep0luHnsKEoPk5lE05SO5eRTFMcnNo+hNsOTmUTR0Lbl5FA1dS24+l8TDRFYDR3LzOfoY3AF3wLXjl/otvAOvwMv358faP3wBVtIb0p2B6U0AAAAASUVORK5CYII="/>
<image id="image124" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACh0lEQVR4nO2bPU4kMRBGXzPDoAGGS3AIAkLOwDk4JQlHQCJYCWnDFSkQEJiW3eo/j10lsfh7EpoIe/TUqvlc7eqAB+CWtngDnoBH4Bn49NhkC9wA9x6L/2D+AXvgL/AHJ7knHov+B5wCV99/p16btCp3R5S789qkVbn9k3sAzrw2aVVuRxDbP70utCoX4IIod+uxQctyd4Sn94DTj1rLct0Tg+RKrgtpHJNcYzbEmnvw2KBluRCf3CscXLQuty8NLolBcuNhQnKNcU0Mkiu5bqQ1d2+9eOtywbGBI7lwjlNikNwg1CUxSK7jMVhyHROD5Dqe0iQ3OHBJDJIbSBs4G6tFJTfQJwbT0iC5AZcfNckNuMQxyQ2kl0Qk15j0lHZutajkRtLEYILkRvbE0mByOU9yI+YNHMmNmMcxyY2Y9xgkN5KWBdVcY04wTgySO+QSwwaO5A4xvbMruUPSxFBddyV3iGkDR3KHmPZ1JXfIlvjkXtQuJrlj0jjW1SwkuWPOMDqpSe4Yszu7kjvGrIEjuWPMhq4ld0wax6qGriV3TIdRA0dypzEZupbcaUxOapI7jUmPQXKnMYljkjuNyfs0yZ2mH7ruBRchufNUD11L7jzVpUFy56lu4EjuPNWJQXLnqb6zK7nzpGWhaOhacpepauBI7jJVQ9eSu0zVnV3JXaaqgSO5y1QlBsldRmXBkQ0ViUFy10m7Y0fd2ZXcdYp7DJK7TnGPQXLXKY5jkrtO8ZtgyV0nLQtHDV1Lbh693KPep0luHnsKEoPk5lE05SO5eRTFMcnNo+hNsOTmUTR0Lbl5FA1dS24+l8TDRFYDR3LzOfoY3AF3wLXjl/otvAOvwMv358faP3wBVtIb0p2B6U0AAAAASUVORK5CYII="/>
<mask id="mask12">
<g filter="url(#alpha)">
<use xlink:href="#image119"/>
<use xlink:href="#image124"/>
</g>
</mask>
<clipPath id="clip50">
@@ -1178,19 +1186,19 @@
<stop offset="1" style="stop-color:rgb(74.508667%,74.508667%,74.508667%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip49">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface122" clip-path="url(#clip49)">
<g id="surface123" clip-path="url(#clip49)">
<g clip-path="url(#clip50)" clip-rule="nonzero">
<g clip-path="url(#clip51)" clip-rule="evenodd">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear11);" d="M 61.945312 9.015625 L 61.945312 10.980469 L 65.910156 10.980469 L 65.910156 9.015625 Z M 61.945312 9.015625 "/>
</g>
</g>
</g>
<image id="image129" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACTElEQVR4nO2dO04DMRRFL9+IT7IJFkFByRpYB7tEbIEC6BEVLQ3FMHJG83PsdyWEz5FSxo6ORm/uvPFTjiQ9SrpTW7xJepL0LOnDtcmppFtJD64N/igvkr4lvcso99i18B9nK2kn6dq5Satyr9UJ3jo3aVnu7vdz4tqkVbnHSnJtV2+rcqVUFmx1t2W5fWlArgHkGrHHsZbl9nFs59qgZbkbpcRw6digZblSimKW0tC6XOtNDbnItdHLtTyltS53K2MDp3W5+w2cs+jFW5crJbnhdRe5xgYOco2JAbnItWJ75YPcYWIIBbnSuUyJAbkdlsSA3A5L4xy5HZbEgNyOPjEg14AlMSC340pJ7iZqUeQmwuMYchPhdRe5ifA4htxEeBxDbiK8gYPcxH4cC/GC3MSpghMDcoeENnCQOyT0pobcIaFxDLlDQh8kkDsktIGD3CEXSnIvahdD7piwM7vIHROWGJA7BrlGkGsk7MwucseEDV0jd8z+0HVVaUDuNCGlAbnT9KXhqmYR5E4TMuWD3GlCGjjInaZvPVY1cJA7TcjQNXLnqW7gIHee6sdg5M6DXCPViQG581S/8kHuPPtxrGjoGrnLVCUG5C5TdY4BuctUJQbkLoNcI1VndpG7TFUcQ+4y/dB1UWJA7jrFiQG56yDXSHFiQO46xQ0c5K5TnBiQu07x0DVy8yia8kFuHkWJAbl5FCUG5ObBlWukqIGD3DyKhq6Rm0c/dH1QYkBuPgfXXeTmc3BiOJJ0L+nG9Yv+EV/q/rPyVdJnzhd+AILtGbOKWzEhAAAAAElFTkSuQmCC"/>
<image id="image134" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACTElEQVR4nO2dO04DMRRFL9+IT7IJFkFByRpYB7tEbIEC6BEVLQ3FMHJG83PsdyWEz5FSxo6ORm/uvPFTjiQ9SrpTW7xJepL0LOnDtcmppFtJD64N/igvkr4lvcso99i18B9nK2kn6dq5Satyr9UJ3jo3aVnu7vdz4tqkVbnHSnJtV2+rcqVUFmx1t2W5fWlArgHkGrHHsZbl9nFs59qgZbkbpcRw6digZblSimKW0tC6XOtNDbnItdHLtTyltS53K2MDp3W5+w2cs+jFW5crJbnhdRe5xgYOco2JAbnItWJ75YPcYWIIBbnSuUyJAbkdlsSA3A5L4xy5HZbEgNyOPjEg14AlMSC340pJ7iZqUeQmwuMYchPhdRe5ifA4htxEeBxDbiK8gYPcxH4cC/GC3MSpghMDcoeENnCQOyT0pobcIaFxDLlDQh8kkDsktIGD3CEXSnIvahdD7piwM7vIHROWGJA7BrlGkGsk7MwucseEDV0jd8z+0HVVaUDuNCGlAbnT9KXhqmYR5E4TMuWD3GlCGjjInaZvPVY1cJA7TcjQNXLnqW7gIHee6sdg5M6DXCPViQG581S/8kHuPPtxrGjoGrnLVCUG5C5TdY4BuctUJQbkLoNcI1VndpG7TFUcQ+4y/dB1UWJA7jrFiQG56yDXSHFiQO46xQ0c5K5TnBiQu07x0DVy8yia8kFuHkWJAbl5FCUG5ObBlWukqIGD3DyKhq6Rm0c/dH1QYkBuPgfXXeTmc3BiOJJ0L+nG9Yv+EV/q/rPyVdJnzhd+AILtGbOKWzEhAAAAAElFTkSuQmCC"/>
<mask id="mask13">
<g filter="url(#alpha)">
<use xlink:href="#image129"/>
<use xlink:href="#image134"/>
</g>
</mask>
<clipPath id="clip53">
@@ -1297,19 +1305,19 @@
<stop offset="1" style="stop-color:rgb(74.508667%,74.508667%,74.508667%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip52">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface132" clip-path="url(#clip52)">
<g id="surface133" clip-path="url(#clip52)">
<g clip-path="url(#clip53)" clip-rule="nonzero">
<g clip-path="url(#clip54)" clip-rule="evenodd">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear12);" d="M 62.144531 12.753906 L 62.144531 14.707031 L 66.105469 14.707031 L 66.105469 12.753906 Z M 62.144531 12.753906 "/>
</g>
</g>
</g>
<image id="image139" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACi0lEQVR4nO2dvW4TQRRGjxM7EBL7BSh5CApKnoHn4Cl5ACRKCmqaVEmoEMV4NbPaX+/cL4qY70hbesc6Wl1/e2euvAO+Ap9oh2fgB/AN+A48qhbaAx+BL6oFXiF/gPfAA/ATodwr1Y1fMQfgdL4OyoValHtNlnuvXKhFuQDH83VC6KBVuW94gdLQqtw9We6NapFW5R7IpcFygykTg+UGU5aFt6pFWpW7I4ntEoOEVuUCvEOcGFqWK08MLcvtftRkiaF1uV3NdVkIxmVBSNnAOSoWaFku9Bs419E3b12utLdrucLEYLm5LFhuMNLE0LrcsubeRt+8dbkgbOBYbmo5SkqD5QoTg+UKewyWK0wMlivcT7Pc5ECSGCw3cU9+esMaOJabkJQGy01IDolYbkKSGCw3IenrWm6ie3KPwF3UTS0300WxE+lETjWWmwlv4FhupmzghNRdy83sCd7ysdxM+IuE5WZKuSFndi03syO/pYWcwLHcPmUDZ197M8vtE1p3LbdPlxhCGjiW28dPrpDQBo7l9gkdurbcIWFD15Y7JGzo2nKHlL3dqh81yx0SdmbXcoeExTHLHRI2dG25Q8KGri13nJCha8sdJyQxWO44IYnBcscJ6TFY7jghx5ssd5yugVO15WO505QncDZ5stxpqt/ULHea6jO7ljuNn1wh1YnBcqcpD+ZtGrq23HnKxHAxljvPLRWlwXLnqRq6ttx5qoauLXeeqsRgufO4LAi5oiIxWO4ypdyLhq4td5nNpcFyl9m85WO5y2xODJa7zOb9NMtdpjzKf9HQteWu41Rcq4euLXcdm4auLXcd5ZbP6rpruevYlBh2wGfgg+hL/S/8BX6T/rPyF/C05kP/AMycG+jgHEdcAAAAAElFTkSuQmCC"/>
<image id="image144" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACi0lEQVR4nO2dvW4TQRRGjxM7EBL7BSh5CApKnoHn4Cl5ACRKCmqaVEmoEMV4NbPaX+/cL4qY70hbesc6Wl1/e2euvAO+Ap9oh2fgB/AN+A48qhbaAx+BL6oFXiF/gPfAA/ATodwr1Y1fMQfgdL4OyoValHtNlnuvXKhFuQDH83VC6KBVuW94gdLQqtw9We6NapFW5R7IpcFygykTg+UGU5aFt6pFWpW7I4ntEoOEVuUCvEOcGFqWK08MLcvtftRkiaF1uV3NdVkIxmVBSNnAOSoWaFku9Bs419E3b12utLdrucLEYLm5LFhuMNLE0LrcsubeRt+8dbkgbOBYbmo5SkqD5QoTg+UKewyWK0wMlivcT7Pc5ECSGCw3cU9+esMaOJabkJQGy01IDolYbkKSGCw3IenrWm6ie3KPwF3UTS0300WxE+lETjWWmwlv4FhupmzghNRdy83sCd7ysdxM+IuE5WZKuSFndi03syO/pYWcwLHcPmUDZ197M8vtE1p3LbdPlxhCGjiW28dPrpDQBo7l9gkdurbcIWFD15Y7JGzo2nKHlL3dqh81yx0SdmbXcoeExTHLHRI2dG25Q8KGri13nJCha8sdJyQxWO44IYnBcscJ6TFY7jghx5ssd5yugVO15WO505QncDZ5stxpqt/ULHea6jO7ljuNn1wh1YnBcqcpD+ZtGrq23HnKxHAxljvPLRWlwXLnqRq6ttx5qoauLXeeqsRgufO4LAi5oiIxWO4ypdyLhq4td5nNpcFyl9m85WO5y2xODJa7zOb9NMtdpjzKf9HQteWu41Rcq4euLXcdm4auLXcd5ZbP6rpruevYlBh2wGfgg+hL/S/8BX6T/rPyF/C05kP/AMycG+jgHEdcAAAAAElFTkSuQmCC"/>
<mask id="mask14">
<g filter="url(#alpha)">
<use xlink:href="#image139"/>
<use xlink:href="#image144"/>
</g>
</mask>
<clipPath id="clip56">
@@ -1416,19 +1424,19 @@
<stop offset="1" style="stop-color:rgb(74.508667%,74.508667%,74.508667%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip55">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface142" clip-path="url(#clip55)">
<g id="surface143" clip-path="url(#clip55)">
<g clip-path="url(#clip56)" clip-rule="nonzero">
<g clip-path="url(#clip57)" clip-rule="evenodd">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear13);" d="M 62.34375 16.289062 L 62.34375 18.253906 L 66.304688 18.253906 L 66.304688 16.289062 Z M 62.34375 16.289062 "/>
</g>
</g>
</g>
<image id="image149" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACRUlEQVR4nO2cO04DMRRFb/gESAibYBEUlKyBdbBKCtaAKECihAVQUUxGnmi+2O9KET5HmjJ2dGQ933j8spL0JOle9fAl6UXSs6RX50Rnku4kPTonOTK+Ja0lfcos98Q5+JGylXSzf6zUKPdCSe7GOVGNciVpt3+sq7dWuddqxO6ck9Qqt627yDWAXCNbUXNtdOPYuWuSWuWulOTaSkOtcqUmMbSRzELNcu2bGnKNm1rtcikLJli5RtZKcq8dE9QsV0obmmX11i7XmhiQi1wbyDWyETXXRjeOXUQPXrtcKZWF8NKAXOMrH+QaNzXkGn8GI9d4gIPcw5W7ihwYuc19OcsrH+Q27GQoDchtsGxqyG2wxDHkNlgSA3IbKAtGrpTkXkYNitxE+Csf5CbCNzXkJpBrJDwxIDcRnhiQm+jKPY0YELmJUwW/8kHuIW0UQ66B0LqL3ENCEwNyD9mIsmCDsmDkUoFN18jtE9Z0jdw+YTdwkNsn7AAHuX3C4hhy+4QlBuT2CWu6Rm6ftum6uDQgd5iQxIDcYUISA3KHCdnUkDtMSBxD7jCsXCMhTdfIHaf4zi5yxykuDcgdpziOIXec4sSA3HEoC0a6ctc5AyB3mqI7u8idpugAB7nTFCUG5E5TlBiQO01RYkDuNEVN18idpm26zioNyJ0n+84ucufJTgzInSf7z+OROw8r10h2HEPuPG3T9U5/bLpG7jKyEgNyl9Ee4PypNCB3GVmbGnKXkXWAs5L0IOnW8Y3+ET+S3iW9SfpY+qFfIOUYyVY4M8kAAAAASUVORK5CYII="/>
<image id="image154" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACRUlEQVR4nO2cO04DMRRFb/gESAibYBEUlKyBdbBKCtaAKECihAVQUUxGnmi+2O9KET5HmjJ2dGQ933j8spL0JOle9fAl6UXSs6RX50Rnku4kPTonOTK+Ja0lfcos98Q5+JGylXSzf6zUKPdCSe7GOVGNciVpt3+sq7dWuddqxO6ck9Qqt627yDWAXCNbUXNtdOPYuWuSWuWulOTaSkOtcqUmMbSRzELNcu2bGnKNm1rtcikLJli5RtZKcq8dE9QsV0obmmX11i7XmhiQi1wbyDWyETXXRjeOXUQPXrtcKZWF8NKAXOMrH+QaNzXkGn8GI9d4gIPcw5W7ihwYuc19OcsrH+Q27GQoDchtsGxqyG2wxDHkNlgSA3IbKAtGrpTkXkYNitxE+Csf5CbCNzXkJpBrJDwxIDcRnhiQm+jKPY0YELmJUwW/8kHuIW0UQ66B0LqL3ENCEwNyD9mIsmCDsmDkUoFN18jtE9Z0jdw+YTdwkNsn7AAHuX3C4hhy+4QlBuT2CWu6Rm6ftum6uDQgd5iQxIDcYUISA3KHCdnUkDtMSBxD7jCsXCMhTdfIHaf4zi5yxykuDcgdpziOIXec4sSA3HEoC0a6ctc5AyB3mqI7u8idpugAB7nTFCUG5E5TlBiQO01RYkDuNEVN18idpm26zioNyJ0n+84ucufJTgzInSf7z+OROw8r10h2HEPuPG3T9U5/bLpG7jKyEgNyl9Ee4PypNCB3GVmbGnKXkXWAs5L0IOnW8Y3+ET+S3iW9SfpY+qFfIOUYyVY4M8kAAAAASUVORK5CYII="/>
<mask id="mask15">
<g filter="url(#alpha)">
<use xlink:href="#image149"/>
<use xlink:href="#image154"/>
</g>
</mask>
<clipPath id="clip59">
@@ -1535,19 +1543,19 @@
<stop offset="1" style="stop-color:rgb(74.508667%,74.508667%,74.508667%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip58">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface152" clip-path="url(#clip58)">
<g id="surface153" clip-path="url(#clip58)">
<g clip-path="url(#clip59)" clip-rule="nonzero">
<g clip-path="url(#clip60)" clip-rule="evenodd">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear14);" d="M 62.550781 19.839844 L 62.550781 21.792969 L 66.503906 21.792969 L 66.503906 19.839844 Z M 62.550781 19.839844 "/>
</g>
</g>
</g>
<image id="image159" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACj0lEQVR4nO2cO27dMBBFz3t+/lvaRBbhwqXX4HVklSmyBCMIsoEgRboUhlPQAkfQLxBnDCNzD6DSonEgkJcz5DsAn4EHcvAC/AC+AF+Bn5GDnYB74ClykA/EK/AM/AG+ESz3GPnyD8gB6N6ePnqwbHIBbilie+AicqCMcs+oci8jB8oo90SdGiTXGX25gZyQ3DCOFLEdcBc9UEaGKNZTpokQsso95x2mhqxyh0WtIzDrZpU7xLEeuIoaJKvcd4ljWeUOcawDrqMGySoXxokhhMxyrwku4GSWa3dqIYtaZrln1AKOvlxn9OUGEh7HMsu1BZwuaoDMhBZwsssNnRqyy7U7NfdFLbvcIY6FbCSyyw2NY9nl2rrujffLs8uFwAKO5JbpICQxSO54apBcZ2zLR3KdCdtISG5gHJPcwDO7klu4o369J6+XSm7B1hjc5l3JLdgag+Q6E3KsVHILIXFMcgt2l+Z2ZldyK7aAc/B4oeRWLnCeGiS34n7LR3IrdlFz2QZLbsXGMZd+muRWbGJwObMruZWhgOPW8pHcMfbS9XnryyR3jGvLR3LHuLZ8JHeMaxyT3DGucUxyxxypu7TmM7uSO6U3T5MfyZ3idulacqfYWz6S64xby0dyp7i1fCR3im2zN53Zldx5XAo4kjuPy6VryZ3H5QSO5M7jcgJHcudxiWOSO49LHJPceWwBZ3dikNxlbAFn16VryV2mueUjucs0t3wkd5nmRU1yl2mOY5K7jJ1zb/e8QHLXaSrgSO46TZeuJXedppaP5K7TtKhJ7jpNcUxy12n69SbJXafpzK7kbrP70rXkbrO75SO52+xu+UjuNrvjmORus7uuewAegU8B/9T/xG/g+9vz61//6C+WjRureS1UpgAAAABJRU5ErkJggg=="/>
<image id="image164" width="87" height="86" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAYAAAC6lArJAAAABmJLR0QA/wD/AP+gvaeTAAACj0lEQVR4nO2cO27dMBBFz3t+/lvaRBbhwqXX4HVklSmyBCMIsoEgRboUhlPQAkfQLxBnDCNzD6DSonEgkJcz5DsAn4EHcvAC/AC+AF+Bn5GDnYB74ClykA/EK/AM/AG+ESz3GPnyD8gB6N6ePnqwbHIBbilie+AicqCMcs+oci8jB8oo90SdGiTXGX25gZyQ3DCOFLEdcBc9UEaGKNZTpokQsso95x2mhqxyh0WtIzDrZpU7xLEeuIoaJKvcd4ljWeUOcawDrqMGySoXxokhhMxyrwku4GSWa3dqIYtaZrln1AKOvlxn9OUGEh7HMsu1BZwuaoDMhBZwsssNnRqyy7U7NfdFLbvcIY6FbCSyyw2NY9nl2rrujffLs8uFwAKO5JbpICQxSO54apBcZ2zLR3KdCdtISG5gHJPcwDO7klu4o369J6+XSm7B1hjc5l3JLdgag+Q6E3KsVHILIXFMcgt2l+Z2ZldyK7aAc/B4oeRWLnCeGiS34n7LR3IrdlFz2QZLbsXGMZd+muRWbGJwObMruZWhgOPW8pHcMfbS9XnryyR3jGvLR3LHuLZ8JHeMaxyT3DGucUxyxxypu7TmM7uSO6U3T5MfyZ3idulacqfYWz6S64xby0dyp7i1fCR3im2zN53Zldx5XAo4kjuPy6VryZ3H5QSO5M7jcgJHcudxiWOSO49LHJPceWwBZ3dikNxlbAFn16VryV2mueUjucs0t3wkd5nmRU1yl2mOY5K7jJ1zb/e8QHLXaSrgSO46TZeuJXedppaP5K7TtKhJ7jpNcUxy12n69SbJXafpzK7kbrP70rXkbrO75SO52+xu+UjuNrvjmORus7uuewAegU8B/9T/xG/g+9vz61//6C+WjRureS1UpgAAAABJRU5ErkJggg=="/>
<mask id="mask16">
<g filter="url(#alpha)">
<use xlink:href="#image159"/>
<use xlink:href="#image164"/>
</g>
</mask>
<clipPath id="clip62">
@@ -1654,9 +1662,9 @@
<stop offset="1" style="stop-color:rgb(74.508667%,74.508667%,74.508667%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip61">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface161" clip-path="url(#clip61)">
<g id="surface163" clip-path="url(#clip61)">
<g clip-path="url(#clip62)" clip-rule="nonzero">
<g clip-path="url(#clip63)" clip-rule="evenodd">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear15);" d="M 62.75 23.375 L 62.75 25.339844 L 66.714844 25.339844 L 66.714844 23.375 Z M 62.75 23.375 "/>
@@ -1664,20 +1672,20 @@
</g>
</g>
<clipPath id="clip5">
<rect width="86" height="86"/>
<rect x="0" y="0" width="86" height="86"/>
</clipPath>
<g id="surface22" clip-path="url(#clip5)">
<g id="surface167" clip-path="url(#clip5)">
<g clip-path="url(#clip6)" clip-rule="nonzero">
<use xlink:href="#surface33" mask="url(#mask3)"/>
<use xlink:href="#surface34" mask="url(#mask3)"/>
</g>
<path style="fill-rule:evenodd;fill:rgb(67.842102%,69.018555%,66.665649%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(29.411316%,30.195618%,29.019165%);stroke-opacity:1;stroke-miterlimit:4;" d="M 25.016663 26.336278 C 25.016663 28.078785 21.651578 29.487959 17.499896 29.487959 C 13.348213 29.487959 9.983128 28.078785 9.983128 26.336278 C 9.983128 24.593771 13.348213 23.184597 17.499896 23.184597 C 21.651578 23.184597 25.016663 24.593771 25.016663 26.336278 Z M 25.016663 26.336278 " transform="matrix(2.21484,0,0,2.21484,0.346,0.34514)"/>
<path style="fill:none;stroke-width:0.752218;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(48.234558%,49.803162%,47.842407%);stroke-opacity:1;stroke-miterlimit:4;" d="M 24.565163 25.770139 C 24.565163 27.406826 21.401137 28.734871 17.499896 28.734871 C 13.598654 28.734871 10.434628 27.406826 10.434628 25.770139 C 10.434628 24.133452 13.598654 22.805408 17.499896 22.805408 C 21.401137 22.805408 24.565163 24.133452 24.565163 25.770139 Z M 24.565163 25.770139 " transform="matrix(2.21484,0,0,2.21484,0.346,0.34514)"/>
<g clip-path="url(#clip10)" clip-rule="nonzero">
<use xlink:href="#surface43" mask="url(#mask4)"/>
<use xlink:href="#surface44" mask="url(#mask4)"/>
</g>
<path style="fill-rule:evenodd;fill:rgb(81.567383%,81.567383%,81.567383%);fill-opacity:1;stroke-width:0.32;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(59.214783%,59.214783%,59.214783%);stroke-opacity:1;stroke-miterlimit:4;" d="M 20.551047 23.011757 L 20.499901 23.812464 C 20.499901 23.812464 23.960224 26.690776 27.699207 27.175785 C 29.570463 27.417408 31.503447 27.738397 33.101333 28.124641 C 34.695692 28.512648 35.969063 29.020586 36.397635 29.449158 C 36.648076 29.699599 36.762715 29.909476 36.801516 30.073498 C 36.840316 30.24281 36.831498 30.359212 36.727441 30.523234 C 36.515801 30.854804 35.859715 31.301013 34.750366 31.648456 C 32.526376 32.352161 28.573988 32.800134 23.101316 32.800134 L 23.101316 33.602604 C 28.616317 33.602604 32.589868 33.179323 34.977879 32.426235 C 36.168358 32.047046 36.995519 31.613183 37.397637 30.976497 C 37.602222 30.655509 37.688642 30.265738 37.602222 29.89713 C 37.515802 29.535578 37.29358 29.191662 36.976119 28.874201 C 36.272414 28.17226 34.94437 27.750742 33.300628 27.352153 C 31.655122 26.948272 29.688629 26.616702 27.8015 26.375079 C 24.023716 25.886542 20.551047 23.011757 20.551047 23.011757 Z M 20.551047 23.011757 " transform="matrix(2.21484,0,0,2.21484,0.346,0.34514)"/>
<g clip-path="url(#clip12)" clip-rule="nonzero">
<use xlink:href="#surface53" mask="url(#mask5)"/>
<use xlink:href="#surface54" mask="url(#mask5)"/>
</g>
<g clip-path="url(#clip16)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 31.304688 54.746094 L 31.304688 59.597656 L 47.324219 59.597656 L 47.324219 54.746094 Z M 31.304688 54.746094 "/>
@@ -1697,10 +1705,10 @@
</g>
<path style="fill:none;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,47.450256%);stroke-opacity:1;stroke-miterlimit:4;" d="M 6.727391 3.445587 L 5.734444 21.082301 L 27.85441 21.082301 L 26.785626 3.519661 Z M 6.727391 3.445587 " transform="matrix(2.21484,0,0,2.21484,0.346,0.34514)"/>
<g clip-path="url(#clip22)" clip-rule="nonzero">
<use xlink:href="#surface63" mask="url(#mask6)"/>
<use xlink:href="#surface73" mask="url(#mask7)"/>
<use xlink:href="#surface92" mask="url(#mask8)"/>
<use xlink:href="#surface102" mask="url(#mask10)"/>
<use xlink:href="#surface64" mask="url(#mask6)"/>
<use xlink:href="#surface74" mask="url(#mask7)"/>
<use xlink:href="#surface93" mask="url(#mask8)"/>
<use xlink:href="#surface103" mask="url(#mask10)"/>
</g>
<g clip-path="url(#clip38)" clip-rule="nonzero">
<g clip-path="url(#clip39)" clip-rule="evenodd">
@@ -1729,12 +1737,12 @@
</g>
</g>
<g clip-path="url(#clip47)" clip-rule="nonzero">
<use xlink:href="#surface112" mask="url(#mask11)"/>
<use xlink:href="#surface122" mask="url(#mask12)"/>
<use xlink:href="#surface132" mask="url(#mask13)"/>
<use xlink:href="#surface142" mask="url(#mask14)"/>
<use xlink:href="#surface152" mask="url(#mask15)"/>
<use xlink:href="#surface161" mask="url(#mask16)"/>
<use xlink:href="#surface113" mask="url(#mask11)"/>
<use xlink:href="#surface123" mask="url(#mask12)"/>
<use xlink:href="#surface133" mask="url(#mask13)"/>
<use xlink:href="#surface143" mask="url(#mask14)"/>
<use xlink:href="#surface153" mask="url(#mask15)"/>
<use xlink:href="#surface163" mask="url(#mask16)"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(29.019165%,29.019165%,29.019165%);fill-opacity:1;" d="M 35.785156 48.75 L 36.285156 48.75 C 36.433594 48.75 36.546875 48.777344 36.621094 48.847656 C 36.699219 48.917969 36.746094 49.011719 36.746094 49.132812 C 36.746094 49.253906 36.699219 49.347656 36.621094 49.410156 C 36.546875 49.480469 36.433594 49.511719 36.285156 49.511719 L 36.085938 49.511719 L 36.085938 49.910156 L 35.785156 49.910156 L 35.785156 48.75 M 36.085938 48.96875 L 36.085938 49.296875 L 36.25 49.296875 C 36.3125 49.296875 36.355469 49.28125 36.386719 49.253906 C 36.414062 49.21875 36.433594 49.183594 36.433594 49.132812 C 36.433594 49.082031 36.414062 49.035156 36.386719 49.011719 C 36.355469 48.976562 36.3125 48.96875 36.25 48.96875 L 36.085938 48.96875 M 37.488281 48.941406 C 37.394531 48.941406 37.324219 48.976562 37.273438 49.046875 C 37.226562 49.117188 37.203125 49.207031 37.203125 49.332031 C 37.203125 49.453125 37.226562 49.546875 37.273438 49.617188 C 37.324219 49.683594 37.394531 49.71875 37.488281 49.71875 C 37.582031 49.71875 37.652344 49.683594 37.703125 49.617188 C 37.757812 49.546875 37.78125 49.453125 37.78125 49.332031 C 37.78125 49.207031 37.757812 49.117188 37.703125 49.046875 C 37.652344 48.976562 37.582031 48.941406 37.488281 48.941406 M 37.488281 48.726562 C 37.675781 48.726562 37.824219 48.777344 37.929688 48.890625 C 38.035156 48.992188 38.085938 49.140625 38.085938 49.332031 C 38.085938 49.519531 38.035156 49.667969 37.929688 49.773438 C 37.824219 49.882812 37.675781 49.9375 37.488281 49.9375 C 37.296875 49.9375 37.148438 49.882812 37.046875 49.773438 C 36.941406 49.667969 36.890625 49.519531 36.890625 49.332031 C 36.890625 49.140625 36.941406 48.992188 37.046875 48.890625 C 37.148438 48.777344 37.296875 48.726562 37.488281 48.726562 M 38.320312 48.75 L 38.648438 48.75 L 39.070312 49.546875 L 39.070312 48.75 L 39.355469 48.75 L 39.355469 49.910156 L 39.027344 49.910156 L 38.597656 49.117188 L 38.597656 49.910156 L 38.320312 49.910156 L 38.320312 48.75 M 39.488281 48.75 L 39.8125 48.75 L 40.082031 49.167969 L 40.351562 48.75 L 40.679688 48.75 L 40.230469 49.425781 L 40.230469 49.910156 L 39.9375 49.910156 L 39.9375 49.425781 L 39.488281 48.75 "/>
</g>
@@ -1789,7 +1797,7 @@
<path style="fill-rule:nonzero;fill:rgb(8.657837%,31.404114%,58.695984%);fill-opacity:1;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1.752569 0.001875 C -0.438838 0.439375 -2.630244 1.314375 -5.25915 2.849531 C -2.630244 0.876875 -2.630244 -0.877031 -5.25915 -2.849687 C -2.630244 -1.314531 -0.438838 -0.439531 1.752569 0.001875 Z M 1.752569 0.001875 " transform="matrix(0,-1,-1,0,172.455,55.0846)"/>
<path style="fill-rule:nonzero;fill:rgb(8.657837%,31.404114%,58.695984%);fill-opacity:1;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1.753336 -0.001875 C -0.43807 0.439531 -2.629476 1.314531 -5.262289 2.849687 C -2.629476 0.877031 -2.629476 -0.876875 -5.262289 -2.849531 C -2.629476 -1.314375 -0.43807 -0.439375 1.753336 -0.001875 Z M 1.753336 -0.001875 " transform="matrix(0,1,1,0,172.455,134.62557)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M -37.622969 -116.180719 C -38.689375 -114.333063 -38.689375 -112.051813 -37.622969 -110.204156 M -42.79875 -119.169 C -44.931563 -115.473688 -44.931563 -110.915094 -42.79875 -107.215875 M -47.974531 -122.157281 C -51.177656 -116.610406 -51.177656 -109.774469 -47.974531 -104.227594 M -53.150313 -125.149469 C -57.42375 -117.751031 -57.42375 -108.633844 -53.150313 -101.235406 M -58.33 -128.13775 C -63.665938 -118.891656 -63.665938 -107.493219 -58.33 -98.247125 M -63.505781 -131.126031 C -69.912031 -120.028375 -69.912031 -106.3565 -63.505781 -95.258844 M -68.681563 -134.114313 C -76.154219 -121.169 -76.154219 -105.215875 -68.681563 -92.270563 " transform="matrix(1,0,0,-1,172.455,44.581)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -121.583906 -7.290094 C -120.837813 -5.860406 -119.521406 -4.669 -118.005781 -4.579156 C -116.48625 -4.489313 -115.037031 -5.51275 -114.126875 -6.840875 C -113.216719 -8.172906 -112.872969 -9.26275 -112.73625 -9.254938 C -112.595625 -9.247125 -112.388594 -8.122125 -111.6425 -6.692438 C -110.888594 -5.26275 -109.572188 -4.07525 -108.052656 -3.9815 C -106.537031 -3.891656 -105.087813 -4.915094 -104.177656 -6.247125 C -103.263594 -7.57525 -102.92375 -8.665094 -102.783125 -8.657281 C -102.646406 -8.649469 -102.435469 -7.524469 -101.689375 -6.094781 C -100.939375 -4.665094 -99.622969 -3.477594 -98.103438 -3.38775 C -96.583906 -3.294 -95.138594 -4.317438 -94.224531 -5.649469 C -93.314375 -6.977594 -92.974531 -8.067438 -92.833906 -8.059625 C -92.697188 -8.051813 -92.48625 -6.930719 -91.740156 -5.501031 C -90.98625 -4.071344 -89.67375 -2.879938 -88.154219 -2.790094 C -86.634688 -2.70025 -85.185469 -3.723688 -84.275313 -5.051813 C -83.365156 -6.383844 -83.021406 -7.473688 -82.884688 -7.465875 C -82.744063 -7.454156 -82.537031 -6.333063 -81.790938 -4.903375 C -81.037031 -3.473688 -79.720625 -2.286188 -78.205 -2.192438 C -76.685469 -2.102594 -75.23625 -3.126031 -74.326094 -4.454156 C -73.415938 -5.786188 -73.072188 -6.876031 -72.935469 -6.868219 C -72.794844 -6.860406 -72.583906 -5.735406 -71.841719 -4.305719 C -71.087813 -2.876031 -69.771406 -1.688531 -68.251875 -1.598688 C -66.73625 -1.504938 -65.287031 -2.528375 -64.376875 -3.860406 C -63.462813 -5.188531 -63.122969 -6.278375 -62.982344 -6.270563 C -62.845625 -6.26275 -62.634688 -5.141656 -61.888594 -3.711969 C -61.138594 -2.282281 -59.822188 -1.090875 -58.302656 -1.001031 C -56.783125 -0.907281 -55.337813 -1.934625 -54.42375 -3.26275 C -53.513594 -4.594781 -53.17375 -5.684625 -53.033125 -5.672906 C -52.8925 -5.665094 -52.685469 -4.544 -51.939375 -3.114313 C -51.185469 -1.684625 -49.872969 -0.493219 -48.353438 -0.403375 C -46.833906 -0.313531 -45.384688 -1.336969 -44.474531 -2.665094 L -44.087813 -2.641656 " transform="matrix(1,0,0,-1,172.455,44.581)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -121.583906 -7.290094 C -120.837813 -5.860406 -119.521406 -4.669 -118.005781 -4.579156 C -116.48625 -4.489313 -115.037031 -5.51275 -114.126875 -6.840875 C -113.216719 -8.172906 -112.872969 -9.26275 -112.73625 -9.254938 C -112.595625 -9.247125 -112.388594 -8.122125 -111.6425 -6.692438 C -110.896406 -5.26275 -109.58 -4.07525 -108.060469 -3.9815 C -106.540938 -3.891656 -105.095625 -4.915094 -104.181563 -6.247125 C -103.271406 -7.57525 -102.927656 -8.665094 -102.790938 -8.657281 C -102.650313 -8.649469 -102.443281 -7.524469 -101.697188 -6.098688 C -100.951094 -4.669 -99.634688 -3.477594 -98.115156 -3.38775 C -96.595625 -3.297906 -95.150313 -4.321344 -94.23625 -5.649469 C -93.326094 -6.9815 -92.98625 -8.071344 -92.845625 -8.059625 C -92.708906 -8.051813 -92.497969 -6.930719 -91.751875 -5.501031 C -91.005781 -4.071344 -89.689375 -2.883844 -88.169844 -2.790094 C -86.654219 -2.70025 -85.205 -3.723688 -84.294844 -5.051813 C -83.380781 -6.383844 -83.040938 -7.473688 -82.900313 -7.465875 C -82.763594 -7.458063 -82.552656 -6.333063 -81.806563 -4.903375 C -81.060469 -3.473688 -79.744063 -2.286188 -78.228438 -2.196344 C -76.708906 -2.102594 -75.259688 -3.126031 -74.349531 -4.458063 C -73.439375 -5.786188 -73.095625 -6.876031 -72.958906 -6.868219 C -72.818281 -6.860406 -72.61125 -5.739313 -71.865156 -4.309625 C -71.115156 -2.879938 -69.802656 -1.688531 -68.283125 -1.598688 C -66.763594 -1.508844 -65.314375 -2.532281 -64.404219 -3.860406 C -63.494063 -5.192438 -63.150313 -6.282281 -63.013594 -6.274469 C -62.872969 -6.266656 -62.665938 -5.141656 -61.919844 -3.711969 C -61.17375 -2.282281 -59.857344 -1.094781 -58.337813 -1.001031 C -56.818281 -0.911188 -55.372969 -1.934625 -54.458906 -3.266656 C -53.54875 -4.594781 -53.208906 -5.684625 -53.068281 -5.676813 C -52.931563 -5.669 -52.720625 -4.547906 -51.974531 -3.118219 C -51.228438 -1.688531 -49.912031 -0.497125 -48.3925 -0.407281 C -46.876875 -0.317438 -45.427656 -1.340875 -44.5175 -2.669 L -44.087813 -2.641656 " transform="matrix(1,0,0,-1,172.455,44.581)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 44.087969 -0.00103125 L 58.345781 -0.00103125 " transform="matrix(1,0,0,-1,172.455,44.581)"/>
<path style="fill-rule:nonzero;fill:rgb(8.657837%,31.404114%,58.695984%);fill-opacity:1;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1.752218 -0.00103125 C -0.439189 0.436469 -2.630595 1.315375 -5.259501 2.850531 C -2.630595 0.877875 -2.630595 -0.876031 -5.259501 -2.848688 C -2.630595 -1.313531 -0.439189 -0.438531 1.752218 -0.00103125 Z M 1.752218 -0.00103125 " transform="matrix(1,0,0,-1,230.80247,44.581)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 44.087969 -0.00103125 L 46.923906 -0.00103125 L 46.923906 -156.329156 L 58.345781 -156.329156 " transform="matrix(1,0,0,-1,172.455,44.581)"/>
@@ -1866,17 +1874,17 @@
<use xlink:href="#glyph2-17" x="92.306127" y="199.722"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="318.114" y="48.309"/>
<use xlink:href="#glyph3-1" x="318.114" y="48.308"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="324.633278" y="48.309"/>
<use xlink:href="#glyph3-2" x="324.633278" y="48.308"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-3" x="332.509648" y="48.309"/>
<use xlink:href="#glyph3-4" x="340.3882" y="48.309"/>
<use xlink:href="#glyph3-3" x="332.509648" y="48.308"/>
<use xlink:href="#glyph3-4" x="340.3882" y="48.308"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="252.181" y="66.64"/>
<use xlink:href="#glyph4-0" x="252.182" y="66.64"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-11" x="263.015" y="66.64"/>
@@ -1986,7 +1994,7 @@
<use xlink:href="#glyph2-14" x="415.656655" y="103.502"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="252.181" y="123.427"/>
<use xlink:href="#glyph4-0" x="252.182" y="123.427"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-11" x="263.015" y="123.427"/>
@@ -2118,7 +2126,7 @@
<use xlink:href="#glyph2-4" x="416.706713" y="160.289"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="252.181" y="180.214"/>
<use xlink:href="#glyph4-0" x="252.182" y="180.214"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-6" x="263.015" y="180.214"/>
@@ -2173,7 +2181,7 @@
<use xlink:href="#glyph3-10" x="385.85573" y="204.697"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="252.181" y="223.028"/>
<use xlink:href="#glyph4-0" x="252.182" y="223.028"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-38" x="263.015" y="223.028"/>
@@ -2214,7 +2222,7 @@
<use xlink:href="#glyph2-22" x="386.776395" y="223.028"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="252.181" y="240.961"/>
<use xlink:href="#glyph4-0" x="252.182" y="240.961"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-7" x="263.015" y="240.961"/>
@@ -2241,13 +2249,13 @@
<use xlink:href="#glyph2-34" x="339.8655" y="240.961"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-20" x="346.227616" y="240.961"/>
<use xlink:href="#glyph2-20" x="346.227617" y="240.961"/>
<use xlink:href="#glyph2-35" x="350.654996" y="240.961"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-20" x="359.240765" y="240.961"/>
<use xlink:href="#glyph2-2" x="363.668144" y="240.961"/>
<use xlink:href="#glyph2-5" x="368.095523" y="240.961"/>
<use xlink:href="#glyph2-5" x="368.095524" y="240.961"/>
<use xlink:href="#glyph2-18" x="371.997874" y="240.961"/>
<use xlink:href="#glyph2-3" x="375.872329" y="240.961"/>
<use xlink:href="#glyph2-33" x="378.639939" y="240.961"/>
@@ -2256,6 +2264,6 @@
<use xlink:href="#glyph2-18" x="393.583839" y="240.961"/>
<use xlink:href="#glyph2-2" x="397.458294" y="240.961"/>
</g>
<use xlink:href="#surface22" transform="matrix(1,0,0,1,8,9)"/>
<use xlink:href="#surface167" transform="matrix(1,0,0,1,8,9)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.6 MiB

After

Width:  |  Height:  |  Size: 6.6 MiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 620 KiB

After

Width:  |  Height:  |  Size: 628 KiB

View File

@@ -124,9 +124,9 @@
<path d="M 0.390625 0.160156 L 34.402344 0.160156 L 34.402344 18.730469 L 0.390625 18.730469 Z M 0.390625 0.160156 "/>
</clipPath>
<clipPath id="clip1">
<rect width="35" height="19"/>
<rect x="0" y="0" width="35" height="19"/>
</clipPath>
<g id="surface4" clip-path="url(#clip1)">
<g id="surface5" clip-path="url(#clip1)">
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.194702%,90.194702%,90.194702%);fill-opacity:1;" d="M 18.71875 0.40625 C 16.828125 0.40625 15.152344 1.308594 14.09375 2.707031 C 13.199219 2.140625 12.136719 1.808594 10.996094 1.808594 C 8.117188 1.808594 5.726562 3.910156 5.28125 6.664062 C 2.632812 7.199219 0.640625 9.535156 0.640625 12.339844 C 0.640625 15.539062 3.234375 18.132812 6.433594 18.132812 C 7.738281 18.132812 8.941406 17.699219 9.910156 16.972656 C 10.472656 17.15625 11.074219 17.253906 11.695312 17.253906 C 12.300781 17.253906 12.882812 17.160156 13.429688 16.988281 C 14.457031 17.917969 15.820312 18.484375 17.3125 18.484375 C 18.828125 18.484375 20.210938 17.898438 21.242188 16.945312 C 22.171875 17.582031 23.296875 17.953125 24.507812 17.953125 C 25.46875 17.953125 26.378906 17.722656 27.175781 17.304688 C 27.558594 17.386719 27.960938 17.429688 28.367188 17.429688 C 31.566406 17.429688 34.160156 14.835938 34.160156 11.636719 C 34.160156 8.4375 31.566406 5.847656 28.367188 5.847656 C 28.335938 5.847656 28.304688 5.847656 28.273438 5.847656 C 27.242188 4.597656 25.699219 3.789062 23.964844 3.742188 C 23.039062 1.769531 21.039062 0.40625 18.71875 0.40625 Z M 18.71875 0.40625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 18.710938 0.160156 C 16.820312 0.160156 15.136719 1.035156 14.03125 2.398438 C 13.136719 1.875 12.101562 1.566406 10.988281 1.566406 C 8.046875 1.566406 5.597656 3.675781 5.066406 6.464844 C 2.386719 7.082031 0.390625 9.476562 0.390625 12.339844 C 0.390625 15.671875 3.09375 18.378906 6.425781 18.378906 C 7.738281 18.378906 8.957031 17.953125 9.945312 17.242188 C 10.5 17.410156 11.085938 17.5 11.691406 17.5 C 12.273438 17.5 12.835938 17.414062 13.371094 17.261719 C 14.425781 18.171875 15.804688 18.730469 17.308594 18.730469 C 18.820312 18.730469 20.199219 18.167969 21.257812 17.25 C 22.195312 17.847656 23.308594 18.203125 24.503906 18.203125 C 25.472656 18.203125 26.390625 17.96875 27.207031 17.558594 C 27.582031 17.632812 27.96875 17.675781 28.363281 17.675781 C 31.695312 17.675781 34.402344 14.96875 34.402344 11.636719 C 34.402344 8.3125 31.703125 5.609375 28.375 5.601562 C 27.332031 4.386719 25.8125 3.597656 24.109375 3.507812 C 23.117188 1.527344 21.074219 0.160156 18.710938 0.160156 Z M 18.710938 0.652344 C 20.9375 0.652344 22.851562 1.960938 23.738281 3.847656 C 23.773438 3.929688 23.863281 3.988281 23.953125 3.988281 C 25.617188 4.035156 27.09375 4.808594 28.082031 6.003906 C 28.128906 6.0625 28.199219 6.097656 28.273438 6.09375 C 28.3125 6.09375 28.339844 6.09375 28.363281 6.09375 C 31.429688 6.09375 33.910156 8.574219 33.910156 11.636719 C 33.910156 14.703125 31.429688 17.183594 28.363281 17.183594 C 27.972656 17.183594 27.585938 17.144531 27.21875 17.066406 C 27.164062 17.054688 27.105469 17.0625 27.054688 17.089844 C 26.292969 17.484375 25.425781 17.710938 24.503906 17.710938 C 23.339844 17.710938 22.265625 17.351562 21.375 16.742188 C 21.28125 16.679688 21.148438 16.691406 21.070312 16.765625 C 20.078125 17.679688 18.761719 18.238281 17.308594 18.238281 C 15.878906 18.238281 14.574219 17.695312 13.59375 16.808594 C 13.527344 16.75 13.433594 16.730469 13.355469 16.753906 C 12.828125 16.921875 12.269531 17.007812 11.691406 17.007812 C 11.09375 17.007812 10.519531 16.914062 9.980469 16.738281 C 9.90625 16.714844 9.816406 16.730469 9.753906 16.777344 C 8.828125 17.472656 7.675781 17.886719 6.425781 17.886719 C 3.359375 17.886719 0.882812 15.40625 0.882812 12.339844 C 0.882812 9.652344 2.789062 7.417969 5.324219 6.90625 C 5.417969 6.886719 5.5 6.800781 5.515625 6.707031 C 5.945312 4.070312 8.230469 2.054688 10.988281 2.054688 C 12.082031 2.054688 13.097656 2.371094 13.957031 2.917969 C 14.058594 2.980469 14.210938 2.953125 14.285156 2.855469 C 15.296875 1.515625 16.902344 0.652344 18.710938 0.652344 Z M 18.710938 0.652344 "/>
@@ -295,7 +295,7 @@
<g id="surface1">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M -91.706094 -0.0013125 L -63.358438 -0.0013125 " transform="matrix(1,0,0,-1,161.46,32.444)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 73.825156 -0.0013125 L 120.051719 -0.0013125 " transform="matrix(1,0,0,-1,161.46,32.444)"/>
<use xlink:href="#surface4" transform="matrix(1,0,0,1,241,23)"/>
<use xlink:href="#surface5" transform="matrix(1,0,0,1,241,23)"/>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 222.410156 3.570312 L 105.65625 3.570312 C 103.453125 3.570312 101.671875 5.355469 101.671875 7.554688 L 101.671875 62.480469 C 101.671875 64.679688 103.453125 66.464844 105.65625 66.464844 L 222.410156 66.464844 C 224.613281 66.464844 226.398438 64.679688 226.398438 62.480469 L 226.398438 7.554688 C 226.398438 5.355469 224.613281 3.570312 222.410156 3.570312 Z M 222.410156 3.570312 "/>
</g>
@@ -334,7 +334,7 @@
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="144.4" y="41.946"/>
<use xlink:href="#glyph1-2" x="150.127278" y="41.946"/>
<use xlink:href="#glyph1-2" x="150.127277" y="41.946"/>
<use xlink:href="#glyph1-3" x="155.854555" y="41.946"/>
<use xlink:href="#glyph1-2" x="161.581833" y="41.946"/>
<use xlink:href="#glyph1-4" x="167.30911" y="41.946"/>
@@ -401,10 +401,10 @@
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 68.844687 10.651031 L 40.868125 10.651031 C 38.665 10.651031 36.879844 8.865875 36.879844 6.666656 L 36.879844 -6.665375 C 36.879844 -8.864594 38.665 -10.64975 40.868125 -10.64975 L 68.844687 -10.64975 C 71.043906 -10.64975 72.829062 -8.864594 72.829062 -6.665375 L 72.829062 6.666656 C 72.829062 8.865875 71.043906 10.651031 68.844687 10.651031 Z M 68.844687 10.651031 " transform="matrix(1,0,0,-1,161.46,32.444)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="204.011" y="34.769"/>
<use xlink:href="#glyph2-2" x="210.163146" y="34.769"/>
<use xlink:href="#glyph2-3" x="216.315292" y="34.769"/>
<use xlink:href="#glyph2-4" x="222.467438" y="34.769"/>
<use xlink:href="#glyph2-1" x="204.01" y="34.769"/>
<use xlink:href="#glyph2-2" x="210.162146" y="34.769"/>
<use xlink:href="#glyph2-3" x="216.314292" y="34.769"/>
<use xlink:href="#glyph2-4" x="222.466438" y="34.769"/>
</g>
<g clip-path="url(#clip13)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 317.042969 25.695312 L 289.066406 25.695312 C 286.867188 25.695312 285.082031 27.480469 285.082031 29.679688 L 285.082031 40.355469 C 285.082031 42.554688 286.867188 44.339844 289.066406 44.339844 L 317.042969 44.339844 C 319.246094 44.339844 321.03125 42.554688 321.03125 40.355469 L 321.03125 29.679688 C 321.03125 27.480469 319.246094 25.695312 317.042969 25.695312 Z M 317.042969 25.695312 "/>

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 689 KiB

After

Width:  |  Height:  |  Size: 696 KiB

View File

@@ -97,9 +97,9 @@
<path d="M 0.90625 0.984375 L 43.421875 0.984375 L 43.421875 24.199219 L 0.90625 24.199219 Z M 0.90625 0.984375 "/>
</clipPath>
<clipPath id="clip1">
<rect width="44" height="25"/>
<rect x="0" y="0" width="44" height="25"/>
</clipPath>
<g id="surface4" clip-path="url(#clip1)">
<g id="surface5" clip-path="url(#clip1)">
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.194702%,90.194702%,90.194702%);fill-opacity:1;" d="M 23.816406 1.292969 C 21.457031 1.292969 19.359375 2.421875 18.039062 4.171875 C 16.917969 3.460938 15.589844 3.046875 14.164062 3.046875 C 10.5625 3.046875 7.578125 5.675781 7.015625 9.117188 C 3.710938 9.785156 1.21875 12.707031 1.21875 16.210938 C 1.21875 20.210938 4.460938 23.449219 8.457031 23.449219 C 10.089844 23.449219 11.59375 22.910156 12.804688 22 C 13.507812 22.230469 14.257812 22.355469 15.039062 22.355469 C 15.792969 22.355469 16.523438 22.238281 17.207031 22.023438 C 18.492188 23.183594 20.191406 23.890625 22.058594 23.890625 C 23.953125 23.890625 25.679688 23.164062 26.972656 21.96875 C 28.132812 22.765625 29.539062 23.230469 31.054688 23.230469 C 32.257812 23.230469 33.390625 22.9375 34.386719 22.417969 C 34.871094 22.519531 35.367188 22.574219 35.878906 22.574219 C 39.878906 22.574219 43.121094 19.332031 43.121094 15.332031 C 43.121094 11.335938 39.878906 8.09375 35.878906 8.09375 C 35.839844 8.09375 35.800781 8.097656 35.761719 8.097656 C 34.472656 6.535156 32.542969 5.523438 30.375 5.464844 C 29.21875 3 26.71875 1.292969 23.816406 1.292969 Z M 23.816406 1.292969 "/>
</g>
@@ -229,7 +229,7 @@
<g id="surface1">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M -91.706094 0.00115625 L -63.358438 0.00115625 " transform="matrix(1,0,0,-1,161.46,18.591)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 63.360312 0.00115625 L 120.051719 0.00115625 " transform="matrix(1,0,0,-1,161.46,18.591)"/>
<use xlink:href="#surface4" transform="matrix(1,0,0,1,231,6)"/>
<use xlink:href="#surface5" transform="matrix(1,0,0,1,231,6)"/>
<g clip-path="url(#clip4)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 222.410156 3.570312 L 105.65625 3.570312 C 103.453125 3.570312 101.671875 5.351562 101.671875 7.554688 L 101.671875 34.773438 C 101.671875 36.976562 103.453125 38.761719 105.65625 38.761719 L 222.410156 38.761719 C 224.613281 38.761719 226.398438 36.976562 226.398438 34.773438 L 226.398438 7.554688 C 226.398438 5.351562 224.613281 3.570312 222.410156 3.570312 Z M 222.410156 3.570312 "/>
</g>

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 381 KiB

After

Width:  |  Height:  |  Size: 390 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 478 KiB

After

Width:  |  Height:  |  Size: 495 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 600 KiB

After

Width:  |  Height:  |  Size: 607 KiB

View File

@@ -26,7 +26,6 @@ device instead of the phone.
With the built-in Java Card runtime of jCardSim_ the app includes the following
Applets:
- `Hello World Applet`_ (application identifier ``F000000001``)
- `OpenPGP Applet`_ (application identifier ``D2760001240102000000000000010000``)
- `OATH Applet`_ (application identifier ``A000000527210101``)
- `ISO Applet`_ (application identifier ``F276A288BCFBA69D34F31001``)

View File

@@ -56,6 +56,12 @@ In the next dialog choose :file:`Tizen/TCardEmulator`. To be able to build and
install the Tizen service on the smartwatch, you need to `install the
appropriate SDK extensions and register as app developer`_.
More usefull ressources:
- `Tizen Developers: Near Field Communication (NFC)`_
- `Programming Guide: Accessory`_
- `Guidelines on Connecting a Gear S2 Device Using Wi-Fi`_
.. include:: questions.txt
@@ -68,3 +74,6 @@ Notes and References
.. _Tizen SDK: https://developer.tizen.org/development/tools/download
.. _`install the appropriate SDK extensions and register as app developer`: https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included
.. _`Tizen Developers: Near Field Communication (NFC)`: https://developer.tizen.org/development/guides/native-application/connectivity-and-wireless/nfc
.. _`Programming Guide: Accessory`: http://developer.samsung.com/html/techdoc/ProgrammingGuide_Accessory.pdf
.. _Guidelines on Connecting a Gear S2 Device Using Wi-Fi: http://developer.samsung.com/html/techdoc/Guidelines_on_Connecting_GearS2_device_using_WiFi_151222.pdf

View File

@@ -1,12 +0,0 @@
.. meta::
:http-equiv=refresh: 0;URL='https://github.com/frankmorgner/OpenSC'
######################
nPA Smart Card Library
######################
Access the German electronic identity card (neuer Personalausweis/nPA).
The functionality of nPA Smart Card Library has been integrated into
OpenSC. Developement and Support will continue at our new home
https://github.com/frankmorgner/OpenSC.

View File

@@ -169,7 +169,6 @@ to completely emulate an ISO/IEC 14443 smart card.
PC/SC Relay has the following dependencies:
- PC/SC middleware
- libnfc_
.. include:: relay-note.txt
@@ -190,7 +189,7 @@ installation of libnfc::
PREFIX=/tmp/install
LIBNFC=libnfc
git clone https://code.google.com/p/libnfc $LIBNFC
git clone https://github.com/nfc-tools/libnfc $LIBNFC
cd $LIBNFC
autoreconf -i
# See `./configure --help` for enabling support of additional hardware
@@ -291,6 +290,6 @@ Notes and References
.. target-notes::
.. _`Hardware supported by libnfc`: http://nfc-tools.org/index.php?title=Devices_compatibility_matrix
.. _libnfc: http://www.libnfc.org/
.. _libnfc: https://github.com/nfc-tools/libnfc
.. _OpenPICC: http://www.openpcd.org/OpenPICC
.. _PCSC-lite: https://pcsclite.apdu.fr/

View File

@@ -102,10 +102,10 @@ responses via NFC to a contact-less smart card that signs the mail.
Depending on your usage of the |vpicc| you may need to install the following:
- Python_
- pyscard_ (relaying a local smart card with :option:`--type=relay`)
- pyscard_ (relaying a local smart card with `--type=relay`)
- PyCrypto_, PBKDF2_, PIL_, readline_ or PyReadline_ (emulation of electronic
passport with :option:`--type=ePass`)
- OpenPACE_ (emulation of German identity card with :option:`--type=nPA`)
passport with `--type=ePass`)
- OpenPACE_ (emulation of German identity card with `--type=nPA`)
- libqrencode_ (to print a QR code on the command line for `vpcd-config`; an
URL will be printed if libqrencode is not available)
@@ -129,9 +129,9 @@ Mac OS X 10.10 (and later) ships with a proprietary implementation of the PC/SC
layer instead of with PCSC-Lite. As far as we know, this means that smart card
readers must be USB devices instead of directly allowing a more generic type of
reader. To make |vpcd| work we simply configure it to pretend being a USB smart
card reader with an :file:`Ìnfo.plist`::
card reader with an :file:`Info.plist`::
./configure --prefix=/ --enable-infoplist
./configure --enable-infoplist
make
make install
@@ -209,7 +209,7 @@ connections. The port to open should be specified in ``CHANNELID`` and
If the first part of the ``DEVICENAME`` is different from ``/dev/null``, |vpcd|
will use this string as a hostname for connecting to a waiting |vpicc|. |vpicc|
needs to be started with :option:`--reversed` in this case.
needs to be started with `--reversed` in this case.
================================================================================
Configuring |vpcd| on Mac OS X
@@ -229,7 +229,7 @@ as USB device:
system_profiler SPUSBDataType
3. Change :file:`/usr/libexec/SmartCardServices/drivers/ifd-vpcd.bundle/Info.plist`
3. Change :file:`/usr/local/libexec/SmartCardServices/drivers/ifd-vpcd.bundle/Info.plist`
to match your product and vendor ID:
.. literalinclude:: Info.plist
@@ -240,11 +240,20 @@ Note that ``ifdFriendlyName`` can be used in the same way as ``DEVICENAME``
4. Restart the PC/SC service::
sudo killall -SIGKILL -m .*com.apple.ifdreader
sudo killall -SIGKILL -m '.*com.apple.ifdreader'
Now, every time you plug in your USB device |vpcd| will be started. It will be
stopped when you unplug the device.
To verify the installation, execute::
system_profiler SPSmartCardsDataType
In case of a problem, inspect the logs::
log show --predicate '(subsystem == "com.apple.CryptoTokenKit")' --info --debug
================================================================================
Configuring |vpcd| on Windows
================================================================================
@@ -262,7 +271,7 @@ to open should be specified in ``TCP_PORT``:
:emphasize-lines: 8
Currently it is not possible to configure the Windows driver to connect to an
|vpicc| running with :option:`--reversed`.
|vpicc| running with `--reversed`.
================================================================================
Running |vpicc|
@@ -273,7 +282,7 @@ dependencies listed above need to be installed seperately. You can start the
|vpicc| via :command:`python.exe vicc.py`. On all other systems an executable
script :command:`vicc` is installed using the autotools.
The |vpicc| option :option:`--help` gives an overview about the command line
The |vpicc| option `--help` gives an overview about the command line
switches:
.. program-output:: vicc --help
@@ -281,7 +290,7 @@ switches:
.. versionadded:: 0.7
We implemented :command:`vpcd-config` which tries to guess the local IP
address and outputs |vpcd|'s configuration. |vpicc|'s options should be
chosen accordingly (:option:`--hostname` and :option:`--port`)
chosen accordingly (`--hostname` and `--port`)
:command:`vpcd-config` also prints a QR code for configuration of the
:ref:`remote-reader`.

View File

@@ -33,15 +33,6 @@ The communication is initiated by |vpcd|. First the length of the data (in
network byte order, i.e. big endian) is sent followed by the data itself.
===================================
Documentation to Virtual Smart Card
===================================
.. toctree::
api/virtualsmartcard
========
Examples
========
@@ -56,8 +47,7 @@ includes all standard commands for file management and secure messaging.
Let's assume we want to create a cryptoflex card, that acts mostly according to
ISO 7816. In this example we only want to add little things that differ from
ISO 7816. But as for most complex software you need to know where you need to
hook into. Here we only want to give an overview to the design, the complete
details can be found in section `Documentation to Virtual Smart Card`_.
hook into. Here we only want to give an overview to the design.
Back to the cryptoflex example.
:class:`~virtualsmartcard.VirtualSmartcard.VirtualICC` provides the connection

View File

@@ -0,0 +1,10 @@
RelayMiddleman Module
=====================
.. inheritance-diagram:: virtualsmartcard.cards.RelayMiddleman
.. automodule:: virtualsmartcard.cards.RelayMiddleman
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -5,6 +5,7 @@ cards Package
virtualsmartcard.cards.HandlerTest
virtualsmartcard.cards.Relay
virtualsmartcard.cards.RelayMiddleman
virtualsmartcard.cards.cryptoflex
virtualsmartcard.cards.ePass
virtualsmartcard.cards.nPA

Binary file not shown.

Before

Width:  |  Height:  |  Size: 673 B

406
docs/_static/basic.css vendored
View File

@@ -4,7 +4,7 @@
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@@ -15,6 +15,12 @@ div.clearer {
clear: both;
}
div.section::after {
display: block;
content: '';
clear: left;
}
/* -- relbar ---------------------------------------------------------------- */
div.related {
@@ -52,6 +58,8 @@ div.sphinxsidebar {
width: 230px;
margin-left: -100%;
font-size: 90%;
word-wrap: break-word;
overflow-wrap : break-word;
}
div.sphinxsidebar ul {
@@ -79,14 +87,26 @@ div.sphinxsidebar input {
font-size: 1em;
}
div.sphinxsidebar #searchbox form.search {
overflow: hidden;
}
div.sphinxsidebar #searchbox input[type="text"] {
width: 170px;
float: left;
width: 80%;
padding: 0.25em;
box-sizing: border-box;
}
div.sphinxsidebar #searchbox input[type="submit"] {
width: 30px;
float: left;
width: 20%;
border-left: none;
padding: 0.25em;
box-sizing: border-box;
}
img {
border: 0;
max-width: 100%;
@@ -124,6 +144,8 @@ ul.keywordmatches li.goodmatch a {
table.contentstable {
width: 90%;
margin-left: auto;
margin-right: auto;
}
table.contentstable p.biglink {
@@ -151,9 +173,14 @@ table.indextable td {
vertical-align: top;
}
table.indextable dl, table.indextable dd {
table.indextable ul {
margin-top: 0;
margin-bottom: 0;
list-style-type: none;
}
table.indextable > tbody > tr > td > ul {
padding-left: 0em;
}
table.indextable tr.pcap {
@@ -185,19 +212,51 @@ div.genindex-jumpbox {
padding: 0.4em;
}
/* -- domain module index --------------------------------------------------- */
table.modindextable td {
padding: 2px;
border-collapse: collapse;
}
/* -- general body styles --------------------------------------------------- */
div.body {
min-width: 450px;
max-width: 800px;
}
div.body p, div.body dd, div.body li, div.body blockquote {
-moz-hyphens: auto;
-ms-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
}
a.headerlink {
visibility: hidden;
}
a.brackets:before,
span.brackets > a:before{
content: "[";
}
a.brackets:after,
span.brackets > a:after {
content: "]";
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink {
dt:hover > a.headerlink,
caption:hover > a.headerlink,
p.caption:hover > a.headerlink,
div.code-block-caption:hover > a.headerlink {
visibility: visible;
}
@@ -209,10 +268,6 @@ div.body td {
text-align: left;
}
.field-list ul {
padding-left: 1em;
}
.first {
margin-top: 0 !important;
}
@@ -222,19 +277,25 @@ p.rubric {
font-weight: bold;
}
img.align-left, .figure.align-left, object.align-left {
img.align-left, figure.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, .figure.align-right, object.align-right {
img.align-right, figure.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, .figure.align-center, object.align-center {
img.align-center, figure.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
img.align-default, figure.align-default, .figure.align-default {
display: block;
margin-left: auto;
margin-right: auto;
@@ -248,30 +309,41 @@ img.align-center, .figure.align-center, object.align-center {
text-align: center;
}
.align-default {
text-align: center;
}
.align-right {
text-align: right;
}
/* -- sidebars -------------------------------------------------------------- */
div.sidebar {
div.sidebar,
aside.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px 7px 0 7px;
padding: 7px;
background-color: #ffe;
width: 40%;
float: right;
clear: right;
overflow-x: auto;
}
p.sidebar-title {
font-weight: bold;
}
div.admonition, div.topic, blockquote {
clear: left;
}
/* -- topics ---------------------------------------------------------------- */
div.topic {
border: 1px solid #ccc;
padding: 7px 7px 0 7px;
padding: 7px;
margin: 10px 0 10px 0;
}
@@ -293,10 +365,6 @@ div.admonition dt {
font-weight: bold;
}
div.admonition dl {
margin-bottom: 0;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
@@ -307,13 +375,51 @@ div.body p.centered {
margin-top: 25px;
}
/* -- content of sidebars/topics/admonitions -------------------------------- */
div.sidebar > :last-child,
aside.sidebar > :last-child,
div.topic > :last-child,
div.admonition > :last-child {
margin-bottom: 0;
}
div.sidebar::after,
aside.sidebar::after,
div.topic::after,
div.admonition::after,
blockquote::after {
display: block;
content: '';
clear: both;
}
/* -- tables ---------------------------------------------------------------- */
table.docutils {
margin-top: 10px;
margin-bottom: 10px;
border: 0;
border-collapse: collapse;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
table.align-default {
margin-left: auto;
margin-right: auto;
}
table caption span.caption-number {
font-style: italic;
}
table caption span.caption-text {
}
table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
@@ -322,10 +428,6 @@ table.docutils td, table.docutils th {
border-bottom: 1px solid #aaa;
}
table.field-list td, table.field-list th {
border: 0 !important;
}
table.footnote td, table.footnote th {
border: 0 !important;
}
@@ -344,6 +446,69 @@ table.citation td {
border-bottom: none;
}
th > :first-child,
td > :first-child {
margin-top: 0px;
}
th > :last-child,
td > :last-child {
margin-bottom: 0px;
}
/* -- figures --------------------------------------------------------------- */
div.figure, figure {
margin: 0.5em;
padding: 0.5em;
}
div.figure p.caption, figcaption {
padding: 0.3em;
}
div.figure p.caption span.caption-number,
figcaption span.caption-number {
font-style: italic;
}
div.figure p.caption span.caption-text,
figcaption span.caption-text {
}
/* -- field list styles ----------------------------------------------------- */
table.field-list td, table.field-list th {
border: 0 !important;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.field-name {
-moz-hyphens: manual;
-ms-hyphens: manual;
-webkit-hyphens: manual;
hyphens: manual;
}
/* -- hlist styles ---------------------------------------------------------- */
table.hlist {
margin: 1em 0;
}
table.hlist td {
vertical-align: top;
}
/* -- other body styles ----------------------------------------------------- */
ol.arabic {
@@ -366,11 +531,78 @@ ol.upperroman {
list-style: upper-roman;
}
:not(li) > ol > li:first-child > :first-child,
:not(li) > ul > li:first-child > :first-child {
margin-top: 0px;
}
:not(li) > ol > li:last-child > :last-child,
:not(li) > ul > li:last-child > :last-child {
margin-bottom: 0px;
}
ol.simple ol p,
ol.simple ul p,
ul.simple ol p,
ul.simple ul p {
margin-top: 0;
}
ol.simple > li:not(:first-child) > p,
ul.simple > li:not(:first-child) > p {
margin-top: 0;
}
ol.simple p,
ul.simple p {
margin-bottom: 0;
}
dl.footnote > dt,
dl.citation > dt {
float: left;
margin-right: 0.5em;
}
dl.footnote > dd,
dl.citation > dd {
margin-bottom: 0em;
}
dl.footnote > dd:after,
dl.citation > dd:after {
content: "";
clear: both;
}
dl.field-list {
display: grid;
grid-template-columns: fit-content(30%) auto;
}
dl.field-list > dt {
font-weight: bold;
word-break: break-word;
padding-left: 0.5em;
padding-right: 5px;
}
dl.field-list > dt:after {
content: ":";
}
dl.field-list > dd {
padding-left: 0.5em;
margin-top: 0em;
margin-left: 0em;
margin-bottom: 0em;
}
dl {
margin-bottom: 15px;
}
dd p {
dd > :first-child {
margin-top: 0px;
}
@@ -384,28 +616,32 @@ dd {
margin-left: 30px;
}
dt:target, .highlighted {
dl > dd:last-child,
dl > dd:last-child > :last-child {
margin-bottom: 0;
}
dt:target, span.highlighted {
background-color: #fbe54e;
}
rect.highlighted {
fill: #fbe54e;
}
dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.optional {
font-size: 1.3em;
}
.sig-paren {
font-size: larger;
}
.versionmodified {
font-style: italic;
}
@@ -444,6 +680,12 @@ dl.glossary dt {
font-style: oblique;
}
.classifier:before {
font-style: normal;
margin: 0.5em;
content: ":";
}
abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
@@ -456,37 +698,110 @@ pre {
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
pre, div[class*="highlight-"] {
clear: both;
}
span.pre {
-moz-hyphens: none;
-ms-hyphens: none;
-webkit-hyphens: none;
hyphens: none;
}
div[class*="highlight-"] {
margin: 1em 0;
}
td.linenos pre {
padding: 5px 0px;
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
margin-left: 0.5em;
display: block;
}
table.highlighttable tbody {
display: block;
}
table.highlighttable tr {
display: flex;
}
table.highlighttable td {
padding: 0 0.5em 0 0.5em;
margin: 0;
padding: 0;
}
tt.descname {
table.highlighttable td.linenos {
padding-right: 0.5em;
}
table.highlighttable td.code {
flex: 1;
overflow: hidden;
}
.highlight .hll {
display: block;
}
div.highlight pre,
table.highlighttable pre {
margin: 0;
}
div.code-block-caption + div {
margin-top: 0;
}
div.code-block-caption {
margin-top: 1em;
padding: 2px 5px;
font-size: small;
}
div.code-block-caption code {
background-color: transparent;
}
table.highlighttable td.linenos,
span.linenos,
div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */
user-select: none;
}
div.code-block-caption span.caption-number {
padding: 0.1em 0.3em;
font-style: italic;
}
div.code-block-caption span.caption-text {
}
div.literal-block-wrapper {
margin: 1em 0;
}
code.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}
tt.descclassname {
code.descclassname {
background-color: transparent;
}
tt.xref, a tt {
code.xref, a code {
background-color: transparent;
font-weight: bold;
}
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
background-color: transparent;
}
@@ -518,6 +833,15 @@ span.eqno {
float: right;
}
span.eqno a.headerlink {
position: absolute;
z-index: 1;
}
div.math:hover a.headerlink {
visibility: visible;
}
/* -- printout stylesheet --------------------------------------------------- */
@media print {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,9 +1,8 @@
/*!
* Bootstrap v3.3.4 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
.btn-default,
.btn-primary,
.btn-success,
@@ -29,6 +28,27 @@
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn-default.disabled,
.btn-primary.disabled,
.btn-success.disabled,
.btn-info.disabled,
.btn-warning.disabled,
.btn-danger.disabled,
.btn-default[disabled],
.btn-primary[disabled],
.btn-success[disabled],
.btn-info[disabled],
.btn-warning[disabled],
.btn-danger[disabled],
fieldset[disabled] .btn-default,
fieldset[disabled] .btn-primary,
fieldset[disabled] .btn-success,
fieldset[disabled] .btn-info,
fieldset[disabled] .btn-warning,
fieldset[disabled] .btn-danger {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-default .badge,
.btn-primary .badge,
.btn-success .badge,
@@ -64,8 +84,23 @@
border-color: #dbdbdb;
}
.btn-default.disabled,
.btn-default:disabled,
.btn-default[disabled] {
.btn-default[disabled],
fieldset[disabled] .btn-default,
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active {
background-color: #e0e0e0;
background-image: none;
}
@@ -90,8 +125,23 @@
border-color: #245580;
}
.btn-primary.disabled,
.btn-primary:disabled,
.btn-primary[disabled] {
.btn-primary[disabled],
fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus,
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
background-color: #265a88;
background-image: none;
}
@@ -116,8 +166,23 @@
border-color: #3e8f3e;
}
.btn-success.disabled,
.btn-success:disabled,
.btn-success[disabled] {
.btn-success[disabled],
fieldset[disabled] .btn-success,
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus,
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
.btn-success.disabled.active,
.btn-success[disabled].active,
fieldset[disabled] .btn-success.active {
background-color: #419641;
background-image: none;
}
@@ -142,8 +207,23 @@
border-color: #28a4c9;
}
.btn-info.disabled,
.btn-info:disabled,
.btn-info[disabled] {
.btn-info[disabled],
fieldset[disabled] .btn-info,
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus,
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
.btn-info.disabled.active,
.btn-info[disabled].active,
fieldset[disabled] .btn-info.active {
background-color: #2aabd2;
background-image: none;
}
@@ -168,8 +248,23 @@
border-color: #e38d13;
}
.btn-warning.disabled,
.btn-warning:disabled,
.btn-warning[disabled] {
.btn-warning[disabled],
fieldset[disabled] .btn-warning,
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus,
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
.btn-warning.disabled.active,
.btn-warning[disabled].active,
fieldset[disabled] .btn-warning.active {
background-color: #eb9316;
background-image: none;
}
@@ -194,8 +289,23 @@
border-color: #b92c28;
}
.btn-danger.disabled,
.btn-danger:disabled,
.btn-danger[disabled] {
.btn-danger[disabled],
fieldset[disabled] .btn-danger,
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus,
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
.btn-danger.disabled.active,
.btn-danger[disabled].active,
fieldset[disabled] .btn-danger.active {
background-color: #c12e2a;
background-image: none;
}
@@ -260,6 +370,7 @@
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-radius: 4px;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More