From fd9e1a1644f391ceb3f7e625dd7649708cc28834 Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Thu, 3 Sep 2026 21:24:21 -0400 Subject: [PATCH] docs(f1-scoreboard): fill the last five settings, and mark three that do nothing This README was already the most complete of the scoreboards: 65 of the 70 settings were documented, including all eight display modes and the Vegas marquee. The five missing were customization.auto_scale and the four per-role font sizes, which sat alongside the fonts they scale without being named. Three settings do nothing. upcoming.show_session_times, upcoming.countdown_enabled and qualifying.show_gaps appear nowhere in the plugin and nowhere in the core. The countdown that countdown_enabled claims to gate is drawn regardless, so turning it off changes nothing. Marked in place; schema untouched. Two that look dead and are not, both checked before assuming: show_q1, show_q2 and show_q3 never appear as .get() arguments -- they are string literals in a tuple table that the loop reads through, the same runtime-key pattern as cricket's mode_durations (#416) and masters' display_modes (#418). Adds real rendered screenshots of both standings modes, the constructor show_driver_split toggle and four panel sizes. Standings are seeded onto the plugin instance; _last_update has to be seeded too or update() re-fetches and clears them. The other six modes -- recent races, upcoming, qualifying, practice, sprint and calendar -- need a live race weekend to have anything to show, which the README now says rather than leaving them unillustrated without explanation. check_plugin.py: 48/48 pass across all eight modes. Co-Authored-By: Claude Opus 5 --- README.md | 2 +- docs/assets/f1-scoreboard/driver-split.png | Bin 0 -> 14954 bytes docs/assets/f1-scoreboard/hero.png | Bin 0 -> 4471 bytes docs/assets/f1-scoreboard/panel-sizes.png | Bin 0 -> 19525 bytes docs/assets/f1-scoreboard/shots.json | 468 ++++++++++++++++++ docs/assets/f1-scoreboard/standings-modes.png | Bin 0 -> 15321 bytes plugins.json | 4 +- plugins/f1-scoreboard/README.md | 40 +- plugins/f1-scoreboard/manifest.json | 10 +- 9 files changed, 516 insertions(+), 8 deletions(-) create mode 100644 docs/assets/f1-scoreboard/driver-split.png create mode 100644 docs/assets/f1-scoreboard/hero.png create mode 100644 docs/assets/f1-scoreboard/panel-sizes.png create mode 100644 docs/assets/f1-scoreboard/shots.json create mode 100644 docs/assets/f1-scoreboard/standings-modes.png diff --git a/README.md b/README.md index 812a069d..4e049344 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ curl -X POST http://your-pi-ip:5000/api/v3/plugins/install \ | [Cricket Scoreboard](./plugins/cricket-scoreboard/) | Live, recent & upcoming international (Test/ODI/T20I) and major domestic cricket | | | [AFL Scoreboard](./plugins/afl-scoreboard/) | Australian Football League live, recent & upcoming games | afl-scoreboard on an LED panel | | [NRL Scoreboard](./plugins/nrl-scoreboard/) | National Rugby League live, recent & upcoming games | | -| [F1 Scoreboard](./plugins/f1-scoreboard/) | Formula 1 race results, schedules, and standings | | +| [F1 Scoreboard](./plugins/f1-scoreboard/) | Formula 1 race results, schedules, and standings | f1-scoreboard on an LED panel | | [UFC Scoreboard](./plugins/ufc-scoreboard/) | UFC/MMA live fights, fighter headshots, records, odds & results — *by [LegoGuy1000](https://github.com/legoguy1000)* | | | [Masters Tournament](./plugins/masters-tournament/) | Live Masters golf leaderboard, hole tracking, player cards | | | [March Madness](./plugins/march-madness/) | NCAA tournament bracket tracker with round branding and live scores | | diff --git a/docs/assets/f1-scoreboard/driver-split.png b/docs/assets/f1-scoreboard/driver-split.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2f2f8fa4fbb9fdc2c66636f63ed432174a3e2c GIT binary patch literal 14954 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/assets/f1-scoreboard/panel-sizes.png b/docs/assets/f1-scoreboard/panel-sizes.png new file mode 100644 index 0000000000000000000000000000000000000000..5276f0ef7cd56edc82101b025b18564b66b20874 GIT binary patch literal 19525 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 aFguc4`ghMZN+Ebo@+-pdT;4BszyE*G1mrIO literal 0 HcmV?d00001 diff --git a/docs/assets/f1-scoreboard/shots.json b/docs/assets/f1-scoreboard/shots.json new file mode 100644 index 00000000..0cab3003 --- /dev/null +++ b/docs/assets/f1-scoreboard/shots.json @@ -0,0 +1,468 @@ +{ + "plugin": "f1-scoreboard", + "_comment": "Standings are seeded onto the plugin instance rather than fetched, and _last_update is seeded so update() does not re-fetch and clear them. The cards scroll, so shots step frames. Drivers, teams and points are invented.", + "defaults": { + "width": 128, + "height": 32, + "scale": 6, + "freeze_time": "2026-09-03T18:00:00+00:00", + "skip_update": true, + "frames": 60, + "config": { + "enabled": true + }, + "attrs": { + "_driver_standings": [ + { + "position": 1, + "code": "VER", + "name": "M. Verstappen", + "constructor_id": "red_bull", + "points": 374, + "wins": 9, + "is_favorite": true, + "gap_to_leader": 0, + "poles": 0, + "last_race_pts": 0 + }, + { + "position": 2, + "code": "NOR", + "name": "L. Norris", + "constructor_id": "mclaren", + "points": 331, + "wins": 4, + "is_favorite": false, + "gap_to_leader": 43, + "poles": 0, + "last_race_pts": 0 + }, + { + "position": 3, + "code": "PIA", + "name": "O. Piastri", + "constructor_id": "mclaren", + "points": 307, + "wins": 3, + "is_favorite": false, + "gap_to_leader": 67, + "poles": 0, + "last_race_pts": 0 + }, + { + "position": 4, + "code": "LEC", + "name": "C. Leclerc", + "constructor_id": "ferrari", + "points": 245, + "wins": 1, + "is_favorite": false, + "gap_to_leader": 129, + "poles": 0, + "last_race_pts": 0 + }, + { + "position": 5, + "code": "RUS", + "name": "G. Russell", + "constructor_id": "mercedes", + "points": 211, + "wins": 2, + "is_favorite": false, + "gap_to_leader": 163, + "poles": 0, + "last_race_pts": 0 + } + ], + "_constructor_standings": [ + { + "position": 1, + "constructor_id": "mclaren", + "name": "McLaren", + "points": 638, + "wins": 7, + "code": "MCL" + }, + { + "position": 2, + "constructor_id": "red_bull", + "name": "Red Bull", + "points": 521, + "wins": 9, + "code": "RED" + }, + { + "position": 3, + "constructor_id": "ferrari", + "name": "Ferrari", + "points": 456, + "wins": 1, + "code": "FER" + }, + { + "position": 4, + "constructor_id": "mercedes", + "name": "Mercedes", + "points": 398, + "wins": 2, + "code": "MER" + } + ], + "_last_update": 1788458400.0 + } + }, + "shots": [ + { + "name": "hero", + "frames": 280, + "width": 256, + "config": { + "enabled": true, + "driver_standings": { + "enabled": true + }, + "constructor_standings": { + "enabled": false + }, + "recent_races": { + "enabled": false + }, + "upcoming": { + "enabled": false + }, + "qualifying": { + "enabled": false + }, + "practice": { + "enabled": false + }, + "sprint": { + "enabled": false + }, + "calendar": { + "enabled": false + } + } + }, + { + "name": "m-drivers", + "frames": 280, + "width": 256, + "standalone": false, + "config": { + "enabled": true, + "driver_standings": { + "enabled": true + }, + "constructor_standings": { + "enabled": false + }, + "recent_races": { + "enabled": false + }, + "upcoming": { + "enabled": false + }, + "qualifying": { + "enabled": false + }, + "practice": { + "enabled": false + }, + "sprint": { + "enabled": false + }, + "calendar": { + "enabled": false + } + } + }, + { + "name": "m-constructors", + "frames": 280, + "width": 256, + "standalone": false, + "config": { + "enabled": true, + "driver_standings": { + "enabled": false + }, + "constructor_standings": { + "enabled": true + }, + "recent_races": { + "enabled": false + }, + "upcoming": { + "enabled": false + }, + "qualifying": { + "enabled": false + }, + "practice": { + "enabled": false + }, + "sprint": { + "enabled": false + }, + "calendar": { + "enabled": false + } + } + }, + { + "name": "split-on", + "frames": 340, + "width": 256, + "standalone": false, + "config": { + "enabled": true, + "driver_standings": { + "enabled": false + }, + "constructor_standings": { + "enabled": true, + "show_driver_split": true + }, + "recent_races": { + "enabled": false + }, + "upcoming": { + "enabled": false + }, + "qualifying": { + "enabled": false + }, + "practice": { + "enabled": false + }, + "sprint": { + "enabled": false + }, + "calendar": { + "enabled": false + } + } + }, + { + "name": "split-off", + "frames": 340, + "width": 256, + "standalone": false, + "config": { + "enabled": true, + "driver_standings": { + "enabled": false + }, + "constructor_standings": { + "enabled": true, + "show_driver_split": false + }, + "recent_races": { + "enabled": false + }, + "upcoming": { + "enabled": false + }, + "qualifying": { + "enabled": false + }, + "practice": { + "enabled": false + }, + "sprint": { + "enabled": false + }, + "calendar": { + "enabled": false + } + } + }, + { + "name": "size-64x32", + "width": 64, + "frames": 280, + "standalone": false, + "config": { + "enabled": true, + "driver_standings": { + "enabled": true + }, + "constructor_standings": { + "enabled": false + }, + "recent_races": { + "enabled": false + }, + "upcoming": { + "enabled": false + }, + "qualifying": { + "enabled": false + }, + "practice": { + "enabled": false + }, + "sprint": { + "enabled": false + }, + "calendar": { + "enabled": false + } + } + }, + { + "name": "size-128x32", + "width": 128, + "frames": 280, + "standalone": false, + "config": { + "enabled": true, + "driver_standings": { + "enabled": true + }, + "constructor_standings": { + "enabled": false + }, + "recent_races": { + "enabled": false + }, + "upcoming": { + "enabled": false + }, + "qualifying": { + "enabled": false + }, + "practice": { + "enabled": false + }, + "sprint": { + "enabled": false + }, + "calendar": { + "enabled": false + } + } + }, + { + "name": "size-128x64", + "width": 128, + "height": 64, + "frames": 280, + "standalone": false, + "config": { + "enabled": true, + "driver_standings": { + "enabled": true + }, + "constructor_standings": { + "enabled": false + }, + "recent_races": { + "enabled": false + }, + "upcoming": { + "enabled": false + }, + "qualifying": { + "enabled": false + }, + "practice": { + "enabled": false + }, + "sprint": { + "enabled": false + }, + "calendar": { + "enabled": false + } + } + }, + { + "name": "size-256x32", + "width": 256, + "frames": 280, + "standalone": false, + "config": { + "enabled": true, + "driver_standings": { + "enabled": true + }, + "constructor_standings": { + "enabled": false + }, + "recent_races": { + "enabled": false + }, + "upcoming": { + "enabled": false + }, + "qualifying": { + "enabled": false + }, + "practice": { + "enabled": false + }, + "sprint": { + "enabled": false + }, + "calendar": { + "enabled": false + } + } + } + ], + "composites": [ + { + "name": "standings-modes", + "columns": 1, + "cells": [ + { + "shot": "m-drivers", + "label": "f1_driver_standings", + "sublabel": "position, code, team and points" + }, + { + "shot": "m-constructors", + "label": "f1_constructor_standings" + } + ] + }, + { + "name": "driver-split", + "columns": 1, + "cells": [ + { + "shot": "split-on", + "label": "constructor_standings.show_driver_split: true" + }, + { + "shot": "split-off", + "label": "constructor_standings.show_driver_split: false" + } + ] + }, + { + "name": "panel-sizes", + "columns": 2, + "cells": [ + { + "shot": "size-64x32", + "label": "64 x 32" + }, + { + "shot": "size-128x32", + "label": "128 x 32" + }, + { + "shot": "size-128x64", + "label": "128 x 64" + }, + { + "shot": "size-256x32", + "label": "256 x 32" + } + ] + } + ] +} diff --git a/docs/assets/f1-scoreboard/standings-modes.png b/docs/assets/f1-scoreboard/standings-modes.png new file mode 100644 index 0000000000000000000000000000000000000000..2e16eec43a58d772570e3e8c0ff90ff3e0cbef71 GIT binary patch literal 15321 zcmch82~?BU+Ah}9+B!hdDn$gUg2-G!pp3BsB1AwLWsC~Q3^Ilx5L+vt2q;L9F%<;_ zgvdODWe_1iWC&r73?a;c1QJL{a(C3;b@+eIf6iU^uFG1QMe^nQ_I~&KKJV~6Jh*CN zaA^PW{d|0UhYT<4nep*`Bg4nHhw<%K;GKe&$KV6aKMnPMwFntm9uGxWZe&6@4CA|e zhmWaQ`L+GtS5Wqi;!4|Mc?z^}?MixD~Dd*`N@) z>BQ|>T>+N2F`i()m(VOc87?Qm~fHgUczgfQ1$yWPv6v$fZk>PMn##lg}DOv}YtXu-7x;6E(aQR4-h@btO^g~55nya=JZbahyCY|=q$;@#zP7<>Gsf2E`!V&@PE_7oTLn1yG7(OU z2$=2S-Ig)x+a&K0z0}bC?3~leSdDp}i8gz^{{Yf(p`O+=I`9Y~$+O&?g(;+BVT+80 zYz&y6zO^(|B5YbSlL#%Yo_g3!7Ce2)K4Jr3B&O;=^S(s@qIIf|vaY@P@!pF|aSQlD z0yw$iPkAtUa2@^+Q4yR!~N z@ryG1(VX(D9S>u)=|fKIbG_+lJ?Gj_DBtdS)=ZvkiH0H8+VFUM(ivk9^&4QD^=$g+ z0m|ZX6PE+L5c@zXYiMjN!%y^Z>3StGk|imY?h$mUKi8O61a`!ioutKHkMl)LcPZoK z5S$)(qj}(3Hn4w+W0<=h?_PPC!6Urqh0~XY^g1WJtHy&jC!_OD(>bfrkRNnT1Pxph zJO>st(GYIXx>rE!LmiyrSzL1_1#1jU4@?A(b!@6FmbI}+P}=Nf*#8U;_F~Q~@IcL_ zH!VEV$RGJaVD@5r9GgSWJf6Vql6yQ1S_Fu+G%7$k^khpnHCKH(2`r`P(&cSmGo zWvBNdl@}LbTxPZ3bXM3xe$0;=fpal}r%N%qFF9WkZim^`2F`;^{EJm;O ziGi4~;B2spR(kM{%=25fpD-0h}ql49BI?&CU$5WPny)RmyPujO%u4j?35 zGlK@lY62*YtQBJgPyM!D195f*CStjc$o6@DVz9`r>eqYURGe5{D8v8{4_F?l;Kk7a z`Mvx2yBhhwE20N~_;p{!I-R+Q$qOIN7TyC^-&$!G30xy{zxXjlNBhlH07+G0Gl`N= z>ehBHQ(B8pCS6}{OiWvg8p&R8)A#?T6->VqKNUTfzq`#!z7|N7USgRi9#*Xx44u{Ohmlh5%J z!4sk6X0m?lv7 zpa;-=*|qS1>4aB9i;t-hIb(gccOBD0$W}E|Q+W-An-X+r(ocE$wmO z`A4Kcy!hQhe7sp06%}>=fKahRU1e=8a|zrEz$q`!G=bD5*jwg`V^Nx#ey*d#qA&V_ zsMjPtHK&hwVlMj1n_3@rR2~D+CJPpIckY%cM8EZr+St!Q3j+)yvZ=8#65uAtJ`R5D z@_M8Y5=krmI17SeGD^e|p;M=N0IUl+hWzzA_?WME z!?Ce2Ki^O-UPP@}vb0Ef=*%~%ZPty{WJxGW3#7}qxVUz)@Fk(f)%!8m%iXR`Zd~Bq zb}o#R*ZaZ%&e0#{ec{hv?_ks)mXkz~Zyj-~4$op;AIw!_Ed;2NY(w^C-$N)Cz zeis}(G~_3RWGXw%s-`$=WKK4Mukwv%bS^B!7oC|QcSYtte}3}RJ5j%Z;yQi=IkO5f zG;}SBf7Cl#l-ZTe7&(@?@tbs@LYuLxvYO{;nhyB(_l}LRF#x=4?5cc5*FA!NlYaK; z?aYPwyh2Qk&wL-e=a=cFgv`~o=eqFl>A3rGaU!R)YilXed0D|zc_unuOVy1LERJ_? zHlk7eRQxag+kYtcoItLZ@PJ$7fY1+NA(LC=o?mDg*Iv*^!_k5U;sHy_$j}931RD(t z;nV;h@hU)rhpjX)P~4VO@`>=VcH3GHOJF-l5LH?#V&UoO_!CWG8wCuMBGCfPW(hpI z^UemmKNG=VU)9x(0KRh|;lRf7C}sUS?wu(^v{(g^L#bz5d3$>o3TZIv4?upoKhXfc zj1GGH+rCVlNpYRv?RLgc07mUt53$81h&SaWx+=uL^Xtjdqv?dzQdxq%X*# zH)ryWDRM^BR47#%%>fWNX9Oe)_C^EE5m^KyMgoNJtiahT!2cpE+Ww53@Qu_Cny-UG z!j{^titW{XCp>HHSGEsu*W%QUab^kTA`6R<(7wFe5SEvoPQ>#RM?|B`eo!kFWd*(6 zvyZ*?#0JUfZ(%K0A)7dCE|Z|PKfv9?hly|C*7&zQOwtK50vlUllN2YeSATqp%b;(M zse?1#{Aj6)*S)1OSnSZh5Lh`&uNZp`&i*B4v(*XdlgfGf+r2)u8;fF*0NCj4t9l1TR9}N6giPDG6A>}qnJg=ww)HU@;(tN!yqcP|rR7HcN>T~g zc*A^kb2?#ga8SX4*#jK#;E7*e;l-j33XfF5njlxul|JLOIZ$Hg@V@*}t4FY23Z}P#1B+-L1AHvB5ZK>y`8q_KqL#f*|Kk`o~FQNGFXcuzUAA5ASCj+Z%b4Z zs=azaWT7r+wqn<%U)*w64%=98*lf8}w^X~hfTtMD5Q-g?Z?ub^_P>Al5_gYgBbT$# z{8s?Ehi7F2v7mKV+%Jn#klFy6wr?)_(ICc74P0HeZetB2R8hF~(ZAeyd$&1yB&fo- zX=9eVm4No@4Fb!onyeE?HcN4Tb{e6&V1tQH2>?WheK|c7Eg%$=s}$?xYd?iw$d-?? z4sd8DsNb8ocaNBCwjRJigan}|xd$;$39Re5tcGt6{&;75O&qPv8b(cnLZL5*^73@w z!s6mL{3o7bNw&7CMAKujLW;$pZ=zREhi@#XIM2OFK+L=~-l%b2BQh(SL)SW_#1cTAlgnk|&`4@)Qj>q1Wl&HM4wp&m zf@Q_WG|)#_<=?rk&t2P?ppqC|2IVljesz0H8OIqTa0qxVi*7f?<$U*ikmZh#*IWsC zmrCB=jOMcL#TgsNHEo9rRCs!dKcln2c5b#r!MF=eCR%GV38Kj6?NC})I?apA*?TIx zq{MFlIZo?HGSQiwMh{h&tbuke^dpB@6;{;xL!T>HMj+RE4H-CB-42n>?Enq#AkCQyq@ZBOsG4?Lsu`dA~EPNm(3yucX)oPa_QStQSb?$ zUTRk42zq+J#)psZseMF5gZ|w=Ot-OxlJn$}QPc8gd~fvm zHE%Sn=C$+g^KA#5cb7k?NB-&M`8F>%zooyn3mja^%F+(695&65m&S*bW*p6wQ^`jx zCb?+k*rLtG8B@2f6>Lc3A6AgBXa+}vTpoC6(OOPs>h*-?a&J8Qb9(=&9npRkJPYkAGQMoxydYT-w*UIpijtRy z>#Wct>1_0v4z9uu(jIwI>vP!=vc(S`zWbD=1Kx&B?6S1iaR`^e<73m^{S0r~_^*_9 z$wq9Ljbo^iM}wEx9=Hu@n1*9M^GU!y&~l_JZ+N(e^~Bj)=o#6f)_x!al60QG!DNV zoh&2$8u1`#xu!>S)Rat&Uao1;J{6VlRL+`yB2~%dHr8BxY35H}xo2??)mRw<4qZMjfM;)$L(=Vm`a>QjgdOlL4 zV`XFgQ-pms`L2=BO3y-A+b7!QKb4X8vdai3Tqo1*TZ%_aU0IHNUitmzO$SC5Q@rwH zD``~!(T`){FKv&T$y?^5zTR@i`lcu$-dWd{QKIJZ+;O?B_?Vc7 z11KY@K@}APL$gz5_Oabkr8!9hrSJW%@(&O9x#ooX$O{xNN0!d?AFa}{QCjL$huegF z{Oq~^)0`84*GcjUawe}L!fIuv&$%!M1A4!lGCvJqNjkfo>DmJNoi zyj?4YFF&Ud-s2EO^sncJ`IBKmVbr zoZLH@QLDZ0kWr=mxtB`4{+7nnXYfIloZpWm32FM_W-2ucRcpxYE3kAo;o#P^nP=9y z^y}stmFI@f(}!l<`)AMKY*!ceJV0?@o5XK5wso8%s7YY(buz=WOqLX3RSKKbu2u0e zKZf=7-MoK0PJfKp_o28{V$h|d`9Q~AyUYOVg0&w~{**ePI6_Kss(I*amvGNODq(&? z8-FbdR+dv*qT0A^Mtxj6WAc9agKTeKM1po=`}#_zn|masK@U1jxhKjCgvyJ{?a&k{I6c(F^P)1|~o1R2^E!X}OfeUATqGVP-7hGSG=6?%=+O)t4 z8`PC@xpuws%u1At7Af7@bx{gChE>a=#-++9e*P z==;<|B8l)CSEV?gjSAxBatr>sbhqKHrpU~t&=&{mybS|%&_-!cG1|;%M|iE@1^=qC zx--M3PEBzSP!%i*q~w@WL}^Z`QjK!>L6bAxMWN;J?3@)`hg`i_yOi$IAS6+%&`;OD zfE`}|Egxt~v5mLXlwfSfchnGyOdZ*Ox^#>+aEG*qX-9k|tzRnzt>q%z`_}qGU2PI) zPw7_L`hDkTqck#N?zd=O;8dECjB+GTF@Kx;hdR8?W%B-)SW+bJQrdkfDrYqB&iyG@ zfA*S=LwoMaWJPm~=X(DZbL{@_F zO0Af$ggISxDRm5Y?;FAy+l7D*r{j)Sa`1j(4gQ>ws(5LP*#eS>n0n{OXN8r*zLap)%^Go)(CI z!Fk6|6Ra;ubZ0KT2t4LO9txWCo@DMG2s&B`Tc#_<_Ym`BS6G zel5{<|F{t=XII&E%IisIpn0Qu?_;P7P9t7!6G()i1-+WnJ-6<|-cgB$`PN?*+4 z3r7x`VAUi7{z^07il~Xp|3mRwh^Peg@rb~zs_QQW`Q3JD{94=ChjQF%2~6Zz>fR&r z29FGL-yagG*6A&s$#m`+pT_02KdT@7-7S3O=zLe_0OMBM!|ZX1G1xxS z_D-c((1={i4RukM#eNILn}+2+9%mkny@fSj?z0IgS(ca!{T$t&3D;eZu`;ygr0&Cn zHPB|wh2J)=iunV0^jSZu13NfLo`v=4@Ou5iEY&GUbKR(XscdFk4@!$V^Z->AEnrkW zqjo;mf5qSX%wUdFN7#w;s>4dNryrn1DcgS3EY8|rdRUek`=`(@Sw-L*jp<_$WwQ=< zvg&MA(zsc{4{zFiASDuPi`(xduaH|vw6^uJPQ!esv~+9*^{Bq&&#JD^+%+~7v6%LB zD#<9z$TihP{R|Z6z6|=c!8{9V#bUCYYlSQ1gL;!6iIuYaW-mRRVH>w2X1^3FJL{EE zj1P*BZ|;J&S&g;t`J6~cL;d^975@6!Ir-0@FUKBDo=D~&9$AYYJt99222j~Kq5A%R zSVkv6%MWH`UHLwe+z+zbww-`vyLmEmMhidXvF~p?vh|ndXh%`_Qzc`jt|6RW z9^(Z=$(Mb@CuxzszfnVVW4fc$qF{VVm*1<5Jp1mQoAQ$T#bbSLt+T=YY*o zZaQtWn8gqPqk|~^M7^6T@SB_$GOzcB{4+RNA~l2s=!d1W8njS=})b|g&os|T_I*y zxBjg9_%A8tlc{&AMEE}ILbA#XvY~3H!tm ztAN-#ot>RM1?JLR@KC?;AOiSqP{DTzJJc7S?|SIap(ggS@8ZHju1V$smd6h{msETm z>kvGgvwD-hGz>1dj{^dLk404z9)5K%7XiZn7~m@2NasR%OTVewM96dlW5R9|v0OnI z92m$zP&)*B$HwaKOg2-HT$ZWUnjU@PQi52-sCN}lFaQR%5p&O@_dDpf4wX0|sYz%p zpj`m(X6i&RldTyA&Eh zHC7v6e<99(wF(1F`D|KRTJsA#dA5CEuYLlAvl*v0aUEDe$9LhQT$vkfK{uMe zTjzySygF~S;`R1HK^uU{wB>gT>P<^eSNu#~X5Z-odWGUf=7L<6BGeafF0iSRd@I-U z-XrH>(9hdBikKE5{zB_gK7ekbWm0}{(0o-;z#Ob| ze=XNgYjTTVuGaug`t;Ot6_KZQ;wdwR%UlgAA$uxQCr}Cw8o(ELHUsh-@1FPY!@vX= zxAJHB0lf+oBFMcPw_F(~ zqIRkEnt>?Zp9z!&8bIVz;Yr|d7)^@hfHJx>TTIZkCZ_GFl9`qpsSl$I2T>*>I-g1>NtrgzWyi*YNF0X~8$L_`Sq_LS z>{TJ2bmZ!fuIaYR-sDWU0>Y8Ugtq|BEjC>cED>Y@yBC#}svHghsWa3F5O9+Pvywr~ z4VRJc?%6xFSD?qs2q?es)-X0toIr+fLmeC(CWC5FO^rVYif`M07#bR)hEBhW1A`^O zUh2N)!otGQ6RSYYg7!NmUeC1ZncG#;A?({)U|G0d+*ZZ_oS|KBRfWrx{8|jy^B4Wg z^KFa6K+)ji<`xqZtJoN_y}1S$GBGuuF#sN#K%m5AGGl<=;s70}hXB0Uhmw--LvF0+ zLD=rJ2$N?&Pc|P=v~LL80O+dW^zKp2tK#An;Mdpy4WKT%tgqj8+e4euz;M(%;nynI z5-lJO$YANbjK0~s(|d7yD%P7+%Fg;+y0=dtJ_hJ60KnI8Q?VdmuD^qJp&?CI12wtZ zG&n$Bpa_8hC5S$8FqAfXG^`G+X@5h+JQUWcboz5}lk)n2U9tzvRB|d4IEjAQ4_62Rfbr=6s$( z>pcOTp${M4fKlp4c3VK#%v9db%o1|cD=xHf3#dvqdd6x@o3WFU;5>qZ}oup@>o7B&Ba@kvIa z8+A~6JFnR@Dn0E9h9{B(`o|6cG!WJZp^*;keg6FU*MR*5sU{RG^7Ir>X2bgjVjlx* ziUe+gWG})f)qvzwY^q>hnfh~C$cQMjFod-$Tu3%UHU1_pEx%81w^<)&tAArYXfuRpj zZ`H2UE>_M~nxvg~Ul_;-f~S1I_yXjVGETE_g8{U;eVa!b1xkWmDa!8ak#@-xd;hkh z)_SeL?O0%o*S`lJ4~YeOk{5xX@uf(6oCqQD*(Gb+91Maa3wX*wO{5q?Z{1M5zT3In6azuLruCs<|RvaLJ8yD;tM#oXpiT zz;j1HIt1+HQ9)>mLd5D{`*;Ey06TWV;KFZ_Ea}(?gRrN(na-b!pdB&}9KZt4QO6$Q zyPH^u!Bl1b>zczeUxW%0olw&K4>YVbiKc1-hwn5onuQji!jA98qVUGft8uV zTkv1NMt2n1yH|=-hrr(@UVnYyn1n4af=~4rK^b6DWwv2HCRb`-XrV1sRX|F2&tLK1 zN^I_9)i^P3`YqZwQrx#1g#c$4Kc1S2jNW^}&x0#H+(#yAl%ji774OO?!+y@~cJgOw zS-0BQFu&U|+}K&|f9W=2`pyuO6)TD?<}KzCuc&~I1MFLa8*Z#&DomjmJ(bv8Ix`lu zq$7vdNb$u4b0V%cB9Wa8%8vj&9W=_-# zd;n=gS)>qAI`daf*@OmYe8=>o&qxI?F$xjvKn}Y(#WWPB^-i1Y-?86+Y4|{nE#ZB0Qa2%$P-9^e z;@~7+=?WR0;tXdol=+?-p;}9(%sNWfkMu^e%gM)4zK$f#LMMuKc-GfB$vs)JmQfC< z$iDUytoy5<*`P_1Ch(~*)%?z){wE2d{&&jhodi=_I?kx0oN+zZxbsU96RPrEzwY}4fSmlWNe6gKs` z$+2~{i!*Z>^2Wi1jnV^BbY!s=J59f9w~;*ts7UHFqvWZllKnDJoQ+bEkqTxietsxf zk>|ZZ3V42EB>iT4q$zX*ICQ;H#Sx(8q3KN-iL%`RQ- zgj=B^b;8CBcg~r1?ba?g$`(>x9tSOb8w*ui+y-1EJ8m9846YTY*GPzS9NO%IlAUtOz2ZPTF z4b7ESQ4xVA9O;1a82K?%o2;N68!CLOqwhgvp?8|M zk*wzP?B%<)xd-L>zW+=H?i%WU&ljko7hF-A>YY!Ej%CXAVusGw&b|Gk`c}IW4E`wa z*7&da#Q37iqWu~B1r{fany>GmtzKZ`-F!^SUw`4Pdb!75`uOW>)V--$MwK@
+% z{+0XybuU^{k^WpXiM>uKIoVrU-e{0bGB8y;W9w))I5+#%msNi8(l2v|oufPFJU%_m z{{u!!B;UWSlgCKCo553!+w74J31|D|&SD*nb4FD1e6EL`o-tbsky=WxUvrK4C3J8t z{0w~4hYbe0<7R?kTLYwi>F|g|?nVBk)DyU2^Koy!FHHF7F~i+|CeQw!QGhAWP?*i( z#Zu?V`_6BRdTM0xArGM+lI{yFQ?VuX`lUtff4xX*52R!*oNd7joBeuI1QsbBdfCBW zY9@Ft*=@eDU97_?jA2rKzKP+OowMePgjT+6!BhKIHDUvM#y>;?Q^pDyue3n<4Wn>} z#)F(nUvyeraM1NQ{Tf<%UZuRjCe5sDE|uvxMl&mxSX2(B&Zs8TfIy4giz4MC75 z&EC@OZJZP#+uB8@_I2+u_XLM$BT?FQQk1q{mIPxmk8ZevpS2hqYvQO6Z^VX2ydoE2)2&(jFtbC6L5<5pINgSlXx+V5 zt=9d0IS)|qODoA*?z%Gi#RgQ@=ZKc58HbhBD;Mk{memf+C+}sRu?^;6U{c`|XIqMu zDJ7Tnh0Y+2SEzI^wL1qQH&t$2~RJ#CU=`jk?1Fcb&2E4y&?dcT%SNGbsbe%lU{w^#>?~ z%m>*fAMb1zHYGB>-pU*tUaEkkZNa7G%;Ww&-lMrig~Vqb?g6k%E>XngTqja(UQdB( zn}n5RZhVInGO_87M=5E7JgP`mP;wsH^Sw(?&4C^Hc6ZPLy@x>9vxxnNE~^fU2GEPb3sTU7~|1S#J4r=9w8F2F)h4&&GToa*fx`0#<==C6OKL^^as zlv1tT+s8h=Pr^3MTEgIZ&}OwB_U(NC5qS!N*{TQS6h$Xa=Nqw^Z%R5YE!^@Ko;sBN zwb@gf%9Yf<;5jHGMI%0nTf^zdWz zf~W$tS&{NpnS@Lt{oHik(_Hja82=8J{ud=A-~$cj(H_E&Jvwr3y_KY5`}5A_C_Ek9h$s|KwDdaB&j7KVxh8Dj52 zO!m;q^me?E@71pk|Ki5Gp5K?hbL43fB`rP`utTK-4QFC6dKCh)ZhWTN#gL6v!qArt zei!qK71L~b<}`BB1-HX3ck(Hplkl5v?EfCnGv}pTZS?rg)-ai2v3w;Y8wbJCTE0Km zdF3b=+VAXqc0a~lX7Ia1*uU--ch=dv+H*%)vujJVlj-@_e