From e0f811d2b8dd0d73c474d51af24f8587fd027395 Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 3 Nov 2026 01:47:42 +0100 Subject: [PATCH 1/8] =?UTF-8?q?Plan=20:=20appliquer=20la=20charte=20graphi?= =?UTF-8?q?que=20=C3=A0=20l'application?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- docs/feuille-de-route.md | 1 + docs/plans/2026-11-03-charte-ui.md | 72 ++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 docs/plans/2026-11-03-charte-ui.md diff --git a/docs/feuille-de-route.md b/docs/feuille-de-route.md index b5a8b6e..d31c81a 100644 --- a/docs/feuille-de-route.md +++ b/docs/feuille-de-route.md @@ -21,6 +21,7 @@ garde-fous d'architecture (0d.1), déploiement sur https://ustagammon.sans.pub. | Sous-étape | Contenu | État | Plan | | --- | --- | --- | --- | | 0d.2 | Plateau minimal jouable (PWA hors ligne), publié ; reste la vérification avec Pierre sur le Fairphone 4 (`docs/guide-test-etape-0.md`, section « Étape 0d ») | 🔄 | | +| 0d.2+ | Appliquer la charte graphique à l'application (agent designer UI) : demande de Pierre | 🔄 | `plans/2026-11-03-charte-ui.md` | **Critère de fin** : une partie complète jouée sur le Fairphone 4, moins de 2 s par coup de l'IA en niveau standard, tous les tests au vert. diff --git a/docs/plans/2026-11-03-charte-ui.md b/docs/plans/2026-11-03-charte-ui.md new file mode 100644 index 0000000..f272c19 --- /dev/null +++ b/docs/plans/2026-11-03-charte-ui.md @@ -0,0 +1,72 @@ +# Appliquer la charte graphique à l'application + +- **Date** : 2026-11-03 +- **Étape** : 0d (finition demandée par Pierre) +- **Statut** : en cours +- **Exécutant** : sous-agent general-purpose dans le rôle d'un designer UI, dans un worktree isolé + +## Objectif + +L'application publiée (https://ustagammon.sans.pub) adopte l'identité +d'Ustagammon (ADR 0010, `docs/identite/`) et gagne en qualité d'interface : +lisible, chaleureuse, agréable au toucher, dans les deux thèmes et les deux +orientations. Les choix d'identité sont déjà faits par Pierre : il s'agit de +les appliquer fidèlement et de soigner l'ergonomie, pas de les réinventer. + +## Consignes + +1. **Appliquer la charte** en suivant `docs/identite/charte/README.md` (section + « Appliquer la charte à `web/` ») : couleurs des deux thèmes depuis + `tokens.json`, police Alegreya Sans embarquée (OFL, licence jointe, ajoutée + au cache du service worker), composants de `bundle.css` (boutons, focus, + zone de consigne, filet des pions), logo horizontal dans la barre haute, + icônes et favicon de `docs/identite/logo/`, `theme-color` du manifeste. + Lire aussi `guide-de-marque.md` (ton, formes, mouvement). +2. **Passe de designer UI** sur les écrans existants (plateau, consignes et + boutons, fin de partie, aide, thème sombre, paysage) : + - hiérarchie visuelle claire : la consigne du moment ressort, l'information + secondaire (compte de points, dernier coup) reste discrète ; + - cibles tactiles d'au moins 44 à 48 px, espacements réguliers, rien qui + déborde en 360 px de large ni en paysage ; + - contrastes conformes aux tokens (déjà vérifiés par la charte) ; anneau de + focus visible au clavier ; + - page d'aide agréable à lire (titres, glossaire en liste de définitions) ; + - respecter `prefers-reduced-motion`. + Lister dans le rapport chaque amélioration et sa raison. +3. **Périmètre, pour éviter les conflits** : un autre agent ajoute en parallèle + l'animation et les traces du coup de l'ordinateur (`board-view.ts`, + `app.ts`, nouvelles classes CSS de traces). Ne modifie pas la géométrie ni + la logique de `board-view.ts` et `app.ts` ; agis par le CSS, les variables, + `index.html`, `texts.ts` (sans changer le sens des textes) et les fichiers + statiques. Si une amélioration demande de toucher au dessin du plateau, + décris-la dans le rapport au lieu de la faire. Prévois les couleurs des + traces dans les variables (`--last-move` en laiton selon les tokens). +4. **Tests** : `make lint`, `make test` (dont `tests/test_site.sh`, à mettre à + jour pour la police, les icônes et le service worker) et `make test-browser` + verts ; captures d'écran avant et après (portrait clair, portrait sombre, + paysage, aide, fin de partie) dans le dossier de travail temporaire. +5. `CREDITS.md` : Alegreya Sans (OFL) et le logo (CC BY-SA 4.0). + +Contraintes : +- `CLAUDE.md`, ADR 0007 à 0010 : simplicité, pas de framework CSS, identifiants + en anglais, commentaires et textes en français ; +- aucune modification de l'identité elle-même (couleurs, logo, police) : en cas + de doute ou de manque dans la charte, le signaler dans le rapport ; +- ne pas publier, ne pas pousser, ne pas créer de merge request ; +- commits petits, en français, avec la ligne + `Co-Authored-By: Claude Opus 5.5 `. + +Rapport attendu : ce qui a été appliqué, les améliorations d'interface et leurs +raisons, les captures avant et après (chemins), ce qui demande de toucher au +plateau, les écarts à la charte, le résultat des tests. + +## Critères de réussite + +- L'application suit la charte dans les deux thèmes (couleurs, police, logo, + icônes, composants), hors ligne compris. +- Rien ne déborde en 360 × 740, 412 × 915, 915 × 412 et 740 × 360. +- `make lint`, `make test` et `make test-browser` passent. + +## Résultat + +À remplir à la clôture. -- 2.54.0 From f1c52941e94a01f8c2dcc38be48240695e297cef Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 3 Nov 2026 01:58:16 +0100 Subject: [PATCH 2/8] =?UTF-8?q?Police=20Alegreya=20Sans=20embarqu=C3=A9e?= =?UTF-8?q?=20(woff2,=20sous-ensemble=20latin)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- CREDITS.md | 9 ++- docs/identite/README.md | 18 +++++ web/fonts/AlegreyaSans-Bold.woff2 | Bin 0 -> 28604 bytes web/fonts/AlegreyaSans-ExtraBold.woff2 | Bin 0 -> 28580 bytes web/fonts/AlegreyaSans-Italic.woff2 | Bin 0 -> 29400 bytes web/fonts/AlegreyaSans-Medium.woff2 | Bin 0 -> 28544 bytes web/fonts/AlegreyaSans-Regular.woff2 | Bin 0 -> 28584 bytes web/fonts/OFL.txt | 93 +++++++++++++++++++++++++ 8 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 web/fonts/AlegreyaSans-Bold.woff2 create mode 100644 web/fonts/AlegreyaSans-ExtraBold.woff2 create mode 100644 web/fonts/AlegreyaSans-Italic.woff2 create mode 100644 web/fonts/AlegreyaSans-Medium.woff2 create mode 100644 web/fonts/AlegreyaSans-Regular.woff2 create mode 100644 web/fonts/OFL.txt diff --git a/CREDITS.md b/CREDITS.md index cba0206..9a3b244 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -27,8 +27,15 @@ Les contenus pédagogiques (leçons, textes) sont sous licence CC BY-SA 4.0. (Juan Pablo del Peral, Huerta Tipográfica), licence SIL Open Font License 1.1 — https://github.com/google/fonts/tree/main/ofl/alegreyasans Ses tracés (graisse Bold) composent le logotype, dans `docs/identite/logo/`. + Cinq graisses (Regular, Italic, Medium, Bold, ExtraBold) sont embarquées + dans l'application (`web/fonts/`, avec la licence `OFL.txt`), réduites aux + caractères latins et converties en woff2 par fontTools (143 Ko en tout). +- **Logo et icônes d'Ustagammon** (`docs/identite/logo/`), licence + CC BY-SA 4.0 ; publiés dans `icons/` du site (favicon, icônes de la PWA, + logo de la barre haute). - **fontTools** (MIT), utilisé par `docs/identite/generer-logo.py` pour - convertir le texte du logotype en tracés. + convertir le texte du logotype en tracés, et pour produire les fichiers + woff2 de la police ; avec **Brotli** (MIT), qui les compresse. ## Outils de développement diff --git a/docs/identite/README.md b/docs/identite/README.md index 06f6fe3..377f704 100644 --- a/docs/identite/README.md +++ b/docs/identite/README.md @@ -47,6 +47,24 @@ python3 -I docs/identite/generer-logo.py build/police/AlegreyaSans-Bold.ttf docs Les PNG sont des rendus des SVG par Chrome sans interface (`google-chrome --headless --screenshot`), à la taille indiquée dans leur nom. +## Police de l'application + +`web/fonts/` contient Alegreya Sans en cinq graisses, réduite aux caractères +latins (français compris) et convertie en woff2, soit 143 Ko au lieu de +1,3 Mo en TTF. Pour la refaire, depuis les TTF de +https://github.com/google/fonts/tree/main/ofl/alegreyasans (Python 3, +fontTools et brotli, par exemple dans l'image `emscripten/emsdk`) : + +```sh +pip install fonttools brotli +for f in Regular Italic Medium Bold ExtraBold; do + python3 -m fontTools.subset AlegreyaSans-$f.ttf \ + --output-file=web/fonts/AlegreyaSans-$f.woff2 --flavor=woff2 \ + --unicodes="U+0020-007E,U+00A0-00FF,U+0152-0153,U+0178,U+02BC,U+02C6,U+02DC,U+2009,U+2011,U+2013-2014,U+2018-201E,U+2022,U+2026,U+202F,U+2039-203A,U+20AC,U+2192,U+2212" \ + --layout-features='*' --name-IDs='*' --name-languages='*' +done +``` + ## Charte graphique La charte complète (couleurs des deux thèmes, typographie, composants) est dans diff --git a/web/fonts/AlegreyaSans-Bold.woff2 b/web/fonts/AlegreyaSans-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..dfae42eb76a2b98af16eeae1a1df0105b3ffa985 GIT binary patch literal 28604 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 literal 0 HcmV?d00001 diff --git a/web/fonts/AlegreyaSans-Medium.woff2 b/web/fonts/AlegreyaSans-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2cd3dac2d0717b97d4d7ce13f80d968c6a06dd5e GIT binary patch literal 28544 zcmV)CK*GOwPew8T0RR910B?W*5dZ)H0SjyZ0B;-s0s#g900000000000000000000 z0000Qfo>b64jis}24Db$JP3j$37TyY2nvGtJc7aj0X7081CKZhhh6{#AO(s*2OtcA zYa6KR2iTk%t8;g&DhOPl_DFm!|N6JREQGG`6AvtGgaCv<7%ZTh=!f0^ek!}>C2UPE zi~m1QSp1)tQ_4#*^W!~wJ;bNQ^WJxOudo%CO@sl1_lo%zfsM-;N!H2B^H1a8JNL~O zypS4%wi}742qs%I#Lw;T?!}tHSOa4lwNWh*?HG|FWj0~bMj@dMhy@}xN*Vp-GZSsh z27>|GW_QF9Moq;;8!(_1MahsjXagxT!02t(B3*@x{@V7jD);++RBs=P-@fSo;U3zY z`_pJO3Ihz1EwClbGEB=PpcRcC)yp2-&i#s_ng$ZAAR&kl_tRu``M+Zl zZmw#IB$hZLVoVpC6SBf?Y|)4^E^m7GuT$^8cKX+Dk^vj@*Jf4=8pPb`oS z)+lyfsAx(XpZK3P(+*7! zsOBj@=#@7>2OC=QAxJ^VRMaVIb=A`zg939la?*~4q9cHbvFWK@Dh3oW+iQPss#W@4 ze>4G*np*Zyvqz22h@)j4wU#=Yf*5;Vd)^1hRdxUW8|}~p2v8CmO$!XQBsfL{I6DNm zhA`9sAf=DYDvu*a$)lP;V|M|4`C9SB^g(IF|TT$S^NQ>o8%VK)TzIMhXn0WJm zTeTLaSs+>95oGIMT-l|9YBJMjij>Bcx$oQge%8oY;(N@aWiVN-PiKVA7-2*%Yeeck zKKmH1e_jHJV4!UUoH0T~^$PnnEVbDvjL2tbSee?)>gq!E#n~N@hiX6o>nKomJJ`&CrB-b-i+Z`@8tVOx^)#WE$uYmT)j%~t z>%&t-E|f)q86~Ad%Y0yJ?syh&X|yi{rspr)*QV^b+~K z?5c)2!yd+Z$UJy9P?5x3yUcgmm|Jr04iME6ch2 z1%n7v$ZY^ai|6iqPPZd&yXt{H3|R}IWg952ddjX!Jw9i6KYVGFURRIZiH;7d?6PCd zmwdB^+VIkfnJTIUTFBF#)EuI05NlUO;o9r8fN8L~LH*AdIGWjB>Dzo)^ct1c8B*Ti zz;;?+>#ba&iOT8Vb;H3h>r)HFJ~FUpKO5aKEU9&7nLXtu!AxG%#vd773w!iizz%Ad zk%6k_ujoRgfO)JKvfR7Q-EOjw|?WC>%%3Y`rbG`4Ip*s;T8&z>#^4pp}Nl(A*4$fnXY(%c60Qmixi>V6L`@p3w0$IZD%|OSjOvt7-PNT&LUXyl%(- zgn%S_n$%T&i{8Mar*uJ`L7goj0U46DfM4`FOD(KeHyT6q7@)!62qX#ty=f#|9IE(r zF34#TRB3c;$m%;s)_sDbF4=2tUZuoi-yLZrEbr+=nZZ3`dm=gRcD`Z7Sye`?KXa; zSF@m!e00Jn_^w4)t#Tmii-hQpiV_no*n)EwDbiF&p!9_RpjNpJI-ak2k{6&K#}y>QKFIkT=(QylA>xxA)}(dYujhcv-Kn!;0Xt z-#Ga&>Z)7s7iS+?FMQRJ3FHx!FPmDHkK91U|BLGe*RyxCh1dCwT0fc*LJuOzo}DLl3iVgf`oGZD_~(hrb!kun6^@^nvI5)Uc0UH9u)C7 z7F`?ziVu=1>(7rsKoY&<4E^97yu|n)3;#e5{1dqjKWUde{;%*qIJD7u*2s&_?}mjo z>LC~+L}UntUio6)j`LrV|L)48 zHK+1jchlF^;Dh})+xZx@?ZV_Zd4re@G;8g@ZZl%km{R3xLWs7&gbgKZC1Dd22njSQ z2w_235DbDtSP<5|$f5`&3Mv{plq_@N(59ViTPDYl$+04Bx;UwALTozsGInP&jfahm z4MJED76gOf5Eg`$$Z`lI3M$$rdTX#HJGDl_+B0j!f+k6VrKgdAk@dYFs-Ltlr7bA0 zPNY7ma(gaILS74Qh_=P=TORqZ*CGKa_0QbR=CY3! zH6QR)26goI`aq;j82#JX4(PvN)Y~sG8#w(I`MbVMmmkf!0$%HGC zbwz4jk?hN=y|iRTZg)!$aK^*v_5c^Azjq6`=AGK!3f%V3bbEj|S_%Sg;G<;e?^>qz zwgL}Y+C446(@O&g5Qv16SVAD_B*&oqeW(khP5a6RIn%nlZ6I&@_H-oOjctBV)!pjp z0QKG7G&*Q8i2>G0Ot9%-7TEK>w0z(Qbi}4+7uvH^BrJJA>Jaw+gzG7N&Dzqa02xl zXqL1xZ|^)}dOlg(;#=fRT~Z$5-X#3b5v=(NEG8*Q@L z0s{sO88%^=M>@e%};VO)oYNY ziP8iuQjSh(q8=$%pOojml<&d$E=WpOVKwTSotLk9HE3!<-TGQwP_UAUj8)nSW%DMf zsxtSIN*B{t4YSP2VKXkuPAv{P;-v0L%s&?lxZ|lezWEmtYC%2;OU}H6FmkBZpiPef zV^*rML4%!I9CtZG`A`6joAI0%GRNxXU(31{+{mU@u{GPYhV5L-4(`ZKuDj0H)f%Wf z^{}4ToBC8g>Q6%$71P4_kABEAjgTe*kQRZEPC<|!!H_;7kmt@r?hA!H5C%8wnZ{0r zd0|hd!oAdFU8lpn(qesGVP0$POqe&?IveJ#j=EvqIZ_W&wp{OZ+E6cCp%2c~2lG*P z{cxZ3*w{I^&-!fYJj@sUU4Z#one@$d>-($&e@Mtr3Hjw9BOzf%jm?ep+fd6N57hqi z&R-89|2##B9bM6+%F&=%)Y#*SA;Uw53hhzjfG3t*1qM_)95s&k;wV&NLUSEa<3u2y z5+4g%I1)9^gc7I-L_$lQQR6~nJT;*xXys_sxDr#*5Q%2(Sk#Q8Cy|y|3>(Lz#*IET z9f?@BPK096n2H1d6+;l9NFjhCg8>vd9H1B>0E#gZpqQWl6jM}yLW5?Z(4is}22_T^ zgyx~JphYNJ&@vP@vZ*23Y_FhgtxIfNX$5 zLhVo}P$v{BBzZP10&r_=k*563B&c7j8*5xCRThMnoncfz5QrurV%cu*?A#q7Ry!wZxeU zF~pNW8IXdaE{VV+S=>ZFJHy|Ad{%oAig!qAWO0G$il+(3S~6^1ggWtdg$yRyuA_0M z3|`=^!KJ2fZotkLZkGJBKRwlFSE$x#*9_Y2)OEB`Cr`b**21A_$R2sOnz$!Nq8JMRNj~ z$uv6CQ{E~Eipj|;i zM2J}&`^FqLM!Ylll5>5uF2|bxSK8XYHF472-o=upXietx$eA)r^Qptg8d>QG1NQYH z;ab6uumLfQmoX1)C!_DLP^n6_HG6b=5H6V(MM}&iPjh)eJXInpJQ^M%bJJo{rYz}2 z2q}6K6B$`%#|$T<)1}dQZ2GV4x$+VqObnG&_dK3zHZFplHv^vmXBjs*@{uoTq3)L< zL%v8^Ih3lds~pPK9uFP5WXrul<4L`ivmAuyfM`9ju>1v zMv9ktSock_kmOyA%MXA`G>i>QO*QqfUdmD@6==Z8=NA~wn4fIRwYcs_ykwi!=3bG= zahGAp@|kS<{y3G1umOYoFgx=tfQ25*r{LBYz$w9j?HGFES;lvmKboC7Sj{ScpoaT8h_-jU|xV(EElK6 z)pgO=e{{Co1keT33#B(|;;IdK>YX0}a2Vv0Pz2Kub}C+BPi5z$>-t@Hr(_C9W`}3? zQi&(O<`vecv)e((^}6a7n6QY1!TcWIu1%L?s=`O!WV=={lE_HH{Eig-?AvnYBTRyH z`DR)S`h?;W*eh=~1PdF#*7?n5smXdaJ1V8w?4ZQpW|0YwZML$&_034Q#_8R^=%iCl>vG0f-RVhh`qH0sIiCw@cUXrbIvsV)aVLTV?ySVXpMF?I zIBsU_Eu>_v%%q(AQUq&1?QmEI(&~6Rx=%-_X>1QofsmN#K}k22u#S+e zl7r=%QRh|wLYXs5sGxl zp8b=eOtLDQYmVcY=lqktI!aD%R6dI{F5Vm);nK}WN=8mWNkvUVOUJJHLdgNFOc#7q z_V~7%>y~(F{JEvaQ{%;g-w;5ZH+8^H=~1(P=5YfI^5Prpg7Oa9{>?K7bd!GOVA6B# z;)h(N0RhN!wKQN3Y7w@v2{157cqx7_FCm4avN2APvBV4R+|Jj~9Gdi-R4kQ9s_)NH=e1d0&uk|&nrOFOw%hH$T*-@E^{f>R zDs?Tday|RcZg1+>IplIOe3O`-w^9lRm&QmK9QA_?gXwG@y`BE`kC|&Rrew;D1x3x7 zbLGUD3oq7+MT-zAR+JcV#!HnXS&BRp{MVmg@K6c-*8vV71exnUJa?SF-DYm*R{weO(n0eu8Lj)m-$(V? zeQ4d$R7X(E0{5IpvK1m4%uiM!q-(t6>Lxe(zku2J+GA%WWkcApvc~^_4Z_Bjp{7F4 z(advasI70XzPPU&!ot^Y?{CHt`XId8#sTY>pzp4e`Tn$=Dz=@UBfeT%9OhB)?k88opr8ri$r7$95TjBQ z{7ip6Txz`uY4DPchRJTz;E2lHMhFjfw&0Ky(SQVD>Vvd)ED#!emt@FMT9@lx(b9yX zMPr)ip+qOuGpyvM4?W~NJ4C9`1!peAARhZ=if-PM_^$OkD(pEcPCGE(w`3}Va2XVO zSej&&b%5;)jLzbqfFL7*c$l*>+8)w{O|XQx<0VZlNi>uxOCt6T#C`pJG>#p6j?|O` zJz~HYj$l}zKFw2qhs%RH=nK z@wf_BE75MCX_Cx@mx2E(hlW&WbwEPa8VThlx9BcITkr`Lxo}J+sF`IFE=e@TT6nCh zQ;$~mT))2J0cE(9#-u4l5kM%E_)HjMagxzrKM=wpC}6*R1(VGRxIXxKo*CK|TTu#J}L8x+0@gYlk*MB`&U^=<9^ilc``L9Fw&uikcn(YW+s17T=!~@9wo{u zEt3}};V5~ATqg*%i88VpzelpC1MFBO+sW^;oA)KYI~c|<4Z)!fT?7Y19ZW)0;X=x0 zF%+PPO9-;+Mou$I5)BPVfWPv|-};YARMupXYcH zS_I2ag_Oc{)bZ6&q3Ls6(P2G7AjcyvZCFr3PAxI6jMFW8KvRGrS<^ejp%KoahzSzc z%z_|3c%DV4@zdSfxweOa%y!yAj}!}O?07aPH%D6-yN1~kJ09hQI5DmNadjf@# zt50vbv<)Md1s>TaCUI+&U=REC--uBlQ@v;|d(uJ{ln$Bg+Q|y1{jkg|W1L0gX}gw2 z)kre~o`>z&k99D~^*cG=bZ}WNaxYB+G~o_sp?+0oEUs{UBybu*jyBeU#bP(ctK|aa zKJM0ZdY4W#1_BV)6Gj4vCFv9s0+6gHObN!Pc_Kl=m?1#6fiOov{z3_1fdIt@!V+PY z`C=wi=nks&gf#)wCFu+s0?@1{Yzcz0En7)-n(wN+gG!I=g9elVs^JbQBhHSQWI8b? zEyw5@ciJ;W&zu>a?a)cStai$xjBAgD8;@me0lVW)y~ADv4kE^J_1bvy z*m(BXc=6bHRRP>Y;4Wf3!0X`C zSjtMYoY@fVmB8}YcsakRZ+F(hs#@QmPY6MPX_XeM?L&sdM&L{$i@~Cj%2MvCkQ$0g zm1zDZRZ%SwA!1s2;kNK~I)y+cT@?QagJ$b5rKy@y{8?7e8m}H$V%N%3&6s?hX~#9R zaHG}Cp9QNQteThrPgSVzzbIZ@^U2CIgxr}24aD^5SQh|lQ*WX#smq?Isfbezw>W=Rih_+ z&qkMLt|Wqk`2+SS#lZ-5l(I6px#mlA9st0JKr6vaOeDd#?@*}i44(;Wa$s3ovdD8B z_+Q%qm(*>}Nv^sd&x$(*&g^#o9!tASHlCT?i&`aB3Jf(z(_{3FRdznK1u*r=9sT4BeD^eahhmCC!*cLp=1hVQCpAdgCNN;y`jatsO+A50RzziM z$MvMjg#Wv;qBO?vRg5Jt!lN~PaV^M7ZB#0!JbF@t`qmjVt*T&5m>-`)D7!E1Q(p0? z=Iux3UHU;;c*q&Y7?ETJzT+}kxlO+9U`qEmq=mu5kTAd45>iENK1nuK!&Fdzla>l( z*9@RiWoW&3oh42!jhmp9G}9OCZhAdIQg}yf#43}8%teR1%nuv#hnaw%A!npKAj9ET zr~pl2RU<#kFpOaqG^qKoebpA*wV!r60bLw*f*^^VEqBF~1+GY9c|k@c`p?WoTO~sz z(=2Yq?2#GqMEHY1* zp$-!Bd^$j{9wO+wk-3n-AQ3dq8`HwoF>4Sy%pA+d(~054w-mFp7t#q*;U*Jl4P*hl zMhxo6hH%!XhwFFkdQ2hW8G|cpP;n)6SHGJ<&wMO?w@J;?2Rh8^bE3OMeKu8NLS{^Y zDKzUQJZJ$TzU=b)#>mS0IcpSP4O^EDDs$IN@Nx55?4P;x2Q$Uk1*nR!2LG;mWIFKGjGTytJnQxp?cJ?MN5tW?3au3) zFCfNho!*m59`SvIR4&NcY$VhX?_S=4iK8pJ*t)4Uaym?4{wsikTW4%DG*@J?tq!@* zV9zO;Bb%2f2`vVz>|~x>ak0euax|-Km;^8-#l$K@e+x`VgDe_W}E%LcWb?_T8?|7}@${$45c6cZj%SA$U`!dq(^?)D)lu_n)=UegatT_EW9> zrj`ucH#^RIRn@nbovM{4b(O1CfVITIlN}chX~NssnYYE{dNOyqd*O*C`n6v8!Rm8h zpmEJi$L1NPOy`q82?f-vm?8RG+H>Q_mrv@;p<~^uQBIw%T;ckKtg}o|c`$X$R?Hk~@o}v2LH= zXsz~fVxn-W$)+rF!nrh-B1-$+mKP94>;*3Oa%c*TEj7X>dPQ@G9Nh-qf25A7X~Q5> z6t^ZIC9G_IZqSKin0TFffkLsRNzinXJ_iUCe%-hocGh9bD8guzBDUr$uwY(@bYvkO z?3{vq$CBu4uXq~Lx|zFfF=Cf35D|mAGWh!5kUN!Dg0h2v7>NMYIU+7Nv}dLlEF|o9 zohQ5a$L z7+~JbMF=bK)|Yu>EtA)PUI5(~x08KAfkM&39$=vy5acu8>F`ziiNwKB^9^i*E}Hu} z(OiNB)AfPjw5EbVA_1hdqZz(f2Qk0YGqu%Xp;MPaCsVB23NG?u)O7;26oPPv#1X~z zKsrK`4UH|bC%q1at=(eJk4>9XXtZA{9OIeAGc9s_j^j_^@-`N<@&Gf1rci;6LIc=& zQ@ywUtOIA#q^(EbIqN1FhM9QvqC(4;)qBavY|~4m{oLplHEyB4-ZgB6xXZzPcg6L! zM(VcaT_7{Ha2pKwtUB8&_OatQ{&?=JBE!Qk02!c$PIMQh z*Q0NSF&?smP&@edSV98^^<#YH>5pp%&p-&pm1iE7z{!#;%;lbPi<`N>C~2D|>_UHG ziADyQkOb+!XVzWCX1-&4FiwtrxpLpEPvko%=I#A)L8k;Q()#*{nvbxNBK);RWyv^?ue}!>*wuT0l^vpChS@%l znJ0YaO)&4^>`2JO!yiZFNR50V_%5#jAUM4P&^Z5F<{At}RrQ=vVe)6qy0=tQZj#YY zdOetkcAGT;lK7#lwXtvCZlYz;PnVpYFXpXBECYO#Rs-k}F$i#FT6>9a3;3cH%d{ZL zR&re@J?kgvnIyDC!B#~nFFIN&bsN%CLPz$+oKi6b-ibV7;*X|fj-`b^@`o79_rA1M zqgbp3mvY|Nd(%vcgg)%-G0_tKc*^SLF<-n|ZjJ?)z}s|Ej@ypsRCL&f@B+RRcqhTn zlS8ax_|bdjnFOg^)c+9q1{CeY^F0;_fTsXDt?p;s0j`n+118wEe2%UW*^pqkQo3wS%PMoz`Cz-X9$%z)i$IU=C52LC zbqv0|Rl(C}fMh2JT25<`sl-xpj_I0KvxM8D=14D98Xc9OgJiEJy>x&$(Shwnf|S+X zI9yPr)U4E|E!*U>l3RGywJz2hkyqoBw8UW5Uwh|vuDT~Ufs3O}de&!rLBO{qhpdoj zl7|cUvXdiIQ7pao)feM*1Y9ki8tk9@c4UKaEi=s}5X-Zku+iDG?2yl?TIi%4q3juA za00MaPxj^gZxKVDpeVBNO^(%mS=|$L9A?XGnfr!175^(j$4C#9tECCg8?)K+MSR9% zwG*J%io-tR@|At`W2H-Qb!&JHQwh6@$!;(l*7U`FcVN3r=Wi4E(GM-^ux*v3UO3G! zo*s1UL!-77svX!&=uR2Z-0XpW^I=@v(bN7*)en_Ico<=cD$2)ZZNHlHg-BP62KX^AyCpMRQ4G-&6!+4lEd7%5M&twanU(&D2u zfp5k`#QBtbOhdjGETI1R_Z36C3ZrX9$rFz~Eh%kF)-+1T*Q+tQ-6&V;JJ+oHAjMln zgcqmmM{jzQ_90~ga{9dm8vcvAwO2vt5_IV%sLs`EIdsk2xR;Xz62vt>dU=C2c|N*? zV`+=*0RR&ksL$jcE(q3J=uAZ6_H4^1P^fBbfM0@O;RyCv>L_4QpHAc693;~F{ zXMv4~07ln=XaNBu>J0%EI*wkjL@asJOEzG%od_2INbse`-rqz6`565sH1lGag|e)6 zPk0rf(CZFP3_07pNmvy^fT*v7Ks#dnqCDq@bvtXDnhw=Fo0kwv0sInR*#&F_fEHWw zW0#PZ0w}HlZi9%pg3OmLF^D(m@_z%qc^kTPdatLTG)$Dm5wT6kKo77It@xZ+Z6e9Z zat;ksin_ON+`)Jy_xi$11q+y)zlSQZVqQth#4I+(ZP`gn z6Gpvi^&9U?s~v!`?Pzo3F2*OHmkJ2Pu`)$ZPM zxMq1xOZ|@81J&6kThG99%Yf5m?H!)91f7NArn8+(r!!G^bH3};byjgEt)+9BeU9t! ztGVl-gKV$e^Yg8JOZm`75MigPH_k~eZouf)A;;k>Q^9tG6{G7x zG=f&3a~`l0mHjFx9Mg4GoWa2OE=fpFgrg8#xCJo{d)G|MP2> z=GRxZObz$QqfGe?<3o_ED^*nRmTo2>B+>&GY!EcKYum>AgEA0oYd~E>nt`SQplKFR z;}a_Xa3B#Oo?^TR)`KOkhnJmoTPVqlTCrO5FX5UMHM{B-I~L8v`P4l`E!!G$*=>Ep zqt%hEkWxwt-cFzkQhvvDgK)vYNaylZk7)Hwtq|HX?gtq5;=bLq{S35cFHttLiS zKYZk$M5J#r&fYO(_ajp!G*+p_&kz+>$8Ti%u8Y)Jd93$L^DYc2d`ZP(8mq+Yp$S+W zH7PNK5EvH;L7xN(Z8w^O`%y~`#3fWarx)FT(VokqmIG?oJ2}3fcW?;o0&SqckDLSX zp$7G4pdPg;KLz{ee<3Xcua7rHD%QV)*>@vK8%WtPxx#E5Hdtwdi-%<1PUK;LC4Lb9UiSY+0hAAIui1fiZ&)FQGXzjzt z%Avb=)dRi3FSRMQO7nkKJSNRyTkwSn!Puy23Z%l501keTY>~--w z<>=hN>@0Em*z9nbwcMr3iu+?(I+$vsL1=i~can0EwL9bTF&pO*#R+e3jL^L<)5$C~ zQ&&w>r^*3SKm|4I(KenyEic#edm?1!a$E7`ca2ISrA)$Cu#i`Y5pU*WWgjz}pq^#j z^7yp$wB5^YI%hQw^iDQ1^Pc=jUPeFkVURTPryBE^jlM=$&D7J`bFd%LeVZ&zeAkyX zrwwn=6|u{!6xs@y%UHF7X1GyN(=gQ5)jsZ_KYJNbi`dBy)9zm>aw4&}K0EDg8tCZm zA8O7%1b^^S{wx+~wT5ytC+YnLBI5K9g|Hu|I_Vv3nex>(h1xrs2Ru1{Jx=T6ZwRkv zxnGQU4U%Uxb@C=6>X^u7&X(%(#iOo+2Tc`*va)SY2mqiC)`_G-(k3l~f+!92jI_0P zk9%N;6HctMh^VKO#V>C>hh+I*+(Kx4`?7Kzc)&b2&)$Q$K;HHfm%*D-CzS+{065)Y z^}n@#t1h)j<+E5buAf*dg9 z8YHpxGMS&<#w)U%=E?BQM>F^P$7Ma3iRQ{_nK+fP&w0&(bIB?9#mNt@Ue>rsnM-gG zwG<$C=TP=B2oXzu;t~o~hXq8G{a;)ad0&&)WIQn&(Kvo9VglG2)?otyu6G;exA(V? z2HcN}^~<)^l-SF-C2F0@&IW91MW4EMiaMJ0o* z*R}2Fv9_-wUBN89R3y6dB_C9as>DQDJaQ95FU^$ouq;eVcWofl(c3oSX{W)5%>^Y@ z)@oBm=BXq6tS;_fee1s3+%=_rxMvAHI{c<h0wa5 z%g(E?Yjvy+ObSL=0HU=RXwY=o^0+B5wJJ^YB%vlS-Ul-_=}iv??m{zkHCJmH0eeBiy{Z;Oh^IJdkqW z3ZJd2P}(zB!um0eavb#(bzI85AG8Yb$2-z7%3`-VS_%l@5b~y%ilXCWBX*~(4hwl= zFR;V26+?4oGRB`1C3Wn((^`JJ22Yv4T9Jc+iP56^6UrP2CPs;@8}7Ih)Yy8pcj&eY z&s@JXc2F}s=$!d-{dY}N6FdelS32i^nE#@gAkJFt$-#J1qGh&Srv+lJ9;S+;as6== zS-62tICQxdPg`;Ic3bM7n#C%N6(jY7mkf*tx*Zyf6_WCAlt=zs7Xsikhb3qUu;H|fTI1+H?*VXe@H#H|p?cxkk z{IknRrJa;aI+<9pep7no>H8a|iBxUqdN-@R=FX{CEZt%Qvx|COu~IRC+L5eMedc4= zp|I5{kzAsy}fSV@BdGk%O_yu2^Ws<;mx&gHQ-N3>-p6wL*q*ujE{UP*WEi?5B;S(B5zaWM5Xygixrgg<$m?#GXTh*InHp?(JJSi^W3e zKCgY#kM3&;?SKblMu=)(elR_X74#8C|B()?OWwLiLm&mKJi7NfHCqrba78?Ttr*!P zT9dG&)zpiYAJ2*zuur4lBZ>Pc%~$l-^LH6*f0X+okejfYQ$SQApGV%25jXdMO#^3R z5s6r)A^D~maeY%7fRF8~RBq?f*LC2D37`1v+5O3Kmo!Tnzi$Ht7NyI(Lz4r;V=Ly- zH~d-{>RP_Cs;Jh2B7Fw0AuA7uTkX|ySXDWRp+SQRN^>~)YtcYwAt}xSK5-TXP&j#gG9YydU}*ScjbCz|1! zXuyU7kfIJ$0Qj~mv+tJy!-`Q1p_t1?qtjCzc+1sXozmj2k?QpE)|V)NDiI9`7y8mQ z1B0Xe1p78TIt4Emu-3ek_ z9Ntr)tfXQ!iP~evE%09@`5UCVzZe_e%iI&oe$bJitbT;?JSHew$^UObTk?OYC4tk3 zBZ7jf_pt)9XZfr%z~BD8+i0S7=tPX3`(N zP#BP-E?MX(X;P7y^%o19m3@v|*hJDM*>hxBoF}{OWf_Vm=z8mAvu5|-yB&O~BCPG- zjsM60XN434sK!Y<;B?NHNgcur%)2L%7L4L)qUoFb;KbB|k-6C-yFqPq)v0Z!#O1Rm zTOtuL+7-shgTntA?uRyWZD+lk3mNI0&I18ItOZYE1R&y-Xs{snfK{uuw$=JeL9^RZ zZyr#U0TBLu#-a!x;|C&Mjzv%>xw88@H`9Xdu^4@Sv~9t$-a7fHIJsLKO#1kP;#8Mc zM_DsnVGpa!{y{P4T`P#>{;nlft&!1LRZkAsSrEDe4fzo$1nCY>|I%`NwUd>5K$LXp z>y^woBr-(`Q+PR5QB~n}2kz*knK{?=Qr`HwZ@QmEDHOx`r7ZYqP2$U*0~;(^N(o2e zQK@sZ(f8@DsTX}xlCu^KvUF5eN^##R9M$bzM{p6_m4#dn+TiZ`#(^Ebpfz<61!53_ z-D5CXSq}vuO>f?p-+?rMr&RmA0T*ZnH0W883pT6-Q`HTAxK0}Hf6;_x zlR6LZ{cp5S%ZDk5s=|0eR2b}CtxHPuI#7xEm-q!jNmzYMM4?4)cm2X8fo^)%E4vKh za$>^oUcd^`%RO~+eU(+7cP=Fe4uCo{3UM2usn10RivG(;T?t}=eqOZrgPHC~VfUY@ z#8e8EmX%&>!U`^uDAP7?Slm>?u9~!j?gkVgu3W5_8;oWJ{vq%dMlB9# z?HORY7L?-H@iH8008uW5~JZJ@1 zj7Oal4<@AC1SYgXg&aX>VHEf(@~+zs`ZL8EpAbw~W=V*j;b%*bC^@GRpnS4BC6H~7 zU)CT0=JAR*<0r6Q7DfE@21SsX(+PCNa?0{`C`Qq{NUE#Ulls|JUHCu#j2++LX3JJV z%9bx|CPm8oNWsD;RNS^GiftX*Awn-_2vXAVMdU$J*yaqhJU(V5sPBKoo*9e z0IYC@)0a{BIp^ZkTar^ej7`5bQ525HSj_6rnV>3-UTs!L{I{Dy1uNB`GE3i*W&Y|| z`lYN8wcJZ9HyEsPLN?H!06qav#X!Y)xd)7Q3ex(_fL6cV3uXeq=it9EVjT+=|G8Xb zkn8nkY399ImPHKuAF1glwgwZ*-(Oaz-msn?_xuN2UncK=_z|G)QfcSPijHq|cSS_Y zA|q;!b==4!-*%%Ral#(j?{TrBh=}p}8K-j!A8}Y0t7+DD@mN840+1Gva*9Y2U5o_O ztK%wFh}Cwv9P%Df6mBYEq%DbXcoOQ=POE<@fB343%kWC&_(Q^c6|DJF! ztH#XGBU7@>c_)dYz3Wuf`NxUE=EEU1EF<+Mg>zwiG((HboaH7<$+G{i#|w@v4(L0I zyh!t@R=wT4$%!JynoCX*oaWBZ`iumDkSB@9nC=l)MvSyG49JA!$ysgGrYrUKEU^L@ zS;yLRt(qenQ8I2PxO!W&9N;Zk(=80|IW&2eaf4Hd?^_9?{KfT(8Do-U;WMs)QKV?KmIpx*7@TWF; zIfbfALalZaF-ptK&BZcm5M}b`mQ*S@H1e)2z6BwDCYc+NCR;R4-=-H9snPN5RX2o5 zAaZk}7HvW7YzqS$M1KWp5N?Offj#;b%P##wukst96=-_M!O>_cD=KQ*S#ruz(%e7I ztyEMnN$nrmw1cRKPwOk)D0-UPT%+MoEe;01*4^DWvgO7c7g87DyGWzHL|MSgkIKzs zbGWpU0ZeohL(Sz3J@~Q*s5)2KPQ=FRKl`jZj%tT2MN+**EuztcN71B%uDUjd%Ti~Q za4MuE^pu^Dsr14|nmjcxKjq7r*Yk3JQdY$ADU@+L=6XficNdBsaGh1n3#&HF*wyT7 zURb?;=B{RSjmYn7kTi+Kl7R26S;}8BbU*5D0Kb|vC7p`>lAplSTND*V+-4!{Um15U z4GM(AJ*Y>WCc(PrJhk+yOk!VNu7->XkJ2r9E!h>(Mw`5xY;W9!C0kQvOfK5!huKJ7 zFOY$vw4GL4?vUNsW+NN@+YjAM;bU(#SZ!;x;f{b87#YyKEXDBf-5}0&( z{;7!0gK$c>)1&iigvg{k$eM(xc z_(qv3rbURzrHagmgWK(ywJoi{vY6fk0$GNS5Xjlm^6T_3$jNVhz?E?_mQ$e0%~zY1 z*?Gssi9h^j!@{PQ6eq@YCuW_aec<<13sc-kt5l2-gVik)R`$N?_DU0r_H) zqh7BORBjzGQFt!7Cd=aRe@G#{0Yfjm&~6a_G~uZXe4#wXCjjZAohNCfa=ApH&`9*& zQCA+?gcT=gxR1hO-LjcmEL10 zw9+cys4EX;!ifo*(nn@wwqu!qR-#adlTUwTQ@dnozh|U>ZXhsJc^6h~DBR_(^)0Mk zKY5o|Qp5B6-X8Mg1$+$^jg=He42%+20m44s;{QWDLl18%Y39S8Rh&*i*}@E6sQaD% zf>qDCX=r+NTz^iElJqbh7Rpr&P)7!>_C_&e*B?Pny?|D-vn;SK_Juk8Bo%B}K`qj`5eA++46=&1( zc>-rIT~~0MqUhH!)%FTj?yr8#nwSOz{*%2sQZX=v)WK|k+OAAE$YEgen$Y{d0qNdp z7RXbZUp}~zK-k~2P^34*=UcZroMyL4Tq5ZB?)!K%>ug@$hl=v%PC8@ae&4$=&B0`J zyR%$0dj>X21R59|-XgGm4UlO()8GDy&`9fyueM>Lf3$7ZFRQLFm=28&?>kydq29xY z=&ldDdZj*ddFvY`__wz7)zL`4fS=)%xY(yJP+=(aYPum`{!47-WnTG~D}W;Z?;5K$dx(+YSZSCCOf`G`>Thm}S;D%iQd`m<_d z`q9$3Z&&)_scuV++8k(hJN-Qk0Q2L|)0;>kU&65VikRG{QdTa#Oook%pldmtRo}it z^{rJb_)7W5XBrh@gJ9S6ssHsc-xB>=STiZ;9h@rHTE;1GpxIrR*^9f)?_)QWu=40U zXgo17l+*J83Ez}rIMQbKbp9nVe+LI=DlTE-07kOPp}HXzFxMp z&!-<3Tbjkk1vJm3A?EUNIOs|!Fjc2t1mt|v)5d%KiVkH%!tJ2e75j>M4fIdRlY`0a zIZxh;aooH5eZuPWw?DcRG587j!-t}v$%5#-ov)jdO!_k@+p_Z5Cj+~}!P1;umzVFj zo-%IPedtXbH|=Zi2du@A4(td?!@rJhkmb$Wo)f2hE>3<;oP1x8xWnO(^o*QzVl0s; zArf)VgcYh9)e)E$D)C#Iyc9ZLu6L-p9@||Xg(8}l-u#~|$4%!awt4*0u8bY-R^rCO zN97@RDNkMFD^VS_5EtAU(pDFQkY$lR_tiK0=9}f8B)z$2MXZceDA}r`$Dy4vY(KU~ zSGC~-pI$^e^1?CV=Y;p6Hy)zw~^cTV(Q`5t!ffsS85Gt7NJRJ-D zd|`tgoT#Mi2q*_ulr5HD3UGY7xl(-=SP#^y&zt#pI@U}vsV@tc$x>?$T6G7A-|6Xo z$&-F2E-Mh+&z?T#WkEMZolLo{JAaU#JZtTGvSd7T?H=;;viv}^fmE+mVCEF@=}O#- zhR|?7`cGfc+F0zN&s^!sBamMoh>UO8B1k$XBy1B9?g+`ay}#y&%Q6S)e`XcjnnxPB z^8DodOm&U{*^sa)YWGn-;Z?Ba&S1DPtqnrgl)GE; zZk_!!Z8~r|Qm`)9lB7d&i>LlpWmO>(Jzuebg_f;P=;F#r3sRSahr6)GQ_L+SC-TJj zpK)T|1`A4;n1?^H#!E~nB;{3z*S?f1A(6!SBr%C3A;FV2y-9(^jnb#7y;9T?-n{6$ z^A2O@NMJdKYpRk%xHA>X39)}G0kRUkCAe3BhBn^&#}dG_4(0e)Sg5ne`q(0avt`W z5k03_l(Sf2+zgx2(RkB&u;VpM==PUMvu<_-l&`kdqouKLw;s*a9X~$Um+m%9y(-u3 zz_=a6t>ujVdwcv}ppm z6`S(Dz_ZVzuUuHdo?mzNdyqYR)u_t#xMi#>>{oC!NvZo4b)e&e({EFRnE`mMG8**zz-9vm+^L~eYZ(~!< zwqvo~+&7Bh#ngrq!I7pLSErQ(w(8(Db$8xL3FykG!h}Drl=nGlPr^SS@w+B_ zFn2H1bp@2-p~lf#V_O#&oh6l#RDQVDCeKJvMP3y+wHKwG(*N>e8->#@mSF@$3nXA< zq`cqDb>x4rElmH=@cPOx3h5`uuTU#zoX%6u^X#_mWSb_hN5~IWRZ(VC ztA!yjLGU)Jtp56D+{i$jtGTB-?qzDdbzec1-fT3QZTdRu`5ceQB^*@lgR6PMO9fDsB|R`nAT;arv|cP-hHT*7F*YFb4ICTvy}=q z2Ra)gob>-PGe6gubx)RgPhJwv6akMjrKnIm@c%wQk45%LF?|Q*X!OjcR}(i#Fj#sV z`t3tWDV9GiYFP1l^Sd1r4qAQczT7G%yw@P$cvS?(l%kz9nrbEZ9U=W zfh_m_-{z~yKfgR5URXO(sN*J?*FvEyX3;J;-&)o#`RMY}j>axC#tenHx5-+Q~G zBmN1GATbluIrPiRd&)v(tas4wmfo5au7u%!o#83C>_wlp1fB)1yk$BnyDV|9kXH1(NGJBqBy~?I~0kg;| zaGef&F5^Y{-zFr4>p}3;C9%nP{8alT@QvtstpxLQ2OeK$T!zPISGUU$6L^jZ!uw$d_`zrd2L$-!-ne&3Svlpxw{QSx47SKbX?4Ts7* z(DYioEo36uqOdXwypK6lMuPn$Poymwy|vOd5+Un7Ci6=WwtZAsN6q>Ng;XZ8M06xP z(XkSOSHpn-(UC0jc+SrgSg*-7l}v&`xZPrHt~DY_Py<* z_5|KbR$k9p?Sy`lc3Uk$u8C@LL{w`F1G@tltFVe>H{CKKW)roTUFi+vaT%rC-j0{} zgcLU23Jgz^7k0L12$KKB8I>oOj+*tibAs~-Ym231NGz@F1Fwby>GhNfn}`+UB!~5y z?BG;kI%ea1R9`b+q0!QYN*2~`G&vnKc4e?WFif#*dpB1*YPP+dD}nctgW&6J7rUwd zWWa8fAUDO<%HxYy!@)iVj8#}uXlvG4g$AU@EuFaCDMThvuoo}a7&#Mzu(852<8_cQ zv9lm-dn@?1w-ahTA-l*K>2QCg!V&iQI>>j9YRr*3tkNe za>t_)b`c+v0S@amIl-ysT20`vRKA{IG$i2t{CE(k=#~&J;SoL&5Frr}G10U1g)Dag zIg8$+ujnrXB!RpjYi=wFPV$shG$VS8AtINojpcpbcF(&%7{JIb?iAqH3&q;nlmi0? zltapAqNM@Z;~)vsb4nzGWRfXl7MV@vkhx?&DI&#ClEtW19hA0KRnk;eYpm=OY07Rb z-wr`>RaXzPFZ*e&0O&QAn1BGxk8&x<6}Y$G-U{GrQu?o1IFOzRO1UpAg#a z;`OOy_~+UDU*c7J@+QD304KlWs$Acc{}(SF_wz3oe*rLt;UB^l)`|>LM&`yuB97xhvW34|L_FZXk(L=xYVlLA-qI3* z+FP>c=h75475z1|IYn&=ykB$RLCmcc8LW&}Xf1s4MA8~JT2k*V{}1Ex)huP3}n49M-+M zKnO|Y$!g`)&r?mst{SzAqPF`Li`~KAO&y>(cZdA$t#R=c58`m78%Xrj0Z~A0>O0^c5bt*@I5uZAde?jh{9u-8 znY3XjF$#5aEaLuMB?A1a;P;U!yMZ_9?iN?P2G->K8U;KRhii1_6t%_wMhx>H4%g@o z3R}29UgkmUmbtj3P$jEKzYyg(6SLdpuraXUmWhQ2%wE>f7{KIK$PONeX>d9eHU)u3 zby0x~=)5)WN(oSaX^R5}Fj~kJ6Bq|!?53x_u;`{HzF^MEGYvwAj7H13t|DgNv)1js zU^9yGc6;X=ZBO%Z`!brO$wJS)i{0s?S4Q6*vMcXE^KPs^LcAevzS&!D?w;wYAeNz- zqr9U^&p9;u8*QI_oeXz6yrD}=x1`zS{t4&VDe2<#^6j3!zu_s!f@NFO1z9!C_Drsv zUxj4tV7`^f+sb|wIjui7_5Q5d&IjtxUsSvg!2U1aiM@Y_b_U9o1K-=F@Lu6XL|E^oWR^8 zc2C*K7N-7QAPYUY83eZqnWj+31>7-}dSN%|q2m$vW~cMZXU>S*4GC9;;K6(W#VO!% z@r8gXh7<0iQoZU@KK4(+X|a$1*6o-PavlvfGt5p4fSN(QQVqj4Bt~m*wz3^2L}JAO zjKc5fF}oY{6zKHl&xo)`^OtVCp`CD&u?`@1jQ2Pb!DNN`Vi?vzbZv*I*Q#UCanGg0LTpfir*G>pvt3GUf9%7x4W{dmTgM89vyAR_(-)ee% ziz{%wUu0=|agClqfz#Pky*6c9wVUROU*}B$!oONiphsVF<+; ztmv49F8Y;AkIgVIeydSi&EJl@n}7CDNVI5LmvE)0jOQTcp6$U7EQ+dE#|fWZ4;1FI z#V`FjbE-UU~=G%R9+qgwup%2J&SP26o03WTu&S)T3p4rWO_k|}J?`J3dA*G~r z3U^G|Z=V8lXO8;3vSG4lXT&BXtz?%vnb`puOe^w&E=@1!6jcNQ11<7t?pMe(uJ< zKa>_T#=-`N2%uqs1x;fzb{BV;_(>q3vWrbH8LNEJ0lsp3Ixrnj+{#=xUU-0sTJAoYlk+oZH4(0aqRj4KiCAVjPBJCERxUxi=JFglY z?~lZvVx3PZlIVqQqN?&K|NCJz5D5GOG}G@KAWg~i(X5r}N4OuDNrFXq!0*zM6+6d^ zJ(eD`H-Fge5y~`Xj=WuLIgfh7R<)Noo!m!4{6i~|>30S&-DIG_;@45^K#7HQc<6Ck z(z4mlwvZneBwjQl_1~6pcT&YO!;$ldt!p>iKz5wU9ow-{gagy#{RZcL_49WjSd~x7 z-w#^>IEgL!(dV# zA`WDS-ekM@w=r8bldDyT0IT`lE{P+#A2iJsnAp`$0W~q9vLBeWXH`rMO z4`8D}_eR)}hQRA!SDMh?dei0GfL52W_%UZ=@GQ=X3&=Q&JUqbwX38gD%)kAAoRe)d zv{e4V$Mg?et@x%~O_-{5#1yVQ6UBN7I5=yI3lPl;JE~JF_bg2csngoB}F;vaai%Np7K*vI;PdnT=rCqlP>y7(Oih0 z&+4MgRT4)_bhkN@+5`r=`lZ{n)bpS%uZ(5KBs@ilI~D-LEOTczL+WT4yTVJku}Sn5pzUgCkq{U`H#qvt&d8UcQ4hz#NNKj9T-oLVZ4_ zH44t!M~uLpr5UZy+NzaJ^SEEn&C<+suRGJRt`qJd(!K(@QVNAPqXKWjCc3)u3bHSEEzI zlLlobJF>T|ZiD`jMXj5KH9)BYk5!|>R*((v89D!aN*K&Za~J)X4#(o5Lwbv#Rq0o> za79fuKvmgCURL`|q7-JDH-uAmnoZ-fJMR$&{vfke@SzY@BhsbE^5N#g?Rq{fv+2!j z+|!xM9YIkJRi1_7NNDy>!C$A+3yMa&n&(`J%Cv67xA*0T-^EdQ1&;K4bEwL8AEpeL zUOQi)hb-=TE?hH|-+%W^NrA zx>2+iMXOdsiPRx7OieHLMslpVYASTv%`7-p=##+uDOMreR)oIYklI!OHP%fHb9Due zUBkh>%?@O!`ypIazduxF8rC+Y<`3a99I&04-T@VOxSwBb8WKy>&zpXQ?7Dms>8`J59e%3-BW|6CeLoy8M9U>sCO{+eYfl_HE} ztVn|;Eb*8Jv*fnu`>J-@ar$1^dIoVEFpbJz&XP7A5)Xo9EoN`RAQj@gcFT;oL7L~o zMxdjiw@M`pZY2yE)I4dRPqdiAs!f`;Qfl^?5ofv6TbVW#S4fabq3|$GT!%U;Mx-$7 zfs&tvNzt+Nq_`{Yme)2z5Kz>WLgL}luLl%R>U$^8(Kf?RUiS#nJMivr=#7_;9!aE) zx8N2?1I^8$?%1M%{5_W^xJU@SKajdA$zqwUNG7p5PE1=C+{H_Y&@Xu_2GDC*UF2CB zO9;_f4bL{Y^=Y|K-$LL?aaY_e(ngdIgrZ}K3CV5@UCKy$LYmPj;R0NNzbW)5<= zq0eyNH!yRum%5{|*c&OlrI>h^6U_vB;%l0>7)UmGCQ4Kq;)L z)DaX;jlF|e_OWS_WlH8AA_0RA`<^7b9n!kB>hX`FC^T84{$)x73sTN02ayAcfRdCr zR=-Hdpny7Ey!dt?AX$YAN%1y~0$7vdX>yPF>XsDsmj0C2)778p|ZCxP4?Ctwd z33k2s-tUwYKX^7HiLgg&)$1U^WAA|Mf6N9qwPHA_OJO_6rguR08~0&SzD6jRgI$a} z+H&F{bf?<$^K*68AvNDQ=FAw3p@l45Sn1|l3+Sb%W4YU>t zQr;Wg^cJx1Uw0&DtXm6-PdGhH0!sYA3OdQYA@T>O zDq9Dvm#C!&9>#pOa@_T-cmOh(oCv!+K@Z&+=^^Ot1*}f{cXp{fOGX|7epl9?0pnFX z=k^?6CFd%Zz<@=7&5ZU3*J*p7k>`mmh*2q{Vc8@h%WhtKLTu4ZT+;o!0x&Ujs#w+A zAC=OoH>jJtRrjsk9$E$w8o9D5M7L&fRamm0r7;LV-O8XE)?x`_2{zH7t-$YuagE6W zgq7ZRd76+b;rhmdi#+q^r8pwxeFoE&UY$R_KR-V|n=fYuED<7sHwkJ^WqwCDmlSJk zW?-@uh7FJ?dg&+1uX9ETR&)<)WlK<#M#ejB1L8Biyd5e+V-+~%Fgh_IaWcngQdjaU zy$W`?$~U#Y+J_+t+;IU)CR`$SdduVs-;oLQ!FH?=s9g%sh~c1`ah?yiEDbZUcC6|W zhBdGP``x58v304759ZPnMkX^>sr_hvhICGo@dz3(*W=?3n~_GOn8hZ#54_7|A!;uIL!b-zn}h$%U_e#vB@2NusKOhWLed zEKKgxZ8x%reWaEP2AXI!XNj-wvoXG|4mgisu6K$75u7Dq#Z^J*Ibpr!*dqB+OORn{ zIb^PSlW`dgSE0n|X@G{lN^WN2ao19|vZ7FzpjU*O2U|8GJVdV%L{kj_j*aHYh|e+H zg9S~e^$APw8e^&1mEo8PUN&tGxQyvCGr+#Ru5=_|_$+W?wp=HL1yIXrLzv)T1t}2$;g-9>cmXZ6qAgZc&OMKfnW3!9fLg_8b5VyP4oITZd!LGYV ze7nS768uz!JVQ$@!<5p|qef2?SXB?PLM(jd`Hm{%{-TW10&X2`I7W@%d*hNUt@ttM z98wfD%M%W;D%R|L-l;kxyVg{-{73+u9VxE6sQvwpmsbtyl+ z!s_zm!GFxk$XV?GW7X1r7*=c-U}FmV4WIk<7KUEyIIEz(wSca@;Pn zFn>>50{*R0Iuec)I6h0Z6zP`u+FzpD_0o$DnP1S$FU*0$`m0dxVZ`!pF?UxaRnthe zOa}R4^uzH+9aSm?2|^3cXF9u<%w;7-@O}F<e#3@rd5`sxeyCxBE;MvOfs?|aHvXr%Z! z5q!w>{}zRd2%nTcUFmx}NxQKRDEmbw}$1IVCU|ln}f_yTrD5^rPu*RmB zSF2J&lW3w@dLGG0(T^*$p;cS!wHNxfQfVxahi4;qQ;$Dk_)EkMvj28`{Qa<7Rwjet zCABN^0mLQnFZJ6|jg&1?h!Lnz5XT0QPfyuV=%UyMI7)n-M3pJDSQ0_#G|b010FLpO zZoY6fG}F%yCS0DP+HIH8YV&j-xwEMe@aZeU{;3t+`OQc(>uC}hMXv^VmS1L~UXO>$ zI=x8=Svpy&SejU>f`m=Fo&YNcqoIesZK`r#)j^JjLOp!*( zZ+z@Z0C3)evMF?CCY(4GKoI)NtyWA8-8OD!tr$-;8$oOY zUrHmvdl}xm&+G1oEgTcb3IO~T5L1l!G+H$L5*@tRP&r`+^{oWE_mUqJh`p0R&jJuN zxBF+_3h%*FQ>j#YGePNwQku9JfS7r>a}J2#{Hb{Hf+r@85e(H4j$sFn04$S*6GoxI^B(u1w#s z#Xlol=1(4*XPd+F5DbMp!oD`}#1uZN7rd{De82$qi*q(fmJR#V@IPAw!3=&3YOltc zb(O1FA`7QsmZEsE1T)p`$c$5{W2KDQ!i4{>dBTecU(_G-fgkX=rykoy+ zUYD8Mv3|n3(06+a!T}_=Lz?b(qPm*EJoXW-kTyl_YWBW((_9|pA){cb8ZpGnUdZVd z{A3u)M9{DRoUb=W%YsLINpg<6YS?`fyW$*#QQJl1P>-`j$CSVg5}7e0S@E466K>)7 zTKe8Y(0MCF&?49Rj-+@{*)P7oWv(BWxd>c|+HkRWO+X4r-1x9eU#M=Bqm%Gvs}X|T zebBk)&0|O(N?O~j1%r$)6Z<5d1@(_Kd|!2bOg;>l)%FJ8Jj#b|eeNb?M==(Ky4!KW z7Ea?U+Q-1F(PY~IW!5-;l!-1=I#spZFeruSuj0*cS;6Kt6=s;m(t11gvNP6b_Hzpg zFKC@FK4DqRwk$IJjd(p(Y3C$0x3%mbkh`^=kNA6m*ZO$c7i|wMtbg@2a&)p_VMQ0Gzeg6TNs*bG<&atutfk$2@eKs0C6mq_?2=;yDC+DLR_3-Zd0X@Xz&8W8G9e`<> zUV%{P@kFD+{ct~Co zhzfCSdX85OV*uA*HZLBx<2)Kxvnq`tM5h>LL+P+G{Qp;DIdZ_QN?W3y09TSBx&GDW5e zjzJOi4tDQUbMsv)2iP5Q)7C0GNTk{g`1)e>ObEMZ@}acjKqyTD-&|>vubB6o(0=+Q z67I?#XBz2_Sh#yh9ic+9%dij-LrnsnPw=krw_YkkjXc*M^6sHMH!UeSM1|Nr(qFH`^wh5!U;XZ()?1D+Cm-TmO8myCRGJMiZxt9FX9Y_qbEpK7VV$Kdp9I?DRYlfdC zJo7zH{w2bMPnKIu7TJM}MuLdOJ1jM5dDA;)-7Fm(x1>t0!&o4~r~qIXD1H6jc5EE9 zvieVS!(h`L5&rp#zP~5Ckl{XA{laA2g9F*1+JXiVLl{w$L@+(gMi!hj`z*P`fbWmF zXVck%IGu@G$JLi(??{qM(y@TDsH9znZ!SIzzY^SU{K?2pcqNrH2N-eJD1i4|s=JTn zllX2^To#y1@l&VMX_SJt(ajdMO}+=)wXg}OcNPYcV_zB>V4iOK){^;~TbFAFRHeH?lo_?9r0M`($ zq-B;oMs8rnHfqH8fh_)5z@m)kxz4iP>Gy`P=EU8ntR>z4jly#`8yna*DQe!cu03g= zi93*9LzL}_M>X!zotyC&<7A8${V?N{NH}`BfpIe(ODYtOooeo`0 zT*_e4xnQds<(!M7M;aze5-Vq~-m*A8k-3=^nykR&j*)GqyymXzRdEx%8uF4mTfEax)Pu*L{(LI}N?9B4i0yzI zft;MYjs$gP*+Z=CkKZ@K9@Aei$Tr@hiD-o8i;E{L;*n%L25zi3$M*&98+$<~!)-^gl7e+RSbWTu& z@=a;J4v^SHafyy)Ga!HOa|e7|G@O;69SeQSl7P?2LkgZ4xrWBztWp|wZz09%Fgq-6 zoCRUImP3-&QI)5K8wi+VAPjP*oj4Lz8Z-?p*A{B=4(Hyj)428dx|0TPqC&?fJ}Tph zYwMAv;}>c!`Lwm;5dN%9$BBe$SS)DUHHjid6q}upy<%h%-b7cb@~F#z07;*~SMEirZb_EBrbr=V%&q>Bu&d=}GKSX&5I zSRJCxOg8#CU9_c7R~8%;RUahwWTq`CtyScZ%=#Q(DKx^lB`JYPyQ|k$?r~8> zwK1xpN(M8RNBJz?@P?&4!yo%=S-BQ2Tv;c0x6KgMy6ezYkwc1dbD%F3W^~Kq=NedH z9~{lGu$E(b^Ug?EQuQ!$wqb4a2&3B24Db$JP3j$37TyY2nvGuG=jl)0X7081CKZhhh6{#AO(sd2OtcA zYa8L}7ud$gt@hnEAnyAItvaF=W7h!a4l3%Sq{x%wIyesimDT@r$^ZW+C6zHWsV+?s z6!hD62r04?78k@V51Ct9Mz3_)7^j>LVG;rADw@z|lS zK=FcJO`WD9u}IN7GtgHV=%Zw9$&n;}R>x$E%x1CT8%FMXPK}%O`-iwPIFLyt%AgM< zmDDM*HZB4imoc(Vl9%V7-yigApEn}fd{Lno$qBIT&+~KpbM9L+!U3blpd|;4$k76$ zO8n4felV#Jtik}1vcQ3nL>Yw)Bf-Y50orDF2OOYIr(iTGf{3&zDwPr?3ZfupVa&*_ zU4?UzE9hL%^n(kQP*te9jwcy}*UX6%1(H=eb$3EW*n%)9Bmjg}f#{$99=7Mc z50*eP2{h9L8c5(-AQn($?|*fg)ZV23ZgWZ)DnY_!mhJV1<+hEf47S2h$+rK`X?<1Q z``(i*83NpZN;3GFt>^=$?FL8v<583h@G{36_j1w8@!@r9?|l&P7dTE7Fvyl|*#Wdu zN(!VNfev}>vRt>R!`PelgMVs_w(qZ=+n%_RPAp>f(?RF=s|30d3tlFVU2kZve~^)Q62f=&1zzb#8ze-BQROoe4n`)K**Nr9sxdNm$(9G@~xRzSWxeXE!9Pzx(e0o{q z|8BGe0d$ii7#a{5QW!wo0YIG=1U0j40?@#Xj^a3KjkhqI84}dUah;^I&PP`lO?Hv9 z+194vIiJ}yxiGxC^zwuHe(yKCr<#-w*=~J>OTthXi!yKTf6K4SkkYM7N{^7@gDjIU zD6&GOBtuka3X9NND3m}rMKn5{OoiM01KD}m>6{BbM|%7F$e4x48&nAEQ0L#5LtsD5Gb&77)k5_hv^of zpU9NbU+HlKD>o-&JBw(W%rQN6S9Vy28f&N__DU$FloIAf^>@DC@4v!8GrMIEG7@xV z_VKxAfA-UV9|XP2J38_b6&wuZz*fv?``bgd{afh!633u8=!-$dfOSKP`}y3n)=JP^vzlk`X^)^D=Y=d^H zgX$fITAhJ9T!F3|gofOK?zsm&@DzIPCG^T`=$-e_N1vdten7wcg8ujmQ&SC0U3D}~q1#UT*7o%rH8v%WYHy;A?IneGO z>Dx-Kn4}$(u@nGhS~2e@AUG}l#8cP~EA`4yBqg8p6p?!-DB3SEO`|01hkEUw*V0zB z#eX0>`&MXE$_L(LALz?kZeWy}Enm!!Wxve0oiy#?xfrS@8IJ`pir-RAq?0RZ65^s6 zxQ!YWF7?KY-g`b1#^eve(nm!OP8vs;TYk@w+WBTx^&4m4Evnp5SyrpBTL(jM?hhVkd%}EE1w7=Qbh=XX{_n9C0`t+#~5@IrBh{cF81{0RptXQE~ zv&Lb|7MqBO0y}oN?AcT0z=0w$S4!NtQ|7^g3Qyjm`H+d>OAh8o0c*MjcvY&XTWc*f zb?Q*|*$35YKs0K?*6c7!ixxC8GIVXuVd&I}sarRe9=#a)T*7wQWt1zf;JD@*w(G7_ zFlZ3hkRgiX?oe{qUCQpePsIZx#u+t=S90ZWMuS7u*zuB#emPfoF5^F9nyY-hhA{Uj z+BKbf#=L{lXhXR`c@)VjGy#dN+kJ576b|!bTL}{_UNQm36u2vQp%`GRHjxds^t|rvuZl|oLbV#M%(MlDx=&B6*E;; zA#?-?!ko@@c5n0AIHaQi4Rp&MgOuoalkLYx!1mA&M1%yhI|SJ2~PVX*8A zwpEs~RlVdjG*L1z?aC@lG#wPG4LE==zzw*;gkQWNT-_q2;iU5(Vim)fNm@mgScPRXo>fe2 zkY-aDSY{}fwpQjkGcz;5p*R$W;FxeI4#kb%Q&|wyLA_0PWu$a3VWLyW;};4#VMW_g zpQHE97!LMN$?_^XVlB2U92_c7e*)VmE%!dF^pF;V*But0Z+~yiFp7&0dxyVy&dOD} zr}l3 zjb7DBVD&P9LSNzV2p+++z!UHY9+B@TI*3Rj!_xkdc8j!65ClaR34d3!{h>eLr~W#} z`5&)O7d%1HLs!6lBn1ee?$ak$d;_CL-h2`hxyPT=I3FRJOMg;8 z(2*D(>hCD6Ppsp3qovA=Wi~v15B-uUn$3uTgBL4Kyab7oBui03k>PGSo+%7v9x4Vp zo<-w$0)|qCQirm?vbBB5$?x=8i{N-=zc3Td->+^7uKqG-?rgaI+k*5=c=*rssp;_k zsr}dg%vn4ee*JWA<}CR8u^oYC&|I2FYtjPRShD#2)B+UEeHNnA+yz;4&|_YFF8&Lr z&zXWD3ukA}!^njTMRxIKw@%s5%R=zo4?!Ify9R(NDauks;ihk&dztk=0}%`nI;M?cK;w-XJVdIKTj0EJ`%6Y0;<3fB|hrjOj3CM~?$n zj0BD4SeyoQfnUAu&-osen2v4H_6VYgVjH8tGHJ+HrLKZi>#42=eRUQxP;b3P zTG@!aiYirDd8?H+kn<{fo!2T+K(JtEEZh!_4ry~zhd!4Kx@FXu&;EviO2|);RZe*o zl&!J?)zwm0{f$&yRU50Ww#JTkA@}mOfDD`QoEEgQRjy`D>sarGHnH-p-R4!Vc8xo< zww+u@_0^>stXuVqudnsHBNU5LqWBM8#A7=V_548^1%R{*1nD#Zq+1Zk6Mcxg zfq0ZbOK0mwd8eZuH1BoVR4k1-wpk{`azEJ z(_LE-zuZIl?Y^yuKOP|d8a43|J4yc>;C{a_otK#vAzpQO$Pf1TjjT2>&sgE*O-$|{f{|fb0xqdITnf*J=Z`}P4 zQrGkUg!}Uzex&yNr}l$U2NBeu1T`!}jVe&%DpXa2n$)4DH&8BX%HxdkIi~_HsE`d6 zaY@BoQOT7u_f+~o{%pDRCULS@uGX9FF5Bmam9s<$RWk#fo}Mm^Zc6_#%KJHW7HPNmZ~E+v?k;v3 zp5`puOt9{svnIWJ-UMW~@(X^r%!h0G_T?(=wD(3hw>vZ2f|C#4 zolvOZDO1g!xOWw`&53XnPd)S83oniR<8Abfw}Ji;{_IO+fAifBKZE-H-xi6;k~LfQ z9657Uk{iglYZf=)qz63Ov8}ycp4s%|X@PcwA!psB7#KK-nV2%`0*SikpRM4^@dHw{ zF=V;&(gYz5wL_AtP0a69pV~P|%XJj@Rtu~)>MT14vHwHXqNY4v8)_p{)F>?RF-9*@ z(NQWoa(oGHc}4Y#%Ie4@d(AwMiJ9UEJ?~vY&GPEo+ zvD6xS*`x;3N15W_!Dv6lzg}8RYw1ur(lzSwX36QqV?%S!wXqJzs@y1)^grohh2!=@ zY0X|bqR*pAbOvpvSll{{+h7zrPJyxZY3>Nyu!R)Fskq@Icb%_!u?nkIT05cvKY0jE zl1S!~AYAg>sqsR1sz8)`hQm{e7@7(?);)Y%KSIkbK%9G zo`s9oJ;#szuX_B^IqP_g+rPi0wlSj{cYGG}z{PL>-f_rnk^ z2YZ}nd5HmZxC9GjcF&ei2_-pw*NU-u;m%Z*(|S>}epb)rHvbBgYvHV(|D9XrX-B!X z$*0?_Sw;M)!HoF|n9%5oukk9Qg|&327(~1aD2(!+dKRz3Ko!^lq&BMt#_u(p`RqOL z!be!6NR3u@csU^~!gJPuL0Da=-Ql%F)+6&M&+=ZidM($2J!ouV-HG?|({<&NY-3i# zS`Nidtj924zPak^Mf0iwRy>%K@baE>!?mF+Lm0%oVA)`n4bHE}Qc?HOIubQBr8`#H zS>dr~c1$lMTYIO^k#Wt28YW?bZ)DW8GQbR0{yx}0% zQ1FL30S#+8?l%ajnU7NtYY&1z2(n9Cpm*q=Wb;La`}Tk{Y{i_MzeYrzKNU3%Egk(8 z|5(J8NZoaZJ-8?N9aGmAC{wRdyH4Hiy07$SET+-PPIbC7o$Xv5=}cF;)05uxr9Z75 zNmg6!9qm}hI{|69v*RrMBd6tbo|{?!3X!|l(>PzBk4}Y?AP#MiIC!)PJA%q!nmc~3 z_9sJ%L9NJs2nKFCNjidt+StmSEE`ntJ4!9<7$Vj^wJBTeBwY#7^ZjY6x%~}Z71|8? zCUxrUr%1OPVXM`=WL?BcL!`>N^T+&;nwc$|Z-M8rC;UWQ6Gd-scsYf)E-uBEluvuA z)M?VDOP?WQ#hJtnzR>Of{V6mqqaMGn8r>EK<2U9Dr=}Gh*P??ub%_8Qo$oZeV#EXV z^tSZ2vwR_~|0NVc2jM$BN_Z{?o+*id0P=L@0aLKDpi7THLA2A#{O&x55DkkhS1bLG zG4<~3`s&^kw(t$1woo866q*X%ga-`P8}k1BW2O*sv!`hG{a+Vq3Uysw^%ra#{QpFY zp8hG0oDDwudA!~4Bc3DSkG_7UKHLbI18cimIT*>YV1&<~B&&vM+FncNGqaw0D{prh zjWo69{55r;52Mq%**~}me&ri$?&h}8kP#EsZ2z;a$L(Tnl867$?o)TZLOsr$zPUzy zzP7LjS=4LoY;s%M+n(yWmWz3oOCDF$q4K(%7rBxHSGUjX7dhO8r1oVZeOYmnD$83v z7=?!Q4;d2Ix%+6J?(>=f-2sj&n$G%ov_7Ck973n>FuCk;a%VyQp zU20*V1^Sx9u!OTW`oB`!WpLln{|YK5NI3G|`P%_rT~{RQc&M7kxAhl1#1h13+V{ZQ ze=y^>w7#E|=V#7-VU6^eQfU0|$UwD{b7L*h5s#$Tff!sxf`fcrQ2;IYZbTJ6bu;Hb z>aY5=-fAh;Pd=*^YtonChaRQqbH5`5#mF= zXj)MMeNbs^eN1zt81s%6hK;p)F;~SD#O}Fhvo0Na@j6wbHa-i{&EphhY84kwq{08~ zrsd=Ager_Rj7*$(6>mLwGgXw0MmQBbc(ev>799k<$P#TA6A&R8DatiTRSZ$5F=7Mq zW(HjSQ&L6=7`X|aP7l4)ojK_23D|cJti_OPw4mzE6sAcnMx{ZRP2&PB$QnvZu;t{L zH$bsoRFm4{(}+JskX0w3C_w>URP)Xs$tP-!SpUFcUWhDOPxy;*s$zsF0wN*bOyRkO zyz>>@0v|)fD$_B*L@&+oPf3-=1!H!KDYBeZAz3%U+nHun_xvq}jrOQkNo0q?0OwbJUnR1FIfo|805 z&yd53b)L!+<|@UAn`U6R^hgr-J34->pJ5{t>&%picjz-KSFeve86@mfxu7tIrfaT^nVYV^O7Ab>@eHmJ4j{t-G7KTZ2r`TzLj@TokYNfL zYRE8yoPhZfICNFC$_`9(H1ec0<`nsnm;M?!gh8|@ro}7d2*41Qj7!{=JX$)FYyd#V z+-p1s^C#ZciAQPHuITF{zf$EyM`f@jPJ!pjkDp-!)p?7JlBQ14zOLx~06u+tmq0`=9yikI{Ovg&Eczd{zWyN%jMh;gJOU#B-i*;5gEZjx=j zcip99ap}RBy#~>vfuPcZ(8jVSnQO-4A{~0*Fs;GOW(4(|0V>fuA_D%9Px5cZ`cpi% z2Zp7>_KtTsHti5;JSrrE5Na}1<&fvNO{j%nXoZrookek#Oeu#Px8%4`6oidbkU`uv zLWctiy%Iq;89-FYrlMN0LBd+&xg=$TDy&RVNh}(;EV@XX=-1(EI3!d?bwD9G+=1HhcIC5P|!lLc{LvtqwbwZ@@XBfQB_&8Mh>mI_s`O9jr5MLnLknC#tt_}(|M z0N=>rII-liy=D&FMxDxz_%sW##MZ% zift?nMC@lbGp*^fs95u`3q8`&^HDW`AByy5Zu$6Al(uQqvMVC?xXg}SarhX!^*hDT zlkvK6E_=>H*)`T@My*#BJ(<9|07iN$uxZpv#ji-v13XiU(APRdxwuoaoTpdjdGbY> z!G|C(P<&~VuCA!PBlP-$8iO=00MlNTPR%Mj_pJBIP8a~z_5&e2P!SD*$UsHy0P7GP zsF;R8Y~X*Kl?=cdM7&W69f3rnCLRDG$*4&kf&Yw8vRKxNl!2An5J(GD`VO!z8G*`d z2xJAW$*QrYr;L-Pb_Avw*K{-xGmM(q5twEC&9-UA{NhU}bu+Y9i$pDzEU) zhs~3M^rSF7DN0X@CsIkFN(iB;!6Pg2N@Xid27tn#kuc2$Ya-jE%=) z4vkoQY5D^Vsn_1cxq?yLrz8|AuZ|oackV27CbyT{aDg;NLdo36uv-~aO-g|~^Uy;V z#En%6hbvJ~*hhm9bzQb(IjvnoW-?MD9L&H{O8ZDACWDN}^tralV;ya6b=yQH zvUa@l*T}26tU{WFWxXYZaz?O*mV?^^Yox6fPHnM770ggC{IapJ9$8n!3M3NUd5pivV!p1bz;pQKTI2MC`EBK8Aj z5ac{OlwuZzbC%<0Y{F(dzqTL_4ch ztfy_f5GT^(s;F=ptpFJ}51;fTeemGK`be2L1~j)gLn6)0tLW1@Fkj_FnnSfP$ahbU zU%#N}d_SA|yJ(=)595NJ9cx}|p(O5r#=&l%IswBS3}Ewx4q%4!x}I0)dY`4fV#!1}N%dnd0YtIeN+I zVUpU0s(2E#qKUPyFLH`CDzzkilGzq_9fJQYaMKbpMX%y96?o95oEu7df+=5=t2)Re zp0qJ!oC#sS#lmu`WsO<*e=MLX8bs}n!5xibFxF?nAC3u|HGh$WncH926Y=qM?&3L? zoRExb5pMOh0CWg^1a-*BYHOCY!NuieU1ZEdlww49P*s*7o!&=uP&MKAW5t9*9q*HR zwVuZZ^K=l!WlCaNXx+q4wV!W6)L&KdQj)A_((|Yl7Y(ci;R2sLtj~F_Ej&x|L2dSE zW=ym=58Q0dA@xZ;uOc&F*4ZXleQ(wOw9C@fA=5)-PrIs@qI+>yt0R5 z7LLg;JL+0^YYTTWycOVUr=903sgm($^xdS4RN&NzZ?{`R3L&BKQr+SCu~ufTsCD8B z%SHk(ZJ;xpaD_gA60Gi8sz$nFJ9l=+*P39T$RWlNtjw+iHhe2Ur7%AJR&JaOG?-b{ z*ZGA5n3#&oyN9{;AVs+aDz*e;vkS6ejvi%t)XTs-kku0aUN*QM=D@%vro2qb*+M4$ zjPnlS{j#|Y1U_jGfm4Kr_Pg_5^Em~UUL1%wC#($B&WeRe|FrTj#8`y5O{Z5@d=6%nOek3w+g6$tNv2O=0bqG)i=?H*aH$f^aGw;79KA# zeOCwt*&;bIP}!(hTe1|Z<%{%~?F+>z)X9SGg`@)o+ zQDizG-QA>`IaH86U&%9f8nRh(FJO_NFqAnNN~BJU9IXZaw;|=9h?2^Vil&~SVHNZD zZSbJIaU;kb1)R`tB>H820WetB=6{ zCM;(-S5a#yq0Lt4?Z(%gVLRF9K0pmN_3Nw=mf0UI?9Il$r!@w0f{O=782wETvT5^~ z!VS<7T=&ExI@&tfUhfC$#?n>Zi6L!2Y%39K`3|3*o->69foU^ROeNPgUjvU>nDnl8 z)qVq~qj!hk-sOtyt#)MF?kSeh>5n;?2MpTJf<4DDp5fXdBfE*PcH;Zq3i>Mxql38& zk62>4T+=k(AZ>EwB3h1RXRH*ppxZTSz3HJSwD6A5H<#aSyK+PE@z}mBeajK_0ul64 z3DpZ_1=(Ny%_K8nP`a-i!;0=NKpCp^nrjp}eX+K5{R9K&=*oIH4FNAXVIJhLeTCLFh^nL; z9bwJN{zZ8lS24?ovK_k0s{Cd-x%WNDsou~J46^B~-Bi_j8c;6}$_;@V4Lak--H(2= zVlMLaa8)n`CLwVrv)NW-a3EEnjbuKh@6_JRqO!dd1x5d1`f=MmC^aTwX*rgPkp`^e)xuOM>(II@ z3}spF+{(nE8H!2KD!eTt% z85aA(Ff}Fc$#80HxnsPzPD-MU3i3E+PKri+>1F~N&OBw9cgC8>&<#FypHi`>6K+Vw z!U@KZTuLME4W^73KrBG)Zk@q5Fx2sKFXCeR);lz}r~}}J05x>IiiI*A_G(c}Z|!_m~Q z2Yuw^)nvL#o_TD^atNlR+sOAbJfW>VC5KnPpzRv^*qnV#Ke%ZrT>zF3YUKL=<&rO| z_qe_#VUGAL#FEBw4NM#;W$PIm| zK$h zU`1>}h7D`9Dr;ov{b`j&aNfDt{K99JVvK@{g{Av&&+a~@XI$_qkQwU*Q-hQJd?390+SaJQ{iQsGRJ86$k+m~_b zi-(M=^!ov=J-J~cZ(ama{4-qnxfPAydG<$ya`juACc-JNk=MV_io z{p-!Rl7NMs4sdyL?>6VQu19&qA|Y5eMcYA@q9o4H1NR^rC40-A*?+6(|7&?yH;C}I z9H|zfv62MORbDVS?_W({EwjjCr8%n?#?d$XVrX00bYpp6Zr#%)!2YJ zyxs%WL$2mlupIzW$ixt^k;+}$`5Y93A2))vP)Sn@6a;{1>V|dfH%@0s>nbGg@}!Fy zWmx%dq*nHO5u?H0hLlD3Ks`_qf&!BeOQg7}=$z$K+c)msesG;ocLTg(MqC6^TY*}D zL~_FnU4$-JpyYi(GY}msao>&kbsJ9j*$+Lza-$(o&U_xGq~vLGOAwv?Kq%yXy4pLz zmVL~L11r{H-@U$Z=5Y5m`0bznPaWns||pc~={GnOKBAbV5FR0z(wd zy{VLscnJQ*P4LPNf~PD~dj>q?FaRj9hQT1{9C+ET2hi|4gigfVoWFGYhFxplTr#$F z@AS4c2NvIzLW?TL12@t0D@OxNNmE)P@uC1-+k(&dtpH8jQ7u{;p#RP#ddcwoWD}8>DXT0-J##3@-;ZQzgyx zk!x+o(pJnI*t~7`o9jdJ&dKrcFOzC6zjY`I(H3KA-?caG-J#LyN>AfZUz;&eduMY6 z5XDK&ih*%tB?M{Kfmx$5u8p^8pu5umfD0^o%d-M4i-7hClWFUyDhOoo>cN~37p?lO zDWfvsXt`e2Hg{s#a=#dtj4$1>Y1F^FEMjpywiSX#PZtocj!fvg6+0Q<;>^sYhOjmjHI&S_lx~I z*Sx>slPTAGibnb{5 ze=;Rx27`n1hN?#WbXSsSO^bL%Q~orNHBXKX)%Mq}f|1Nyu@)v~N4=@e@;=N< zC2u3oIiF{uY@=*wYTEGulNeXOWsSayhJ#eP*2%QY5x3!vU|5>Yg&9#tO`_b@t&8XCBG_;VG2j#nu3@_gnO@7GWPZ?i=iBt^QvbAzqWZ6*lt zu|#Ehu1F18^SBR7DxtE)NjV6M!XY8ZU%rK>e#V$ z@1QOte-CFs_HgoGUdm=&soN@Y3(_y)fR!ZlzsTVp$s?D{QI2tVVp*xxs`M5nZ{IqB zk>4ux)DASaHjVf=du~EC$T#QCjSUTKyZpIP5&FIVUS-zzwzYQ;)a5J!-iE_3$vT(K zDK8hN7%qYu=$w`*Ys2baukNd#@O$g~T3Q?CRkB)0(p7y09luR=Q0mgcuE19Evd;Vf zs+v28AgK(YGIa?tgEYBP4Gs$a>PG$&&OnIar_v~6u?mpl zDB`+>=C}kwp)g2rz!Y=r77WnZO+`Kf?FrVDsVM{xBOZBO#XdchK67)PpIOf}rMG`6 zmU_K%b=#z|6+Jb(p^V5<8FQIm-BXK?UlbQxd$3F+EtM)FRVw*wR@9ZGM5`V`G~^;L zA)pXgq26l{X)?ZqztzO3c{6g_m=73CD``{msHV52t8pmkJ4a3Dr^uB#?UmAsB8klI zsF3=LnCF|vsoFA<#XU!8;!pv#Qck@g^OeZIN|aLp#J}HU=}DKg2G3oXB;V6lQh%y^ z*+YAoHHG*}2cTlqWg3Dy{>v`3Tuo7mot&v5C#Rsiy0^8XX{a*ameVrhX6Mh{%GD>4 z;&X7%e_}k7uaxZn1ht_1zNfvRw{xtKaT7dcLiQseDGYcsnS+^Wn>C)E5m8A1903Dt zj-o$UUU%kW@QMl5kNUOxra(A^2Ub8gaQt>Z=zhd04 z$j~~ScBwZnweeHHkDSkEiL-A%3L8V>iNSq901ed7OCXtXNWma-P!CmM(!+CEq_xS( z+phYbr<17_x(uHBQ>TAo5 zc9od+^P7^1gx3I%%*jsolf|iGNDbVV2uy`~WoihlTqrOtKt?hjlJdUGAGmn<3ZW7{ z_J6ak0;DiRu9{(#Grc*Z=mVnxMoy2tICm~JvtfBa3U?O#JE7s0bJ-0YGP!o8T?|*| zJ~Qn-|9yjM-7P~!0NoNW4d2iriNo7{i(QNA^i!W~_{xs<`Bzk|5$accyYeFkDm}2W zS&VMyztrqJm7ow6TbQyawEw9DL!?DWlJ32sN5+lZx)+)Lf5wd-R@ZyLo1ck*tb=N_ ztG@8)>d>cTnkgeY*fMAY967)#6RzpV@8UJ^>?PQtK1^rtQ;U?*g)&JPvk1d1E9yX+Cl5-nuPF z2N&!rAiqZ*0|z12DCs>?!n6imX!t+W5a;-E9D{SeHPS3#N!s*9pnxBCGgQUMd4?n;bX(GL|q7|hope_ z^cQ}LH|N`)!DY`%fV+`DZ)(IIDj&b#ZZ_K~(&K;fP}NT$&B<@PLA8tDB*rfDE<|XL zC%*~zJQf^&Ua4)>G|3J_Ya!1xAdN1{&zi0PR()_R1hyqY8ZDKauVgYQe=srtz#jvj zr{%T$-leD6isC9gMVoMS3|1;AhL-NJzIg+a9UW7@W#@E^k1v@=u7tMF z|Czju(42Es1}d!{J4c29`9N~#FY3%KzvV1#ADdW8n+N#Et66UF(}q3Tb56>ZSu-MJ zjYfi91z)Hu7D=4-Ig?%jM^!qAs0Dz{8GwtZ%RG=50Q|t04ixI)Ysapmz}`5Zgs8PX zzzn%Ktq0eF9+IH6AHf^`J=`EcgVj8yI2{!=fnt|4@!fDP5a^FQ8cfxPdWS+I3l|Km z_+v-sTxc!ervz{>P6v4m;M?g z<+m^GAJ+8IPp*mNCJ-rN&6ZBq8zowTS-k_A&&FbrU zPLm>RebQI(luA5b1t)$oXGSXgDM3@;6b{diN>n>Df8PijBT@5EfE;%#p;e&IjGBiA zvz169X7L}3R&@^#EbeOR9_t$zoZsmzGM4)54CN+Eu_sV%EH~fIq^=!jHRx#DvJCvX zqcl#{{hTJ_kPTTLs$sR3q{`I3+-I95nZF?T-L>f(XY0%T_8aMPOv&GiWO08v>Ut5) z8$5uQsLLuLH?V8UC_+{Ly9Vznxp#D;Z(#AFfeNX+JP<6Y@Wfpk-_bY+5=RwScRo${ z-*fVFtW@i0@c9bo!gEpkfVf{7w#70709=Uyvs_#4MxC?HHVzzSb|MxRDtcnN8U+#RisjLbJoR6$7pdlG+P!Pth96q71X=F@4(hUibw`p&)b z>EBt5IJTrM=E))+<8=$pdD%S_Q${VxZ z{WS<2)5-(>YA@&n4DhFv5=BZSGO0`w3Aq^WcmA!}u=KT`!j6u#p{ANo8IpMxe-u0= z%Ch4pX<=VIs)>|2&$Pd<3Z7qmQb%GV4kOAMI=A%haG4MNb>LfaaMPNmwOVUBJOxb| z5L1z}3ftz^w^4nMA4Hy1q+&3vy3?fLM>aISq6Yk&C?t>GF`@-6rNDQ4*l#Zs(;-Vv zTyk_owY`TGALrB|XuaG2GcS^c2V;;q>n@uhi zb@N|SupcyNkl+Pyh=#--6|qUA^bde|aF*f~Z!he=9zdp%Z7fbVmEf1xe4bIDuxpKa zr;JbAoE#mtR?%Zh!gp&Bjnq83S!FRhG~v0x_CVyV+tYbY0{JntXMOyNPZk!+^3vVM zpn!$5&R#{$R_g6KgU%@tb)^5Slainsl+IaA-pzL$h+_&xT3m((7$)NyXaJm_Mb5|y z&wHMi$8ZzDuhKYjkvP_|-VH}+k-LnR^lV$6R3v3m3cbj5`ica^U+!GFNSt~8%QaOw z3kLraq`XW``%f?RWoq%Zq1_z?swkX@K>9Gw_^R+12jjsB4e~F^eQpJb~Ei?okRKqmX6C5Q5r;Lu~;bK%V)G6p7*u|sB z_K(2wRB8v%7eyt~qzG>J(^=12otes2%`APQ#{5z^Z%kTFQ6f#vKNzUG-Qa}gEL6yt zZ=OP7Aaqg8Bcvdpc&G$0oMv%VJf=%HsDL>L0!V$5fClLGt z+rRo*h~`Wrwq6uakq(psw(M9nX@LSf1pYaJtcpOokVP_!+GKJl(*E6PT+b7vlP}FK zNEF{6w@AiUVR3)_bd}`aK`0QPS`ygD7Zk4~bHn#;{RgXEvsqG@2BLh_Hj zURc3V3f_VX-_lrEG9;xo$TH;=|0{8?@vJwXzF?dAjytllO|Df&6iMYSID;xYwyh{g z9R5yD4qEmDzPXtwEPJf7?ps`P%Ip}y2@^Vt+4iCTwRE8%M@tR{MUR+b5OnZ#tU zvZV>f*xBC*a-|{`A?e#gJZ!tEVg0hztuuAO#`ROH+FXB=PT$_rZtT*bj<0)$PCesW z4XPJ;--5Ubh)O9z$)keUT(eD`&k{E&N;=l#-twSIu(B4!A9;SfwPz$&zKcxyfSy^* zKx6N3^ylzIXq!Ww$KaY1k>?8Ky53upqsXy2@qDx7z9|Dd!g}WnMGp1lk0z9X2(m|b zHTK(cS_-=Oe@|O4SUv;L7;VUc9?g_WhxE-iz3|2q8w(4>WlbFQ&=0A0p5Q9X3hL^k z)*=xXWedv?Irntb)_$0;FBNSir2BMR{^?z;(9hD5UoHhB-4#rHeSWSi4z*7z$wwJ^ zO7%L_Zs=2&dyZS^BIzSk8@NH$1zSY2(IkiPo!Us-Zrh{an3VgxFv(&I0#)+u#< zPi1knzCtpxz~dR4^ybX|hws4o8gTH48E+G<%*20;x=%~ZP`oR5M9=%#BxHv6Y~wQg z?W4F@+-yQ(z6QHXDpZNj!>`klKYKybHIw%m&~zXDdPbpI6uS!H6Lj!^%mpMhbLUqw;4?SXm#F5|s39zn>5ue)&P7XXjQmoy zE=|o=enVl#663RLZwsLVeeA#?!7sB`vqeg!tWc>}ScAhJD)Jm!on(@{3NXvWo}*HU zfWFxubZ(|n;)7OSggX8*aBj(8%IfLLb!C46k1z;HKOm(c3Qw0`m?z~kWu_FwCv+lP zArwVEPfYm!MaB7qgb$KvhtiUh%><$}F-p;27BpNvRU3K2|~m`qjcm#waw@t1SU)T)gFTAiZ3rCr&jkSjV`+JlVmXI_)Mq&5GZ2U2fsMEo)z(JGsr>u7O@o?&GC!M@yAG1${>CHn}>dB_*i zzWL6E92MK$t5OQo&ZJ5p0}H`%G4){8I*D}RhlQAP<|3!ewHKTyb>Qev_$Bkpv>+fj z$)zzD9Yvu%W;6pq8S-`HX4M=YuB=!hmXvm}joCW4%fqw>)MC1dr;jX)4xbWmYTYIm zf(c&E`8+^P?mnPNe5fgbVh0A-b&>A34)%jx?2t4@{O6~qVHI5jBHL+M5o*|FuW&j^ z1)55G-WbFBm`kyetgnTlKfx0A=gVfbdE4toHYPQnL9$hR`Vow#&dU17|ts0YFjaRMY=j|@n_*4w?3n&e|UkqJ+T1W1bJQw4$@_iqAuD?)Sz3sH~ zJ=P$;kny-n)-|HB&n*r46YO1^hsF|8f1ebXmz8JMAZ1Z1t%z4-Ze!|mX7!Fu9J6<5 zW)NsVi7Mkq!Hd<@zBHRGOVnd-+6p~tPh}NceTY+1u!Q#)DnFkR$!UPW@YwppylNTp z5OPL6r@}IQ3#6qXj)~ddNoPBP>H@m@+@m~mYfy-jD>u6l9Jkl$F}i{^74ASs-C&!_ zg?n4+qn)wms!q<9$cjXpgz~##@w>VO^MCq%-Tm#o*eAN+|F3++ZHba1yY{bi+otPN z7xOr*jXu&5Yj&Pi6+1mfXRxM%L;sh<-`y=%)J8%pCo9(07~hgJ;5$-Fw@2+mJFHej)zqD!>UO(EF-PXMgBl1!Ou+5%^+UyoaJc-hXa0|#i zv2oA)-|_Snr2PpA_Y&eaB_^CrNXO0=&}HSyS#(2o@)wxHd*C;9E#COD7nsetoFuMo zwZ_JsFZri1s(`(9Id)!8{PD>e zVXXe63hR@cyH6x!P7KdT9LWfU zO@A^nl!vj19Aw$!CZhVUze7p$FxtGr{Xiv@d+ybWFt^Yp62oy|6Kt2BE}jWA%viu8 zvwoVp6Jw<(oU-HT&+vp__?`Z&A4}o>XxPL3$pAiK=6uU{=B{|niJiA*e=dv@KKrcY z=K$e)Zjn~=7QC63*@7WnfEPBue5uc!i@{X?G|qChSKnui-mk*pYw-!1yL01eugpX17e4WMRW3jv#ES5c4`-TEHH)2yp zD13uF(h%}AR1DitVe4o;VT)b+508lUq}0KwkKgD-JDBc~B%em?Gdh?3%l0kWk?O< zFA{&4lEh1on8|Z+RQMee_RrNgqPxK{*Q)2!RbX70l2128yV^ZovNGo4QUB;=!eG+C zX+HfT2A3Rufloh~-qKb!%yS08KLSEk5#C7^KTlO|vD>Zu%2Hcyjwe{VM4(;LM~ikq zvsO@YXB(e%0qm7Qy{Gu3)8SdxWqeX^({0Uxz7J62?|l>)y4}MgugETr(uF^H;|-_m z%|kfnc_u#RVw!Bd6Rt^LwJfaP_s3cW1_lSDn0cZ8Fmu7eS;EoLM>%z}q4g8zoa3;4 zsW25jwN1E)un;&mQMoW#-N0rTTMl?-0WaBQSgm&Tm^Sv$LkeM$w`(w;uL#{rni@iFf&h2pXb@Uba-Sa%2P`@|)g|?(>H+uE7UCgTxbOC#@7&iOzxvQ5H zuU)#x-MAXj=_Es;jcewReUsgvL|nXfQE|jz3plQNp$A7frP8iCrGB(}z-P_PcMPE91QlH$uzPKKG9&z|Qhc3D zxKjB2qsKM{C)6r?nkzuy3ct9sI7>z^EK?f1w|iZBXfaBz^*iZRVI5p;4hz`ozNSc9 zSg5p1aZ5eXRgERS_S*WZ|S$D8nlZ%p6!@4xZRS@ zC|zDLF(jAvTdiOx?gQQ+xW+21?VYkG<#T>J+Nt8q_GvB_z(+1;k9 z>~n!Y1Oip0s@U8@ZE-l&YKKFuK~U|)=irGVdP)M~ij~_zAfZzzSfDsqmRCdNyq`p< zTv2ypzE;EMYqbJ_POEKn8i9~VCKJh&y&EMr{7M4w%_vZt2>dC~{EbuAPO09#8Zo&k zP`kb+l^sCd`q@=7v7BWg~-82{b~+;`%=_<&K(8L9A_Wl~tfSR^$h z6dGqMuw4kbn+~P7D1)FPs{j_7OKI=&5y-T#>Uph=d!v?$5IiKTwE_6|4m3E^woVszh)`IAxy5aB$Nhz5fDh{xf;cmwwn_ z_PNjezF zhMbgJn1c)f>mWijg^)~|elV6FG5A3sBWVcdQ+=XHj8w2TG#M;D+7FAE^5lMDA%x{5 z_IY4G%wJQU+|Qo^kR5ss<~Ahq^cHMLlxEfJAoiE3V%v=)lBj`;l!#VJY;8G63*@4DJ~HBApC|)yl;OJr9(^L$z8NJ<9XDpe$!VXPBo~rg9u*NaU$zt{xR+1k;1K zi|JV2iJ418h2zMZ?KJh_=WETgv}IX;ryzXfGE18#I5~YgAWa8LJQi^>FFx<+#w5+kPrE3|2;4)us0{07!-LH{%(RK z6hwUFu1)>=`!keI4rK-HHxvU_(x|pJAnO$xw;}$Y7g+P#sG|a|AEW%P)J@352M{B9P#M+OdvoPa@5rgV>Plbmki?&dW7Rfq!LshTM{`e+#^=|dIcwx3(FNy&gb)1?73sg^I;qcNqv z6`-YFT|~9|62)8mYQ0~*!yXaJ7M`~}DS+BkGyHw=Q|`=oYROY<*QvihX3irssg^IY zbVh+H9!7a2fdZqOI zT~heR0Nj~*tJWJchH0B8F9++V7jLiMFIfbChYyORwyXe&}} zh}Biu*A#H;NtxUg;FUd1r1paYC5j^m&))i4Q(q5-*5Xrj%eZZ6?=%Li&URzAM%Q++ z$!R@~6!oz5`tw|BbmW(g$-443LpG(hp6IHwl7N^jE-7SCYaEgf7EPWBy(-c;k$Z7gjv@axHD##jE(-ccz-z8pqru~SPdy<~kI@b5ItJUqM3(;r6jg7`Z zIIkePY$br7;W3MfaWUFRTTk2j&6D8myT|jRabZ_+GGRLGQ-WPjZW>l=*46^lWee_D zAhq8D;VllZx(^!Rl+*12!y^%_X&BMAcwn6_)0fu{0X8-fYG9D9!tA;QP%Wq%u>(UN(S$K|?=@l{B8d$b zO;J6JiWwF$rxc)$(NB)SM)4=Bcn2`*#N0~_;*e0GP()q{5Ekg?jJ9oBg1-VC`e*>* zoY6q8BMuJSoNMVsft|+P7Do4M^fH#f-JGfB7eH}FfNdm>oY*31AUxDAvU%5!mf%gx zHB|^VWF<qSJcw09SB%G?IX#`12Mf&rX39+FL!5{0wG@)CS7l@KK66qfhi zS2zGcoC;S_fGUKBe8K$!(Ys|vqkd@yBUZ|4(gF5;&s|fcJ!X?8B2>He2m;Z*AbWUH z0drafdCeVK^v_*c#XztVd>YpZ44$||8G#l4B%<3zJ|3lsA{9w6YkIzf+DpO|D7N5* z)%JdfRZjO6n`So^W^3`=}8kC;%N@y3sY&d4Nmq!19cE zV4>KoG^d$ZG=$n~34j4tFv42oxi-p8!*n0oJ_MRFU}LM+0!eiv8``Zi0;3_GF`j9*5daXQJE$f8^T32&p}L4 zX(XD6Wq3WG4&$`*yY6EXeA{Ey5LkNx?9Hj%$>q>2w+aL?P^mOlF3+vy%O$UpPeev7 zwP}_VV5PV;>AHv=Ala~Vb0~+;(ty{2H#xlYEAEWR886l(qhg@u93aiVMmMOnUn%|h zXj&4RnxdNak$?D)V1OX-OVCW8TLAU~m424)bNvGDKUaYPV@1#Ii4EP>BZ9Nue61?% z{hOKDE|h{rT2&{Af%+Lh z;%$Z13V0-Mnvt}}1mn=#_E95h*oXFd+X`bW6aK+CS9~7(u2S-cLg}DZ5Nst+VIY(j}zlR93ED`}%n3yPTK>jmx8n zg#!H&K4}$zgn^E-2k?0|YT>-Te=I)yN8r1g<9_U#jF_%caILZ(lG+W3C2Y9gg0%8yg~<{US@FFrdV9hjp&5+3ml{i)!X< zl+|4)^fE_Y&DN{Kw;;_rALTjwfS^y$qaOqG58^UQAwpF3-A4VC3lYVdYq0^QqMRsBppwH3C4j8ZRHytdtf561yPl2aYUeUV{EgJfNiY8OuQT zpFDUk_)fh|#U~+=$S30@R-{2J^Q;AZuWoeviH%o1)wLJ)*g)#I9UUWfE@)2K!4_bS zZbOXTdVw1;qasC@RFA(DJ4Qd$Y|{iO5gguU!5F~R<>iU(**cHVp%vqO7g#7JtRf+f z@kzII2N-EJZWGk_kQHDaEA`tE@_Pb@C`mUe!dM?+#MNpJOjqzNu4mg1(;BV}HhXjsRKD$JHl4@1&A*gR>D-7H_ zM%MCf&0CyC`IsO%Zs(4*UZ|r6``uZkQ#6H$LX|Fa|9Z$!9QY;Y%V>8D40G&BBU(tY zebF&R{RwyqKb_3GmtmO1c~#2W-8-@&&mhA>nTV9{>n+8OFr#6S1;>VX4`}-ocP`vE zNI$Si-M=H*dON7R4MD#cH*6qDrWxx<4sZIf-<#97Z+XR%HT4Vhb8aKUUx=WddY34A zwK>{Vw+GW8Dm*PFbPcSgZe^|L4UIcioR&1G*uxkLzby&;QMpD}ng$W!X~lr9fz`~4 zvI~vdzBnu2eAJTUS67#yge|wE2CRW?5Yjy@#?Un|o4exleB+J@w52z0Kh?qUvn087 zjcKRD@iPIpuAxUfMh_w-m7zDF&r_mcSeg+JS-lc+N@Pu4-(G`9OWIEZo+(WpQpX@D z``E2RN)8n>+ESDx;Ym_n_W(-8zS#uc?g6T}Py6i#U+e)XT@9>F#q=?KrL~oZT&kWL z%6jd>!`gaAI9;_G6{^J~7j{XT;GsS1gJpAXLKChe0LveK`%j8xbc!FR8W{#wr3}Sh zTwxuvq5RWhP?ySA7d@Bn2Va@}PgcwknMDffLPau(9iC1qjtnzfQkuYm@fv1?t0GU6 zICx;GePQsl-RqD?7JFuhU;yQSAqRbqDieee)5r8J(FT-*sA}Lb6!Nm^o5q!Jnea~`rBs`&|I=V8|h%iM}bWPV1IzjTr z_UcT~otizlU8S7}T~X!SP=sAW9dJ7NIJ=#k$%W|(F6f%jFiTW{d1y&iahns{?#E<_ zjqE?)rK_HLu%atdZ7O$t=94<};vQ95d4k99kEfN(37S7dUDrd+O$B}Ae~o}2^3t?# zF~pK;3_aAsS6%Z!_h5z0-#wg77Kj9CQ3lG{;2zqD(vG#SLRo!F&ppT;IcdipSU??I z0Lky9fYnZ|IbhhoYd?@lSQ#n$0GU21b)?*Vbg65A!D)Tu3@Vg0My_S$fvm@AlQIAiL+z=4e9tCYg#ikZ_@_6}l1RAs6MDZ1*Z z-4u4gc>p+!>%jO(*M=)!iK=1OjPmh9so_^ibRTxPy+Y=*=x&LVqZW~b7} zPe;Q~kr-3-zqD%5D-Srg5LOJ$83Ybd+Jght9kFOThTbky{8>x%F5imE*Ays&5auOk z;c3B5Ootd@Io53E&}lDxrJh5CL9QC{5iDXm-9&4(r){|thd@E9#@E|4eC>H2Py-&i zKBH!}=0EYn$G=@hY>;|z`LFh~s^Gmc?Yqk6Q)7|avW?py0IcFsZUMP)gA$!)k zG0IFQqc7Wmp@5&#&ew7kGVDnN8!!q;&laKPjnt!|p|z;#EcPj)u}QJSDLJjY>@ClV zB=*WAK2bW}Qj6j>n;@G)_UNpIdc5Q)Bv_tZJdyg6Jj|9yK|D-sw&SQCidsTyNEV`s zlx&4@+WIZl=co}odjv)5FAKm!Jsr4XN9JsHJec||>lrKz^GoKN2W$r)#>F+#KDPn4 z@q;btKps+@J8)-@Jg0!%uf%ES!zKpIDEz)0^vy4+IqLX{p8#V3bB~?P+IFC3uJfLu zcHL~7U(&DUOu!~{PnB*b2?}JBxKynOI6+p-mU5skdBzp}{SedVpn*U)GMjc1pPJzr z>P&dIw87YXGOnsNPAl71ff?`6^EyrDSrLJ3*G_CfmgPRY8!FZ)bc$vhxVyRwGkIwf zF}_5V?1nf+mjyBnk?1l^jsY%GiC#J1s8}PeX!{mz9};9W_N->Wlmr9nFbj^JOhcKX znF6|H{(_pr*c4&zY*4^J6Rn>@E&;ecl5AHB2#7mPf_Hhpl1FIZLe@fp3@a7qt6hD( zR)e`?iF7=3xNyyHCgkx*Q?`*H4WG$y^I$8R2oKSF2%@P60M5+)X2d_i&|pscma!$G z(e@L9$nhXINWO?SlUr@(CL_^E*G2t1?qyL+%IY_W0ioh-OHf zBR6fqzYCLRC{-Hpm^z#)q9!_ZD2<&67X^giHfaj5T%>)<0zz)k>-_|M$7h~RJIH-^ zO>Lm5E6%J}QZ7H=d%D(os6HR2Vn&NXqdTWm7C^S!4xXTCZQKat`MGE=j(`zdCott$ z3IFnyc45p<;Y18M#ozFu4_~YFAUDv=#KM)3X|O-J`}>4P`ql!BoPeoXGk~1QHzDy) zvMo>PRn=m85z#k$iwgXc1hxXKa1dZIf)ZcU*9hG{BlH1lyj(w!mjJ^)3J*X$Cp@A2 z&^;hZKa_t@ihOt&M8A?hl!gCUO)n#9rjeblEf$}Xc zg#4coWV#a_qOHtqR2C|_eK2(C&-XXo_%*1{{Rgtf@_5JTy;K@>pIvG?`-|I^Y!CZ* zT!eZhX{|-VFrH-LU(>;0Hm(pRz506qgW-mkooQ9uo`%|NqGD*7&tB zJY?4|00G1j9!C3r{qG+7Z^e^9-r!5K)=`FEtbX0apr4kYxWuEu13$z2qOsM?KDee9 ztJi!i$?$msYkcx7Upqv-DK1ntnuJQo(p4M;66fgzxX^=oj(>;M)1EBr8s5*^bb^KmIvWML$>poq=Ym7OAKPN5ReCAcNi5O6e?0KI zDl+E`vXTk}tzk)S1q_i!WP6z@2)#RtzcZBKE8&*DU%9@27%}y_BNi;E3d>hc$8awjH9-1zM|~LM61;a+k7iyS~JQIi=C+ibpkx=N1^9t zoX^f<^ZYXC_>_~Rp@&{8dzn4u8H)WTKCoj9T zoTn)vT2?E*%%eA2P?sbjap=#w*A|xM1^7PDnED79etrfOX;B+#5pF#3tF!J=b?xcl z2%X-0B{08s@@bnkb5`>rJo$0R2zE{xSv%3qyLxXDNIma_&1JGpr4EKIs+s8{*TIWm zKgKiAR2Xm|k^5T0?=^4jE>V0%5je`a@ygdZxQOl5DU7spg;^$KqRL_-aZ_zmdk?&k z>o(-%ip%exEMu=K@>&=NWy}&SBGtP?5v>(;5pEn3-ejI^Em+u)>eO59gnD8JeML@R zmQGpaZY%bSJ@;6$pWH>-FUG%JNvV>r4L}t$KAxGl(R+5Jwoek8C zm^@Mm=`L}BGX+yvA+jh>!Mk;v+_FMmzMaqM1aNwNx`QK*Y1)vB#fTfJ_0lrE7hsmQ zDT37R&?TNFUsHUll_BXjYo6PTv_cxoIKh&0Cay1c=0n%?gW~%92L4ZjJbf^d!oSB1 z);KVyC0g&1;30XBKvamK-zC?hx(w zDepu}KNmug>XXP)%(!Qcbe>c0;{6D%V&L?6x6C8&yB60oJgclJg~fRpYf=P?^yNfJ zr$oIuQ=_9iaqwT2M;uQ6D85 z2>{!!Yv6hcdXCwUNT_FSs?(@XrRk{-^--SKIBDj%A2mG+ToO6314{Vq>zSR285Wx=g2I@&!KFP*$Q$UoUsiW3XSWFiZoay0;%x$)`TDjDtK@+AwX%FfnL>Gs zo!pnNmqLR)*Oyg?&^XXc&Z|YP^svOm-1jmxFu9+aKEJ=aIUm>EG+4m=^hvigR)^Zbr2@qQk+t zyV(b%6amQqD`0{N(wO(}S56pZ)QN191dnoJd2GLw57Rsu`Xi={aPsDKVOX-nM(?ta zEu}I1Eub~``X4JkPhzO^CCe@s$Bk?m_nh-s5bI~s3!;#XrF|NuK_lLr_9iya;Q<3;{qZn|Aacl$ zQ_omrJ(yt9pKdP*vHd6cO(Go#md%@(aS~dm`avJ(UTUlTRFlzY|4FT@8Dzt_Uu^PK z@v>RwWQnp?2K%MY0M<3mjOS=z39cVDfU()9k&H;9YzU zU)P*Oj}_3qz<9tZoKJF5RM0J*Pl1LZyy9?STDa+^7*m|6+}pHiOoeTU!qbl{R?}~U zPPMIu*;Iqy9isf1x11`+vV>=heFqu$nxIC)Zn3GB7WWI+z9ljvpp;~^!~~^EN<>f; zYF0FglUX!ccbR{{1{^^f?7-G%wt)i}ftAmh_G#sT$Y%t{#Y+3nB)5;ytG507)Im!1 zaHAzC>0@{*z)u2I^4V7uEr2Qj)=zCQB&cy>85E%3{fj2CdQbh>R_Wu{)f5@@KY_52 zwSfX;0OR>Z$Hh!#GrO9TyNBHl^a#Z~2(M-Z8TCA9M$a_tEEr^d?a+Wr4p!A=O3=uZ zXZ+Y3TmrppcFc$~n7W$bI=(RW0s8@R6k0O69bnfJD(#`w2=yM(M+ozckHM5N2K&}} zQxkJU%tr%9fCMzb3!ESm_^FJYph0JKnqoepw~==b_Pqjf4sT!T*>2dKdww8QGknaf zi#f`pr%c;RxPxpu#xxUZxmkh1(}2hxTcq6M`WbMDLm=D|H=ZzpRa|WCdK{Kj+YXha#L(S|Z^5=}$l+80s+$ zpT6K}AVxcG6C(eU?)#atNJM*B63eV=j;fyFp2`cpr&Bot5H^Lx*U0%<(gh}*W^sM` zl>P%Ro%N#$3a#4o=}@m$oh}62AL={_9A#9eOp|7<4sZMT5!ml7IuTfOXw{%vl|Vz1 zOgCd)tqzVdg;STdBIV0jxmG=E>uv!oRqfm?hf38t5dAyWPt>Yf6jl?f?z88V(lh&f z>1E26irt;)_lk>!y~gAd({do3RV>ij&yo!%Y{s$Ja#fT%)${5W1Z@#a$u<0T#nx!l zYtfZLIPIyzs!qDBy4Jkw6F5TF>)t}kl3!pPTXPKFYNA!0F}<*uIN0$J^8wNk92 zUqaN0osJQKSsVXo@iUDg#yqC| z#tENhS07iqRZ#K^*`j()Mp^aLo}LYipq*u`aZy|TF-%+EsY-`QvCA?`r<_;=5o~< z=rKz;02?gGw+_Do8o{(-DlraNi4mfiC<+qG`u#1e0!kUZa2;HRG{S`_4k8nJT!4zN zESw@GNK>Q<(pYJXpR8W%m{$A z&ygyJ`;SQz-&p@0%4c-I0oa99!y*(5kpW@37AL{~i;Bo)hoEMz3>Aa{e}4b~_RXI@ literal 0 HcmV?d00001 diff --git a/web/fonts/OFL.txt b/web/fonts/OFL.txt new file mode 100644 index 0000000..93a573f --- /dev/null +++ b/web/fonts/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2013 The Alegreya Sans Project Authors (https://github.com/huertatipografica/Alegreya-Sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. -- 2.54.0 From 5d3dedcc909c500ca589590726fcc3814e6238ad Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 3 Nov 2026 01:58:16 +0100 Subject: [PATCH 3/8] =?UTF-8?q?Ic=C3=B4nes=20et=20logo=20de=20la=20charte,?= =?UTF-8?q?=20copi=C3=A9s=20depuis=20docs/identite/logo/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- Makefile | 14 ++++++-- scripts/make-icons.py | 73 --------------------------------------- tests/test_site.sh | 28 +++++++++++++-- web/icons/icon-192.png | Bin 2696 -> 0 bytes web/icons/icon-512.png | Bin 8278 -> 0 bytes web/icons/icon.svg | 7 ---- web/manifest.webmanifest | 13 +++---- 7 files changed, 44 insertions(+), 91 deletions(-) delete mode 100644 scripts/make-icons.py delete mode 100644 web/icons/icon-192.png delete mode 100644 web/icons/icon-512.png delete mode 100644 web/icons/icon.svg diff --git a/Makefile b/Makefile index 7746b09..3883141 100644 --- a/Makefile +++ b/Makefile @@ -115,9 +115,17 @@ deploy: site ## Sert l'application sur le réseau local (Ctrl+C pour arrêter) deploy-web: deploy ## Comme make deploy (ancien nom, étape 0b) +# Fichiers de docs/identite/logo/ publiés dans icons/ (manifeste, favicon, +# barre haute). +SITE_ICONS := icone.svg icone-192.png icone-512.png icone-maskable-192.png icone-maskable-512.png \ + apple-touch-icon-180.png favicon.svg favicon-32.png \ + logo-horizontal-couleur.svg logo-horizontal-sombre.svg symbole-couleur.svg symbole-sombre.svg + # Le site tel qu'il sera publié, reconstruit entièrement à chaque appel : -# - web/ à la racine : la page de l'application, son style, le manifeste, les -# icônes, le Web Worker du moteur, et les pages de test sous moteur/ ; +# - web/ à la racine : la page de l'application, son style, sa police, le +# manifeste, le Web Worker du moteur, et les pages de test sous moteur/ ; +# - sous icons/, le logo et les icônes de la charte, copiés depuis +# docs/identite/logo/ (une seule source, ADR 0010) ; # - l'application compilée (build/web/src/) sous app/ ; # - le moteur sous wasm/ ; # - les copies du glossaire et des scénarios sous docs/, lues par l'aide de @@ -128,6 +136,8 @@ site: engine-wasm web ## Assemble le site publié dans build/site/ rm -rf $(BUILD_DIR)/site mkdir -p $(BUILD_DIR)/site/wasm $(BUILD_DIR)/site/docs cp -r web/. $(BUILD_DIR)/site/ + mkdir -p $(BUILD_DIR)/site/icons + cp $(addprefix docs/identite/logo/,$(SITE_ICONS)) $(BUILD_DIR)/site/icons/ cp -r $(BUILD_DIR)/web/src $(BUILD_DIR)/site/app cp $(BUILD_DIR)/wasm/engine.mjs $(BUILD_DIR)/wasm/engine.wasm $(BUILD_DIR)/wasm/engine.data \ $(BUILD_DIR)/wasm/positions.json $(BUILD_DIR)/site/wasm/ diff --git a/scripts/make-icons.py b/scripts/make-icons.py deleted file mode 100644 index bd42c57..0000000 --- a/scripts/make-icons.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python3 -# Produit les icônes PNG de l'application (web/icons/icon-192.png et -# icon-512.png) à partir des formes de web/icons/icon.svg : un fond de bois -# et deux pions. Icônes provisoires, en attendant l'identité définitive. -# -# Python seul, sans bibliothèque : chaque pixel est échantillonné 4 × 4 fois -# pour adoucir les bords. À relancer seulement si les formes changent, dans -# la chaîne C (Python 3) : -# docker run --rm --user "$(id -u):$(id -g)" -v "$PWD:/src" -w /src \ -# ustagammon/build-c:2 python3 scripts/make-icons.py -# -# Copyright (C) 2026 les auteurs d'Ustagammon. -# Licence : GPLv3 ou ultérieure (voir LICENSE). - -import struct -import zlib - -BACKGROUND = (0x6B, 0x44, 0x26) -# Pions dessinés dans l'ordre : (centre x, centre y, rayon, remplissage, -# bord), en unités d'une icône de 512 pixels ; bord de 10 unités. -CHECKERS = [ - (300, 300, 120, (0x2B, 0x22, 0x1C), (0x0D, 0x0A, 0x08)), - (212, 212, 120, (0xFB, 0xF6, 0xEA), (0x7D, 0x6A, 0x52)), -] -EDGE = 10 -SAMPLES = 4 - - -def color_at(x, y): - """Couleur d'un point de l'icône, en unités de 512.""" - color = BACKGROUND - for cx, cy, r, fill, edge in CHECKERS: - d2 = (x - cx) ** 2 + (y - cy) ** 2 - if d2 <= (r + EDGE / 2) ** 2: - color = fill if d2 <= (r - EDGE / 2) ** 2 else edge - return color - - -def render(size): - scale = 512 / size - rows = [] - for py in range(size): - row = bytearray([0]) # filtre PNG « aucun » - for px in range(size): - total = [0, 0, 0] - for sy in range(SAMPLES): - for sx in range(SAMPLES): - x = (px + (sx + 0.5) / SAMPLES) * scale - y = (py + (sy + 0.5) / SAMPLES) * scale - for i, c in enumerate(color_at(x, y)): - total[i] += c - row += bytes(round(t / SAMPLES**2) for t in total) - rows.append(bytes(row)) - return b"".join(rows) - - -def png(size, pixels): - def chunk(kind, data): - body = kind + data - return struct.pack(">I", len(data)) + body + struct.pack(">I", zlib.crc32(body)) - - header = struct.pack(">IIBBBBB", size, size, 8, 2, 0, 0, 0) # RVB, 8 bits - return ( - b"\x89PNG\r\n\x1a\n" - + chunk(b"IHDR", header) - + chunk(b"IDAT", zlib.compress(pixels, 9)) - + chunk(b"IEND", b"") - ) - - -for size in (192, 512): - with open(f"web/icons/icon-{size}.png", "wb") as f: - f.write(png(size, render(size))) diff --git a/tests/test_site.sh b/tests/test_site.sh index e394931..ff3b846 100755 --- a/tests/test_site.sh +++ b/tests/test_site.sh @@ -43,8 +43,28 @@ check "app/main.js" "text/javascript" check "app/ui/app.js" "text/javascript" check "app/domain/game/game.js" "text/javascript" check "manifest.webmanifest" "application/manifest\+json" -check "icons/icon-192.png" "image/png" -check "icons/icon-512.png" "image/png" +# Charte graphique (ADR 0010) : icônes et logo copiés de docs/identite/logo/, +# police Alegreya Sans et sa licence. +check "icons/favicon.svg" "image/svg\+xml" +check "icons/favicon-32.png" "image/png" +check "icons/apple-touch-icon-180.png" "image/png" +check "icons/logo-horizontal-couleur.svg" "image/svg\+xml" +check "icons/logo-horizontal-sombre.svg" "image/svg\+xml" +check "icons/symbole-couleur.svg" "image/svg\+xml" +check "icons/symbole-sombre.svg" "image/svg\+xml" +cmp -s <(curl -s "$base/icons/icone-512.png") docs/identite/logo/icone-512.png \ + || report "/icons/icone-512.png diffère de docs/identite/logo/" +for weight in Regular Italic Medium Bold ExtraBold; do + check "fonts/AlegreyaSans-$weight.woff2" "font/woff2" +done +check "fonts/OFL.txt" "text/plain" +# Chaque fichier désigné par la page (icônes, police, style) est servi. +page="$(curl -s "$base/")" +while read -r ref; do + curl -sf -o /dev/null "$base/$ref" || report "index.html : $ref introuvable" +done < <(grep -oE '(href|src|srcset)="[^"]*"' <<<"$page" | sed -E 's/^[a-z]+="(.*)"$/\1/') +grep -qF "url(\"fonts/AlegreyaSans-Regular.woff2\")" <(curl -s "$base/app.css") \ + || report "app.css : police Alegreya Sans non déclarée" check "sw.js" "text/javascript" check "engine-worker.mjs" "text/javascript" check "wasm/engine.mjs" "text/javascript" @@ -65,6 +85,8 @@ cmp -s <(curl -s "$base/docs/glossaire/videau.md") docs/glossaire/videau.md \ # Le manifeste désigne des icônes servies, et l'application à la racine. manifest="$(curl -s "$base/manifest.webmanifest")" grep -q '"start_url": "./"' <<<"$manifest" || report "manifeste : start_url absent" +grep -q '"theme_color": "#4A2E1F"' <<<"$manifest" || report "manifeste : theme_color autre que le noyer" +grep -q '"purpose": "maskable"' <<<"$manifest" || report "manifeste : pas d'icône maskable" while read -r icon; do curl -sf -o /dev/null "$base/$icon" || report "manifeste : icône $icon introuvable" done < <(grep -o '"src": "[^"]*"' <<<"$manifest" | sed 's/"src": "\(.*\)"/\1/') @@ -73,7 +95,7 @@ done < <(grep -o '"src": "[^"]*"' <<<"$manifest" | sed 's/"src": "\(.*\)"/\1/') sw="$(curl -s "$base/sw.js")" grep -qE '^const VERSION = "[0-9a-f]{16}";' <<<"$sw" || report "sw.js : version absente" for file in ./ index.html app/main.js wasm/engine.data wasm/engine.wasm moteur/ \ - docs/glossaire/videau.md version.json; do + docs/glossaire/videau.md version.json fonts/AlegreyaSans-Bold.woff2 icons/favicon.svg; do grep -qF " \"$file\"," <<<"$sw" || report "sw.js : $file absent de la liste à mettre en cache" done listed="$(grep -c '^ "' <<<"$sw")" diff --git a/web/icons/icon-192.png b/web/icons/icon-192.png deleted file mode 100644 index 82f3f1b009da6130ad16fbc531b28984a7807d92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2696 zcmaKuXEfYdAIJY>vdZX$=rbZnkVH4bD5EDbgC$r&h?c<;AzH|YF3RXJjFxy9y#$M3 zNuqZXQNm;pCCVt#GGSMCpS;-T?0H_?d(Zb*?z!il@4e>}Yl1RhWfout0D#rVP}l5q z{r&r3q(7Z!+h`^Lz>GH1)iw{9-XNgecr1mw53F?JW3x50&!^&apN~dJt={Z#^xMH)Qdj)*#k^7{vp9?bWzD6=E z><+HGJoH~`RiTDZg8MgTR8ra7$p;77Hzcb(E-qCnwP~0&%4|K^{=^B2Ku%_l zsdS!%wBR%9qD9`y+oU(l7b^%wTCz;hkFadRp^NeUAs?zW z(g$&`3D7gZtg3xlYNp_X1?~&-T1ZC2tk;GNT8))oK-_jX3xSH)+a{V1sfc2LFjqF5K2NP@63>|KGp+d zSW;DI!K8OLB#>SgJ5LYV(9v+mn3vYQBWj-p9O-znhVGPYIK%)`Y&a7rx%>_EG+YWu z4d5<@#sJPg(0X^vMaO*a>?0QN6;$rBLWlf^*Hpmq#;d4$kDp{brNgK(4}o5Q-6&#Z=O znA9Fgk1?&TGi@_DH|LpT1e`Eu-hCUUtZ`v<@PzW|pm;pr;7dfj)jf?Oi?y?)qu!b{ zz)WC#y7qh?cLfzTdT(;s$FlpSvz!LeE{|rU^i9gzcqX2KoL)dYysq|*vG)NoX!FCz znIOg13dxPF3#50`g@M!QRPgv{5UT31bi|aT;M}Fc`#IpQ!}Zp@>ZqU=dTdmSP0rbs zI5gGxrqe^2Hbt6STRkjr?ZWV}xLT9xMx;eIozF?@wqPbNSzR%oAJRl9Dd13G!pUzi zBc_`3?gdppKJwtg%Q zin`sgV#gz`dntqv%=-0BUi=;cRAOf9Vgm;k%Z4lQ(OsSqO$m+{6<*$nH)Rau0U=CQ12#S^g9By!3!Ue?$q*ADztlU88v zs;!7b8Vw6NIG2ki!V9OzlnXk_wqpn7`s%9V-s;~><1w;gD2w#;xt3Mx+JM{DYL?>) zdG4Ad3Ry6x2`N4jA$R(xx1pj&w%x^QLgU3!f0?`t#i>7Twm==azi48Tl%b7oyGy_? zdHFs#a*D*77jyVzEK8Q}!B6JWlevuCi>7pc({|2<{rau>s?5c64AUkZiNY&{tn=2^ zIUt7Z*rwlnnU#(PYB(1xYXe+M5F!#XUPVDXoJDKnq?hCsfN%up0=QdS>BA zAX@dq|KcNzQv(htN=#l6^s8@xEU@f7w4kkDdjuw1e1%WxMFXDUrcP#Hn~R{7&HdR= z5$*c;Z12uKAvj1XL*+8tOAAIrKW6E>$HoD|^l5+*1>dghKq!BpgT=Jt8@zq5mab7Y zGY-`$sfX%qkY=N#W Sso0$oCSat8(yc_^dGaS?wEO%3 diff --git a/web/icons/icon-512.png b/web/icons/icon-512.png deleted file mode 100644 index febd9a4afc8a37d79d757be6785d32f3d93fab96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8278 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 diff --git a/web/icons/icon.svg b/web/icons/icon.svg deleted file mode 100644 index d4902fc..0000000 --- a/web/icons/icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - diff --git a/web/manifest.webmanifest b/web/manifest.webmanifest index 18eb96d..95e0ad3 100644 --- a/web/manifest.webmanifest +++ b/web/manifest.webmanifest @@ -7,12 +7,13 @@ "scope": "./", "display": "standalone", "orientation": "any", - "background_color": "#f7f2e8", - "theme_color": "#6b4426", + "background_color": "#F5EFE5", + "theme_color": "#4A2E1F", "icons": [ - { "src": "icons/icon-192.png", "sizes": "192x192", "type": "image/png" }, - { "src": "icons/icon-512.png", "sizes": "512x512", "type": "image/png" }, - { "src": "icons/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }, - { "src": "icons/icon.svg", "sizes": "any", "type": "image/svg+xml" } + { "src": "icons/icone-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" }, + { "src": "icons/icone-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" }, + { "src": "icons/icone-maskable-192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, + { "src": "icons/icone-maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }, + { "src": "icons/icone.svg", "sizes": "any", "type": "image/svg+xml", "purpose": "any" } ] } -- 2.54.0 From 27ae0285a0f57cdbda4cf4fd4a6e79c6045f5bb1 Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 3 Nov 2026 01:58:16 +0100 Subject: [PATCH 4/8] =?UTF-8?q?Charte=20appliqu=C3=A9e=20=C3=A0=20l'interf?= =?UTF-8?q?ace=20:=20couleurs,=20composants,=20mises=20en=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- web/app.css | 504 ++++++++++++++++++++++++++++++++++++++----------- web/index.html | 22 ++- 2 files changed, 412 insertions(+), 114 deletions(-) diff --git a/web/app.css b/web/app.css index 0ed68b4..216bc94 100644 --- a/web/app.css +++ b/web/app.css @@ -1,81 +1,191 @@ -/* Style de l'application. Palette provisoire et sobre (bois, ivoire, un - * accent vert), en attendant l'identité définitive : toutes les couleurs et - * tailles sont des variables, redéfinies pour le thème sombre. */ +/* Style de l'application, selon la charte graphique (ADR 0010, + * docs/identite/charte/) : les couleurs, tailles et rayons sont les + * variables de tokens.json, sous le même nom, redéfinies pour le thème + * sombre ; les composants reprennent bundle.css. */ + +/* ------------------------------------------------------------ Police */ + +/* Alegreya Sans (SIL Open Font License 1.1, voir fonts/OFL.txt), réduite + * aux caractères latins et convertie en woff2 (voir docs/identite/README.md). + * Embarquée dans le site, donc dans le cache du service worker : elle + * fonctionne hors ligne. */ +@font-face { + font-family: "Alegreya Sans"; + src: url("fonts/AlegreyaSans-Regular.woff2") format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Alegreya Sans"; + src: url("fonts/AlegreyaSans-Italic.woff2") format("woff2"); + font-weight: 400; + font-style: italic; + font-display: swap; +} + +@font-face { + font-family: "Alegreya Sans"; + src: url("fonts/AlegreyaSans-Medium.woff2") format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Alegreya Sans"; + src: url("fonts/AlegreyaSans-Bold.woff2") format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Alegreya Sans"; + src: url("fonts/AlegreyaSans-ExtraBold.woff2") format("woff2"); + font-weight: 800; + font-style: normal; + font-display: swap; +} + +/* ------------------------------------------------------------ Couleurs */ :root { - --text: #2b211a; - --muted: #6b5d50; - --background: #f7f2e8; - --accent: #2e6b4f; + --background: #f5efe5; + --surface: #fffcf6; + --surface-sunken: #ece3d4; + --text: #2b1d15; + --muted: #6b5c50; + --border: #ded2c0; + --border-strong: #8e7d6a; + --accent: #a8432b; --on-accent: #ffffff; - --border: #cbbfae; - --error: #a3261b; + --accent-soft: #f1d9cf; + --focus: #a8432b; + --error: #8c1c3a; + --verdict-good: #2f6b4f; + --verdict-doubtful: #7e5a0f; + --verdict-bad: #8c1c3a; + --brand-noyer: #4a2e1f; + --brand-ivoire: #f3ead8; + --brand-laiton: #8f6a1c; - --frame: #6b4426; - --bed: #e6cfa6; - --bar: #5c3a20; - --tray: #57371e; - --point-a: #9a6439; - --point-b: #c79b69; - --point-number: #f3e7d0; - --checker-player: #fbf6ea; - --checker-player-edge: #7d6a52; - --checker-computer: #2b221c; - --checker-computer-edge: #0d0a08; - --count-player: #2b211a; - --count-computer: #fbf6ea; - --die-player: #fbf6ea; - --pip-player: #2b211a; - --die-computer: #2b221c; - --pip-computer: #fbf6ea; - --cube: #fbf6ea; - --cube-text: #2b211a; - --highlight: #2e6b4f; - --target: rgba(46, 107, 79, 0.35); - --last-move: #d9822b; + --frame: #4a2e1f; + --bed: #e9dcc4; + --bar: #3f2619; + --tray: #3a2418; + --point-a: #6b4430; + --point-b: #c9ae88; + --point-number: #f3ead8; + --checker-player: #f7f0e2; + --checker-player-edge: #8c7a62; + --checker-computer: #2e1c12; + --checker-computer-edge: #120a05; + --count-player: #2b1d15; + --count-computer: #f3ead8; + --die-player: #f7f0e2; + --pip-player: #2b1d15; + --die-computer: #2e1c12; + --pip-computer: #f3ead8; + --cube: #f7f0e2; + --cube-text: #2b1d15; + --highlight: #a8432b; + --target: rgba(168, 67, 43, 0.32); + /* Dernier coup joué (marques et traces) : le laiton, rien d'autre. */ + --last-move: var(--brand-laiton); - --font-size: 17px; + /* Numéros des flèches. La charte les pose sur le cadre (point-number, + * ivoire) ; notre plateau les pose sur le fond, où l'ivoire ne se lirait + * pas : texte secondaire en thème clair (4,7:1 sur bed), point-number en + * thème sombre (6,3:1). */ + --point-label: var(--muted); + + --shadow-raised: 0 1px 2px rgba(43, 29, 21, 0.1); + + --font-sans: "Alegreya Sans", "Gill Sans", "Segoe UI", system-ui, sans-serif; + + --space-1: 4px; + --space-2: 8px; + --space-3: 12px; + --space-4: 16px; + --space-6: 24px; + --space-8: 32px; --button-height: 48px; - --radius: 8px; --page-width: 40rem; + --radius-sm: 6px; + --radius-md: 12px; + --radius-pill: 999px; + + /* Hauteur de la barre haute : boutons de 44 px et marges. */ + --topbar-height: 60px; } @media (prefers-color-scheme: dark) { :root { - --text: #ece4d6; - --muted: #b3a796; - --background: #1b1714; - --accent: #6fc3a0; - --on-accent: #10221a; - --border: #4d443b; - --error: #f08a7e; + --background: #17110d; + --surface: #221913; + --surface-sunken: #2c211a; + --text: #efe5d5; + --muted: #a99886; + --border: #3a2d24; + --border-strong: #7d6b5b; + --accent: #d0694b; + --on-accent: #1a110c; + --accent-soft: #4a2519; + --focus: #e58a6e; + --error: #f08fa6; + --verdict-good: #7ccba4; + --verdict-doubtful: #e0b04f; + --verdict-bad: #f08fa6; + --brand-laiton: #d6a64a; - --frame: #3a2616; - --bed: #6d5136; - --bar: #2f1f12; - --tray: #2c1d11; - --point-a: #4a3120; - --point-b: #8b6943; - --point-number: #d9cbb4; - --checker-player: #efe6d2; + --frame: #2a1a10; + --bed: #4a3626; + --bar: #24170e; + --tray: #22150d; + --point-a: #3a2519; + --point-b: #7e6142; + --point-number: #cdbfa8; + --checker-player: #ede3cf; --checker-player-edge: #8e7c64; - --checker-computer: #17110d; + --checker-computer: #140d09; --checker-computer-edge: #a8957d; - --highlight: #7fd6b0; - --target: rgba(127, 214, 176, 0.35); - --last-move: #f0a050; + --count-player: #2b1d15; + --count-computer: #f3ead8; + --die-player: #ede3cf; + --pip-player: #2b1d15; + --die-computer: #140d09; + --pip-computer: #ede3cf; + --cube: #ede3cf; + --cube-text: #2b1d15; + --highlight: #e07a5a; + --target: rgba(224, 122, 90, 0.38); + + --point-label: var(--point-number); + + --shadow-raised: 0 1px 2px rgba(0, 0, 0, 0.4); } } +/* -------------------------------------------------------------- Page */ + * { box-sizing: border-box; } +html { + -webkit-text-size-adjust: 100%; + text-size-adjust: 100%; +} + body { margin: 0 auto; max-width: var(--page-width); - padding: 0 0.5rem 1rem; - font: var(--font-size) / 1.45 system-ui, sans-serif; + padding: 0 var(--space-4) var(--space-6); + font-family: var(--font-sans); + font-size: 17px; + line-height: 25px; color: var(--text); background: var(--background); } @@ -84,78 +194,148 @@ body { display: none !important; } +a { + color: var(--accent); + text-underline-offset: 3px; +} + +/* Anneau de focus clavier, sur tout élément interactif. */ +:focus-visible { + outline: 3px solid var(--focus); + outline-offset: 2px; +} + +/* -------------------------------------------------------- Barre haute */ + .topbar { display: flex; - gap: 0.5rem; + gap: var(--space-2); align-items: center; - padding: 0.5rem 0; + min-height: var(--topbar-height); + padding-block: var(--space-2); } -.topbar h1 { +.topbar .brand { flex: 1; + display: flex; + align-items: center; + min-width: 0; margin: 0; - font-size: 1.25rem; } +.topbar .brand img { + display: block; + width: auto; + height: 32px; +} + +/* ------------------------------------------------------------ Boutons */ + +/* Ronds comme des pions ; un seul bouton principal (brique) par écran, + * les autres en contour. */ button { min-height: var(--button-height); - padding: 0 1rem; + padding: 0 20px; font: inherit; - font-weight: 600; + font-weight: 700; color: var(--on-accent); background: var(--accent); - border: 1px solid var(--accent); - border-radius: var(--radius); + border: 2px solid var(--accent); + border-radius: var(--radius-pill); + cursor: pointer; + /* Pas de délai ni de zoom sur un double toucher. */ + touch-action: manipulation; + -webkit-tap-highlight-color: transparent; } button.secondary { color: var(--text); background: transparent; - border-color: var(--border); + border-color: var(--border-strong); } -.topbar button { - min-height: 40px; - padding: 0 0.75rem; - font-size: 0.9rem; +@media (hover: hover) { + button.secondary:hover:not(:disabled) { + background: var(--surface-sunken); + } +} + +/* Retour visuel au toucher. */ +button:active:not(:disabled) { + transform: translateY(1px); } button:disabled { opacity: 0.45; + cursor: default; +} + +.topbar button { + min-height: 44px; + padding: 0 14px; + font-size: 15px; + line-height: 20px; } .actions { display: flex; flex-wrap: wrap; - gap: 0.5rem; + gap: var(--space-2); } .actions button { - flex: 1; + flex: 1 1 auto; } +/* --------------------------------------------- Messages sous le plateau */ + +/* Compte de points : information secondaire, discrète. */ .pips { - margin: 0.25rem 0 0; - font-size: 0.85rem; + margin: var(--space-2) 0 0; + font-size: 15px; + line-height: 20px; color: var(--muted); text-align: center; + font-variant-numeric: tabular-nums; } -.info, -.prompt { - min-height: 1.45em; - margin: 0.4rem 0; -} - +/* Ce qui vient de se passer (coup de l'ordinateur, jet d'ouverture) : + * secondaire, mais lisible. */ .info { + min-height: 25px; + margin: var(--space-3) 0 0; color: var(--muted); } -.prompt { - font-weight: 600; +.info:empty { + margin-top: 0; } -/* L'ordinateur réfléchit : trois points qui apparaissent l'un après l'autre. */ +/* La consigne du moment : ce qui doit ressortir de l'écran. Fond d'accent + * léger quand c'est au joueur, neutre pendant que l'ordinateur réfléchit. */ +.prompt { + min-height: calc(25px + 2 * var(--space-3)); + margin: var(--space-3) 0; + padding: var(--space-3) var(--space-4); + font-weight: 700; + background: var(--accent-soft); + border-radius: var(--radius-md); +} + +.prompt.thinking, +body.busy .prompt { + font-weight: 400; + background: var(--surface-sunken); +} + +/* Fin de partie : le résultat en titre. */ +#game:has(#again:not([hidden])) .prompt { + font-size: 24px; + line-height: 30px; +} + +/* L'ordinateur réfléchit : trois points qui apparaissent l'un après + * l'autre (la seule animation en boucle). */ .prompt.thinking::after { content: ""; animation: thinking 1.2s steps(4, end) infinite; @@ -168,6 +348,17 @@ button:disabled { 75% { content: "..."; } } +@media (prefers-reduced-motion: reduce) { + .prompt.thinking::after { + animation: none; + content: "…"; + } + + button:active:not(:disabled) { + transform: none; + } +} + /* ------------------------------------------------------------ Plateau */ .board { @@ -176,7 +367,20 @@ button:disabled { height: auto; aspect-ratio: 640 / 520; user-select: none; + -webkit-user-select: none; + touch-action: manipulation; -webkit-tap-highlight-color: transparent; + font-family: var(--font-sans); +} + +/* Téléphone en portrait : le plateau, héros de l'écran, prend la largeur + * presque entière (8 px de marge au lieu de 16) ; chaque pixel compte pour + * toucher un pion. */ +@media (max-width: 40rem) and (orientation: portrait) { + .board { + width: calc(100% + 2 * (var(--space-4) - var(--space-2))); + margin-inline: calc(var(--space-2) - var(--space-4)); + } } .board-frame { fill: var(--frame); } @@ -187,8 +391,9 @@ button:disabled { .point-b { fill: var(--point-b); } .point-number { - fill: var(--muted); + fill: var(--point-label); font-size: 13px; + font-weight: 500; text-anchor: middle; } @@ -206,20 +411,31 @@ button:disabled { stroke: var(--checker-computer-edge); } +/* Filet intérieur des pions (bundle.css), prêt pour le jour où le plateau + * le dessine. */ +.checker-ring { + fill: none; + stroke-width: 1.5; +} + +.ring-player { stroke: var(--checker-player-edge); } +.ring-computer { stroke: var(--checker-computer-edge); } + .checker.movable { stroke: var(--highlight); - stroke-width: 4; + stroke-width: 3; } .checker.selected { stroke: var(--highlight); - stroke-width: 7; + stroke-width: 6; } .checker-count { font-size: 18px; font-weight: 700; text-anchor: middle; + font-variant-numeric: tabular-nums; } .count-player { fill: var(--count-player); } @@ -228,8 +444,8 @@ button:disabled { .target-zone { fill: var(--target); } .last-move { fill: var(--last-move); } -.die-player { fill: var(--die-player); stroke: var(--checker-player-edge); } -.die-computer { fill: var(--die-computer); stroke: var(--checker-computer-edge); } +.die-player { fill: var(--die-player); stroke: var(--checker-player-edge); stroke-width: 1.5; } +.die-computer { fill: var(--die-computer); stroke: var(--checker-computer-edge); stroke-width: 1.5; } .pip-player { fill: var(--pip-player); } .pip-computer { fill: var(--pip-computer); } @@ -238,7 +454,7 @@ button:disabled { .cube-value { fill: var(--cube-text); font-size: 17px; - font-weight: 700; + font-weight: 800; text-anchor: middle; } @@ -249,70 +465,138 @@ button:disabled { /* --------------------------------------------------------------- Aide */ +.help { + max-width: var(--page-width); + margin: 0 auto; +} + .help h2 { - margin-top: 1.5rem; - font-size: 1.2rem; + margin: var(--space-8) 0 var(--space-2); + font-size: 24px; + line-height: 30px; + font-weight: 700; } .help h3 { - margin-bottom: 0.25rem; - font-size: 1rem; + margin: var(--space-6) 0 var(--space-1); + font-size: 20px; + line-height: 26px; + font-weight: 700; +} + +.help p { + margin: var(--space-2) 0; } .steps { - padding-left: 1.25rem; + margin: var(--space-2) 0; + padding-left: var(--space-6); +} + +.steps li + li { + margin-top: var(--space-1); +} + +.steps li::marker { + color: var(--muted); +} + +/* Glossaire : une liste de définitions, sur une carte. */ +.glossary { + margin: var(--space-3) 0 0; + padding: var(--space-1) var(--space-4); + background: var(--surface); + border: 1px solid var(--border); + border-radius: var(--radius-md); + box-shadow: var(--shadow-raised); } .glossary dt { - margin-top: 0.6rem; - font-weight: 600; + padding-top: var(--space-3); + font-weight: 700; } .glossary dd { margin: 0; + padding-bottom: var(--space-3); +} + +.glossary dd + dt { + border-top: 1px solid var(--border); } .about { - margin-top: 2rem; - font-size: 0.85rem; + margin-top: var(--space-8); + font-size: 15px; + line-height: 20px; color: var(--muted); } +/* Une cible tactile confortable pour le lien. */ .about a { - color: var(--accent); + display: inline-block; + padding-block: 12px; } /* ------------------------------------------------------- Mode paysage */ -/* Téléphone tourné : le plateau prend toute la hauteur disponible, et les - * messages et boutons passent dans une colonne à sa droite. */ +/* Téléphone tourné : le plateau prend toute la hauteur de l'écran, à + * gauche ; la barre haute, les messages et les boutons passent dans une + * colonne à sa droite. */ @media (orientation: landscape) and (max-height: 40rem) { body { max-width: none; + padding: 0 var(--space-4); } - .topbar { - padding: 0.25rem 0; - } - - #game { + /* Le jeu en deux colonnes : #game laisse ses enfants dans la grille de + * la page. Quand l'aide est affichée, #game est caché, la première + * colonne n'a plus de largeur et l'aide prend toute la place. */ + body { display: grid; - grid-template-columns: auto minmax(12rem, 1fr); - grid-template-rows: auto auto auto 1fr; - column-gap: 1rem; + grid-template-columns: auto minmax(13rem, 1fr); + grid-template-rows: auto auto auto auto auto 1fr; + column-gap: var(--space-4); align-items: start; } + #game { + display: contents; + } + + .topbar { + grid-column: 2; + grid-row: 1; + min-height: 0; + padding-block: var(--space-2) 0; + } + .board { - grid-row: 1 / 5; + grid-column: 1; + grid-row: 1 / -1; width: auto; - /* Hauteur de l'écran moins la barre du haut (boutons de 40 px). */ - height: calc(100vh - 3.5rem); - height: calc(100dvh - 3.5rem); + height: calc(100vh - 2 * var(--space-2)); + height: calc(100dvh - 2 * var(--space-2)); max-width: 70vw; + margin-block: var(--space-2); + } + + .pips, + .info, + .prompt, + .actions { + grid-column: 2; } .pips { text-align: left; } + + .actions { + margin-bottom: var(--space-2); + } + + .help { + grid-column: 1 / -1; + } } diff --git a/web/index.html b/web/index.html index 63ad803..25d2856 100644 --- a/web/index.html +++ b/web/index.html @@ -4,17 +4,31 @@ - + Ustagammon - + + + + + - +

