From f5b6243c61f1b0d04cda303d9e6f0d5de093d717 Mon Sep 17 00:00:00 2001 From: Brian Smith <112954497+brian-smith-tcril@users.noreply.github.com> Date: Wed, 4 Dec 2024 10:24:03 -0500 Subject: [PATCH] feat: wrap existing sidebars in `frontend-plugin-framework` `PluginSlot`s (#1543) --- src/courseware/course/Course.jsx | 13 +++--- src/courseware/course/sequence/Sequence.jsx | 16 +++---- .../CourseBreadcrumbsSlot/README.md | 43 ++++++++++++++++++ .../CourseBreadcrumbsSlot/index.tsx | 32 +++++++++++++ .../screenshot_custom.png | Bin 0 -> 39408 bytes .../screenshot_default.png | Bin 0 -> 46833 bytes .../README.md | 43 ++++++++++++++++++ .../index.tsx | 16 +++++++ .../screenshot_custom.png | Bin 0 -> 22557 bytes .../screenshot_default.png | Bin 0 -> 21452 bytes .../CourseOutlineSidebarSlot/README.md | 43 ++++++++++++++++++ .../CourseOutlineSidebarSlot/index.tsx | 16 +++++++ .../screenshot_custom.png | Bin 0 -> 35226 bytes .../screenshot_default.png | Bin 0 -> 47714 bytes .../CourseOutlineSidebarTriggerSlot/README.md | 43 ++++++++++++++++++ .../CourseOutlineSidebarTriggerSlot/index.tsx | 16 +++++++ .../screenshot_custom.png | Bin 0 -> 39592 bytes .../screenshot_default.png | Bin 0 -> 37935 bytes .../README.md | 43 ++++++++++++++++++ .../index.tsx | 28 ++++++++++++ .../screenshot_custom.png | Bin 0 -> 38459 bytes .../screenshot_default.png | Bin 0 -> 42642 bytes .../README.md | 43 ++++++++++++++++++ .../index.tsx | 28 ++++++++++++ .../screenshot_custom.png | Bin 0 -> 24432 bytes .../screenshot_default.png | Bin 0 -> 21934 bytes src/plugin-slots/README.md | 5 ++ 27 files changed, 411 insertions(+), 17 deletions(-) create mode 100644 src/plugin-slots/CourseBreadcrumbsSlot/README.md create mode 100644 src/plugin-slots/CourseBreadcrumbsSlot/index.tsx create mode 100644 src/plugin-slots/CourseBreadcrumbsSlot/screenshot_custom.png create mode 100644 src/plugin-slots/CourseBreadcrumbsSlot/screenshot_default.png create mode 100644 src/plugin-slots/CourseOutlineMobileSidebarTriggerSlot/README.md create mode 100644 src/plugin-slots/CourseOutlineMobileSidebarTriggerSlot/index.tsx create mode 100644 src/plugin-slots/CourseOutlineMobileSidebarTriggerSlot/screenshot_custom.png create mode 100644 src/plugin-slots/CourseOutlineMobileSidebarTriggerSlot/screenshot_default.png create mode 100644 src/plugin-slots/CourseOutlineSidebarSlot/README.md create mode 100644 src/plugin-slots/CourseOutlineSidebarSlot/index.tsx create mode 100644 src/plugin-slots/CourseOutlineSidebarSlot/screenshot_custom.png create mode 100644 src/plugin-slots/CourseOutlineSidebarSlot/screenshot_default.png create mode 100644 src/plugin-slots/CourseOutlineSidebarTriggerSlot/README.md create mode 100644 src/plugin-slots/CourseOutlineSidebarTriggerSlot/index.tsx create mode 100644 src/plugin-slots/CourseOutlineSidebarTriggerSlot/screenshot_custom.png create mode 100644 src/plugin-slots/CourseOutlineSidebarTriggerSlot/screenshot_default.png create mode 100644 src/plugin-slots/NotificationsDiscussionsSidebarSlot/README.md create mode 100644 src/plugin-slots/NotificationsDiscussionsSidebarSlot/index.tsx create mode 100644 src/plugin-slots/NotificationsDiscussionsSidebarSlot/screenshot_custom.png create mode 100644 src/plugin-slots/NotificationsDiscussionsSidebarSlot/screenshot_default.png create mode 100644 src/plugin-slots/NotificationsDiscussionsSidebarTriggerSlot/README.md create mode 100644 src/plugin-slots/NotificationsDiscussionsSidebarTriggerSlot/index.tsx create mode 100644 src/plugin-slots/NotificationsDiscussionsSidebarTriggerSlot/screenshot_custom.png create mode 100644 src/plugin-slots/NotificationsDiscussionsSidebarTriggerSlot/screenshot_default.png diff --git a/src/courseware/course/Course.jsx b/src/courseware/course/Course.jsx index a5468fb3f4..919f063b9f 100644 --- a/src/courseware/course/Course.jsx +++ b/src/courseware/course/Course.jsx @@ -9,16 +9,15 @@ import { breakpoints, useWindowSize } from '@openedx/paragon'; import { AlertList } from '@src/generic/user-messages'; import { useModel } from '@src/generic/model-store'; import { getCoursewareOutlineSidebarSettings } from '../data/selectors'; -import { Trigger as CourseOutlineTrigger } from './sidebar/sidebars/course-outline'; import Chat from './chat/Chat'; import SidebarProvider from './sidebar/SidebarContextProvider'; -import SidebarTriggers from './sidebar/SidebarTriggers'; import NewSidebarProvider from './new-sidebar/SidebarContextProvider'; -import NewSidebarTriggers from './new-sidebar/SidebarTriggers'; +import { NotificationsDiscussionsSidebarTriggerSlot } from '../../plugin-slots/NotificationsDiscussionsSidebarTriggerSlot'; import { CelebrationModal, shouldCelebrateOnSectionLoad, WeeklyGoalCelebrationModal } from './celebration'; -import CourseBreadcrumbs from './CourseBreadcrumbs'; import ContentTools from './content-tools'; import Sequence from './sequence'; +import { CourseOutlineMobileSidebarTriggerSlot } from '../../plugin-slots/CourseOutlineMobileSidebarTriggerSlot'; +import { CourseBreadcrumbsSlot } from '../../plugin-slots/CourseBreadcrumbsSlot'; const Course = ({ courseId, @@ -87,7 +86,7 @@ const Course = ({
|{Mn957MGWgsjj}9DN(q-zK%pEQ*lBqOSsqy?FRN7}L( zruAW>OrD=#%>&ClabYDcuW5* nV^}&&CSpS0SlUp(S>v0S+ATI?fgqD zaNZ2`pue)XLBcLZZ4@H>TUXuF^>2UvvM%iKoX*Z;h-SdE_0RA|=nzg}DD2{! z*%J3%>+A;W5Jvi$5pcSMlvE`UT0LIvv$3&J@m4fBuJd~yOy;ZHZ}0Epkddiu6%Hg{ zN>~S_efVon7GK6AyHjD%GULLilEd4hoG%>kU3l-_j$T4soRX6A$mk(}QkTzej!q2` z6_q;Jts?T@b&Sn@NbsSLW_Zcd2e$Kc^qg|5Upn!i?j_CS8ZGgzt%QwRYRm0l*HELW z=QY#S Tk&(hKbw+`w%c}@w-G;5 zLIrTR?DT6@>T!9Wt2ce3L`V+y3-!bL_lO9 `&rVT95G_~0>U29ay z-D`+?sj^U(&cqis^RuPeVn6S*zdOHThv{z$N88&4kv?48m@TivA7`@?-N@o|JK#^$ z=0OAEb5=1U1|<1E|NbZbXhj7h^SgKNp6=7vf8VwDF{sRLI zy;N3NNgYlh5#jdVl8Z^LtB7jo0UDFWae8j(erio_4iLx1NTHsS>y+n((hOiCEL6 z`GLOMz2Sh-zPC|kd?b5XGEa0F4s>yGdA>XEdbv_S8ct`@x9C`Q;HFQC&oB;b`Tkw@ z#pn9KWjHp2*>EQWo|>B4ez9tQDM!F-BG4F_SfPC0uI|rXiVBu zke&m8m- %v1zjeS#p$HC8 u2`;+-{ CFF@ zy?Hu7r*h%k5B>Byzv%s_8oTprv)2*PYhRaMTUeBlzt>Q-o6icrisx11Gp#ZGhv_De zRBI+CrgEh;E9^`?N(g5ZMG`!lpgk8Na9LIed}locf~*=1?eDw0ZxP4SUlF(zt*pNB z3Kpvo6Ija?$i>7(DeYXn77QEYb-AZqfCU8&vXvE}-GcZludZB`%fD%n_uT14ucU^F zN=r#WP)SJ@K&4tLpb$>PZ>QZDq7Zl}U`R9b@wSh3bpIT74dXpMHp^)q&+GkA>wba( z1LG839hJiPMOdo7V~C=rCD{;Bwu~(K; q)uruU8Nrx6H^|KYf zC6EYsp0A{l45x6}Op&{M$rJLE-zcBR6{x>HtDkgjJUKaO-tbijT l zAyLZZ*K9l5-~VN~+Vp9--gaBPTz^l}>)n*he;$I9CrLrwODzCahLKV
xnZ z%H!nQYeQe8X>kqx?xABCcnnuzsDZk#l=h`e29bVlE(__1BdJ>sLpE5{mlTl8KV2ZG zUFCF0fP!g4*TO*fnaqLjha!$~GC1jH^>i6=hd&Q=u_dEU1P)MJOX+v`dieXdYiMm! z?6GrmYiZHY(768dR~{?%(eG)oKzRrv43%B^6%`c*#Wl{`y|UrNM021DIq2@( T2E;T9rIb+vEqk+@3Im(Kh}w zH#=2b+r?1cm!h0FQnR=25Ew@BK>g9GgD6b!!#P9e2T~r#oCY~bz|C7(_eG%kCxbz2 z7z _#JliQM6nG_m(<_T*xSL1g2!ajXNxl|Xrz6s= z&pm5HQQtGO1xkkR$P!$qkZH{iucmbjbJIqJ`@rXQ`%c4SGuEF?TI=dt;9S>4*p-+K zS~87szBjXYsHSusbBYG8VH5Gvta!O&3&f^$HP7z3IiVj+C!f7+=ZZ4#YC91LToRq5 z$%@_LQGaTD{s8sfY}v&jnqJ_iU`~MPU?+HG001XDu19;nFlfhW18`eXM=RbRCgu)z zybTHZ2qzlzbZF@@BXqgL_yrAX*^g-H?W&MOogDMLXsG5)GWeHF4teIjN~OGzB;e$u|}MagN_pN zj%!$NfJdD4K>Dd~2=3#57o%YOpn$;@9OsROh=|W&g(6T=QX)9xI+R3l@?cBqRF;d9 zD 93_j&;>Sz_0OXo9t&3Alu{e~_V@SqIFkoLtyxX@ zxEkTg40Lp4(Xlf{#3lp`T)DBKL5o!&e3 3QVAq@(asTc+z&evo{w$sLZ?^?=p7Rn)p`nT7aIcp@)Z;YQ>I#VVhJ^`8{)5UgO zpBtYYw>TWKLyf6Gq8v#Lpt$zxom3hpN1{rcy@4*FzK#+*Sdb0;3NaZyJ$<~rT8&03 zE_FLNOJiQAl|BvxLO)-@nKXo&qMxDyO+YI_Z$ -qabvwX~|{@JdsEgpwK%UQ0# z=kxkIGO4{h9maHe^=~$bDM;^W9v&Zu<8bwSZ;rNGX>v14()F7ir#t56=7#ooPKZ$8 zr!1tU;X|yh&zm<_ZftVAR6l(9;Czl8EEY@y JL~cRkpKK3uqPZFp^@; Cz ?+9&6lq%&t*h z4Q5%gjwwgbCwZ0jpwqClq-6L~l*4Lls>*4#sq&!?*a)a&sSYu>mXG#VZb#A>EWXy& zsXg~unQ!VpF+ArhmjC!6+n32 QYVh*-fi 4 zM@%f}|KN<97H6{OSI#6D5s{HWH`6k(q6&R5 z%eRz6Qrwg{SnuDvVS8_}K$%FQkqIku1FVPz&t6b2$lbjGMlA3l$jv(*#T7BL>GPm? z!#Qv8plmxH@A7Gitm!WbE) 8X)OJDeq}|^2uTcDLdens3YQAX#C=UV3FHl3yXhE84)vRt zTo&a1IhrNGl=X`;O6cbva#?&7c(Gm+ejY?D_%L#!`Yb&Tu3T^_%gOa*2*JjX=9*}d zP=um~kG>7o!NRv$(iuxIWk4Vs{=da*V~V$=QvjgjZs=Lud<`3waVQfAoMZmxu! }rbA96l@zYX z)7d-bRgb&FWEl&)W}L3gp%#M+5!Z-On#__a<-4M$Cda|RKWz+N*|Et@;z>0Tj1CiZ zFGXsed8b(2CCg^V0+j!#1Uu^B^~i{bClO^NCt2&6tflbp2L0jpF&$kN0&baiPlM)K zpZ<#Bq7w^c*I2dX5dN*SPtvdnCI7eYt1%3f#cBod2Sh*oAkU~={S|6qZS|tZEb#Ps zSOd;LYps%ovdwLvJV0dkYCjKL>_SW3|Hk`RI>#WZD~XQeW>VgK0WnvJv(~9BudnNq z``ohE;yfpj`pfgkB0 ?(A*Rale?{X}xSOxfF2<+4Xs&?_7lVm+&M}x8-oW{?AB2 ztlj^#68f3kl+_EfSWwbqoYE}i<}op%XH7GS^~)e3EK- Y)h4KyDSK$WY zMfw&3+uaBFCud|tEKnj$D6A*~=Lgw|nU~c?cr^}yf;EkzFH%;zGzm_aAMWo vF{m9C7@XD>4@4n@nGYu9 +&(Z+I3uThp1It@ z#f6Pct;f_Jh!3po%1K+d;pUv}G^k;2{;9HblS8Ylq_>w$Dl9BK`yMKJqVs!;Mb}5L zk+ vn!Gq z2qx`Q=pRqs&5&aK7FhZ^)rb3Mua-w77!N{P9Lf^4fekw;ZtPH)Zic=R)*@BHHlW~0 zK-FlIBAw!Z7!JGqV#uMSo2^4jqxAmZkqw24F+?=a!K(f&%M2B1DV!V%42z@_33Rl? z7F>@Om-G80&je5fx57gwgMNN2EZm9t`NoLBM(`~j_YRJKM;3B91QI8Bcyy!Ju|Pua z>e5$JFUf9}0z7RG{{*I&9OAvmi>&ifgM4xK?)s9dRMA Obp^szD19Aa~+oCo?ljY-9pBU0*j2{9+MAtRu6Os?&tT#Ox}H+k7&9Svy!?2U)!z zK7r}{zp@UIK=E$6P<|LxCZEZnPXF5uMXt}08w|>_=n6>N-NSu%MiJr}wnxkG8y%31 z6)5yZ(8<=;_R}Y&GuHaV@;T4JS$G0i8Q5dqi5_C?*k1`eL*e1!5@In?Y9F%4V`K$M zRj9BavXamTr^OU$^26P(f2oefZsAK(MHGSrD2Mj T zZC*u%4`T&v=0(7Yls{KlL`Vp#AjE;2C>VgxfF+%CqiB_<%^vR!t_|$ERIwA(m}qNj zm#9U%MVZw;{Qh0=gdW*<>noHoIt{KUI|N)1$X$CasKua4;{$f{>N!Zf5Ce8w ;u*{rK`t!5j`Xdm08@J+%lqZab z56;NI!v}6vQ#m|GBK+y+kA-v3Qx|r1vRFkeYe|3*LrH#}?z%|Ypn0Cmz{A5cD95sE z%o?U@gEuAf8#+9+&WmcOpiYqk%^s(Q&!KJ;CzLA~Sv;JT$p36>gTX+AHF5U!9nox9 za7hTnjY}*)eyw+ES3Ys+C>(Thaw0)P2+q#VmZTJOObPiAkKU^aPLnT-T0FI+n4Fl< z`1tmb{9H;_Z1A%X8);(U^yR(j)UkU_?6ghsO7^(42x;Zz1$O&h=rop2gi$p@SdR(l zSJhswpVZ&0iW &j^!<~FWSq0(!V(Q%mjxS{`gAXgdQQ _TsOvi(&8$_4*(VAZ7Rwday1N^d9;D!#1@3r+jg1?>oh zNau<4w*MNQnTyjA%g^#3(If4Dd$TDJR9euw@FInX`N)E-w^S(lhn>;nqL_Hek^b-j zO)VS(6@@SY&@^oYQ}rMIYjBB^K0gox%~B{#GDiMxcj2N6BE@G6@phj*mw){bAzHh1 zBGqS%Iwfq)7jiV%^$n+MSwSd6;H)zO;@97}?tvMH5G&-S^z?KH1k%vZ03>$$`}=?V z_%IL3tn2OT(@ZW0(nCo}Ni8jWd%yU+E(|<9J(ZN=qjLD%;4?ky>gxKT&mj|Eo0_yx zk|LF@(T|UgL|x@M6=Y?P&d;SvR?jCUCkG1wy7BV*s>;E|6%IdCFu$=;#Xh@#a6s9U zgCUMsC{u-iCC0_YMX_z8t4olB(lVExkpT&|b9cwKq{@(J(x{EJ<;%^@l|@a1Kq$Ih z`}6Whsd#ehg6WH-8Iz7Uxw$><;B;u7!k&P5ZY?4rqNv%An;Z9PQY7`Wi;IDc8`6)u zhK7}HN;^M?x+~Zhk4Jzc77&pf&0u*4$SMDJ2=$`T?8o6 w0NmbVKRUMTZMX_3=(K%8$`~K(*IaU)PQ{K!k3qIm!WE`8)c*S6>o{8 zP!FQ4VBi*b0S99#&`p-UQktJn#)6GVq1 KCj891@bs6Bl*t$XRX9va&LOTG2%f=+}34 zb|xodtvfh7V_0s@OO6W{7Z?9DVD3PSnIf%lK|?_?;o#(KXl&G+2ah3ai~l5x%?Ai@ zmO$C}?>c^|O-)TzRm`^=fCAld!WnRXh)GJquD~K7?4CPo&Ch)00A2zj6Cs63pBp~Z zL+VCOt68g@#uwW~@Hkxi&W>3#RH*X21D05EUtYJZ1&5iL*%q5w2#X#O79&*n)06L9 zx6Pt&q3*{ctEV^7F{^KHxk7%po);dGQG7FtGC!LcaepYR3}EP67)ckVw3gRF@0i2D z!2B|EaA2gTM}kta;=x${3^Me0T0(jEZdL#f26nT^%HQ9>LmIFk+Xt<&1Ok?@;rHKs zos|ru+ft)w)_Vhf0np<3*mgDvh@#aVK0f*wM#FPogjP8=g{Z7P#vv}?5OohMJR5Lu zaF_)<>vG5=;#n#vD4d4B+pe#;K%w}|i%fPa3z(dRdY%v=RRUaYsSK7l;<8u*0`*%A zxtdG}+Sk?Rb6t19RUlpm0u6-<-Z@0)dof*15uIJy5d>RG6 TXH&VD8xISyTnlO>sxWEiK< ^TPs^L33{skYve`Q|3z~^`AF+rfSxiM&}HKO#D{#E){viLQzRwyL3Q*nYG z@_zWPJJaBUsT!!>%R6o)9oqZ7*7KhVv$&7mViQ}}2$v#_CW1D{Rb2W9Yov}ktjQri zf6X8K`X#bbP*dDc6@P`dB*XD;Gf_oT=;DRbG;O*>?DY1rrFVOJSYF+FbG5cV4mtrr zV*4eAw!yyn*RZX6b*dh`@SM=8?b+GjJX&;w^u}ZGLP;`hc)htgiu_L}4zxU&tfp}q zi@nphxe^8K8!Wg;O#7QQbbV@~3U1m}tknwp-Hll)%4r!Zy}&|^iLEbg+F$Zw)%DG0 z&nAqU?X!i1MJ|pqZ1p&=d}8iyhaTE$s}&UrBJPCQi6XERpfvBNzFYnV%NZ5d6<1I; z6ia3p>QqvV$(0+j!aYsNhw0OOcYsyYlU6Gy$V&3?8Zgwsl`cBS2unIBovrMSj->o7 zaN8&Lj+_GOl(3s7(oJ$%CVjqfIAHIux^~xUE(co1UG(qkI*9h94A!vhan*)D;@0+s z+=yw!(}GcNVUeE|AI?X{3cDDU$* #deTtf11_P^1_>agctlJf?+@ zbZ()-P2sN0k;+huEj>bkKkWoBx}H@TSx(eegCjja+~)o_OLbYMZt~#5B5L2PcnQxj zN^U{9+3^`7N*5O}VWQDX_ea^Nvkwx)jwRnBBs|gN*#&upQ|7g~AnZ2k0#mgACc=Z> z?&WY0Zg~{_NObC}8}_~Zr>!w^)gM&^=6941^tI{qWwutD;SCZ+g{sP`sOFF6zo_u+ z4T7 r0@^wg|D)M2sd2^o<5UR4DeYB#`)>kNMkt;pnLe83f9t#gS(KzriQf=T zjE{bFb+@&iQi{p;X3PJ!BC3rGADN1+p)^2q53Mk3B66bAQvNunsG9D}K^+<>iiX@T z`dN%`smfDz)Bl9k>dY*q_TX?dGUHJ2a@l9nFX`HYg~d-^m?)-0Lq({n{@eL5I;n`Z zf9HI)j`1%er%r}jJ|RDKqgLN%)#b(y-WDF4V5z5o0cP4mt!uNx;M+xYQMlZmsP(Jt z%0xT(h`i+vy5qY;vX=I<2rthp3_&bVR^Hn~E(z~=5I+!v?V8?(&<1xrs|Verwz1*C zf(rP!`3*@DD{wlhZ+GUcgmUZV{fyCXh}^h9AZ6T7UKh8+{7&^R6KFu)PS+w(5)>>0 zQ~_;4fJ1L85J*(QXHVsyvm<#=8Vz*YkbiLLe-A&Jdl&!U74pw=9%pEda32etEYq{# z&1)#eDRB*n`LK!f3+H>y&bXh72F&QhkD4Ok66jG)MPFA}S0|^*or?=coaU_j{LRhH z{JcCZ8i*_kI=Xee?kPs>FDq;7#f1gz3{M4`lx=6;j8R>m3U9%xJmk5xjSW%)g6Z0U z79~YRMrP&@yu7?q!Jg|tJ_Oj)($do8-M-70Y1o;YONcEG%>aS^qa&Nbk00A>YLX@o zB?^<$>2j52C^4z++fU~p*cDY(Co|JFHxFL|0s{1iPdS8ztGaOq;eMH^<{lm#VB241 zeWAv&v0RIPA%&&*Tr7P(#KE*U!tNvzpt^1iSG7}Xr+0D$oi^ZUt@%mEV~Fu?Ek5QQ z54>>Ds}|r&|1v!0v-g-xDbt(xjE#*=OeEMp`FGYiZi9!-yu7>`E4|#^8JU<`>g$sF z`uYfkX2z`p0y?_7L@*HJ;^WJfH#UrX&>DR#9*5Ws2`p4p60hD27`ir%cMSy+Z+tt_ z|9A^pnvcAlX=rO_z;$$Vl=N(E6>y!4L@UzlCUei_gT)au3CF=D^-PPJM0}06+iTRD zEO!?)#p42KTi%$0-k5r$O{4g6xofr;b&d5kec0{1Yu&9OZeygh9ujbtb3RKSi0C8- zJrVnsj^c91-J2o{Gh;5DP&%X(+S+*r?!P3__}sZoK7G8AtBGe^2^4ujdJ`1vKlDMH z%;=IQ^$9H@6x>{~Qh#Q-(y_a(tU%j`TCf9ezHGhoNwd}&bz|}Jycd4D@+ h!J^yhRfV+{~E4j~@^vFW68ld5;?_wZI1GIPsDu7ALHSe6$PzAwK#aKW@3U z5TnVcs!pGr*eNKC0s>Q4PpN3g+gaMfr^2s$0`gE0rYlt-5k3>$+RD!b@9J>1n@lY6 zAzskmGueU Zp&2htzh4`iH-q0s?TlBS6 `rnN6dto(b-fun%=KK{!rjiEu+cx~W|F `~Sar0t(gA*yk+HbCntk$iM%7&JEP-|OciU{tR$y(Y@$ZQ@)proc z8M$O?NCLWRkyn2Maji@nSo|Jol?|=48V3aGoF)EW3N|4Fv@H7HHOBlz1c`%bhhqo6 zqEH|~oa)iC99QAySPv>-1!0*VvOgZlztQ6v7duw;lq`rh(`HYViHRvwk%l@%hmo6~ z|HlLg+8~fXT3FCx#U~~rN?|gp_Oh_(KldE ZLQ>aJTdR72oTR0FJLK85$@0E!y=v?2lLaRsSN1qSC09@- za~qnQfrMxyURYSz$pGM;zfSAu>!02~r>upxwzeuef~l1Op~ OB zhqH_xrj|CV{gPU=61qh3h7gL9E>G=V-)>*4! )%At!4l+B>g)8` Mytm6{|2;Q+Berq5nM!Ube>pWjWLqp>XA|N7C7ydkK(YtM78VK99nV2(dkrdWb zP+=g#&YnDO1tB9ND=jV6Z#M(tR<;Lscb-6qcm319yuc{Eq~zJq8!sOpB=Yv|?ykQd z_Uib!Oi)^gR7E&n21tom)e{sNRhJ7 N$Je&!67@{(^#n zaW78hB&4Jf;uNs-RG+7(Rr4oHNoC2=QBb~v(b3Tx^-zNjMn+HOXDWhKocWXaM@=ET&0?|*qgfq{!TVE0>frp5#1GCy81Llll zS^KC@$lT0`=bqW2hp+L{Vf+o0(wYWpFM>J~&!q5SA>lThtr+44pQ>WOF1)2G93UC@ zE3AX4!CgdQbkiTAO*r)s5?d?E2L2B+0$4Pn-BS@zsjtzfQC~tFbQGzuu!}Rq3xmzr zGjI5=s6 k@_BH|Q-vnv!SlwLq{e-`;({;H=0r>eSc3sGwrcR7 zs-*LAP&-46dIGli5QGwO0&@5TCIyK?62r9^K**S%iRl5r3=5V)29R>k5Cn)3NV5Kq zsW@UEn)c_H^V7uqJKc_J3m5soR|00`v5Sk1JBLn#w^y$)pWV&3a18ON*zSEVs=1*v zx4l^&vYJk35!2U){pa07CvC?yiNKq&bKXn!MJKR~mZRBt<;MEjO6RS~>)(~r$kU0H z@{Q4eyEF3QGG4T;2cZ~b MQw%G<*FgNB!1j*U&3wboNUwWU zRxE+dm6pTLQjP$LUC|Dp=i 5k|`S (`JGIP^uWtV8)VqS- zRXkt}C*7cYj~dabq)ZPA&JqJ3GV(vkS+4&)SACa+t1N^txwJ!;B7Ln12l^8J57UMH zYZCwe&7}yp8Wbql*kP^V-#Sq+6sQ0oS-^JR4eh!f5H#O3VyTaQI3lCWVEqjO3Vzi5 zxLoX-l9L0Rd@y~z=%neGoWjy1?b~4l2kPGOCR<)wI&y6Z?I{?xkf*}3bCg$5uw-Ip z)|&nCyD9qrksTP4CV7D?)(b!@)l^};sDNVY;4p6mza9C zb+oq|*w)48+>$RhRaRD3R47`7^?cO656i9hQ(}+VeF*xvXn0HJuAXsTwC>no;^2TZ zFaBLs(s3{Dc1p@zyf)nkF`m}$8y->Zcw;tZ9fL7OE9U!Y4eXg{xvh7dN-D-rg^y|~ zgj~o$`LSe&e1q45);!N=eiNil%8H6h4%}mgy1HVt4IQnm@`>cTI|6vz+}yBztSB5w z#O2@sVX|J`=2n}b(_1xkd@{1c!Ckb-F#m`j^LE2^0s;a`@epu`a%uhQxrke_d ;w?fKJjaVcURBM!rOi z4tuLcmI`{43M*Q#lE$|{uQE&V8=4Fd!vAWvIe+Y4bXWs*ae4pD2Ai+CR{Yn2TjBjM zgwxB I#NWa^ur6*~YDCCIv0lIW+U13lW-ZOC1AXw#_VSW)^|VWN}4 zwnXo>IGRjY@oV^^-8zBZjv`k%mh?+zW{;{da|Xam-bMBu0kAhD0uLAWJ57q*8nVi< zGZh+%=?*{(H9myHnau6G_CT=tReJzJTn^rLS|Z`Y8MRL^>%&Dq@uWIgTEag$J7YXq zSs|3B57^;V2d<6sAqvCnqpGV#ivhPMln7IRxtABu9NHPRFDNDyPTvyVk~_slIG+VK zc1MOB+KjpJ80|H5hyh!S3J19HFxYTdGhbglcZ$&~vd2ZK_DYsk-j|pC*T}>jW2s>X zux}4|-uS+%!3<&1GtDV?1vw^x;Q$qW?XDG=acthb_h-bl=f{ftC`-Q-)0cFV-;6-Y zdo>`DBFzFIg( M+ET>g0gpnGpcupJJSN+Rnvwe2#<#)s7>Jp1F z`|^Wp&nn~1WI|nSj41)5X(z*O>amlI-+!i}X!$!loP>4l$Sx^UNMh;h>lb>~sDA)d z{^bpU_evecH_^n+Z5GgF;k3;bv@6wz4KdMDD!C=DmviFf?UuzRm=TCI^9H8zvOvZH zO%W@~8_1>btvj4S+he-&U9{s`lw@I2c&KD3rZ#g7P FZTKRY4A`O4 jmdhaw=V;^A18PqjbK8HA_=isSS3Tkzw6r4c6BH?vV1;cg>X+x%J{o*+ zPLVHZ`T+q9d {WrAeuww#3 zy{giH1fOs+HM}(ayaaD^C1fm|(hqiU!T=}U!JpfPUF>9jC_neY%q_EE@p&-rbg0#4 z@3o8|OV85x;`Qa1+^6Lyu~{AVw--aAY1w5OmY@SYwh0?jEXTU#vrr;rTJCoIxE%yG zV}7v~1FNMGb?E*fWCPHFM~gK?XVK$_K+LbA^R09EaPbgm^s!nsMcof+tetx4TxtjS z$Kb;unPS6VJ=wz+AJUL(iLq{(hAptrG4Hin43sxy+zC`>iHF v4;*D`B#-a6 EyvGi)pd<0nN-#+fg@1HwEQ4eu#((~2AUnvO$l&C=|$nZhx!WKBt5Oz>$g zOexsPhp&Ivjh$uAFAGIpKaEdX2Qra9{{9OV*-!iWC&jw@yKul`maF$( rhDFzbMz%Cn!ED;^j%ktvn9Xfv!GfNgGW3nf+ zr%Hs3c=h7f*41-nUn&!YGIRrlim_A4G;EQVw2$2 d2>A9Gg$I#O6V{MXu7FC_jjt9#GK0Z~}dsKQG zZA1E1hRJJ_ddVM;{yap+_H8HmAwdz(_X_GTjJog=Up sKDv@<$ z&!kH1*Wy#5THJ%2-e$p@PO?nw8Ja0+WB>FLHrme&ru)cracX8U47rj@?8lrXh_d0j zjEfGGEY=?(A#d(q^+K0S$@QU%81yzVO{tjeAt(6UkH11-aZHR7D4m(=TEASun)u@f zuVb_R4-6x$Jf8eXw?xJ)RZBtc8EnbteOI~A(AKK#0X^^(m8b<_qm2aDIJ+7-1e!E+ zum{_Ds$Iyu{ *Ge1FIed`C %Pl~f z*p 5EiEGc-K`2S=Y{@eN@!Yxa*xP zCMHCr#|w9QjrPVM5gQZ2aOHn@;GRF_CZr}QSv7R{W5D5pA*;CgCNu980`T7nnV6`k zqkkjcV&KkxHwz{+9?R30q<$!t`B0Lo<_i?<(3ku_hRqB@YQX6;;56Vwp)22~-^a89 z)_>LKF@OCLDNxFG^i-H7TcJ_PZYpcCi(MFyR+?SVQKGNIQ)-NwgM&-c(nJ03uoD^@ zh4{UIZYT8nPgoomI91I2n5eoabjiE>;L=U+A?1lNOHIB$>sN9vIP*MUHrsq&uW=-5V(Ny+aqOqTV~|g>}N(5&+1^i`R)P42Rr3 zJ)+(}Y3IMA#EO=jl& Xoe&*Q%O~j+O)}e=fk`5TK*Nl12tg{TswJfRX- !cp@>@;|NtcknQAhDZY&>^po}keOs8> zAwi4XEa{3|J9l?DseWz~UP B_p13rffz~3w%J>G@TwyR*#F?yky{>N-{q(= zU(auSd~~&58wbbv39IusjX$iy&IH0R6JUKMD=HN_ ^{X#M$&JU)iMZH)4=e|mhSrif^qnySU7=b9D;v|8 zX+JB=N^UE~NG}5}8=dE^I6H-w-or;k^wmeqXg>=q&dswZZHT?c7vkG{DXA-tg8|AH zN7}k^h ?=Ybt$K@cde`mKk6Oay!Yd)>LWGQdw8sZDi zw=fSf+TO2|$3JMgqm~n(`$=z3U%~JH1JM?%=w|8I6dQ-@8{L~^rM 9VwpS1L`3yyUq?=-oW?lEKKM#l1(>_3uwl`i2>5 15^LggO@` z ;?g%hJAD`uOh#q?R566nysSJcE@UmGinFASFNg4jF6b614=>m5yyv4{Nb+rO zMgpCT?z4xuPy2D%lor(eY_y9Z)TJ=?^j_JC z$6&cs!>K_LUmngz6X7AYkCyq!;6I@Jr9b@6yCbQLTVG}H<$7LA0+n?ml{vsLUz2A& z56v_X+mIR}f0e4= S%WPklEt%N+_ zh)A2c2X#*68D3mpSW7Vb9OQ${td+*Bhd A@et#B>-o!EkjpSM1G3m1a+e=Y7iMF!(AVX2}>1S^MSONL+$Tu`k7M zlMQKyMh2Hg^rPM)p3zIEr)!s5k@gCQ6Fff38W%t)R6r7F%7?pyq{3+M24sV>UT;GP zL^wo`!fHCik-dStM2k0Pf@_b{pEmmoY^ E=tKR(H_mUBzGeFX#Jn+ zRYV_FgwZb6GSFoqOyonmd9gouh4;Vm8ql(VkDYOJ-}8Cp)X5T*`w>JB89NtB4of)S zMgZtqA!lgjmJC7D2qB@Fk9KnR+&2coD_)$*2DYUQEi(!5fp>q3xh)EFh%yc)ZL-=c z`pLw~c)!#Vv`7=io3I-cO#T;&`63k7#WSg&0{(dBhz8CD6A5ugqem_^SkjqM`TT@D zw4ApsRu(f%gYtoau=Ma{rjJ|&2J%fQzp0wXX=EK{pR{T`z}0I~NXq48C;qz?xVEU} zXW-7-{P!v$KZ1QPGVTGtIn_!g_Z@Cm>4V3k#ml~*e|P3j+bIZ*or`?0H{_3%i^vjl zTXNJsypA;8gLi|dFPKWO>kkha+a9OuzNcqB^MK1A*}yF-@zHY+DB=?l?e$;OM$iq@ zt>{ZgzPBf5mZFY!%+m!ua*ydt)dmvHFUd2)ZTP;a8zk<}s_Cn9xDu&{dW%zky0YpZ z^GefJ-|T$DhmhfYJr+b22=t`?!8Sd{kg*#$wEL1PQ$8WXPbQaqg9b$)mz)Y=Po|;= zGgQV=4flPEONCI$5%6U{?w!5FOQg@AVI&LUn;UX6fvveV{2FM_2Wsc+JQ3wc<7%0+ z(joO(Dyy97>4%T=G=E)bSq!SJoRap?2+a-SynW<(-b}Tmlc{V)l7YXJOD>M1l2ZeY z>A`Zz6?MQx|IZ&=vI#Olpl)0XAQ{XKeC9&{q^#nAOa~B__>Bh~bX)wJNr3>d3`J?+ zN7l?3tG&eSYH;JP74gHPV})i?K{-Fk4kM>Vy>YAhX&V4?Xi#5u{F(&HRI#O2dQDhm z1;!thilz-@-DtCvXOBGFj=PR;eUU)lKGw#?-7m(E#^yeY$aH<3GW7A?|1Z|QGAydD ze-}ZKZfU7Oq#GnfYNT6ALb@9yrMria29cKT2I=kwDJf~`hO>Cy=e_>d`EWj*bDho1 z9-Y~-)}B3U{o=mw-+9M<_ZF>?j(hrjnTZvXl(^z0!71tKw6xGSU*B&D-*5u!KXD<6 z#%Vx0yu%6FDWur|2rG%;xiTrs$_thPmo~Cf#Vz4-368)J2^kSI7CMaC8OvF;dCtzG zwxAQrFq^|>EtCB(pT3x+IrzVHhCh#BseY(#G4evKj<%W4*l`ZAytQ;Df4i_$6_}`I zh=gOwm&Q$qMp3LPoi)ajCRd?ZpyJ4<4WPD&em#qPX&Ao*$S~~&HtaQv@$pHCl4WSJ z#*o@s-}J*U$3a(DNJvOj3(v@TS@C}K^@7+b48$#Xc%KG!_z3#$o?Xk(a1?95&r&4i zVit6b=`)P!Sj|={kf2s7oQg)PhrHt 4UcQTHoWSU`U2WM$e`#xl4 BS6 zX@gJXiXbH;JEp#l UGA*>lgr14k?p0n&F(3WXps(nkhjtcVnLb zxWK2rTw4>$q(345T=%2rm3JjvjTf1Vcj6{G`z}H+Cz+SAV^;$fM1H{Vbj{H{h6OIC zUG7u9+_)-Ig|G44zi~XAEcW_lpzZtaPm8PNoS-9Xrr!#syzrad(Hx}aNy_swbtYK! z)43eHc?>eCtlRSJUDXPyLJnDS_no$Gvxx4W+Dj~A#)&;98Fp=$%ZFJrhl6$(1D-3~ z#OPcXdx@IGx#oSw*+j-}QMslk0I`1Nws`*fgH6C;^}I eiC94 z`*;g-f3JSIsVKv(_Cf*tR_btXeEbUstO)2?k>}4-e}JCbR9RGW(vOEVyu^eve8O>j zu6aMZ{UK* gswpRyj5BW-}gk9^)21XQ^rww9P=z^Pzwi@}=W+PMa1_W%Wbhlp|lUuYB>CTwYcJ zXNv5z57anUwbf?xTFiOG`6~2DmZMeXB0qMVNZ;Q$Y}mU#aQXL1EDt7g;D^y^0z+AV z>_HhC*lNN5VI|c#TyCH6mGj#SwPKsl8>yV{`f3l1&HZT8 OmlETj$x{m-92Mo0Teg4FJ9B|uuCE(zEA4gq(u7~hR z%v*xh)hBRR!QrQHa7YjjXw4J2pLpjW$h^YO5Ax?=yZ=6KMZhSH6%NL53PNz$cdTGk z_x|)h$7C{xHbkCyuI-*k`$bgV1;K>%Ty0L08yEfpgn`yQH)Qc(bEVJT>u&vRRNI=v z@Hqn}oVTdnXDHu(!rhI@_3rXqW5!JO8kpl>em+_ejv!Wjj?0GP`$-X2h>_MQEyl_s zJc>y#L2t^