From 626d2c000b690e18e8cdb76d4cfaa4988c0b929d Mon Sep 17 00:00:00 2001 From: Allen Houchins <32207388+allenhouchins@users.noreply.github.com> Date: Thu, 20 Nov 2025 17:31:15 -0600 Subject: [PATCH] Add 8x8 Work as a macOS FMA (#35664) **Related issue:** Resolves # # Checklist for submitter If some of the following don't apply, delete the relevant line. - [ ] Changes file added for user-visible changes in `changes/`, `orbit/changes/` or `ee/fleetd-chrome/changes`. See [Changes files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files) for more information. - [ ] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements) - [ ] If paths of existing endpoints are modified without backwards compatibility, checked the frontend/CLI for any necessary changes ## Testing - [ ] Added/updated automated tests - [ ] Where appropriate, [automated tests simulate multiple hosts and test for host isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing) (updates to one hosts's records do not affect another) - [ ] QA'd all new/changed functionality manually For unreleased bug fixes in a release candidate, one of: - [ ] Confirmed that the fix is not expected to adversely impact load test results - [ ] Alerted the release DRI if additional load testing is needed ## Database migrations - [ ] Checked schema for all modified table for columns that will auto-update timestamps during migration. - [ ] Confirmed that updating the timestamps is acceptable, and will not cause unwanted side effects. - [ ] Ensured the correct collation is explicitly set for character columns (`COLLATE utf8mb4_unicode_ci`). ## New Fleet configuration settings - [ ] Setting(s) is/are explicitly excluded from GitOps If you didn't check the box above, follow this checklist for GitOps-enabled settings: - [ ] Verified that the setting is exported via `fleetctl generate-gitops` - [ ] Verified the setting is documented in a separate PR to [the GitOps documentation](https://github.com/fleetdm/fleet/blob/main/docs/Configuration/yaml-files.md#L485) - [ ] Verified that the setting is cleared on the server if it is not supplied in a YAML file (or that it is documented as being optional) - [ ] Verified that any relevant UI is disabled when GitOps mode is enabled ## fleetd/orbit/Fleet Desktop - [ ] Verified compatibility with the latest released version of Fleet (see [Must rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/workflows/fleetd-development-and-release-strategy.md)) - [ ] If the change applies to only one platform, confirmed that `runtime.GOOS` is used as needed to isolate changes - [ ] Verified that fleetd runs on macOS, Linux and Windows - [ ] Verified auto-update works from the released version of component to the new version (see [tools/tuf/test](../tools/tuf/test/README.md)) --- .../8x8_work_version_shortener.go | 20 +++++++++++++++++ .../ingesters/homebrew/external_refs/main.go | 1 + .../inputs/homebrew/8x8-work.json | 8 +++++++ .../outputs/8x8-work/darwin.json | 21 ++++++++++++++++++ ee/maintained-apps/outputs/apps.json | 7 ++++++ .../SoftwarePage/components/icons/8X8Work.tsx | 14 ++++++++++++ .../images/app-icon-8x8-work-60x60@2x.png | Bin 0 -> 23588 bytes 7 files changed, 71 insertions(+) create mode 100644 ee/maintained-apps/ingesters/homebrew/external_refs/8x8_work_version_shortener.go create mode 100644 ee/maintained-apps/inputs/homebrew/8x8-work.json create mode 100644 ee/maintained-apps/outputs/8x8-work/darwin.json create mode 100644 frontend/pages/SoftwarePage/components/icons/8X8Work.tsx create mode 100644 website/assets/images/app-icon-8x8-work-60x60@2x.png diff --git a/ee/maintained-apps/ingesters/homebrew/external_refs/8x8_work_version_shortener.go b/ee/maintained-apps/ingesters/homebrew/external_refs/8x8_work_version_shortener.go new file mode 100644 index 0000000000..b025ef5621 --- /dev/null +++ b/ee/maintained-apps/ingesters/homebrew/external_refs/8x8_work_version_shortener.go @@ -0,0 +1,20 @@ +package externalrefs + +import ( + "strings" + + maintained_apps "github.com/fleetdm/fleet/v4/ee/maintained-apps" +) + +func EightXEightWorkVersionShortener(app *maintained_apps.FMAManifestApp) (*maintained_apps.FMAManifestApp, error) { + homebrewVersion := app.Version + + // Strip everything after the first '-' (e.g., "8.28.2-3" -> "8.28.2") + parts := strings.Split(homebrewVersion, "-") + if len(parts) > 1 { + app.Version = parts[0] + } + // If no '-' is found, keep the version as-is + + return app, nil +} diff --git a/ee/maintained-apps/ingesters/homebrew/external_refs/main.go b/ee/maintained-apps/ingesters/homebrew/external_refs/main.go index 2197463eca..fbfdcb51f4 100644 --- a/ee/maintained-apps/ingesters/homebrew/external_refs/main.go +++ b/ee/maintained-apps/ingesters/homebrew/external_refs/main.go @@ -13,6 +13,7 @@ var Funcs = map[string][]func(*maintained_apps.FMAManifestApp) (*maintained_apps "whatsapp/darwin": {WhatsAppVersionShortener}, "google-chrome/darwin": {ChromePKGInstaller}, "omnissa-horizon-client/darwin": {OmnissaHorizonVersionShortener}, + "8x8-work/darwin": {EightXEightWorkVersionShortener}, "cisco-jabber/darwin": {CiscoJabberVersionTransformer}, "parallels/darwin": {ParallelsVersionShortener}, "github/darwin": {GitHubDesktopVersionShortener}, diff --git a/ee/maintained-apps/inputs/homebrew/8x8-work.json b/ee/maintained-apps/inputs/homebrew/8x8-work.json new file mode 100644 index 0000000000..c2e292a954 --- /dev/null +++ b/ee/maintained-apps/inputs/homebrew/8x8-work.json @@ -0,0 +1,8 @@ +{ + "name": "8x8 Work", + "unique_identifier": "com.electron.8x8---virtual-office", + "token": "8x8-work", + "installer_format": "dmg", + "slug": "8x8-work/darwin", + "default_categories": ["Communication"] +} diff --git a/ee/maintained-apps/outputs/8x8-work/darwin.json b/ee/maintained-apps/outputs/8x8-work/darwin.json new file mode 100644 index 0000000000..14a5ee5e9b --- /dev/null +++ b/ee/maintained-apps/outputs/8x8-work/darwin.json @@ -0,0 +1,21 @@ +{ + "versions": [ + { + "version": "8.28.2", + "queries": { + "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.8x8---virtual-office';" + }, + "installer_url": "https://work-desktop-assets.8x8.com/prod-publish/ga/work-arm64-dmg-v8.28.2-3.dmg", + "install_script_ref": "72ba3751", + "uninstall_script_ref": "7ed20ad7", + "sha256": "0c29e0de06a9a785e0f95987dc498b9c77aa7a27f21ddd8910e7d78dd430bdce", + "default_categories": [ + "Communication" + ] + } + ], + "refs": { + "72ba3751": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_application 'com.electron.8x8---virtual-office'\nif [ -d \"$APPDIR/8x8 Work.app\" ]; then\n\tsudo mv \"$APPDIR/8x8 Work.app\" \"$TMPDIR/8x8 Work.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/8x8 Work.app\" \"$APPDIR\"\n", + "7ed20ad7": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/8x8 Work.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/8x8 Work'\n" + } +} diff --git a/ee/maintained-apps/outputs/apps.json b/ee/maintained-apps/outputs/apps.json index 64c2d6d908..dd8393e4fb 100644 --- a/ee/maintained-apps/outputs/apps.json +++ b/ee/maintained-apps/outputs/apps.json @@ -22,6 +22,13 @@ "unique_identifier": "1Password", "description": "Password manager that keeps all passwords secure behind one password." }, + { + "name": "8x8 Work", + "slug": "8x8-work/darwin", + "platform": "darwin", + "unique_identifier": "com.electron.8x8---virtual-office", + "description": "8x8 Work is a communications application with voice, video, chat, and web conferencing." + }, { "name": "Abstract", "slug": "abstract/darwin", diff --git a/frontend/pages/SoftwarePage/components/icons/8X8Work.tsx b/frontend/pages/SoftwarePage/components/icons/8X8Work.tsx new file mode 100644 index 0000000000..15e63115cd --- /dev/null +++ b/frontend/pages/SoftwarePage/components/icons/8X8Work.tsx @@ -0,0 +1,14 @@ +import * as React from "react"; + +import type { SVGProps } from "react"; + +const EightXEightWork = (props: SVGProps) => ( + + + +); +export default EightXEightWork; diff --git a/website/assets/images/app-icon-8x8-work-60x60@2x.png b/website/assets/images/app-icon-8x8-work-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ef96d0f09c5f09d26210bff3a7a8f9e3929ba299 GIT binary patch literal 23588 zcmb?@(|;w-59m3ydurR>Zn?E>o7=5zoZ4=;*xI&jw_DrZ+V=haUhe$|?n5TYOy(hz zWSGxHC@DxHBj6(d003lZDKVA*u>b!61oL0{ySgj#iTnrn{{a91nF|C!{)d78tILJ>zpehckpGYVpP*DMlsf<*1dtXJ zR`UR!cR_n#jVufL{(6$J;|mswCnam;g`%|^($x#XS`(QyDbk9s$ zpt88xfr2Bmn z{{JMNpG5pWygNSq&VEStVVwUe$;jeyB?mjT*5#gQSQRo@h9^$V>lg%W=eoG1m6UEC z19Zz9RjqEr77`xJOz9Hkd{Dl!1H&6Y*tdS(4R@D47!Z6(VUbUD)2mADlF>E04Q1SE zhjC_#8fne7&3{J~ZiLm6kbDSg$_vYxlIs`N?-JXJ+px3f8>;>`+pdoeE6qe}vHfU2 zAccsJ*g-?XVe!33JDG#^7L@lD`-IVKE0Fcp&=H{BPKlKAECYTeqs-4l6Z}hiBsdNC zvMj2u;q9OPcdYG(a@ixYlXUpl(p6GdT})i;#-oj|sJdcuDyy2b^hkf|`T*auDyVvQ zZSiq=Fu*KJTZ}&*iS={Z>e^6|^s@=d=uBg(Z_MmT<|(w;fI3T)%?tB5?2DJ z3^+POf6sNgOub0|#jDb%y#1pE%YozJFbXVB3tdWo{|n;SK9pA< zQ9sjQwq6OOZ8P3x+?91{lkZ zGhscAi^G>@$lFnnF3LP^MB`5s%PU?06L#3+C=Jbyx_|n8EH?&dDy!K8s=BmfUK2iK zO5##stVt9r6l=t+%cgZAt!24eKGoxXmn*r?jfYjVsh)}EC;y}UH$otiww|9NtV zdoWt)qXj`ssBxTh{L)RxGIiJieY**cf$G<7Y~^4r{eIDxtEINQ<{PL~@R zlHdM4=`ZRsRS3T<8^?9MVwHcz%Ns`>dwgm8wCZG>w&)pUnw?VEk6n=a(MZZXMA*#R zCI*HWUs;1ov-=@_l=uuw8Vz@=blm)N`Hi3i@N^)N%lk7}qJ42ji(z8_F=%z|adaw| zr$;gC2C{~C)`-tPhNohyxUX{glT}FW#J{QXNOb%%{ko>&OujktisQsu3HfWgdWx!^ zuOUedyR&@aS1pr^(KcsyG-^?C#nU3L&hz0ZZwaiGLzmuho3Btjrn!Kvoh@&r7Yq(_ zv$HMf$p9i>7A*Xt+M9MSEeNW??Q315rwMAOCY;2sH5K=})@xBS$0)B$+L{*RLECj$ z(`$3Zv`g0E51W0Qw-sNyh)tWdx$B_3YM(!}UG82Cx-@dnLN$1#>;;}g57FFTJgd**?c&R{DT28Ljd8^FukEJo=;x7*{p|C$Z338;;9tXLhs>04 zhS|O5L^gJcbu~w?C+#}R5Hyv_Q|HUM*eM=4BBwIeL0wVG$9PSOVuN=9fdT3jDSkyp zMr&Yu*{XmOlB>91MPC&U92+0LQSrsM)oW!#D51p4Yb4#yFUC(}Z4z&PpQ?6L9Gd05 z=nl;yAhD12Tn(iF_Bs-$%Im)b(h-zNJRg@1y66gjy8& z-A>FKP;GIlTo-Rh;UpKU_++w4FYyPsXXWwYDkmjX7+BRi$t|^=-XbosY4L zTAI6?>ONevte3woUrA^H_(tshaFMIFKMtGmC(oj-4|MwuqqIe)>3mBJHzLln44w#n zAK;f=;phx3tg2}qDOdWcJPkson0Im!<>#CT2nydF!&;Gl{3&YC%ww17`)Ng}=SKdz z-8J}WcJ;<)tTakQ*$3yg8=#|T%udL77(N#cGxzOVN}9ouPbmIG{msA7lZ$hjtF=kx z6XoVMvgFeTx;7jA&BW5ySGFrN#=I!_Ep#=O`y&1mo9)r*SDQ2av7)N7)+y7)xFiDdj*RY~67tTd z-nMTXZb3tJeeD)A_7q~B#ordGdJXJFJ51;w6oQvY&nv%jNORGk$f){V#M(x2tO|gM zKglV__&d@6jxt>M7Hd>5KEUWR2_&K(gjIgx8K(ENY{O|QAF14oHc@c4AnJly1PW`J zTllgR>zkT77CH@mW{0ng)1Jd71SJ5E+cAW5-@~K3nIfE;C=0$PfOC7Q?hq~s7HIFo zKTcNP-6`JW2sf6%+2+KeWknrm#W&d>P$!EzGDzEn3PBH?Bw(_bBkyNUsMA7-RrPmw zXYzN!&U~lWGmgM`OFcPLTP+$W{5EIabD8;tK9x$n956j=DqLz+`!}6*D_Lz*rhDbA z_6HfCMz^!^Z=k@eK#L}_xPlqHjAaXo{Oe*$Ey$YAsnJs zN$f*OPEkL-PZ`nodCjZy3!=q}o;TkbiBKM)ca?t#k3lk(uMsNIBu8voNWU#9L0{(G zA(#EZ`(p1swwIYK5K!#a3D+nAyVsj(XYo{QsQ462su>K}pBT&LNuw6VHO0*?EC)aO zKs|fsCplL>vu_%jUpv0SL?R^XrZGJ*ge*F;#ARgN|2UpIjNeL*UI@E3Zsp&T_==lDmSzz!= z5v@SA_p{8%T0Eo;(e0T7`?WtrK{J#P!niw(x#Qu)W3aA`kTsIJo`Sd~G}6De^q0=O z>Sx_LUc&BOA4_@6PTNyUo85fHc56$X5=GvN>;oYKJ4Ff>S%1GAF!H^4@4UKZ!cB`^Q_M8ZJJ7NhTu7dgFVbu~Re`7-_BI^)) zDRtSftwSu598Ef1?X@lTBJxkt+WBr9NZ*)Xr({rfO879v_mABeLe9PHRt5SOa)v-`6SqYZsr8$$VAni)w!EvRXl>@|TBXp~iB!ajYHsH_)Z1VrvfN z+Z<8tgz3`@7H>bBd5H)8w~1C+UT$B`2n}xl(?HcjLZpkuucoApH_#uzHn_SjB{M0v zpEwh6%9tK#EY&c%C!=scl+yTUD&xr9g{Z}aO69=1Gd}X&=jr_5ZNKelx`Cnc|GVkA z3w^nbx*As65ewSRP*zHr-B0k6%o=B6Qy2|$DJh&J&kbZL`BY2D?oUsbE10pQ+556* zJ9@vk2=%8%`}sI0#^Ql#qVlieVxhm2T>Mn_EN*oEIN3|@Bb~^%`CT{e zBmAOZV5H{h3)B{+FI`%) z=W0w=l#;CUWD-s8P2W~QeJEu zZI`*%lgcd6v%9E}?lKb5|EuuH3LTysYKn(g}MD$}n%^uE6Y^xT2x<;%6pK!q(+Z5M? z9tk=u_D56EKhUFH{*A0^lr3hQUJ{T3(uM_*C?Y#o|5B3ZV;pP^O!3X|m(3#nkRoQ0 zFCk-3@6I>kSYZ7IBQ9JJZ*NsN<(38VARxUya=nzNus~l_BRFn9vzG?mvufqyNF#G) zd%Ak7*Q`3A{2QKH+&I6@IQ44A@OMslI(o=fK>k)s(Al6O=wUY27w(8%*64qrKGAz6 zsHH80NVLwNT11C3=%-rX+g0|6ocN z*gOk~pz<$M0DNWebg9PC5%&86N@#O1wjOE?+lS4fe+}qk|L4WvrxfpUn2_Ij8?(yD z(x98(<{2)`hEHX{z-nsSJblN=KbvXzfEFSM@=YYShT5l#rmBvltXSK#l|_79?8k{N z4l<(Xr@$kaMdZzC-HD!CtxZ0igiXkCHwZwtAgr!SP3P7INUn#?$N2TO7Ux z^>CoU1w4%ML;UMJTgBY_3jxle+`r%#%{fgHP>N?be*7I~=&d;{Bo}+E&79;2)sqC} zQCs~rkcu=-n=|#C22iy#=U~iWa3sQuI$g5ZQN<^;H93Cjr=D6d-~mf{HOfd-@5wjy zFY`ZF6Bd#Jh;@1DFDB!Zu)Bqb&kN1FK0||8cA6UUn&r786&iGGEZtC<-{Ae_j^eqB z9?oLdEa0V?6B`wL$I~fjGN4$)Ze(JOoyWgk1&&~8ptkhk4kRhh4U9&fRH!_;@A6QO zAu1s^v~D@1`kyVu5ZJ*V{22m21%a(n6lkZ{-o&4K_k^Agn`KN*l6%4ZvHA;yQz&Rb zqe4iTL;pLy!-;ewV($OE{_t6OF)8+VKfLEz=Xm)|qfj*ZIJ)_tvWsPOaWLuDR09bq zXQ31!iO}zYst038HUjHoRO`Dhec6Ma z8Tgv6bgG(Om#@}b%|A%UcA^L8d-ItHm7~aG6R?#LP>)d(Q$Q?J$ibqyp7cGVT)VGo zpLor-pnk3^@>}Ihd~;X6lNc@LgqceIvw*CP!E9DY6iS+ZL*@GjWUzBagQAgdwy_R$ zldz1Z?sW7bL0m#NCFBYlXlC4`A^O+vWnO>6^6dio5@;MhG<^{)4;(Iee~Ak-?a4wB zFpQ1w0u=Mj8bxi=&0e%bmtY?pv89n6HetP0#Gcav{Y*kREPAXRMrOXWw)7!#nS`Lx zG);s(c2^_=THop*-=JfeWd`b|FX|L3D?#7!e|M+lWxF7{1{&9NB1;lpB;PiGpTX3+ z(pcA-B!L_;rExRNl>8I|s#!xvrp_&W0+B5J39Lg*23Fw89>a6=5p;7wnL4B%HZF~{ z_WiaJQmVaskC^L&g^)DQBm%&BxDSTIL>Q^oo~j3;0A3S=pYS>`6s`SjPUmOHrg=IQ zmPC1}6Ay`HFr7 zn>-;kk9vyun{`iaL!h^BdKap)YOLJq;fP4$d6hH5+^0?Y&+GDl<Tks`$S*JSA@#p#yB^_C! zE>%gr_6fF&^98v5BzumF#Wc-7Pm|$LNY)vCbrzw(75!|h2=u>IKUKz$x;YA~qyll` z(I*qESq~cQZNSfU)!5TfGFK~97&eBj<pm z_^c}=au(K(-RQ+{#fC`(OznIp6oiLTIMQ_Jgekg|s#}po54rf!EYM7&{G7P&w4vxx z>GE;c{SYp&cK32C^jEgJ$#(!*$m4GKJ^=x)aYN^_|J>q;^b6kdY(`lNWsvV+Ch-p5 zzZnGCm(xd=6g4h}5^3*ssiQDlxTV;7@%vF=wy}42m|%wyK4T9-yF;|l=O4fBHUeTE zO3zWGk0&GJPfTuM@R=#dxk88c`yVQJTQGn7d+Ld*K3Yd&l%NHQyYO}up( zEstW);UF zvo7Y75<4ENy6=+v@7|V(oWVhhkj#MA?nE+ehLxjR5s8@*MVD0u1)d}XQekbgODDS%TG$QYC)@{kGtUo&?!wTjtLPnsTz5z@F zX`A6AZPk7&v5qF%_|NaKD-aN_0=@Jy07APug_Rb1PQoAiIM)Jg8)PqB zO?l)O?!!0Orq(L(dMwT>28DafZ!P!r=`Ua`;7w2G!J|xlqEBdt9{@*P&Lh2WRI-G{ zih`uTkHn|n)y9M&RBD0vnNU$rAZ)Z72SRW&)P-G>=0V&{oF|XH24wyzZVu6Fx>&|s zDh+?=sl)x@^oxNButWboGk@UjRHKQaCf3czxa?c*5*)rjce41IVfEk7@}ot^PT=re zjHEgdWo8zbOV7&D#?=<%iUTfIl{Li-Bi>Y9zS#+WwVDxdTb;oDeg^97}G7VK0vQ6&VmdGz`|r^dI9IY!o- z_Q?dD|4g-pBwQL(*RB?Rti3-XI!XGcq}Km;GxTB z@2~w0)>ImW7@t}(iRDDK9Yw6Yieyx17vpZou-PtvR_pHgRZGc36>WLf$&RrUeOwvk zjNLoO)rpdRLdPF}Pgb0i%in*cvublu!ANRi5{wo8hd7m=>$Kfic*v9H7)3$p0iefS;c79o_G)zb%f0o2}5tgi%oQYIST?=7+9=Ea~Z@Ah?+k?PP68Ud$ zf9$afwE%F*YMy*qmXxZnyQZDYl9K26ISkd_atxp3swCy0Ai%HZ5BVX-OrIi24qgXh z@P(HRsL;YHCQ&Azu;i&QBvYVEq%ug-EN_{ur z`P*|gUom#yk<9v{k6b((xJ}JExLGdnGJ6%=tYf;_&9IYVgiLZp{P7DvTtL`M(Hs!* zv^^Cc$14HB*DKW84{(mzzg>}n=m?5-`s zqZuPl#3^$w$~jWM5kEd(?stWlM&SFtes1x-5TR%`~SlrgnPJW`Ip_VCg(uyTK!5j#Y+BRR=_*ZKcQK=LzhbQ4Sz}Y*d$0mbC3F+V&mDfJ9N7D>7&*g5$y%zxS4w4=r~xb6=XY<_Pr-+Dm@jDN*H2R zhOZHg5-vi1i@cwQt<6(E%1={`I0zCC^9v*je~NHx8XaULh=k-3ftZb4>i(5kA<-9J zG$>U6shPL7$2*LMOqRWnXyq?N`3O8a`L_2Ef(m_iy9^OnfdREFFoa*`3;f-iCXyu= z6%appkb=Ymo(l?IZ$9%kjqZ~~fG|d>Wkz$5nM|%9+6peUl5v0}0r_WjEV=uI9yv%H z8X3Qf%8BEJ6}raR@kB>1F-q5vVQcheeqS((vlyZetg6*_s1&E zshpI5ThiwGMW{-KZ*cC)Nd+VvxNBVoeo${@qsoo>Kc1CqFmfc0NTuR&_ta}xGP%g< z8m?Pn z=E?8PTasu|;+=5GB=Z&e`pQZ2IeSl_lYxmMc&DLj!w861(4GIf$e<8KG?i8eEqFjz z)Tf=bF5y=%WTc4w-w|}~uojATl< z<7nE6Tx@^dGLrhLh_oUnhP=5>pYRaC4WfJd#=aP({8h5$47f0gC$#xxje+9PYveUp zXWommMe=w0ODU^-APfLe#Hs!u0^ySOQ-^dKXy_sMBn`Qyu98&q<8`9BUX|4BNArOP zyihsggGo@XY5Gc_%lEoCVBxT@18Hq5M-hrjBPUwNC z831)V7$HQgYR{$a9)4V6b%vhrk4qf+#ItEGR>kYWoZtt*en-lk#ppcx;~74OC{e*z zW-#t#fvuR0$yx(R?pMV!*(>V6{H_{kfnb+2=J~tVv^ID5z{$qWcv<^u+Nyd)`Y;eZH|#9PMqZl!^1*Y&?S$Y(Fx?jnqKNQ`|$m@))%UR zLnOi-L9060alSqi{2?95$&!V+T-`JSsr6{nU}GC}L$5bh~`hbwtM!i-p7ZCRbWazy_X^__<_f433(7f<+m zO(`CKK87&?(!Uv0?h;&S3f))0h<8mO)WWA9sVjU%s}UO(Ucrfn_IH0u_gC;q_&Z zP6$^nMJw+t(shgOb9Wk%s2Z_!MWH#mszOB`C_?LvX@7)%M#Op zylztV-FJ_y)|#EqwHJ$s7hE_gNv=;B zz+PaFtLd+BXoxZDoiSP?h@_5gcL@2Wa_3KHDEO(=a|}BhIGF{MLgrG00nmP#|5ald zC|xq`A6>5^eG%|mTtHBlUe>ga=gHla>0}j*=9z#Y2eKromS;x)14P zAq#w}aNaWi_L{}T(F387?a0cn27Eu8w$UD`fjO^iX}R~=BJ8o3=g*T9dn8& zM#u}1;-W;1L+_6%HDhd9zm8XhbY>mTZC*FQAI*O0g6$1B$ZSa6pJt)`uOATD3pV`Y z%mqLPonl94+1wyQ=nL%mNz?tAOGh!xOpy*G1L)o~ySwe{h{BLtd``%~KAAH``hRU( z1I6HXAt}A6_Lr0E&x79)R5nZw+vF>;#Ct!OrT`?)D*tUBNTYtsJ{9HLFkxq#uj%k| zZ^F8IO*8tZb$-8jPlRI0??A2*lmP~|ay|0ZWI#x`tGAJEC{_|ykejTOG4(qt?7unL zTq6q`$r8sAednG#TtBj+5*q2*_|UWHC)^pE!yoAEJNYdr?PWLMYFTl9x?*z+-T16$ zLBpUFvh8n6NT|z9&4TsuU68Ftne2ND^JZ|8PL%a!rK_s0F4V|!~vu{E1mO+g{X zw=yq&uzx9R#pNHfdgDG49%Uw9+*kg=v&QQ0uS7P62Jr@J(V}bQIX|0({i}6K z%43B6v$2m4OnULO43Tc=AYujlRt{F(t@F1Nl!g^@dwi8dgyJn2n&J7ydrs?$L0i)N z#pf91q3e84Y~Qz1TNwpfsu`&7;W890zbE{k=&r7wiY$Y^5#jvkV_4ZDr2O;sIV9t*Q6 zoro)Q+LT3gU*13we3SHVAeI|5uL*wpHNm1qiCxbXx4+|YP42-43XY?R&cIY7A**!1 z#o-h&OL*)Z0YbTGTdk3Sqn={fP%y7JGQTroZ=tqG5XT)l!wq_N8~3sy4tw_b$duAL zdYkSs?gV>}+bQ@_bDscmrXN~>Ih~=_=YX{|GeR15(T*TFQ*pWO1>vnx((gw%H&0xF zfhd){^n4&r#8*ro!u?Qw@;^D^`jPYqx`FQnHV_ecNx+Dl)qqkaNnelY9+KG|QBzJ# zXHmi7U-x14LfjBFSRp%YYpYtN)GNmHKDEYBp@|E=g7d9vu3}YV3C`6 zz{Jt3Ox#ODPJQam_HK8V%NUwvDW0?=9ZgE6EP%boen}({<)YTkC z8G7Zond+^V!x}3*S@VWgt-EUso{K)yo*bK1UoPf;EzET26K=S;KABRWYI$V4qyw!$ z1Q(5iz&tuv1JWRSB_~pH?e!wt>GwKb&JT0#_i{10x5^-z9b;DCaneHE0j`ZugtF5$W3I@9aVenEfd zL)mqdJUryOGNka)r@OR3($a!OJ|%?FndzcrJ(%E=^PpWz^IE)zmj6UyZup8Zl z{1nEif^GW~j;Z9?lNw~Fr~u`lXC^2vn+hNjn;}2zS|dksak*%!Yta0Uq2yPuLd?LdQj=%LMkC)^i=;jc2r1{GG{%l z4^G|rPIzZ~Iz2?#Gm+RQkkvS(hK?Hr+w@;`Q)L(Mub~y7gLgG`b#Boz7csO}6kc;? zi%wrVCH%;$LHOL1uO)CAEhFw2J=zogcw4j$dIBH`&K$Iz>B<;tZaLJ4SPzm6;_Dvk z&8Zj@;3VaIJ?zikZNt1=`JKzGiGMSW>xVq;qED7TiJ_V41p&3T?jf6VbQ~u6=ZGHc z9bJ=Zas>2Xp3tIhN?xW&hAHYOj&5opE9WkhAhO3}6)?zpgvd;KmA;jEgTFs3)k^{r za}#eFM;{niRjxcTRNN{J_suA-Mc#4vKRwhr+xbbm*c=N)1{@Uh80j$tINyl{%h?a! zrLRw7C_(P2&}J5KTz8Oe{6V#>CLFi~3JeAY%flG+qz+yRJ|Iw54!3@xxuL=hF5c4r zq$1wE@I?NLcXIz~R>?~lW;*N5h`K9Zg+4z&hk-r?w=92aTgsO(t{3kFNNEZ?g8DCy z?_;`*>Ie-GbJr2@XqtDc5*Y-U#%LGwld*L4hzq+Y@Yav(reZ!}2Lz*O8VD6Ux6OJP z|84dZ-xY4xJv@q72!fHltkofCwae!B4>5UDNYh*>C}mWNeN@o5AJk;y8YEY&oyBZrpE`)dSpGZ zcrm1xyZb{67xSE?D@p``EM`9swaOv5Yr;E;oD!A`uM zGsD86M*~?Rc5_=D%HZvO9n-6z)^;rq7kse-|(gM(DfSBAtiWCFyU24Fp7uag(*t7Mw>2 zIhuGH%^$;h9LfH*w}uUzn`_r0iuNUpM+_eoaYJ+xL*y$#1E3AWy}+Im-Jtjg48LH# zigK6X?+boB>_*i9zQ#~P8#{o{)L2rrs{q3RZd1_{>VM8XBC^&>)Ge%SN zKjHuuch2Zjotj#>(uphsfyz;(sKGhDF=y^CB!R!p6ZEz_+{I})D>GI|q z+AAZz36QmHC?x1AG|_eZ5EI?}H4t{r8w}7)YiMT|d#jOT{>bISRw;PWl{^RtXYiCE zso(5o@VW$Z)` zn23(kC3B#?ky>B*Hj{TsyzFu`6E|^6i539|TxO1TQ-U`@Q06Tt)mHDFMWDj5J~#~; zUB(Y$z|IE5Zjx~*2zSiMHO7XZ8hZRH&cG6~k;1gW0d=FCS~{Slj9hi}N#^8DeOHm` zI^f3z7M;sQHf@Ibv*k*907*?OoAy){Nu|8D8mq?REVgwoPgeL-kzSyJQSf|ycdCSI zHu#nhS}gxe)OFQi)J@F39WAj0#BY^#U*Wx);%+^T1sc^`RaT3NL=LYDhZkYrqME2G zzD}2MT(JFjSG>)ehNYoFSQ6lSzg-A#u{|Id=X^&3EqL?R`RoCCiS&?O3J~s=QC7Dm%_EDc2WA0st9f( zf^hqFV3;zBboCBS4}1F6TO2Q<UH; zg4196*3_X4L#P(yg_M9|0s5+~cG4O1{O`;o8h921()KO_oT#Gdk~lug#dydSz5=5q z+rGtsSHEc>HBoz6X@kXKvH_%ax`)Z%*7`PE)ZHO2t3_f2pY-7eSK^m++MuV-Onr-d z;RYGfH~PErB-$p$o7)~K@mGCL=g@a53&Ipxbm}Q^uN*|N;0aSxHL{%^t?KJsKF6#%@u~%_BWX+ zWyO34m@GbiaGT4~ZhQ-DCN;uewP<(&9z92THFP}p>z@r>*f_zaKq)xv_b*zkI_oV0 z%@&}o5U!T_!6qG2!q@wZr#OIXIsa1jAP$(yAmdIP_NF0PR2s`8+q8Ql)PxMG3u|`? zYKzJ4_IQ@{k{`rFZsX@`BC4Ktgm)!P3h#sra42Q}ep*Rx``ZAnpvW_@El&lG`cJJ9 z3));pk5iu7Jb(D{Hf3y6fgs(iG_#w7-S4U+f;;hmrSBStfBsY%+fI1`l4plmBdwm9kf)qqEs%$X%0WeV1a*HFlw7uTrn z(T(0AV=HCAhE4-dMo@XCB%prI!&G%l5ed!|xxTXo-x!nl&Lakor&v$)3FB@6Dz#T) z;p30AJl8UH6AQWu4m3G9zcorPpgL|tGLo@3TeoZJL=%`$%>ee`BhFyxL2vJ7*Y%nr zzsX)rIUL7Ysg)QRj{2DrgWuepjRTc`68ji-7x=qGU*;^|zk!sg_wAhK!mO0T)NIKB zfIX-aH7aVYZH==S?91i#eZ^+vO<;*XRVH_P(FkiqBupY*S_nc*c|=4(#gB?K*EhC1 za^?5+_57%)rH89oZdaVqVa1LVIjXxO#Kr)-%$QlI07=IQ%{!Q=`=7G!l!s>ne zy$1cmpEl3YrmzWiBN6;Qg3B=AQfsj>X5t@IR<+JU1ed@gGe+?b4avCfn!J-)XVeJ- z6LzDKZE(oB5@)Hj?Rg%T5#$^^Ay))&~T@(H$EYuAIdneVioFszrvD1IpH8-(x zd!Y^JyWw8g)}}hyY}-N=Y``~0aYI@(1ovu$J*?wfJ8J$G78>vHrNS9>eZC2KL%6DD zQ3?Kt>u;zI?}Cnpv*1=S(uX0#O=T4i8U5RM2W4>kH(HD*mqbj(SASE4A>i3G<{=;- zvxS9vm4^sv%{$-~6n;9I&;m2f@=KR6afBG|YkIaj#aK$VHvsbo`9f-snj(UG+U}nl z|AizA+1~OdMPY#bat|jj^u?dp4y;sNh`MZsiRU*98p9>xpd%%@YrZ{Tw?9qJIhE}l zS|DUm)-uMDJN5h9&We8vr;5*u=xR8rr4(%?9f7o{QPh3xW1W$2A>|+9mL0JBqTJcL z(I0k}y&t>NVU#o_XRnAXqOSvuamhpePf|~6M8o!{_Bzx%d0w>UyY=F<x9e4uIH zfCD4wE}C(t22?J;>qvhd=GI0wB%CwUDUkuWIcqwzSHR)o-T@)0O((;zy(XG{H-0)T zk0YgFtqLjx&4|No=-JBcd>%fym7k>SxA0(wKd58g-qpBZXNUMx%hdCog(HbfLbPoF z`L)Tu96UMe`)R?>%3F^3*@$p_gvI?8WZ?vE$dlZ|c`nBE;XbypdP#YB&7E+T>kPEv zsP|1xE_tQPDg_gTj-T_%+=z7TVF({fCJ@E0)3$yTBH$N!tOG*!#JC)k;t0JY-vEr8 zTH)WoFyXju&^%J|9(%Xj@}|*{Kd7#mo*u3*eG73-kX;0Nr35MnDuG>O?JxD-=OSnW zh(oJ4FNBcC#vmEev2Yfxm~H^0=R3D-@-X|QvH>jvS?QjZ=6QXh2<^?hCtg}@8Lr!^ z2W`vv&GP4Cvh0BIiha@yKpoDl|P6LGi?wPcFX!Ejrha zM!qj<2Z5P^Z&s=lVKGvCzk_6^C;-}s(QnRdKx3D6*F~+`m2+jM@HZ<)BQkXC5hR13 ztZc(cEkOl5vUW#fW}p8#)|0>znKfo*_hcxPl?1XkRVY-wr#vidAZhhKg{8Svflwe ze`+paF-XR5m&&2z=(Eg@zy|D#_B*j#XmBTMvLt8yX3L)6`$UYFDT&tOSlWsf*;I6P znnD9nK`Ixb4WT3*V4hRm=DRcvBYE+w2d06_?O}!|40(^G15ifueC`Q~R!WO_hIa0| zw~kD<_%-;)vPDp$aC;ogVZyDJUiNR89OHLa$w#DAU&MW0BNm7qu{o&~BS9h&H|6G5)2h z$iO;DWOW^$_vI?1See27T`g+IQVxm)P(q*Q^S7qZZzyTaZOqAawagoWU0ebX;oY=8 z))3iu_$Nfgu>IvR3$uY3G>Yx=5}TvaUk=>~gvZ9qC8S zm2ePzLV&zGb8K^fL-h5ldYEqo1DdcF9^B_|bn51-cH~=HmblQE>-+Si5`Wp`kiHAB zkQPKN*5rOW+DC_Jc2Ok+@VFf1a2ai_XR4uL_N zE-6FED11w2kTg0EWl@r-FlFG8;kyTZSK$k3WtL%8!+Bup;q$Xz3-F7t<~D{)gq$s; z&1)3AbLf%2Ax-HX6BWmbusHH98wBuU+4?lbda>bA6qJ9s0DZ7+$ z(PgyLWGDy?;q2%OL$&$2o!To%K272PIl9&>$Q2Zxg67?}iBe~+u>*l0HcBSkDdvD%!Ws!KCK~-9vc<*3zUzQ)29x zgEEMlSdxm#*ogC0LEgbg%JVA&D_Zo?(A=zt&0PTQrPoHzaUzFU>S8n}Tx<)p7UNn$ zj4yPEd&>I~pwsLwubg38f|(9^Om=NV0a2h#e{N!_brLmsoX~pSru#pVu+NyKqu<53 zS#QU?_zSk`ECNu8V>s3BKS}@nt7AYF1WNj-JPE73GIR>|V=_R_F2*f<&+jRuf@n*^ zntk>!GwCEsd0^Ddr8e1pLeWtxr5ko#bWT@59o#5baP&aLCNH9a0~F@ci%|KqGA3fd z0%wbmRE3O0WEm^(YMF+cpx2YmcwPnNOVw;JGQmQ8y0Ggoj&myOBb!cG7SW$ujwF?k zb8q;}vZOZEZcmDbcC|xF8zuy6 zai`C%HF!{LMQ*o%gqM-Y^P8AXjE{GXRK!wdZuelwn+g&2YvDKT@M-t`pCjh2_T>sD zSgd{-i6pD`Mi|Qj=`@|P1IL1GOI9R}zqi;QfJx$sQ?hnQiOB$hZxLO$E)Vjn)0N#stFMmP7Puu>= z=x{-koR$dO=5-rI5S#y}l(TG#g9q0z?(Xic#VPLYMN4sSad&rz;_j}Cw#ee{#ck2z zi(6sg@Xk5^;CxDEGLuXu^W;NvUspq45Xfw-XCOITE0VsRKvAHXvLxTR1>kMZw;q4l z@x*5q4?9I3RR>_nZpSzPZy*Z8UW46ALQ34w)LLQgkY_LSTvmr5l^vPQR;~z;Jq9A9rga!R4*$>io z79A-Mi^!{Q9RqcTsY@EY>1y!6H8IOS9p5cFn6IVokphd(!+RVZDO|D2j|v7Na!Tzz zNx!IGqzv2N9LN@WTi13%n*pVo+* zx!RQc6O+!q4Vp{Knz5l3x__T=$k%|&xINqfp0iSo=LL-PL~@}k5ia`AOstS!&Ie7c z=l5A7{M9$`M?Z3{X<$?yIM#Qc7JR_KPh|`6O6}-LSMVY5`qK`5RcDt^?Rv~kD)=(_ z;<_x*TvSunTTpxJm$}5hf2b|kIi_4L;Jy@JQ5AGPw zFwPCaXSf>cNX|g4Qk?f3DiJ5fi5gliNh!>l#2d5k-1&&teXc!rU3Px^M4}oFL=h^8hJPsDl<&Ocw$7eJ zO{cotd~N*JS6y+bzh2?5Q{rL5kwGEZDz@$ZUQVQdk|E(1WE*1HdEzQ-AGPGPypq`@ zQFg3ilmmEOzWQ=RmTrH!=3WAr65Q2g@FJ%adR z>DZ*vzu`g#J+Yl=SC63Ng}E(t?BkR%37R1bPzoMCl>0w_D7z8=%id;SmsE^g*?qfJBgSvmF>_VyB1M8%@ui2~YwBI_vS$O6rjl5g zs4x0hzeho1^~36$a_IS+RGRSK&nuLS?qBLCM1_~0Rlh?k!4dx^N>U)dE})JMPMe=m z{>!5E8(Xl83NJdq*^7v;1%QP+bGM(IwR3SyHR1%c{xO?rn%BntkHuqthU3|Sx_YT$ z{nJzj-Ckb>MiOW2^iVDX*t`5b3LMpAuVYgP5^5@{TplElclQJArDh zsv8_s?#dg;*wDzcqddFAMZ#m}uu?J?*wmU(kZ4Qzh?m8=S#OPjPS?X*R@**Ed94oH z0ct0I)dJva0r}iDsv{<$ z3+cpqKB=PotCp}vH@0sE4gF12c=-^nBYj)W)XMc{jaW=pzZKZLPWK)qu<^$O{|4@e zLGz~q@gObUQU;n$H90<>*)S$D{6>_Gki+jIRQNQkhE)0G%%9{O+~Vc~65u<9XDOr& zowMkn6I5l3q~r-~4`Gl8$~xQ9IH7liD#dk_B!jje9#O6$V zQsM&Qh_bV_C6);5rv15}$_3_>jmYvaEaWVTtQiWVpLsoMVf1P zDQ9`^=rLmDsWyCP=Rnb|nqXSu2jU#Xj*r6l@`t=evN{@tgQBC!c_+yRRC29bhwCl= zs=XsE;onQJ4YxUaTVoaeGS!az_5#uXwa(y<8Zt&Pk^yuEU(j$Yl;>x-*W&Y!_K2=% z%>6EZ?3WS{(e2mhM?X^URF;TgxS7L>$a52BduqTHLO`(+@|yo*G>oDTV@pLx>0jqP zC%29|$VbLSwNmE-u9dDFhWQ{`IzYlMxAY z?zVMCJi{kIGeB!UQ)k^WXTN@b6H+tk@Mu zp}z(U@!Q58rog~NZzYBPN=`dcGQkM75p_tHfwMg=Jt%qj)#)UzUAks_6uS7$J8H*$ zN@U|2rf`QUZx8B|sVyH<#XPg!)?Se#mS=}DKCAf!Z3yac}cq}_AD z#Tg83(yE}phh0&kE=bzK+0AdpJw2%rpo2;B+Eg`%&0Zd%^4Ot*ZCT`10yNI0_sd{1ZxW#_v33s_@Y;|S^JSaj8yjL2{zB@;3L!1IVx#oay-A#kn*n}ssHOj5tkL@`@H59) z^5f*$INTvPs)|Uuo^X{`jAsmk|$G6Ybc6?WrycB_F?1k(4Z96eP{mt@V*a0SN7KcrWaLi)1O(ajU%Y@ zB)8<}Opt^$I=lC+F>3a(A`!}R!dK*XrY^*6$VW(Dd_=Wd>%s=QwB2DavED{uoCz2^ znpiJ%KzYQu@`v35m3l%D3Cig&miwD6+&CCpXybznb_fsFzinI*Z7lu4?j(Jqi7{i6 z>TkY5n|Z4lo0$6)7_%3Lu{jtxFZ(K5GjL|}r~$}_`V=Jg%|SAMV10XIfidSE6HKAa z?=J1jdG6Mce6h;|@d!|_W<_982_C|X1v0HUZn?LfzJ6@!1B}PW&FTvi{jD6?;L12k zV5K$@*3}P|{3D%Y_z>X(+E|NfVZFgJBDBInp8@Y$3PV>x>YhsO-IB*0kq)h<4@7N@ zMcF`?ZW?^}6HrN64IO7kV}&%D6@s_ZMi3I%2|DOCQSSe=3EdDZ(^U?zy5lJUgzz6) zHQTure@X>|xkJ`uK3H^yCT`*Tgz5c3a?XAnc>NO*Ba@BWxF^ij@1QpY(9R&@Z;?d9 zQe~+?A>5nkD+~Gy)HIaujC3Jc%3qkig@(*&E|Bld{YW|XV4cBKLpoqXdgb`XQ}?W2 z=2s|-y?|?2t_N)^YoXSZ z0!ZuVb|jfLrRe^92Q7jP7$HSt!A=8JVSXSMw4GYHIeFaLZqxZ zNk`Vh8(-7>^&koN`xezdqGPfGY`lex>3w(pqmR{5LsU9CmYQeoTYs`!}QwNW(I*;iI- z`8zu|AJ3KVirZvOTh6+5w`@3gaRyja^QzUqhd44JrAn-?K%M`Ha_HKd}U-K%&32)98MZAW9QGy^?B07 z$zgs3Es@50VXK*1u)1=IHKM<>m|G_r!GDQQHZC~zw(pw!rnw_0r=RFOgelDn`_=&* zg5Q)a0}1H|nXxTl2A&_;qxwv+3fnAe{DpoN3v;G zWyvtzQYjnwSg)LSk6!DrAeG#!bKA~7`*?C^@0OCY$>FUJEmTIw*m;D6eaiqG?G`!j zUAI~jhQ?O)mV1p$kLlTfU!*3ss>?l<8?-)JJlkn{6{`MJIwLOYdv~JKSvNMpKN?+@ zKkOzwSWf}uDAwQ0zn+Vp2l3s+icr??wB6^Ty_@*iz~C*VAnX7^es0dTV@%gHGCV~( zTn+QGY1sJPx*{tHtb5pU61a1G^H~6GI&0;hO$2!DIP5YUcWZ54O*Vgq*$xO#Vb*bmYRe!m0*U*3iF$z&Wge!3=zUQT5a zj)xtO9cR8wp|DNqf1!lW-z5UG7!hWC7qjo`cU_t)-4So+3UU)vSAq5~I_1g3pUVqp zo6SYFw{myf{)b|6=I!G1bkiW+@=$Qyfw+R{Av+RiFKGXb1%q$|HFx+scf3)gW*w)! zg`y=Cacr(`b*@y^k=s?VB#E=HLnY$dx$F>QbIft~7dJc&cR%?y9%8 zxu(@u5XPirnN=qbKkWX^D6bi%79(0mdzvefowy}*(^S36_4KTf7ub#w9C@^QT!mMt z=ov!d%C93(J57lEvPXVZ?WE(iecvJ2cvWwtZWEAuGR4XPv_?-~*Y`#A0N{`Dj zR4|fqlTDu28i6LG#tdA4P9=lIvc&SD<5+9CT0==(6fWdWI;CvYa)9p!aJ(PVfr54S zZI3&*`oVUwcn`B|0MIK~y@*4RL|MED**=_h9NU(X_R^Qe?MNrH(vVSM zi|L6R>-X5oAY|i>)*`|$?6xpH|NSwka20DulX!(d=&l~gxW@zk+Y;s-iI=c!q{!F# z5fXaiGfqT3t7#Cz!{$E=4rv+u3prB#s0GhJc~#~3-11%UmOE({@^*x`pcL{tve53{ z9&P6$fX{PGyR^6l<=d0JuLuk6tDBkxebEwb{dSeI=lyC?YgnRwBZdUcP@m*sMOWa7 zS%pb4^K_>)N$n7GBY^f@NK?EB?A5Rrf{h9PuK(=#LwMfo8q;^OUHMH7*S~(dgV#Oj z1ezDIBq8FaK_|Z5lh8|FDEo1PgJs_2h=4u8;QpIzF1>?|4>RR(3Rx=bPn@XZ8DfH% zBQr(F%?rfHO&^_u@dnW;ClVv=wz$KzpWLiRf+nA9a{*JZnkbw_a*JH|u?VU)By9A` z_9XUt%EScsu7cD`ANNl1!1FuxJuuNuLewe$vA!`ZzsxBx(&ZW`Gu2#=|w5aCV zQ98}syts}Q*L1k%b4UBDUl=6rAWbu*xX=;k4`gXXv*|J)nq}{|z1yysny(mKx^E_8 z4EuiHRsPw}K7y02Tg>9G$`uCkNhfrE%()LJJ<~8O+#|zLQnKAOrz&Lfu_o_(I(z6{ z39r2AxFJ<)x0-QmELXP!8H=OD*%XIgMmJIqr;-t}c5yBhjGTl`MyMEaqoiSIqQVoF zBGLCiOG$uECOw*7iJY;f0}Agdd%gs0XhO!Yur3XM{ z6SH+`{p<<;`qFK?9$E_rK7j#4u}%;(HuwmUz&@8?Gg3d4x zgs^H=^Qu(IL};A&#+eU0t9lw~16)?X{#N|Caay1xk}P87>gYp@p#jXR^a+Io)3RQz zjfBz8Pq?$wf8OPas`GLt6m(9f*iUI<=xFDZ-o-xCGQmxnkkDAC@_CDtP_iWs(5C-I z@!GmKZx?#r_U^y9L4zDMhnm((4@KYDA=`4sXtEVNxPEL;8VhX!G?Flj;k=-}n|4_L`RKIPk zH{QKPM1a!P*lK$+cPu+p^>mxQ58JP_W${ zdXLG-y0ojZk%ew)oLq3yMdvDdiNs;s5G;m-uHtpUzsEXS6&VFnipD|7TGg}I9rkNF z?9Pwpsp+j-yfO#lJ&_@->V?YYt2G$Vr6Du8w)mqrCx5oIFyp8mOm0VYC6FR28(68_ zdl7_T<=(FLn4PT^`1S ziO^*FHmST)?&DgF$_RT|}HheKEMCCjALyWWkBP9OOcz*JvROVU>!Yxu~Ngq&TqR_obKOUgeSBiQYWsCj|pc}TbS7Q zoFuoLYIbOGL;m?8=MF`WD5Lw9M?xm(=LDZUzWO_nL(U(Zc2u_3QbT%sBnqOD;oqy{ zY_1nsg5~k`sTo?ykH7y!3jzY+Rm3g=O5)W@2tgSS$?nCp2)b`PU!5NXkA%e1-Q%c+O@&jSvn MD61yZAY~f*KOM+=cK`qY literal 0 HcmV?d00001