-

Ustagammon

+ +

+ + + + + Ustagammon + +

-- 2.54.0 From 797c1724ab9c09ddd2b9211a1087df70a12ae2e3 Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 3 Nov 2026 01:59:31 +0100 Subject: [PATCH 5/8] =?UTF-8?q?Lint=20:=20la=20licence=20de=20la=20police?= =?UTF-8?q?=20reste=20identique=20=C3=A0=20l'original?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- tests/lint.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/lint.sh b/tests/lint.sh index 7406a01..18f705f 100755 --- a/tests/lint.sh +++ b/tests/lint.sh @@ -29,10 +29,11 @@ for f in "${fichiers[@]}"; do if grep -q $'\r' "$f"; then signaler "$f : fins de ligne Windows (CRLF)" fi - # Copies fidèles de GNU Backgammon (sources et données) : on ne - # reformate pas leurs espaces, pour rester identique à l'original. + # Copies fidèles de GNU Backgammon (sources et données) et de la licence + # de la police : on ne reformate pas leurs espaces, pour rester + # identique à l'original. case "$f" in - engine/gnubg/* | engine/data/*) continue ;; + engine/gnubg/* | engine/data/* | web/fonts/OFL.txt) continue ;; esac if grep -nE '[[:blank:]]+$' "$f" >/dev/null; then signaler "$f : espaces en fin de ligne (lignes $(grep -nE '[[:blank:]]+$' "$f" | cut -d: -f1 | paste -sd, -))" -- 2.54.0 From 62dfc1922ab353e86a3ecc8e4565896472f88807 Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 3 Nov 2026 02:07:18 +0100 Subject: [PATCH 6/8] =?UTF-8?q?Chiffres=20align=C3=A9s=20sur=20le=20platea?= =?UTF-8?q?u=20et=20dans=20le=20compte=20de=20points?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- web/app.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/web/app.css b/web/app.css index 216bc94..714b16c 100644 --- a/web/app.css +++ b/web/app.css @@ -296,7 +296,7 @@ button:disabled { line-height: 20px; color: var(--muted); text-align: center; - font-variant-numeric: tabular-nums; + font-variant-numeric: tabular-nums lining-nums; } /* Ce qui vient de se passer (coup de l'ordinateur, jet d'ouverture) : @@ -371,6 +371,9 @@ body.busy .prompt { touch-action: manipulation; -webkit-tap-highlight-color: transparent; font-family: var(--font-sans); + /* Alegreya Sans dessine par défaut des chiffres elzéviriens (de hauteurs + * variables) : sur le plateau, des chiffres alignés se lisent mieux. */ + font-variant-numeric: tabular-nums lining-nums; } /* Téléphone en portrait : le plateau, héros de l'écran, prend la largeur @@ -435,7 +438,6 @@ body.busy .prompt { font-size: 18px; font-weight: 700; text-anchor: middle; - font-variant-numeric: tabular-nums; } .count-player { fill: var(--count-player); } -- 2.54.0 From d61efbc9aec18672c565bcc0700d5f2cd6ef7fc5 Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 3 Nov 2026 02:07:18 +0100 Subject: [PATCH 7/8] =?UTF-8?q?Plan=20:=20r=C3=A9sultat=20de=20l'applicati?= =?UTF-8?q?on=20de=20la=20charte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- docs/plans/2026-11-03-charte-ui.md | 37 ++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/docs/plans/2026-11-03-charte-ui.md b/docs/plans/2026-11-03-charte-ui.md index f272c19..29757d9 100644 --- a/docs/plans/2026-11-03-charte-ui.md +++ b/docs/plans/2026-11-03-charte-ui.md @@ -2,7 +2,7 @@ - **Date** : 2026-11-03 - **Étape** : 0d (finition demandée par Pierre) -- **Statut** : en cours +- **Statut** : terminé - **Exécutant** : sous-agent general-purpose dans le rôle d'un designer UI, dans un worktree isolé ## Objectif @@ -69,4 +69,37 @@ plateau, les écarts à la charte, le résultat des tests. ## Résultat -À remplir à la clôture. +Branche `charte-ui-travail`. Tests : `make lint`, `make test` (10/10) et +`make test-browser` (Chromium et Firefox, partie complète, paysage, hors +ligne, CSP) au vert. Contrôle supplémentaire en 360 × 740, 412 × 915, +915 × 412 et 740 × 360, clair et sombre, dans les deux navigateurs : aucun +défilement horizontal, rien hors de l'écran, aucun bouton sous 44 px. + +**Appliqué** : couleurs des deux thèmes depuis `tokens.json` (brique en +accent, laiton pour `--last-move`) ; Alegreya Sans en cinq graisses dans +`web/fonts/` (woff2, sous-ensemble latin, 143 Ko au lieu de 1,3 Mo en TTF, +licence `OFL.txt`), mise en cache par le service worker comme tout le site ; +boutons ronds, anneau de focus, zone de consigne ; logo dans la barre haute +(version sombre en thème sombre) ; icônes, favicon et icône Apple copiés de +`docs/identite/logo/` par `make site` (une seule source ; anciennes icônes +et `scripts/make-icons.py` supprimés) ; `theme-color` `#4A2E1F`. + +**Passe d'interface** : consigne dans un cadre `accent-soft` (neutre pendant +que l'ordinateur réfléchit, `body.busy` dès le chargement) ; résultat de fin +de partie en taille titre ; compte de points et dernier coup en texte +secondaire ; plateau à 8 px des bords en portrait ; en paysage, barre haute +dans la colonne de droite, le plateau gagne toute la hauteur (344 px au lieu +de 304 en 740 × 360) ; cibles de 44 à 48 px, `touch-action: manipulation` ; +aide en colonne de lecture, titres de la charte, glossaire en carte ; chiffres +alignés sur le plateau ; `prefers-reduced-motion` respecté. + +**Écarts à valider** : symbole seul au lieu du logo horizontal sous 392 px +de large et dans la colonne du paysage (le logo et les deux boutons ne +tiennent pas en 360 px) ; numéros des flèches en `muted` (clair) et +`point-number` (sombre), parce que notre plateau les pose sur le fond et non +sur le cadre ; chiffres alignés (`lining-nums`) en plus de `tabular-nums`. + +**À faire dans `board-view.ts`** (hors périmètre) : filet intérieur des pions +(classe `.checker-ring` prête), numéros sur le cadre, voile de cible en +triangle, marque du dernier coup en barrette laiton à la base de la flèche, +videau sur la barre, comme `docs/identite/charte/board.js`. -- 2.54.0 From 02050eff0137865180a30a5200f789b630524e14 Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 3 Nov 2026 04:56:53 +0100 Subject: [PATCH 8/8] =?UTF-8?q?Charte=20appliqu=C3=A9e=20:=20plan=20clos?= =?UTF-8?q?=20;=20fluidit=C3=A9=20ajout=C3=A9e=20=C3=A0=20la=20feuille=20d?= =?UTF-8?q?e=20route?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- docs/feuille-de-route.md | 2 +- docs/plans/2026-11-03-charte-ui.md | 105 ----------------------------- 2 files changed, 1 insertion(+), 106 deletions(-) delete mode 100644 docs/plans/2026-11-03-charte-ui.md diff --git a/docs/feuille-de-route.md b/docs/feuille-de-route.md index 466946d..1504fd8 100644 --- a/docs/feuille-de-route.md +++ b/docs/feuille-de-route.md @@ -21,7 +21,7 @@ garde-fous d'architecture (0d.1), déploiement sur https://ustagammon.sans.pub. | Sous-étape | Contenu | État | Plan | | --- | --- | --- | --- | | 0d.2 | Plateau minimal jouable (PWA hors ligne), publié ; reste la vérification avec Pierre sur le Fairphone 4 (`docs/guide-test-etape-0.md`, section « Étape 0d ») | 🔄 | | -| 0d.2+ | Appliquer la charte graphique à l'application (agent designer UI) : demande de Pierre | 🔄 | `plans/2026-11-03-charte-ui.md` | +| 0d.2+ | Fluidité de la partie : supprimer ce qui interrompt le jeu sans nécessité (bouton « Nouvelle partie » toujours visible, confirmations, étapes inutiles) : demande de Pierre | ⏳ | | **Critère de fin** : une partie complète jouée sur le Fairphone 4, moins de 2 s par coup de l'IA en niveau standard, tous les tests au vert. diff --git a/docs/plans/2026-11-03-charte-ui.md b/docs/plans/2026-11-03-charte-ui.md deleted file mode 100644 index 29757d9..0000000 --- a/docs/plans/2026-11-03-charte-ui.md +++ /dev/null @@ -1,105 +0,0 @@ -# Appliquer la charte graphique à l'application - -- **Date** : 2026-11-03 -- **Étape** : 0d (finition demandée par Pierre) -- **Statut** : terminé -- **Exécutant** : sous-agent general-purpose dans le rôle d'un designer UI, dans un worktree isolé - -## Objectif - -L'application publiée (https://ustagammon.sans.pub) adopte l'identité -d'Ustagammon (ADR 0010, `docs/identite/`) et gagne en qualité d'interface : -lisible, chaleureuse, agréable au toucher, dans les deux thèmes et les deux -orientations. Les choix d'identité sont déjà faits par Pierre : il s'agit de -les appliquer fidèlement et de soigner l'ergonomie, pas de les réinventer. - -## Consignes - -1. **Appliquer la charte** en suivant `docs/identite/charte/README.md` (section - « Appliquer la charte à `web/` ») : couleurs des deux thèmes depuis - `tokens.json`, police Alegreya Sans embarquée (OFL, licence jointe, ajoutée - au cache du service worker), composants de `bundle.css` (boutons, focus, - zone de consigne, filet des pions), logo horizontal dans la barre haute, - icônes et favicon de `docs/identite/logo/`, `theme-color` du manifeste. - Lire aussi `guide-de-marque.md` (ton, formes, mouvement). -2. **Passe de designer UI** sur les écrans existants (plateau, consignes et - boutons, fin de partie, aide, thème sombre, paysage) : - - hiérarchie visuelle claire : la consigne du moment ressort, l'information - secondaire (compte de points, dernier coup) reste discrète ; - - cibles tactiles d'au moins 44 à 48 px, espacements réguliers, rien qui - déborde en 360 px de large ni en paysage ; - - contrastes conformes aux tokens (déjà vérifiés par la charte) ; anneau de - focus visible au clavier ; - - page d'aide agréable à lire (titres, glossaire en liste de définitions) ; - - respecter `prefers-reduced-motion`. - Lister dans le rapport chaque amélioration et sa raison. -3. **Périmètre, pour éviter les conflits** : un autre agent ajoute en parallèle - l'animation et les traces du coup de l'ordinateur (`board-view.ts`, - `app.ts`, nouvelles classes CSS de traces). Ne modifie pas la géométrie ni - la logique de `board-view.ts` et `app.ts` ; agis par le CSS, les variables, - `index.html`, `texts.ts` (sans changer le sens des textes) et les fichiers - statiques. Si une amélioration demande de toucher au dessin du plateau, - décris-la dans le rapport au lieu de la faire. Prévois les couleurs des - traces dans les variables (`--last-move` en laiton selon les tokens). -4. **Tests** : `make lint`, `make test` (dont `tests/test_site.sh`, à mettre à - jour pour la police, les icônes et le service worker) et `make test-browser` - verts ; captures d'écran avant et après (portrait clair, portrait sombre, - paysage, aide, fin de partie) dans le dossier de travail temporaire. -5. `CREDITS.md` : Alegreya Sans (OFL) et le logo (CC BY-SA 4.0). - -Contraintes : -- `CLAUDE.md`, ADR 0007 à 0010 : simplicité, pas de framework CSS, identifiants - en anglais, commentaires et textes en français ; -- aucune modification de l'identité elle-même (couleurs, logo, police) : en cas - de doute ou de manque dans la charte, le signaler dans le rapport ; -- ne pas publier, ne pas pousser, ne pas créer de merge request ; -- commits petits, en français, avec la ligne - `Co-Authored-By: Claude Opus 5.5 `. - -Rapport attendu : ce qui a été appliqué, les améliorations d'interface et leurs -raisons, les captures avant et après (chemins), ce qui demande de toucher au -plateau, les écarts à la charte, le résultat des tests. - -## Critères de réussite - -- L'application suit la charte dans les deux thèmes (couleurs, police, logo, - icônes, composants), hors ligne compris. -- Rien ne déborde en 360 × 740, 412 × 915, 915 × 412 et 740 × 360. -- `make lint`, `make test` et `make test-browser` passent. - -## Résultat - -Branche `charte-ui-travail`. Tests : `make lint`, `make test` (10/10) et -`make test-browser` (Chromium et Firefox, partie complète, paysage, hors -ligne, CSP) au vert. Contrôle supplémentaire en 360 × 740, 412 × 915, -915 × 412 et 740 × 360, clair et sombre, dans les deux navigateurs : aucun -défilement horizontal, rien hors de l'écran, aucun bouton sous 44 px. - -**Appliqué** : couleurs des deux thèmes depuis `tokens.json` (brique en -accent, laiton pour `--last-move`) ; Alegreya Sans en cinq graisses dans -`web/fonts/` (woff2, sous-ensemble latin, 143 Ko au lieu de 1,3 Mo en TTF, -licence `OFL.txt`), mise en cache par le service worker comme tout le site ; -boutons ronds, anneau de focus, zone de consigne ; logo dans la barre haute -(version sombre en thème sombre) ; icônes, favicon et icône Apple copiés de -`docs/identite/logo/` par `make site` (une seule source ; anciennes icônes -et `scripts/make-icons.py` supprimés) ; `theme-color` `#4A2E1F`. - -**Passe d'interface** : consigne dans un cadre `accent-soft` (neutre pendant -que l'ordinateur réfléchit, `body.busy` dès le chargement) ; résultat de fin -de partie en taille titre ; compte de points et dernier coup en texte -secondaire ; plateau à 8 px des bords en portrait ; en paysage, barre haute -dans la colonne de droite, le plateau gagne toute la hauteur (344 px au lieu -de 304 en 740 × 360) ; cibles de 44 à 48 px, `touch-action: manipulation` ; -aide en colonne de lecture, titres de la charte, glossaire en carte ; chiffres -alignés sur le plateau ; `prefers-reduced-motion` respecté. - -**Écarts à valider** : symbole seul au lieu du logo horizontal sous 392 px -de large et dans la colonne du paysage (le logo et les deux boutons ne -tiennent pas en 360 px) ; numéros des flèches en `muted` (clair) et -`point-number` (sombre), parce que notre plateau les pose sur le fond et non -sur le cadre ; chiffres alignés (`lining-nums`) en plus de `tabular-nums`. - -**À faire dans `board-view.ts`** (hors périmètre) : filet intérieur des pions -(classe `.checker-ring` prête), numéros sur le cadre, voile de cible en -triangle, marque du dernier coup en barrette laiton à la base de la flèche, -videau sur la barre, comme `docs/identite/charte/board.js`. -- 2.54.0