From 5b9a98074a564646e2d9759ddb65e3b59612f812 Mon Sep 17 00:00:00 2001 From: scayac Date: Thu, 23 May 2024 22:30:49 +0200 Subject: [PATCH] Ajout du script pout libreoffice + doc + script de fineTuning --- .vscode/launch.json | 15 ++++++++++ 301.csv | 2 +- Readme.md | 23 +++++++++++++++ appreciations_Bulletins.py | 43 ++++++++++++++++++++++++++++ fineTuning/Data bulletin tuning.ods | Bin 0 -> 46000 bytes fineTuning/fineTuningGenerator.py | 32 +++++++++++++++++++++ fineTuning/finetunning.jsonl | 25 ++++++++++++++++ sample.ods | Bin 0 -> 12685 bytes 8 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 .vscode/launch.json create mode 100644 Readme.md create mode 100644 appreciations_Bulletins.py create mode 100644 fineTuning/Data bulletin tuning.ods create mode 100644 fineTuning/fineTuningGenerator.py create mode 100644 fineTuning/finetunning.jsonl create mode 100644 sample.ods diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..6b76b4f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python Debugger: Current File", + "type": "debugpy", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal" + } + ] +} \ No newline at end of file diff --git a/301.csv b/301.csv index adce141..56e6f79 100644 --- a/301.csv +++ b/301.csv @@ -1,4 +1,4 @@ Nom,Moyenne,Oublis,TNF,Attitude,Participation,app -Ayoub AMRANI,12,2,1,1,"Ayoub fait preuve de sérieux et d'investissement en classe. Il peut progresser en s'organisant davantage et en complétant tous les exercices. Sa participation orale est satisfaisante, mais il peut encore améliorer son attitude en classe. Travail encourageant, continuez ainsi !" +Ayoub AMRANI,12,2,1,1,"Ayoub fait preuve de sérieux et d'investissement en classe. Il peut progresser en s'organisant davantage et en complétant tous les exercices. Sa participation orale est satisfaisante, mais il peut encore améliorer son attitude en classe. Travail encourageant, continuez ainsi Ayoub!" Emerline BAZILE,"15,31",0,0,3,"Emerline a une moyenne très satisfaisante de 15,31/20, démontrant son sérieux et son investissement. Son attitude en classe est exemplaire, tout comme sa participation orale. Aucun oubli de matériel ni exercice non fait. Continuez ainsi, c'est un plaisir de vous avoir en cours !" Imane BEN OUDIO,11,0,1,3,"Imane a réalisé des progrès en physique-chimie cette année, mais peut faire mieux. Son travail fourni est satisfaisant, mais il convient de s'appliquer davantage pour améliorer sa moyenne. Son attitude en classe et sa participation orale doivent également être plus impliquées." diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..f8e3be3 --- /dev/null +++ b/Readme.md @@ -0,0 +1,23 @@ +# Script python de génération de bulletins pour LibreOffice CALC + +#### Prérequis : + +Dépendances python : +`pip install openai` + +Pour les versions de python supérieures à 3.10, autoriser au préalable l'installation de dépôts sur le système sans venv. +`python3 -m pip config set global.break-system-packages true` + +Interface pour libre office : +`apt install libreoffice-script-provider-python` + +Pour pouvoir être utilisé, le script appreciations_Bulletins.py est à copier dans : +`~/.config/libreoffice/4/user/Scripts/python$` + +#### Utilisation : + +Voir structure du fichier sample.ods +L'exécution se fait via le menu Outils>Macro>Exécuter la macro + +Les variables promptCol et answerCol du fichier appreciations_Bulletins.py permettent de définir où sont générées les données dans la feuille de calcul active (-1 -> génération désactivée) + diff --git a/appreciations_Bulletins.py b/appreciations_Bulletins.py new file mode 100644 index 0000000..bb3e9c7 --- /dev/null +++ b/appreciations_Bulletins.py @@ -0,0 +1,43 @@ +import uno +from openai import OpenAI + +promptCol = -1 +answerCol = 9 + +client = OpenAI(api_key="sk-proj-hrV9Se3D3Vn6ro66AoMFT3BlbkFJ3kgB6P9xQFpcaymQQHFI") + +def Generation_Appreciations(): + + oDoc = XSCRIPTCONTEXT.getDocument() + sheet = oDoc.getCurrentController().getActiveSheet() + row = 1 + content = "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne trimestrielle et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée." + while sheet[row,0].String!="": + prompt = sheet[row,0].String+", moyenne du trimestre "+sheet[row,2].String+"/20, moyenne annuelle "+sheet[row,1].String+"/20, comportement en classe niveau "+sheet[row,7].String+"/3, participation orale niveau "+sheet[row,8].String+"/3" + if sheet[row,5].String!="": + if int(sheet[row,5].String)>2: + prompt += ", nombre oublis de matériel "+sheet[row,5].String + if sheet[row,6].String!="": + if int(sheet[row,6].String)>2: + prompt += ", nombre exercices non faits "+sheet[row,6].String + if sheet[row,3].String!="": + if int(sheet[row,3].String)>2: + prompt += ", nombre absences "+sheet[row,3].String + if sheet[row,4].String!="": + if int(sheet[row,4].String)>2: + prompt += ", nombre de retards "+sheet[row,4].String + if promptCol != -1: + sheet[row,promptCol].String = prompt + if answerCol != -1: + chat_completion = client.chat.completions.create( + messages=[ + {"role": "system","content": content}, + {"role": "user","content": prompt}], + model="ft:gpt-3.5-turbo-1106:personal:bulletins2:9S8U7KuE", + temperature=0.5, + presence_penalty=0.6, + frequency_penalty=0.6, + top_p=0.5); + sheet[row,answerCol].String = chat_completion.choices[0].message.content + row = row+1 + return None diff --git a/fineTuning/Data bulletin tuning.ods b/fineTuning/Data bulletin tuning.ods new file mode 100644 index 0000000000000000000000000000000000000000..3db06d22eb4270612c214141134056f592f8d200 GIT binary patch literal 46000 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: + prompt += ", nombre oublis de matériel "+data[i][5] + if data[i][6]!="": + if int(data[i][6])>2: + prompt += ", nombre exercices non faits "+data[i][6] + if data[i][3]!="": + if int(data[i][3])>2: + prompt += ", nombre absences "+data[i][3] + if data[i][4]!="": + if int(data[i][4])>2: + prompt += ", nombre de retards "+data[i][4] + output.append('{"messages": [{"role": "system", "content": "'+content+'"},{"role": "user", "content": "'+prompt+'"},{"role": "assistant", "content": "'+data[i][9]+'"}]}') + +with open(fichier_out, 'w') as fp: + for item in output: + fp.write("%s\n" % item) diff --git a/fineTuning/finetunning.jsonl b/fineTuning/finetunning.jsonl new file mode 100644 index 0000000..80a2eb7 --- /dev/null +++ b/fineTuning/finetunning.jsonl @@ -0,0 +1,25 @@ +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "MATETA--KANDA Vanel, moyenne du trimestre 10/20, moyenne annuelle 10/20, comportement en classe niveau 1/3, participation orale niveau 0/3"},{"role": "assistant", "content": "Les résultats de Vanel sont moyens pour ce trimestre et plus généralement sur l’année entière. L’attitude en classe manque trop souvent de sérieux alors que la participation orale est absente."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "PANZO PEDRO ALFREDO Miguel, moyenne du trimestre 11/20, moyenne annuelle 13/20, comportement en classe niveau 1/3, participation orale niveau 1/3"},{"role": "assistant", "content": "Les résultats de Miguel ce trimestre sont corrects et satisfaisants sur l’année. Attention néanmoins au manque de concentration en classe, au trop faible investissement à l’oral et à la non réalisation de certains exercices demandés."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "BAHADOUR BRELEUR Jayanna, moyenne du trimestre 13/20, moyenne annuelle 13/20, comportement en classe niveau 1/3, participation orale niveau 1/3"},{"role": "assistant", "content": "Un ensemble trimestriel et annuel tout à fait correct. Néanmoins, les principaux défauts de Jayanna sont son manque de participation et de concentration en classe."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "DORGHAL Enzo, moyenne du trimestre 8/20, moyenne annuelle 9/20, comportement en classe niveau 1/3, participation orale niveau 2/3"},{"role": "assistant", "content": "Des résultats trimestriels et annuels très moyens pour Enzo. L’attitude peut quelquefois manquer de sérieux mais l’investissement à l’oral est plutôt constructif."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "AMRANI Ayoub, moyenne du trimestre 13/20, moyenne annuelle 13/20, comportement en classe niveau 1/3, participation orale niveau 3/3"},{"role": "assistant", "content": "Ayoub termine ce trimestre et cette année avec des résultats d’un bon niveau. Sa participation à l’oral est toujours aussi active et efficace même si le manque de concentration peut parfois encore se faire trop sentir."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "CHAMPENOIS Naïm, moyenne du trimestre 14/20, moyenne annuelle 9/20, comportement en classe niveau 2/3, participation orale niveau 0/3, nombre absences 6"},{"role": "assistant", "content": "Des résultats très fragiles pour ce trimestre et pour l’année. Naim a été absent de nombreuses fois ce trimestre et son attitude en classe peut manquer de sérieux. L’investissement à l’oral est inexistant."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "PACHECO CARDOSO Juliette, moyenne du trimestre 9/20, moyenne annuelle 10/20, comportement en classe niveau 2/3, participation orale niveau 0/3"},{"role": "assistant", "content": "Malgré des résultats assez moyens, la participation de Juliette est totalement inexistante et peut parfois manquer un peu de sérieux."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "CATALAN Ayron, moyenne du trimestre 12/20, moyenne annuelle 13/20, comportement en classe niveau 2/3, participation orale niveau 1/3"},{"role": "assistant", "content": "Les résultats d’Ayron sur le trimestre et l’année sont corrects tout comme l’attitude en classe. Reste la participation orale qui demeure trop faible."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "AGNES Thomas, moyenne du trimestre 20/20, moyenne annuelle 18/20, comportement en classe niveau 2/3, participation orale niveau 1/3"},{"role": "assistant", "content": "Des résultats excellents pour ce trimestre et pour l’ensemble de cette année. Pas de soucis sur l’attitude malgré quelques bavardages et une participation orale trop discrète."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "IDRISSI-ZAOUI Yasmine, moyenne du trimestre 6/20, moyenne annuelle 8/20, comportement en classe niveau 2/3, participation orale niveau 2/3"},{"role": "assistant", "content": "Les résultats de Yasmine pour ce trimestre et cette année sont très fragiles et ce malgré une bonne participation à l’oral et une attitude assez sérieuse. Quelques oublis de matériel sont également à déplorer."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "NEDEY Amine, moyenne du trimestre 17/20, moyenne annuelle 17/20, comportement en classe niveau 2/3, participation orale niveau 2/3"},{"role": "assistant", "content": "Amine finit ce trimestre et cette année avec des résultats très solides. Son attitude est sérieuse mis à part quelques bavardages et son implication à l’oral est correcte."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "DIABATE Bamory, moyenne du trimestre 14/20, moyenne annuelle 12/20, comportement en classe niveau 2/3, participation orale niveau 2/3"},{"role": "assistant", "content": "Avec une attitude plutôt sérieuse et une bonne participation orale Bamory termine ce trimestre avec des résultats solides. Le bilan annuel est correct."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "LEFEVRE Killian Joey, moyenne du trimestre 12/20, moyenne annuelle 11/20, comportement en classe niveau 2/3, participation orale niveau 2/3"},{"role": "assistant", "content": "Une fin de trimestre correcte côté résultats tout comme le reste de l’année. Killian Joey est assez sérieux en classe et participe activement."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "HAMOUDA Chehyne, moyenne du trimestre 20/20, moyenne annuelle 18/20, comportement en classe niveau 2/3, participation orale niveau 3/3, nombre absences 3"},{"role": "assistant", "content": "Les résultats de Chehyne pour ce trimestre et cette année sont très solides malgré quelques absences. Le comportement en classe est globalement sérieux et la participation en classe excellente"}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "RAMDANE Elyes, moyenne du trimestre 15/20, moyenne annuelle 13/20, comportement en classe niveau 2/3, participation orale niveau 3/3"},{"role": "assistant", "content": "Avec une attitude en classe sérieuse et une participation en classe excellente Elyes termine ce trimestre et cette année avec des résultats satisfaisants."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "SALMI Tina, moyenne du trimestre 19/20, moyenne annuelle 18/20, comportement en classe niveau 2/3, participation orale niveau 3/3"},{"role": "assistant", "content": "Tina termine ce trimestre et cette année en beauté avec des résultats excellents. Son attitude est toujours sérieuse malgré quelques bavardages et sa participation orale très pertinente."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "SERY Maxime, moyenne du trimestre 11/20, moyenne annuelle 11/20, comportement en classe niveau 3/3, participation orale niveau 0/3"},{"role": "assistant", "content": "Avec un comportement en classe exemplaire, Maxime termine ce trimestre et cette année avec des résultats moyens. La participation orale est en revanche complètement absente."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "PICHON Aymeric, moyenne du trimestre 16/20, moyenne annuelle 16/20, comportement en classe niveau 3/3, participation orale niveau 0/3"},{"role": "assistant", "content": "Avec son sérieux irréprochable, Aymeric termine ce trimestre et cette année avec des résultats très solides. Quel dommage que la participation orale soit absente de ce bel ensemble."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "RABIHI Yasmine, moyenne du trimestre 11/20, moyenne annuelle 13/20, comportement en classe niveau 3/3, participation orale niveau 0/3"},{"role": "assistant", "content": "Yasmine termine ce trimestre avec des résultats corrects mais plus faibles que ceux obtenus sur l’ensemble de l’année. L’attitude est très studieuse et la participation orale quasi absente. Quelques oublis de matériel sont à constater."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "JEREMIE DELAROCHE Jade, moyenne du trimestre 6/20, moyenne annuelle 8/20, comportement en classe niveau 3/3, participation orale niveau 0/3"},{"role": "assistant", "content": "Jade est une élève extrêmement sérieuse en classe mais dont les résultats pour ce trimestre et cette année sont bien trop faibles. L’absence de participation orale est également bien dommage. "}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "ALMEIDA RAMOS Anaisa, moyenne du trimestre 14/20, moyenne annuelle 9/20, comportement en classe niveau 3/3, participation orale niveau 1/3, nombre absences 6"},{"role": "assistant", "content": "Malgré de nombreuses absences ce trimestre, Anaisa le termine avec des résultats corrects même si le constat sur l’année reste très fragile. La participation orale est très timide mais le comportement en classe est très mature."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "DE SOUSA Lena, moyenne du trimestre 18/20, moyenne annuelle 15/20, comportement en classe niveau 3/3, participation orale niveau 2/3"},{"role": "assistant", "content": "Un bilan trimestriel et annuel remarquable du point de vue des résultats. Lena fait preuve de beaucoup de maturité et participe activement à l’oral. "}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "BEN-HAIDA Ouayess, moyenne du trimestre 11/20, moyenne annuelle 13/20, comportement en classe niveau 3/3, participation orale niveau 2/3"},{"role": "assistant", "content": "Ouayess termine cette année avec des résultats corrects même si une baisse est à constater pour ce trimestre et quelques travaux n’ont pas été réalisés. L’attitude est très positive et la participation orale assez soutenue."}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "LOCILLA Anthony, moyenne du trimestre 18/20, moyenne annuelle 18/20, comportement en classe niveau 3/3, participation orale niveau 2/3"},{"role": "assistant", "content": "Des résultats trimestriels et annuels qui frôlent l’excellence, un sérieux remarquable et une participation active. Bravo !"}]} +{"messages": [{"role": "system", "content": "rédige un commentaire de bulletin de fin d'année scolaire, maximum 300 caractères, tutoiement de l'élève, commentaire sur la moyenne du trimestre et éventuellement sur la moyenne annuelle, ne pas indiquer de valeur chiffrée."},{"role": "user", "content": "VERON Shaun, moyenne du trimestre 10/20, moyenne annuelle 8/20, comportement en classe niveau 3/3, participation orale niveau 3/3"},{"role": "assistant", "content": "Des résultats sur l’année très moyens qui deviennent faibles pour ce trimestre. Quel dommage au vu de la grande maturité dont fait preuve Shaun en classe et de la qualité de son oral."}]} diff --git a/sample.ods b/sample.ods new file mode 100644 index 0000000000000000000000000000000000000000..6cb7b9c3747857b2036e3f7c0ec31e81d3650dbc GIT binary patch literal 12685 zcmbt)1ymf_wl)w55+HbR4ess`2ol`g0t9KSf$qjNI0Ojp?(QBS1b2eFyE_T`lY8IX zOy*5y-M9YDskKhA>f2V;r%vttDat&7#e#xDfPx~;s?+qd;tghkf`a;SJpK#H8enY# zcD6M!w6(PY7#o5CKpSQUn|Dk=Ll6MO1hh4=c?UFxSew{@nLxJoCWh}o<|Za!#b0zj zs`-!LKF(ePZA<}X5c_{=1Fe1~%U79`WxCj_o4V9S^ z428sO9XK>aE!_H!jNhEMMX|)SyB=!oM|ZIvwxhax9_HvH^VlAt%{NzKT@j>SD8u$| zjH)Px;73_`L6#AbUo0X%iSIN;7l%u;Xz3~?NJUGO%ZaUr%pxBTdda<5423Er;XYz$ zx!hC*bX{>e`+ihTemR2c;2n)KHY(U|BRU`W&JW>(&OA;dK}=&-;A?F@{H)uv z@+`_~Fb7DBIEFsH(r{-Zm&9?5Pd%PdYormYjbWNXSBBkvtNYz3npyEg~v{-z8r!b`(~!D zDxPw&#du;$MloaV+01NdG9r4BDGd2`7t0qb_ks(W0HQmFPW{1_41_?FH)3AmJ!l^J zU3=LWtGO&MT!N+BiE#t8p5(j|z$j`bLhE2N`D8b9^f6v>17(Y%M=Kns^$DDzr^U)n zo85v#U`2PngAchhu2lUQ@K{jHr?BQYH~(@Q;Hto*gt_wRe((8E_modx4Z4A56ZbLd zIw>|7lcV@!nyd_vhGd}LhM|O$RrWJZlEauiS6|`ix&+!8<|J&wWNSFv1+VY{_w>uLiFDrll}*J?2e7TH}GmfmBPXyPi55OUHdLrB&E69F!ux-KxPgAVC4rDc1E&6IMR47wWrH3Cdj* zYA`m7e)?)&<*mGlq7wYw`}I5d1ci;SA#>5($`p_lWpU*Jnl>7)PKGC{V%cx=xG@(HwbviaUVxSQC`e z25n!D#hf+x`nY4md&=O*k)RYoeb$&IhWCNkxB~Sk$kaT2pvgUo)FO?fklODTFAw3= zc|l*}*fIA}yAMzez8u;P9O}QVI!Um)qR!~fQa=8?Xo>;MQMC>*q|rWuJj)!;M48^S zs|pIFd+?54hia;u-cY5ILFH#*`b;TnPstHm65?skWIwEQ7ksw+CC;Fo-l1f9V8W~s zei7r#SzbbcVa|v9gWv$3&uUpSj0Qf(Y_rH+=K`*1vpX{JW*i!^Zkj{+qF9ERu&*tf zcEntjWQ}S02cbX2X7^rtu6qGzKqm8Ph(Y12*5iCsTbXY*=A*}t@2c3B(uA~*R$|9y zPcKDr66n}EGdE6ILR#RM4@m(1VwRb2E~KMMzQ0hUCQvZ?ItI8P%JFS+!_lO?nvKdI z_T>U8y!CE~6qq1ITmV_ysvA%en+*jzt!u=}Dky!^XY z%Z^jhRu@QxwPK8?J%iPYWN3^%X4g z;;+Ytim6ndze#G-pavOjd%|vh__{i}b>~GXK7z}l){`Tm#+-7$;t_n!3KpUA7fcIkJ4L@fNSc@t| z9B%YAMElJ8MXn}oj}Id(k_y(i(x-yI$G8IFb7zV4gpC(Bd=WRYDxU^3PLELxbQt** z%q4M>|Lg8t)(?tLJ21RNU}q*|JH!rNK?q%r?TS7{Lc~SLbQTqla(muuJy*Vh$#Cur zDd-0l#W+0?na2TiVTi6bn}CQSxTgDYAJ*LrnWV+qWZ^pI(>UM{Hl#q+jlLCShEDDH zcxw9kG9aIE<%)u^sgpL?CBFyBmZG#cIO>qy`eKJ|8=KLWp(MJRnW-qz%&mRB1%`py z(uUNseE#>>Yui)2dN;u02T@%Ngz?)|fKLdF6npsUro&Lg= zG{jl_0XysFFvm;YeIMs2=MDqIZiDNfFRCqdFCoI?elDMN9`qkN(Yqn4ceepU^PDfa z{8c?_s{^6yY70H_3XV#|2$rMY91?xjaRzP&!|bH14+&OyKO2rzC2UWk1qa zePuoh2Mq<~^W>k>_v|r!#y}hJkFTu9t@DP~oXr{+n){IkF4G8i;t3^SpGu3NQWML% zl97vcL}+yN4OJ{TV&v%t=A}a8QUnP-t#oCvW>~Tw?z8hw?;dtgn5qA3dlF$I;Q)qW zMy9VpxzR_j!-s~tc-o>h-^U`W3&-N@`N>^rBj=6L4w=#C8#0y#d^@^n3NVMJ6_Lf2 z5rfsCzphk+3(Jw0d*;%{#O>sDR8xPm9ZZ zU_NP18t^x`O-{uK3b1t&)JpEx~r zuxY?v8I_uVGD<+ipR@@iDaJP6%tII+H03AWwPSZ^=ilOkpDH;}9}elNZDUwFq}<$> zz^1k<5Y{zTN%q;r+wa?`C|#KJQx?o!80@aLDT)zHKO?kMRGz!0GkBqj?PMUIbIvF+ zI?XAdF`-<;;9e!mx8;yf%}`=40^VZST28?@N!Zq<$Zkt{PpKCwSZmY2L9Z@@ewG-} zC=-zb8c7LhJ8&G1l^yUJv*C@U;T(i@-CHg#FD81?b(eH%h30_fQ{+9Jg03h_{tAoS z#-{Xrxkdep)aJ0gd!50+IVU}-Xs_s#L5EK^yJm_oUl1Le2dqB$f#EabL+9_SUJgw& zOS{G2gf$>+?d%Am8D8dp3!(vd0G7Wj8(Pzw4otmiGK+|n=&HSX{vBJhsQPJXNOc+N z96Z2;IB@X**m^~5qtnUhO|5=~8Y}j(V+NvF59i4qQ*SMZwf3@Vlqg=)*Isx+wAa&d zkv6hDxOgP3j(JMlIX2h>phY6q$7nJV>%G%y&o%W*D1*1Y_JGi3chnf#fOU7+X3M94 zg+m&2$H^N|9V(w=?UY=4QUDJ1_vt;p<*|#33L^M0#2o%LcP?12U+r}~K|v9ciia&U zgO;X(huup3^Swc2(gFqlWdJfe21@IW+}z0+DJx2dV_0q9niA0K=W z@MUhrOH`oj_6#%Q<7FCWQYT_8O~)Ca_6OCrG43-{PmZ~s76VaDp3Gc-NJtNi;vo-&bg;}RA);txRvH_3Y|=Jhs%Jm{0^O)_3()# ziNW%?h2-OHs9l^K^D|5N=PwRT;l|Sy>6S~i!1%a&I5w{`L>E06){qwD+xA0HZ}Ck9%Z+-)n-Gyr|i3%JM5mDN5re$^j2mkKSJWF#F$E9b;yiZ* zX;0ERfB~`_H~oNq4cfbNN~5y3hvVdS?QwgaO%yrCO9%jWV6i*?^i254P?(+&=fj1= z8Oe{88F^0&%McC z?Z~Di%nN9`WLTK=Qi$2!yNkHJly|4mbt=+3n4?yjPYLI9fu5qVtPOlg8~ho8KBk~< z+wO{UF}>+j#V{=`28yY~Jp8Sj8?1qN^Ek&R2jyMH>y5i0<9UeQs7VlnGZ&D!g5Te# zaT426+wEh6VI5RVdVTh*|E&?JCRk!JZ{(m8#8S-sM;nn_O!p`MhM4~1GZF4_dC@(&)I=BO95*)Oax_OShfa4935Y3 zyRNb%DQI5p!O2jM5I-%#lSgNI=4L1TZI(po9`46&wd$^f%Xoa@D*WRM_s4z(WC8{Q zY|Q>utUA!vaV+G)@<=oIy0KSGT+lr5b;1QlTgkNoM@(l4Mr@Gvr7VWn%^o%M0idKB zXQMcQ^WZh*M>kh9v!#{W?)h$b_8y+h^-SAyIeNlZtIE$KPQ=>|@dB2f2^V@Mk9|dG zC|_0LJ|{yDAVea|JATrTd>ky(i_i;4MuCmQvx*Jl)Oa^@O{xt24{KLH9#iX|A$#8a3U%ZA=$f!WxK4JPBR z*ePZ)kZykIdiku!gSLm@yBAvm`ulH?@o(5D^mFwai_JKw-&-*Cj%dL<@h%*=E^p4&dl zXz0&}GV0`!B$A%f>Qi9*Gu9g7N>~F!Wtif}y+qY^+P~)UsHI!FU3y{lNPcM1|Kd&Z zw%!kB@^u&Oo^qJ)_(Oo;Zm;Efw_FeP%tweuI$kx*2VcY<+|qsz(S*?mt7UrsD=SWV zO?J5)$Bu=vE6t3_e6;Z;isO&Ut<*|fBr~Y#?q2PX@%XRy62jwf#`&^0ddCONBbK(7 zqFGe0_w?H{uwK7HQfm{9|H>6eZ-UrNoE*ZBHz5%(!EK8?FOFY={#k&c0(Lqw6}6o} zEL|ihkS1yKRiQkhcWL^-<_I|{%LXYt+W~9DXi@Jn`-CJ+2pOj)@6UO5uCS&{1Z_K5tAu;QeX%}hRY zpdOJn>;$rR9GhuJOAj=+sMyXT1kvBgp5Ee=1L%T?I-|mk)$<|2v~yO1X5BfXJ2S+p z)bMT0e)>}Ofeb@OMW*j5 z{r5NBbEJLLW{9{Xm?|q}l5(F--1@vShaWH04>jf-ny6htX z{lWrF1M@0dsgDN-%+yj~_0uS97~f^~(1AikqJ8eCtr3m)1ilbSqltwz z{ZWEkHgxdEEs@h=`=&YtAQWD}vNa}9t2InhU4e-1nl|4*p@J7BzS@f$(e}Oet&=-S z7`hTG9lNNH(^2Wt#F(d;a5tNTIt&Kyd5}~V4s7aZY4e=y(1t%Vrxwl;MbEoS(2Vs_ z1!Q(Ju7651wz?(RBE+)i&HhFcnVmRpz@9F`U2NsPV@^}U)VtC3Jcs4p^OaZ^TJJj^ z3J$nb+LF*dp2#O#cDqltBvF;!>@YEUKDw4CH((|(A&|1;UgU`S?JF^fw_On-Pzjwts-jE z-RuD6=Bk}nP2*BRgWQJ&YU|R{lufr)&V$nt?s}cdvJ~$M+*sRhJS-2F#C(ZawoEnK zo61`n3Vf{-K56m*A&@)mS*%o3b8YN$^ow@WR@kRR^9MUqwMv%raecvQm}Q32_@S0n z6XArsElH_EgiDhLxg!2|@=)$K`z?-Tdo{HlWik8??d2pKRY2~|uFo`%E{OnLi5mYa z#kKYTsczbYZ--_hMAzYUjY?GvH{)D48d;0u+woUR7oltsdk3_{w~1RVJV_xTWvN3N z3R{%*aHi$li0%PU(XUO4mv4IOSRJ#&Xop`r-p_^JB`-Ox&rA>BnT)(gV5wVu1^n`L z^V3F|)wC2}wvqeu>$Vm?dO+IpONg6bOU=H~#<^hFz|o>qEHWrpxMO4|h zO;EkjY{2^o&&SVQcm%tX$^z`CP*4^$f9w+eXrwtpPp}iCK|%dEeso$?%^}uCHiiHz z5Ht9XDU+>@S&*Wpuj<)!a<|J$08%drz66ANkmFZM!-!&Kt)AO#lXS9%ELiV z$->Oa$wDW{LdnO@$j!}7$Rt99sbusJxJ<7@w#NyQng^ln$SS8t)r* zL1}G4c@se;6A5lQQEoOdK6WWV4p~7yMIlCM5ngRcE<-s!fQqn$g!pSYElFiv6Q#nJ3uA!-hsgt3Sn2DN{k){klUCdfr!a`fxR96M0FKuq5 z12U9%G}SOOHGOC8Xlm;Uw0E?2^ssUA1Y5pyvbS_}bX2wQ(zf!_vkNc=`4~F{zjFx% zI(k{S1Owb7AnpNH-ci~ktP=tt>7mYfQ62#Sfxe+}0TIb@VLqubVe#<^ zzLDu6G3jB+#UZJc(J8qf(rZ3sHO6Na$K^NV$NCneMpq{Lm*yljWQH{5#bjq^W#$$X z=Vp`?W)~F}<`z{HS2olXXE&8)RaX=@S7bF-<~P*WM;CV_l(r{VbmiA~<+Y60G8Ky=X`bz>oa?Qd>u+2hYFzo+($mx1-apniG}=EhF*(>V zJ=#AxIoUnEJ-x6xw0tnSayY-dHn+C7xN|VQb-8eSw>JJ|b+T_`rhj*~b9c6Pd2W1l zVR~o@G0{XKZck~%**xNo_mfV#{!g8+Y@CsGrG|^WWu;VLPq}5a~If0_$1==WYNI&Gh zN5GX+h4slZYMZ4KjR}86gr`6%NiG)%<3N>LO-SaJU^_Fl@HRzhxj6|3C->%of7jfB zYsJwOxYV-Hul9cbkPd;RJNb`62>Nnse>nxdnhP)!XQ?aORd3xtZH)Lvx_QY7ti-Jm zv-*S%y172MGkUBrHo$LQ))eS%#OTcn!jb<41STvdpMrd;U(MYw3u~|@qjDOR(5glAmjfnu2r;gB5abivD7g!=zFKR z*>k0FnZR>l>AKmdq%`AN^=4s;4-JJBQm(=SXh~~(**Y;?mKw~FM|&X|HwqVDD_JyZ zUY#{StZS{JFzJu#E7lWMW3tB9n;O|w2JTKW#<^KF)Dn{fX=xT#kKU;#!wRof6L07;K$5 z!%qh&Qxa9pz@Hq&nU!!obsG(9wo3fP7MjFZ&73WinrRYCu1h!P3c<~w@G~6=bw})@ z=Qt8ejyZFKO>$UNA(?4~ms42E28CgR7|z-uJ3~Y|NYdaF4}YEoK-sMkq!yP`+)AT( zBb7L(fr4J5kDG71$h`irq|6P1N<4gHvXOJJn->pvwPFpXqp1f z8WijdIH2%vnX1_I&p*H%Q{KBwSVbVtl*5`Rt;0TxML}`#bNZ(Ly?~6@D2%D*o=$QY zTih6T=oBA({hGFj9yJ(DTrvXR~37~&xeI@LW{mw|(W`wkZjdA-;25aHH|Xzy{` z-%=CaNRI_9d7Fbq*_~{)sBre(O$q=BZZJA?e+a-z40q9EbQ|?6XMUZb$U{i?JWev% z^1e5`Fmt-E@u-y}_~w4a_FMicwu3WgQMAieBFVmoKyXR%&Am+Y)t%*BVq8^9&R+1! z>2W;XMnGSetmEl)WK({{$+T1_fTQu|K8tM-I*U)FrSw~`qNOTt&XHs3_kzX5O}mEG ztA6gsCsErR5R7Sko^bUtKd)P%}#mUloYt_ z+V3>)`iJ#aoq{l3_?)d+_1U+AhZ*^^NT0`J)1=l;ubiOl7C}@#xlwoBtlc^iLCPCW z26dH$7N&O^_?Wnc*u^hQos2qsU#P8npV=(GJhL$10CfhiGtY9*Ai4@Zh9z}Noz#2 z$+haJv`~PP@fKh!7ukYWE%o(W&$NG!v zI3w7^EC4HGO~GZ@*7K#~LDGb8#ot^#TZMQ|4J&tAXesSk1SvVkHY4uWRd~Pi&YYa0 zACla?DB)g0+X!CMow~Sp3BDEj>RliF3D8xq=8#BWWOIA?mZhHFDB-G~O+ir0e@l++ zscBG{itpDOV%I_VMt5sv&K+Ycxy+t5i;bWO34PzAx`sSW7Cpj!i=$~agR>+JvR*av zlM4#QN&mhVjh)l7cJ&vo@Va|_mm4)9(^4KIFPsevoh-VfqG&UQJjxY1^f3$EI<-%zl|O%@0htIdHna7Otscc6>cLtCJgaAYAUb=tO7uJ#77Y zc8_vcTh+kz(;LeTySmXsUe|Knd?6s`wpyRrR-$O8)qM7_m2dzTXK>dh$UKvmj3$|> z!&vaVc@-QmBU@<$7~qjU+rw+I z$2*>!W^fb&ado#EUMApEZBW=lzx9$Q%kZZM_GiG=&X`8Gd#?0c~N+v zzk`YAEwEG>7aWrIp~mq}Ko@6T4`*JDsZSwMr6y7%(cnbU zGqJ8o_Dt~mQ{(L6=Xwk<7pPpq0HS#5i^NSWqd}KW-IIWbL8d$HPF=fVeomQl;+?l= zDnW-$#S|(I7}m(bsS}#|#QGy@EoDN$KyQ@}^Y1{yf=eRiJ`UziLboLYj%EkT{knSKG>+SzEZS zc|$D1*gRWgLZUl2&4pUG9t5(mB%EhT?Kh$(bgHP=-FDX-R#&nONUT$t)%)XcvYaLE zLWU9@4ypZyTJw(asKXgow(OBqDIjOkA(8HHwP|$Ew2Qdk%~?r3K8a&nFp}Y0^wpZJ z8ai}K=2=C~qO^j%5+9P5s%o8N9co9MVtTd8BEsEtp;6sgz@6 z5YEwRzhURMRHY+6D$7Us7Ao`w5tQD(QVx4Vcw@j&N^!Z z4WoqN4F-1a_?(^#?nVk~slHn{g-|*kMXxLmV~T6Y<$PnSKbqV7`b;0Qvr8_zISm@;qENjWJC)Fu(dEy+Vz98soM)E^@6Z*js+vAhcSo+6WoO6LO-ZkZ zw=Ui(t8s0_06|91jSIp~6Ob~KE=Cb_O@*%HE1SENC`{(-=>r22vQ>>-au zSV3+Td6RIh@d*9@K|I>~Kic>e@#x`C$9~4~ zi&y`Ec#P&J=w}@NE#en5e~RN5uYR%d3*uKZKjZjs5xzTc3qdNPOqy6^|#PXQj4)!p3X-f2TV=u^f-~t`YX{no8YvFh)K1k20L3G+Q;URe8 zTS?GSDMdb+uiHEH4C>Hc>8OqIzG_!R7^=-8vlAQaM*ijoNfm|78H4tU*EHG~%c{@| zqY!Kkf@jSB@ag5}s*Qu>a#?||Ga~q}9N!gW)B9hN?}NLuxSsE;<2sfr&#}u zvR^sXzt{9@vh)5%)1Nukzt{6?l9v8P&ri*k2vJe*78#xs&$?@^@w0pZ2648^6CR+Ww*Ck3{`>_4u(c f|CAK^-z?LLGH{P|V<;%}$3K(DMF)fN$Jze__;