From 76bbdf64a97554cc0b3117dc3fb68ac47890ebda Mon Sep 17 00:00:00 2001 From: Zarg <62082797+Zaarrg@users.noreply.github.com> Date: Mon, 26 May 2025 05:24:28 +0200 Subject: [PATCH] Added Discord RPC support - Added Allow debug logs to cmakelist instead of debug runs - Added Discord rpc SDK supporting buttons and type - Added Discord RPC handling - Added Discord RPC Events for each stremio site - Added DiscordRPC settings toggle to disable RPC - Changed App image to a cleaner one --- CMakeLists.txt | 15 +++- images/stremio2.ico | Bin 29386 -> 9995 bytes images/stremio2.png | Bin 32883 -> 22035 bytes src/core/globals.cpp | 1 + src/core/globals.h | 1 + src/main.cpp | 8 ++ src/ui/mainwindow.cpp | 7 +- src/utils/config.cpp | 3 + src/utils/crashlog.cpp | 3 + src/utils/discord.cpp | 166 ++++++++++++++++++++++++++++++++++++++++ src/utils/discord.h | 7 ++ src/webview/webview.cpp | 4 +- 12 files changed, 209 insertions(+), 6 deletions(-) create mode 100644 src/utils/discord.cpp create mode 100644 src/utils/discord.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 349ddcd..f13422f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,20 +5,28 @@ project(stremio VERSION "5.0.17") set(CMAKE_CXX_STANDARD 20) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") +option(DEBUG_LOG "Allow debug logs" ON) + # Locate MPV if(CMAKE_SIZEOF_VOID_P EQUAL 8) # 64-bit architecture set(MPV_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/deps/libmpv/x86_64/include") set(MPV_LIBRARY "${CMAKE_CURRENT_SOURCE_DIR}/deps/libmpv/x86_64/mpv.lib") set(MPV_DLL "${CMAKE_CURRENT_SOURCE_DIR}/deps/libmpv/x86_64/libmpv-2.dll") + + set(DISCORD_LIB "${CMAKE_CURRENT_SOURCE_DIR}/deps/discord-rpc/win64-static/lib/discord-rpc.lib") + set(DISCORD_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/deps/discord-rpc/win64-static/include") else() # 32-bit architecture set(MPV_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/deps/libmpv/i686/include") set(MPV_LIBRARY "${CMAKE_CURRENT_SOURCE_DIR}/deps/libmpv/i686/mpv.lib") set(MPV_DLL "${CMAKE_CURRENT_SOURCE_DIR}/deps/libmpv/i686/libmpv-2.dll") + + set(DISCORD_LIB "${CMAKE_CURRENT_SOURCE_DIR}/deps/discord-rpc/win32-static/lib/discord-rpc.lib") + set(DISCORD_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/deps/discord-rpc/win32-static/include") endif() - +include_directories(${DISCORD_INCLUDE_DIR}) include_directories(${MPV_INCLUDE_DIR}) find_package(OpenSSL REQUIRED) @@ -54,6 +62,8 @@ set(SOURCES src/resource.h src/utils/extensions.cpp src/utils/extensions.h + src/utils/discord.cpp + src/utils/discord.h ) add_executable(${PROJECT_NAME} WIN32 ${SOURCES}) @@ -72,9 +82,10 @@ target_link_libraries(${PROJECT_NAME} PRIVATE OpenSSL::Crypto CURL::libcurl ${MPV_LIBRARY} + ${DISCORD_LIB} ) -target_compile_definitions(${PROJECT_NAME} PRIVATE $<$:DEBUG_BUILD>) +target_compile_definitions(${PROJECT_NAME} PRIVATE DEBUG_LOG) # Copy MPV DLL add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD diff --git a/images/stremio2.ico b/images/stremio2.ico index 05137a971cd6cae8a556d7eae4779fa2587b3be0..efcecbbbafffbfb29fbd28115867fba525d48742 100644 GIT binary patch literal 9995 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 diff --git a/images/stremio2.png b/images/stremio2.png index b3df6061914db6baf18f0c01382ac38564e1acd7..37cd137b727d301cf8b70b5a81283e84668d4d7d 100644 GIT binary patch literal 22035 zcmYg&bzGBQ*!R8BAu&nmF(d^P5s{RT0ZK_phX?`^f`AemB_%OZlnw<&LQ&}ukS-Mo z=~kq3#CXsAJ@Ui3f z;}CpMd7$rjfscp8ADC$W)D7@Ugtxk>_iguk-oCaE9UzA%j`#10+q*x=Y58CZp2`rP zs=7aT;Na#Bfh~CL-Q9c~9(p_6<@LSq?ZoTk?d{=pO+w=T)=7BzI9~8}zu@8KC~>tY z7lL>pO||QWei^Ivj{^!c0+&u7n;G;wxy82&ev%Dzj!9I4GE7>U zvjhJ$_c!)EQm5p@6X}q53UVKgV@#Tcpg0f9bny~{sG2`XU{wo*7*62}yW64xh56}_ z#5P=@zZGNvbN8}L3qWPB$hmF3<7Z2MXn9rz?GE(icQb#e$X(X%p#^NIwp5!DF>M_; ze&uSw;BQtg4@*`Rv@h``t)kAx(8Xy&I?d#9mCU-AC8J7*ogX=tfj){CPttVQDe&=a zS=CZ>VX3GJlmSp*-^a{M1u~a%6-aM7bG;PQq|#L3~-)VZ5y* zNL|7MAy}9nDOl8Q_&kAivJc-fJL5a>i;c@1H#W@qXkc|B!gGJxWiGcmtu|c z8}N~xo=&LKj-X$3jTaLbh-)f3oZjkNe}1L0rMq~dB_UYVip=gckQCiR4W&z)q6+1rsKm+q(aAh=k{<|B2ozV(& z9h;(oXJc+K%;%HKRlM+jB@7F@3mgm;4pgLAZrASz&v2K48KAuNl)Vzch9ZEuCj;rn zgMP83I=p=?8vPc46h=w63Jf z<0QzkeOnoY0LFrZpn_SVS_;g!B$V$N^g$(auIvG_Hdu2BAC~0oE2u;k8p;Zlmh_e_Bl&6>4p2 zAq~$aLx_t^5JCVr!ijR!{QCUsUahqoO#Tit24Uwi^x)`LJqYa$MErv$1f5r&@k?Q% z+NQW53_}?UK`4!6B+%BJAQYbDmpAcESt_uHU#0lV2S^$Rt z&=8l2uG*hCF&A}XEB*@XJo6}DIlKFs5?DqKmYEXuopl(Jeaw3IscBN;5Dx+>G?MX~jWS7$n;Ak75AW0@ofMHk?nd=q%V=NcPBAQ zOA?AdEbSvpQSgm+pgT!u9h} z8DwOmS4=97nWGk?3Fic`ek5dAzw2`Nx7?jd2L*Spv8aDB%dKftb`k*3;AGgVj>NUU zS2BRTD-3HT0ip^Mwc(XbkixtRubqCG4mnU$zqeG` zGz9LymJ2aB(tbX-n}6tYkDxWxI=jX77JZNk3D8h~;sFGJ8_$N-by`!uL|o+PpL`j5 z3;W3qAD{@h=Tw35{$zKP{-beTu04q~ykY(|s}JkiRbT$fIU~N*;)zJoUTGjYL=9DF z$>I4s37w7ec4p_I!w4@!1Ao{^8GjBzT=v}=7C&&*f+_$?nA%qj6_sUb6Raf0gVC+7 z^3h?WS3 zKF>=~sejQIi&jfBy)ijHev68i94LsNsGuQ%q{cL=1SB7aC_~iq*d;^Mi`q0`d3GU4 zEn^0xyf+$K``3U4m~+%d;#l9Jm(jom{y>Eg6NK#Y0BJuwZrI5(peYvYT?e}MvVPvwFXn_-p=b<&>+C5N;Y7mZmA@U;?{*% zOjPguD%z>_kXmiGo!0V68Hi|mxdpgL^%xG{gBhH?=l7@(%@*eXxgS;x#FQ|9uXhD> zKw{InIPUy|VkmC2bs+87oBubSqNU=pwZmsrtSP|Fct=xE1E^6@L&7)Z@T!t{Ic+A! zs4y9#&Ui#u!>M~o0Jg)y<5r?F%y{ws)z4od{AgdHoNa zN)=UK)ayLV&*`PF!Iw-XZ$^>j`l{KfZVDDf;c z)LD>utS^Z-x30QCwzGJr_O~gcW|*tyxeBqrHvouO0RTz?7E>(e#cO0j{1dU|ToT5( zjm0bnlQ4wxrCcZ>%Uhd}==TAz$6Sow$Z^m^4rbiBLB(4So|O`f(eOJYdt0}L@Y>TZ zmP`-zto2PQ8j#i%g6=YcR4v{))%E4pKgkl}9VGn-d0zGJi-lkXG)&N?_{w>Ss9U(m zL;cWIQ+X$0j_xrxH4uw20OD1N#K(4gR;T{3TEe|~5rcxt(P6G7oWW?TV)X@`^u&Za-sMqIj{=koHc>GdeJZzcM05qh$mFJSLSDN=Zi3Xj{UXJk=p zxY%yfpG4e!Lr0dAN92tC_Ai34T7?HkUw)Q zwCa=;+<8rENKUOxM)dUC6pK1XtQP8d<~MJ(=Ali6pHp0L2)X+;@82u)AnTfWj9L3P z3+pKl#GiBhy0u*Kbk)x`I?Niu$1ZXGTS-{~X)7HWuiX=nhJ_H^U$@YxylO{gMAZDi z>Fa-w42W1mAbB#i!D^VdVTcOR!7?*bWyL?=k6Sd*Qm)j4kaq!;t;>}Ma_U(oVeC9* z&$!LJ0%kprF<8Vvm=t5XbhAWPCTyFb8a3qEfhi=l1ak4n7#)6jfKDHHqnRMg}@o8R_C*K zlN$GFbf8+s51VkHqJ;Pb9NM(OF&P_~1F0!b0{7dev4D__7Vmcf?AUbUqsbBVv3_ogQL_K_MZW+`@_*fmrZWNLx5r^C;lse zKGVpkt0;1-t6VWo4^2(R<^ZWd<^LAZIra7*y2b#EkD<6AU?)B7%2PF+ZLLhT!9|T- zA_l+%g`lnd07gkx;!D~^23DVXjY=RN{(E!j*I~VxzbM43f)UfwOi(-#$A0a(WuBxo zSUSGx+1U-cD9ubUGxJXDi^T|GmSz zmM#a1eLq^VCe^V{>p~RfH4UdP|NI=87{Y4TzL@pg1!Sq|!sN*K$9f&A4F+ng<2)#u zu3A?S6NnIEt3n8YsCZH9qX!QNg-Sol3GhN{dth&B82zZJvLuOGYgt;t|t~Ob|VrGf4bvlh>@eamR&dmXnA= zKch&8<($IpOcs;>_*Y?w3PVhvVS?H#lQ78V$C+YRSwf7RXX5V4eDSF>RsZtK-?+i9 zw>}wK(t|kdka%qs9HoR+336sgAs>xyb6%U!r1GF5Ya&AGUa(Sc`hEZ4o|vTYm+{j7 z%Q%!H3*I3oYl6i9^PZFXZW0B}0z_x~8gKfvPopE1$yBVl>+0D3T+*u{aGUg8Am1mD zsYPJ7QS+d_o+tXOt5|z2Bem1oYf{q)xDAeo&n8sQk$kK%OZ<23)wfJreB?us*Qv^Z z84#bqK9i_vbiW2f$KtkjqoX}W4VAG!_t)A0E~Wx2Z_)$V?SspTp8+qPBf!v^x$F(s zza-*UQ3EQLN*X8b98%L@xXtrRp!10igB_TviUW64G^R!3a%9!1B`ZZd%yrx(G*k>e?Kt`LrGKiMhBM=(-xZgzT&bkKSB$uF9eYjE#u_>lLfhJI!*giFjJ^aJnIkk++Lo=Oc z!EL-5!$p(!YgEM*5;H33fcP-$UNOc0Dn_YIf%BF{nhb1_8;arJ4pFw90yAxsGIu;Oy4NYQyA7*Y?q z{QJeRKrWh1Bm;@NAy&(X)i8?RsUWwpMu7q~0SnIw-uzdV>CG@jUAAMS`ln8&vNUHq zdI4n$YGq9j7e=dI1mTo3Z@Ad?P{$!iTdWYbOVK?QDxouEIi!g|&6x8JT5w2hc+gq{Qn)9-~($KA+H>xmR{?BS5}%EI8{v0(3q zs;~~5A~4CAGUmn8=)NE>^;3i|Ydib>uDQL@m7f*)x=fM#W8Akr9o-o@^Yt$&^pnxG z`)<-!`th|@4DwFDc@!f_1$cRwuuRl~7)?^aTVgac45jFda&KvIg@x0Wfi8OkYngZV zJcdF)&r0o|vfY;Yp6Z+iSO20nlN>1q+^hp1q@@g?mK#LzM)vk=wAhzD``GU$oUxdz zCq|}|CjBQ_a(iyg6z+}OzW4r;lX~g?Qz5!QpG1K747D;V>Yp<=c6^VMCJ8+_{x1Hd z=J5TO1>N48bKe{5sZ10Oq6Q zt?@XqkPoj6Hv(EQ3i!td_4Yc$B6EUr+^r72Yj-l z$a?^cln^m!4;kdkloM@_-ck22%I|b*OBB9Sc;FS3T8FQEeA00K$2KF)W|i~yj9Xaq zms@H^y)dmNFevdFK@$>zQ&CU8D@rSoBTLKNv#aKX+(sU<5|%7w?2eMFrJo^f*`vd9 zzto-x2;?NaSfM`nhXFMYx~l*Z!#ZjLl!eo~r5_*u8c|@Rom?%`z2kFt^u_LcxP~Ik z+HXuUE3j2_*5R}8k7KL3uC6mot`QS&nBO?9;s4ffv9s0lR8t84)V(m_yGzsP)n*{| zjy9%?2Ba+2;_Yp^X8h^W=9k1!HWb{WZe(A`)#xhp4s2Xv<|wQVp)6_^(BVt&RtK< z>Htt|m$3)vBtcahBd@1pbf>Vd-^u&vdqnvhcxZR&Xk5T;2 zF!Q^t?WN9DugP_GkD3u0a^EpJTR`Pq@$VWgpSQ*Zc`N%8#ji*WwIBcvPfiA_Nia0z z*GDf1O|h_UQWYENji!iXffO!QygN4$ufU2qO*WY=I(#_zK2v-zq&f4GYQp>P7maZP z1&IhfcG%VA;~2LiR?cvyDDl++5jDrcHz4|I7fAzt_t@6CP83fn{QSoUYbHP4V0t1> z;iqY1nH@rp3PuDBlK4fX4acw$eti{GfU-C4$A214VWb)^`D-20oppdb-WRN&AJ9P9 z%kuDDE9Io{9b>r;1nO7IGe9uZLts)&eLTOu8z!a~d?~^%z`_)oIm$KC!=-f5Th*=I zwRpU!e${{1zO}0WO*wvlX1Z^T@8;-lAt6Kx4qHSvt+%zl)iXt|!^+y+wOMf^-sfO) znl8@rJv{sBobM*#c2emM^ z%xUe8?Df}{`$>MQ&rBv0)sx0;#F93VwP(fkE1amv-*3Ct>aB<*kAgV+A2m-;mfle> z0_%k#P|pgT^y3}rzSYIVQ1DOuqPkO#sE7;`%_{#(X|Y*JBl+-~><1oJv3mDw{%uGE zG1*=6s`tK4N+S25-IXja6}wCdhRC__qYTVsTid3{p8yqVV;vQgN}*D*?R>$9O-$C_ zxeUpwLl5&xH&e5pXm3p z62mFltB$vK&(1$fX`ha9v1qIYdp-zYE!-{Wi(kIEY}1iko&O zUlF93O~eWTCI*X!;}C?5#^%9AZ(f=t$CKTYiW~Rjs4e)sCK&~1-h6nvdCbqVUL*2; zU$r);j^xoMbGI950!Hyjj1fB-_#F0gJqisEVa57vMU-W4%dqu0%h4wKo}9UbQn|a@ z#7o%QNt;uBT~8VMF}O5dT7}&NyTLgqQqZAn832@v`+Gx;A9kHaIUUqUBVT5(K3_)u zPC&YpuY>3};r2TBHM;`l_)am1pv1(+P<&#MBgDgy$zw*w%w7~D5#1UhE~d+bU?_oT zrO!Poc?m3ndr8+%{(fLVRnlcu@+MCD>TMK!@t{!j;@%IFIfZx(3prw@Fs~^mQXSR$ zI@|a<4TW<>3=$?3zFT|Ll8WUe1Ex*7q=aX^V?iw@U&?50!AbUEjIQOtfS$`)Gejoa z?|g&DPZ!UwE&h{QK{63uK1Rjy+ncg^Mgtatsbah#p{dukl|6`{wS0ABDXcC=`zKi$ z`G@1#S)u1cK8D!aX*^L98ISo08?91~jq*jLlauiwDLH8G`w>3Zy)sQ_d%6GKAQgpO zr)qNDnv$pM$(Ra+3Qn?LpS`p`oA{{OtsSn$${Nwkc|pj^plo-BD3jvjuWvnW28Jiy zFy}IPD$3eoe@6Kr%Zd5hV3Yv$08`Yi97!_P=AXIkR~J2nyiYSQ=hexTN05xbn!Huz zBh-u9?d8slTVJ(U~hsLZ$%3@3W(2Rec5gHf#C zAOq%i((HDXH+M@r&RLkD#B2gx+23%g=V{1MH(b;=ZT!FzN9rd5f;67gM{z0J(RMJ4 z3QwJjKKNJ_Nf(Uv>(m#V6LoZN@*2*XM+Ie7|2=Y3Bf4v;XgjDz6FpE(E-;~_&%Zlj6NB(FNSa~=>7q1D`?Nxo>Z2KVI`dc(k z9QVZK=iAu*{;OgI(V0k6={%QAlABS}|${ls9CR86_r z$FR|Uyi1%46>bCe&P|9&OwEU{IV-*hA|^E1-#0Bh7uRQ6n}_Z#My|2lq`Ft`^p+{T zzfk>4gwK3kh7lb>3u^)gV^6u$$+xf^eORXBo#qST_f4|G)ob~;m{o9+?d)&knoauH zzjEmMIj@z`y}vemhMX7y^Xc6U>o@Lx%5O44NC-4>z?M^v1vZ@xoDH$@(u)#`_vDb) zeDy=QW5i6>uOmyJ9q{L^$B)E?pR;C}E99Yf9zRaegw>$CaM>Wy>(=$c0cDM1QE001Qcbgs@h{tiIcHnYELlTDYeb=Xa&eac$PMoulrcocu(RtABNI1tFxf?)wr$;+pk=$5r0tjIx8aBEIWH2^}v<6+Tyc4?4N*E@9qfb zH62RF2{c6!QEj()NVsuCaLJM?5b}OsWF^4LF??qGPnMG*7Gax3+61g5awY4;3?w{U z$DcvA1|_@65s@eOfmFJZzDJ?W7NvK(Do9O<0KIfck=|y~l%l&^}BDz`ibLYpcgb<20k4~i7N?i4&nhuTPP)%J3razR!q#2 zp*bRMJ7IoEz6~Z z(9w$CefAFkR@=ygA6zu6`k>c(76G-y%W_%E`I7XR1zN1LI@3}AhY`!m6d$;7mS{0# zE+6Ac8b>O`50`v-Je+de*|-dCSpPH0WmeX^m8y9g8C(t*nHXnVn~e_sO7*p4WEVz3 zYq+=;@f9m{DLatI#LO!{pQpzMU=AM`Iws$tVqnGQesv05fAeVW%^d4d6+2#?94m;_ z2ep3frRayTYcCQ;>GH#u=+)Vg6xxDmMNd61Xw)qHphR@F>TN zG6oZ*tpQw(n1atb1@vKNrX}Q{R-sGK)*0G4raKnjN}uIf@K=cMxJGQMM=WprFw&U& z;}x;_>TGs&t1|vZdum%3=;p?yhw1-;k%JoiDN6Y!1O~6dU6US4YI#6p8yP##kNy(k zcT8^Rm*PxW1DrI5OwCr>k97UT6}NY$+6H$QM!hCrlg~tZwE!5ETG?w?o_#VIw%c7{ zVhC3w)_#n0OUFk0-MeCRixppwonI5FXlMeuOJDkG{8Kt~x7%?ZrECt6B7e7Dbhz-;E<3JvamePU^3tm`Ziw8O zCkEa6p5uB~#TyJ2VR%4$qp{zQ-S~_c;{~~Oi&yB8V%mNUo0Cg?R09aCYNt~Fr^b!t z?R&f~21R}9EUcnulq{Si|JM#kH$VJE!8w;Dwp8*uSRhXFoSVtIRmZE+`UCTB-{VR?&C}ZO-cf#=sv1{)-Ip>E@Qid zWpKaZT)=VL+3c7n@933Vz3SU7_5x+>^yMy#52twgDXN&mwWx?)<#to{cNj0*_}k!; z>oeDuEG;;Drg?q%BQGK#_iLNQRfp-UGds*HtzT^`i9|}H(Fc0CL}W#fo+_N0rb*Af zvcY9xrXPQV{jMp@c6AIS;jY>$)2z0dcJmH&vTaPW>Z&A<-!Ju+H*I4EhP2fswd zi|=zfEoELg*8$En3`uh4Z|!R$q4s?>Nxz%+F;z>28cMLNB>vWAje9jm5;^n1gJC0KmL%3$?CzjxSABCHR%x@ z7Cfz38S2-D+r1v}r^jTPUsdAE`-b4ZGIweJLCgO~we(_Y-C^$Ue1h!t!?G?kGxls5 z{vZOjt6|2qv_Yh|HNL@_Mt`-I=SwJGn5XL2rhmH<|F{?6b*Q=E{f1+DQm@8Y^UAH8gzBn8-tH#S7 z^AKX=(ZBa=7BrcsYgB`;C5mTO%x)xYf@c#|B08(9#&dB zoTaX?Ck^tuks*8CZMbuhQGT{<9&Bbz!c=GrnJ~Y$L^B?7+0{|MKAhmRE@tzAe4V@R z-peP?+Ei4vT{+)~pBgRHr|x#Y+#x-5yj{2dHja6x zV{zdvxnrU=Z28H#^P2c1FKWZ~4=-H!##kb_&UP#OW{Nt!xT8`bk;%6<@@NB6^!pWi zFc#YAV@5B7X=+_ep8l#6 zd;tM!%!_WCQ7p#q?Kz*aw6$w6sl}(9JPO!(#yYq4x}MgByb?p^f1kQHoO|VEEtLRH z798#*YWW#Q?9T{Saa_zMGFi8#wg$Df zE}r;rIyN3$Y1m$_FPyX(}9{PLkku1}vvQIhV_;_E)xq7U@S@yE)eH|t}_V9waS$1MiG z5FKu$(?J@@-NN8NyZpbF8@9Hnd%ty^59V(7HE;jSj6B`?u;ST2xjO3pLe)7S`33)% zW`SrLx6*yTirQ_)H{F;=j_1>Z6tFLyp&TZwVta)OQ&vo z%QBqt8HPC+d3`5-)%%2*mRp-!*kb9DtlEbetr=!0q2#D*ifdSD;FQ;9w278{yBQ_0 zF%u9*8uRwIe%qO>_=9Z6I)<{P*N{lNugp}0c2JN4_h_TczQ5feQsnh5Mq2Lf3%`fr z2rr)8d{;JkTDNCyDlHk>EMlLi&@;Hc&8S>d%ZOfC5|VqVeaz#kNi3>S~dpN zi>mvu-d?JqxN7N77TTVrK__yogSj>H`&&w~ki_RecG~kp5~a5;ec+Pi`13?VrSQ0z zvb0|#;oy!rPpf0!6Ea25rQU-M_aLVSerQeX3K!LDmog8JxA=01y7T+t5Uq|;=Pc!< z;Jb`@=ZF~_rYQVIjzBT>x;&oU^z&VIaXkJrO@05aQy#jf{Ue&~emkwss!7zfkLF?D zV8V#6A$aFRb8-a5#kSJ#d53nz++--Sk1;yz3Yeq|MByoCd?2+$Q<7=HD-W4& zMN$f0FkiUbu*^wifeLuOq8O>x2;YO7X5qW4yPSQ&IAEA(doG#BZixH9i+JHHc>rTbM^^=v3@*eMcJU6W!VXq`HNdHox9L7%Gc(S_3noHcQI^gl$8KWGw+d|VO z`*p7Kxj~Sg)-9;>zA~#zMae}xM<$``cu41Q;Ud@79UsM?5IE5*xOVJ3%wlo;-F+ra zj_1OT;;_A_SKNGtTB$F}uq!)ydKFKpyprPpw;+K|pah{uDO!n2zt5H5oifr!`6(jl znWzwQ)J;kgfuiCrfjkuV47lIjAjGB`t05EG&tWl0ebv>NrVL2_Ni)ysaz~jJfdhKo z`J*QReU)t#|0eT9Bsz=}94@o~P-5NJUHjr6^n@#@Y9aV9E5~?T^!?YOA1?%hneSv& zE7yL*7MBc(7hE#tuu^49A2&;;uW*{cGhEB49ENNTO@+okhaNOHD*91O?tkDY_i}DD zO|J;ZFI++0znD2*i7T*a-^K*+@s37O%M^t3QGx*hB zxj)gQLALo}p$R2ky-N<_RJ+dg?TUmtG6}6_w-T)IvA^)9*K%fl(i}~Z8?;G=wQ!*|I z{<<%6Udj*iE3_yr_x|Y4G7IFewRs4-M5%bFM%A$-ig+XA2k+A>x+ zG13f9jGP*8aN(HT1@8NEHQp)Z?2d&=F{VfN+pbck?QRwuZL0pxl^p?h152w13$iPMSV4%3w?3z?oY0%}1YQuOVY*i2lHn@fEV zzwx$0U>QtZ0p2eh>6h4~K<nAdAQo9kPWL68q1ss^_(F0fJ;73E`0VS`v40|sKW zDTtGpip^5nR_ge_Q!%GIEtr-gw|bcW>(`4XFMp1sIm}Z9P0PIkuakiy`RqP_aLwOf zllmigE z{w=j|&oECNN!s`!m#bWPzZ2)XnTz}Pcp3)39n?5bryRB)`#l*j5Dr+JF|iJ~Kjw0q z$aNp*(PYZUhWi;t#CWp*a z{QmL$HF?QuxuZ5N&U5CBn0yBu+zzj9c|At$%vsT+9~?i_SqqP^yxG(C%DHjlm5=K? zcRh5&*y^3spI#SiL!OkT=u>f5_6)Mb$c%SiRI40OQi$yi!UtOHoRrN3cUlSsYDl+R zPj2fp#LK*M12dLkE?dt#xO;XE*)wkn5tVcf5X#;XEejYK=q<2Tc_#Y>$Hu zewcnsVK0>QS$gNU>3f9*4Q{G)$gwm=zL__=t9T?o4C{TYI83p~LR0ONqqaps{TJeV z(=o2o6#Xm{;#E%iyE*%1wP-6&?S{J7=ay}*DEZY52S!vxwfnkG-O8f-%u&4J$nKOq z9x2k4&jl{4K{jhS4hEO-BxJtOSP>3aJYl}Vk&{^VN;oP^9$y}rDy=cqr;+R&lj+P{ z>LezIXyu;UKcVigC&VZuDJ5XUBQ{PL@rzQRIJrJ8VB6p$^<=QwXX)GdfnR)w&5L{5!n)8DsH^53e*G8xFh zuTf}2dBq2JFlb8) z+iJ#^hOV+Q#fGe+A74}tIrzF3O0kiqbjq#hzb{eKh@En}LrwUzp<=sL|ItrLr-Ttr zz+xc?FQAM{)uSp^N4_c$;6s%1xIms0Ng~^G@95`Nl^R%lSF=urmX47kvWERi^XpeeR|*MHB`9C_QdKiJPN)793SjPJ0X;kT!|mmXbR7Wqr!V zgCDx}+&IF2YMC<^T*^rWu=@->U+R+>c^;#z2Vsv9Ibk;*9uS9w+aX7rruq3-9a|qN zhA_mPo$8X*tZk90X5R^OPVXtyQ5be2H*TArN2^xb- zX)cvY+#z{9qra=d8h2G2F9aRWTNE{9#l02Dfh;`tB{o9b-CHmGy3#IPY9Q_l%Lu!q zHHrWGCqMf`C(kU9Y!c@5eUgf;XY(qw(S!$-SP`>BE55yxE;-B<|tqq@~|d zd|6BE%XOvWGM>D)~MHkS)~ zW!ndC7_3W?JRn>Aaw%Ms`tny`3|>#&d)ko;IRb-@?LUGn9(MayY&KZCq%9mC@jpD? zwtZ8_Z|mu~FBE^%)iRnUrFov7jpd)+?tE~!PgI2?ntoeuI6+Q~#DZZz%L(0DH_h#> z)>b`(o0`p3YM`UnSz{5FD5`e5jtXF#LF}Wz3FFycVxYmE=Ev#)g!w^O)s`u0-I{|U zj#MgKHNm0!k;t}bC|XiBkRgq5eB{^LcuK=PQft2M>&nJkRGno2Q~cR6O7}tLm)RDD z*k7npxaMpQvvyI2YM!8#O%Q0(1yZ@9ki8qW7ilxIU4Mn)UN(eJ{T=(cEggO+yUGhyM zDXS+fCI;Z@PWYl~ndd@t0mAz8O`Lu(05(%y0=5k-kMMyTJ7CnxmwH8up6aI;IQ^S^ zWSG*KeeJ0C_nCd5bjT8vu;t?KKXaJM#BHoFIsIM6><qsiTJUZ|2XR0ZR0IqFqt?K&G27k-3;xePd!IF`0QPt$rzjW z$a2n_#ti|K52|Kb3{OJm1C3Ss!vDznz#-K=Bageg0gr>bstHtN3F&(BJl9c=?@n3O z9WAbS_J;ay#}ttY|Aw-YpTUbj}ns%bdi9N@jel5XEu*oG!Ob@np zW5+3?h2!sP)f-A{%(PC1*J?`DVskAFJx(9Qm~t6hcqr#s66ZO$)~&F~hbM_6gPLrq z^cFF`&~!gE@Q#gmV9GgR!E^M}*XI^jlfN6`%H+lgmFuXIuvG&=F9(e_sOqDs^<3M^ zoiW@0k~B|$HGp(L^T<>Av@4L~Y*agpW$$sp*Azb^8sn0s?#Ba(Z1WNEieaB8yf3Vc z)${K@Qsk`s!9({!pmi%YwbWgcIGPAe3QeUxE2p4Iz*78AST$Q}%LoB#3OyC&nr2Pr zA0$kv*3bt-bk^xF(wnVMx0E)%aWrJ49|s?M$%e%T{)rWiorrvV)-WG|T-|VtV=DD3 zt4KNB62X&X{f{4V=^l}NsG7tjytoPKjR=XD4Bhch_B4d$S1z6_pL&1VYya!7iEz*q zn)-0wwY^omA1HZ{PWdGWa)y6F9)9y1@xar2`XJr@gR zR4M?J$KY#5WE&u1WvxP$zsISRmxjrG2NghY*K4vkIXRnyA@=ElB5kU2m3zPVv+< z_4R_eXDBr+PJaFJT>EI<>dRA&@l3l~S3Mc`7SUSHL9}`l7gev8*umVhrB0p=Z;G5- z{(?E~3-iaBSSA(@(=vGc4)d zTkGn+uF2Gm1CN1kzpAau?Z8YbGExl@v_%0A zBprwXcxB-4rAYVu*VAp=_`xJ+Cdcanc8@D|Zo?O$hESnDlrhT=dm2j%DGgw^2N)2 zK_;5O#a&(D`+oXS4|{~dyD@<@S@_tuivpOY`4gcnd&{vDQPZlqH#CnI->=s)rmqTl zu$PXs5-5|D7)Jl2C5wr%*$)X50re-h?4aA01#Ilr-dzo3j=9MT|GmGhJcMbp<0F20 zwpe?&YmbDh4a=Pa8IA7AJ-l)`Ro8W=Xt9+r$~;li`JxOgJm=7D*v zN0uKjvt~W>`>e_A*IV?YUW#AFz5i^9tfB7`Z?QD+4+`A<(a94D{_27^S~>Bdq-4&0 zHa(-l0cU4in?NF=t9$VzscQNwriCZq^yP^3qnv#j)*bbm6c>7L6^fT#Mll+!Zp>tX zt0ydKcC*U!fRqIUai&5kOiE|<#1fkvqD+mS!JVW(cFZD_PXp$f{XKuSrW~YAP2QJS z4ru^)1$u~tE>&^x4YBZm(`SE5HGxDWJs1p<6onm;%Ru+#U=x!<9(U-SJkOCE8VReo zjZKD9YzoR?Sj*~WT>NYv>OTMMew|DRac6aTOGNSKvL^f{r|Iq3d3r-N2ueKUmnDscz0IqFzMH8!rMw#c!=N&Qz)5AD+Gmd|;8FYbPeJR9{!0F$Evhng}; z(bFjXYgA@&*f-8e09o>tj_5P?dp(cu4e#N5GtHAM_e};qyMbs)plq5~_`M|p4xT~1 z9=T(Wz0Y|VIi1)Ui~V!Lczrl~@M8E6>f1#aRESv(pUz=B?dR2z=&9358PDyX8V1&{ zhvwsCKwY7gXK?zQr$0!a)#l-%uW+?TdBI6TRH(~a09w%?cj@!<-yX@XILojTFTheh zsT4fH5V3CsW2-%3y;}R&=-yUZocZCOgPFeF)ibUIT=%Y%9hmaJ<)SX~*rE^-fuJo- zESfi1^j^unZh5!AICs`~j7i{;^~N5LReb$ziojB5-O9Bd3&i%!9=Y5%7DHY$oStSO z=*?_l&;TE-Yh4P~T#8Ed_@+d7D5IZYY z6b8QRpBVK!S`d>n3x{lU;HmCS&ko-ZO7=6T&xfdxjw#8#+MByIb#(rzdmXv?{<;*a z&;ViZdTn)$cC;RbEO3RzP{jm!@A)yk{^NhnaJySZx%WiGc4AZq7nzq{STXW-g}a7c z)%sLk5i|UNa`CC5$FY;Nk)0;vpE4Ww2@9LTM5?xV3?+3FXADZYVBkHtou1dUAPkzN zuU%Ogijn){J6v@;<|cClh1&4L^W_}in`XfEOV=JEM;yg(ynrX2st7?`Y&eL@+fiQq zi{@FG_3X&%~FKbn5tuw&v#8G+O$^AJITV|ykQ#a9kSFRJrcuQJ%8$^2eC}Q zBSq)P%>|BxUJegd^Vm+km1iVhbZ^5%sg|nWEr<%Zfry#Uc^yPyQqBTp(HjFN8529r z&LPK}gnD!`wd;>NNOlg6rlzb|=n3YIo-^$IZdBa2|5wA6$2D@!{He955SEJZVFg;1KC6PF zLRApN1!Q?=u)qA3&%O7Y`#pF0-kX`6?-)Ix+4R%L7hNVcVXo3gPH&E`dpvMv;_LF! zh!5VV>tV#Uk#VBhaz)7Lo~PY0UOW7qf-UC{?@L~Sc(`4m%X5}crj9B!v>M(*?0s1D zk0Xrn+K(&W{doJ(hxil29~}ph{pJo<7sST7)S-o~Q`gF-g%<00#(hYP<`%uvc+xg) zFU#QT$gbZnglCty`b~2h?$UWAy!m{ov1x4I@rx&B&*t6giWRuWj%-3D;{{UWN7@mr zhiEN)kurBIzI`z7de;WaF5EHnwbS1hK0itPd7|^c_NSX(F-quehuYzlhWbXiWPE=K z(#?YS`4fGkgc4g&y?teU{_t=#FyJbOB47V;Nb+^5 znLW`PTm}pAcOJdtX><2_nh_sQ%0+NHqPOZ_WEd+|8;>z>?aUwb_oCQ|Tox{r|F`dm zuttd3{^)L@cv`isz3uN}qusIkg>Km?y7h)ea)a{(gU|}k@8ThrT@vcQ0(sT=zU-9>wczC*Zn=J&qw;%{G`l^(9_UoW1lFUsS0rEuPYc$ z)gaU$99L?XZ$h?wL#0^H;#8?2G22MaNM|8i1JDJW5blRI^S8yj?TA~EkIG*34^ug^ zNIRtAyJLuIMbXWxM3wA-_avU96+-UtEIAs1%qJM0x*57ur#YVjAr=x5D_{HDA&yK> zicIOcgbDd7F8bAWPNu+p*WUZsUgzO|Ln4(jX8U$TgyR|U%zcT>NbH;OXzyH(tP$*1 zu0aJ!KV7{YpOa6L?wPv<@}KS;M8)^@ zH!Hq7WaiUAg#pOS#ME_kJH#|UPhP~XUD#1y-k9oCBpx!m?>9YpOpj5Z1)!FYbruwk z3Q9wnG1A~tnH_PPdQFx;y3UIdcgGs%r(>9_%AN=hDyZ#(cR*qNRvg(Qu=za%y<$Ao zQAZqeoV|7;?2OBpw~FgkIUYIqnPMb2BxxpTP0#gNU32n!tuh79Ir!TRlU23}juZmB z+8V^Vd5RcYnfJk5GQJG5?lR87v{y~55vNSa6c1(JXV!Q3&$2-73vb^x;GVLl04C)(Zp=c0iO*cwv=F(#Gk;a7o-)g#yi@)QFM(5 zFd9ASZ>v7vg!KNgQ{2R#_Hbl@B}js#2Fnm|S61NvG{{WZm)`?1_Cs9&xyX~349cQ4 z>QpDq16NJCyY;#85@CYh4H%+iIZ8uP;YrxJtHR3UV>bU^OKt47qFTuLaZC!)F>xU1 zG36t*qGlCdxig`akc@kJQm7dbY`$fmZy8-0QbY@$z;4Z|@3xw5A=kRGC{Iic46e2= zh8L6p{E$6f(y{1Um+2k%yRBwIs;DRrQ6awKBZjaNDIpJV&yRtXcU^`Jjr1APEPpxX zId8YAMmXuW({Dl&F+o7C6{Mj`XapnC%DAWw61m+ILmoLC_z6(DL60JGe6Q}XQQkZ= z8dIq?TAj$*TK^ee zOkLgIQbY)kK>b@3d=x^j-D9Tak)kz7i%8r3a4~N8OVseS*5Pl=<4!zj><)A%v+G-q zBP!xz?M0U=8PNJrlCHP~tX^4vPpR4b-K!S8UMN@iv+_rEOfr*yTmf(G8t8LR0$J7D)RS|=>9;9qQZVvKJ^N_hXZIYpE=~@?#tQ`~y zM87I9p|n5%RO6!tzaU{+B!SqBc=ThxdO z^$}NNJ`GD8+IXVZGM8aG(6qpK7p`QSgHYZdrH$CuV>vG+;{pKQcH19sWv8&XW^=C$ z8L7!AQ#1(8yc7=7BysLvN8TSzB?~c7)NnQx$sMdI608?{z_Y-;C7Ntq@g0z|D23%N z)IT9GN!I|)w^7tQ^K=l$So|HuxX!ut*@Hdi|Lpwtz>$Gjdcj9nGqHaE$QSH7m}iaQcPfP{8}JP(Don({R^F!Y}wz-^PG*ye-g zQ`@V_yS!3c{+JFBW{|okfjG^6?aiiyPPj!?Ubx#GI2$lObatTBTo1r%VX2>$ga8&B zz=DSZiBVpDXA6H~6>_AT25n=({U(^%S2;xIi>O#Rd71G%jH!9Mj6wW`O>VPm_hzX! z_hGs4vpy%%vAv}|tiO0BG%$q*eiBsR5IuGzGKjps$eu|wwK=+CHyF^HT1ULq$5FJ3 z(YQ*Zu$M&OYTf|oNe!f(V@>X;E?1SVI6+@up75(RZU;XnZwewTmpv3V2h0bw`$)AL zSnDe7s#B?kaJ6}QFJ{m-9F$7JpG#2IIbp5i@;rf8B$_N4Zvst>rXP}yAvoHy?;*A8 zAiy60-LQc|@?8I6(GD!9k5F>`&ouOjnsb2))Cfe~uggVLjF#NC}WIg0B9Tp z$MC|VVk1AY> z>_(vbCOwd8N`@sQb$RTgVwpU@LT>D}z$(FC*yPnTOM0CwIS3`YCzsWUm8gT-&Yn0e zg5ncUoNEEYE?-sZb_NavC~JbUD`CeG+-rGmDm7*iP?`YdUa(vV^vGtRTn9LI%Rop? zI5g?-$`+d(eFCUxb~|yAqpYeE4=%9H>0!Ti2bRNV z2j_UhDD=uZ3ARrZ1>9aH-I@cr+`V4OH!s}}mzh8Z6KFW|(&W;6s)R;^(CDQi0A*#Y zW?68m(sac%5IfUg)9d{d(tK?pM2=JRN9r+o7 z@J`cycKlldWc{9XmP`XR&w3p!t;>j*9}Js(Qa^2-1``0uSldexYA=P&*bJ_8a?o%y z%9WGc$}$8=HWv+s=|iK%z+5?cVm=M5SAeP!6krK3+t&I}u>ujxkCPRka03Nc0%^e} zD^RiA5-Lhbz&TR%1R%`dfZGKc%qYe;x{WTP~KYX*&G11&dEauEbzxTT`} z3>(O_CBK6LScbQQ1Nl9H?4dbWf`X#~3?R*wn&WViGy$)rBzScbB)m-!+dzhpEr*!R z0N(Q%DiH!uPm(CSnJNT2TgnL%|5B-EU1q53=s*_k7$G!HaqEspu|i+uM~9zoQ8u!BQ|c-1Am7a=YT|}^>AzYvJ`B>g#Wz8$wMmr zq8!m0F6*gbrYN@qC`>RIdg@Y|cpTTND&Jg|&ygnl8yd_c#Ugd&TG9%A{Q|vm4$j3- zzOHeKKWKTi_F1TGz_M-+2u%tPkuHQN>q~2T_+iXSKd$uD)}tcY zU&ytUAsQdKlwDt+eBZnDq-m!GWARk2GjdEX%;WRrImjoZ13UM)B%kx4?ep>j#?Ln7oFLP;r?%}N(t$bIBiispVP$z_uY znJD*MyO_wxPyl}CGB&+A;C=bY#JmYt2cIA$vbf*^5Ai^C2Ogam&gA+!+q zXDO5Qi~82L7M%ia>H29AisB=Kk#G8@ZVVU%bp*z6|
z(g# zggo!YJxc`Dh`1Gks2?juJ61Ghmk&}YzcV69R2++X>^< z&VE~H@VqZOT2TK&pO=eY&0G{R-sXo2dUiho!l}L4!SS?WGp^t9l;lKgmkA7dkw`~S zz|^M~giP!-2I$-f!^^EVy8JFqyYy5PHRRw*d;}p%fec-N^Y3;XzfG11p&kPXqOE8T z@nn~csl^b4P1|wgEWZLmVABq5Y@=)hv;KTMKjLntx$^R6ck{-u%taY6mFUao*)sy% zx_QsAlDw0)!oDNFJ=^*a*rGbHOwo(&9CG#n_ZK@G3m`NF_ZRGqOOP$*4s|6^L}5M6 zNJSHDzw597WRf_m>C2zSM`!c1KW|^)-#RvtN2z@mbYU~fMBh{pqRPk^knxkx@o>p| z?o2vG%Tt1=3{lghfGlMkW!Q?&-CpqwV_c2^ikNJLgow$eRjBJlO~Dk&?s+RiYpy&f*HVxW)O{={p~5 z&JXao;wQg;$=+idcChNRmhjXj6Lg9TkXnlC81I-be{~mI@#wj$NE}4{CI?RBn{xK| znEi1)+}z27D*{|I_|3aHl8-uw@n1H}$|KJ&GZuT4+Aj*CXQMWDk<-VMbN#m5?%}o3 z)wMP@ciZ@HaEVJ(x0uVoy0f?tx6s$bjvnoOg11 zlDRpX($@WSPfXmidPAjVy^*Y2R68{5-*A)SWr;@_>Uw!!_*SZOJzCeN-lXSo&k+ex3Bj#^4_E|SIJ7tOZ%JHIP=VL8%O878v35Jq z-<8lCDs~O{8588UY=-w@4ZMQE!|jK&$gWQz(Ks~oJcPO>4IW^J^IdMfZp-PAw1XL4 zs$qQZG@M%2uSy_fDsJkvD0~%16h;y4`oYF_*XTXG_M>W?9zg@Lthf!N)o;eML?MKL z?mU#;Sj(XiXfu6_w}oAm66H#{d!5o$FbZJ=e&6xGy^<~Edi0!zc;@C0Y8dxpMm#^$ zsV*XF_R0l~7=+P+%kf)pWd2_}gBNbH$XJ1-JXZo|Xgco=B_@1ZfMNx$EW`ideumQI{|fGdy$GPg$qY3xpX zw|*zbE`bHd;Nkm9qdZ#gI6qNALdGLP)s$%~g2bad|Nq3M8~U}op3=a_qNcVpZv4F>h(`(-@E2waER#=|RGk+3} z%8&E5qQCz%2aow`<1rEaEMD7d2Tntb_x(}sXARVy>aMjX)sEULmW3&uNF+|}CQ!=$ z!_WNS53x5c-sfK8c6&Z}^oVXJ-TZ+7elIx!%rg+vuyHJyewI&G;w*&5c6;72yBI|( zl=z?O3Sz-qs@Ma)(0`f2f4JE zw>Nq^{4R=T{d^hy%q8+)&2cfHM0r5Gujy=04g6PXgt-D|=*k^DjiKWC*t)xo|GEu1 z+1Oe+?H$%pMVk4xGGw*)&Gf}kgQ3Vs0VJ*i7QCofu4x18H(N-DfNCEo2>YCv8{S;I|* zQz>`BRU)e($jBN?gKu0}bBKWlbGiBb+1$oIX3Ss_VyvrlxZNYS8B^w7mF z{-*yQc7J17Mlk=YkN@;5+dKbN#g_i|3S$hqXje;ZG1tzX-0}UIv3>4CH&Q%dHXtyA z%P_jaxkTEBMuJ!NR6*}Y0=ZIwY=Wi@;L3BH$GC&cC>ZzlByP1aCK0C-PsF!G*tpKfim{@&xU# zTn88oAP93$VY@i_-s$TC+2qX#nQL_; z>T8bAt}Dbj*{E;=7)>Rw|6JCvcFKC+#lPCfItK1YSbn2;Q5Jzno&~D&?wuaI2@k`^ z*^Jf~H(2B=G(1`EHIFnFo@we@#mW!hoBw7pa0%Q=Gd6iQjjSD3pVZ>ttC$PJSB-%V zfj~P8qK>+H-fsU0En_P-9Epc_`||rbcvmym&8(h@UrMA=Qz_$G=mINZ5>UzwDC=-Ek1LtVg*hFqIYZkn+2*KM%_%y}l4MaWzrz!I zL)kj%+)3XYa>Z0R*C5qJWD2_{EIw{kzGc#5P6$QB05ec81b+EYRG-mTZ9KeXj2G!~ zY>d}dl3I$%<1#EC)(~j0K5RxK7oK4+JR7o?MGBQjRowt<0P&jw@qY}~;D93pV?qmU z9Z9YG$f+zsaT(XZP8`Mhid_^CMV{wjHHgrzTJYZe=ex<*SnxLZKn$7&=k|5-ZXela zlNx2xzd#a~E2_{~8RAV^)8O{T2ZwA1c?&J-i`ito6IkZgxeH1Z7vvSN>Db1m8tNR$ zoldgZ!praYQZ(3Oj0dz*=F>j1%U^7`kO^}?4oW!z-oq-rW6$|9-i;0(;RqW}JSR+p zSz9?StZ3tEx}6U{Ke>z7=F3Nn2Ae^5-{+2YA7ktE_pH2P08D)uc*i2gW^ULwHsM&# ziLGHu9G5@enl3oWuJpgEoDP1BhadXz-JEFTW;J@VDw9e%vJbTcCW>rKbN~}wgU57z zo*$~+A3B)Dz)G4NQNlOS7!TNr&*v0hewaAV1OZ@nT>eKu+~>7@s6`jY83>WQYvXzy zy71Uy@`+V;@pVaM4kPw$h{jq{eG6OCE)3aozd)207&NF7(PNNigFm1gV_^ zzRH3P|0pyYs?-n7F+7arCn$ataRSxjN5C7!A1~0gb0}Vha1~|qQbYh>y2RwYhH~~-YK2xm4 zR=n8e`MSHp8Hq;9^`2*5hLLDWiaZ2aS^uTMFEbx?0?&P_=8<#6HoC>opU49o+jy?% z>=zAGh%$Ou6bmVXn4WfXmIYTu>TF@;8>%MOkZ-nvIJfJ?12)0t>oMt*%aW6C{zHka z;0olyczqQFWH*-miq{?}wUAQYOpmAbc0|Vi$gUo0CgC|ScYoLFAWu2ky+#PRJbaAs zvuWY)oxjTh$buE{mZwQi1OKqJ3=Xs5a$E6Ku1jdHp?SW?c7ts>jPs4(6OLqP2i@iV zd`KYsaJ%96+g3thH;&|``P0EMyHQ#y=oM`ol;{bhyzerbahnC}rEwX7$=u-Dot-=c z=9Td)#SuJQKhn6~=f(eA={c%6NTryX_>9(Xr9f(%5Kw{ZHv>4#jqQ0Rh@Y*dC!kd~ zu&IKZzaxh`Ge^!mV-<|V=%-T>P>6is%Ff-hg`iz-K#-a`PNBK_F8K!!ofsj^;p9Gl zw>p%mqgC_Iz>V%*S&xT9FSFnoaXdM)BHu&g`p%{8!E*5XLz*cVCj@2rNF4&DhQ+ckg0Xes2JYh1aP6*V9x=EdlnR zQqF)C9)K0FvYkB6A&%#o=`?$!@khkloGgY_YQ4&HC#AdYoO+v;)K*^QOb<8dKDYkg z1I9Im-3vDD=iSBvag!JE{!XD`sm zk7~#o5?+7uB!-_0rb8BGKzWN2+jwS@=l!Vf97$8xjgPX)MTgns_P;Upu$)fM6w1A`bn_o%q22fkJ#mZDfJ{U(f;& zu{?;%C781bI+r<;kphqmJ(!=t{g=$uyUZdOCvYzfp1FGny+>yvVv7kA7DN%x-UA-0 zKhd2t`K(PVcCFTz-{Tw#!vD5mUiyQkK4DRP;Qgofz@ub?(ER!Q>5BF;KlEn>rE%Bb zl^)>g29Lje6TRC^848Mc08FC_z#Ch(CojW?AJLXY{%%jVnJhtxRB#m|>kiNe2JjOa z;pcbxBLk+)30lMOPK@OWQ+!v>u%8U&&~>NSM}$GC~UV5~B+KYWIB}sUI zsLKmQAPTi)g6HY(*mCX{&$^?A@xoGsBv{;V+a2D3Th>6o#XOdBBJ`( zsw~`8#3XnK#9IXj%C=5TUvEG9=Fm+3tB7%F@i9ww{_|i1-MON85u~*!^7(%3B6ndK zfh>614$La3=p_pd$HUvSIGNv*6*uB<`bQoa;HpjK+<>|1xRz1RMXIDenFEV2tK!~ZT--l6BH~_1PZU60_Yhf; z0Q0XFA|Z-9w~Ien#DWt7-VH50kM=jX)J^C(s+`IXK4T_L$0!;31U0Z>IT{Nd^5x5? zas#rk8xH=X3n?%>+BF^GYkc0l?e1;4%8mzXz<K+y+IO>5g);++tt@hj4}bT8 z* HwRoyRlYm#@IlIuRon}(m{Y0kJ#(wn>n7pVY{p9%zt%z+c6KCNR=9k0Y7dua2Yu)c>4%z@)vrO<{tn*HOKbHRmcct559(fR z=^XOY5^2O1oMeYp)i)Pwa#@pH)_fMZzYU-c)1?gU%OnK0_cIc@K$-1^xhlc@FE!hq z(J`-7!{oHXRl0_Iwfpp7cPcx~D3g=%bC#9gspKS!6n=hB{5j5RC$69m1z9wJGK_d0 zmoTqK{&$U$QTwq|HRkRS2-Dr7t)z8$Qhpg;tYP@^7nC`K92OzpUH%2*5|x{C-00yi zJ_k8N-RwXh4I>Z zZO&zp2Mk5B89E#W_oe;C`8SUyb_Nzoaz&7sJC>Ime0T+WMoIz+=RNvwbs;7NP(>aP zC5;Y>UHz~1$>bUp`}0@nrsFezS#Yc`KgE|n#v`Ahk>?-9#pF{*UJpDg5l(=keH%jE zs$#JQ)NH1`FX5=mzkNz=0W^x@&jorpNx|Ftq&OoXWFa{M}8klCGVXwV^B4 zk(5=Zr}AL)iXf2~BnVm1fPDViHYBb7NX;TI{Y)x1_kV>y=q*yjbV|yfCaC3b;gom$ zQghX~3no{0pw(VXs`eCMA7zzdQi+g+=mv^acR0&t?6hO+eEj%ki_S4I8Mn}g0-@pi zwI}YfCcPGtOXkR_KK$%H#BRp0`S3F{QY+!kjuH*)VQC0$kq_qEgZXWr<_SZ(WRGHf z_+?j_<=$w~93SbtrjsH$-S@c*I1U-ar$ZpQQ!wx@z7wT6+})x;60B73u7BesHnXX< ze4D2HZXr~W4MdSCdCP+h1KB#$t3JE#OUFKP-&QzY!#K-7z!^%>BVUcHoM_>;e|%G- zantFqpedNBb0Y8Hj3_|X7PkQ$>I&n_r*QkSVR2u6#G{yM+w+at>yy&4{ewGh1QOA| zrPqZnWzFS+fRW6dk={#ww^|mk_H`e*dM8yGgZcHZvu{h`H&2NdSs4QFxjS$;StO)Z zwjY=+#i5FhU8=v0VRe%;efXujbm484Tl|JR@TMLWhC}@!|B#pl75Z)kb$1ekDzXEZ zhvdVDquWb6d0|Ve{QSkC?==@$6>Q?}i%pa7M+aF~|D%oe~l~b-y*5oYQSLHB1o#NDgDm1Se^<)Mh z)Lws(FCrTn$9y$U6Dl8zxNz_hMTO^9B59$J?v03k4UH$jv!x&hgM z^N%qQ_VKo6NdL{XrZeRlprc`fhrjaUS#a5*xZ|k?uxB#Y)94Ec`6(CUv@NVe<8Z(H z`?t)k=oKX#@zzfXDA^?yxRe>*Ku*)Zxr7Hk{PtvSrPVMGH1B9zIR?dh$mhgmYAx*w zpI>QpbR?CGZ+>B5!ek(kMGR2&H3Y4{8(a6h6SR?&iy9%fU%aZInah!J|)x+AN7+f}J;* zx~Vv7?g%#gkOtzT2!y+JfHP^yCf@_fx}7tWGq?Ot`$?5Ou!~;iMYbnsCEWM#_7vh| z`n>Swn#AM;?^wezap;Z*v3!QTve#A;G7*KiOeB6pLKZkO8wM(nnfLb{-{%4$@<`l= zBXL<06&l0A{FE#*jYa4hUZ~ja$G`;f_YaUj$Jk-z z+)M?IOHnEU<0zs3)YvR|{)Sjz$yJJ?08(m81VmW@sX)NKJ!HY$dH`k`sIeVMV(f*M z;hA4K?Za>2Lmlsw8>O({p1-Yr|7BFOOtHUG!@3NJ_lu%AM2T_=<8P#-q542BK3cIK z)assnP72_|ue%upd(I{D!dFT85pqmG^86=nR~n&0k&ZbPG2IeAa5r886(f$tF023m zD=+SU3jbdG7v9SAz@s4k5j>fl#ke9ga=9_vgG2sD_^Xn~jre^$&gYTJ+N`S3@M`9} zLCqVfazv90=IEx2o$gK9R?HosJxeyl_DZ5}nn6%2C;{GN!3Xg0vw2^>b+@&VI7u*+ zKdQj7y;4ueTnmB8WODL&WSd%-#(sPH-V6k$Ma6v5Ul@6T3SGtFB2+f2d${YtA`rG1 zGU6-tUskc=2#drztFk}9t=G;NWjGdhNID_?t)Fhdae=T)wSC$FkC&SBX znFXPNOjFUeZWj?8+BL{LvlCZ}^opgJ8wFMfvBP*W#e6*6`lU*ZG&anTIWs^ znVI`hVhH3zIS97{l!gujrV+@W2F=d&PK46nsA$l>J|md$LS^I=i{YukxirLAd>PHc z!{Nbj=P5?Up%9F>NyfIr@kOsDr1ylnAP3K(_xA}Sl!-(cBy0? zK9qtA#0PQ+;x=8p+kku_JLd8@gw*cyU8b^i3MfRH=DQb&H91km8*GdXbA2O9Z%4yZGbr|hIN8rkrK z^tW!_crfcP%O{4Dzojbnw13#Sw_Q><1eFZ_qhstT)c1S)rWTE3pI^jx*Ta7k^q$X{ zU*C=HKqB3wp#s4Z?EJ56TNr7UgmJ3z zV%G96@{FE^hqS-OR*4M7Yxiz0BTpuw|5!2aj2MxS@8H;pA9AQPZj8GS>Kf31B6p5r zHH+NUx);6h!0=?gt{=Pd^poU2)54d!;pX;IAHF-S>|cEGtl0DemuGY&QR!Zbmt&~d z16|FCKi4xgzN2`9(@4;TAZ0}d?UQ0T@^ifr}fuh{;3hh zNpVj7YR=R9mc`HMxMMm+QCubB?dF4sCaEg#-6qU4qnt++3g8W((gOHx&q3AxWJ~b% z9^R@AC>`}9P`D0h*#WKpqX;+o9cS&-T(~d6}6Gw z)9pFU$`5m|+j{n`!5%vjTAuVI?mMOEAqJtRfL>7pYs{FW(%;kN zZ@qANL=W63I=Om>&do0aG*G*GA`=A4 zJpQFm(ff3>$6QtV-u-n9_ChyXXX8y|=WZNkW3DnBvRpbZN^H)2Kf04sz2LF8ba>py z1iFC`8og#NJd(J49blSn^28Khe{jsfTC$cG1i{+fgCP$rV|FVyv=&&>OtI^LE= z%&Z($RZ)hN;1!Wzb7?;bDYozI^@~#7qi~W2qM_QpSjz5b%}E`In7f_Rj~Zbdd0tA*$fS3_QLb^0vCB#ZPkkjf|Uhw3a(>!i$A$|38axV)s@;CT0lAuF$_NafhA3x3R;?h0;w^I2pu3oPQUHN(Z zE;pi~o6M;mU(SJ)X+=__(Fn`;ahr+X zC+L9*E_Sy=!+?Q)Zkv7L?}A)4M1_>_czXI+CQb;d@}-fTyLzWeVjkqc*Z;(>+pq}( zq2x%tgbU8HFSudK9P%XnlpDvE#x*`q==wQ1_y&JscXI1jKYRW7Y94M+m2Zg8!5!aC znf_FYZ8Vk%A;fGE{aJ7W9NZV5W01B`Ttg;54ao?s=sxmk#I&-=E&kEHS%3ZlLARN` zkm!QY*c(dVf8HGuUVPtTo70?2dLG4Y{s-=U>&}}&i-|<-;@@l29~(G&#p{bTBaclp zGnCLJzO`jO10Q55MjV1y*Y(7+8z2O<7*D5>&UGJ8ux{0ZWditdzkAZVf(PS|x|v2J zK=LH=pd}XbBU`iVZoJ_-H}^md}`NlPoa# z4W-{&1;jc1-SS+W*AX90k)zxA+c^Z|_5U4wWoP_Me&bybhd&taEco|=-h97%({_tg(8GzIZv6@vM{W@5kp(p_%W39VlR z;T#l~?Z1aRmUL!Q?^OhnTH~R+0L<-2Jy;FP?9slo19d?L+U3pv{PqAo0T6Pp5Xt&I`?q9^4yuU=eG=453mKJ#>q$ zBaWGy5ZfW*T`t`AcD+8d;=nf=VRAl6gek5S>Dt4yy~bU8qZqk5;Ad8-g!}9rPp5u= z{*b}>*g=@7aEi}H1y9oPhc-mK!-3wR$MK7@zyG=gXjS3u_4KeM*p zz1AF$t=op*<#QIsYG9{q2$8;03DE1ief5s17*S-@TLMeTOWTA=$`wF76^8gXg+0bt zD=$tMazJizQiJ^c=TP)IyOM3>+|+?7Vh-PLvp5{suIvl)a zEI4Kl36fK{8DuYf9M|`%a)d7%txZ|R4luzU-)NY2= z4x4A>~=x&;_E{fd0W=^(zaOlT-&leMa*FOlt|g&md^bj z8&vkdkA5pY@x8xLXn4-6^xW?T#ZM_pS!@8daU?5QD2nY_*G=}y@#7zK9${#6xd-QH{EW8#`|I_)1A4A0BCn%C z{tazekd!@TqF|mXEiC9HJJ#6#&GLyLLg4Letpf^SB>*kN#BGW?!S25l=4!d+Ya8f0 zu=4ez-h)#QH>%S^r*sznQ`9Xt=d<6-ufFzg?@XXbZ*@ZUpFAWL@Z$^$Ea?_{UKV+! zj%4hJLcBu)pTY>vd5ivVP5R}1u}=;jMnE5) z3L%A#%PoIUksX>zFV!ezfy@d9X0pRin(QBlI5vXwhN`E z-{!`)&1K!{!ov!0J?B~Z$Md+F`)W%vbdM+u#`3~O4jJx?*!K>82%f*NFtJv5PmLMr z;|Wr7k>1B_Cp9}#6^CmFBOR$RjmoiIgR1DjSgT;G#fx5DJCeO`eRaaz#}{srw=)G=WkI>;Y!Zq|5Fd=gr#tI zI$|d`RsR)`DGkDTWk#XVhqOTMC-3BLUXtnltlvM(kiz?c`lBw26cfY|-Jo!mXQ`95 z&w%mJFTEF~e*#->N0P)+2YKCMc)=&H$NSF{m^|rJQG{yVG!dG-y@?wo{ix1a_DkdM zl%MD~rI@XrGE>JgK_AeBN=edy5DrM<0FTx%t5CTJSk*g9k?Y0_Z(05FhkH@U;ZJ%+ zE~VCsBrnXe@IND&cK9#YMFau0w-kle->&QMlwNRJWjvlF*eK<-Kb>MCj1&_^?sYUp zCx<4M>%#Sw<2Q^xgz@h`cX@2B^gGei`jYhI$+mnb>UV?GXm$CQ^=&c?ceHEd^4@*l z=0uW5!(XfYrc<@XZ_`banLL&1Oo2bk=b7e{XH6(iEzt-E1m#B-Au{jstI@%V&0BYH zbZ+Xx;X_8b+tPi-LQ+NpYE?#GK4l#>pW<0|jY@|*%OZ=mg`KI?K+oQ|;36wEe>+II zpdgnhTX)R%pp6YWSqO?M4!p-zv}F_Uz6Xw?NK?UT{Xegm2Vl;O7x&`!^el6;Irrve zpPz~CY{^;NOMD3KFBxOV{IuECdqm8~vPFwtK9! z%ML_tofLht)A4)LwD8r67?-5Cc`?2Z&Q91>2wj&-7e)lE;c$yg3ptsOhg^yxIT098 zPE*DOxFEH^V!f=8h+9aCA3xiNA9mR=hF$p$C)J;6dDZk92cyca2+ckCr&#wne>&yg zy4@c@x1Fl!G!S|oH~IJl9d|2y#bNI1D~(KA+VD5b+_n4OU;jAX8}({FvF8lhBGf0> zhyUQ(As#z3)3NwKMptc<{b%^}ti3JNA@gdSXK4#H@!GoCd}H(Sb%>{I;wqGE_7}T{ zq)eQPEp{a-J+>62W8#q~)1j6o%R`r%1QG4KBoWy(X4rBL3|MpK=6BjTmv@IHewx<_ zl&AGJpTV4s=|kX`5{;^7GrZ`PFn(bkJ8I}PTuDD7OWfL!PDy=F^R*=+ zyUZ2zUDTZIt8&JEn;V@pxJ44_IMbfwpgi^MQEDmbwHpHTaSd9UV(zdAIYZ}{VA1IJ zo}2BSI+N_QPEOINB*6lE-F+c7VY~|l7dtk2lprnC>ZPi(H4y7I%EV{q%G^i@&NW8o zth4M&ubQKB!EFHcCu)ot=T4WSUOOWK1Nnx4T8=#A(X3zSt0#CFDY{i>Dc{>@1R6-t zUK^2ke#T=2PbN(~8&^NCiBQdV9G5Qm#C9K`W9WY?EuOlQs_q>GA1ZC){E>bt#e@yt zTM@NnDWJlc_&-L_8eOfPSm{7g5~m?2&m5|&eRU}O<6b;%OIf4&zYH|)@@q}R5V)p64`Z>I|y`GNMDi{+9HZoNH6dw z6vYbE2_ir!GkzFP>42uzE2Hn{z1cZJiwt>DY%m0SYO)U-{-#rQA`ljzZXUK;BUUabK)#)+dDmMfPi>b{ztp0aJlT z^eM@*<10swqOiSk&@MmzXKgfI@cvoZiT1N&n!MvD^Vj5XME^H}h+Fr3rYDpNoPyIs z&O3RFU-d}eiGDHr{-9g1c`3BmvJ>>yPN+<1?y%{QIb3hhV)FS0rH3pUjr7g1#wM@0 zI{)&udxk9jZQpqjSD*|X;IVY7qJ~-{Hc8#iFQO0X8XB=#`Y zGJ(+<^npOf{MI+rLZO5x|614y?2XOd?C`~WzPhG~m|6D(5ByLHSE_OqN`IRpX6m41 zRP|zN{;<9XvSvH-SC9lE9>OJaZ}6{0T{v8qtllpqgen2_L+yz(X3Pt^+XU`Az36_^ zCrKB|)1nI^3@`F@ex2I?x5q$$@~?@V@c06!ys*>J_Q@o`SLHVEWP)&0#uSJ~5Q1s-g+oyYeP}Th4=0MT^Vy=O1**f zAqh$%e^o0n1t^yk_+uCF@VrU4=Ro}%bs0Hn%Hn6cQLo&ihe(X!%oc;p=Krv`@=sKX zmw?$+mb9#^V{!SbtG5F~ul$#O0XKEcbF8_eU#zXD297ZDBlPrb{&b9XPa33>n4c(@ zKxA^1#S84>^uoLlI@xtQvZAFU&WMOc?K+Tg-|41=)_IE#f|~W!X4pkid-bj$)c)V< zSWck(So&eJ(?9l~b8&0#?U2dFU<PqNi#yia z@{c zrA?UU!40xykcY+Z5WRJ6(PBSQ=A=S}bCByRDnvnn8G@}ywY?#Fl_=kFD+r_xT%{>n z6e2+`QvfM>$D-|Y1$MKXxsmNdR?X%7EW^K2kPRuZSToItd9u0ptPONs0C7nQr6q{6 z(3D5k0Gcdo*V~+uDo8NiJ9jGAk<_8(x!9S@^7Twv-T6h_uB9pqLS4`O!!|%5tV%G5 zttL!06UyL4Whf%S>+}8D{VyLLS{b0}Z;NwkSt8UkuIfjL*|nB$F45?}_7;VWbZx14 z&>b{)FGpzPqpTp2QdFZ<(1m(@=iFb)Vam5dFC-alqsJr9{s#EfW$yR6BSNP|AU)d0$bpOP+KpnQo z?;-8~>;T8fFx9WCECR0Ga#8Zb@7Oz;onr(g-|H*Vr>HwbgX(%)u!FMQaH^Gvq)3I; z8(;2&_u4$x(PgGW+xfqe-#mJ^?-tU#~(tnED#|Q7+CbafB46d3fF4y6D3XkDYMdx}; zN4y@ZQ0gdDLBtVI^n{SUGWlQX%`{k!_>68HEz8(3_ zZ~4+oZ#mT^t{us)LC5FVteS<0rP%|I<}#yfum0G9gviPF*(Otd zFSd(U*~nP-W?YAuk#mJTz)=DR851oVycaKc5>R9G5y&_|O6fl^xhE(6ZK@xITcOco*av{wQs-uozr4ZhgpCv{r84Z|0l(q5ibJ+(1jrUP-H9CH zDGt}3i|$rQlG)y-RB#wuFp8ysNTYkR*GslCN8yu%1UmU7_!39ggjm@z4LQkPTNcRB z*mmc)3Onpso7keY_d(RID<)+d#w!WfM~(3w=oeF-mxNIkC4f6bMj@1zH(n()0)hE5 zy8Td(g^kU;G+nz$yM z^zvzxwZjFk`lK^+r_x2e_=7!JN;a}zuyzlvC=+7HaOc{Zs}}Cx-*?L#K(81ODR<}z z6hyG0mjjyV@Ho7X-g_l{h)0ejS3Qa`ML;e96TO%LVQt%XokWbh92Qs4!-gxHFlQAd zv8cf1(rYIVj>}ml*cH<4w(T$Do+S7`53krWDNQu6+KWvN?}!}TK5Dqq8oBjGII^y`*a^PWSLE=feI$d&+oQOVt2NM@hpha=0l zDRT<6WdMu3vUef)oaBCxrfgJ!-|WrKc=8EPEfCy z`>_B5eg{2?t#UnU|Npm{3}GoEWRi$na*fJ{ zcPY6Qb1ftHyHteg%p^sk+(}f*E%#f5k>oa)Qm(mlu_U+5r7=6d*FN9hzwF#zm*?ww zc|0D^P-1s7Gt|2S-i&Pj`2GPJVM^C44%3VwU!jowl+j?_TzP=6^4)Exx5Q?TY5ee4$!Iw_FU&V>sb;8S9 z1adM+LjYkA>I8;%MhW^}DyRBF8f7-)V7>lB7|3 z*%j&dO5I0X$P3+3WMPAret>ect<(7J z!gbABz~-=D9^;Nb`%nh8IaVF&(RrZ_eLy3@jjrIPGxk%+9bOk4^>jHy`F$MtvtG0J zmdt^L0&{->5c22og~H2L5~#0b_oV~B>r2r2J`S5_t(?1(j(0^NTSBAk;_>SPIBepy zoB^?QuV@CPrQCek`6Ch;43?uL;)YxR0H5UIH*robge|XKp7vC!@@CqH1V3VMqnt>i)h|8}2Ok1d)gy-x(?yX82SG78 zOy|t_B|&V+$;$~3Oj`xwOkFAm0JMsKL;`{Qbl;Pe@!$h{b3kEh-gvmeFl~F^w=?;6 zGv-^nzYMLC0Z4J;1Op<|NO2vk`qdHrw;mH1mXWs(e7zlWYlQ3EDMna)Xk3@y&h&YU zGZ`}MPGQ~O<*y1_p0(}Rve?&t?4XHz(hR@eR=50c)mEVN<9s39xrTuL5hbC;%N;rT zNeg546-B5=f;+#w!Wk@R8L{N!_ucf+zud`FHvdWsCbj#qhtlI2jA23x$>zao5JmxP zjP*g(6`=!%RQy&1Z2VCeDQ&6Ugpp>2-RM0a_KWQgyopCZ!qW>&zda+C9G!o--mSqC z{O=n*VoqYw#8W2LuZd+D(=^HD5{OXhO zBnt4V)m&!g?p}*TrSRL!SYVfV31q+E-rIjC!$Q8sysBt5i1HR!rso+xEHeC_i}NJ5 zZn^+G%|j+W@d4BEM~WP7FKX7~V?g+gcD3v8T3=pa=r$RE6pq2c>R!H&@hyv|h>=7P z4uKrQ?lM%66l*S^*6Zw~-qG@p?^Ra!pTEZ*JYlQp74HGCNh|dJ6bwRb2!pDQigW#N zwZUU0Tf<`{Tf;~2d0yb{nnQ^C2AMERh2s$bIu+cN-MQgl;~aRhHfLd9fn65YagS2V zqxHggi;?|hSuF3TN^iHS-}mMy9Yq8M?imciO{;G0+*tk1lK{fAMbR-2$XepRVC&iU zYjjzB2oiFuR>jYS;$9!kM^)E8Xsoirx+dwec2c9b0PLpkKRicIN7!;;jNon zM#2NG->4-PJ4;CiyXBdS(SK<#q5x4sAx(gSh{rigy%oYHzWI9p*4XOKao6*GlRUY; zh31NR_SGr*(v7qn);!-zP0}0YpHk+z>E;Uv@)xWSN^|=zzD(?SpI-94u4shp`VMen z9(x_`CVTuR@rg+b6P)du5p_o#D{>geoICw2YVs&Y4Hk%rY^l(4ZB{%$%lWhKn$r8_ z1Q2%dS8%u=1VSK0AE-Fbuz&8I9X{yQ7TSKem&k2Dmc=%eshmy`HXuw!lE)Fqvt1KB zEn1MvLy->CKkqemU5)lR8~tY8#0dUEgJ^v$XeOO1^9abGa3gG@ZeoLewDrVn=DP!1 z`N5~ymKQtw_IsWKQRdsh?5mu;1a0qr}Ny&z!Q=f-b3dqzEEjpZ;PE^3JcuQ^?_%Gyj}~^Fb*AT_Zw_zW;2y2e|?A(2w2< zIn$r)bgT`0nno!R*BRSVd3iQk(xq+vKQsCi{u2JT!&7EbV3!yB;sq4>iyDX}&`8KZ zU(-LFUS6^5s=$-QI3yvV(aEYwDs2knm8(c)N~mYz)2b29T75joVc45FT`itr8y_#`>rjIJ z4+Oz>1z9F%EDLYinm7DaRQHkNtCw>ON6JI!IW7+#e^yekmt&B8h~@6u zkV+x4#V3~wY0rb&^qei*Cx;nOe`Ox0e0Tm=!;2!^>VA;cBG>`;I2tLD$e=8@%dDdQ-Q)r&Dwu!)h@!!hawh5cv{mqapLmcutSjx)s~L^L&ZXb7P51VA z-7FD_K<;!cP%OXZ$#)jyZ{N-_PiqngPc~w<@v=rc#w#mmmAdh#)MpAXO}}sEjg2j* zT~UWtUM7|Ppyv?VSoMG(Q~XR41=47`MQBzej-1Lh`=Q8?(Bo@3*JNX(Yl#_~Etj!> zu0stb0uqY)K5^}lJ}LJP@dwtoF38OieHm3iKw#;Hn3T4vJYMg2+D3sp`(ig(`6D}H z5Q7x*6hLZ!cugz*O%K0oME*Us8|OEWzk5$!Wb~bLv9YE2yB9=IPDnIHG^gxMt)HU( ztpKsPW{ShAouIVlc}q0`-(Hfdtn7!GWMO& zeG9U_QmEc_hKXAj^2+w5W+Z8c!Qqv=+6bMq+l@cnR+>gD)?f+={KTv zHH5zW=v%i&_)sbOKk8_7MV^a+C;(vN`V;TT?N-{2c4IWGEg}fybeE2rTjw%PZvQ)` zwCDBvmjY4Ns)dQ%H;gV-7sAU7FF=4;$?E9}HLqU>>6Is$^!}Fz5kc-3F`ZU&(=vj{ z(Kh29O8uraM=h5}_Ut=WLgaqAFRQYM;s|`~dxNQF?zQx;qc*cXmPo<{nK#l01bi3P z^R;ektN+IVH)_RZ;nOM+Eue5ZrH56c$&eM1cMu}pI&U!ouZPg&j)Sh^!e-LDSlu1N z6%h#JqpnLlx9Rtf*82NqoWK4_(d-a1JSm2Fr0`6Dc&`TJ5b%nIkLcFgI5H#RmCZ7? zXViTtY%r^vF(f=SLMZdlGP7<87_Do( zgTW+J^=<$Aib_U)V-Fs1JGhi($AaS5hLhX2Gk&h47fMuzbx$zLGVvSIDKAeTg1!)1 zqLf1Vo@RwDEITuQ`=z>j1($TvXDd_hWKD1vD4rScGBA1j^ki54@~~jeTsjxlt}6nLJU+zq3NAO-{WfD-AB`Lx7HmjC43?k| z&d*-(zu}UO5G&%lO)NN_-8ITN_e$=2!i_Ad|J96%px(awzu;mmZn>w{2gCA@I<5EX z((y6f?86#R>1PBYjT`AMfx5jwXc;K&9<-+*2K~w<6KMs;#8&?JeCa%|>Lmw8_MCn9 zjU$*hB3P`=;uxH>DB%%0)eyI~_9r>LdU;HE?NzSkf>n7p+nz*+)+SP!o}b*u!rc~c{hNn*?WUVkdI2k47>g~SKKX=) zxEa^e1j_MvHCjWs!dBq#?3YEl;XZ^`O;f8Lx>yFptQ=*i=R4i{^+~-<;VS-Y7W1n2 zt7|bIjOCjdsm{3L`X0$s@TQgqFaak=@XA$z^=>xl9}ej^%FJ%YN@#a$*_nE|Oyo`q zlzD&r@EuZg|Iobt;^auy!$sRt{P)CLDzCRUd{y>4Pf?v^vyLjY#s2vA%LXLowp>

$Sikyu9y3*oGa>C;^uX)JnMiWn?y#X~vd-&_iZG+!t=<~yTdA=gr+~m1??dwn zBh&2D{0lrSl!-}f?@Wd=F1KPnv~>)k{&{7v9^da@ei}tOeKh)^PI~~>;F&C+ZYv8i zp!X|vdTT?)@FzjUMHTdecww}pw?PZ204QC;U_-*VA4-_jbozim>EHP4QSnkFrr^;O zOS;kb-gXZ&>-7YD^Y?p<fVd@8P~~_qV-(D)mBxHZ_-KjzFm3 z(Kn|%wKR166(*Kq$e10E%XcZd*v;%KIrQ_aCey2S^zW}xRhABg?7Hc@vwRTnEkcE= zmTrg1f*SXGzDo@?s|wYQ$yrKy{y|?@q1Gx{brFDiU+B*MxtGO_Ke8|<#_{*bIwxF> zT4?j#wW(Zp;(On4DQP1M0Fu^Lt{A|MvkWdzS};YsgBm3u?2<(w%@$h+-7#@^53fPp1iGsN2a)4XYJT@FB0nqGk6 z=rZR*sN8iqSMQn8U+311%_-=SzhXE>zp zFs@%94Y-u0#8Z23m^<9G)nr;|j3y;KEcdkutOJ?!u>XG2r9GZnUMWp{*;KP@XE3Ck zzHX9f10P=3|i<{{HoRczn&ig5TA$AIQ3VIFT0VU`M zJ0)hIn}ZrvLuD^bTKtO84|vMZ3c7bJi7l>={qN4an$l5jQ=z&a&eA=8iAX+8p9&ex zIsC@uLQRpOzoinRA8^CWGvEW=tS(mAr;a45If$AbmLlGKkIMZo>RG;R|6h|9%BgxC zK|dw@BULnT7*sSw6hPWXfCFh;bg1x8IK|Wv04gif5?sKQm)mKaDBR36J0CfNQ3|of z2=-K!97uV$)EG9f75e2%CySX0J*82t)m{CK=ST+10b=7Bkbx`LSJnooNBFD3KoavN zI7ck{FSW@yTkxPViKt`^NduE(R@k9dz?KzHRh2CzIl8IhN!IN9)<=3XO@%- zUcOapmAKf;s!LU!i1K8E2z9iEhUa0F?Ly>69>FLCV>*FEjsCc(iV7B;EUo&Ph`M8j zm?Pe4=iS=#pV0kvS>N^3V;!*G_fuA8@igeqAs~hb7-{1qAZ`*%p=g#n>)ah;nPuaD z;mcoM`~9vdSUQSnp^Rub_&wpl2$qmSKAsxrSZ(`FdAt^jeiMOu_t4_}ZbT8Ed6ZRy zg#kdyo_4?T;&S<~;Rm{DhRW#WEEwQe;WSTn*1P~D*Zj>Qj?rvHe0It{18VJKsoK9e z23Pb1+S}au-&6L0@y92<-Rzrj+^Y=ofJ!YN2&0EUM)t`E#o8D4&eIApXvkoor8agg zH09M;A&ojazn->t)snb;H^-GDBZuEs4`2h@_NjE(8imk&1Tu7j==u6&oO2Zy@{p32 z^qOfCF9JwhfEh&#EHtq1+M1XSYTZ}){yA+}13uoxqLx4PAJ+tnWh6jUTg@=W>^ia4 zk&*v%{_&}Y%#8+mP7KpR4ydYt^2y%N&jbP(Y4rZJBOiGQb`j@^XKoQAEvi_Sxl-dw z>tTq>i&=+N>}46MrnPj{!38irN^L<;8TrhAk58TJWCh-3#_U4iazW`agda88aNUYo z(J6zwhc-hPYH*V&gVWb2lyNtaNxqQ*R*BJV&8@_o5GyF-!B+=%hi_?eCZRFR_V~HX9)5p}NHUP+g*7+%NpZI1`5`Pr6 zeZt#vx@@(E1}W*l?zPN~R+b~61aX5gEE+$C{>h6nQC8+D2vg&+lC!eBN)ZW}cyA-p z5U#0x%j1LIT{G=3S#Vv`Zgx?^=BcX-pB?2b3yPcr|H(4sgWkH8xibeJ>vhg^0su(Ycw;v0&)^_m7*F@-Y&``@er@iNcgQ|V9-3Q;Y?o;@pt zZoI{KwKAnpjIrazUOn!@Y?ao#wYA5sSaCTDQrAqHkFZQLRlb^Ks|6niGNo0$Q1=A; zQ>0Uet;lN{H7*N24WJFF%!CcIDjGF8hFNz6LC6Ats+78tk;WTg-=wm1QrR}MLszYN zmAjrC&Mlh0`+iW!|B|p1veRpxXuN6%!uWt01mK>vbRxLrj|h@7 zk7=9w?%i&U*|1aPevCx;Xut*$Z8=acey-V4a5Xts;y7cewioJJd6$u9NuTQPg(T_H z(Fnw@t|+p&HPCD;|H^~hVL-0jP3SBrB8q%!u#kCG@uAH1P;mv9;DSqX%29C@Uw=B@ z%bnw0@YVz10EfY=Mndj74%8r=w z{la4QFY66HeZeYvT^n)`dA@n$G9UIPjWfW!AJ!@Ds)%}>M0h( z89*x_zm*jYgb0xUImIDMrHW*&PuBgJjsFvuU|w?+`zN75vA~8n{b&2;25g^`-Jzc0 z_Dv~-vG>@B-kYN7bn0R{gruw56(BI50Y?Y~2x^vxp9ZaJFrI?rxshAfiC4iVGc|DQ zJFk?uNwkQlePJwR;E#<&djGzZ*e*fnmh{$Nk+>47r+U{ln>H;dhpBX(_jp~=bOv5I zt8_9e3tsE_;0IRAWZsLQk0U1|N?;&RSD zARafM_tUfIG&m@P8prXJ(ld)~N~@IxhbhN7N^ZmUfc8wo>pw$blK{M1qcd7+yyr*p zLwk+D-lP|G^UcQW>5r#V$Y;s`1nb@SxIvFlqgk8Lj;)p=`}tzLoma|8)#yJ7hd}n! z<~zOH|M~sXg5;F!P^tlqx4yZvB@Q!4&6Pnz?Zc`PS>|+$p8S_68i^&xgLp5GM?bki z%VhSS&X8T z5<3?PYv(QK)Xh*gwuTG4!s#@E&{$NAw!@Zh8B)l*&f;(b1qMU|FGudvfoq?ig@kj5^ z<#b3rjR%3Hg44u~LYDW#i20+C3Q8Xa_S)S}4;uYSo6>@#fucDRext+I(uCj_w~wAg z?z$3`^6s<@kZyQIgW4Lt&xw3xl}!QVw4>^oeg*ceUi(P&rgt~TULzZHA`uSzi zQJLIncXr@>)esPglKHG3@=tS(WL1) z_Yer)?r5N`I`en;C5)ZsSviFJDbfp(BE^EV6XB1-?&9ARzk7JYm72y>3S>XNR_T+A zHJAn8y(vmO;7mDAPQchYs)9A(Gjg9! zO6*|ij0LV$2{IqKTXL8?cEE@HlTD-BE}JoYOiWbfOLyF(p#|NpBQu!I#|Fe}ERS-OD4rFL$39 z`tR<;nOC)f%)c}k5x_pz#i~++?C**p2>ZjZ%u9|-k6(j zembi;*+?DrWrL!N>Rwf+Fv|^Hn33iFLc_C-^|I+20ue?8anRP(>A(@!e%3SDw$tZ_ z<@B`0`b|1^=>^-Z@QUB>>H^8LF2stOga{pi`3D?7yL{%_|=AvDOMHt5Pq$5uFfYCRKgwTXDu z`65<2sD_?EBZ(ssdlI>jm(WPp{pk6b6H-`bT?A04aj9TgYQf$i9M*kcz?*TB*It12 zOW3DBpGU`oc!`^l<^a@Wta*_9Pj6oP8Opz*D5~ zJ`KKo-AUu#uti+L{Kcny@!6(ACCsuHTJW~uU1sqi1le!}=ge==^7iSvL5p**K zXe4g%Nmk0}6IIi^{HPUC^sN6$DXbex&0fjMvWhvbDaRFCt&F#XJt|`}q0dofmV0~l z9vdk4TD!=t4r#Q7Zk0vc&w_+#r1RiL$^6K1Nz4t9*A9>)Jjv#{4={|_>K8^a53~!? zm{hG9y7Y{5lIJnB(ByXksbG+zg`C!*8M(T7>c;Gmbn0Uu)uRYZElmlT@DGRkIfz7Q zL?fnl>xU=SzXfcTUP9!CpLWkkUu0}HQy%a%SKCewWrDRgq;yN^)z<`zLuh{GsnGAU zQyTDfHP{*hME8I>JSK>2qdLAB8QZO9j;Vy$Cej&D_3-~BgdF(?S=hAMxl@24ZqW&jS}-wJY_eV5)xf4{NF3e;@iwhm>tu?8a#j?@M#_f z3aI2EGzyiFe24^aTKlwII9iHtUD^0V8Y}8GQ~pg<^IFBBGrW$mMw!|}w=eux^$5~N8#Bb&NS*D^L zWzTDl<}66jN9>~EucHuoru)%;D)tE&ee)h<+}t`^GYT<7X!X(jGg5@2Mpx;Mvl5bl zPSO<`{<{|RHZ+Sz-JU;Xhg^rlPau0}M91I$$c|ZWVOc4H0U(y3lV7_=oy1`3C9!Cf zCDBXg+Sa2mI-Wp>_UORU-7f6ViFd;+5aeEtx6KmX;eg_<>$R#WjIS7)HwIicEe7;a z3!ZsVMSsT{R6r0+w7lgA15XixNUK&5j{3*=FI&9=UU6}`?9@{~dOtpSt={1%Y|~(H z@2`)UOYTe&1!tV_M(HMpatGISvIc?o9V?;(>{XB%A(9_Zv|Z|%LVh40r4FA|X6SUW zY7Ww-s-dMzb@Qg{cc`0!q8^Qf#fsKD)nTV}$e0(A7;Lr!*@i|o2%+-E3*PT3QN*Z8 zmKfZ7a)fRXtR#4X0T2Dk)`BVi?4(Qk4_o+{0v~qgo_96%K>fev62o{Dzs6BoyNDUt zmn%Hor<5cpc1Zfjn_RUo!+EG^52=Z~qzM`ve*tKmsl&D-hvXSLC=WKPQZtK^hmO7% zh~2v<^H!6xofoSnwu|(8{8tZ1#{m0z+z>$)d<00A2V%%nEcyuVjmy(+Q86|1E?qm< z4-;D9>)yqDtJM0&549Xtbxc2NclWE43~E?Dh$h}J>(*DJF62&ALwZYnXUmh?49{2= zXu)maeN7+*3_cr3(M6Jf>^pHl!S5Z=k@p9xve_%?aJJ4;wKmH?*lB+E&0gwg!7@Zj z|1%`H=j&3EXL-d4c%qgAL+6$|Jb6`>txTg1q7k!dUku5&>?~*FBT-T({fXT0MvZJU zoq8+lB9LEh=D067BiXU@AH#osCW=r(qwDC@_4dDUg4HzXgw5;E5eO*-_$fjHbr-7p z^}V$1F7tk5rcHWLquA{`M|WMV%Vix6(?W5J_pqNb%K-a3bXg0EG@<~kV6M_vEhvBu z4tU^e-~p4v3Jh5aRk*x6l8j3sdt{}sruGILRCjr((iil;ODp@LlRQJULZ``9Z);8{ zi6bLTat)pQ>Bvx>9iqx#pK#dOt5;nFbgUUPnA`@$yQDJk``7;10Rcd}-MHM_uDOuc ze~tECU}>SvLCRn%m5Fj^JO0aruPHI6uAZgPEySCj7HYtyK^fG{#574D`?mMdocX`2 zfHVXd^CJenfl+tO3HY~2p7U~{JkT+)^s4AJfNm96c7wc7U@#4O6sS%JewJ(3Gse#7#OIu6`7qMR_``WeU{B%jz=5HjUO0`XlA1;+Zc%NZp~#u1p$@OC(qTuW*0bKF*`zYUI_f)G%l z!BKto@A`>d?p$6HU351foFBGt{uuOV(f&6KTUjQZwF_>?bUQhkS6VO>@JYgZDRExDPj}oY@1`KX?!bt;dk=^qm(uE7@Xphd(vW zMInwR`59Y_9AOL>&Xd55sCxI3uGt<8AGMbBi_ZdiJkoO-j0Fm%Hq*M0*NO|!ygdW} zQYV1sS~L*0(8FLfKi{dbY6tdp;Z6NYCG6;?2CM5Dr_$il9jxKulXLl#Q6iKNnR&|V z*~^|8z~fGP%nVS2rzHUo$|dCI3l zfBr9Y;U;pY<3CTPqYwlGfVN+%#!ZJ)$VSSTX$v0B+gs`BkxKJcr={%&4{E~_UqJ_n z_djl(!XtOxvNZ5dvA8bJ0#V?o*;WhdSY)DVRN6xS&o6miOjgB+Xaf6i3YC58%ygkOe5uZpn1B-<{eC-}isHx~lzd6Kp{IXZkTTP!sMHLP{UP+)xhy z6V;F;&=XjqqCTvg1*Cf0`dDd)LZ1iM|3}X$)`Bw3|Hb{-JiPt9Ae@0ur@NLDb!St)vF9Hr6{kk&40s0Y$%$teAe;=+p4PlL%)hNg3wFFBGD3S) zY*w&&^+}73>~Y5MDBbMT`uYzK6Hm6p(5M7^tZ5C&A7J;5$o+po;KaFFCJD)ic`kMt zfhf4dR6@dk{4E@?$$E_LVtp~kN1Q;;~#FBuJF<(0p8M)&cCBW64ttk^Y2~^xm^%xe;gCtP# z&}n6j_p`E}ieB4J*As@*^Rk&%qnt_Tj(XeQyfSplg>8B5$4=lzzYNFxJ8sZIL4(Pg zP8jg_;q*_3Y-a2>Tcpcn7LNYG>ODBRocHw2e>0E?<5G^f8+ zY*SZWrM>PCWIvl3YNSG7tsOSr^z9LWxY|dc@)nAS#EgTvHjNtiT8D}zXT6&W8o|V5} zy2-os9T|(OA2n6jf^&V?XC?n0Z)M3&ET>t@cZfRhS(2GX6`+X(uZWowtK!WN$Uk62 z2Nw(9ZEAq8m!Ox8ttFLKxUp$reK|B}t(hkz=la@$Qilhvo8HmI;#Y&tBm&j*AhSE< zM~88QmDP_&Ir7a*i6Ei9y@1$S-|OV@hm>open6ndoi0ADF;A|v#izyVi+#IZMX&mMT{j3nm_-~w$7E`ZJh$#F{&+dmjXC$z%X!YlXh0QyBBeYYB{`@Pn(M%|SH_yF59JZyv9*h-crPTx3RlaCnWb z)(GuMV@kNO8$b)V)a@@R_*AYHi_c|O@5*2Ppu(kE*aPgL)SdP9d7b7MQ3obkjpx1g7a=v3By4r((jSg!C zuzP-j?hQH*uyw_>UyAR=ZGvXItdp2aKri^u*19|+p9Wf@Q4x$7P7jC2Am6+4!cQ4< zL&u=yszqI$q+0vH2HS>8SB+y%vHsZfuw^0)wJfn>de6&&aI+3*wBpQ8bOQtb3FNz_ z&`4uIz8MdA`%CBvAIc&7jjsl5zv2eW#nh&uZwB=YK;~=af#R3W9##8Viw$vVJq!qq zJ89C7LCOD&2{>dg8K2PJVCEYK2JS#c@-#81>YyRTt%S|O0>KhRQ#E)>pFqc-OnTw# z*xkmG=>jf7UW)5ICdfc^G^OIE#VKT_04_KB{y3QZ%4FKxdMPgo)l@3*3qr*UJpFg~+DRyb`QC$&m z1moM!rIya>Z*TGlDXepz43x|B(s+=^mD+y@!j6vEX<(-8d!Z*a9%A43JuG^cyzQ3- zrS-FKrtkOMR zzb`)zaU!;=L$?J$)#y^?wXose!|=D3%W$=6>IYwOy3koX8;M9%1iLK}H=S+^`}f85 zKb+9@bOPnK&H(nGo1Ct4krWa8?IMaN+fheE)xNTE+>`B5pRz51-Lv&(2ZEpo_R81k zQj_1aZTqts->wB{{Uld{E8!KVa4pt!RM`XKx zIzBHQSiIn1r-wfXEwZ9$+GxBjipGltSx||%`ScB1>L6?Uu!vHqLe2`2n?xryxc!~H zls~m9-@)PShJhPA1UGp6yesvio3ByJGc>Y4;W!p(eE#c&XG8lh?`8iHJ`40&*9u7E zpqOX!v_th0@foPWb+OV!%&EWoc|^80UD%14VCi*(B&rOB94filIiHpzO^sL&sNdE_ z52RHEXF_k^Zo6WO_`Y<08FBoWx1T)S<4*M8m|QfDCn`&|N_1&rtplREF)O1ZL`+s^E;`Wg4-g=TFUf>$ z)M2?x;2yR>Tqzx&EQmzpe(sDUvlzao)(X1?dvZ@5ko zd8N7)lm^O&SPKHsSM|9i?Js_LMn#~vP@p`6RQ)Ds%s)Z$;v6t{he3YM&KSC&DM+8NEdLawYwNX%pFR4ZK=Lg64O;+NCP~h*IP{CXppFyKPyRmbiM@`?;sqh_Y`2Aw%;+fgU zBSmRUM>@42Xzr4QqyrfJ>;s^e#!--g0;HDtUNo}lH8%#liH^Q>-n_Iqs5P|=P~MIG zuZ5jDr%qup#_2%V4;(H*VC&};P9c%cK^x5X0l60b#AhE^p#VPhYbhr6Z38&VI6cy? zKN*W8SAb5C0Xa~qK&R#g%{5uHvYz#Urj>JcKu#EgGNq7pu;{Pf350028*9o@ z3oe^9$Kq~&EehxZ+w(mvrLG3!?hTE_NvI8nW>3`^;-f_=Yb{c5rU zxX`RdW(?8TRs=ZK>af)!v`$PhMAC%}O2PAfrg0%pw`=CyzI<)TBBz#~+QC+@PEJMc zRM$V*x$xX+^yGD*3qKDE!;7r1hlNgV6q)P?mug*5ei@0YsFeP#A)ua^!n1bbt@o|J zYHeycGJ^xmdZdA2&>75%@qWM%x${60BH8sbBk1^k4X6plh{@ge3)k8wALA{?8|qi{C)qSU^<9FSNdc>6C-n0Gfyh1GAqoWT1cG zH|4N-H89XaS7)zirEu;(g%SVMhOk;@QkRfWJsmm*evSf%qyh4$A>lr5x;z@1mmaYR zf0KU-gHZ&nC5n95Z9x4VKEc3Kq7!!zJPw?0-jkT3l>t1LKKeh3u}1@lMcr;XLHR^Lw2FXZey@N&q`tVfI|yafoh_7Rizud ztb&%aQ6~td1gMx2EG0lvTZDqhHX?7^M5>{VSdU-i=hvd+Z+Wce84pqKN-uI|Pn+}7 z+U{Z?xhjC<>5V7|95$zrRe;2DbPO3ccf@izgX)q2zmOoc^=zv_7#}Op6c|V}qL+80 zgsM3J_y#ZC7R&`+tk-3qHjshU%YeN=%dz1xdSD{+59bPF&J|~XT#rZibb!#Bz~bu@ z7iK@DaYvDJFZ6sI$AImAw43GWc9AiB1A51jDYylehk_yS;K=ntYr^OgdLrn1p5mHdoo#(}FxAzmP|X23di> ze|yVjUX}f255C0v@KQeS0#k{;M~lUg?Ipgf|G=u9!CHC=p(rM6MJOHS-=ho@b(jcV zTv#5AKks8Mq|InJb@ZvAesF2O(hk?dP-nf{s(Li=sO&Z@F;!4bnaiaoT<1eBZe+me@?X- z|C0%UL_^ZJljj9VF!{Wq;4Lp>@sf5|an3-mVHbrgX+Rb~FGpzAK}Gn}4{W&Nx$ zsu$-~LF+(t`@y}aH}wk|jL4^tT>kg-Q4H$+u?D}~7PID`>F`t?XS6^H3a4=T?|84e zuKM;Z4^7T2>=wPjy6}ibO#tn4fPfN@NU=CJ?>VqYd#c_Oz-M!Tg_hRIig027Ut{KE zGEmUkgiI0h7{Ry%q7{bbJRdDzy{n zKkQkF@6cyJ9`ay39`6C)C=3c)ZcO^*;NlWU_#DXc7evm9zw)T5H>FR3>;~>IXMx_C zF+glzUt;gWcsW+47kjc#y0PCn34wp}f`8+94+?|nOBQ$J9BWHM7B@VGC0+yIk&)#J z*a?XTK|)ubLaqS42=2WTt8-<8R%X(ii|aWT-v|59y=mhMf&41ncZF`FNGF1dvM*<9 zv%wG?%y>m1=bG#j{mN;LRTUMu45?r!2RV!AAV_wAW@CFg9>{Ch`(OE7SB&8#0223c z9-6n3_38`;^E@|qIs@990b{`jyKyGCfYL3Y;lWr@?g7!jjhLhH330n9kg5{375jE1Xm=$l;0?&OO0<%aMN})}U?? zM&m{EL>(2N|@fD)V(GnPJHUss}^oW&nq%YO|NM%fA2V<$Yt4h>#!>=UAV z;%utx6pd4u*n~;SFH;Zs SYk(R6hzC!Z|5s}0O! #include #include +#include "discord_rpc.h" #include "ui/mainwindow.h" #include "core/globals.h" @@ -20,6 +21,7 @@ #include "updater/updater.h" #include "utils/helpers.h" #include "utils/config.h" +#include "utils/discord.h" // This started as 1-week project so please don't take the code to seriously int main(int argc, char* argv[]) { @@ -85,6 +87,9 @@ int main(int argc, char* argv[]) // Load config LoadSettings(); + // Initialize Discord RPC + InitializeDiscord(); + // Updater g_updaterThread=std::thread(RunAutoUpdaterOnce); g_updaterThread.detach(); @@ -154,6 +159,9 @@ int main(int argc, char* argv[]) while(GetMessage(&msg, nullptr, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); + + // Run Discord RPC callbacks + Discord_RunCallbacks(); } if(g_darkBrush){ diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 612430a..78efcff 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -15,6 +15,7 @@ #include "../ui/splash.h" #include "../webview/webview.h" #include "../updater/updater.h" +#include "../utils/discord.h" // Single-instance bool FocusExistingInstance(const std::wstring &protocolArg) @@ -124,7 +125,7 @@ void SendToJS(const std::string &eventName, const nlohmann::json &eventData) std::wstring wpayload(payload.begin(), payload.end()); g_webview->PostWebMessageAsString(wpayload.c_str()); -#ifdef DEBUG_BUILD +#ifdef DEBUG_LOG std::cout << "[Native->JS] " << payload << "\n"; #endif } @@ -226,6 +227,8 @@ void HandleEvent(const std::string &ev, std::vector &args) } else { g_webview->Navigate(uri.c_str()); } + } else if (ev == "activity") { + SetDiscordPresenceFromArgs(args); } else { std::cout<<"Unknown event="< &args) void HandleInboundJSON(const std::string &msg) { try { -#ifdef DEBUG_BUILD +#ifdef DEBUG_LOG std::cout << "[JS -> NATIVE]: " << msg << std::endl; #endif diff --git a/src/utils/config.cpp b/src/utils/config.cpp index 35d681f..31249b0 100644 --- a/src/utils/config.cpp +++ b/src/utils/config.cpp @@ -29,6 +29,7 @@ void LoadSettings() g_allowZoom = GetPrivateProfileIntW(L"General", L"AllowZoom", 0, iniPath.c_str()); g_pauseOnMinimize = (GetPrivateProfileIntW(L"General", L"PauseOnMinimize", 1, iniPath.c_str()) == 1); g_pauseOnLostFocus = (GetPrivateProfileIntW(L"General", L"PauseOnLostFocus", 0, iniPath.c_str()) == 1); + g_isRpcOn = (GetPrivateProfileIntW(L"General", L"DiscordRPC", 1, iniPath.c_str()) == 1); //Mpv wchar_t voBuffer[32]; GetPrivateProfileStringW(L"MPV", L"VideoOutput", L"gpu-next", voBuffer, 32, iniPath.c_str()); @@ -47,12 +48,14 @@ void SaveSettings() const wchar_t* pauseMinVal = g_pauseOnMinimize ? L"1" : L"0"; const wchar_t* pauseFocVal = g_pauseOnLostFocus ? L"1" : L"0"; const wchar_t* allowZoomVal = g_allowZoom ? L"1" : L"0"; + const wchar_t* rpcVal = g_isRpcOn ? L"1" : L"0"; WritePrivateProfileStringW(L"General", L"CloseOnExit", closeVal, iniPath.c_str()); WritePrivateProfileStringW(L"General", L"UseDarkTheme", darkVal, iniPath.c_str()); WritePrivateProfileStringW(L"General", L"PauseOnMinimize", pauseMinVal, iniPath.c_str()); WritePrivateProfileStringW(L"General", L"PauseOnLostFocus", pauseFocVal, iniPath.c_str()); WritePrivateProfileStringW(L"General", L"AllowZoom", allowZoomVal, iniPath.c_str()); + WritePrivateProfileStringW(L"General", L"DiscordRPC", rpcVal, iniPath.c_str()); WriteIntToIni(L"MPV", L"InitialVolume", g_currentVolume, iniPath); } diff --git a/src/utils/crashlog.cpp b/src/utils/crashlog.cpp index 8d51bef..83fd9aa 100644 --- a/src/utils/crashlog.cpp +++ b/src/utils/crashlog.cpp @@ -9,6 +9,7 @@ #include "../utils/helpers.h" #include #include +#include "discord_rpc.h" #include "config.h" @@ -64,4 +65,6 @@ void Cleanup() if(g_gdiplusToken) { Gdiplus::GdiplusShutdown(g_gdiplusToken); } + + Discord_Shutdown(); } diff --git a/src/utils/discord.cpp b/src/utils/discord.cpp new file mode 100644 index 0000000..a982d1e --- /dev/null +++ b/src/utils/discord.cpp @@ -0,0 +1,166 @@ +#include +#include "../core/globals.h" +#include "crashlog.h" +#include "discord_rpc.h" + +void Discord_Ready(const DiscordUser* user) { + std::cout << "[DISCORD]: Connected to Discord user: " + std::string(user->username); +} + +void Discord_Disconnected(int errorCode, const char* message) { + std::cout << "[DISCORD]: Disconnected (" + std::to_string(errorCode) + "): " + std::string(message); +} + +void Discord_Error(int errorCode, const char* message) { + std::cout << "[DISCORD]: Error (" + std::to_string(errorCode) + "): " + std::string(message); + AppendToCrashLog("[DISCORD]: Error (" + std::to_string(errorCode) + "): " + std::string(message)); +} + +void InitializeDiscord() +{ + DiscordEventHandlers handlers{}; + memset(&handlers, 0, sizeof(handlers)); + handlers.ready = Discord_Ready; + handlers.disconnected = Discord_Disconnected; + handlers.errored = Discord_Error; + + Discord_Initialize("1361448446862692492", &handlers, 1, nullptr); +} + +// Encapsulated presence setters + +static void SetDiscordWatchingPresence( + const std::vector& args +) { + // expects: + // 0: generic "watching" identifier + // 1: type (movie, series) + // 2: title + // 3: season + // 4: episode + // 5: episode name + // 6: episode thumbnail (small image) (Optional) + // 7: show/movie image (large image) + // 8: elapsed seconds + // 9: duration seconds + // 10: isPaused ("yes" or "no") (Optional) + // 11: more detail button link (imdb link) (Optional) + // 12: watch on stremio button link (stremio link) (Optional) + DiscordRichPresence discordPresence{}; + memset(&discordPresence, 0, sizeof(discordPresence)); + + discordPresence.type = DISCORD_ACTIVITY_TYPE_WATCHING; + + // Common fields (required) + discordPresence.details = args[2].c_str(); // Title + discordPresence.largeImageKey = args[7].c_str(); + discordPresence.largeImageText = args[2].c_str(); + + // Handle paused state (optional) + bool isPaused = (!args[10].empty() && args[10] == "yes"); + + if (isPaused) { + discordPresence.state = "Paused"; + discordPresence.startTimestamp = 0; + discordPresence.endTimestamp = 0; + } else { + std::time_t currentTime = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); + int elapsedSeconds = std::stoi(args[8]); + int durationSeconds = std::stoi(args[9]); + + discordPresence.startTimestamp = currentTime - elapsedSeconds; + discordPresence.endTimestamp = currentTime + (durationSeconds - elapsedSeconds); + + if (args[1] == "series") { + // Series-specific fields + std::string state = args[5] + " (S" + args[3] + "-E" + args[4] + ")"; + discordPresence.state = state.c_str(); + + if (!args[6].empty()) { + discordPresence.smallImageKey = args[6].c_str(); + discordPresence.smallImageText = args[5].c_str(); + } + } else { + discordPresence.state = "Enjoying a Movie"; + } + } + + // Buttons setup (optional) + if (!args[11].empty()) { + discordPresence.button1Label = "More Details"; + discordPresence.button1Url = args[11].c_str(); + } + + if (!args[12].empty()) { + discordPresence.button2Label = "Watch on Stremio"; + discordPresence.button2Url = args[12].c_str(); + } + + Discord_UpdatePresence(&discordPresence); +} + +static void SetDiscordMetaDetailPresence(const std::vector& args) { + // args structure: + // 0: embed type ("meta-detail") + // 1: type ("movie" or "series") + // 2: title + // 3: image URL + + DiscordRichPresence discordPresence{}; + memset(&discordPresence, 0, sizeof(discordPresence)); + + discordPresence.type = DISCORD_ACTIVITY_TYPE_WATCHING; + discordPresence.details = args[2].c_str(); // Title (show/movie) + discordPresence.largeImageKey = args[3].c_str(); + discordPresence.largeImageText = args[2].c_str(); + + // Engaging state + discordPresence.state = args[1] == "movie" + ? "Exploring a Movie" + : "Exploring a Series"; + + Discord_UpdatePresence(&discordPresence); +} + +static void SetDiscordDiscoverPresence(const char *const details, const char *const state) { + std::cout << "[DISCORD]: Setting discover Presence"; + + DiscordRichPresence discordPresence{}; + memset(&discordPresence, 0, sizeof(discordPresence)); + discordPresence.type = DISCORD_ACTIVITY_TYPE_WATCHING; + discordPresence.state = state; + discordPresence.details = details; + discordPresence.largeImageKey = "https://raw.githubusercontent.com/Stremio/stremio-web/refs/heads/development/images/icon.png"; + discordPresence.largeImageText = "Stremio"; + Discord_UpdatePresence(&discordPresence); +} + +void SetDiscordPresenceFromArgs(const std::vector& args) { + if (!g_isRpcOn || args.empty()) { + return; + } + + const std::string& embedType = args[0]; + if (embedType == "watching" && args.size() >= 12) { + SetDiscordWatchingPresence(args); + } else if (embedType == "meta-detail" && args.size() >= 4) { + SetDiscordMetaDetailPresence(args); + } else if (embedType == "board") { + SetDiscordDiscoverPresence("Resuming Favorites", "On Board"); + } else if (embedType == "discover") { + SetDiscordDiscoverPresence("Finding New Gems", "In Discover"); + } else if (embedType == "library") { + SetDiscordDiscoverPresence("Revisiting Old Favorites", "In Library"); + } else if (embedType == "calendar") { + SetDiscordDiscoverPresence("Planning My Next Binge", "On Calendar"); + } else if (embedType == "addons") { + SetDiscordDiscoverPresence("Exploring Add-ons", "In Add-ons"); + } else if (embedType == "settings") { + SetDiscordDiscoverPresence("Tuning Preferences", "In Settings"); + } else if (embedType == "search") { + SetDiscordDiscoverPresence("Searching for Shows & Movies", "In Search"); + } else if (embedType == "clear") { + Discord_ClearPresence(); + } + // Add more presence types here... +} diff --git a/src/utils/discord.h b/src/utils/discord.h new file mode 100644 index 0000000..7a25142 --- /dev/null +++ b/src/utils/discord.h @@ -0,0 +1,7 @@ +#ifndef STREMIO_DISCORD_H +#define STREMIO_DISCORD_H + +void InitializeDiscord(); +void SetDiscordPresenceFromArgs(const std::vector& args); + +#endif diff --git a/src/webview/webview.cpp b/src/webview/webview.cpp index fa0ddab..cd15a47 100644 --- a/src/webview/webview.cpp +++ b/src/webview/webview.cpp @@ -267,7 +267,7 @@ void InitWebView2(HWND hWnd) if (!settings) return E_FAIL; if(settings) { - #ifndef DEBUG_BUILD + #ifndef DEBUG_LOG settings->put_AreDevToolsEnabled(FALSE); #endif settings->put_IsStatusBarEnabled(FALSE); @@ -392,7 +392,7 @@ static void SetupWebMessageHandler() HRESULT hr = args->get_MenuItems(&items); if (FAILED(hr) || !items) return hr; - #ifdef DEBUG_BUILD + #ifdef DEBUG_LOG return S_OK; //DEV TOOLS DEBUG ONLY #endif