From 7a4d07fede97dccccfbcf799ad75499a741adfda Mon Sep 17 00:00:00 2001 From: robin Date: Fri, 26 May 2023 15:42:23 +0000 Subject: [PATCH] doc --- docs/md/README.md | 1 + docs/md/projektkonfig/collections/fields.md | 13 + docs/md/projektkonfig/collections/meta.md | 1 + docs/md/projektkonfig/config.yml.md | 2 + docs/md/projektkonfig/dashboard.md | 250 ++++++++++++++++++++ docs/md/projektkonfig/dashboard.png | Bin 0 -> 45954 bytes 6 files changed, 267 insertions(+) create mode 100644 docs/md/projektkonfig/dashboard.md create mode 100644 docs/md/projektkonfig/dashboard.png diff --git a/docs/md/README.md b/docs/md/README.md index b7db39e..469e427 100644 --- a/docs/md/README.md +++ b/docs/md/README.md @@ -23,6 +23,7 @@ - [meta](projektkonfig/collections/meta.md) - [jobs](projektkonfig/jobs.md) - [assets](projektkonfig/assets.md) + - [dashboard](projektkonfig/dashboard.md) - Admin Javascript Kontext - [Allgemeines](admin-javascript-kontext/allgemeines.md) - [collection.meta..eval](admin-javascript-kontext/collection.meta..eval.md) diff --git a/docs/md/projektkonfig/collections/fields.md b/docs/md/projektkonfig/collections/fields.md index 875b93a..83fcedd 100644 --- a/docs/md/projektkonfig/collections/fields.md +++ b/docs/md/projektkonfig/collections/fields.md @@ -118,3 +118,16 @@ Die Rückgabe des Javascript-Codes beeinflusst die Einblendung des betroffenen F Für die Vorlegung neu anzulegender Datensätze kann in `field.meta.defaultValue` direkt der Standardwert hinterlegt werden, oder über `field.meta.defaultValue.eval` ein Javascript-Code angegeben werden, der den Wert ermittelt. Die Rückgabe des Javascript-Codes, sowie auch die direkte Vergabe des Wertes muss dem Datentyp des Feldes entsprechen. Der Javascript-Kontext ist der gleiche wie bei `field.meta.dependsOn.eval`. + +## containerProps + +Um Felder auf breiten Bildschirmen eine schmalere Breite zu geben, wird das containerProps Attribut empfohlen. Es hat ein class Attribut, welches klassen ins HTML injiziert. hier ist col-1 bis col-12 für vorgesehen. Es gibt außerdem noch breakBefore und breakAfter, welche dafür sorgen, dass vorher bzw. nachher keine weiteren HTML Elemente platz finden. + +```yaml + containerProps: + # 4/12 Breite + class: "col-4" + # im tibi-admin wird
als Breaker eingesetzt + breakBefore: true + breakAfter: false +``` diff --git a/docs/md/projektkonfig/collections/meta.md b/docs/md/projektkonfig/collections/meta.md index f03a88f..d9b5487 100644 --- a/docs/md/projektkonfig/collections/meta.md +++ b/docs/md/projektkonfig/collections/meta.md @@ -6,6 +6,7 @@ Folgende Angaben sind möglich: !!!include(../api/collections/democol/meta.yml)!!! + ## views Liste `views` werden für die Darstellung der Kollektion-Daten im *tibi-admin* benötigt. Die Auswahl des passenden View erfolgt über CSS Media-Queries. diff --git a/docs/md/projektkonfig/config.yml.md b/docs/md/projektkonfig/config.yml.md index a326f0c..64773fa 100644 --- a/docs/md/projektkonfig/config.yml.md +++ b/docs/md/projektkonfig/config.yml.md @@ -10,6 +10,8 @@ Es hat sich jedoch als günstig erwiesen bei Webprojekten die Datei und alle and ### siehe + +- [dashboard](./dashboard.md) - [collections](./collections.md) - [jobs](./jobs.md) - [assets](./assets.md) diff --git a/docs/md/projektkonfig/dashboard.md b/docs/md/projektkonfig/dashboard.md new file mode 100644 index 0000000..ab42b7d --- /dev/null +++ b/docs/md/projektkonfig/dashboard.md @@ -0,0 +1,250 @@ +# dashboard + +# Übersicht + +Die bereitgestellte Konfiguration ist eine Spezifikation für ein Dashboard-Layout und seine Komponenten. Dieses Layout bestimmt die Anzeige und Interaktion von verschiedenen Datenvisualisierungen, vor allem in Form von Diagrammen (Graphen). Die Konfiguration ist in zwei Hauptabschnitte unterteilt: "majorItems" und "minorItems". Die "majorItems" sind größere, prominentere Darstellungen von Daten, während die "minorItems" kleinere, weniger prominente Datenelemente repräsentieren. Jedes Element innerhalb dieser Abschnitte ist ein einzelnes Modul oder eine Komponente auf dem Dashboard und kann verschiedene Arten von Datenvisualisierungen darstellen, einschließlich Linien-, Balken-, Kreis- (donut) und Flächendiagramme. + +# Elementbeschreibungen + +## type + +Der Typ des Dashboard-Elements ist ein entscheidendes Attribut. Wenn der Typ "graph" ist, wird das Element als Diagramm dargestellt. Dies ermöglicht eine Vielzahl von Visualisierungen wie Linien-, Balken-, Kuchen-, Donut- oder Flächendiagramme, abhängig vom graphType. Der Typ "swiper" erstellt ein Karussell-ähnliches Element, das eine Reihe von anderen Elementen enthält, die durchgeblättert werden können. Jedes Element innerhalb des "swiper"-Typs wird genauso konfiguriert wie ein normales Dashboard-Element, was bedeutet, dass sie jeweils ihren eigenen type, title, etc. haben können. Die "reference"-Typ Elemente sind Verweise auf Collections. + +## title + +Der Titel eines Elements ist ein Objekt, das einen eval, value, contentBefore und contentAfter haben kann. value repräsentiert den Hauptteil des Titels, während contentBefore und contentAfter optionale Textstücke sind, die vor bzw. nach dem Haupttitel platziert werden. Eval kann als ersatz für value verwendet werden. Auch ist eine normale String angabe möchglich. Diese wird hier, sowie überall anders auch in die genutzte sprache konvertiert, daher ist die angabe über das {de:”xyz”, en:”xyz”} sinnvoll. + +## subTitle + +Dies ist ein Untertitel für das Dashboard-Element. + +## graphType + +Das Attribut graphType bestimmt die spezifische Art der Datenvisualisierung für ein Element vom Typ "graph". Die möglichen Werte sind "line" (Linien-Diagramm), "bar" (Balkendiagramm), "donut" (Kreisdiagramm), “pie” (Kuchendiagramm) und "area" (Flächendiagramm). + +## xAxis und yAxis + +Diese Attribute definieren die Daten, die auf den Achsen des Diagramms angezeigt werden. xAxis immer "timeline", was bedeutet, dass die Daten über die Zeit dargestellt werden. yAxis kann “sum” oder “amount” sein. Sum summiert die Werte des angegebenen feldes im time interval, wohingegen amount die Menge des angegebenen Feldes im time interval aufsummiert und angibt. + +## class + +Die CSS-Klasse, die dem Dashboard-Element zugewiesen ist. Diese Klasse bestimmt, wie das Element gestylt wird. Vorgesehen ist hier col-1 bis col-12 als breiten angabe, aber auch andere im code definierte Klassen sind nutzbar. + +## graphs + +Ein Array von Objekten, wobei jedes Objekt ein einzelnes Diagramm darstellt, das innerhalb des Dashboard-Elements dargestellt wird. Bei meherer Angabe werden auch mehrere graphen im selben chart angezeigt, für unterschiedliche y Achsen im selben Chart ist multipleYAxes auf true zu setzen, hier ist dann auch die YAxisTitle vorgenommen. Jedes dieser Diagrammobjekte hat mehrere Attribute, darunter field,path, dateTimeField, collection und graphName. field gibt an, welches Datenfeld aus der Sammlung zur Erzeugung des Diagramms verwendet werden soll. Path gibt den weg zum feld an, wenn das feld direkt im objekt liegt, so ist “this” oder garkeine angabe valide. dateTimeField bestimmt das Feld, das die Zeitskala für das Diagramm liefert. collection ist der Name der Datenkollektion, aus der die Daten bezogen werden. Schließlich definiert graphName den Namen des Diagramms. + +## style + +Ein Objekt, das CSS-Stilinformationen für das Dashboard-Element enthält. Es ist für die reference elemente gedacht. + +## collection + +Dieses Feld bezieht sich auf die Datenquelle oder Sammlung, auf die das Dashboard-Element zugreifen wird. + +## timeInterval + +Dieses Feld definiert den Zeitraum, der im Diagramm angezeigt wird. Die möglichen Werte können "day", "month", "year" etc. sein, je nachdem, welche Granularität für die Datenvisualisierung gewünscht wird. + +## until + +Dieses Feld definiert den Endpunkt des Zeitintervalls für die Datenvisualisierung. Mögliche Werte sind “lastMonth”, “lastYear”. Zum Beispiel, wenn until auf "lastMonth" gesetzt ist, wird das Diagramm Daten bis zum letzten Monat anzeigen. + +## multipleYAxes + +Dieses Boolean-Feld gibt an, ob das Diagramm mehrere Y-Achsen haben soll. Wenn auf true gesetzt, hat jedes Diagramm im graphs Array eine eigene Y-Achse haben. Hierfür ist dann eine Achsenbeschriftung sinnvoll. Diese wird dann mit yAxisTitle im jeweiligen Graphs objekt angegeben. + +## graphBaseColor + +Dies definiert die Basisfarbe des Diagramms. Die Farbe muss in einem gültigen CSS-Farbformat angegeben werden. + +## value + +Im Kontext des title-Feldes repräsentiert value den Hauptteil des Titels. In Bezug auf Diagramme, insbesondere bei Donut- und Kuchendiagrammen, repräsentiert value den numerischen Wert, der im Diagramm dargestellt wird. Hier sind mögliche werte: “total”, welches die Summe vom ausgewählten feld bis zu until ausgibt, “amount”, welches das gleiche macht, nur nicht summiert sondern zählt und “count” wobei die Einträge selbst gezählt werden. + +## path + +Dieses Feld kann verwendet werden, um den genauen Pfad zu dem spezifischen Datenfeld zu definieren, das in der Sammlung für die Datenvisualisierung verwendet wird. Sinvoll wenn das Feld in einem Object[] ist, andernfalls ist bei field die angabe über xyz.yxz.zyx erwünscht. + +## dateTimeField + +Dies ist das Feld, das den Zeitstempel in der Datensammlung repräsentiert. Es wird verwendet, um die Zeitskala für das Diagramm zu liefern. Hier ist das erwünschte Datumsfeld in der collection auszuwählen. + +# Code Beispiel + +```yaml +dashboard: + majorItems: # Liste der Hauptelemente des Dashboards + - type: graph # Art des Elements, hier ein Graph + title: # Titel des Graphen + #eval anstelle von value möglich + value: total # Haupttitel des Graphen + contentAfter: "€" # Nach dem Haupttitel hinzugefügte Inhalte + contentBefore: "xyz" # Vor dem Haupttitel hinzugefügte Inhalte + timeInterval: "day" # Zeitintervall der Daten im Graphen + until: "lastMonth" # Ende des Zeitintervalls (Ab dem aktuellen Datum) + graphType: "line" # Art des Graphen, hier ein Liniendiagramm + graphBaseColor: "#ff0000" # Basisfarbe des Graphen + subTitle: { de: "Umsatz", en: "sales volume" } # Untertitel des Graphen, mehrsprachig + xAxis: timeline # Art der x-Achse, hier eine Zeitachse + class: col-6 # CSS-Klasse des Elements + graphs: # Liste der Graphen in diesem Element + - yAxis: sum # Art der y-Achse, hier eine Summe + field: paymentValue # Feld der Daten für den Graphen + dateTimeField: Date # Feld für den Zeitstempel der Daten + yAxisTitle: Graph titel # Titel der y-Achse + collection: contact_form # Sammlung, aus der die Daten stammen + graphName: { de: "Umsatz", en: "sales volume" } # Name des Graphen, mehrsprachig + - graphName: { de: "Umsatz anderes feldes", en: "Sum of other values" } + path: paymentValues # Pfad zu den Daten im Feld + yAxis: sum + dateTimeField: Date + field: paymentValue + collection: contact_form + - type: graph + title: + value: total + contentAfter: "€" + contentBefore: "xyz" + timeInterval: "day" + until: "lastMonth" + graphType: "line" + graphBaseColor: "#ff0000" + subTitle: { de: "Umsatz", en: "sales volume" } + xAxis: timeline + class: col-6 + multipleYAxes: true # Option für mehrere y-Achsen + graphs: + - yAxis: sum + yAxisTitle: Summe nr 1 + graphType: "bar" # Art des Graphen, hier ein Balkendiagramm + field: paymentValue + dateTimeField: Date + collection: contact_form + graphName: { de: "Umsatz", en: "sales volume" } + - graphName: { de: "Umsatz anderes feldes", en: "Sum of other values" } + path: paymentValues + yAxisTitle: Summe nr 2 + yAxis: sum + graphType: "line" + dateTimeField: Date + field: paymentValue + collection: contact_form + - type: swiper # Art des Elements, hier ein Swiper + class: col-6 + elements: # Liste der Elemente in diesem Swiper + - type: graph + title: + value: total + contentAfter: "€" + contentBefore: "xyz" + until: "lastMonth" + graphType: "donut" # Art des Graphen, hier ein Donut-Diagramm + value: total # Summe aller werte in spezifiziertem Feld, welche dann im Diagramm dargestellt werden + graphBaseColor: "#ff0000" + subTitle: { de: "Umsatz", en: "sales volume" } + graphs: + - field: paymentValue + dateTimeField: Date + collection: contact_form + graphName: { de: "Umsatz", en: "sales volume" } + - graphName: { de: "Umsatz anderes feldes", en: "Sum of other values" } + path: paymentValues + dateTimeField: Date + field: paymentValue + collection: contact_form + - type: graph + title: + value: total + contentAfter: "€" + contentBefore: "xyz" + until: "lastMonth" + graphType: "pie" # Art des Graphen, hier ein Kuchendiagramm + value: total + graphBaseColor: "#ff0000" + subTitle: { de: "Umsatz", en: "sales volume" } + graphs: + - field: paymentValue + dateTimeField: Date + collection: contact_form + graphName: { de: "Umsatz", en: "sales volume" } + - graphName: { de: "Umsatz anderes feldes", en: "Sum of other values" } + path: paymentValues + dateTimeField: Date + field: paymentValue + collection: contact_form + - class: col-8 + type: graph + title: + value: total + contentAfter: "€" + subTitle: { de: "Umsatz", en: "sales volume" } + xAxis: timeline + timeInterval: "day" + until: "lastMonth" + graphType: "area" # Art des Graphen, hier ein Flächendiagramm + graphs: + - field: paymentValue + dateTimeField: Date + yAxis: sum + collection: contact_form + path: "this" # Pfad zu den Daten im Feld, hier das aktuelle Objekt, keine Angabe hat den gleichen Wert + graphName: { de: "Umsatz", en: "sales volume" } + - type: swiper + class: col-4 + elements: + - class: col-6 + type: graph + subTitle: { de: "Produktmenge", en: "Amount of products" } + xAxis: timeline + timeInterval: "day" + dateTimeField: Date + until: "lastMonth" + graphType: "bar" + graphs: + - graphName: { de: "Menge", en: "Amount" } + yAxis: amount # Art der y-Achse, hier die Anzahl von allen Feldern im spezifiziertem intervall + dateTimeField: Date + collection: contact_form + - class: col-8 + type: graph + title: + value: total + contentAfter: "€" + subTitle: { de: "Umsatz", en: "sales volume" } + xAxis: timeline + timeInterval: "day" + dateTimeField: Date + until: "lastMonth" + graphs: + - field: paymentValue + yAxis: sum # Art der y-Achse, hier eine Summe + collection: contact_form # Sammlung, aus der die Daten stammen + dateTimeField: Date # Feld für den Zeitstempel der Daten + path: "this" # Pfad zu den Daten im Feld, hier das aktuelle Objekt + graphName: { de: "Umsatz", en: "sales volume" } # Name des Graphen, mehrsprachig + - collection: content # Sammlung, aus der die Daten für das nächste Element stammen + type: reference # Art des Elements, hier ein Referenz-Element + style: # Stil des Elements + upper: rgba(3, 50, 59, 0.7) # Farbe des oberen Teils + lower: rgba(3, 50, 59) # Farbe des unteren Teils + - collection: content # Wiederholung der vorherigen Elemente + type: reference + style: + upper: rgba(3, 50, 59, 0.7) + lower: rgba(3, 50, 59) + - collection: content + type: reference + style: + upper: rgba(3, 50, 59, 0.7) + lower: rgba(3, 50, 59) + minorItems: # Liste der Nebenelemente des Dashboards + - collection: contact_form # Referenz auf collections + - collection: contact_form # Wiederholung der vorherigen Nebenelemente + - collection: contact_form + - collection: contact_form + - collection: contact_form + - collection: contact_form +``` + +![Resultierende Dashboard](dashboard.png) diff --git a/docs/md/projektkonfig/dashboard.png b/docs/md/projektkonfig/dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..ae06fcf64703b3f759d0213fa8f66a3eddc0fb24 GIT binary patch literal 45954 zcmbrlWl&tv)-6hqK!6Z}I|K>t?m>eSoW`wjcPBuA;O-VYI5h4MoJIl!cXw$BZg1z@ zy6;uJ`s&uHy8MAncdfl_jwxfz@GnZA-=Y$s!ok74m6efHg@b$L1P2Gth4LEs&(S^M zF7OM{MO;=L1^DqrG5ZcY6S_)iyQ(>uyLuQqgW)Xf9qho&E~d_4u)T|=gXz6y2=8m@VQ#*+=Nr z*~ePa!A_@eEWz+(z8IfnFt>aolU%-KJYwXhcuA@^SRKq?ks8mA$48$`YZ<@N70Lv4 zC+uAc`F5v!c#QLNu3es{tF2Pmt@>Aoe4@ZaagGVZMvh~GVkznUdy0#QVA$>-|Mu^r zang-GB=|szu=oG#GlKu>(Mw-A?jlp!2$aqGoHD zyaqfSYMa{6O8)Y;T#I>clKe^Vx?ocSiTy_^t`Zm8TKH*`|Qr!`HOSn zbaZ#@#QEYR;0fzFp1t#BYtZvN`^Iswat=F2a-w7iKJZgbAs;L4>g2-PPaxU%|GsqF z;NZOGBQg-#cFiHc6JwRpe)QaSz&A72arSK52_qM!AdvIu@LXm&?KtA8T5f(l%@rQF^(5q$V-iBtq@k@Hhzx|^h9}f4(I@}Gna6b=tIe33@ z>AUPbP3-wNH!-;|1Fa5tWH=GBBEcFRqF);fbbFq9MZfBuEOUvijY8j@@+T2QAfPi9XCD!@QT< zVU5I|##&VGeD@R8lTyt@AC~sqVVQdd;>yL%_hpRp5Gw@5>c&woyXwKQGXu|beIJbT z^|n*+N=EWyf9~_E+^4Co^Jmd##u2&5yUn#H8k+u)W&cYz-xu20$%U23{LyEhdh;3Q z)t8)y+f)btSmsQgbyw>>RkOfP6xs>jJvV^^jVn-BSI;wW>(#X&Fj%;{r8N5t7&Kxv zeyxexKQsUDO!h^Jh`qJR30NlX2 z+NG2ElWSY;O?2_OAU!h{{ag)sp>%}=8EVOLsW@zzgl}bK3tcJTu|+KWR=jPjx&xwd zi1IR*B6{zS)>iKxP6o^@)|Hi&1x4{)=kb4Im;z%sxsUkbicx4sWQ~0-`rSY=mnJ`F z5|Ia7t!=hn;lNpnVNhi?|4)w=StfMN?fk0?gY%x4CA;ep+|UV6f1y_|%Si@8m&0Qm zcQJES$uj%L%K>T6Vxm$=cgrqI#KlEdqvO){o#xm|V}NbN>B+SkTqp^V#k#y8yo1M# zmTo!AX*xfS*{d5o^IY=#GdBn8eYty+oQ&&xaGAR$`tl$sboG~$F5(xy=nZJL3N%(C z@-$c9*mOB5`iOGo{qPhCD$LsOv>>nb4Ep6u&N4Q>(U_=LYwmUZ$elSm#k)U|6ITD5 zH(7@1M%K5fe>*YL&}RYd^HyJhKmsK;x)fy36o$BVyISz~ZM0+I33cvm_Y)sCa&(vu zVJ3>Xs8-tER)(St>*`zWPv5HWW91d+*M44b-NAj_)QVLxFc_!~xRS40albObr?(iY zm&sXJkm0Jrj-=fc&NXgP-uxSKTx>P9Alf|wP8RZl%Wvpu)kf;Qv2=|+p>lddW zF@C+C{Hwg9{w>w%tNi-DF4)*-lo0Vg6Q`7!xp*0BnSBBB=k5oux!|*{*yr`$e{Y_g zTbpQG^%o_7*(bj|T6+xDVAO(G@5p_%8hjV915HXvS-**0cjVhYIob;FJ7k5s9ZBsR zn(&9oH|jN{lRs^j2>o3}#xEG+4_9+ppE_Q4o91rj609Ab>nYuPc>T0+8RtLqXfLmG z7#7MrfE{-xgM3Oq0+moM{yyl2^@i#pyX*oB?s>;Sv?tf^nb=mZgVH83jWE!$l+rbu zSkJoE0EhPZGx;;-*~4#gqq>FLrHM!GY<>O5u|1IqT;kcfr~9Mkm(C_tEiLHY%Z7aW z5vc?6dN^&sn4#Zc;)0EWa8*^==7z%~qm-1Cp2tZ;v%WnMktVE#)i*v^F$_}s+PbXV zY5pWqWjkvdxV`+#?pQKiMCJy}oO_=KB^I{O?=T?M8C!2WD|$DBkEVhut66B%IeuSJ zCxb&4&Tw{oS}u$2;Fi6nc_J=4;P~g<{=a$Kr+wVr7KK8z8=PrEjnC&3m0{h2Ys1~$ z6ahDPtmj2tFG4i^{oj5W$9TBbI7{899{=5Xd0xFaI5^lKf7w8TYp-#kwVA8PLFcwU z-xXZz+utW>T6U!hggK#JT;dnZ^AD?k$Q`>Y-4+}|6%JO^s3{$(cL})@Ic+^4`g**k zC%G@+(VXPkLFcy_`?%NC?7lQpq1zVf5OCuIx9kpO=4z^UzDg;-U5)jZyDgC4i{y4Ee_8E-_-DU_e@ts){KJlFHyVa5)&T3sm)>)>}CvG|7G;pIFIyDg*>!PK=C zRT!R%=lUxvz{LFx$cT9>_O?rvmhJI@?Vrw1R(ABFbY*TPUjI8{i5M=B61f%~lGvnIeZEA;JCqdp$L^D8L^sBK%|l(kF#^W_dDoelNn-tNLGi zVeTIB$uUn`u1*ax2(3RMCz}#*c|k4`d`^I895VifjSoDMNdI3vnyZLUiaac1kYFHJ zb8$QEBx`X9arNygW?Blket$UaKvtZ_qtXqElwnBTEG^0HIdH{7L4-_nRW+teb`vff7FTBm4V1H;a8=**-W0uB4s-w8MHrd%R z_UhRC>ld~X%0Z~eMig0lw3E8vzd~Fr{8Ba|C%*AJWb|5UC%ISx00FMBP;e2|$5uU- z{7E{NRGWdl0$3mA_Qi#y*Dhh<)*zeB5t~Enn~%LuIcS8;7C9a{tg)U9F>_mBO1@WY zN0$aDDXw&j+TyfTw5-+{K`phS7mA~;0trhFp9GLUpSoH7jDW!LXDYFTAYem-QadAe?*ZgQZ#Pt6_BX+)QmYf9k^m`I5%+A011r9SAg7g9sY_tkEK3X;!-T^=9~JBIi(FJp&Tby#HMHp?B*&8EejtbQx`duBd_|Miy2}s z+czrwZA3y^dk`L$5$L0=uq;FJFE(exULdv@|8A9`jqpSe5rp%`G*rA$RaSxXWC$s! zC<+WZ2q?^M0234@2n-j-7!!beswlIX*Q2ykLb%wzA2^#H3Yc?=bKL1LeoSTjx_;5k zhR$RP=`jXTtCdzDOk9Ny<&P@8-^L(}hf?_~NQv<FzsHyjv@?Bbu(Y(&q|k!PHaXU-4;P9q2n95WZJE`Rs#fslZRngD&nS%CFk$O*{t zEJB0?BJ49{AW>W#LGRyCwPmFh_qSk7oq58f%F4^w6oRWxSsL{_l4lzmvvO!zwC|(7 z^->q8;2b^bt^-!N;&YQvhgw#aUxo@?EV_swW4$b~X(`>>QY#`GBBJjDCdYQRIE*~0 zbO(4*NP%#@9UZsQpX0;A;$5E_I;ElBD{A#{);49OWfdm*;Gn}Y1|6LxXa5{ebEGx9 zrd4q!qAg4LI_=sP#F~$!*WbXk)g_rzTeNf?n-Q{0Egs0$8Pc+{?Dna|FW<>ir`;y^ z!dWA*yG*uThlYkOz&0ZR6EW8{O2^H_#odXFXYL`9DMl(N_%?_jL*?(Qua6m>?U8$X z<=}|`cjeXqS7C42Y~*FYM5I|+*jAD$LoIHjORQ9a-OC0EK#GKZwZi%?sS-op%PSHi z;gWNcrX)QW*`HrI-~KeK`%%{Pi{0dXLLj>%-*spnH z--sEMc?%lH?!;x@=JbmCjxMDai>M;x?rl#|j6C`oe(#;VyyE4CWm3Yw_0z4_FMY>& zYa;z?UW0I~YSVGvAXQ{S1KL_;TDKtcF>(F`e|G^`?8`j)(+9Y6%__tnjm59O-nX_| z<*MNlYP9@id{!M`LyxjdlBD~#?QVMSs~re8uuqq<64PtmYcD8B>re0W*!L#K`<_rv zUf$~r;cPr-&3VQg2!{yy+VC>Agpg+tEu`bAnR?+gXpBJ3*-DQE1q2&xJW@TzbsIGu zBDDThzFV2G>&^m%+Ny7C zsI{J9h#}!mP`m6ioNr0gXYCqACihlxr%WJXzud;5>YjP8_ zO9%)_g-wNE?Ly=dy}f&&i~}ZZ`F5u@e}m;aEWlZ#C4XC|Gy>rbPpYVf1{PY)L!q^= zV9)-Wf!$tXO8+kQg6AkU_7*?BvagXNX6#bO`~qecQVRIJEOi_lD8Vr$36q>i{9Oo} z;$;@8mwC=D;J6&ymMx-a4b-(|bRTNbzU0qov(Xv=!6tE4N9f^US%{o?O}Ck3HVN54 zJ(F1p_RNWN?Sf3G__PjtiPl$jN-;w%igT^${pN&Kp99b zo5Zu#rY9LQbu5l3VZB3;(VBp7+DrrGVecYwGvx_5F}v9m9b0NfM&d3n9HlAKdV2{< z)o0_OkSJ0!Pt1%Bxz~{d| z96GeWUovZ2xI3IXafV&wbSwv~=}t7sfbd*RwzbHfE&Q);u{puCk!0A$n>m zA!H6kFBl_WY;~=$^bh+qHdPzrvspngV{|^wH~ZXqlY91VSz7zF(~rr(iI4 zYiNRYe(tlY?_-c+NpzoytzOqNe9|E|UWMRJ$Gi5-fTvw5f;wAQJ*~``_5c|E;^Vd`ORbW=(hxrFcOA5Af$g)&KVi{BHI6gIUW6*VI^vAzrIef8;V(p)tn z;^3NXc5%SbP_*%W2WRKu3(ii$fvPOEIr*Q_zwuRiwU1GA|4v1yHHQKRB~GE}Tn8`3 z7%Te7v#L2EaK&eze=15%I#iLS z%dG2p5)zW_-+5YIOS)$rMmxIaZpD+9Nh?0rEUp|uNa7Lw6l8;trFar0RRh-Il~Cwu zw}$qpj0c%WP`Q!f*HKyqVmG?e;WvbVh5jY4HS!gX$=7qm44~ z+-1eHk5!#CH8x7CE&lGm2hMsS<@UBzje3iHSwlmHCwc#Su9=Vs;TzcF--qjm)2(cW zu9sgp)(J>%o0TUgB!W&sN2`t};vcEBKNV`DbH;anv7=LZE2~mNO$btmx6|yw4x9ECxbDUiMdZ%o@) z*B_rLwNqrx9N{vd(T7f^vRL8kh^1!U$_vwbiSk$#+O=7hOmhAP2JW>Jdi$;8E)!jj zV$fzIrDX_HhORFEq?0oMq)Zeb7&3gEf(d^%T}Eg=T_Gx(ii8*m79Vs3&GRNm`|eV{`PH^QWfPt$ybKHX>Er1s@YTphxajV3Rf08it8yv(pntDqDO zskA1gu>Nlqorsk^D$fhEMNkQPzJ$cQ5Se-#Lgh~sPO?E6YKSnsTDB(>*)^G!`i#Pg3$pPz%lS63uw``SOL5z%5oxY=XO2(;~a6Lt})sTC!Z zioP(Rd4LF?pB}y=!2{{0uWgjNPz-Yy+=B6-iuQLAk(lHx5tRL!rIv>(!IEr2KO>(~ zHBB8k7x^O-3kk>9fE&S$e5L7~!)JxeGR(mfhTtKEG#U8nuOopl87&!#5i7kIWU1z% zUDDf|-IX+Q6hlmIHon@*(rD~xesnv!Y0bZfyUvK&DRxkTnyB9?5Iz?T57~w3tI$E; zvoADMh6W2Trka+O`3v8l5fLj}JyBA!{n!U*29yYy$QYgC z{{CddJbLpp9zkgGJg$<|LB^m3F-3|tzA-gJWmiiSVVsXVn}bpPj=1;*0whBjoKJXG z1VA~|O37Z!GbRZK-(@ay)l;mO8weR5frQ^-d_@6KKKHLJcBHxyPMdMuh37Q%1e~t! z#GYU+!J)X!%}vLG53G2zhoW}F*w!B3Jr#}m&1VBLZ#EeYte%nhG&+mkOV(3Kjbx}j zXOvzagehTzt*jz09p|TlfTL`}`Rtz{>h}kyzhwGk`?s2*BVV{_$EQ?7KYnDp>O->n z`WW!?vUWb+)D?|@Y`CEoaNRZj;9b+5XSwIH{zl*8CPx@?fc7``o7!W4Srg-!SW|d~ z>-TaA-?o3pA(#%;(w)wfPoknu)uz)9gvUl3U*5-Y)52W``JxMlC(D`SeD3Ql8qi(! z#qXDrLX@a`XP>jbzrG{vQ(9Vu1wBoL8?_mC?Qj3Mkn5l2$mc6|v!hpU{;k)3a0_PCv{XvRicd_#$_@#R z>%o-$bm1LmYb_9$Jb_jmVwUj}1Nk(A2>x>{=J6rrdsNjL@3%Zn#Ih-l+xS1`?X(lC z3sX^#W~*MMxlp+GU+hF7!7n72nG|gI)8K|1sU_LIIGOjPQ_IqMd09$HNrr{8p<`!G zgdID7kj1JRky9^;v@{eQxF?wPvM=%ALF+bPjl5?``;+)bU2CF61!CT0+!Q`H(+^~Y zn-Sm0qT?V7j-DN!!uIMKQjDy3B`h%?-2LO&lJ&DpZsGn4orLd`9K3@Rl9v>cryh~H$}9J_w{74}NO`lqj`z%N z(i0yLAABFgMn`{Z&KuI4mYKm+7BRqGmumKS}}RfH0{!_v6lAUdp}>_O!A7LMt(`czF?L$3xlM zTet}$jPx^;m7a6M0r8i6ZK4J4mt&goH@MJl^oW&Jci=h9Y{w{Uu%#4(rI?`?W{)_6 zX&vXvNN)_2ovY$b>iE&|z{L2x^ZLQXwXX6amHY6*^aT6Zybw&o?V=p-t8Y0Tux3$;$XL4x#ME%YJ@xo-=!*epS8ntqA zpH$+Q(c}Ttn5n(a3v=Aw$y0JKGAmwdK}91JbVnB^F&L#pWkJ})#^&;SSVC{A$Gm<3 zy>ufKV!Z**IczM&F5DukiCT66#GtX%l-T9Xef>)uM{4-l1sAudSB{!xl&cpldS9vK z8^I9(1l7JFDTYrG^S29w6tV+b^`cie!=5CDcFa!?H=K);V%EMSn@;Gt@A~(k?(svA zsO`%SiV75iTfm>iRyY7&G&S=PS8-mJ9hR3%G%m2Q^hAF^L>nBcH5GaqR-U@vPTZf| zClqx6;n8{=|2SJ0yGUg%sjiK$jluW@geAk&7;VCB^nHIEhagM^bf`H&@TiAJPToQb z(m-`{o7FG|OpvB#GRR6p8fpH{h3|pFHm~N#tK7elC6 zW6O?!Fz(h#N#sSSpP0u;A*N?^)_TlR;Bwazq&ZuQ;K{(ih813cZ77F9A}RlvKtUKg zeZOCT-qZ*=WOnFLQI~`k#BPeZ+m1&^aRM32#Ocb9GMoy1`JRDjJ}C5Htu1wZqt}Qa z4GbQ-yIV+Upq7i)@MOMiTZvh*pJ*JQk^QBn5@-e@FtPCL0Rf3GbJs0W zFEew6|I!khYjz`Tu9=AuMfuM3l`RPGIR$S(K;UQdF44tYRlk&ih> zFa27&fR%T=SFiAl0?0aA%A zn^0qI9k=OJsD0cZhZ$=s>V@^N6>IwN3qMZuPPVYx7s){=$H1Q)B~FeSa`5txpjw`C zu60<*KYxs5y_h;PG&r_p@?wIToX=<-EVm>s65Ic{Ze04=ekyQ(ecHb^738m@cVD`8 zw9rA!O;YS>1n0IUBBxpX@jWX0)MCWSkyOeKe?iVr9_Gb9oi$Ua-HrX9SYO10)3(|e zG8%_FXPhtuAPD0s4lB?{^|u*zEkQ@e7)_%kIXkB2W`9*k6`xl&l%4`+2q`N2nHX#r z3KsJhx!A@trtkffuyZWrLWLs^R1-cT8Bt@&B*wgv>0(g4-ZGD&krGSTNw+!@m_J## z%a^8n6%oX7C*XeH@KzsLW6Xb5;bSchc=4u^9wCtPf)YBE?t3Iq%w(GRXlrZveVqL1 zdxm9_hQH{kgCAN`?<*x*Vb;!}A4}0KcEmBmDMNqi6`;RfE_2oVHWAC=UkOD=0}#w; z%KlvvrKzbvFncH@q}yh?)(kZ8vr;NTS|!&Ley2oKDklxD_Y;p|#iYvUqc0tc^lAsO zmKt`s9goS=Q{gXTIywph)LM5pguuB;k6h?zn+Yc#LRaq3e4`-_bc_U5jqM=#Z8I$C z&+KTZaal@*c^?$2c}a=*I1NDw-H;!3*abD1?FLEVZ$>5IOKUKP&4b645|EIFM94?_ z5KFbui<Aa)REU7@~)bLlWDUSa(6;S1X@p7xQgV7?&ig_91sgD5{ z^^UCXJ!+4{yAOUhZ9{Dyrpx|Y zOK{rMNd8YPb1`BpFgAc>=l2IV>fUb0mM@!5OtRuiAE!4n9+4F2QE7SX&0H^D%R{0L z9pf_UweFtOuWw8v`={`m7P{FWXkQdE--71qaDUY=e4!;Rwk0TBwolSVmrwYD^(Nu& zZYbR*{bTWTc$O7-gd-)N0(}2l9hV8s3WAl%Lwu1`UpZXQEGrISVp5cd=${fCEl~yb z)0rs+&xk{IYEQnz4rG+^XUP^QESOBYG3CAksr)=SDYA5o+n?)F`ok4&F$GyNcHRiG z0(l0?g(2wLG56>?(Cl29I9TObpBZch!Ubj!jZUcoIen=*LmQ}~qHHKR*>M|%UjOsO zU7Rpk0yNe1&rCc6oy=NW;Hy7-IRz$X1_Svjqr4q&tgX+zI$YguYVO^>!A8Nmi*)?S zay`R|L!!^@KJc#|gM(!TV~o9pe$LDgU}L9cXVWoinarQik&+3|= zpEYGlg1!#(x3W-i0e5t3Yc}q;UXGY65Xae>cp_qn!_&|mC_5>}Ha2aI5Lr?N5m56f zJhiU?L)nhq|0L4Z0(ZHr30^=mx#F23C52+#E~t}(gE7$){R$k8GR$rT3q~K>LM-eQidT8X@-!^8`IphPb1%wq9oaHX;#EFaVlgGhc~*DcIsWC z2IG&fD>xhBaA=r+XrlwBJ{%aUPWP?CYGJkxH#%q~hMynPvfpGVaV`N&$Vt?nL~RyE zwXzt~&xVU6tHG{_&7Taf(VqaO)<*^@8Op0n`4|Y096%I{Pkxq(+gQTI((1cIDG6h# zVx!{rPY1qB8$+N}xENG`Gr}YIF~ZR}Q(nu!IL*wS`IeEWpMaERVOAOf!78f4D4C1w z-RS1I3pFNqJ#fqC%#rS|o8FF}GA3<(Q7M^F_;>l-k-)~2fGWMO!<~8j@eyf8NlObK z@S=*-jxBlzuPW)wkMY#zN)i=5PEYeaJRFddDt4)0U?gxUCM95Pt4I7fXA7N+JiN@i zecI0mJ-qw?P{>)) zmrcLP&fZVt0lq?nvi|d@%+hP*N$$7(M^YHCW&5_~BO<1h>}{jIK|>C&C?B5sROxML zXnq0=7f!iF71f)_E6Q7ysJ{=xO%(`tJ&3;%op>AuF-Pzl! z`uVAL0b=?IKXJiTUqhqLRcEur6ol9B;LmwIy&12Y5>j=vkUdiZFyR)_ZGh?oC|Yt# zH@N9fU>GRSq$?;9XXki}a9&bM6oXMmQRFjLT{yT4&|R_(Re^vEz0qE=31^RCY5UXf zgT2Jz?Y|s2cqTJ{MnR2G!pyPPUS4SithjZS@KZ#biY}TZ>~oj=iFO$n_U%sgOH6BO z#jaP1H1RTK0oxXJW5v^)3&jWiy`h9_nTpEOhbsD{J6ZUt3#k5k~BrdNW+V z){T~oLO9TSoA+ZLY_&NMGS#d^-LnAd4&;zVElc8k#b$SM!fBh4vPyZdu;;Eo%;v&J z0t!UOcnceK$fe0Unm=*ZSz21?uyDAp0~ikfE+1vh?k@jbUc}%7#{!d2+~EfYL>m{I@@)hpL>Uc`MsmS{ zoB_YORcyuS`KA{*K=(2|ZZX2cAuw_(>@!LG`M0uzUt>elbhAT%`|QvGiLG_M)5|mA z9;X^oK+~3&lAF8v1Qa4vi7xuEQ?O79D$$C&HXQ_5>+FV6`1uYCRtbsTy4BnPzXyK* z&AtjZ}ZP zC0Ezc8t@@;$=KNVd7Yt%Ksmz1zE>mpx97lD{!ONX6&UT69oc}k;*Dua&qU+3yTSbv zw9enbbAAF)bL3tTn&nKWx~|tCX5RuL4a8uv7*f$5mkCkPG4qU%z^)fY;V|3Tk?`G) zaQQId6?BOTzopMR0xAWZRpimqAWg%;Qniw_w6yLM=MCqU+m#qnI2>HuspY9()nozi zU%%z7CreaAUet)5(Te7eie zeb$D!Sk}UWm$kFrX4VIw$+c^J`4y`>1*lGdEv(S1%>uTg)yKPdZ9+Q=V1Yb4$ev*~ zFI-!T0F8x?fiZS3gp}z0E(DSxu!0vkXl}UzVFC)PfOM-)gj427L3y9E9`TE+>S*uU zt=7knv~LwU?3Eo@eXeWrbSnwjpembbxbyu{eD^JvFqxZ5A zl9FzfmXw?^h;j)j1iVn#XjT_Ht^FPN4ea=StBB2$z@!sktiqM6$_-;zzA32kBjJNv zPWQ<7VnMB~I)HRcxsKe{nvy7Tvc?)0;H%X&G?eOiPer=}i$4M)ls6&bp29g5m38Hj z0Bf=dLu5&fw8&iw9NhXq6m9G=|K>9#prWzS735v>L;&O zzv=|tF=P8dEx!CaJK(z2%g0Aw;0Axu=YPr}16G(Uw*m9C1Z@8Ta?*wo%*)a88kD=YqqMvF;A?=2hE`f$o^9;Xw!&H8`LZsSp{wK6wlbZQ4hC_Z zF2zu21PPREyw1807^^0$ty8~=a zy!5C3)55g!Gc0Tkp-?Jbt_UE<0mXxZ9Me8pv@rnyY3&BAf&e~ozkOSwlfH^8z{y$< z$eLC=MRXPyTTT~kAmW_p2%r>t7KUF(S8T^OE>J~YMIRd5<$$j_od)Vs;HTCG*DL`k zLqkzOdRL*}kx?vBJvBF{?Bv7_C^?V4y?6oi0Z1f_>N)wX=clNsD2VZs0C0gio}T_* zUAc@kmJ6EQF{KyE~dq5-MJoNZgiz!P$_^<}YbOMWduM1EXq>SwSQ((`*! zExT2&lSTJ7;Y@cc**DO`qvC~ZC0Z{L@`_3>!|L=klpW|RbGdsX`X zw#0tSx~kp8bhfmyzR{_@Ah@&B-@a|foJ$dUXjyhrOx&cVr5o&>0e~_<2>gsl@OuWN zU`fd-lhbq1hNZ?lg<7yHKO5hWBJVQX=pQp<|5ta32rDH^|F(@tbIc05Zx=etg{);z z%WmV+q6g}N7_aEeR_Y6u+wDZ)CZ!~q*`>ES-Cu&3%%`tJpQd}|2g5}#Dqr#;`6Sb9 zR+ie_%=y`CqQ6+leWHRMeF5baAbu_Q`IF5i;NXUpQ|OpB??_!sL&+twe`=+(scI;PAg>iE!*XqoXz}vs~e%jMk}2^Gc&*uWmKr8 zWi(D~6+s|DS4S+Xp}$(z`^fKR12&x6=$Yx$ozC_k;6pKh#3-Vn0pLt#q5{Iy+S&$d zUP($y!i*lEV`P+=<}#@z0O))`6c3cRhYNH3s04_0rI+#?Ef+J@ckhn86BeiIc~e<9 zThl5f3jkOUb z`uwJ0W~OhGoiZN9hlm)|V1i`d6nT0|hCwFK7XgMs5b_2E1e%?DErZ9B7iLb&`?eeRoqk* z7N+4sQ#m;VIC?eXa$}7%)HT)PI8-^0OG^Cig>y3+%gQ)U@BY*Sde4%#DA_sgGgkUs zLG`PK^LJAfH~uV32UirFzf%qjhWG#O5<3jpEBtPLfs01QFyr{S$)b_} z$ru>AZ_;@0$kVt`FO)mWLG%t0p7U{JVScxaSUy@Rn|2id%f4GgXv$2%k$_vn^h1{W znH}}S9+GT+ahbJFBz>|RtZgsX;u4TIa&e88B{LQ?7Xu+%{=x6^W#8#&SJ$kdv}fafJO^c(HJkn0dG7IpMEG`t7{m$dEBc5yE-i~^SWH9 z(@tu0l}Faqjun@bcAARlGU4@dja3Xx4De{JXxr{)&~{oX`2vCD!GV*^?dQj3rzJa( zE*BAaEim}c%7)A-U`c)@?&l56BSxcZBVL1+NLWpJ#-A|M32 z-dveC__f+q?FD>X%ImELWb-40t!c`f7Ld0OpMg3D=jo1bW1ZLQx`h-}7k-%3ff5i{ z@ntIkj=vZ@zV9I5{)m{2i_1rXam+(JQxg5<=I?d>5C;;{fmr-z{+x8F;&fqv(br!= z@X~|ufVeuQ>IeY#sp+}YoIM6v1qB7n=)n?FkE_3I@6iGMyS$diyQkn_#9m{~D(!I? zHfenWIaMC*&+1Cx>cq}Ax?_04(DOL)qR_x0Jq!pA5yN%?&yv>OE`&kOFRti@>&+o6^nOorP!@;|ba@xA4;=0svTYRwh|nTy@PPHTEK6QzN4|HT`S_1w@OElF0OHlUnswwcWOxODjJSVm65qHGciN zJ=4tU@v)L<02A(!ks(*cB1?Z-IdXG$>&Eu9#?3OT?U}e!B#)Df*buR77uv%esX0zU z!3I`<$lf3}EaULd>U#93b8ySt);0>b<=k8M3Dhd8szDP+W6v235CtGpTnKrs7JK>i z6GdD@a&pQzpUC874=yq9C|^!SN?92}XpiDj)AY)c;8>u=$O)|3oLQ?F5QSi)hRpl! zB-f=Zof!1|K0oK8MLn3)(9rm|ldsvTlX!9Q(|&h0EG8t-al8X&^(B zF+1w@Z7g*IiwKWdWKL9P4FeE4M8jh3F#>S0&iPx^2oe%Zxg;o~KzD$a{qoRhM>KF# z3H_=vtJ>kA5YLVNY(SgNeU#LWu2v$kv$La^`N8QP2Kdktx4A5T-zVZ#HoN=fgF&D# z0UH2NIW__l0C_8NNj_y%F2`HCO1BiJv=tVbNw;w9_&Wj7XBxQ5?c<47EJ?bPGQQvm zG`r>W$yY~IO?b$$RjI_eReEBE$1ponnfP)h>^~6Cxv+b|XknUJX}^ty@8=$2OmO+U znO*HyE29|BE<}t5IxWh&HmLy)l*4Mw?QDF;y_P@Kcf2Grq(&e0=1zereSzMh)p*aw zkZF8-2oJI>&kwxy?sTPPk%eb3VdBoU7PC=)LnN0`-n_pU=rKbv5dA;*oc+I_-VTal zBqTixqOm?b-&nNwE%<)yg&IC{ysSIJ-m&1b2HZja6={|)C#I(sy$8;K#)KHFLH!ls z_I8U2!Y+%9U67xWRL`^b&)_%lot@o zUWSoBe-X%O2DD~_C}F?0_x8XZF$YKF6hPj1urcfRiLFQ|vcx!Uig7Nwle2&XEDEfwYtp@d9>gCgc{9Gyfu&}Ni4Uo@$ zEu*uHKfg+iw>p;2ke5M4?x?&wqnTyjni!Yyz_m zVrt3uLktQL=X2^Q`o6F99_Tia$NaB)rvK+g%m06q=9L0@95p?045Yl=riYUnXmup) zkW=fe9ls#_*L=yIS~aoX$7wi%hzY46gh3F4Xr!d8)kv>=a}n}vdZsK`^e2w`Xk^7z zaBO*q<5p!QzU$Zg8Q#~_n5o#es6*37a}IBD_0t3zftm{FA~0JiXou?6air4mg51mW zfqo^M(W0X|=S>KcDJTWAjlyCG#lMl|U*BgH(D!LL*IoR{v6KR698$+rL;vsl#?$I_ z+;hd|-2T&X@rg+TkBO8+?KK!QVBf^*?v5A~IdJ5>Ic$bC%_Uo;YElX@l8tv-=gCwA zb{X7%WFMYcEX$GJ$A%7Uw0!6&gF@}s&yFpy)~sf$jI`o#V*3m@>xnMv(?0YyJplIVGNdD9t zdtTMF)|Dm&GztY>T1U+o{%w!wDq%`X>iH*K+e>N5Lm`rU2&8_Q_Q(EMP zJZq!wo$!#u)2_omG8|&`?29*=`;P7K(&2e0prExiVtkwh$kR%6b#71A9{k{*FS?%j zU#=5#A>K1`{^td>p4;+V?9AEY~1xdp7% z<2J18Mexx2X#Q%|o=dTpOOeQYoSG7i=FNxV=Jqg8wstakca1)z%ROwwSIVL{oTsZb zfwQwb&wnR6dw4saOVl+qInrbtx98b+Co+*8SNGPu9u4{24simmb6*g@&KU%dO3a06 z8K46-G||w|0ez2EF$Y7#)p1>v4+G+>5|8B1H=>Z!6mBL1SE`rCmBClddsS`o0qg&Y zo|`c8$FF7_!vPOR4i^(^ep$uE=H}cyCK>5+zlSE0RUh{UMU8Yj3Ng?5LKu1e-5>hXr@t0_k3GnDLT(?vHJdMvES-ru^#AZ!^V|(mK0Q7C zhyt%S2i_e`-uYt5#CWggxjME=_6cYsU#x+xpNp z(P@Cn;CTA1W^1d@?cWj+05ZHpR6bO(CbIO!k_nE>SGWHnZ3_5?5Qd?urHjy=I3XlK zzz`7`!M6g`;e{^1JPr%LfE?M&ZR_K2uHDfLB(orrAEhnn6ex7e^u`NQG$f)<37+l$ z4_{vy7G<=Bi;9Be(A|x6r$|dl3L-;y4Bai=NGRPQh=6p1(vsp3(%qdSeK+Tv`{(|+ z{_=rgzWwc3YwdTv>s^5@2d%sgn}XJUyLtr!%m6AT7k9^)t&i+6$;AiIX_Z}6boBQ2 zuKCE`^xog5XfKz|rDjSb{)q`dil;Zhizh-#8yR3F! z;=rB_p5N9MT%`0_%|LsgYPIiqP~bxeO?P~N)NKrjUE?ZUYa7gmgSnHdu-*Szv9V)U z&{Mnl_N3lOd)-Fld}QnH&#}!7{@n<(q%=m z7_$^NkM}|#CUzV*drQ6;)$SZ72 z{qXbAOPBlG%R5|DZid&YP^9k`o>s;et7<$7t+|0(BC?6j`JenI`6kf0Syv1{^)w_qq6J1vCF%9;;s>BgZd&^tisQ1g3k3&dPKF;0%8A<(Mp^LjA6~XPKAKIu9 zSA~WM{PExkQXj&R-p0p zO>H<8BeXu|do8|cqa{ZOglf_aZ)IeOT0b1i>8yuH`0NaRMkyKwUkn(oBx4PI+_{{w z!Wu-*(;;?sZR`jsuOq0lCA#uM;P@Z7AiKF)jWIV@D1n!JnY>HejRFb;E>@z+eNPld z_U3+pstZ=s-i;o9cA^!>Pmf+|5KF0I&s6CDo{MR>CEDT5k(_rYlQcEu=w}!Th3J?n zhI=k~Vbs<-9(|E8N8DdZoMj1pNKuZPz4qHeqWXo%t0UMiO8NaJOUlg^;=ha@(zWZT zR0&0O;xD#~@QIV&yu01=x^cpKc}X8!UT!*dosIg7es4N>axs2#9<$@ZHUtwB33p8@ z;)MW%^qdN#^PWpPGtrekq-;FXVE_nXLw=kRXEa#4|rg-r1j^pRerIGH#kd)GSXbxI9vQV(T zUyCj-AJvQ|wr4*UE33rbFa5%m9JF``3kpRqlII9%EM%$5_9RB8f3GKeHm(UK``0e- zj~ak_82IAcF5Y2IEW~Ykg&2GOTz3kEnEVL`J0-7z<6%~O+V5|VJ0gThTwQa;Pcb%X zMx_EI+7FdJqSJ6#X*_(;H9%rGL(l~%L~J?Ox8F!k1yjEg^~S%Qw&X?}$Uc1}33(lX zPBX$=DlK*-<{eM5dNk@UH+y{;@b6r;n088bww>ZOk}0>~$>=G4e<)-#trpChNl8r- z9cNp2m5yOgPFzbq6Yf@qfbs3wm#rsHG_-M~GA%X28a2=yJf%h>Qw$lW#}W=1*GEe= zw<_DCoK}z(OQB$Z$jU1a)r&L7o$>~u8W+pE0cPV=T{^KGF>Lq4Uf&B{K9X|U5TU+8 zbf+TxgWnKK_r0a=-dIm*=}UW!1?#LVD~FC)r!7d#R_w#;GMYz--rm+8%*cY(xwIcy zgCJW``36>b@xHhG0$szGT2uZC(NSD3(x}~EP=SAD|5vKjp26n@7@-b}ab9bv%@vzc z&>(2UHtbJmW5(;>O&*+C*NDv);UpzUF4(rm2Q6G&)NM{Q$Xt<=Z+=~{CS_&00=B!i z5%r=dMLwB|xEz0jN#tV3G;1l5NEygc5TV-Vt-`;M8V;NHl z1xlDclY~IR^6YjQyZHo4rRJ0vx5b@;7OZ*N3?BLOMD8{dpPz>?FjyT6ua3klP)KpZ6 z+1ZKf>i)IITc=lVG(zCxh0mP?(+WFEBR_op>?^n_wn`Ekwuu9?rJId!U-H2;T$`wl z2i(T``h4s37&RP|^bC9&EJz_7qpl%o=U~J`bEJT{gL?Go=>$0(*oSf8AU`S= zw!YIrqhVBAuw9wfh)PjRu(It^VLY8L{N-ST)K>buywX8S1?s&fr7V#|+fBo(NH;Mr z4%=Ct>UPTQpdx2#h>QAW$J~9EjDUpK@bbfxz9;jrcu~Hm{lG0YE$_V|rEKVheLQ#6 z`QZ`n{=S#}Fn%8X%o4S?>SzfB_)ZBgY^VM`3#vl6C)^230j# zP!?HY!69HC;CoJ&Fx0`&8k$ zi`n&r{!Ym5lo>JvLgU38XmNr(GpSKI?x8f@Znl3y8VTa@%DxSG@N%$@P4$=~PKP6iW`w-Q4tekWfVVqVSl?Q>VE=Y@!iD`?yv6E31Yk{TpP45qOy4d59WhqF>ww^bi|*o;4# zCOyA1k-IB{hQ2N47#MeZ%~Dz>UBfn)N0Zt9vX-lxf|z(}-K6G5D+(^^{@r0i8Li{$ z?TX>Ow>?4U^Vr`(kF{Xz#>U1RKjareAaMDG@L;oG`3AOpb90&KDB`^X#+RngY6R`5 z#f2j5i3^`S+YP$?U^fRxgtx^#;iY3>g6{M+Nc zQF}8nNmy=Us?mmWr>9sA*+=9C2wZz%kmciZXFAfN+~#yET@q4=2$ntVBjbn@zbG3U zW(T_=Hr?4V$=z)6WDr}gUY+BK@~N{tQ_b1v->rm;Sz_J68kTvh*0a7BB0KbA_yV0R zefM)56VePZaVL0TV^zXHPxSUn@8oRhaL-MuJDM7r;9?waN(0)2?R^{451V5k{%1wy z*^N*(%6PK)<@CoRtcgjD<6o*8ZfDGrKG)sJZ!w;{HB`0f#Q=f|p!8is5q$fgPlPmM z;U^6l))%GF#*f%Y5(z(4={cHU)4z{g|M}hsFEb=%dSAmX#>X88bvhK6bMCz=3VABj z-@kkP_iu!uL7WC!7Z(?X^kZm*HS6Izz6#uV9jWa5$HXR=NS(LqosMR0mnIFq3g;Kj zE9XXTqvJ z>#$fq;m4^}z`fr^2ZGWMTSEDr29N)0pOPXfAxC#<1tW&EGJNQ16U4-Oz$c<>IuQWK ze;F9GICQ0~rKQ_5+P{mNHyM5QDa^j?eDztLeF>OZ%C(PI%AL7krc2U@(l^ zoywJ;{3u=^o+|Y@G%qQBrUH+Uq5WH*b@^U_6Ra|Dy`J@g6?PeaGVJq@D_TzGYs)@c z*{%kwWC*Dn#38EU_4WK(OHc#OZM;+1jDI^hKg!;ZREj|7ZUZhj9A~wM9TeS0Oil43 zl5z_D=bL>6_rI1<=WZSuW5E{RAhJC2H%9M&w;el9^Wb8Oy~=^b?}X}oW_ZLAk_x54 zT2o}LhZUqThN2U49ct##8fYeg`C_A7Z`5OJ|sbd~I!Gn0#-)=W;-&;_J8k zfq|og_Kbt`-E9&|4dO@{Fb99oiT)Fzgx5%8y5teWYW)5EBPg8G!Jr0tjq229h)2*VUj^3#3We(1m^Vu_Ok*BuaW2ZB8Rhw z!MEgF^hEgz9)1mJSDpIsgnX_lINR_>w)5(0@blZCA|;Z4D@5C0E9FU^jaj*BvB*A# zq9*WLON;4|jedrFhbih*m~9utYw*4$>?hqQ(#V`?{^Zve$L*O`tq3+kWFKXL-?2%e z|s7#CGqS+^Gq;@U1q z!{OF{46kr0H&MJAeT9P!uSv_5QvMuX%K(Bg8k%$4Q38A~6!MtyS22W$xB44y7|lZn zL}R`?S*6Bubc-3wMe$UIX;WQu|x( zC?Zm(ph?7&jc_m)J%tiXR-ppb3SBsPm~m`ZrjKfKNc3>6rBsLhNKE8n zZ}}CBeI4wS_2X4!ef<)G7q4$x0_11^6rG_wx^Tn>5`LQ;76TFB2!tx{Kv0~Eo(xv2 zDduSvBPAdYOjTN{xbcVk|C5dryBEvb-KZ+kVQjF2=~FzQ9DghH>8ZRz;-+gzFdnlF zk`gTO6sn;*u_V3hUfx5_bt&SD4eE*3y{M~Hf2Y&8{3VCcX+xRvy{B8^{Cw@+f=bs^ zyWIBGd1hP>s$Y&3Upo4c9lMw)sqD^@R0Mh&E)7<}?kZgo+`98C>kg%7;EJ$|(ABsm zu(V=oa;Ic=o9dJsc^?gcJ`R4Olp558@jA5s0@nkJ+#&`C*d#0?QMV@5 zZ%TjYCe-j%Wf>g~vQ^jSNA^53hiRk~*i;Ba$7D_#Xg{u8zwGJhF+K5~t{&*e{9Gg0 z#r4{nbW22Am*jMFD9`@ZTV&BEzIZre+t#L2m9ejoBE^&dU#-dt2h(Fta(||7i=Us~ zjUtRw&4Tm2g%T4T)9LHy3zJk&b3NYxybE@5TwGWy$v$+HI6KDjTb*MqU zA&s$OcV$;(vf7+)!SP95!@S&m0-bB?HOGF7N0OBT6Y=U8n+3g;f+<~{?W9_RJA0_h zMy{fg0&6G_MzV$s+Y7iYMY6#zJjt53bs&b-__pO zIl;IxY@ohl<{;LB?kkej>qJhj-`Bu4o++FxAfVy5TRsG{XPjSngFvDBT^ArxTEP(} zB6?g=onqf((rs(Y@~t#)FN}=mI!J)eXkvURol&|1z4;As*x%2eUgX5In(NpOO?DLd zI&1s+iSO_4U)qO3l4csi{)J(Z{jIge^H}slG`59T>@pWQo0itJIoS&F!DhiIpj|%@ zesfm%CfsO59EDd0EyveajxEiOKqm)r1~43ku^Gj$W$1jdKitM#vtC=XXiGkFSI0Tt zvH8|1H5Bxi*4+Hv`g&?nQDfN8kDGbBB6)`em<Pkt)ED&7OqYX%VQhm`Vo+`gs>_8P zD<~__>43FYSK&%Y5aeG z;XduOLg&$t@Jn1u*Bo7v@u?e#=}8PH;M&DEPvUxz@FqKmD&O}Kp*sp>Fu8}IZ5 zx`V0vVH|9l`=P0s)iejq90{*wCO@Xhap=7PSLe}FNAhrLRPb`CA=Pd6iwKtt7bR6+ z??yXSUo(Xwzz@xzVF+nN8y+4;(z%(c-feEmaoA2(v7hdl2icvaRh?R-&o}XeCeAH0 zKT#@nagiSx6XS+0dkUyP3-)$0r|?&#B6gJoy8RYYAUSKU`b@Zy&@-opsE7tU>Fn-lit=g88u<7BRtlH z(<>n7Nx-Q=vB9P23pd5lrn|yqS}n9&TFvEvyDN8rZ~BsK-pA-VQcy($@0D2qaV&HC zMpoYRI{b0ozzD~p+Bl8B;W7NTZkPx12TxG2kIOpl$b8QQsaDN2PrXJ_{$+IB6C&oW z74Ft{?-{7RP*-Tmzp4MI2+H>eHPzpDXG{0V&v&@@Nx4Ab9Hq;S>qjDY34BWI#Yj!f-?PY#ujK_ z#d_bd3szdpUQmc3)>MUf$#_gL5O%V4ZidiaOqy=)YrswmvL^Jj?#oz-s!o2@h{1D%bZ%@<@ zH4XKi{Rw+fXEe~)?`aiw@mei!P|G7Vc!`%B^d-k9&d_UZ z@a*FJc)Vt`+H)+nAlrdhB+S}qR-lHI?8FUiMZ^_s7nh<$t(jjF?KKDw1m?y|6y{iv zIpR4#{u0mPZ|=nC`$AFCQ9Q?WrpGA=i~uZe-(l<1!1zTkbb=yTq;L9FR+*!YH+HjC z!S{E=_mZIK;Qlb@&Jrxe<(1%_1fR+#XZx`w1}4Mhpo2f2zTiLA`{Q_PTL-f9n=2CD z|Lmnv@%zWSQwyCB>B-BNMcg%h2ubfN6z80j6#V$uVNvc7{)i#=3;X)&|axzUAfR&Cw@UDu zM8i)`PPnb7%z%ih?11pK<$E?#PZSbO3o*87L$Y$TsIm+oKC1#{190fP*pD?9aYWK`}nA zgPrljz^B$`Cp;@s7mMNiFAai- z_bNcZK=Rc?NyBH3<$sY$-K$UM05r7v$DM{TxVV_nVmMtE5I&wheVQ_#UtUlU%!P3* z79SS2TjuH{ZVjqar`$kd`t93IL)7xJvK;dDwu?#PVp|@GQwuIZR>8`9GxXRUm9YW?n(%KsjL)A7*1_$#b!CzG?SH@$kyZVNL`Q{pU1Z(b&C z>a;>MyAz7xu86ZLs|6_Ot|io2=W=)0@IJo79PBXs-qr3^C;yu@I5;Cm0hITYz+R3V zc#(zB_(RsJitrA#^hAAL3Jna+kbYit+(ttVgr%FFw9x@H<}I-zgF>^k>p8-CPYeCL zjvv&X85e!>y>1J*pRH~1;NlW`4MdSU&X%4$WZez@&Ty`-QJ9&Tk$7mbm0P^*_q){< zotFM8+?`*h=yv#$xa?ZyT3;Q>jS*qlv^d(WfS@7bMPYJ&c@3Ea1q7J}Hb0L{=bZtk z>CXY%veBn23y|%BlF#r9GC}?CO!gU!ayM7^-exRC-`Sr`A=DLdYS@+Gt!teBs;PlF@uM~Rs55azaQDN1V5&+ zlnc4&H_|O`+i?{&cw+($#j)vG)tO_p5435Dz%8T~uX{tMd{PAk%-j(o)8j*V(&3VD zj=y-=pJ<6GdtBNy6#+i)4}p9|k~ngLra-tpb*k+IwK)xP^{(AAbcZ%Ro~9bFX!j@Y zqr(6@pa&tQ>~eKOY(90;emi;o?VUf~heN~fOa~~Bq*<79RI<20V2AwZS8Xs6av^!j zoeb{m#dkJQ9c^J9YvT`K8<@~qlVZ^0HnxYu^cv%oM6x=oVaXcIMHScCp4u*_EcW^x zK!nmavby@zXQkK}5-)f1w=)tijHdn2G=s6Y!jwdWd$zkC_5hoGb80hqK-~!X91<%%eqYM=|VC^a%XFo|3N?je=%usJ?$$U!w{H9{O*M z$KuvHUl6rm4gc<3hnAebe`(*#z0=CGx{>u}j*5&++d;~^7rS$abHAL0yGOtr)i$Db zais$J6S|y#LT&`>jTK77VTI)3T>ZX=7{!U*wCXlxJY-@SJa3>8Ku4?im>gT>$sm`4 zCkqhAmAeg8{gSAt4Wg-7Ow57<7jl%@dMACNE+A%125Otg!(Y<}9bPw4+CY$jt_z@b zkj8Fs5L-Us1tN6K_6Lo7Q-2Y+bJu_CRUpVst74;r6e)ffK%ojc#XuSh0>xtM4gY0O zh6f~e2nbf1)0_?zSvtA8`G%on$r@V8pW;L+dr9ipQhCuwPo0UHzTJ&Eh&6bl~Cz%U^?CGdQo7V-t-Z(%W>StA|BNF=})=D>wb1KxUL?h z($yHGOoDawugX2Ud6!E0L^!ljPLTz-l)fEp%ncB5O5# z_(A`$4doS}%EZQEwsu%z-`?ILY3b;23kmfX4_9t3fXca#ujvQkvRaUw%@eHH29EKV ztZeLytMWbohYMy03HbGglWt7>-DRq!*25JzNnXpLrBAULTf2u}z_qA(W=0+6U}JBg zZE9Mv|H~|~q29i$o_*!1lZdFOH4IizUf`!S+pz!lL$PgBJ*a3906d@0&VMEK@lRR4 zpgM&<3r|G$e?@O&Of2FrM80C2TITYmFa6(ZQ1g=e)AFDrKF=%>42F%6E=`%oXOit} zS(%Xk2|WYHHNSZv^;_X9Z+KLy;waWH>mi(>2TwY=7nj(Pul*`?i~DO?$wD zG@w#^qztH!-8(wM6BAABJ8lKukJj>7Uf6;8`w3KBrXBm_t!zO*hqn1cIF}1!v9&Y2 zx`OBKX^ndQOrQ-4D}XikSpRnA!}gr>N+KM&^EX9v6P62$Rofh+SsZBn#K)yoDq1D zGR)vE1-2p!Ta2dGyZ*W9nyURF`qazQ4V*|BV6Ui9uqaIqGKIgruX^0)=IMdB295-j z?e_Ai!~rf{T$X5Q39}`LM?kpt5QhWl05wA$dBDX64FGiX`eyiTw{~~s;e4R(p<&Ve z1qk29C&vMc>p1A~L##0)DkAK3LjR*=mHHIjYhnOY>fo#Cs>fAqgGxX^yUZ|LlyXwX zk%Xw}>korY6xUefx!-DC$Ay`~!nU@y%)pbu_2gt`W2(vc=MA^M$9#z`^xwJ5;Z1C% zFO3JTBxLCU_tAtx#Vi~$2|{SHCE7lJ!`F=0plOj1>a2o)VPWUU=OSIzk{6Xdemu#k z7i6wW9F|5l&!w#_-Pas+ya~2E(DYAKEOI6qAO0>>#%P88V3P$OzetZfEqkFoOdwe|BgAy?zAdto7oG5KL7nucZJe1>c)* z$T`TS1UG>1X2&L9SzmaqPsG;Nd8k1(l+9&{Qg&vU5# z`{rbZXrd}7xb4G--@osS%J@7sJj`RjYnfPjDs z1FHDGQJlp!=$ZTzZ=06=rpK7w z>gq5UaX}IQwDAE2vG3TzRtukZeQdi%oIW57UN37bhfTmm?i!nXE&Tq%6c8of`L4!h zf=Kxm1*;l3Tu?IIv2$6(~?nL&7)oU{((0K#zspR4Hg9HU57n;)w^WZ ztG%;(P>l)y&6RX;U>~SNDJYcMum7=icSIBPHRw$5pB z-+v-%9Vn`zbGEU~3PrN8r@hI$K^o-arXvh9PjJ^48>K^)>b3g*Gr0;>%U|qE{1`6N zRyWWdxvI1E@|ks?nVEf8>qrB%jf<-DgK|1_7c=j1A@O4#{o z18!o#Dtu{ZNCAw|U=R0wP`Q6RGNKRW$KIeV3jE-)${>ZHk2W2sYwE89``C+5fKN?L z?FTsG-(h`NHnuhoYZ7UenDg=$W8K^wgtJ@@3(z;2V!!YtE?ERC-^=phngi}q(<&i5 zv>)^o(QPu3t=Q+?wR}J;$f=yj&3gL}{R6O7U!D#C_oJRd z6c`hed3Ml7Yf?^1R$oITJ2Pd3h$Vyi1dHw$?WGa(Q6ScUCKdyT&xQ zR@vIOrvdJ6s<;nf`ZFd~0VjB3Q9+y%J?>CRS(l6WLF2vvn6%PwB}StQZA}7&aBH#A z)mtzbfGdqpKnTv0jEjrQL8INQJmnO4xVkZoUIT2jPCQK+RO|;V2nz}d;>F5wdPBiL z#3*ypmBuVQS~%I+e{x}5?9F@poIilUyIILQ+@6LsY6CpDnd8HuaV`+>iey7RrUwA_@9Cv#YBpY@v@ zy1I&f=~3-pfcD6;LxN&dI$`=}&u>23&#{}=LhUJfs$!yKN8Y#DBX3+m&xIdu;#b$# z)~Uit<+C1uCO$GdTYm}wjFqk9Rr(~BXL!#Srl*H)5q?oRhCZ=r=jVIVEhz&7iuno5 zqxUzmgq#Lows~DFMwh#PF)sKy2!j6>uPdVilDfs|XTk3!0&)3B?w)*2Tk?709c3BM~6V7i3nox?y2hVJ@N+w1;S zgV{{sgU}R%mxr11^~S$eWH+-;ImOSGQkBa($eX^ibQ8S(0taOWKt8UT*N+PR8?`I2 z*2O(Gc6S;?G+ws50<<_8o|2gi(e{O)JxcrC-CTG2{k32~FmOzOeGQB!aPgZG*Gk}S zIM?jX4vG&_#cc^+q;QU^9DrcMd?Jbf_|gb68 z-tj4(mTER3uIIY26W$a(P={MvW9a1LkCm|f!{!eU^Qg6d#0t*+Ff#cF7I`I0|8Qf* zA0)3ozA57Td*RCJH@3>*I`V+g0Eav(x*3V;2yp0?>SPU!B8|rOXzQ&l5K>!C9-vBp z(k->`Hp|)7Wg|5o>kO4KRo~g!VP;{GlQz{heFCogsGT2yuQo}4W(@i6`fFwG`{38F z4_x+lToN^SzJR=4Lq^8J%-oOZ@~yO@xH_M<;Zo+JeUF|ZFmWYu?%G_g4PR4V7jVzm z^s9;coKksx2!RzpLm+CLFP$;Eh$k*URxP@|4OD9Yk3uANU^C*C4=9ID&!^Si2y;jh zo4mIS5W?(w^(byP*8AXmr#BQG1k~NXAxebo1M^ce3vYCFNdTfkV=_CGCZ5qnMGhGB zMZkc?c*g>B=rX>^03-(9SFN-nO3TVA+!kTGQ>L@-6`0wFydEQ&>M$!it6X4Tn_M>3 z-o5KjDCm1os~NL8`#Rh1KAev2HWxbL)oT3$D3G@vwt~8bXZ>v0+d^2smbYtoEk`nc z_dZW>n10TE9Z$a6;lJqvN&{em?2=Rb?i6BDdOAdg%?P5)P&ZpS{lA%8>7JUJcr^f# zYH7&`0_m=Veg==E?X4|p3~8~^g5^wev!1oF@$ry~U6}%P5TK3tv{qCAI7!+X*B-rD2mxMHkh%RZs%QQZYTMhoh&G$s*i3*&XodVA1 zNKVDnFjWk}Q~J+fYd0ZZ17CMbnKRm1TvYS9LKnM^BvBY_Ul+I^G6?#iXD95TUNgHR(j_+CO(>_XXofSWC@8(z|II> ztTN|^n7_0ia4WB?`$UaevCZFG&UCkM?X$JLZw~4eK)f#{ph&3sM&KjG6jPQvH^viq zEmCM)Sn>9|`ben+_qJWu?&zqfcQqEVM)2|eVr>szF1&s^l{-Q zO};_kz9(QJF_KBk*hL5RckfLw7Z!~y7@N7MsR<7eb=uh#YJN!SlYNd9BMOiBVkZtg_CR}^eOr5?mx3IRbT}C1msW&zu1!XxH5~`hg$`52O zj;?dD+tSG;^|gGfAG=x*$%4*GB|_AE6`&n`NxwZ~slUq5^* zXw}TUx&b3A!WyHJ4od`WzMoCORu6}7nEKNNYM0%ip7*ke$$!?(U}^PVn!X=xJwN$U zn&e8Ct+6qQ2rGt@c)Xe-vq{i{4S58xZKSAM^7HqSi8{D#RG;WKBcV!OU zytYaoz~Cfbpw@-s153e-X`cSBD}yN>`b#Y$lIMV?eRm!qsK~@C8BiBEm`H^)K_2_5AiqIRo zh(Qtrq{Ho21nB{R)IV|>m zz`O!s5EEJjLCFZE*TNi8Tn+qW?>E9N%+lycV{^AjS#$`0;Nq!*-LC|8e{(TF4PH$F z=&T5Hsw;NLT-r#!P_crF?X!0C|_`i=%~f(y$84Ni~`pByB#@ESOC$%dnG~{-ZT_mzn6l^5nA#e%yD=ar#v%hW%l$)9jnMH^t8tKdE?xGb=ZBhCVWb zZzA@v>7K{!=5ME=XH5T5u*dn9K&M5E;|ix3Za|JQFuMZ-b+$(f5QV%n0^YG+e9cq+`HDgsk6K~YHs`rl(o z&CAmx$?Hnnwfd7pm{xX54NXntJuz-PXwQ|EJT!xkr#!$Sl}R@n{6@r@Pah{*ZUl>E z{2Zz;rZnY-hK|PN7OXXsfSv&cr3#IReqE%mJfHiWT0o4IfwxCqT3RzL@+D1RP%6dG z-^z*Bz~V$cSS;B>aUy*|<_H;*1+q)A=FeWaT$DZEM?Y&8GIB6Rfz=>NP!=X`mJ}nE zrQ&Z@lb&*uBCx1$(TOU7fjpli@kYzENqPb>T|~LbvE$|8*1wIN_i6I$(eS@rR^{!eGFGnlz?D%?9aV>3Vy^at6Omnm6a%}m{+Na?&EDSYGT}7V#(?4+@@7j$h zJ1(|Wo#369U3z8KT~sQ`XyHn%Xev`QvPt!xJdh4#HNt*nbIsU>Z71er!^ zowvFb(q}}zD+g=BD3S?@H1u>w<^?MY>sue|Pob&-D#Z8e;DVbm!H%9v@gtT4-3D+C zqSb4SR7(F1ae&#bf94kqD49QypClgL&w}n$VXtKtVJn_75is}|yl*I-ReSDxV4V_CjmfgFO&MzyOcc>fj4{31S%sK3MYy5RWnbMwCEeVd&%K|ull9MrEYNX&N`mtFCe?R36rZFb zHOATu0_BukGO$9W#$pAH1FQcp7r=l^1tt=iEydU;UtTN3#u6AoC;e{B?vg+M) zY^>s{x}G*p9f~GsSmk?_7Ri~H0kNFT?!l+AeH<6)XsEgQ?T@HFMg5I%)G#T~72?MW zh;`wAT~HCb6DFq!Kx7{_l(sP$D@P>4=+iFrEQEQ@EGjxiVO|nUANE~zum7WQZE9M2 zLT@s+>Fby%sj_29nj~WvA+EHQwB&Rtdv%tU`1PXz&i2lKFjRR$iuR3r%rEk)s%HdHr!?Imv&eUn+W(1aC>aOL~H5|&Nu zOrD&p#zUSUT@A-I~UqC~DF=C8<_|+FdVzqvPk_p!M=%6t>xiE^l_cJep ze+5DrJ>rO4lIwP7)mh$_Xk~jd){wLe$HiCj7M0dwI*-595N~Uz2-OH}j?V5e`3d@R zT_o&~3^SVjhFxPkqjPQ=GOa~7s(Sxj*XK8H8j^fNI}dRTb26HiV$qrBzPnV=<6{JT zrA%8?$D<_qFHB%F`6GL$@xcC7$g0Spq%W#-RQKA{~c*dEP zAD>J}=u+iag?{|}2DOM7a=9FQEG4tRDPuSa%5gY; zXcqWH$qx!FFdL%S(GwQIanZqD_VRgJCROjP1&OQPmD6|2 z;1NS!IRJ^jTrJk)^K;paX zkM_%|MNk~{hM2I~ulFO2ewwB{x&L(7imw@7k-dGK9h*IG-)BjF=r?UO70mZ|x;gRp`1=~0Ur;TfIb8#4EhJZ&5 zs`zxBC1;bD*Zi~EN=>v7N z-&U>9I<#OeeK}FBahpW|ea!fM&?tF$(RZ-)##h1U`}^{}zjf$_hK35S28RdfY&SW6 z9ltNv7O-1TmNqqQ_^?r+DzPgNcsMvxT>I^tUck4-#^)}55p}#h3=FM^pW*X6>l^D; z64$R99-RPg1^6<(e4V%Y!}a^Re0&0mXK#q`HPm&d%NKyimhk5!y0I6PB}QGv!}D>0 zwzj)}>&46T+Q8e$0R7Ul9Wv6tbw1dE#OmnY=C8fwRbcEB6a1M262pRe4b2U+`|i$f zGL6Q9E{S8F#fx|cf9TAo-Pzd{1_U4Ttc^-r8(W~*)oI4#d~`$;@6AwDR9j!4C}M*j z9!H)~%Rn!b3g%y-e)rs4BQXg;zxhQ)Jq2t6jOjDY-WOCt)TKl?I3r5;Hz|d28l_7B zhkRI~?RJc3fHl;o|v1jBR_rW%p*7|edsDlqgWI)*Q%MUqvg2;777O+ zKVsVK;(O?VQEu(GnA)*Y-;+xsT=9Sa3Gh-&r<_xYXUZ0MK*!*CO9@PH;tKA`$*FFK zHSc3d2Mh&>M7GOgDnot+g~&pBrj`aOAy?Fzo}dLIY5~S)K3{ZF5qtAWe$sS<9J)~& zrPM$#O?uR%j>~eAty4;Re)im3T$t&N##?=9djrbjs;WSj5FfEkWN3Rdx(G$~KdR2fblomw! zdyb8b`2B*JnchtcZQr|1hLf4=<5+fq1x)FZ)aCm#-?C5Ei?Lc0)ou`VN6T{LSH zc#M#x!^3v-`4)+c>L}-#+1X#2e356|)_{Inf8wW2$j@Kb-P8N=rA3S=#C#5x;U6_ol@RPhUyP;IRxXnzXk#A|; zz1^?R01IMtC3JolbgL{gB|>h%dU0Z`^S$T|8w8{k1 z)7w`^McIDsq9`JQw3LF<0@57=3eq8sbc1wAr+_q!l+*wUBGMq;Al>cI4MTSf3~_GW z_qV?9pR>+7-}&Rn5}3s^&mGUcuYK*9y(65@`rDt81Q&U(t`duEMky+sSQ=O~^gSfR z#C^0?;o~zrG7_M>t9zcQlKalp;|mLEa)Ivo(mBpjhWGV-*N|rwDsOdlS(ZDa(7zQG zr7JZd1HLR6#>T~lMu$_g^a*6nHJUI~RJdrdXvD_FktW70KK>%Iap&@^0)B9IL?bAe zGBKeAP9g^>_86QGkAy$15F6_|^wYOIir)fQX6>NS5&W`&e6B=S%NO zB$-HxKN{lg2I#>AuxAK#4O01Tx)gM<8v&~VpOxVQ8~J)_T@AFrcAC`$N2_G|87&=M zElR~ggeu|a&lgzy%6It4R8P`ymdM50`G^pq1YQ&S`0tu&tyi zw9v>%v7FHu=OxuX9?x?$xQSYNNW{SYBOb_PRQ-v3eeAm!_Ed{^rzw-kPCsn0^{!l4zfeL<=)R_ z!Y3veJ=Q7k@fA0JDUb1uc^zjLc^1`yZ+a-OFmNbMhTyCTnraT)?vLZR81Sj6I=A0* z&C&$vd7Tmvk)m;uRn2-vc>S=i(4PG5!mP^4#gW{13DV$aock>DssMgerME6Fq!!L| zFwrHi{E&c#sEqUQJQef~di#h3L~KJFM`6|gaRv1#MspO*z`}O@httxT4Y40I44eWC zWB{shB085g@#-s!zC=e72R9ENm&>6knv-JskL;Sy@$shM$sfAYFa9o^-QCx2SpQ{d zwY7PX9U?FJ&hVSgpxN|+N$2C*bTJ2d?9E;XPesMp*jVPc6~Ff}DcsoLrntYEtcrOEVAafsz&FUdVNvPMwcoKrS{2RIiSZW~BW0WiocX|~lJr!U z8;NnTu&947ujCcvWdi5+*RL9H-UP_VC`x9l;CKP92CB3&3|Vm#pf+$YZVQo`N=QIY zN4Ids#^H|Lv2^~<#O;9Uc>DOgWMYj$_UN2gSy|6A>s@5Qb>^Q+H(XQepVqL4g@sYf zY{V}MFbq)~i$E&uKiHmVt=<`6IKsh+qNSyk)(|;zG-V~gA&9vduokdb|ZFG zWo#%kurRGc-a{plYV;qIHf#GaS%9@f_1kqCa@V5oI{ZaPM=M%cD?g{&bxr;Ti&4>3adcH-rIUgPV$}4)o$oM5TR)v~| zCP~PP7p)Ey*(m1wBFOYvL8ozX>Fpzcxa9sgseGVx`@V91sa8ROR^vA8nAi3ks0s1> zBI4Bkj&V)hJNyRcbJZSPoXN0n&1je9zVaEo#13<(ygWRB7f3tHJpwsU&ofPGrXAqU zlWg>YDZdY~p0Fh;y?clEB;s?0K`{^%%w+lC7Q^kom8de@k6X}~Jh-00$i~z=M&k94 zw&Iy?m7y`n&)whZT@BRL6--nKCA0ATBh2O9L_f}e7`yD}*r6f3TlH~xNDP4Y8+>ar z(Z^rx2F=*Sq^oz(Vxv6*H3o<%D3>I2tb40Zf#43uD9fiEwhCuyXB!XnC2vpFC9eNs z9O;a7Ow5j!eQ{HcldaMX3TX=~1}zp;SCK&4rumAgQ9KZEkE7BkdfqURUb6dsnLyA%rUtb%iVpD zWwyHdJn-|;nzFXOqGXPZdtssAm&M9LW--q)FwgVzY!y|V>3n@Z0E$C|m;=Fgn&xXQ zJ3fLDp9;A4nFK9vZON^*g>6rjk%)?lLj8pVoCyH1?^XH?CY5tTvyDVHYI*=EA1Q*L z@n`V6oo-VmTDj=|fhR{Ee>}S^<6C#Bw3U#Ms5+en&uh6e`eev)vN-SOPbmYBR4@Zu zl&=t>U<04SPfwAP{-f^?H~$08xnBbL_U3M3YDt>RZHDDs6!v!yZecRCZPKN z?@Np0@1{Vo<>^5mc%l&TLms|QV(e|z1Io$rykiRZFbhwdr6R=_iM_KKaRje*pOgAl z52)7Yvfe$vFPTB(2&{bB?7PjNs{3XsbT=J3NdrZ%+v_ggBPUSn1Dy^SuV>85jCfN^wOEYPs!5id>Q!>vIy-Zw z<8;6kj%hPY2|YWAf$B>e&SYR8{u$JlR)Xw03$}xIm1+U;U&7k`T>W&EjTG+Qh{} zc(QPx)0HHcrMt!K1(&DgWQ{IzvTnV<(>Uz=|3PA$B@IsTVHC@%v0D5BglYQFVbi5$ z+xKmsLmay!KY;T2*z|-M7CV2Y4t_^9qxRuQr#`5#$?gw{GpUDX~ z%{3%;Xw2eOsX4IDc#UIW({rJDDZy6M-rr|7*OQQNz{9EuD9GyUW@8gAwk3FdDO`GE zN{Mnlnz^wX-}3P5t$L-I$T9GzCG?}my{hgL_ckP~AiHpIh z$A`LwKE}eL)wsQ~nHvozBJY@rM`ivEYu!6gb}XH7*-`(|(fOT^{CxhW{bYGQYG97=ldrEX#P9L@ zkmz^%s?&SCKj`S$eRMH0eCu$^+DG;-d^lc-M3r`jJsn_MuzdYOu%SiIylmQW=xU@S zf-PlW7OpF!_!_?=O5v%fo|vf?BOhB+P*|4K!5I$~j=RnS^z1h+IEk!A2azA{oulFm zG&;EK>&0~#gkTRvwd?&yHpw5S_idp%_4whC5t4%#{F%y20;VkrneRnq;d*1_MrtHjl!B5w| zGv${AOVl(2dCzhmI)WFmWm9ejL~3fKRy%O-{eCxjIVBqI=6Ss*D>-yD95FL?f)_!< zxidcf375MD`DjSPd)~Lq?8`lbSg_r)gI?`=yP)|3qMyA9hQG*+sr2R8_c<< z&SV;o$*MQG6xF!nt8$GD=HVcwq&!;___w{cvPiK)!F ze6ilJ0uWWg@C!#VmM(xvTKr21(f$cK8&YI(xMtA!ozJj@9oSJMi zmSo=cESrOPnWtU-iDP6oRJiBT-gEKtmlfpKms2`07N%3iI^!1IBAr@N;Gk{jbaG$K z8tjr+TJHARHSGLOBi}8ZQ&JBTy*$H7_g$bwyPnspQq|UL%^Ga#yW-RB-IgKbNKq)b zwxXE_*@w?G4F-M-l<~(VDw%tdZ0nhipBZw@NZ3Ov?6{N0;q&r@n7EivIvNprS* zlArJ=oQYao{KHtqcNL}@&uiVrnVLrt>Vj0hCz}ObUZTh zKMyFXu(fm^M65ce@w!!W$Qf4HbYZ@D9x#h4VO zr|YW!vkbu4%&XA9sH(h?d?PF+*u$DC5J+?X^B6a;+-4Lll>x8C6X3T=oI~N2wJ)7I znp$Gw&K{d|&@!mZkM-qe_;knAduv>8Chm@*4I3F6Z^OW@TM`M4(NVY=6W9 zY7kTTv#U-ukvaMvQK4T9pMZ&OWfb3bRFTc9#GSl z!rh|RR1D$#@=Iv-hfHMTH)VvkzkvOc`&5)_%6e??<}f zMWf4$RX(6&pczBj;aPB-bC&C>KM z{Q7&794*B~kX%PcX7krgj=@ZXJbmk;10EIeL$SJ+uElyl3__?AdzJIm>@46sJi~VE zkJmW{x=6*f-#q0s1&F0GJ=WKz{IX3-;+x8^BoVu(Qdo}!G~UtXPTR3(j$2xCU9!8) z{Dd#hJEm?jQ4J*ZJ^8rfxkN3T!|~?sUCiU7<>oNqaOV83S4=Nx=(_cM7fdNvc`C{` zaFEtKATi&hN@$28YK)h+)NqQ(l#@)f!C2sN2zpuj8(ACd9NAv~MpTy=0R?`?(#yEg zse<(=`o@{kRI$RZ_v09pHB@_*K(QhPRT`b&*)$a~3nu;-Kj}F~N8jbEQGOEUpij9R z;k+Fj64Sfg7Z!961MQ1}wj=<(@e>?c2`MA)RF0H>U}0HNq+;S=(+&+nBj_V7HYYyD zW6{ZQ4BPEAUUZ3NYUEd&bsMwrGW!cz8bB=QCF8 z!&(=gaf2k+@N2*a5cs7T%}G$hs&4=$E$#U5`=>kcuCO39R}?NTp6S9a_W|%GFfwNT z$Rm#!?-|XX`;pi9$ualk3UMO4t&N~-$ZQr4XEJtK`$kgygqC7rLS2p+Mu1+YQppzb zA=I`LD}rBx5oapxW!|r)>`uzp^NtDEy@6)})1)L)PP!~y43RW+tij7Uk1z@f1KZa? zsMv19*iPT~Awzh0a{Skx;DTAO`&_oVf(%#@UD7g6546{pmZPWbz|KoZvm3pB9j~s5 zUUHEiW%^85-dLUpl#iA893ry?`sSev$TAn@Ef(e}P)=)~cwX0D1nO@A7_*;hfKDb8 zdK@$Gl{&&Hm#C?Kf$nhSc`4;>_hL;apW>H+dY7#2=;X+^@{ zQ`g_liif+J6yQWZ#KLrdZ{$O{%geDR4#*VD=X9H7eqSXF!cVpBOMHY^Mql>V@}_&P z@=Rf4P}W^(?AETyvS?7eC04ILI2UA16-u3-^Prfn8#sf5-?e@oIM}H~@@{sh*?{swpcgSf9x1-VXWcYN&BPsF zF~9fiS7tca&G)FQ#~{{sJIp1wcJcdwO7m88$lULQTLMGqb`@Fr@+Ijj^IJMFytpWQ zvo1cySG9j(vE?~F`PJvkhhIi0n7s4fRX z+H>SPJ4$9vKQV7L+NL^`MM08ih-2XFr8zGKkSyL%ndMAH_87YoYNooTNB5r4nSDzR&5gjL z0q|AJ6%w|~$~ zaS|2rG4A4W%%I`9);&kI%#uu}U#ZVYO>Zwo2Y~2T^77WODYKY}YP&gZZjdMEA`fYO zt(qUL)N~bHT)Ag@fh-mF7<_hlXwRmiqVCh-$?SI`w@IGrep)ylIAQhLkCcxo*~0f6 zZ9(_(R|D;VM|<^qeW^z?86GF2Z0Ca32(qm-+j%@}){G`3i&M>05Q$XxLC=Sr2bi4a z3~s`X)$<4Q>~%4*dt==7RJm{=b+J7cp1ai-SZC9E0Ws}52EP5G5Mj8@e#;M*A7Tn#?z|)s*LsJCJNHp! zSw)qdRN+?B)NKKjKZ1wsGHeYQ&FNKrx^aWs{$OA*;?zMpj6P|cVlCQ5q?)Hihez84 z@Zdzn9_~6JfGx6Hb85Awm>eXVyOKfW9ho~i{Rwx*;Z+$I!(p4~O)p?uT7uRXoTl4C z>8+3UiUjOC=^c#OlNs}iT1-pdjXw7Y{9QLA0N6Q8Dp%ZAqQ1PeAsU72?%GwcpL@6Y z;_*u$KvDI_b0LhxSiY{~s{r4}Kp?B@hz(cv$;e_~3HA~PC>C`SfQCkpDI@V(&B(j* zkPJY6UG!7urm)paXV&1s>r1DfjF$r^BZ zHRJNrJn{vXNR*%NKF9k9xJTQqxbL*|Tl_??VZZj@LHWekh=Nyz-}*Q|f(qYoQn+rL zE3Qd!#>NTv)U6p~?vD}>kcz3ugLXFIU9VVQ&iKAB`TUVj zsQ3VQ>_w)MMIVTy5^XL-R*e}8^UQTO8Asv>x}_DVyXKRtPz&9{vUyhSn~in*aI2w< zi{Iw0^t+c=2K;*31F^|m11JuxX7e(WQZ0~%5o>x;RL=;6mh(fOC0JK%9{JtNa+W0C z&q2SWp{CL|)5kcyYkeOdY`1!x&z$90oO^Gbfj{3DWs|1n87Xmt^%gy4I8{VAIqRef zxhbm1mxJ%`U2uRii;hHrftMOq`m%dh(7<+H=Jx2#JE4OmcdR|3^g758zS>OvLDvyC zXV&cYf}JHtmHJJ<`5+;5^e1155yI|JRyLWJwN>xBgJjDc`IW+bH|9aEy`3w<*!}9L zLf9R&cDsu3;z;Qez8+~pV^8h}czEM}J^YU<+V4PYA)BV{UkLLjfqq~bZa=;g!wdk7 zH~~-qjH%%LUh*|OK?so&LE_Zk{%E$w88~JDNtyB58ULjwdtJIla|S~Wv`TTjXSuw* zu(teL;dpc?7Z!otX;pSBms2=bsPHcfGs!|81kRicBSRy%$7rAQ%jAyht-`t$$9tU-7ch zt0dKg2tDc0nU^$AV}w@!h^;7+ogc>wnQ1BJ0Dse`g+4ss-onGIC&h0A-Bp?+@c$<- zH{jN11{OQy1+JJFVSd6F5x!UY$O$2QU&{026%!5ul7C%V2W5u94g(Je*M;j|U{`!3 zhkQ3F*H}LuHZ|ZgENKF*TcdC$V}j9}A(v$zw>fNn)nu9npHz^56_nTWdd6G9(9|(T!PYY`?HSg#0TLDg|$%9j-NOP`1;g6yaE8>u& zL%?HJTbo4stCe5ESeY#l)A^y84}X?q#=C`-TCu-h+xx*$PosFA4(N@{4B1 z1&(#q&O(}~h>WBYK_dimc@dpa3pH70W{WYgB)hg6rc@i<&N%c4qddH~=Ib@5T-@j(m`X^i#qIa%YNyXoH%6B6UNFZ?J zEI9BZ*K0(%Sb09@)p|DioMhOE`d$?$Bo#h^_+GQMNxgO23YV)fJ$*|mZw{DtC^UTK zWd7!>$@zWZv-LpW4q^pPlLw;SsrF}PM~DY|G~A3|81@=~0%2W?eNW;t9UZjJI6|ie%D^S~B0VzR6uO+0An++ew=t3?2h@|a79!D1BfMSI!-o$^u`$$` zh-I@!mQ9$hPL7fPH_?d90o`X-P zv%A;`wiBywyQ7+RCsckfI=kJRJL&utKyBK1AUn1|Xq+)YwhC(CeUSa>S(wGooKlBP z(YuNdQBE&5f0Cyc4|Xp9TVPFt zl3@VvE7dPqEy^0umY*K^y zcpuT+Ev)akZB)5EyH`4Uas&HAZR1LzZGd1H_x2t`{!$a!W#E6_e03I_R!4{XQFrGZ z6R|gPdo+H0%n29}v92}~HK{kY7r}dFpzvA7oV=|nmsj*N1|aUAM|1Ef3ATszLt4*c z0)V(n5?mcPy77Wh&q}_xTiu8G0uFhHoir+5Z5$7OX7cBqC*`^CN;jzijZVL59Jx$&k72b#g^kXUoMo~2QW(s~@mp_1wP>$N)X3IWDIowpi2rl;f0s43iL>G#D*rG z-&*1su7=RPz~)J$9B|s>-Rgn0Vtqv04#=!xGos*1hw&`fpJ0suT2NQO}R&a=W4W5+_q#yP^5Iw}Fpy^<1^uz>jdJMT@--;cN=mH{ZnyHL}#0K94rU4}7ZM zvYe@y?d${#jc`mGvZ|<^7GedLce+s4NiMTqJPkwtvq2L?HTULtX029)P}O`6x@9Ma z^e|mIw6>ti7>2ncZXQWe&ZZsT-TRS)pnQHQtb)Jw|DbCBM|$~xe{m8-6pJIi;L2B2 z{Y0VRn!Z`7^+e7*O9N+1oQyq4;Rj}_G(K+(r;06Sfz%SXge6s^Mk-K|LI?}w`kwR` zB5KUULrTJkj0j);p;wX2QwVm!d%#$fw_HnCmdr0W-0+HCI4Cu7@WJ{~k01fK6}1iZ z+X;yt>GJN9CW|iSqHoo|zfQ(=IIIS2tRG9>EpPNrNQf$$WgqLOAo%a`32ZsH1Nr^C zZH#nWAD804xQF~OsiDg;ra2M@*8kptESEP%A=xbmuuf~zAXQrp_vaP|ZoD`aJCB-Y>YnP|QEXI=jcW)){7lIBzdV`a(wS^3x> zWERTyGFw_(Q!Q!Wy!!9)ig?L}Z-a!!Ws?B*B_xADI$3zP4dtde&h1|QXI4eL%5Ahi zZ@zDJpmytPrm1uaczJgq@^+2_witw^i!Vg5G~s-u2zN-` z;Ac8pd7Z)X#Q|@SovP=T+)q-_d5lduo$m3}}iC_$T{HH-oFyzl&m2 z=@RS^MdJ} zEJEW64_cClaY-$Q=fEC*IzSxZOHQ?!s@=_&|0ahoQ{yEFj1zriP?{|A7s$ zAubLMM;b4ea1j5D{3wC?A@l%3b6kgE4xf# z0OLQ@-CW|nqX8AqfwB>!kP|g#kV38aganX#BKuOAro%8Q{`U@lg|KiRi`j2OK3(uc zSj6h+wtyeTWz%6%m}WLk!pcT1VC}}-som1i%dyGH+?ACa)_+JN%^xkREG5S!fBLJb zkUH0uT}B_5=A4rMWZ+w6?q?6x4g!LO2hFQTKffO+k51VwFfc!Prws3kJorGQ`S%p1 z^%E-Ra`Vb&N#ft>fYX|0J7NF?`rtCMtu+um^dT-Cz3`9ewr!9PyRodI{8FUY{gW^G zB@d*0BMJm%A7?QAEX~Gocpmqu^+0@=HDY}2QvB8f4=7MLFur|_M5Ay)=KnL`v(i&# zjvI-^*l{1c_g}Dpndm&79ITL8Nf<#*I1|gammxL04i*F%kU)u^_xJySGPqjZ@!tLlbo8Y=wVCqmbe0(B7B1Ny~bxMj4O;QSW`Ik z+Ed4f QK?DC}-YQBIy)g{