From 211d48ec9f29e0237f9c2f89cd5a58dbce39ad9e Mon Sep 17 00:00:00 2001
From: hvaysset <hugo.vaysset@cri-paris.org>
Date: Thu, 16 Nov 2023 17:11:10 +0100
Subject: [PATCH] Issue #145. Added page template and reviewer guide

---
 README.md                                     |  53 ++----
 components/content/Alert/ExpansionDetails.vue |   2 +-
 components/content/ProseCode.vue              |   5 +
 content/1.help.md                             | 152 ++++++++++++------
 content/3.defense-systems/detocs.md           |   2 +
 helpers/system-template.md                    |  77 +++++++++
 nuxt.config.ts                                |  12 +-
 public/favicon-16x16.png                      | Bin 0 -> 560 bytes
 public/favicon-32x32.png                      | Bin 0 -> 1346 bytes
 public/favicon.ico                            | Bin 4286 -> 15406 bytes
 10 files changed, 211 insertions(+), 92 deletions(-)
 create mode 100644 components/content/ProseCode.vue
 create mode 100644 helpers/system-template.md
 create mode 100644 public/favicon-16x16.png
 create mode 100644 public/favicon-32x32.png

diff --git a/README.md b/README.md
index 6e0b55d4..21d61f9f 100755
--- a/README.md
+++ b/README.md
@@ -1,6 +1,10 @@
 # Knowledge database of information about defense systems in prokaryotes
 
