From 934f0e4788508bad55f56c063eac13531ef2d6a3 Mon Sep 17 00:00:00 2001 From: Federico Capoano Date: Sat, 7 Feb 2026 14:35:49 -0300 Subject: [PATCH] [docs] GSoC26: Automatic Extraction of OpenWrt Firmware Image Metadata --- developer/gsoc-ideas-2026.rst | 267 ++++++++++++++++++ ...der-openwrt-image-metadata-extraction.webp | Bin 0 -> 67600 bytes spelling_wordlist.txt | 5 + 3 files changed, 272 insertions(+) create mode 100644 images/gsoc/ideas/2026/firmware-upgrader-openwrt-image-metadata-extraction.webp diff --git a/developer/gsoc-ideas-2026.rst b/developer/gsoc-ideas-2026.rst index aded089d..25c9f7b8 100644 --- a/developer/gsoc-ideas-2026.rst +++ b/developer/gsoc-ideas-2026.rst @@ -49,6 +49,273 @@ General suggestions and warnings Project Ideas ------------- +Automatic Extraction of OpenWrt Firmware Image Metadata +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. image:: ../images/gsoc/ideas/2026/firmware-upgrader-openwrt-image-metadata-extraction.webp + +.. important:: + + Languages and technologies used: **Python**, **Django**, **Celery**, + **OpenWrt**, **REST API**. + + **Mentors**: *Federico Capoano*, *TBA*. + + **Project size**: 350 hours. + + **Difficulty rate**: medium/hard. + +This GSoC project aims to improve the user experience and reliability of +`OpenWISP Firmware Upgrader +`__ by +automatically extracting authoritative metadata from OpenWrt firmware +images at upload time. + +Currently, users must manually provide metadata such as image identifiers, +target architectures, and board compatibility. This process is error-prone +and does not scale well as the number of supported images grows. + +The proposed solution will introduce an automated workflow that analyzes +uploaded images, extracts relevant metadata, and pre-fills or validates +image fields to simplify upgrades and prevent misconfiguration. + +When uploading firmware images to OpenWISP Firmware Upgrader, users are +currently required to manually provide metadata such as the image +identifier, target, and board compatibility. This workflow is error prone, +confusing for less experienced users, and does not scale as the number of +supported images grows. + +Recent investigations revealed that most of the information requested from +users is already **present inside the firmware images**, but extracting it +reliably requires understanding the image format, compressed kernels, and +device tree structures. + +Expected outcomes ++++++++++++++++++ + +Introduce a future enhancement to OpenWISP Firmware Upgrader that +**automatically extracts authoritative metadata** from OpenWrt firmware +images at upload time and uses it to automatically fill and validate image +fields. + +1. **Initial upload** + + - Images are flagged as **unconfirmed / draft** immediately after + upload. + - Draft status prevents images from being used for upgrades until + analysis completes successfully. + +2. **Automated analysis** (background Celery task) + + - Analysis happens asynchronously in the background using Celery (we + already use it heavily, so this fits right in). + - The system attempts to extract metadata: + + - ``/etc/openwrt_release`` → DISTRIB_DESCRIPTION (image identifier), + DISTRIB_TARGET, architecture. + - **Embedded, device tree-based targets** (``ramips``, ``ath``, + ``ath79``, ``mediatek``, ``ipq``, ``rockchip``): extract kernel + from ``sysupgrade`` images, decompress if needed (gzip, ``lzma``, + ``xz``, ``zstd`` - whatever OpenWrt uses), locate and extract the + embedded Device Tree Blob (DTB) using ``binwalk`` or similar + well-known tools, read the ``compatible`` property; use the first + compatible string as the authoritative board identifier. + - **x86 targets**: no board concept exists; rely only on + ``/etc/openwrt_release``. + + - Images remain **unconfirmed** and invisible for upgrade operations + while analysis runs. + - Basic file header validation should reject obviously invalid files + (JPEGs, PDFs, etc.) early on. + +3. **Post-analysis outcomes** + + Images can end up in several states: + + - **Success**: metadata extracted cleanly → mark image as + **confirmed**, making it available for upgrades. + - **Analysis in progress**: extraction is running. + - **Failed - requires manual intervention**: extraction didn't work, + but user can manually fill in the metadata. + - **Invalid**: clearly garbage file that can't possibly be a firmware + image. + - **Manually confirmed**: user overrode auto-extracted data (we need + this because sometimes our extraction might be wrong and users will + be annoyed if they can't fix it). + - For failures: + + 1. File is clearly invalid/garbage → reject immediately if possible + with a fast validation error. Otherwise, discard in the background + and notify the user with a ``generic_notification``. + 2. Image format is new or unsupported → notify via + ``generic_notification`` and allow manual intervention via admin + UI or REST API (fill metadata or delete/reupload). + 3. Out-of-memory during decompression → notify user, explain they may + need to increase memory limits and reupload. + + - Gray-area failures (partial extraction, multiple boards detected) + fall under scenario 2. + +.. warning:: + + Metadata should be editable until the image is confirmed or paired + with devices. After that, it becomes read-only - otherwise things + break and it's too painful to handle all the edge cases. + +Build-level status +++++++++++++++++++ + +Since builds are collections of images, we should add a status field to +builds too: + +- A build shouldn't be usable for mass upgrades until **all** its images + have completed metadata extraction. +- The admin list view should show the status for builds so users know + what's ready to use. +- **Dynamic status**: If new images are added to a build later (via admin + or API), the build status should change back to "analyzing". +- **Completion notification**: When analysis completes for a build (all + images done), send the user a ``generic_notification`` with a link to + the build page. Clicking the notification should take them straight to + the updated build so they can see the results and take action if needed. + +Safety rules +++++++++++++ + +- System must prevent using unconfirmed images for single or batch + upgrades. +- System must prevent launching batch upgrades for builds where metadata + extraction hasn't completed. +- System must not pair unconfirmed images with devices (existing or new) + based on OS identifier and hardware model. +- Once an image is confirmed, the existing auto-pairing mechanism kicks + in. + +Implementation notes +++++++++++++++++++++ + +**Tooling:** We should use ``binwalk`` or similar standard tools for DTB +extraction rather than writing custom parsers. OpenWrt images change all +the time and our resources are limited - better to rely on tools that +handle this stuff already. If ``binwalk`` isn't available or fails, notify +users and fallback to manual extraction mode. + +**Memory management:** Decompression can be memory-hungry (``lzma``/``xz`` +can need 10-100MB+). We should: + +- Make memory limits configurable with reasonable defaults for typical + OpenWrt images. +- Detect when an image would exceed memory thresholds. +- Handle OOM gracefully via ``generic_notification`` (since we can't + validate during Django model save - compression ratios vary). +- Consider limiting decompression output size to prevent zip bomb-style + attacks. + +**Timeouts:** Use the same task timeouts we already use for firmware +upgrades. + +**Retries:** Probably not worth auto-retrying failed extractions - if it +fails once, it'll likely fail again. Users can just upload again if it was +a transient issue. + +**Task crashes:** Treat as failure, notify user, fallback to manual +intervention. + +Benefits +++++++++ + +- Users cannot accidentally upgrade devices with invalid images. +- Partial or malformed uploads are quarantined safely. +- Metadata extraction improves incrementally without impacting system + safety. +- Eliminates the need to maintain a hard-coded list of supported devices + (``hardware.py``). +- Simplifies end-user experience significantly. + +Testing strategy +++++++++++++++++ + +We need to test this with real firmware images, but we can't bloat the +repo: + +- Test one firmware image for each supported type. +- Store images on ``downloads.openwisp.io`` (public HTTP access) with + checksums stored in the repo for security. +- Integration tests download and cache images; only re-download if + checksum changes. +- Directory structure is an open question - anything reasonable works. +- We can use official OpenWrt builds for testing; maintainers will upload + them to ``downloads.openwisp.io``. + +Additional context and research findings +++++++++++++++++++++++++++++++++++++++++ + +- ``/etc/board.json`` and ``/tmp/sysinfo/*`` are runtime generated and not + present in firmware images. +- For embedded targets, the **only authoritative board identity** + pre-installation is the DTB in the kernel. +- DTB extraction is feasible but non-trivial: kernels may be compressed + and DTBs at variable offsets. +- x86 is a fundamental exception: no board concept exists, images are + target wide. +- ``Rootfs`` images (``*-squashfs-rootfs.img``) are **not suitable for + upgrades** and should not be treated as fully valid. +- A draft/unconfirmed workflow ensures the system remains safe while + extraction runs or fails. +- The issue containing design and implementation notes is available at: + `#378 + `__. + +Downsides and challenges +++++++++++++++++++++++++ + +- Complexity in handling all existing firmware image types across + supported OSes. +- Requires robust handling of compressed kernels, DTB extraction, and + image format edge cases. +- Out of scope for small projects; needs dedicated effort and assistance + from an OpenWrt expert. +- Security: while only network admins can upload images currently (so we + trust the user), we should add basic protections like file header + validation and decompression limits. + +Open questions for contributors ++++++++++++++++++++++++++++++++ + +1. **DTB extraction details**: How exactly should ``binwalk`` (or your + proposed tool) locate and extract DTBs across different target + families? What are the failure modes and how do we handle them? +2. **Manual override workflow**: Design the complete admin UI flow for + when extraction fails. What does the user see? How do they enter + metadata manually? How do we validate their input? +3. **Cross-version compatibility**: OpenWrt versions from 18.06 to 24.10 + may have different formats. How do we handle this? Should we detect the + version and adjust extraction logic? +4. **Downloading fw images for testing**: Best practices for downloading + test images: part of test setup or separate command? How to handle + caching efficiently? +5. **Decompression limits**: What's a reasonable default for maximum + decompressed size? How do we detect compression bombs early? +6. **Status UI**: What should the admin interface look like for showing + analysis status? Status badges? Progress indicators? How do we + communicate "this image is being analyzed" vs "this needs your + attention"? +7. **Error granularity**: How detailed should failure messages be? + Technical details for admins vs. user-friendly summaries? + +Prerequisites to work on this project ++++++++++++++++++++++++++++++++++++++ + +Applicants must demonstrate a solid understanding of: + +- **Python**, **Django**, and **JavaScript**. +- REST APIs and background task processing (Celery). +- OpenWrt image formats and basic Linux tooling. +- Experience with `OpenWISP Firmware Upgrader + `__ is + essential. Contributions or resolved issues in this repository are + considered strong evidence of the required proficiency. + WiFi Login Pages Modernization ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/images/gsoc/ideas/2026/firmware-upgrader-openwrt-image-metadata-extraction.webp b/images/gsoc/ideas/2026/firmware-upgrader-openwrt-image-metadata-extraction.webp new file mode 100644 index 0000000000000000000000000000000000000000..949d48667c8f48a3a2aba3d7a4ed74515780cb03 GIT binary patch literal 67600 zcmcG!V}NZ-mMxri=1JSOb@HTr(zb2ewtX`5q;1=_ZQJ&Kx4XLPRdv_B{eFDk{Fe(rZ#|^wd&&m$fCU zkq5pTz-60nckA`lMfS~Gg~QBgcO&S-@rzAd!i8?7PvHHxL2~=Y?M*<>*CN32v*Weu zplify`dRjl;FPb~XU_-Or~VVLxt+0%^(FS@x^djWk^bfV75N_fI{o5%)C~Zfy_W(A zzA#?-HnJ0R(|pf-BVK?%e*k`dT7KAm0&ceffEOQ9fG>dIy}SF{`Sv;B1dt7oy!rMD z`3QLJJ_2}uX#v^*IbW0SzVCo1+joX1-)Dj?Knq~!4dg5NQ}grN5yLfLv-v&y6MsK@ z4KM>Zcn1Hn{mlMyz03yars_U-zXBG0djaPU-k)NhpwyV-cY{$Uz-5UkLEYu zFTf42AK#m&4gd%+djzIUiM}CoW7m^qvvZ~0Kpr_x$ma0E?)y+79j8f z|I~a3*zb7!06h2}0p`BOzg|9KKO)b&7kujg@c^XH>L=f8hBw{A?h$|^!2e5VZaX%6 z+Bf90;p_Ol{0a7@`R?1<_A+1u5b(A5E_6-sJNPK{N*}k{E2CVsx`F4Dr0{~yu zTYOI)9AArH_g~qsfXUbzzC+ywz_zakfbL!M@!KDP(7oe3>3#q-{Lvn8KyZ@13pnzP z11JN^KQRD+_wAhRQ9zMz<=5kv>sR;7ANRcTzWtGa)fblc%0I5Y^>bWa1Fl~KIF2>K zkE7J}Jp-P>uV6PYS{Uqfb~=0izrKXAE#Es36qdKN z+KOrqwjkczn}i087~F`iF_HOUj%K5#=McZbQ1aLb3y1M2kSuXYRZ< zIr4lgpq}H1nsCu+9k>SqoMsep!In-n&XUhio&8G*8P|OuUG3in@#(Ykpi>@&CQR0~ zVRb~7L{WLqox4S{PzGNhc3R%Jw1(i2_4&I{6KkY_tPwjhFJaTQdpCI(WFv_vSp?R8 z-i>>;X!tfIv7x^tGkmu6%+OavtsFBDeso3(5zAZD78BXc4e9;lXM0gJ${cjuivA?d%H+L=qfGi2oJU-c zXRbMJ#*Hwjj^w*rlM`Af8q}U>#J4Ib0~E9Y_*e)0J9xcRq>$9q<=S+AZ>fGaRenPBiTmDmO*#ps%)l&+8h^TX`0X=|i>gDTBvxo^Xj zp`It;@wpSL=ReP9nrfHE+RQbFbb7O@8LMA(vP%+da|`)hX-kaF7U&!tUDB}LtC4*= z)eqP}i^`8~{sow7{IiL)hHYN{GWjaIdX%a;J5VZHr_N69;W5f`e>{K9o7s+y9+0!4 zAg@ucy6t>XBbE`I{>NWuHS=zsSen0*T%00Yzvzm~J}MdhyoU{p*!`{PaEtXo^`|to zg}9-c3ZvO=sR*LsEGFaNzgm(v`Dc6HTL14$*LI1_D}RnOuO;(;Z}ap?i(VGsD6TN% zLS=DAuyXE$U^RX0S?aB5A|&*!>0IR z#x##XYZioUq76&mYfC}6fJCWTud`wt2$eS)+CN3B%Xj`yQGx_T2PgH3Wu~0*-LZm1 z7dplulfLyMG2a%k5$8Z~dV-w3o*fGjJZOw>9!qwe7uP%X$KA>oFA*Y1+-ujh_V2(( zJZi!0l;w3t*K5)X_E`;NQmco(HQ}2GX{9qz`9^cK(cnMzVe~~`I`oC^M~a{P3Q15D zPJAAGvyNF8;oZ~BDyvF6aDOkM_i92KrTI_3iqWd_VIG+&8>=%({sr6?3k~B5Tci6M z?hi~yf%0+xi_wjLh#T9Q1KM^$u#o{IXhB+G3u<=>J?hiDHQ5*I1a0T6FjA!|I$ z`cC&3Z)D%0aINwXy{d^(HQEPhAx<3Thx&oK4(A+C8RL^imMqaY=fF&*_H2_X7pDKt znaC@zVt_$&IRj$Uc4OySN?TLvpYzz>?+~9N!QZkJ(2c9G-0K(4*ET%i3F`_s&XS}V zGg$1}M+=D9!pz&i3IRYOkwhZJ9?GiZeDZb9{E`$|3$ok>T5}~kAkH$*#g~iLRr$A3{pZeY*Oa$}#enZ?rH@Y8 zU#9Ga?=q9uK&GRPg|K``Sn1ab-!*}8$;sl(28|^;-h85!POTfiL~G7Q+w-wv=G=(R z8%m){|4I~ujr8B=7G1^&r`(%ZoSFdPDn?5I&#UmV5VGk(WB}_{EAF?#x9H=fJd<#S zirmnZFw4Cnd#E`V+fhhh7=4Xsf?K}8x^?kkxW60n(I`f?!9(W=695YQ6`k8r?Q7xDT;RfgTet2y{bY3o{W6q%p zy_5gyP=J&yB zFYUXQk7)Ktbrni`ozq}4-{*fhkE~?BdXZso2#`T8j`du{5l(8u;y4uCb|6n|HR2V1 z>C~I;#YlpVj&J+Tf3DANg`hftcQtr>V!}llY*1#E{c1EOvMoa)^ud=}IQ27c;gHmM z8+dRcj$+I66X{_F<6Qqbj*GRRf0gvyjsv4Uel&YK+D2#e{#^KDajnyI9qIP@*qaL~G7+gb?_NECjd=p$hLH3hW!_`vN zn#HgnrHe_k&Igq{WnXwY>F%`iCMo|ulDX1{5*fMX_#v+DCh~@d>hudZa|gqmaatT- zUyye4cYb>jHLjb40BkWXNaTYwk}O0`Jz8pZ`(NmAH#^_Ex13e}j586+I&-R0?7pmk zz+wF_4E@3d6UZsw#UHlEqpQWACCh=Zj1G0MKN&<%&2wb%%R4@mUi`Oj^0fuoc|K>; zSLRdr#|C@SeM?R%^&BZ`@rnA3Qt`p4>G*cDz=ky|>Tkh&(L}Q%=n-SA`O*#HL$cfQ zder(`;*THW3LaEJ8;eW6b;e0u(Ox7=c+kb7{q~-66ol?MpcpRF zasG22D4nBxFddr69 z2HM}EU~U`;fkjM1&Twk?XW9ncWa;4qZea$QO~}45$uN+p3ty|dEQxBB!2sQ{&DT=X zF6n?F+n=MnVrtarv3!kF2tp&dlB{HCdzwe*v|$%anYpf1C5uVsfMQfX456kBu2TkW zEjM%*6s^9?gp9KX_I*+om=(BJya(A#g>>=4gg+;6GSTt|*uy-Etafp9Y+x}Jr`By^ zSvmo3E0x`-`n&HkkiK z!FKqVx`S6UgqOOIjJm-jz;~fVV`cyEwP*Ja`s2>kQUcz@KSQMd$&a>kBTFu=A^N_| zi<*BW#Q#OJu0QaN$^N*z{=)$g2;pc4^Pnf4H@2Yo-$eP}m^;LE{?zyoklU7-R`{i2 ze(`fP+}(i(;q-xDx)Qe?@cS>GV|MUKq?|%=h3(xQEDq)7s zw<+CwwCmq$l&25l*=JUYDE7o7293myqG-ym+%@MSeUcOzOKT0og&(Kpn+vk48Fq^b zI)!|j&G~RI8)DbzaO(QIqa-G%U8^X@C43oM>5;bxZ73^( zClpdU;&DcC>!^i%j+f~%QibC0w08LJsnq|-sLJ6@?oJ93xpNW%TCY^+;R9kJ70(Eh zLZU96!5+95`mRjq?ZL;ZJLF~3&0w#{G8WRoE$Q~_l~{8N+*O5UaQ750_bSxQAuG+i zgQtwIR*Gjgm6234#K$Wso{G+jR=)>&ojNkA=@eTt;yriy+K!Ck<6NHm_Mdgo7;o2o&}L*2Xa|p#9zd|w1kzTGx9kGFLBL!0mv$nS=y?XGyH9xToPiNNVxxtCjJk9YWHj)T;=a``e&yLV8+q&aA>G+ ziEpmND1&h5^$ak><`fOvd3+dd%7@)NNS6QDNhfsmpLw4G90~l-65FR5Oseu9-ixOHAN@7V3phm=*!+`&w_DN64(*Tz{(} z*6&EAL~7UeLSvoTl0+CZ`0m`ENd8ga&(stxvBir5TkvQ`DY*ViF|)?!dJ5_C-D3%* z_WslPi#O58I8I4d7D`iS^(>Znc6=biqBQX_+u>3~+MQ7Yg;k^xeP-X`lNd&VKVv=Eb?$Mbgf9JNFZkz1@S1phQYZ znBE-!uewNe6+ZIW+|u7)L}Je;-r(?l{!q)d(I;Ow=4Q+$)@=u?qK5TIY_ZT3YKWPf zFU(3QTG_sCZ;@u(XpOYYl3$4^Cx~Cm2F+stROL5K?Awoe_!nJn zV#aYI*wQ#1OT};oOC9aUe|A8Xp_Wgc61}xZb6nD6{TO-y>~th4e2#6Mp$%o-Aq=kA zejIT>HEQ3lWpWgqaS0^dFF4f;-EU(6o9^LT@9`zxIr;RzFLWe40?AvWSGF6`21yR)dH%3mZL-3%XwXmx z8Wz!@#-F|2a5&=~#Aiplre(F+ji4Ksx57Xr-!)f!i!&1wl+ZC4etYvGf4Znr1EoK;Q~>t38>Ts=xmM@#~Ac{{#P>gMv;>6 zFCx6>;eESRq*&^R1rnzgd_)DxQ2f8S6=p|--bgL=@%klh-voTTRj_Rv6x@0k3e+nS z`FOQ7(IoFHh3|*{4mo@5`af~w`AV~wAJmbQeoFSvHoMtC9Zx4!3XXf`z=0<(qQ3^2 zxz`buuj%G+D>J;RE+f!|;O%!*r}l-H`s}@>@vQVa2maF8{!9U(>80c~&B0>+$Gafb zF{;xaFzWa)^>6sAVX(;FNk|h(KBDZ-kG+;A&S*LYvbJEpfXS-=QKZ6Eklg`Rt43J7 z_Q@Y~UVughM*cpe|5Q|N^vS9TNv_T}L!x2%17}WBwQ-wrpgcTAzn)YP!b%~P!CxQM z{-7p%FhwILhwHEZlI>wOTKzq0x$TsayX9nYrma07$e`^JhEX%-gLhhvg246Vg_3!h z!Tc1AW@j!_LJ|p{vZyo6xmIpAVZF*m)=Brkm*~_m3n5?87hX8p7CoE?6t!JvOAn9u zeq6Y7T56;d%9UPM+~C3y@L=T%D@l1TT&^AeN_yP39i*b9-wsiT%=cjJ8ZgLxek~Cz z5=HiSpOi@0n@b{ol7RkSqU_eDzPq{;TWiZ+`NoLLQ)U2Unm==W0i7V@o+$3FoxsZ1 zHSI2VyYF-}EuMK!D|z-Wdk6UnwVV@rnKfUfb8m5T+6OGm)I{b&Sbb$K_(&9X=X2Wx z`>U<4i%I?4@`-xAAVqUIC!g#b6(0*sGuH3pl?2m_9iL>_3R4R2tK*ZI$kiae zv5)m1aFaP0iU;`&^TzMehcDXKGXKc3ozCnncFm0o^zd4dbQ`slip6B+A72R}Q1kZ& zRKd|wegA37J$)L#Q@=uEB8K9FHGg;feduwXDkXO$`P0>Z&tzTqkQV&3NK34YIYB+Y z>%2*{=@OzD(7shMxVNFEKn-E2F`RE?kL}uUD_$=L)yEu5)!q2Y$*x%st@h$ShU{gt zzX{E3fC-y6_M*NPSiOT^WMGbNipG@@7|;JY8g+|Tb+%Y-ZJ&T`hI&K|JI zhW2E?_2lQT2}M@otN!oOzC-lb-BhD3^KAmgR_Yv{47O3)%~ORvqyGkuL%K$Nm*@_wj)utQPAOPNJsT4=|~d2`C7WRH%W9O z+)OV|>i-G^|29U*&Oit#B9La+2pX*t{h4SeF}Cfu+G*ylJwR5Tmr}&w!`(Dhp^H>FZyF z3KR=K6s>a&$<57&-22=D)~y}ZP>iJhAAJ49xquWUWTS)jpe{`_#hd5{BG%s0fg&Lo zI>;j$459)jcdWQU2^ucs%@_?9FjiE~|BHA3c9{Q(FTS@UL9GBSs?q;04F7y@=wE8B z|KGM9|I)bq=kfRe0et};3JHP!>*J>rt!fyStX9qZr7#pg8azrEs`tTjy6C=gX4Uo9 zBGrC1TEt5TDse@EfF*s^DzAs*C6P6o>SY#*uHXo{Xcl7@9cQe6D!6dr!Qvf5ad4)Y zv4f&-lf&!0)rx^vPx&{N!{Llm7dTQ)K>$C z!ui12O>cd*J;?z!q{AE-w*GA(`e>)x`|#kTIP$qxF7)6O+aIs}Ygk#!aC^03lc_e3 zq?V@%bo(Al-}#dZtTKSx=dG0-h?&CSEN=*5(;@FUAjL?vuuAkt-_l6eGV9L=`cAe< zJj0mWOigL|6XitLX;OK=gB*CJ3oB|cAQmU#ocLq@q*C?020o@cL`c43)_t~Ly=1|D zX>YvD0@`zNnM<-Ryx4GUxC6nn2x9dQ`Bfb?s%6iKvtS{^tuiC7 zA&l&uPI)?EFCVOW^3wbvDHQ$;mjjJP`KQAYVGC8)fYxpsb^##6h(se)C2$ zmpXh6G<}XED-%+crH>f-1l?_5XiA73cIf^2&EIrLh$3+ykm(rf=*tAPvG)^}kS_K0 z?yzK_X*xcMu>t>OikuW$zGl)TOq|SU@ zAOf87aY@u0vmZ6P4--edDBZegmei{?O@{%EB%*}Faq&L<*0(A|NyVSNC>5wJuO`nx zkfD9t_}qQwd*+2Z9~4@?b_NDJ5`Au4rDXP6z@=+kKWANAYfiKNF3r2L(ylB zKvRze%N%Vv%@VSW%x%u~aDa7Y3*CKHdhs_bFbPKiMCN1o?9|foJBhXEEM&HDv(s*nh|3Fk4x?lRJ zz+l4w1IZ85!EbAS2Oowyk7G8>_Hf$>^w9dO%m3cCp z#&!;oo*}X4toRB`B(@1L2Y2fy^g7;)oSjY^H@K?x^X_sqzO@=2s?4_J;i$t(^Ut@C z$#1j=gtW;X&jQ+);%)Pig83{I&n$fL0+{mIXZ)O)yUf|y^Ar_H^AHAlyGZgnI^XTo z{p3QkqTf#BCr1xfQ99HLaigr0?N#Y%t!*5wx!N~y@vat2Bv)i<;|jYloYf5$OlLOQ z@Pd~V5BY(>=<$J53=z*g_A|=xK=z>V)+i(om79kJ;r1^>!8#;A>l3`Phc0tiHX)K5 zoJmghsLvzA5f{>4Y^fVY*g|z!CTkwD9rWJW4WpFRnr@G@7uc)p>orl2#pFI8{AAnx_XVlOG~gB!<51C= zcOmgnkWXT^4pvHB>PU9YLo7j1er=GtCzY(=7oH!}LO;GG%W{_*Dfw%uuKm(uZ3@?$ zx6i>EnT09?rdrPJRV3$XJ0-2c*3YecSWrMceyecZoF8+nJz<~D(h;gm zo>fyMH-+2yX2l4Y<_c% z0H?xUwsc2%{s^ZR-{{ z%;m@%b}ftoi#~zQ^4w}LKkX3Xxeq&iK$sJTAS`60xeQJJgR+(a(Z^NRAyi=3ami9{ z#lYAC6S?9!$eqHeH^;_!WG(Tcf4+pBybfnrGX$lleLZ8naCn3|4NR@OWC|ZUT0&SB z7~xO(S`o7ORW7d7HYzD`7XxwD!<`=MhU(uPztnsoPDhsQEnS2tu?1{K$JJU;MxxFz z`8>XeL#{3Mgm!FS?eSLqZq*+pr^R|2M<4ALzi%jER~UsMy3K?^0GFTzQD_`POCmv8 z1!QX=N4c2JzL=h~Zf$DDQ>-H5pCpFpPZqJT;PR<4|9*5n zEf<`?iG3JsqK7ZO;CajlVyS=-`x`I#t_!L@Gh;0PTFI>-%`Wh2H9Q zOObxfF(x;iw$Jo>HmO1ld7{h)r24*Peg~ku`$uP3XhVd;U~KWBeV|5EKSGE{?dC%(vjeSa2bttO-0 zJYKre57N+bbaBT8VVa5FI9|e?ua!a?7tF#4kn?AQEK$oNELz$NG%M_Y_5DQcI?8}1 zx9E<<;5cSW@1+qlPBH6Oqb1oC-;1g#f(5=n;{)izDZ;G-<&dMN&({2c62sJiWPb;# zJ(+>#&O~Va03(4L4nbUXH6v+P!Za{NYZx&m9Z42iVC}|%3c7H(yxQ;WJW$+)ex^>D z7v6fJ1%^;B3Kjw+{Eo5|7f94{uZy+Fchu$_&%ehLZlL)9249cBHl`#&L~D{Br&WP> za%aIjJuT1u$ddu$Z5f=sIvCAmAs$3vKRvkt-wWY4jOU&4f{Ia%#i=`Hi^Fp&>aQkS zkCv|$Lq7sn2d#I0Zs}HSEBByg2D4huw3;$ihi=5#IF!(#2RnDl|B|%4VJTxrD+gb3 z1tcn1DTFYb%T`li^9w&anOw5=loV3j#K5~7w9cMQS$z2~Vn zK0u~ra^+$WIj#>|&ZExKHbjCnJA7V6g#7kZf5aG-`sPA+>A0e}eye=UrGxA4s5dAB zt9Ou{ep0hAv2x{bt$Gx4UQ{X~SfsofnkxaqCYC_wY(KPQcveT#1gMzifN%3&krOxO z8tRry+({QPWiWvrxZzMkq*%RFogXdlQ0M&^MTtKrcKN7uEaM8o7lmI&em{~-!bF-Y zBHUjKFYHC|Cl=1qSDZws=k2%XK0-ZYkUD0%iVYbH3)@6g2pl5*K_*Bh+%~0kpXFPz zo@&?$7_J5`(4)Ju#SQ~(z)k$ztSgtGrEX{)-vwp<;VBLM?I_3p;5U4nc9<+M5o)Z< zZVhPNP@91vee|z34)P(ALm7Qfgvj2p%5xNl(mkJgV8g_t#3|K2)ScKdbnqSpeUkia z9N_};M$s^wB^KTys-EURP8_WW>6oOd>>V)PbwpV#y+G{eI)e;o?}lvi0EIiei$O`2 z+{0q6?rUj!^}DSa$P>@U7}Ki5Fw-4W!B}=X1F&%YX061n`NdANV9C;3>>d| zgQ$F~0lhQbetXvefFD&<0OLw&_?;?4xf8+Y0j{mxM44xwd&wxSGY8RJE@yS3rwCx15M zAi99->ucN@Q^oP*g%8OS?Z@{(CgIO=#x?{8cT0t+Jj?lrV91Cmmx#*q(hd4_)Oe2J z&`0R$wfz#S-{Q$Q7X5hbDGu&4X@n0D!;S<NgBHjb9oaX@Flg9zuMo9od@ zLJ(eEgqu~_j9|+YXpy+mU=+GJQp$KEoceVct=MPib`sb25$)9gQV;Q3clMvr9=XQc zP*+Ny!_1$#ltWx`W4DPfO-Z&kFNAV{@`k0|a%Gyx`aUY;1U$=4@z{0Qh+i{;({Ha0}g^_{?8M0^D_quylqWLNhTn}_q;EA^=pbvd=t)~xW?r5zK_JTwh+SY?X^xX2Dj>z4g#0`o z&;-i*H^xiT_EKm#zPQOH)|wY}>Jt>`{JN6o=NL)9aLeO7Wq7DAHjr`dOwc(o?Ox`K zW;OE54>#+7fCXHg>gRpyAQv|DQpkTWypu08$GCm#utNWRyeKZ z4a#{IE)TKoiaO-iIG67~wt}JpI7IbYOI_y3HV`+4b$my$8Mp8q@ujWn0DebdxJ{V+ zs549$KPa}JkE-(Y9YsO*`Pgt=bj`zdsb43ehX&dv0}JlvRV{Y~J^&{@Fe3 z($0NvE1lS=5P&W2-FkZfu`5Un)iIi3CE4yYuPfEfHvvAE-4S-JX<>2qdVk{af=Gl2 ztKhm=1&NZ!7`_i=+m?yWkCL|4S1)rG}23b*>q#F_;mUA7Nsft|jwY=pi-R8W{*uSi}wb(Pt z;P~X#f70OU&`&Z%I}1osf(S+6P8S}6FOyha4qOoNx zppL=&fszq87_d4jpf*XbemO#!B0YFQcrV3N^c{V|3fl-3tIoLsUH7cV&RgJ(ygIWd zxzh2qO?8nzF7rejMKfe40D99aXox%mJ)hc<%z{H(bJEmZ%#P$cGmTfuJQ}fH(lhWh zkLY^ocv-K4JyF5fqkMSMqZ!U!6J=EAU>6?qZKm7ZUdE)@_RKx zGT27NC^wAv0+48(;whGVP!GhLse56Wc`wZ2+2d>SDLJ>rioQsPB6QsXebg*{T;ceP zP*qJ>zD?vFa)P-R2FNGn3RTYbck(Vi-~n!pC)(f9$wssXXhe_xm>5yEP}&^JKkPCG z4rO!5lEu0k&2L-kCSYS$MHK9jGvzA9zfwh%aK3GZI)r?)>iPM7q)3WZrdJY}Tu0Dg zjl(^__Qc$A)I)i^gaqW&OU0EP-)HQDeA3aIq&C_?$O@(dI>q|{t&)X_lTRdqWD&`V z?4>#^%GvWf?N^)0@T1*Q`c`ud4|Kq#yR-j>*l16x5w64o_!y9N7tU+Aok@wtNO2DR zH1(7=nbNehd?$OjPaod;Cc~XTeU9^E?Y5@*PX;}gc-nCJDIl$ia66{OZOT!B=RgS< z$0VdX`#-!U^oP`fv&TAg?^De;)W-r#qy$Bmm(4(Km`3f7EHnAJ6+%)yYi0yq`RPzy z2#-?cX2a5HR%~`P0E>2F%RSTMN2mwQFfVEn?Ek&By?Wg|Fn7RLmyiEJ|8hKVY2 z4mCz(AP6WiV~aKtjv_zkedtZ$PFkc)3acKLCG{};mbddx>zWfK3-H+ab~oL^Spv=GHW^* z_i<1#e|V&r;$-*6jczLI`pE=a&Lw-EjV5x!nPKU+X zZ`>}mmKWUdBgutX?KIV7CP*J0Q7U9DB7TMVxT=ninD}~HP3z}~%Qa6EH+|LHu2~Xt zqC+W4AK^itxXeYyYD;>LDLeg&QXKvLXF>jq=B?vdI|5>;X(MDG1n9mMjy39s-qMFT zbp&ZPlgJ+B3j!Mo^1*8KL*_$^#5`cnn+CG-LFWia3X>GRJ3=lt@}d+6z3noE8oqfh zm=BSepvSq?r^N|rg^>kYrS&;y(JaljnqGMQ{5EvGQ$xaP&rYUWVj{8=M}av}f_M_b zI2E|&RenB{9Anz(W+Su(lk?DHq6QgvXly{pMIpLDOglM$RICa4!q))aLp5%JZKLNX zOz;KM_aK<5%-PB5(KWKL>Lg9?4|_;UKGP~Ud`<-a#Pe&Ctx>>PpT+^V$G9S&BJ#ok zT2e_6h=<>skRvJJAgfN43G9roGoOx zg6I(u(LJoal2|k`=d;WQ>OLL0RucJf>R^YZ2YiGvI+KIgV|Cs+o;mU}L>DI&&*s%x zLsXvqE^Z-=4sH1P*uyu75Km+mB&`q=5P!wP{H567RzL zA3>K3?)$Nd%eQp=bJ*~xP&@F{9gqC4}?kDiS6*+RK_=aqh3`f)i;1IsMmD14% zT~dAr0;YMmbI zbR|Z3+%|U|tf{3CGstP@- zX+y4yTIeaS)!D;mDOOpD1W9h8$x1l}3AWwILELi#`(3Crh-)O)B)7zhvJxvGx82zx z-r?qOgiPjV-MU7?BqzSYMs^UWxbQ8+K&lne6Qm%`dwwKh@f{B?AzGA$v!`o6c+S|r z3XREJLflzFgR;9uBEWS&=#go?pQ0M0Nwqf{%~+)=Df-@Rz?KC^ksY zhwMxnyY9?yh8`AEb8Qb{lw~#O+B{uQ^v;vq$;|1P=jxzLlixV{ZJXOi@g8SbR2xd5 z_IFObs`E$SUT5I*&^y(5>>~`@-dxS_W%%s=8G$gdq?{+jP(aa}3<|!5r$*tN=*K%g zOG+EOuv}{FFs$)k(EfiMDxwGs9A8DypxrxnYqsd1<5(rE)_d`3YiCKCy)&34bUmNDjdxk+!)=->(Sggl)`b znGa3+Mt;59Ucrf6kO{*{DLZc|@Y;!?g`s)+rc0?3eoIPQQn=w7YvEIk}@BN~hT3v?He@ zgOooaocS(o-yKF~yG|oBCoUokrlUAP&7AKAE8L@a#G^rW^4@M2Py~$dB$c|Lvx%?b zn)?1@!vffQV26J?q_A9vA|t1RE&wtbWS zW2k!qb(#P18##0KXsgms;5>{;h+YL{uUT^ELXAJH zc9^x85bZ#M44vQanYYV!ASLPOMKZCd)#U*mc)u6a)5-Ou%D-I(UsFqsc%1mQ#jlk~ zb8po`R-H=A!v3ncwO3W=tD?(vY}~L}`3&Ij?LjXqt_~yxOXjL%RPr#Q^4Y~jJ0GhE z0n@jGmm%>@2Z4@RaD7w3Krid^%*$z{mSoXa!fjE(?Wl-eobofZ0GB333B;iPsp zUJ;DY5Z{U3A9M`lgV?1)U!Mi_yMa*y4WTCRmL{z$4_Ufe0aE8Ng6DXXjo^NXM4*<} z5plLLBf7DZLsbzn_xsSb*ZBk>@P2TCOJv`fws){Dn-jwCM})NNTmGsj%Cy6Y-6GgK z(uHCsTy??%FCJyYEI};UX%}R*+MFB;tq+8LK`{q}KbI7`I#b5siXwi1XJ-jKrJ4p!l$8$`TO`yb`zsR;`^I! zWZMh0?{}m0DUVE&XE3(0n=*Q(cOXDPQgyVtvp>{xX|1CSPL$)lf_>!*4^+3x6*OO? zNz;BJU1NgemSA5(w1|wQL0M|w{Pq;^~0zFxcFpk8L<#4(t+w(tUbQzi7%O9 zG!-Fr@8_UwvQPXi)VSl+1O7CS*%3{emmfDTZP9tJ(z1#-*r~86ae2_;0Op$Iehwc5 zMXCd|>~G))1VX*25I(V1kr;Ze-$Zl~t*sXLtt~1qubkKhjba`zHoLQc@}4c62@1`v zn6{zg4nMeLdCvQ$pb9dgD>}u*rB%w^{H-;yj`Wok{xK1V5Md698*?DdsBHu-ek@go z<-&}Z`#z)1dj7U?3sY}4O!sO57qz>+@W*gA25Yk^yC_Vy1s3&84A$b5H$ED#wpX)# z;B5uUSOu0>-TZAcjWM3EROlgnX70GrQTV6Ebho`(Dj*$v_$SM62~T@+=%dEahdKv)=F3q&bW5-bxs!c?OyYsTO?QoZEqbN0rInE7@*WW_J$$)`$7BRTJl<2M+ZL*;i+XBTdBa-$J-@BOVvafqUY|7|#9QN~fyUeQi zBJlO!RGlz@XushyJ;jGLG2m^$feEUZMJFc5EWCQ=JpBRbEH0iN-$n!6cwUaoB%_x_ zWKm>)cF2C|?~f$Q*r+qBf-i4>aws+F;;fX}RS)+uOuzSqcLJ#04aW7e&bBw($EB7n z?o$EYHh&a@l8;VtXJDHE!%FDEs4|N9N_#S}jQUv?i{T|oYhrSpwM^4O1g$+L;6CCS zY4FgULsCua3xAL9^UZ}#9AZnVkTAnZBx{f8{r7WU)ZmNaA!f_ARQ(H95>}PdvGH@h zsy&uwU|)T>z)0WNZL*W+m!qbi!SQ1843zFyJOa4Wve~-LMb8Z*hw#%8sEF5Z+E(sj z$FtZ1x5_%Q_^;lji`(L531G54;_uw6-^}x3-AJlgBOtG!qfaO98*8>pm{guPlK_ph zV>))@rCZE7VzFb|0lSsCBFfn>u91~lb+{2T$+tvm+GYcl=yLZ#&jF(~Tgq$~0r}H3 zeTYEbR6cdEw_6Gpt{-sPqPL}v&zzjPR4>l~z^q42g(>WBoFf+73!P_mS?~zgE#IV~ zu6%);25Q&0lfV^XW^5!Wm+=DvGiJR@#bVbDVEZJFoYmA} z=ckVd!ZD;TGb>S_-Yv&2L}Kt(#cK9^6EWXwGk1p%AhPhs=>Z#UwWG2#v*XR|%r6o0 zpgyiuEUNqnLpQ*jAdkhMAI2s=$z0wkI?L#hj|XP{a6Ls?;!Uc>5InLK<95v1nN;l! zE)1t~J4d%9hl6RIVjV8D+#9jDL9`=!L?fb8D<&5Rcp6R(vmhNWDS_M|LeNd4A^gGl z9DP<=pi5|Nr>9@@l#TWvC=~5A&H1lt_8h&Crla5G9zQ5Pv+fSJgN<+sk&IXU?z09sPwGWf>Go%@`w{A5Z56>f{526o%i{NP`G^%~VGzy0 zXi1;*1{T4f4EbsIZ}zll_1hkH>c(}6@vV4?*%nd-IzBe+BPGI6olN zB{VIt{?m1Z_qcVVX3W$byiO^)&y4XnL_C3|06_m*j+qY;rcK;lLcII$WNxQ9H}c)g zIhsp7n}t74`fd>dqp8V+je!s&49n>1X^BCzZg$R`grQ%i4i=e-E=2;vgYk|T-}eKB z&sOk=l%9S4>S%c<&oEQx@??RMdk4D~z=kZ3Su-A2%85=ly9U-tZv`O`OT)`nq099x z&%l+tOx6Q#BAsY|HbSM7fTIZw_oGNr&Z8L|Xh~KTLCI;L?MI7hKO*CHo+a;T6Y-2>5*0c6oVHZ*Ro3vfT}z-E03_2;!mg3Dmp*o%(;Y)f z>>sjTh=8mt67&~4AKLgncJ)W(Q|5}VJxT`fG5e;5@CUbCSaHmaqo8vz>Z|xRWZuMC^AEt-VNTsAZLHPgGX{)21>ADQP>X6$aGGv#vx%_~b1jYE zc%wPv^9MWd#QQsUX%)D+8T7uVk}Q||wfU4p{OplzYw@oK7dEYk4|M4T(cUh{ee}my zB|P9Uw|&lbiGZe3m?{#GyzEuwKcWP8X~y=!Vk-LJv>)4*cQtT&(>yJt{1|?2IU^&_}KN8@9MBUE|?C?uYHD<k|fL~d>-fnrrs?3Cx8yjWzIgoqVA7{l(-pZOkR=oHs;n}+` zB0HVd>A7ExDRMq&5N%`*;QNbJYvKU`SZPc8PaJ;C9qn!&WeH`&7i zR1V{G+v7?gzv>drnU~Y_F|=ca?H;v?ZmUy%_up^$rDsqiqQ`_FpAL1{-1dYKe)ixn zz+T~h8LJXGsC#a>?CKsbxImN?_<>743WB~ zih2t@|B9XnHc~VshYr>-g+Fga1#s$=dDT-8=kX^?2JAJv&twKhMSyR}xflw`yqleX;*iw0(=q(N05| zKPBGGg`B<}9ZeZ|5sfxd|)tHN}i_q*060B zm)FQy*NBCzLJvxg;}kio`;+~eP#fElzzwq8od1-dn8juxaAnzLW0v04T@TjO6O3lv zpw4cy8~9)$yX^j;VBHJL1EmZTjyZd349FZk^HfF)PlO8>nEZVlu?NmA!WSV{ZN-HX z#ARN|Cu9&P!_aUzhK_39=YuZP#0pL#;XM~$z5D}zGJ_X6Xo)6CW5l4}<*K&^SF9MU z5=v{NdMPopp-BICU!Q0v$qHnY$yFx;T{$H{ z+a5Zu$=~KMtFQ7ySUY{Yn}2a8G7}{+kIe4=!m`fG0piuP>5(prtTj2@^z5qEG!4P? zL`@J89^Y`<0NG+jVns*9hb!rrSTBu1q6QyzT4xG}KIqe2BFDr#l&@V;Yo}#xZ2@jL z^HP##Ee;d}*1jk*Bh{est&9c_>{4%G-rfCGiR+Y9>leT4zlE`#Y@kcUBKFINL2&%D zW)$w7icHmXqfqrgpa=(K@&5o&K(D_^*nKUbClw6P5&ys5w#({YrWUX!F*zogg9FVT z?5V1-x`OfSyQ)IRm(ZXVV5ND?Up%k%DgI}9(5^;-E?Ti_Kcx!vx2UnxUGw&P@|khE z>+(~bYs`(r5Y8X%5t7R!6n+Jpbr$y7xE5MQ=mt}h_#>a31$B?7`~Px%TMicHK+U9! z@foWi0TvEk%_BE9_oAU!j-tK{b$g3{$V4I>ln0R&hTDV;QlFyRGu_*USuD(Dgzm^Z zpW#Wdit}aD0f)+E;F?N-CfRy`z9b()KUa*vaeA5Oyf)i)C)v%Ft!8ik1*zST*bW89 z{q}URj$Lm>wG|dw_U;s<4X*HBdnqO(=*w?(k|o~RYdnvZK8=LhjcEyAPXo}%qs3Pp% zRQTWm+HyPX)EVus<^TW;Fk-8A34fs!I-aaaRWyCYX%h@L%z6rESafP+N1O*}Y1C$& zSkDPH2_X;l+4Q7dP(E@rouIymP7Y~;vX612HZr2r>nE8ml;OK^5c&GgEVn5Up#&;WeGRgz2n+qMny%Vjb-|`FBT|Ypv)}id$ zy*@(uEpz2?upVm+bZ`zU4ERTZ1N?bXP7Qg4=V6mM;TV6zxm+g5&}I8@=zP zKCMyeCx@{c>P8WXJe@tID-j*=0Uofa0|G z%HRy&9yKl^aG0a@ghuP(GD(CU>~C8Luc_LAR4M5K+40G{ON{%9+m_M%K1XnT)_Z7} z|D}#)7FoKjIML_q;0hm`+)7L8(TRDc$54SEF(AZ#E+e7{Z;n`_U>1-7X6#BLyJHUD z>%_p=h#1{~dq>zl`=8#wsDiUdbDbW$**grdVH+rCf6axlw(1(c^rn*dNc?vx$qL8U zQI=PWGfsH`000000MrluyzU?$Jabkt4yMZ+S)z)- zqTZmO7NO|WHMAO9+FJRE$C5poyimVj0000A5e`s*^^?Qzx6DXkU~jI;pM{QBO4>hS z!$)$NeH&heh@o)DcdsYy^Ax%!uX_mZL2bp=+va;SW52hsqGVg^W<4)_`fA6RrK9fL|+RwOT-Iv{T6Pytj?BGW4A+#{5HfA82`T1)BP_q zl@u1z0t6QssKzINF!%F@rCrMrwLgvWLi0aEh~9K1JMjmr<{`EAmyS$_P)o-c`zv4||=UcU|6< z)16~&^NV2`YN-~@VN<}Hr?Sd-4Yy?+QV8|sXrYWE)?z|dY=u%F5G8>W6PN%2h4uHX z1ToPyf+cr@M`IpKUecL$W9||oN(61_(N`!a2GhNOgh2;T){E#}?w15y`1jd^ADGylWyOS9-P)fr4EldG^96L=-}|)3aPSv7 zY9})<-B!_1FtCX`>l4x1h;iBA;vJ|wt*&=OapjiowLQW-2WhRKEsqpzH(Z$pLqy^3BDwz|PR>odIo|k&)5-6MZ^I=C zs0T}_EG%*h;C#UNqJ2<6sZj`Z`lG%kpsASwC34ZZJ&deft|3;ix_ZUcJnZ^9|D`AL z7ehmCoue@v9Z|5>sRb?P026Rgcr|ub5Iv(O0=~}?0r^_;iI3O#!)l!}?vMwonrWfo?nhYZYqe%+aBnS3Lz;7hJ|Lh-jAsG`+T`)YUX#krR;U3g^-@;#{`q?&I}EMiHo`uC2{*is(tdp z!a8oy8?eD{%S4Pca@8h>nvPF^+oA=2(J-GKmY)MlQ@wIqERISm^any2u?XdM;V`=0 zegHHw)&r9GE-K!i#|kU7%K>GLd23dfV|_8s|aVm&KATNd~}nz zx_<b3in_OCP-ReJAOWbLV+c-CBf&KPz$R*e)uVeT zncr7VJ7WJ!{HIL98*yM;{uQz&8*cI_Hj$E2Vu1TL9lFcA>%4f-RgR z3~2QvelFoAQPOgM?$~ATW`s7pMXa;xjPh9X!>23_=H!IS3$CPibw+cM!oF_{=jw&t zo<4fuNqz;wx>xK*se63fe)bCQ659r9<+4LoH~G!~TO8Vws#}N)F=}re_1B5t&$oi=A2ei1+M5ksvjeNn3%3a3@xG2 z8Mn8>eB$s>T)T8UrMj>%I(MX#8HT4W3Qon__)DERuUkfTS$;^>9Qq7>YhCYGf0Nzw zOgAw&K`Lzu#l1B}z9q#C94b4mfJat%Tere9Q=40WKDBPX4LVP@tsxeA$`zF0$)^C` zSjU?e2Z+^~XlHaO<6cgSrwbZ?cgT#~2Lbt6y{PB=dO`VidPw2Tf@!Df68Jf%DmB<^ zVPrY4jE*$bYCZakYBYOa$??ayHRp8hSW^#_M$kp5hciUDOU?C8D8S$9?VfGv%e-d$T&WoKtFVnVy3F_i=> zwx0=GcB2J1mD`GbV^`V|hB8_A+y?N3#J&ma7O{?MqJ1C`cHi(BafdMSvJg8*dMEn= zK!#Ny+_`f7M`Nf7H6P_6gZYrKpVlC}rv3G?^EhDcZ{^)Pbtyy`cFQF2B;?vN$&Li^ zstMmQDK%(cVWcl@UD$fg`PEo!908CkE|iDbs;r6wfi?IF{Y~5&0wBH$Bma5e9x9x< zel{($n5?i(FZE8m;mO;N0>Gf?*8dH~e%tk;UX+mnvfi9hN{nf+h>p3dqr)n(i$p9z zDNPc4p?GCyF7)KkmR&G%rP#DT`olATksn#-)vDsR-U%_7#k5Pk#bPsF>38IdT?ExX zKIaAlu8Ygh_5-h4aG;5gcF4FIO9IO9Y~!d%6QQ9#>EhnJy$cJ=1+Hm#g|qri(tc7q zt!l{-SAM|XJj-IqN1vJ4Ph7`AqO+oCKP1lsz%Fu6=Z^?^HeAoRQUEuOEP9J`UAVhp z?_{nhxRT?GmX~S_wm4m_m3ifzMvEtl_I}9ZD#Atx0idvi0ma4I#>9EkAd3*6t6)R^ z({3R~;HvX8U;I|IYT1X_{md_F;jF>M*d7sG@*nDz@z_cz-Xu6XFq}k3wQ2wpH(niD zDPGsdTz0*k4V0nvO5eNG#9q;=+LsIr?zShWZ+WzmXp7sUBB_VSIU|x%Wq?{KDY&!R zbK@F2<$Z+ht4e(}e@J~c0mT^W!402hlFhk+gfn{6;pDjpjtF$?ho zAc-pWwa*k8h&s^zM^%-(tUMK*I^^G8J|-l${3CfT`a~@( zcn>N6Lg@v;V`e{!v)-##t)oo)rY~}Sn{S63y;2rx2QD?kD}J)^pZJ^Cu6;y)S2B`9v{RLU^tIhNdJ=)D!Q#?F{=KX*lMK>=(HWC$EMnwf{!c=Rsqx2 zD|QYYuV8mtYD4HfX#zl>m;~qm02~=M2n!J#{uoged);(hN1u70ZaY|Qili6Yxauyq znz!Awm)Dr>xR%cdv2^^f<;W{G+KWp?%D1kxy`nC<<5;${&ukHP8_+JmTwc%;`1a9hl>~Z z_Rhr9$&G4CwZ`M6DB-;hx5xOh_cm^8q_ZHD0lDjoK~D*N#OYp}Ha@A5^FwB58vWV|gI&Gbwa!%a%S8ObUl`meem% zNZ>Ap7HzjKGNTTF`%a2>eal{+t5tQJpp{Nn?$hc&@WVJS@6{ZD001y&C{)9gQTm(! zh+-{9Qhex~BC_q^dv1Prf#yk`jZ)eebt{PsSbn^4pCFDDLWZS8tNAkuxCqn}56(m5 z{r)3Myz@xEzgU-uv^yW$0Ghytbe0xFLB>^1vV6FV!IOR<>W(T650q+3jLeL(Aq(zB zx4*_+>e<<(XCjP0-I>vSq;#v)OVs0l-A;mjOm|%a;|KMT=KB4fUELv~!$PdUy9w`wBL%_4%4x2vDIkC^{+G zMUh`UUK>GT{jjYuw;cFK%%dX<1YBH?z6xF*pSuYP=j_?LiurF-fgU|U8gM!Bt6Kbv z7l$@%+hQWL~XMF=0i$ZWd zOxkZhnao$KmBH6rf>vuD;AweA3#qe_+7E3O9LM)4`H4l0W_eMeBBUPo>|I?gZC4hk%LLE3Q< z`I*g(YySa3k4p}|g{|@M2UOZE?}7Q5`tSL96a<%GsQb+9GR}X6E3MWm*(*1c9h$+H%r{-of|7=BY1a8~t=i=E0624J_=9mp3GKz+IjE;ApL|`-I?n~b!T-l! zsg)O8NBQ#avCUI@S!#j@Th?h#!K_ngQv&{eo8Ma(0$*MItI06j^4OgLncyzRn&@to zOiK#^s2T5bMJQQ=KmzITp&QXg4xARqhkN21B~&58xNpLE22Gd(b1pcv3G%%ap6%!7 zsSRwab$|QNTZ?t|$nsu}g)){oLSP+=G$g;Ufwp=g(D7kKYx3K^h@xIM4)Or*nS?;H zNm!2J@Iiv+J5@}%Jbt}hC?=0reQ>Ow&O*r@vzH34aGSPV|Lw~0b^HwsdhM6xh;P(D zI60LxX#nbO)K4M(D}qarg2B$5EbYeTlBjM=?lT={ceS+Q`ZGxLd5;R3&Y&6>h~C-*|D2mk`bAmqJ^8Pg1rXGNYVU#@Yf>;9@hi-%G%v-bR73Kk*T&Fi=4ajQ|^ zNh4q{npSC-5&v@>QFDV0`ZWqHV)U{hy?XJS;rDy{)DscqxP-V~0!03G**=qO1a7|Q zqTFn$dpy~3f%$g4ms*o+Rwo}-s&>dRUF|5_!suWePevQ3rGrzv1_eUM$vclmgXeR2 zj$=6*)@+bA{Iitf@~9Ir0|q0}ty0R?#CcioDUniMx@7pUMmU4D=4I^;wbdm46~HDr z3sA@BJepH4+-J~L^J+o-5K@B#LAPb`EPb~6S|_3m2rFj6$9CH$6v zMt!Yug5xp6b8d`a@5D*NpivchkJo?b;olpu1pe5&*trhvgXmh;vz>|X41;~1q+#0X zyul}0pUPTM3Z5X9&Rat+Ij)_OWweIjB8Cq^`9@0fx_(0;MpYVu1{ep`Ew|`}){ysv z@_j741c~B%B4;5A^7cam-{4}pLptWtR?aN^Y)ZQdq_9q@0*9BKpd|d+-$|%2)d!tb)WuG}iOGld! zal#?ka}{$w**=2bF;$_k(V~s7MAz=2-T1^QOfc+%e`v{>W~tGp+@Txnt#X5=LLUav ziC?XVnRiUYc>yFhoO&#LG82E4^!v+) z0(lm(o&8VQpO=Biuscb3eAsy;Wg0{Mt08hg`4B-l&E4Lk#GHAXdph2K%ncZ;t}Tv{Mg4F+s?N`@ z$OeROqcrL%dsBJal?ez(s|#D%+8|Gv4CS6zk_cq9C$R0xt@ndwvy!V?rkU)g&I5|_g#wxE z$^D*X&^tr#-Wv*-d$TQ}nbgbk;$UyTW8x5Uuav61^W+g;r~(h_poq2R@h+n~6aXqm$*+ArT1?~8M@UH*?<^xQXJ{^D-9<3W@MHooZ3bX_NoD;7~X~11<8+$JFfQR^eAr4c$#d{X48EeNR!349;q^SQH<*E1pRd?{)IM~A`rpYjhvIE|HElv}z1G&a}cX{(m3%ucKTMdtSO zLyuR~Z=tnOshWoy&C&^8POF&d9-!NE7|_s5K5hRY=Z~-wrGl0yBVO+&AC))#ZmR9a++XV6#<{%OMtf)Qvq`P#X z_1eiB=xh zvaij-+S)6-58Bk;iW$Gj2@wRrF&@g;}H11AF zWD}@WS2t za#J*NtOM(ryWesy&8>k%W0a=%f&=gBZs5!|QT9Q-)egc5XCG*LkCTFj=*5YGq&Ve_ zODos-000ed(SWj*7-}Z2`Ll(oe?I^@9(p6Gr3?}lq0qYt6ILpRpd^K-z6IW|`On`}=E=w$3}$sB?_#zeJxYEt zHU*LmdSLfIR29x(>DPjT)+7Yb@~RWd3+TpQfI`KByKFJ0=d)H5J5Y+0TuQBPusy)1EhSx@RO9FYVe-HkTast8hKIAn*-SGZso& z(*O&~jQs`Eyb+WuHkH839bOr_<(5CxgKu{zh43xJxcC@QlMKlPc1zNWdckr7fHnH1 zpIDPNB%6KBX+B(cRsunMEd`2$0&>fNxpnFwsZXC@=zKa1N-+3(7UOAO)HVHqB`P(5 z)BUVW>(&Z&8&Um}V9C{z7&*O`!C!@%0a-$lMNLv(BRwbAKFe>pkD zekrQod{|>3E4$;iux?P5E{KV*oFiln#IC*iE!c=~DlG%jg^;nUn%7Dg>!hrK$Z<@d zhhaH>*riq2zYrrXm$2Y~U-s{TdcFWZ`Ob$b({RxU<3!c2$uvZtz6UFqNDg2cl8Y>i%d4!(c;zr==ZODaj6jWkRcMdl~Krk%-S{=wd z2>SI0%}}^@CUz^-+Zgk9Lcr-zsdjTO)1G+3aE#^@m-e7Sw7wA%xWJN)uYJ6D>QiPb zUg^NmR_S-&%_YFGD3T^oxBX$@{7ph_QCjLhvswJcJkJ;0D>+4)HigQa5#7CevNPpI zSkrWBUiBJ$Y48br1D?hCnkb^PwYn zeEHwBZE2?`NVh2PH~55J*E_BoRzf0I*JQwwXeVbKtbY~sSv_aXtYznj*v&$IQeLm4 z4$+-%E|}f4ht^G<@mYL=aSe?bVi#B*FDn?Fqa@N0(1dIRao<7SG1mBE${oK_gGrwA zL?(b!lndUc>{{!BJ?fjg!d$36N83+dtO`)cLZpG7;LpF%_12cA#|27L7aqlluiC|U z@RFHXVI&U+KrUHhfdW{!G^{d3IBY)P(xcL&ydDVQ2)>~0h#ZOx$CNIRoV(10K|zm4 zgn4|Q%_(Pe}Pab(z_UOYdR)*h~y7&Hhaw`Bde-rFwsCqpEmS6x4 zPG1T471oa696K6X1ho)1{vpP7s^>yCV%H-OW9y;_`z%hDu5jR^0;mWEG z(_En_h`AF>v(mw_=YG)Z_Y^R26;nps$DsUfY&2=ZPP+RF3G4&UUP?tmBxu?XpPffL zVr>#mgk5|Z@E(NypjCFob+}J19Kk~Xjgl8w7UvkpQTByxmx`LJ4`o%9j3n;*Jp^=I zrul!WUPO7|)ZH~wPmvcg3D7g?bZ)N1 z!PTfP1HEBhjlXVwj5ZUtHd@shDrWzi!dWJ{#rR7#`Js!kpX#rp!UafuEQe?Xw;%zN zne!EceG9yKAmlF8pF@XNVdn}!PhvW_lxCLz93vzMHn!g8G?M+}P7olTitxVzxw7vm zvmfzz{HY8JXGfnYuWYl~xljRn*(^Vs9x(u+w|G=B)IWCnI;f7qc@7UB)HVG>Acl=E z?SVmR2na!1b*R?a-oAjGE)lu?@jskKf=s>l51qaSghX1xgUdte7y5JckP%GDrx+x| zS^%C);b)4`aeqniFey!y-2qF0^(w4@ZuPtk{iW=iMsi6K*l-t?jE z=M0$tk;j|oNLU2bpW;&`7e*&<`ADLXoSY>(xpd`>6HPmIFVPow;FDseMBP{?SDghR z02gWZxf$K|4;MkL!}GNoW!ni$B?SG?nc0qSLNYYkkwlC4Ax0!)yObQj|2@1^{Kf#- z`+!)PNT9UaEcj^fLx3kqh3Mq0K!gIuTQw7&&q7X!oSZ9Uxlno1{JcC)I)&!s)dxrZ zeg^>_IorFT@5;hI2(GYVyzF)U=TWEN%Q+Sn{2BTOT>FV3KZnX*oJy4V&lX5=d&KZ@ z4?`{N{3p#romae8%(o%p;{Qox9DLHSJ=PtCHVE)9yG1WgYM6|Wzbf%Rxzc0(6Ef0w ze(8)Cf1DoJfL_UPVJ8?>Bcf{`Z`*(AKmxOBn2POa-7`yQ@ zBr5c0`x3L(D4iZ@aP|>Tu@9jyvY9(>iEnUJes+imacdE3Sh^}^2ayJ<50d$znn-$c z;hr;6-J|z>_Fsk>xcjXPl{620ZEg&WO#U2ZnP^ilgKVkDf{lqMYjVE9k*E;BE#O)3 zM&yN&hnXnVCTvzgU~c-HcGD~Z@C^zqBW+^xK6OzQ*zEl`ih@v=1H zU>jL1cztY0Gw7qAIq#j<+k5ytj~vY2&4mZ@6{uJvyZYuql1D$xuqx(UdPlQlZ2xUR zscSdQ{5KGl01bd9l1Fq9NTX?m1d@~{#5Tq61n17U`40yfa=Qd*vM~H-?ChHTAA)t@ zEFGJbW@im(YjXST6)mNj?v~`S`S3P{-f(nO8v!U9!`N%0C-5cQQ)<{MI86H+BDIs;l zIEyMnJAR+bda!k1?_ZoXM@?&h%tZv>HS|hvRT^qX;KnId0m?Y77Io$kmj_#FKAkys zV>G+dF{j8X?tA{}yCd*!v~zPXcLhcy(IvpclP-rz?Pzp&T(LoLy?T(T>dw2!b!U6C z->O_z&fjZ}=Jfc0QdgU346=xWxR02kybk$-RMJ!BIu){FweW|Scm|X>@_yub<0@nW zc%dZc0`oHDTMag_m68>`YtQS>?2K0ce(%1xEN!N5`tmj&?`Ca2R=bK{dTTY?Ew`EA zWm`PX%ESpsKR5fiJ=+jhuVQF_WERl726=(g>{JRo*(Tiw(c4$(O-0&IzX#cd z3hHCf&M{~Okz^oNK;abjq#7EB?o#`|1^AJMYiJ?QMjBE4Rdz8>(fgY#pr?qyerg+Y zjHm@0@tQ1FNbgAzYa>C>FBeK1q#|rJpLO&s_I>Z{<~2-N*YeWDt9GcuoDkov;8w<= zhBe60M?YjwJFU=x{DHa5Sd$*(WT0-NS&gZZ^%h>%k zP_}!gy<6&ohdfs!KI#}<@!DzyD=QJQs~i+M?^MN2rDLoM5!HnbNkkWVqmLaOXus6) z&dN_W)!nz%vc)Kv=|h2UKbxyh)put}pm=9>$j9C)wE>k_gUoG}9CVrMW}eEIRz+qM$pYr%aL4%e91Z+HDnfAwh>H4-ZSYbDB1L@;waL)Cd!bcsouSGZQI=;#a{a3C+>Y^6Y$zi zM`Vs`^8nei0I-?GfVNLJszs;d#-ml*iKtR7$Nx)&dI+GFy7Q)uh37EOMbuU2_%!e6 z;QpyR>YA%n-TPRGC55P)d9i9VJxWB;XLy+!GUa~MA_eT}h==D*7zvE`;;SGpM$k_$ zIq7lxGu478Fz#MfYG|*%G+>GlJLR?km{eZO$ZTPvfm26 zU*9eK>~gl^=4~8mQr_jElueT70$5d_2gdfc2sy{PyH-7Q@`e{;XENm;8DmKL10e}q z)~Vw#kFzmLLPy=h+A@b)JM^qz!*wX_N@Mo~tSfH->Zt1CzfROJQ)I+2VZTD|i^7m(^=p{#1TbJWRnMCtdI3L_r% zxSUO^dWB2iwg0SkapID`z(Re<`$>?$j@RHT4#d;E@pwIq{+M1b8(46u8`mo$uzlKx(dgI7`;Ww$<1M3+7pq z4Xf+O`O*y(Fe4PZ%-?#kKw5QXo*zN-jT=%1tV_{wb)>u%pz)1}lH}s=nv06zq!3rY z>08EtehR@@2Fk$3zxNE%jW$mZsl8&Ukiqc0qVpuaxd}AB}f5UHU$oJ%7>P z@zY6h4S#!oKzs{pjaA3)JGUK#F~^Mz3X4mg)0eE&$3r=*1jKIU2wY!JdED$qVbLV# zTB0UeZN}hMg14)0SQ_JFB(8=>uhv`*%czV9MJqq3sdEN0WR0qO&CQP&ak$+KHPpI{ zk5Ek=s9-T>a9Oy|MI@cE$b}DJ+odv!N^?>+KcSNbpHz-O*qh?MFeM!Ep~O8AG*#um zl_vQ=ob5`fdi;2BPZ1qrCvl_`I6_lB%KU+5Tqq6lG@sH9z1??}R0IC@hAp-XBo;l1 z>Z$ujt)vX*ZsQq%3QUPTv5)y>7aQ(V6SF=z_5OEviH8Og0k#*~f&v92!KCKSqHGIG zA%ZBWn&m-L<|4cf@dIJf1z`=lSQMwUBbzqzOXjxKQ7ga^s{oVc(F5gYMfLwpKj{Z{ z{P)@iqRTKxBVYF#ay|#`P1xzgm8H;=zd5wmGHwrZf?l#<$yQD+H#8kz)14cV(aA)6 z$oMG+`IFct>NrGLkb6R%VFQdER^Rwbp{qx-!?dMSTMmBgP>+j*U6t$qfBLyzsz|B` z$cQUnp`J7JR*2OeUUhNl$Qhk-tjZZezL2SAL7>lJ(0S;Ax49GnX`yhS?2y|Nt(P;b zD|wF4tIyzfjr%+x^pvF@Jddskd#M`PBfGfeKgP{}qc!^`Bosf81M#&wAjAFHaikC; z`Wzk;gJVs8dnaGG9Cj=#t&Sy{=Um>PX~x0F$@g229S2<;j-Le12C*03U~qgA(a700z^$)4{ABt-Ocg znhq?GC2Mgg(EfeQLmD>y@UIW!2cq1R-z7)I=Qwh{>4Ic`b1vQ(g6bLKt5qA=9?w`c zDJan7dvSE_^sTg|sxl4^i1`)w>qF zlwmlF-%kJFi}|V;h2{O9Np`7sD^c}{TX;P-9Il>pVBFYYW`BVXZQ@z@#fbIhP^0C9adlhocJ+&C^ znJ2{5@P1&#;1PsPtpOcgoa9(jH2R-o%u>fw`uS}&iYTbB= z!c}16Yais(=T)!-sAIeYraf&*JQ+obo{K8m!WB;eE-kdSgy#QXVm17qEGaJj#(!~se$ zhAj*P7sL4cYkL_%cba;TI?|L2*y9uOx0|1EB2WZ|6RAwbBNt}E5tZ%^Q^+w(lY2vn z;GBk^zaCPU2%+;J$%n719mm=)R;lUk+Wlv7?KnGNREEu~7&ZXBa)i^FY3XsZX=tC= zp?W&%df=GyXm3h9D*bHMRD!NRe=8xey}KTOs6*^$uU46u8l3OA2VtLQbVL?UYb7n9 zQ9P*G&Y^s1n=Wqn3W(}B+5_G86;!^i)33WOwFUgcYlru^EH=Sh-kVm1RxWvQUN5jt zqh#XjAqQLJWN|F?S?(sHWfL!M*Y%EV3@tx&k(u`Mj0t{mRXzu)Co<37?BtHr#BLP5^njWy&3VxN?$RakFK- zac@E5R#k9?rfF~0*&&U~sc6#qokR6j~?5&AuAWym;Z@Kl{Y<<%t!E~jfVZ=KC&B* zT8?$L*YHg=*!{$attYPj`JbogYNJ8kv7Gu6F&(efqoQZ0tV_i2#w#tlOw?&`=okE_>fexwRD$ARUpxOH&k(VyZmetR?Il^Ry4g3!1AmSyS^LBXqqc?C zgl0ifd{D(CZT0o*9y=*|Rx3sKVq(c`WytQi00?aSEE)FtZ+L7ufOc%`D~6I2w}45x zo{hi9HOO3o(%pSqg*C{IDRW98_ANkz?&m>W4XMhQWsNp^9+a8K;X<-!#&{I$s>kV~ zHi9*MQtTTeG;+?o%`mk~5ZVXus@MacS^A47r_3P$gzg+DfB+7N#5U}SFXX6F0x3V% zJZ=8h_-w@iUEIzu^@iGL3tbh>s>ZY+{OfpgILi1$Z6yu=iE)VIm2vd7XdNx5^re=I z1$w(xDDT89ckj9gvy~xVoDT<3lJxbKLN}|2ZevZwSMfop*adNtqShzeM9uV^YolsQXV36MQ%0;szL!<#h5-yoc7V3YG&QI>#Iz<3kH&)V|GPoOPTL1 z2dr?n!dipV&#}6T>n;c}>$pNbwS`Wro7T6pVcXZ)l8vOotxy5`P-m{GR_`|Gx|PSB z@8TE8z;CQm^Hj+lDIH4_04H=@8H?}u#U93t$Ajte50^(FPLmGr;FnwGO#-9e4EEt` zZH;ecFoLEeOL5mPx7E(e|CYN9d_~bOn)67i>t;ZJ!+)jX%Ju*N000H98iQA0+SDeu zUjzi?q+#)60000001QopOEYonHgCmkKAS+`7bO#`18Q*8t8w6yX?&d7U@lSYt7%gLUfP4|oVzj0sMPNN#&D?q`Zzhf5|H2xq0000PTHi92 zdm&l}GnpLm7z#2I{|C>HYpVdOkFlJ_nTN9Ryt_W_KiCj| zQoXT87vSxQkq({@TJGU$^avc8j+k^p9`CF^K;I{j;#`!+w^5^ez&;sjQWCt%&gK>+ zGoUG|R#w;W{|~e-Z=;5X;>#5NMYyRDbm) zz46(uC5yPFE;&ZCv)f2Arj3)TvbiXk3owPc%!^<0zzEi29XUS*8gEjzVg4X1*ODFo zjq`QS+|&|<9s1>-7*OPRQWP;!osY?PCr%C6r}CRtr@rUR@=;5*#uOZ;`7qI$G^U3WqS_RT&PP$M;GEp~C#@ z(~I0#??T>XT-C;79BVP#uKGv0{4V~f+Lf0hH(vYu!c=L&$&h5ffkKQyDug%ZAd*B< z5kdd}00J-+;s5J2W=+UH7S=@p^Nul4$72NGsM%N2j6Lsm4e6<+96dIkPBsH~y`IUe z$EUFqheZoAWi}nMh8%uqALPFhQcIBu#xIEXrEfZLKk9W!K&^41h^RO^T7hAkQ`yLh zO2)Ul4|s3I(|*n1=4J2yhkGD=nK63RaPxs*GYD#2R;93=1)+qF41sJY?AR+9<({e! zu!>*~AuxZZ4yEJn8rl?>`p@9-}1V7(wFakT}L%^sSQJM41a_TPtL`}=e~BSc70 zJ;SvdU80uH$<#{+<}3GFN*FGMa2CSWReK@zRt{F85(xcHYihlM05wCiG-c>Kr)}eR zD623YrD@C1^LJB(5<(6vQfzI`6hnPGa2fT{QGIHSITi&oNr-e_!)+t14pnu04SX4~ z_qnOrtYLLeTz&cc)q%TT-2E#yxE!HI$<0cU^j>GWY&IrC(&0@kB$A-u6Y$$mO~No8 zjJ7moV4@};_bcp5RmrB2r!Zc9HgRm2D#a|~x4qHc5hMg!fp#S{jQtwH{>Iesr=}^> zz$QXKRcC3<-HdlVnb$0iG#E_@a7Y##zlRJ`<*4yUzd++?ApKK+FtLROps8;pe;Byf z&qBu*N0DQV}_j`JjJxLyml;zR38K%^j4KPphe2tQcm}X=Y!5SFL(0^SM!|?<+8_ z*pN*1tq(akaU8Bo0DDJ#QH4;z6Xv#lRd)xgfM|SLJ$#lLa4}y6)s%t;1TR4^Svup+1u3W-&?}b*zE6} z;e}ol?~ejx_k^(Zb<07(zvYs=+WNz*CnioAp{4UCdR?wJ^5U0Sz)6=3AuS_HSC#Pd zqIKsyS`c*;$fyAI0T~{~N}9rH`v*Ky{Oor4`kEVnK_z0Dg$n{O3>ztQl53?*FIyBK zM(B@hDzG#?3aeu5wgzlROjiUIPVC;zd}!|qFo-lola+0TPX}4#pP-C(0ZvIZSM^u zbI`&B+|}Z;oV_keaB*5uC<|;u--Nx~5#1er%ISKl7!yI>`zrx3);j#B*dG5X(bwN_ z`(^?cqMsIk6EJXYuF63z{|Lb2CI)sF^5U?X>|I za2B(TaLmD4lmOQF>`z~uvRu~6nNm>1t!U@Am8% zwnMdNJ@>PTunlP8Ccz-!)ve%Mjw5$c>hiP-hUq5HttWE4mt1$-!v3qHYQX*JIsNLP zqw-C4(7?xGO~ayc49w7{mea3re|beQsJFm4@22Ay6C7kbh;gcgi!iz|Xj!L-4gDAk zn_n4!)a2xImHP1kn3j!lgOdpa6R%vM|D4X5%;M<^T<~f-vT_z^mXn(#V^g&%gXEgn zTP80c+1!CITms*LO*-ywXi{d}FNMykn>qSF3>)uDF0P95dy|pN>C4~)4SaNYBBW^MQ>{_CoxcCsQz5kWbiM^QN4W%ZK7&I?138&b zxc>`hu|WMgw6GZGGl{w+?2X0p8#yJgt%}`$ai4b=5)y81tjJMUfxLN0s^lQf9BP-X!Qzn*%xezVv7lc57H&ktK+w!YI3%*(ID* z&doLeL_oX0yc~5ezye&cSk-NX1*w$%3JUcYxY4WCt@9<|lP@2pef-DfFR71l#SqO7 zdlT))9fuN0adPomZ)!ry^VY2Q zS_&ZZ+g9DP`S>a)P)HL5G4M=DOHT1U;C(~S*q>}{`@A3M9Ezf#T z>{Uj!_Ie29;_YqIWU=GF8)bIl`!o%8I>_35VZ>*uEP4q^pgj8Qx1%fX(UG!*wgzS- zQ>9o@V!pwS6`Fvx*hA_1^f2JV(b%=+N=G|M_R%bwE07xBC^kJ362^{4ZBYo2_Y%D*bd;!$pQOrxd|&a7|`OVhD|5%`f;93G$aw50|;r|m0fs<5Ka z9@r1nXH#3ddniZRTxm{hTm-DQuG3y4LgO3!*f_gOd>lp(fTMZ*yC#_)bWJXbn4udA zndG-1(oE5#Z-DMq9MA|%*4n7I>iAO-%7aTc<{n{NY<~VL_`|-OP039Ugx0V7%-%|* zH?A{{`QtNhE?l4SOOlUQ9XyXq_C3`sOA+m1$fdHCsobStE)_a^0E6BpFUa{z?mvnE zSqIV^w?kRBqHkMNH%DmkwHIW8YEBGVa)m4R3^%^*3eMaav7V5lyf4#IDXXtcST{YU z^3}^GkT>T~J*PU=46qLsZmBoyh=H9!&-y|$>Lo5mjj9}SvXmQ8_Ou(cX!E&m2tHTE zFK!B~g?&7euQ`yImf;Q^b1w;mv?OO|lZG=YtOXbZcmU-Gv zOkoFna?GK*WEX$&p49w)-V!>r=Psh|bwl{|I2s3!%G%1yx`aJEo(Wt*mV<~j_GAfg z>(_AHaRWfmx=AJ?Bee?~2)cZJI(WCqz6+~e4N*pGWe|kI?q6ok39y~<#yaqDTXrmH ziFB-+-&SKFxvuwADD0ffjyH@qJGL|iuzK=eAqgC4ikkDTW5Dz2|y zr$^ATWW<=5w?j1Lm+c7ByWj-EUPY*;w!Mh>YEF1`{|S@yXUS~Ba2L&wPR03h+E8`? zwk_4zxX*k4b88b8mcE%7UvZo(K(D{me&g|PKqJMfm2BEDHNSFM(_}-&;$z?GRb)*l zAgbOp_Nw1>D;jpCIf;{Cg34n3sZL^Itz{GC*OB5pHHhIf-Aqjtp3dHVvbnC9HpP6> zUiD$Ownd&Y+{)*UdC)e-5LReH%wpjR67aN*3$uC$8Q}9*0%#S93AkA58>c)uluQCK z+#o9wn|7jz16M1gH2$qH`JdP)MR%2w=|<9e~~SS zVN3l#lfUjQLva|HTXbaXjGU|ya|?$6msfN4iC{!(LYql+oTSH5vj9cKhGE}O#7W15o{=_PrQ$AM zJM&VGZnvxO=tlwI&uW<|IokV~{CU|$b9J} zpB|goJ@&D<6A);DcX}u7L>Iv^AN73>(#be`UN0TZQVOSo?D&evXTkuWhE|61kjK-gi+jzFTaok{H= z>;DwrBKdw+&D^;Q4tAxKiG?gL{Z$_c!(DG1=2o?XR;TDw#6EcH$f)`cj(mR3Yq2KR z2eQGCjjbou59^6f_qw7EA~rTGfXCas#jRq!90D;&(c&~p^=D2d5!5>x-4Yw8ONiT8?xFoH#M8@Hs_EsF3 zR7F=rU=RZ`i~A_MdPZ5$O2nKjA#EVbvZ zYrpS%G7AMdFHUX@al2TNXOuhMFnEvP-k*ql1?eFCjICanW=$JPAP9}S0YBj|R zbB%Rf+8DLw5r==0L$xCX?64pnZ$)UOAB=3c-K~(X9iUvpzFI+!S(t5>KRZXEby|3l zUyBPDPRs&{>6F9VSl1Gi&{xAu1!bJtJ@nyy76lO|h2O1;%d*lptDLyNL8gm}G?UB8 z^+(v%T1H2s#*OA;7llpTkKbX6N(mfVZjfl5t0o!raP+m> zGc2U1_$F{HNeY(vx`ILDf(XvozD-s4;K8Lvc<3u?Cvvi&#M^1`25ejac(n54q%ow1 z_@|a{xYMkNCWeBi#T)zIc))2`U&uApx%>}SQMmV-LXxZm7Mm7&u1{^RWvSk)^%0i` zrWU$m2BPXh4)^fkz~8kLR=JIS&0C#DMRLsxluxLu=9a%mi*{uWl|8y?-)-3GsB%Os z4_s7|61l~MEs(j{VN`=xUoyi2q}bQ#=i#pBaFB0_0UX$3vU;sedTj2N>Ooe(7~l;# zHUQG76D_7Bn9b1CV2S_%O0H4@M zl>~5$IQpcRLoKlUix1GiOb7GJuIu(!L454AmwaP`6JnBi14SU(#A$qNX{2n|p@&aA z0b93v$CkcPqaQu@00S`4A@`)bLzfu6@+7ovV6ZRr;~Y#zZ;`}mVJRCu3U15ft0(K& zE#@3P#voJb9+hZtpmx0Q8h}j`i_=ghM(jEwWes7cF=!bFRme*7TNU9_0t#0IwLCl! zr=^=Db%XN5?3_Fhfe}@Y^E=WJNiBDJGkCE|aAHH8;T+?MaCUb?+2M8HwCdM+#I?S$ zy@Q?aY-WiZLj_LhYe@n0NXB;ull)p&6}#1ZKNd-l8&)9NLw#565~JeLJ`TZaRd$sT zs7re5;zb3h;O%{=y+k5K2`LPqT1i(eYYDA`#WJNRWJWwK#It=m+cDIc& zyUjo(-u*v@i>uUsfJb0ivHcUO0cSVd&@_u6OE}5}zPXPdcrYIlnZbMMtgMCaQQCtY zP17JfzFo*O1ij@fqwyMTx~LdLAr(fay~pvzZXMm+%UP3$e4o7pPl7gEI@@GZ4A->5 zCW!&NYd_8DF^7+l?X;i40LsHn#FxTTuXy5irp=wKWMIxs_Pu;`koQktN#_SYD0)Cd zACnzst0^{FD<`#DAC|)@uPB}_zGBmJ?qVe);K*xY?l@!h*HG3R$;wcrW#s z!!EFsiUKM>ovngkhQJ$dPMrc0v;byM;CRhHX_NC)3ylLiBHWzzh(u=3P`_U-bi~uMBc|=SCwQZCt>Lr2 z-+*WW%Cn69V$!AO1p}L{oGWSU6A?Qu@;`Zei*f5)M*haxAQ zraTl}j7hSZu#+G|;d~8{@Afl9k&np#7C@$-FhxqiCTSnaVyKkiX}Y>n4tff6WUhGf zWdv6ryx2g7$?#-xlFW~v8_q+zpyV8|l3+VuO-!G77@e2Y+Q5}d!!2t;HnS)XQV!g0 z`nvfx9*|aX$6OR$>=D}h#m@fOy&t&kYhQAp51_Htm zw!{-R;}_5|v?Jikb`G+}Z2M|bk~k>TMQpbsjz+^})#Fv%0t}bUCmo<_lP2+?$Wmis z!HT1yZB}lo3!nRg*_rfa!U;@~VJ2gPQ`r0ad1uUPjs4PN2Auep6C#^Ny~ji~6=&Vh5&}%wp zXdG_uLAH6B;i?&s1#pl1F%{Ln!p~$2;{JFPTH3vk`B_Sal(e_0-{ou%5g>j;EkF5p ze`5LSUOUgVe0BeABD{ODP7pR}mZQg;?AaQ&r4Hz5P#IA!oWotCHZosKLGTC214fQt zE3VBZNveud_0wJu!uu?>qx5=DZMGdN&uw^XrkQO5AN|!;E>2g*nsZmciBmO_7w(E1 z+3CQE!P1V}p_SVM0C;|RsWfvfI{C$;)k3^soM_$5Z%t(Q;==lwEK4rKB%}11WnRv7 z%5JRu8hSwyonP7U&{JJ?bhTmvy$K;?{$pR$FA&yDZx~LcyCJ@7%tWR54c1{j6#Hg$ zJGd@0y5=2Yq(j`B0cQLZ>h}H?^~mGjjBaNVvI6nA5%j{7Jt87PZh;Q8g26T)>|UuB z6zmm1=@GoA+#jH|E4Y+NVzs=pDk7&zOj*!@P^$S5KRXt}tkH}$B{Rm-Q?PAJ4#=4d zeL0ug_$M{+?9cA|O>0Izgr0G&gqBOmcN^M_g3?s%}^6zqm+4u09g@q zl~&zwXfqBKaDKs38tEwT>9dG8S`Lh5A1s3@v8QN&Ndk_#%q1CE}IMi31!0g^KiHH z!|k3V+tFb;y~%Fbvg+ieI$0U-FTi?B6~0kBI?RASyr}^%tHD=|Bcey_Xo;EIL6RA3 z4s#m7){f>ia^=?5Rkp`F!UOctzn2u7Q`lEsGU)=UOJ2 zC%BBV(GX|5pFq9 zFOKP&`cOor{Z5zEQ6WTgQ5b_n;-qeu$KzFeUW-v9cq|)VKcNe(IbM3M;d@H zo`6jJ-^2G6M;I}uCwOKP0M}Xy{-jrR&gakMFNec{e@Fd&J8G7~AG$Nlo*!Fuv~6`T z48=CVvl zR<_}uLG=Bv;Wh~lOB|tgs$e}7GC_g+F}=}>#PKDT>iqw9+bui|&^+0O{tcZ0QFKrt zN&zE8!M1YpJJq-Gi01~b>OP6nkx5R-UtVKOQ0#s% z^fye@)`E{qZWF!7xabR*4%vlULl}`X6~v+73mj`V=RC9U3-DT~f92jBl}4()*8I~L z1_*BuxDes#X|tDCn%(A=f@v;CN;+^|GGU9)oPg}}(joWvT_JWML8PV}5xKijY)uOc z>fpg_!uLNlg@>_8!UjyL02u89r%IrO6yNwC0eC&_s79=hW`gF7& z>(-w{`4FZW6~*gX`PeD&s2yy7FHA3}q?ytYrSf_ekiYooFWIok$i;_kOP)$jn}RXa zuYNs8d9ki!fM=w#5YD`~r0$~K>6hQv5dAIkg0~g!#g}C-I$Iu5GYpnoQ+6@)yy6*Y zOwp5}!lXEsSv&lsKM&Z-W^tP-PfLh2eTJREpZvny^-hoKp_vG~Lpqq2F=##_fek4A z8D?xv(TOd*6~aJ5Uwhj&VZs&9^Wrw@a>Bck-hu_-U3Ked{D`{#j72SCvzvGT08?Ue z@t;Ymuf&Gn+ftveAz2i5l%W;#rZvh4kr;Y7RB%&^keb1WhJ>Y{C|Lt}%`WhO)+RLVaaV2h$R4Q!oqO8gh6jcrp45IfFLd0}ZY{8!u++l^G zRB|F3QRtr65KwxZiAZ|04kH{wxC|8)^}EUuUn0~)VEl8gk;r}2=_ps94Kl~70ZF#}7ty_}=eAce;1B0O@rM2AD#ce)iWP9Uj?~m~i0}y@)jSfCb@z4fT zrxYzrO1U1Pm4RJ1V%{Y3!0L0C&yrbJ@18A*+B5(!Yv7n!$D<(jl+rRe>N+~m6a-)z z!XKWec5V9cB!89H`3~vEv>~lXbhB9QlGs!)lKf5Z5}cxCHCb2IF6{j}X3&L~eGcN> zR%LI0D1`dkBNIb-kxmnfmis}TRb&oe2T$Xqr@J6v4Ca|}Xv#F=@FrjR4PU0X5d9j%>^?@p3N~?hsh5!Wc09`TU(-TsQqm)vvDd}MhtnMF zZP}us{TjicbxypGX)55(g8dK46fD$+m=tkuLS&=pcZ1j6ky7I;lY zU@=$y6qJVw4jq1e%U;Evbq8I@%xkG2dX@WL9yX}QQMDRRu&V*B-{j5!z$=swP5aYq zUc$zEtCU|9Wy$He!ea3m(W8nw6>pS1^<6N=*x;hztPl$TNlB9iS;kuNZDiDP+?Ea+ z`wP-E_4JIUv^u4`y-)o0eHYuFy#yp5CpSViF}qK~^oQ&C+rkj9WhAzwAdIY*Z}g3+ zTS-h~=JjmzO8H)3HL`}_g$_--@u3ze(Fk-%g#(CkNE{>CN?ofqq{K0A2Klv zoPv1#Km^)&Hzb*1El!P4+Uc2pnX8pnMhy&1FGeY0w@Y=>5_7O+|34GB-wX8xptUy_;9U5 zoYAfufP<%~PA3kq&5Uw!Xqy$K#`XXJ0000=I`G6Oe!seGX+y~ebfw2&FSw>LmJ-%M zEHkFj^-3lg#`yV-UVuZ3^P>hBUsCm({yhsU&YbP3(pSU+dAYDRIp~*kR-aUf{;XVy zNsPh$^trKR_87pz(#b)UK4+H_-fgb-Ekk!(ay8rqOu$d?oh_EE{CMpsj^EyUVb7jm7+*py8^q*V5(8~)XE;5y`Cl%~VZnLYbj^!X(y zwoLM`#qXcBr;-RzD#*ld;=cO(VXj*oHwIOc{&D}QJh)olJ&9o>|Ng&EXit48n)6-K z5yA!b9(1<5dz+3lac<$ThhUnD+xV8DxNz!MK6`d*aCqC3uH zN7Z5D8&lMD?8IxS%<216lIIY*E&9(eLF*m#J=2^u9)6*Q@xKs11^XC#3eJByTN$y? z(}IslM%(>DKu&v_=oZ*yDmW$5x`{E|pzUFfa=D6i=BGZ!ez=bdPc&-U<1nwr+2Ub0 zihNJnzgWhcI@@Cz{R;OJDg`^o8fN#chO_is%`xoOwzu!ayBT8fT(2pah%@7GX?SZc zhc@TTL4$bTdq1-@B9$qA{j&u$z{cHG!vS7K%)`=w!>)r#_{GIz}_NQadr zP;-Hx(NI$s2_mS~ay(9?YB~ZOBmsQ{uCY01lLLam_UGh01gk|0P$nkiXYdIiU$Vyd z$r;1U1ZgK-H7`gcuuZmFq}a)Rtgs9FB~ob4xmSZZDE$rlWi3c0E=m-zy~hI54ASF6 zPgz*1PuyHD1V&v0avZmWF$&nM*~>P1;@S7`D=n0u4BY`h<(6i}x{#f#b z^e1^(^`$}$bT4|Su9O|$c_26mw#~wqJl{|oXs*^i9bM}#7#!pl~5c0dTreH!|?lmv+g(-a*kaq^9v!PX9b93 zh*%T_h6-S@jOg7Q`lw3DnQSOg4pIc9@DPX)>bcwg!POOeEGPP6uq{aITlfx|k?4vl z_%lk>;^;WPx7cF26IBU?DHSNgwi-imcZ_mz5*E|KqzDJ31XoN(XADVzL+>QVUlfuX zjiU%EoU>0h&!%E%Kv|&Z5mY2KBTvdSo1POgalVI%>S#k2UtN%d>2w3#diewJ&&vErjn{GQq66SpDX7oK1QL8QVZ0fi$SzO^|>Gq$AaYmxa zM=6#Lxct?Na8w|q1F%Y(Xn+Zo<)^dsyvKQ8bq~QwpT5++`=3YRKaoHvyImNO7Z17Z zCDVQxivlp{6xi}Oga8cvY%iJ>sJ&9jHX;9ZlllMv000000000K4>y2#1s>bEKTZEg zYNLE`e`W@BG2*l|dMx+^ywkPbSI%T+H|L%I%sn%9uU!DQOgTU&#?dT~myOX@8FzBar z4WT~OPHb6ll5*nHi=;SMC}%NmonB`d!Xf4H&Q&qxjF#i_Rgo1z#-O zBizc^As37A`gYpvr|a#ImWYY~-&wE(UO-dbLbypcZ3GXXJunuE++N7g!vVo@Llf zQJ~1%w>XdkkKJ;y?1akxhsq}o=4_DmME`oX$v~@3GB>XY{>x0Kmc_5Fpq^% z03II}>OAR`U;vQ9MLqKkHQ9L7kObj2*(RIqG?i;c?Q-p(duxrK@~Zm`2AjArt?B{%?4qBd%V6#Us%MsZBOdJY0RTnk-YBM$d>XMrh z6%9$4uI^C84Nt6b@^#BbW4B=kDYpx2hvz<fUkn=26kb zq%bd)07OyNLY60RC$}b8jzWI#L|BiL(25~5KxRL{_Kov)<}2R2?Dzk<=7nfEhs zsquc4Ri+?JAI|`ZG;q?YUMQuqy_s3A2M;qC9@&`+tz1r0cZI)>!9#C4v3?^{8MuY? zn|HMzUKrKaHC((b&{(t!C(iaF&uBDcKrG=eLJ0|E|#1L zexdRasS1psyj|EPpd|a!qJnNfw~UP2MNlvgmn@q<-&9H6128hAc4~kFS- zfl-q-y7!ibWBg zlM07^cNmi%lJIT5NJeNBR%T$F)H)jmz*#wE?#&Dzao8{b0Bq*&$6BBO6n|t-!@NhS zcobZlA=U*@?f4Vds7KG)^z_>1Qk6Cx&tA3b7gwW{j-Bg1S>;m9MA1|lv$3K4noL~Ljs6At$t%e2P zSd)gSmZ`vjO`MSB#q%`XAUN#$DE(I{DjqmUO}vCW;Jj;IEQb@a8-P%m7k zD8Ygc=Ck){7WEH-$IdZ}xVra=V%*RAB!=kI;CmVzWwA17-&sErjC#{COfSE(L){wR zRF}q6Og*;905szlnHVUnN5JZg(h(!H~%c@BB-XiRNXtMbE-dkpS|fyShB3_)ms z*I|KEHZTUM0m6VuqYHOsRo&9p6`2n0r8WTn{zcdgW5wVlOs%-U009|X)=@sE{e&9L zIa*J&U;|J-iL)ub^Md_t~a2)-K)qTpNl;s6YnWz)Wt`Nv%yks+2qxGe1UbQ z)YjPJGt|yq|4C+f-O&5_`o^ZeoSFGGmsyop?msq%F8HGc$ryt;V|NnIswsj{LnhEZ z$m1!poeHwRMEc_ve76UEn2p4q*Q_L9yD>-{mD}5sg5QA~+>uqr*LWHk&+^>kiaoe6 zr)(rKKE(8IaRUp`ZFns}v5LnRQ%7l0&{IeOBoOep_ad17g{IT6zl1F7n%iPRISpYw zw2X;`$N|_4T@*)c*#>;m`aY1_Zg$;BhZQ{1QClWXxffwk;+Co*B?XIFnmU2**AASx zwNKAWUQ@iwQQbkyP~znr^@rmBFIT`9pwN?Yx>%rPyKo}v5C_sv*j~q;^p19!*}!x^ zg}l|(pGp_R^&db3XJKW)v;MmT{mhmus{Ml&8^J{0TP3;N_8q z8Sl6aMopkXp8cQZrnBVeL$T*%D1ZO}14cxxqN{3}cQ{LA6o&an)eMZq(EM((Y1&DZ zAGrEuKX^>8Ofg_)Dm8flodWMjc3DnMVT-hz0&JKZJVlQod-*Iij$8SxzW%9M*0zAD zhki25;i;dnqI;n)#n;^vqy0JmUNlptT9uIq?g{?phtBdxrqX8p!fO;sD9Wuz?=*&_ z5+PV8CZ%TSNJ>=W>d1An1gwhS{ike-W0fO|^VBWvYj@VD8@s#2xbq|LF3zxn- z0u+sXa&Jb^^&6xn6_wafVo?mQh#_2%eszzgwcHt18}oSDzw@!4W48vcTnfp3%TRKp z(>5V_3wU{xrwOggk18fM5KWKUNF@5dV#^if*1b4(wsH_}r0lsGKAWy-w*hEbMWnwP z^yEEkk{q$@5o9@FcQS6I9F3#>)tv3bJ7=NxzJh`-lu6dupiJ?9EzfkAA#E6++enq- zFM?6_|KxJMpiGsQXcFK$2E*o~9XJ4)=XOC=JkUL1&q(T5C5GS`Kp{6dQP&h+Tz;-( zHD4&DK|2sY`;M1)YX%=5cFArK0x#<$i#y?W&*`ToBD`}U+H~x__t^J12AchE%K!05QNuBn;P<#@ zxPMdnhiBvi%&za3OuK2Y%C5?p)v?JVBm@6T8=2UOh$B!-`0(;^B3}GW?dB!FRf77(%q$ z70&l>CByrODaJmz4AJpyEyf?CT4zFQfR<25Lv!A#&BNB zR=}xn!lWFz0)oO&-}*{yKq}3Ixt}j$Mg6p4m)dt;i(y(K)LN%o9AOp%y{V*;YrBm80W3Eq>k@bY4UoHzJ3OS*QYaF~qr z*%%hg^e@KM)*b()vieN&3zw8+=K`Kf<_jR<7bZ`C2F>C_V0Bx^_>2x2pp)%&t(&uO zo-SL56S%4M?1tP|^-2Dc-RBkR(w)S28#pM9j ziL>hO=l4>NS0U-vTY=LblNMP%S5E^7m0)=mf~|IFF&UH2c@c7Poxp;dncg4Q@WhJ3 zyt7AnT{KF6sL%4)nxbc;0bb7p_d1J*x}}zOn7Y2c@i*D@Gin9F+rr(1FsvE=Mg)Sj zsbtDaIrX=;jq11M0e0tt^G8O1U#yZg-xBVMd%MHlQpw{8JAl@3)a= zk)}+;6PO($jPqBfGk_^^L9aU=q?k0lbDDov@!fC`RpZXCJ<_=6B$6>p`1`8ot0}@F zNt{PfX2jQH9RlErf;3z+h9J=|_A7@Aci7KSbT2?cho6u6#r!|`9Pn`h!}JO|7*>)* zo~GBmrqnnlzYL{*}XmR)nKp} zIb%bSCdk3z@m^+yut>4#*Q_^)Q-J*diNE3lifwGK+pj$3!-|8QrgL~xNc;Mh4v=T} z(IzjdSu>j_b3)F6Hv&!Uihm2Jipc#*gMsYk=aR4I#``(lP!O4?Krb|0b26?{(Y;~H z;%`9Bl{MUB2f)}Z+awr5L#0N<#Fgt8TmOCVJUkXU7D}yVPu(cxy$^r@penhl>6tR- zF%t{$p;k7dt=c=AuRveSvfo%5h+5YH`BnQvJ;Nch<8pdCVt zjGy8lJpn{+)a+hp5itSSfmCJq^vzeAakLF$ud~-x0$JQZ8L4XBM%o+qG6O}bU1lvf z`Phs}J=QDpE#T1y?7e0zL_)Zp|F`4t4ert06|}Z4s6lvh_Zf!+pnWS~X-wGbH!i~!v||&6XDKU$?|G*^t&XP6@`$UWr>=(#ogg#F zWDQkYtYCftORW6lIe^_ofaI-88^)S(70f;)^X)$o2ph0a)VKNdExx-eE(fZ@B>d~P zvNJNj7EJHWoarXX7=(1jAwS$?SJgtK23YP+CFuOzF>TP+5D)(UE~nbd{NBl_1~X@gwZg{xtErl8k#DS7m_BqP-ru?A`IJGDGPMD_@jQ|-c8n9T@grF%8Zvl;}~578`oFw2hAa%NLE~3nef`b zvnualE7OrV2PU4tFEIcQ@+f&L2Ag`*(C!~Jf7V8uOqzHCyg|{PkXoMR(KrWe0N{5! zoS8X;;IO_->0x(5A9`f>%P?LVGW1hERr01)qR%XIroI4Yr#xcptdHQXQlrc5?}7J! zL|7*A}p*-S%Ihrk*BwSMP1kg^6?z=*{@K63GHaECj+)?Y$`1jTx>${#C2(b_-mr>)zJ8^Ohb~s8>h3)&N32cA#8G zKz%VL6zXvDdFe=sek?2;=y2yt>MC=mC?zu0T73NJn35nwB)cn_se28wYkzTr>?IxM|!goHr@QCLGDjy*p?}Lmik;U`j8L~ zKGZX9=9Q8l8b^KOL}D;KPeTEil42GDMEe6!J2N~7hBhnT!PqJ|6t1LpVssIV$EiSa z_!+y~h;M)#^i4-yVygeb5m~+%d`ZTzdqkAB~)ppOT;lPj!#({&$0C&rmA85@i zzA;iPw;U&0q;6(c_2;|c$R_l_Rh<#op0|Oz=MEkq%$dScj-||~jufIXT(8HSo ziPNL@aI25R^0$MSlEEoi&~D%U6DgB+K9KSz{U#Lbto)R=hVZvKu}j+19X$COg_fY^ zLP&wM!`y^2H$RRSkfcO8t`d}(U;gplkd0`Vd3L)Up_p>d(m5`HbsL{^Bgd%j8X4J3 zJ)Yb@IYn6`D}RS?{xkv%J%zDU(8TL}x16MyBxb-GCJb~w-am9a;$&2*4i+LREt?<{ zqAZt2qTv7CepdW#dlhy*lA)B8rX_z3DFx3e10q^v>I@Tn@~4UyR>+%d4s#S-bP|Zm zbUwpy2-r?Nyu*Hw2bGb|4E&Ch!$>h*_W*DMcRA8MjUrieqJbT+cbps2JtWIX2cI^o zF!*HDbBJp>^XQOW!hb%s3l^WYUVY3gjJZl&d;F` zbQAmgFlDh7!yBjapP29m8G`-RNq~h-&rJ_ss8$lDP1j%cXt!zNz^bAw5ZbFrWcm;` zOo(=D_@!`x20(vlsZ57L`rfjp_q*4^WgW>d(p<)0hz=y;PU3=HNb40#L2*`P4LX2y zfX)yl41fawkwk9mHtpkkGJHYBvHrB)lx9~-E9AHKHF*7e3nr+Io2Qd`0Y+|+4#3ZuyJ%SJLwT8SsgrBHB;K? zq`>iU3}rBTNCxt{tMxQX0jP+V>9S;N@ANke_r0LE91xwrjtyk0(^)*?#hAoWX%6Bm zXE(dV5Cc>1XjSop=+Bb({!(XWd}X-vjZjzH#Mfvw;{!?lk9D?xQJj$SHp0T7(ons< zx?(UY5}LoG@mcP9fM8435Ra`a($;_u%`>|o2_Ym(jQM(j$Wvn`5b3-o&jp}Ie(=?+ zqE08T-DZRx;4jZ?GCm-<#jq&sRR8eB-yZ?uMjjtObq=-~YcR^s^Tw=Jxv$bp9U})^ zR}S`}SuquId5!+}UtWkH0Ll~$*@oyG$@d)k$$loij5YcvfB#$@YT2V>=RV!$+(ezj zIVZkOw4a@8Dr+JJH4Q&VkStOPSXcDRo1Dxoh+@>WgFKB7LlL**gf6mS*pz>&xs%*>{bY&>9+%eC5Q?21(^wrWMGodsVR>K#GzOiAG-YZe}oU& z%X?~H1$RV;FuI-A&u_LG)#JBp;^u!Vr=>!5mrhL5G`t`LDuKsW;{aA!pgzeEuND14S>p zqimL5=(lm|+5$YdN9DZq6_uJ zt}=58rrTDBxQbxj?9l*9;P{xFhbZ<-GM3tonSyryuQ!55axQP(-_}(#<=-q31&5b0 zJrdOK{(Z;%j!(xa1zI#V#T3gBhoN{2g=8<^c?q+AM?bV`I2tLh-ob`Ua7^KtfU8mT z%hXwpAB#eE$faOxEVD{nmb9Ne%4pkI4QzO7y-ms6}p(#R_cfV_Gf%ap_{>F zs2F%$!~&!>AuO=LaO(Sc;xgR%oi?sFP8@?AE6R$$u>odoPbHDl4y@czOP!#)Ls^;~ z;{$sm?lWs^MjJm|-y0BML+z@G<4&^rDA#afC4>B?-u0b>>MZ6}6)uW6z9+oYSm%n4{k#Y^aegoJvI$s4n64Brx%t!LF&IaNj=J9IHdlK2{|{Cf21GVVc# zL^3DIGgp?03DSM$-w)c8Mw83 zPu$XO0g1-AGt?m3D;EDcMHwwdZcuWj^?Az5Ncj-xeKwZ`25H8ZI=!)Kk15jlYTUL2 z%W=GsfT=Hqz9Obvt*UbK^q!HKyM1CuT43iO4OLc`{;5y$u?19=cF#H#BY#={L4pvD z#Tx&kBrt=v;93UMu2MU6bI}O`i z6*NYGqIK)y*Yp%QGIJH_qyQlY9hvLXyqX$wU_-cH^rCmV>8O?i91^45i=9bA@G??b z2gt6UehV;#^gR94qR!(?+5lQ+tatAJu`3DKt9DKWU1J2{@*2ixI-E8XqbZ7nT&r_8 z_FKRQf?47#IyyX&DGXleClt|4Pnugin)IS|k@V8Wn)2wY?=!5s%G)@^>6Ehyt}qRM zV;Sj-1NGMl*4*SG`&5CP1(JEK@Pp!O>}bx=QAnX`mVgnDCB;xI;TO$3PQI9*dy7Xm zsp`2jpd~dwf%Fz&^f@jQQqdT%X67*G*iPrL@k{JVN{=)}+ygK&7ceP2Ez`;w&P1I5 z{h}JlI@7&N1z8gGx{P7vG90UF!H9ib@W}34_tC_SPxKJeNe9m~8VAC5AbX1t z>{^;_C=4upMWqyKv}I8Jz?g#zJ?1-M# zPg@&`K=Chy1SI}{H*NXPKsUM4W0yqtMcBgSM(JBtl7KjD%$qg+)X5cKZ_8(o(`P)~ zy8}t*D2Nnlt91y6O}k&PtX^K_+nkI)R^HUB9IKpO&Hnn~Yg@XJAzxI7^h2e|zSqpY z;0d72WH^)l`=)kh|LL|^gRs}Y0Th`9gxuhp9UX6CzFmKG*b+%=$`0e&E?a#02%iC{Gp2@nJE3zAGN{zDZS;J+MXlZXH z-tus4LeB;rIL-v`(9Y#j(PJL^`19!$zl&d;89C)y(O?~Vg+EGa0P^}TxgKLp04p~DaYcLQE&?b4;M8781W z1j>^k6|>FGq^Qdo^<)EH7k&TXe9-Cbac=SZ_a#F7Y)c9S&V|G(R|?Zbq6v^9Xf~v^ zV`$-~0X(Z=4qg#y7KuV8s6zJXzQj44+$LUt6pIIIsbVRdTJ`xN+pP z{6Cg5AzP^CAAHdut}~N8r;B0pGv(__)}*{atZLB?ZRne4*}Ss3i>zB?SqgKSGFD!R z{Co3P;P|do3ucaeUQ0Vb-ZdZd$H+S5Se?PA+|+ZL{u2A{zRY>VUY-*gMxToP58xM! zN0UzpduUFumyo1i3d535s2h02M5U14y^5i>c=*67x-*SOmyEHYHe3XuhcO6>p%pj$ zj7EZ^(qUVDr59inX}_fsgz`oC-#z!fxixeJ$?kP9d8&^R0WU?Wv9U=f*y?>b(K<#F z@(T<(2Wy~2xcl4Mv*;C?IWajxT521B>_dJWE?`UD~8R6nV z&M?kv(vyVX7QogrgbzqcXWuiTwqq?Lj*CHzGk$WBDk$$0OK@dIwOn_1aaCC>0iB6& z2H!%30sD_O4o$AvKZix)owV68C=F>8gxG6lrx&1feQ}c4O|w5!KT&SJbKK7K19qt^ z9tu-neYh1^IN2^#I?56G4_G%)TT3#W2kghsCR~*0+)sseGE>-l5?;;=9O&$r42E}& ziAGfe)iJhp5*IPGMIvAWPDv1!J+#+b-hNf`)3@4^EaXv=NTNps!s8#$wKz=|M%4kS zq$eaSMH4v$PSIycL;af8XV&yx0~h1NBw=O!)bYcZY)5!O`7)#*`Bj1AOvbh~z+NKw%|wQ|Ao6)=BD|c11djVKya#V7}~G#XSHOzKC3v3-r(^ zyQ4E|tW+)cWWy}|1vQGdF4~DLj^N?uIH6MyAd`&P*ioHxZPC|&qFnKKHbfQ6;05oJ;l>9PCb>$XF zuViggZn$S*e2$W&FM6p=2Guj00-Wd!{+5-dSGtC(=4RC8Dg4UB}ex?t!F+5Kr!x{VVGHzxLe9+{na?znpDZy@OIrjcHUT z4T;Fl0*#bp{H7giyDUzCB&SC=Pmh}Ine(bsJRP?c#sk|tlvCy98a<*_ie{ucH71c_B`OH?JxMPTK}wwbGA~_pAMO=kKf6Q-qC@6c#bR0e4iW zd)(eC7TWIn_V6RUOa^?W_FON{=@Gu2m2|^k0GJYF3qc_V^)HyS1v2((cUT{T#bc8o z?H0KnKnIy6U$(Y!q*E0D;Bgs2_?mDAz$0U~`Jj=6TiLfu(y$j@=l$scky#cP*i)JrRc5 z+$UommS*n*wKY*z`es=9kqe{Oi(*~-0h96ewWwI1s%DlR)2COLQl4v^ZD{-NaiO&= zFP^v3bhb|hr_#z}q%tsJ5{b9)oCxa!i%tW+`G0hSqQTbg?Mg1Rd9cPGBQ>i>35<_) zFs(tG8+-2t6gS`W1p<%pMX5B)iAt#ZQb?3F02FIx_%{ojUt7PbzQZ^KBTI&=bO>4P z8#rg~+h>8ky~6whYN#VE?5r6hX-0>@nmZ3QTnb z>}bl`jlDi)opc>jL0hPrRIBJFG&ch4vbb;73V^M<8+Dy>T0(I6E&vBk@v-SvxxtN11oS zQa(EXeA?OBx#SHN6q=)~uf0sTy>D~IFZw{t?_Q_I_@YW7-OrOjnCLADAPJPg?>smq zkM>-nsFJyigWBE5i2BAYRDV-coTNXPFR?1-tXb@EjFcjWpaW3@M#ssR#)Mo-gXcZE zz^W{LFBwJP;>+yBai9fdH*9d!ME}6Y@D4~F3d#vBKs~GN)DC)wnhvo~Wni?GO>R#{ z9VL4R?8=;&zU}mGGb_DGTdaY|gUiu%4j{5>^aNT_K6a2_g!1(M_)C_Z^h0|2mS*%? z?^e=>9w}3rNmy`|ZVST?X+{mANAcyhaS>Z!WZkDD3fcbuLjH#bw#+gJh!eWR1S_#~ zYWjY$QzH84S;mKmFW|PEuR){#J*QL2=w^m7MB zEX2+07b}nPGgF=0gpgTwP>v)GuQfR*N96!xNBU*p8wVf^e=TO>l)Oy#t>|-IF^$Wt zj(%lLOa{)^bA!vaY!e4wok!gCK(m3n#2v*Xnf{Vr!fi;V|vrMIkzQItVOb$kL%QeZzc5n_x{QyPy5-d9kPIM zZgi)bNc4&W3@UtaWwRPNYn;KY+-^HjP82z;Ct?u!)^t~pbzcnqzFW3q+t*AR!_3yp zX{1-Z?2yqlP)rmH!+IsY%lQOihuK9F5oV44whSr%<3mZ(>m0sm!T(}2lqgG$O$+na z=3RsfBDHBoQUtW?wY$F_C81tD*$iy|m?`JuwBm$)4^V9F<4XYql5wqZG}A0X!>HvJ z*72Um6CQDF!w5ug=utS^v&ngynx;#;6Bi+m{=%?X>7X4+(ZaHGNo6smW%BMjA@I*! zw`nzSel|PgrlaHvwajCvKvsM$smzGMFN!T(9mGoeKsv?tOx>^YHOPbg)4!(K^}{-_Tg{)b_rOM zzjE93$v-Tez+I?kA}$RWUP3_~7UBE%(u)koY&bnxstiFo8PDEC37sALw)eRQTs`wFw`JTRjLI|4ay)6fz>Q3cOXHCqwX z-e?~gWHukwKG*tu*a}_s`Xw`6-%TL2W~2k2?Sky_5r+dYG-MQPLwbhXjgl1XJ->OJ z4R|6|0)-n+5kZ7~6lioq`NLM{JA+VAmmO7ntbDDi6lpyfk-}>R@dzi5|2oj~&%)Ko zoYE0+*p7wJ@>|qv5>R6XH~at+0nf$U)<4kdQZcGQgx*+#6@g{2(bDt#Uf#W^C8T$U z1gTIHzfD-_KhmhG92SBRNh}BT^g<&xmQQJq!X34NU4#`Z&872_#bi34+v90XnczAYeW6wkKnM#QmxT%zupQvj zquB*}Wzj97&0D+Mq5mIPue?q0>x9c-X;`NREwn#>WxVA&{ll0?`hcL8?!RCW5ibdA zMC`$^dwc*{@|OM`U1nG2)$ngtUfwbW6Pb~LEw9jL9Q}-Xi2NexRM& zZ8E;h^udwqN7b{*F6czr>nV2&R=y1=z5vE?WmXBl=DiYB)(USmHm$TiHcr8YB@Y|R zxnBj+Nw{G#?cWz5SWD3}0Nu$L*RTnl+rK}vy=71OlRgG1gxr2)u%+y9rmQPT(s z-EdP;>sEqOC17WFsNYp~nyONRQ;cb@bXndJ598!Ooed>#htqfg(BBt?e!HG{XHcRe z_JlMzp_dmDH3X4To+J5q)&hAeWrN+dqCC2vbC}$ zL{3crpGGODOvawHBtx*7EM!;46!hnuedvwI@`jl3S2%1Q=xOZ$Lqb5V1rlCw7b_XsXfE$=16H zS}yTl%p2E?@QbnHNreqAE=7lbhO)0LJHuVekIQ7E0cRoR zLYmsK1Qf?$v!-Va#6Dj1`u@BQtu{#xWiuTv1DX`hb)3JEBaVCJpl7vYChHKx5^F*F z3Ec>L0*BVS>w|;%B>nS<2bzdm6HUNEiOs|UyRZa7Usp}H|B}~3_sC?;8JhzuMe>d& z6oeRyOT5M?80-2VS?CS5OAYt-qhoZ+%s|>-eONgmZvDMyMAfb1*&pX;O($UGy`2nw zP3s;VqN1YQ{jx(zKzzNfqZa3s^r!!!%Qz9x@b1i=6p68bIKwA8mGkHZ5XUO>uN*f6 z6bP^YPBKjBV&{;?;+G_N%(ix*s(dHD%R_D=)zq$Fc&C7UxOI?bO07%y!%w)?PR882 zdFtMDpI>6wbDqHDi|;O&$*$iqBGmXwE8kVUN1Z9RB-HS%^Tt8$HI!3N6>(&I+FZy& zCIJA(`mdV=IPK7+&;Z&6cD(%Y-Cxia>4(O_ToN;+i>qJ*T=1HrVsG_F=9THOePc>R za^I|=^`B@_<#2?wak+-X&UAUd3y<$XyP#R4ASw3t2uKezwG{%V^FDF3%EaI9 zdW1_FS;n=gTnJrW9xJw@JXBl$<4-6nrU4MI$+{D(TkMDHhFeO-bGDk1G9G-C15(^B zp@e6p=lI3)IF2nc2M+hTVlek)vt-Kx0Wl^g$0Z5#uImn z$B+)DF}FP&ZsK8ZT%#p#%AALLzh&;$mYZqidc`N`8_LR?f@z(q7cJ&ua)h;70E%p; z9h&{w?A1}{Dyll-u757$2)|m&CYNEjSiaKZcW*%%5`z;WRVu78u*nnHCN32?(f$Hm z;PE3Rm8X5gKFJLVX!uI=XDm(N58C+=BN)0$fRv!U7yplPSrWfW$->fWX_`e=4MJhE zR}D{?{>OJm_n@qX0Jcw;jzr_t!#Lf8{VK0TXlt#l{)M5Y?05Uy3bh#l#S%^b@8E)2 zc?ToqGCorxLttc&ubo@h^93X{U^@b`aX^NQsqhloZGZ$euSz1Ojv6V9gwB z-3vvk!+&!6)aoh=Xh9j@DhlnleaPs>0RHZcBfVsj)j@rjP41P`wqu`gwQvrFSqf`c zhWicDV4HeB6Wq0Gd7N5Rr(lP`6`8Tz^ivb9?_;Qx#2tt^u6~ zERmd5HmC#JMe^%ri;^nQGb<*gfHd(J-Ptj~ATHrdwhS|L2(2Ak>I>u+MxviAo6Mc0 z`K#WBaV8Avt>(_~@C7k0BJOxN7c_oxM~cxYwNJl}H=(tj=wxKQw(3Itu1WfRHFkkt z?+Nt*nBDAK|7fgS86$LFd9elK6bPn&LFeqE5GYHX8d0j07SgdaW2WAE`tG47&uz^F z!5*jV3?$^8=BqQtwtXAb3ItX#>fo@ww!W7*pyBo=6HGZepB&?3Y+3|cb@Do>Y=N^U zrj1IyyrL)SHZPuf*ybLo?fk1H-!-wgH4?kw%wF`| zZ+0yAmfsTdaRHfDhU-Y%zrQF_Hg!~$4jvB|*R)H$%3^dAH}end1wYyl8}(bTkRyDY z=eQT=`AEG6T9RcoVjW`-H(-GT^Wc6vd68x^m#GD(l-KN(VH)N2)ZMz)C!L(KBM&R+R0`~- zctXixKFysZx&>~wnFw%-T247Nc|fN_Thrl@>T{q*^fV7)xPm~%a_bX(@NN_$$C4Z6 zEK}2 zcQ***D9Vd6)Knt6;3JaMar%sp6EA_!L@6(sc@0yh>8o{L#(lklVW`#wk+Ipuzs;1g0#}M#kEuxp9CYjT@aW#O>Y(3+bZ7Hoi3OAEK zeBI)Miwy*xj)>p3}t!5_VcD!yd=_a}( zFUb!i^kCq|$6xLri5fAahlX;*rd0313{oO`#d`YKmSDZyS#gOt3l$-{sqROINU2Ew> zzcl5S4fR~i&N;A9@T!J#;2%IY2+=I6@v3eRI(ZB3nE9YNGS{lO%Q!S~Mhn=Js-xCo zuSadRxR&(F8mV9C&QW8pWKQi#dBx`iOi9yJ3SJl@x)zvydPIU_tv41UW=opBVPhXg z48GZE2)R>ox4zNC*UjW0RRpgdmtSIbDw=OC{D~uTd5=wu|KOwYq9_NfeJ1;?ATO|C z%edW9k)DwQ;P0lG_ZI;|*mlB)!M>3rO1zNDF3N zHDO^zr6!^6hx1usTvE(W#xVi6H2UPO-=n_P-KC)Zq2Oqr5JC#6D0a#@Zd{a639?Ja z>^gGYi%)ZW+?d_M0)K@8{wOaSRLM>0UHAuf?eC2Fai8?jnv7*;N$n9cDRoG%lGVeg zY-kV_Q(lEZV_A|pFtNHhv4h7-qENr+nxn2U7?+e=5tf=&GY_WWU%@>She8p1vP@AC5Osx`^Z;ws>)t5i2 z!w&LsvZeye6aI!LY(tPwU6isRdceO@NobogsiE2aFfxz8`^;y=Z{2PagaMvkdn zyAepfn_c~0!#;cyb51>oBTDrWY;uHGPq!9_@z6B>#Pb5;VFI0Vse5Q>z~EK92?S8N zelUkblpM1(+-!kuFjZgaB{PsBlV*YzWOT+lHG@G?O&-9EhsTaHcxV^p)Gol~ zL1m;Yah71_#JYQEgeeT(0(1{=f22zX9WI18Dl^kBlm{?SC$TZadJ}NE zt2mvEHRT2hBo;97*XOE%@&wRF-bWOQg`!-pt5^lxP4LiBrg9ylac_e9o2!P3B0NjT z^3X53JWb^H@UD3}X9!G=fs)uVVzGC&xe5UH?S06($FWO>an(iv1n=|QDxxPl5b8Cx zf1_w9=XKStq#L6XhEXi}ez}ULj2Hdqg*%)2zoBh2}ED8IRgmt zwS0^@Q$#oV!$l0lr}6D`G=;VxXU4hfcd0~}4&uf@f3Fsw+qn9->xca{Duk8b7dMDm zd3!MPnzC3X?WmYLM;UV?jNoS8V=YHzwsd5dN?W^UN=rDQqUm7_isqx@A@k*S(m@cTKvQc`Zgp4PM7O8Nv z1oCG3(m*@lt8PvD3?71e17R4{4>n9~f-MlfI8YM`rAEP0q zfAtBFCBq=3C@5m%?A)U8Bu*;^>;7-G+7mRf2^fwMFG$_l1 zss2Cq3|KV|obo@|Z`@<#AKHaS$5>NYW0icUDGB5xNEBB3ua(*^IFdcgj}ZAelEP5W z>q57y1&<7W2S$^|VnRmSaCFcT!V&|ak&v|^a`*P?1hw;DF{3GEUAZedV?#Gl!9}f^)nmGP8m-RgY@0@w7#_0ML<>^ z;+|}4dS%2HZz;R@+@fLq{9coOp(*_tnRl|7zHTz6O|9P`?)v9mw?O%37KQvYEv8B% z0-6YQ>d<_G@#p{iv@hD}c1{A?lRfGSe!%BM`F*Bv= zQriqXhB$jIw5M*mmY?JEc_1;8%jnkYBbQ(I)m{GCUaaizZ?s!wu%NC&WD8as<_$Ur zk11*4OINnj+^g65{FxqUOm4CBKAw?q&RNV)ny*t7jnSOWxrV82n{;E1x(Tyx1Mejp zy=$sfP~wH}d&5tmvwmgJW5bTx#Ow6`(i{)H6<0dO9~u`|-%eVHv3hX=0fLnG%sW`i9f>JfVDyKXtH58W>=2IgVmWy*HxwdQ>w8E@b zlQ`mlpFiF=Bt00pkhyZhMgk$GjU?0KEX^CD|1&!BW|TNT?g@yG?CGVE23l#+}HV$7(fx>NxZ~w2L

&7)t^067`ef}Tf! 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 literal 0 HcmV?d00001 diff --git a/spelling_wordlist.txt b/spelling_wordlist.txt index 1e925a82..26d951fc 100644 --- a/spelling_wordlist.txt +++ b/spelling_wordlist.txt @@ -25,6 +25,8 @@ captcha cd certbot changelog +checksum +checksums Chilli Chromedriver ci @@ -201,6 +203,8 @@ operation ORM param Paramiko +parser +parsers Paypal PC pfSense @@ -246,6 +250,7 @@ Releaser repo repository respawn +reupload reusability Roadmap rollout