From 92343130c64fc2aedf8c8a7ec31a9100d4a27dc9 Mon Sep 17 00:00:00 2001 From: msimonin <matthieu.simonin@inria.fr> Date: Fri, 29 Nov 2019 00:34:50 +0100 Subject: [PATCH] up --- .gitlab-ci.yml | 6 +- index.html | 1050 +------------- index.org | 423 +----- tuto1/exercices/.#00_setup.sh | 1 + {exercices => tuto1/exercices}/iperf3.py | 0 {exercices => tuto1/exercices}/iperf3_5vms.py | 0 .../exercices}/iperf3_better.py | 0 .../exercices}/iperf3_monitoring.py | 0 {exercices => tuto1/exercices}/iperf3_vms.py | 0 tuto1/exercices/iperfs_xvms.py | 59 + {exercices => tuto1/exercices}/run.py | 0 tuto1/exercices/test.py | 11 + {figs => tuto1/figs}/iperf3.png | Bin {figs => tuto1/figs}/skydive_enoslib.png | Bin tuto1/index.html | 1287 +++++++++++++++++ tuto1/index.org | 428 ++++++ tuto1/index.tex | 569 ++++++++ tuto1/timeline.css | 1035 +++++++++++++ tuto2/figs/overleaf-v2-editor.png | Bin 0 -> 317072 bytes tuto2/figs/simple_compilation.png | 0 tuto2/figs/simple_compilation.svg | 3 + tuto2/index.html | 444 ++++++ tuto2/index.org | 147 ++ tuto2/index.tex | 569 ++++++++ tuto2/timeline.css | 1035 +++++++++++++ 25 files changed, 5595 insertions(+), 1472 deletions(-) create mode 120000 tuto1/exercices/.#00_setup.sh rename {exercices => tuto1/exercices}/iperf3.py (100%) rename {exercices => tuto1/exercices}/iperf3_5vms.py (100%) rename {exercices => tuto1/exercices}/iperf3_better.py (100%) rename {exercices => tuto1/exercices}/iperf3_monitoring.py (100%) rename {exercices => tuto1/exercices}/iperf3_vms.py (100%) create mode 100644 tuto1/exercices/iperfs_xvms.py rename {exercices => tuto1/exercices}/run.py (100%) create mode 100644 tuto1/exercices/test.py rename {figs => tuto1/figs}/iperf3.png (100%) rename {figs => tuto1/figs}/skydive_enoslib.png (100%) create mode 100644 tuto1/index.html create mode 100644 tuto1/index.org create mode 100644 tuto1/index.tex create mode 100644 tuto1/timeline.css create mode 100644 tuto2/figs/overleaf-v2-editor.png create mode 100644 tuto2/figs/simple_compilation.png create mode 100644 tuto2/figs/simple_compilation.svg create mode 100644 tuto2/index.html create mode 100644 tuto2/index.org create mode 100644 tuto2/index.tex create mode 100644 tuto2/timeline.css diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7fec3f1..a45ef0e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,11 +3,7 @@ pages: tags: [qlf-ci.inria.fr] script: - mkdir -p public - - cp index.html public/index.html - - cp timeline.css public/. - - cp -r exercices public/ - - cp -r figs public/ - + - cp -r . public/ || true artifacts: paths: - public diff --git a/index.html b/index.html index f69b6ef..8805468 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> -<!-- 2019-11-15 ven. 14:14 --> +<!-- 2019-11-29 ven. 00:28 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Distributed experiments on Grid'5000 … and beyond !</title> @@ -231,1056 +231,14 @@ for the JavaScript code in this tag. <body> <div id="content"> <h1 class="title">Distributed experiments on Grid'5000 … and beyond !</h1> -<div id="table-of-contents"> -<h2>Table of Contents</h2> -<div id="text-table-of-contents"> -<ul> -<li><a href="#orgb1aa660">1. Foreword</a> -<ul> -<li><a href="#org33af631">1.1. Existing tools (Grid'5000)</a></li> -<li><a href="#org769cfcb">1.2. EnOSlib quicktour</a></li> -<li><a href="#org4a53df5">1.3. Contributing</a></li> -</ul> -</li> -<li><a href="#orgc7e91b9">2. Before you start</a></li> -<li><a href="#org782c78a">3. Setup on Grid'5000</a></li> -<li><a href="#org441c9dd">4. Your first experiment on Grid'5000</a> -<ul> -<li><a href="#orgf5c5450">4.1. First iteration</a></li> -<li><a href="#org993bcaf">4.2. Let's observe in real-time what is happening</a></li> -<li><a href="#org830e31f">4.3. Discussion</a></li> -<li><a href="#org5f35d8c">4.4. A bit better approach</a></li> -<li><a href="#orgdddf696">4.5. Ninja level</a></li> -<li><a href="#org1193557">4.6. Some references</a></li> -</ul> -</li> -<li><a href="#orgf965b96">5. Providers: to replicate your experiment</a> -<ul> -<li><a href="#orgad471c7">5.1. iperf3 on virtual machines on Grid'5000</a></li> -<li><a href="#org08faf88">5.2. References</a></li> -</ul> -</li> -<li><a href="#org56f9c08">6. Variables in EnOSlib</a> -<ul> -<li><a href="#org2281689">6.1. Discover the <code>run</code> command and its variants</a></li> -<li><a href="#orgd2c7291">6.2. Advanced usages</a></li> -<li><a href="#orgd78a6d8">6.3. Ninja level</a></li> -<li><a href="#orge739be4">6.4. Putting all together</a></li> -<li><a href="#org5dafa08">6.5. Some references</a></li> -</ul> -</li> -<li><a href="#orga167566">7. Modules: for safer remote actions</a> -<ul> -<li><a href="#orgc30170a">7.1. Idempotency</a></li> -<li><a href="#org334a244">7.2. One reason why idempotency is important</a></li> -<li><a href="#orgcf77118">7.3. Idempotency trick</a></li> -<li><a href="#orgcaa5aa0">7.4. General idempotency</a></li> -</ul> -</li> -<li><a href="#orgb39fe8f">8. Tasks: to organize your experiment</a></li> -</ul> -</div> -</div> - -<div id="outline-container-orgb1aa660" class="outline-2"> -<h2 id="orgb1aa660"><span class="section-number-2">1</span> Foreword</h2> -<div class="outline-text-2" id="text-1"> -</div> -<div id="outline-container-org33af631" class="outline-3"> -<h3 id="org33af631"><span class="section-number-3">1.1</span> Existing tools (Grid'5000)</h3> -<div class="outline-text-3" id="text-1-1"> -<ul class="org-ul"> -<li>EnOSlib falls under the <b><b>Experiment management tools</b></b> of the following -list: -<a href="https://www.grid5000.fr/w/Grid5000:Software">https://www.grid5000.fr/w/Grid5000:Software</a></li> - -<li>EnOSlib can target Grid'5000 but also other testbeds (Chameleon, local machines…)</li> - -<li>EnOSlib provides high level constructs to help you with your experiments</li> -</ul> -</div> -</div> - -<div id="outline-container-org769cfcb" class="outline-3"> -<h3 id="org769cfcb"><span class="section-number-3">1.2</span> EnOSlib quicktour</h3> -<div class="outline-text-3" id="text-1-2"> -<ul class="org-ul"> -<li>Documentation: <a href="https://discovery.gitlabpages.inria.fr/enoslib/index.html">https://discovery.gitlabpages.inria.fr/enoslib/index.html</a></li> -<li>Source: <a href="https://gitlab.inria.fr/discovery/enoslib">https://gitlab.inria.fr/discovery/enoslib</a></li> -<li>Reach us on: -<ul class="org-ul"> -<li><a href="https://framateam.org/enoslib">https://framateam.org/enoslib</a></li> -<li><a href="https://gitlab.inria.fr/discovery/enoslib/issues">https://gitlab.inria.fr/discovery/enoslib/issues</a></li> -</ul></li> -</ul> -</div> -</div> - -<div id="outline-container-org4a53df5" class="outline-3"> -<h3 id="org4a53df5"><span class="section-number-3">1.3</span> Contributing</h3> -<div class="outline-text-3" id="text-1-3"> -<p> -<b>Before experimenting</b> -</p> - -<ul class="org-ul"> -<li>Tell us what your plans are: -<ul class="org-ul"> -<li>There might be already users doing similar thing</li> -<li>There might be some missing/hidden pieces in the library you might need</li> -</ul></li> -</ul> - -<p> -<b>While experimenting</b> -</p> - -<ul class="org-ul"> -<li>Write bug reports / ask questions</li> -<li>Fix bugs / add your features</li> -</ul> - -<p> -<b>After experimenting</b> -</p> - -<ul class="org-ul"> -<li>Give your feedback</li> -<li>Add yourself to the list: <a href="https://discovery.gitlabpages.inria.fr/enoslib/theyuseit.html">https://discovery.gitlabpages.inria.fr/enoslib/theyuseit.html</a></li> -</ul> -</div> -</div> -</div> - - -<div id="outline-container-orgc7e91b9" class="outline-2"> -<h2 id="orgc7e91b9"><span class="section-number-2">2</span> Before you start</h2> -<div class="outline-text-2" id="text-2"> -<div class="note"> -<p> -make sure you are familiar with the grid'5000 architecture. see section 1 & 2 of -<a href="https://www.grid5000.fr/w/Getting_Started">https://www.grid5000.fr/w/Getting_Started</a>. note that we won't do this tutorial -we'll prefer to use higher level tools for now. -</p> - -</div> -</div> -</div> - -<div id="outline-container-org782c78a" class="outline-2"> -<h2 id="org782c78a"><span class="section-number-2">3</span> Setup on Grid'5000</h2> -<div class="outline-text-2" id="text-3"> -<p> -Connect to a Grid'5000 frontend of your choice (e.g rennes, nancy …) -</p> - -<ul class="org-ul"> -<li>create a new directory to host all the scripts of the session</li> -<li>bootstrap a new python3 virtualenv</li> -<li>install EnOSlib and configure the access to the API</li> -</ul> - -<div class="org-src-container"> -<pre class="src src-bash">$<span style="color: #7590db;">frontend</span>: mkdir enoslib_seminar -$<span style="color: #7590db;">frontend</span>: cd enoslib_seminar -$<span style="color: #7590db;">frontend</span>: virtualenv --python=python3 venv -$<span style="color: #7590db;">frontend</span>: source venv/bin/activate -$<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: pip install enoslib -$<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: echo <span style="color: #2d9574;">'</span> -<span style="color: #2d9574;">verify_ssl: False</span> -<span style="color: #2d9574;">'</span> > ~/.python-grid5000.yaml -</pre> -</div> -</div> -</div> - -<div id="outline-container-org441c9dd" class="outline-2"> -<h2 id="org441c9dd"><span class="section-number-2">4</span> Your first experiment on Grid'5000</h2> -<div class="outline-text-2" id="text-4"> -<p> -Let's experiment with <a href="https://iperf.fr/">iperf3</a>: a network bandwidth measuring tool. The goal is -to deploy a simple benchmark between two hosts. -</p> - -<p> -We'll also instrument the deployment in order to visualize in real-time the -network traffic between the hosts. Since this is super common, EnOSlib -exposes a <i>monitoring service</i> that lets you deploy very quickly what is -needed. -</p> -</div> - -<div id="outline-container-orgf5c5450" class="outline-3"> -<h3 id="orgf5c5450"><span class="section-number-3">4.1</span> First iteration</h3> -<div class="outline-text-3" id="text-4-1"> -<p> -We consider the following script -</p> -<div class="org-src-container"> -<pre class="src src-python"><span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.api <span style="color: #4f97d7; font-weight: bold;">import</span> run_command, wait_ssh -<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_g5k.provider <span style="color: #4f97d7; font-weight: bold;">import</span> G5k -<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_g5k.configuration <span style="color: #4f97d7; font-weight: bold;">import</span> Configuration, NetworkConfiguration -<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.service <span style="color: #4f97d7; font-weight: bold;">import</span> Monitoring - -<span style="color: #4f97d7; font-weight: bold;">import</span> logging - - -<span style="color: #4f97d7; font-weight: bold;">def</span> <span style="color: #bc6ec5; font-weight: bold;">pprint</span><span style="color: #4f97d7;">(</span>d<span style="color: #4f97d7;">)</span>: - <span style="color: #2aa1ae;">"""Utils fonction to pretty print the results"""</span> - <span style="color: #4f97d7; font-weight: bold;">for</span> k, v <span style="color: #4f97d7; font-weight: bold;">in</span> d<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"ok"</span><span style="color: #4f97d7;">]</span>.items<span style="color: #4f97d7;">()</span>: - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"Result for {k}"</span><span style="color: #4f97d7;">)</span> - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"-"</span> * <span style="color: #a45bad;">70</span><span style="color: #4f97d7;">)</span> - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"STDOUT:"</span><span style="color: #4f97d7;">)</span> - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>v.get<span style="color: #bc6ec5;">(</span><span style="color: #2d9574;">"stdout"</span>, <span style="color: #2d9574;">""</span><span style="color: #bc6ec5;">)</span><span style="color: #4f97d7;">)</span> - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"STDERR:"</span><span style="color: #4f97d7;">)</span> - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>v.get<span style="color: #bc6ec5;">(</span><span style="color: #2d9574;">"stderr"</span>, <span style="color: #2d9574;">""</span><span style="color: #bc6ec5;">)</span><span style="color: #4f97d7;">)</span> - - -logging.basicConfig<span style="color: #4f97d7;">(</span>level=logging.INFO<span style="color: #4f97d7;">)</span> - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Some parameters.</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Note 1: that you don't need to be on rennes frontend to use nodes</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">from rennes</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Note 2: Adapt the site/cluster according to the availibility</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">see the Gantt in https://www.grid5000.fr/w/Status</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> - -<span style="color: #7590db;">SITE</span> = <span style="color: #2d9574;">"rennes"</span> -<span style="color: #7590db;">CLUSTER</span> = <span style="color: #2d9574;">"paravance"</span> - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Configuration object describes the resource we want</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">here: 2 machines on the same cluster using the production network</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #7590db;">network</span> = NetworkConfiguration<span style="color: #4f97d7;">(</span><span style="color: #4f97d7;">id</span>=<span style="color: #2d9574;">"n1"</span>, - <span style="color: #4f97d7;">type</span>=<span style="color: #2d9574;">"prod"</span>, - roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"my_network"</span><span style="color: #bc6ec5;">]</span>, - site=SITE<span style="color: #4f97d7;">)</span> - -<span style="color: #7590db;">conf</span> = Configuration.from_settings<span style="color: #4f97d7;">(</span>job_name=<span style="color: #2d9574;">"enoslib_tutorial"</span>, - job_type=<span style="color: #2d9574;">"allow_classic_ssh"</span><span style="color: #4f97d7;">)</span>\ - .add_network_conf<span style="color: #4f97d7;">(</span>network<span style="color: #4f97d7;">)</span>\ - .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span>, - cluster=CLUSTER, - nodes=<span style="color: #a45bad;">1</span>, - primary_network=network<span style="color: #4f97d7;">)</span>\ - .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span>, - cluster=CLUSTER, - nodes=<span style="color: #a45bad;">1</span>, - primary_network=network<span style="color: #4f97d7;">)</span>\ - .finalize<span style="color: #4f97d7;">()</span> - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Reserve the ressources corresponding to the configuration</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">you'll get two **physical machine** (not virtual)</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">the roles object is a dictionnary of the concrete compute resources</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">roles = {"server": [host1], "client": [host2] }</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> - -<span style="color: #7590db;">provider</span> = G5k<span style="color: #4f97d7;">(</span>conf<span style="color: #4f97d7;">)</span> -<span style="color: #7590db;">roles</span>, <span style="color: #7590db;">networks</span> = provider.init<span style="color: #4f97d7;">()</span> -wait_ssh<span style="color: #4f97d7;">(</span>roles<span style="color: #4f97d7;">)</span> - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Below is the experimentation logic</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- It installs the bare minimum to run iperf3</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- The machine with the role 'server' is used to run a iperf3 server</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">started in the background (using tmux)</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- The machine with the role 'client' connects to that server and initiate a</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">transfer for 30s (duration variable)</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- Report is printed in stdout</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> - -<span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> -<span style="color: #7590db;">duration</span> = <span style="color: #a45bad;">30</span> -run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"apt update && apt install -y iperf3 tmux"</span>, roles=roles<span style="color: #4f97d7;">)</span> -run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"tmux new-session -d 'exec iperf3 -s'"</span>, pattern_hosts=<span style="color: #2d9574;">"server"</span>, roles=roles<span style="color: #4f97d7;">)</span> -<span style="color: #7590db;">result</span> = run_command<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"iperf3 -c {server.address} -t {duration}"</span>, pattern_hosts=<span style="color: #2d9574;">"client"</span>, roles=roles<span style="color: #4f97d7;">)</span> -pprint<span style="color: #4f97d7;">(</span>result<span style="color: #4f97d7;">)</span> - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Destroy the reservation, uncomment when needed</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> - -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">provider.destroy()</span> -</pre> -</div> - -<div class="question"> -<p> -How fast is the network between the nodes you have chosen ? -</p> - -</div> - -<div class="note"> -<p> -Before moving to the next questions, you'll need to clean the reservation. -You can either uncomment the line <code>provider.destroy()</code> at the end of the script. -You can also do it manually using the low-level <code>oarstat</code> / <code>oardel</code> tools. -</p> - -<div class="org-src-container"> -<pre class="src src-bash"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">get you reservation id</span> -$<span style="color: #7590db;">frontend</span>: oarstat -u -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">release the resources / kill the reservation</span> -$<span style="color: #7590db;">frontend</span>: oardel <the id of the reservation goes here> -</pre> -</div> - -</div> - -<div class="question"> -<p> -Can you adapt the script so that: -</p> -<ol class="org-ol"> -<li>The two nodes are in two different cluster in the same site ?</li> -<li>The two nodes are in two different sites ?</li> -</ol> - -</div> -</div> -</div> - - -<div id="outline-container-org993bcaf" class="outline-3"> -<h3 id="org993bcaf"><span class="section-number-3">4.2</span> Let's observe in real-time what is happening</h3> -<div class="outline-text-3" id="text-4-2"> -<div class="note"> -<p> -Make sure you have cleaned your previous reservations. -</p> - -</div> - -<p> -The following script installs a monitoring stack on your nodes. This is almost -the same script as before except the lines corresponding to the configuration -of the monitoring stack. -</p> - -<div class="org-src-container"> -<pre class="src src-python"><span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.api <span style="color: #4f97d7; font-weight: bold;">import</span> run_command, wait_ssh -<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_g5k.provider <span style="color: #4f97d7; font-weight: bold;">import</span> G5k -<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_g5k.configuration <span style="color: #4f97d7; font-weight: bold;">import</span> Configuration, NetworkConfiguration -<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.service <span style="color: #4f97d7; font-weight: bold;">import</span> Monitoring - -<span style="color: #4f97d7; font-weight: bold;">import</span> logging - - -<span style="color: #4f97d7; font-weight: bold;">def</span> <span style="color: #bc6ec5; font-weight: bold;">pprint</span><span style="color: #4f97d7;">(</span>d<span style="color: #4f97d7;">)</span>: - <span style="color: #2aa1ae;">"""Utils fonction to pretty print the results"""</span> - <span style="color: #4f97d7; font-weight: bold;">for</span> k, v <span style="color: #4f97d7; font-weight: bold;">in</span> d<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"ok"</span><span style="color: #4f97d7;">]</span>.items<span style="color: #4f97d7;">()</span>: - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"Result for {k}"</span><span style="color: #4f97d7;">)</span> - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"-"</span> * <span style="color: #a45bad;">70</span><span style="color: #4f97d7;">)</span> - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"STDOUT:"</span><span style="color: #4f97d7;">)</span> - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>v.get<span style="color: #bc6ec5;">(</span><span style="color: #2d9574;">"stdout"</span>, <span style="color: #2d9574;">""</span><span style="color: #bc6ec5;">)</span><span style="color: #4f97d7;">)</span> - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"STDERR:"</span><span style="color: #4f97d7;">)</span> - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>v.get<span style="color: #bc6ec5;">(</span><span style="color: #2d9574;">"stderr"</span>, <span style="color: #2d9574;">""</span><span style="color: #bc6ec5;">)</span><span style="color: #4f97d7;">)</span> - - -logging.basicConfig<span style="color: #4f97d7;">(</span>level=logging.INFO<span style="color: #4f97d7;">)</span> - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Some parameters.</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Note 1: that you don't need to be on rennes frontend to use nodes</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">from rennes</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Note 2: Adapt the site/cluster according to the availibility</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">see the Gantt in https://www.grid5000.fr/w/Status</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> - -<span style="color: #7590db;">SITE</span> = <span style="color: #2d9574;">"rennes"</span> -<span style="color: #7590db;">CLUSTER</span> = <span style="color: #2d9574;">"paravance"</span> - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Configuration object describes the resource we want</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">here: 2 machines on the same cluster using the production network</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #7590db;">network</span> = NetworkConfiguration<span style="color: #4f97d7;">(</span><span style="color: #4f97d7;">id</span>=<span style="color: #2d9574;">"n1"</span>, - <span style="color: #4f97d7;">type</span>=<span style="color: #2d9574;">"prod"</span>, - roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"my_network"</span><span style="color: #bc6ec5;">]</span>, - site=SITE<span style="color: #4f97d7;">)</span> - -<span style="color: #7590db;">conf</span> = Configuration.from_settings<span style="color: #4f97d7;">(</span>job_name=<span style="color: #2d9574;">"enoslib_tutorial"</span>, - job_type=<span style="color: #2d9574;">"allow_classic_ssh"</span><span style="color: #4f97d7;">)</span>\ - .add_network_conf<span style="color: #4f97d7;">(</span>network<span style="color: #4f97d7;">)</span>\ - .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span>, - cluster=CLUSTER, - nodes=<span style="color: #a45bad;">1</span>, - primary_network=network<span style="color: #4f97d7;">)</span>\ - .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span>, - cluster=CLUSTER, - nodes=<span style="color: #a45bad;">1</span>, - primary_network=network<span style="color: #4f97d7;">)</span>\ - .finalize<span style="color: #4f97d7;">()</span> - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Reserve the ressources corresponding to the configuration</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">you'll get two **physical machine** (not virtual)</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">the roles object is a dictionnary of the concrete compute resources</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">roles = {"server": [host1], "client": [host2] }</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> - -<span style="color: #7590db;">provider</span> = G5k<span style="color: #4f97d7;">(</span>conf<span style="color: #4f97d7;">)</span> -<span style="color: #7590db;">roles</span>, <span style="color: #7590db;">networks</span> = provider.init<span style="color: #4f97d7;">()</span> -wait_ssh<span style="color: #4f97d7;">(</span>roles<span style="color: #4f97d7;">)</span> - - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">This deploys a monitoring stack. It is composed of</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- some agents on each monitored nodes</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- one collector that collects the metrics from the agents</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- one UI to visualize</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> - -<span style="color: #7590db;">m</span> = Monitoring<span style="color: #4f97d7;">(</span>collector=roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span>, - agent=roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span> + roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span>, - ui=roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span><span style="color: #4f97d7;">)</span> -m.deploy<span style="color: #4f97d7;">()</span> - - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Below is the experimentation logic</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- It installs the bare minimum to run iperf3</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- The machine with the role 'server' is used to run a iperf3 server</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">started in the background (using tmux)</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- The machine with the role 'client' connects to that server and initiate a</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">transfer for 600s (duration variable)</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- Report is printed in stdout</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> - -<span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> -<span style="color: #7590db;">duration</span> = <span style="color: #a45bad;">600</span> -run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"apt update && apt install -y iperf3 tmux"</span>, roles=roles<span style="color: #4f97d7;">)</span> -run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"tmux new-session -d 'exec iperf3 -s'"</span>, pattern_hosts=<span style="color: #2d9574;">"server"</span>, roles=roles<span style="color: #4f97d7;">)</span> -<span style="color: #7590db;">result</span> = run_command<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"iperf3 -c {server.address} -t {duration}"</span>, pattern_hosts=<span style="color: #2d9574;">"client"</span>, roles=roles<span style="color: #4f97d7;">)</span> -pprint<span style="color: #4f97d7;">(</span>result<span style="color: #4f97d7;">)</span> - -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Destroy the reservation, uncomment when needed</span> -<span style="color: #2aa1ae; background-color: #292e34;">##</span> -<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> - -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">provider.destroy()</span> -</pre> -</div> - -<p> -Now, let's visualize the network traffic in real-time ! -</p> -<div class="note"> -<p> -Usually I follow this to access services running inside Grid'5000: -<a href="https://discovery.gitlabpages.inria.fr/enoslib/tutorials/grid5000.html#accessing-http-services-inside-grid-5000">https://discovery.gitlabpages.inria.fr/enoslib/tutorials/grid5000.html#accessing-http-services-inside-grid-5000</a>. -</p> - - -<p> -Today you can just create a tunnel like this (from your local machine). -</p> - -<div class="org-src-container"> -<pre class="src src-bash"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Adapt the node names with the node where grafana (the UI) has been installed</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Replace <login> by your Grid'5000 login</span> -$<span style="color: #7590db;">yourmachine</span>: ssh -NL <span style="color: #a45bad;">3000:paravance-16.rennes.grid5000.fr:3000</span> <login>@access.grid5000.fr - -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">point your browser to localhost:3000</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">username/mdp: admin/admin</span> -</pre> -</div> - -</div> - -<p> -Part of the experimenter work also consists in analysing the data. Here it -corresponds in writing the right request to monitor the traffic (check the -Fig. <a href="#orga4a34ec">1</a>). You should be able to visualize such a thing (after a bit -of point and clicks). -</p> - - -<div id="orga4a34ec" class="figure"> -<p><a href="figs/iperf3.png" width="100%" style="border:1px solid black;"><img src="figs/iperf3.png" alt="iperf3.png" width="100%" style="border:1px solid black;" /></a> -</p> -<p><span class="figure-number">Figure 1: </span>iperf3 / monitoring</p> -</div> -</div> -</div> - - -<div id="outline-container-org830e31f" class="outline-3"> -<h3 id="org830e31f"><span class="section-number-3">4.3</span> Discussion</h3> -<div class="outline-text-3" id="text-4-3"> -<p> -So, far this seems (at least for me) very handy. But there might be some problems in our setup: -</p> <ul class="org-ul"> -<li>we aren't isolated from the other users</li> -<li>we aren't isolated from ourself in the sense that the monitoring stack generates its own -network traffic (yes, this is negligible in our case)</li> +<li>First tutorial: <a href="./tuto1/index.html">./tuto1/index.html</a></li> +<li>Second tutorial: <a href="./tuto2/index.html">./tuto2/index.html</a></li> </ul> - -<p> -Sometimes it's desirable to have the following setup (see Fig. <a href="#orgf90cb97">2</a>). -</p> - - -<div id="orgf90cb97" class="figure"> -<p><a href="figs/skydive_enoslib.png"><img src="figs/skydive_enoslib.png" alt="skydive_enoslib.png" /></a> -</p> -<p><span class="figure-number">Figure 2: </span>nodes are using two network interfaces. Monitoring traffic and benchmark traffic are separated.</p> -</div> -</div> -</div> - -<div id="outline-container-org5f35d8c" class="outline-3"> -<h3 id="org5f35d8c"><span class="section-number-3">4.4</span> A bit better approach</h3> -<div class="outline-text-3" id="text-4-4"> -<p> -Analyse/Understand the following script <a href="exercices/iperf3_better.py">exercices/iperf3_better.py</a> -Launch it. -</p> - -<div class="note"> -<p> -On Grid'5000, using the secondary interfaces requires to <b>deploy</b> the nodes: -an new OS will be installed on your nodes. This will give you full control on -the physical machine (root access). This might be longer to run the -experiment due to this deployment phase. -</p> - -</div> -</div> -</div> - -<div id="outline-container-orgdddf696" class="outline-3"> -<h3 id="orgdddf696"><span class="section-number-3">4.5</span> Ninja level</h3> -<div class="outline-text-3" id="text-4-5"> -<p> -Add the <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html#skydive">Skydive</a> service to your deployment. -It should be accessible on the port <code>8082</code> of the analyzer node. You should -get something like Fig. <a href="#orgf90cb97">2</a>. -</p> -</div> -</div> - -<div id="outline-container-org1193557" class="outline-3"> -<h3 id="org1193557"><span class="section-number-3">4.6</span> Some references</h3> -<div class="outline-text-3" id="text-4-6"> -<ul class="org-ul"> -<li>Services: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html</a></li> -</ul> -</div> -</div> -</div> - -<div id="outline-container-orgf965b96" class="outline-2"> -<h2 id="orgf965b96"><span class="section-number-2">5</span> Providers: to replicate your experiment</h2> -<div class="outline-text-2" id="text-5"> -<div class="note"> -<p> -The resources that are used for your experiment are acquired through a -provider. Providers are a mean to decouple the infrastructure code (the code -that gets the resources) from the code that runs the experiment. Changing the -provider allows to replicate the experiment on another testbed. -</p> - -</div> - -<p> -Originally it was used to iterate on the code locally (using the Vagrant -provider) and to only test on Grid'5000 when necessary. -</p> - -<p> -We now have couple of providers that you may picked or mixed. -</p> -</div> - -<div id="outline-container-orgad471c7" class="outline-3"> -<h3 id="orgad471c7"><span class="section-number-3">5.1</span> iperf3 on virtual machines on Grid'5000</h3> -<div class="outline-text-3" id="text-5-1"> -<p> -We'll adapt the initial iperf3 example to use virtual machines instead of -bare-metal machine. -</p> - -<p> -Note that: -</p> - -<ul class="org-ul"> -<li>The configuration object is different</li> -<li>The experimentation logic is the same</li> -<li>Some part have been rewritten using modules (see later in the dedicated section).</li> -</ul> - -<div class="org-src-container"> -<pre class="src src-python"><span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.api <span style="color: #4f97d7; font-weight: bold;">import</span> play_on, wait_ssh -<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_vmong5k.provider <span style="color: #4f97d7; font-weight: bold;">import</span> VMonG5k -<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_vmong5k.configuration <span style="color: #4f97d7; font-weight: bold;">import</span> Configuration - -<span style="color: #4f97d7; font-weight: bold;">import</span> logging -<span style="color: #4f97d7; font-weight: bold;">import</span> os - -logging.basicConfig<span style="color: #4f97d7;">(</span>level=logging.DEBUG<span style="color: #4f97d7;">)</span> - -<span style="color: #7590db;">CLUSTER</span> = <span style="color: #2d9574;">"paravance"</span> - -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">path to the inventory</span> -<span style="color: #7590db;">inventory</span> = os.path.join<span style="color: #4f97d7;">(</span>os.getcwd<span style="color: #bc6ec5;">()</span>, <span style="color: #2d9574;">"hosts"</span><span style="color: #4f97d7;">)</span> - -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">claim the resources</span> -<span style="color: #7590db;">conf</span> = Configuration.from_settings<span style="color: #4f97d7;">(</span>job_name=<span style="color: #2d9574;">"enoslib_tutorial"</span>, gateway=<span style="color: #a45bad;">True</span><span style="color: #4f97d7;">)</span>\ - .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span>, - cluster=CLUSTER, - number=<span style="color: #a45bad;">1</span>, - flavour=<span style="color: #2d9574;">"large"</span><span style="color: #4f97d7;">)</span>\ - .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span>, - cluster=CLUSTER, - number=<span style="color: #a45bad;">1</span>, - flavour=<span style="color: #2d9574;">"medium"</span><span style="color: #4f97d7;">)</span>\ - .finalize<span style="color: #4f97d7;">()</span> - -<span style="color: #7590db;">provider</span> = VMonG5k<span style="color: #4f97d7;">(</span>conf<span style="color: #4f97d7;">)</span> - -<span style="color: #7590db;">roles</span>, <span style="color: #7590db;">networks</span> = provider.init<span style="color: #4f97d7;">()</span> -wait_ssh<span style="color: #4f97d7;">(</span>roles<span style="color: #4f97d7;">)</span> - -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Below is the experimentation logic</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">It installs the bare minimum to run iperf3</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">The machine with the role 'server' is used to run a iperf3 server</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">started in the background in a tmux</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">The machine with the role 'client' connects to that server</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Report is printed in stdout</span> -<span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> - -<span style="color: #4f97d7; font-weight: bold;">with</span> play_on<span style="color: #4f97d7;">(</span>roles=roles<span style="color: #4f97d7;">)</span> <span style="color: #4f97d7; font-weight: bold;">as</span> p: - p.apt<span style="color: #4f97d7;">(</span>name=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"iperf3"</span>, <span style="color: #2d9574;">"tmux"</span><span style="color: #bc6ec5;">]</span>, state=<span style="color: #2d9574;">"present"</span><span style="color: #4f97d7;">)</span> - -<span style="color: #4f97d7; font-weight: bold;">with</span> play_on<span style="color: #4f97d7;">(</span>pattern_hosts=<span style="color: #2d9574;">"server"</span>, roles=roles<span style="color: #4f97d7;">)</span> <span style="color: #4f97d7; font-weight: bold;">as</span> p: - p.shell<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"tmux new-session -d 'exec iperf3 -s'"</span><span style="color: #4f97d7;">)</span> - -<span style="color: #4f97d7; font-weight: bold;">with</span> play_on<span style="color: #4f97d7;">(</span>pattern_hosts=<span style="color: #2d9574;">"client"</span>, roles=roles<span style="color: #4f97d7;">)</span> <span style="color: #4f97d7; font-weight: bold;">as</span> p: - p.shell<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"iperf3 -c {server.address} -t 30"</span><span style="color: #4f97d7;">)</span> - -<span style="color: #4f97d7; font-weight: bold;">with</span> play_on<span style="color: #4f97d7;">(</span>pattern_hosts=<span style="color: #2d9574;">"client"</span>, roles=roles<span style="color: #4f97d7;">)</span> <span style="color: #4f97d7; font-weight: bold;">as</span> p: - p.shell<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"iperf3 -c {server.address} -t 30 --logfile iperf3.out"</span><span style="color: #4f97d7;">)</span> - p.fetch<span style="color: #4f97d7;">(</span>src=<span style="color: #2d9574;">"iperf3.out"</span>, dest=<span style="color: #2d9574;">"iperf3.out"</span><span style="color: #4f97d7;">)</span> -</pre> -</div> - -<p> -Using module using the <code>play_on</code> context manager does not bring back the -results of the commands. Iperf3 let's you write the result of the command on -a file. We just need to scp the file back to our local machine using the -<code>fetch</code> module. -</p> -</div> -</div> - - -<div id="outline-container-org08faf88" class="outline-3"> -<h3 id="org08faf88"><span class="section-number-3">5.2</span> References</h3> -<div class="outline-text-3" id="text-5-2"> -<ul class="org-ul"> -<li>Doc: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html</a></li> -<li>Sources: <a href="https://gitlab.inria.fr/discovery/enoslib/tree/v4.8.1/enoslib/infra">https://gitlab.inria.fr/discovery/enoslib/tree/v4.8.1/enoslib/infra</a></li> -</ul> -</div> -</div> -</div> - - -<div id="outline-container-org56f9c08" class="outline-2"> -<h2 id="org56f9c08"><span class="section-number-2">6</span> Variables in EnOSlib</h2> -<div class="outline-text-2" id="text-6"> -<p> -Learn how to get 2 nodes from Grid'5000 and start launching remote commands. -</p> -</div> - -<div id="outline-container-org2281689" class="outline-3"> -<h3 id="org2281689"><span class="section-number-3">6.1</span> Discover the <code>run</code> command and its variants</h3> -<div class="outline-text-3" id="text-6-1"> -<p> -Before proceeding you can add this util function to your code. It is only -used to pretty print a python dictionnary. -</p> -<div class="org-src-container"> -<pre class="src src-python"><span style="color: #4f97d7; font-weight: bold;">def</span> <span style="color: #bc6ec5; font-weight: bold;">pprint</span><span style="color: #4f97d7;">(</span>d<span style="color: #4f97d7;">)</span>: - <span style="color: #4f97d7; font-weight: bold;">import</span> json - <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>json.dumps<span style="color: #bc6ec5;">(</span>d, indent=<span style="color: #a45bad;">4</span><span style="color: #bc6ec5;">)</span><span style="color: #4f97d7;">)</span> -</pre> -</div> - -<p> -And use the <code>enoslib.api.run</code> function -</p> -<div class="org-src-container"> -<pre class="src src-python"><span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">---</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Using run</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">--------------------------------------------------------------------</span> -<span style="color: #7590db;">result</span> = run<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"ping -c 5 {server.address}"</span>, roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span><span style="color: #4f97d7;">)</span> -pprint<span style="color: #4f97d7;">(</span>result<span style="color: #4f97d7;">)</span> -</pre> -</div> - -<p> -Or the <code>enoslib.api.run_command</code> function -</p> -<div class="org-src-container"> -<pre class="src src-python"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">---</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Using run_command 1/2</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">--------------------------------------------------------------------</span> -<span style="color: #7590db;">result</span> = run_command<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"ping -c 5 {server.address}"</span>, - pattern_hosts=<span style="color: #2d9574;">"client"</span>, - roles=roles<span style="color: #4f97d7;">)</span> -pprint<span style="color: #4f97d7;">(</span>result<span style="color: #4f97d7;">)</span> -</pre> -</div> - -<div class="note"> -<p> -<code>enoslib.api.run</code> is a specialisation of <code>enoslib.api.run_command</code>. -The latter let's you use <a href="https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html">some fancy patterns</a> to determine the list of hosts to run the command on. -</p> - -<p> -And yes, it uses Ansible behind the scene. -</p> - -</div> -</div> -</div> - -<div id="outline-container-orgd2c7291" class="outline-3"> -<h3 id="orgd2c7291"><span class="section-number-3">6.2</span> Advanced usages</h3> -<div class="outline-text-3" id="text-6-2"> -<div class="note"> -<p> -For all the remote interactions, EnOSlib relies on <a href="https://docs.ansible.com/ansible/latest/index.html">Ansible</a>. Ansible -has it own variables management system. -For instance the task <code>Gather Facts</code> at the beginning of the previous tasks -gathers informations about all/some remote hosts and store them in the -Ansible management system. -</p> - -</div> - -<p> -Let's see what Ansible is gathering about the hosts: -</p> - -<div class="org-src-container"> -<pre class="src src-python"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">---</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Gather facts</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">--------------------------------------------------------------------</span> -<span style="color: #7590db;">result</span> = gather_facts<span style="color: #4f97d7;">(</span>roles=roles<span style="color: #4f97d7;">)</span> -pprint<span style="color: #4f97d7;">(</span>result<span style="color: #4f97d7;">)</span> -</pre> -</div> - -<div class="note"> -<p> -EnOSlib sits in between two worlds: the Python world and the Ansible -world. One common need is to pass a variables from one world to another. -</p> -<ul class="org-ul"> -<li><code>enoslib.api.gather_facts</code> is a way to get, in Python, the variables known -by Ansible about each host.</li> -<li><code>extra_vars</code> keyword argument of <code>enoslib.api.run</code> or <code>enoslib.api.run_command</code> will -pass variables from Python world to Ansible world (global variable)</li> -<li>Injecting a key/value in a <code>Host.extra</code> attribute will make the variable <code>key</code> available to Ansible. -This makes the variables Host specific.</li> -</ul> - -</div> - -<p> -The following inject a global variable in the Ansible world -</p> -<div class="org-src-container"> -<pre class="src src-python"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">---</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Passing a variable to the Ansible World using a global level variable</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">--------------------------------------------------------------------</span> -<span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> -<span style="color: #7590db;">extra_vars</span>=<span style="color: #4f97d7;">{</span><span style="color: #2d9574;">"server_ip"</span>: server.address<span style="color: #4f97d7;">}</span> -<span style="color: #7590db;">result</span> = run<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"ping -c 5 {{ server_ip }}"</span>, roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span>, extra_vars=extra_vars<span style="color: #4f97d7;">)</span> -</pre> -</div> -</div> -</div> - -<div id="outline-container-orgd78a6d8" class="outline-3"> -<h3 id="orgd78a6d8"><span class="section-number-3">6.3</span> Ninja level</h3> -<div class="outline-text-3" id="text-6-3"> -<p> -The following is valid and inject in the <code>client</code> host a specific variable to -keep track of the server IP. -</p> - -<div class="org-src-container"> -<pre class="src src-python"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">---</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Passing a variable to the Ansible World using a host level variable</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">--------------------------------------------------------------------</span> -<span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> -<span style="color: #7590db;">client</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> -client.extra.update<span style="color: #4f97d7;">(</span>server_ip=server.address<span style="color: #4f97d7;">)</span> -<span style="color: #7590db;">result</span> = run<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"ping -c 5 {{ server_ip }}"</span>, roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span><span style="color: #4f97d7;">)</span> -</pre> -</div> - -<div class="note"> -<p> -Host level variables are interesting to introduce some dissymetry between -hosts while still using one single command to reach all of them. -</p> - -</div> - -<div class="question"> -<p> -How to perform simultaneously the ping to the other machine in calling only -once <code>run</code> or <code>run_command</code> and using host level variables? -</p> - -</div> - -<div class="question"> -<p> -We'd like to create 5 <code>server</code> machines and 5 <code>client</code> machines and start 5 -<b>parallel</b> streams of data using <code>iperf3</code>. To answer this we'll need to learn -a bit more on how variables are handled in EnOSlib. -</p> - -</div> -</div> -</div> - -<div id="outline-container-orge739be4" class="outline-3"> -<h3 id="orge739be4"><span class="section-number-3">6.4</span> Putting all together</h3> -<div class="outline-text-3" id="text-6-4"> -<p> -Access the full file: <a href="exercices/run.py">exercices/run.py</a> -</p> -</div> -</div> - -<div id="outline-container-org5dafa08" class="outline-3"> -<h3 id="org5dafa08"><span class="section-number-3">6.5</span> Some references</h3> -<div class="outline-text-3" id="text-6-5"> -<ul class="org-ul"> -<li>G5k configuration schema: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html#g5k-schema">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html#g5k-schema</a></li> -<li>API Reference: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html</a></li> -</ul> -</div> -</div> -</div> - -<div id="outline-container-orga167566" class="outline-2"> -<h2 id="orga167566"><span class="section-number-2">7</span> Modules: for safer remote actions</h2> -<div class="outline-text-2" id="text-7"> -<p> -In this section we'll discover the idiomatic way of managing resources on the -remote hosts. A resource can be anything: a user, a file, a line in a file, a -repo on Gitlab, a firewall rule … -</p> -</div> - - -<div id="outline-container-orgc30170a" class="outline-3"> -<h3 id="orgc30170a"><span class="section-number-3">7.1</span> Idempotency</h3> -<div class="outline-text-3" id="text-7-1"> -<p> -Let's assume you want to create a user (<code>foo</code>). With the <code>run_command</code> this would look like: -</p> - -<div class="org-src-container"> -<pre class="src src-python">run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"useradd -m foo"</span>, roles=role<span style="color: #4f97d7;">)</span> -</pre> -</div> - -<p> -The main issue with this code is that it is not <b>idempotent</b>. Running it once -will applied the effect (create the user). But, as soon as the user exist in -the system, this will raise an error. -</p> -</div> -</div> - -<div id="outline-container-org334a244" class="outline-3"> -<h3 id="org334a244"><span class="section-number-3">7.2</span> One reason why idempotency is important</h3> -<div class="outline-text-3" id="text-7-2"> -<p> -Let's consider the following snippet (mispelling the second command is intentional) -</p> -<div class="org-src-container"> -<pre class="src src-python">run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"useradd -m foo"</span>, roles=role<span style="color: #4f97d7;">)</span> -run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"mkdirz plop"</span><span style="color: #4f97d7;">)</span> -</pre> -</div> -<p> -Executing the above leads the system with the user <code>foo</code> created but the the -directory <code>plop</code> not created since the second command fails. -</p> - -<p> -So what you want to do is to fix the second command and re-run the snippet again. -But, you can't do that because <code>useradd</code> isn't idempotent. -</p> -</div> -</div> - -<div id="outline-container-orgcf77118" class="outline-3"> -<h3 id="orgcf77118"><span class="section-number-3">7.3</span> Idempotency trick</h3> -<div class="outline-text-3" id="text-7-3"> -<p> -One easy solution is to protect your call to non idempotent commands with -some ad'hoc tricks -</p> - -<p> -Here it can look like this: -</p> - -<div class="org-src-container"> -<pre class="src src-python">run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"id foo || useradd -m foo"</span>, roles=role<span style="color: #4f97d7;">)</span> -run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"mkdir -p plop"</span><span style="color: #4f97d7;">)</span> -</pre> -</div> - -<p> -<b>What's wrong with that</b> -</p> - -<ul class="org-ul"> -<li>The trick depends on the command</li> -<li>Re-reading the code is more complex: the code focus on the <b><b>how</b></b> not the <b><b>what</b></b></li> -</ul> -</div> -</div> - -<div id="outline-container-orgcaa5aa0" class="outline-3"> -<h3 id="orgcaa5aa0"><span class="section-number-3">7.4</span> General idempotency</h3> -<div class="outline-text-3" id="text-7-4"> -<p> -The idiomatic solution is to use modules (inherited from the Ansible -Modules). The modules are specified in a <b>declarative</b> way and they ensure -<b>idempotency</b> for most of them. -</p> - -<p> -So rewriting the example with modules looks like: -</p> -<div class="org-src-container"> -<pre class="src src-python"><span style="color: #4f97d7; font-weight: bold;">with</span> play_on<span style="color: #4f97d7;">(</span>roles=roles<span style="color: #4f97d7;">)</span> <span style="color: #4f97d7; font-weight: bold;">as</span> p: - p.user<span style="color: #4f97d7;">(</span>name=<span style="color: #2d9574;">"foo"</span>, state=<span style="color: #2d9574;">"present"</span>, create_home=<span style="color: #2d9574;">"yes"</span><span style="color: #4f97d7;">)</span> - p.<span style="color: #4f97d7;">file</span><span style="color: #4f97d7;">(</span>name=<span style="color: #2d9574;">"plop"</span>, state=<span style="color: #2d9574;">"directory"</span><span style="color: #4f97d7;">)</span> -</pre> -</div> - -<p> -<code>enoslib.api.play_on</code> is the entry point to the module system. -</p> - -<p> -You can run this code as many times as you want without any error. You'll -eventually find one user <code>foo</code> and one directory <code>plop</code> in your target -systems. -</p> - -<p> -They are more than 2500 modules: <a href="https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html">https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html</a> -</p> - -<p> -If you can't find what you want you must know that: -</p> -<ul class="org-ul"> -<li>Writing your own module is possible</li> -<li>Falling back to the idempotency trick is reasonable</li> -</ul> -</div> -</div> -</div> - -<div id="outline-container-orgb39fe8f" class="outline-2"> -<h2 id="orgb39fe8f"><span class="section-number-2">8</span> Tasks: to organize your experiment</h2> -<div class="outline-text-2" id="text-8"> -<p> -To discover the Task API, head to <a href="https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html">https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html</a>. -</p> - -<p> -The examples are written for Vagrant but may be changed to whatever provider you like/have. -</p> - -<div class="question"> -<p> -Adapt the <code>iperf3</code> example to provide a command line -</p> -<ul class="org-ul"> -<li><p> -Either using G5k physical machines: -</p> -<div class="org-src-container"> -<pre class="src src-bash"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">deploy the dependencies of the experimentation using the G5k provider</span> -myperf g5k - -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">launch a performance measurement</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">ideally exposes all the iperf3 client options there ;)</span> -myperf bench -t <span style="color: #a45bad;">120</span> - -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Backup the reports / influxdb database</span> -myperf backup -</pre> -</div> - -<p> -myperf destroy -</p></li> - -<li><p> -Either using the virtual machines on Grid'5000: -</p> -<div class="org-src-container"> -<pre class="src src-bash"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">deploy the dependencies of the experimentation using the G5k provider</span> -myperf vm5k - -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Subsequent command line should be the same as above</span> -<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">enjoy :)</span> -</pre> -</div></li> -</ul> - -</div> -</div> -</div> </div> <div id="postamble" class="status"> <p class="author">Author: Matthieu Simonin</p> -<p class="date">Created: 2019-11-15 ven. 14:14</p> +<p class="date">Created: 2019-11-29 ven. 00:28</p> <p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p> </div> </body> diff --git a/index.org b/index.org index 777996d..c3c9d6c 100644 --- a/index.org +++ b/index.org @@ -4,425 +4,6 @@ #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="timeline.css" /> -#+MACRO: enoslib EnOSlib -#+MACRO: src_host https://gitlab.inria.fr/discovery/enoslib/blob/v4.8.1/enoslib/host.py#L8-14 -#+MACRO: doc_external_access https://discovery.gitlabpages.inria.fr/enoslib/tutorials/grid5000.html#accessing-http-services-inside-grid-5000 -#+MACRO: src_provider https://gitlab.inria.fr/discovery/enoslib/tree/v4.8.1/enoslib/infra -#+MACRO: doc_provider https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html -#+MACRO: doc_tasks https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html -#+MACRO: doc_g5k_schema https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html#g5k-schema -#+MACRO: doc_api https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html -#+MACRO: doc_services https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html - -* Foreword - -** Existing tools (Grid'5000) - - - {{{enoslib}}} falls under the **Experiment management tools** of the following - list: - https://www.grid5000.fr/w/Grid5000:Software - - - {{{enoslib}}} can target Grid'5000 but also other testbeds (Chameleon, local machines...) - - - {{{enoslib}}} provides high level constructs to help you with your experiments - -** EnOSlib quicktour - - - Documentation: https://discovery.gitlabpages.inria.fr/enoslib/index.html - - Source: https://gitlab.inria.fr/discovery/enoslib - - Reach us on: - + https://framateam.org/enoslib - + https://gitlab.inria.fr/discovery/enoslib/issues - -** Contributing - - *Before experimenting* - - - Tell us what your plans are: - + There might be already users doing similar thing - + There might be some missing/hidden pieces in the library you might need - - *While experimenting* - - - Write bug reports / ask questions - - Fix bugs / add your features - - *After experimenting* - - - Give your feedback - - Add yourself to the list: https://discovery.gitlabpages.inria.fr/enoslib/theyuseit.html - - -* Before you start - - #+begin_note - make sure you are familiar with the grid'5000 architecture. see section 1 & 2 of - https://www.grid5000.fr/w/Getting_Started. note that we won't do this tutorial - we'll prefer to use higher level tools for now. - #+end_note - -* Setup on Grid'5000 - - Connect to a Grid'5000 frontend of your choice (e.g rennes, nancy ...) - - - create a new directory to host all the scripts of the session - - bootstrap a new python3 virtualenv - - install {{{enoslib}}} and configure the access to the API - - #+BEGIN_SRC bash :noeval - $frontend: mkdir enoslib_seminar - $frontend: cd enoslib_seminar - $frontend: virtualenv --python=python3 venv - $frontend: source venv/bin/activate - $frontend(venv): pip install enoslib - $frontend(venv): echo ' - verify_ssl: False - ' > ~/.python-grid5000.yaml - #+END_SRC - -* Your first experiment on Grid'5000 - - Let's experiment with [[https://iperf.fr/][iperf3]]: a network bandwidth measuring tool. The goal is - to deploy a simple benchmark between two hosts. - - We'll also instrument the deployment in order to visualize in real-time the - network traffic between the hosts. Since this is super common, {{{enoslib}}} - exposes a /monitoring service/ that lets you deploy very quickly what is - needed. - -** First iteration - - We consider the following script - #+INCLUDE: exercices/iperf3.py src python - - #+BEGIN_question - How fast is the network between the nodes you have chosen ? - #+END_question - - #+BEGIN_note - Before moving to the next questions, you'll need to clean the reservation. - You can either uncomment the line ~provider.destroy()~ at the end of the script. - You can also do it manually using the low-level ~oarstat~ / ~oardel~ tools. - - #+BEGIN_SRC bash :noeval - # get you reservation id - $frontend: oarstat -u - # release the resources / kill the reservation - $frontend: oardel <the id of the reservation goes here> - #+END_SRC - #+END_note - - #+BEGIN_question - Can you adapt the script so that: - 1. The two nodes are in two different cluster in the same site ? - 2. The two nodes are in two different sites ? - #+END_question - - -** Let's observe in real-time what is happening - - #+BEGIN_note - Make sure you have cleaned your previous reservations. - #+END_note - - The following script installs a monitoring stack on your nodes. This is almost - the same script as before except the lines corresponding to the configuration - of the monitoring stack. - - #+INCLUDE: exercices/iperf3_monitoring.py src python - - Now, let's visualize the network traffic in real-time ! - #+BEGIN_note - Usually I follow this to access services running inside Grid'5000: - {{{doc_external_access}}}. - - - Today you can just create a tunnel like this (from your local machine). - - #+BEGIN_SRC bash :noeval - # Adapt the node names with the node where grafana (the UI) has been installed - # Replace <login> by your Grid'5000 login - $yourmachine: ssh -NL 3000:paravance-16.rennes.grid5000.fr:3000 <login>@access.grid5000.fr - - # point your browser to localhost:3000 - # username/mdp: admin/admin - #+END_SRC - - #+END_note - - Part of the experimenter work also consists in analysing the data. Here it - corresponds in writing the right request to monitor the traffic (check the - Fig. [[fig:iperf3]]). You should be able to visualize such a thing (after a bit - of point and clicks). - - #+CAPTION: iperf3 / monitoring - #+NAME: fig:iperf3 - #+ATTR_HTML: :width 100% :style border:1px solid black; - [[file:figs/iperf3.png][file:figs/iperf3.png]] - - -** Discussion - - So, far this seems (at least for me) very handy. But there might be some problems in our setup: - - we aren't isolated from the other users - - we aren't isolated from ourself in the sense that the monitoring stack generates its own - network traffic (yes, this is negligible in our case) - - Sometimes it's desirable to have the following setup (see Fig. [[fig:two_networks]]). - - #+CAPTION: nodes are using two network interfaces. - #+CAPTION: Monitoring traffic and benchmark traffic are separated. - #+NAME: fig:two_networks - [[file:figs/skydive_enoslib.png][file:figs/skydive_enoslib.png]] - -** A bit better approach - - Analyse/Understand the following script [[file:exercices/iperf3_better.py]] - Launch it. - - #+BEGIN_note - On Grid'5000, using the secondary interfaces requires to *deploy* the nodes: - an new OS will be installed on your nodes. This will give you full control on - the physical machine (root access). This might be longer to run the - experiment due to this deployment phase. - #+END_note - -** Ninja level - - Add the [[https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html#skydive][Skydive]] service to your deployment. - It should be accessible on the port ~8082~ of the analyzer node. You should - get something like Fig. [[fig:two_networks]]. - -** Some references - - - Services: {{{doc_services}}} - -* Providers: to replicate your experiment - - #+BEGIN_note - The resources that are used for your experiment are acquired through a - provider. Providers are a mean to decouple the infrastructure code (the code - that gets the resources) from the code that runs the experiment. Changing the - provider allows to replicate the experiment on another testbed. - #+END_note - - Originally it was used to iterate on the code locally (using the Vagrant - provider) and to only test on Grid'5000 when necessary. - - We now have couple of providers that you may picked or mixed. - -** iperf3 on virtual machines on Grid'5000 - - We'll adapt the initial iperf3 example to use virtual machines instead of - bare-metal machine. - - Note that: - - - The configuration object is different - - The experimentation logic is the same - - Some part have been rewritten using modules (see later in the dedicated section). - - #+INCLUDE: exercices/iperf3_vms.py src python - - Using module using the ~play_on~ context manager does not bring back the - results of the commands. Iperf3 let's you write the result of the command on - a file. We just need to scp the file back to our local machine using the - ~fetch~ module. - - -** References - - - Doc: {{{doc_provider}}} - - Sources: {{{src_provider}}} - - -* Variables in {{{enoslib}}} - - Learn how to get 2 nodes from Grid'5000 and start launching remote commands. - -** Discover the ~run~ command and its variants - - Before proceeding you can add this util function to your code. It is only - used to pretty print a python dictionnary. - #+INCLUDE: exercices/run.py :lines "35-39" src python - - And use the ~enoslib.api.run~ function - #+INCLUDE: exercices/run.py :lines "40-47" src python - - Or the ~enoslib.api.run_command~ function - #+INCLUDE: exercices/run.py :lines "48-56" src python - - #+BEGIN_note - ~enoslib.api.run~ is a specialisation of ~enoslib.api.run_command~. - The latter let's you use [[https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html][some fancy patterns]] to determine the list of hosts to run the command on. - - And yes, it uses Ansible behind the scene. - #+END_note - -** Advanced usages - - #+BEGIN_note - For all the remote interactions, {{{enoslib}}} relies on [[https://docs.ansible.com/ansible/latest/index.html][Ansible]]. Ansible - has it own variables management system. - For instance the task ~Gather Facts~ at the beginning of the previous tasks - gathers informations about all/some remote hosts and store them in the - Ansible management system. - #+END_note - - Let's see what Ansible is gathering about the hosts: - - #+INCLUDE: exercices/run.py :lines "58-65" src python - - #+BEGIN_note - {{{enoslib}}} sits in between two worlds: the Python world and the Ansible - world. One common need is to pass a variables from one world to another. - - ~enoslib.api.gather_facts~ is a way to get, in Python, the variables known - by Ansible about each host. - - ~extra_vars~ keyword argument of ~enoslib.api.run~ or ~enoslib.api.run_command~ will - pass variables from Python world to Ansible world (global variable) - - Injecting a key/value in a ~Host.extra~ attribute will make the variable ~key~ available to Ansible. - This makes the variables Host specific. - #+END_note - - The following inject a global variable in the Ansible world - #+INCLUDE: exercices/run.py :lines "65-71" src python - -** Ninja level - - The following is valid and inject in the ~client~ host a specific variable to - keep track of the server IP. - - #+INCLUDE: exercices/run.py :lines "73-81" src python - - #+BEGIN_note - Host level variables are interesting to introduce some dissymetry between - hosts while still using one single command to reach all of them. - #+END_note - - #+BEGIN_question - How to perform simultaneously the ping to the other machine in calling only - once ~run~ or ~run_command~ and using host level variables? - #+END_question - - #+BEGIN_question - We'd like to create 5 ~server~ machines and 5 ~client~ machines and start 5 - *parallel* streams of data using ~iperf3~. To answer this we'll need to learn - a bit more on how variables are handled in {{{enoslib}}}. - #+END_question - -** Putting all together - Access the full file: [[file:exercices/run.py]] - -** Some references - - - G5k configuration schema: {{{doc_g5k_schema}}} - - API Reference: {{{doc_api}}} - -* Modules: for safer remote actions - - In this section we'll discover the idiomatic way of managing resources on the - remote hosts. A resource can be anything: a user, a file, a line in a file, a - repo on Gitlab, a firewall rule ... - - -** Idempotency - - Let's assume you want to create a user (~foo~). With the ~run_command~ this would look like: - - #+BEGIN_SRC python :noeval - run_command("useradd -m foo", roles=role) - #+END_SRC - - The main issue with this code is that it is not *idempotent*. Running it once - will applied the effect (create the user). But, as soon as the user exist in - the system, this will raise an error. - -** One reason why idempotency is important - - Let's consider the following snippet (mispelling the second command is intentional) - #+BEGIN_SRC python :noeval - run_command("useradd -m foo", roles=role) - run_command("mkdirz plop") - #+END_SRC - Executing the above leads the system with the user ~foo~ created but the the - directory ~plop~ not created since the second command fails. - - So what you want to do is to fix the second command and re-run the snippet again. - But, you can't do that because ~useradd~ isn't idempotent. - -** Idempotency trick - - One easy solution is to protect your call to non idempotent commands with - some ad'hoc tricks - - Here it can look like this: - - #+BEGIN_SRC python :noeval - run_command("id foo || useradd -m foo", roles=role) - run_command("mkdir -p plop") - #+END_SRC - - *What's wrong with that* - - - The trick depends on the command - - Re-reading the code is more complex: the code focus on the **how** not the **what** - -** General idempotency - - The idiomatic solution is to use modules (inherited from the Ansible - Modules). The modules are specified in a *declarative* way and they ensure - *idempotency* for most of them. - - So rewriting the example with modules looks like: - #+BEGIN_SRC python :noeval - with play_on(roles=roles) as p: - p.user(name="foo", state="present", create_home="yes") - p.file(name="plop", state="directory") - #+END_SRC - - ~enoslib.api.play_on~ is the entry point to the module system. - - You can run this code as many times as you want without any error. You'll - eventually find one user ~foo~ and one directory ~plop~ in your target - systems. - - They are more than 2500 modules: https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html - - If you can't find what you want you must know that: - - Writing your own module is possible - - Falling back to the idempotency trick is reasonable - -* Tasks: to organize your experiment - - To discover the Task API, head to {{{doc_tasks}}}. - - The examples are written for Vagrant but may be changed to whatever provider you like/have. - - #+BEGIN_question - Adapt the ~iperf3~ example to provide a command line - - Either using G5k physical machines: - #+BEGIN_SRC bash - # deploy the dependencies of the experimentation using the G5k provider - myperf g5k - - # launch a performance measurement - # ideally exposes all the iperf3 client options there ;) - myperf bench -t 120 - - # Backup the reports / influxdb database - myperf backup - #+END_SRC - - # Destroy the ressources on Grid'5000 - myperf destroy - - - Either using the virtual machines on Grid'5000: - #+BEGIN_SRC bash - # deploy the dependencies of the experimentation using the G5k provider - myperf vm5k - - # Subsequent command line should be the same as above - # enjoy :) - #+END_SRC - #+END_question +- First tutorial: [[./tuto1/index.html]] +- Second tutorial: [[./tuto2/index.html]] diff --git a/tuto1/exercices/.#00_setup.sh b/tuto1/exercices/.#00_setup.sh new file mode 120000 index 0000000..7c7e5b3 --- /dev/null +++ b/tuto1/exercices/.#00_setup.sh @@ -0,0 +1 @@ +msimonin@talouette.27523:1570544298 \ No newline at end of file diff --git a/exercices/iperf3.py b/tuto1/exercices/iperf3.py similarity index 100% rename from exercices/iperf3.py rename to tuto1/exercices/iperf3.py diff --git a/exercices/iperf3_5vms.py b/tuto1/exercices/iperf3_5vms.py similarity index 100% rename from exercices/iperf3_5vms.py rename to tuto1/exercices/iperf3_5vms.py diff --git a/exercices/iperf3_better.py b/tuto1/exercices/iperf3_better.py similarity index 100% rename from exercices/iperf3_better.py rename to tuto1/exercices/iperf3_better.py diff --git a/exercices/iperf3_monitoring.py b/tuto1/exercices/iperf3_monitoring.py similarity index 100% rename from exercices/iperf3_monitoring.py rename to tuto1/exercices/iperf3_monitoring.py diff --git a/exercices/iperf3_vms.py b/tuto1/exercices/iperf3_vms.py similarity index 100% rename from exercices/iperf3_vms.py rename to tuto1/exercices/iperf3_vms.py diff --git a/tuto1/exercices/iperfs_xvms.py b/tuto1/exercices/iperfs_xvms.py new file mode 100644 index 0000000..65e478b --- /dev/null +++ b/tuto1/exercices/iperfs_xvms.py @@ -0,0 +1,59 @@ +from enoslib.api import play_on, wait_ssh, ensure_python3 +from enoslib.infra.enos_vmong5k.provider import VMonG5k +from enoslib.infra.enos_vmong5k.configuration import Configuration + +import logging +import os + +logging.basicConfig(level=logging.DEBUG) + +CLUSTER = "paravance" +NB_VMS = 4 + +def bench(nb_vms: int) -> None: + # claim the resources + conf = Configuration.from_settings(job_name="enoslib_tutorial_", gateway=True)\ + .add_machine(roles=["server"], + cluster=CLUSTER, + number=nb_vms, + flavour="tiny")\ + .add_machine(roles=["client"], + cluster=CLUSTER, + number=nb_vms, + flavour="tiny")\ + .finalize() + + provider = VMonG5k(conf) + + roles, networks = provider.init() + wait_ssh(roles) + + + servers = roles["server"] + clients = roles["client"] + + for s, c in zip(servers, clients): + c.extra.update(target=s.address) + + # Install python3 and make it the default + ensure_python3(roles=roles) + + with play_on(roles=roles) as p: + p.apt_repository(repo="deb http://deb.debian.org/debian stretch main contrib non-free", + state="present") + p.apt(name=["flent", "netperf", "python3-setuptools", "python3-matplotlib", "tmux"], + state="present") + + with play_on(pattern_hosts="server", roles=roles) as p: + p.shell("tmux new-session -d 'exec netperf'") + + with play_on(pattern_hosts="client", roles=roles) as p: + p.shell("flent tcp_upload -p totals " + + "-l 60 " + + "-H {{ target }} " + + f"-t 'tcp_upload_{nb_vms}' " + + f"-o tcp_upload_{nb_vms}.png", display_name=f"Benchmarkings with {nb_vms} vms") + p.fetch(src=f"tcp_upload_{nb_vms}.png", dest=f"result_{nb_vms}") + +for nb_vms in [1, 4, 8, 16]: + bench(nb_vms) diff --git a/exercices/run.py b/tuto1/exercices/run.py similarity index 100% rename from exercices/run.py rename to tuto1/exercices/run.py diff --git a/tuto1/exercices/test.py b/tuto1/exercices/test.py new file mode 100644 index 0000000..6d47d35 --- /dev/null +++ b/tuto1/exercices/test.py @@ -0,0 +1,11 @@ +from enoslib.api import play_on +from enoslib.host import Host + +import logging + + +logging.basicConfig(level=logging.DEBUG) + +roles = {"all": [Host("localhost", extra={"ansible_connection": "local"})]} +with play_on(roles=roles) as p: + p.shell("ls {{ ansible_connection }}") diff --git a/figs/iperf3.png b/tuto1/figs/iperf3.png similarity index 100% rename from figs/iperf3.png rename to tuto1/figs/iperf3.png diff --git a/figs/skydive_enoslib.png b/tuto1/figs/skydive_enoslib.png similarity index 100% rename from figs/skydive_enoslib.png rename to tuto1/figs/skydive_enoslib.png diff --git a/tuto1/index.html b/tuto1/index.html new file mode 100644 index 0000000..f69b6ef --- /dev/null +++ b/tuto1/index.html @@ -0,0 +1,1287 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> +<head> +<!-- 2019-11-15 ven. 14:14 --> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1" /> +<title>Distributed experiments on Grid'5000 … and beyond !</title> +<meta name="generator" content="Org mode" /> +<meta name="author" content="Matthieu Simonin" /> +<style type="text/css"> + <!--/*--><![CDATA[/*><!--*/ + .title { text-align: center; + margin-bottom: .2em; } + .subtitle { text-align: center; + font-size: medium; + font-weight: bold; + margin-top:0; } + .todo { font-family: monospace; color: red; } + .done { font-family: monospace; color: green; } + .priority { font-family: monospace; color: orange; } + .tag { background-color: #eee; font-family: monospace; + padding: 2px; font-size: 80%; font-weight: normal; } + .timestamp { color: #bebebe; } + .timestamp-kwd { color: #5f9ea0; } + .org-right { margin-left: auto; margin-right: 0px; text-align: right; } + .org-left { margin-left: 0px; margin-right: auto; text-align: left; } + .org-center { margin-left: auto; margin-right: auto; text-align: center; } + .underline { text-decoration: underline; } + #postamble p, #preamble p { font-size: 90%; margin: .2em; } + p.verse { margin-left: 3%; } + pre { + border: 1px solid #ccc; + box-shadow: 3px 3px 3px #eee; + padding: 8pt; + font-family: monospace; + overflow: auto; + margin: 1.2em; + } + pre.src { + position: relative; + overflow: visible; + padding-top: 1.2em; + } + pre.src:before { + display: none; + position: absolute; + background-color: white; + top: -10px; + right: 10px; + padding: 3px; + border: 1px solid black; + } + pre.src:hover:before { display: inline;} + /* Languages per Org manual */ + pre.src-asymptote:before { content: 'Asymptote'; } + pre.src-awk:before { content: 'Awk'; } + pre.src-C:before { content: 'C'; } + /* pre.src-C++ doesn't work in CSS */ + pre.src-clojure:before { content: 'Clojure'; } + pre.src-css:before { content: 'CSS'; } + pre.src-D:before { content: 'D'; } + pre.src-ditaa:before { content: 'ditaa'; } + pre.src-dot:before { content: 'Graphviz'; } + pre.src-calc:before { content: 'Emacs Calc'; } + pre.src-emacs-lisp:before { content: 'Emacs Lisp'; } + pre.src-fortran:before { content: 'Fortran'; } + pre.src-gnuplot:before { content: 'gnuplot'; } + pre.src-haskell:before { content: 'Haskell'; } + pre.src-hledger:before { content: 'hledger'; } + pre.src-java:before { content: 'Java'; } + pre.src-js:before { content: 'Javascript'; } + pre.src-latex:before { content: 'LaTeX'; } + pre.src-ledger:before { content: 'Ledger'; } + pre.src-lisp:before { content: 'Lisp'; } + pre.src-lilypond:before { content: 'Lilypond'; } + pre.src-lua:before { content: 'Lua'; } + pre.src-matlab:before { content: 'MATLAB'; } + pre.src-mscgen:before { content: 'Mscgen'; } + pre.src-ocaml:before { content: 'Objective Caml'; } + pre.src-octave:before { content: 'Octave'; } + pre.src-org:before { content: 'Org mode'; } + pre.src-oz:before { content: 'OZ'; } + pre.src-plantuml:before { content: 'Plantuml'; } + pre.src-processing:before { content: 'Processing.js'; } + pre.src-python:before { content: 'Python'; } + pre.src-R:before { content: 'R'; } + pre.src-ruby:before { content: 'Ruby'; } + pre.src-sass:before { content: 'Sass'; } + pre.src-scheme:before { content: 'Scheme'; } + pre.src-screen:before { content: 'Gnu Screen'; } + pre.src-sed:before { content: 'Sed'; } + pre.src-sh:before { content: 'shell'; } + pre.src-sql:before { content: 'SQL'; } + pre.src-sqlite:before { content: 'SQLite'; } + /* additional languages in org.el's org-babel-load-languages alist */ + pre.src-forth:before { content: 'Forth'; } + pre.src-io:before { content: 'IO'; } + pre.src-J:before { content: 'J'; } + pre.src-makefile:before { content: 'Makefile'; } + pre.src-maxima:before { content: 'Maxima'; } + pre.src-perl:before { content: 'Perl'; } + pre.src-picolisp:before { content: 'Pico Lisp'; } + pre.src-scala:before { content: 'Scala'; } + pre.src-shell:before { content: 'Shell Script'; } + pre.src-ebnf2ps:before { content: 'ebfn2ps'; } + /* additional language identifiers per "defun org-babel-execute" + in ob-*.el */ + pre.src-cpp:before { content: 'C++'; } + pre.src-abc:before { content: 'ABC'; } + pre.src-coq:before { content: 'Coq'; } + pre.src-groovy:before { content: 'Groovy'; } + /* additional language identifiers from org-babel-shell-names in + ob-shell.el: ob-shell is the only babel language using a lambda to put + the execution function name together. */ + pre.src-bash:before { content: 'bash'; } + pre.src-csh:before { content: 'csh'; } + pre.src-ash:before { content: 'ash'; } + pre.src-dash:before { content: 'dash'; } + pre.src-ksh:before { content: 'ksh'; } + pre.src-mksh:before { content: 'mksh'; } + pre.src-posh:before { content: 'posh'; } + /* Additional Emacs modes also supported by the LaTeX listings package */ + pre.src-ada:before { content: 'Ada'; } + pre.src-asm:before { content: 'Assembler'; } + pre.src-caml:before { content: 'Caml'; } + pre.src-delphi:before { content: 'Delphi'; } + pre.src-html:before { content: 'HTML'; } + pre.src-idl:before { content: 'IDL'; } + pre.src-mercury:before { content: 'Mercury'; } + pre.src-metapost:before { content: 'MetaPost'; } + pre.src-modula-2:before { content: 'Modula-2'; } + pre.src-pascal:before { content: 'Pascal'; } + pre.src-ps:before { content: 'PostScript'; } + pre.src-prolog:before { content: 'Prolog'; } + pre.src-simula:before { content: 'Simula'; } + pre.src-tcl:before { content: 'tcl'; } + pre.src-tex:before { content: 'TeX'; } + pre.src-plain-tex:before { content: 'Plain TeX'; } + pre.src-verilog:before { content: 'Verilog'; } + pre.src-vhdl:before { content: 'VHDL'; } + pre.src-xml:before { content: 'XML'; } + pre.src-nxml:before { content: 'XML'; } + /* add a generic configuration mode; LaTeX export needs an additional + (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */ + pre.src-conf:before { content: 'Configuration File'; } + + table { border-collapse:collapse; } + caption.t-above { caption-side: top; } + caption.t-bottom { caption-side: bottom; } + td, th { vertical-align:top; } + th.org-right { text-align: center; } + th.org-left { text-align: center; } + th.org-center { text-align: center; } + td.org-right { text-align: right; } + td.org-left { text-align: left; } + td.org-center { text-align: center; } + dt { font-weight: bold; } + .footpara { display: inline; } + .footdef { margin-bottom: 1em; } + .figure { padding: 1em; } + .figure p { text-align: center; } + .inlinetask { + padding: 10px; + border: 2px solid gray; + margin: 10px; + background: #ffffcc; + } + #org-div-home-and-up + { text-align: right; font-size: 70%; white-space: nowrap; } + textarea { overflow-x: auto; } + .linenr { font-size: smaller } + .code-highlighted { background-color: #ffff00; } + .org-info-js_info-navigation { border-style: none; } + #org-info-js_console-label + { font-size: 10px; font-weight: bold; white-space: nowrap; } + .org-info-js_search-highlight + { background-color: #ffff00; color: #000000; font-weight: bold; } + .org-svg { width: 90%; } + /*]]>*/--> +</style> +<link rel="stylesheet" type="text/css" href="timeline.css" /> +<script type="text/javascript"> +/* +@licstart The following is the entire license notice for the +JavaScript code in this tag. + +Copyright (C) 2012-2018 Free Software Foundation, Inc. + +The JavaScript code in this tag is free software: you can +redistribute it and/or modify it under the terms of the GNU +General Public License (GNU GPL) as published by the Free Software +Foundation, either version 3 of the License, or (at your option) +any later version. The code is distributed WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. + +As additional permission under GNU GPL version 3 section 7, you +may distribute non-source (e.g., minimized or compacted) forms of +that code without the copy of the GNU GPL normally required by +section 4, provided you include this license notice and a URL +through which recipients can access the Corresponding Source. + + +@licend The above is the entire license notice +for the JavaScript code in this tag. +*/ +<!--/*--><![CDATA[/*><!--*/ + function CodeHighlightOn(elem, id) + { + var target = document.getElementById(id); + if(null != target) { + elem.cacheClassElem = elem.className; + elem.cacheClassTarget = target.className; + target.className = "code-highlighted"; + elem.className = "code-highlighted"; + } + } + function CodeHighlightOff(elem, id) + { + var target = document.getElementById(id); + if(elem.cacheClassElem) + elem.className = elem.cacheClassElem; + if(elem.cacheClassTarget) + target.className = elem.cacheClassTarget; + } +/*]]>*///--> +</script> +</head> +<body> +<div id="content"> +<h1 class="title">Distributed experiments on Grid'5000 … and beyond !</h1> +<div id="table-of-contents"> +<h2>Table of Contents</h2> +<div id="text-table-of-contents"> +<ul> +<li><a href="#orgb1aa660">1. Foreword</a> +<ul> +<li><a href="#org33af631">1.1. Existing tools (Grid'5000)</a></li> +<li><a href="#org769cfcb">1.2. EnOSlib quicktour</a></li> +<li><a href="#org4a53df5">1.3. Contributing</a></li> +</ul> +</li> +<li><a href="#orgc7e91b9">2. Before you start</a></li> +<li><a href="#org782c78a">3. Setup on Grid'5000</a></li> +<li><a href="#org441c9dd">4. Your first experiment on Grid'5000</a> +<ul> +<li><a href="#orgf5c5450">4.1. First iteration</a></li> +<li><a href="#org993bcaf">4.2. Let's observe in real-time what is happening</a></li> +<li><a href="#org830e31f">4.3. Discussion</a></li> +<li><a href="#org5f35d8c">4.4. A bit better approach</a></li> +<li><a href="#orgdddf696">4.5. Ninja level</a></li> +<li><a href="#org1193557">4.6. Some references</a></li> +</ul> +</li> +<li><a href="#orgf965b96">5. Providers: to replicate your experiment</a> +<ul> +<li><a href="#orgad471c7">5.1. iperf3 on virtual machines on Grid'5000</a></li> +<li><a href="#org08faf88">5.2. References</a></li> +</ul> +</li> +<li><a href="#org56f9c08">6. Variables in EnOSlib</a> +<ul> +<li><a href="#org2281689">6.1. Discover the <code>run</code> command and its variants</a></li> +<li><a href="#orgd2c7291">6.2. Advanced usages</a></li> +<li><a href="#orgd78a6d8">6.3. Ninja level</a></li> +<li><a href="#orge739be4">6.4. Putting all together</a></li> +<li><a href="#org5dafa08">6.5. Some references</a></li> +</ul> +</li> +<li><a href="#orga167566">7. Modules: for safer remote actions</a> +<ul> +<li><a href="#orgc30170a">7.1. Idempotency</a></li> +<li><a href="#org334a244">7.2. One reason why idempotency is important</a></li> +<li><a href="#orgcf77118">7.3. Idempotency trick</a></li> +<li><a href="#orgcaa5aa0">7.4. General idempotency</a></li> +</ul> +</li> +<li><a href="#orgb39fe8f">8. Tasks: to organize your experiment</a></li> +</ul> +</div> +</div> + +<div id="outline-container-orgb1aa660" class="outline-2"> +<h2 id="orgb1aa660"><span class="section-number-2">1</span> Foreword</h2> +<div class="outline-text-2" id="text-1"> +</div> +<div id="outline-container-org33af631" class="outline-3"> +<h3 id="org33af631"><span class="section-number-3">1.1</span> Existing tools (Grid'5000)</h3> +<div class="outline-text-3" id="text-1-1"> +<ul class="org-ul"> +<li>EnOSlib falls under the <b><b>Experiment management tools</b></b> of the following +list: +<a href="https://www.grid5000.fr/w/Grid5000:Software">https://www.grid5000.fr/w/Grid5000:Software</a></li> + +<li>EnOSlib can target Grid'5000 but also other testbeds (Chameleon, local machines…)</li> + +<li>EnOSlib provides high level constructs to help you with your experiments</li> +</ul> +</div> +</div> + +<div id="outline-container-org769cfcb" class="outline-3"> +<h3 id="org769cfcb"><span class="section-number-3">1.2</span> EnOSlib quicktour</h3> +<div class="outline-text-3" id="text-1-2"> +<ul class="org-ul"> +<li>Documentation: <a href="https://discovery.gitlabpages.inria.fr/enoslib/index.html">https://discovery.gitlabpages.inria.fr/enoslib/index.html</a></li> +<li>Source: <a href="https://gitlab.inria.fr/discovery/enoslib">https://gitlab.inria.fr/discovery/enoslib</a></li> +<li>Reach us on: +<ul class="org-ul"> +<li><a href="https://framateam.org/enoslib">https://framateam.org/enoslib</a></li> +<li><a href="https://gitlab.inria.fr/discovery/enoslib/issues">https://gitlab.inria.fr/discovery/enoslib/issues</a></li> +</ul></li> +</ul> +</div> +</div> + +<div id="outline-container-org4a53df5" class="outline-3"> +<h3 id="org4a53df5"><span class="section-number-3">1.3</span> Contributing</h3> +<div class="outline-text-3" id="text-1-3"> +<p> +<b>Before experimenting</b> +</p> + +<ul class="org-ul"> +<li>Tell us what your plans are: +<ul class="org-ul"> +<li>There might be already users doing similar thing</li> +<li>There might be some missing/hidden pieces in the library you might need</li> +</ul></li> +</ul> + +<p> +<b>While experimenting</b> +</p> + +<ul class="org-ul"> +<li>Write bug reports / ask questions</li> +<li>Fix bugs / add your features</li> +</ul> + +<p> +<b>After experimenting</b> +</p> + +<ul class="org-ul"> +<li>Give your feedback</li> +<li>Add yourself to the list: <a href="https://discovery.gitlabpages.inria.fr/enoslib/theyuseit.html">https://discovery.gitlabpages.inria.fr/enoslib/theyuseit.html</a></li> +</ul> +</div> +</div> +</div> + + +<div id="outline-container-orgc7e91b9" class="outline-2"> +<h2 id="orgc7e91b9"><span class="section-number-2">2</span> Before you start</h2> +<div class="outline-text-2" id="text-2"> +<div class="note"> +<p> +make sure you are familiar with the grid'5000 architecture. see section 1 & 2 of +<a href="https://www.grid5000.fr/w/Getting_Started">https://www.grid5000.fr/w/Getting_Started</a>. note that we won't do this tutorial +we'll prefer to use higher level tools for now. +</p> + +</div> +</div> +</div> + +<div id="outline-container-org782c78a" class="outline-2"> +<h2 id="org782c78a"><span class="section-number-2">3</span> Setup on Grid'5000</h2> +<div class="outline-text-2" id="text-3"> +<p> +Connect to a Grid'5000 frontend of your choice (e.g rennes, nancy …) +</p> + +<ul class="org-ul"> +<li>create a new directory to host all the scripts of the session</li> +<li>bootstrap a new python3 virtualenv</li> +<li>install EnOSlib and configure the access to the API</li> +</ul> + +<div class="org-src-container"> +<pre class="src src-bash">$<span style="color: #7590db;">frontend</span>: mkdir enoslib_seminar +$<span style="color: #7590db;">frontend</span>: cd enoslib_seminar +$<span style="color: #7590db;">frontend</span>: virtualenv --python=python3 venv +$<span style="color: #7590db;">frontend</span>: source venv/bin/activate +$<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: pip install enoslib +$<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: echo <span style="color: #2d9574;">'</span> +<span style="color: #2d9574;">verify_ssl: False</span> +<span style="color: #2d9574;">'</span> > ~/.python-grid5000.yaml +</pre> +</div> +</div> +</div> + +<div id="outline-container-org441c9dd" class="outline-2"> +<h2 id="org441c9dd"><span class="section-number-2">4</span> Your first experiment on Grid'5000</h2> +<div class="outline-text-2" id="text-4"> +<p> +Let's experiment with <a href="https://iperf.fr/">iperf3</a>: a network bandwidth measuring tool. The goal is +to deploy a simple benchmark between two hosts. +</p> + +<p> +We'll also instrument the deployment in order to visualize in real-time the +network traffic between the hosts. Since this is super common, EnOSlib +exposes a <i>monitoring service</i> that lets you deploy very quickly what is +needed. +</p> +</div> + +<div id="outline-container-orgf5c5450" class="outline-3"> +<h3 id="orgf5c5450"><span class="section-number-3">4.1</span> First iteration</h3> +<div class="outline-text-3" id="text-4-1"> +<p> +We consider the following script +</p> +<div class="org-src-container"> +<pre class="src src-python"><span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.api <span style="color: #4f97d7; font-weight: bold;">import</span> run_command, wait_ssh +<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_g5k.provider <span style="color: #4f97d7; font-weight: bold;">import</span> G5k +<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_g5k.configuration <span style="color: #4f97d7; font-weight: bold;">import</span> Configuration, NetworkConfiguration +<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.service <span style="color: #4f97d7; font-weight: bold;">import</span> Monitoring + +<span style="color: #4f97d7; font-weight: bold;">import</span> logging + + +<span style="color: #4f97d7; font-weight: bold;">def</span> <span style="color: #bc6ec5; font-weight: bold;">pprint</span><span style="color: #4f97d7;">(</span>d<span style="color: #4f97d7;">)</span>: + <span style="color: #2aa1ae;">"""Utils fonction to pretty print the results"""</span> + <span style="color: #4f97d7; font-weight: bold;">for</span> k, v <span style="color: #4f97d7; font-weight: bold;">in</span> d<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"ok"</span><span style="color: #4f97d7;">]</span>.items<span style="color: #4f97d7;">()</span>: + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"Result for {k}"</span><span style="color: #4f97d7;">)</span> + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"-"</span> * <span style="color: #a45bad;">70</span><span style="color: #4f97d7;">)</span> + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"STDOUT:"</span><span style="color: #4f97d7;">)</span> + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>v.get<span style="color: #bc6ec5;">(</span><span style="color: #2d9574;">"stdout"</span>, <span style="color: #2d9574;">""</span><span style="color: #bc6ec5;">)</span><span style="color: #4f97d7;">)</span> + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"STDERR:"</span><span style="color: #4f97d7;">)</span> + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>v.get<span style="color: #bc6ec5;">(</span><span style="color: #2d9574;">"stderr"</span>, <span style="color: #2d9574;">""</span><span style="color: #bc6ec5;">)</span><span style="color: #4f97d7;">)</span> + + +logging.basicConfig<span style="color: #4f97d7;">(</span>level=logging.INFO<span style="color: #4f97d7;">)</span> + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Some parameters.</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Note 1: that you don't need to be on rennes frontend to use nodes</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">from rennes</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Note 2: Adapt the site/cluster according to the availibility</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">see the Gantt in https://www.grid5000.fr/w/Status</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> + +<span style="color: #7590db;">SITE</span> = <span style="color: #2d9574;">"rennes"</span> +<span style="color: #7590db;">CLUSTER</span> = <span style="color: #2d9574;">"paravance"</span> + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Configuration object describes the resource we want</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">here: 2 machines on the same cluster using the production network</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #7590db;">network</span> = NetworkConfiguration<span style="color: #4f97d7;">(</span><span style="color: #4f97d7;">id</span>=<span style="color: #2d9574;">"n1"</span>, + <span style="color: #4f97d7;">type</span>=<span style="color: #2d9574;">"prod"</span>, + roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"my_network"</span><span style="color: #bc6ec5;">]</span>, + site=SITE<span style="color: #4f97d7;">)</span> + +<span style="color: #7590db;">conf</span> = Configuration.from_settings<span style="color: #4f97d7;">(</span>job_name=<span style="color: #2d9574;">"enoslib_tutorial"</span>, + job_type=<span style="color: #2d9574;">"allow_classic_ssh"</span><span style="color: #4f97d7;">)</span>\ + .add_network_conf<span style="color: #4f97d7;">(</span>network<span style="color: #4f97d7;">)</span>\ + .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span>, + cluster=CLUSTER, + nodes=<span style="color: #a45bad;">1</span>, + primary_network=network<span style="color: #4f97d7;">)</span>\ + .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span>, + cluster=CLUSTER, + nodes=<span style="color: #a45bad;">1</span>, + primary_network=network<span style="color: #4f97d7;">)</span>\ + .finalize<span style="color: #4f97d7;">()</span> + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Reserve the ressources corresponding to the configuration</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">you'll get two **physical machine** (not virtual)</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">the roles object is a dictionnary of the concrete compute resources</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">roles = {"server": [host1], "client": [host2] }</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> + +<span style="color: #7590db;">provider</span> = G5k<span style="color: #4f97d7;">(</span>conf<span style="color: #4f97d7;">)</span> +<span style="color: #7590db;">roles</span>, <span style="color: #7590db;">networks</span> = provider.init<span style="color: #4f97d7;">()</span> +wait_ssh<span style="color: #4f97d7;">(</span>roles<span style="color: #4f97d7;">)</span> + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Below is the experimentation logic</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- It installs the bare minimum to run iperf3</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- The machine with the role 'server' is used to run a iperf3 server</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">started in the background (using tmux)</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- The machine with the role 'client' connects to that server and initiate a</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">transfer for 30s (duration variable)</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- Report is printed in stdout</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> + +<span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> +<span style="color: #7590db;">duration</span> = <span style="color: #a45bad;">30</span> +run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"apt update && apt install -y iperf3 tmux"</span>, roles=roles<span style="color: #4f97d7;">)</span> +run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"tmux new-session -d 'exec iperf3 -s'"</span>, pattern_hosts=<span style="color: #2d9574;">"server"</span>, roles=roles<span style="color: #4f97d7;">)</span> +<span style="color: #7590db;">result</span> = run_command<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"iperf3 -c {server.address} -t {duration}"</span>, pattern_hosts=<span style="color: #2d9574;">"client"</span>, roles=roles<span style="color: #4f97d7;">)</span> +pprint<span style="color: #4f97d7;">(</span>result<span style="color: #4f97d7;">)</span> + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Destroy the reservation, uncomment when needed</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> + +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">provider.destroy()</span> +</pre> +</div> + +<div class="question"> +<p> +How fast is the network between the nodes you have chosen ? +</p> + +</div> + +<div class="note"> +<p> +Before moving to the next questions, you'll need to clean the reservation. +You can either uncomment the line <code>provider.destroy()</code> at the end of the script. +You can also do it manually using the low-level <code>oarstat</code> / <code>oardel</code> tools. +</p> + +<div class="org-src-container"> +<pre class="src src-bash"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">get you reservation id</span> +$<span style="color: #7590db;">frontend</span>: oarstat -u +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">release the resources / kill the reservation</span> +$<span style="color: #7590db;">frontend</span>: oardel <the id of the reservation goes here> +</pre> +</div> + +</div> + +<div class="question"> +<p> +Can you adapt the script so that: +</p> +<ol class="org-ol"> +<li>The two nodes are in two different cluster in the same site ?</li> +<li>The two nodes are in two different sites ?</li> +</ol> + +</div> +</div> +</div> + + +<div id="outline-container-org993bcaf" class="outline-3"> +<h3 id="org993bcaf"><span class="section-number-3">4.2</span> Let's observe in real-time what is happening</h3> +<div class="outline-text-3" id="text-4-2"> +<div class="note"> +<p> +Make sure you have cleaned your previous reservations. +</p> + +</div> + +<p> +The following script installs a monitoring stack on your nodes. This is almost +the same script as before except the lines corresponding to the configuration +of the monitoring stack. +</p> + +<div class="org-src-container"> +<pre class="src src-python"><span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.api <span style="color: #4f97d7; font-weight: bold;">import</span> run_command, wait_ssh +<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_g5k.provider <span style="color: #4f97d7; font-weight: bold;">import</span> G5k +<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_g5k.configuration <span style="color: #4f97d7; font-weight: bold;">import</span> Configuration, NetworkConfiguration +<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.service <span style="color: #4f97d7; font-weight: bold;">import</span> Monitoring + +<span style="color: #4f97d7; font-weight: bold;">import</span> logging + + +<span style="color: #4f97d7; font-weight: bold;">def</span> <span style="color: #bc6ec5; font-weight: bold;">pprint</span><span style="color: #4f97d7;">(</span>d<span style="color: #4f97d7;">)</span>: + <span style="color: #2aa1ae;">"""Utils fonction to pretty print the results"""</span> + <span style="color: #4f97d7; font-weight: bold;">for</span> k, v <span style="color: #4f97d7; font-weight: bold;">in</span> d<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"ok"</span><span style="color: #4f97d7;">]</span>.items<span style="color: #4f97d7;">()</span>: + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"Result for {k}"</span><span style="color: #4f97d7;">)</span> + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"-"</span> * <span style="color: #a45bad;">70</span><span style="color: #4f97d7;">)</span> + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"STDOUT:"</span><span style="color: #4f97d7;">)</span> + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>v.get<span style="color: #bc6ec5;">(</span><span style="color: #2d9574;">"stdout"</span>, <span style="color: #2d9574;">""</span><span style="color: #bc6ec5;">)</span><span style="color: #4f97d7;">)</span> + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"STDERR:"</span><span style="color: #4f97d7;">)</span> + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>v.get<span style="color: #bc6ec5;">(</span><span style="color: #2d9574;">"stderr"</span>, <span style="color: #2d9574;">""</span><span style="color: #bc6ec5;">)</span><span style="color: #4f97d7;">)</span> + + +logging.basicConfig<span style="color: #4f97d7;">(</span>level=logging.INFO<span style="color: #4f97d7;">)</span> + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Some parameters.</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Note 1: that you don't need to be on rennes frontend to use nodes</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">from rennes</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Note 2: Adapt the site/cluster according to the availibility</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">see the Gantt in https://www.grid5000.fr/w/Status</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> + +<span style="color: #7590db;">SITE</span> = <span style="color: #2d9574;">"rennes"</span> +<span style="color: #7590db;">CLUSTER</span> = <span style="color: #2d9574;">"paravance"</span> + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Configuration object describes the resource we want</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">here: 2 machines on the same cluster using the production network</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #7590db;">network</span> = NetworkConfiguration<span style="color: #4f97d7;">(</span><span style="color: #4f97d7;">id</span>=<span style="color: #2d9574;">"n1"</span>, + <span style="color: #4f97d7;">type</span>=<span style="color: #2d9574;">"prod"</span>, + roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"my_network"</span><span style="color: #bc6ec5;">]</span>, + site=SITE<span style="color: #4f97d7;">)</span> + +<span style="color: #7590db;">conf</span> = Configuration.from_settings<span style="color: #4f97d7;">(</span>job_name=<span style="color: #2d9574;">"enoslib_tutorial"</span>, + job_type=<span style="color: #2d9574;">"allow_classic_ssh"</span><span style="color: #4f97d7;">)</span>\ + .add_network_conf<span style="color: #4f97d7;">(</span>network<span style="color: #4f97d7;">)</span>\ + .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span>, + cluster=CLUSTER, + nodes=<span style="color: #a45bad;">1</span>, + primary_network=network<span style="color: #4f97d7;">)</span>\ + .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span>, + cluster=CLUSTER, + nodes=<span style="color: #a45bad;">1</span>, + primary_network=network<span style="color: #4f97d7;">)</span>\ + .finalize<span style="color: #4f97d7;">()</span> + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Reserve the ressources corresponding to the configuration</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">you'll get two **physical machine** (not virtual)</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">the roles object is a dictionnary of the concrete compute resources</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">roles = {"server": [host1], "client": [host2] }</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> + +<span style="color: #7590db;">provider</span> = G5k<span style="color: #4f97d7;">(</span>conf<span style="color: #4f97d7;">)</span> +<span style="color: #7590db;">roles</span>, <span style="color: #7590db;">networks</span> = provider.init<span style="color: #4f97d7;">()</span> +wait_ssh<span style="color: #4f97d7;">(</span>roles<span style="color: #4f97d7;">)</span> + + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">This deploys a monitoring stack. It is composed of</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- some agents on each monitored nodes</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- one collector that collects the metrics from the agents</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- one UI to visualize</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> + +<span style="color: #7590db;">m</span> = Monitoring<span style="color: #4f97d7;">(</span>collector=roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span>, + agent=roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span> + roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span>, + ui=roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span><span style="color: #4f97d7;">)</span> +m.deploy<span style="color: #4f97d7;">()</span> + + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Below is the experimentation logic</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- It installs the bare minimum to run iperf3</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- The machine with the role 'server' is used to run a iperf3 server</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">started in the background (using tmux)</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- The machine with the role 'client' connects to that server and initiate a</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">transfer for 600s (duration variable)</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">- Report is printed in stdout</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> + +<span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> +<span style="color: #7590db;">duration</span> = <span style="color: #a45bad;">600</span> +run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"apt update && apt install -y iperf3 tmux"</span>, roles=roles<span style="color: #4f97d7;">)</span> +run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"tmux new-session -d 'exec iperf3 -s'"</span>, pattern_hosts=<span style="color: #2d9574;">"server"</span>, roles=roles<span style="color: #4f97d7;">)</span> +<span style="color: #7590db;">result</span> = run_command<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"iperf3 -c {server.address} -t {duration}"</span>, pattern_hosts=<span style="color: #2d9574;">"client"</span>, roles=roles<span style="color: #4f97d7;">)</span> +pprint<span style="color: #4f97d7;">(</span>result<span style="color: #4f97d7;">)</span> + +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">## </span><span style="color: #2aa1ae; background-color: #292e34;">Destroy the reservation, uncomment when needed</span> +<span style="color: #2aa1ae; background-color: #292e34;">##</span> +<span style="color: #2aa1ae; background-color: #292e34;">######################################################################</span> + +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">provider.destroy()</span> +</pre> +</div> + +<p> +Now, let's visualize the network traffic in real-time ! +</p> +<div class="note"> +<p> +Usually I follow this to access services running inside Grid'5000: +<a href="https://discovery.gitlabpages.inria.fr/enoslib/tutorials/grid5000.html#accessing-http-services-inside-grid-5000">https://discovery.gitlabpages.inria.fr/enoslib/tutorials/grid5000.html#accessing-http-services-inside-grid-5000</a>. +</p> + + +<p> +Today you can just create a tunnel like this (from your local machine). +</p> + +<div class="org-src-container"> +<pre class="src src-bash"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Adapt the node names with the node where grafana (the UI) has been installed</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Replace <login> by your Grid'5000 login</span> +$<span style="color: #7590db;">yourmachine</span>: ssh -NL <span style="color: #a45bad;">3000:paravance-16.rennes.grid5000.fr:3000</span> <login>@access.grid5000.fr + +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">point your browser to localhost:3000</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">username/mdp: admin/admin</span> +</pre> +</div> + +</div> + +<p> +Part of the experimenter work also consists in analysing the data. Here it +corresponds in writing the right request to monitor the traffic (check the +Fig. <a href="#orga4a34ec">1</a>). You should be able to visualize such a thing (after a bit +of point and clicks). +</p> + + +<div id="orga4a34ec" class="figure"> +<p><a href="figs/iperf3.png" width="100%" style="border:1px solid black;"><img src="figs/iperf3.png" alt="iperf3.png" width="100%" style="border:1px solid black;" /></a> +</p> +<p><span class="figure-number">Figure 1: </span>iperf3 / monitoring</p> +</div> +</div> +</div> + + +<div id="outline-container-org830e31f" class="outline-3"> +<h3 id="org830e31f"><span class="section-number-3">4.3</span> Discussion</h3> +<div class="outline-text-3" id="text-4-3"> +<p> +So, far this seems (at least for me) very handy. But there might be some problems in our setup: +</p> +<ul class="org-ul"> +<li>we aren't isolated from the other users</li> +<li>we aren't isolated from ourself in the sense that the monitoring stack generates its own +network traffic (yes, this is negligible in our case)</li> +</ul> + +<p> +Sometimes it's desirable to have the following setup (see Fig. <a href="#orgf90cb97">2</a>). +</p> + + +<div id="orgf90cb97" class="figure"> +<p><a href="figs/skydive_enoslib.png"><img src="figs/skydive_enoslib.png" alt="skydive_enoslib.png" /></a> +</p> +<p><span class="figure-number">Figure 2: </span>nodes are using two network interfaces. Monitoring traffic and benchmark traffic are separated.</p> +</div> +</div> +</div> + +<div id="outline-container-org5f35d8c" class="outline-3"> +<h3 id="org5f35d8c"><span class="section-number-3">4.4</span> A bit better approach</h3> +<div class="outline-text-3" id="text-4-4"> +<p> +Analyse/Understand the following script <a href="exercices/iperf3_better.py">exercices/iperf3_better.py</a> +Launch it. +</p> + +<div class="note"> +<p> +On Grid'5000, using the secondary interfaces requires to <b>deploy</b> the nodes: +an new OS will be installed on your nodes. This will give you full control on +the physical machine (root access). This might be longer to run the +experiment due to this deployment phase. +</p> + +</div> +</div> +</div> + +<div id="outline-container-orgdddf696" class="outline-3"> +<h3 id="orgdddf696"><span class="section-number-3">4.5</span> Ninja level</h3> +<div class="outline-text-3" id="text-4-5"> +<p> +Add the <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html#skydive">Skydive</a> service to your deployment. +It should be accessible on the port <code>8082</code> of the analyzer node. You should +get something like Fig. <a href="#orgf90cb97">2</a>. +</p> +</div> +</div> + +<div id="outline-container-org1193557" class="outline-3"> +<h3 id="org1193557"><span class="section-number-3">4.6</span> Some references</h3> +<div class="outline-text-3" id="text-4-6"> +<ul class="org-ul"> +<li>Services: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html</a></li> +</ul> +</div> +</div> +</div> + +<div id="outline-container-orgf965b96" class="outline-2"> +<h2 id="orgf965b96"><span class="section-number-2">5</span> Providers: to replicate your experiment</h2> +<div class="outline-text-2" id="text-5"> +<div class="note"> +<p> +The resources that are used for your experiment are acquired through a +provider. Providers are a mean to decouple the infrastructure code (the code +that gets the resources) from the code that runs the experiment. Changing the +provider allows to replicate the experiment on another testbed. +</p> + +</div> + +<p> +Originally it was used to iterate on the code locally (using the Vagrant +provider) and to only test on Grid'5000 when necessary. +</p> + +<p> +We now have couple of providers that you may picked or mixed. +</p> +</div> + +<div id="outline-container-orgad471c7" class="outline-3"> +<h3 id="orgad471c7"><span class="section-number-3">5.1</span> iperf3 on virtual machines on Grid'5000</h3> +<div class="outline-text-3" id="text-5-1"> +<p> +We'll adapt the initial iperf3 example to use virtual machines instead of +bare-metal machine. +</p> + +<p> +Note that: +</p> + +<ul class="org-ul"> +<li>The configuration object is different</li> +<li>The experimentation logic is the same</li> +<li>Some part have been rewritten using modules (see later in the dedicated section).</li> +</ul> + +<div class="org-src-container"> +<pre class="src src-python"><span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.api <span style="color: #4f97d7; font-weight: bold;">import</span> play_on, wait_ssh +<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_vmong5k.provider <span style="color: #4f97d7; font-weight: bold;">import</span> VMonG5k +<span style="color: #4f97d7; font-weight: bold;">from</span> enoslib.infra.enos_vmong5k.configuration <span style="color: #4f97d7; font-weight: bold;">import</span> Configuration + +<span style="color: #4f97d7; font-weight: bold;">import</span> logging +<span style="color: #4f97d7; font-weight: bold;">import</span> os + +logging.basicConfig<span style="color: #4f97d7;">(</span>level=logging.DEBUG<span style="color: #4f97d7;">)</span> + +<span style="color: #7590db;">CLUSTER</span> = <span style="color: #2d9574;">"paravance"</span> + +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">path to the inventory</span> +<span style="color: #7590db;">inventory</span> = os.path.join<span style="color: #4f97d7;">(</span>os.getcwd<span style="color: #bc6ec5;">()</span>, <span style="color: #2d9574;">"hosts"</span><span style="color: #4f97d7;">)</span> + +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">claim the resources</span> +<span style="color: #7590db;">conf</span> = Configuration.from_settings<span style="color: #4f97d7;">(</span>job_name=<span style="color: #2d9574;">"enoslib_tutorial"</span>, gateway=<span style="color: #a45bad;">True</span><span style="color: #4f97d7;">)</span>\ + .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #bc6ec5;">]</span>, + cluster=CLUSTER, + number=<span style="color: #a45bad;">1</span>, + flavour=<span style="color: #2d9574;">"large"</span><span style="color: #4f97d7;">)</span>\ + .add_machine<span style="color: #4f97d7;">(</span>roles=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span>, + cluster=CLUSTER, + number=<span style="color: #a45bad;">1</span>, + flavour=<span style="color: #2d9574;">"medium"</span><span style="color: #4f97d7;">)</span>\ + .finalize<span style="color: #4f97d7;">()</span> + +<span style="color: #7590db;">provider</span> = VMonG5k<span style="color: #4f97d7;">(</span>conf<span style="color: #4f97d7;">)</span> + +<span style="color: #7590db;">roles</span>, <span style="color: #7590db;">networks</span> = provider.init<span style="color: #4f97d7;">()</span> +wait_ssh<span style="color: #4f97d7;">(</span>roles<span style="color: #4f97d7;">)</span> + +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Below is the experimentation logic</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">It installs the bare minimum to run iperf3</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">The machine with the role 'server' is used to run a iperf3 server</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">started in the background in a tmux</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">The machine with the role 'client' connects to that server</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Report is printed in stdout</span> +<span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> + +<span style="color: #4f97d7; font-weight: bold;">with</span> play_on<span style="color: #4f97d7;">(</span>roles=roles<span style="color: #4f97d7;">)</span> <span style="color: #4f97d7; font-weight: bold;">as</span> p: + p.apt<span style="color: #4f97d7;">(</span>name=<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"iperf3"</span>, <span style="color: #2d9574;">"tmux"</span><span style="color: #bc6ec5;">]</span>, state=<span style="color: #2d9574;">"present"</span><span style="color: #4f97d7;">)</span> + +<span style="color: #4f97d7; font-weight: bold;">with</span> play_on<span style="color: #4f97d7;">(</span>pattern_hosts=<span style="color: #2d9574;">"server"</span>, roles=roles<span style="color: #4f97d7;">)</span> <span style="color: #4f97d7; font-weight: bold;">as</span> p: + p.shell<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"tmux new-session -d 'exec iperf3 -s'"</span><span style="color: #4f97d7;">)</span> + +<span style="color: #4f97d7; font-weight: bold;">with</span> play_on<span style="color: #4f97d7;">(</span>pattern_hosts=<span style="color: #2d9574;">"client"</span>, roles=roles<span style="color: #4f97d7;">)</span> <span style="color: #4f97d7; font-weight: bold;">as</span> p: + p.shell<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"iperf3 -c {server.address} -t 30"</span><span style="color: #4f97d7;">)</span> + +<span style="color: #4f97d7; font-weight: bold;">with</span> play_on<span style="color: #4f97d7;">(</span>pattern_hosts=<span style="color: #2d9574;">"client"</span>, roles=roles<span style="color: #4f97d7;">)</span> <span style="color: #4f97d7; font-weight: bold;">as</span> p: + p.shell<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"iperf3 -c {server.address} -t 30 --logfile iperf3.out"</span><span style="color: #4f97d7;">)</span> + p.fetch<span style="color: #4f97d7;">(</span>src=<span style="color: #2d9574;">"iperf3.out"</span>, dest=<span style="color: #2d9574;">"iperf3.out"</span><span style="color: #4f97d7;">)</span> +</pre> +</div> + +<p> +Using module using the <code>play_on</code> context manager does not bring back the +results of the commands. Iperf3 let's you write the result of the command on +a file. We just need to scp the file back to our local machine using the +<code>fetch</code> module. +</p> +</div> +</div> + + +<div id="outline-container-org08faf88" class="outline-3"> +<h3 id="org08faf88"><span class="section-number-3">5.2</span> References</h3> +<div class="outline-text-3" id="text-5-2"> +<ul class="org-ul"> +<li>Doc: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html</a></li> +<li>Sources: <a href="https://gitlab.inria.fr/discovery/enoslib/tree/v4.8.1/enoslib/infra">https://gitlab.inria.fr/discovery/enoslib/tree/v4.8.1/enoslib/infra</a></li> +</ul> +</div> +</div> +</div> + + +<div id="outline-container-org56f9c08" class="outline-2"> +<h2 id="org56f9c08"><span class="section-number-2">6</span> Variables in EnOSlib</h2> +<div class="outline-text-2" id="text-6"> +<p> +Learn how to get 2 nodes from Grid'5000 and start launching remote commands. +</p> +</div> + +<div id="outline-container-org2281689" class="outline-3"> +<h3 id="org2281689"><span class="section-number-3">6.1</span> Discover the <code>run</code> command and its variants</h3> +<div class="outline-text-3" id="text-6-1"> +<p> +Before proceeding you can add this util function to your code. It is only +used to pretty print a python dictionnary. +</p> +<div class="org-src-container"> +<pre class="src src-python"><span style="color: #4f97d7; font-weight: bold;">def</span> <span style="color: #bc6ec5; font-weight: bold;">pprint</span><span style="color: #4f97d7;">(</span>d<span style="color: #4f97d7;">)</span>: + <span style="color: #4f97d7; font-weight: bold;">import</span> json + <span style="color: #4f97d7; font-weight: bold;">print</span><span style="color: #4f97d7;">(</span>json.dumps<span style="color: #bc6ec5;">(</span>d, indent=<span style="color: #a45bad;">4</span><span style="color: #bc6ec5;">)</span><span style="color: #4f97d7;">)</span> +</pre> +</div> + +<p> +And use the <code>enoslib.api.run</code> function +</p> +<div class="org-src-container"> +<pre class="src src-python"><span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">---</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Using run</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">--------------------------------------------------------------------</span> +<span style="color: #7590db;">result</span> = run<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"ping -c 5 {server.address}"</span>, roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span><span style="color: #4f97d7;">)</span> +pprint<span style="color: #4f97d7;">(</span>result<span style="color: #4f97d7;">)</span> +</pre> +</div> + +<p> +Or the <code>enoslib.api.run_command</code> function +</p> +<div class="org-src-container"> +<pre class="src src-python"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">---</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Using run_command 1/2</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">--------------------------------------------------------------------</span> +<span style="color: #7590db;">result</span> = run_command<span style="color: #4f97d7;">(</span>f<span style="color: #2d9574;">"ping -c 5 {server.address}"</span>, + pattern_hosts=<span style="color: #2d9574;">"client"</span>, + roles=roles<span style="color: #4f97d7;">)</span> +pprint<span style="color: #4f97d7;">(</span>result<span style="color: #4f97d7;">)</span> +</pre> +</div> + +<div class="note"> +<p> +<code>enoslib.api.run</code> is a specialisation of <code>enoslib.api.run_command</code>. +The latter let's you use <a href="https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html">some fancy patterns</a> to determine the list of hosts to run the command on. +</p> + +<p> +And yes, it uses Ansible behind the scene. +</p> + +</div> +</div> +</div> + +<div id="outline-container-orgd2c7291" class="outline-3"> +<h3 id="orgd2c7291"><span class="section-number-3">6.2</span> Advanced usages</h3> +<div class="outline-text-3" id="text-6-2"> +<div class="note"> +<p> +For all the remote interactions, EnOSlib relies on <a href="https://docs.ansible.com/ansible/latest/index.html">Ansible</a>. Ansible +has it own variables management system. +For instance the task <code>Gather Facts</code> at the beginning of the previous tasks +gathers informations about all/some remote hosts and store them in the +Ansible management system. +</p> + +</div> + +<p> +Let's see what Ansible is gathering about the hosts: +</p> + +<div class="org-src-container"> +<pre class="src src-python"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">---</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Gather facts</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">--------------------------------------------------------------------</span> +<span style="color: #7590db;">result</span> = gather_facts<span style="color: #4f97d7;">(</span>roles=roles<span style="color: #4f97d7;">)</span> +pprint<span style="color: #4f97d7;">(</span>result<span style="color: #4f97d7;">)</span> +</pre> +</div> + +<div class="note"> +<p> +EnOSlib sits in between two worlds: the Python world and the Ansible +world. One common need is to pass a variables from one world to another. +</p> +<ul class="org-ul"> +<li><code>enoslib.api.gather_facts</code> is a way to get, in Python, the variables known +by Ansible about each host.</li> +<li><code>extra_vars</code> keyword argument of <code>enoslib.api.run</code> or <code>enoslib.api.run_command</code> will +pass variables from Python world to Ansible world (global variable)</li> +<li>Injecting a key/value in a <code>Host.extra</code> attribute will make the variable <code>key</code> available to Ansible. +This makes the variables Host specific.</li> +</ul> + +</div> + +<p> +The following inject a global variable in the Ansible world +</p> +<div class="org-src-container"> +<pre class="src src-python"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">---</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Passing a variable to the Ansible World using a global level variable</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">--------------------------------------------------------------------</span> +<span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> +<span style="color: #7590db;">extra_vars</span>=<span style="color: #4f97d7;">{</span><span style="color: #2d9574;">"server_ip"</span>: server.address<span style="color: #4f97d7;">}</span> +<span style="color: #7590db;">result</span> = run<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"ping -c 5 {{ server_ip }}"</span>, roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span>, extra_vars=extra_vars<span style="color: #4f97d7;">)</span> +</pre> +</div> +</div> +</div> + +<div id="outline-container-orgd78a6d8" class="outline-3"> +<h3 id="orgd78a6d8"><span class="section-number-3">6.3</span> Ninja level</h3> +<div class="outline-text-3" id="text-6-3"> +<p> +The following is valid and inject in the <code>client</code> host a specific variable to +keep track of the server IP. +</p> + +<div class="org-src-container"> +<pre class="src src-python"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">---</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Passing a variable to the Ansible World using a host level variable</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">--------------------------------------------------------------------</span> +<span style="color: #7590db;">server</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"server"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> +<span style="color: #7590db;">client</span> = roles<span style="color: #4f97d7;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #4f97d7;">][</span><span style="color: #a45bad;">0</span><span style="color: #4f97d7;">]</span> +client.extra.update<span style="color: #4f97d7;">(</span>server_ip=server.address<span style="color: #4f97d7;">)</span> +<span style="color: #7590db;">result</span> = run<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"ping -c 5 {{ server_ip }}"</span>, roles<span style="color: #bc6ec5;">[</span><span style="color: #2d9574;">"client"</span><span style="color: #bc6ec5;">]</span><span style="color: #4f97d7;">)</span> +</pre> +</div> + +<div class="note"> +<p> +Host level variables are interesting to introduce some dissymetry between +hosts while still using one single command to reach all of them. +</p> + +</div> + +<div class="question"> +<p> +How to perform simultaneously the ping to the other machine in calling only +once <code>run</code> or <code>run_command</code> and using host level variables? +</p> + +</div> + +<div class="question"> +<p> +We'd like to create 5 <code>server</code> machines and 5 <code>client</code> machines and start 5 +<b>parallel</b> streams of data using <code>iperf3</code>. To answer this we'll need to learn +a bit more on how variables are handled in EnOSlib. +</p> + +</div> +</div> +</div> + +<div id="outline-container-orge739be4" class="outline-3"> +<h3 id="orge739be4"><span class="section-number-3">6.4</span> Putting all together</h3> +<div class="outline-text-3" id="text-6-4"> +<p> +Access the full file: <a href="exercices/run.py">exercices/run.py</a> +</p> +</div> +</div> + +<div id="outline-container-org5dafa08" class="outline-3"> +<h3 id="org5dafa08"><span class="section-number-3">6.5</span> Some references</h3> +<div class="outline-text-3" id="text-6-5"> +<ul class="org-ul"> +<li>G5k configuration schema: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html#g5k-schema">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html#g5k-schema</a></li> +<li>API Reference: <a href="https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html">https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html</a></li> +</ul> +</div> +</div> +</div> + +<div id="outline-container-orga167566" class="outline-2"> +<h2 id="orga167566"><span class="section-number-2">7</span> Modules: for safer remote actions</h2> +<div class="outline-text-2" id="text-7"> +<p> +In this section we'll discover the idiomatic way of managing resources on the +remote hosts. A resource can be anything: a user, a file, a line in a file, a +repo on Gitlab, a firewall rule … +</p> +</div> + + +<div id="outline-container-orgc30170a" class="outline-3"> +<h3 id="orgc30170a"><span class="section-number-3">7.1</span> Idempotency</h3> +<div class="outline-text-3" id="text-7-1"> +<p> +Let's assume you want to create a user (<code>foo</code>). With the <code>run_command</code> this would look like: +</p> + +<div class="org-src-container"> +<pre class="src src-python">run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"useradd -m foo"</span>, roles=role<span style="color: #4f97d7;">)</span> +</pre> +</div> + +<p> +The main issue with this code is that it is not <b>idempotent</b>. Running it once +will applied the effect (create the user). But, as soon as the user exist in +the system, this will raise an error. +</p> +</div> +</div> + +<div id="outline-container-org334a244" class="outline-3"> +<h3 id="org334a244"><span class="section-number-3">7.2</span> One reason why idempotency is important</h3> +<div class="outline-text-3" id="text-7-2"> +<p> +Let's consider the following snippet (mispelling the second command is intentional) +</p> +<div class="org-src-container"> +<pre class="src src-python">run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"useradd -m foo"</span>, roles=role<span style="color: #4f97d7;">)</span> +run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"mkdirz plop"</span><span style="color: #4f97d7;">)</span> +</pre> +</div> +<p> +Executing the above leads the system with the user <code>foo</code> created but the the +directory <code>plop</code> not created since the second command fails. +</p> + +<p> +So what you want to do is to fix the second command and re-run the snippet again. +But, you can't do that because <code>useradd</code> isn't idempotent. +</p> +</div> +</div> + +<div id="outline-container-orgcf77118" class="outline-3"> +<h3 id="orgcf77118"><span class="section-number-3">7.3</span> Idempotency trick</h3> +<div class="outline-text-3" id="text-7-3"> +<p> +One easy solution is to protect your call to non idempotent commands with +some ad'hoc tricks +</p> + +<p> +Here it can look like this: +</p> + +<div class="org-src-container"> +<pre class="src src-python">run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"id foo || useradd -m foo"</span>, roles=role<span style="color: #4f97d7;">)</span> +run_command<span style="color: #4f97d7;">(</span><span style="color: #2d9574;">"mkdir -p plop"</span><span style="color: #4f97d7;">)</span> +</pre> +</div> + +<p> +<b>What's wrong with that</b> +</p> + +<ul class="org-ul"> +<li>The trick depends on the command</li> +<li>Re-reading the code is more complex: the code focus on the <b><b>how</b></b> not the <b><b>what</b></b></li> +</ul> +</div> +</div> + +<div id="outline-container-orgcaa5aa0" class="outline-3"> +<h3 id="orgcaa5aa0"><span class="section-number-3">7.4</span> General idempotency</h3> +<div class="outline-text-3" id="text-7-4"> +<p> +The idiomatic solution is to use modules (inherited from the Ansible +Modules). The modules are specified in a <b>declarative</b> way and they ensure +<b>idempotency</b> for most of them. +</p> + +<p> +So rewriting the example with modules looks like: +</p> +<div class="org-src-container"> +<pre class="src src-python"><span style="color: #4f97d7; font-weight: bold;">with</span> play_on<span style="color: #4f97d7;">(</span>roles=roles<span style="color: #4f97d7;">)</span> <span style="color: #4f97d7; font-weight: bold;">as</span> p: + p.user<span style="color: #4f97d7;">(</span>name=<span style="color: #2d9574;">"foo"</span>, state=<span style="color: #2d9574;">"present"</span>, create_home=<span style="color: #2d9574;">"yes"</span><span style="color: #4f97d7;">)</span> + p.<span style="color: #4f97d7;">file</span><span style="color: #4f97d7;">(</span>name=<span style="color: #2d9574;">"plop"</span>, state=<span style="color: #2d9574;">"directory"</span><span style="color: #4f97d7;">)</span> +</pre> +</div> + +<p> +<code>enoslib.api.play_on</code> is the entry point to the module system. +</p> + +<p> +You can run this code as many times as you want without any error. You'll +eventually find one user <code>foo</code> and one directory <code>plop</code> in your target +systems. +</p> + +<p> +They are more than 2500 modules: <a href="https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html">https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html</a> +</p> + +<p> +If you can't find what you want you must know that: +</p> +<ul class="org-ul"> +<li>Writing your own module is possible</li> +<li>Falling back to the idempotency trick is reasonable</li> +</ul> +</div> +</div> +</div> + +<div id="outline-container-orgb39fe8f" class="outline-2"> +<h2 id="orgb39fe8f"><span class="section-number-2">8</span> Tasks: to organize your experiment</h2> +<div class="outline-text-2" id="text-8"> +<p> +To discover the Task API, head to <a href="https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html">https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html</a>. +</p> + +<p> +The examples are written for Vagrant but may be changed to whatever provider you like/have. +</p> + +<div class="question"> +<p> +Adapt the <code>iperf3</code> example to provide a command line +</p> +<ul class="org-ul"> +<li><p> +Either using G5k physical machines: +</p> +<div class="org-src-container"> +<pre class="src src-bash"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">deploy the dependencies of the experimentation using the G5k provider</span> +myperf g5k + +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">launch a performance measurement</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">ideally exposes all the iperf3 client options there ;)</span> +myperf bench -t <span style="color: #a45bad;">120</span> + +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Backup the reports / influxdb database</span> +myperf backup +</pre> +</div> + +<p> +myperf destroy +</p></li> + +<li><p> +Either using the virtual machines on Grid'5000: +</p> +<div class="org-src-container"> +<pre class="src src-bash"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">deploy the dependencies of the experimentation using the G5k provider</span> +myperf vm5k + +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Subsequent command line should be the same as above</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">enjoy :)</span> +</pre> +</div></li> +</ul> + +</div> +</div> +</div> +</div> +<div id="postamble" class="status"> +<p class="author">Author: Matthieu Simonin</p> +<p class="date">Created: 2019-11-15 ven. 14:14</p> +<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p> +</div> +</body> +</html> diff --git a/tuto1/index.org b/tuto1/index.org new file mode 100644 index 0000000..777996d --- /dev/null +++ b/tuto1/index.org @@ -0,0 +1,428 @@ +#+TITLE: Distributed experiments on Grid'5000 ... and beyond ! +#+DATE: +#+AUTHOR: Matthieu Simonin + +#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="timeline.css" /> + +#+MACRO: enoslib EnOSlib +#+MACRO: src_host https://gitlab.inria.fr/discovery/enoslib/blob/v4.8.1/enoslib/host.py#L8-14 +#+MACRO: doc_external_access https://discovery.gitlabpages.inria.fr/enoslib/tutorials/grid5000.html#accessing-http-services-inside-grid-5000 +#+MACRO: src_provider https://gitlab.inria.fr/discovery/enoslib/tree/v4.8.1/enoslib/infra +#+MACRO: doc_provider https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html +#+MACRO: doc_tasks https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html +#+MACRO: doc_g5k_schema https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html#g5k-schema +#+MACRO: doc_api https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html +#+MACRO: doc_services https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html + +* Foreword + +** Existing tools (Grid'5000) + + - {{{enoslib}}} falls under the **Experiment management tools** of the following + list: + https://www.grid5000.fr/w/Grid5000:Software + + - {{{enoslib}}} can target Grid'5000 but also other testbeds (Chameleon, local machines...) + + - {{{enoslib}}} provides high level constructs to help you with your experiments + +** EnOSlib quicktour + + - Documentation: https://discovery.gitlabpages.inria.fr/enoslib/index.html + - Source: https://gitlab.inria.fr/discovery/enoslib + - Reach us on: + + https://framateam.org/enoslib + + https://gitlab.inria.fr/discovery/enoslib/issues + +** Contributing + + *Before experimenting* + + - Tell us what your plans are: + + There might be already users doing similar thing + + There might be some missing/hidden pieces in the library you might need + + *While experimenting* + + - Write bug reports / ask questions + - Fix bugs / add your features + + *After experimenting* + + - Give your feedback + - Add yourself to the list: https://discovery.gitlabpages.inria.fr/enoslib/theyuseit.html + + +* Before you start + + #+begin_note + make sure you are familiar with the grid'5000 architecture. see section 1 & 2 of + https://www.grid5000.fr/w/Getting_Started. note that we won't do this tutorial + we'll prefer to use higher level tools for now. + #+end_note + +* Setup on Grid'5000 + + Connect to a Grid'5000 frontend of your choice (e.g rennes, nancy ...) + + - create a new directory to host all the scripts of the session + - bootstrap a new python3 virtualenv + - install {{{enoslib}}} and configure the access to the API + + #+BEGIN_SRC bash :noeval + $frontend: mkdir enoslib_seminar + $frontend: cd enoslib_seminar + $frontend: virtualenv --python=python3 venv + $frontend: source venv/bin/activate + $frontend(venv): pip install enoslib + $frontend(venv): echo ' + verify_ssl: False + ' > ~/.python-grid5000.yaml + #+END_SRC + +* Your first experiment on Grid'5000 + + Let's experiment with [[https://iperf.fr/][iperf3]]: a network bandwidth measuring tool. The goal is + to deploy a simple benchmark between two hosts. + + We'll also instrument the deployment in order to visualize in real-time the + network traffic between the hosts. Since this is super common, {{{enoslib}}} + exposes a /monitoring service/ that lets you deploy very quickly what is + needed. + +** First iteration + + We consider the following script + #+INCLUDE: exercices/iperf3.py src python + + #+BEGIN_question + How fast is the network between the nodes you have chosen ? + #+END_question + + #+BEGIN_note + Before moving to the next questions, you'll need to clean the reservation. + You can either uncomment the line ~provider.destroy()~ at the end of the script. + You can also do it manually using the low-level ~oarstat~ / ~oardel~ tools. + + #+BEGIN_SRC bash :noeval + # get you reservation id + $frontend: oarstat -u + # release the resources / kill the reservation + $frontend: oardel <the id of the reservation goes here> + #+END_SRC + #+END_note + + #+BEGIN_question + Can you adapt the script so that: + 1. The two nodes are in two different cluster in the same site ? + 2. The two nodes are in two different sites ? + #+END_question + + +** Let's observe in real-time what is happening + + #+BEGIN_note + Make sure you have cleaned your previous reservations. + #+END_note + + The following script installs a monitoring stack on your nodes. This is almost + the same script as before except the lines corresponding to the configuration + of the monitoring stack. + + #+INCLUDE: exercices/iperf3_monitoring.py src python + + Now, let's visualize the network traffic in real-time ! + #+BEGIN_note + Usually I follow this to access services running inside Grid'5000: + {{{doc_external_access}}}. + + + Today you can just create a tunnel like this (from your local machine). + + #+BEGIN_SRC bash :noeval + # Adapt the node names with the node where grafana (the UI) has been installed + # Replace <login> by your Grid'5000 login + $yourmachine: ssh -NL 3000:paravance-16.rennes.grid5000.fr:3000 <login>@access.grid5000.fr + + # point your browser to localhost:3000 + # username/mdp: admin/admin + #+END_SRC + + #+END_note + + Part of the experimenter work also consists in analysing the data. Here it + corresponds in writing the right request to monitor the traffic (check the + Fig. [[fig:iperf3]]). You should be able to visualize such a thing (after a bit + of point and clicks). + + #+CAPTION: iperf3 / monitoring + #+NAME: fig:iperf3 + #+ATTR_HTML: :width 100% :style border:1px solid black; + [[file:figs/iperf3.png][file:figs/iperf3.png]] + + +** Discussion + + So, far this seems (at least for me) very handy. But there might be some problems in our setup: + - we aren't isolated from the other users + - we aren't isolated from ourself in the sense that the monitoring stack generates its own + network traffic (yes, this is negligible in our case) + + Sometimes it's desirable to have the following setup (see Fig. [[fig:two_networks]]). + + #+CAPTION: nodes are using two network interfaces. + #+CAPTION: Monitoring traffic and benchmark traffic are separated. + #+NAME: fig:two_networks + [[file:figs/skydive_enoslib.png][file:figs/skydive_enoslib.png]] + +** A bit better approach + + Analyse/Understand the following script [[file:exercices/iperf3_better.py]] + Launch it. + + #+BEGIN_note + On Grid'5000, using the secondary interfaces requires to *deploy* the nodes: + an new OS will be installed on your nodes. This will give you full control on + the physical machine (root access). This might be longer to run the + experiment due to this deployment phase. + #+END_note + +** Ninja level + + Add the [[https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html#skydive][Skydive]] service to your deployment. + It should be accessible on the port ~8082~ of the analyzer node. You should + get something like Fig. [[fig:two_networks]]. + +** Some references + + - Services: {{{doc_services}}} + +* Providers: to replicate your experiment + + #+BEGIN_note + The resources that are used for your experiment are acquired through a + provider. Providers are a mean to decouple the infrastructure code (the code + that gets the resources) from the code that runs the experiment. Changing the + provider allows to replicate the experiment on another testbed. + #+END_note + + Originally it was used to iterate on the code locally (using the Vagrant + provider) and to only test on Grid'5000 when necessary. + + We now have couple of providers that you may picked or mixed. + +** iperf3 on virtual machines on Grid'5000 + + We'll adapt the initial iperf3 example to use virtual machines instead of + bare-metal machine. + + Note that: + + - The configuration object is different + - The experimentation logic is the same + - Some part have been rewritten using modules (see later in the dedicated section). + + #+INCLUDE: exercices/iperf3_vms.py src python + + Using module using the ~play_on~ context manager does not bring back the + results of the commands. Iperf3 let's you write the result of the command on + a file. We just need to scp the file back to our local machine using the + ~fetch~ module. + + +** References + + - Doc: {{{doc_provider}}} + - Sources: {{{src_provider}}} + + +* Variables in {{{enoslib}}} + + Learn how to get 2 nodes from Grid'5000 and start launching remote commands. + +** Discover the ~run~ command and its variants + + Before proceeding you can add this util function to your code. It is only + used to pretty print a python dictionnary. + #+INCLUDE: exercices/run.py :lines "35-39" src python + + And use the ~enoslib.api.run~ function + #+INCLUDE: exercices/run.py :lines "40-47" src python + + Or the ~enoslib.api.run_command~ function + #+INCLUDE: exercices/run.py :lines "48-56" src python + + #+BEGIN_note + ~enoslib.api.run~ is a specialisation of ~enoslib.api.run_command~. + The latter let's you use [[https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html][some fancy patterns]] to determine the list of hosts to run the command on. + + And yes, it uses Ansible behind the scene. + #+END_note + +** Advanced usages + + #+BEGIN_note + For all the remote interactions, {{{enoslib}}} relies on [[https://docs.ansible.com/ansible/latest/index.html][Ansible]]. Ansible + has it own variables management system. + For instance the task ~Gather Facts~ at the beginning of the previous tasks + gathers informations about all/some remote hosts and store them in the + Ansible management system. + #+END_note + + Let's see what Ansible is gathering about the hosts: + + #+INCLUDE: exercices/run.py :lines "58-65" src python + + #+BEGIN_note + {{{enoslib}}} sits in between two worlds: the Python world and the Ansible + world. One common need is to pass a variables from one world to another. + - ~enoslib.api.gather_facts~ is a way to get, in Python, the variables known + by Ansible about each host. + - ~extra_vars~ keyword argument of ~enoslib.api.run~ or ~enoslib.api.run_command~ will + pass variables from Python world to Ansible world (global variable) + - Injecting a key/value in a ~Host.extra~ attribute will make the variable ~key~ available to Ansible. + This makes the variables Host specific. + #+END_note + + The following inject a global variable in the Ansible world + #+INCLUDE: exercices/run.py :lines "65-71" src python + +** Ninja level + + The following is valid and inject in the ~client~ host a specific variable to + keep track of the server IP. + + #+INCLUDE: exercices/run.py :lines "73-81" src python + + #+BEGIN_note + Host level variables are interesting to introduce some dissymetry between + hosts while still using one single command to reach all of them. + #+END_note + + #+BEGIN_question + How to perform simultaneously the ping to the other machine in calling only + once ~run~ or ~run_command~ and using host level variables? + #+END_question + + #+BEGIN_question + We'd like to create 5 ~server~ machines and 5 ~client~ machines and start 5 + *parallel* streams of data using ~iperf3~. To answer this we'll need to learn + a bit more on how variables are handled in {{{enoslib}}}. + #+END_question + +** Putting all together + Access the full file: [[file:exercices/run.py]] + +** Some references + + - G5k configuration schema: {{{doc_g5k_schema}}} + - API Reference: {{{doc_api}}} + +* Modules: for safer remote actions + + In this section we'll discover the idiomatic way of managing resources on the + remote hosts. A resource can be anything: a user, a file, a line in a file, a + repo on Gitlab, a firewall rule ... + + +** Idempotency + + Let's assume you want to create a user (~foo~). With the ~run_command~ this would look like: + + #+BEGIN_SRC python :noeval + run_command("useradd -m foo", roles=role) + #+END_SRC + + The main issue with this code is that it is not *idempotent*. Running it once + will applied the effect (create the user). But, as soon as the user exist in + the system, this will raise an error. + +** One reason why idempotency is important + + Let's consider the following snippet (mispelling the second command is intentional) + #+BEGIN_SRC python :noeval + run_command("useradd -m foo", roles=role) + run_command("mkdirz plop") + #+END_SRC + Executing the above leads the system with the user ~foo~ created but the the + directory ~plop~ not created since the second command fails. + + So what you want to do is to fix the second command and re-run the snippet again. + But, you can't do that because ~useradd~ isn't idempotent. + +** Idempotency trick + + One easy solution is to protect your call to non idempotent commands with + some ad'hoc tricks + + Here it can look like this: + + #+BEGIN_SRC python :noeval + run_command("id foo || useradd -m foo", roles=role) + run_command("mkdir -p plop") + #+END_SRC + + *What's wrong with that* + + - The trick depends on the command + - Re-reading the code is more complex: the code focus on the **how** not the **what** + +** General idempotency + + The idiomatic solution is to use modules (inherited from the Ansible + Modules). The modules are specified in a *declarative* way and they ensure + *idempotency* for most of them. + + So rewriting the example with modules looks like: + #+BEGIN_SRC python :noeval + with play_on(roles=roles) as p: + p.user(name="foo", state="present", create_home="yes") + p.file(name="plop", state="directory") + #+END_SRC + + ~enoslib.api.play_on~ is the entry point to the module system. + + You can run this code as many times as you want without any error. You'll + eventually find one user ~foo~ and one directory ~plop~ in your target + systems. + + They are more than 2500 modules: https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html + + If you can't find what you want you must know that: + - Writing your own module is possible + - Falling back to the idempotency trick is reasonable + +* Tasks: to organize your experiment + + To discover the Task API, head to {{{doc_tasks}}}. + + The examples are written for Vagrant but may be changed to whatever provider you like/have. + + #+BEGIN_question + Adapt the ~iperf3~ example to provide a command line + - Either using G5k physical machines: + #+BEGIN_SRC bash + # deploy the dependencies of the experimentation using the G5k provider + myperf g5k + + # launch a performance measurement + # ideally exposes all the iperf3 client options there ;) + myperf bench -t 120 + + # Backup the reports / influxdb database + myperf backup + #+END_SRC + + # Destroy the ressources on Grid'5000 + myperf destroy + + - Either using the virtual machines on Grid'5000: + #+BEGIN_SRC bash + # deploy the dependencies of the experimentation using the G5k provider + myperf vm5k + + # Subsequent command line should be the same as above + # enjoy :) + #+END_SRC + #+END_question + diff --git a/tuto1/index.tex b/tuto1/index.tex new file mode 100644 index 0000000..2525d89 --- /dev/null +++ b/tuto1/index.tex @@ -0,0 +1,569 @@ +% Created 2019-10-17 jeu. 01:05 +% Intended LaTeX compiler: pdflatex +\documentclass[11pt]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{graphicx} +\usepackage{grffile} +\usepackage{longtable} +\usepackage{wrapfig} +\usepackage{rotating} +\usepackage[normalem]{ulem} +\usepackage{amsmath} +\usepackage{textcomp} +\usepackage{amssymb} +\usepackage{capt-of} +\usepackage{hyperref} +\author{Matthieu Simonin} +\date{} +\title{Distributed experiments on Grid'5000 \ldots{} and beyond !} +\hypersetup{ + pdfauthor={Matthieu Simonin}, + pdftitle={Distributed experiments on Grid'5000 \ldots{} and beyond !}, + pdfkeywords={}, + pdfsubject={}, + pdfcreator={Emacs 26.1 (Org mode 9.1.9)}, + pdflang={English}} +\begin{document} + +\maketitle +\tableofcontents + + +\section{Foreword} +\label{sec:org40b18b0} + +\section{Setup on Grid'5000} +\label{sec:orgec7b370} + +Connect to a Grid'5000 frontend of your choice. + +\begin{itemize} +\item create a new directory to host all the scripts of the session +\item bootstrap a new python3 virtualenv +\item install EnOSlib and configure the access to the API +\item you'll also want to have ipython and ipdb installed +\end{itemize} + +\begin{verbatim} +$frontend: mkdir enoslib_seminar +$frontend: cd enoslib_seminar +$frontend: virtualenv --python=python3 venv +$frontend: source venv/bin/activate +$frontend(venv): pip install enoslib ipython ipdb +$frontend(venv): echo ' +verify_ssl: False +' > ~/.python-grid5000.yaml + +\end{verbatim} + +\section{EnOSlib warmup on Grid'5000} +\label{sec:org54c7eac} + +Learn how to get 2 nodes from Grid'5000 and start launching commands. + +\subsection{Reserve 2 nodes} +\label{sec:org543c543} + +\begin{note} +With EnOSlib you first describe your resource requirements using an abstract +resource description. +Note that the network should be explictly stated. +\end{note} + +Write the following python script in a file \texttt{run.py}. If needed adapt the +\texttt{CLUSTER} and \texttt{SITE} variables. + +\begin{verbatim} +from enoslib.api import run, run_command, gather_facts +from enoslib.infra.enos_g5k.provider import G5k +from enoslib.infra.enos_g5k.configuration import Configuration, NetworkConfiguration + +import logging + + +logging.basicConfig(level=logging.INFO) + + +SITE = "rennes" +CLUSTER = "paravance" + +network = NetworkConfiguration(id="n1", + type="prod", + roles=["my_network"], + site=SITE) + +conf = Configuration.from_settings(job_name="enoslib_tutorial", + job_type="allow_classic_ssh")\ + .add_network_conf(network)\ + .add_machine(roles=["server"], + cluster=CLUSTER, + nodes=1, + primary_network=network)\ + .add_machine(roles=["client"], + cluster=CLUSTER, + nodes=1, + primary_network=network)\ + .finalize() + +provider = G5k(conf) +roles, networks = provider.init() +\end{verbatim} + +For the sake of curiosity let's inspect the roles and networks data +structures using ipython. + +\begin{verbatim} +$frontend (venv): ipython +In [1]: run run.py +# ... +# ... +In [2]: roles +# ... +In [3]: networks +\end{verbatim} + +\begin{note} +The abstract resource description is concretized by the call to the +\texttt{provider.init} method. \texttt{roles} and \texttt{networks} contains the concrete machines +and networks given by Grid'5000. +Check the attributes of the Host data structure in the code: \url{https://gitlab.inria.fr/discovery/enoslib/blob/v4.8.1/enoslib/host.py\#L8-14} +\end{note} + +\subsection{Using the run command and its variants} +\label{sec:org4f0ed16} + +For this part you have two choices to run the examples: +\begin{itemize} +\item (prefered) append it in the previous file and re-run the file (yes this is safe to do so) +\item write the example in the previously open ipython console +\end{itemize} + +\subsubsection{Basics usages} +\label{sec:org7f40ca6} + +Before proceeding you can add this util function to your code. It only used +to pretty print a python dictionnary. +\begin{verbatim} +def pprint(d): + import json + print(json.dumps(d, indent=4)) +\end{verbatim} + +And use the \texttt{enoslib.api.run} function +\begin{verbatim} +server = roles["server"][0] +# --- +# Using run +# -------------------------------------------------------------------- +result = run(f"ping -c 5 {server.address}", roles["client"]) +pprint(result) +\end{verbatim} + +Or the \texttt{enoslib.api.run\_command} function +\begin{verbatim} +# --- +# Using run_command 1/2 +# -------------------------------------------------------------------- +result = run_command(f"ping -c 5 {server.address}", + pattern_hosts="client", + roles=roles) +pprint(result) +\end{verbatim} + +\begin{note} +\texttt{enoslib.api.run} is a specialisation of \texttt{enoslib.api.run\_command}. +The latter let's you use \href{https://docs.ansible.com/ansible/latest/user\_guide/intro\_patterns.html}{some fancy patterns} to determine the list of hosts to run the command on. + +And yes, it uses Ansible behind the scene. +\end{note} + +\subsubsection{Advanced usages} +\label{sec:org0e02fbb} + +\begin{note} +For all the remote interactions, EnOSlib relies on \href{https://docs.ansible.com/ansible/latest/index.html}{Ansible}. Ansible +has it own variables management system. +For instance the task \texttt{Gather Facts} at the beginning of the previous tasks +gathers informations about all/some remote hosts and store them in the +Ansible management system. +\end{note} + +Let's see what Ansible is gathering about the hosts: +\begin{verbatim} +# --- +# Gather facts +# -------------------------------------------------------------------- +result = gather_facts(roles=roles) +pprint(result) +\end{verbatim} +\begin{note} +\texttt{enoslib.api.gather\_facts} is a way to get, in python, the variables known +by Ansible about each host. +\end{note} + +\begin{note} +EnOSlib sits in between two worlds: the Python world and the Ansible +world. One common need is to pass a variables from one world to another. +\begin{itemize} +\item \texttt{enoslib.api.gather\_facts} is a way to get, in Python, the variables known +by Ansible about each host. +\item \texttt{extra\_vars} keyword argument of \texttt{enoslib.api.run} or \texttt{enoslib.api.run\_command} will +pass variables from Python world to Ansible world (global variable) +\item Injecting a key/value in a \texttt{Host.extra} attribute will make the variable \texttt{key} available to Ansible. +This makes the variables Host specific. +\end{itemize} +\end{note} + +The following inject a global variable in the Ansible world +\begin{verbatim} +# --- +# Passing a variable to the Ansible World using a global level variable +# -------------------------------------------------------------------- +server = roles["server"][0] +extra_vars={"server_ip": server.address} +result = run("ping -c 5 {{ server_ip }}", roles["client"], extra_vars=extra_vars) +\end{verbatim} + +\subsubsection{Ninja level} +\label{sec:org0edd362} + +The following is valid and inject in the client host a specific variable to +keep of the server IP. + +\begin{verbatim} +# --- +# Passing a variable to the Ansible World using a host level variable +# -------------------------------------------------------------------- +server = roles["server"][0] +client.extra.update(server_ip=server.address) +result = run("ping -c 5 {{ server_ip }}", roles["client"]) +\end{verbatim} + +\begin{note} +Host level variables are interesting to introduce some dissymetry between +hosts using the same intruction in your Python Code. +\end{note} + +\begin{question} +How to perform simultaneously the ping to the other machine in calling only +once \texttt{run} or \texttt{run\_command} and using host level variables? +\end{question} + +\subsubsection{All together} +\label{sec:org31aadd8} +Access the full file: \url{exercices/run.py} + +\subsubsection{Some references} +\label{sec:orga6331bb} + +\begin{itemize} +\item G5k configuration schema: \url{https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html\#g5k-schema} +\item API Reference: \url{https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html} +\end{itemize} +\section{Iperf3 playground} +\label{sec:org6a4417e} + +Let's experiment with \href{https://iperf.fr/}{iperf3}: a network bandwidth measuring tool. The goal is +to deploy a simple benchmark between two hosts. + +We'll also instrument the deployment in order to visualize in real-time the +network traffic between the hosts. Since this is super common, EnOSlib +exposes a \texttt{monitoring service} that lets you deploy very quickly what is +needed. + +\subsection{First attempt} +\label{sec:orgbfbe8c2} + +We adapt the previous example in the following script: +\begin{verbatim} +from enoslib.api import run_command, wait_ssh +from enoslib.infra.enos_g5k.provider import G5k +from enoslib.infra.enos_g5k.configuration import Configuration, NetworkConfiguration +from enoslib.service import Monitoring + +import logging + + +def pprint(d): + import json + print(json.dumps(d, indent=4)) + + +logging.basicConfig(level=logging.INFO) + + +SITE = "rennes" +CLUSTER = "paravance" + +network = NetworkConfiguration(id="n1", + type="prod", + roles=["my_network"], + site=SITE) + +conf = Configuration.from_settings(job_name="enoslib_tutorial", + job_type="allow_classic_ssh")\ + .add_network_conf(network)\ + .add_machine(roles=["server"], + cluster=CLUSTER, + nodes=1, + primary_network=network)\ + .add_machine(roles=["client"], + cluster=CLUSTER, + nodes=1, + primary_network=network)\ + .finalize() + +provider = G5k(conf) +roles, networks = provider.init() +wait_ssh(roles) + +# This deploys a monitoring stack +m = Monitoring(collector=roles["server"], + agent=roles["server"] + roles["client"], + ui=roles["server"]) +m.deploy() + + +# Below is the experimentation logic +# It installs the bare minimum to run iperf3 +# The machine with the role 'server' is used to run a iperf3 server +# started in the background in a tmux +# The machine with the role 'client' connects to that server +# Report is printed in stdout +server = roles["server"][0] +run_command("apt update && apt install -y iperf3 tmux", roles=roles) +run_command("tmux new-session -d 'exec iperf3 -s'", pattern_hosts="server", roles=roles) +result = run_command(f"iperf3 -c {server.address} -t 30", pattern_hosts="client", roles=roles) +pprint(result) +\end{verbatim} + +Now, let's visualize the network traffic in real-time ! +\begin{note} +Usually I follow this to access services running inside Grid'5000: +\url{https://discovery.gitlabpages.inria.fr/enoslib/tutorials/grid5000.html\#accessing-http-services-inside-grid-5000} + +So to access the monitoring dashboard you need to connect using your browser +to the machine `server` on the port 3000. +\end{note} + +You should be able to visualize such a thing (after a bit of point and clicks). + +\href{./iperf3.png}{\begin{figure}[htbp] +\centering +\includegraphics[width=.9\linewidth]{./figs/iperf3.png} +\caption{\label{fig:orgd2b4ea5} +iperf3 / monitoring} +\end{figure}} + +\subsection{Discussion} +\label{sec:org8354e5d} + +\begin{itemize} +\item What's good is: \ldots{} +\item What's wrong is: \ldots{} +\end{itemize} + +\subsection{A better approach (maybe)} +\label{sec:org16d8bce} +Access the full file: \url{exercices/iperf3\_better.py} + +\section{{\bfseries\sffamily TODO} Partial wrap-up} +\label{sec:orgb35f46e} + +\begin{itemize} +\item Configuration for G5k +\begin{itemize} +\item non deploy / deploy +\item prod network / kavlan +\end{itemize} +\item Services +\end{itemize} + +\section{Modules: for safer remote actions} +\label{sec:org1ae5927} + +In this section we'll discover the idiomatic way of managing resources on the +remote hosts. A resource can be anything: a user, a file, a line in a file, a +repo on Gitlab, a firewall rule \ldots{} + + +\subsection{Idempotency} +\label{sec:org81e26b7} + +Let's assume you want to create a user (\texttt{foo}). With the \texttt{run\_command} this would look like: + +\begin{verbatim} +run_command("useradd -m foo", roles=role) +\end{verbatim} + +The main issue with this code is that it is not \textbf{idempotent}. Running it once +will applied the effect (create the user). But, as soon as the user exist in +the system, this will raise an error. + +\subsection{One reason why idempotency is important} +\label{sec:org53c14cb} + +Let's consider the following snippet (mispelling the second command is intentional) +\begin{verbatim} +run_command("useradd -m foo", roles=role) +run_command("mkdirz plop") +\end{verbatim} +Executing the above leads the system with the user \texttt{foo} created but the the +directory \texttt{plop} not created since the second command fails. + +So what you want to do is to fix the second command and re-run the snippet again. +But, you can't do that because \texttt{useradd} isn't idempotent. + +\subsection{Idempotency trick} +\label{sec:orgb15c5ef} + +One easy solution is to protect your call to non idempotent commands with +some ad'hoc tricks + +Here it can look like this: + +\begin{verbatim} +run_command("id foo || useradd -m foo", roles=role) +run_command("mkdir -p plop") +\end{verbatim} + +\textbf{What's wrong with that} + +\begin{itemize} +\item The trick depends on the command +\item Re-reading the code is more complex: the code focus on the \textbf{\textbf{how}} not the \textbf{\textbf{what}} +\end{itemize} + +\subsection{General idempotency} +\label{sec:org4061e60} + +The idiomatic solution is to use modules (inherited from the Ansible +Modules). The modules are specified in a \textbf{declarative} way and they ensure +\textbf{idempotency} for most of them. + +So rewriting the example with modules looks like: +\begin{verbatim} +with play_on(roles=roles) as p: + p.user(name="foo", state="present", create_home="yes") + p.file(name="plop", state="directory") +\end{verbatim} + +You can run this code as many times as you want without any error. You'll +eventually find one user \texttt{foo} and one directory \texttt{plop} in your target +systems. + + +They are more than 2500 modules: \url{https://docs.ansible.com/ansible/latest/modules/list\_of\_all\_modules.html} + +If you can't find what you want you must know that: +\begin{itemize} +\item Writing your own module is possible +\item Falling back to the idempotency trick is reasonable +\end{itemize} + +\section{Providers: to replicate your experiment} +\label{sec:orgfc2ec82} + +The resources that are used for your experiment are acquired through a +provider. Providers are a mean to decouple the infrastructure code (the code +that get the resources) from the code that runs the experiment. Changing the +provider allows to replicate the experiment on another testbed. + +Originally it was used to iterate on the code locally (using the Vagrant +provider) and to only test on Grid'5000 when necessary. + +We now have couple of providers that you may picked or mixed. + +\subsection{iperf3 on virtual machines on Grid'5000} +\label{sec:org162cac9} + +We'll adapt the initial iperf3 example to use virtual machines instead of +bare-metal machine. + +Note that: + +\begin{itemize} +\item The configuration object is different +\item The experimentation logic is the same (rewritten using modules when it applies) +\end{itemize} + +\begin{verbatim} +from enoslib.api import play_on, wait_ssh +from enoslib.infra.enos_vmong5k.provider import VMonG5k +from enoslib.infra.enos_vmong5k.configuration import Configuration + +import logging +import os + +logging.basicConfig(level=logging.DEBUG) + +CLUSTER = "paravance" + +# path to the inventory +inventory = os.path.join(os.getcwd(), "hosts") + +# claim the resources +conf = Configuration.from_settings(job_name="enoslib_tutorial", gateway=True)\ + .add_machine(roles=["server"], + cluster=CLUSTER, + number=1, + flavour="large")\ + .add_machine(roles=["client"], + cluster=CLUSTER, + number=1, + flavour="medium")\ + .finalize() + +provider = VMonG5k(conf) + +roles, networks = provider.init() +wait_ssh(roles) + +# Below is the experimentation logic +# It installs the bare minimum to run iperf3 +# The machine with the role 'server' is used to run a iperf3 server +# started in the background in a tmux +# The machine with the role 'client' connects to that server +# Report is printed in stdout +server = roles["server"][0] + +with play_on(roles=roles) as p: + p.apt(name=["iperf3", "tmux"], state="present") + +with play_on(pattern_hosts="server", roles=roles) as p: + p.shell("tmux new-session -d 'exec iperf3 -s'") + +with play_on(pattern_hosts="client", roles=roles) as p: + p.shell(f"iperf3 -c {server.address} -t 30") + +with play_on(pattern_hosts="client", roles=roles) as p: + p.shell(f"iperf3 -c {server.address} -t 30 --logfile iperf3.out") + p.fetch(src="iperf3.out", dest="iperf3.out") +\end{verbatim} + +Using module using the \texttt{play\_on} context manager does not bring back the +results of the commands. Iperf3 let's you write the result of the command on +a file. We just need to scp the file back to our local machine using the +\texttt{fetch} module. + +\subsection{Ninja level} +\label{sec:orge484eb8} + +Creates 5 \texttt{server} machines and 5 \texttt{client} machines and start 5 \textbf{parallel} +streams of data using \texttt{iperf3}. + +\subsection{References} +\label{sec:org9c0017b} + +\begin{itemize} +\item Doc: \url{https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html} +\item Sources: \url{https://gitlab.inria.fr/discovery/enoslib/tree/v4.8.1/enoslib/infra} +\end{itemize} + +\section{Tasks: to organize your experiment} +\label{sec:org7f002c7} + +To discover the Task API, head to \url{https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html}. +The examples are written for Vagrant but may be changed to whatever provider you like/have. +\end{document} diff --git a/tuto1/timeline.css b/tuto1/timeline.css new file mode 100644 index 0000000..268b0de --- /dev/null +++ b/tuto1/timeline.css @@ -0,0 +1,1035 @@ +@import url('https://fonts.googleapis.com/css?family=Crimson+Text:700|Fira+Sans:400,700'); +html { + font-family: sans-serif; + line-height: 1.15; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} +body { + margin: 0 +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +main, +menu, +nav, +section, +summary { + display: block +} +audio, +canvas, +progress, +video { + display: inline-block +} +audio:not([controls]) { + display: none; + height: 0 +} +progress { + vertical-align: baseline +} +[hidden], +template { + display: none +} +a { + background-color: transparent; + -webkit-text-decoration-skip: objects +} +a:active, +a:hover { + outline-width: 0 +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted +} +b, +strong { + font-weight: inherit; + font-weight: bolder +} +dfn { + font-style: italic +} +h1 { + font-size: 2em; + margin: .67em 0 +} +mark { + background-color: #ff0; + color: #000 +} +small { + font-size: 80% +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} +sub { + bottom: -.25em +} +sup { + top: -.5em +} +img { + border-style: none +} +svg:not(:root) { + overflow: hidden +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} +figure { + margin: 1em 40px +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible +} +button, +input, +optgroup, +select, +textarea { + font: inherit; + margin: 0 +} +optgroup { + font-weight: 700 +} +button, +input { + overflow: visible +} +button, +select { + text-transform: none +} +[type=reset], +[type=submit], +button, +html [type=button] { + -webkit-appearance: button +} +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0 +} +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText +} +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: .35em .625em .75em +} +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal +} +textarea { + overflow: auto +} +[type=checkbox], +[type=radio] { + box-sizing: border-box; + padding: 0 +} +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto +} +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px +} +[type=search]::-webkit-search-cancel-button, +[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} +::-webkit-input-placeholder { + color: inherit; + opacity: .54 +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit +} +.org-bold { + font-weight: 700 +} +.org-bold-italic { + font-weight: 700; + font-style: italic +} +.org-buffer-menu-buffer { + font-weight: 700 +} +.org-builtin { + color: #483d8b +} +.org-button { + color: #3a5fcd; + text-decoration: underline +} +.org-calendar-month-header { + color: #00f +} +.org-calendar-today { + text-decoration: underline +} +.org-calendar-weekday-header { + color: #008b8b +} +.org-calendar-weekend-header { + color: #b22222 +} +.org-comint-highlight-input { + font-weight: 700 +} +.org-comint-highlight-prompt { + color: #0000cd +} +.org-comment, +.org-comment-delimiter { + color: #b22222 +} +.org-constant { + color: #008b8b +} +.org-diary { + color: red +} +.org-doc { + color: #8b2252 +} +.org-error { + color: red; + font-weight: 700 +} +.org-escape-glyph { + color: brown +} +.org-file-name-shadow { + color: #7f7f7f +} +.org-fringe { + background-color: #f2f2f2 +} +.org-function-name { + color: #00f +} +.org-glyphless-char { + font-size: 60% +} +.org-header-line { + color: #333; + background-color: #e5e5e5 +} +.org-help-argument-name { + font-style: italic +} +.org-highlight { + background-color: #b4eeb4 +} +.org-holiday { + background-color: pink +} +.org-info-header-node { + color: brown; + font-weight: 700; + font-style: italic +} +.org-info-header-xref { + color: #3a5fcd; + text-decoration: underline +} +.org-info-index-match { + background-color: #ff0 +} +.org-info-menu-header { + font-weight: 700 +} +.org-info-menu-star { + color: red +} +.org-info-node { + color: brown; + font-weight: 700; + font-style: italic +} +.org-info-title-1 { + font-size: 172%; + font-weight: 700 +} +.org-info-title-2 { + font-size: 144%; + font-weight: 700 +} +.org-info-title-3 { + font-size: 120%; + font-weight: 700 +} +.org-info-title-4 { + font-weight: 700 +} +.org-info-xref { + color: #3a5fcd; + text-decoration: underline +} +.org-italic { + font-style: italic +} +.org-keyword { + color: #a020f0 +} +.org-lazy-highlight { + background-color: #afeeee +} +.org-link { + color: #3a5fcd; + text-decoration: underline +} +.org-link-visited { + color: #8b008b; + text-decoration: underline +} +.org-makefile-makepp-perl { + background-color: #bfefff +} +.org-makefile-space { + background-color: #ff69b4 +} +.org-makefile-targets { + color: #00f +} +.org-match { + background-color: #ff0 +} +.org-next-error { + background-color: gtk_selection_bg_color +} +.org-nobreak-space { + color: brown; + text-decoration: underline +} +.org-org-agenda-calendar-event, +.org-org-agenda-calendar-sexp { + color: #000; + background-color: #fff +} +.org-org-agenda-clocking { + background-color: #ff0 +} +.org-org-agenda-column-dateline { + background-color: #e5e5e5 +} +.org-org-agenda-current-time { + color: #b8860b +} +.org-org-agenda-date { + color: #00f +} +.org-org-agenda-date-today { + color: #00f; + font-weight: 700; + font-style: italic +} +.org-org-agenda-date-weekend { + color: #00f; + font-weight: 700 +} +.org-org-agenda-diary { + color: #000; + background-color: #fff +} +.org-org-agenda-dimmed-todo { + color: #7f7f7f +} +.org-org-agenda-done { + color: #228b22 +} +.org-org-agenda-filter-category, +.org-org-agenda-filter-effort, +.org-org-agenda-filter-regexp, +.org-org-agenda-filter-tags { + color: #000; + background-color: #bfbfbf +} +.org-org-agenda-restriction-lock { + background-color: #eee +} +.org-org-agenda-structure { + color: #00f +} +.org-org-archived, +.org-org-block { + color: #7f7f7f +} +.org-org-block-begin-line, +.org-org-block-end-line { + color: #b22222 +} +.org-org-checkbox { + font-weight: 700 +} +.org-org-checkbox-statistics-done { + color: #228b22; + font-weight: 700 +} +.org-org-checkbox-statistics-todo { + color: red; + font-weight: 700 +} +.org-org-clock-overlay { + color: #000; + background-color: #d3d3d3 +} +.org-org-code { + color: #7f7f7f +} +.org-org-column, +.org-org-column-title { + background-color: #e5e5e5 +} +.org-org-column-title { + font-weight: 700; + text-decoration: underline +} +.org-org-date { + color: #a020f0; + text-decoration: underline +} +.org-org-date-selected { + color: red +} +.org-org-default { + color: #000; + background-color: #fff +} +.org-org-document-info { + color: #191970 +} +.org-org-document-info-keyword { + color: #7f7f7f +} +.org-org-document-title { + color: #191970; + font-weight: 700 +} +.org-org-done { + color: #228b22; + font-weight: 700 +} +.org-org-drawer { + color: #00f +} +.org-org-ellipsis { + color: #b8860b; + text-decoration: underline +} +.org-org-footnote { + color: #a020f0; + text-decoration: underline +} +.org-org-formula { + color: #b22222 +} +.org-org-headline-done { + color: #bc8f8f +} +.org-org-hide { + color: #fff +} +.org-org-latex-and-related { + color: #8b4513 +} +.org-org-level-1 { + color: #00f +} +.org-org-level-2 { + color: sienna +} +.org-org-level-3 { + color: #a020f0 +} +.org-org-level-4 { + color: #b22222 +} +.org-org-level-5 { + color: #228b22 +} +.org-org-level-6 { + color: #008b8b +} +.org-org-level-7 { + color: #483d8b +} +.org-org-level-8 { + color: #8b2252 +} +.org-org-link { + color: #3a5fcd; + text-decoration: underline +} +.org-org-list-dt { + font-weight: 700 +} +.org-org-macro { + color: #8b4513 +} +.org-org-meta-line { + color: #b22222 +} +.org-org-mode-line-clock { + color: #000; + background-color: #bfbfbf +} +.org-org-mode-line-clock-overrun { + color: #000; + background-color: red +} +.org-org-priority { + color: #a020f0 +} +.org-org-quote { + color: #7f7f7f +} +.org-org-scheduled { + color: #006400 +} +.org-org-scheduled-previously { + color: #b22222 +} +.org-org-scheduled-today { + color: #006400 +} +.org-org-sexp-date, +.org-org-special-keyword { + color: #a020f0 +} +.org-org-table { + color: #00f +} +.org-org-tag, +.org-org-tag-group { + font-weight: 700 +} +.org-org-target { + text-decoration: underline +} +.org-org-time-grid { + color: #b8860b +} +.org-org-todo { + color: red; + font-weight: 700 +} +.org-org-upcoming-deadline { + color: #b22222 +} +.org-org-verbatim, +.org-org-verse { + color: #7f7f7f +} +.org-org-warning { + color: red; + font-weight: 700 +} +.org-outline-1 { + color: #00f +} +.org-outline-2 { + color: sienna +} +.org-outline-3 { + color: #a020f0 +} +.org-outline-4 { + color: #b22222 +} +.org-outline-5 { + color: #228b22 +} +.org-outline-6 { + color: #008b8b +} +.org-outline-7 { + color: #483d8b +} +.org-outline-8 { + color: #8b2252 +} +.org-preprocessor { + color: #483d8b +} +.org-regexp-grouping-backslash, +.org-regexp-grouping-construct { + font-weight: 700 +} +.org-region { + background-color: gtk_selection_bg_color +} +.org-secondary-selection { + background-color: #ff0 +} +.org-shadow { + color: #7f7f7f +} +.org-show-paren-match { + background-color: #40e0d0 +} +.org-show-paren-mismatch { + color: #fff; + background-color: #a020f0 +} +.org-string { + color: #8b2252 +} +.org-success { + color: #228b22; + font-weight: 700 +} +.org-table-cell { + color: #e5e5e5; + background-color: #00f +} +.org-tooltip { + color: #000; + background-color: #ffffe0 +} +.org-trailing-whitespace { + background-color: red +} +.org-type { + color: #228b22 +} +.org-underline { + text-decoration: underline +} +.org-variable-name { + color: sienna +} +.org-warning { + color: #ff8c00; + font-weight: 700 +} +.org-warning-1 { + color: red; + font-weight: 700 +} +body { + width: 95%; + margin: 2%; + font: normal normal normal 16px/1.6em 'Fira Sans', sans-serif; + color: #333 +} +@media (min-width: 769px) { + body { + width: 700px; + margin-left: 5vw + } +} +::-moz-selection { + background: #d6edff +} +::selection { + background: #d6edff +} +.title { + margin: auto; + color: #000 +} +.subtitle, +.title { + text-align: center +} +.subtitle { + font-size: medium; + font-weight: 700 +} +.abstract { + margin: auto; + width: 80%; + font-style: italic +} +.abstract p:last-of-type:before { + content: " "; + white-space: pre +} +.status { + font-size: 90%; + margin: 2em auto +} +[class^=section-number-] { + margin-right: .5em +} +[id^=orgheadline] { + clear: both +} +#footnotes { + font-size: 90% +} +.footpara { + display: inline; + margin: .2em auto +} +.footdef { + margin-bottom: 1em +} +.footdef sup { + padding-right: .5em +} +a { + color: #527d9a; + text-decoration: none +} +a:hover { + color: #035; + border-bottom: 1px dotted +} +figure { + padding: 0; + margin: 0; + text-align: center +} +img { + max-width: 100%; + vertical-align: middle +} +.MathJax_Display { + font-size: 90%; + margin: 0!important; + width: 90%!important +} +h1, +h2, +h3, +h4, +h5, +h6 { + color: #a5573e; + line-height: 1.6em; + font-weight: bold; + font-family: 'Crimson Text', serif +} +h4, +h5, +h6 { + font-size: 1em +} +dt { + font-weight: 700 +} +table { + margin: auto; + border-top: 2px solid; + border-collapse: collapse +} +table, +thead { + border-bottom: 2px solid +} +table td+td, +table th+th { + border-left: 1px solid gray +} +table tr { + border-top: 1px solid #d3d3d3 +} +td, +th { + padding: 5px 10px; + vertical-align: middle +} +caption.t-above { + caption-side: top +} +caption.t-bottom { + caption-side: bottom +} +th.org-center, +th.org-left, +th.org-right { + text-align: center +} +td.org-right { + text-align: right +} +td.org-left { + text-align: left +} +td.org-center { + text-align: center +} +code { + padding: 2px 5px; + margin: auto 1px; + border: 1px solid #ddd; + border-radius: 3px; + background-clip: padding-box; + color: #333; + font-size: 80% +} +blockquote { + margin: 1em 2em; + padding-left: 1em; + border-left: 3px solid #ccc +} +kbd { + background-color: #f7f7f7; + font-size: 80%; + margin: 0 .1em; + padding: .1em .6em +} +.todo { + background-color: red; + padding: 2px +} +.done, +.todo { + color: #fff; + border-radius: 3px; + background-clip: padding-box; + font-size: 80%; + font-family: Lucida Console, monospace +} +.done { + background-color: green; + padding: 3px +} +.priority { + color: orange; + font-family: Lucida Console, monospace +} +#table-of-contents li { + clear: both +} +.tag { + font-family: Lucida Console, monospace; + font-size: 70%; + font-weight: 400 +} +.tag span { + padding: 0 5px; + float: right; + margin-right: 5px; + border: 1px solid #bbb; + border-radius: 3px; + background-clip: padding-box; + color: #333; + background-color: #eee; + line-height: 1.6 +} +.timestamp { + color: #bebebe; + font-size: 90% +} +.timestamp-kwd { + color: #5f9ea0 +} +.org-right { + margin-left: auto; + margin-right: 0; + text-align: right +} +.org-left { + margin-left: 0; + margin-right: auto; + text-align: left +} +.org-center { + margin-left: auto; + margin-right: auto; + text-align: center +} +.underline { + text-decoration: underline +} +#postamble p, +#preamble p { + font-size: 90%; + margin: .2em +} +p.verse { + margin-left: 3% +} +pre { + border: 1px solid #ccc; + box-shadow: 3px 3px 3px #eee; + font-family: Lucida Console, monospace; + margin: 1.2em; + padding: 8pt; + font-size: 80%; + background: #3f3f3f; + color: #dcdccc; +} +pre.src { + overflow: auto; + padding-top: 1.2em; + position: relative +} +pre.src:hover:before { + display: inline +} +pre.src-sh:before { + content: "sh" +} +pre.src-bash:before { + content: "bash" +} +pre.src-emacs-lisp:before { + content: "Emacs Lisp" +} +pre.src-R:before { + content: "R" +} +pre.src-org:before { + content: "Org" +} +pre.src-cpp:before { + content: "C++" +} +pre.src-c:before { + content: "C" +} +pre.src-html:before { + content: "HTML" +} +pre.src-javascript:before, +pre.src-js:before { + content: "Javascript" +} +pre.src-makefile:before { + content: "Makefile" +} +.inlinetask { + background: #ffc; + border: 2px solid gray; + margin: 10px; + padding: 10px +} +#org-div-home-and-up { + font-size: 70%; + text-align: right; + white-space: nowrap +} +.linenr { + font-size: 90% +} +.code-highlighted { + color: #FFFFE0; + background-color: #284F28; +} +#bibliography { + font-size: 90% +} +#bibliography table { + width: 100% +} +.creator { + display: block +} +@media (min-width: 769px) { + .creator { + display: inline; + float: right + } +} + +.org-src-container > label { + font-size: 75%; +} + +.note { + padding-left: 2em; + border: 1px dashed #00f; + position: relative; +} +.note:before { + display: block; + position: absolute; + left: 0px; + content: "i"; + background: #00f; + border-radius: 0.8em; + -moz-border-radius: 0.8em; + -webkit-border-radius: 0.8em; + color: #ffffff; + display: inline-block; + font-weight: bold; + line-height: 1.6em; + margin-right: 5px; + text-align: center; + width: 1.6em; +} + +@media screen and (min-width: 600px) { + h1 { + font-size: 2em; + } + h2 { + font-size: 1.5em; + } + h3 { + font-size: 1.3em; + } + h1,h2,h3 { + line-height: 1.4em; + } + h4,h5,h6 { + font-size: 1.1em; + } +} + +.question { + padding-left: 2em; + border: 1px dashed #0f0; + position: relative; +} +.question:before { + display: block; + position: absolute; + left: 0px; + content: "?"; + background: #00ff00; + border-radius: 0.8em; + -moz-border-radius: 0.8em; + -webkit-border-radius: 0.8em; + color: #ffffff; + display: inline-block; + font-weight: bold; + line-height: 1.6em; + margin-right: 5px; + text-align: center; + width: 1.6em; +} diff --git a/tuto2/figs/overleaf-v2-editor.png b/tuto2/figs/overleaf-v2-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..6343372093a8514b887e59b83d0f32d5569fb92f GIT binary patch literal 317072 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≠h^<1<Snly^pKOp3}V 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≥3VB3Tn4jbm%9G%+RVE^;9mfE^$r>^F$e&t)es%rB+t=P?TwM<_v zvs(LmWl{6FRRPP_YF*7+td{#b>&z4PtK}CgzP>PY`di%_Hve3+>5AJ5z7ke$#d5P2 zx^8}+eY9!$mqW&<x0L?$dK<CV?RWgG71y`tTw3`2de;9{qE)$%+2-EZ?Vtbd=6dsO zZ;f7W%Rau!w5s%~*WOJvE6dhbh25TJyI5RI@6w~0#Xhq>f0^M~{_Dz4Df`52ZoM-X zPUJs#i6i;$FaLnk^A=w{@?>e)bHyz4l1Zz!y<EPdEjDzSr+)I@&^>YGuHktrm9|=~ zinx1DD{S}Vu9+{DuHM$JKl-d|<t?v`S8uNhX_nKvU(=vvBA>GD?INbD)*9Qw*f-~M zi>|#Jmnu~f6me1O+Kafj6>ia?CaG8Ie>okUy-7P@<IJSfra}LLwuY|Av7Nf&Qp817 zt=XTl*KL^bi0f>yM`ZD{&}}g;di_D)Ce)OzIl~jl@k2OunR02pT9et+u)Ys}PKnLB z9wT0n@hm81-=b3|CNN1B-P&l<8Fk*&?a8nI-|c6b903*gr@&irL^jw<Wju29+#r9f zF6GXVvbVQx9?<RCe_}@uzuk`ozrMfEKVGOJWS;C`^iAov>h!pxX)+gVzMK+zTb0;# zPPQ^iUM4CfaZ0nve97OBny*&<zu+{t{<9?a+=f8$KD~<<?0QAxFWJZ#-&tLC)jR8D za`V@tzgIUioIl^Y<^IjzJNoun`OD9*FcZwFEv@Rcyrxx}73r&QYaJFp>!<d6o$be; znpgb)&d)ZDF~Z(rPk{S2`=rlqcJ`IOE%)wy{?Xyqo8(WYE$7y~)vVU}W|_R~e#O(k zV!k=&^$(xeyxxB4*KYUKSw9cm+EujZp22ae-@h(@`yo3k{NguL{+Tv5OUu9OdE99? zIr%(#x7_B+!qW}a`R~mttF;U6G1!OSd(!>&c--98*SDS9SoUkHt5xEq72#`J{NBvV zKh1lCn}Kb^zRYtA6W3aNeHRk#UVg^(_PPB_-%T?9#@bNyPoAYQx$nHmam$Gl(x=U} z-V`A(RegSn<!{D4=V!fc$z{Ah<?zS3{V(@2`>S31n;9&(dY;U}u2im!&t05m^Pk7X z=Um^KALiNb`!e%&ck;yeOI%Bg{jKNEU)4N2{bsJAf>G)5viCEL>{9!j=Wgoz8*#pF z-I){1t(PYxOa82X|6p=w>XEMpHwClLyRbD_Td42gR?F*g_Iz)G`KI5ClF~2^j{n2Y zvb^^4zjF?svy1<o{`!<#^2^g*|3TA<+N@s=^Mku2Q@5tS-{->bd#3U1naHA7ai6Qt z|DE||{%@lw@97iup3P(~i)Y)Mo0fWJ%3(JR_6VkV4Zh!(oX>h||8kRxl)z=Cl{`DY z%>TVPvfp~odxp^OOZY3&|M@pv+<T`o_1^qez2`Se<DVTcvd&9e<{+>jrjqMsg3-%O zE*i<-GLnBzvCEG8EWP;6&Th@w8|O?cJS7(BWvO&pV^e|YQ{7PaRxPuzm$TM}u1r+- zo%wx^+L^dDY;W0CB(^KAy0oGDR9ODvu4A*z-Y+)GWnW!=J@M7O%!XfIWfnQwvS;t% zePry~EjKTBuc5hKbmFZ?ueYW@cH6t}v8e3r?a}Jr-d~HZE`NFDVRP006R)kl-b&p2 z|CgX~?U5}%%U=J`j^0{+R_kr-)*$w4>n}f3_1^N~;moRE7mshry0|&YCV%5H-#VYi z%g<a_nY^EqU;oO7!u}TrGr3JmE(vGddF*)gl|jr^-+x?JGZq{9R%xsYG@qJz%X_KR z_mG3PWJ9;qg^RAd9m$$q7LfDxTbIstAH&dF8q2bxTc_tPyCEgpyEVKqD|d}~y3f*S zT48&)c7^7y+*4SZoAUkA*4x_4a-3bKtyx=eW=ed?O*XR+{+hvUtlB04As@B6bb=fc zSx?RQq_=8KBCCj`^zs!=OGT$`?<jH?H~lKOc#h!4Q(|me&aD6N$JKYPNWir_7ro{y z$9zvezxGh7*2;>VTFd?&nsPE?+MJ!aDZkh3JT%oXx`XvWWKmo6`g`?vXL~M|<2fSy z;ggpxbi^&HBI8kE<*zT9f_G~UxAB?<ocZ_nx9~#M*JW>SEw!ut_2NJybD3SH)c%z1 z%(K?7o4usleYy&Fb6$Ey%DxRx9Ivho3wnMp;?L^eOl!^7&slJN``L{Gn@S&ZMSZ)G zz-`><-e9Nj(EEJv<?Cv>3u6DT`&yFmStmF4>x6CV>P{S5CMTQq^3TQeEy;IN-c}aw zVvXHvb?w@NdAy~6?^vCcxgWWh-RydA@$1qzS1Yrwui4a^9$&Y?EjBv*`Vqn0(wgfw zuPeD8aDDUe&2l(e+U>sDZRw)UO7;w<OS7(ahd;ix^y{fvp0jLLHSgN8F75lw&jIFJ zbAtk_<7O<IKD|Huuhh~nk1ny7{_9N-+2pY#F4Efb{=E9Q?D<kF?dHCY%0GWx{@vPN zSG`|-m=;-;<ySvdccwqP+1V>A|N7sk{Z+DR@m}d=tAkgsk}}@0RB!*^Ihu#vuP*VE z{Q5HJ`XRFekMtRR6+T{Jx0+Ei{i1Z*{kLlO*Uzq6ASXZjn)lgP)3?e^sb~r7>c6`A zb9>gemUXK_%)*R)W{T-bER;;PUS09frtH6Z`j@K*-tp=L-1+e)BKq7E^QW6XofKRZ zwQhp#|LfaX6%4MszdrUfbXUa|Gac#G$CrN(``Xp2%d<D_Q+d+)8rz&p`4<<=`Feq6 zU!2W0m#L4rZ)K-`@4jqO<xu?febD)Nr(d}$hi)!1d|Ul8kvrgV*VC)hLWSS%nm>2< z%HNN7%LRWgGu53Ev$LROZ{Ci7Y-Ow0``@d(HqZR4cU`op&ibd^Z7+9o>(6+-vfI|~ z!VDwpJ*nSv*Gcl5)bnP@?Jn@W`YiA2p4j(lIurN({Kw84QS0F=zHim(cs8cUzj3u6 zkBV;#JUrvb!AJjgrJt9xu6=e!GS@`kf#u$==p#Q)TwfpWKVx_C#TU^#i<b7uT2I?> z<n?+5(6;J-w{Gn&-~aFH``<c8N@CB>HGlU1&g8iN#rbV63pnqTG<=@-+vvr<lE$Ca zXY3eOoHCWt$o5#m>i<3M#54}$#@UUPdtNgoE3iFCSLiZ5Eh+!`KIi_tJ!c%Qe`*L< zySTP-W<>&<j+bQdlVG=|-zoiJ(<U^Xnznm|(Q~aOXBHlvqPl3yCfBK991~A<hlHJc zbv9&InfBDRmmO2Hw+FZWl09o3#y)lBy`ZborD410DPP^<Y;T%*-(9zdSJuvRZ*_l2 z|2t<N>GBo7%B7b*taY2Q?VE+}jBgvJovjYh*QpEIeQo`PiMg}CTw5n=Rr{nvZ*O(b zbiaM;`|sOlzv(%*zc^@lzntl}W%sK8Zm_fYx9ptEt;Oc?b%E{k<CjmLU+2}m%<rmk z@w1Ghhtjt^>0BDMFJ*1o*_xoq%k?kpSm~ef<%zmU)~U&_jI);Q;+wn5?63MN$L)cu z^4B<Z@9WCG6Fc=5Psqt*wjp~G%a5AAU;ZPEIdnywxNB(c(m$rRRwms(s1>(<w$f?y z;EI{YxU}yERBD@TSJ=GerusH7Z`Y&dn;vJoO<lFvMm0-wOF?L>=*qOlw27zAhAs&* zK6=F5;B}V9q6|@2(e-JkwoOvv3J-X9qoP$@XZ3^{)hXKfhOI85ff@G}i6x}*o=tzH z9%XrmJ7R_8y!A7Zx~7Is3kYtvR2C77^{`a>H2eOcE}e*&mz$mhRV7Pqo>^tS|KRn> z%ujWs4Xb<}D1H0nr3x$A7<}V4@ypq)IM~d7+v9eF54-Nnd)snn-`bX&tsL?{Y)0o& zi3=vT8K0WjnxA8`wz)fr+4J0oc}JSp`CS!~y19SlGP@fWoemwBf0z87Ict-w+$@Kc z`F1sN@v~~xdUKYaTzotG-<G&CsU0jK%oDa|g*e(;U%B+faBj$YH&5>0C;mU(K0oyO zwyUP)Ui`c-t~u!I@mADq;(Na<{JQ_e!)fvik9IA0|C_WgvOMLsa#qy#p096~%(ne` zNO()`Wv^?@6N?z`l;*|y%J2KwV|#q*XSQgGHs8txd(-@0B<&SytZdjh-|kj|R7&&J z)y}!xiqq}wLPAf82Aw_SdbV=v_Lqe@d-Sqr7FlilZFtw<__IHa9aGewU*4D+>ML>Y znB4Q#m-pX$Dj)FYS)cpY7R~Q!&*n7jmf4>_eOFZWsiqQ(`5T?1GVfdnGrPZ-&1Cz$ z6??6&ZIYWLdP?NNzv*c+j5@bhvQF}oy6X2??fZtf`7+EBw>PBCc`?a9c2fKvh1;g9 zm$=KlN;@s6acf0cCihClKAG~fiza5>U$e>1{C2T#z`R_k@GS<@ze-Q*3*4{w_07(l zNXv^c&aNSsr|>`DRCSS~TJL0KKu}o40XvgTYp3Z;tZF}Adg(zN@72Y%zH4iWcCfxF zT{U&X^HV=V)(5z7r+?jC$?$`zXMV+w^|P+)XP;W*n>1^?+;Qf!)*mmhWQooBvq&x9 za$Wwu-;QU+-i9=@T7S9u^?k|T+wZsjI8gm+_pb$V_v&Jv+jAc{b~t@~#+zg2rC(n= zIBb62KkxFNyYFAM-K>8c{e0`25A45Qs_#D4<#uL*qO(cD0fyg>Co)e@)175kyK636 z*{6pc3`s9;=kMQoxMGfdeH>`bPwcnJo?lK))&926M`7C&76Db+W2*oDd_JGc{H9&L zZo|_<`bxRitQqxgKEJfoyYsdI-^(*IjkhKp<%-=`V_9hV^U04V&3{<B8S?dFubrP| zdivh&z5k>>fmV{OU%MB)mulDbCLaa0$ElyH@7GFBoyg!I$@y=x>r3N{Q*9p1&0KzY zcCHcA45QcfX@B>>ESlG9sN<X?Qe^YGA@G{DvGX<-1JM^&JZDmBT-Z$``_h+vKE;xe zc0w+1`R0}<TjOTD-0XV8Q2cUwZ^*P5!&5VC_ZvOy3Z1q=>D0vKQ;MEzFRyXUT2T<g zd^9v`k=EB+D^ivo(~^mgKdNmO`t#P@ke!bFp}99=eXV&zXUp-gaDH!?b+dAX)V5cP zf9Y1Oi2bgZb#>u<t8(czd9my(qmMJbN?vxHM{4cQ;Izz(XWX|unRxumpUdYnp5H31 z`aCtf<kbbn+7HL1t*Rf%*4Dh+v#vJhmh$|XW!dv<l9uVeeAU{$D{ET3Wo_7W|GC$G zx8J|8&{zNU4Q=bv4@-5UKD}T%JIf~c^K-o`%Ee+?#}50yns|I#*0JQ%CTX`GOWD<} z`_(sNVPEs|m9F<YS6xqC@~T8`omMXUs+`SnT5<bVKbrkLwAHLRWZPATsTr4|U8TPU zJ#4d`y1vZ)=#_U1jMn~IEpYdobjjuen;pKEb*;M)6PP;thR4&&(`H-ZrWbDIe0ACB z;?mce+xBSg_ByL`LMMFx=0{oELiYu2ow~e0^l6{&`VUM`MFgY$es+hMUH-^*Qhxc1 zM^i-tH}p6y>e95S=j1kJoOvaF*_^;@-oiU1g(5v7ofl29beBs#E1LSsILNZ-x$#%& zg(Wf0GkyNfey#2vG3D#ACsj--OoqkJ&ShWU*!%s$mtX&HR&)Q*>igUKyVm~w-tYDK zyy_ELBm^J1O;I_*A;{F&!Xb3$?%E2?s5@(S?5>VpVlgG?&fbcRRloOqK6A1ySnuu9 z+>EGS)pqlrZ{EEb1gibc)qS2lbGk0$tfWG@AN_2zSf&`KpL6l?;Ry;3o;YpVvgyIg zd@kzmZ<+D-*4E4Nm*Ov<y>q9M(L{3Yu@0ZI@-nSl&fP&`8jmBq4x2TtelB~s$dWH* z`?Z%JK9^j$yX1b}^p%SraP)9Yx)YQ0AR(GbZ|U07FUra$l7A%xA2s%0=e_P=a^QNT z^ZNGZ(_VOZxba@|=ylm{Ci&v-%4KX(Ey*nNM3w&<rdG_3iSRNOn)uXk*89D7yrt!7 zWtwK|SMQ9>pLWt?-;09$(z(}m`IPnNU)Eri*O6cIP-d~7waMyb$G4<}7dahMs230E z<G*&G$DlX&@JGeN&38=|WG}84y!SH9{rzmqWy~>iy)!MIzkk{>fgya&tjq4qE>6y6 zt^Zzq;*!03g2VUP%%_I0HbmZ4*|B=t>WNaV=j~^I-z>O1enoQF`L~N-KY1Q0B|9tp z@`Apn0^9iB1d1!Bo_=AaGxwVF_Qh-`ZC@uIU$yYXJ+oMT#tE}x{0@7}%l26Ri-Z4@ zL&=Qkee13~4}YFG`>fP;!NA0O1^UU|FO_e-`n)AK$kn~<Q<TJ6PmZ(MkE>#)$j|YP zewlvY>`k`K$ICCp?vFNIvxrgi_Dq4z+pEGVZ1+rauutbb_A|y{Qt8DjdG_2Z<X63x zG>`bZpii^A`_<0~)79cirz>B+h-LbDPIvX;@U7mjkA+@{we|0LR8y2`dF}lB^@-_` z`RZH3zt3p+{quYe!&&jSMdv)utP0+?uw;H}#{QE1e%3Wl^-k^C%*4$fd*L>_{{6=9 z2SR6j`k1Nn_lZ&s+uCDKtJPNAsD7*NG5edMT-{gQb9bsbl*8X2l=&LFyNp-at>?nU zKJD;zF8k~Le&JXC=X`=;mdv`v;p^k9&fnQt{MCK}2S2B3{_5$9b@BUtzuRq5_h$!N zPfvr4dEOoW1&?MJCT~bNDHLnwsL{@BS^8?qx%=Dm@5k(@cydCpN6t2?`79$dTf)CT zKc(D?{!dVJ{?czc%{u3XLC)=MzVe6ntkG7~dA+&*f1T}{4oiurA8qC{+AsH?zfSqP z>-sj9j4qe;+blFM)W=l|yLL@$aOJ%G#9l@@*#A!OmL>0^;x=qx<<cyUE%yzt<XZJd z)$8W#6Fy8Qlcv29I@4M6Cg9Gkz{8q;Z-RR!?+{4Q5)Zw7bgkFnNeriNvbTC$9lCT* zHf*Wwmpb7yTihMF<<h0(FW);U9=7e>h7Co*&p!wJ+*@k0taheAsGEVz9i@koA*^)| zGdsLj_15iee|+KIUyIsD#%E^j7kOL7<9d6$`(nq>j2`Q+a*AHv9U4%ws%`Gm$Hs!Q zW4JT7&RXm?cUs1kHOjNLyy;`}-My%`{h!32a~VCdW{k$}eTOG`25(4wSMw%jFI&6) z9}e|z?+!0L-}mq{_w<72$9(VXu8#lvwyvk0e}Bk7u6Vnu9`*P;M-N+@7yQ5FdS`C| z-+X!d#^UO4j~}%8Mi{5dsr5^BX9lMwyxOu;!ZwfXp0pwNd%oGNa?Z;Z9$w(N;`Ybb zC0AZ{thy;H7`|C{mD$_gA8*cec;q*)kdhUcwd|gHR+&S}+&qot-=_O!_dVzd`>^&F zPaY@l!-*Fd@<d-B+Uk_M<Jh&P>Kxx4E@=nMmT;|M);_3b!kVgd`Jv=o&i)RQmatX* z6OKf2^qh9MIm3kI$P(opPHLyzmL1YpVx8A>=1aG0=6Vi`idEnB=YQhp^K6WEFu8Nu zZDCJ7OU~&Zhwp9Gc{8UrG539AP~W^=)jOM4>*rjp(yTVmwSC!NW#)CuA~WM;hR?Z- z_(f9|x7}}<#`2K0E9#kBTG3o@rgKe4*IeAY+$EzcZXHWT*U`!Zrn66^)?VCldBgvr z#eB{NdAE{cYB(n|?e!7P_>?+d;8EYFwX@APq#usRnR{O>{2R}~zn6=ria&gp{<z@# zWx-R6uY7ajUGYv%HrFfo_q+L#i!MEX{v^=O%yao&YfEGExA!)#T(;%$<$2G7U;FH? zt|{`n<#ET_@bDD>sS~T;oV=-(yV2@;%bl9<{`v+>Wo5IytgYPSkN+zCFMizZ;fZDc zPOOsZRFJnmBNN6PUt{Jq^|Ya4=uh=~=QX{j*53))zB?;(O8xsECBe5gYWjbkYjU;s zdis*P_NlX4p1(_f?3=kN*5pi3-7UArrE<?q`*#1n=`uGhYw<*@xBm)D*9CW9*y<`& z6Wgt{Ek@F%byudxj?B97THiCrcfHOIxSlkn{JqF+kE?IhbB}y<3!RlEJ$KoyuJ4m` z)8|b785zE9W8k&B$(E(T-<8bgU(8z-+f%b=`m!pCx5vz8Wm+w-lwO&BIAr^r=N?;6 z+g|g%uYK9{<@1hGYt!)D+2<<#ulsJjeKK<A&v!4&9{)AI`c`i3y!rd)W*<I&Rm$*b zjDYN;jt>m(Yi3^O=l8Q+tABc5ec4LA>r<A^Yrpec<9Xamv!GJzqt9<<D3|^Zx%+PJ zoW=c#vjWXO|6V@7dfNG2vXbjgN%h~p?*I7Q-u74S-z@L!+rqwG|J}j4v%^boz0Fqt z^6jnn?}F#we7{QmVcNc4ChT@~;qOn1clH%WyWhIIZ_oWHWluZq?JIuW=4JiC<n24# zJNqhqbESXwt@<SY;M?=*zPD|TZ=JlXs;17+{O!5k&&!HeRo&UOfqT1NUCyf6TJNW= zV&9%`_<rr{S9`W!{bd(C%j)~w+vX*<^OnhmWN!cRal2l9ll7}#@@uvF+_mF#c+P&b z_FLrhU-U-x$7%QO)jkx9`L*`IwaMmRzTLdd|Ij{#_gGDZ6SMF6^6-aAd>7vAd!=w` zSzSkae0{h3DYqxf6qz%m?w-8ac6WFA^}yLa%Q;M{zrS0%Fya5dzhC(kiZ^Eey0FmM z^h1h^sxL=ohv00MMSuL3?wJ2{u1%$odH%gCA0`G)7pb2hSSRFTmU}CtzdNU+p!n97 z%&OWSA0F<Eee_fI?5CgodWU=$^SQaa{CuQ{!{2p%TOIF(Jq1r0r>(!gxPHFLON%e+ z`@^NSNVgnaZGY%%G?R(zBKyfdYX86gzo*ZswL5!7X4g5L&PA?k1J_7AR8wa%@?|?x z+cIz3wK9#I#FaT+`<~pGF=yc{y}(nJ<xKL-K~i^*>#mWVIyd0fS^jN$b|3h<+%9jk zeeg`4Fa112#Pn|gKj#Eoxg>dX&8Y=Dwo2=~-II`c`h~5&MP<uM8^#UAyseYdD=l`k zF5Xfta;I7Au=N(LQ?APw2R`<TFsN6xyR(l!I9=C$`Mt##7KFx!th^^8DwL(9wo<K0 zIXL9rDi5EP&1c?-t+>BL`PG&DcC*~-#j(HbUfj**aO;=omlR%>aPNs`gmt;xw)HWc zwX@A0zc@FyO6JV#SMT4<{VZPa|JCz~ir;c_wI2oI?dqD=%h&hj%hxvRbDF=udvvjM z_{SHAB4h4uXSaTK=4hMe<qdh?n9j_#VV-=<|LBUs%LWBUQohKW3C6PfIP7Med|}Ib zi7W5SL^yk`l=oB#A6fPNz>KK3fjd3(mzcco_wxOvurf0~B<BXV;MQG>YTo8)#4qP& zJ9oQbr?tPrwnTpmm+Nh{CB8S@QV-g$+;{6f=gio)gVsCkat^OLH2v;{?DB@{5Vlh- z;jQH*YKtz<T9kLYj>CIR=Y$<RTVB|3B#LehxgFLNACdZFns-~h#ceCWIK__|;Tx@L z4hsj~(iYLXmuO|Qc}w*KIrGcQwy5XG?oD|Ain+Xg>->P=yT#_~6>eDVSlm)2rjt9@ z<iwV3<$*tAO=a|-E_he%XI?zZV6xg7l_w@jX7_{6XFSi#e{OSB>Eh{$489vJ^yl1? zcse=ju=0jO^*ejwMQ)Y7T&%1<pPldjnrElCSGMri{gJzW|91cTyfuf*=jUJe_fKuF zVfpX!=&9fDe3_nbO}gCd@$uWU=kNYM{Y-M@+y8U(-kd&cR(Z_kc>ng$yYDysoBiSN z+Ue!%?!OaXfBEyRkLJJAZ{59;HoNFn&g0Yho8xQ$U$<A+eV<!pS6??j?)mfI=Z^pQ z*q&c(_oGsO-s9^&Tw9(@?mkiTU%962F3aB)-R1HNkFRp}n74!1_u2bvv1eE2@Bh#E z{=H?h*5qv~|FRp_yf*w2`MtAkrcD3mxxDiqRc}7w*>sqdTP%YiW1a78v&3_AEUW$= z=@gz}Q@N>a%Abo{YJL{+3P`GEx>$btJ!!&3!FkEY`>tM`@a$2)>brE6=c__jU)Y)* z&TFDsR+?VfbLL6JT%Gwzb0f^1t~fTcz3hCzBj{H4`kJqMl+dwHyQ_}%NJ{k?O`06| z>zUx9_N(1@e|&sw`awk{b^6!z^^sq$UtP~QYx+9-V@tkIe|ca19pgs(pL-uYk!=)w zoc`e0TXt}Mp2)Mnb4F&@0iDjIo+j;8XKtRD+C6oHYhqvh$-Jj?QloUaUwc?e^Umlh zaQn1KYdx#7sqf|q(sz%&OuE*$tkB@*+#M~pU8`)4dRZ>s(W|W^Ym=DxeA#Zr+ZI)? z^PXPgv)iEYbm6tViJ8xty{qF>?IWh~HB1c_$hmVU;k_JZb^oUVUXO<GjMNI2@TPbd zQx^B-%G-)+RhF8%_WqhXF={if)>1Pkry{eUOHxT+e(Zd4;c0Bhx-fCcnZ1GQ>!i12 zUl)FB{q5qryNm7HzP;_=DQxNXEac351E%P3y~Fp`Mi-_$=bK|!Auzp9?kMlq?LW@7 zcJC<vT5PkgmcRdfZKHen`-iWqzkfVCclVD^$4YC8A8Wmn`z><ZJomsf$;}%opVh3X ztY=K~o!6`x{Or-*LSw^(Gdf#dnzL#0S}oQ(el+K<yrAhVg*|TBEX&PYyBQ~6%zk9F zWQ$b8jy79?nRi*AZr;5p=IptSHP?j;dw(mh3#?~J-_job)Qw}sJ*j^y*FKzffu(O_ zX@Ynxb6Mcbg08iU$7lH5a9?szYlDy%tJ*=!JyL(Pt~oi>=>9mGwkRiuZPnG>{trK- zKJa-u`4q{rv@AbhZo&EPUtz)L(ED%yi9V1O;Xl9WRrOu%n7i8rYy~H{-_+RgbLH=a z>dait%i}G)cK>)a^R(o`%=lyMsW!}l5>m|U>iQ8YpEo_2R4~cg@7rP3`Rc_BJSSwj zWC|q-EinH3wdv@^z3KDkERRsBvJ_gNDfYbeznjD7-{-GCKKb<O48wK8S<8+ptd0^n zCp)86K0o)DzQ?CU$KIZ`*j=yI_BFf5I(^!|#0h;5KK|OsYO%SVZQtIH`xgo^zW8=k zIbd%Q%c}6s1ASYSO*E1%`SsVi+*Z39U}?wlc2?No$KI<;etkYw8G82H&y1_pFD}^d zmiy_S+*_x&zRpTM{oC0SXHS<|?=5GmDqYpOJAK;2cJUnT;OO;-PTsxz@#$34s@Zi* zZdKoz5N1(cFs-Vt?)T;&)j7MCeZRP?kc%%*cKNn?Tb=sIw7X*d?^nL(y?ttjxzGN( z9K~H*&K-EjufFR1##8^*nP;t^_2Y2%!$Yk*ik^D;osw6dH#_!mecl}Zi}Asr+!G!x z<NW#ScCJMcoZ5G%?lIUsQ#{pVndzL^+KC~m%&K0N3j+$JWkZi=oN;2AD>mmryYQBX z#S>b4`}XN%y=-VYnrpft<$9sh8KG@@57s=9%Gkucv%6m|eB*|t!d+9fn6usUBP@$- ze99wk?09+el=tqo14mce<jiSKcrC;vJw4#YG|uK`ca=G{SHE}qv+kJc+frSS%5p44 zL1&@aDYtNUj~ZRxr-vqO3bfm3mZW{%@#hYmkbvLXp_v^^p8Ps-BByPQlyBhfGGmh! z*O}JNDtG#Q?e4{OzU5!u{nc~hlWUV)?4FczUT=nV7Khonxt;yyxd-<3+Z}iqYh9Rg zKQ6}Nljgd)7Om0g=N_MHUH#+Htx}s^rOf^I`@8hl#~qsd`FTO*_4XerPm^j)($&n) z&1fzCJT2kfm!C6i3i;IhB0Dagn#<<r;I&z<W6edWPTpNFJ3O7v?ASF|FnTrfq1D?R z9EzMPj;(xs@?FydDOrIT7sVVSWv^C=PdWRd<HMWng2DUEnO1FgEl9Jj2+d<UzT#HF z$^h{=&)$b~uW-nTzJ9Up**U>X4cQ>pcY#+QO3r2cej+4f)nz%uOy7r6b2y%FnzPm> zuD1U8VQmA!dybwQPby|9p3Jglym#y42maJ5qd7O<-mw+=wvKT_@yF)g$^2eZzlD5j zn5w%tJND|{GG|S7ep|O?zM17yHic)J>1FNL)H1fQlIvUdN^(Q+`L@mNeK)oge{8Au zs1!+5Sym-x`MR<&oBivYsi$PUCo61mUteeGztQ7Mk%~jG&N=S?y$#R!&CM5-FTeHT z=E7-hiY&@4Gv~jZ)3o+<dzOcj#g5#g1~GO<{QP=r4z#asdwA%f<qXSh!e+XXE$i2> zy?k7-VXnOe_xt{LEpf8hN;{Jb@?_#!RurvYk^J2ERa@ubTMurmTlp&{+-`1v|MmVu z(^8u^CZFY~*;Q*4cJ5ubdib>$o8)35I$bZ{JNCs;)^tURl;h)hy~zb{H?z(#UB`Xx zOf~!c6~FFU?UXP+R^n7s64}CDomBCE*$lf~%KI#~JI#N6?WAgi)#B}KDeT+&{&Pw! ziZ)r%V=27*Rk6hHg8JF3u6wvl`+V%KvG><~-tEtm4lgRdYP$aFbsvu7R-1F@vFFWf z|7yGSdoAy?jAd`{ny{sRJAdS<|Fc(SJ3hU%*|UCK@%OgCo!=j<UY-4QXT)=7d7l%u z(_V{*{$3w#z+im5^xE}v#h<P6R==KOyiohz>+3Aa>?X%gS^mB9_jl&pjA#4H^LFl9 z?_4_jQ^d6M-)?OxF_4RmS$ccg+Y?3=d)Hj<eawCJ@7s<Y9`&|-OD~@5*I#?=pYCG; z@u&UGx7A)`-`tv);wSy*`_D?*`!Vs$&s~h)zIXq2;d?LR#1Dt;y&1-Tb#H!{e&qJE zi&o|*|6H@LqNZ}IUEhH}#b0AS-g@r;Zryv{*Z<#G^3<<iH??%}%>II^&AX08FQ4{c zS(f!ZZl)iehi||7{IT-6<+oh9_J@CGC0+ZWx1+KtcaP`Q%Dr~iD%vvTemDNA`4E$H z-B#K?`OE^b8=Diitkb_-VROFz^_8Trcgl`!n{!_5p#J;M%Z@e|^&8gC^KqD&YnYgk zUAul}UPIEm*$eIJOE*8dVw_PWHuK!C51S8ew7378F^R!<;tPEZ##u@iSFeqge}8O$ zT)lUHXXKSbQmx&Q3k4P%>sm<fT-(=StROUfi=Xza$4NfnKfSCDY}zt=-pW}Fn-{b; zzq316XkfXJKR5Ao<l4J|S8l0_XB6$-;VUV7@?<J!H2;(>-(5AY8|-LPJFL8D*1XEw zu{SLh1pWSfEa3KPt4}FyQA<(Yk)-Pqx~{)SG+W8YP+D~L75A7V-XlksD=V&K(^5-O zT$;svCI5zGuXMTd<F>gMwgj?o$-5}1J9~@c<2P;@_qWKheV6ReTzo9)-Vx3S!(1h^ zbMw0R#m^r5B{_Lx=0TY^_m|Y|&%M=>EMMO<`S<t7f0nx!KE1+u$EKRA++X(S+rzsH zsxAk~L>S4+pOfkCPxC#x&9Zny**7Mgih4yi-uYeSzxoe;nD~Bi^#8&SI`O<uSD8CU z{dV-oxg_iuDy?j>)X*t-wxZ2q(La-=52>$Y{G(;w7Jby}!|H2Hj8|_T*dFE0vSfR+ z`_i-zs}^0meCzP)AmJY&d0gvVN_{p}<*&KP`0tg)`y*@x-D`Q*@5re*el6sji^tL& zmsRE7`*-NDs9tk(nOgOMYc<pL0~Hl)>W7pS7~j<uas*f2pTD0owyNK)qSc4Rb=jhr z9H~7Lb0q^96$3*b$ci*y%5&URy>ss3<?p=Sy^`c$PtT9Iy)#SToT1UpsdK*RNv~4> zniyWp<a5Y7`H+0_9G`dkS((eX&uqW2xxq{SK;H9H$3CCnIIDNJ`WaFS{!cl>tRIZq z&(}BDO1mv`%i_rj??3wO>fyqS+ZDWd%X%{U*-RgsMksn@&Y9b>_H^5WR~K0|UO(=+ z`FJ-&e9qww`+6^KbS>qr+O_4>fkP|vnfdLHOzc-vv{iL-@6N0!E3>TIb6D@;><epi z)x>;Xcixpgu3&N^*4<6*2us4#Is0DRR*h~paXRGoYEDZ8OXl0zOA{|u=N3Ny5_DwR z_rq5v%9<3+`4T6+B{L>;K6AhQp$GSPL+^z=ILMy$KTP<-uAPDIyqjJd^h@5^Ey(sQ zXTj@3wJZ^5U#tE%zYy|TeqEJ+v$d1)yykb8cWzt9y?*k9X#xFDZTRmzd?)53ebv!@ zwUA$F?&OsZ!|v;q78IQ?$%!+H@VD6Fx>fgGuH)}#nXhi$O8(w<am8%O<)8E}T{o)t z;!jyJ<@jRn)nC7E%?uK~9~a-g__q4%YIlYm!CRBFiX`OXV!Pc}-8EY6`snb~!zHrw z){3uho>;rr`ue57j%4<&N4Ty&(`io4Ua{s}b=G~JE5YX(*WYg_uK1#O?`0hS+^c_& zIR{&RmSNwvLcV+5w;NkZChVHF*2-%_!qq*#^G*BhH<Zp{D~^weNYwIwT3=Adx=L-@ zWrOLdf*GGIlVy+b<Sb;gaeO*G{Q3)zD5m}Mt@$r=db597vHZ1HN2Il_n0vX;wey<u z56*q<wj%pR&%fB$v*sn1@~nR;UAj+<cXh^tb0&7iHf;w!yt?>vM{O48rV#7*QRZCR zuWpW9pXMra$0~07#b2$=Un=)m?2kEI<(F{e`MmElOJCkLjh??abFY_FTG8Bs;NQ2R z?y9wX*~8y6%Wr*9+||miwzYfo4xOFfy~ONb{?>o$Z;JGUI_n}K4KC~Q+MfFTfeft{ ze#=@{c2_Q36qa?D@2J<Ug#wD{d@heJvCNxsJf+N3KP9nyd)Lb3wO)%k)ETuhiv+#P zOv^7ldvh&p>0Xl~DdC@u?4EvkVptWuGey%p;&$bsn|o!FCT$X&86$u5?Y*PN)9sJX z`@B7H`C|p%ho?f<wYSX54Y1s8tE7G1y`WX6<>*z12p_9cuFDh`2E~SWXSe+L;S<v1 z?Vjc)d}Y;D8D6O^&Zos<FYZbe-;#5Saqg{e4!hIdUff*E|MhmIz%ssSe(z)bhmKhq zZ%BTr^mguPvBdAERBvp~66ITSzhSX_O@ncD+3T5S&&%Ct7p^W#`2I`uN5Q$08jDn& zZT_<DZ#OSXc)dsRRrwnmompF17Q3HySkEYYA>^w4PB-ZzA=ynIrYu_#uvquet1=g# zGWL+13%pZjeR0YuQ|C4MJ0<y5iKD~TX$9Tu*{|=|^}$Q!PEOON(C7o&3l;A?esy?z zP;tdkbEgTXp3lD{5hwckfciqcnyH6ZnKq}Fh}}_MeRyY#=nZzYRjH{zj-@GC7)m>y zI%qj@?Yo0hAFTdV!KQlPrnL~?yTn_4^8~A2F1cjGtbIsZ!*6NpDwE3*GsF1eHf;Is zP*EcEr&;OYn`i4Cmrc!;+_7VNYkh$Vlaunpr}B%A?_a_@<76pw)~A_^IM3ePyQgL9 zt@Ot&OszkCZY@X<Jhv{tcl(uX6Tfe5I(l)d`+AhViJIUn`#bgweYZV6Tv?kdc4KLn zd)r-8#~oFXg;HvB?M=8vmHvKsc<OtJN@B?leZM#J_-Z~j_8obBZ(kc*macTj!G*cP z4es)ZFMsd-V#v~IeZ9}cDTkqKt^CTq*~@l+5V}yiCsE|mDwm9iU~OGDW;-U|Lz-^$ zQ`18Ze2fh)%z9t4SLIAfO59biL@RyA^LIL9OQ#pODQ>#Q5`Olz`fP>StE?486a^OR zTwhgmUT#L`cIzugcH6$nmPl#PKDT18!_`g)-@_-*o4@+RxymB>`(f|ZA@_8pUVNOz zQ6cGj!)Na6het)N{#GV*et5ZK*Rv{9t)w>(rp>TlY3;W6w#?t%SC204*4|imaQCWQ zrqU<crxiMsG}5F^Rt9^z&lj2_)VFl?wj}G%b%INb=HA^i^Zmb_Pj}6oeRX}$!dmIq zFMQni{soz5#{E8$xYjVyBb)bQg>6grXSLOvZtA`I<^OJWW7}4tlI;a?`(N(ReR0=P zdaZQmUr+1zw@t(XAKL9G%vtDHy?(!@*A#&dH;bjyZhy8su|{g;d;R&E*JfV7>@auw z#T9$}+)O_0+8_LVXZZ1`7Z;R#?U}!P>|g%!&z}7Aw(YBKFNotUnJru;|1-lV>5B0g zjnjwaeO&HJ6-v!9zHhPZsEP4{m3{du=k?x|c7MI=<)@Hevwpr$IMR?NVZB6k+WB{@ zZ+8W5-s2uUjsN0=8DFhd&&$2mJz;ZJ&`ueHysoy?-5+*7wPJj>{I>eSu&)wlLcf1| z{ra_uiLCXGsd7$@^JfQF-@AU;*@l14|26+p96sNEzwh{!o6;L=?jE<)-0wTTrcCbf zvh_#5o`3%;*Kfw=#M_EzBL6U^>E7vzt?vJya>mnn`ucm9Dxc~87AT%xw?N&05uc3Z z;!E2Tw|!d1&-ZZmoSTRD|M`@y6Y)<lY|Z_(+gEZ=&rkZcC^uq9jkVai8-2g|>u%kx zzTDn!kpHqhV&AvqH<krT+jX4f-`h7vzWNc_y)9|6mH6v_E_2gAu97`v{k8D8fBd<V zyfy2;=|^p3zWhA*+V5rOZ?`;NuJ`!#`hCZySV|YXIB|2%95vgjKcZ@9BHHJ!;*AT5 zw)@4BynOAkQ>D8%`pkX2xWE6Ab?JH@+nO&+^XAXqzW+e`?!IT!YCoRRy|Xtz%Q^6# zXTvg&FIn9VpX1l>?L2hUYZ1pn)#JxQ^dgR2nL9_|GK<k#)0(V{+l+;@mM@Ipv=-6N zoOSch+C|qi0`9mSKC|drpGHz9(=1nAUxUekv&7~YoH!@4F!S-7)rrgG>?a4#{wBAf z=v#B{Ob3fy?FY3L82>$8b<kYL*F9m{+5qN%hBG<VOlU3QyvgBxrY$@}^as1T@{SlT zrA4b2Ck2_U3dwJ|vL<cCw3{qjUvGB~E7RVZ(|b&J_kyzKX&JY6DOY`a(cM_vo|G^@ z@x|?}_H5r|8YaHyIr7Ajc|*=2kDT~zEY;?@f%|`!t+?;B`@_v|vahz^YR~$sEOYy# zpxy5T>2EsmU8%`#kN(!}-B@uWV9i`JN$+KTM;CohPyTnMRpMU0Ow{%_ox6N@DeZQZ zPceJnf8xtF4)5I76KB44oPO7M=9{zNyqjE4FU>x<zNmJ}+FK%wSECN>4svE$y7kh7 zOUfG+PaQFD@PC^2Va0-btW)nM`+Qrs;*zk`LG5*NHpy4_&6xFJWdwVp=hugFfwK25 zN^<xF<cd${T)x1?f=%tv<{GV2$F94$Ty6W%>(`#`VRVY+$l<H|m1;twf32wTn<u!T zoV#&#)$t{Bua=kp{J|5l>YhXH^!C<f@iku6hY#v9l%@Vjc>ZQ>yP!tm+a<mWJg4g% zm3(EnP?&Mq<ad64yDNS?J>=uZaD>CxEzzj={LFb@jvqQ^Qn$Kl9hX?x`P7R+8#FTW zo94LsJkGonyUVj>*^8%M4a*|ti2vJNV!6NGq1-dpcKd!dlV<^a7vrVHcwMH4y|ikY z6npyo+xe}#)2Ao?xnQ<z-IH?j*Y9@OOcOr7;q|8@-*3I@aP3=v!o#~st;yL<$>`Li z$NvnuCJ1If=RbGsOyS&;Dbl+=g~Re9Y%YkjmWA(4sI~HU-q@#mX+uq#{9WEzcQ4$R zzsxz`xG3;xV#tH8$lB7mybHb_>{@7bYC^%6b1ze^?*BWRTx!X(;SJNd4r?Y=r*mSw zt6pgA59?jEDE)YpmDZ%vS64ThMVa|H?oL~2)in9~;dh@|a(;(Yz6m;C^+)E+63+P& zh31tN*0Q>u6-U>7V%cZ&e`Ejh#8Vw*R!Wy-P8iA`d~kyCtjUSw@Qio=9c2&yKAQJ= zkDgogCf~|G+nzd`1V~@nEm*Z>eWzEUV^xpqwA8re%b(v^vGCpnyWTGnGq3mQT{s?R zV-tRTrop7U2XC9LUADV^^SK(m2!6M%Mysa$mdHKz`%K>V$L-sWi9Zj|nDD!CS6tu0 z%(~d~#;*&DzMFh`J*!u(R6A4S+=>UR!PPI)8?Jj6oPM3AVsKjRf%2Yrx757LubaIu z`@5!+KjNNKs9d7i?v~AGZ<x-0dVc<;SZ3F4!tD|kJ{_yh9enrZ?CaU<=AS=N{c300 z^{U5p#*51DEqRyr{AS1c5Zkab?-no4aNmEM>G>67KZn!X9$w(AX*>J+<hMKfQ`f8u z?=Lg`@;PV9(a&$9tb^|V-xvG(!Gc@I%gp;~75{fOs2#j}M^!%Q`@hFGHhg6$lQ-~P z^!ex7-xc-$#Ma#0!k@fs-LYL~f0y3-8vQN1;dnBK67StzpBc8luW4-6E_-lj>G@Kr zg^!w2Zx??2<jZUQT>rN~zg+#w?~+On{ye+={)02$i#xmi3hP8~_GY$Xa(0$~Z@uod z(}MEf@0?@h92YPAy6WBQkh>A@MPGkUcz<xYFq`eqPuf0nHwRAN`Tc^XO-076+`otC z&QE%NFL@W={Z&>0@wH!d)y_q<2dA%p^l9tu89NKO%U0U3_s=;P9$&xsbHM%j|F&r> zz9rhONLJTRe6nQfj;g<XZQDOjuWjj-m$~x$-M#uH3w0Jg-!|8N?$<vbE*8JAEHJC$ zpVutByx!{GbFWg_oc-0WepG*#&*C_}EAQV21GV!(=YKuo|8Va|>aSUx#{6=D^}*+2 zo#!hS8zw#Kn!ly-#dmLL**rP0kj4LvSkCJg%M>SbN=43AGU&d!Ai|SfB<=dAq;1Rc zo}D`8;vg2*x2*Qm(KRvwCoajcdf&=C5V=C-ZHH3WIjI!3mg9?CWOq-kKDdtOcpOj5 zUT*`h-Ba5)hx5ezee_Un2G9GVl^^=gw5;D0?qap)P|!osAW1pKj~tzAx?cQ{(h#58 z*`n1uF=VTzP_WcOuc+XZ)a~wf+hPN@2d0Od&uW`h8nrO;bl!_ge`WXF%~tsJO|Iu4 zb6fI{1rsIAOH|Z&B->WL=RJPs<KwIOr@wEkx)+lZyGi7?`KtSg+F_5Jx9-b(rgKKt zkZW=Emm@Q_S0}!DuyBTDn#?nwd5h|{@9qD7-0$F$z~GC^&vS&F&1(GMRXQ<fJNG52 zuTEZz=dHN1fIaDTiCfZTyN>)z(oc<UE1N8~buzlOFegfT%KFQ^3%6P+YIHwN*yeaM z>+HkmrJPQyw!1l8efFVeJ^TD4ZCR1>>n@r;j9kdaq-E+-P^A3h$W^C+rBxhjF9|q$ zmImtWw5wUX`N8U2Y6|PjnjXDA(3~4?=c^n1KrV=L-oldw-};*u=kwfYe*7?a-K1aV z)-h<i*GE`SbJa|>F7=PubNcnnr*rozJ$MtyXSQ^2qVs~x*UR3lO5du!!z68oeqN;1 zwxzZvCsL-U&FAKJi@s%<U2ImId`X_kC;6lab6QcROQDh0jSe0&H8!JNEB1#im~o~^ zuj(aqsNO6&<K5Bn>*0@gOJ^U|PdK+?Z&sc>%TLS2(X&fx3iCAUcI^DOv+{q&|B7r| zzIp?`nVNzhiZ(Z|Z@0}_?)vaWA7|D5&wYabdC#2x{#N$K$M)q7I_tkKa`@alcYe~P zGhZ#L{w!*%bv~wZ@Z{!jQ<dmVRpEIqPyalXfB5F->xjLX^Vtl}U%nn+zuHlbQSE5Q zp{3bAf%B#2==}|7KJ@(Mqo>hQmt?I|yPEzKTwiW=>ykj@-Kf$$XZOC?6RfjZmI$Y< zIr_6(ZNjgYAGsyWYkS$2o`3c2F1y6~Z+G|nEio(CEuEXg?N(`5_vyaz<oI1x-poFW zeVEREf1ZDh;m7LyeP?^;sOZdHc!^VyQ{uQ!bT8{Gt9^gJRj;|ZCEPt$N=YHvB=d4# z^2IfmE!N!KqrZKxCX?^280l@YM;1+0yKuU=cmBSxyQ`~zIBdN>Po}}L_+i)_gKjm^ zr@fFBN@cZs*#B3qUh(docY;enO2ZPSqgOV~@YP#m;;?MuG0D@twI&bK6wg(hTlZ?( zw^J>%`>OW%xFv~g|LQO?C{N?%19s^qpY25jA3NKk9c*e2uU59%r+4aTs<Os1wLeOi z0?o97mo7hOt`l0jT;<?dd&Yf=Qw8S+NPAwLwIC}@JLTHjj-II83DYhznPzQs+?-}R zF?PA`tgUYv%Vd8qtUbQ(#l6R|UtXKDyyvUnZ@w?v$+(w&asG8XiHr3D%Xnn_A{V<Q z|J(5~!mQLP%x8Y%(aFn_uAL~9xL$8iwf#*)8Skv*jQfo<tjf5K_0MUU=zKi+Q_Ia6 z7KM8EWUW}g&MtRPDUxkbyXNRql^v3QQC@QGJ;$KE>pD)qYw0+1ZN;56=96Z9bByTa z`>^hg$Ue=p0)e}`%QC{)S;F$06`0P11W#F39>i=rv%h}nu@9ar`1`p^9|*_GH%^sa zTy%JQ>CJtGTOSC|?&LC!QZ(Dl%Jeu}(PSmxqmXEpkQEDKgb#k)8fd1*Y$tg2f!rJp z_xl+)s$CDAT+g)Ul<MJ|=4^SX+6$%>3wYi5ec;kT_HF0>6@1~i_&9mj@2Tyx^I1++ zv>!Zmj(O=D+r-BYIB#Ey*_GW8dFr0;?8g~G1()28s5Pqk3S`bWA60TRrQ!$M%hGdk z=brbTpRXx(!(^V?*;=(7|E|=y{XD~UL1b?Z=LM1O&xh)}4NY8?CcgOo+O<JV@$ReM z>UySs5}YU2-C2G<_V9_5+NCaP2Or&Y?z!_v(E6Lq<qe-B1qC)m?|9d=H_!ZB{4bgN zwclm0<=*X|D*f%ny4&(^t-99l|0(8u{mrF`Eh3699!<42NIoc*bGwd3db{kEixces zd{DNtEn_?#dM`EGS8#UAqMj#D>YQwuT+2lNKb!r&;MJK>osi6Iv-igzU9~QJ+qUwy z_0e4h|7ZFBHci-Db5<ns)Qa=9?S79xUA=9kHTlB?!9}y}ZI&qO_Rrg~Vxgv@-ujpK z#Qk?~{Qu!Ezm?LIw<&su0^By&B~H68u-Nf?eUVlA>-z3o+vI~`vGQ)!o7Tmz&Q6uy zXgAybmy7<*y?;I|PycxHr1!5Kwe5bH2B%;68{299nk%$GQ)ut4M@t-f%92ael%H_S z;Fz>SC+ZN3mSpEiRpoaQt?mmV7j&FTPF%ilDx>Aj*fW<HUA<Rs%9#_;a`*h&IX;vB zZiwC)%-}VZvvqB>gv?$}BVhr7NLjm<X@Oe>BNpm0C2bNEiI#rI`BgwDnp-h&X2*&E zVLQjE0)o-ZSB;{T7niw*tiQ@=Dplq-SMBbE*!{v;*YmntcIc!mHFevr$9!?+Y3qvL zZyhCUDs=8ioAEif_Z*sVQ2Art{Dm*>Co{0^vt@Y9&UgHY;`_vhKRRcaR+)(T%xq)5 ze9wKkSgzrU>kMb+*l=Gyw!i=T@^gn<Jc}>Zf2b&VX)QGOS5M&cx2>xp-%bcxZoFu< zxqHxIJ&*kFe5<y<YS-$mQZQO=dTQx*2cNlp94qfR`TzMm@0aw{dzlhVMz<Hnygk>k z=CUud@Bb;!KCHeY@^9+w1KJz+%{z14df~plBPriMUC7cE3|gvblboe>y&=Cf>O*ku zBiX5p>sOfkIG(Dcu~6+#^5sA?HQA@yR~ze7wDufcz3N*?<)Kvvj@paq)fpCi>TH@@ zZQ*6re&CX&#L>5Z6COV357Kii_`=gZx!OQx&ff=5q!`5e6DoeX9yq&u&b@8rpG<FF zWWQD>^ZANNoEl?VW_o_avj!hK^<$fMEZr-&s^RYGpFV}28J+=|F0n<kFI=wpCb9Em zsoe2W=CV&eP1J;beUEm%xH7vRW!%Qiq4<eM!r57KdgB)^^=>@iuwqlOP|=co{u{Ex z&$-EU#0PkKdcL@@@bG%3P3H1;ZmU_d3m%@^J7>zCtBcp~KX}mldcouF`F--`?@vy@ zQTk1&FJ@<B{{DI^Hra<KK1y%j5d8M{pM#6%ggkinSpCP3JF0IiiUn``#~(S^eZAy~ zNPqt30^NO8eow?pU%snd;yb5Zw7uTS@7~hg@d^L-`G35z=JYH5%$p07U+gJi{&~^A z<m)~0jMeArUtg?0EcB{xRr%YO-G-INFMDizy-HW=d|cn>?Vp#Oy}mZO{l|}rFR!or zGizU*AG|+}=j`*&$L?`E{`~Y;V*Bi*^M3XE{bxTHxh|Tn3z>zPySwc1{d}>LZ-045 zxMa8-h-`6~oSZtX$f@9G*M_13=ZBNZG}4Yno_QO%qNQ0*dvk?mx-H{`t<CB>vUf^L z(hQ}=MK+hZa<b<~So}D2Zm~?0_7X({Ez!D#S06}DXj<^%7RUNK5*H=c3eLR7H&OGf zVBAK&Q^&7f`e3AC!~5`}X`toSo$tKn-Q6I3DSNw9Z<Xv6>xE^1`&Qgupu8&G%yp@k zX`rSiH}9*hZqNDlURZvdLAKL!!*vIqS3mXG_S-Tn{>6K=qkPJ5{-YD*{u-=tukU$j z&$9Wr@4*@6?MVsW_f;&fw%>DitA5oUTY*~kKG)BDwG%IH(3UEfYn!F}TXCVEdrNqJ z+Y-0C6BfJ@n0-~s^fsTv+HcJQ@ym^sjBhJ#3v)km^<B$}SGs~RE9IKB%^Sjx-YV!i z*Hj!6`y)KRS7EBY#$sKjpy-3@J2h)2NgY<-XjfxVTzysTL*MzfXdkhdsdpC{J&dzs z{#SVOL)V#x@Si2NhpRnma(}ojJ*clH`fp?Ahw#&zF0QIoUUi^5_VnT42cm(Z?-rgc z;Pq@NzR9(rjJI*EyTltC<$yz)4C@$06VB&Ojk{$l^3AVKW9_?{d-saxytOU;UL?)V zf5Y<kfrEQ>-b|fa>-;c!9g~i%?blkphYz|QZPU|OHE;4FmYG_;2D2Zp`o-F+tf3>7 zFQ&K9w_~N_vZ9BJ<^<kP@%wZ5WP^p~)YhuHoY0xa>^|GDa!tSTdi~x=k=R|QBxWs| zuFW_rsW9$GK8uOG9m_0J=56+G3umtG7H^cZZP;P4Al^PWZd0ROZ9@mg0!QWtd42_# zE-rSsx~gHT>4O&;x6T(;_H5i=n5<waIm5hPKS!-!l36E;#Uz(2C5@^2`>apFEP`KO zT|NBl?CjzopIh}GwRY*=?r7UQE%C;(xjQB^-{s&9udfo)eZJo9uB3Nh=9?VeA1mgj z>n(ab>1&2XwdJvz4buGk{&+F(=)C<s=?#1Jh5EPb5j7t)tn}jgjm>@U#`xda(Yif6 z$BnskUZypF#*PzKYpsfyX7|l?R1Up%r*>K4s~Pvoznb;j-6kEsy5{-&JI=FPvr8oB z$L#Ejx-9ni$@A?W&z9d$zVxm3#pbltc6oo(mtRb}r)Bf=nRLzf!~H+3mRrAkc>22O zg_x2D!6tKe3ng!>ox`nZAELi#PoG)$wMUz?m#tgRzyFt%v-vxRt(?Vzb|qc={;3s* zC7ibmE)P(e%kMYWdAIB93qDh~e_OHgv__-a<z;VftY4pg@SlI_v(?|_7R<G>zuofo z=eb?{1-}=roNK?g$a(r*r=`M2q;{44Z?w}_G-`amfcN&ssI8($U(eh8+(2se<EnLc zCUM(x`Yc~n{P|x=K<@q8qiVHz&MY&T*?102)wY-Y?EmHY#rLeUlqSAd4yiV8{ro8R z=k?h~8fkAiti|)E6n$~<+-;;0bBWQ_GJEGzX0E6kS<^R^IxZ9{v&s+DzRdHi?;YcY zE#=o=mmCz*vR`a*b(d>q{*<u!e}nQAr5600>fcx$U{rHzsj}W$-B(*AyI%SJUK}-f z--(=Wd_tF^4j;A`l-pORAw8*ShZk?)-n8l~Yi>)<ys1^cxG&@8HvU)U@0ynBRxix^ z`)$RfAn}z~rImE|3O>?WrmVY`QR+&5w;S)R1%=JmGOli6-nFe>+Scle%ldP*7uFxQ zuGoIv;miA5{ClmxIc+b?UmSdU-HRLh*sZp_Zxvg+TX}V!c8JGGw+tsSrBzp4Yr?W! zmYO+NcqNDA-eH!^{iVD$Rep)d>rO4+-HQ9ls$G_tx>rPTyIjxcU$Lf4WBxs^gHxqn ze$@T@I9qv1mhcZ%bGLx6+c?(U<9cdz>qXwveXpecYMD0q*VtBstzhk+Ayv?S?$X2= zTf8fzVw8=2jHgXM-%#yhRg=7Fitz*KP}#;pQvs29X2s5}52R;uZJ*$!Av|NjoDQRd zQy&OT;fP+Z5wW}d@FpJ)o!F+S&0j7Z+bffE*LkXQfZjGOrqkh<CT>x^SvyDg-;Q6I z8JTb2@N!R03%$jB?UdNIIV<nE>T_<m`}g$0V<(;MwQJJ2rmMW!<}A2XC+H4aYga@T zN92M4P7$4)SsU*#Oqs*b!Ekv-?EGt!nKbR^7T#xD`X=U!S%2az&J3^V#TQRc1uw4r zWB$6R&Uf$el6O3J45ioQ{jFNy#`~Z%)35vgrJtW2Qd9~aI{7*E{rbkL=6B}i2|;Ct z;NXS(W;E3PZs3z`D8Fxd@Zznljh4keKi}PFkJ@H3werCMI~G>fg_WP5Rb&KQlo9+l z_un5gyWPJm+1CE&cq_j4vN7ZLsI9EocBZ~2hd9oreGYrtWX!Z*c>euE7qiVTrhg6V zx%0{J+}&N>XI63-{<vhyE6ORJURT3mY-hLPwDN`5TZ^>)?(FE*zdC*O&V7HLMQ@q4 zpRM@2-Q0@g>o>bk%-JMhx=im<!um%mByTJ@_2<{__ZO0Xsx9%G)BfiBbcNhYH6}B5 z#yH!#RSNl;&D+cLa<ce>+n;(X)~xFnob@$b=kQvY4vVDEdS`CcdaRdzwRT-|!qu4S zbFq$(Ewu~(pI)B)xpw)w)?Aa^<(ZEJPIW{@*L*NG3H=%AzU$|m&>K~c*7PamT4Y=L zJwFipOnU3r<;KDNHx|9x^1R^OG)<??&$hT`ELqoD@ZFQILG_M`$lOhj8Tw-Pcb+|d zUMcmDjLfc**!jzsW$8ObWqsdyT4G=2^1OOy?XWcst5<9P`u=|YWTjumo(;=9rfi4g z@n03^?e=6QE`K<6a=3uZR9()sZ(>Tf+>Ji!b@0-?(8E4XzD-(8+HPr8>~2bWmd<aB zO<l91tY7OrbG=#?Xk9Myct($&<A%>&E;ARn+-1F`t|Tj{sXO7)57{fP%>>W>KId@x zo$!SPUw3!-uH#Sd_i#Curf9iUQfuipm#u5It(bLFX6mY|&LKIbAuA$er%v8HF>EcP zkg(B2f%$z?rtI=KpV4%y^wt8mw_zt%U1XX$^X!D!<)%{R?^=%eS}jOjotJTUnf0yh zulwfRWnU2d`(DOXr=?rpwLZ)Jt*|<d-9`PH+fJ^?j@8##E{4ut;FP8vl6isG^Q)Ee z=1}`9dG-RHrPd24-RcYc-4t4Tdbz1{LQpJAcwWbbE6=KWyqV6Pka{aH`7YyA<0z#y zS;<@1OE#@CagC^|K63Rf*ZUt<AADD|H!NY}San6<Vd(6``s?^?l#CzB&0P3!X?8{F zULE0iZ9m@lb@=3S_P^k%IG%QBam^~utW~-DSCmw&*tRs*Y0}qy502zixP>$aJJ`tl zeJn6FDBeB))~@!0n|utsET+49ir1IUw@G*|$Ppc0A7NE>@X$e7)hmC?Kk>O`_^3`P z<G--^^7N4N4xV3mrfet-`o42Z-zD9wmkZPzweoV;Pb<?n_R+9AdhwEXT6xPEQv$#K z5m7r*bF8&%#)GATg(sJu%TJulZI$Vk8#S%yO689G4GY)r5A|tS_F}1b19(7Px^Lmi zeash@aHiig&6T&~QBj$}pyIfAS4_=J<4gm^=Z(w`85&o_&s|Q|Fj}q`>vLQ}=F<hm z1$nU#eiT0Vmiyq2<>k6>O6!7;vzSCa>k@S+`*wMSzti?zuMQmT7N0FNg+p<*f7F8A znZ`!N7ubX^EMd#J)v9UDpHXqL<J68o<HE-u!z~J4YOV5{v07O*->#-9F5B)xL0@XB ze|*zq^Y;s$9@@I<%;_1448EcFmj34d=rOhQ=R0w&`$;-hIbCKcEYHre_m@0*@+Fqt zbVf=n=R*!V`P#px&)!=%J^LK?(C?hjX_f^&A5y-kE31eb2?cfDy%ZVm7GJj@&Y&{) z`1<>YmWSJ4FSz)k=-jV!_i~%sZSMb7kAJ!Dk+!|%!q0ya9!<7VGEUyKl4sh_wN-}8 z*w+2`aNl~b=7&dl_x^S3dX-kBw5S~|;>g@S&u01VOTwRoc!It8YugNOm%T2X_rG)3 zJjQJMD--9s$*x~%^!j|vs&lo%cc<qc+0bik;<Hq8s^!1Mdw<>8e%03E?@!s9<*&-V z{$nmZV-$P;`ODe)`yB7@t1bMw$;akX`cwwri5mH;4#6r_TenufubZ-^-2J}e;;Z?K z@(ps%nCz%%KXh>Ins-({6`m6^b$AzKx)ceOi0Uu>6ltktz0f67KVlc#f*szG5j$HC zU5u}lZ&`A{T1l2sbko-*mYp~6P6+v)o3cf!XPK?~!qE4fD{ik*KXp7+QOS&1RA_Uc z<yy^EsoR{Q)^1xd>!J+j$(t)844wD#rzo1Ovr<x8y&$MaH)L&;_{x=E18w&T8fBZf zm)$K}5xZMd$|R%z7w@e_Wpl$;MDA`aTfA)U#cjd$Ti)G}znZ<xMfGc+Xyi&grPU@b zMQgvU2wTprwQQ@4Q<}6(cy`;Vue%ln%{{kb%3ZmSrqPO8YdMuxnK^B+QZv}t*LSAp z{JV~>t=2C*tAt*ydc4_M(Q37>l2MfMF15v`w-?lW73(;a(Yhl__JQ<#-u*4RKBSqX zg{axwXtmLDcJ}!GA?rhjNAvz$&kw(Q)^n`qd5S~ngN2uF<k~JMaz1h;t9`;0HVx@~ zDfi3jtJs<*zgoQJ)_bWy-ieaFfqPT=ceJS;I%&_w7bjTofv0(Hw85G=e-j@*Xr0t& zw;|yBsvXVjU8{b_A2}!5%DFK&_Td9T4r%dtk<DdIQ};^iT$yy3|HaG?xw6IT-yhzX zZlaj>P-&V*#10lNQN5MZk5w&nQZ+rG6LjR&a);oV0+(%~F24xMb4k3^GD~%>_v;#y zh0C_C-F#0y_MEGJG?U5EM|(cp7sv>D($>uWJV(ROqfcS7Lr|@G#>Uw{HYTersC>e) zq5glpd*;1esb2Plho;PbG%0W{%hDc>)CPrSIZhMzUM9Q0B0Ij%St$Pc`uhIJ&1p|_ zH1F>2JRbb(amw4G9R^#J<zn_Xoj*VKNdIDM#$Knw+NAoglgb(6=i7GO{wwuxw%fx4 zuOurz9IchPzl$&YR`}t?X@)y?*D3D%_sTow<{p{&@)bSVYbSk3`5tyBIJcz!ZOnpP zrgx=2hdcSr9!<$=Iqt2-cy~4P_4AKkH6ORSG$C-2dj6ebE6=~rnBjTixZbnpdH0W+ zFWH*5tHOQm|6gnGba*?nO!j&HV^(?b19exAiogGw?|69iMONCkYZ$MZ_}qT!x$`dq z-2#QAq%H}r(dvC#mngQ<^G4M#wb#|w+kabqH{LYq(as&`YIXV>E@^!4*57}wb@O(4 z+ra1hm!5w3^>WX<lzZCW<uV?4-mU$#RPOcX<8v6T<ZHfeJ?A~+<O<&|hv~;Z{CNKI z<Ye_17Z<lPoVDKw8nUg_hV-#xcYj~xP-tyY$+9SCCzr<Cu&{DP^(9Yk%;-6%a^#7{ zEE8qZzs`#j<By5E>Ub~SP;_w8(!d2vl)G;1ICSVH|F=594d45l{7bZK4h27y59Xd2 z8oj`6x8jOhSqxgHZ(2{h$`y=UYpNBJ-~WKC^r2`3r=8=;4&OE1JC;;+c(3SwGDU4g z&|1w&t4&;vc5R(7C4xP4wW(Wg)Y^&DuF6bZea$_oXxpjF43S%-7M9K3R^@Y+t=DRi z-(EA1^EpjFyi5fpXSYrG6#77XQpbxWIZLhtJYRcDg7c;Bgb6pfrf#-g5VZDNhi`7* z1}|QLz@>&-OSZclmC7wGQB_uIp8R@YQS-Wvpr6Uv+uWm8mj~>9%CN-j^<qcW#$^vr zd<o-Ne@`g!lw+urqQ*|fL&39^yyl))H{*`GII}8AzW>834dE!(bql9H6rRa;e#5E{ z8q*hTkDVbmk!$^pSsY<sKR)ewezNyL_)b9^?W^tTyH~55xp-u8|5*9$)2a!q`B(3~ zOXSoL7GPaJA%ewK^`NmqQ0@O|&2y^-a_%%GJQZT-zGRp6l7F>PYT%J`vaYf=i4PaO zo1HJAGj~tmiY3kaw#zVYF7S+wxM{iAK>gXt&N(UKAGdQ&z3}1U6CtS}F`bMkyX-?g zO}@7xwrgavYfG#1YDPZ0yvgg;rkQa)$val5Uf!{#yySfErIhKP<!paHL0-~m-;lOj zueRXpDbYFh_5buA7e7Du@L==uWZ{33E+<aDICI|av}Z-%zF)7jedgIj_Ama?keqsN zKkJ--EcSK3MK=`lURcj)ut~Y#S@549XQv-%t8{p8bwK4S`}b3ke}1^ce*SdQ;ry&u zDeoE0*FQSWUf!_taO3uDhSO>*jq;hx^H(HStxn!tDrs+5*C2oO<E}U5vsV<a4ZXiX z-|S+aMn32)^pZC>1lv8XxYkGQ)wr;y_V+fn%jS7^F4&tLd9;7?`uP3p?D^0C-mT*R zu6SNQwyoH^VQJsCCrj+DUKt&4nJy!Kv0<i+ykU8dZ??P0rV^KjL3$b?t9ZI@RWGW@ z%#WDH*;2jJWk+k6)6OTqG{ScZI%%6<WY`?Fx-sL^xe^tV7p*N;wi9mFC}eGuXu5G_ zTZd<E?~X0kUfo^Jsuhyi)WNk?P;PGLrh`)-N>6C{af<iif>e8xEMtb;svf8AzUGU| zE-PHgz9QN?>$^+)I_HbK4)4ymwTeH>{7p;N)+mL&an>#>*Bp*!@d`>!U%KYn<tU|9 zMae2@+XA2Gwz;?kEHi0wk1+k=o~pPb$xJEYx!2c+($UU`j~8XxH>T{IqQ>Eu+45=T zTEY1B(puMEHl66X)^Rec`-aq8fu+|D2hUcv*eTc)Qp-H))gkkBYI~B6LL+Bt2+!)d z#K@^3JcUO*_5P>Kf`?@{E2ezxZ{C|;Y4P*u3(p#v&|Q1$U8nG^V_AMd>qEyn#`i6| zIMytCHSwa5;Z~~!LCtw9E^RT_GJV&1q|H_!e*bK?m2t1;q#jzm^7D~{C)H*2_6cgd zm1LT2^l!r>o~M3w8^XS?>L`^I*;3->m@R%|2fLElQnfdC|9ngf)ZP<$L?~ZWx0A`$ zYk|P@*6!I3OIp{KZJe|239F@En&VXWx7txxqLvrW&2$S<+um!kckMLRt7Zq62zH(< zWePsz(>FacIo_?=hsj6TX|lpqi)UZAcb(RGzG%80WPnJ#VOe*)$gXd4E&BUw7Aed9 z*V<SA-)`T(U$5t^=bGrDa!PtH$AvwmucxuiRGRo=<-Y&_s_))@d~^R<$b!qB3pyEz z%}HV3G*;!j4Pa~azOkr7b+M7`*A)F_hQ_|J=S-h$DKa^m@a{!#(zmz`I>BMPQ)V(m z>~23~s=~N#;nWiGR|k$%X~gd}eY9z}@<vB_70u<_rMk3y?>Tx+W?XSCN8wU5zw7J9 z%@-4I*lc-Y&ic~#x5Dbke3g_fE+tEUt(b6$<L2653rqKZd|_Xx$>tl`I`8na1-a7` zGcN2Am)i28*UGm_!FIQ-)^c<AqAKGhS8{rPY*FJ_HKDVp^CpM)x^{)FJsz1|FRo0> z+N}ths1=TkeY&#IA@z{Y`i@s0c>J9`f^3gm&uPE#gpI>%#ZuYnH-)CYE_JinT@#+y z@FDB0K-gAEr_h;m7*;r){l?+3hW~%dE)I_sy!UVD{5YC+NOgyh&7t5cJ69bvUc>cf z&!WWVf~?i+B`khwRJ$HJs?Mdi@1n-rP&rjE_619dIo8}c6mV*@&6+8>%#$AoMl(OX zG)rl<ul$y`#xn2w<}|&$ES~hU>1xEz5@s>|xb}~i#TFi4z<DC9@=^8{r;H%o9jr$W z9<&vhR+gHO_>@8Zf4~o|;wCv>Uhf+VCb(*fXr#3^v2?roCQLNg+%mO_&ufEsC8vmH zRx1;0*XwtW+@7d5rZqB&?F^V~_HE|2tN)tBUR7w9?$MgfFy*DIPwW{^4Nl#&2h%=I zDyzEtqAJg&&1mlHHO9v;yt(JBWa6qH4sOj9*fIFJWf};*om+nIV27Y`NyyX1?)@cJ z%9d&8=k@Bv?n-!dW#x{tx3m1}<1Fpd8A0P%sV`g`o}Ha-{*|9+qQ{pI`#&F=`!1#U zvlMe)5b2D|m9;5hnP#S^krye&ckUi&Inwp+sU;2zh0HY4f~8t@-UhS?AKcKrVd~<j za!1A2M!Q}YX<k=&DsZFH^?=*Wd*)nA|0W0OX-XgLEENn~tEzSFUE2dKUBSS;x?1M1 zy1!g&o_Mc}W0grYduHyHs@aMiCttO^IK$_W{fqBanN;7jz3L0|b}w8Jwq08*b&Fe3 zSa!(Tt8u!w6%^N6uDX`fenl!*FnFcjp+{K@yv~|s+$t2f^-ZdC$(LyzzIiQOS7#|% zEfrJ>mQq@vbbR)jz6P#Hj`f!q4o-cguwv4x<RIA{Z6R%o>zm%my%&#WW-Q$LC1P5m zXtwgEtYDRE?^y10ZQbe|vUA~7>D7;=vwnxK;eJ0O>XeSXu-!$;5B+DG{9QsT+QOV> zHgpwy>237BX<_j*G~o3`EnPm<xy%n=2y<$0)k%BJ$!)D4F)fWHm7(i))xsrn&2>U{ zEp0YGRWY@Bb-l?SrC`CCw?wW=eRX(z&iO+1ixi)kTbW*)y*qMIS-tSn=E*m<X3LAM zztQnsP1oUextikA#PF67pZ3-95^H4d1p3^)?IdQV;b9SZMQEwasROs}xvt+Ic!DWk z%;ccwtOcLeZtuz#PpMk?$TDHG3YUn^vh7>X_8InFKJBDxB4MhqWMiI#*R75-DYGul zy|aPQYUh%(pGAXyTbEDtY;=L9sSolzCY<W)<MwtXAMeY2QSs|bW=dLG(*J*drP8+L z+!UH^o`3D4%<Ay<Zm+McEj@C1ed8=96IZ2+rzbG@PJFQ)G>-D+`;~LCy8{<^X!06% zPup-^VRMRR`ra)YO5FsXZr73ZF`j;VieqA#{`OMmkC*msDB^6Y_OS8#ef+@M7$KWO zs}CHs=bQI5_~H3=*DlWF@L9orf5)y5{rL?YSEhMn-jV*gyU*#Z-+RR!S;iqNF0)3; zwk^!-|G45_nt{=6KDV!Fe<y~lHWtb*aXES=jAMO-xaev#_oOK8BP!-@5iznM9+_RM zwpuU9Dr0vE&Ft7@82RCG&waz09DV28%72!~HlF-wP#Yq3d>zl)I|8P+_bg7==l9QC zbNob)S2o{$F4Ko`cE08M-!<Z6%LSL$YF!C9e%0V?(!3b{lV5kQc)eony5(#($wm*B z^*x+1`{`<vpy%Gr{y(!ieAaQ#{~)r1_2}WXIWjS)!y3{Hn&OOpUAm_%QzrK`;L^r5 zxA>fMo<?mb)a-s_mZy>UzI76x-G&XHuiSQB8+*m}0ng`k8%jU91-J+?Ena=lSc!F} zZq?$b!|Oa&-4=Yg_SZ@?*)Fl#;|rfQbguaQEhFT;36H05)ys9C{#{(TN^jzZ;*V{v zn(7g^cOP1|MO$Z$?3X2W`J$RD6Q8|i?at=#l*nxGVa_r-wJ9LcEo#-@R*9vVQOhM; zGv%h9d|bLDjc<#Ik3=Se&#dGWDS^ukbJ$L#xIFvpu#D0A|7SPBlDGG?pKFSB#`S^E z{CHUNs_5U3kI8eaO1=7}Jqk{8_%17+mhW`Nv6*e5-(0Jz-#3&0PiM{Oa#=Ke;eBqC z={k{3Pft&Oo-^}E{k0x>d%5s+F&F=zm}ya{RQBe^!ta6%g^M<)A2o5?Vcb>w?#@oD zRkc@Fg}&PT>t#yxdEw*Y&%VEVFQ~r$k^O=n%5VBbZkL>yVQ7^V|K<8*P=b8FGFJZm z(d_)l84PN>C#_aJn08T!Z^M%rv(Ck7JUbA%;qH}7!bfHIe2JJD_D->Yv&Z?TR;gfs zp|B&T>BGo<v)-lo2}DfWTzULzTRp3l^u0jSD`m1QYNieuQ`I;E*9ELro+S0{!UW^3 zb@D1HWo}1b$p+|cH2kwTOHpT|;2|wjrxjLe3zA}E!*-^8jhk}GXYO*V80R2?6_+gT zrT)zF6<jD2wN$Zbvb4gy&AsW{90Q7+Lsndro0z$_Bqg<?$~z?NdC$6gT#l>GG_+K8 zBrQolyNzT0HJ0A{a;>*y*<OCscMg_%X=t$6c$V^}D&dObX$MRfX~molZ=D|Xz00e) z+QVqip;ZS=4dm<+Pjd9ES+%=w_fL1_bzWvQ&cX@r#hQZ7fev%HcI~!aYT%h;vZ^_E z6I0)JPRfcrbdUMyl}#H&cYn2Byke`dg{5%1w0`DertI5B8+6~YR;R~X>|#B5Q=7+b z;l~f$-c8{<U4E>rn!0uZU;ih~s-^`Oc7#;0yB@x3&Ec1~?^OhUsa>i3+BpGdF8Q4g z@tfeez;pBIo$s>p9DKH#luB=J+1zdJ6?JP-hT-X$87Dn_c}=*dpO6g>?w`1_->~tl zIroYpuGwjN>C+3>8FO9fxMq^DbYi<VbDR{z<busDQxE%p+I+fldY;kgo$!UP&5h3v zxAPZ1IU$&mp8h)TY4rBIqsMxs3m+ZfjM-7Z*eh**Y)9ea4Y{|?dSonxd}o_o)pxXc zSNYWTJft+c@Sb(nANI3dqS{5<e2f~@_CH@y`}<qw4$ppB>#+Bazbo#)&NJ7tn9aG3 z=iprH@}i)5UH8|s^UGZcD0zBns+673luy4)udE1^nqkB>@4w5UpNBjChdeqGGUrT( zRn?b_Jjp*3QyYTn`1NCVi7>PCT{$kXVd}(h+1J)w%>2{%_04zv*VPXWFuu9D**%_n z{mf_I?fV~I+F|!>arwJDD{prl-|&y^!jsaR`}<_Y_2aJm)O3oH`~0}y{@Id_e>tE* z?7y~KKR>qpQO@WsvR#vz+dBO2(mf8I>>`O%mhEM~)0F&BdS=fdzIz)qgju5Jb6Bvg zIA4*VbZVNvt4FKU2VQ^In=5!&j$LuN`NGGxPVKF9tZb@wisHH|?;}ght|u62ZDl>A zWqz&TlKwU^rx2-!OQLs%{BXa1=yr43qTu_T94jOEMK9f65Vbgt!#i`??lN|jEA9b7 z&U<~`L-TvNBHs!Iu4Qe~Hg(#m<@>en{f(R-N3Xm8TvL{DtA114vU?j%A1;6OTzDqy z`x8>D;z|Xl+;ET=p6fVc<*VtJL{f!c9a2~Gb`C1@O*bz+XZ0>>-KJH^MtcseR<O`x z&T|xf_(*>7Tj4NHImW_*@9P=N%QV0DHFf(}=0;ylV>_}$_D*K~l!AiR*0tPSw^x;I zE4*}CX{m+T%FS8z)gqg;)?S|(=aDOZmho)Mxt;}2FEDK5d-vf3U)$Wp>Tl-mxw4Ht z=jty1n;bhT*$&37y}iQbT3Mb{T2V%$l33X)8S5z;p;63kOoy9XeHen6&m4La73b6J zeaNd!_rK@&qEz7{HMdyzW&~>6Do&_uQ9G@4r^b8jY-exg7^%!Hf~6-*-Eud@v0Zp# zc9yfzOG8{Yi)lH_y4c;I1x_)X-~~=U1s0y1p0rQF*z58JMxCEcx%2W|^8QJ2Ul8eZ z(Rbc2o*~4>Cu<ero_UF-j9Xmq$nN+1R<}P|Ad%~7;Vvj7#9*i0bmZUP->+ZzOmi;q zWbi7SeQ}nE;-xv3#b5a4vu<um{pBv~s&L}-x%u|;+1J-y-7xjP%dYD0de_!QFTXs0 z`QzjL$-ln5{PApd{ui_LjRBVg9zNTUc({%!p^|rxpL35$YK!Lilf}jI4|V_R=|pT` zczu2S`IDSEx3+jr_rKw_;3VhtcXxNUa|)}y*p?Rge*gb{eKMkdD?#J5zpAsIud}UK zyTR1v^tAT+2v(8py3LQu)@>;J*47)%pd<4)@wp`1@lA#qH$KXmys{Bkcd(O#&)>D` zY#9f~dba;3cx>;fC>zHruR5r1#am~1^`YFfrcE17r)0m<dob^o<cAKA@XD-=8IgKB z1)GFlD{CyYYkDkwV0{fQ%dr&Ym1*iM>ZUFgSD$fs=B;r|O-N$?as2vagUN!^W89W+ zzvwX8c%?DZmNmEHch>ob<lbTbSh`DLYo`2_*ETV-{uU=c8opk!>)OQtQ=O$Nt<<6q z`<<Vmv!mE)fk)`}6(v*qzn%+uo%x|_Mc0QXRvaCk&DDP23&sCu>|i~1NPm%#Os!JF zb2%pI=?*uhbGEH5R#;=PZ^dN(oY+5!kKeFoZ_Nw6#XXHrZo`H`H$!c9kw+@tW`0$h z=56nadVTZg{Y@IJhr+&T9LaF=yB2&&tX21Iz=j>7T$<vV3%{+lIVzzWdCATHh4Y2T zIft317##F^JL#KNfAg*U<vFXB^Sf7k7S&sKN+*ts)sitFP&h=#=ebLmm|~7jh)lky zMwj`0txv)WGIe@6&L*w0+ftdLws4u@WlME_tp(G1jxFJB@LX{+SJ=n&s-t_`vjcu^ zDOS5zecN1o@%M~njLT1*@9eBtcRfzK>D=7ZY4FL>IsUQd;+H|||2-WSRIZqaD~ob| z?%_BaxjF6S3a_pW7i8W^CLMYF;9&FDABWDLlF2aIG_m0d!>n#G-9v4>(qF9hYjd*x zbnZ%ut1B0>5mc~?_II9N`)y|5CzC~H<?rwH&NNPc#^mP~<~PsAvV6AEg_ONKA8mS$ zm@C=z76-GeWLYnAT4BwTelsRtw;56oraP1!Xke5&WTzh#`sF!zFZO#)w+u0jJofPU z0T$J)i+A*Ldu__z)NK9cPV+-K8UFblS_S;RP3aM-JEpJh@!EP@X>p!<1#75NLI~Tb z&^5gOU+AzLOI6lbC)OmKbx6~|@%+13HI>NoQgRaMvl7%7rm^!1a~d69ZDQDXRLfUz z;w`VW=FT29&Mhh?P7{iDP7&kquH-VwbPFl6R@upEv-rl=y>dxLw_b7h&U(EuQZ~SB zrQn~(uatHq)v~N!>K;-0<H!|<jHKEYRr7}Y9NwwhRfS%cxYWG;_G-qp4&Qvn`72(1 z;8@SKJ)ksK)aZeHDDS<*lU7QTz18P?Oex}QnHw#z$64#pO?{?saSIE$d)gL9-Lm+7 z_}WsPoVm3DrvkSwj+GSAf7-L?&AI%y9Zq6pQa(j&A15u92{?66vb9U_(bS-q)1+dg z^l}n=nX=^7-)M&HSyIF)qMO<KC~TWmzTxSh4W&BF{~r`g2}l)vnDgY-j6-6}l6`Nl z(g|hD^)jCtyJCmd@k=5LBUf~+@;|p@CM(w;6RFD#Gu&L3Z8W*YX<2$C%`asc+sspL z;$M<feKt>?U2bT8ZKhww&zxO?8#7&Ur81>DR&A2}`}5ap*9)#{tU`NJpamv}iR9Fu zd)7U1vx@&R|L%9Cf0he=x_@<hQn}>$<MqO~z4yNVm$ug<Jowo|@2~QTFMs{Ydi9;j zx6b^d^{JSaN|vHyGp6*|nItIA4_|Ea%-H3^aSzwU*;Z$BpBe5dmVRU@`O<Hr%`;>D z{;!G|NxK*od*9!iFMRrmWp7p8_q*j)LFUUOpBsrUemh^cf4*Sc>!se)OKKz7To-sM zoPPbRVy4^N9rFV&XQ=<{O<1DQFaGx@v?x?RenBV7tK3}uh|V$344J(TpNRKuI8sv4 zrh33}Z@$Iq^Bap3TwBzxI0eM;R!sH3`i;Z;;$%ik)+4X;p52=m`cU}n%|n+3=gjC` zpyK9xtu4KTO=*>xYtdXik2O~V51+Z<#Va`Rl1L)UY|XO)o6jng$XEzZY?+<4yJqXO z4!`W)6Ir@nHWl4n*Ks<hd%=-i1>GLa@ik^m+U5?eYs@@y|CmXY%Qk9#-SujtVe_L` zhpd%^_X$RF^sHr_|LG-%_qz43;-&XZTv^2=-(M8^KyqHwg(J5*{Bm1f^;#+0%={hv zKsJn1FLm)lDS^e;CO>#1&wK7g-r>l*v3~+j-Q?%XV+19or$-`B-c1a>CG02nPb21% z7;D$`plxn}+SR$|WX^MVJDqhpx+b8(xJ|p5=d?L@<N}9>LRLwaW*D?z3(#lx5^|Z9 z(=_eq+BX4rW(Cghd0gidcsb~>@6_!Ztoqv;vpfw}sNd0Cb;&YLb+HonOeJk@akU#Y zx7N<taH(OYjQVAh*_OwzhP+<2j&08pPW|3>&)9CH>~wpgI^E>;!E7T2wX?qr=6YW{ ze<FWL=7W=ui>_7L9Dg_^5;4gn&tvj)(HZgdeI3_U1UmcwIjq-y%=^c>*xeWQ)mATA zw(ON&XV0NZxi5cI|I1uRS${&&xybB{Nh(*s_x(Fv*7?n2Y2#%+)7)TH#`5g!>6-?^ zmeZ=-k2kRfT>o}|LSHJ6{JFfDmYnrW8_TmJBotl!4!ytf__)L4V-9{3ZvGd!{pMY4 z!t1aFIgt;ppZR%lb-2Fm#wm=&b)J6~AFO$^>U8JwxDcDXV?C0;Zq^7I+8;OU>F=-4 zE1COZ{p$PNCa(XZS>m2uoNKTCY_i9n{h%(LOTE9L)93m5QymUY;?sEffRDSnTx9cS z2g7Rr8<nkxEDhMUz51N}UYd1z1J{SX6<q&cy!z08wjsa7YSopu9XDS2J_y~X72`bl zfnXr(%(GP)4iXU?)tn~1Qds9E9g=y2x73Q~T<<B9W0zE}TuIm*#ceB>mXo$SX1UqB z-czN!6;(DWGCh9%BJb6{s+!YP8u42VovuvUyz+PG38S-laU0E?9&Hv3GL$|jnsr#+ zhPO`e>O<+7Z4EPcDyFVxn%^O!ay_TfY;T+LvMk#v-YXcdKVXq<d?h!j;ga3NDzT#K z^8t6C-n(ZU;lAqDF4n`BE=o`1o429xTjSQn%in38E7bhT^D!+sMocrWo2jKhDkAFD z$+9n#!d|kJJ)7WvUgzAOQ*N_1&dqLe->Nf*nVIwVnw&WShfewB3QI-3NLAdG;hEdy zqr7S2bK?gZ*G&ta{FrvCWoFMgl_@;^D;h5Kt&_@<iapaU5}GQsW!2v^*)s0NXE!jK z@t*KpaI)(2oGpw-nU8<<Zd))jFV0<gJ)_Oe^AYuL&n|j#DYOB;#qV4@hp)0%r~cYE zMG>pRbY<*nB-;68FA1|6X0<;`5%~J*>g8CT-j0RhAI~%TuJV^pxUynSuguwbye%yZ zl9CQvvm8oHj&~Zrl{V+|@L-rTcVXNypUjZ&?;MtTElYm%xY4cG;&=WzKUKdVpB3rn zZkXknJpKN$@t4pk&yZaOj2?b$tHM|>U25py@Z(9kb$z{jz&@K0>6xztBspXD^X1&< z3t5@Ov~lH1HHFGAD_+i+sO<ZEWu!0%A6rq?{6(?W!8h-OZ(Q^;W>w_Jo9WAn4Qy>? zKYUIW4|L0$dCL4&lWp)$Uyaj`IdUp}($qfOt6r9Ucgx8wZyzLBvA?#hwOYKoVOwtF z$H%^@h8?S`N)zr{T{b&<a(X0x@q(56Hcy<9q1FC9@qvRd!%~Tdq5JFp-g&oGWd2Gn zQ7r{EH8<wZA3hYAWM6xu-jH%>31~&L^SNoBZ??@^sJCocmWkZq&Q%(IW`~L^Dk>7V zPL}umIDY)@-PpU$TE8sv^Yd-*E!=5gr|7ui#np+RaR%7H*SfpaALkzm(@1*TA|#cz zYvGEy>|Q(B4xC#p^QKlgK+S@0sm<ZUr*dr#TrWGkGC95%g+7p<y;A+3rtqP4Pd&42 zMHvevIl4|eRRqbls9$&XNRpl6o!9VSNma+1YdoTxZz-D14V-?~^hD3fdt8Mx-v(?A z)K|Isa@FoB#dmz%GB$BnCav}JSaDNM@zsw7Emj;o>wB-b#TpcT6bm_*x14cxe2P?3 z=v*bCO@aY-y#EBRJ`j%+y|?h>hi5uZ7EXO|aNXxb&jS8cE8a@a>)A9>v*1&2)9PRQ z9@%YQz*S}A<37KjqIJdlbqyX<%J^GKGxev0ybZc^jkRyxz75-oFWz0sDIz=P&cSz& zdL(KVJA9Oha98*#az(PCk750UTmN-fmT+=ex~Y7Yd~m*D_AZ{O?ZWRrNHn=Twg}$x z<np_R&(t(h=W;McE(;6`Y;p{pCg|%qBXde*z|+K%W$)bPNzct(xO-9Y{=js-Zt?9W z*Yck>p8s-Arp^9sR?7?j{)!5zzL4Y093>^Vl4Zj(Gn1!}FP(5Mw*NcdylX+RxTJIN zmm*b%V4ZW^&zUcnJWx^J^y1FW&GS+Y&5-C2_9}?kE~xC5@!?41xtmiB*Egso-mreZ zLOvqxU>Qr^E0di;%a0!Ew3PPhS*F6FQekpst@MVJ&dj;*(_6Ztx6RnL@;Re#*VU|R zXSU2ws*T!K6D8();`&PAhjUi)I5{(2kutTgo2$ux{-{Qvv(EINl7d#bQWGX6HO+5X z(9$5%sP;Y3M*sZ5g<tLdigfg*iu+x*o0ok-;j-2F=~Gz?Zdk>AKG?jhq|5oyM!z-6 z?YD#PpNx7XmhmBzFIRKg`8_=xb1j7pW-GhAj$GjRB61<qgV)(v^-j@E@qR~Y{{4yM z)#6mJe7#Ze-uEL%j@&6^y7_l%<&WcsE^Ky~JaKN1gxZ{*klwWP^yP_5c1q~ll)kz$ zM|ay{M_ymcMy{h9|5_w=?&Nq;nb-IE`19~D*QX<=^uE~LAOG(Q<8WQ${W|aYw7$3v zrQ9t`H`{wz{9HJrnLlUmp@37iB4+a*Ryir~3NF4RFe!jrE;00h&<vLI9a$RE(_1%f zl>DF_FPfTcBp?yaEf_j$fs>oGN^1F~4@PT>gj>|iog8XnTb7wz+}wTqT1Nk=ue%r5 zJ%9MZIM47=R;k1GhsB0@FWXl{Y?l3_eWfLTi&ps5lP3bsf6&?`H)p|d^)*IKNtXh3 zck7;7{i|ig*99+3D%w>tez&L{ve)5!s<q_hd!_XkSS)@{bI&aG?YsA|AZ%MPcVm16 z)1gN}SIR><YMd55SpDWjpja4Ro<?dso7l9afqPokmT?~P$z~Tx-TqODWx_R$fD=y4 zo=s<(deW}M?$AA`cbAnb>WQ1ftX*ZZr)^<mH;oAS$@3%q-q$E+TVD21OIAtCm7gSE zx6bo>;M|ePr!@1q@6_WKZtev|Hh!V*W#;-045xRkRDGzn{j0>RQ>~F~3o{NTt$ODg zY8M<g>$sR+Qm4?I0+0A+&8W+Jc3YmUWtqC`pG})Wu<Uo8Gc{rnQm<L&oH@Q!&w1&_ zJwjo8QVQj7uc3_1+Dl{z83>xSwzRxBv3+0d??-R9-@hhU*kbqj*;(g)Ia~0VmrXyI zri90y<DF<~lJmo4(ZmEj1A$d`%T_qM2~7(AxOa7Zy|9c<)D@AvKmYw+mdwHV_>qr- ziS=(yhScqE<6ga&|9<l(<JN3@*15&cW^8-=*7tWL+xdffZ*^u1PW}37<|~JeQ=24a z-dNJf8CUj>=WA=aRySjdZq$rxXOF({o#uMsM6!fy)&b8r@%57fCO((4y24_{sp;(O z8~apqlU>|)#dGH$K1_VIDgVVC%izjAb+e93#D3xoy}I`DgeljZD^7k6*mG@##)|4c zCcTG0@XGz!GFQ^_RPu_mvwa2U=QM|{^%306X0cRimGsHTIlP8K#$j`J)cpJ;)wX>3 z^6Ust!8zM=ZVE9nG8UATx!v7W`c+=A@AUDStyj+`e*dZw>d2h&?#4#uUMbT{g0mV| zeeB^#V)C^+d~AshXdtkfC)iZ@^aB-xMd9wCDck#Mpmi?ygRRTo9@~FUr^iV(Co%jO z`?`OL8d--wn(Pg{bC28gtxe#Wd(vTgjT_3i8@(M^Emoi3zPDWEP3@v9RZKRARvolo zrdG2kYk}wWL<y@@#-z)$4w-9lD{}G*1a6g73ZDJ?qmiYg0Asq#*0he3S<Tzs&%6KC zdw+2Lhs{~Zpvlw^S-uaVH;UCf%06gr#$7k@<*BO=Bi9+-X`cK*OoIRVrow{o`?{%r z7C&6}N?2}w<EPG<9Udnd+$VU2zxUAFH&H9zWR67XOIbel^#;Nxo?KF9;mdQ>SbO~7 zm)5<z%B02lud>B$C@g87I@j21n%3GzDP=*)+7lWs+}zQ^E3~6dv3xFC#F2T(LV4Av zwM;Da{>ldRd_N>BBlZa{^ei~8x^OO|$$gy&A6;IJlP``=s@UrgxX1OuiPXNc$M>q- z(K+<dviO_ifyrj)S1(NUlY494eW2}n+!?RKzIxo^Mo+b)&IHYzaLs~0aoNkLv+J)n zY>9b3>H4bM-M?on%ZXW?7`M9ct(%DY^<J~oB`aH(?)6K*UGn;(HOg#7$AuIVwS$v) z_IfH?oMhQP-=^}@>P1Fp|L$*4b4{=)Tcf$^<9RJN3!#675^iPO^9>j^!q2e?*LPdw zEQy@(@V^M7>Oswi%O#Ef_&$1TQF21$@6D~*_qP7tka)Q0po+3?<^9Kx9u+B@e0Fa6 zCSyH0_Wn<HuP?7WK)c0nt2hL!{Ho5neth@Gu!lk#L5J8}y>7kCyE>=$_N9rBGj|<4 zbun7kHZbPqqAmJ1P1>(Gi@bijWiQBlFU-Atf|f?~La|ffxqZjxwkKX$Gu30w&8YJ= zav`7tC({?@_*gML&QjQr#5=|Nl$$`K>hW!B0-XKNJYFiZ?q2zy#g`ul&RTPP7f-<P z53(nWRRsNB#pI<XKadsbH|p6?!r!>szw$?`+Jc^_UBBE8oz)kLYuxyOCy1}FakKuz zR1KNE&Vk45ne_HO+)(<ZadLD+QRLm)J138_Uwbu6H+OEpqL9pp2<rpp3+8xzza;!z zz+~En4OhLHZG^66?ua}j)>EO9W4y~rT3}rO-vwh=yIBs)Hs(3l-@0*}<DB_@t!2AA zK36n_DDRqBR`#_iRFl0_Z|eF4!?%a#sH|9V>h#IRDaE^It*(7$);_gm=9$ACeusUw zmls@2-Saa|kk^oVPiV;Og3SR3AFW!awjk4`p=fVJp?0X)`r{%CPriP5N#;t?+{`;> zw<csB)yXM3epuy5ipa8!c`lh!2A4C!58wH|D@%K(h{u;r@b*H@%{svaKf?tVOIV)l z+qGuCi`qXiL!nRCO}G~-pPwt9bVY6Vgy%jfbCy4PbG)UaCUM!0bM^v1m!`i~t||pb zaV}&?{wT-U`hUv>xWu<!6X+GbQDF8?Y1%f86Yutx<$chImb-S&u4C1d&I?>CH<V~` zYhM?*Q8CRu#f!NmbXEJMe=_cyrB<20Yh3AVuDsdPoaIQ0qQ_0+9YTK&X}|WYxb<DW zxg$k*iB51>Z8%HVm5bBr1VaUa7FxypO@8o5n3er{Q9%)Zdvmmg%pK>4Z)BHkbAIqf zkSqLs(T3u0&Y9m6EUKqAFLpP0b81RxC39$$fJ`j&gEvwf)#~y)s@gQ#7fso#zUJ+n z#MH-4LSaiww?7Rs>)Vi~l2piaFi2zBy8EZiC9awIN$tsWn9eNIEv7xyI!z^UY1?Gh zsoc|Bw#Rq$$(Sf{&UBMF^*AH8Zxf>lr+%;M_x(TB4lcF|n|i!T@P=TH5!Xl4t?O5` zns$k#f6wh}j*OXo_wLS`W`|7+GC#>Nhe@ebsH`zrp!P6TbM_@E7b%6yH_j*TOqpKH zoOY>Yw#mU|g*=N*xSvhQeAV~QMCvNTmS=TlvD@3Tl+VSS^PI$C_I2~}OFf15oO-(6 zmd~1!wskUE&YbVC`S<PGqIpRZUp)0_04?x7r@r81hmVuHTZ)}@XXYE@MP~JD=d+t| zvfY%uUGqrJ`AybYL#2AZRUUI}e+NrcJZ{tc8#yttP-w1gbwjs!vCvtU6&25VIN$w^ zJYqH1{=E3<IW6&uZmvalg8k-w-k&D<KmHN-`=#E~zoZ1rQRzzfuwH|2;sL#vZ%*k| zZADHiOLx!NA1KjU+Oka7=C5-?;3|`QI$53OT@ecs3bjQv!o1#U^Ln%EN8G47aOj@2 z>Rjdkr=3%xSIC_<+To<O=X7WzbK(;JN{bce_juowxT`y7!lj$LZDK-ZEq1r8SW#mB zmGAKrNw)O$1yjYi*u$AlZqm~A$Yo#oMIcvNUH-=IABX&QhGhCj+^p8vy}FeDhIRFU zTlZL(X0#h=WWMeYS}K#U@>Tq$Q;Ow(TyJ%-J!!G^`OeRCzW1AQ%adJ<S2?a^F#Aar zOf>r>U1@RK>}>5FwT#P^oSK|EoO)NS&gSk7$*kHRB~|zLtCCi4!^cb))rBh4-Bgw) z?zLyv0LAO~W3yWW7cJQ}-IX)Y_qcF~kW*3SlZ&ZOrsUSi70>X@p0IKr|K6It0$f4~ ztE|KV-$rcl@Dxd!tzrD?(y?QahrQyY6W>bbuXtR%Kvy|xr^&k6KPz|~*Ii_Dn_ee( zcxkF9JFnMErPj4qN@t~6r9XMKKeYPf5(n_k&!ob*AN*{yjvcX|YgKwFS@_z@VE1zA zeZ|lF?rpF7nsv8zhhsC_t?cXT&Tcj|u`K>^JO6+A6s7ivCoZ-k59d`T$bOF7#q#D} zuGITW6Mimnuz40~n;)dW##?m4b=uL7hVw<wf8Dd`#8(an-pzG7*B{i{Jd2!mqFC_W ztaxr^J<hVqIX|~<(6&&&|8S4#n&!ZFn}2Fd%Ve<^vMBO7m7f0n*>vOhI8KZCwUtXb zHqI}v|Mm6t^7sEYKgxM#bIj(|q)eGv4M~yDerwE|e^_jWbKttoe#h+e=1(<z(zvtd zv;Azpk9%0&pPzPgPfcAa&)INqNE4;bo$G=~=fApJ8$T!i`MkAB<G{&W9iO{(ycOw* zPZ_eK)Ax9;NJ(r@3hUDdImCE0HzqOo82>cCH+}CG?p_>i`BU@v;cL1c=LPcCPczf| zr?K>s_tbBV&NDY{DErV9D_Nhb&F;VTJo{3aTA$4wtBt&GO=)!16u*4wR^<BW8_JwK z&mCB|t$V5tZ?(F<NNTLk8{Z3;4u$!f9sa0p>B+0C$*IWu!Q*pOkBQ#d^%rmC>&$F7 z`zHOnr-V7hsCQyB%M7*?DmR`?Qd?l`pq9&L#`%xq4bKC2Ys<<*r&s6bEm4W7`P=KH zcH+c|lQI$~RX+=O72Q6O&)})oTk4jvN!oIIq*%Y=9~1UjZKaa-%*MryY3C-zUf6l& z?BUlz*AFaZ)alKA{40YwMkq%pEh@_DMd>YzV;d&6r$q~v8NIrC@hG?1x6}{suX8W< z-aZfc6yfL2Eo!?T8!gIzcV}nSBN4w_hcwRq{r!D$`uTZPm!__b-u{X+>e8i4C06~F zagpag>z7(SmzebT*VCLQ8P{|UT%P>ca8}yAXFj)HRXcSXHxyqhKDQ-TuJ9yh)uP3| zlUWKEN%<W)%n{&xo_Ur{-BGRuMNgM+o*I068zU#@vO+C!T_ax!7d|(!>kAk!Y+s+L zbNba)U*V4vR&T6hWOSIWw``B7_N-3<Pr9|kXPtWb#36Xuj7yd){Q@RrF8loPvF~%0 zHMV6uAHK2O+HUU4aO7l7+Ih2s0e(Lg?=#<OA(JxOOs(P9VgCE8U+-L@e(z@wbIq)k zd$m@?>?~Rpdo1zGi;JsrSH1l0{o!QfeoMwHI#*xJ>1a2eBAleQ+U@z9M~R7vRdbIA zojLxzA^wg|_vXo;TW2uL5&pknkL#+75&X$Y^Fh;-H$QLBzrRi~b9dR>FY-KxT*Je| zd1NdC?5iI>eE93;B8!ForB@GlPuIKpbgo6A({kYz=K1$zqPOK-JfE3d8qB$d!=3YS zq}cqctlVOM!d=u}TUUHY`1?kvtLxt{a7}CmTI=?2-mQ(r;{Wc~?_u<QeQDQe<Arlw zJ*|1)+`F`(^KP?c*kVyGvF*oZyLx4bYh^Y!sd_Ce@QfDGI9F<&%Fb)!eQW2U6;qYF zBCQs!Xl3q-oD$|;Euxp#eMoGZ#*uZmTS8RdUfre3Rn#QQZM}E@gsANS$EWE$?NK_j ze%npn-8;1Ii@0X?D;*7)wRA6M+NxcW6V5QC&GDT5V3L`_(v5x`nFqX^Jd*cM%wzDp z#V|8QO5w7`^xvEYrPfbnzPDL@muBTO58bytB$nej$4?GD&R<u`6t4x(yl{@8;ntaK zvALecrzU-vm~d&=l;*ZRwi6}_%NVUPljr_CJKe2vj$rKcpVKtEE?+$9`#dp{O(XTm z(zY3v7iS#pih9-IvrI7IS(*L+lV*%7I3uDWS3d8!zQ~6ov&8)QuBE&B@0c|#)s%N! z#+fGd{h~#i_pHn}@7C{L`8jUorhlK^1Q};7g06M7kZ(|XD5iYxN7LcRMbTR_7A9W5 zxY*tFz>_!6T2imCi@m%#Lf)!G<9vgfY1R}@8L6Zewe*W-CRJbj)z2rEfBy7zVcfAI zp($sSO)Sr)WNB@v-JLmGX@kikyR%0f4o%Z-jNM%%G{qwF{GFYa(q1iHEK~Qil)Y_O zqB5CNrq`<AS;@Jie`_RCZ|>R2*<w`h)04?o*p(`n7SytI4f{dug}R?tF1!3_tK{*5 zuup4rf=jetS3Ydgoa<27nZ@9Cd0wJ?m9gQkZ?(x*KV%GzCT+f@uBNugceYu^)m2mH z8P2)5OXR)yV%wjpxgCL1rfP>@dvMvJ?ZPC%-7RjQ;a2?<&vq3(<@)pYZ{X@M-O&5j ze$80u-2Q5lm|jfBHkCtOER$x=oLTirf$59dE5?MG&ywWq`rYP6?!ULU`f(NC&S%}0 zr=NV?Bx{%IJS+3(r>9lN>YOe=cP;PwR|QVIRUfS<|5w>n^>r14@5C4R%W8k~X9Rpd zUoU=O|G(gX{+mDQ*Na}e{r`KF;GWPMT<gVkI_vj_vHY*wY!Rm&!1O=p<^QU^6Z+oN z_{w_!56=DnT(|U%bn8dAhmU^vHzw`U{#{>jCR(gw@dVX>f5SNU#N7yby8S?O*6m~W zcv-ur9LipA&)T8tHEV(RV)6LkuN8lJOV?fJdf8#)q*G@4Y!bsK({=xs8~l6!pX<e+ z|KICbzy8|)KiDIl`|RU?AM5j1W*aU2>-_flr0d6v=DpKysQ>eucj~`oR>!7%pZ`Ct zZtI`vrxy2JPF=m_fAGKQUdg-i)UWdW|8f0w)^F24^3(tS;s5vb{PijE;bE!&9+yu2 z#}*g<)8}^nBl-XLr7L`|e*PaK`Ty7R*|+}x_#a|7@4x-4nyjDe{|9HT+Ec$`)4!Fc z&2Mh;pSt)Or$v0V@736+hL<v%PS^iw{#wcWKkVtB`};FO*|&8@nP2sdT>A3!isXOx zTmSN>PCKo7{;&L1z4fbqpQ!nt7HwF6&h&4z?BTcdt9D)f|D#<i{_f=Z6|XPf{$Jz0 z{k?sNwB&j5=`08T2YzpT{&#=<{-wLm??3ju^LfB^KZU>frSJbQz4ddx<?%oBv$T0< zaYsJ5|7zb~_o){Hcg^XJ+XPub2O6dEd3S58xBKDL)YOI9*Vjp<326z2yuGtC*m-$R z56|BBCnhRaUVC~+K$+*{)@^yFxy5_D-L!xGWYp9=u%~j_39r(qlr$zkzXQ?vGpFsX zp52!?uY*IuLSjYyeG_HNqk2z!u9Xxpbcr(Gxzq6Tv+r*<9)>%2eP7<0KlkqzY0Je1 zlC~#ToS&%do4F=^Z<X2%DalN$@cDLX8mC@(Go4Lm{$Ih9E|h*Gb*|O2j#GxoKEEr@ zUc0vJ^%FZ~uCE^wgQpiSmbU4aH#)M#PjKI_A2W6>o829Mh^5im!}Y97z)zhEOE?@Q z8&7NaxVe7|6hHji?_-^y-6!u`G0)G<z5G&9QE^4YMkO`hSxXkna`tj~SU!8U*{bZ# z47P`jjg1~&UY7#ri9A$ZY^r(al$2>!!rfh^RkIByJ^eW2%9W76$6J%Gq?TV*SW_Gl zGNo^aicD&4_19NRl>=w`UHGLVkoraKyk=GDmqiYr+1PK2cK&<zh(Gt=;!jUbPTm#H z_WvQM4KCE_qBIfQ9WXz)oWs}2>+tz^=9lKr)p_9x9u??w<2&wg)PD61(K!m6%W{KF zRCgb`zUu3rkLK|%YoliFI=_DfpNs)xXqlt>m)d#D{N}ED_@sqX_+R?$|FI?C-bALP zrz=}nNF29xp7LVq#cl>)rt*IW6mp&i>HOP0GhqIC`?K@JWTIML|M~rA4QRWR(nJrH zU)GQl9nY~Z__^t?l0&eHP-orRIFR%ranQJ|hl)_AOT9aE+MC7X=GQr~<(Z!~eBDxu zuDwXVT;E&ImyvgiWsd#)%@f;`-d|$n_DRl^O8Wc!%*<v*=e9rBQw*;hwf?^G(TBpC zzv+B}XD`lm_y6!<W?s`9vlE{A%Y0`qdq30TOF3wrFJx~eD4Z_d4+Jko2QM4ev=ltk zA*lStqPzC@x2uzxHbzSwkB~9VnldkCsn=Akh;2DD+h(8Fem?zAvBT#(mX~KtdbW9@ z^rIV--!z@uXuw-`+~k{t+WN<KWsK(Xn}g<h`Li5}JYt!*%yRn^ox5{Po=4vO@ksF7 zoc%qW@^4)iM{0lgpdD<x|JOI`H@gc&<>&8i`R!lF#V^0YX7~Bnu;1$+6rOuxH2vMZ z<4<=ldsltG?!T?yy&X$W{SXU(SKGMR{QaX3PhbD|)0p*oc6q_KYq4|tcdflue0*m2 zk2kk`YyLOCOxpM3Q}*2c2Sv|sc3afnHd*)dtG-;)=a0r7^Y<_~o4-BaS1NP*@4+>K zVQV599h=#n=5)HO-*%?)S@`O>!|L2xi~irxl`zTc{o()Y-{P=GZ;sC1QSy{;+k4B_ zxxf9o|F``6ap30jL#LldHY@|j-lA|<a99@Dxnu|heRB4gaPnmRv-9)UE1UJ!%G7sH zKC2VE%f!D?ZK>V=DzW^pe<!ZKxw-M&T*ggKe#Z`f)Vlh;t8dSf6pJ}a+J9OW@~6u$ zulmZQ=EG3;gYm|Gc@KYc#<R!!<&zFJu~vn>VU}qza_`^wkL~QUb%*ZkU3M~U+Z>DT zW1GWQd|7W;{9SQN+y=Jq^J-RpE{)nGw|IN)n#SbwQ=>neyT$)8VyUoA-9LxWfXp-O zyAA(2Up_GHyIg%IU-z}_6P6Db?_FV>tQl5U#Po9V^W@JTH}A@EI(u*RwuDoBp^-}; zU(a9o@Xb@HIJuog%pVu0C%s&F-bCc>o)YF`Ik(q-w*B`k+GPHAuGRLo3%8$5R6A;@ zG}|<L*{y<YdF2ydgkJmH@T{RQ+A!r$)W`W}nBCSNvSd2Dx_m?Od(Ahu>ZAUse|gso zTE98bLq+KCU&xIf&o3`=c(dux-|zQVZ`$wD&L>;6*f7&A%PjX+i2MKA&u7i|R~0Sz zZ`!8DxU4cjG5u@ay*nbgo)2~wFW3C_>6EB~8k<G&u_^h_d={kp2VXC8tD0wEXqR)7 zNk!GR_rjB%pv&OapS;j&{e6OIsiI#^-l;7K{{^qi-sn^QRBp#V<(_+4OdVIA$o~GY z&a3*v)9?(da#lO5TE+D9!M%SI%#S@~@GXm9Z(lsK@0`koH@nlMzs=p>B&Tim_|{+c z7aJ;M`{Mq}_&!?`a{TSVho`R>Ja`l;v-g|jzMt=`W%iWt-n=aSn#1?i-m}&QNvHMp zo;z_dtvEdC?ZwGezatCVK9}FCbgx(Jc3HpclXM23%x)>><2J{&{@&cve0=TClXX=e zcFceFbMG@tHrwZS>e>F!Y<PC=@A86&r*!97RmZxk+UcL)d~aue;L>Mxb^F9kPglfM z)kVV+>;A>?%F0Nn`2WAZ88<gA?Mr$h(E}>QV=r<V-3*;QarT|_sr&2xmXv>qXEyyW zeqjlR$@8<PZw4fVe^&GL+1zn{X7a1Db*q}?Y!{r%Keah`HfLK<`Fp1P{k$b_INsdl zJ~QLv<(tPX_o*nGo-KXc-Tq?xGiF|c?{PbtEUWupaCmgxJz%YSbAh4?<6=do<5TC$ zxc@%-`eOCfusOeCLcLygTIJnguf9-tvMT4t8<Vv6KUucR*&X|}c)3CSf5ACnKWCJE z|0wKpcVqnf<Rj|J=GH4V?b5s5(R=*d3(1+1do61|pS$z!y*8ix<)1uv>%OokZ-3)- z`sZrHtk=hX^d+veytSiHxs6YD)@D_qy|+&3FYuJune&(N>*43sHg$hQ_f;&|H@W!F z)$scd9xm25tUkFeX2VIn>(<}q9+{qXfBEtC4=xLb7yN$bJjbGzS6MCpgzyH>2|Kec zE7}A+pSQE3{Z`!PJ2gL_{$ZPCJ=NZ>Kx+EByC-{d>Q}tGyVjcj>)stjfA#w2?`&(H z9~bbmKFVIM{CoHDibe14f1Ulk;QK%2ny+8CTh#tLmd`f3U#`A)v$$P&ZsDh$zdxS_ zWs!^Wy8F5}h>JEJSn55!;Mp0;zx-AE><jMv7FPFrasRl!x6W)v*%m>bJ3r!+&YNEA z|ElyO;jaDfH^y)7><qp>y`lN~hef{}|Mu;#`@5@6$-PhJVrk;+H#ax4xAV#Vx>>HV zZ}nW8${_Y79WIOR>w~wyS<F{st(sXUxWH5G_`9e2ufLx<+AaRoVnJtT=da_JR;&H{ zaPrhCr<9Z>{|r@x{>n~~cbF_V%~&k=y1|<R6S<|rjCvg=o?a+?{o$LV=L>(IWA2%| zFS6P7nWE0F;`f4XzIQw7l*1DKow{4`<%hRU?Dly1-F3GGWA+yE&%a;SF!}kq<WF;Q zCG0Y7zscHlN3UA*dj9>(m2E3FiLJZW%soB-;pgc17hk5%=6m_#OsF*f!|rzf4SBEC zcPzU!ecj#u^3b_$E3IU$su<_X?eFp2y#3+i^LkHZs^z20WDZwn)yKJa+r9q7GOJ}~ zHQ&60zE`*DEA6{8Z+D5YdDo}M%;^RH4<_FU$o=;4xcY|d`<c9s?`uCw?B<(u?4SR+ z$H&h8uK4mqn|E_%euZD0_Iug)M<1)luQr;u;&(xya{$v><LCCrpJtbv=-gfW&iMAz z&6C5w6ephge!Mvzw4+PIeoNX}sgk$1Le~qwki78W-QC?%-#%8)d~mK}dxF)&hrQC~ zU-A>anIs=z?N@!F9Fg$h=-%q@MUATW-FLjNOxl-sch^I%-OZYUMxSOpZ@iLxyziw| zz}wr~uRE6pvM8?MZ+|h%Jb&Ig@!SsKDVzLszDL%6zgwPhZ;z!}{=GSq4=HZ>_Ilxx zin}_~k8hsmHgk_$obmd(jv9B|6%LoI`z%$lca8Sto#%=o*q=SD`*y_mQ-BTo_4(oM z6JLZ*hn|%KI$p`+OZHcHW?!en4=0;HxO4RUSMPJ;{QHi4ogM$+FY9f?j5AU?k$d^K zzqdQo+`de_v9|qu_JWMA3pPs^|MHu+ciqElKfTQj(|)D#NNnX|x7)kmvfmuVH#@t! z!}A`0`FVb0%G)|w%M)8frTLPcOyP~#`*K5-WM$LJ&vuuD-wK4?+xc5yww+bi)7ShN z7p!Uzx<~BD(tlU`k!ADrH%Hjz=U+%Y7qKFa@4fx8t>@oAHV#!gU;g=<c*O3fAH4ft z{4p-ER98?@*jIa<#cX}d{&rjT^GWX&pZcGB_~PVhDXXA8;d}IL+5~5{Oz+u{I=k-p z%me2)?*64&`{uEF{KJV^-)EQayO8=h&gj>qhFQno+EuXK{yyi*gej>8Twfk8UT<<C zW$(MY^)2VG79S~@b~L@^{OQeK|0{!b7z;gZ4_g=0d2Ma<;};hfSG?c*{mXCWqaMdk zP1VlMFfVxEz$<Kd@;T_v=Q=s_%u6bJ?Ft{coSADKe%SGwRq}e(L)PD7q>R&g*qU2< zTSU)yP1ulre%_9%udD8*Em3P$<glpoV`<90z3r$>nX0jHqT1_2_c`}geLb`;cDF&| zp_V&V8{Vy%y|Y5@T=<5>!)<d!628B?yUTXP%gf83^UXcF@Swz=g4fq{OWxgyJRIxy z;Z$5n&i1dbuRs3t^Ye=M{rlK-eIDDz`8zo^=}ph<7T0&1Z&zCq8*%T-%3#ByCmylx z-!4RN&zoyE-{VU;^vX*A<cv?uC*BGDVLtKyiec~XAM>sMeeeH0<M<E#d+Rqc_)hfr zVl*Y*;q#xR(Uzt^QfD&zx_!F4`@f5`kJAa|<9d&et^Ga2<T<lW)L!xOclL*7>9!l@ z9ZS=R*vZZv{`TOOpYn-6+nTK|eQu6DUfS~T(beB349Y&z_Ql-S>OZVxTfs7&WmZe( zX0i82b}tT3oNe`N_xpX<V;?R*_gmnw+M2^BjjxxoJe;yqUaP+0>TLekD}3W_e_m&~ z{?BqL=i>XBH8mf4`fk;f$uBmPto3}b<N1Zi;Cpj8d=K64FPncr{kYzv?5~@=Z=9+1 zNl(#Pti`E%Q*>_NY?fvI^9p7(p0@aN)0Njd(yZTb!Sio>)lFSge*F3OTfQW!Zd*Ut z<L=!8jR)43y}c!MX=e8OdwX|%7gXlsyvK1@;%sKg%X`~$XS21|#3yc1X`hi)qJI3} z{avN2&mCTI+_9N0^F#ToE1EI;Y9g0QD>0;2g2phOE3Zho2U?C@KI3`kaf6~MlUMS| z*+ei0GWpC3nBXv>G|iSHfzzgqUw++b>zW@QimST?&wa9p<36o+CuNBW<Kqp9hfR7? zXO_OYa`C!L$4RTtvoyAOuZ`OJrCQo`f;Y#h@?FjB{Eyz;+}zR8abm8@)UQf+p8QNZ zH>Y!J_VrialDDWIH2mD{Qm+o_&(s@Scp`6Ew*Eo;#QGg!YonI_w}{(O;Q0UI(;bul zFncbzxiVP&@8ZV#E%U>#od-9kt0YgYH#FgtP(OF?oBi2$PmdWcUY>j8$INKMl0#N| z&+6SvUY398NTmN|4h{A5e;FQMnIteJO>Wu8h|7i9TO!$&=cXF=J}&eNc)Hg-bMHCp zl0#8Fvp2FTpM7=E!^i37$zr<;3dKjJ@cyzn_HX)Ad*KUzRE5np&1<*&ojLt|?ff~1 z?;U<#H|hO>iJ!I3ve-(tdd@hx!cTVM&hJb5T2zmiT=H$W5~9|qzS#MuY3+8c*YEba z@5<g4SXT#j`!D0J1qoMH1n#`Mmh=7@W!?GLP5-Rda%&e#`WIL=^_HK?FI&i=(w`Nb zCjX!Ln0?}ZNnbCoQ-9Yl5?p%nV~9nY_v)~<U+VS1i|p;2_wC**+<$G#p~a&4{}ws~ z|9Sm4oN-oVCX)}-`R8wqx4-+A$L9U{@|w?|A3XgGE?E9vG+LzKsx(n!J#-HAvcxQw z87%!h*PiS!mZ@)5n4G+Q12_9_%Yyw6pHKZ*EVe*Xs55TbzPb`w^Rg`m7xS*O*rX$@ zye#+n-CalP^^B{&yg3@Zqv9!FnXJWPWyYiRa_=om{LUY!|8(aq_6|^q<?|ggWs*~m zc8ONSh%$NfO+9&&+43LH@sh}WH9OBaUpUFXT5#`AC78|sereCKDi&O>f9Lea&kwsJ zbk0SCH^nGT^!T#M12VI>oa5~DOi+#aBK4)_g&MmO!S18_$3bl&P<LUk79>nTVWxDE z+Z&|E9&Ege(!>{`kRk{iI-PM5pl;fqji8JN>UFR00=I+{L1ue=IRrMRA8gJ<50$D= zNH+xRoJHc(K$TuS#2go;i>sBuO``~Kqk8WKkU2k-!RDw4b;gN8Qa{*<FIvHIArCeO z$y*R7>g#~a`3Etl(*@R(+yHiBRU+7&!RggS_CfdS|J&C6c-TH??exX${BodrBw|m6 zVc7b(-r(haFN^Q(C}h6A?yuqbmp?y0|9bl4xw+OK@0Q<xy5wKk#=CrSHXX&!&plnz z0g9(eaNxIs10N|8t8OY?sQ!Mp+_3UfO3aP|$Nee4e*RqOHC1az<>xfNb@$h61}{5s z?i`<S`nf;)8M{(Xi|yF4BjN3>t(Kbl@q4SkyLotY{M!3J)$dgP^}W^KODZof_rG2M z8iR2;4{63gVib`wE}j-^eD>?>>(VWc`tAR%xZK7s-*-K(n)mg!wU=-24^KYccl7_~ z|9|Wy?CWa$PSwADa&ofNiXfJG-qZDtTEE}3STS*X-rX<VI!EvC$>0BX8{4{;#k<Si zUV3Vle^2K2w%p5=JcYYscbCmD%ayV!f7i3K`1!Lpje5-vpI5Kncj)f!@{8MYqhp^P z>y`dm=Qbg1ZIr0*ER%zCt;<WK;#b|T|6ltz$(O?>=Z3-Ex;5Ebv#yrZ?*I8rdhYbo zk(<*N#_zBDB~|t9O{a4^-^<z_x7=G>R@$`%t^#fS&b_iCP&w!RzS!r2pkxLa{J}_O z^-DN}+<T>3w`?()V_R*e{`GtJ#cq~apP!#U@A)%d(%|c(qum9?#g~uISY7n=l!u4M z3Dya5ad9ic*T>~eFLd&aj*hPRb~F9gcZ1Jut*uX)+{$wAZ%+4rSIM&=(<Nh`MIqBt z@9D>ucuxLec6DR2yM?9YOOLCUm;1ji4qG1=>+E~z<m&MC&!$~p;K&@ZD#Ua9!;g=T zC+6m^T^z)_ah{=};jVKc3zzNRZ!cw@w`RL$+~(D*SL=m?a-1tTryN4haeoDsrbKVc zk#y^kSePiqcyEzwchO>{`t=cUAt547&CSJ&WzV|aFi$+hB4b+>;+|<`VUh75L+_B& zw2v<?D)XA`-MhE+%Th%qUukJ+UK38u#fujQu8Xncb>J=h<Hwv}lys@%!jcM^^QYH+ zZ@aZ6b8(~E!^dxLZ#TWNL@$2dn#B>#O-)}4L;n8yI&sdNHMb`{&J@#)5)oGSyYgFO z-;wG1@p3O;zO>>$&BMWQL2ynRhe@T~G<~5?m-UN41xh7G!4$V`o=xSV-6g^j%a$y8 zk$2tG(-SncQCE1zyYP~H+2wcl_U>kz@P^AS|DMg=r*}KHERnOT=~x-O{8ff$)3u9> z-CwV}DZ;37`PH?x-F|beUV5A~PCvJx{{O!fk(<@h&d*!BP*quVx=!Sx-EEtH|2Q>O zyYRsQ##pxaWs&V|ywa~eTK5)jz5}{OTkpY}U%m%sPn@{$bYjc%2M3!=zZc0JHd)+l zeLDO8KHFKQ*~{YhaOzmDQ`<f9vlMT{nb%7yYTxvoTjAFfI_+$>!jZG*&Rv_hreEIv zS|#Y<_s~h8;#D6#GlI(ZPM0B8OrMJX`{Qx{k58xdKVA)wf4aoxD!=`ohIW4WN4wwe zJMAg>cM|r<{l^izuSW8Czx?r5Zt)K<m(PDC{$0_zZ9(|@xQZ_?0{zy_zuwHwZ&2|e zq4tmbLhJH(FYfOZsb~KF{=WS0@9(eQu2kGt&@W}m6};T<tfyh;OVD=wg2(+r=PTdd zGOhXl_xrCs+1J<oU0-!~Z?*Vb>+)kOgO?WteTp|uJ9FU6%gb9U_t&j`cXxODwYAa7 z&(F=Z)YSJk&%1Ns{KfMp|NKn5Cudvr;L=iW%j*ACx3**ogL2e$&KK+A_piIo`7G_+ zoS*UMuWx?zIj!c}&l<m(My#KopTB-v-+6cW`)l)$PiN)%S@Z49O<`^^oddV?_xINR z{`T}urIua);dcJ(*H6EmZ&9ek#v`%dc8^ub3xRF<_t#x_-LJE4A%pM6AK#<UYS~5h zPU?PhE*xmn?*VPWo{;?K$H$8Acgu^5Y(x{E&oa&a;{AV;s&`T2^BWtJO#`BLm1tU( zz3F&*divt>_xB>UW{F-~AKwoeW7|JPFKP=1sC>-)^Vh53RBa1a@$+*>pPZa*dPFJW z>1l1n=AC>p77eeiuFn2&;BSqk+8o7%h`m)?*|b~gx98tKwkh>=$v;u;uooPwCMvsU zNw{iUT@|X$o4+FW_O_RweP)?>&aXe-C%bEom~PaI+Rx9<9{&0H`Nb`n!Jysk*~yj9 zl45W4MQ_i$`nCSklg@MQ7fx;BaIDz(?d|Q?Woc5k^B*7Ul`zkfIXBmO`RT;l0u~$R z^2yuv?5q8)WNI3^o%ej@hX;<lvm*85j1S(LX`DV`-n_oW?)}fU*`J<ink@#}{(D-r z;Grewe2z60dlZ{4wQ`Fu@}91@>)hSl<=1oF9~?+;_}=?{&R3;?rF}A%O_SCAUlnc3 zxw+^v&qlkA8#nHfYq80_wdLaVlV(|Wb{N|Ieq$WVzj$6w{IbBBwu-!Y+RDnzpz7`V z+3M4!*ZRLtzkYS0GyC3@yUTrNFMDlR{VgZfyz6JBeMI>-{oA_(7rRx>{yzJA=kLXf z7F}5GFMrpqWqM5-=f$vfF)Qcmcbzvs{a|<4{<^<k_C8Br61_c7s_3(%@&}{;><sf~ zu8ZCMs-|We$AOAk=XSoUUsM17e6zXtrdjy<xU2KI>$X+s*7*IDOp@Cs{NDV$Ysax& z7i*SP#`ivNx2pZMg{`FJqz(Uk#X3GVUa2Lw`(N&1Ybv_7Fm7+v&g-YXJu&?_@3ZAj zP?KV%+DFONVQZysZOdIfpTFz->fq&mH#Q_T+dcdE`1mi2Wt)2=%kLRGvrJAt)^qXe zqv!L^Gv4kf&AGS7QcOQ?O@HnGzu&)ZKAHW%UiXGwPVzSKer1#A&!-;$`167BvGeS& z<Cgo$-i`aSW&<BfMoxI$x(NGw`r9n0>vSK#yQ|cD`q#7O_n%z(vhv5gv*`yKR-HM1 zzH{T*_u6*(i~j3^+KF+Hb|Rv^x#*8j<KfQ@YL2oG+2ikVvOYgEbMfVw_ZzfW%30i6 z_*wK=TK>#E<q>d5yor@*!shhzul}^GU`cIZVUcGsV)1EdKhNabrEr*m|Ib_NsxKM5 zDm!uys5Ln=sdg=BW|(rItD$p3%Y`n1*6Yp<hd)KU2aPc$a~$Jv(YQ9XRE^{DPR^S7 zZ>zk1cpPv{I3}KdXtiziw->c*_)kBWB+%~Ax?pnYQjR>1w21R%Z*OI499v=8<T&lL z*^|;wzasdbEx+-tWm-rx8}FCXc8sU1-|t<1{$RG^hDX&*>)Qhw60S5%I^PvA`}@R( ziMd_^E-#MmGU&|>SsA3tE1!AjA*ed4ve$MC7cvT5qx|05H0Opvt#3<kOWqpw*RD5? zee?43yO!(y;@~df4xtR8qK#)cF5lRf!+pr^TK}`!r=^?pbh;g;d~ZsaoiO1%`+Uc3 zmWk5yS(#$w4kt&dZ!<h-eE#UJg8htd&orvNUnscH^TvtiZRdY{zIT{|LDKg0wg+E7 z6(24RY&p-eTjcb*$jxbaJK0K9ei(id_$S<E6gA;{=Ywemb0&O_{CMy4u84ZOYL-ej z7R7~H>w6y=A5L#N&wDogPRE5OlivPVBcXe;g!!J3oz#8i8nqjBf6^Hq>ilOs^xG{X zL(i?^lkp+5$KN|Y#vU%-RQqG6%AF_WjGsT<e6rbT#_7i#o|XJN_h(&Q^=tFFvWKOg z<%CkC=BIAceJ`x2K0n!R_Me>3mXFIXbi3T<x^TuCdkg7lJI8DeFAo2Ct*R}PT6#dI zQg}D<G_me`Bm7E0?320X;)fh_CAPY9xPN4wCK&kUp5F=AibK<*nT(rwl)JiLR)2qY zbwi`VsTbEWI}S8I6^al@6Wky$uVD6tcKy>jlP^qqaJGX@wL!5)@q*%vC#FIj28Sk3 zn4o5pB=!1u?jb%VBezc*bvYJBn8z(vjALdLd3|byYm<lDFTo_i3_%5<RU6}4w)-eo zD6dGd-oz_;&^_U>c-c1P+fydAeKlKjvch*y-XRGmxoiCfT`zkQlv9*Uo_-Z5+qk#V zZkqFi!)DJ)KgLNK+>F^1pCi9b_@Ve>5zTw{)6OPGu)XguykEJu#qycbo=26O7ddKf z%-h3utvB~%cEZh;kQ%WFx%Y~VBCmaCoY=!MEl2&C;+IFJpZ9&d`N-J8;#5)3rU>zE zrt=w{bhnwWKir}Av{v2X@y0##*C@{~ZPKt)29-6}X6GK;_Q>k>A+zMjnCFEoQ6dW^ zZZ|!6_x#AGn_(@hb=u$he7+~R%6RT0%Sioev#%da@Ax{)AhD^AZ|3y#l8myAYKo@w zrS*QkvC(!?aLRmVtYo0MY@_TCAE9?e^6T5b_g+73bn{xvo1PaY3+5`?J^%CObMb-a zldqq*+VJnsxr8a|x95NFdwcTt&z#={v#%dZ?|OTt`sDML^Jeo+>+(2DBK76Y|J9kF zwD+gXrdo}<dp*S;|9vn%`n)G_otugN`kBW++X+lFvY#Jqcl+7=r}HN>nncbMJnHRn z%IJpOA0O@uHHO#|)ZSB%^23{?4>hDK%l+5b$k!svvbDvnCHZ`r`v2A442=mL2Rc4X zzMkP=axs6hVC0Dx&dh8620q%Wd_(cZW7||&4i8s-|C;O1?0I=sWa-uI`_a$GWPb5K zxc@yo8i+#l9<undsr2C?)*eY?HbFtbg7Wg?6BL~dvaV?KNEkBZ-rC~W&L>;&=ElZ3 zcl4J{R`*{Nwl->pX||YF=&BaCUa5!e@^vR}Y72F`EZV;sSIhMytFfu6XzHmc2M@RN z7YF%zd3hbmUca}^xt$Nx04~2@+rEC^FRk>~D|eN@@4Im$B6i(Q4%3<cD+@j!m#@F_ z&+?<iy!VwxeUE?Et?QY;T08Ykb==+=e*c5+f>v~VNy0ul@JsoK_?azROd_JAlb@cN z8nL&^wCd}t)+0w;zP!B5K3zZl+{w(QNq>KRy}aP_o12>}K0IK&SNlEo%DUL-zh(b~ z%HQ2_oUG>i;MucfiZ31?@86hwoR5WtCE?+r){0M0IQe8O7WCiWTfN=x`;kuJz+EMo zXXe>P&%b}~Ufg@@q9+}FGIQ<g_vy9kAGFE)`|Im2x#Z)0t_Pb~zy8#Z-PNKUzD~i; zPHt_~)=Q;-pUuuMY0+Hl;y>T6*Es#$3ymwF2Hsy`H6MqgU81G7k?SizKg--u{rQ=% zPSh3-&>{?j$)zcGx98nm)i2!XqI5BTGS&{#MR~=22~vWy`sHj-d9s4WD(e4zp1<q$ zj)jNY`5&J(zwdH=U92g`o$dMa>u!Sj0ELf_@y=cD-Y@sz`}gy@+Lo4*a&mGvHl=pA z&8+_Z?r0M$_ZPFH;-Tv5>Thms_0A7w=>)BlV<`Ik?Cg#G_51Dm3MM;De)Q4I%q(Je z+1h()BC5N0P1lVMWA@+o$7ol{tu2{V`*(6!RQff=#4(@!>_5|p)xBTtYU%qsJB_<U zG@A~!av#2Y`Lp_0u&>tR9D~^%eScS}x4Ye~n>Sy2xIg}`;`qq^-$#DlzY+&M7M%EN zTm8)?C1pupMM{WTe|pK|t=ZR0D&OAPdRbwT;ABwXK79Lj?dJ_LvjQ$LOk5qd*6HLV z)vwzsuje@(d+;DZc4wx{aShMBVDD)<jvpT#E!}C;Ct#$i${H6JXB9LhU`yQIs*bL% zLpzI~e=&Q#r{-tT-1;vsE^=^lA3oU3{?+c^w6vSm-`-sO{p<Vt^_OQ(4_qx19|9Us z+#kyXI;<LVScT2-*2Mj$^UaSfv23Uj{Cn%qvtPEygZ7vF$-k=(%2}Y5KpQOvsCY|r zxU6fy_f#lb*>bh!A?+m#dh%6veFLpo>~v`Z<@leEV-`pzFwL6S8M$In-TIbe%MM-C zjsbVdK&3(tNKNHKnFTLj$@fadx+Nc*w6>!Dq1&0L9a39gUvXb9_nrfE(9t3paE)=C zWtQ;$c&_scx?bE#S4q=1{TnxPV}|gh*IN&7xOf?~FbceG${RBJYo=tvob*sMPBc>Y z_rl=&6Hnw_;E7`ld~qpz0eFn`6nKEQKF1})$ZB(ri_xpCFBTq5OZ)rn($knJ>9=;3 zYTNz&5?lj1)MNI3?Vp!CWi5+XR)?)UWPZP9@%FP{|9-#!_|DGa8#{~DLA{$fHkCoo z&HHKvZL7X;L~qOadGr1To#OZR_U<hGtz7c`UF=_`vt|#uP2%^JzrEGkEw2CS*PHwM z<?a7`aQ1umU-xralH{MWbuTU`zPY`f|NFbUmn%UdHq-a3JhLo#(4cqt0%%b2_Pl4i zcFvgpw(Qv%$y(n1&-MlM%iABDXIuT@Drmsq&!!pgKRi6V^Q&dupNe;1ZT;7r-~4^< z^<%&PZn~eDcYoj7_aF7IzMo$5>WXG9e`Rlsec78E^;_+anmzek^z+lxIaBtC-v0CA z;^JL=HE}oJ?RQ=C`|9d&P~rA>jl}uKt=!@!6}#&G?z(4oBz@NPGsQ)J>rYmQ@!D2= zaHyYl=DqR$@(S5w<-GIx>+A#m_-xX3t*`yKkL!X+cm4XayXQ>rZHzBr(+XSLyr84P z;-||giCIb$JyO&_-IISeYIx2X)dh0&ty@*M{z_|oh3b@Pde0ZxTzYkNwQ0fvj<{D> zSGRwDe*X2_=<Rul=jK@2bKl`;GcqzV*<xr?_ou>Vj)h_R>*uZlo9g~nEm^)i`R1ln z%a!(`je*DeWQ$+BPxzt4a5QHBGYKZ8eHovZ&elJF^XAQ}xeIz9WE^Z_jo4k5>-SFl z`iqN;Kc2IG|Ke*qzx<-Y$H#8$t=@hw?JiHm;ZN#5GZtK*FS_t@_4~c;mzVoLUoykx z!I?4>@y}AJMe^@Yt`|)day;}oVcX6f|L>OHKf0&#bJ0S%{<%h}r}X#D{;(tcw3@(t z!(_K}*YvYbPEwVyD#<u^?Y~%KQNNt+7c0k@|Ns8hf7|)bGWYg2Uft+zSLSm&gT_Gw zzEwWjD{E1(pzW0X^5=~g#06j9+m;(GV^a~3FYKWgyDMaU@cwVbP8)qUZ`xF(Xm;An z?)IAHmM8X?y_It7k@(o1d*aV@y;!GqK3S6~OF+eZE4TQouLqmiUzgh1pPsINJ#%l> z*Gu==TUPwB5t#JZSh>m+GJ7$*)bjib1DW^w_nKaEn<qVM3SAMoTF+{)tphmwLN-s? z*WG$*!}s>STwA2~mG@IwrMCoUZ=VE;xQUh*p1ePqc6QcYg9}eit2QpPyztOFJt}IJ z-s|ZuCk{`KYC81fNeZw2N?vKR1?BJWNtGEoZSb9K_Nx5nbg46IBR9LbYnHvf=KEfK z#;Z$9yVw1{vNHJM*6eWJ<Q*v?Pj?hPHi=PXQJGVD@r2jDlFczr2F~U0?p$<ub84#g z43o@BYz8fE&TTvwe}V=w;&;uzdUm$?#U-A?cimWwS!(B6mtTASpt}mR+u-9LTmKWs zKHa?6vY>}4g++II4(P<P*JZMnMN8Nsa{jaNN<DaUb92O&3_-KpTT8B2o=-bBXXW|h zznw1}E#jPhgO9}{XY$c*@z+)YZc@*m)jqIpy%@G<K1;Zb{bH~AqOVW>b`-4oSjBm) z(!ZiV{rtSO-#<r6nPg0`V?Up{MYU1#GUsvY(pN3Q>V7Y*zPz~^?EZ1%yPg75@rM!j z_tk#g8nh?QPJU0^Hucj6;+OB&{mz|x&g#?5h@C}C*|gWNub+N<kGYNdd{yRGl1X0@ z($bdgv+GLzBqy-P@YjUW8D_b&@*day{q^$k&mMsX8+AEXRjyr=KHsjkNZI=Nxw)%f zAO5_lm$O82>zUtv4S&7Q>zv<M_}J~QBqu-rb%hCU&pp181{$qM4P;rphJXI!U8S%8 zsa(1q({g07Tkoas#~R+%*!{HG=))8{@A0u->HoqRK{atVkFi~NV$V`>c8#^Y_#S=j zur(LXE1X^xxp`Th{5|1q`Uh=3fB3BW>os_~P2B8t(L3Rpozvd?9Q|;T`@+s_{U2;z z(~Bp1s2G83`1+iCPv=~m`6kaU>5`Ml>kIOF`vN5l{gg~x_s2hTm@Kf^tyjuQt4k^6 zm+At~0~04qSn!aWQJIk?v4!y)$FhiLo0TGxt|-Lkt$cZT`RmV{<XWcbG;f%ozo92h zMIrm@Dp9lidu#etk36<>ayn!%ulm!IlTvd8^aMW$1PI>P*w^CMGNDE5&9vV+DGPR1 z#5pM(5<4XCe7KGG@`VW#Gi}t*pY5=9o3gQX#`T8SHjc#=xh?rDnKt%~hVd^n_pK0a z5-i!c@0itV-xc03oCQ1%<S^JUtzl$l%P?>&IQsi|5oayOe-7E3d_L+f$~sCtNh&go z2G=WfULPw<G*NAoy8SKk<E&$Sva4^;UvPHC_MJD_o?YzI0gZ)8Ic?Uh)Q_w`lzMG8 z!|dmew+g)|ocq1y``+5$-+ul2c}7yOnnj|e{h3lia%IcrJ^VKIw>vL%Gkm=H!i6bu zUc2Ce8nc_*SW@?x9Wvd<-Jg8-hmX)VTkA87w`VN4!|?vix_Pr^t-9U&J}IYon>eHX ze9l7^hw|KPg-nd4CJIbgFfE|}yu|w39h+2aR2bAMp46&sdA4)Lx18zuUC*Cyc5U$b zc#C7zO}4Gs*RRc2jgz-eZ&}_lWly-xx~i|Qe$6>A{9gIL;>AU--7zapXFvXYxXPeu z^7X^@Iv-{}+4{No{I+VdTT{+U%$J>Z^xbQb^^*;{k4wHiX>zUi?QtW{@=Dp7X&V2S z8xrQskKQ)(<6gyIuRTHYw%~*mXD0T}@#6<>@0Rogo;jAMca~U+ce*TsoTPaCS?sx+ zt6L_{s!Q~&x*d4zg2>Z}9Fuz9opdvqu~8)<;mMSZ|05-Tau{(;?0NfN_1R-XHU`6K z&z=fu6y84JEtxr`&?YxdF89sy9q%J8zIq$kFE7+PrO{vY&F0xxqv;dRZwS=OJt4EN z@a~P{s;5own|<+qzNqK(jMIN??&R<Ln-f=DIKR@i&acLe<M6!c=PmBtIKK3!sl@f% zI-T$TFV$9mlRA6*U8T{d+0QG>W~a{Be)_Y^3bzBlbV8CX&&M6#{Mzm2v8|w8aEAh& zY@D*4?#53FH0w{TJ#(M=?Co=Zc4a=kvtQ*|rJ4Ns<SD5-yn;1(_xHs*ze!J>l3d60 z*?#u-%FLW(rtj&mm43a3E-Po8mG|oD0<X{IhPfZb&ZKPrZ0Q}Ss~fy)PPdEF#F?O$ z+0W#~r!AFDW^a4HdiR|3F?%E@KVRb*;}yHdJZ%?)@5T3G$}1#}{?M^es!0eDUHtmY z!&dO3=Kat$&3qS1^rf3GoH~0k|4)$5%<XK=ZGA2gDNI)1Yr>K15HrTJsZ~seTdw?) zu*%b0b|$tvu37ES_86hI{_1$JLQq?=1>~a2#Ls%q88_~d7EkAYdg-RQ7m8~?>pgFo z^=yCmoF%7sf?cv`{{)Dx&3ey8Uw=RHqjI)E^~*4yd3NF_LoY#8%><_(dov}IpXaYz zo!ymm>(AF+w}0;V9<E@tk?o$ecI-J<P_t6#FSKHmcG#T5vuKl5(vhC6Gd5NTyZO&( zyYb`Hi!a;2$xX=_)RO<Rv2yz7FS~LL5}$dUiP*w<_}F>pgcMO8c?{!bms)=3=sElL z*wLlkU;`G-2e)7C&E6NC)A0R#U;EP27*H2M>0-Pm$ml&E{2QM6zkQ?*-VtyHvPR(l z|F?H<mxq0wd;DX4+PmlWGpu(<{TBbSNIZ7+{{t1K+1Ivg&F-=?o*R|DI;@*D+G^3# zt_l}t1r-Mi)d|8+96UUnPW+Tf7TUMDUiy-f-7B~9n`z&_M!nvv^3YP{eA>au{l7im z$(y{d-IsKMg`rHid0B`Xn{UG*o>@Vrk|vA|y9_eCQd2IlXq;J~89Lcfm|+F?sFKle zp&&85yK(1E&%%WZYd9ifV)p!wOE5P?O=1u7uU)_X_~UW;{)Z1A?tagRktqME@y@dU z_pzUM)&_4$lch#R8B8K+7pAN_xq!3a__b?cJ^lU1llyJO#Pwo2-oAaidq49VF*e_o zJv_4*S|v@EW*KELF_b1=m~!gG0?vRLj=`(cn$;Kr#7C73l5ok*sgaq!yK3><68AY) zmsiH#n5xZeXk{g&tbBcI_pCW{I`;nlKgHhOFoTI<_e{rNE#+o4hs4>lr9WQ$Sp0Ew zI^Xfh=jATyz3PmY?Oa~>x2z<7r{MPd{OA5ETdTeJ_WsQK_vgq0PKGyWFL(O7yStm1 znm%2ecCk;^T5RpwwQRnc=NE7W+_-fss;9U2=&@t!H}4xu-)hahV?HIbe2Rn#V}q4P z_0db0f^_ut>z9g&i}TK!<S4vghe<|XfB*4k&(aQGbiH(cImm`9j<>Wgl}&6rxqg;o zFes6RO?NELt+f@K9=2~wzqwh@_Frxg6JdpH&UXG;FCWjF8QW2Rf3tnv*GthKPaRx# z<NGW3`C0Yf_AQUEP?r0B(fi|K_5T9r_f%M@<()lp?ONF3+gA=}{(amlAv?S4-@=U& zvuE@@oqBbLS&=c@`d;xoh28IZKdyXp|3q)w_m94Mpl~ZqfF}P4S+=t)U;g}YQ$MbE zb#pRry~Vk2-@-~_<a(CRtF(P4J}vptwVXeH%<DVjZT`F6nKP$%t!{db-J45=(Xp}p z#dDc2UMbSlD~;{GxwADR_kHK%+}PIayuC8wdc4olU%cC9f4CD=X)wbojemh`XW#96 z{c*khuh=)0zY_kOU;lp&|E&Mt=Kp@A?*G@YUh`Mp-#_KqFF(dbNB4W%9==$#OMTb+ zo+Ez_1<l!8VS4M_H_>%l_nPmjT7Uf4uj4m!&GxO&&qB51m05<{oxYtvkG^;#)zdwl z{a=)OSor&bvY8j(yuaN0r}+Kr{esn-UN2QVyWnSm_v6R6ejUGfwcIx9{1><PS1(3H z#Pofh%Ut;D&eTJ5t!|6khP!>LSLU6?z;G27O>6qnGnP#^TK?TMt18V-{?ernGuh6~ z|GVCCbJwNEdnd^*|JEJ;IOFrt9Tk-Z|KnDu-`cfk<<iXs^7CGF6wChod2`<Gw-Rb> zz6=ZacxDAjN}4cot$r*yEBJD8;i|prQRhqQmjyqsN-oPY+&{;0^Q}w!vmXmzE`0mT z#mDE|kyEdtdhYBHJ*;fbJw5*WGoOE#UrXOTZoU(o;2L4M;j6TX@~*1&M<4&MRrvR~ zGyK#1tbM^%*0FgnejT}cTGC{-mhC-l?d-xwA?15MzME-Lx=ugO_x#an-{+4{u%~mE z|JeI2!}hZ9>T?%Z7*?G5+x+a(rJ#SM$A0~)Ivf@jW@nnVj0c?TH~iw6#h(1&*4#w( zy>D#xEx3LAX1%d(_<Cs*ZJoKHmX@aCi<5(Y8v5MVN~lRv%j@wM&nwBX%JV&Yyv^8z zkwL5Y{eqo)_ROiT{dgtV|LFF8U)TQlwtc_s{h#N`Kgm@-nfT-1_x<wfesfOfr(c-z z?kp&0zLPhxKWW$gwc>Y1^`CeB@<;BmYsCJ`_}qG<*IqGt_kM6d9Q>P}vFuXhjLn-j zfBbUU|M=p5J1P4=5BV4G-D~^**W-Jq-=<uc0;&(*eslbM@6z)R3ru&(zD$JV#tf5; zcT?i(_U+nr>qF|Z?`aT~S2Hh6DGLUtv}S!NlWwRms6z4LnZ@8BD}huMY5rW~`1z*z zx8rvX75SV!^W2`X?$fm#A0NM?FK(Qbkdo`&r_Efra<zJ%ukUkv5lvhF9sAwBYkN+z zyZijF^(yw&7yXUvCqRQ(i|uSl{9)zEg-@ElS$rwW{_}I~<ibxr<!8?6+kHti{cEsb z>ea0?_LzR3Ie*GryJ<(4PPMpKW*KLFM=1BL?ali~r8n-~EBe?xebLUX#?^nWeZIZp zd)5Dn+#_eBH(xA%T2=BrwtwB4jh)uYx9@-6=y^Q7EYGlNeP7D|Fumvb=DY5gZ+-Ha z?QH$8=k=Y><EvD!g@sGcJNO}W>HAPqW8=y7kN<+^IEsrmt9WJw1P2Fy`SPXanR?#q zgI>)~uBSqR&i0IBadx)xv3$Sd!uxA<qi*kh{O#@AH_AKaZr@h+{QoOG9lhfpPMrPo ze$N*}-}5?0PP|zA=a=wgW5ewmM6SE5FWz3SA~t<m@|R<4BckF?y06W?`SnuirMF*F z^UJ^U9zS&|Dknep=%-UzcO>R_wZ5^+tdN$FI&DAi>C>wf`(M`Be17!M;{Hwf$-%|- zwL0r~dXClGS8M#|eD(7B%Ws!zmpdBYy}v%LN_&4@Rds2pZPljlOK-=We3z}g`+T+i zcdKb~%S)~$Tt0bD;&fkj)tvHK^JexZtLs1QzkcYE*BO1C|6i+K-dOf{*Q{d?-n@Nz zv-Qsny|n4x$5ncdWv)2W{_IVKPwI5vbWOeV{P%a<e(jz4rt0O6WvADq9=Eaob~AVR z_I$r{&!&4$_x(P#@A6!G>GF5K&k5|EDZ9PIx_jfqyU)+%+OL_k-a6wQ&-9l&ofdze zZ(D8FCvPvO?l)(GiYKqv;<Wty^^ThzGuvm(n33_L`g=OGWWRA(#^mya(kFk7e^$(B zJGS=sJ7eDFmpuDTMD%pmyWP2W?tEWO;s4)19V#B2Kl|~wz3kcZvwY<9t1REmTh4#1 z^Nmp^i}(BL*L#gW=9K;Yw{YW*vRb9MUx$Aee)-W_<5Bx*`g+&&?*U~y{U3e#xv%2W z%<G%>Cr@9zINRWxoW-nqA8UDUscV=1{(1Ja{L{iu-@cW_yxJ$GpSFGb$CGYfzV<)+ zKACN+`F(5I^MC)%mDpn@=Y06_$C_`imra)a`Mmo5^YG(Vdi+Ok_Wj%4|9^SCzHQuF z@pYg&V9VC><3C)aY|S4Ry)XC@Cwun%qnvYncVGMnvCAq;eQ#g=G3(os3d>p1`p*}C zK3C{_IOFxqc{LM!9zQwx=KA(aH!N-E$D8rq&AgCjeY?7xW$yXB)%Lr7wJokM(D9r9 z`t<R0`x-B1Sl*QdmHOLnZ~pE5zFMOG-+TR^tD4h(X)bJTZvOac_4;G&@^v%p!#$Lr zoqI2BqUxzN&2e+#%bhM&bssO!|7WuA``-7i(b3WWN}U&<UIr`Ut9PVl<UKun#sA-H zhnN>KC*J)nvx{10Y<hX}0+YC<j-O|W-#>MJo%gJ0{kyUz=8ymL$@cU2$Ddh0-R|Da zpG$un{hWW~z}Am{%r1G)kFQ*-$+z!j(erA>)TOt5_wO^T)2{nB+u6{}aB95$+}xRL zXG_!`EPc1I;^%>jf0BI;r~ccRwtc?a)#vs9^X%f5y^eV&`R~hupSzWR-faIJ_gCZJ zr*kWJ->=V9uJ*b7Jm~-X_!)AGO+@OiT#}r8x%lTt-{YCp)yB^@B^R&xT4blS{JXE; z*<&BKt+SXf``sjJSz?jK@4eT)&5PJ)t@2)GbIBY3Ij>HgU*dE9?#}%sVR^TA-m|Fv z=T&#+a>ATrr%f`J<%dsjyL9ed_RY5`+o#6b$#$2_UfH*9;hyg4?4Jd#YGuTCvwhxN zboqGD(e1n*awQjh;$uLKvDfSO%l-cTz8|zuP=BiTc~PEOlT>Ug*v=k%%QMU0=A(<v zuNR9y-hE$ZUiYC{-X%Uh{-1r=`~7=hl_LM|>Wp_h?&0kDN3_}PyY9cMR*(C4`C`WY z0@M1HWxp)+Vx&5r$JMFFRc}^}@+&`DEkF1C{rgugP2>;A+~bqK+*l*tzQ(9t^XIvn z6JGv(`Sh8-{11h=8{hM4F4QR2OIH6{sKtKYLNNGd{pGKhXOuk%D6adKAf?AIo7pS= zZU5~0m`oS%?UUQK9)3Unr2CCOR)>WPpJY_qWi0#t_vzbhe~ey!dimzi-ugcZb-VxX z{qdo~{h!e566x=C?@IM*`Olh&E!$|++iHGn*{8yy=M~G3EA`G2*XO-gx$@`T@5>)< z-khyr|L<kbITM5Bjuvx0tN$m@XggVQEY*t7dizYh`xEcxTOE68cG>&v`Es5kH{X1_ zG;{0A^Bz)hm;WxY4}ZDz!^`uh&fIbOwvp$__4ThTRO6rWoSmz05EUJr{QllvHeb(4 z``kbwZFB#|=5&9XPbZW=-YGu+boY_xwtldllkFSF;7fBSt^aIma#>uexVZS@{rmIn z!*~4u4vMMTO0fR(8JU?U=Lgr^e4Gp|sX$$@WlvuJ3s`Xe^*u-9+J)2Hd_5<9x!EUc zopwP-5!Q4B4N0ihuXi+_I?vw6*Z1g?Crea3e>GkD&yw>ce`VMAuk2?#{<E+8lyJGo T@%T&z1_lOCS3j3^P6<r_oQd;i literal 0 HcmV?d00001 diff --git a/tuto2/figs/simple_compilation.png b/tuto2/figs/simple_compilation.png new file mode 100644 index 0000000..e69de29 diff --git a/tuto2/figs/simple_compilation.svg b/tuto2/figs/simple_compilation.svg new file mode 100644 index 0000000..f9a7a2c --- /dev/null +++ b/tuto2/figs/simple_compilation.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="596px" height="452px" viewBox="-0.5 -0.5 596 452" content="<mxfile modified="2019-11-28T22:37:51.216Z" host="www.draw.io" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0" etag="VcwF2yikf7-QsSzdrXRU" version="12.3.3" type="device" pages="1"><diagram id="f106602c-feb2-e66a-4537-3a34d633f6aa" name="Page-1">7ZpfU+o4FMA/DY86TdIGeASEXWe4i3t1xnufdmIbS6+l6aZBy376TUhKmxYFuSCMgs7QnJz8/52Tk5QWGszyPzhJp99YQOMWdIK8ha5aEAIXwpb6d4KFlrRdoAUhjwKjVApuo/+oETpGOo8CmlmKgrFYRKkt9FmSUF9YMsI5e7HVHllst5qSkDYEtz6Jm9L7KBBTIwW4W2b8SaNwapruwLbOeCD+U8jZPDHttSB6XH509owUdZmBZlMSsJeKCA1baMAZE/pplg9orOa2mDZdbvRK7qrfnCZimwI4H82ze5hfBQ/DX+DvdPjS/3mxWq1MLIoZoYGcIJNkXExZyBISD0tpfzlqqup1ZKrUGTOWSiGQwl9UiIVZbTIXTIqmYhabXNllvvihyl+CtlcIfi4Fq+RVbhrQqUU1dUN5NKOCciPUg1A9f3V2ioGyOffpW1MCkcGQ8JCKNycPrdZR2gdlskd8IUtyGhMRPdt9IQbUcKW3KnrDItlL6BijQp5hz5gUwp5dhe6ZKVUuuXyodKMULUF4DxTFDDyTeG4GMYgjalqrssLmIo4SOlgZp1qMR5aIAYsZX+og+TdSrfdDTgJVS5GXsETRlAnOnui6Ao9RHFfkxrxQPyDZdIXfM+UikvY8Jg80vmFZJCKWyLwHJgSbVRR6cRSqDKEg7ROT8mWHFEZVPNUADLsAFmkzaNUkyVI92scoV/3oS9tOVeYsD5WXvCQvmXvJqWbt2lf96cukfrK1fD2xBcKqszR/G+ImcKZAB1jcwK5xPS+lY8NGNK24tEK2jlCLrXeD5DoNYr68d2l/ee/SPnuXT+BdUBce2bsg9xjeZZ/OADnrZ/x3Tbzr2UsF8VYm3uOcLCpqqVLItm8Hgk5tVXWN+/UfyDn7j0/gP0Cnc2z/0T1ydFKLTTrusYMT9MoK7tsfddsfG3IgcHYZn8BluF332Aea5sm4BXEszJxaLOF/56zIuMiWs9+TCnL8eZkpn0L1fT+Uj87N5Ptdb1zUKLuoK9UqDVarC2yD5YGOO0INFA2f6/mJa7itONrIY4O8LCV+lIR3S494gWsAghqAoGlh3eVnDYehn8LLKc0Ngik3BPpsls4F/YcmobTePZCHiqNr4bJA8ywNAGqyB5zDweceCL6ryeD2bvJ9eAbv+OB5ng2e2276vA8HDx8IvNH1eHgm70TJA8WyH5E8bx15747Z6+GPFY0HPfUWSS1uzPynu2mUaPEoigslO+bXgBUvi6DWNtW7y3zCRSVtBXeN2NCFhluaR0IfCzrQM+nKnaVMlacClVhUEvUzwUnfgLrbv19x1wNbBbJg7zePKK6HLPg9UGNaj6txRGlU5G2qaE93L26nFqBg581+1fU96NbM8xB3NV7zrvdsv1/HfvGH2a/n2HjDzo72izdVdCL2C7r4A+wXN+9a9xP5DSbfbq7HvbvryV/n2O/0Yr9TOO7idXctn33vsHcOfSO869ZR2zgA3mXnWI6omKbVBaeUmTna++6Ct91d8Csvzw6wu9Rjp+6OmwvYVNGhL8LxuiukA9mUgaU0J+dsTrY5Vb1O1ab2/Zq52MVP6sSFgf07FIjhjhFbrSKEtnvbvT+jOl9SfOFDzgduQ249Squ/6Nr+kmJDRTubjEyWP2nW6uXvxtHwfw==</diagram></mxfile>"><defs/><g><path d="M 60 174 L 160 174 L 160 214 L 272.63 214" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 277.88 214 L 270.88 217.5 L 272.63 214 L 270.88 210.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 144 L 60 144 L 60 204 L 0 204 Z" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 37.98 189.84 C 37.27 189.84 36.7 190.29 36.7 190.84 L 36.7 192.75 C 36.7 193.31 37.27 193.75 37.98 193.75 L 48.95 193.75 C 49.66 193.75 50.23 193.31 50.23 192.75 L 50.23 190.84 C 50.23 190.29 49.66 189.84 48.95 189.84 Z M 9.51 187.84 L 50.51 187.84 C 51.46 187.84 52.17 188.54 52.17 189.38 L 52.17 194.18 C 52.17 195.01 51.46 195.71 50.51 195.71 L 9.51 195.71 C 8.54 195.71 7.84 195.01 7.84 194.18 L 7.84 189.38 C 7.84 188.54 8.54 187.84 9.51 187.84 Z M 9.51 186.05 C 7.63 186.05 6.05 187.52 6.05 189.38 L 6.05 194.18 C 6.05 196.03 7.63 197.5 9.51 197.5 L 50.51 197.5 C 52.38 197.5 53.96 196.03 53.96 194.18 L 53.96 189.38 C 53.96 187.52 52.38 186.05 50.51 186.05 Z M 11.64 156.14 L 48.34 156.14 L 48.34 178.44 L 11.64 178.44 Z M 10.77 154.35 C 10.77 154.35 10.27 154.5 10.27 154.5 C 10.27 154.5 10.17 154.58 10.13 154.61 C 10.1 154.65 10.07 154.69 10.05 154.71 C 9.96 154.83 9.94 154.9 9.92 154.95 C 9.88 155.05 9.88 155.1 9.87 155.15 C 9.86 155.24 9.85 155.29 9.85 155.37 L 9.85 179.21 C 9.85 179.28 9.86 179.34 9.87 179.43 C 9.88 179.48 9.88 179.52 9.92 179.62 C 9.94 179.67 9.96 179.75 10.05 179.86 C 10.07 179.89 10.1 179.93 10.13 179.96 C 10.17 180 10.27 180.07 10.27 180.07 C 10.27 180.08 10.77 180.23 10.77 180.23 L 49.21 180.23 C 49.22 180.23 49.71 180.07 49.71 180.07 C 49.71 180.07 49.82 180 49.85 179.96 C 49.89 179.93 49.91 179.89 49.94 179.86 C 50.03 179.75 50.04 179.67 50.07 179.62 C 50.11 179.52 50.11 179.48 50.12 179.43 C 50.13 179.34 50.13 179.28 50.13 179.21 L 50.13 155.37 C 50.13 155.29 50.13 155.24 50.12 155.15 C 50.11 155.1 50.11 155.05 50.07 154.95 C 50.04 154.9 50.03 154.83 49.94 154.71 C 49.91 154.69 49.89 154.65 49.85 154.61 C 49.82 154.58 49.71 154.5 49.71 154.5 C 49.71 154.5 49.22 154.35 49.21 154.35 Z M 8.65 152.29 L 51.35 152.29 C 51.81 152.29 52.22 152.69 52.22 153.29 L 52.22 181.24 C 52.22 181.84 51.81 182.23 51.35 182.23 L 8.65 182.23 C 8.2 182.23 7.79 181.84 7.79 181.24 L 7.79 153.29 C 7.79 152.69 8.2 152.29 8.65 152.29 Z M 8.65 150.5 C 7.16 150.5 6 151.79 6 153.29 L 6 181.24 C 6 182.73 7.16 184.02 8.65 184.02 L 51.35 184.02 C 52.84 184.02 54 182.73 54 181.24 L 54 153.29 C 54 151.79 52.84 150.5 51.35 150.5 Z" fill="#232f3e" stroke="none" pointer-events="all"/><g transform="translate(13.5,211.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="32" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Client</div></div></foreignObject><text x="16" y="12" fill="#232F3E" text-anchor="middle" font-size="12px" font-family="Helvetica">Client</text></switch></g><path d="M 60 276 L 160 276 L 160 214 L 272.63 214" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 277.88 214 L 270.88 217.5 L 272.63 214 L 270.88 210.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 246 L 60 246 L 60 306 L 0 306 Z" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 37.98 291.84 C 37.27 291.84 36.7 292.29 36.7 292.84 L 36.7 294.75 C 36.7 295.31 37.27 295.75 37.98 295.75 L 48.95 295.75 C 49.66 295.75 50.23 295.31 50.23 294.75 L 50.23 292.84 C 50.23 292.29 49.66 291.84 48.95 291.84 Z M 9.51 289.84 L 50.51 289.84 C 51.46 289.84 52.17 290.54 52.17 291.38 L 52.17 296.18 C 52.17 297.01 51.46 297.71 50.51 297.71 L 9.51 297.71 C 8.54 297.71 7.84 297.01 7.84 296.18 L 7.84 291.38 C 7.84 290.54 8.54 289.84 9.51 289.84 Z M 9.51 288.05 C 7.63 288.05 6.05 289.52 6.05 291.38 L 6.05 296.18 C 6.05 298.03 7.63 299.5 9.51 299.5 L 50.51 299.5 C 52.38 299.5 53.96 298.03 53.96 296.18 L 53.96 291.38 C 53.96 289.52 52.38 288.05 50.51 288.05 Z M 11.64 258.14 L 48.34 258.14 L 48.34 280.44 L 11.64 280.44 Z M 10.77 256.35 C 10.77 256.35 10.27 256.5 10.27 256.5 C 10.27 256.5 10.17 256.58 10.13 256.61 C 10.1 256.65 10.07 256.69 10.05 256.71 C 9.96 256.83 9.94 256.9 9.92 256.95 C 9.88 257.05 9.88 257.1 9.87 257.15 C 9.86 257.24 9.85 257.29 9.85 257.37 L 9.85 281.21 C 9.85 281.28 9.86 281.34 9.87 281.43 C 9.88 281.48 9.88 281.52 9.92 281.62 C 9.94 281.67 9.96 281.75 10.05 281.86 C 10.07 281.89 10.1 281.93 10.13 281.96 C 10.17 282 10.27 282.07 10.27 282.07 C 10.27 282.08 10.77 282.23 10.77 282.23 L 49.21 282.23 C 49.22 282.23 49.71 282.07 49.71 282.07 C 49.71 282.07 49.82 282 49.85 281.96 C 49.89 281.93 49.91 281.89 49.94 281.86 C 50.03 281.75 50.04 281.67 50.07 281.62 C 50.11 281.52 50.11 281.48 50.12 281.43 C 50.13 281.34 50.13 281.28 50.13 281.21 L 50.13 257.37 C 50.13 257.29 50.13 257.24 50.12 257.15 C 50.11 257.1 50.11 257.05 50.07 256.95 C 50.04 256.9 50.03 256.83 49.94 256.71 C 49.91 256.69 49.89 256.65 49.85 256.61 C 49.82 256.58 49.71 256.5 49.71 256.5 C 49.71 256.5 49.22 256.35 49.21 256.35 Z M 8.65 254.29 L 51.35 254.29 C 51.81 254.29 52.22 254.69 52.22 255.29 L 52.22 283.24 C 52.22 283.84 51.81 284.23 51.35 284.23 L 8.65 284.23 C 8.2 284.23 7.79 283.84 7.79 283.24 L 7.79 255.29 C 7.79 254.69 8.2 254.29 8.65 254.29 Z M 8.65 252.5 C 7.16 252.5 6 253.79 6 255.29 L 6 283.24 C 6 284.73 7.16 286.02 8.65 286.02 L 51.35 286.02 C 52.84 286.02 54 284.73 54 283.24 L 54 255.29 C 54 253.79 52.84 252.5 51.35 252.5 Z" fill="#232f3e" stroke="none" pointer-events="all"/><g transform="translate(13.5,313.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="32" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Client</div></div></foreignObject><text x="16" y="12" fill="#232F3E" text-anchor="middle" font-size="12px" font-family="Helvetica">Client</text></switch></g><path d="M 60 72 L 314 72 L 314 173.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 314 178.88 L 310.5 171.88 L 314 173.63 L 317.5 171.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 42 L 60 42 L 60 102 L 0 102 Z" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 37.98 87.84 C 37.27 87.84 36.7 88.29 36.7 88.84 L 36.7 90.75 C 36.7 91.31 37.27 91.75 37.98 91.75 L 48.95 91.75 C 49.66 91.75 50.23 91.31 50.23 90.75 L 50.23 88.84 C 50.23 88.29 49.66 87.84 48.95 87.84 Z M 9.51 85.84 L 50.51 85.84 C 51.46 85.84 52.17 86.54 52.17 87.38 L 52.17 92.18 C 52.17 93.01 51.46 93.71 50.51 93.71 L 9.51 93.71 C 8.54 93.71 7.84 93.01 7.84 92.18 L 7.84 87.38 C 7.84 86.54 8.54 85.84 9.51 85.84 Z M 9.51 84.05 C 7.63 84.05 6.05 85.52 6.05 87.38 L 6.05 92.18 C 6.05 94.03 7.63 95.5 9.51 95.5 L 50.51 95.5 C 52.38 95.5 53.96 94.03 53.96 92.18 L 53.96 87.38 C 53.96 85.52 52.38 84.05 50.51 84.05 Z M 11.64 54.14 L 48.34 54.14 L 48.34 76.44 L 11.64 76.44 Z M 10.77 52.35 C 10.77 52.35 10.27 52.5 10.27 52.5 C 10.27 52.5 10.17 52.58 10.13 52.61 C 10.1 52.65 10.07 52.69 10.05 52.71 C 9.96 52.83 9.94 52.9 9.92 52.95 C 9.88 53.05 9.88 53.1 9.87 53.15 C 9.86 53.24 9.85 53.29 9.85 53.37 L 9.85 77.21 C 9.85 77.28 9.86 77.34 9.87 77.43 C 9.88 77.48 9.88 77.52 9.92 77.62 C 9.94 77.67 9.96 77.75 10.05 77.86 C 10.07 77.89 10.1 77.93 10.13 77.96 C 10.17 78 10.27 78.07 10.27 78.07 C 10.27 78.08 10.77 78.23 10.77 78.23 L 49.21 78.23 C 49.22 78.23 49.71 78.07 49.71 78.07 C 49.71 78.07 49.82 78 49.85 77.96 C 49.89 77.93 49.91 77.89 49.94 77.86 C 50.03 77.75 50.04 77.67 50.07 77.62 C 50.11 77.52 50.11 77.48 50.12 77.43 C 50.13 77.34 50.13 77.28 50.13 77.21 L 50.13 53.37 C 50.13 53.29 50.13 53.24 50.12 53.15 C 50.11 53.1 50.11 53.05 50.07 52.95 C 50.04 52.9 50.03 52.83 49.94 52.71 C 49.91 52.69 49.89 52.65 49.85 52.61 C 49.82 52.58 49.71 52.5 49.71 52.5 C 49.71 52.5 49.22 52.35 49.21 52.35 Z M 8.65 50.29 L 51.35 50.29 C 51.81 50.29 52.22 50.69 52.22 51.29 L 52.22 79.24 C 52.22 79.84 51.81 80.23 51.35 80.23 L 8.65 80.23 C 8.2 80.23 7.79 79.84 7.79 79.24 L 7.79 51.29 C 7.79 50.69 8.2 50.29 8.65 50.29 Z M 8.65 48.5 C 7.16 48.5 6 49.79 6 51.29 L 6 79.24 C 6 80.73 7.16 82.02 8.65 82.02 L 51.35 82.02 C 52.84 82.02 54 80.73 54 79.24 L 54 51.29 C 54 49.79 52.84 48.5 51.35 48.5 Z" fill="#232f3e" stroke="none" pointer-events="all"/><g transform="translate(13.5,109.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="32" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Client</div></div></foreignObject><text x="16" y="12" fill="#232F3E" text-anchor="middle" font-size="12px" font-family="Helvetica">Client</text></switch></g><path d="M 60 378 L 314 378 L 314 257.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 314 252.12 L 317.5 259.12 L 314 257.37 L 310.5 259.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 348 L 60 348 L 60 408 L 0 408 Z" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 37.98 393.84 C 37.27 393.84 36.7 394.29 36.7 394.84 L 36.7 396.75 C 36.7 397.31 37.27 397.75 37.98 397.75 L 48.95 397.75 C 49.66 397.75 50.23 397.31 50.23 396.75 L 50.23 394.84 C 50.23 394.29 49.66 393.84 48.95 393.84 Z M 9.51 391.84 L 50.51 391.84 C 51.46 391.84 52.17 392.54 52.17 393.38 L 52.17 398.18 C 52.17 399.01 51.46 399.71 50.51 399.71 L 9.51 399.71 C 8.54 399.71 7.84 399.01 7.84 398.18 L 7.84 393.38 C 7.84 392.54 8.54 391.84 9.51 391.84 Z M 9.51 390.05 C 7.63 390.05 6.05 391.52 6.05 393.38 L 6.05 398.18 C 6.05 400.03 7.63 401.5 9.51 401.5 L 50.51 401.5 C 52.38 401.5 53.96 400.03 53.96 398.18 L 53.96 393.38 C 53.96 391.52 52.38 390.05 50.51 390.05 Z M 11.64 360.14 L 48.34 360.14 L 48.34 382.44 L 11.64 382.44 Z M 10.77 358.35 C 10.77 358.35 10.27 358.5 10.27 358.5 C 10.27 358.5 10.17 358.58 10.13 358.61 C 10.1 358.65 10.07 358.69 10.05 358.71 C 9.96 358.83 9.94 358.9 9.92 358.95 C 9.88 359.05 9.88 359.1 9.87 359.15 C 9.86 359.24 9.85 359.29 9.85 359.37 L 9.85 383.21 C 9.85 383.28 9.86 383.34 9.87 383.43 C 9.88 383.48 9.88 383.52 9.92 383.62 C 9.94 383.67 9.96 383.75 10.05 383.86 C 10.07 383.89 10.1 383.93 10.13 383.96 C 10.17 384 10.27 384.07 10.27 384.07 C 10.27 384.08 10.77 384.23 10.77 384.23 L 49.21 384.23 C 49.22 384.23 49.71 384.07 49.71 384.07 C 49.71 384.07 49.82 384 49.85 383.96 C 49.89 383.93 49.91 383.89 49.94 383.86 C 50.03 383.75 50.04 383.67 50.07 383.62 C 50.11 383.52 50.11 383.48 50.12 383.43 C 50.13 383.34 50.13 383.28 50.13 383.21 L 50.13 359.37 C 50.13 359.29 50.13 359.24 50.12 359.15 C 50.11 359.1 50.11 359.05 50.07 358.95 C 50.04 358.9 50.03 358.83 49.94 358.71 C 49.91 358.69 49.89 358.65 49.85 358.61 C 49.82 358.58 49.71 358.5 49.71 358.5 C 49.71 358.5 49.22 358.35 49.21 358.35 Z M 8.65 356.29 L 51.35 356.29 C 51.81 356.29 52.22 356.69 52.22 357.29 L 52.22 385.24 C 52.22 385.84 51.81 386.23 51.35 386.23 L 8.65 386.23 C 8.2 386.23 7.79 385.84 7.79 385.24 L 7.79 357.29 C 7.79 356.69 8.2 356.29 8.65 356.29 Z M 8.65 354.5 C 7.16 354.5 6 355.79 6 357.29 L 6 385.24 C 6 386.73 7.16 388.02 8.65 388.02 L 51.35 388.02 C 52.84 388.02 54 386.73 54 385.24 L 54 357.29 C 54 355.79 52.84 354.5 51.35 354.5 Z" fill="#232f3e" stroke="none" pointer-events="all"/><g transform="translate(13.5,415.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="32" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(35, 47, 62); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Client</div></div></foreignObject><text x="16" y="12" fill="#232F3E" text-anchor="middle" font-size="12px" font-family="Helvetica">Client</text></switch></g><path d="M 300.57 248 C 298.05 248 295.63 246.61 294.37 244 L 279.55 217.33 C 278.21 215 278.42 212.29 279.55 210.35 L 294.5 183.68 C 295.76 181.25 298.02 180 300.32 180 L 330.33 180 C 332.57 180 334.78 181.13 336.1 183.4 L 350.99 210.06 C 352.79 212.87 352.17 215.87 351.16 217.54 L 336.34 244.04 C 335.35 246.19 333.11 248 330.23 248 Z" fill="#5184f3" stroke="none" pointer-events="all"/><path d="M 327.76 248 L 301.23 220.98 L 305.47 219.2 L 301.15 215.01 L 305.25 213.23 L 301.27 209.15 L 306.99 206.13 L 310.91 199.29 L 315.1 203.89 L 316.48 199.4 L 321.33 204.61 L 322.16 199.33 L 346.92 225.11 L 336.34 244.04 C 335.36 246.19 333.11 248 330.23 248 Z" fill-opacity="0.07" fill="#000000" stroke="none" pointer-events="all"/><rect x="278.21" y="180" width="0" height="0" fill="none" stroke="none" pointer-events="all"/><path d="M 319.51 217.25 C 319.51 217.94 319.35 218.24 318.51 218.2 L 312.21 218.2 C 311.65 218.2 311.27 217.86 311.27 217.26 L 311.27 210.71 C 311.27 210.23 311.49 209.8 312.03 209.8 L 318.77 209.8 C 319.2 209.8 319.51 210.04 319.51 210.45 Z M 323.4 222.24 L 323.4 205.82 L 307.43 205.82 L 307.43 222.24 Z M 311.11 224.93 L 311.11 227.87 C 311.11 228.39 310.81 228.84 310.44 228.84 L 309.19 228.84 C 308.82 228.84 308.5 228.48 308.5 228.07 L 308.5 224.93 L 305.68 224.93 C 305.22 224.93 304.91 224.6 304.91 224.11 L 304.91 221.19 L 301.91 221.19 C 301.44 221.19 301.15 220.88 301.15 220.35 L 301.15 219.33 C 301.15 218.75 301.47 218.49 301.92 218.49 L 304.91 218.49 L 304.91 215.28 L 301.71 215.28 C 301.35 215.28 301.15 214.93 301.15 214.5 L 301.15 213.48 C 301.15 213.03 301.31 212.76 301.74 212.76 L 304.91 212.76 L 304.91 209.49 L 301.88 209.49 C 301.55 209.49 301.15 209.15 301.15 208.72 L 301.15 207.55 C 301.15 207.1 301.36 206.82 301.72 206.82 L 304.91 206.82 L 304.91 203.73 C 304.91 203.36 305.13 203.04 305.54 203.04 L 308.5 203.04 L 308.5 199.89 C 308.5 199.44 308.75 199.16 309.07 199.16 L 310.53 199.16 C 310.91 199.16 311.11 199.4 311.11 199.92 L 311.11 203.04 L 314.23 203.04 L 314.23 199.83 C 314.23 199.4 314.46 199.16 314.94 199.16 L 316.03 199.16 C 316.33 199.16 316.64 199.48 316.64 199.8 L 316.64 203.04 L 319.91 203.04 L 319.91 199.81 C 319.91 199.46 320.23 199.16 320.72 199.16 L 321.76 199.16 C 322.06 199.16 322.35 199.41 322.35 199.77 L 322.35 203.04 L 325.34 203.04 C 325.97 203.04 326.1 203.49 326.1 203.98 L 326.1 206.82 L 328.94 206.82 C 329.49 206.82 329.85 207.21 329.85 207.69 L 329.85 208.92 C 329.85 209.19 329.6 209.49 329.2 209.49 L 326.1 209.49 L 326.1 212.76 L 329.34 212.76 C 329.72 212.76 329.85 213.02 329.85 213.33 L 329.85 214.55 C 329.85 214.96 329.66 215.28 329.23 215.28 L 326.1 215.28 L 326.1 218.49 L 328.88 218.49 C 329.5 218.49 329.85 218.72 329.85 219.29 L 329.85 220.56 C 329.85 220.84 329.59 221.19 329.24 221.19 L 326.1 221.19 L 326.1 223.85 C 326.1 224.52 325.81 224.93 324.96 224.93 L 322.35 224.93 L 322.35 227.87 C 322.35 228.44 322.14 228.84 321.55 228.84 L 320.37 228.84 C 320.09 228.84 319.92 228.56 319.91 228.21 L 319.91 224.93 L 316.64 224.93 L 316.64 228.07 C 316.64 228.42 316.49 228.84 315.97 228.84 L 314.71 228.84 C 314.41 228.84 314.23 228.41 314.23 228.07 L 314.23 224.93 Z" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(249.5,264.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="132" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(153, 153, 153); line-height: 1.2; vertical-align: top; white-space: nowrap; font-weight: bold; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><font style="font-size: 20px">WEB PORTAL</font></div></div></foreignObject><text x="66" y="17" fill="#999999" text-anchor="middle" font-size="11px" font-family="Helvetica" font-weight="bold"><font style="font-size: 20px">WEB PORTAL</font></text></switch></g><path d="M 510.57 412 C 508.05 412 505.63 410.61 504.37 408 L 489.55 381.33 C 488.21 379 488.42 376.29 489.55 374.35 L 504.5 347.68 C 505.76 345.25 508.02 344 510.32 344 L 540.33 344 C 542.57 344 544.78 345.13 546.1 347.4 L 560.99 374.06 C 562.79 376.87 562.17 379.87 561.16 381.54 L 546.34 408.04 C 545.35 410.19 543.11 412 540.23 412 Z" fill="#5184f3" stroke="none" pointer-events="all"/><path d="M 537.76 412 L 511.23 384.98 L 515.47 383.2 L 511.15 379.01 L 515.25 377.23 L 511.27 373.15 L 516.99 370.13 L 520.91 363.29 L 525.1 367.89 L 526.48 363.4 L 531.33 368.61 L 532.16 363.33 L 556.92 389.11 L 546.34 408.04 C 545.36 410.19 543.11 412 540.23 412 Z" fill-opacity="0.07" fill="#000000" stroke="none" pointer-events="all"/><rect x="488.21" y="344" width="0" height="0" fill="none" stroke="none" pointer-events="all"/><path d="M 529.51 381.25 C 529.51 381.94 529.35 382.24 528.51 382.2 L 522.21 382.2 C 521.65 382.2 521.27 381.86 521.27 381.26 L 521.27 374.71 C 521.27 374.23 521.49 373.8 522.03 373.8 L 528.77 373.8 C 529.2 373.8 529.51 374.04 529.51 374.45 Z M 533.4 386.24 L 533.4 369.82 L 517.43 369.82 L 517.43 386.24 Z M 521.11 388.93 L 521.11 391.87 C 521.11 392.39 520.81 392.84 520.44 392.84 L 519.19 392.84 C 518.82 392.84 518.5 392.48 518.5 392.07 L 518.5 388.93 L 515.68 388.93 C 515.22 388.93 514.91 388.6 514.91 388.11 L 514.91 385.19 L 511.91 385.19 C 511.44 385.19 511.15 384.88 511.15 384.35 L 511.15 383.33 C 511.15 382.75 511.47 382.49 511.92 382.49 L 514.91 382.49 L 514.91 379.28 L 511.71 379.28 C 511.35 379.28 511.15 378.93 511.15 378.5 L 511.15 377.48 C 511.15 377.03 511.31 376.76 511.74 376.76 L 514.91 376.76 L 514.91 373.49 L 511.88 373.49 C 511.55 373.49 511.15 373.15 511.15 372.72 L 511.15 371.55 C 511.15 371.1 511.36 370.82 511.72 370.82 L 514.91 370.82 L 514.91 367.73 C 514.91 367.36 515.13 367.04 515.54 367.04 L 518.5 367.04 L 518.5 363.89 C 518.5 363.44 518.75 363.16 519.07 363.16 L 520.53 363.16 C 520.91 363.16 521.11 363.4 521.11 363.92 L 521.11 367.04 L 524.23 367.04 L 524.23 363.83 C 524.23 363.4 524.46 363.16 524.94 363.16 L 526.03 363.16 C 526.33 363.16 526.64 363.48 526.64 363.8 L 526.64 367.04 L 529.91 367.04 L 529.91 363.81 C 529.91 363.46 530.23 363.16 530.72 363.16 L 531.76 363.16 C 532.06 363.16 532.35 363.41 532.35 363.77 L 532.35 367.04 L 535.34 367.04 C 535.97 367.04 536.1 367.49 536.1 367.98 L 536.1 370.82 L 538.94 370.82 C 539.49 370.82 539.85 371.21 539.85 371.69 L 539.85 372.92 C 539.85 373.19 539.6 373.49 539.2 373.49 L 536.1 373.49 L 536.1 376.76 L 539.34 376.76 C 539.72 376.76 539.85 377.02 539.85 377.33 L 539.85 378.55 C 539.85 378.96 539.66 379.28 539.23 379.28 L 536.1 379.28 L 536.1 382.49 L 538.88 382.49 C 539.5 382.49 539.85 382.72 539.85 383.29 L 539.85 384.56 C 539.85 384.84 539.59 385.19 539.24 385.19 L 536.1 385.19 L 536.1 387.85 C 536.1 388.52 535.81 388.93 534.96 388.93 L 532.35 388.93 L 532.35 391.87 C 532.35 392.44 532.14 392.84 531.55 392.84 L 530.37 392.84 C 530.09 392.84 529.92 392.56 529.91 392.21 L 529.91 388.93 L 526.64 388.93 L 526.64 392.07 C 526.64 392.42 526.49 392.84 525.97 392.84 L 524.71 392.84 C 524.41 392.84 524.23 392.41 524.23 392.07 L 524.23 388.93 Z" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(469.5,428.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="112" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(153, 153, 153); line-height: 1.2; vertical-align: top; white-space: nowrap; font-weight: bold; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><font style="font-size: 20px">DOCSTORE</font></div></div></foreignObject><text x="56" y="17" fill="#999999" text-anchor="middle" font-size="11px" font-family="Helvetica" font-weight="bold"><font style="font-size: 20px">DOCSTORE</font></text></switch></g><path d="M 510.57 84 C 508.05 84 505.63 82.61 504.37 80 L 489.55 53.33 C 488.21 51 488.42 48.29 489.55 46.35 L 504.5 19.68 C 505.76 17.25 508.02 16 510.32 16 L 540.33 16 C 542.57 16 544.78 17.13 546.1 19.4 L 560.99 46.06 C 562.79 48.87 562.17 51.87 561.16 53.54 L 546.34 80.04 C 545.35 82.19 543.11 84 540.23 84 Z" fill="#5184f3" stroke="none" pointer-events="all"/><path d="M 537.76 84 L 511.23 56.98 L 515.47 55.2 L 511.15 51.01 L 515.25 49.23 L 511.27 45.15 L 516.99 42.13 L 520.91 35.29 L 525.1 39.89 L 526.48 35.4 L 531.33 40.61 L 532.16 35.33 L 556.92 61.11 L 546.34 80.04 C 545.36 82.19 543.11 84 540.23 84 Z" fill-opacity="0.07" fill="#000000" stroke="none" pointer-events="all"/><rect x="488.21" y="16" width="0" height="0" fill="none" stroke="none" pointer-events="all"/><path d="M 529.51 53.25 C 529.51 53.94 529.35 54.24 528.51 54.2 L 522.21 54.2 C 521.65 54.2 521.27 53.86 521.27 53.26 L 521.27 46.71 C 521.27 46.23 521.49 45.8 522.03 45.8 L 528.77 45.8 C 529.2 45.8 529.51 46.04 529.51 46.45 Z M 533.4 58.24 L 533.4 41.82 L 517.43 41.82 L 517.43 58.24 Z M 521.11 60.93 L 521.11 63.87 C 521.11 64.39 520.81 64.84 520.44 64.84 L 519.19 64.84 C 518.82 64.84 518.5 64.48 518.5 64.07 L 518.5 60.93 L 515.68 60.93 C 515.22 60.93 514.91 60.6 514.91 60.11 L 514.91 57.19 L 511.91 57.19 C 511.44 57.19 511.15 56.88 511.15 56.35 L 511.15 55.33 C 511.15 54.75 511.47 54.49 511.92 54.49 L 514.91 54.49 L 514.91 51.28 L 511.71 51.28 C 511.35 51.28 511.15 50.93 511.15 50.5 L 511.15 49.48 C 511.15 49.03 511.31 48.76 511.74 48.76 L 514.91 48.76 L 514.91 45.49 L 511.88 45.49 C 511.55 45.49 511.15 45.15 511.15 44.72 L 511.15 43.55 C 511.15 43.1 511.36 42.82 511.72 42.82 L 514.91 42.82 L 514.91 39.73 C 514.91 39.36 515.13 39.04 515.54 39.04 L 518.5 39.04 L 518.5 35.89 C 518.5 35.44 518.75 35.16 519.07 35.16 L 520.53 35.16 C 520.91 35.16 521.11 35.4 521.11 35.92 L 521.11 39.04 L 524.23 39.04 L 524.23 35.83 C 524.23 35.4 524.46 35.16 524.94 35.16 L 526.03 35.16 C 526.33 35.16 526.64 35.48 526.64 35.8 L 526.64 39.04 L 529.91 39.04 L 529.91 35.81 C 529.91 35.46 530.23 35.16 530.72 35.16 L 531.76 35.16 C 532.06 35.16 532.35 35.41 532.35 35.77 L 532.35 39.04 L 535.34 39.04 C 535.97 39.04 536.1 39.49 536.1 39.98 L 536.1 42.82 L 538.94 42.82 C 539.49 42.82 539.85 43.21 539.85 43.69 L 539.85 44.92 C 539.85 45.19 539.6 45.49 539.2 45.49 L 536.1 45.49 L 536.1 48.76 L 539.34 48.76 C 539.72 48.76 539.85 49.02 539.85 49.33 L 539.85 50.55 C 539.85 50.96 539.66 51.28 539.23 51.28 L 536.1 51.28 L 536.1 54.49 L 538.88 54.49 C 539.5 54.49 539.85 54.72 539.85 55.29 L 539.85 56.56 C 539.85 56.84 539.59 57.19 539.24 57.19 L 536.1 57.19 L 536.1 59.85 C 536.1 60.52 535.81 60.93 534.96 60.93 L 532.35 60.93 L 532.35 63.87 C 532.35 64.44 532.14 64.84 531.55 64.84 L 530.37 64.84 C 530.09 64.84 529.92 64.56 529.91 64.21 L 529.91 60.93 L 526.64 60.93 L 526.64 64.07 C 526.64 64.42 526.49 64.84 525.97 64.84 L 524.71 64.84 C 524.41 64.84 524.23 64.41 524.23 64.07 L 524.23 60.93 Z" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(469.5,100.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="111" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(153, 153, 153); line-height: 1.2; vertical-align: top; white-space: nowrap; font-weight: bold; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><font style="font-size: 20px">FILESTORE</font></div></div></foreignObject><text x="56" y="17" fill="#999999" text-anchor="middle" font-size="11px" font-family="Helvetica" font-weight="bold"><font style="font-size: 20px">FILESTORE</font></text></switch></g><path d="M 352 214 L 399 214 L 399 378 L 480.76 378" fill="none" stroke="#4284f3" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 486.76 378 L 480.76 380 L 480.76 376 Z" fill="#4284f3" stroke="#4284f3" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 352 214 L 399 214 L 399 50 L 480.76 50" fill="none" stroke="#4284f3" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 486.76 50 L 480.76 52 L 480.76 48 Z" fill="#4284f3" stroke="#4284f3" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 510.57 248 C 508.05 248 505.63 246.61 504.37 244 L 489.55 217.33 C 488.21 215 488.42 212.29 489.55 210.35 L 504.5 183.68 C 505.76 181.25 508.02 180 510.32 180 L 540.33 180 C 542.57 180 544.78 181.13 546.1 183.4 L 560.99 210.06 C 562.79 212.87 562.17 215.87 561.16 217.54 L 546.34 244.04 C 545.35 246.19 543.11 248 540.23 248 Z" fill="#5184f3" stroke="none" pointer-events="all"/><path d="M 537.76 248 L 511.23 220.98 L 515.47 219.2 L 511.15 215.01 L 515.25 213.23 L 511.27 209.15 L 516.99 206.13 L 520.91 199.29 L 525.1 203.89 L 526.48 199.4 L 531.33 204.61 L 532.16 199.33 L 556.92 225.11 L 546.34 244.04 C 545.36 246.19 543.11 248 540.23 248 Z" fill-opacity="0.07" fill="#000000" stroke="none" pointer-events="all"/><rect x="488.21" y="180" width="0" height="0" fill="none" stroke="none" pointer-events="all"/><path d="M 529.51 217.25 C 529.51 217.94 529.35 218.24 528.51 218.2 L 522.21 218.2 C 521.65 218.2 521.27 217.86 521.27 217.26 L 521.27 210.71 C 521.27 210.23 521.49 209.8 522.03 209.8 L 528.77 209.8 C 529.2 209.8 529.51 210.04 529.51 210.45 Z M 533.4 222.24 L 533.4 205.82 L 517.43 205.82 L 517.43 222.24 Z M 521.11 224.93 L 521.11 227.87 C 521.11 228.39 520.81 228.84 520.44 228.84 L 519.19 228.84 C 518.82 228.84 518.5 228.48 518.5 228.07 L 518.5 224.93 L 515.68 224.93 C 515.22 224.93 514.91 224.6 514.91 224.11 L 514.91 221.19 L 511.91 221.19 C 511.44 221.19 511.15 220.88 511.15 220.35 L 511.15 219.33 C 511.15 218.75 511.47 218.49 511.92 218.49 L 514.91 218.49 L 514.91 215.28 L 511.71 215.28 C 511.35 215.28 511.15 214.93 511.15 214.5 L 511.15 213.48 C 511.15 213.03 511.31 212.76 511.74 212.76 L 514.91 212.76 L 514.91 209.49 L 511.88 209.49 C 511.55 209.49 511.15 209.15 511.15 208.72 L 511.15 207.55 C 511.15 207.1 511.36 206.82 511.72 206.82 L 514.91 206.82 L 514.91 203.73 C 514.91 203.36 515.13 203.04 515.54 203.04 L 518.5 203.04 L 518.5 199.89 C 518.5 199.44 518.75 199.16 519.07 199.16 L 520.53 199.16 C 520.91 199.16 521.11 199.4 521.11 199.92 L 521.11 203.04 L 524.23 203.04 L 524.23 199.83 C 524.23 199.4 524.46 199.16 524.94 199.16 L 526.03 199.16 C 526.33 199.16 526.64 199.48 526.64 199.8 L 526.64 203.04 L 529.91 203.04 L 529.91 199.81 C 529.91 199.46 530.23 199.16 530.72 199.16 L 531.76 199.16 C 532.06 199.16 532.35 199.41 532.35 199.77 L 532.35 203.04 L 535.34 203.04 C 535.97 203.04 536.1 203.49 536.1 203.98 L 536.1 206.82 L 538.94 206.82 C 539.49 206.82 539.85 207.21 539.85 207.69 L 539.85 208.92 C 539.85 209.19 539.6 209.49 539.2 209.49 L 536.1 209.49 L 536.1 212.76 L 539.34 212.76 C 539.72 212.76 539.85 213.02 539.85 213.33 L 539.85 214.55 C 539.85 214.96 539.66 215.28 539.23 215.28 L 536.1 215.28 L 536.1 218.49 L 538.88 218.49 C 539.5 218.49 539.85 218.72 539.85 219.29 L 539.85 220.56 C 539.85 220.84 539.59 221.19 539.24 221.19 L 536.1 221.19 L 536.1 223.85 C 536.1 224.52 535.81 224.93 534.96 224.93 L 532.35 224.93 L 532.35 227.87 C 532.35 228.44 532.14 228.84 531.55 228.84 L 530.37 228.84 C 530.09 228.84 529.92 228.56 529.91 228.21 L 529.91 224.93 L 526.64 224.93 L 526.64 228.07 C 526.64 228.42 526.49 228.84 525.97 228.84 L 524.71 228.84 C 524.41 228.84 524.23 228.41 524.23 228.07 L 524.23 224.93 Z" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(455.5,264.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="139" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(153, 153, 153); line-height: 1.2; vertical-align: top; white-space: nowrap; font-weight: bold; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><font style="font-size: 20px">COMPILATION</font></div></div></foreignObject><text x="70" y="17" fill="#999999" text-anchor="middle" font-size="11px" font-family="Helvetica" font-weight="bold"><font style="font-size: 20px">COMPILATION</font></text></switch></g><path d="M 526 84 L 526 171.76" fill="none" stroke="#4284f3" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 526 177.76 L 524 171.76 L 528 171.76 Z" fill="#4284f3" stroke="#4284f3" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 526 256.24 L 526 344" fill="none" stroke="#4284f3" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 526 250.24 L 528 256.24 L 524 256.24 Z" fill="#4284f3" stroke="#4284f3" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 352 214 L 480.76 214" fill="none" stroke="#4284f3" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 486.76 214 L 480.76 216 L 480.76 212 Z" fill="#4284f3" stroke="#4284f3" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g></svg> \ No newline at end of file diff --git a/tuto2/index.html b/tuto2/index.html new file mode 100644 index 0000000..daed564 --- /dev/null +++ b/tuto2/index.html @@ -0,0 +1,444 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> +<head> +<!-- 2019-11-29 ven. 00:21 --> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1" /> +<title>Distributed experiments on Grid'5000 … and beyond !</title> +<meta name="generator" content="Org mode" /> +<meta name="author" content="Matthieu Simonin" /> +<style type="text/css"> + <!--/*--><![CDATA[/*><!--*/ + .title { text-align: center; + margin-bottom: .2em; } + .subtitle { text-align: center; + font-size: medium; + font-weight: bold; + margin-top:0; } + .todo { font-family: monospace; color: red; } + .done { font-family: monospace; color: green; } + .priority { font-family: monospace; color: orange; } + .tag { background-color: #eee; font-family: monospace; + padding: 2px; font-size: 80%; font-weight: normal; } + .timestamp { color: #bebebe; } + .timestamp-kwd { color: #5f9ea0; } + .org-right { margin-left: auto; margin-right: 0px; text-align: right; } + .org-left { margin-left: 0px; margin-right: auto; text-align: left; } + .org-center { margin-left: auto; margin-right: auto; text-align: center; } + .underline { text-decoration: underline; } + #postamble p, #preamble p { font-size: 90%; margin: .2em; } + p.verse { margin-left: 3%; } + pre { + border: 1px solid #ccc; + box-shadow: 3px 3px 3px #eee; + padding: 8pt; + font-family: monospace; + overflow: auto; + margin: 1.2em; + } + pre.src { + position: relative; + overflow: visible; + padding-top: 1.2em; + } + pre.src:before { + display: none; + position: absolute; + background-color: white; + top: -10px; + right: 10px; + padding: 3px; + border: 1px solid black; + } + pre.src:hover:before { display: inline;} + /* Languages per Org manual */ + pre.src-asymptote:before { content: 'Asymptote'; } + pre.src-awk:before { content: 'Awk'; } + pre.src-C:before { content: 'C'; } + /* pre.src-C++ doesn't work in CSS */ + pre.src-clojure:before { content: 'Clojure'; } + pre.src-css:before { content: 'CSS'; } + pre.src-D:before { content: 'D'; } + pre.src-ditaa:before { content: 'ditaa'; } + pre.src-dot:before { content: 'Graphviz'; } + pre.src-calc:before { content: 'Emacs Calc'; } + pre.src-emacs-lisp:before { content: 'Emacs Lisp'; } + pre.src-fortran:before { content: 'Fortran'; } + pre.src-gnuplot:before { content: 'gnuplot'; } + pre.src-haskell:before { content: 'Haskell'; } + pre.src-hledger:before { content: 'hledger'; } + pre.src-java:before { content: 'Java'; } + pre.src-js:before { content: 'Javascript'; } + pre.src-latex:before { content: 'LaTeX'; } + pre.src-ledger:before { content: 'Ledger'; } + pre.src-lisp:before { content: 'Lisp'; } + pre.src-lilypond:before { content: 'Lilypond'; } + pre.src-lua:before { content: 'Lua'; } + pre.src-matlab:before { content: 'MATLAB'; } + pre.src-mscgen:before { content: 'Mscgen'; } + pre.src-ocaml:before { content: 'Objective Caml'; } + pre.src-octave:before { content: 'Octave'; } + pre.src-org:before { content: 'Org mode'; } + pre.src-oz:before { content: 'OZ'; } + pre.src-plantuml:before { content: 'Plantuml'; } + pre.src-processing:before { content: 'Processing.js'; } + pre.src-python:before { content: 'Python'; } + pre.src-R:before { content: 'R'; } + pre.src-ruby:before { content: 'Ruby'; } + pre.src-sass:before { content: 'Sass'; } + pre.src-scheme:before { content: 'Scheme'; } + pre.src-screen:before { content: 'Gnu Screen'; } + pre.src-sed:before { content: 'Sed'; } + pre.src-sh:before { content: 'shell'; } + pre.src-sql:before { content: 'SQL'; } + pre.src-sqlite:before { content: 'SQLite'; } + /* additional languages in org.el's org-babel-load-languages alist */ + pre.src-forth:before { content: 'Forth'; } + pre.src-io:before { content: 'IO'; } + pre.src-J:before { content: 'J'; } + pre.src-makefile:before { content: 'Makefile'; } + pre.src-maxima:before { content: 'Maxima'; } + pre.src-perl:before { content: 'Perl'; } + pre.src-picolisp:before { content: 'Pico Lisp'; } + pre.src-scala:before { content: 'Scala'; } + pre.src-shell:before { content: 'Shell Script'; } + pre.src-ebnf2ps:before { content: 'ebfn2ps'; } + /* additional language identifiers per "defun org-babel-execute" + in ob-*.el */ + pre.src-cpp:before { content: 'C++'; } + pre.src-abc:before { content: 'ABC'; } + pre.src-coq:before { content: 'Coq'; } + pre.src-groovy:before { content: 'Groovy'; } + /* additional language identifiers from org-babel-shell-names in + ob-shell.el: ob-shell is the only babel language using a lambda to put + the execution function name together. */ + pre.src-bash:before { content: 'bash'; } + pre.src-csh:before { content: 'csh'; } + pre.src-ash:before { content: 'ash'; } + pre.src-dash:before { content: 'dash'; } + pre.src-ksh:before { content: 'ksh'; } + pre.src-mksh:before { content: 'mksh'; } + pre.src-posh:before { content: 'posh'; } + /* Additional Emacs modes also supported by the LaTeX listings package */ + pre.src-ada:before { content: 'Ada'; } + pre.src-asm:before { content: 'Assembler'; } + pre.src-caml:before { content: 'Caml'; } + pre.src-delphi:before { content: 'Delphi'; } + pre.src-html:before { content: 'HTML'; } + pre.src-idl:before { content: 'IDL'; } + pre.src-mercury:before { content: 'Mercury'; } + pre.src-metapost:before { content: 'MetaPost'; } + pre.src-modula-2:before { content: 'Modula-2'; } + pre.src-pascal:before { content: 'Pascal'; } + pre.src-ps:before { content: 'PostScript'; } + pre.src-prolog:before { content: 'Prolog'; } + pre.src-simula:before { content: 'Simula'; } + pre.src-tcl:before { content: 'tcl'; } + pre.src-tex:before { content: 'TeX'; } + pre.src-plain-tex:before { content: 'Plain TeX'; } + pre.src-verilog:before { content: 'Verilog'; } + pre.src-vhdl:before { content: 'VHDL'; } + pre.src-xml:before { content: 'XML'; } + pre.src-nxml:before { content: 'XML'; } + /* add a generic configuration mode; LaTeX export needs an additional + (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */ + pre.src-conf:before { content: 'Configuration File'; } + + table { border-collapse:collapse; } + caption.t-above { caption-side: top; } + caption.t-bottom { caption-side: bottom; } + td, th { vertical-align:top; } + th.org-right { text-align: center; } + th.org-left { text-align: center; } + th.org-center { text-align: center; } + td.org-right { text-align: right; } + td.org-left { text-align: left; } + td.org-center { text-align: center; } + dt { font-weight: bold; } + .footpara { display: inline; } + .footdef { margin-bottom: 1em; } + .figure { padding: 1em; } + .figure p { text-align: center; } + .inlinetask { + padding: 10px; + border: 2px solid gray; + margin: 10px; + background: #ffffcc; + } + #org-div-home-and-up + { text-align: right; font-size: 70%; white-space: nowrap; } + textarea { overflow-x: auto; } + .linenr { font-size: smaller } + .code-highlighted { background-color: #ffff00; } + .org-info-js_info-navigation { border-style: none; } + #org-info-js_console-label + { font-size: 10px; font-weight: bold; white-space: nowrap; } + .org-info-js_search-highlight + { background-color: #ffff00; color: #000000; font-weight: bold; } + .org-svg { width: 90%; } + /*]]>*/--> +</style> +<link rel="stylesheet" type="text/css" href="timeline.css" /> +<script type="text/javascript"> +/* +@licstart The following is the entire license notice for the +JavaScript code in this tag. + +Copyright (C) 2012-2018 Free Software Foundation, Inc. + +The JavaScript code in this tag is free software: you can +redistribute it and/or modify it under the terms of the GNU +General Public License (GNU GPL) as published by the Free Software +Foundation, either version 3 of the License, or (at your option) +any later version. The code is distributed WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. + +As additional permission under GNU GPL version 3 section 7, you +may distribute non-source (e.g., minimized or compacted) forms of +that code without the copy of the GNU GPL normally required by +section 4, provided you include this license notice and a URL +through which recipients can access the Corresponding Source. + + +@licend The above is the entire license notice +for the JavaScript code in this tag. +*/ +<!--/*--><![CDATA[/*><!--*/ + function CodeHighlightOn(elem, id) + { + var target = document.getElementById(id); + if(null != target) { + elem.cacheClassElem = elem.className; + elem.cacheClassTarget = target.className; + target.className = "code-highlighted"; + elem.className = "code-highlighted"; + } + } + function CodeHighlightOff(elem, id) + { + var target = document.getElementById(id); + if(elem.cacheClassElem) + elem.className = elem.cacheClassElem; + if(elem.cacheClassTarget) + target.className = elem.cacheClassTarget; + } +/*]]>*///--> +</script> +</head> +<body> +<div id="content"> +<h1 class="title">Distributed experiments on Grid'5000 … and beyond !</h1> +<div id="table-of-contents"> +<h2>Table of Contents</h2> +<div id="text-table-of-contents"> +<ul> +<li><a href="#orgc38ce74">1. Benchmarking a real application</a></li> +<li><a href="#org3f66fb1">2. Before you start</a> +<ul> +<li><a href="#orga16f997">2.1. Grid'5000 stuffs</a></li> +<li><a href="#orgfd9377b">2.2. Setup on Grid'5000</a></li> +</ul> +</li> +<li><a href="#orgc0bc76f">3. Deployment time !</a> +<ul> +<li><a href="#org1df303b">3.1. Deploy it</a></li> +<li><a href="#org8a7d969">3.2. Access it</a></li> +</ul> +</li> +</ul> +</div> +</div> + + +<div id="outline-container-orgc38ce74" class="outline-2"> +<h2 id="orgc38ce74"><span class="section-number-2">1</span> Benchmarking a real application</h2> +<div class="outline-text-2" id="text-1"> +<p> +In this tutorial we'll cover some aspects of evaluating the performance of a +real application. We'll work with <code>overleaf</code>. <code>overleaf</code> is a collaborative +text editor that uses Latex to produce pdf files. Figure <a href="#org3218667">1</a> +is an overview of the editing part of the software. +</p> + + +<div id="org3218667" class="figure"> +<p><a href="./figs/overleaf-v2-editor.png"><img src="./figs/overleaf-v2-editor.png" alt="overleaf-v2-editor.png" /></a> +</p> +<p><span class="figure-number">Figure 1: </span>Overview of <code>overleaf</code> editor: on the left users can collaboratively edit the document. On the right the document is rendered.</p> +</div> + + +<p> +Here is the plan: +</p> + +<ul class="org-ul"> +<li><b><b>Deployment</b></b> You'll first deploy our own <code>overleaf</code> instance (we don't want to use +the official/commercial instance).</li> +<li><b><b>Load generation</b></b> You'll generate compilation of different projects programatically.</li> +<li><b><b>Observation</b></b> You'll observe the effect of the load in the running system through various metrics.</li> +<li><b><b>Feedback</b></b> You'll formulate some hypothesis on the load characteristics and the observed effects on the system.</li> +</ul> +</div> +</div> + +<div id="outline-container-org3f66fb1" class="outline-2"> +<h2 id="org3f66fb1"><span class="section-number-2">2</span> Before you start</h2> +<div class="outline-text-2" id="text-2"> +<p> +Make sure you are ok with the following. +</p> +</div> + +<div id="outline-container-orga16f997" class="outline-3"> +<h3 id="orga16f997"><span class="section-number-3">2.1</span> Grid'5000 stuffs</h3> +<div class="outline-text-3" id="text-2-1"> +<div class="note"> +<p> +Make sure you are familiar with the Grid'5000 architecture. see section 1 & 2 of +<a href="https://www.grid5000.fr/w/Getting_Started">https://www.grid5000.fr/w/Getting_Started</a>. note that we won't do this tutorial +we'll prefer to use higher level tools for now. +</p> + +</div> +</div> +</div> + + +<div id="outline-container-orgfd9377b" class="outline-3"> +<h3 id="orgfd9377b"><span class="section-number-3">2.2</span> Setup on Grid'5000</h3> +<div class="outline-text-3" id="text-2-2"> +<p> +Connect to a Grid'5000 frontend of your choice (e.g rennes, nancy …) +</p> + +<ul class="org-ul"> +<li>create a new directory to host all the scripts of the session</li> +<li>bootstrap a new python3 virtualenv</li> +<li>install EnOSlib and configure the access to the API</li> +</ul> + +<div class="org-src-container"> +<pre class="src src-bash">$<span style="color: #7590db;">frontend</span>: cp -r ~msimonin/public/ccs-g5k-tuto2 . +$<span style="color: #7590db;">frontend</span>: cd ccs-g5k-tuto2 +$<span style="color: #7590db;">frontend</span>: virtualenv --python=python3 venv +$<span style="color: #7590db;">frontend</span>: source venv/bin/activate +$<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: pip install -r requirements.txt +$<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: echo <span style="color: #2d9574;">'</span> +<span style="color: #2d9574;">verify_ssl: False</span> +<span style="color: #2d9574;">'</span> > ~/.python-grid5000.yaml +</pre> +</div> +</div> +</div> +</div> + +<div id="outline-container-orgc0bc76f" class="outline-2"> +<h2 id="orgc0bc76f"><span class="section-number-2">3</span> Deployment time !</h2> +<div class="outline-text-2" id="text-3"> +<p> +Figure <a href="#org4b6858a">2</a> represents a simplified view of what we'll deploy. In blue +some services of <code>overleaf</code> are represented. First the Web portal is the entry +point to all the user requests. The three other services in the picture are +involved when compiling a document. The compilation service interacts with the +filestore (where the files of the image of the projects are stored) and the +docstore (where the text of the project is stored). There are other service +involved to provide the chat feature, history feature, real-time interaction +… but we'll focus ony on the compilation process. +</p> + + +<div id="org4b6858a" class="figure"> +<p><a href="./figs/simple_compilation.png"><object type="image/svg+xml" data="./figs/simple_compilation.svg" class="org-svg"> +Sorry, your browser does not support SVG.</object></a> +</p> +<p><span class="figure-number">Figure 2: </span>Simplified architecture of the system under study (blue) and the generated users (black). Overleaf is composed of a dozen services ony four are represented here.</p> +</div> + +<div class="note"> +<p> +After the deployment you'll be able to: +</p> +<ul class="org-ul"> +<li>access the web portal and play with your own overleaf instance</li> +<li>access the web portal of your friends and collaborate on a document +(that's not the main objective of the tutorial but that's fun)</li> +</ul> + +</div> +</div> + +<div id="outline-container-org1df303b" class="outline-3"> +<h3 id="org1df303b"><span class="section-number-3">3.1</span> Deploy it</h3> +<div class="outline-text-3" id="text-3-1"> +<div class="org-src-container"> +<pre class="src src-bash">$<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: python overleaf.py deploy --cluster=paravance +</pre> +</div> + +<div class="note"> +<ul class="org-ul"> +<li>You can change the cluster name with any cluster on Grid'5000: see <a href="https://www.grid5000.fr/w/Hardware">https://www.grid5000.fr/w/Hardware</a></li> +<li>This can take several minutes…</li> +</ul> + +</div> +</div> +</div> + +<div id="outline-container-org8a7d969" class="outline-3"> +<h3 id="org8a7d969"><span class="section-number-3">3.2</span> Access it</h3> +<div class="outline-text-3" id="text-3-2"> +<p> +To know where your services is installed you can run: +</p> + +<div class="org-src-container"> +<pre class="src src-bash"> $<span style="color: #7590db;">frontend</span><span style="color: #4f97d7;">(</span>venv<span style="color: #4f97d7;">)</span>: python overleaf.py describe + + <span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Possible outputp</span> +╒══════════════════════╤════════════╤════════╕ +│ Name │ Address │ Port │ +╞══════════════════════╪════════════╪════════╡ +│ Web portal │ <span style="color: #a45bad;">10.144.0.2</span> │ <span style="color: #a45bad;">3000</span> │ +├──────────────────────┼────────────┼────────┤ +│ Monitoring portal │ <span style="color: #a45bad;">10.144.0.2</span> │ <span style="color: #a45bad;">2000</span> │ +├──────────────────────┼────────────┼────────┤ +│ Benchmark portal │ <span style="color: #a45bad;">10.144.0.3</span> │ <span style="color: #a45bad;">8089</span> │ +├──────────────────────┼────────────┼────────┤ +│ Compilation machines │ <span style="color: #a45bad;">10.144.0.4</span> │ - │ +╘══════════════════════╧════════════╧════════╛ +</pre> +</div> + +<div class="note"> +<p> +To access the web portal you can create a tunnel from your local machine to +the machine running the web portal as follows +</p> + +<div class="org-src-container"> +<pre class="src src-bash"><span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Adapt the node names with the node where the portal has been installed</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">Replace <login> by your Grid'5000 login</span> +$<span style="color: #7590db;">yourmachine</span>: ssh -NL <span style="color: #a45bad;">3000:10.144.0.2:3000</span> <login>@access.grid5000.fr + +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">point your browser to localhost:3000</span> +<span style="color: #2aa1ae; background-color: #292e34;"># </span><span style="color: #2aa1ae; background-color: #292e34;">username/mdp: toto@toto.com / toto4242</span> +</pre> +</div> + +</div> +</div> +</div> +</div> +</div> +<div id="postamble" class="status"> +<p class="author">Author: Matthieu Simonin</p> +<p class="date">Created: 2019-11-29 ven. 00:21</p> +<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p> +</div> +</body> +</html> diff --git a/tuto2/index.org b/tuto2/index.org new file mode 100644 index 0000000..f915d1e --- /dev/null +++ b/tuto2/index.org @@ -0,0 +1,147 @@ +#+TITLE: Distributed experiments on Grid'5000 ... and beyond ! +#+DATE: +#+AUTHOR: Matthieu Simonin + +#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="timeline.css" /> + +#+MACRO: enoslib EnOSlib +#+MACRO: src_host https://gitlab.inria.fr/discovery/enoslib/blob/v4.8.1/enoslib/host.py#L8-14 +#+MACRO: doc_external_access https://discovery.gitlabpages.inria.fr/enoslib/tutorials/grid5000.html#accessing-http-services-inside-grid-5000 +#+MACRO: src_provider https://gitlab.inria.fr/discovery/enoslib/tree/v4.8.1/enoslib/infra +#+MACRO: doc_provider https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html +#+MACRO: doc_tasks https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html +#+MACRO: doc_g5k_schema https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html#g5k-schema +#+MACRO: doc_api https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html +#+MACRO: doc_services https://discovery.gitlabpages.inria.fr/enoslib/apidoc/service.html + + +* Benchmarking a real application + + In this tutorial we'll cover some aspects of evaluating the performance of a + real application. We'll work with ~overleaf~. ~overleaf~ is a collaborative + text editor that uses Latex to produce pdf files. Figure [[overleaf]] + is an overview of the editing part of the software. + + #+NAME: overleaf + #+CAPTION: Overview of ~overleaf~ editor: on the left users can collaboratively edit the document. + #+CAPTION: On the right the document is rendered. + [[file:./figs/overleaf-v2-editor.png][file:./figs/overleaf-v2-editor.png]] + + + Here is the plan: + + - **Deployment** You'll first deploy our own ~overleaf~ instance (we don't want to use + the official/commercial instance). + - **Load generation** You'll generate compilation of different projects programatically. + - **Observation** You'll observe the effect of the load in the running system through various metrics. + - **Feedback** You'll formulate some hypothesis on the load characteristics and the observed effects on the system. + +* Before you start + + Make sure you are ok with the following. + +** Grid'5000 stuffs + + #+begin_note + Make sure you are familiar with the Grid'5000 architecture. see section 1 & 2 of + https://www.grid5000.fr/w/Getting_Started. note that we won't do this tutorial + we'll prefer to use higher level tools for now. + #+end_note + + +** Setup on Grid'5000 + + Connect to a Grid'5000 frontend of your choice (e.g rennes, nancy ...) + + - create a new directory to host all the scripts of the session + - bootstrap a new python3 virtualenv + - install {{{enoslib}}} and configure the access to the API + + #+BEGIN_SRC bash :noeval + $frontend: cp -r ~msimonin/public/ccs-g5k-tuto2 . + $frontend: cd ccs-g5k-tuto2 + $frontend: virtualenv --python=python3 venv + $frontend: source venv/bin/activate + $frontend(venv): pip install -r requirements.txt + $frontend(venv): echo ' + verify_ssl: False + ' > ~/.python-grid5000.yaml + #+END_SRC + +* Deployment time ! + + Figure [[architecture]] represents a simplified view of what we'll deploy. In blue + some services of ~overleaf~ are represented. First the Web portal is the entry + point to all the user requests. The three other services in the picture are + involved when compiling a document. The compilation service interacts with the + filestore (where the files of the image of the projects are stored) and the + docstore (where the text of the project is stored). There are other service + involved to provide the chat feature, history feature, real-time interaction + ... but we'll focus ony on the compilation process. + + #+NAME: architecture + #+CAPTION: Simplified architecture of the system under study (blue) and the generated users (black). + #+CAPTION: Overleaf is composed of a dozen services ony four are represented here. + [[file:./figs/simple_compilation.png][file:./figs/simple_compilation.svg]] + + #+begin_note + After the deployment you'll be able to: + - access the web portal and play with your own overleaf instance + - access the web portal of your friends and collaborate on a document + (that's not the main objective of the tutorial but that's fun) + #+end_note + +** Deploy it + + #+BEGIN_SRC bash :noeval + $frontend(venv): python overleaf.py deploy --cluster=paravance + #+END_SRC + + #+begin_note + - You can change the cluster name with any cluster on Grid'5000: see https://www.grid5000.fr/w/Hardware + - This can take several minutes... + #+end_note + +** Access it + + To know where your services is installed you can run: + + #+BEGIN_SRC bash :noeval + $frontend(venv): python overleaf.py describe + + # Possible outputp +╒══════════════════════╤════════════╤════════╕ +│ Name │ Address │ Port │ +╞══════════════════════╪════════════╪════════╡ +│ Web portal │ 10.144.0.2 │ 3000 │ +├──────────────────────┼────────────┼────────┤ +│ Monitoring portal │ 10.144.0.2 │ 2000 │ +├──────────────────────┼────────────┼────────┤ +│ Benchmark portal │ 10.144.0.3 │ 8089 │ +├──────────────────────┼────────────┼────────┤ +│ Compilation machines │ 10.144.0.4 │ - │ +╘══════════════════════╧════════════╧════════╛ + #+END_SRC + + #+BEGIN_note + To access the web portal you can create a tunnel from your local machine to + the machine running the web portal as follows + + #+BEGIN_SRC bash :noeval + # Adapt the node names with the node where the portal has been installed + # Replace <login> by your Grid'5000 login + $yourmachine: ssh -NL 3000:10.144.0.2:3000 <login>@access.grid5000.fr + + # point your browser to localhost:3000 + # username/mdp: toto@toto.com / toto4242 + #+END_SRC + #+END_note + + +* Benchmark the system + +** Deploy the benchmark nodes +** Prepare the monitoring stack +** Observations + +* Scale the system diff --git a/tuto2/index.tex b/tuto2/index.tex new file mode 100644 index 0000000..2525d89 --- /dev/null +++ b/tuto2/index.tex @@ -0,0 +1,569 @@ +% Created 2019-10-17 jeu. 01:05 +% Intended LaTeX compiler: pdflatex +\documentclass[11pt]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{graphicx} +\usepackage{grffile} +\usepackage{longtable} +\usepackage{wrapfig} +\usepackage{rotating} +\usepackage[normalem]{ulem} +\usepackage{amsmath} +\usepackage{textcomp} +\usepackage{amssymb} +\usepackage{capt-of} +\usepackage{hyperref} +\author{Matthieu Simonin} +\date{} +\title{Distributed experiments on Grid'5000 \ldots{} and beyond !} +\hypersetup{ + pdfauthor={Matthieu Simonin}, + pdftitle={Distributed experiments on Grid'5000 \ldots{} and beyond !}, + pdfkeywords={}, + pdfsubject={}, + pdfcreator={Emacs 26.1 (Org mode 9.1.9)}, + pdflang={English}} +\begin{document} + +\maketitle +\tableofcontents + + +\section{Foreword} +\label{sec:org40b18b0} + +\section{Setup on Grid'5000} +\label{sec:orgec7b370} + +Connect to a Grid'5000 frontend of your choice. + +\begin{itemize} +\item create a new directory to host all the scripts of the session +\item bootstrap a new python3 virtualenv +\item install EnOSlib and configure the access to the API +\item you'll also want to have ipython and ipdb installed +\end{itemize} + +\begin{verbatim} +$frontend: mkdir enoslib_seminar +$frontend: cd enoslib_seminar +$frontend: virtualenv --python=python3 venv +$frontend: source venv/bin/activate +$frontend(venv): pip install enoslib ipython ipdb +$frontend(venv): echo ' +verify_ssl: False +' > ~/.python-grid5000.yaml + +\end{verbatim} + +\section{EnOSlib warmup on Grid'5000} +\label{sec:org54c7eac} + +Learn how to get 2 nodes from Grid'5000 and start launching commands. + +\subsection{Reserve 2 nodes} +\label{sec:org543c543} + +\begin{note} +With EnOSlib you first describe your resource requirements using an abstract +resource description. +Note that the network should be explictly stated. +\end{note} + +Write the following python script in a file \texttt{run.py}. If needed adapt the +\texttt{CLUSTER} and \texttt{SITE} variables. + +\begin{verbatim} +from enoslib.api import run, run_command, gather_facts +from enoslib.infra.enos_g5k.provider import G5k +from enoslib.infra.enos_g5k.configuration import Configuration, NetworkConfiguration + +import logging + + +logging.basicConfig(level=logging.INFO) + + +SITE = "rennes" +CLUSTER = "paravance" + +network = NetworkConfiguration(id="n1", + type="prod", + roles=["my_network"], + site=SITE) + +conf = Configuration.from_settings(job_name="enoslib_tutorial", + job_type="allow_classic_ssh")\ + .add_network_conf(network)\ + .add_machine(roles=["server"], + cluster=CLUSTER, + nodes=1, + primary_network=network)\ + .add_machine(roles=["client"], + cluster=CLUSTER, + nodes=1, + primary_network=network)\ + .finalize() + +provider = G5k(conf) +roles, networks = provider.init() +\end{verbatim} + +For the sake of curiosity let's inspect the roles and networks data +structures using ipython. + +\begin{verbatim} +$frontend (venv): ipython +In [1]: run run.py +# ... +# ... +In [2]: roles +# ... +In [3]: networks +\end{verbatim} + +\begin{note} +The abstract resource description is concretized by the call to the +\texttt{provider.init} method. \texttt{roles} and \texttt{networks} contains the concrete machines +and networks given by Grid'5000. +Check the attributes of the Host data structure in the code: \url{https://gitlab.inria.fr/discovery/enoslib/blob/v4.8.1/enoslib/host.py\#L8-14} +\end{note} + +\subsection{Using the run command and its variants} +\label{sec:org4f0ed16} + +For this part you have two choices to run the examples: +\begin{itemize} +\item (prefered) append it in the previous file and re-run the file (yes this is safe to do so) +\item write the example in the previously open ipython console +\end{itemize} + +\subsubsection{Basics usages} +\label{sec:org7f40ca6} + +Before proceeding you can add this util function to your code. It only used +to pretty print a python dictionnary. +\begin{verbatim} +def pprint(d): + import json + print(json.dumps(d, indent=4)) +\end{verbatim} + +And use the \texttt{enoslib.api.run} function +\begin{verbatim} +server = roles["server"][0] +# --- +# Using run +# -------------------------------------------------------------------- +result = run(f"ping -c 5 {server.address}", roles["client"]) +pprint(result) +\end{verbatim} + +Or the \texttt{enoslib.api.run\_command} function +\begin{verbatim} +# --- +# Using run_command 1/2 +# -------------------------------------------------------------------- +result = run_command(f"ping -c 5 {server.address}", + pattern_hosts="client", + roles=roles) +pprint(result) +\end{verbatim} + +\begin{note} +\texttt{enoslib.api.run} is a specialisation of \texttt{enoslib.api.run\_command}. +The latter let's you use \href{https://docs.ansible.com/ansible/latest/user\_guide/intro\_patterns.html}{some fancy patterns} to determine the list of hosts to run the command on. + +And yes, it uses Ansible behind the scene. +\end{note} + +\subsubsection{Advanced usages} +\label{sec:org0e02fbb} + +\begin{note} +For all the remote interactions, EnOSlib relies on \href{https://docs.ansible.com/ansible/latest/index.html}{Ansible}. Ansible +has it own variables management system. +For instance the task \texttt{Gather Facts} at the beginning of the previous tasks +gathers informations about all/some remote hosts and store them in the +Ansible management system. +\end{note} + +Let's see what Ansible is gathering about the hosts: +\begin{verbatim} +# --- +# Gather facts +# -------------------------------------------------------------------- +result = gather_facts(roles=roles) +pprint(result) +\end{verbatim} +\begin{note} +\texttt{enoslib.api.gather\_facts} is a way to get, in python, the variables known +by Ansible about each host. +\end{note} + +\begin{note} +EnOSlib sits in between two worlds: the Python world and the Ansible +world. One common need is to pass a variables from one world to another. +\begin{itemize} +\item \texttt{enoslib.api.gather\_facts} is a way to get, in Python, the variables known +by Ansible about each host. +\item \texttt{extra\_vars} keyword argument of \texttt{enoslib.api.run} or \texttt{enoslib.api.run\_command} will +pass variables from Python world to Ansible world (global variable) +\item Injecting a key/value in a \texttt{Host.extra} attribute will make the variable \texttt{key} available to Ansible. +This makes the variables Host specific. +\end{itemize} +\end{note} + +The following inject a global variable in the Ansible world +\begin{verbatim} +# --- +# Passing a variable to the Ansible World using a global level variable +# -------------------------------------------------------------------- +server = roles["server"][0] +extra_vars={"server_ip": server.address} +result = run("ping -c 5 {{ server_ip }}", roles["client"], extra_vars=extra_vars) +\end{verbatim} + +\subsubsection{Ninja level} +\label{sec:org0edd362} + +The following is valid and inject in the client host a specific variable to +keep of the server IP. + +\begin{verbatim} +# --- +# Passing a variable to the Ansible World using a host level variable +# -------------------------------------------------------------------- +server = roles["server"][0] +client.extra.update(server_ip=server.address) +result = run("ping -c 5 {{ server_ip }}", roles["client"]) +\end{verbatim} + +\begin{note} +Host level variables are interesting to introduce some dissymetry between +hosts using the same intruction in your Python Code. +\end{note} + +\begin{question} +How to perform simultaneously the ping to the other machine in calling only +once \texttt{run} or \texttt{run\_command} and using host level variables? +\end{question} + +\subsubsection{All together} +\label{sec:org31aadd8} +Access the full file: \url{exercices/run.py} + +\subsubsection{Some references} +\label{sec:orga6331bb} + +\begin{itemize} +\item G5k configuration schema: \url{https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html\#g5k-schema} +\item API Reference: \url{https://discovery.gitlabpages.inria.fr/enoslib/apidoc/api.html} +\end{itemize} +\section{Iperf3 playground} +\label{sec:org6a4417e} + +Let's experiment with \href{https://iperf.fr/}{iperf3}: a network bandwidth measuring tool. The goal is +to deploy a simple benchmark between two hosts. + +We'll also instrument the deployment in order to visualize in real-time the +network traffic between the hosts. Since this is super common, EnOSlib +exposes a \texttt{monitoring service} that lets you deploy very quickly what is +needed. + +\subsection{First attempt} +\label{sec:orgbfbe8c2} + +We adapt the previous example in the following script: +\begin{verbatim} +from enoslib.api import run_command, wait_ssh +from enoslib.infra.enos_g5k.provider import G5k +from enoslib.infra.enos_g5k.configuration import Configuration, NetworkConfiguration +from enoslib.service import Monitoring + +import logging + + +def pprint(d): + import json + print(json.dumps(d, indent=4)) + + +logging.basicConfig(level=logging.INFO) + + +SITE = "rennes" +CLUSTER = "paravance" + +network = NetworkConfiguration(id="n1", + type="prod", + roles=["my_network"], + site=SITE) + +conf = Configuration.from_settings(job_name="enoslib_tutorial", + job_type="allow_classic_ssh")\ + .add_network_conf(network)\ + .add_machine(roles=["server"], + cluster=CLUSTER, + nodes=1, + primary_network=network)\ + .add_machine(roles=["client"], + cluster=CLUSTER, + nodes=1, + primary_network=network)\ + .finalize() + +provider = G5k(conf) +roles, networks = provider.init() +wait_ssh(roles) + +# This deploys a monitoring stack +m = Monitoring(collector=roles["server"], + agent=roles["server"] + roles["client"], + ui=roles["server"]) +m.deploy() + + +# Below is the experimentation logic +# It installs the bare minimum to run iperf3 +# The machine with the role 'server' is used to run a iperf3 server +# started in the background in a tmux +# The machine with the role 'client' connects to that server +# Report is printed in stdout +server = roles["server"][0] +run_command("apt update && apt install -y iperf3 tmux", roles=roles) +run_command("tmux new-session -d 'exec iperf3 -s'", pattern_hosts="server", roles=roles) +result = run_command(f"iperf3 -c {server.address} -t 30", pattern_hosts="client", roles=roles) +pprint(result) +\end{verbatim} + +Now, let's visualize the network traffic in real-time ! +\begin{note} +Usually I follow this to access services running inside Grid'5000: +\url{https://discovery.gitlabpages.inria.fr/enoslib/tutorials/grid5000.html\#accessing-http-services-inside-grid-5000} + +So to access the monitoring dashboard you need to connect using your browser +to the machine `server` on the port 3000. +\end{note} + +You should be able to visualize such a thing (after a bit of point and clicks). + +\href{./iperf3.png}{\begin{figure}[htbp] +\centering +\includegraphics[width=.9\linewidth]{./figs/iperf3.png} +\caption{\label{fig:orgd2b4ea5} +iperf3 / monitoring} +\end{figure}} + +\subsection{Discussion} +\label{sec:org8354e5d} + +\begin{itemize} +\item What's good is: \ldots{} +\item What's wrong is: \ldots{} +\end{itemize} + +\subsection{A better approach (maybe)} +\label{sec:org16d8bce} +Access the full file: \url{exercices/iperf3\_better.py} + +\section{{\bfseries\sffamily TODO} Partial wrap-up} +\label{sec:orgb35f46e} + +\begin{itemize} +\item Configuration for G5k +\begin{itemize} +\item non deploy / deploy +\item prod network / kavlan +\end{itemize} +\item Services +\end{itemize} + +\section{Modules: for safer remote actions} +\label{sec:org1ae5927} + +In this section we'll discover the idiomatic way of managing resources on the +remote hosts. A resource can be anything: a user, a file, a line in a file, a +repo on Gitlab, a firewall rule \ldots{} + + +\subsection{Idempotency} +\label{sec:org81e26b7} + +Let's assume you want to create a user (\texttt{foo}). With the \texttt{run\_command} this would look like: + +\begin{verbatim} +run_command("useradd -m foo", roles=role) +\end{verbatim} + +The main issue with this code is that it is not \textbf{idempotent}. Running it once +will applied the effect (create the user). But, as soon as the user exist in +the system, this will raise an error. + +\subsection{One reason why idempotency is important} +\label{sec:org53c14cb} + +Let's consider the following snippet (mispelling the second command is intentional) +\begin{verbatim} +run_command("useradd -m foo", roles=role) +run_command("mkdirz plop") +\end{verbatim} +Executing the above leads the system with the user \texttt{foo} created but the the +directory \texttt{plop} not created since the second command fails. + +So what you want to do is to fix the second command and re-run the snippet again. +But, you can't do that because \texttt{useradd} isn't idempotent. + +\subsection{Idempotency trick} +\label{sec:orgb15c5ef} + +One easy solution is to protect your call to non idempotent commands with +some ad'hoc tricks + +Here it can look like this: + +\begin{verbatim} +run_command("id foo || useradd -m foo", roles=role) +run_command("mkdir -p plop") +\end{verbatim} + +\textbf{What's wrong with that} + +\begin{itemize} +\item The trick depends on the command +\item Re-reading the code is more complex: the code focus on the \textbf{\textbf{how}} not the \textbf{\textbf{what}} +\end{itemize} + +\subsection{General idempotency} +\label{sec:org4061e60} + +The idiomatic solution is to use modules (inherited from the Ansible +Modules). The modules are specified in a \textbf{declarative} way and they ensure +\textbf{idempotency} for most of them. + +So rewriting the example with modules looks like: +\begin{verbatim} +with play_on(roles=roles) as p: + p.user(name="foo", state="present", create_home="yes") + p.file(name="plop", state="directory") +\end{verbatim} + +You can run this code as many times as you want without any error. You'll +eventually find one user \texttt{foo} and one directory \texttt{plop} in your target +systems. + + +They are more than 2500 modules: \url{https://docs.ansible.com/ansible/latest/modules/list\_of\_all\_modules.html} + +If you can't find what you want you must know that: +\begin{itemize} +\item Writing your own module is possible +\item Falling back to the idempotency trick is reasonable +\end{itemize} + +\section{Providers: to replicate your experiment} +\label{sec:orgfc2ec82} + +The resources that are used for your experiment are acquired through a +provider. Providers are a mean to decouple the infrastructure code (the code +that get the resources) from the code that runs the experiment. Changing the +provider allows to replicate the experiment on another testbed. + +Originally it was used to iterate on the code locally (using the Vagrant +provider) and to only test on Grid'5000 when necessary. + +We now have couple of providers that you may picked or mixed. + +\subsection{iperf3 on virtual machines on Grid'5000} +\label{sec:org162cac9} + +We'll adapt the initial iperf3 example to use virtual machines instead of +bare-metal machine. + +Note that: + +\begin{itemize} +\item The configuration object is different +\item The experimentation logic is the same (rewritten using modules when it applies) +\end{itemize} + +\begin{verbatim} +from enoslib.api import play_on, wait_ssh +from enoslib.infra.enos_vmong5k.provider import VMonG5k +from enoslib.infra.enos_vmong5k.configuration import Configuration + +import logging +import os + +logging.basicConfig(level=logging.DEBUG) + +CLUSTER = "paravance" + +# path to the inventory +inventory = os.path.join(os.getcwd(), "hosts") + +# claim the resources +conf = Configuration.from_settings(job_name="enoslib_tutorial", gateway=True)\ + .add_machine(roles=["server"], + cluster=CLUSTER, + number=1, + flavour="large")\ + .add_machine(roles=["client"], + cluster=CLUSTER, + number=1, + flavour="medium")\ + .finalize() + +provider = VMonG5k(conf) + +roles, networks = provider.init() +wait_ssh(roles) + +# Below is the experimentation logic +# It installs the bare minimum to run iperf3 +# The machine with the role 'server' is used to run a iperf3 server +# started in the background in a tmux +# The machine with the role 'client' connects to that server +# Report is printed in stdout +server = roles["server"][0] + +with play_on(roles=roles) as p: + p.apt(name=["iperf3", "tmux"], state="present") + +with play_on(pattern_hosts="server", roles=roles) as p: + p.shell("tmux new-session -d 'exec iperf3 -s'") + +with play_on(pattern_hosts="client", roles=roles) as p: + p.shell(f"iperf3 -c {server.address} -t 30") + +with play_on(pattern_hosts="client", roles=roles) as p: + p.shell(f"iperf3 -c {server.address} -t 30 --logfile iperf3.out") + p.fetch(src="iperf3.out", dest="iperf3.out") +\end{verbatim} + +Using module using the \texttt{play\_on} context manager does not bring back the +results of the commands. Iperf3 let's you write the result of the command on +a file. We just need to scp the file back to our local machine using the +\texttt{fetch} module. + +\subsection{Ninja level} +\label{sec:orge484eb8} + +Creates 5 \texttt{server} machines and 5 \texttt{client} machines and start 5 \textbf{parallel} +streams of data using \texttt{iperf3}. + +\subsection{References} +\label{sec:org9c0017b} + +\begin{itemize} +\item Doc: \url{https://discovery.gitlabpages.inria.fr/enoslib/apidoc/infra.html} +\item Sources: \url{https://gitlab.inria.fr/discovery/enoslib/tree/v4.8.1/enoslib/infra} +\end{itemize} + +\section{Tasks: to organize your experiment} +\label{sec:org7f002c7} + +To discover the Task API, head to \url{https://discovery.gitlabpages.inria.fr/enoslib/tutorials/using-tasks.html}. +The examples are written for Vagrant but may be changed to whatever provider you like/have. +\end{document} diff --git a/tuto2/timeline.css b/tuto2/timeline.css new file mode 100644 index 0000000..268b0de --- /dev/null +++ b/tuto2/timeline.css @@ -0,0 +1,1035 @@ +@import url('https://fonts.googleapis.com/css?family=Crimson+Text:700|Fira+Sans:400,700'); +html { + font-family: sans-serif; + line-height: 1.15; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} +body { + margin: 0 +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +main, +menu, +nav, +section, +summary { + display: block +} +audio, +canvas, +progress, +video { + display: inline-block +} +audio:not([controls]) { + display: none; + height: 0 +} +progress { + vertical-align: baseline +} +[hidden], +template { + display: none +} +a { + background-color: transparent; + -webkit-text-decoration-skip: objects +} +a:active, +a:hover { + outline-width: 0 +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted +} +b, +strong { + font-weight: inherit; + font-weight: bolder +} +dfn { + font-style: italic +} +h1 { + font-size: 2em; + margin: .67em 0 +} +mark { + background-color: #ff0; + color: #000 +} +small { + font-size: 80% +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} +sub { + bottom: -.25em +} +sup { + top: -.5em +} +img { + border-style: none +} +svg:not(:root) { + overflow: hidden +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} +figure { + margin: 1em 40px +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible +} +button, +input, +optgroup, +select, +textarea { + font: inherit; + margin: 0 +} +optgroup { + font-weight: 700 +} +button, +input { + overflow: visible +} +button, +select { + text-transform: none +} +[type=reset], +[type=submit], +button, +html [type=button] { + -webkit-appearance: button +} +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0 +} +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText +} +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: .35em .625em .75em +} +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal +} +textarea { + overflow: auto +} +[type=checkbox], +[type=radio] { + box-sizing: border-box; + padding: 0 +} +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto +} +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px +} +[type=search]::-webkit-search-cancel-button, +[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} +::-webkit-input-placeholder { + color: inherit; + opacity: .54 +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit +} +.org-bold { + font-weight: 700 +} +.org-bold-italic { + font-weight: 700; + font-style: italic +} +.org-buffer-menu-buffer { + font-weight: 700 +} +.org-builtin { + color: #483d8b +} +.org-button { + color: #3a5fcd; + text-decoration: underline +} +.org-calendar-month-header { + color: #00f +} +.org-calendar-today { + text-decoration: underline +} +.org-calendar-weekday-header { + color: #008b8b +} +.org-calendar-weekend-header { + color: #b22222 +} +.org-comint-highlight-input { + font-weight: 700 +} +.org-comint-highlight-prompt { + color: #0000cd +} +.org-comment, +.org-comment-delimiter { + color: #b22222 +} +.org-constant { + color: #008b8b +} +.org-diary { + color: red +} +.org-doc { + color: #8b2252 +} +.org-error { + color: red; + font-weight: 700 +} +.org-escape-glyph { + color: brown +} +.org-file-name-shadow { + color: #7f7f7f +} +.org-fringe { + background-color: #f2f2f2 +} +.org-function-name { + color: #00f +} +.org-glyphless-char { + font-size: 60% +} +.org-header-line { + color: #333; + background-color: #e5e5e5 +} +.org-help-argument-name { + font-style: italic +} +.org-highlight { + background-color: #b4eeb4 +} +.org-holiday { + background-color: pink +} +.org-info-header-node { + color: brown; + font-weight: 700; + font-style: italic +} +.org-info-header-xref { + color: #3a5fcd; + text-decoration: underline +} +.org-info-index-match { + background-color: #ff0 +} +.org-info-menu-header { + font-weight: 700 +} +.org-info-menu-star { + color: red +} +.org-info-node { + color: brown; + font-weight: 700; + font-style: italic +} +.org-info-title-1 { + font-size: 172%; + font-weight: 700 +} +.org-info-title-2 { + font-size: 144%; + font-weight: 700 +} +.org-info-title-3 { + font-size: 120%; + font-weight: 700 +} +.org-info-title-4 { + font-weight: 700 +} +.org-info-xref { + color: #3a5fcd; + text-decoration: underline +} +.org-italic { + font-style: italic +} +.org-keyword { + color: #a020f0 +} +.org-lazy-highlight { + background-color: #afeeee +} +.org-link { + color: #3a5fcd; + text-decoration: underline +} +.org-link-visited { + color: #8b008b; + text-decoration: underline +} +.org-makefile-makepp-perl { + background-color: #bfefff +} +.org-makefile-space { + background-color: #ff69b4 +} +.org-makefile-targets { + color: #00f +} +.org-match { + background-color: #ff0 +} +.org-next-error { + background-color: gtk_selection_bg_color +} +.org-nobreak-space { + color: brown; + text-decoration: underline +} +.org-org-agenda-calendar-event, +.org-org-agenda-calendar-sexp { + color: #000; + background-color: #fff +} +.org-org-agenda-clocking { + background-color: #ff0 +} +.org-org-agenda-column-dateline { + background-color: #e5e5e5 +} +.org-org-agenda-current-time { + color: #b8860b +} +.org-org-agenda-date { + color: #00f +} +.org-org-agenda-date-today { + color: #00f; + font-weight: 700; + font-style: italic +} +.org-org-agenda-date-weekend { + color: #00f; + font-weight: 700 +} +.org-org-agenda-diary { + color: #000; + background-color: #fff +} +.org-org-agenda-dimmed-todo { + color: #7f7f7f +} +.org-org-agenda-done { + color: #228b22 +} +.org-org-agenda-filter-category, +.org-org-agenda-filter-effort, +.org-org-agenda-filter-regexp, +.org-org-agenda-filter-tags { + color: #000; + background-color: #bfbfbf +} +.org-org-agenda-restriction-lock { + background-color: #eee +} +.org-org-agenda-structure { + color: #00f +} +.org-org-archived, +.org-org-block { + color: #7f7f7f +} +.org-org-block-begin-line, +.org-org-block-end-line { + color: #b22222 +} +.org-org-checkbox { + font-weight: 700 +} +.org-org-checkbox-statistics-done { + color: #228b22; + font-weight: 700 +} +.org-org-checkbox-statistics-todo { + color: red; + font-weight: 700 +} +.org-org-clock-overlay { + color: #000; + background-color: #d3d3d3 +} +.org-org-code { + color: #7f7f7f +} +.org-org-column, +.org-org-column-title { + background-color: #e5e5e5 +} +.org-org-column-title { + font-weight: 700; + text-decoration: underline +} +.org-org-date { + color: #a020f0; + text-decoration: underline +} +.org-org-date-selected { + color: red +} +.org-org-default { + color: #000; + background-color: #fff +} +.org-org-document-info { + color: #191970 +} +.org-org-document-info-keyword { + color: #7f7f7f +} +.org-org-document-title { + color: #191970; + font-weight: 700 +} +.org-org-done { + color: #228b22; + font-weight: 700 +} +.org-org-drawer { + color: #00f +} +.org-org-ellipsis { + color: #b8860b; + text-decoration: underline +} +.org-org-footnote { + color: #a020f0; + text-decoration: underline +} +.org-org-formula { + color: #b22222 +} +.org-org-headline-done { + color: #bc8f8f +} +.org-org-hide { + color: #fff +} +.org-org-latex-and-related { + color: #8b4513 +} +.org-org-level-1 { + color: #00f +} +.org-org-level-2 { + color: sienna +} +.org-org-level-3 { + color: #a020f0 +} +.org-org-level-4 { + color: #b22222 +} +.org-org-level-5 { + color: #228b22 +} +.org-org-level-6 { + color: #008b8b +} +.org-org-level-7 { + color: #483d8b +} +.org-org-level-8 { + color: #8b2252 +} +.org-org-link { + color: #3a5fcd; + text-decoration: underline +} +.org-org-list-dt { + font-weight: 700 +} +.org-org-macro { + color: #8b4513 +} +.org-org-meta-line { + color: #b22222 +} +.org-org-mode-line-clock { + color: #000; + background-color: #bfbfbf +} +.org-org-mode-line-clock-overrun { + color: #000; + background-color: red +} +.org-org-priority { + color: #a020f0 +} +.org-org-quote { + color: #7f7f7f +} +.org-org-scheduled { + color: #006400 +} +.org-org-scheduled-previously { + color: #b22222 +} +.org-org-scheduled-today { + color: #006400 +} +.org-org-sexp-date, +.org-org-special-keyword { + color: #a020f0 +} +.org-org-table { + color: #00f +} +.org-org-tag, +.org-org-tag-group { + font-weight: 700 +} +.org-org-target { + text-decoration: underline +} +.org-org-time-grid { + color: #b8860b +} +.org-org-todo { + color: red; + font-weight: 700 +} +.org-org-upcoming-deadline { + color: #b22222 +} +.org-org-verbatim, +.org-org-verse { + color: #7f7f7f +} +.org-org-warning { + color: red; + font-weight: 700 +} +.org-outline-1 { + color: #00f +} +.org-outline-2 { + color: sienna +} +.org-outline-3 { + color: #a020f0 +} +.org-outline-4 { + color: #b22222 +} +.org-outline-5 { + color: #228b22 +} +.org-outline-6 { + color: #008b8b +} +.org-outline-7 { + color: #483d8b +} +.org-outline-8 { + color: #8b2252 +} +.org-preprocessor { + color: #483d8b +} +.org-regexp-grouping-backslash, +.org-regexp-grouping-construct { + font-weight: 700 +} +.org-region { + background-color: gtk_selection_bg_color +} +.org-secondary-selection { + background-color: #ff0 +} +.org-shadow { + color: #7f7f7f +} +.org-show-paren-match { + background-color: #40e0d0 +} +.org-show-paren-mismatch { + color: #fff; + background-color: #a020f0 +} +.org-string { + color: #8b2252 +} +.org-success { + color: #228b22; + font-weight: 700 +} +.org-table-cell { + color: #e5e5e5; + background-color: #00f +} +.org-tooltip { + color: #000; + background-color: #ffffe0 +} +.org-trailing-whitespace { + background-color: red +} +.org-type { + color: #228b22 +} +.org-underline { + text-decoration: underline +} +.org-variable-name { + color: sienna +} +.org-warning { + color: #ff8c00; + font-weight: 700 +} +.org-warning-1 { + color: red; + font-weight: 700 +} +body { + width: 95%; + margin: 2%; + font: normal normal normal 16px/1.6em 'Fira Sans', sans-serif; + color: #333 +} +@media (min-width: 769px) { + body { + width: 700px; + margin-left: 5vw + } +} +::-moz-selection { + background: #d6edff +} +::selection { + background: #d6edff +} +.title { + margin: auto; + color: #000 +} +.subtitle, +.title { + text-align: center +} +.subtitle { + font-size: medium; + font-weight: 700 +} +.abstract { + margin: auto; + width: 80%; + font-style: italic +} +.abstract p:last-of-type:before { + content: " "; + white-space: pre +} +.status { + font-size: 90%; + margin: 2em auto +} +[class^=section-number-] { + margin-right: .5em +} +[id^=orgheadline] { + clear: both +} +#footnotes { + font-size: 90% +} +.footpara { + display: inline; + margin: .2em auto +} +.footdef { + margin-bottom: 1em +} +.footdef sup { + padding-right: .5em +} +a { + color: #527d9a; + text-decoration: none +} +a:hover { + color: #035; + border-bottom: 1px dotted +} +figure { + padding: 0; + margin: 0; + text-align: center +} +img { + max-width: 100%; + vertical-align: middle +} +.MathJax_Display { + font-size: 90%; + margin: 0!important; + width: 90%!important +} +h1, +h2, +h3, +h4, +h5, +h6 { + color: #a5573e; + line-height: 1.6em; + font-weight: bold; + font-family: 'Crimson Text', serif +} +h4, +h5, +h6 { + font-size: 1em +} +dt { + font-weight: 700 +} +table { + margin: auto; + border-top: 2px solid; + border-collapse: collapse +} +table, +thead { + border-bottom: 2px solid +} +table td+td, +table th+th { + border-left: 1px solid gray +} +table tr { + border-top: 1px solid #d3d3d3 +} +td, +th { + padding: 5px 10px; + vertical-align: middle +} +caption.t-above { + caption-side: top +} +caption.t-bottom { + caption-side: bottom +} +th.org-center, +th.org-left, +th.org-right { + text-align: center +} +td.org-right { + text-align: right +} +td.org-left { + text-align: left +} +td.org-center { + text-align: center +} +code { + padding: 2px 5px; + margin: auto 1px; + border: 1px solid #ddd; + border-radius: 3px; + background-clip: padding-box; + color: #333; + font-size: 80% +} +blockquote { + margin: 1em 2em; + padding-left: 1em; + border-left: 3px solid #ccc +} +kbd { + background-color: #f7f7f7; + font-size: 80%; + margin: 0 .1em; + padding: .1em .6em +} +.todo { + background-color: red; + padding: 2px +} +.done, +.todo { + color: #fff; + border-radius: 3px; + background-clip: padding-box; + font-size: 80%; + font-family: Lucida Console, monospace +} +.done { + background-color: green; + padding: 3px +} +.priority { + color: orange; + font-family: Lucida Console, monospace +} +#table-of-contents li { + clear: both +} +.tag { + font-family: Lucida Console, monospace; + font-size: 70%; + font-weight: 400 +} +.tag span { + padding: 0 5px; + float: right; + margin-right: 5px; + border: 1px solid #bbb; + border-radius: 3px; + background-clip: padding-box; + color: #333; + background-color: #eee; + line-height: 1.6 +} +.timestamp { + color: #bebebe; + font-size: 90% +} +.timestamp-kwd { + color: #5f9ea0 +} +.org-right { + margin-left: auto; + margin-right: 0; + text-align: right +} +.org-left { + margin-left: 0; + margin-right: auto; + text-align: left +} +.org-center { + margin-left: auto; + margin-right: auto; + text-align: center +} +.underline { + text-decoration: underline +} +#postamble p, +#preamble p { + font-size: 90%; + margin: .2em +} +p.verse { + margin-left: 3% +} +pre { + border: 1px solid #ccc; + box-shadow: 3px 3px 3px #eee; + font-family: Lucida Console, monospace; + margin: 1.2em; + padding: 8pt; + font-size: 80%; + background: #3f3f3f; + color: #dcdccc; +} +pre.src { + overflow: auto; + padding-top: 1.2em; + position: relative +} +pre.src:hover:before { + display: inline +} +pre.src-sh:before { + content: "sh" +} +pre.src-bash:before { + content: "bash" +} +pre.src-emacs-lisp:before { + content: "Emacs Lisp" +} +pre.src-R:before { + content: "R" +} +pre.src-org:before { + content: "Org" +} +pre.src-cpp:before { + content: "C++" +} +pre.src-c:before { + content: "C" +} +pre.src-html:before { + content: "HTML" +} +pre.src-javascript:before, +pre.src-js:before { + content: "Javascript" +} +pre.src-makefile:before { + content: "Makefile" +} +.inlinetask { + background: #ffc; + border: 2px solid gray; + margin: 10px; + padding: 10px +} +#org-div-home-and-up { + font-size: 70%; + text-align: right; + white-space: nowrap +} +.linenr { + font-size: 90% +} +.code-highlighted { + color: #FFFFE0; + background-color: #284F28; +} +#bibliography { + font-size: 90% +} +#bibliography table { + width: 100% +} +.creator { + display: block +} +@media (min-width: 769px) { + .creator { + display: inline; + float: right + } +} + +.org-src-container > label { + font-size: 75%; +} + +.note { + padding-left: 2em; + border: 1px dashed #00f; + position: relative; +} +.note:before { + display: block; + position: absolute; + left: 0px; + content: "i"; + background: #00f; + border-radius: 0.8em; + -moz-border-radius: 0.8em; + -webkit-border-radius: 0.8em; + color: #ffffff; + display: inline-block; + font-weight: bold; + line-height: 1.6em; + margin-right: 5px; + text-align: center; + width: 1.6em; +} + +@media screen and (min-width: 600px) { + h1 { + font-size: 2em; + } + h2 { + font-size: 1.5em; + } + h3 { + font-size: 1.3em; + } + h1,h2,h3 { + line-height: 1.4em; + } + h4,h5,h6 { + font-size: 1.1em; + } +} + +.question { + padding-left: 2em; + border: 1px dashed #0f0; + position: relative; +} +.question:before { + display: block; + position: absolute; + left: 0px; + content: "?"; + background: #00ff00; + border-radius: 0.8em; + -moz-border-radius: 0.8em; + -webkit-border-radius: 0.8em; + color: #ffffff; + display: inline-block; + font-weight: bold; + line-height: 1.6em; + margin-right: 5px; + text-align: center; + width: 1.6em; +} -- GitLab