-## How to use references in the wiki pages
+## Writting content
+
+You can propose modifications for all the content (cf: [help](https://defense-finder.pasteur.cloud/wiki/help)).
+
+### How to use references in the wiki pages
 
 You can add article references by providing a doi directly in the markdown files.
 There is two syntaxes that won't do exactly the same thing.
@@ -37,43 +41,20 @@ For person external, you can create an [issue](https://gitlab.pasteur.fr/mdm-lab
 
 ## Contributing
 
-Look at the [Content documentation](https://content-v2.nuxtjs.org/) to learn more.
-
-### Setup
-
-Make sure to install the dependencies:
+### Run locally
 
-```bash
-# yarn
-yarn install
+1. install `Docker` and `Docker Compose` ([installation guide](https://docs.docker.com/engine/install/))
 
-# npm
-npm install
-
-# pnpm
-pnpm install
+2. **Clone the repo**
+```sh
+git clone https://gitlab.pasteur.fr/mdm-lab/wiki.git`
 ```
-
-### Development Server
-
-Start the development server on <http://localhost:3000>
-
-```bash
-npm run dev
+3. **Go to the repo :**
+```sh
+cd wiki
 ```
-
-### Production
-
-Build the application for production:
-
-```bash
-npm run build
+4. **Start the app:**
+```sh
+docker compose up --build
 ```
-
-Locally preview production build:
-
-```bash
-npm run preview
-```
-
-Checkout the [deployment documentation](https://v3.nuxtjs.org/docs/deployment) for more information.
+5. Go to [localhost:8082/wiki](localhost:8082/wiki)
diff --git a/components/content/Alert/ExpansionDetails.vue b/components/content/Alert/ExpansionDetails.vue
index 62823929..58119d72 100644
--- a/components/content/Alert/ExpansionDetails.vue
+++ b/components/content/Alert/ExpansionDetails.vue
@@ -15,7 +15,7 @@ const theme = useTheme();
 </script>
 <template>
     <div>
-        <v-expansion-panels>
+        <v-expansion-panels class="my-3">
             <v-expansion-panel>
                 <v-expansion-panel-title class=" text-h6">
                     {{ title }}
diff --git a/components/content/ProseCode.vue b/components/content/ProseCode.vue
new file mode 100644
index 00000000..d7f6cd5a
--- /dev/null
+++ b/components/content/ProseCode.vue
@@ -0,0 +1,5 @@
+<template>
+    <v-card class="pa-4 mx-auto my-3" rounded variant="flat" color="surface">
+        <code><slot /></code>
+    </v-card>
+</template>
\ No newline at end of file
diff --git a/content/1.help.md b/content/1.help.md
index e3dd461a..983201de 100644
--- a/content/1.help.md
+++ b/content/1.help.md
@@ -5,29 +5,26 @@ navigation:
     icon: 'md:help'
 ---
 
-
-
-
 # Documentation
 
-## DefenseFinder 
+## DefenseFinder
 
-[DefenseFinder](https://github.com/mdmparis/defense-finder) is a software to detect defense systems from bacterial genomes. 
-It takes as input a fasta file, nucleic or proteic (it will guess which). 
+[DefenseFinder](https://github.com/mdmparis/defense-finder) is a software to detect defense systems from bacterial genomes.
+It takes as input a fasta file, nucleic or proteic (it will guess which).
 
 On the web service page, users can upload (1) their fasta file. One can upload multiple fasta files at once, as many jobs will be run.
 
-Users need to provide a name for the job (2) being submitted before clicking on the submit button (3). 
+Users need to provide a name for the job (2) being submitted before clicking on the submit button (3).
 Once a job is submitted, the page is redirected to the "Analyses" panel (4) where results of the past runs can be found.
 
 ![webservice_interface](/help/webservice_interface.jpg){max-width=750px}
 
-The result consists in 3 tables : 
+The result consists in 3 tables :
+
 - Systems table : One system per line. On the column type, there is the name of the system, and one can click on it to be redirected to the corresponding wiki page.
 - Genes table : One gene per line. Those are genes from the aforementioned system, with some addition information on the quality of the hit. The key between both table is `sys_id`
 - HMMER table : One gene per line. Here it's all the genes hit by a hmm profile, even when the gene is not part of a defense system.
 
-
 ## Contributing to the Wiki
 
 ### 1/ Create an account
@@ -44,15 +41,16 @@ Once your account is created, you need to request access to the project, on the
 
 ![Request Access](/help/Request_access.png){max-width=600px}
 
-Click, and wait for an admin approval. 
+Click, and wait for an admin approval.
 
-### 2/ Edit a page.
+### 2/ Edit a page
 
 Once you have access to the project (the previous step is done once), you can edit easily each page of the wiki, and post [issues](https://gitlab.pasteur.fr/mdm-lab/wiki/-/issues) (if you have question about something or remarks with anything from content to design).
 
 To edit a page, just click on the Edit on Gitlab button at the bottom of every page of the wiki, and it will lead you to the corresponding page of the wiki.
 
-From this page, you can : 
+From this page, you can :
+
 1. Edit the text you'd like
 2. Preview the change you've done (final modification might a bit different, especially if you use plugins to view citations or pdb structures)
 3. Once you've finished you edits, you can specify what you did (e.g. "Re-wrote history of defense systems")
@@ -60,40 +58,34 @@ From this page, you can :
 
 ![Edit a page](/help/Edit_page.png){max-width=750px}
 
-Then it asks you to create a merge request. 
+Then it asks you to create a merge request.
 In other words, the modifications you made will not be reflected on the website until a few automatic checks passed (which should be ok since you modified only some text) and that another person reviewed the change, and accept the merge request.
 
 To do so, just fill in the description (1) of what you did, or anything that you would like the person who will accept the merge request to know, and just hit (2) "Create a merge request".
 
 ![Create MR](/help/Create_MR.png){max-width=750px}
 
+### 3/ Tips to write Markdown
 
-### Tips to write Markdown
+As a general advice, check an already written file to see how other pages are written.<br><br>
 
-As a general advice, check an already written file to see how other pages are written.<br>
-<br>
 The files you edit are in markdown, which is pretty basic language but that can let you do many things, such as tables, links and such with a particular syntax.
-You can check more about this syntax here : https://docs.gitlab.com/ee/user/markdown.html<br>
-<br>
+You can check more about this syntax here : <https://docs.gitlab.com/ee/user/markdown.html><br><br>
 
-To add images, you need to upload the image in the `/content/public` folder (and possibly in the corresponding folder of the defense system) and you can specify its path in the markdown file as follows :<br> 
-<br>
+To add images, you need to upload the image in the `/content/public` folder (and possibly in the corresponding folder of the defense system)
+and you can specify its path in the markdown file as follows :<br>  
 
-```
-![Alt-text, get printed if image is not found](/path/within/public){max-width=750px}
-```
-<br>
-
-where `/path/within/public` is the relative path to the `public` folder (the absolute path would be `/content/public/path/within/public`)
+```md
+![Alt-text, get printed if image is not found](/path/within/public)
+```  
 
-<br>
+where `/path/within/public` is the relative path to the `public` folder (the absolute path would be `/content/public/path/within/public`)<br>
 
-In addition to this, there are some specificities to this wiki :<br>
-<br>
+In addition to this, there are some specificities to this wiki :<br><br>
 
 **1. Each system's page has *frontmatter*, which is a piece of code that will be used to populate the table of the list of system. It has the following syntax :**
 
-```
+```yaml
 ---
 title: Viperin
 tableColumns:
@@ -105,44 +97,111 @@ tableColumns:
     Activator: Direct
     Effector: Nucleotide modifying
     PFAM: PF04055, PF13353
-Contributor : Florian Tesson, Aude Bernheim
+RelevantAbstracts:
+    - doi: 10.1038/s41586-020-2762-2
+    - doi: 10.1126/science.aba0372    
+contributors : 
+    - Florian Tesson
+    - Aude Bernheim
 ---
 ```
-Any new item in the `tableColumns` object will create a new column in the list of [defense system's table](/defense-systems).
 
-<br>
+Any new item in the `tableColumns` object will create a new column in the list of [defense system's table](/defense-systems).<br>
 
-**2. In the relevant abstract section, only the doi is relevant :**
+**2. To display a protein structure, you can call the plugin as follows :**
 
 ```
-::relevant-abstracts
+::molstar-pdbe-plugin
 ---
-items:
-    - doi: 10.1038/s41586-020-2762-2
+height: 700
+dataUrls: 
+    - /avs/AVAST_I,AVAST_I__Avs1B,0,V-plddts_80.96481.pdb
 ---
 ::
 ```
-<br>
 
-**3. To display a protein structure, you can call the plugin as follows :**
+**Custom containers:**
+
+Custom containers can be defined by their types, titles, and contents.
 
+<u>Default title:</u>
+
+```md
+::info
+This is an info box
+::
 ```
-::molstar-pdbe-plugin
+
+```md
+::tip
+This is a tip box
+::
+```
+
+```md
+::warning
+This is a warning box
+::
+```
+
+```md
+::danger
+This is a danger box
+::
+```
+
+```md
+::expansion-details
+There is some details
+::
+```
+
+<u>The output:</u>
+
+::info
+This is an info box
+::
+
+::tip
+This is a tip box
+::
+
+::warning
+This is a warning box
+::
+
+::danger
+This is a danger box
+::
+
+::expansion-details
+There is some details
+::
+
+<u>Custom title:</u>
+
+```md
+::info
 ---
-height: 700
-dataUrls: 
-    - /avs/AVAST_I,AVAST_I__Avs1B,0,V-plddts_80.96481.pdb
+title: my title info
 ---
+This is an info box
 ::
 ```
 
+::info
+---
+title: my title info
+---
+This is an info box
+::
 
-### 3/ Review a Merge Request
+### 4/ Review a Merge Request
 
 You can review other person's merge request by going the [merge request's pages](https://gitlab.pasteur.fr/mdm-lab/wiki/-/merge_requests).
 
 On a given page, you can see what modifications where made for this merge request (1), then you can comment if you have anything to say (2 and 3).
-And finally, you can approve (4) the MR if you find it worth publishing on the website. 
+And finally, you can approve (4) the MR if you find it worth publishing on the website.
 
 ![review a MR](/help/Review_MR.png){max-width=750px}
 
@@ -152,7 +211,6 @@ If you want to modify further the file or other file within the same merge reque
 
 The Web IDE editor allows you to edit multiple file at once for a given commit. This editor is also accessible from the merge request's page under the "Code" button in the upper right corner of the page.
 
-
 ## Contribute to the code
 
-Contribution to the code and design are open. Please read the [README](https://gitlab.pasteur.fr/mdm-lab/wiki) on how to deploy the website locally (and see the modification you're doing live).
\ No newline at end of file
+Contribution to the code and design are open. Please read the [README](https://gitlab.pasteur.fr/mdm-lab/wiki) on how to deploy the website locally (and see the modification you're doing live).
diff --git a/content/3.defense-systems/detocs.md b/content/3.defense-systems/detocs.md
index d179de30..1b4eaa8d 100644
--- a/content/3.defense-systems/detocs.md
+++ b/content/3.defense-systems/detocs.md
@@ -16,6 +16,8 @@ contributors:
 
 # Detocs
 
+
+
 ## Description
 Detocs (**De**fensive **T**w**o**-**C**omponent **S**ystem) is a family of 3-gene defense systems that mediate anti-phage activity by abortive infection.
 
diff --git a/helpers/system-template.md b/helpers/system-template.md
new file mode 100644
index 00000000..12097a9f
--- /dev/null
+++ b/helpers/system-template.md
@@ -0,0 +1,77 @@
+<!-- The following block is th frontmatter that will be used to build the big table -->
+---
+title: <!--Replace this with Defense system name-->
+tableColumns:
+    article:
+      doi: <!--Replace this with the main article doi-->
+      abstract: 
+        <!--Replace this with the abstract of the main article-->
+    Sensor: <!--Fill sensor name here. If it's unknown : Leave it blank -->
+    Activator: <!--Fill activator name here. If it's unknown : Leave it blank -->
+    Effector: <!--Fill effector name here. If it's unknown : Leave it blank -->
+    PFAM: <!--PFXXXXX, PFYYYYY, PFZZZZZ-->
+relevantAbstracts:
+    - doi: 10.xxxx/toto.yyyy.zz 
+contributors:
+    - John Doe
+---
+
+<!--
+Markdown syntax in a nutshell, check other pages for example
+
+Use # for titles : # Main title ; ## Secondary title ; ### Tertiary title ; etc.
+Use * * for italic : *this text will be displayed in italic*
+Use ** ** for bold text : **this text will be displayed in bold**
+Use []() for links to external websites : ![This text will be displayed, if you click on it you will be directed to the website](https://url.of.the.website)
+Use ![alt text](/system/system.svg) to embed an image. The file of the image should be in a folder with the name of the system, located in /public 
+Use for references : "This is a great results :ref{doi=10.xxxx/toto.yyyy.zz}." it will write "This is a great result (Foo et al, 2023)."
+
+That's all folks!
+
+-->
+
+
+# Defense system name
+<!--Replace the main title with the name of the defense system
+
+Example : # CBASS
+-->
+
+## Description
+This paragraph contains a short description of the defense system. It should provide the essential information regarding the system at a glance.
+- How many proteins compose the defense system ? What are their name and what is their biological function ?
+- Optionally, you can quickly state in which model organism the system was tested and against which phages.
+Please don't forget to refer to the articles that you will cite at the end of the article.
+This should be precise but as synthetic as possible (rule of thumb : a dozen of lines maximum).
+
+Example :
+"RADAR is comprised of two genes, encoding respectively for an adenosine triphosphatase (RdrA) and  a divergent adenosine deaminase (RdrB) :ref{doi=10.xxxx/toto.yyyy.zz}. which are in some cases associated with a small membrane protein (RdrC or D) :ref{doi=10.xxxx/toto.yyyy.zz}.
+RADAR was found to perform RNA editing of adenosine to inosine during phage infection. Editing sites are broadly distributed on the host transcriptome, which could prove deleterious to the host and explain the observed growth arrest of RADAR upon phage infection."
+
+
+## Molecular mechanism
+If the mechanism of action of the defense system is known, please describe it in one short paragraph. If the exact mechanism is not known, simply state it and sum up the information available in the literature.
+This should be precise but as synthetic as possible (rule of thumb : a dozen of lines maximum).
+
+Example :
+The exact mechanism of action of the Shango defense system has not yet been characterized, but it was shown that the TerB domain and the catalytic activity of the ATPase and the Helicase are required to provide antiviral defense. The fact that TerB domains are known to be associated to the periplasmic membrane could indicate that Shango might be involved in membrane surveillance :ref{doi=10.xxxx/toto.yyyy.zz}.
+
+
+## Example of genomic structure
+<!--Automatically filled.
+You can optionally describe in more details which proteins compose the system if the Description paragraph did give all the information-->
+
+## Distribution of the system among prokaryotes
+<!--Automatically filled-->
+
+## Structure
+<!--Automatically filled-->
+
+## Experimental validation
+<!--Give more information about the experimental validation :
+- In which organism was it discovered ?
+- In which organism was it tested ?
+- Against which phages ?
+- In which paper was this described ?
+Or you can try to build the graph with mermaid (see help page or other page)
+-->
diff --git a/nuxt.config.ts b/nuxt.config.ts
index 2a61a770..6a18b71a 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -13,14 +13,10 @@ export default defineNuxtConfig({
       injectPage: false,
     },
     highlight: {
-      theme: {
-        // Default theme (same as single string)        
-        default: 'github-light',
-        // Theme used if `html.dark`        
-        dark: 'github-dark',
-        // Theme used if `html.sepia`        
-        sepia: 'monokai'
-      }
+      theme: 'github-light',
+      preload: [
+        'sh',
+      ]
     }
   },
   vuetify: {
diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png
new file mode 100644
index 0000000000000000000000000000000000000000..6494a220ffabd223529f96daf092e9086162ba51
GIT binary patch
literal 560
zcmV-00?+-4P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005^Nkl<ZI8T+5
z&ubG=5XZmsHk)kP{L-X0u}UL__D~gyhn~cnNA;q3^rCnF87ZDcgdQx47C|jY{ed8*
zASG19nnqit$=X$$nCzS9yloEtxNMe%2alQ0%zWMu2KdaWYi_6NE&AQgxx@Ew?%7lt
zARqpPD+Mo+_dV)WX#U1_1lYZJ{b17QnK&TU$S8*v6mW@QS`i?;duKsSkDZSLFq+Yu
zTY`J_3@DiZ?|cX8mB)dq6tZyuyxWF;R)ceT3aT&!{u+RI^(oV6E|!b%$r|)(9qRZP
z+_NVJ0~lk#YoFjuAAzoYhME|K@qfnefP;3F;Eb1`H=9toG|aD196W!>;j8!LUY-SS
z?0^(O9UJ*eN%z(ZP_+ohRuyq5WkHz~(C!If=^pFa79rFyB8e(_Kp@ZtkhbAEfK-C#
z!p3lI3u>wYq!MsW9_<6(Z4=k!S<^05F$4Y*KvhfN57JR_7$hL$??GgPH(Q`|5_Dil
zUSm=K%MUnQUMDqKh6y@QWeNJ&1eNnJ%^y)0YU0p7%mUsvKqEN;XQCpcUq525H;J;I
z1k2y<f`(H9lX0x5{%NKBd8fvUGKMRFmy4|5Y)}+zXBIKAg1$-1vMeS#)BAAisDEcY
ysB+#6v`GJMt7-Tx>doI~sSs-u|6BJ)YwkDlNAW!U{Zb+T0000<MNUMnLSTYq9stV#

literal 0
HcmV?d00001

diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png
new file mode 100644
index 0000000000000000000000000000000000000000..296efe3ceadc40a499e7ff43c3e29247814d2f6b
GIT binary patch
literal 1346
zcmV-I1-<%-P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F8000FENkl<ZSV!$v
zTTGlq7(Fxd?=H7;tx%vqOMn(?DQ!xtRj882+GtEA)x=kgO*J*aCk^q*#KgqA?Td+t
zF-9LuFK=2AHEJpLN;S}0ZUqVmltQ`hvj5EZ%`CgPrG^*QzBtM5vdheTXU=!d`G+CK
z!(aPKo#rev{@BO$cPqtWS%2#3Lz#~74MJ-kgeprue)P{f>%|nn-2OxB;P|eaqC%@}
z-s4AF{s(YZ2K)!=_9?BaW6+NjFub%-^fPD-F99&UzplbpTXCM3<v3s~3qeo&5j@gp
zYkFR&2Fpy2s;@eS!TfK%|B3JUs)H+CJX|UG^*QLtId}=coi$`zKUna@S8dL&lCoIX
zQM(HAOgjPa!`W93CU{gC3&1^fVn$TtC&U7Pd%hdGZwzoHSYA5B14UqbvCS5MY&a=-
zd0sTM6+k0f`yqd&)6WKgfD4wD3|^WGXID{V_t*ls+zUNA4b?sbO#sB!e8B4vfa3oK
zfP1C`oM`8H8MdIhF-EUj5D!ut7Tgvy2DBvcUAPXOlNtp;PtJnn5~$RW<YERujZ9kW
zF`vh>5M}_BL}r9pi3tF$H8jy3_Iw0D{}{B=_U9!4SmAwKwNomsNwKtrhwL2%ZqGt&
zAptEj<nMh}WU{#vV$Y^feR|_-)8YPd4Se%j=%EQ9(Fc(q(nW*;BzXD!hYdiS2fjCJ
z!4kZ7!u-)jvQG*;&r~i~AO6E%0MuJvnhoc%`$N`Cj<>JCJKw<j>Rzbsn_y<nLL^54
zkQaKODKNyAJm|3*@QpbLe)=;!FV{eKjaVNeC?RPR=iy?wKVF6N5PkmE1!wmL0{a8J
z2Oojz8MQ^#@C0~aCbi=hf+sJ+_u7+in>)yk1;Fe)II$27;Ex;jw0dA1vWYB2CsC~f
z5LCn}x?~Ns5f^z|RBwPh*9}3TA`OrO+u?rK3g@Y<6h1_Eb}Hmq`hQKS-3#OjQBwxl
z&<gP={r1xp_}+bvGUBgL5}FoB1AsJOHU_6)G?6(K%5aw!hU7~<EhmNykegHB#aTq_
z2sl|wo^FTOSqMc3FaTIVhCP7UOW&RWOG|{F3E1`;hMZ@2KwTO52Y}0cwgvD9X#ok(
zocweLJaoF?=S>h*C6E_;tRPu(9NeZ(auumMi9|(AxZk(ISGN~|_rA3Ncu^K)ORoiO
z_A>xXVZ?jD664?)cEZnshzNZSyodK-{-Xx)9fi=tlkk!T0`<qh)~&W0FaXrxI1~Xk
zsb(k^k8g&$I=B=7v7-pIX@L=@VNz^gPfVvq10cF=3yeQG6>`sZfv;W#bD=N=4N@qR
zrwS}1$!@4fn4*fbK(-6%V*;X_<`OVE5LilrU5~kWvXcv5mTTK&+6G5Z+tOl}gv)w%
zVZvey(h_*^%jU>BQCVnD!Z&6^QyAG;B}PmiRmV_h9$hX(<$6f6VR#67(n)#<+13y<
zR<|Xz$JjKvXUcwONpbMJxZB3`QVlHZ#5d)_-q&){tb#E<3#^K>F3}x}_e#F40O}G6
zExe8%xvGVLSJ0<vg(*l>n+u82lO2?n-q)Y7VH5$tO0zj8<`$VVY9$Mr*fgPGdT&zF
zsNN)8m;uC7VwygOM+&Vo`<V5_njK~ja+c9e7=U#H4YH|@*^Ous)xZCxF7-^_Qvhyb
zTk|~wpvj)W4^Gvyz#DH%mY%rcm(t~0K#_gT*Vn)EZ#?Ir%Q~##UjP6A07*qoM6N<$
Eg5dLM5dZ)H

literal 0
HcmV?d00001

diff --git a/public/favicon.ico b/public/favicon.ico
index 18993ad91cfd43e03b074dd0b5cc3f37ab38e49c..3de9d9e15d976985daf9f2c9b904162ca72d6753 100644
GIT binary patch
literal 15406
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

literal 4286
zcmeHLOKuuL5PjK%MHWVi6lD<!mRb4$mdFuu1m7S&L72}0%nh7nb{xS*IY7K-1~WG>
zOGiR<sv2rs-P1h`ut*jRDypfj@9U}_3E&NVhC}c-e)fS606r6u2w#X;ZXeov|87fL
z!TI})z`sQxSz?%$m}Cpw?WF=YNnu;Mk#t%h*=w(2a7>EbCw`xmFozJ^aNatJY>w+g
ze6a2@u~m#^BZm@8wco9#Crlli0uLb^3E$t2-WIc^#(?t)*@`UpuofJ(Uyh@F>b3Ph
z$D^m8Xq~pTkGJ4Q`Q2)te3mgkWYZ^Ijq|hkiP^9`De={bQQ%heZC$QU2UpP(-tbl8
zPWD2abEew;oat@w`uP3J^YpsgT%~jT(Dk%oU}sa$7|n6hBjDj`+I;RX(>)%<Y^V1u
zxpEJLVzZ2NFGX+1TXChn89VxczG?Ja<o=SJ8n{y5$ezyw`8sz3-<3{&C8oX)|94kh
z+0M_EV^O^m@tH21JEPN_ux%Gy1GUw?U~8Zr)3xvGXUSPO+3I<5aAh6uT<iYgm~_ug
ziEA0#JM$)SV%(oc@>lm_7N{+B7Mu%H?422lE%MBJH!!YTN2oT7xr>>N-8OF$C&qU^
z>vLsa{$0X%q1fjOe3P1mCv#lN{xQ4_*HCSAZjTb1`}mlc+9rl8$B3OP%VT@mch_~G
z7Y+4b{r>9e=M+7vSI;BgB?ryZDY4m>&w<W+!o=%S{hjU42>cHSn81VH1N~`0gvwH{
z8dv#hG|OK`>1;j7tM#B)Z7zDN?{6=dUal}$e<J#b(FPcAa6L9y8G}E@q!eIA^eYgE
GM1KL3x?{8e

-- 
GitLab