From 4f921d7beb718723e19bffd94b2b72399a2a7bf3 Mon Sep 17 00:00:00 2001 From: payalcha Date: Mon, 12 May 2025 02:21:43 +0000 Subject: [PATCH 01/10] Coverage script Signed-off-by: payalcha --- .github/scripts/coverage-report.sh | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 .github/scripts/coverage-report.sh diff --git a/.github/scripts/coverage-report.sh b/.github/scripts/coverage-report.sh new file mode 100755 index 0000000000..1e9ae5a2a3 --- /dev/null +++ b/.github/scripts/coverage-report.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +set -Eeuo pipefail + +fx experimental deactivate + +rm -rf .coverage + +python -m pytest -rA --cov-append --cov=openfl + + +python -m pytest -s tests/end_to_end/test_suites/task_runner_tests.py -k test_federation_via_native --model_name keras/mnist --num_rounds 2 --disable_client_auth --secure_agg --cov-report=term-missing --cov-append --cov=openfl + +python -m pytest -s tests/end_to_end/test_suites/task_runner_tests.py -k test_federation_via_native --model_name keras/jax/mnist --num_rounds 2 --disable_tls --cov-report=term-missing --cov-append --cov=openfl + +python -m pytest -s tests/end_to_end/test_suites/memory_logs_tests.py -k test_log_memory_usage_basic --model_name keras/mnist --num_rounds 2 --log_memory_usage --secure_agg --cov-report=term-missing --cov-append --cov=openfl + +python -m pytest -s tests/end_to_end/test_suites/tr_resiliency_tests.py --model_name torch/mnist --num_rounds 25 --cov-report=term-missing --cov-append --cov=openfl + +python -m pytest -s tests/end_to_end/test_suites/tr_flower_tests.py --model_name flower-app-pytorch --num_rounds 1 --cov-report=term-missing --cov-append --cov=openfl + +coverage report + +python -m pytest -s tests/end_to_end/test_suites/task_runner_tests.py -m task_runner_dockerized_ws --num_rounds 2 --model_name keras/torch/mnist --cov-report=term-missing --cov-append --cov=openfl + +python -m pytest -s tests/end_to_end/test_suites/tr_with_fedeval_tests.py -m task_runner_basic --model_name keras/mnist --num_rounds 1 --cov-report=term-missing --cov-append --cov=openfl + +python -m pytest -s tests/end_to_end/test_suites/wf_local_func_tests.py --num_rounds 2 --cov-report=term-missing --cov-append --cov=openfl + +# python -m pytest -s tests/end_to_end/test_suites/wf_local_func_tests.py --workflow_backend ray + +fx experimental activate + +python -m pytest -s tests/end_to_end/test_suites/wf_federated_runtime_tests.py --cov-report=term-missing --cov-append --cov=openfl + +fx experimental deactivate +# Combine and generate the final coverage report +coverage report + + + + + + From a161db91c750a6e9f56f537081ab159de82b4462 Mon Sep 17 00:00:00 2001 From: payalcha Date: Mon, 12 May 2025 05:45:40 +0000 Subject: [PATCH 02/10] Test coverage Signed-off-by: payalcha --- .github/scripts/coverage-report.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/scripts/coverage-report.sh b/.github/scripts/coverage-report.sh index 1e9ae5a2a3..b74599ec5e 100755 --- a/.github/scripts/coverage-report.sh +++ b/.github/scripts/coverage-report.sh @@ -2,12 +2,23 @@ set -Eeuo pipefail +pip uninstall openfl -y + +pip install -e . + +pip install -r test-requirements.txt + +pip install -r openfl-tutorials/experimental/workflow/workflow_interface_requirements.txt + +pip install coverage + +pip install pytest-cov + fx experimental deactivate rm -rf .coverage -python -m pytest -rA --cov-append --cov=openfl - +python -m pytest -rA --cov=openfl python -m pytest -s tests/end_to_end/test_suites/task_runner_tests.py -k test_federation_via_native --model_name keras/mnist --num_rounds 2 --disable_client_auth --secure_agg --cov-report=term-missing --cov-append --cov=openfl @@ -17,7 +28,7 @@ python -m pytest -s tests/end_to_end/test_suites/memory_logs_tests.py -k test_lo python -m pytest -s tests/end_to_end/test_suites/tr_resiliency_tests.py --model_name torch/mnist --num_rounds 25 --cov-report=term-missing --cov-append --cov=openfl -python -m pytest -s tests/end_to_end/test_suites/tr_flower_tests.py --model_name flower-app-pytorch --num_rounds 1 --cov-report=term-missing --cov-append --cov=openfl +python -m pytest -s tests/end_to_end/test_suites/tr_flower_tests.py -k test_flower_app_pytorch_native --model_name flower-app-pytorch --num_rounds 1 --cov-report=term-missing --cov-append --cov=openfl coverage report From c5a290e34052c07e699d45ac8ee17468c2687778 Mon Sep 17 00:00:00 2001 From: payalcha Date: Mon, 12 May 2025 05:46:07 +0000 Subject: [PATCH 03/10] Test coverage Signed-off-by: payalcha --- .github/scripts/.coverage | Bin 0 -> 53248 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/scripts/.coverage diff --git a/.github/scripts/.coverage b/.github/scripts/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..0e23bd0216d5effde98982594d9c927b0dac6adf GIT binary patch literal 53248 zcmeI)O>f&a7zc1EX|33?;SNC{1UZD4%`s}bHFntBVav80x)tcU1>0f3Tw10RZI#ewz#Xt9Cbx-Va|jn%^7s%AZE_r^b_JxBge- zz0H5>UiFX7zb#pH=mItfKmY;|c)JB=PwSSwvtvI0HI~DPibLtBP`@|6`1bJN=ujLT zeE#@Q=yPJfCTQz+#eoQeb1_w+7`qcCTz}*`GIsrA5ud0$brPu&FLZQ{mO4(@OY`&I zz#UPpSRGRl)6n%~cqx8Smz^|0cDGnv#QFpkqTFMjQ;7X6ds~ERtU~2GD$=#scSr47 z`^9fH%ih{DuT8`3w5EKBvzwa8`xpAd?UQY)=*i`xIxc!&g@M!q#=PV4L^-jK+DPP{314&~4{j)PS>SLKa^tg)}%H@Ea<(cY!*%*nY&b*{vB zPZKro{EjGccG70}K}T>SC<5Nytk@rInFd9rx`<9E^m%I_lQ>9^2h{n4KE2g{e`mw8 z_x8-I(=yBk_Z<{kcB6wcn*WIN?@R?!=Tw4fU zzxq=dpNN}v=hIa2*4>Kz$@Z#>a}@@Cey_avaV@R#)lRDK(WK9>^`$EFnWD;HtIO`0 zoX~7Cm2OBwmgZo+0tikxl9X5ugCtJlmk-nMy$4pJk1}` zpv%V>?RcK_N7;JC%djq$=6)WWd>=iDP)5g;uBQYiNh^~E*13#?6Dqn$YiYZ+{;DwG-Wv4zoxdgXw`XIv zXIl3C`{pdk2BV&51`#dlp3JMA9j+|}$+e3`ygZ=^mp<(*#tGXkaPXnN15a+c2ZvfA zPnCVvskQkFzS;cGpdV}yfB*y_009U<00Izz00bZa0SJ^&VBK6ZE&cufrO|v@z6PR2 z5P$##AOHafKmY;|fB*y_0D-quplPn}+Sy+M_@MV;?_rG~%;vua{a}Lt1Rwwb2tWV= z5P$##AOHafK%h(lwe{U<_J;uJKk&a-rpBQy5P$##AOHafKmY;|fB*y_009VG7vSgr z^q>A=g8&2|009U<00Izz00bZa0SG{#!~%H!U*gV1(;xr=2tWV=5P$##AOHafKmY=n z0G|IN6d(Wr2tWV=5P$##AOHafKmY>e7r^uX^7k=X2muH{00Izz00bZa0SG_<0uaFS zf5ZR;AOHafKmY;|fB*y_009Ua$V yfB*y_009U<00Izz00bZa0SJ^|0MGx+-^XYn1Rwwb2tWV=5P$##AOHafK;VD6E)*63 literal 0 HcmV?d00001 From 25b5c7368870a5a90eda9b63577bd0d040de8bcd Mon Sep 17 00:00:00 2001 From: payalcha Date: Mon, 12 May 2025 05:46:36 +0000 Subject: [PATCH 04/10] Test coverage Signed-off-by: payalcha --- .coverage | Bin 69632 -> 376832 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.coverage b/.coverage index db6cd5276e3e870312842c2270c0ef603287a239..03cefd500d89a11c55d6c4e856496a244826434b 100644 GIT binary patch literal 376832 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%0A5#TWK=dcXC4geiVcdGGh$ z=Dila{`0+Ocz1a>dXK~mzb5ZA?^y3ZtoTi@*Yl(2Q_owN;PzQa@6=8i99j+oQ z@uK5ZghgVMYk|lrHdoS+R_u!^zZsH=eF5W$VV|#Xr+pz~En=U`7=M{RF~(npYm-PR zHrFPRQ*8F0AT8PFRl3MzPO(`$FDDh7#q)Aju~|GXrw{wLm0zTsS?n|Ri|)5iR}s>Q zeVU4pLTv5_E_d+Q+$&se;jy_pSho7?v3IMVL*tLlJ;vqSV{`wpZ1B0+=I-EfyN}I% z#O1agdx!e<{(O?nO~vIVADf$l%UwP;H_(;ad~9x@EBE=>+(1`u^s%`~uH5Nkb30wR zyT?9Gy=kOtn=2FLHXxf@?aHk`_Oa?pwENiHI9%=ovbm|a-2G#(S68C_$L2v8<(40t z$7z(if$X*FO6Ybr57#KS0NFfTqulCauT)o}RmWbYBJ}FmOZSUTvR9}GtvmLT{i2iX z>&$X;Ce^r8pIK8*2yOoa*9cIr{c%VI>@sNRb3**59?YWEx&ak;*6zxRzLUnwY%?=uL5!r3(_z=5U z;lcJC#$ATmP4Xj#T9IrNvXgwGx{J*gGBgF*Z1q7`kj+*fv<2C0OG96fJ&S)9U-df1 zdc>|}9MGXB^V(8H`29p3WE)FpY5_XdlAZ7qF)??)2GgRX`t;-N?TTTE%Q0 z!BTz{w7J}cP9nRe^5bYFvYExuOJq;t<6*;|z&I4P*~Ne!B6}Pk7o9e{9?(T(kLBZF zs4a#uy3Jx)HsKI3(X@&IqX|N2a~P-ElaoA^MGa~Tm7u5+v?xNpH;n%q1)=;jp(*| zP2IND@1k3_djGmcM6-*L|F?Kb-;=A5wI?q2!XIlH#o-5BrOZg*w8W4qmj z@%G(z4~0*#s}$a4I|}c#QFxO}7tfsSJ8bq~%-P;)8+?58yLOcE@tbX%@v7r(i}A`; zw#j($c00njC26z2V$R$an>`hCn&;Z=wU{%f*%o|#ajZL#4j1c zo%jV~xD!8TJf_C_PT{fEXN*S;vOZxva+LKkW4LYq!5D7Ij~K%(`5|MtB|l&cXYc!r z;p}~n@t`r*rwR|Y-eo+Xm-RN|{sXMH829UMy~((5KkE&~efnCjGlrx1HO9RLS??&^ z+j^DpLA|V37{dqkGUILsS}!q%JM2ZqaEHCX*y&&oPDz>{-T^Z9T)-w5+EY z!x8orW8JWxWDFPB-xpXeXv@8x&=0z3bGh57I=`=0Ra_1)sT%9rx}$#yKkLu zIi~;B`=T3HW{Z1o#A&hv$WBv3K2|aCgiK z=+M5>-qoJh9)e2%`|M&;z)9Ni*co7fR)*)i58OG(k|)s?6vMcE_P=K87g zfatY+&h?|~rzm^9+FajvMx*QzYeUQ3k5P7owV_b+MU~Z!(j5i)@Kgf9f)%N|2*XHc|7_V7t-^+OUdix&6i?`jEl#5@p+7+2s;tqh8tO61`Ym32RG~je2EoOO%azWe-f0 zEq!IHOO$PUWqV8XT=gpOw?x^tS2nmr*|t}9xJ22gS9Y~Tc{yCRwM1EKDEnHXtTmLq zEKxS&m2ECjRvyaMmT1|Uhb?%doh8arL)pU;JypFim{_8`SC90%L|KK9mX=hM)r7La zCCX|-+0+tcO`_~-iLxe9wzWiAlPLRIqO3HOjV)0Y7s_UqD9

`&^=|P{`yCJ%c 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ᡟxMN)Cp5D~B?|Tw=jT^2>hPltFx6Ui~yZ5`f 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%0ANL|e*P+Y*&&*v@&CrinQB|>5Z{W13s@Q9$4|85c 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 literal 69632 zcmeI53ve7~eZarH-Fx5eo~*YeTkD4`$$Fe*`GI36mSVfHiGyQ^gOMM1tJBK5_;jn> ztt=_T^{vT}w4pFKGZae5937aXg+hjw=_G_$la#hYOE3v3ObJ*iOb9rDJAq7zW4r(F zyT|UykCA-m0QP^SyZ=7E@BjFHkNx)ByW0=!+7UA}Wmr#+s)o`_f`sEppP~>#eDJD( zSAKEBijdy`$=TK~x9THZA8ixmyGg+HS42J_?vy(NkBTe&-wTX-|I+`MTlGfa04_)X z2_OL^aAOlNcLm(F_4VAbBZfK{*NmhZ)soqFar67P_TRNtxvT%y9b1*`KBd*Cz|z^N z^eahyLK)MN%5W^MDY3**EUFr@#6iUv(ekOsQ`!(c(ZN1A)zO4qEI(Zf$A%!6p&bMj zW69X4nw(M&X;U36LC%_?O&Zx9phSxuOwbfcYc6}6lGKK^q?U+ksjL^Rv7t6!+eeQ2 z+_jaJ+=Cj6NlixK-(M6B?65-FJ`9SYdUA+*KbTY#(Ge}xp{RujqdNFGX=I~K>Z2h; zSK_e*3p0_588JPfXp>rW+|Y(D8DIy6mR|s#JsQvzp#ep*Idisbbgaym$eBx?%RCIu zCGuvUZHJ-o!#(g8 zc%Z`Lu5D`K9=w-T6pAN27&B6Z6>m|cDeS&X)uG2PUvFqDDXt{66~*Id>_JI@|cwXx*TyzkUgsTiDA>1iu?wy1_?#6~rRCSlI7 ziZ!98lxR|egK#cwYvHd{4QOeFd+0m8O7_s9oY};=Yunp7b3E4=v;9ms1t;}UHSczA z(@|7OW*xNZ%TDNUVYFkfCzPEH2i?qCpq*Q`1P8Me@~LuT9bcOWUUKqT0{^%m0VIF~ zkN^@u0!RP}AOR$R1dsp{Kmykv0iJVkZhHOikY|YeYk0#22_OL^fCP{L525CXgIDxWL|nc^^+rS`WLK$Y%A78ykzEt36I!TE{KAAHS7zn zR=6d-u(G8$m_GHJ^RG6YcX~*sk}T3A-GsP!Quo@0&&aM-kVIPLarIEy<2lsrltnfVpOg(Df$OVWKrAwdHF zeQ-1lF9I&Ir4Lj)3hcy$LaIR`&oXDI!YXz(xSaEVxBR^}RIs3qlhxDZzVcn%1CDS~~fYmr*yCWky}C z@={n;mMR=*62OPFYYFU-mdv;nkU=FPH#EV@dzx6pgzO0l;8Z*xo@X%}T(Eei@;=uh zns1TfX{37^XCC>jtAXxmP&yWZ99Wn+-Ql_W80mYU-$lNbh8PI=#tN#hkMx0yjbw~W zbMAUb9jwnRbJfx8b(xx4kX^NzQ*R6RANaxVPlUi#Xf#1r4Lx3?EUgClXVsa2(9o^4 zDuiO;p-PeI2H^4wju3suUj=FEsvt`EtE_~L*2+w8P#}>saXi%TA>5J$uyf0TOgp59 zMD!nAN)uWp1m5B0u7D)LicIrxkT#qh!OSh^PTbF@y`JYBjhrJu6QyZF;^4TnH%R=j zRkIQHNbsUd4K3(bL3P>-sOf(icCf`kZUq_Xb222;WC{-ZWH4AGN4O4B>6Ku;O3I8W zLYD}u2gFPl*G)Q}UGoqDRC0ap0QEbN;dc0`-*x`X(fu2F zvYMPCE66!+`seW@_q_ZQ2PlE$@cQw8JvOiboPq`SS9{tczPfF0 z>PyglMz0TUd-na)=M}Q@3+D&+Z1gC%y!cEjd95PzW8Y-!%u#N4`ofoIoYUKOPA@wX z`f7ULwC&3iB+qZ=;>jiyPJtnh>5N)COSKr=;&agy`71bE176(W1_W{iIx^7R;*y6 zxtWRO%b8fVjESX7nOL%f2?egI!NH~`CKfMdV$mWd8XK8tXkcRDLMH0#nW(E{qPCWa zni?jmtC^^(VxqE=i3JOosHk8f7-T}0nUEwVM3IR=fC;~!37?M%ua^mrhY2^E6yRJg zw&ip(AqY(HJQEIw0Mh~N{(p8B>V~a)7&sC@0!RP}AOR$R1dsp{Kmter2_S*%o&df7 zkJta#eKBKzNB{{S0VIF~kN^@u0!RP}AOR$BgA<_N|Hte98@v)=_(%W=AOR$R1dsp{ zKmter2_OL^aNQH|IUXU6+zUj$Lzbm~m5jiz0v`*6{4aSL-B0@`J@-ph;#bA(e1+qm zT=ycfKWc{g}oael(NolFZM{xtstugUmL z|983m3<>7#r9U@vEU6oMRF9`ZL$RbrpE?;H8(bBp50QjNMz)3pv;SHd0sSpdg_c~A z+djeEPzDF$YE+|-%nXg?*TDLky@I*EoXW%DSR!VG!=QWh0m0lHjgHU6@^m_uYFm>HlxOHw7y;0s zSAxBP#boia$3bRc>U(b7%=ejfW=mG$Ms%1`O=`nxY?28&?cJG8p071UB(9b3 z6Aa%fnC>}2$b~;{#Nsg{rlmr3jm~f^zj_tM)R;z9EZZ!Y-mCK>I-*4nQ5{RS3Z{5< zI&8IK$$W#creyOx+UM(trDBk_bePYDa28*^7F#%r$}`z-6*`**g!0!DlzCNo=HxB) zDI=+=qv52Mz2^faD$8>{Zkfp4Q3&UYYe9Kt6Kn>wls=w}vWi_%p7~Kr`KV^7^fXa$ zKe%5oZ=O%JzjT*jS8cSlVrMQ;G}b-qJm{=B4Sa!4Q25M@Q5|LW_s> zLLf?cYU(UwMXcHm3g)h|$5XiZnbMMQnGY>u<+Zf~v+pn>0Xr*Vg1Niw@z`!$6(VY; zpZ{+saQ*)v{GPugeM?G7mEu>#ZGkre4+pyZFZw6^4Zd&s_Il5IKj*#4^CQoPJq_-s z-1}YcxQ@HlI=}DyI8460Di}f+|4aUHe#r5*EmD^5HJBYS|iQ7vyVKFL1VY}0LpaqQd zUn3*5JXT!O@+dU2k!G;7yW}`#mHVX{S^sjdG@nXpb=vt#+Q00oRpdu{w=M-0a~kJf zG~O(X^tLPk9pXHgS&`UIKZg|1vUeU@=G5XYbNbPmz}U``jahBNR>HPcv1Rc*$yf?) zL(eUXu3C$YZ=?~lY`tb7LmM4v01NBOXu;N4w}b^m{V73kkoa`9SS7%PXu z6_{EH>PtVLTk0>q0t+ty6Qx&B%f##}u)P&vU_%)ZC2dz=5qQ2>8EUBI{Y6(``(&_i za~a()8chvIpuO}?&hp<@_dg_p?sX-5ZnZ7z{{KLrEN)w>ZEo-NgYMGni#3&MzyBZh zf%4L8`z+-)?+3hPA!8Y^=^pZc?mJ2@(Bhls`K`kJ|EL?Rls>@E>%H{-{{t>CQhL8% zY{Z7@PABMZE*X_g<81m59qnpf_^{r?FLB1p|8ZGi+g|8XKG(mwH=_`GNaejPX-SOdFpK>|ns2_OL^fCP{L5Ozi^2rBA))6&EISY+p#-(+MWll+AY=bkpAfb+BPBs!OedR-?6l^vv1|DE}YE CPrS7N From 8230c3c6fffb56bd5f1543fad220a40620f03c9c Mon Sep 17 00:00:00 2001 From: payalcha Date: Tue, 13 May 2025 13:54:12 +0000 Subject: [PATCH 05/10] small fix Signed-off-by: payalcha --- .github/scripts/coverage-report.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/scripts/coverage-report.sh b/.github/scripts/coverage-report.sh index b74599ec5e..41a0e86d8b 100755 --- a/.github/scripts/coverage-report.sh +++ b/.github/scripts/coverage-report.sh @@ -2,6 +2,8 @@ set -Eeuo pipefail +rm -rf build + pip uninstall openfl -y pip install -e . @@ -38,11 +40,15 @@ python -m pytest -s tests/end_to_end/test_suites/tr_with_fedeval_tests.py -m tas python -m pytest -s tests/end_to_end/test_suites/wf_local_func_tests.py --num_rounds 2 --cov-report=term-missing --cov-append --cov=openfl -# python -m pytest -s tests/end_to_end/test_suites/wf_local_func_tests.py --workflow_backend ray +python -m pytest -s tests/end_to_end/test_suites/wf_local_func_tests.py --workflow_backend ray --num_rounds 2 --cov-report=term-missing --cov-append --cov=openfl fx experimental activate -python -m pytest -s tests/end_to_end/test_suites/wf_federated_runtime_tests.py --cov-report=term-missing --cov-append --cov=openfl +python -m pytest -s tests/end_to_end/test_suites/wf_federated_runtime_tests.py -k test_federated_runtime_301_watermarking --cov-report=term-missing --cov-append --cov=openfl + +python -m pytest -s tests/end_to_end/test_suites/wf_federated_runtime_tests.py -k test_federated_runtime_secure_aggregation --cov-report=term-missing --cov-append --cov=openfl + +python -m pytest -s tests/end_to_end/test_suites/wf_federated_runtime_tests.py -k test_federated_evaluation --cov-report=term-missing --cov-append --cov=openfl fx experimental deactivate # Combine and generate the final coverage report From ae6425db256833c89571c3da51dc1a2b2b08a215 Mon Sep 17 00:00:00 2001 From: payalcha Date: Thu, 15 May 2025 09:46:18 +0000 Subject: [PATCH 06/10] coverage Signed-off-by: payalcha --- .coverage | Bin 376832 -> 409600 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.coverage b/.coverage index 03cefd500d89a11c55d6c4e856496a244826434b..d4dfa752f91ab93dc843e9f85527fa52ec179a13 100644 GIT binary patch literal 409600 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

cStMC1QWRT=z+)AuwGM$bD^f=} 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

|l05zxUL?nXJn?v5Aise;;Y3~_w}D)A0xyu) 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 S+RL}2J<8%!t-VnvRR0GQCe0}T literal 376832 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%0A5#TWK=dcXC4geiVcdGGh$ z=Dila{`0+Ocz1a>dXK~mzb5ZA?^y3ZtoTi@*Yl(2Q_owN;PzQa@6=8i99j+oQ z@uK5ZghgVMYk|lrHdoS+R_u!^zZsH=eF5W$VV|#Xr+pz~En=U`7=M{RF~(npYm-PR zHrFPRQ*8F0AT8PFRl3MzPO(`$FDDh7#q)Aju~|GXrw{wLm0zTsS?n|Ri|)5iR}s>Q zeVU4pLTv5_E_d+Q+$&se;jy_pSho7?v3IMVL*tLlJ;vqSV{`wpZ1B0+=I-EfyN}I% z#O1agdx!e<{(O?nO~vIVADf$l%UwP;H_(;ad~9x@EBE=>+(1`u^s%`~uH5Nkb30wR zyT?9Gy=kOtn=2FLHXxf@?aHk`_Oa?pwENiHI9%=ovbm|a-2G#(S68C_$L2v8<(40t z$7z(if$X*FO6Ybr57#KS0NFfTqulCauT)o}RmWbYBJ}FmOZSUTvR9}GtvmLT{i2iX z>&$X;Ce^r8pIK8*2yOoa*9cIr{c%VI>@sNRb3**59?YWEx&ak;*6zxRzLUnwY%?=uL5!r3(_z=5U z;lcJC#$ATmP4Xj#T9IrNvXgwGx{J*gGBgF*Z1q7`kj+*fv<2C0OG96fJ&S)9U-df1 zdc>|}9MGXB^V(8H`29p3WE)FpY5_XdlAZ7qF)??)2GgRX`t;-N?TTTE%Q0 z!BTz{w7J}cP9nRe^5bYFvYExuOJq;t<6*;|z&I4P*~Ne!B6}Pk7o9e{9?(T(kLBZF zs4a#uy3Jx)HsKI3(X@&IqX|N2a~P-ElaoA^MGa~Tm7u5+v?xNpH;n%q1)=;jp(*| zP2IND@1k3_djGmcM6-*L|F?Kb-;=A5wI?q2!XIlH#o-5BrOZg*w8W4qmj z@%G(z4~0*#s}$a4I|}c#QFxO}7tfsSJ8bq~%-P;)8+?58yLOcE@tbX%@v7r(i}A`; zw#j($c00njC26z2V$R$an>`hCn&;Z=wU{%f*%o|#ajZL#4j1c zo%jV~xD!8TJf_C_PT{fEXN*S;vOZxva+LKkW4LYq!5D7Ij~K%(`5|MtB|l&cXYc!r z;p}~n@t`r*rwR|Y-eo+Xm-RN|{sXMH829UMy~((5KkE&~efnCjGlrx1HO9RLS??&^ z+j^DpLA|V37{dqkGUILsS}!q%JM2ZqaEHCX*y&&oPDz>{-T^Z9T)-w5+EY z!x8orW8JWxWDFPB-xpXeXv@8x&=0z3bGh57I=`=0Ra_1)sT%9rx}$#yKkLu zIi~;B`=T3HW{Z1o#A&hv$WBv3K2|aCgiK z=+M5>-qoJh9)e2%`|M&;z)9Ni*co7fR)*)i58OG(k|)s?6vMcE_P=K87g zfatY+&h?|~rzm^9+FajvMx*QzYeUQ3k5P7owV_b+MU~Z!(j5i)@Kgf9f)%N|2*XHc|7_V7t-^+OUdix&6i?`jEl#5@p+7+2s;tqh8tO61`Ym32RG~je2EoOO%azWe-f0 zEq!IHOO$PUWqV8XT=gpOw?x^tS2nmr*|t}9xJ22gS9Y~Tc{yCRwM1EKDEnHXtTmLq zEKxS&m2ECjRvyaMmT1|Uhb?%doh8arL)pU;JypFim{_8`SC90%L|KK9mX=hM)r7La zCCX|-+0+tcO`_~-iLxe9wzWiAlPLRIqO3HOjV)0Y7s_UqD9

`&^=|P{`yCJ%c z@y27LYZ-6Y6kV_I#^@Tx%TJ6R&3NgJ(bbHXERC*WeE5>+O2&&1j~>PNu*K2;gT42T zlA_$+Mysk*^;=y%PBRG7J>5ta81f7QGXp~&lH@RhASe@XrjO(8coxphT_n{`n)vtsa84s)u&1T$paA+pu-XDc# zFz(emG@Wt#zM-j%TeS~OW*iz3nxb&4&?Lqsq0mIec1dUgnE4C_qT``zr zLbhUX$Akh$u&+Wv#o*NsSx2ychDsEJT_)sL3@r&lrebjJhkS~`WfKxdu+KwY#n7W5 zHUhq2vGXK5$vC(1;yZi zEj_Fleh`%YM=@AtN`E_oy;=IJV(`|K{;n7dIi-Ic!QL+Y=^rhu*rW7M#bB^0 z{g+}e)s+6E7+f`_KPm=WP3aGc!HZM+vtn@Blzx8%d#?1`7FHZs`ki9%)|7s&7|b=L zUnvH6P3f14!Cq7Pg<|m6lpazH2Ak5)6+=P1^fSd^u_^uZ2=-X0UNJZYLqm^XkC%R; z7z{Y2A1ek2PU%NSut!QiXko?Sr5`E=-%aU1)mLTTj?#l_31*wpcNK%%rt}@fV7DoK zTQT@;O5aiphMUqi6@%lZ^bN&etSNm>F_>veUvUBlxoJvYW&#gQDJKtLqA7iW{QvFH zz+L(OA1m2gk|?>hPUCTQ6O`)Bz64`Sxu6ZSpLwf|lA-_W~%p*<6x|H0__ z7qySFjleH~LxFeDxBnry{cj0e7B~-G`t9F@9$;nG3##Y zcIzrQ{WoFC-#lxwHQXA2ZhvhpA^s!27azgr|D@P2a%hclmADZ1@ay69KT%84I z3eW#$?9M;M*Myq?NZ%mb%Xjp(_1QiHzW;B%AA8^OzTkZfmH&+QX73f=3sC!C>s{iV z>z#@|{I%Y`xT_C)kMepve|mm^1K?fH%btID?(^h5w|TDiT!gL%r+b!p=6hy%8sPlz zh295c9v>$9edqqjeZc)RTmU)u&F;(4`Cubl0RO$`{~lM$bv>pLY;~=3Ep|1zCc5h3 z0O*1YK>#!Sel|Wg-Z5S<9zoxQ+fo1DX`E%OHcmEXI$i%c5g?M%-(+de!yuoO{w51f zyXQrc{7r^oHCtSg&7mI2dn}5RCnE3YZ;2$ipNPDzzax_5f0C!YEt2Gb0x9&T)5rrwE6*3k ziX^$9h&-#~Js=+xk!N)Lx5)`b^Eszz(d{URx?Q}hJ)h@`YmRm0eV z)1-B(8cxQHNJ{HewQ(!GZ_+wdjfohyilnqoRU=t;lSpdv?;PG>TrUz^oLBuuv9Fmp z8${PD=cdiXSrVq_nu#+doN`9*^f;B;nY{%)}`Y zq6b}Kp@b7Anu(JoM7Ny8NfN@Mm{=eode9~2ONbtHi4!G651qt32}h1G6LTdTKGIB_ zAmL-f&BPoD>!+ECCJ7H#nu$gUht!*i*%G2fPGXjXXpxhcDdFH+GciNL>cM7Wx`ePk zCZEcg}b#T>af1<&`Wo`V4F%B-Z{fW^IKC0B880FxSqx^}H4i1+1 z6C)gKm-!RJ9c%^tiD3>NUGyjF9qhOKiJ=beQsqw!aj?(tPt-Zs>+>gS9qjS?6EzNo z(=joau%T@|UAxtv7$g_AHl1!Is(}qGXm9G8l^DqE83;h4ikPl#)rS_XL?tifv}dfu z0A{ypIe(%*7~Y+&u_k|_pMxVYf1N(aXVYkMSoe9DHUZ92~%>(%HdQz@O;kU>FS( z9Ubf!{zL}{n|NoBb+FI$C)zuh-sPBs-FTOy4lcT_L^&|MnYyMAH51Ye>#F|AOh`AZ zt2ZuIQhZ%^_3UjXNbdpBi!ecI57@1TnINqP#OT@tDLr84u4aOC9-#X%D)?LH4~)lfS6d8AYBK?bHL>*&4jeU8t6QhAT7tyTbGH1m;V2{wo@O33&tbgjGcOA;Y%yw zW;Q^tv=Zo9MQ_wjy}v%dN*K)g>fNk_&aAiI*Gg#2DzFyc!mOuWVa3mGVZE*RSGc)zJR(zGiv@dnjimzn$y!NFP zU%~8A?RhJ{oEdI^toSl!xW%#Jr!sp;d)SIEWp;mYh817J>|X7DE56ua#TnYYR(uh! z<+X>b_$kaVf!&HPWR}%(R{UgUsp2LpeiE~!ma^gtm|dqOt@wOq*J#&S@e`R{pc%#FLo3ve4d^WFLsAaAAEN0jq zX~kzU!Jk3<1P52W>5q?haAlQ0?gW^fZ(@&ZbAZ7Ub<@uG z$DIhXvq!Z*?nIcK$Mx{Xod~nD+j0K56Jd6~)6E}uBFxVAz)pnOS>E0scOuNrNVz}m zM3|i=5r5o?FgxuMf82>MJE4_vC&KK6R>qwOvlChwcOuMAXl2}qFgu}@@#YAF_XS!R zcLK~#Xl0xN4832_$~c7=!bP`;S3x$gBUNux^ow|7V&-# zX+1mMo(`dHYVjVDP-RiXfDlCe) zyvt}##frGR%V;h#ig;J~7)sfSxV+0~E;#z*&375t3H(`6#N|y!bL~;YG{C>rRN&d_NQWhcopWpw{r(v1#drNNy*Qy znXVg3J}Y^vLWhJ;$DC54HPZe?V*77x)8{ z0p7>%fX4%S199{OxBzEAObLu|z2W*KQ0aQw^&@r&9OK#NdBSy{C*k@VcCzns zMO{5zYdmLSirzw3g9|-ctivt?``8azKUg0d?^p+n=Z%MqJ=Rm!e&ZG^ZCqxYXI*by zY;7@y7=64O(G~Ah@A2Mx>on_RbldObH9g;Y{` zUfhiS0_P&@uvj#T@uCj<3yu}7gvb9IrVG61e+jbz@AB`4b6~sw4F59pI-CUGK!5ZW zXoF6Qf5A2Iq4^r-0N!IJ;TgCPods5z3(RSro#rU2{k!jLuKwSKT*3K98Sd~i?ig4c;J<{(ZT|#|^LHi+s-v_vJk!mnzm(KQ6)*#5y{q zHKWQH5ZT2Haj9$MVrIqwqc(C8GwrZej9jSLf3(Aqor?XX{U>sPVqX+DM0P0lnf66w zyJ8<|pGCMfQin}|uST}1HKZ#e=PCBG_F{yKjdj{fVCSf{7qyonTNQhzI4JVB7N$KD z*`nC9U}r1#oc3(wEM~<)SUZy$k|EDTHY@gw_FQC>V%WPJIYY50w8tYGnHB4?wt*RT z`aBjnU9rcsCnD<=dk|~uT3B&ZWNi!69*nF}>>;qzm=*H+!tgta?b6qTKUQp~etMXb zvvq}S`sOeveCrBZ^)2Clt1~z1JHni9t}Cq5FNzpyZMA+$gwywRhrc)4N5Z^z_*CQO z$SlPM8Lx$3@VPZkzSrqL7P^+Vupjgv%Q+Qar+=aUP_F)p{=NQ1xz5jISVkbCULE49 z72))E9sLfBaEiOmFbqAyiR(I4H-eF$)UyN(Bf<&qI>TppBI^HdxD9VaeP0Zh;f{Q( z9%mS?$Ty0?SsYRCqM_mMeZ^}?g}oR_Gt=KL^o^vL75eILN0Q92IrN!GqJl7 z&;E91M$jmU{K~8l)QjaFX8NSUBaxdFn*w&DV#n)~A~z^DQ9nL%-4Sd`?{522$w|a^e^?VBI?S+HSuNSPj%)Y{fo#S%nDugLy_N^86|~a+tgF!@a;#z4ZNY)mHNGb zmleAVqSA6%U!q?YX_1Lb3i*hw&b*|sIucN9mws`iMM8E#sFY~v7lR3P=0*4m{v+6~ zhzf}MML5&fvQ}6ZF%{dXUl4A&Jahvvztzjh$=#GD8Scx0h=5R}hKNC#J zAiCvm3BRqLbF+R{SP382Hiwmb>YEGO!f&ZFHzIr}sYA>B&0!^xU>n0dduZpDDHmf1%|XT%)fGe{{s!n(*f>tgtJ5NU>A#EFUViR6jNR zfnrParQ!D#Tcn>7Zn;`d(U*iiruB%8Cj&*o!UK-#fsgb-4!`SF_b_f3l+<0$;e5HWwcymzG7)D6FE^a z40ejlQ!J_Ni7YsRr6O|`OW-+AP%N$`B6Aemt;Hjaiv3-?An>AMNDl;_RqO)oD{N$T zBvRXcYh;F6I#1gknXcGY?Yzh|#V|-IGSw;7)@{-L7U3bmb!UOFt*P$JEfKap)tz}( zgsnz(o6n4}-KlQV<_O!J>NakQu-&O{{l*B}o$A)DkFedTZq2#~+nwr8TN7csQ{C#* zBBS{gov7^!uuH#g#{H2x$EQ>`eMY2~@wDlY8pdNz46rl5Zq&grn^5cOM}^shS~s*l z{4Ae8WN7#q#W6+HoV(bj#{CcxVU>JIh}tMl)l z7U|26y>)eD6kk!r4chL=OvOgwE4fm!HrgNI*Qx&B#hBSr|Cjy$t|_^&{}R~ue~H*8Hi=bm^f!v*(f6-fREQ4P`5zFv|5yJv z{*N$=;CbAg@AIeqH^B|C1J3?6{>A0xt2Li@ASG zeJ8*ZFx*#(e*Ixz(5HKU!OXvd-k0D9*y~Mruk~K+J;%EN4*vz-ncnf3Rk;AojR+yRLCv z>^jG_!L{7Az%|`9204^ou8yv@E*lw?-;8gubKoub0vYNO0;W9 z%j#Vvdbg!z^{x^#O471=S9vSWmDRh-i4U7;S-q=#c%qq>)w{~tSIxAn-c{DunrT_R ztHj``w5;A$V(?U2R_`iN6->+OT_vi5X<5Cie6`k}rs|!cS86+ViS&f#|4F5`9bNCz zRKPQgN^Kjmxan~YIak|erpJPyE>cx(rW+(g$uK=eLd>5^kCw2{05d&G!hU_s^hgQO zStUKfIiata9xh?;K31ACt5n!POOd3Nrrc^XyIqT0Y09oPGmLV!(v)9qW|%@~r76SO z%x>0hveJ}eb=GdS(v)RwW;bd#SZT_$HnSV(OvFfDj+7jq$#xuhzT!gN~{8+ zBTt&rs(>?RnQ2O@>iXE_yUjGEQ~^f4=aOpBLP5D&7MN7>zWm5qcFEZ1VOQoZW z%`|0F0e9mlnKb~%J!Ph25~6&aCZh(9ju~sF$)*8_nsr*1>&A{6X{KelZY+kqq-D8o z>{B=@%XMQreru*>xo#{*e5GZ%ZfyGwW?Gi(#+J7?)3RJQHd=0`Ww~x_dDKkHa^2W( z%SD>Xb%sGBxNj3_D%cUZQM+EGsbojw2JJ>OEsJ*Jdmb{=vS^21=w@0L?ZzMKZl(jx z{{ds%0W<9s?Z(|}rk$eQIQ(awqTRiKPSI`*pi{IPhX1!$KEseh&XkdN6dQslfKatr?7 zsWTlyZ8cMy9fA?%BDKjOm{2ZKXE+2`wMcDr2xgFr)CPxOSh+}@?htCMnOd(-yIQ2y zIfRBfrPewG-Ht_SjYBY*T%=BO2nLgj)M|&&P^Z)?htN=`)Jlh-79~qk zma>_W0^hI~XGnp^cyBW$1-@bAI5Q;$zG2KrGbIJS0dtsAQs5g#jW$yx@c3`w`MD>VneDCB8znCe~Z9v$IQc|@iO`Kt-q-swZH_=Q<)t&@xOi9(oo_;eW zRU2FS&6HGa?C3XBQnj&p-AqZYmqTBlB!(`0Z&QQ zu7!Z7q-xhfz*ADSYw5C&2&HP*K97%3s&*}ceoCr#ErNbZs&*}gPNt-4*S_0dq)4?5qelO# z&_<-BZr2pr=wFGH)a@Gm8zNG-ahm>(NRe*SV-D$`ixeq0kuUT^B1PH_QV7!uskdAK zA^j%ux&DPnk%ANXm`)=NZzhG9NRf)mm5)V=beza1@KC0_4*697M5IW|u~LZ93aL4r z_9>BOJ#T*MPen=!dX4@etw=$yfxGfUk&=QAQh=pX3VKbU8(A%-px5XJiAX`G#~c(% zDd;u&8?+(?9i-4xB&DF!3e1F3&};NJiAX`Ofxi=;Ln-J)up$M$rqGj!6m)t5_!Om} z*XS?OiWKx3{RRC+k(7d7qd%|1@G1qp24+uKI;Ei3!0ZXGcj~>=h5_EbKKgXw?BuQ^3g|JAHsLPelMUrHl$nru`BuUtbEYg>Y>9rzB;xA9@E|MhwL@ElOi6rSio%WWF6^a0~(t`-a0Qs06B1utz zNLN~+I6#m2j4Z?y320@MKF&u9=jvpr&u7nUt}hrgvX6DPutmv^6PXLCw1r zW>Ut2!RxLtlQI?zzG9u39F1qz^}(m!WF}=S7<|*IB1y3T{$*IBadnMw$QwnxnG_Fb zTv%*7Q6Yk1?L8* zVA|cFU`6oQVC$eC_xV5BpWE-+FWHa7=bwhV_*Yju*G$wlPRI1SOYLp;8TJa?_0Pck zyE@eKJKM+Dwyk3V-dCvTzlQt%`vZB*z`GJP{j<>L|CB%@rr-?=R2rum^Ngv+XxB-u zey(w@A#kJzap(E9@qzKW@wD-PvB$W|*hw}2Kp>!5zaT&GPweu4(z?&eS+`hMV3)v| z)@o~^HQSni{J;S0^p99aS#I$=CIWnfz5dT4J8-ACU0fqB!cKv8Vu?5bGXX{-H_%hG z7iGf4K7k+opZ#xj1uU39nxB|&m`|JcnHlp2bC>xybB(#Mq$B16G?;_2-#=;|Wg5O; ze21{x|9Rg-zCD-S%ipYOD5V&5@deOl~W z#@DQleZzRkU9qnjFN(*$V!Uus>`TTcFN}S`_@t9#hZrw7DfT(z_=4DHjOQ$gaodsE zjhWadd_2<_`NpnIgQ_Rbekxr z?weX49i7PMm$i;^>b@yd79GdOOF~gj%Qpo}qPz>a$qq(&7jjd;j*jH>tw3}HV_`*y zGxm$CP>fUtEgy?2Ie&^)q7RLF; z=y{B9KOuS%reqpRst*y~hv7;3`UVkaZMffI|1>TJf zRcjsfuVNz=J4*jEHjdfh-;GdotYRM;RZ*@mH66a#I5&EeT3c#d9nCA&&3GsJ5J>?{ zCymu?LE$#O_k;e(izSor>+(?vCwI>|Sku><-0HYK!roYt;5> z_r!8)ZLhX3mR0O-?fzK$2(~wtQ4G5jV=2Y3OEH#I47(I#3B~f-9kIA#SuG#it=RS2 z!?D{GLn0-1vtr1k#Q05WM0ba)VmGQajFpPr(87vqW49=Fv37mzI>mNsJ7U);2JdZ* z9V(3&PO>9*m0E)nH+H3Z<9BS0UF!&P;}-4W*yYZJ+PHaBjD@#x)8^PEe0<)`_>HrgVl4QL4JXG~@Eb?H8asm@J7QRj1;26lh!_ig)5 ztwU@dAMe^N#zCa9OV=0+T4R?EvAujw=Z>*c7}5V)F)8+n z!o6ZIG46gS_5x#kn9noD2lyQ0&Rt{AGVatl_6*|=onlWj#v9M&*V*lUiT#6*xBWKu z1miYsV~;Z~YZrTzv0WB>m~o&Y_K3oE>>Bo@9KWBK9KV=Z3^ybMVYgA4PjI#xIv1jN2a@?XGY!+K+MT@1s?W zTeXf>G7hzm4pg{RbO2-XuV^2}UNhR8u_qMmtFSj(!5F_3j${0nC)$hg_n~Ni#viqh zc60CyyBOnNRWpPg<6l)XOc9&T=ioh@#u)G6RK|D@r#M$)vzb41uVOIphxRE3Z-0mb z>2w+{6WXiRVCWCsU2==o^S?Os{wKtFWTTcXp3-SBzm{10PW%gLMl{x`S{?7uiQm^5 z;b{jj3=-tlOylIPeYxHKS|A*1YUG4urvi^Ts$wGAhABVgDJ|!JX zjz;Ic{{(*seiD2$_$+$=@4@81D}vjDo8ar8kKO;Hkrn8P&i|pH$Nt^^&i(|Q|DU%X zw(qoe+gI5a*k{_S?30iOXh7fpUiPte8GQYJ2EGe?6gUug8d-oGy8d4l*cR9rSQeNE zXaC5+z(DsvdEhAY{QuSZ3U~LfpoiZ*RtgUNUDj4>9XkFuSrc(@-yb~yjzJf{qWBqJ z{CCjr{}I&vZx>gKo#HI9TAYkNeq%)~-1r?tYuwlW<^SIQvHuPKGyVtsdH*e__n!|x z{&N3`{;B>^{%U^@e|vvx%&IDyznEW{A7J1=Cz&J7 zL1r(rquJK9ad-cl?^{g$d&~D6?(gsL-G-k3JJ11OrEdXx`Hk@n_Eo@X-^%Aj*Z&{A zpQGCUiuXzH{oXz3=XcHjZN0x7yZ>FD-*KP+k>^d%^PWesyCLnl$#c19hvzKM8r)&7Ot}8GD zfI0-ucTIDRMyn!#_Uuv9ZY(Q>it})r^|1Yvm_O*HN zOV-K0Vz|+FBI{&dwJ$N;DC=Zji(R!ZMb^o_YHt^3h^&)+#a{5YMb^o_V$1j&BI{&d zo41T-o$PD#mhr5UeQn+{o^`UXu)G}*Stt8S-vp6$vaijVv#gVSZBBe;o$RZ=x3EZL zo$M=S?7SedPWH8Vcuv;IzG8C5!y@ZsU$KV`eIuH)uX>G^-Y>FF@>PS=Ok|zpD+==| zk#&-<+ErRyWS!(Irt@7TvQF|9E7ypulYFILz9Q=+U$Jtv$U4bajOxRRlYGVe)XPNH zNxov`3Xye^uiE9b;v`?Oa=FMl$ye=ST5*!E+Qr4SBI_hy5#uiwStt3b{hf%De8pq_ zF0xMYRXd+noaC!^esPn?I>}e;hdWR*`j*ui808DEW#^tah$;j>uB_6{NU@Rww~0S3oEQOJu8du0PwHgf(i;)V7*g znT4%6>r68%v#>R1o@Hib7Pe+Hj>;@-&HBw|ma?$AUbFr}GfO#Gg6qvJWnckM2c-Nf z;D*!9EM;E-FT_#Gz0y%Y%De)u-(Y4b?+S<^g;~nF0%9^@mU6Cur>-@#gC$&ks+k=m z;i~0kw%R$m%FGUwa3zjbIY(ET*-8ml;OGG7=n6C2UqTocvi&5)w4!WZ376te^pWtC zr6SuK5bu>LCYssy z5~4FeHs+i=-pocN9D#GoC8XC7k&s?PSi*X|hISIx)tlL4Bpgy_X4^VPhnU$m624U@ zvPT0NMjx0BZW7tn4!IS^foz#WZqaTP*;WoA7eO}UkelEl$d)oGt`ym$Bq^?>XDewY zmOi!ch{y&VG6NHYvbIB}>(Ib}L#FA|Mb_fSV8T&WIAk(C#_y0x`eczc9fD08BI}a` z`!bF+QAGwYFX1U^Bxg!GoVB&4^@kdWRoT|yLJvzmm1hnkr!5)K(`X3mxn zb?(er5~9wXIa5N^xib_C@P|?7&QK%(M3FQ@aR6{orJ12900>i1hGGC9s^1xk0Dvf+ zW=Q`5Q7_Gq`U9fWn<4E79MH$ikn#hfbebXE2SiOgL#hvmns|mZ9}qS13@JWf4?K+Y z9@5X(t5y(US@`r9uVd64Cy=|%HtVQdBFF2h>R5Zieeo)7G$KzSLpG= z7Lk!6U!mWw$3;epe1(3!e!Iv>k+0Bi(XSU7De@KQ)N+f+NRhA5Z_;lTnfdrDhEbv4 zsNW6^s7Ziiab5RRU#urzM`;&oqSP2e1(od^dcigzCu4k-y||p|ElI)^q!19GeePq z9`l3tqsUNfAo9KTgUC>Hkk9tL$WVMBLO%^N6d{Pv+{+Bb2qK3t4mm?nf(SbIiA+az z+UFuek%Cq}rqd`^5TSvVnf4B$Y10{s7qs#L=0j&FVi2L}mKll}L}WhC??aV@I_S zGrEZk#SU`lwlUg?3`GwjB}OZeq4+^$&fx43VZ-LS(8jU8E_R5Se036={kmL?#Fj5b0(dC(;yUKn@=;MvFAX8CvOV#6+4R4UtYpXOX5@L!_h8Nu(*-5b0oa6lsb# zM2Cn`jAKMv zMxJWpXrqlt%g9r0lo>~h^vTW>v@*&>T1K8~Y>6!qX&HH{VdoXXSgd>S2miNv*snLY z!X5sg>khcXWk>ntt`mK|eI4OlFJhiu1NztRGfmt4j+B3r;n$Tr>!U8(cHhdzjXi8 z{VH7a_o1)eE$%DaJK&;Ujr;1^o`dcQ=*{;8-1r&XonPiT-(Bw>fbIzq_fc-Q>vz{T zt`A)YFd5;?l7E)GTJmJceI>b)TQFg9Tgir!r6qGpCStx~Uu0NXm-vEzV7lV_!B@~Z zVK00bR|j_n&kU|aer0NKWUwmOE!Zv?KySq#kzIMiei}U!GWHGj|IyBh#^PX0R>{d~ zRhxd8C{U$B^POtHK+?s*!m^HM90;NzqjTH}U=*W+L#?dooXb!jx8R&J_Y{k>a8)zrVuXWpeC!O1vz1jxIS*4lZej%g4dN5{omYRly=QlQ_q%pvBqHD!*lMcC*Uow>S%1gS-<*C{a3et|MBYBp~eDC4bT%{vClUT{)$mAKvAR`$G;qN9BgW$!!B zUAg8Lt25)(E6UzuylQpXLB=armA&iW>O~7-fRV4O`jmy%>CTf@FVt>9?#x+OxD=B! z87~QNk+^!{;=nj{e38XH?WMvz59i zrcP_6E~18$trh&(F%8($bA`J53WEw1HM43%9^6QFWBKwb_cJ_JF#pJ^nqzLW9DQDOeXt453r^Cw<4d_(l7J0lHQ9}tVqQ+Q0{%JYJ7(3^@ zFwEkDboKpHTdBwHnc8XspL63`0rs6#7w2Pt7aJa`i;Y^w;?JnM*jIbqy3hIis*9b` z=Ivp{gsxl9F)RF{2QA)VUR`((t?GDpeRbhgy`RPHPpS)#>%%N|*;E(q(x(JG>RFQd zoIpUaOZBaRV-#DWUl-`1*a>YvtV=iM7PZYo+x%XfR=ka1Q6T6OgE2aVeXx~y7$ak#hs#d=CH^w_ta zRO|=sC+i=IeW(3kJ)zjQ+IQCDihZMfYdxmeSK2q$ql%&WVm+eRKeb=2hZMujul1l} zXzknTO2u%;+lq|<&CPvVU9Q&N#+lr=rMbOtt4q}y`un!J+^foesw0i&lZ=0t1%Y+6^o0%)if8~;=*t> z`sZXUE(KR>Xzp&Y!>St9o<}WqSXFD(&yXEf)!GACV^0;ahb;D6RcrTY4_NH5s@Cq& z?zY%dRSmz@UW+|d)!JU|9*aFy#P(V2sj9}TT=&Mu&Tza+`BAx zSXFCiiD2EX9*3^*7W=K5dl|PnPp!d=WwD%BYZ>$`WH|>bHU@+`Go?LYv1C_k)M=63 zSJkL#?Y7tsQcXMXEOuWJ+ihK|o`travKOlwnUMLG`dVwZV#{jFHF1k}tHoZdYVGP9 zt(J@KO6_W^<)XVBEg4%bv&+z~vE@>_RJ+`2x#*~|W6PyId);7h?)y}h8J`|L# ztaH^G8bDah^N!Fhsu~R-Q0125QGNCni#=V{XPu3C_s;R93(*VT!Aq7}XDGbT;!s(= zc!{M#(Bg&GS$xi-#nuL@|CbwM{?FI{zp+2CUqe^F{kTKD(Z0k!7hV09+9%kP?BRB$ z-OUc$LF@wfCGbVyVBn>|W9aLb2wWSuD6l24273Tz2galSe_u@SYZDOGVe3chQ|m43 zIqMN?FY5m{T9;YdadUGTe&f%Ob*(Ep16Nn{1~pgZ3+{)_$R_&2~0u)seP z(*Wu**{{1l<`4OO=6}qe%tPjT=BwsY<^z}qa69_+?K02BM1U3MN#-nbf;r5rGJ9aU zUu#qNitzh?<@>;Q!1t{0Vc*@pr0;s)F5gyk+*^#9026)nzW%;0zGHj=Z_)cR90Bim zUqFYyyS%r<^}o}5mUlH=|1-T~F$X zjbFG9x?aMRz`d@7>sr@Et}U)Lu2WpIUE{IiqOYqHGB^Tr0)I3<#cu!S&@1r{?C`kK z*nvFEN@D@?cw^*k{T`VZ?TM!Cmy10zG1?Q=<6UBpOpNx_E=2Wsk4%jA#IE%V#U7a$ z?TH_ZJH;NE80|@;wZtBo810Fz^*h8KnHcSfoZl$1Mm70%y|$qap}Kv3h(oSN-9BIEkejfrKVR#R8&RFl*Ej?%5JY~kddv+XKgc21(qpO} zaus&v=Lb53$~O5bhfvujU+IubwQEIwfFf6je1C_~w*GuShwQ?({(N7DkXYvXIApta zu|MA%L^s5CZM&K8MOYUbZZz{160Tci=6g!G9I^gAPQocu&HOPEPMTuoDWc$i{OBYzPw@nB z=m9fN(FCw=sF|l&0ywzN%u^%*95~p_Qyc-T9BAe#iU9VnH1iZg0AUo!Qv?BoQ6Nw8 z1Mom!Gf&Y2ujmORA@Kuo*HQ=|aAZ=9K@H~~1~RWnaf0&v&} zGfy!B5C)ALMF>Dlu*gw-030;L%u#dztQ}OprhT)9K``ZbP32&6aehh z#mrF*0Q{hnnWG2**!~MMNBR$lfh9Roe?SZn$dUE~Mxthplpio0F>|E*fM2vTbENu! z?ZRe`G+)=f)2Ep^QhY!R)X0(E6P#}5NbLc~-)rVb>jCGVXy!=i0nvjZM>-FPZWB3D zdB8a*m^spTz&&_gQh2}#6kOM9tExm!3V031C%q$bQounlBq=8ayarCki6SQj97NwM za#Fx+3KNM)0k6^b5s?B;r|lCtDd08wowOna9HcN=M*>cUyKRNDM2-|3q;QtLP2@)J6BRwaw9-f*UDLS2Y z8JsgY(sWum6-@zhog9Kzmm){HPAiM`r6NblPGph3Sma3CiOeeCqbGGIGE>J#Li*lJ z;1SA^!poJJB1akz0)q_*sXVRBAVNA%EBjz_%aPL4$}qiNTlFiVCz+z>ne_#RVdVwSvguKhjKo#c$^v z#RgjWP5V`3DLN4ORr^h3DLxSSiB>2=5FxuxmSO}E`t9uRgr(4nR0J2JOJ6Xc zTmP~?x8BBm`h!;9EB=Ry_Z1~OO3o}z^OD2@mm-H{`jH!bD;9tS-f*%H73;rW` zZ!i`7~_8xQq$%2mr?nZ9mI=E3*8Yda&8=KIt?k05lf7y7# zxYuTYr$k9+4TcXxNx z9ddhJf4aVhgZ?c~&||oNb$^Zf?bp$h{{i&ayA3_|cEWYP#=Xc>@cisKrj)Q{vGx7@u&6mw5&|NTN-eg{e{RW%NmB=p4G{>1k z&|9#J*$(~u4d1W6uaR4L-S@Qb0dy0%&3Bb=r|)dv8s8%17LG@6!75*OU(^@EeuF=~ z-+Mp7w87_*UAPE7OhcC} zwfiw%y4dD&+t4Ma+I{)>smtyD3NNzamp{zF%vW^*}z=&Ch# zEuXV;waw-Kp&Kr=xqviu{kJx!=7+Am!RD0x&^3!~wj&HZZH+ycpJ(+NyUxM&Z}hUc zFjN0(KYJb@-#f`(%lM8d_UVkXvuw`T)hAA{&*kHO%jVKTz3I2P6jARpZ7wI&dwn*S z9O^w@n@b4wE|1OSiu$6<=2Arc&q13DNcBH-u&43g>d?`i&iLq3dkW*$N84PXuWwyy zPvzsSN^P#z*O&IRC-L#p);3q`>q}eNTzsl8X>D^+sy zO8aC!URh=FZ*z+0p>u>Y!#`-=JZ7w3#_j<$TDt>*> zK6VqI-~9)hEBE!sb+>2p@ovZ2T)D6B)XkpB$2)eiXE2_&*XC?%{nRNoXISf}Otm?y zT0dp7%?^qBDRJsOX^cmVw^uP9KEhtf zxW39}w?utSy}g`|53aG7F&;G7K9zBGy}d}`LH1I{1FLN=F4k8KwAmps`q}#!_wHlwW!$T`eK+HtH8xkphaK11 z=1TZ5d`4UeAJ(;-&6V(BUAo#?er)G1Hdn%jb^gKTiu$mQoo%j)55spM#pk#0U~^S` zSggIB;N#Jl9cNq~wYe%j42`pQ^YL)RzKwCauzf4zwx#yXjN7!eZ(@9O8~aAa_}+2x zdsta(`+7c(@7;Bb@x8lN;a2uFj7!Sws~O|Fc9p_K`+3Iru3flepYgmC?QM)tm}j5I zc+SuEIgFd;*j!zypFPVyi;vHmZL^u6epc4Ln2*nBvNxev(wk%4|Nrm*@*QyMT6Hk! z9v`VxY_u^f!u9?-W27-W(oe08Fh)lDC^p;}9qE4r8xiTP*f3*kgxw8w#xOifFSS;W zzfhsrOk+x9sAAKMnUNuiO*N)P1}g^hab(aDY;vStvB}1)$gm^Wlt{H=lZ>VamtE^% zBb^)>sMd}*CPk_gOB>k;7h&s+q;Y$Mi?DS@!bnEgMN?NyV@2g0u^_NH+#{EA`+jQ7GXAHm)Xzogh}c-)JQL$S_yrWp80E$uO$3B0RV z_VB5ZC5qi{#3Lswwj2M2CdF`Cu8VF55^~E?e2`B563ZXnrC-q zJZpj7Md2p9Gvk@F>`shlEVMf?9y`N6mT|*ayFKGE4R(xi-55K{xVFwNXWYNmjxa{7 z3^VT1&u+&UaqSq!9Y3?%GRB0LqZzl3*kz0nQ(7rpv|BSS{g++B_^47l$T)bEZ8OGx z?4uM8+5yJGw*8F#!ZsP>x2umae!F@ZBffYTyS=uXF=C2~@xSnA8Gl=5hZuj>(Qd;y zJJasS_=ZJxFUA*cu!lMq?GXLaHv|86E}J3PM0BaGE4D~K-PRPFr7sE;6&t0`3LI9f zL?0FS7c;G(m)M44Pilq0e-zuQJ&Cq;RBktnA=9+2fr9g@h76e&_=|DRA%Q;__vjh; zUEyNjPsXi#1b$^4Y9086@lm0`&x}is3jD-4SQ7Y=G48Z~V2sHE-!m3g;5){q2z<*J zlLfwEjL8CDGsa|rFNNzz`2Q<4bfSB~_l4;)YrF?h$Nsx<0sQ;(UHiN*qc;4R_X+R4 zm{Na}_p<-xJ^g@^ZY7bDqe|St--F)EO{p5RSz9-L!Vm@%`|Ug!I_y~y{j zJ=-2<*P;VKd*lh+*r)%n?^fUCfnR+a0$;+5@FMaBcLr_?ToE`Qod`}1oDeuZP#@@z zK7(P*A#hp0S>IS6S#Ki8@vsFSj&&_25o|>UWGTGFQ{Y4x1k?JlR%^^5I4pibH-dMO zS$SOCBhunV%m&D~tT0s3GTVOwv&Q$%**GtXP_13ci#Vei2uo^vnra2!Z=>VEPukzhIRM)z;9pqogxn*d zz4LvrVMW?g&e78*D^fW}PaA{O_mp#lw6QNfU(PYn*3!ilZRrUQ^6(+YI$GvQZD@OUbkVxo_cXP|2VMWL%67%e;n9kL@4j6 z{@jjjnXksr}2B*68``D=^_ z=i^iNwc`wcJ??>aQ~CG<hNiY4)! zzbXblnZeQ@#J26-#xH8^7A%?$p16eR16 z@tHakSFrJ^Vi#!JjgJ-Eu3cpCFSj5r+6#;i)f)B%8XqVI^R@B5bFBxpZQG1boa;Hb zS-Z}7&$&*5XJm|nj5nT!DXH>$3vSqGyv=z1T7&QAg6q~BZ}9Q88;rLUUS}L&yk@QO zI^)yMFy2*ojln-;NkHx{uW?pvkI$IIxact^GX6ef%wqghjj@99Vje4=6>YoC-)Q0xQk zlv?#AQl)LI^A);cUmJ9u3_#bC&Bc@={r z2dP$E_81Hrq;@kd{uvuweVXyAbD0H~FEcp35nQ&~c!iHITW-9>c*!#3MaFYy8ZR)O zGt+pEannrW8ODt>ji(sTo@qSEc;;r~afRm^&nrB~cvj&i<7tH(jejUS+jxTU^nJ!- zj3*s$Ji_?+=?158g2zuX9_Hf{W*QGN9`}Ut0OMix#(j+I#~Jr4Jj~e7c*q3f9>%q= z8T%Ob>ucQ2xNohoSK)pJr<8)dhZuM8@rn;IqS+Clo)t!(agUxxj&b+@i@o=bbE@jv zhO_rRNp^OU6JQ{efrO!V2z7v=4ZT+>Lzmur5eB=64N(-m?Om{>x3OTm?Oj0;dq+{M zw|Wa?-nC{I`Qv-u-}8NMd%oYRfB3tuv-Ua3gp+mUti4Km`k=;b+tCL!Zqt??(706_ zx?kg#t?2z4w`fW4)3~HFy+`A43B6n6P?+AOagz|eQ{%=>U~sg0Z*>~e+cd6Shu&&% zHN9P9yEeU9W1mfL(pdQDKQ!io-l(yQ(;GB)x~LBO*_M-Dr;js>?$sEE&|a&m3~WlT zSM`>5HPt~s`-j?82O;f`ThM#;nQumDT;rz)(yYemar7~bA6UxPYt6U>bnXNFC8=KQ zxQ+f`*gVHwR6kPL)e{|WGW{rKS2uEe%j%nz9>+=6#xMu5nEs_^7yckVrhom}h0jTd z=`XVlX_X~RI{~}!A!*69^RNrAk{(REL%VPjS<05`S19ZwE7=Og{Df9_rhmD-A06M( ztF#T88GJ{tFzf^{o&4>0dIz?mQrREvH zBdB=>;2t_ruW@ra0rUUc&^iAr^8Y{aABO&aPx#aR1MnQa7v}%%fSvj!Py;a0KMZ;R zc7a&{jr;+>1v3Co_&)a?fjWSveL3g@c&Bfl?+V}fzD@A_Jr{BfMnWw>H(wj*1z5-D z_MY-D5K825jz4~sv4R6Bha5r>6_z61y zzwds-{VeR(|Mz+W{@eAP>tokju4i3&*Mkso+3VT`l>qBqOI#JMu`ma)JM{l=1iw@q z&R-y};60cE_=Gd*yw`anbpJo!xyiZQIomnOIo#RD+0og|Sm|!d@X>`cP@_E zTDW!vk7KSDz#Er);+UxgfBiDY#hy4OY7rW~3O_l_(;_6i?kOI}EG>X*;BuIw1#lI- z3(U|$2rrHKSpf0%Fgpw2Qg}Vg%>uY=DUV}j79L&3F;3Y683*izT z$BZn1^B3?q=3@bzJDuL*E9|(h zdYOpJJghK;moDRR%)^33Po2eMn1uzf-*FL>IapzgIq?|gV8QXe{df#BumJY%%VXOm z?A2SuwgIFx4D~R3MC=?zFoQm}RT0dfk8M%p09rOH@(_|uiad;Dqp>_JVjC2}MElr! zMPOvIh^;f02SjYGBA9|7TVn`ZZM7nhkMD`CLPElh>#q{AmCCRe^50`C6v4ievE`Cf zFLT_-W6OZRUwph5k1dt3=tmw~B4M2(9$PG7?K(WRNWvd$i`YVd_>o|}P;7xBST7Vi zTM?+W6S4Vpxq(u+lGwjvkPOGIpzBInZ!MQo-b z=h5>;tU{4<>3JeHLy;ZyToIeD$T@U}h)q*u3q41~rYf?TZV|Dw6xl>Ki`W!JHquQZ zHd&GNbfbt(k_79RMQmaXsf23FJ49@PB2e(aW8;AkvSSc@c;h4-Fo?&-N;ssN$Hu6m zPx07j1qblhC<&heI8wr107ppJ2mVopOW3auj}4O$8vDhDN(hbpVnftgxMc@R2r1;T zatR@YJT^$eZg4U5`tT;Zy~<N%9$)-(CtIpLFWmd&37Mo%(j@fEbfbeR~f$DxLcFZm;o}bn4q*gU>-a z_3d4I@R)S!+dFsVG3nH|f6|%9q*LGC6#nID0HEz)|Vcw>K@}G3nH|H~E#vq*LEs+=R!ZQ{UdOn8#|II@$hfLmsQ~>14YP zt{`3dc8`z8q)XrK^zfK;>D%!mkuJTmcYjX|T{FFyWgc$Y29Jmbrf-5f)QFQfq%H@tLJyCS_ zgjViwThe6t;FM`@|=x4DxH1h)^m6iojn}gvXw{C)dK_(kD{XoxG~P7 z=;i^g-^`=vZ(&!gz#0fIV4(ZK^;v5H60y#qYagGbT11FSQFN71z-Y{;YN*b&y} zQFQA7<12U+ojSk?J9rdbI>1SA8hUg*I*CWop97o-N70+((TO}NeR<{B6Fe$?dFAM_ zJSu&8B~-LTr7y1>F^Wf}FRvUrf=AJp!xaV(g`vXKT4zM4(N_a(ScgZ^Qv<9I5dAd3AVBoe0P6&K6n!+n25?k* z=*oHkrH8JpQ;$cbhpwy(N2Q0ZtW%dqrH8I8f}_$ySArBqrH8Jp(||{%hpr3&lpea$ z4)Cb-(3O6hN2Q0Z^!j;Jdgw~wV73 ze9iw1^s0LpGWKuqU+KR9dI7BP&x2V2qx=K>-BmXL3NrzZ`QG=v=6lMQ_TBHh$#)gR z05z?Eu>MnJ+hn)P{Zp-z%>sy%e z_XhMh%(@P^ZgE`=8Tp%BOIr;DJy=V-WD%zq+@o|96GwPO*H zMBj-dbUGlC=skg)`iQj?N%Ws+X~Y_eBzjOJ4OvJe(T5@lBS9~UB*elZiGCDGF>54} z=t+?@V#Okfz7$DAw4gUd62wcRKSffX1w|4)sN%W~m>arq{M6ZgZh}9KI^s7kf zpanf^4LNl}B+<7@OC6C!?+WD92?hlHD_UwHK@W?>&uWRJ^syGR@iUM<7A>|&N*`-6 z!TcgAeXPYiOo*iPvDWDT^N6JMu@>a`trkh?V=a1w9ui6EV=ekFJtC6Q$6C;p;a!oG zKGvd#={q7ReXKXsg>0_ouKp_51k6$#P? zB3Vz7deFW#Syz#|w4O*7Ndl3$Yelk-B;+53+eEUqBKx54ce0iuH$ZpqWWZQ%5J_8+ z>(Js?WDnFRCVh%rOW=?5Dsl~h*AZsfH6rOzST&vqNjZjp2;ayeR@id;c1 z7fH)lt`JG4$Yp4uitHkni6kgHewoNlvP&c#hU^oG^Ax#=>=cP}6}cG64r94kBq|lD zgqGro?TTzCl_IfC5o}PNI7bnzxlC+T1dAyXTNJ?t<%!LTV1x3+CPlD8d19j?8==fH zu|biwWTQx|*QBsVB-UvHJ;@Vm6|)7Ku5EEI`X_Mb0J*L}HdA^T^pEF;kIg zWS&S=C^831O%pQ|nN8-1#B@bwk=Y_KO_7;omPknbiI561QzWGRM92(MArex5B4j$5 zArex5B4iqwE)r6IB4i4_j?|w>AqHa?5>kI6qze>>CZzsEpqonQ98UAT32g>Q4lI2DcCisXr0Yj5HSssXq}?LYj$$)Sn0mlM;~_s6MJDBrFnA ze{fX3cjY&xTi9mg8J&}<56LC~mw-pJgKM_KqA~hlPCjx!u zsYpoui9ks!5ecb3a1JzmNl5*PIR3zMr2a&p>B}D?A@wH$OkKg0{<2XsXr0enuQBU{fRjK1%2idQhy?jU!iM#Lh4V%@r&bEk&yZmfi`=; zh=kOiNKFg-gw&r%O-*b<>JMJ}N0E^F6M=p*aA~PO5!lK7UL>UcMBpjoJCTt36RBI{>Q4mrbYB+jWU{vZL1)Sn1E zD1k-l51x|~38_Dk>e0AN>JMJJN+hKIL?D6iIgyb16Twb-P>rlU9cYFp5>kI6kS~}N z38_C3c%F)hgw!9j#6?2tPXu#OMMCON1XEE(Lh4VX=1D6d^(Rt2-|>(qQKLU3;yC|S zk&yBefpJ3Ti-beHftuYMlpjJP+i*7r)rXMCCfJri?E$zJwpvhm0Nx7QC#X9BXH4gD zR2_iR5Arx_4#F8cj*0_tDl9;~0XTUokE7ZEoHUuoQELD~Pn0++4ZwpFc^q{H;J~9i zjw%DNUm1_1#sDlE$m6Im0HG&J9Q6etL}}xwE&w4)8%J#c2!mGQs4M^>)DcHr0oc6< zkE5ypgy|}A)D(cwG$oFT0`O>8PrOD?NEgS|4~w{zlP)!5qT*6cy1-_~E)kb<(goUi zT_xgDPP)`Y@#9iXy3}<2ic2}cWtWNgJa`ct!h>DE;!;k!;I5n}j&ee17uZVk#B0<9 zUjM=iMO=zWmzp6_aVaKXfKgC!6cae(T-?T!TG9n}IcBBumIHqAO!K^s2vF5x~LogaVHLS1K#+l>%VXFpr~7;L)Z$ zjw%80v#^Lujqs9wg+n4PHNs2ENIwym8sQ~{cV9gfeYc;e=*eQj|!9pIt7{r>Oe;SZ}u_!sQrq45VHC2g4usN?XC85dzL-U z9tbu1E$pDp;fen{sL+4I|1|9T-{-#(>hml8tKnIHl79$P=eL0!f1j`5`w?pM55d&G zyzc>z!*>h+*|!^>_1F6r`lk9u`1<%d_(CxEk9vQFo&F>6q!0Zzy>~#@zl*(_q2G6f zcMSi++n>J!&Dop5v%U*@{(UPx5U+_R;aBTDP{Y1UY!fTtNq+)Vuy+@&L<1o_r=WiQ z6VF@F=PwJ-`8Rp4^qlKi>p9yq1!~tzp~GKe&l!#H%_HvL;O|f1?@!?GPvGxQ;O|f1 z?@!?WC!c`IRxKr0lf6xJ)@~`;O|EXDGjmI!JJqx%Iy1Kvf&phW(V4lWxFiVhg|4tc-m!86#qMf(kVl^pZwB8F1(QekA#ea7|zd8z1L z!=5KE6y0Okv*h`ryA699+T-78*i+=`qB{(Gk~~{<*BR`oqT3D2kym{>U%Hf}3$uK> zXrdHbwE1*qbt&{{OZ#*Q1+s)s7fqCsD6H&juK57j@6!c;rPzSYrwjf{p#$4}K3(uv z3N6?U_;kTvDfD2A`gGYKvip6y{I3)yDCT@R=ev~LRaolN6@R5LL-8)3uJ|j3A&Peu z-D=(oj8ydLy2VnMoOqK@=aHA<=tN&fv+^c#yHC|L(o%90x!Kpj*lr~E_}Uq^uW*g8 ztzi&4^|di~eC2ueo6m|MWF83<99O62mSf zyL?Rz+et3_T#pud!hlke$BJ8SFw|v0-b-jlKqktt#B_)0z0CWF?v7 z3mV&eveH*%*gP`dSI4lqWS+0KVROhTU)?jL zuVK>)37^L>2-NwwVUx%dpDx@f#ZiquNQcD-NBGwqPiFWm!^Re#@-f3kld(Q(*eEjE zM+_T5M)@3u!6Zg+wP7%d(OWQVFpRu7Wmq{G?A6tarO?%GnD?}?4I<@UT@hIdt?b5o zb!B5IJd^eH{%%(GExh5?m5rsO4=MBN%0^&?H;QgFD}j4;ontAa&h{y~!Pp>?*87WL zJxDLFu7NBi-AE7bPsY}jbo2gbSQj$Dd&00zh4;PR8`hq*^&U420-4@#4Qop}dA~b@ zwex;sSQ|L+m|?9*7w=bwL1@$arD4qrzk0tg4C0yI&kcisruQ?$AfoC0)G!EXdOtC& zm^ATzY#1Z~dp|O)0cqs@(6IWXfmc_pltRR_zW04&t4r#6j~Z4)>Uwn#j8bfs?LA^_ zwMZTByM{r3Z0|dUL4$1XVZ(f+rT1;aU_`z5EyFkw-Zu?%6YhP(FehQ&*9?OU2k)zf zG2-^Veg?C=uNVd`2E8vE2GLpXOPV=;CqC~BhC!1+@AJY_7fM$J=G2wi9qgudU7P!M`A_*OeQRM}-535N{#X1@LR4TsOsw1Ezu3RkzY^jC zQ~V>K8o!Ibg};H{=XbzFfMdQ7d~f*v39*5Pe0TV+gGTLVL6XWU=r(@|)P>vwody@u z3_U<^g<14p()VDO`YF~M=GB+5dXOhD9jf)a``R!M#1Aa*AKvevTK^E_3B2HajGp%1 z=)KZ=zDUFTv!yWaYXS^*DTP69O(BNB#VM#2_(B|kxdBhopP(21RqO(`3HHWkvx#h| z)z)fa)rKAPf3xq|r|d9f$3M;z>|X0b=(7K;Rb@R4yYAOpmsvZkb=D$l24vL_vU)gQ zbw1_HI1e~)bzbAV#CZ;M>YwjC%Q+Hu?jz2Y&W28igj)ZyzVUFFEbt@$0`d!9;ZO23 z-_LL1d-%nCGhfOpV5&fW9^ox{L+>H4?pd)KF~!>$)ykHb`fdtLu0iKp%vKLJ%C z2{hRa>cSS+q9sJv*tr%|6J1y5TC$YrIy~2sTZyjKbFElHbPbl#Y_Q-J9D zPH1l&)I~BE;xeT$U$9{#2YpvFY7h6 z8WLSs$^*5Ct_|gZYVwj^;|q{~YAk%@8I8Fhy55w#IMFqu-032^P83>C2hY{(dzS@u z5f=284(b9fXf7SpMO(bf2=ann-~OYZF5rTu(!q`Tcu=;}o1G9A=~UC?GasEfIv&va0iiF;gb^0vCB$5l-ZY0O;YHI3olOV{jr z{&bNy_3>{)YkP7CT9S#j3XpstY>Q!0YD=xa_oE2wK^#l%U$oAmMV6NCTIc+dj! zlg0zy4(b|NXbd0Rr;qpP7rb8MUVVbsY22e%aIePQdIYc4xNEnd`K%&cgSxU&bR0x} z&}&+M9NevOi`Ky_HEz}-c!kC#9mxregC*p+#`S{aTZ5~~cN*8JM~-P+s}A{EWBAT~ zr7`%KFE#erqriw@ zS%2wi`3*U&ar2hs4UL;MC$DQ<(v0ZRdQZ57e5j9y!sG*u8`mfAYh2uz9M!l{F?mnp zhKbwF_{Ubu88{z}>g3 zSi1mspT5P~1-N_nDb_B)UD~@?y8w5u(qiob+&z00YZu_|(X&{8CEVS66l)jY?$*8d zD*b-Cb}QEIz#ZvYtlfdTOQcwTwcMS%6l>XVcj{bheu8x9RIFvg-M&MymJN5i_QhH@ z-0!w4*0SMl`9<+X`gL2iEY`B&h8dq)Hrz1dQ_F@MW_)VdaF;YM*0SwxT2ibf#2s#0 ztR=+VBwVZ|#QjB+VlD0NM#qb_w7VNND%R5OZqTq;|739o>lbTjch_%FtmWK&JXow{ z-ZikiSWCNWz`$ZH?XLa7Z`jOxmV*ke~`O1o;5Rgw#GAO1?L<50MWAK znlY7VDRNDpO0*QYrp_T+id<8t6D>tBUn00vUuW`^;9`TL!6h0`nnAQIxh9M!T9#bn zClGy4y2dAomND13Nkre1FkB)yS6>Hy7R)g?8(gIEsBuK!tF95liN04|!$%N(ueydm zLiD}u8a9gPdlhC=1ZU~%3?34ksd4$>V1>c25`90r`j-=ZKfC&t5`90rdiN#z9(I-X zC;HxYmG&n3es=XNCHfwA_2^0TJ?!c>jOhE;73o6see3EHA^N^`b$OfU?}Dpy7ozWB zSEtTI-@~qs-H5(#UG3Wuec!s;wI}+%b+vns=${U*w(W?%hh1&j5`7Q5T6ZM+zIB1l z==;{yq9xJyt*coJqVHQ*(`H29x2|wgV(wee7IUwHwwQYrv}LXSY#Y`mYc#Ikn&_XN zuKEqhYJJ?(h^)|Z+9ZvC%9hiL3U#Pe{I_Sul)Zf0?EL=fg1x?1kMetgHHX^AOoOZpbJc=4??H@ zQ}z$`XZB(H1^ZDuYTpSt0GC3i{#7uaezHBx?hViVVY?3G{r}V!4sf;w8K;)b{`B{@(ow%=mi_p2r_@-|oH^dMR#ouW-+C zPjnA)_ku3`P29EI%=Me=8`lS}*P)kU#=f%ay3*P{l0V_alY(4 z=u9~8ao*s(+_}TK*0}(t1&oBAew}No`nh$|I$?ck9kQN>i31N?cUXI&qW>Igr8U=@ zWDT`St@bdbptfbP-=UiSL-q!HhGp3S=(l(^Of%TTma>^_92?9^A#T!))nlBVq$lX7 zkS6{-eS|(t@1T1jjrkn968bDoqC;T{UVDc~*JS?C0L&79PNZe(PoR3F<5`iGsXqb8 z99t~X3n3we!m<<;o}^{!PXN-cQX(x=e*#bx^N>i()Sp02QA}E<{sd~0xY9E9Cs32b zmB!Q`yc#BPrE7A3fMB^yS|I{oCW&J%bfCW-ay z$;KkxSCOBrUq!l)B0pO{iF9vc`B|h(B{|s`ExnZGvy*K^x~C!^Tc3$^4@Ew)J{IZj z#`1|sca!8~8?kkk#3{Nv(|GW-CB`nEcmLlQshbN8If+O$U*B# zk#3<#!a69@%@v7T36XB5NX&|hbcrHSD<;xS6?xEtZ%0^>`>h8>I;6;c3vTWv#rRnwpe)y(d_$z`E3(I$DbhhjuD14wbUj1B zQdg17tgA)3NRdmd%S5`4B0H^1M7p-I>=fx*id>AAfFc)J7mKv5$b}YsnILY8_qBCC zUfO5Kg%H|RWQTRWNDDW&3{cfcZb$FllaWdR;I<;A^v7y#wGk<$KUOOXF0J$juGUJVl>R`!;E+fu{jr+krIr3z&8+4k zrSu2d2{jWbr9W0vt3;%f{y-^WQ;|~o1HV$jBBk`lYG4ILO6iYP-)bOI1JxfFv|5Oi z(jS;yTwkP={#dopqV&fqvTBKx)}K07kw|I%scqE}DXl-XtlA=_^(TPmDE)y;2SiHi zkJqwAO6!l?@`{w!A8xrtO6!l?;v%K=hn+@?(jQh}r$tKX4?E2YBBk^PhDU)#=@0vf z{V7sPf7s7xQToGvVLywM(jTz=B2r3!;2f|h{b4_{pF~RO5Bq`rC{jv)*mvv)ky84@ zjWfx*1IC5^auJt9Tq92KkRLGNTihhIG(PC+p?+r z_kohqw?#_n5B%DEQ>2vsuxHsDBBk^Ps!pF3DWyLw&2l28^oM0wTBMZzfF&bRN`GLN z4J=B3Sd1k^O6d>$o{fo=(jWFPJ0Ma@f7nCpVUbe$!yaT0iImbGsCs=+q?G=^1s)J7 zr9aT=3NE1ZhuzEei`swV`onH#cZihI zA9fqNU8I!$K-KMSBBk^Pu6CI$?d z{Q(OQr9W_iEh4G(2j-H4Md=S)kMB+C58J@ji=@&YShhhVmHwRChZdzjZ0V_wL{jMw zTf&x#q|zU@kS!5Or9bR!Hc=#%{y+=-vqe(r56p*~A(BdeU|V>ONGkn-`svvssq_aP zt!9a&(jVxUHd7>({;(Nro=7VFVN>za^VGl3R8}F9N`Ige{#21v`U9KK3q?}t50EJ$ zsq_a*w&9H`{egMy<3&>G4;#ovi=@&Y){hMoNu@vVz}HVCmHxnd_fo;Way-VOj{h~e z{k~iN-{$pu`~RnN`Wp(b=d|Ys*t32c`sU|62cUNUDi&prv6npO!SnnQ&rHvF&tOk4 zPkT?;Q{-{;ll%w%IXuz7%%9*Xem}pNU(GM#Tlfm-*f*IEhiCfEyg9GWz3yuFFYd3Q zU*GHQXWTjWgYZD&?yUvA6${kA}LAIEczmKz2km_~~YgP27l-6%W&EsJ)uR{|D!=s&vV z-^c%JeFFO5(XrdHkLj$r0I;jsGsboW{Hs1~*aeQ8*pn*q8#r$zdqU&wYuQ1Kx2|W8 zX}o1CdsO4iTi7ESZ`#bNG~T$0xaAzm8=!UbmfPG+w)br43%g9@luyT9z_+ z75h=+)oWN%<5lM|z0(j_wVEaL@s+Ds+~C`p-W3R}Sjl2)BRVkOaRGZ!FPb}xJ*@GZ z*=)bYv*)n;4W7jgXgq5!d%)n?>^_5&EUNL$Syq|G6|~Fr$L$Evdlt zB-2|@fvGc?-g*j5ozCvm*BLjT>8+>0uyIUpJq5~!F};-$=<^!W+ed-keVE>E3Y7L{ zdb=smtCZ>Ora;eLOmBe(dh}#^yD8AMjOp#8K$nl1-ZBbw>caF^QlLWzrni6s9ojR! zl@#c3i0N&jK>JQiZ;b}pcVK!uDA2Y!)7wFTHf@>S(h0O~!}QirpjB(8w}t{OTQR-8 z8EDax>20Dw^Y%<{69r1TGQAxXs9VDH7Eqw5F4J2;fud@rw=x2?ikRN^2?S~}z3mgQ z159sy1bjBrTR;J?kLfL-fXB=97EpkDnBD>kxH;2XKmn(l=`El@wUghz92d1~t0XswcRFbp}F~5b)HSukhN@$VXMg+w%V{&WHno5*h;dBt^A7> z_OW&N^`eB@Wcd$FD~(N-7H(q8%)-TFIa^}bB(j)k6|%{M!mDhNv5hA^*h0g`knwDR zVWY_ycD7+7$xt@muwi5*n`_umGMddhgAHSI3@eB8W*atul(Sie!Q^l@)37p9$|?-& zP0HAG!%9hiHscJ|n@uyUC!D8s)h0d21UA*!dXSz>kK?c*+j3mb1(C(@aXGpqyY#Ksy19VOV9GgvD&$}q^wW+M%2OWLs!hCwDa8*Ug(N@v3i zYegb#^ck!*8)_J2X|o}QH7DIzxnU)RPuL*Cnv&*hfMKD+=d8bBO-NH#W>_OqkM%Vy zNE$I+Jz`_;307)s^$LG5T_IwV+As&8m$CUtZPvpuA6&EN8O+bR8^%c!*3~dqwSz?r za}pQpVi@FCv(AP&2xlEMa}=sQ%zVXg0y}GOY^NNjSv$j^l?7{S*uNdWv(|?F0j!l_ zzY_;*@fUOan>9a!{lQuq_N(J(R$>@*v|zd>#Kx8uENpB)!(4@ChW+3;!I~I$0b{EH(_fT(Cxl9d~@k8XESk<2Y;Z7prbWe>Civ<11Fru&;q>mt{k@(O$%y$O+fYmbW131rn278m$Htc=J z2TU0Dp5uMyf!}|p{%idP{NML(aR0w49rM@z|9`gs-^8YXKZ}YG5FZ9pw zkMj@qm-;*UoB8WQ1px8=<~#2D#CO>DlJ5!V19-r9n{Tggmv4t}oo^9j_m75I01;mc zUwxlAqZ8mkn8kOG_Xh9f-W}ex-UToPV5GOq+Znn8)Pv0alj4N57H?X`An*N0ygUo=p*z@dB7Ka$; zK6V8=A3|=+*<6S~jf8kaH|Pi01p4B+=_&dX{ffR%-=NPzen1Q+GX8_^rWZl4|5fyC zIt^|h_>bo>kV%NULnofYFebqE9e56dm;l?g=Q#{v0(`d}&tU))V9PIf4#SrKTeajl z3|`{VRy>EHOMop}@+<}}0XA>JvlzAnSkjzlF=z=88W(3VWC;-3VPr9239w0+XE9s} z@QWrqi@{2OjgIpyhAIIzY{at|s07%cAiy=yY$AdhJ0ZKw3 zagAp&JPB~XK%T|mB*6XycosvG(1&CAD4xZ@B)}2Fc^1Qxcyt8MVo(y`P&kSqNr1zK z@+<}<@#rv~#c(9RfkQ=B1tYB`u!Wb^!AK9Q#j_ZUgib6I4|=i~ii92~YaLhfEJh;X zT#&bK>}?3KF?wV65#u-MOMZiJ35X--=wUJKX!D0pBGsf zf9&Y^#_=uBV*HVi9;@yYSs8uY2JM61;#rJ760&XX9Fdi=$8Dqmbd<`<*yA=*A4WK2 zW$bYqnOt~MWM%Ae8<|8Vi|kZ5oziVs#3!<6DKddf6xk_?j3X07cCsSF$vBanq{tXD zTx2II0>2?ec7h^M+9$H(6&XoJiR?H@)OxHiu5lW71_~>^dtR6c9bH0 zNjH%lsYoB_n35eKN#RK{+>;%Sglr=NKNZO zD+^TfiR>V=tW;zND$*S-12ieTBC`E8A>Bo`pCpA>kd!G)4I`R1r=BBHK%n!co#yWP3^i-LW4M*&b?HD>6`IyDL&m8i;H+MH<8Gjciv%!Z4L1 z8&RYL`j2J1DAE)6VE zQX<>bSo|UzR>XsrkRo2<5!oij;uYD(ionQMku5eBA+n7W;b>{7hznn|fg!Y>q!DXP~lIgt4KBUQ_B`9Qb0=`v#cPpwG}xDtAlt_!WWjL6P+-@-OI`mh~#~tK&D36^dXFwyZ}H?7^1hiu~mGS!7W$zys9u zV9TOrAi*ANSyT-q-&eyOg1S*d@a>>-AUTfj8npvRbyM_Ns2*tf1p3frQ9qCzsU9LS zs31r_aJ(lns3Ay>IzA8?R1qZaJC2GB>WH+wFEXekNZxZC5gF7HBu8)=stJ95@nj$T4iwvp?lIJ0LE`z#)LCsoVvKr&=R5}eA~PsBNYd3SL3nGE#crYPd{F58ekSMFyn@&xt#36B#W& z*y}BW;)53K^_Efc1DSzQkx}vkJ^t?y86`i^F8e-_QSt-%fBQv7$q(fJ-6=9kejxwv zevwh~1G5C~6&WQzHM0aVN`7i)31pP~)XWmdDEXJdCR2_tH6g3Cn!nr(yiUV-*LY_gr0k~)}&!E}>T(F2|P-_65y?|#> zX#mbYn`cmG0M47wGpI5E=g#99)EIy;0VsnC190{no8Pp1Z zAGG8dR0@DC+VKqP1i)}L&!9>G{4~rns1X30w%{352wc#VXHXviHiiYL4giCVc?Pus zV67m}pfUi2kt-ROgfQbEgQ@^WVa7oQH36VU@C+&fK; zW$t4Ys3Qwc& z2lx;`^!xxP0YtwK5PCPJ(d#3O@ih8;gcErhJwCt~K=k(j#{)!f4=^#Fr_tBr(F9MU zr$-1!(a!@M3lP0Lz{ke&H2QdelPW}7dia3jx#~V5Ej@hAUZF@!4-cu^)gwh(dU#j{ zsoU_}_AT4#V0W?W*v|iRT>$^bG6mS<;#MRN-I9 zH}b`NIy~E#LC$|unCEA?e{&ymA9cUtKIo3S?}8`$osjXr+&#-Z&OOlG)!o7!baU6A zFv;&D==Ks^F z1vQKR{@?$|C!pey6^?HR4ZZjmb9@_mUTwrwIF4Q!I;c(LyF&98I(%J0j+5_NbXNOH zvzxUj(R)?1OZt}RJ*?R!%}VsX)$F<@CA#EjcCET4y3A;HpjL@4Gn#D&N_3eKwCyQb zsITw!l`PO$cuUUK*dt2jYs@_*^E7txlDQgNu97(#Gpl5_#*~%J(zu$I%+&bfk`i5R zHT&7VC3;VA_P*sMde3oYk0VWqT0gVfk){rfyY>hd4DJ@L*0@b|_>{&ikA+Wa-27Ph zPmP(mtqCdjFYFwvY_-BKQ!oO(D8-(@d_e>`b|Dcao zJHsb5{-aL#CykFa3;(Y1k*?v>`rn>8PPYlYq8U9#KMOr;*w^$}=%0ptMZXT|q=5=( zmhx3dCk<54&zK{mcN{CAjmnpyC(Lq{LNUW`phrUSGuVxxsA1RAJ)s8;yM|sHdcd$fba&{0VOP^@Li-Kd zO|K5!{}(%bRp=qZE{F5(Gi(>#8M?=?OX;rA-G=R?mxt~>gIyZB%dm^#ygLoMh+Z7J z!?3M%L+Dn+HWXTiZZvEG-5R>qu=%Gy4qa#1Tsl9r*RTpYHLQ2fD(DPa5$b>5>0!OM1!vJ|VdD;f4G!y_t_nJZP6+G0tqMAsP6_KBs|u*?njE^^Tyr9w6uQi? z3GiO@o>2wlo=ps0YHZ`^sL)Qs#?o=2OAH%B$A;@0HkytJ*D`DrycfMIRY6D5(P6z$ zQ$a`2Az{5UQvs8xMuZCHykT^B=v>2w(qW`j2sP{&x{-~-=+SnqmQkk`oTVZF~?L0%=Vg}a%RuNKCI&A$qHge1eAjID}164ra!6(mop z!X1n)NAltJh9wJ|!fgzTk^SLThDAv%+|sazNi?kYvMb0#a_L1FTy;38q z0$mxydcV4YTub(b8pkfTa%mwG4j3EsXbk%dy9ge1J%&M##xOVRe6l0#GVDBZe%NW)x#YaCW!MgK zVc2b0B{?_D41=jQVQLtRwF#5ISmDypNyE+|J44lmZ7N(FGCwB>46q5EGPX5jW9U!A zR+Do=e;BsBaC7KihAkt@L%$lfm@EtZY}g{QI`pGqFa##_gJEL}ABMg$Yz!G2I%XK` z7zQ01LmwLkJsLwF z88(m%3Vrw&D;y1dWmsp@D)fP2kf{@T-!Pa16FO=b41x*0XILvTI`ocVEl7vZVZ)k} zD?;y{!CHh48CJVc2)$*Plhh8qVHhLM(Cda#(meF$8H|Nq)6DT(b^XxGhJEk&E%cIM z-#Wezy@31wjp-mq;9r4n10M$t1zrps45R}41GfgQ4O|+igdPBk12Y2?0z(6(fsTP@ zfqDTB^Z!oRpW26@3&7)c(!Srm#l8k+0c^L|+KcQ8dpvXi>}_|lo7)X+zfJwWK`($$ z{D=K7`JaI9e+T@x`S<#F`FHr&`*ML{Y38X1efm!F6Z}(th(8bUfrt4Wd@tY0&*3Yff?yIK%1e2B9^$nj zLh!r$JNL)#x1dX39_j~fb6?}W*u4ej0M2($b&qtHxjVa?x$8lc;H2wE*O#uN&==sJ zt}3V>xEmq`*rji?YdLi3o8TJk>IL-!OJF$R+R4sgDjOO(X|kj9V23IFZ~>?-5lP;zTkCMvPWrkQ2#$ z^nOu=VNM`qeBq#|!aygIiAXTiiDVoZFRC!uiRa+twkiyFqGc>>30GmjQ<90I3PYZ_ z>>heRRAJB)NZ}wEE2=Q;iOaecj)^J^d?M)r8=X}c`b5$JMm<$w@DoW#nBi1~;ZJGl zD5@|3ili-CFa(OEHEAoVFbE2S!f!lLg<()6J!yAQg@I5Yg<~+?sR~1(Xz5PNL=^@@ zfz)i+Rbe<32_%$>Dh!As!O=)n7!pPDb@dieg+WmyUpT%NRTvgU@-Ynds=~l1k~d*s zP!)zok>DtyDh!Sy!M&y`438pt6$u7Nk-P%iOH~*mMe=-gZ;{6!X$^sWqdbO5k-UHe z1Eok_gzcp~hDw1{_eKi_OQi(}hD(t=4_i`s445K$%JHPgW5^WA)3BqI$Dk>Y>Vas% zu&J~F!N4h!Ct(*VkD*f}kK!^6p4O1+p(2mrQ)zir@YDQGrws#bp>sMa!d($3-4PsYtSDk-^k{H9J>%8B9e>PUK}UwIA$UWkp^FQ~SXf z#N{HtL|q^b`(XLSiX>pOD!)jP7>t0;FH{6~uJQ{cfgAQ-kw05m9)ew{{Cq|3hdr(Q zJVhRW&G`IWMX761!MH(CzJ1!OZ$%*zJJ*W*5PJ^}>ZRTaEs7j=9v9U}6b%^8D5zLO&Gd@S-E6@kZNk?)`gj%CibSELW^CGzbQ z=|%g9d|O3&qos`^r4-ysYqP9WN}G$kk{9rdAB((_7a(tmyposGCumcVSMma$ z5iX$Q1;}eWkMcrD*_@d?kK#f|&kZ;8JW30|%^P?gg#{oCf6Ak*0L0r8MFrQwZHbZs z@Mc(xf&y^C-8_$S0`TqyJda`maOQ(Nk5U5g!I>hjgoNxVJS_4`NPw&rc_k!;wPX)8 zK7upgo+ek3D@9%j2|Vn8MF|PHvanI)m5_i1mMI~DCmkS4NZ{cK&QU@__P{*Qyb=-^ zqi~hTDQCWYpdkdX7pPLWeWLe48(AaY7b3Kx*`L{13_sUb>8;2c<{ zgoJE|;h;GsB%~6F5)!flW{BpLkQ6RKixLvB08v5$7uX?kN=V3Nv?w7Vn+x!+m5>xJ zhZ&+dB_w1k5+x*X4t!KfNXUA$C?O&13-F05Apy&JkyAoKHXu<#0uOW>L{13_5U?mA zDeOj~gaj_IQRL>T+hsXgl#md3vJ*KaBxEUBCUQzh2u}UXDIp;^^)pwYF0hC!7C9v( zWFcCVkQ5#!3q?)|34A*6ub_m4Y%g3Qay3E%np<66U*xosoP<=RoK}*5LmEg zZ~7+BDODMIl;@PH3>?aHN>yNYJ*QL!GCp%kRm%GFoKltUWju$f0!|hN=;csT07km; zT)Bi@B0PtB0!KS{;W<hx$pT~1jN6H|3At!aD z46+w;edJomUdW+}z-f@ZkV6dt2zd%QR1koWr;tPa0B>^h&7K^p2cbQ8IWFNj6c0E& zImdG-9RPEac@BjGVEIctCuO7OuyUS5*?^;vt(rs805}9b9+V7#gNN`O3I?7wnCDO~ z0KNpLp;!Ry{ua-nQ~-PnJ{}YbfNj3wIg|;2ka3VhkpKu82RW1ofS3)80s#=RfpaJi z03jPVhvES6tLC0uGk}!zbnFE`A(f%0V-IA)MF1G-%5$g(0P(&|5@eO#V<@pn41AgXt$McfspeO0M4|)RbhTQ+np5>l7o=Gqtun&AhfB*OQ zC-C11# z#Hn^igD2VTG#)?QZlm$otle7U(PQma8jl)pH`jQ?LAylb;Unx88V?&`hYcQXH`93N zLA$BOLx$N+3?6ESG%g=y7i&E5S-X+O0|wd+HSRyq)-5f{`wy@i=;QtR+x0ar>t_cw z?ptox)wow*yGY|6ui3RV?%u<$rE%9@wyklO!*(5wJ9n}D8h7e!`!w#@$@Xg8p`$G{ zZr{~*Yuxrj+oN&ombS~_7PeF4R;_Kz;1)L3xMd4lx9uoz(bm>&JIY(MwlCIeTC}ot z%3XPj7PfBTQQqPMd#7I0yuDwi+?AJn>({Ax1XZ^ah8u@i9 zUU{IFU#H@g2de!#{jMD57JjeSdwu@zG!|a}agDj~f2*;Z`@hlH<@O)b*mC*5*0|d8 zf2HwH0l!ZBEC05MU#A$Bf7rs-DU9VGw6K|8f4GCqHGZwT9nkpMGP|C}2Zz{=HO`K< zTWXw`Xt&jP{|vi}#&^%LduV*sCVQmDmv6R5YkbkU_GGnZTwcA-ah<)`u$hki_BO+& zIAZn%>a0O?EBv2nJZG-|Q;lcO@qeQ6tl9pLHJ&-k|B=QOGyNYL{ILIXjb~K&KhStu zh5t*9r_S&nHF%o;eT~nW>VHq;DL?z))p+t0|2rB_jQhXPc*11=+ZvC{`44G4cAWn$ zjYsGFZ)iMftp81eNBdvbc;p2CD;f_!=zmq?VZ;3|YdmzA|3!_54E4XD@!%o;=QS=L z>3>$^fzSH?squh;{%17qKfwRA#{K&HpVGLjpZ`gX`3MU<$w<*Cnp4t`)91Fp+P_|KYuUM*l^>hE(8}>EkpG zTZ8-PWwes6feQb#AUm@!?Ia$>5F$1kPFi{K=znAH&BL6i_O8*|l}fU+GeNq6rkVy) zDG?b2nn6UGK|l~tK^eLO-ApP?w_t;S*r+H@D1+jN^DNG@LgobfIExAnIOB1izGNf*glRlC;y{rDszCyyA9vjm?-62-^{mf&-VoLtC9_-rBw8H;t<2|l053GzBD!Dkdfuoi72OYk{GPAqhH^aK#9>9IeU=C7DcPsmXWqo2lD)2d>P_@0 zviuM{FHi89M!W%5OjNN1pKIh~nBypx;IoaK40Q}+iNbs%NIOSomJkz;29}C`$P!}0 z(a_$;TGND>a5RjEQPe#lCL9gpZWL%whzUmnD+%vr2{GYl6jl-@_=F?>6R*d*!~~ym z)b#-!q@To^m#v??L;FFJ> zOv38<1fPE7gfEy+@Cisx_=5QapMvCsFPKm8Nk~rkg82lWhU8=%KLDSI%PxmkiwN^(;8d&C2(LSJr{ z5D%#Ol5}egOE?R=^(85SGinq`lB8I|Q6veHWC^`Uo+1gBAVm@*PqBnnB#1w<_?jX? z`jN%YEt03nHWojpNS-23v-sJ9wASDN@zuqV$ynMSZ!Qw6^#>L|t4O*Ni^W$JNg3(R z;%62~1s0;mR~AVZENhRiD3Wrln2#?n611>o@iU5~Gcj3wS&{H%?eV2W(t#hXsYpsl z2NpkFkk%ha35zc&j`&-DW%0#Dg0{yjep+$2U$I_2-Y5vZiC43DLy_FB-NE9EisUwY z6XW$oax0dx#>E4wzF4_>D~pQ#g=S3pz?iO&&mPcIs;E5Jcz`)IsYzg!|{A)}pj+AL%v-k`c%(nb56#g8kF{5#)=#U~fZ$J)PH zd{U8osC~@h6N|6u17V3DTOfw+)bVj96bUGc^M_LSk;%mn9kpSl5f&e+UW1V%isWAOd5H_p@oV?-LkrLGV>S1E zEG|69pI@xq>xmaUhxoP47qPgo96ufaZDw&{IsU=}pt!IcKaAya78jP|*EYgf;=*$L zcr>(;#f9bY-8QheupB@4A5XkD|7dudb$FXz#gBzeu};#>E3I z|5@v4Ts+Y7uR4pyxy=ybKXVn0+XAjXlg1+gHr-3(++eW7k|rAG_5z49F7fUHp0=3A zxwT+x<7qU`jRmm2k;b{L0Nz{A;zd(I>Ft#)UNjZQY83L03sW&r)q6FI3sW&1Lr@<( zE=;DPs8 zT$qZX57x1pFcpj-;}I98V(5MOh%gmHKV0w2;=)u6y+1BK;=)w;NPiX=ref&*_=qqS zKGKiHg{knPVMLgUao|0EG+`FqJBT zWd|%KOr?ro)d7nMQ>h|flCM}ymq1yemWoK^yNWLZZ4c4#LZ&dUN}MRMHb@*!wHHl zvKY4*PEc!+#kk3EatJ?wuo;ln_gGBW3?Dg!#e~fmqz5O$W(=f9d$5?W8BQ=FY{qDP zj}u`t`~XOg3Y#&A%}0dI7$ib$785pO5Q{`uOxTP;!ng*B37auUcNE=;37auUH(Zd! zgv}VF0!4RX!e%(>%3?*EA^hqjRlwPGZ7l48pHYV!~z&lyU6LV!~z& z)NL$bF<~;F<~J}ryW(=*B zr*4JK7`)sgiwT?IyCIxguo+yO7s9#1XAJF6L{wtJXABLc9$8HIjG_Ie{mEj&XAJFE z?RORvK4WOVpiE9o_>7_bjM6$W;WLKDYv#lXK7;r9OoJW>qcM>C{fxzg(eP|7GQ8Yq zxbD2&I)KHv(}1)NAaAo6_Zko+XrE&-?luLIAH`zaZ^THJKmWgio}v9eS^4krBlW+E zeiCR1%nlqM7=`=f7=12K8L$H#1JwVg|64r$e~sq-JCOUo$G^pY8U4Y3HhsXq#6Oqb zjN1EW(DVH#`o|&%&=cu@pRd*TJyHN~_@4D`_uc>hq9TAB7610LPuSb+C6+-Kj;-uQ zb~(EMy#O0g^Y0`!o*l*du?Xvg4gz`4Po6J4?|EKD)xT|?2RyfWu0r;IwdZut0?$m( zB=iFuh`N8}|3^OV_~(!Q=M4OF2L3q%|D1t;&cOe=Gf;eBWEk6xbVW?Dn6bTLyJFjo zScP2lUYKpJkc-|6)6Er6sXZ~@T=Ar0m~gImLb3J6hKk1(!<2J{EJ#t9kgd2?jbTQ% z;ughlW6?!E7IHm)0=cgE$i(&VNgd}(eE%$RyTo_QA$Li9^C@I&5j)5JMNU>Y*|A3A zs$pb-#KVV?`4SHsOXTsL!-kW2YWuStXG%P%ip){?<&M)OK70_Ft?({VCvnfi$t;EU zbUaC7t0$>e_(KwvxckRMy;nDjsN+|BN~Xzux^yEaN^E{frb^t|BvT|V>q3r~*i}X* zOYC%!i3;b*aT4d9L_UCY{^ca{0i^TG&g2BS&!-hceg2QTlNoaRhZa%ic2Cca>a*=S zoYcyFULMp@eg0>MbyTlSj_p`otaV~I?awfG!doBUhR%tGyr!%$z!9=@imQ&8yJYmQc9XxwYc$^?cJoqNrZY7DJ=OvK<(*PO|I@X40P}{WkmzSK-XS#usRAF`kJ!7 zfq~jqd(A;=Y>)A&Cf9Qt2HN}$#@35J1YzGhc7hCaV$ zw}aTdrmU^PA2Dq;Wz7TwtAOuDcB1&bHqhSJG!?tr*rT<{FdF=tvSxx|pu?}(N$rUi zzh=jS*etVyVrcSfmMVtEz9w?r;&)`A=dUSiEf`=Io9)%uh1j#5V(9d1%6bZXe&+&H zR$eId`ZZIm2Y|831oUJrv9R|Zd+h0>xM?v3TQ)vh)uP-$rdP(pzdRFjl z)CEWc9}3Otn4D1Lz9k@SmOW;b( z4m1ar1m>e7z{J1^%nSUlT^BIbH^w)_*V9+-^Lz8&pS)jq-}Aoeea5@Z`+)aW?^WJQ zysN#ZqZhzT?tMgJZ`em{H@X2N*dy#tb{$*K*03|!LN<$?z{ap6 z&<~&+D`9TWU+6CQiRW$4OP-A93C~va7rY!ffipdgo;jYAJmWn_dHVgYyDa+WNdKIH zf6l-^XW*YR@Xs0e-{cGwFGC91rHUIA!;0dH>lH)Vr(%m@h%Z%Krx@}}71t_;08_;^ ziXp*NakXNIFjZWo7&1&1S1N`OQ^jV*kYcL1LNUacDlS(HIi`wDiXq5Uu~9K3nJP9E z?=YXNiCId1df@@K;?+&XC*p9A0vk#IFr6-6?VExY9Qzer$TlYKiZw zEjdTx+ZUJ0nC#$9Yf5F@cF@G%y`kbhgGNvE`XnAY+S^g$enY*b5=Z)ZWq5s%8S!?K z+spP<$a#rDArsA+#NRc@6Y|P%{2=P_wv*dw-diHElVVY4aetf#uf)GoT-Fu0?<=d2 z_xl5n-szR$_<@6t_R8?|z=3(Mr?~&X%0XVY!UMfdiTi!*H6#xA^Ad@>S9&#xyM?_n zG(WIgcdra;5A5FPo=gge>Te%zw4FA!)#*N z;+#mOcHs|fn;KfHtwq}poNheJuhiCF#*%GA`Eya?i2qCIdgV%#fBC-nww24bFqw6) ztY68#mD^9fhkYY)w4TY#eC5m;Os2alXUt@u%6(>>$Yg%La{3G=li`)qPh>KOUpZ|$ zlgaZ+tkeEjzV^hE*j|OFurDN@dLol4^vWqy*@trbl!@$FiI1PetLY4gf~gV@V*d*whTljoHKD%p#2d;bAUrqC-RN3rMR z_I450B5|-ClWFtHV4lfDdZjPOGIAe$JyQ}>hQO!zIaazUaymtfujh7&@%4OC;va%c zCfF-K=+9&lzVfBPY`5I!#UV^4?JNH^kx3b=yysN*mE32`a`v74@?C~6=@0UInLigy z&KFna&qll}T^t)g8e1PJlVt>XthTXCPCE_Y^)1R|;lKd|r7y}pR^{f&<80GQaG7HC9Jvmc6T3EvYMeN3q$Ywrr1Lv&ihSw-t+$S!Hi2Rzsp? zZz@(zYRcYFY$lmoCQB0zATvpI*={v94e!3I_~RWwrhdmB7VO zkpVc3&0{mzBsPi-#`^zmtdw~?tw;fUjugO7PtNmXq4(cr&xM||JWG%QsP-J^IoflC zrHyy6zQ%o-dyRXU`xJMzdlI?@40QK&SD+7|+x53=zw1-iJFcCsXIxLa z9&p{}x&}Q1*0`3t7P_LY(+qw_rH3TK0J zj`JkvG0r2MeKB8M;&d5*7~f)Ub(irkJZ^cwxW(9v zdF^zT649q9ua3!5BKj27P#lw`MD(dpho7ZH^eKvVc;B&q(WgQYc2BAheIilRS!XGcd@9sq z_oNERC&DZLvy=!vVJH0^mJ-3I=z*U49+ncprznbDy~|P}_!LFQs9h{2f=^K`gN{)t z5qyg3DB#XgBKTCOEzMFQ_!QMqTAHOq@F|LFbWgLC2tGx1l$mBJ5qyg3sPfKIBKQ== zdW8&2iQrRIN5yxR62YgajuP)IC4x^;d{1s;DG_|)BU@NX1fQY@7U|cqln6dW^-Tvh zvXlruMRnAHXDJbUis~o>&r%}z6xC4$o~1Ksi?<^&P zPf;Cp-C0TmpQ1Vnz_V1Okb;WpsQ=DVR*_t+U&2!1B0;@(mg-(4DEID3bps)KbPeM0 zsjgz+z()N7mZ~W3g);D-R2Q+=a_uXcD(9F)SFE8aQ$UmhOLZ1-!*Z4?1Jw1Xj*{^# z)u~8Ot(&Df7D?#9?=;mxyrL23zO=Xj&-!Mc>ENKmkjrl{Dd<{_4H z7q|1;btzYopjbRhIg13f;%UkduXqTb#v$MoyqPZGNsrPLe%t)4O+AUGwBim^X>yH# zk4|C9a{>9ML1B2BJV$Il?kSo)TfoW3(d23YpPEdQ%>qt(jwR0m=&evFa&D4JX*wvTy+C6^Yrqe47OHWdj9 z#Ixk-MS}Y9EV-meP#&Hp7lYt0eP#?zo+e<`IGSt}@W?4N*&yJsDw)1VeTOGb+X1?_3FM(h-}S+csg z9VO~%k~;-HOSdpha-RU~+Knc;O8{1MrAh7)fL$tRk~;)oIbO#70njX`N$w7S=;)f{ z-T;V>u1W3;fN0~IM56jq5z1y_Y7r$^(XNn&cV}h(5ka zuJC|)yo~ER;NI>mDb&4zoYop=Nully1e7I(x;KzoRIE!1b#EZENG(eWb#EZmWEM*b zb#LHT!z?M(ofC`*b#EXuu!b(#4R5LI4df&;gC&K$H;}1lRGSp?-at-3Z`vf6cfK31 zN}S~S4$>MY$9s}o;dOknV?Jd`F7bS?q2w5r6e8b%;PgZ6`OTKu`Pb?`! zzd_>-J(EK88}g?114|0gZ{Q8!S(1xBf6ZH1{*>gh&&iA0TP(?ipOfuqW|`!F2q#bH zYgm$tKPSA>Zi34{Cr_fdZbBG9gZ4O<7$vv?@R7%`#3;cnfRjg2X*a=5fD_&@GQn+t zlZQ}tHzACm0SzM`VhL^p7|GXY53&Te0>0Z;^sh{CGvMSdlwVG8JK*GQ?Jkz!hEN#c z>o2UFt~`%t3EBUt3EP+#LvM zIOlSj;NAeZ`W%|z&H#A%YMS7_0Jv-oO$b+LK*8LEaD|4`x6s5qvBQ?rX+n5H!=j}$ zAv~d>ei2OwPiUA`PZPou8ltmkLU=+$^&>RFJppg=NHtAxM*uuAN)y5l8qg&#!TkVR zCrqUY;RX%pgqRR+&@e7T6T%G|M&@WjxIsf^98Cx}XgGR2O$aw=7=1KN2sdaLIg%!X z8#Lqqg&Q=Ce1Rr}8#KItt-=i&hK{BQ;RX$;x|iT?fR8hHH%$mHXh5mG1or}L-93mV zxDx>OJ%T2L4>a`dOB2Ee8nALPA$*{rOP(f#4>VNtq6y&x4WD+Q3E=|`@U+Beaj8aDfK&JWOyGz*cxhLU=#}dLAaY2Vkq)LlfKq0G)1{;Q9{;$xm?gM~aEZ z>{vqRzhNL{#}Zus#Yl`l|3AkQl=uH){r_FTYl0UC&kWWVp7M_f4hY)8PCO0J5`n=x1z2A91#54V@_c8As zc%pxycZK&5ONG8}qp|$-&{u8rX)PA|vW-5ZB}1RLQQR?xK5L^7Xb*-yZKL<*n?s+p(XHCO zp?|m0yS1&Qxi)&2c6VvEjozu>ulX>DERJ^BnmwV{6&bT8v{R9xV?wVeGUUzB%Zdyh5_(CI z-a|vrD{@%x&~yBKG2^CP)>FGU^nx1dd06OKMY{J4wJ1{2J@kwsT`EF56bW_-w$|&OXh0=;JZwTFbi@SMPD5(hbgc6FlX(+CU%N;^iqxc%b722*y-Uw|| zWKYk~zZ7|Ma0u<=iht_)+IgW@)hW(5Ynwvvw9)C>)1fcgC<<#;+@mO(VRZ@pC=a{# zn0(1-MTQ(xa;zdfhLns{q*ITQiHekVDw&{2dwj}HOLN(DpU~Y6!7@}_U}XIz+L_p|I_|^{WthG zpnE`*e|}*eVJLbBbnyrLn(s&7r|2B;yf5y1(02^hc-N3!>H{8#=lkP_yTikcK zx41XB&vP$#*Slw)-32;yLom zdRBiDPxgB{x}b=iq5rObtMAp{(4W_nsQ!0X;o1H2Fy6wv(~<$ag+KW%8R}d3V@X5?|K`o#Y4?&RW^S$BQ{p*uZ5jTYS3Ae{|N}iD%8XBN9hv*_Ooj%(iXkgId{tce3R^Go!W)m(Ht>+TGRmYP*}nGiKUd zC7wRRmg~f7G0A;z_^e_;s8&OxxbUiCK&V!`>)P=7YUobwp75E9U8!9fUaAncB#aDd)Xn0`}DPCAb4J{KDG=5&+GM$Ed#;x4(nyh;P1Si{cIUHo_A^=O`pMx>6+bGjl@kLKl_5vfP>eyOmfX3cx&Fk6P6=j}Ys zmSO9;WqC{CPGy!npL08QvgG-k+o7W+&(++L4wgK(bK8|z^4!i1wzK59o$Et;-{Rjm z*WHo#2#PxB#Egfe4@l|8lEb#%N?E~vC|bkLE^kKe0)(x z>d0f{UP~@0s3VV($1J&^ppHC39<}6xf;xhZ=ayVhP)E@5+>#3l>UhUk`dgZeDjl8x4S#n9v2x=b_3@lVz3^{yKub;+B-&I&v0i zw$`XUSCO-c~>E+*+l^=8~C~ zw4FLKhs?EBsxfeDg<=TPTFVtfnASQ&F@$NYWr`t8Yf1B}BM8%4(!3DQB}*-7UUi5C z)L7EI>c}`U+>+*1$BW)tr>SFNv4|zDtd5||xFxNuj-bo9C9SNEpv$;buU}XH8d( z5wA5(F%MzZNs3Y8u})OXMY>y46>}15O_2;)g>S4A6hkF7Oa0!FaQMkOPK_b1U`VIcEB2=LmNi-mpe0woBV>jZo}0?Q3heVy|kuEZmgxN4g*)X+L@lQmeewc0vsQ1K$E?rd$X zHLxhMbt}%cDkVOBg*8CpMWL>B+1y)~)qqD6(@}M=^HP+#BpeAbdme~Ht zl2_4nmTk!^?YeM{C9lBi!j>hky6Z||wE!AUPae= zeU`k6u47(HUPag84x&OH6Asx$Vi&dKl~JAHvgDOfox`x?l~JAUu;i6dU0%23l~LVC zVN2c-)NQS?ddYL0AB2CDp+#1U{K{Qnsll~8z!H`kT&rO=GAuQ?R=Zz&AS^YwRztVw zu+-pMUO_k9%=7;ded>Qc|Gzu9CAdC#Zg6SvMdV9KiIv{6}$KCu_ z^h3IvK98j9<8&*%iEgGBqYFS2J%vX9Bk%90y8AcW(SPiI%l(o&>we08zx!7A)$U8( z=ep0p9eu6)ME7|2aQ6Ur4|ln{o!ja9!}XnOuWPsKSy#;U5EB1axh{5{g**B=t`lA3 zTti*GUEN(JE|>EU=eN#}oV%R=a&C7%;Jn4T*?FP!%tG3Knsb7)%30|=)Y-+^9(n)2 zjPH%ljCYM!jTVGG9yabYwip{xN#ji8G-IAI12Zg+VdeRKf zRsnYSoo0Bl3a|u_=c)jaM9lD16^9*YhG(h(e-F_NPgDV7wMB;KsQ{gnW_X$k5IMpO z&r%Umy>tuB@FW!=x`1bRjtX!~6V31#6=3~iG*bvsk?K?LrkO&9id3I`D$R%pRrP|C zX+}h-s^>4D84;nXo;ROnM1-pP?s+sLB2?ALLS;mRs=DTWnh_DI>icVGMntHpXUw7* z5uvI+Ax|?RLRCFw2F-{FRrLu|XhuY+svkRnW<-Rldh$~=BO+AQ$Tep~gsOVdZkiDh zs_J7iG$SHZ)rc}@M1-muX{wBfP*rEf(~O8vRga!TGa^D&jaXDhM5wCK*ft{~RMjtx zpcxUNsy<>g&4>t9bzgiO5uvI+{0N#65vuCGhtrIRP*v~lOEV%uRo&}znh_DIY6OWh zB0^P-AaO=SsHzV+lx9SPsv50bGa^D&ZP_#t9wfQs6hzM16 z*|#(!B2?9g`esCgs`}ebG$SHZ)ukrQhzM1+51&j#sH**?G$SHZ)rjb3M1-pPXCKXo z2vxNQkVmNS)u0}l;Q=Z@H@;jvJ_U%lRc45Qd8a2c7*HoQ+6VaO98}m`(-WV4pnyFr zmZ{`>=rvkO`+#Kz6iGaP3d{5_l9(1}nSMp`GzzX~4lj~zNH%8r770&7X8IHfPeW#U z7s(SyLuPsv$>Z7+EOVG5F_!6BBs?dXIkZT4PBPP@NO(>%b4ZaOCrL9l2*G7=UzUj! zw?BZ$WX39z8?_Y6gayf;qCLPe-HRjF=Fec6Zbh<1yOw3T7Rhy}@0_Vn1S4JKYqaZF zrd*Kx8T>V7ab%-*qbJju6P)CA=d(;%ao{o(U(a+Z5MkB z6>!CJnqkGQD`>_eAUeQjsDR7Ppc!`&;$V5E}&N2I+v!`2#8+L>2r&44o#mUV6>K|&lYfIl%`h;xP2x~3+=9%uz;q8cGrx1 zji!Zm*No25w9xLFF{5c(Xm<@dJ*S0s*C2hF7TR5t!wy2bYetTvX`$UURU>IyXm`zP zRWvQMyQcpHnikq!)AxIt7TR6Y%c5za-8Fpxg?88U?nBc;yK9iMObhLOKTp#_yQec8OlbFX%4k|>_jG;)q21H@5rlS6M*=j>wHu283Kj0t zT)jDIMTPq`*KbY^kXDxF3eL&j)9@;6I!73btn@)t{U9S3P`NB(4KuH<~= zd!4d0*K$twwMJN)t2rm%pb&nV>p3U9+NSvjG>_-W2UXvEGA0@nbO4Na%<6!cOrG@fG3Ff|7S}1>1pR6Cp(n9&8t;_h|Ba}Z%*7I)&SAPEYY(i_F zG?#u(Hjpb>nrlBN>&XU|=IRg9x&q5q(_H^S^hx?;mgWw?ce|wZDVF9Qz{xst2^N#f z5web@xexG>i}?t50)Bvr`XrX-Ucku&eJo3JH{iQnK$=;a`vE6w$ptLU9f6Z`$Xb@> zp1{d@3Z7kp$1Ig6#ZV}Rfh;xR16J%f|6d`Td84Zd4L>y0eMeS?!l2)d`ZbBNu> zu@v_XK5{C-!d31bAgwo&Q(21p2Ol|wEMY0`Ae>+=K1*>A0nx``C0>fV2q#D5#HYBA za573C%~IS+I2ozWVJYq^R%(8cjKjj96n7Us!aHcCxW911J7}f2!*GJB zM3&+n!wF^*S&F+1CzwcNDeg0z^g|vizCl>i-^JGsPw0R5e(T-q zeZ%`a?(rY>-sRnbRsH9AmwW5+lzxhLtaqrl5AO0y@tpo|_C411?_n>qES}W=Pip%+ zp8e12{*DJ7x1qxS(^%Voqi3UMjb|xV_D@F*zatNNYX3RiLtjLvzlZV6{z`hG<4U@c z*5e+3G95wtJ1(S_VOY3@2a!#~1JCZiXlL`*63v%k?kUHrIXV{kIXT`FxMtw#{V-P_S65d% zm+t)8`MGnC^F?RU`LOdgy}P5A^Ge+9uXNTsqsV29aQ1gv&Qjdz|89J3yl?DubTP7y z09NMzh^P8*;pu%`e-QWOSLn<2wfd=gHN@xe;HUax^d12h^bk zz|qDaqlZyuFvs7HeZjb6Z}7q3TD_huB#SU_DCemQ+`hXw165C+BHQfkiakx9vbQOQ zerfj8iam+3rxbgbJZV3v*!|>T`w7J!AotskD+WWcA5-jJj6JH@R&uZXh+?;st@gu; z-9&D;A5!dEa+Cd_Vpo%E?FSTtmDu+ywwYXI-=`R!oY?m&wvk+6Z&eHmW#1F*qPa9p zZqv4DPuoAVvHY?2_iaquX75+*X)SHaoxEc~)6^0gYnex>{PPQzDqHbpRw;$>|}C^eTQNTNJHecgV@RT?TXcr1(8=3!xOW} zPR06@K9QFcLu;hSi;BTeB5mKLK4e+sIW-m`he!UUm_;HH1I)SsYzp?wp%RqmV#irmn~w7ron^6j+uAF*#!L+@(u z+ieHgqdj5YqQ>6T_SiQowp)ACzDcoHwcYlOioL8oXScoii`w({b!zMd?M3@q#h%w* zwznL_Ua+rG>^c0-+dlNOILg&(Y=@S!uTU(f?XWLDh-K}o4q_R5vtk*%Zj)k&JKGx- zi)%6aQpGT>WUo7jZMQcZ#J1U&DYgx-yF@X}K-m{7hFK^3BE_E2p0Y1g>@l3(3lzhQ zlD$^3hqVW7`Lv>5dpLiheZCrdNPF0p&o1iulMGuvyQt?+GHm(mqMkp=u;sH0&hEF* zQb)NzKf`WT3{N@iGY?|-*(=&uex|)rv3s=p>@yU*Tf4_zrWlgh_EN>}$S<;+)Yt5~ zi|xf~=xXgM`!vO_(yq1}+gN^;z33pe*gjn`tOvH0z48UY_Chs=1eJZNV(YZ)?30Vn z#OhaT>+JcGG;4R+3#9lrueRq&ykey-qZakcSJ*OMQNR2QTgEQx&sc8Hk^7% z^~=t%>*V&O%j{Z-o0{xd3SVK*mUzixTgEQx7dP25vQfWyi7g`-^@|tVGO|&>_$pgQ zIqFZj(>`7vr|uMcvc$E`_Hhc=*^}fSJXQNBGD!{`pRy-NJo$Kgyu_0x+s8;eagsew z;xQjZ#z;JRkFD^CDtoltUNyoVrSKm6Xo-i9wnr#jWsj8j@Sc$)B%&tcgXBJ8D1KUthlqTlSzl5bkxvTi z+m}S-6V3Wy`-pssSsw^Spd(YpJLX# zJrVijvfk;A$fuR{$Sld+QT<2ZhGwyJk{>uxe>kGt;lK#}&4_ZNzyEXu zBag|W{Qa3D9LW^_O&1mHGLzl9yUMV!Gaw9tQME9KvZo_ZNu{rjQ5R@(kmjb-wq?O)m$_WW6~wDzq1 zlVaQPJ^N8I@?ooG=kR`kw)d1{trq#v&Pax7(hu#lVwf7WQ;H>8H`z(WVkBWF6nl!q z?6_jvaAy`{p5fXbdJhe``3rrke5d*5`lk6NAUWS3&)&;?KA(nadtZ9r_rB(B@oqjD3Z5`R}n; z*fs1Db{6{Y)uP7!Xf}`?!aC_+>+kD3^{k^mo-da=T>9^hD;*c(+4B;|e8&vOM8^oj z>&W8?^%tm2_p0L=$2P|Uj$56NIPY{`=Unex<2=K;&^gO_f^&@X2xo8fU@39B@%($g z@rm&^x_xAfCycGejmG6zt#BrKEzB`aGR7N6VZB1c=;Z0|u{~uTpGTuV(a-4H6m=m` z%kNe^+rL2F^^c?jP{*$Wb-Vv?f8+kZ{VJ;XJ>kCFeI1_YuXZnX&v8$6k8uxnAL{Om zFVO+i@B0|f^8f4I{dCuO*O9K?t_oMsMVvo5KXbnAe8HK(bkvmpvSQ+j;M(AF%p_D7 z<`NDMb`ORyEAwmM%fP#Vmjh|c$=rd&1$r*Zj*I^}BO~WyCHvG|ybmG^}VCF29Mz@60NE?^9vl?yldrS&xH3MG`2r1?^ByGmsMGQ zL~*RS^<^@sTxwx+>kH(F@-b>GOU9Q^kSyP*-C)W)o96sjEoXkA#=2|Yl?LMiM@XFVu_j8yhvgX zGi3z5`IJ-5$L02u=a^4Qyx&oSIWOH4E zdB5CVH^+QX;@ZXLeG1o^4@f+_*1T8ZS+mWp5}$CodAG#Jy=C4d@ucDAof1zNZr(2O z_(|p+3QsU^llYkN=B*NsImWz2;-klyH%mO~X!AyiM~*UYP8q`5`n zqlTN;N!;rM^BReJzHeSF@u5A#dHK++?bKd2 zB407(Ppui1m|imFPpw(Qt*t44YR%g7+6$)osiE)e z^QN5kX$E`NY!iWJwO!@2)hBxv?Sv`bBSam3j=6YF7l21IW@UAxAN$sg3>$IR^#H`bclByMOl zpH{fmd`jX|Pd1-`JH96!@_)1cFP_^~WK{kHiz-%$u)15Zo}|)pDaHu3oQhF|&W(c@ zvmBD4PTYP=+UhE8KVC=F*nY&YHN~FAABye3C56<^Ray?OYrAN99G5pzuU7Hea^bIw-*>QlSW4h3?P@G)lOnVVRo^ZT zOW9e4vTv7%rR=Q2Z{g~&lpW5l3V*0R%H>!@_kntY%fAUrC0nIkjDx&i{NAoQL%TTq zUh#Xl>Xb9W?@B!5l<+$e_p!ozB<^j6cT3!>cX*e=R`_j+59<|vU12Nymc%^|3%{nY z6@F9VLwkl_RoDu@A#o2Yyi?*stne!mTQkDnD%>ahrNX_#Untxw{JFx1g_R(qZ1kw| z!Nv2`jK22W$_FUcorKH#D~8VY<^2v~UCJvJ>x$PMt{6Jqm-kf+B`nGZDppP^%KIF| z%E|{RW|Fe*W1-GwDps^25|v8R=Z!^B~r#JgQhH9Ock9*1EsEMzM~hQ+W@? z+LIpT5ygV7`Epw^1gOiyieYUc&5>I(o#TZx@#XLAlw}Y6syy76n%F7j_ zBv?N5Am%AI6>||<-dQnJrYtX0jF9%_9VOH9+F#|RinVI_@)E@kfOR;CwU&nz`%61e z-tHjwU3q)Oe$##_4=DDl_FK7Mv0t?B(ISo;6+|EFLw+syDu(qT!k zQu>-TtPd%d(#P5U@}SytzxJ0Yf5*)l){c}*S!_mG@%`me2*L8*%cV#*Yu{+!l}lM{ z*7g!oE`_jJdtZCUl+xD>pLy4mV%MzU$%ZL~khAwpDSge_JGjV_($}o*!Rw^-f#t`R zOL1-1-qd!PfAIYOVORnZ{3ZBx@T1@x=<}BjJ`ub(cysW|;3dJcu?FDO;H==3;JDy0 zbo;Y|ow0)7fuz89SO@Sn?n-m$_V+;GHq-*VEU*SyfklBjtOb}5sKUMJp@A-e_5qjw zFH{8l%>Rymr~euMcK?I^+fWnmGXEO?a;ylbLl1xn{-gYd`@{ZHzuWhhZ=dgD-b5Y!3mif(_@ zbHMYX=L^sKs1^9EC*gV2bEjtuk^*Z{FYq+<`#TX?f#IG3o*tfZtnqi!-|4q>FMShv zfed|;-bZhtS7DX^!K(s}puK1}T8i0&zue!uKXLCVtO@`>xlqCLrN@)OEM(2G`|S=YN)KiEF-Vrfafmv}*`v z6S})PxR^8V{L%S^^Ihkw&KBo3=Y!5$krlYe+3Y+WRUBqICpt%>io;=884z?D#&5_A zd|v_82tZxUc8GWwC#SO=F7X=eBke2C4jvC9dedBOJ>9|6VT3d-m`iu?Y#89& z1#|~bh5^pUR-Ow3oCnBLVSI;qG{-YxfOF=voJfQD z$&WP06JdD8*f})E^I(8u#lHp__|SQ8>lAR-6WM0%r%L{8+unn*9wo8?3ftchSr zB+H2$SQEjDNR|^huqHH~XkyxhYAU24b0YcG#8Z$o$CF=pMQIt!iQHEc*-WmdIiCB%cKn2L zJoN?GKE!e&^VNjt%@PAG0&M04W>oQ?z30hM{|dZ?K2m!T;JmMSG2t}*GFt0Ka=Hp7q=(0S7@%6 z*xrAn(HB8JNz^b5xbBOR5524_rFrRi{`k> z6SA~@7n&0qzqB1rozVED-?yVVq47%*jL!*;U&_xS*LeJ`sBn(c&s84B;AfF*JRm=d zLgAP4vnUjPDL;!s;g|BWC=`Avs>|nu!Y?(PG$#~(Y2NVU3JR|;I#=81$#IF-$s(=w zbCwetzX%s$tu)6qo{&Y0@U`R$4>%X!Ixg^lbLP?_JR6vNe9Hzh8!1kKrC&@ z737>O>Uk{7aW&`1xJ7%K=7gRvGVwhYdcLT<7tIMhU-UU-MdWU&2lBj-hp;B%XJ(O zKZ~qT@kNl0tWfbqkd3TR@kNl0ELU;ti+|26*Kj}-tegsVCySx&gFi`QgX zmMc3ahz_wV*LLxmG|O^z=Om$laD5jf#j;%CLGt6YJuJ&LUX0*`aFrJ%>&bGN*GZ$c zEzh!C=lQ^PEELOfrRQWDYU^jY)`R5nyq#sa+Vhbo^R+C?^_~-6-9O6}pOZ(iYAwq( zpOc5NP%X<yVjE} zc!1uxO1qP0xd~vGRd^F&0gbEhCfow}*43VD!2tBedTkrc_7b%P{7SPz{2QlDrCA~VjVDc`SuXzA;lz_@mP*$ikuTA#kp0GC zfI{{ghaO3@LiQVn4x?Ei`;9LRrCA~Sjf1ObwjleYao}#6<*JX*yL%wba?uCuJD6sL z0y$#4A3qFEvNja_V-6_VeG4m4RI`Hh|T(X3Y-7j0*< zT=4N0`^som$bDl7N-X5Qk>OMexo`A_XjaI5BNs^__l>_oB)Qz<2yQ?j_KjR5h1fS@ zWmr~-{j9-zXjX{*tbu!IMu`2a%7HXCDhJby5c^qsDrrWD{j8o?pen?E)*)Z= z`~O~gJ-`3|GWbDoSMa%DGWb~Vp5TqaD}omVSE2u3UGSvfF~K8)eegWG1G)g@13w48 zLjAtoSSOIeGwD0APGDnTZQ#s6BkBN54@^WafI+zTHv_?d;r|0Q{66vT@xOw#0^4x! zf4l!$|9by<{uTZP{~T2EJJvtKKM?f*D*Wxx0q{@Xe&4@w_y4>vg{}a1`mXg|iuD3Z zQO|FdZ;EdmIs^3fb@jE!dV$}(Uwc15D&ZOLHr)T;?!DH#9_s~GpsL>-R0TNJJHk5< z?RUHIwzBLmtQh!=y^C3Z78YX<|3@#tIcyrb1&lxje&RnuQsFKa73IM(i&;Cshsj(3r~XmM;u^5PbxGcIzhax^;X98(Jw1$#TXI@+Uh;BQEB ze4xLkKchd5ngBPUCEHqk1-?`V{l{8_Kh*IeEUcyA511q1En`}QLDcanHr65xqK?m^ zu@+$vbs7q=uohtub(m4x$6ACz)FC(QWG%uV>I#keT7*H=!7yKAEy5t`3WnKIFbKRU zO0Te%fELN8cm(0aQ&@|z zh&l}gSXhg&h&m1RS6GX%h(h@l*1|1<*J45S71qK{0)&_LU@hDx_y~%xcv`qo=s5DG zt*nJR1s}juE!M)lf)i9;@w61&Lg$57Xp685)Lo%11-l@1r>~$b1-Bq|i%zF4!Yt|* zEb_Dz%tEh2Z57%g+@fyw0@_k=3sM)IO!{7vu-dGE_jQ`Qzm&Zv_UhQ^OPj^?py$s9%1vB>eR@b1oFevM=i-HKqDuRk5 zD5!0VEJF{2&Y)30H6|)9(U|LᡟxMN)Cp5D~B?|Tw=jT^2>hPltFx6Ui~yZ5`f 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%0ANL|e*P+Y*&&*v@&CrinQB|>5Z{W13s@Q9$4|85c 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 From 32be41c6b3386d85e2054a75b29c0c15393e89cd Mon Sep 17 00:00:00 2001 From: payalcha Date: Tue, 20 May 2025 08:47:05 +0000 Subject: [PATCH 07/10] report Signed-off-by: payalcha --- .github/scripts/coverage-report.sh | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/scripts/coverage-report.sh b/.github/scripts/coverage-report.sh index 41a0e86d8b..885d5a3426 100755 --- a/.github/scripts/coverage-report.sh +++ b/.github/scripts/coverage-report.sh @@ -22,21 +22,20 @@ rm -rf .coverage python -m pytest -rA --cov=openfl -python -m pytest -s tests/end_to_end/test_suites/task_runner_tests.py -k test_federation_via_native --model_name keras/mnist --num_rounds 2 --disable_client_auth --secure_agg --cov-report=term-missing --cov-append --cov=openfl +python -m pytest -s tests/end_to_end/test_suites/task_runner_tests.py -k test_federation_via_native --model_name torch/mnist --num_rounds 2 --disable_client_auth --secure_agg --cov-report=term-missing --cov-append --cov=openfl python -m pytest -s tests/end_to_end/test_suites/task_runner_tests.py -k test_federation_via_native --model_name keras/jax/mnist --num_rounds 2 --disable_tls --cov-report=term-missing --cov-append --cov=openfl -python -m pytest -s tests/end_to_end/test_suites/memory_logs_tests.py -k test_log_memory_usage_basic --model_name keras/mnist --num_rounds 2 --log_memory_usage --secure_agg --cov-report=term-missing --cov-append --cov=openfl +python -m pytest -s tests/end_to_end/test_suites/memory_logs_tests.py -k test_log_memory_usage_basic --model_name torch/histology --num_rounds 2 --log_memory_usage --secure_agg --cov-report=term-missing --cov-append --cov=openfl -python -m pytest -s tests/end_to_end/test_suites/tr_resiliency_tests.py --model_name torch/mnist --num_rounds 25 --cov-report=term-missing --cov-append --cov=openfl +python -m pytest -s tests/end_to_end/test_suites/tr_resiliency_tests.py --model_name keras/torch/mnist --num_rounds 25 --cov-report=term-missing --cov-append --cov=openfl python -m pytest -s tests/end_to_end/test_suites/tr_flower_tests.py -k test_flower_app_pytorch_native --model_name flower-app-pytorch --num_rounds 1 --cov-report=term-missing --cov-append --cov=openfl -coverage report python -m pytest -s tests/end_to_end/test_suites/task_runner_tests.py -m task_runner_dockerized_ws --num_rounds 2 --model_name keras/torch/mnist --cov-report=term-missing --cov-append --cov=openfl -python -m pytest -s tests/end_to_end/test_suites/tr_with_fedeval_tests.py -m task_runner_basic --model_name keras/mnist --num_rounds 1 --cov-report=term-missing --cov-append --cov=openfl +python -m pytest -s tests/end_to_end/test_suites/tr_with_fedeval_tests.py -m task_runner_basic --model_name xgb_higgs --num_rounds 2 --cov-report=term-missing --cov-append --cov=openfl python -m pytest -s tests/end_to_end/test_suites/wf_local_func_tests.py --num_rounds 2 --cov-report=term-missing --cov-append --cov=openfl @@ -48,7 +47,7 @@ python -m pytest -s tests/end_to_end/test_suites/wf_federated_runtime_tests.py - python -m pytest -s tests/end_to_end/test_suites/wf_federated_runtime_tests.py -k test_federated_runtime_secure_aggregation --cov-report=term-missing --cov-append --cov=openfl -python -m pytest -s tests/end_to_end/test_suites/wf_federated_runtime_tests.py -k test_federated_evaluation --cov-report=term-missing --cov-append --cov=openfl +# python -m pytest -s tests/end_to_end/test_suites/wf_federated_runtime_tests.py -k test_federated_evaluation --cov-report=term-missing --cov-append --cov=openfl fx experimental deactivate # Combine and generate the final coverage report From e9f09189dda6da39063e7294a2402ff20b7d2a4a Mon Sep 17 00:00:00 2001 From: Noopur Date: Wed, 21 May 2025 15:53:21 +0530 Subject: [PATCH 08/10] E2E Task Runner automation for `torch/histology_s3` and `s3` datasource (#1640) * Initial draft not tested Signed-off-by: noopur * dM Signed-off-by: noopur * Modified Signed-off-by: noopur * Added to wf only for testing Signed-off-by: noopur * Added step to install minio and its client Signed-off-by: noopur * Final changes Signed-off-by: noopur * Extra comment for s3 wf Signed-off-by: noopur * Modified Signed-off-by: noopur * Modified Signed-off-by: noopur * Pass time_for_each_round Signed-off-by: noopur * New test and yaml for verifiable dataset Signed-off-by: noopur * Removed s3 test from basic e2e yamlo Signed-off-by: noopur * Lint and format check applied Signed-off-by: noopur * Docstring added Signed-off-by: noopur * Corrected logic to call prepare_data_for_s3 Signed-off-by: noopur * Added s3_bucket model Signed-off-by: noopur * Steps added in the test file Signed-off-by: noopur * Added no-op and s3 wf in publish dependency list Signed-off-by: noopur * Fixed the comment while checking calc_hash flag Signed-off-by: noopur --------- Signed-off-by: noopur --- .github/actions/tr_post_test_run/action.yml | 2 +- .github/workflows/pq_pipeline.yml | 12 + .../workflows/tr_verifiable_dataset_e2e.yml | 81 +++ tests/end_to_end/models/collaborator.py | 23 + tests/end_to_end/models/s3_bucket.py | 688 ++++++++++++++++++ tests/end_to_end/pytest.ini | 2 + .../test_suites/task_runner_tests.py | 2 +- .../tr_verifiable_dataset_tests.py | 41 ++ tests/end_to_end/utils/constants.py | 11 + tests/end_to_end/utils/exceptions.py | 25 + tests/end_to_end/utils/federation_helper.py | 34 +- tests/end_to_end/utils/s3_helper.py | 99 +++ tests/end_to_end/utils/tr_workspace.py | 187 ++++- 13 files changed, 1192 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/tr_verifiable_dataset_e2e.yml create mode 100644 tests/end_to_end/models/s3_bucket.py create mode 100644 tests/end_to_end/test_suites/tr_verifiable_dataset_tests.py create mode 100644 tests/end_to_end/utils/s3_helper.py diff --git a/.github/actions/tr_post_test_run/action.yml b/.github/actions/tr_post_test_run/action.yml index d227ca45de..3a0ca6c42a 100644 --- a/.github/actions/tr_post_test_run/action.yml +++ b/.github/actions/tr_post_test_run/action.yml @@ -24,7 +24,7 @@ runs: id: tar_files if: ${{ always() }} run: | - tar -cvf result.tar --exclude="cert" --exclude="data" --exclude="__pycache__" --exclude="tensor.db" --exclude="workspace.tar" $HOME/results + tar -cvf result.tar --exclude="cert" --exclude="data" --exclude="__pycache__" --exclude="tensor.db" --exclude="workspace.tar" --exclude="minio_data" $HOME/results # Model name might contain forward slashes, convert them to underscore. tmp=${{ env.MODEL_NAME }} echo "MODEL_NAME_MODIFIED=${tmp//\//_}" >> $GITHUB_ENV diff --git a/.github/workflows/pq_pipeline.yml b/.github/workflows/pq_pipeline.yml index 41d5ac99c9..6fff3f8632 100644 --- a/.github/workflows/pq_pipeline.yml +++ b/.github/workflows/pq_pipeline.yml @@ -158,6 +158,16 @@ jobs: with: commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }} + tr_verifiable_dataset_e2e: + if: | + (github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') || + (github.event_name == 'workflow_dispatch') + name: TaskRunner Verifiable Dataset E2E + needs: task_runner_e2e + uses: ./.github/workflows/tr_verifiable_dataset_e2e.yml + with: + commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }} + run_trivy: if: | (github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') || @@ -198,6 +208,7 @@ jobs: wf_mnist_local_runtime, wf_watermark_e2e, wf_secagg_e2e, + task_runner_connectivity_e2e, task_runner_e2e, task_runner_resiliency_e2e, task_runner_fedeval_e2e, @@ -206,6 +217,7 @@ jobs: task_runner_dockerized_e2e, task_runner_secret_ssl_e2e, task_runner_flower_app_pytorch, + tr_verifiable_dataset_e2e, run_trivy, run_bandit ] diff --git a/.github/workflows/tr_verifiable_dataset_e2e.yml b/.github/workflows/tr_verifiable_dataset_e2e.yml new file mode 100644 index 0000000000..e2f77095a2 --- /dev/null +++ b/.github/workflows/tr_verifiable_dataset_e2e.yml @@ -0,0 +1,81 @@ +--- +# Task Runner Verifiable Dataset E2E + +name: TR_Verifiable_Dataset_E2E # Please do not modify the name as it is used in the composite action + +on: + workflow_call: + inputs: + commit_id: + required: false + type: string + workflow_dispatch: + inputs: + num_rounds: + description: "Number of rounds to train" + required: false + default: "2" + type: string + num_collaborators: + description: "Number of collaborators" + required: false + default: "2" + type: string + +permissions: + contents: read + +# Environment variables common for all the jobs +# DO NOT use double quotes for the values of the environment variables +env: + NUM_ROUNDS: ${{ inputs.num_rounds || 2 }} + NUM_COLLABORATORS: ${{ inputs.num_collaborators || 2 }} + COMMIT_ID: ${{ inputs.commit_id || github.sha }} # use commit_id from the calling workflow + +jobs: + test_with_s3: # Run it only if the runner machine has enough memory and CPU + name: With S3 (torch/histology_s3, 3.11) + runs-on: ubuntu-22.04 + timeout-minutes: 120 + env: + MODEL_NAME: "torch/histology_s3" + PYTHON_VERSION: "3.11" + + steps: + - name: Checkout OpenFL repository + id: checkout_openfl + uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_ID }} + + - name: Pre test run + uses: ./.github/actions/tr_pre_test_run + if: ${{ always() }} + + - name: Install MinIO + id: install_minio + run: | + wget https://dl.min.io/server/minio/release/linux-amd64/minio + chmod +x minio + sudo mv minio /usr/local/bin/ + + - name: Install MinIO Client + id: install_minio_client + run: | + wget https://dl.min.io/client/mc/release/linux-amd64/mc + chmod +x mc + sudo mv mc /usr/local/bin/ + + - name: Run Task Runner E2E tests with S3 + id: run_tests + run: | + python -m pytest -s tests/end_to_end/test_suites/tr_verifiable_dataset_tests.py \ + -m task_runner_with_s3 --model_name ${{ env.MODEL_NAME }} \ + --num_rounds ${{ env.NUM_ROUNDS }} --num_collaborators ${{ env.NUM_COLLABORATORS }} + echo "Task Runner E2E tests with S3 run completed" + + - name: Post test run + uses: ./.github/actions/tr_post_test_run + if: ${{ always() }} + with: + test_type: "With_S3" diff --git a/tests/end_to_end/models/collaborator.py b/tests/end_to_end/models/collaborator.py index 0729d59222..ccebde7913 100644 --- a/tests/end_to_end/models/collaborator.py +++ b/tests/end_to_end/models/collaborator.py @@ -246,3 +246,26 @@ def ping_aggregator(self): log.error(f"{error_msg}: {e}") raise e return True + + def calculate_hash(self): + """ + Calculate the hash of the data directory and store in hash.txt file + Returns: + bool: True if successful, else False + """ + try: + log.info(f"Calculating hash for {self.collaborator_name}") + cmd = f"fx collaborator calchash --data_path {self.data_directory_path}" + error_msg = "Failed to calculate hash" + return_code, output, error = fh.run_command( + cmd, + error_msg=error_msg, + container_id=self.container_id, + workspace_path=self.workspace_path, + ) + fh.verify_cmd_output(output, return_code, error, error_msg, f"Calculated hash for {self.collaborator_name}") + + except Exception as e: + log.error(f"{error_msg}: {e}") + raise e + return True diff --git a/tests/end_to_end/models/s3_bucket.py b/tests/end_to_end/models/s3_bucket.py new file mode 100644 index 0000000000..2a1151565a --- /dev/null +++ b/tests/end_to_end/models/s3_bucket.py @@ -0,0 +1,688 @@ +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import os +import subprocess +import time +import signal +import shutil +import atexit +import boto3 +import logging +from botocore.client import Config +from botocore.exceptions import ClientError +import fnmatch +from pathlib import Path + +import tests.end_to_end.utils.constants as constants + +log = logging.getLogger(__name__) + + +class S3Bucket(): + """ + A class to manage S3 bucket operations using boto3. + This class provides methods to create, delete, upload, download, + and list objects in S3 buckets, as well as manage MinIO server. + """ + + def __init__( + self, + endpoint_url=constants.MINIO_URL, + access_key=constants.MINIO_ROOT_USER, + secret_key=constants.MINIO_ROOT_PASSWORD, + region="us-east-1", + ): + """ + Initialize S3Helper with connection details. + + Args: + endpoint_url: The S3 endpoint URL (default: http://localhost:9000 for MinIO) + access_key: The access key (if None, uses MINIO_ROOT_USER env variable) + secret_key: The secret key (if None, uses MINIO_ROOT_PASSWORD env variable) + region: The region name (default: us-east-1, required by boto3 but not used by MinIO) + """ + self.endpoint_url = endpoint_url + self.access_key = access_key or os.environ.get("MINIO_ROOT_USER", "minioadmin") + self.secret_key = secret_key or os.environ.get( + "MINIO_ROOT_PASSWORD", "minioadmin" + ) + self.region = region + + # Extract host and port from endpoint_url + url_parts = self.endpoint_url.split('://')[-1].split(':') + self.minio_host = url_parts[0] + self.minio_port = int(url_parts[1]) if len(url_parts) > 1 else 9000 + + # Set default URLs + self.minio_url = f"{self.minio_host}:{self.minio_port}" + self.minio_console_url = f"{self.minio_host}:{self.minio_port + 1}" + + # Initialize S3 client + self.client = boto3.client( + "s3", + endpoint_url=self.endpoint_url, + aws_access_key_id=self.access_key, + aws_secret_access_key=self.secret_key, + config=Config(signature_version="s3v4"), + region_name=self.region, + ) + + def is_minio_server_running(self, host='localhost', port=9000): + """ + Check if a MinIO server is running on the specified host and port. + + Args: + host: Host name (default: localhost) + port: Port number (default: 9000) + + Returns: + bool: True if MinIO server is running, False otherwise + """ + try: + check_cmd = ['lsof', '-i', f':{port}', '-t'] + output = subprocess.check_output(check_cmd, universal_newlines=True).strip() + if output: + pids = [int(pid) for pid in output.split()] + log.info(f"Port {port} is in use (lsof check), PID(s): {pids}") + return pids + except Exception: + pass + return None + + def start_minio_server( + self, + data_dir, + access_key=None, + secret_key=None, + address=None, + console_address=None, + clean_start=True, + ): + """ + Start a MinIO server as a subprocess. + + Args: + data_dir: Directory to store data + access_key: MinIO access key (default: from instance) + secret_key: MinIO secret key (default: from instance) + address: Address to bind the MinIO server (default: from instance) + console_address: Address to bind the MinIO console (default: from instance) + clean_start: If True, terminate existing server and clean data (default: False) + + Returns: + subprocess.Popen: The process object for the MinIO server + """ + # Use instance values if not provided + address = address or self.minio_url + console_address = console_address or self.minio_console_url + access_key = access_key or self.access_key + secret_key = secret_key or self.secret_key + + # Parse address to get host and port + try: + host, port = address.split(':') + port = int(port) + except ValueError: + host = 'localhost' + port = 9001 + + # Check if MinIO server is already running + running = self.is_minio_server_running(host, port) + if running: + if not clean_start: + log.info("MinIO server already running. Skipping startup.") + return None + + log.info("MinIO server already running. Cleaning up for fresh start.") + + # If running is a list of PIDs, kill them + if isinstance(running, list): + for pid in running: + try: + os.kill(pid, signal.SIGTERM) + log.info(f"Killed MinIO process with PID {pid}") + except Exception as e: + log.warning(f"Could not kill PID {pid}: {e}") + time.sleep(2) # Give time for processes to terminate + else: + log.warning("MinIO server running but PID not found. Please check manually.") + + # Throw error if data_dir is not provided + if data_dir is None: + log.error("Data directory is required to start MinIO server.") + return None + + # Create data directory if it doesn't exist + os.makedirs(data_dir, exist_ok=True) + + # Check if minio is installed + minio_path = shutil.which("minio") + if minio_path is None: + log.error("MinIO server not found. Please install MinIO first.") + log.warning("You can download it from: https://min.io/download") + return None + + # Set environment variables for the current process as well as the subprocess + # This is important for MinIO to pick up the access and secret keys + # and for the subprocess to inherit them + env = os.environ.copy() + env["MINIO_ROOT_USER"] = os.environ["MINIO_ROOT_USER"] = access_key + env["MINIO_ROOT_PASSWORD"] = os.environ["MINIO_ROOT_PASSWORD"] = secret_key + + # Start MinIO server + cmd = [ + minio_path, + "server", + data_dir, + "--address", + address, + "--console-address", + console_address, + ] + log.info( + "Starting MinIO server with below configurations:" + f"\n - Data Directory: {data_dir}" + f"\n - Address: {address}" + f"\n - Console Address: {console_address}" + ) + + # Start the process + process = subprocess.Popen( + cmd, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True + ) + + # Register a function to stop the server at exit + def stop_server(): + if process.poll() is None: # If process is still running + log.info("Stopping MinIO server...") + process.send_signal(signal.SIGTERM) + try: + process.wait(timeout=5) + except subprocess.TimeoutExpired: + process.kill() + process.wait() + + atexit.register(stop_server) + + # Wait for server to start + time.sleep(2) + + # Check if server started successfully + if process.poll() is not None: + # Process exited already + out, err = process.communicate() + log.error("Failed to start MinIO server:") + log.info(f"STDOUT: {out}") + log.error(f"STDERR: {err}") + return None + + log.info("MinIO server started successfully.") + return process + + def create_bucket(self, bucket_name): + """ + Create a new bucket if it doesn't exist. + + Args: + bucket_name: Name of the bucket to create + + Returns: + bool: True if bucket was created or already exists, False on error + """ + try: + # Check if bucket already exists + self.client.head_bucket(Bucket=bucket_name) + log.info(f"Bucket {bucket_name} already exists.") + return True + except ClientError as e: + # If bucket doesn't exist, create it + if e.response["Error"]["Code"] == "404": + try: + self.client.create_bucket(Bucket=bucket_name) + log.info(f"Bucket {bucket_name} created successfully.") + return True + except ClientError as create_error: + log.error(f"Error creating bucket: {create_error}") + return False + else: + log.error(f"Error checking bucket: {e}") + return False + + def delete_bucket(self, bucket_name, force=False): + """ + Delete a bucket. + + Args: + bucket_name: Name of the bucket to delete + force: If True, delete all objects in the bucket before deletion + + Returns: + bool: True if bucket was deleted, False on error + """ + try: + if force: + # Delete all objects in the bucket first + self.delete_all_objects(bucket_name) + + # Delete the bucket + self.client.delete_bucket(Bucket=bucket_name) + log.info(f"Bucket {bucket_name} deleted successfully.") + return True + except ClientError as e: + log.error(f"Error deleting bucket {bucket_name}: {e}") + return False + + def list_buckets(self): + """ + List all buckets. + + Returns: + list: List of bucket names + """ + try: + response = self.client.list_buckets() + buckets = [bucket["Name"] for bucket in response.get("Buckets", [])] + log.info(f"Found {len(buckets)} buckets: {', '.join(buckets)}") + return buckets + except ClientError as e: + log.error(f"Error listing buckets: {e}") + return [] + + def upload_file(self, file_path, bucket_name, object_name=None): + """ + Upload a file to a bucket. + + Args: + file_path: Path to the file to upload + bucket_name: Name of the bucket + object_name: S3 object name (if None, uses file_path basename) + + Returns: + bool: True if file was uploaded, False on error + """ + # If object_name was not specified, use file_path basename + if object_name is None: + object_name = Path(file_path).name + + try: + self.client.upload_file(file_path, bucket_name, object_name) + log.debug(f"File {file_path} uploaded to {bucket_name}/{object_name}") + return True + except ClientError as e: + log.error(f"Error uploading file {file_path}: {e}") + return False + + def upload_directory(self, dir_path, bucket_name, prefix=""): + """ + Upload all files from a directory to a bucket. + + Args: + dir_path: Path to the directory to upload + bucket_name: Name of the bucket + prefix: Prefix to add to object names + + Returns: + int: Number of files uploaded + """ + dir_path = Path(dir_path) + count = 0 + + if not dir_path.is_dir(): + log.error(f"Error: {dir_path} is not a directory") + return count + + for root, _, files in os.walk(dir_path): + for file in files: + file_path = Path(root) / file + # Calculate relative path from dir_path + rel_path = file_path.relative_to(dir_path) + # Create object name with prefix + if prefix: + object_name = f"{prefix}/{rel_path}" + else: + object_name = str(rel_path) + + if self.upload_file(str(file_path), bucket_name, object_name): + count += 1 + + log.info(f"Uploaded {count} files to {bucket_name} from {dir_path}") + return count + + def download_file(self, bucket_name, object_name, file_path=None): + """ + Download a file from a bucket. + + Args: + bucket_name: Name of the bucket + object_name: S3 object name + file_path: Local path to save the file (if None, uses object_name basename) + + Returns: + bool: True if file was downloaded, False on error + """ + # If file_path was not specified, use object_name basename + if file_path is None: + file_path = Path(object_name).name + + try: + # Create directory if it doesn't exist + os.makedirs(Path(file_path).parent, exist_ok=True) + + self.client.download_file(bucket_name, object_name, file_path) + log.info(f"Downloaded {bucket_name}/{object_name} to {file_path}") + return True + except ClientError as e: + log.error(f"Error downloading {bucket_name}/{object_name}: {e}") + return False + + def download_directory(self, bucket_name, prefix, local_dir=None): + """ + Download all files with a prefix from a bucket. + + Args: + bucket_name: Name of the bucket + prefix: Prefix of objects to download + local_dir: Local directory to save files (if None, uses current dir) + + Returns: + int: Number of files downloaded + """ + if local_dir is None: + local_dir = "." + + local_dir = Path(local_dir) + os.makedirs(local_dir, exist_ok=True) + + count = 0 + try: + # List all objects with the prefix + paginator = self.client.get_paginator("list_objects_v2") + pages = paginator.paginate(Bucket=bucket_name, Prefix=prefix) + + for page in pages: + if "Contents" not in page: + continue + + for obj in page["Contents"]: + object_name = obj["Key"] + + # Calculate relative path from prefix + if prefix and object_name.startswith(prefix): + rel_path = object_name[len(prefix) :] + if rel_path.startswith("/"): + rel_path = rel_path[1:] + else: + rel_path = object_name + + # Create local file path + file_path = local_dir / rel_path + + if self.download_file(bucket_name, object_name, str(file_path)): + count += 1 + + log.info( + f"Downloaded {count} files from {bucket_name}/{prefix} to {local_dir}" + ) + return count + except ClientError as e: + log.error(f"Error downloading from {bucket_name}/{prefix}: {e}") + return count + + def list_objects(self, bucket_name, prefix="", recursive=True, max_items=None): + """ + List objects in a bucket with an optional prefix. + + Args: + bucket_name: Name of the bucket + prefix: Prefix filter for objects + recursive: If False, emulates directory listing with delimiters + max_items: Maximum number of items to return + + Returns: + list: List of object keys + """ + try: + paginator = self.client.get_paginator("list_objects_v2") + + # Set up pagination parameters + pagination_config = {} + if max_items: + pagination_config["MaxItems"] = max_items + + # Set up operation parameters + operation_params = {"Bucket": bucket_name, "Prefix": prefix} + + # If not recursive, use delimiter to emulate directory listing + if not recursive: + operation_params["Delimiter"] = "/" + + # Get pages of objects + pages = paginator.paginate( + **operation_params, PaginationConfig=pagination_config + ) + + objects = [] + + for page in pages: + # Add objects + if "Contents" in page: + for obj in page["Contents"]: + objects.append(obj["Key"]) + + # Add common prefixes (folders) if not recursive + if not recursive and "CommonPrefixes" in page: + for prefix in page["CommonPrefixes"]: + objects.append(prefix["Prefix"]) + + log.info(f"Found {len(objects)} objects in {bucket_name}/{prefix}") + for obj in objects: + log.info(f"- {obj}") + + return objects + except ClientError as e: + log.error(f"Error listing objects in {bucket_name}/{prefix}: {e}") + return [] + + def delete_object(self, bucket_name, object_name): + """ + Delete an object from a bucket. + + Args: + bucket_name: Name of the bucket + object_name: S3 object name to delete + + Returns: + bool: True if object was deleted, False on error + """ + try: + self.client.delete_object(Bucket=bucket_name, Key=object_name) + log.info(f"Deleted {bucket_name}/{object_name}") + return True + except ClientError as e: + log.error(f"Error deleting {bucket_name}/{object_name}: {e}") + return False + + def delete_objects(self, bucket_name, object_names): + """ + Delete multiple objects from a bucket. + + Args: + bucket_name: Name of the bucket + object_names: List of object names to delete + + Returns: + int: Number of objects deleted + """ + if not object_names: + return 0 + + try: + # Create delete request + objects = [{"Key": obj} for obj in object_names] + response = self.client.delete_objects( + Bucket=bucket_name, Delete={"Objects": objects} + ) + + deleted = len(response.get("Deleted", [])) + errors = len(response.get("Errors", [])) + + log.info(f"Deleted {deleted} objects from {bucket_name}") + if errors > 0: + log.error(f"Failed to delete {errors} objects") + + return deleted + except ClientError as e: + log.error(f"Error deleting objects from {bucket_name}: {e}") + return 0 + + def delete_prefix(self, bucket_name, prefix): + """ + Delete all objects with a specific prefix (like a folder). + + Args: + bucket_name: Name of the bucket + prefix: Prefix of objects to delete + + Returns: + int: Number of objects deleted + """ + try: + # List all objects with the prefix + objects = self.list_objects(bucket_name, prefix) + + # Delete the objects in batches + count = 0 + batch_size = 1000 # S3 limits delete_objects to 1000 at a time + + for i in range(0, len(objects), batch_size): + batch = objects[i : i + batch_size] + count += self.delete_objects(bucket_name, batch) + + log.info(f"Deleted {count} objects from {bucket_name}/{prefix}") + return count + except ClientError as e: + log.error(f"Error deleting prefix {bucket_name}/{prefix}: {e}") + return 0 + + def delete_all_objects(self, bucket_name): + """ + Delete all objects in a bucket. + + Args: + bucket_name: Name of the bucket + + Returns: + int: Number of objects deleted + """ + return self.delete_prefix(bucket_name, "") + + def split_directory_to_buckets( + self, source_path, bucket_name, folder_names, split_folders=None + ): + """ + Split folders from a directory into separate folders in a bucket. + + Args: + source_path: Path to the directory containing folders to split + bucket_name: Name of the bucket to upload to + folder_names: List of folder names to upload + split_folders: Dictionary mapping folders to destination prefixes, + if None, splits into equal groups + + Returns: + dict: Mapping of destination prefixes to lists of folders uploaded + """ + source_path = Path(source_path) + if not source_path.is_dir(): + log.error(f"Error: {source_path} is not a directory") + return {} + + # Ensure bucket exists + self.create_bucket(bucket_name) + + # Get folders in source directory that match requested folder names + folders = [] + for folder_name in folder_names: + folder_path = source_path / folder_name + if folder_path.is_dir(): + folders.append(folder_name) + else: + log.warning(f"Warning: {folder_path} is not a directory, skipping") + + # If split_folders is None, create equal groups + if split_folders is None: + half = len(folders) // 2 + split_folders = {"1": folders[:half], "2": folders[half:]} + + result = {} + + # Upload each group of folders to the specified prefix + for prefix, group_folders in split_folders.items(): + result[prefix] = [] + + for folder in group_folders: + if folder in folders: + folder_path = source_path / folder + # Upload the folder with the prefix + upload_prefix = f"{prefix}/{folder}" + count = self.upload_directory( + folder_path, bucket_name, upload_prefix + ) + if count > 0: + result[prefix].append(folder) + log.info(f"Uploaded {folder} to {bucket_name}/{upload_prefix}") + + return result + + def copy_object(self, source_bucket, source_key, dest_bucket, dest_key=None): + """ + Copy an object within or between buckets. + + Args: + source_bucket: Source bucket name + source_key: Source object key + dest_bucket: Destination bucket name + dest_key: Destination object key (if None, uses source_key) + + Returns: + bool: True if object was copied, False on error + """ + if dest_key is None: + dest_key = source_key + + try: + copy_source = {"Bucket": source_bucket, "Key": source_key} + + self.client.copy_object( + CopySource=copy_source, Bucket=dest_bucket, Key=dest_key + ) + + log.info(f"Copied {source_bucket}/{source_key} to {dest_bucket}/{dest_key}") + return True + except ClientError as e: + log.error(f"Error copying {source_bucket}/{source_key}: {e}") + return False + + def search_objects(self, bucket_name, pattern, prefix=""): + """ + Search for objects in a bucket using a glob pattern. + + Args: + bucket_name: Name of the bucket + pattern: Glob pattern to match object keys against + prefix: Optional prefix to limit search scope + + Returns: + list: List of matching object keys + """ + objects = self.list_objects(bucket_name, prefix) + matches = [obj for obj in objects if fnmatch.fnmatch(obj, pattern)] + + log.info( + f"Found {len(matches)} objects matching '{pattern}' in {bucket_name}/{prefix}" + ) + for obj in matches: + log.info(f"- {obj}") + + return matches diff --git a/tests/end_to_end/pytest.ini b/tests/end_to_end/pytest.ini index 2e8d4c9d69..52c41d5333 100644 --- a/tests/end_to_end/pytest.ini +++ b/tests/end_to_end/pytest.ini @@ -9,6 +9,8 @@ markers = task_runner_basic: mark a test as a task runner basic test. task_runner_dockerized_ws: mark a test as a task runner dockerized workspace test. task_runner_basic_gandlf: mark a test as a task runner basic for GanDLF test. + task_runner_connectivity: mark a test as a connectivity test. + task_runner_with_s3: mark a test as a task runner with S3 test. federated_runtime_301_watermarking: mark a test as a federated runtime 301 watermarking test. straggler_tests: mark a test as a straggler test. asyncio_mode=auto diff --git a/tests/end_to_end/test_suites/task_runner_tests.py b/tests/end_to_end/test_suites/task_runner_tests.py index 83b51f7ca5..52fe7c00f6 100644 --- a/tests/end_to_end/test_suites/task_runner_tests.py +++ b/tests/end_to_end/test_suites/task_runner_tests.py @@ -57,7 +57,7 @@ def test_federation_via_dockerized_workspace(request, fx_federation_tr_dws): log.info(f"Model best aggregated score post {request.config.num_rounds} is {best_agg_score}") -@pytest.mark.task_runner_basic_connectivity +@pytest.mark.task_runner_connectivity def test_federation_connectivity(request, fx_federation_tr): """ Verify that the collaborator can ping the aggregator. If Ping successful, collaborator can start the training. diff --git a/tests/end_to_end/test_suites/tr_verifiable_dataset_tests.py b/tests/end_to_end/test_suites/tr_verifiable_dataset_tests.py new file mode 100644 index 0000000000..62aeb40beb --- /dev/null +++ b/tests/end_to_end/test_suites/tr_verifiable_dataset_tests.py @@ -0,0 +1,41 @@ +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import pytest +import logging + +from tests.end_to_end.utils.tr_common_fixtures import fx_federation_tr +from tests.end_to_end.utils import federation_helper as fed_helper + +log = logging.getLogger(__name__) + + +@pytest.mark.task_runner_with_s3 +def test_federation_with_s3_bucket(request, fx_federation_tr): + """ + Test federation with S3 bucket. Model name - torch/histology_s3 + Steps: + 1. Start the minio server, create buckets for every collaborator. + 2. Download data using torch/histology dataloader and upload data to the buckets. + 3. Create a datasources.json file for each collaborator which will contain the S3 bucket and/or local datasources. + 4. Calculate hash for each collaborator's data (it generates hash.txt file under the data directory). + 5. Start the federation (internally the hash is verified as well). + 6. Verify the completion of the federation run. + 7. Verify the best aggregated score. + Args: + request (Fixture): Pytest fixture + fx_federation_tr (Fixture): Pytest fixture for native task runner + """ + # Start the federation + assert fed_helper.run_federation(fx_federation_tr) + + # Verify the completion of the federation run + assert fed_helper.verify_federation_run_completion( + fx_federation_tr, + test_env=request.config.test_env, + num_rounds=request.config.num_rounds, + time_for_each_round=300, + ), "Federation completion failed" + + best_agg_score = fed_helper.get_best_agg_score(fx_federation_tr.aggregator.tensor_db_file) + log.info(f"Model best aggregated score post {request.config.num_rounds} is {best_agg_score}") diff --git a/tests/end_to_end/utils/constants.py b/tests/end_to_end/utils/constants.py index c3e63de45f..746f05d58c 100644 --- a/tests/end_to_end/utils/constants.py +++ b/tests/end_to_end/utils/constants.py @@ -14,6 +14,7 @@ class ModelName(Enum): KERAS_MNIST = "keras/mnist" KERAS_TORCH_MNIST = "keras/torch/mnist" TORCH_HISTOLOGY = "torch/histology" + TORCH_HISTOLOGY_S3 = "torch/histology_s3" TORCH_MNIST = "torch/mnist" TORCH_MNIST_EDEN_COMPRESSION = "torch/mnist_eden_compression" TORCH_MNIST_STRAGGLER_CHECK = "torch/mnist_straggler_check" @@ -60,3 +61,13 @@ class ModelName(Enum): EXCEPTION = "Exception" AGG_METRIC_MODEL_ACCURACY_KEY = "aggregator/aggregated_model_validation/accuracy" COL_TLS_END_MSG = "TLS connection established." + +# For S3 and MinIO +MINIO_ROOT_USER = "minioadmin" +MINIO_ROOT_PASSWORD = "minioadmin" +MINIO_HOST = "localhost" +MINIO_PORT = 9000 +MINIO_CONSOLE_PORT = 9001 +MINIO_URL = f"http://{MINIO_HOST}:{MINIO_PORT}" +MINIO_CONSOLE_URL = f"http://{MINIO_HOST}:{MINIO_CONSOLE_PORT}" +MINIO_DATA_FOLDER = "minio_data" diff --git a/tests/end_to_end/utils/exceptions.py b/tests/end_to_end/utils/exceptions.py index e7c353eaa3..99e37e24ac 100644 --- a/tests/end_to_end/utils/exceptions.py +++ b/tests/end_to_end/utils/exceptions.py @@ -129,3 +129,28 @@ class FlowerAppException(Exception): class ProcessKillException(Exception): """Exception for process kill""" pass + + +class HashCalculationException(Exception): + """Exception for hash calculation of collaborator's data path""" + pass + + +class MinioServerStartException(Exception): + """Exception for minio server start""" + pass + + +class S3BucketCreationException(Exception): + """Exception for S3 bucket creation""" + pass + + +class DataDownloadException(Exception): + """Exception for data download""" + pass + + +class DataUploadToS3Exception(Exception): + """Exception for data upload to S3""" + pass diff --git a/tests/end_to_end/utils/federation_helper.py b/tests/end_to_end/utils/federation_helper.py index 99d1a6c6b5..63c7261939 100644 --- a/tests/end_to_end/utils/federation_helper.py +++ b/tests/end_to_end/utils/federation_helper.py @@ -18,6 +18,7 @@ import tests.end_to_end.utils.docker_helper as dh import tests.end_to_end.utils.exceptions as ex import tests.end_to_end.utils.interruption_helper as intr_helper +import tests.end_to_end.utils.s3_helper as s3_helper import tests.end_to_end.utils.ssh_helper as ssh from tests.end_to_end.models import collaborator as col_model from tests.end_to_end.utils.generate_report import convert_to_json @@ -271,13 +272,14 @@ def run_federation_for_dws(fed_obj, use_tls): return True -def verify_federation_run_completion(fed_obj, test_env, num_rounds): +def verify_federation_run_completion(fed_obj, test_env, num_rounds, time_for_each_round=100): """ Verify the completion of the process for all the participants Args: fed_obj (object): Federation fixture object test_env (str): Test environment num_rounds (int): Number of rounds + time_for_each_round (int): Time for each round (in seconds) Returns: list: List of response (True or False) for all the participants """ @@ -291,6 +293,7 @@ def verify_federation_run_completion(fed_obj, test_env, num_rounds): participant, num_rounds, num_collaborators=len(fed_obj.collaborators), + time_for_each_round=time_for_each_round, ) for participant in fed_obj.collaborators + [fed_obj.aggregator] ] @@ -569,7 +572,7 @@ def verify_cmd_output( raise Exception(f"{error_msg}: {error}") -def setup_collaborator(index, workspace_path, local_bind_path): +def setup_collaborator(index, workspace_path, local_bind_path, data_path=None, calc_hash=False, colab_bucket_mapping=None): """ Setup the collaborator Includes - creation of collaborator objects, starting docker container, importing workspace, creating collaborator @@ -577,13 +580,16 @@ def setup_collaborator(index, workspace_path, local_bind_path): index (int): Index of the collaborator. Starts with 1. workspace_path (str): Workspace path local_bind_path (str): Local bind path + data_path (str): Data path + calc_hash (bool): Flag to indicate if hash calculation is required + colab_bucket_mapping (dict): Mapping of collaborator and its datasources """ local_agg_ws_path = constants.AGG_WORKSPACE_PATH.format(local_bind_path) try: collaborator = col_model.Collaborator( collaborator_name=f"collaborator{index}", - data_directory_path=index, + data_directory_path=index if data_path is None else data_path, workspace_path=f"{workspace_path}/collaborator{index}/workspace", ) create_persistent_store(collaborator.name, local_bind_path) @@ -611,6 +617,28 @@ def setup_collaborator(index, workspace_path, local_bind_path): except Exception as e: raise ex.CollaboratorCreationException(f"Failed to create collaborator: {e}") + # Calculate the hash of collaborator datasource (specific to torch/histology_s3 model). + if calc_hash: + json_data = s3_helper.create_collaborator_datasource_json( + colab_bucket_mapping=colab_bucket_mapping, + ) + # Modify the data/collaborator{index}/datasources.json file + # to include the data path for the collaborator + data_source_file = os.path.join( + local_col_ws_path, "data", "datasources.json" + ) + with open(data_source_file, "w") as file: + json.dump(json_data, file, indent=4) + log.debug(f"Modified data source file for {collaborator.name}: {data_source_file}") + + try: + # Calculate hash for the collaborator + collaborator.calculate_hash() + except Exception as e: + raise ex.HashCalculationException( + f"Failed to calculate hash for {collaborator.name}: {e}" + ) + return collaborator diff --git a/tests/end_to_end/utils/s3_helper.py b/tests/end_to_end/utils/s3_helper.py new file mode 100644 index 0000000000..2dd7f74062 --- /dev/null +++ b/tests/end_to_end/utils/s3_helper.py @@ -0,0 +1,99 @@ +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import shutil +import logging +from pathlib import Path + +import tests.end_to_end.utils.constants as constants +import tests.end_to_end.utils.exceptions as ex + +log = logging.getLogger(__name__) + + +def create_collaborator_datasource_json(colab_bucket_mapping, endpoint=constants.MINIO_URL): + """ + Create a datasources.json file for a collaborator. + + Args: + colab_bucket_mapping (dict): Mapping of given collaborator with its datasources + endpoint (str): S3 endpoint URL + + Returns: + JSON object: JSON object representing the datasource configuration + """ + collaborator_name = colab_bucket_mapping["collaborator"] + buckets = colab_bucket_mapping["buckets"] + local_data_path = colab_bucket_mapping["local_data_path"] + index = int(''.join(filter(str.isdigit, collaborator_name))) + data = {} + + for i, bucket in enumerate(buckets, 1): + ds_key = f"s3_ds{i}" + data[ds_key] = { + "type": "s3", + "params": { + "access_key_env_name": "MINIO_ROOT_USER", + "endpoint": endpoint, + "secret_key_env_name": "MINIO_ROOT_PASSWORD", + "secret_name": f"vault_secret_name{i}", + "uri": f"s3://{bucket}/" + } + } + # Add local datasource for odd collaborators (collaborator index is odd) + if index is not None and index % 2 == 1: + data[f"local_ds{index}"] = { + "type": "local", + "params": { + "path": str(Path(local_data_path).relative_to(Path.cwd())) + } + } + + return data + + +def upload_data_to_s3(s3_obj, colab_bucket_mapping_list): + """ + Upload data to S3 buckets based on the provided mapping. + Args: + s3_obj (S3Helper): S3Helper object for S3 operations + colab_bucket_mapping_list (list): List of dictionaries containing collaborator and bucket mapping + Returns: + bool: True if upload was successful, raises DataUploadToS3Exception exception otherwise + """ + for colab in colab_bucket_mapping_list: + folder_path = Path(colab["local_data_path"]) + buckets = colab["buckets"] + if len(buckets) == 2: + # Split the folder contents equally for two buckets + all_items = sorted([item for item in folder_path.iterdir() if item.is_dir() or item.is_file()]) + mid = len(all_items) // 2 + split_items = [all_items[:mid], all_items[mid:]] + for i, bucket_name in enumerate(buckets): + temp_dir = folder_path / f"tmp_upload_{i+1}" + temp_dir.mkdir(exist_ok=True) + for item in split_items[i]: + dest = temp_dir / item.name + if item.is_dir(): + shutil.copytree(item, dest) + else: + shutil.copy2(item, dest) + try: + s3_obj.upload_directory(dir_path=temp_dir, bucket_name=bucket_name) + log.info(f"Uploaded data to bucket {bucket_name} from {temp_dir}") + except Exception as e: + raise ex.DataUploadToS3Exception( + f"Failed to upload data to bucket {bucket_name}. Error: {e}" + ) + shutil.rmtree(temp_dir) + else: + # Only one bucket, upload the whole folder + bucket_name = buckets[0] + try: + s3_obj.upload_directory(dir_path=folder_path, bucket_name=bucket_name) + log.info(f"Uploaded data to bucket {bucket_name} from {folder_path}") + except Exception as e: + raise ex.DataUploadToS3Exception( + f"Failed to upload data to bucket {bucket_name}. Error: {e}" + ) + return True diff --git a/tests/end_to_end/utils/tr_workspace.py b/tests/end_to_end/utils/tr_workspace.py index 10715fa276..7dd52d02d3 100644 --- a/tests/end_to_end/utils/tr_workspace.py +++ b/tests/end_to_end/utils/tr_workspace.py @@ -6,12 +6,14 @@ import logging import os from pathlib import Path +import importlib import tests.end_to_end.utils.constants as constants import tests.end_to_end.utils.exceptions as ex import tests.end_to_end.utils.federation_helper as fh +import tests.end_to_end.utils.s3_helper as s3_helper import tests.end_to_end.utils.ssh_helper as ssh -from tests.end_to_end.models import aggregator as agg_model, model_owner as mo_model +from tests.end_to_end.models import aggregator as agg_model, model_owner as mo_model, s3_bucket as s3_model import tests.end_to_end.utils.docker_helper as dh log = logging.getLogger(__name__) @@ -97,6 +99,9 @@ def create_tr_workspace(request, eval_scope=False): tuple : A named tuple containing the objects for model owner, aggregator, and collaborators. """ + if request.config.model_name.lower() == constants.ModelName.TORCH_HISTOLOGY_S3.value: + colab_bucket_mapping_list = prepare_data_for_s3(request) + # get details of model owner, collaborators, and aggregator from common # workspace creation function workspace_path, local_bind_path, agg_domain_name, model_owner, plan_path, agg_workspace_path, initial_model_path = common_workspace_creation(request, eval_scope) @@ -135,15 +140,34 @@ def create_tr_workspace(request, eval_scope=False): collaborators = [] executor = concurrent.futures.ThreadPoolExecutor() - futures = [ - executor.submit( - fh.setup_collaborator, - index, - workspace_path=workspace_path, - local_bind_path=local_bind_path, - ) - for index in range(1, request.config.num_collaborators+1) - ] + # In case of torch/histology_s3, we need to pass the data path, flag to calculate hash + # and bucket mapping to the setup_collaborator function + if request.config.model_name.lower() == constants.ModelName.TORCH_HISTOLOGY_S3.value: + futures = [ + executor.submit( + fh.setup_collaborator, + index, + workspace_path=workspace_path, + local_bind_path=local_bind_path, + data_path="data", + calc_hash=True, + colab_bucket_mapping=next( + (item for item in colab_bucket_mapping_list if item["collaborator"] == f"collaborator{index}"), + None + ), + ) + for index in range(1, request.config.num_collaborators+1) + ] + else: + futures = [ + executor.submit( + fh.setup_collaborator, + index, + workspace_path=workspace_path, + local_bind_path=local_bind_path, + ) + for index in range(1, request.config.num_collaborators+1) + ] collaborators = [f.result() for f in futures] # Data setup requires total no of collaborators, thus keeping the function call @@ -373,3 +397,146 @@ def create_tr_dws_workspace(request, eval_scope=False): local_bind_path=local_bind_path, model_name=request.config.model_name, ) + + +def prepare_data_for_s3(request): + """ + Prepare data for S3. Includes starting minio server, creating bucket, and uploading data. + Args: + request (object): Pytest request object. + Returns: + dict: A dictionary containing the bucket mapping for each collaborator. + Example - + [ + {'collaborator': 'collaborator1', 'local_data_path': '/home/azureuser/openfl/data/1', 'buckets': ['bucket-1']}, + {'collaborator': 'collaborator2', 'local_data_path': '/home/azureuser/openfl/data/2', 'buckets': ['bucket-2-01', 'bucket-2-02']} + ] + """ + s3_obj = s3_model.S3Bucket() + + num_collaborators = request.config.num_collaborators + + # Import the dataloader module for torch/histology to download the data + # As the folder name contains hyphen, we need to use importlib to import the module + dataloader_module = importlib.import_module("openfl-workspace.torch.histology.src.dataloader") + + # Download the data for torch/histology in current folder as internally it uses the current folder as data path + try: + log.info(f"Downloading data for {constants.ModelName.TORCH_HISTOLOGY_S3.value}") + dataloader_module.HistologyDataset() + log.info("Download completed") + except Exception as e: + raise ex.DataDownloadException( + f"Failed to download data for {constants.ModelName.TORCH_HISTOLOGY_S3.value}. Error: {e}" + ) + + # Distibute the downloaded data/folders among the collaborators + hist_data_path = Path.cwd().absolute() / 'data' # We cannot change it, as the data loader is using this path without any input + try: + distribute_data_to_collaborators(num_collaborators, hist_data_path) + except Exception as e: + raise ex.DataSetupException( + f"Failed to distribute data to collaborators. Error: {e}" + ) + + # Start minio server, create S3 buckets and upload the data to S3 + try: + s3_obj.start_minio_server( + data_dir=os.path.join(Path().home(), request.config.results_dir, constants.MINIO_DATA_FOLDER) + ) + log.info("Started minio server") + except Exception as e: + raise ex.MinioServerStartException( + f"Failed to start minio server. Error: {e}" + ) + + # Create the buckets for each collaborator + # The bucket name will be bucket-1, bucket-2, ..., bucket-n + # where n is the number of collaborators + colab_bucket_mapping_list = [] + bucket_name = None + for index in range(1, num_collaborators + 1): + try: + folder_path = hist_data_path / str(index) + if index % 2 == 0: + bucket_list = [] + for suffix in ["01", "02"]: + bucket_name = f"bucket-{index}-{suffix}" + s3_obj.create_bucket(bucket_name=bucket_name) + log.info(f"Created bucket {bucket_name}") + bucket_list.append(bucket_name) + colab_bucket_mapping_list.append({ + "collaborator": f"collaborator{index}", + "local_data_path": str(folder_path), + "buckets": bucket_list + }) + else: + bucket_name = f"bucket-{index}" + s3_obj.create_bucket(bucket_name=bucket_name) + log.info(f"Created bucket {bucket_name}") + colab_bucket_mapping_list.append({ + "collaborator": f"collaborator{index}", + "local_data_path": str(folder_path), + "buckets": [bucket_name] + }) + except Exception as e: + raise ex.S3BucketCreationException( + f"Failed to create bucket {bucket_name} for collaborator{index}. Error: {e}" + ) + + log.info(f"Bucket mapping: {colab_bucket_mapping_list}") + + # List the buckets to verify + s3_obj.list_buckets() + + # Copy the data to the S3 buckets by equally distributing the data among the collaborators + s3_helper.upload_data_to_s3(s3_obj, colab_bucket_mapping_list) + + return colab_bucket_mapping_list + + +def distribute_data_to_collaborators(num_collaborators, data_path): + """ + Distribute the data among the collaborators uniformly. + Example: Assuming num_collaborators is 3 + If data_path has folder Kather_texture_2016_image_tiles_5000 (torch/histology) which further has 8 subfolders, + then the data will be distributed as: + collaborator1: 1 / first 3 subfolders + collaborator2: 2 / next 3 subfolders + collaborator3: 3 / last 2 subfolders + If data_path itself has multiple folders say 8, then the data will be distributed as: + collaborator1: 1 / first 3 folders + collaborator2: 2 / next 3 folders + collaborator3: 3 / last 2 folders + Args: + num_collaborators (int): Number of collaborators. + data_path (str): Path to the data directory. + Raises: + Exception: If the data distribution fails. + """ + # If data_path has only one folder, go inside it and use its subfolders + all_entries = [f for f in data_path.iterdir() if f.is_dir()] + if len(all_entries) == 1: + # Use subfolders inside the single folder + all_folders = [f for f in all_entries[0].iterdir() if f.is_dir()] + else: + all_folders = all_entries + all_folders.sort() # For deterministic split + + num_folders = len(all_folders) + folders_per_collab = [num_folders // num_collaborators] * num_collaborators + + # Distribute the remainder (if any) to the first few collaborators + for i in range(num_folders % num_collaborators): + folders_per_collab[i] += 1 + + start = 0 + for index in range(1, num_collaborators + 1): + collaborator_data_path = data_path / str(index) + collaborator_data_path.mkdir(parents=True, exist_ok=True) + end = start + folders_per_collab[index - 1] + for folder in all_folders[start:end]: + # Move or copy the folder to the collaborator's directory + # Here we move; use shutil.copytree if you want to copy instead + folder.rename(collaborator_data_path / folder.name) + start = end From cf0b4ff7f00f5de917e91554bced58e9527809fb Mon Sep 17 00:00:00 2001 From: Payal Chaurasiya Date: Wed, 21 May 2025 17:06:28 +0530 Subject: [PATCH 09/10] Add TaskRunner Analytics E2E workflow and integrate into PQ pipeline (#1638) * Add TaskRunner Analytics E2E workflow and integrate into PQ pipeline Signed-off-by: Chaurasiya, Payal * review comments Signed-off-by: Chaurasiya, Payal * fix rest and add models Signed-off-by: Chaurasiya, Payal * add rest test Signed-off-by: Chaurasiya, Payal * add rest test Signed-off-by: Chaurasiya, Payal * comment restapi Signed-off-by: Chaurasiya, Payal * Add Smokers health Signed-off-by: Chaurasiya, Payal * remove logs Signed-off-by: Chaurasiya, Payal * Add review comments Signed-off-by: Chaurasiya, Payal * Review comments Signed-off-by: Chaurasiya, Payal * restructure pq Signed-off-by: Chaurasiya, Payal --------- Signed-off-by: Chaurasiya, Payal --- .github/workflows/pq_pipeline.yml | 15 ++- .../task_runner_fed_analytics_e2e.yml | 108 ++++++++++++++++++ tests/end_to_end/models/model_owner.py | 2 +- tests/end_to_end/pytest.ini | 1 + .../test_suites/tr_fed_analytics_tests.py | 70 ++++++++++++ tests/end_to_end/utils/constants.py | 3 + 6 files changed, 196 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/task_runner_fed_analytics_e2e.yml create mode 100644 tests/end_to_end/test_suites/tr_fed_analytics_tests.py diff --git a/.github/workflows/pq_pipeline.yml b/.github/workflows/pq_pipeline.yml index 6fff3f8632..4a5107a485 100644 --- a/.github/workflows/pq_pipeline.yml +++ b/.github/workflows/pq_pipeline.yml @@ -80,7 +80,7 @@ jobs: (github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') || (github.event_name == 'workflow_dispatch') name: TaskRunner E2E - needs: set_commit_id_for_all_jobs + needs: task_runner_connectivity_e2e uses: ./.github/workflows/task_runner_basic_e2e.yml with: commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }} @@ -90,7 +90,7 @@ jobs: (github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') || (github.event_name == 'workflow_dispatch') name: TaskRunner Resiliency E2E - needs: task_runner_e2e + needs: task_runner_connectivity_e2e uses: ./.github/workflows/task_runner_resiliency_e2e.yml with: commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }} @@ -158,6 +158,16 @@ jobs: with: commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }} + task_runner_fed_analytics_e2e: + if: | + (github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') || + (github.event_name == 'workflow_dispatch') + name: TaskRunner Federated Analytics E2E + needs: task_runner_connectivity_e2e + uses: ./.github/workflows/task_runner_fed_analytics_e2e.yml + with: + commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }} + tr_verifiable_dataset_e2e: if: | (github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') || @@ -210,6 +220,7 @@ jobs: wf_secagg_e2e, task_runner_connectivity_e2e, task_runner_e2e, + task_runner_fed_analytics_e2e, task_runner_resiliency_e2e, task_runner_fedeval_e2e, task_runner_secure_agg_e2e, diff --git a/.github/workflows/task_runner_fed_analytics_e2e.yml b/.github/workflows/task_runner_fed_analytics_e2e.yml new file mode 100644 index 0000000000..0fc5b4caf0 --- /dev/null +++ b/.github/workflows/task_runner_fed_analytics_e2e.yml @@ -0,0 +1,108 @@ +--- +# Task Runner Federated Analytics E2E tests for bare metal approach + +name: Task_Runner_Fed_Analytics_E2E # Please do not modify the name as it is used in the composite action + +on: + workflow_call: + inputs: + commit_id: + required: false + type: string + workflow_dispatch: + inputs: + num_collaborators: + description: "Number of collaborators" + required: false + default: "2" + type: string + python_version: + description: "Python version" + required: false + default: "3.10" + type: choice + options: + - "3.10" + - "3.11" + - "3.12" + +permissions: + contents: read + +# Environment variables common for all the jobs +# DO NOT use double quotes for the values of the environment variables +env: + NUM_COLLABORATORS: ${{ inputs.num_collaborators || 2 }} + COMMIT_ID: ${{ inputs.commit_id || github.sha }} # use commit_id from the calling workflow + +jobs: + test_fed_analytics_histogram: + name: With TLS (federated_analytics/histogram, 3.11) # DO NOT change this name. + runs-on: ubuntu-22.04 + timeout-minutes: 30 + if: | + (github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') || + (github.event_name == 'workflow_dispatch') || + (github.event.pull_request.draft == false) + env: + MODEL_NAME: 'federated_analytics/histogram' + PYTHON_VERSION: ${{ inputs.python_version || '3.11' }} + + steps: + - name: Checkout OpenFL repository + id: checkout_openfl + uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_ID }} + + - name: Pre test run + uses: ./.github/actions/tr_pre_test_run + if: ${{ always() }} + + - name: Run Federated Analytics Histogram + id: run_tests + run: | + python -m pytest -s tests/end_to_end/test_suites/tr_fed_analytics_tests.py \ + -m task_runner_fed_analytics --model_name ${{ env.MODEL_NAME }} --num_collaborators ${{ env.NUM_COLLABORATORS }} + echo "Federated analytics histogram test run completed" + + - name: Post test run + uses: ./.github/actions/tr_post_test_run + if: ${{ always() }} + with: + test_type: "Sepal_Histogram_Analytics" + + test_fed_analytics_smokers_health: + name: With TLS (federated_analytics/smokers_health, 3.12) # DO NOT change this name. + runs-on: ubuntu-22.04 + timeout-minutes: 30 + if: | + (github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') || + (github.event_name == 'workflow_dispatch') || + (github.event.pull_request.draft == false) + env: + MODEL_NAME: 'federated_analytics/smokers_health' + PYTHON_VERSION: ${{ inputs.python_version || '3.12' }} + steps: + - name: Checkout OpenFL repository + id: checkout_openfl + uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_ID }} + + - name: Pre test run + uses: ./.github/actions/tr_pre_test_run + if: ${{ always() }} + + - name: Run Federated Analytics Smokers Health + id: run_tests + run: | + python -m pytest -s tests/end_to_end/test_suites/tr_fed_analytics_tests.py \ + -m task_runner_fed_analytics --model_name ${{ env.MODEL_NAME }} --num_collaborators ${{ env.NUM_COLLABORATORS }} + echo "Federated analytics smokers health test run completed" + + - name: Post test run + uses: ./.github/actions/tr_post_test_run + if: ${{ always() }} + with: + test_type: "Smokers_Health_Analytics" \ No newline at end of file diff --git a/tests/end_to_end/models/model_owner.py b/tests/end_to_end/models/model_owner.py index 3d2c8d0f9f..70da74e703 100644 --- a/tests/end_to_end/models/model_owner.py +++ b/tests/end_to_end/models/model_owner.py @@ -164,7 +164,7 @@ def modify_plan(self, param_config, plan_path): data["network"]["settings"]["require_client_auth"] = param_config.require_client_auth data["network"]["settings"]["use_tls"] = param_config.use_tls if param_config.tr_rest_api: - data["task_runner"]["settings"]["transport_protocol"] = "rest" + data["network"]["settings"]["transport_protocol"] = "rest" if param_config.secure_agg: data["aggregator"]["settings"]["secure_aggregation"] = True with open(plan_file, "w+") as write_file: diff --git a/tests/end_to_end/pytest.ini b/tests/end_to_end/pytest.ini index 52c41d5333..372b5b8b10 100644 --- a/tests/end_to_end/pytest.ini +++ b/tests/end_to_end/pytest.ini @@ -13,5 +13,6 @@ markers = task_runner_with_s3: mark a test as a task runner with S3 test. federated_runtime_301_watermarking: mark a test as a federated runtime 301 watermarking test. straggler_tests: mark a test as a straggler test. + task_runner_fed_analytics: mark a test as a task runner analytics test. asyncio_mode=auto asyncio_default_fixture_loop_scope="function" diff --git a/tests/end_to_end/test_suites/tr_fed_analytics_tests.py b/tests/end_to_end/test_suites/tr_fed_analytics_tests.py new file mode 100644 index 0000000000..2300a216ea --- /dev/null +++ b/tests/end_to_end/test_suites/tr_fed_analytics_tests.py @@ -0,0 +1,70 @@ +# Copyright 2020-2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import pytest +import logging +import os + + +from tests.end_to_end.utils.tr_common_fixtures import ( + fx_federation_tr, +) +from tests.end_to_end.utils import federation_helper as fed_helper +import json +import tests.end_to_end.utils.constants as constants + +log = logging.getLogger(__name__) + +# write a fixture to update request.config.num_rounds to 1 +@pytest.fixture(scope="function") +def set_num_rounds(request): + """ + Fixture to set the number of rounds for the test. + Args: + request (Fixture): Pytest fixture + """ + # Set the number of rounds to 1 + log.info("Setting number of rounds to 1 for analytics test") + request.config.num_rounds = 1 + if "federated_analytics" not in request.config.model_name: + pytest.skip( + f"Model name {request.config.model_name} is not supported for this test. " + "Please use a different model name." + ) + + +@pytest.mark.task_runner_fed_analytics +def test_federation_analytics(request, set_num_rounds, fx_federation_tr): + """ + Test federation via native task runner. + Args: + request (Fixture): Pytest fixture + fx_federation_tr (Fixture): Pytest fixture for native task runner + """ + # Start the federation + assert fed_helper.run_federation(fx_federation_tr) + + # Verify the completion of the federation run + assert fed_helper.verify_federation_run_completion( + fx_federation_tr, + test_env=request.config.test_env, + num_rounds=request.config.num_rounds, + ), "Federation completion failed" + + # verify that results get saved in save/results.json + result_path = os.path.join( + fx_federation_tr.aggregator.workspace_path, + "save", + "result.json" + ) + assert os.path.exists(result_path), f"Results file {result_path} does not exist" + + with open(result_path, "r") as f: + results = f.read() + try: + results_json = json.loads(results) + except json.JSONDecodeError as e: + log.warning("Results file is not valid JSON. Raw content:\n%s", results) + raise e + + assert results, f"Results file {result_path} is empty" \ No newline at end of file diff --git a/tests/end_to_end/utils/constants.py b/tests/end_to_end/utils/constants.py index 746f05d58c..69bb8728cf 100644 --- a/tests/end_to_end/utils/constants.py +++ b/tests/end_to_end/utils/constants.py @@ -22,6 +22,9 @@ class ModelName(Enum): GANDLF_SEG_TEST = "gandlf_seg_test" FLOWER_APP_PYTORCH = "flower-app-pytorch" NO_OP = "no-op" + KERAS_TENSORFLOW_MNIST = "keras/tensorflow/mnist" + FEDERATED_ANALYTICS_HISTOGRAM = "federated_analytics/histogram" + FEDERATED_ANALYTICS_SMOKERS_HEALTH = "federated_analytics/smokers_health" NUM_COLLABORATORS = 2 NUM_ROUNDS = 5 From 3a72c98264e55464781c7eca0a01d166d9ba41e5 Mon Sep 17 00:00:00 2001 From: Kevin Ta <116312994+kta-intel@users.noreply.github.com> Date: Thu, 22 May 2025 03:01:17 -0400 Subject: [PATCH 10/10] [Task Runner API] [Flower Interoperability] Pull `ConnectorFlower`, `FlowerTaskRunner`/`FlowerDataLoader`, and `FlowerInteropServer`/`FlowerInteropClient` into core OpenFL (#1633) * integrate flower collaborator into core collaborator Signed-off-by: kta-intel * formatting Signed-off-by: kta-intel * change task name interop -> prepare_for_interop, change references to local_grpc_server to interop_server Signed-off-by: kta-intel * add prepare_interop_server as callback to run on_experiment_begin Signed-off-by: kta-intel * fix typo Signed-off-by: kta-intel * change to on_round_begin() Signed-off-by: kta-intel * return empty dict Signed-off-by: kta-intel * set self.prepare_interop_server() to run on experiment begin Signed-off-by: kta-intel * remove self-explanatory comment, added another comment for clarity Signed-off-by: kta-intel * fix plan parsing and automatic assignment of grpc ports Signed-off-by: kta-intel * move taskrunner and dataloader to core openfl.federated Signed-off-by: kta-intel * move connector and interop components to core openfl Signed-off-by: kta-intel * remove comments about patch Signed-off-by: kta-intel * remove collaborator number setting, it is not being used Signed-off-by: kta-intel * adjust handling of flower directory. enabling user configuration with default location and use openfl's directory traversal check Signed-off-by: kta-intel * exit system if error Signed-off-by: kta-intel * update REAMDE.md Signed-off-by: kta-intel * update docstring Signed-off-by: kta-intel * override self.port Signed-off-by: kta-intel * remove tasks_connector.yaml Signed-off-by: kta-intel * updates Signed-off-by: kta-intel * pin flwr Signed-off-by: kta-intel * remove time Signed-off-by: kta-intel * formatting Signed-off-by: kta-intel * formatting Signed-off-by: kta-intel * formatting Signed-off-by: kta-intel * copyright Signed-off-by: kta-intel --------- Signed-off-by: kta-intel Co-authored-by: teoparvanov --- openfl-workspace/flower-app-pytorch/README.md | 42 +++-- .../flower-app-pytorch/plan/plan.yaml | 30 ++-- .../src/app-pytorch/pyproject.toml | 2 +- .../flower-app-pytorch/src/grpc/__init__.py | 0 .../src/grpc/connector/__init__.py | 1 - .../src/grpc/connector/flower/__init__.py | 0 .../src/grpc/connector/utils.py | 10 -- .../flower-app-pytorch/src/util.py | 13 -- .../workspace/plan/defaults/connector.yaml | 1 - .../plan/defaults/connector_flower.yaml | 8 + .../plan/defaults/tasks_connector.yaml | 4 - .../workspace/plan/defaults/tasks_flower.yaml | 11 ++ openfl/component/__init__.py | 5 + openfl/component/collaborator/collaborator.py | 15 +- openfl/component/connector/__init__.py | 9 + .../component/connector}/connector_flower.py | 162 ++++++++++++------ openfl/federated/__init__.py | 3 + openfl/federated/data/__init__.py | 3 + .../federated/data/loader_flower.py | 7 +- openfl/federated/plan/plan.py | 17 +- openfl/federated/task/__init__.py | 2 + .../federated/task/runner_flower.py | 152 ++++++++-------- openfl/transport/grpc/interop/__init__.py | 8 + .../transport/grpc/interop/flower/__init__.py | 8 + .../grpc/interop}/flower/interop_client.py | 20 ++- .../grpc/interop}/flower/interop_server.py | 46 +++-- .../interop}/flower/message_conversion.py | 10 +- openfl/utilities/utils.py | 19 ++ 28 files changed, 384 insertions(+), 224 deletions(-) delete mode 100644 openfl-workspace/flower-app-pytorch/src/grpc/__init__.py delete mode 100644 openfl-workspace/flower-app-pytorch/src/grpc/connector/__init__.py delete mode 100644 openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/__init__.py delete mode 100644 openfl-workspace/flower-app-pytorch/src/grpc/connector/utils.py delete mode 100644 openfl-workspace/flower-app-pytorch/src/util.py delete mode 100644 openfl-workspace/workspace/plan/defaults/connector.yaml create mode 100644 openfl-workspace/workspace/plan/defaults/connector_flower.yaml delete mode 100644 openfl-workspace/workspace/plan/defaults/tasks_connector.yaml create mode 100644 openfl-workspace/workspace/plan/defaults/tasks_flower.yaml create mode 100644 openfl/component/connector/__init__.py rename {openfl-workspace/flower-app-pytorch/src => openfl/component/connector}/connector_flower.py (53%) rename openfl-workspace/flower-app-pytorch/src/loader.py => openfl/federated/data/loader_flower.py (96%) rename openfl-workspace/flower-app-pytorch/src/runner.py => openfl/federated/task/runner_flower.py (59%) create mode 100644 openfl/transport/grpc/interop/__init__.py create mode 100644 openfl/transport/grpc/interop/flower/__init__.py rename {openfl-workspace/flower-app-pytorch/src/grpc/connector => openfl/transport/grpc/interop}/flower/interop_client.py (82%) rename {openfl-workspace/flower-app-pytorch/src/grpc/connector => openfl/transport/grpc/interop}/flower/interop_server.py (84%) rename {openfl-workspace/flower-app-pytorch/src/grpc/connector => openfl/transport/grpc/interop}/flower/message_conversion.py (94%) diff --git a/openfl-workspace/flower-app-pytorch/README.md b/openfl-workspace/flower-app-pytorch/README.md index c42ee65a61..a18d6059c8 100644 --- a/openfl-workspace/flower-app-pytorch/README.md +++ b/openfl-workspace/flower-app-pytorch/README.md @@ -28,7 +28,7 @@ Then create a certificate authority (CA) fx workspace certify ``` -This will create a workspace in your current working directory called `./my_workspace` as well as install the Flower app defined in `./app-pytorch.` This will be where the experiment takes place. The CA will be used to sign the certificates of the collaborators. +This will create a workspace in your current working directory called `./my_workspace` as well as install the Flower app defined in `./src/app-pytorch.` This will be where the experiment takes place. The CA will be used to sign the certificates of the collaborators. ### Setup Data We will be using CIFAR10 dataset. You can install an automatically partition it into 2 using the `./src/setup_data.py` script provided. @@ -63,44 +63,52 @@ data/ Notice under `./plan`, you will find the familiar OpenFL YAML files to configure the experiment. `cols.yaml` and `data.yaml` will be populated by the collaborators that will run the Flower client app and the respective data shard or directory they will perform their training and testing on. `plan.yaml` configures the experiment itself. The Open-Flower integration makes a few key changes to the `plan.yaml`: -1. Introduction of a new top-level key (`connector`) to configure a newly introduced component called `ConnectorFlower`. This component is run by the aggregator and is responsible for initializing the Flower `SuperLink` and connecting to the OpenFL server. The `SuperLink` parameters can be configured using `connector.settings.superlink_params`. If nothing is supplied, it will simply run `flower-superlink --insecure` with the command's default settings as dictated by Flower. It also includes the option to run the flwr run command via `connector.settings.flwr_run_params`. If `flwr_run_params` are not provided, the user will be expected to run `flwr run ` from the aggregator machine to initiate the experiment. Additionally, the `ConnectorFlower` has an additional setting `connector.settings.automatic_shutdown` which is default set to `True`. When set to `True`, the task runner will shut the SuperNode at the completion of an experiment, otherwise, it will run continuously. +1. Introduction of a new top-level key (`connector`) to configure a newly introduced component called `ConnectorFlower`. This component is run by the aggregator and is responsible for initializing the Flower `SuperLink` and connecting to the OpenFL server. Under `settings`, you will find the parameters for both the `flower-superlink` and `flower run` commands. All parameters are configuration by the user. By default, the `flower-superlink` will be run in `insecure` mode. The default `fleet_api_port` and `exec_api_port` will be automatically assigned, while the `exec_api_port` should be set to match the address configured in `./src/app-pytorch/pyproject.toml`. This is not set dynamically. In addition, since OpenFL handles cross network communication, `superlink_host` is set to a local host by default. For the `flwr run` command, the user should ensure that the `federation_name` and `flwr_app_name` is consistent with what is defined in `./src/` (if different than `app-pytorch`) and `./src//pyproject.toml`. The Flower directory `flwr_dir` is set to save the FAB in `save/.flwr`. Should a user configure this, the save directory must be located inside the workspace. Additionally, the `ConnectorFlower` has a setting `automatic_shutdown` which is default set to `True`. When set to `True`, the task runner will shut the SuperNode at the completion of an experiment, otherwise, it will run continuously. ```yaml connector: defaults: plan/defaults/connector.yaml template: openfl.component.ConnectorFlower settings: - automatic_shutdown: True - superlink_params: - insecure: True - serverappio-api-address: 127.0.0.1:9091 - fleet-api-address: 127.0.0.1:9092 - exec-api-address: 127.0.0.1:9093 - flwr_run_params: - flwr_app_name: "app-pytorch" - federation_name: "local-poc" + automatic_shutdown: true + insecure: true + exec_api_port: 9093 + fleet_api_port: 57085 + serverappio_api_port: 58873 + federation_name: local-poc + flwr_app_name: app-pytorch + flwr_dir: save/.flwr + superlink_host: 127.0.0.1 ``` -2. `FlowerTaskRunner` which will execute the `start_client_adapter` task. This task starts the Flower SuperNode and makes a connection to the OpenFL client. +2. `FlowerTaskRunner` which will execute the `start_client_adapter` task. This task starts the Flower SuperNode and makes a connection to the OpenFL client. In addition, you will notice there are settings for the `flwr_app_name`, `flwr_dir`, and `sgx_enabled`. `flwr_app_name` and `flwr_dir` are for prebuilding and installing the Flower app and should follow the convention as the `Connector` settings. `sgx_enabled` enables secure execution of the Flower `ClientApp` within an Intel® SGX enclave. When set to `True`, the task runner will launch the client app in an isolated process suitable for enclave execution and handle additional setup required for SGX compatibility (see [Running in Intel® SGX Enclave](#running-in-intel®-sgx-enclave) for details). ```yaml task_runner: defaults: plan/defaults/task_runner.yaml - template: openfl.federated.task.runner_flower.FlowerTaskRunner + template: openfl.federated.task.FlowerTaskRunner + settings : + flwr_app_name : app-pytorch + flwr_dir : save/.flwr + sgx_enabled: False ``` 3. `FlowerDataLoader` with similar high-level functionality to other dataloaders. -4. `Task` - we introduce a `tasks_connector.yaml` that will allow the collaborator to connect to Flower framework via the interop server. It also handles the task runner's `start_client_adapter` method, which actually starts the Flower component and interop server. By setting `local_server_port` to 0, the port is dynamically allocated. This is mainly for local experiments to avoid overlapping the ports. +4. `Task` - we introduce a `tasks_connector.yaml` that will allow the collaborator to connect to Flower framework via the interop server. It also handles the task runner's `start_client_adapter` method, which actually starts the Flower component and interop server. In the `settings`, the `interop_server` points to the `FlowerInteropServer` module that will establish connect between the OpenFL client and the Flower `SuperNode`. Like the `SuperLink` the host is set to the local host because OpenFL handles cross network communication. The `interop_server_port` and `clientappio_api_port` are automatically allocated by OpenFL. Setting `local_simulation` to `True` will further offest the ports based on the collaborator names in order to avoid overlapping ports. This is not an issue when collaborators are remote. ```yaml tasks: prepare_for_interop: function: start_client_adapter - kwargs: - interop_server_port: 0 + kwargs: {} settings: - interop_server: src.grpc.connector.flower.interop_server + clientappio_api_port: 59731 + interop_server: openfl.transport.grpc.interop.FlowerInteropServer + interop_server_host: 127.0.0.1 + interop_server_port: 51807 + local_simulation: true + ``` 5.`Collaborator` has an additional setting `interop_mode` which will invoke a callback to prepare the interop server that'll eventually be started by the Task Runner diff --git a/openfl-workspace/flower-app-pytorch/plan/plan.yaml b/openfl-workspace/flower-app-pytorch/plan/plan.yaml index f8d9984e66..a0bf1debf2 100644 --- a/openfl-workspace/flower-app-pytorch/plan/plan.yaml +++ b/openfl-workspace/flower-app-pytorch/plan/plan.yaml @@ -10,18 +10,13 @@ aggregator : write_logs : false connector : - defaults : plan/defaults/connector.yaml - template : src.connector_flower.ConnectorFlower + defaults : plan/defaults/connector_flower.yaml + template : openfl.component.ConnectorFlower settings : - automatic_shutdown : True - superlink_params : - insecure : True - serverappio-api-address : 127.0.0.1:9091 - fleet-api-address : 127.0.0.1:9092 - exec-api-address : 127.0.0.1:9093 - flwr_run_params : - flwr_app_name : "app-pytorch" - federation_name : "local-poc" + exec_api_port : 9093 + flwr_app_name : app-pytorch + federation_name : local-poc + flwr_dir : save/.flwr collaborator : defaults : plan/defaults/collaborator.yaml @@ -31,15 +26,14 @@ collaborator : data_loader : defaults : plan/defaults/data_loader.yaml - template : src.loader.FlowerDataLoader - settings : - collaborator_count : 2 + template : openfl.federated.data.FlowerDataLoader task_runner : defaults : plan/defaults/task_runner.yaml - template : src.runner.FlowerTaskRunner + template : openfl.federated.task.FlowerTaskRunner settings : - flwr_app_name: app-pytorch + flwr_app_name : app-pytorch + flwr_dir : save/.flwr sgx_enabled: False network : @@ -56,9 +50,7 @@ assigner : - prepare_for_interop tasks : - defaults : plan/defaults/tasks_connector.yaml - settings : - interop_server: src.grpc.connector.flower.interop_server + defaults : plan/defaults/tasks_flower.yaml compression_pipeline : defaults : plan/defaults/compression_pipeline.yaml \ No newline at end of file diff --git a/openfl-workspace/flower-app-pytorch/src/app-pytorch/pyproject.toml b/openfl-workspace/flower-app-pytorch/src/app-pytorch/pyproject.toml index 32a51b068d..64061c7542 100644 --- a/openfl-workspace/flower-app-pytorch/src/app-pytorch/pyproject.toml +++ b/openfl-workspace/flower-app-pytorch/src/app-pytorch/pyproject.toml @@ -8,7 +8,7 @@ version = "1.0.0" description = "" license = "Apache-2.0" dependencies = [ - "flwr-nightly", + "flwr-nightly==1.19.0.dev20250513", "flwr-datasets[vision]>=0.5.0", "torch==2.5.1", "torchvision==0.20.1", diff --git a/openfl-workspace/flower-app-pytorch/src/grpc/__init__.py b/openfl-workspace/flower-app-pytorch/src/grpc/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/openfl-workspace/flower-app-pytorch/src/grpc/connector/__init__.py b/openfl-workspace/flower-app-pytorch/src/grpc/connector/__init__.py deleted file mode 100644 index 035174e6f2..0000000000 --- a/openfl-workspace/flower-app-pytorch/src/grpc/connector/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from src.grpc.connector.utils import get_interop_server diff --git a/openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/__init__.py b/openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/openfl-workspace/flower-app-pytorch/src/grpc/connector/utils.py b/openfl-workspace/flower-app-pytorch/src/grpc/connector/utils.py deleted file mode 100644 index 0202346ea9..0000000000 --- a/openfl-workspace/flower-app-pytorch/src/grpc/connector/utils.py +++ /dev/null @@ -1,10 +0,0 @@ -import importlib - -def get_interop_server(framework: str = 'Flower') -> object: - if framework == 'Flower': - try: - module = importlib.import_module('src.grpc.connector.flower.interop_server') - return module.FlowerInteropServer - except ImportError: - print("Flower is not installed.") - return None diff --git a/openfl-workspace/flower-app-pytorch/src/util.py b/openfl-workspace/flower-app-pytorch/src/util.py deleted file mode 100644 index 750eff8f2a..0000000000 --- a/openfl-workspace/flower-app-pytorch/src/util.py +++ /dev/null @@ -1,13 +0,0 @@ -import re - -def is_safe_path(path): - """ - Validate the path to ensure it contains only allowed characters. - - Args: - path (str): The path to validate. - - Returns: - bool: True if the path is safe, False otherwise. - """ - return re.match(r'^[\w\-/\.]+$', path) is not None diff --git a/openfl-workspace/workspace/plan/defaults/connector.yaml b/openfl-workspace/workspace/plan/defaults/connector.yaml deleted file mode 100644 index 2b6645d22b..0000000000 --- a/openfl-workspace/workspace/plan/defaults/connector.yaml +++ /dev/null @@ -1 +0,0 @@ -template : openfl.component.Connector \ No newline at end of file diff --git a/openfl-workspace/workspace/plan/defaults/connector_flower.yaml b/openfl-workspace/workspace/plan/defaults/connector_flower.yaml new file mode 100644 index 0000000000..66a7e5e914 --- /dev/null +++ b/openfl-workspace/workspace/plan/defaults/connector_flower.yaml @@ -0,0 +1,8 @@ +template : openfl.component.ConnectorFlower +settings : + automatic_shutdown : True + insecure : True + superlink_host : 127.0.0.1 + serverappio_api_port : auto + fleet_api_port : auto + exec_api_port : auto \ No newline at end of file diff --git a/openfl-workspace/workspace/plan/defaults/tasks_connector.yaml b/openfl-workspace/workspace/plan/defaults/tasks_connector.yaml deleted file mode 100644 index 71b4db5bda..0000000000 --- a/openfl-workspace/workspace/plan/defaults/tasks_connector.yaml +++ /dev/null @@ -1,4 +0,0 @@ -prepare_for_interop: - function : start_client_adapter - kwargs : - interop_server_port : 0 # interop server port, 0 to dynamically allocate diff --git a/openfl-workspace/workspace/plan/defaults/tasks_flower.yaml b/openfl-workspace/workspace/plan/defaults/tasks_flower.yaml new file mode 100644 index 0000000000..6f0da7841e --- /dev/null +++ b/openfl-workspace/workspace/plan/defaults/tasks_flower.yaml @@ -0,0 +1,11 @@ +prepare_for_interop: + function : start_client_adapter + kwargs : + {} + +settings: + interop_server : openfl.transport.grpc.interop.FlowerInteropServer + interop_server_host : 127.0.0.1 + interop_server_port : auto + clientappio_api_port : auto + local_simulation : True diff --git a/openfl/component/__init__.py b/openfl/component/__init__.py index 5b0a22c487..d9e91981ae 100644 --- a/openfl/component/__init__.py +++ b/openfl/component/__init__.py @@ -3,6 +3,8 @@ """OpenFL Component Module.""" +from importlib import util + from openfl.component.aggregator.aggregator import Aggregator from openfl.component.aggregator.straggler_handling import ( CutoffTimePolicy, @@ -14,3 +16,6 @@ from openfl.component.assigner.random_grouped_assigner import RandomGroupedAssigner from openfl.component.assigner.static_grouped_assigner import StaticGroupedAssigner from openfl.component.collaborator.collaborator import Collaborator + +if util.find_spec("flwr") is not None: + from openfl.component.connector.connector_flower import ConnectorFlower diff --git a/openfl/component/collaborator/collaborator.py b/openfl/component/collaborator/collaborator.py index 178bd8076a..dc0c898aaf 100644 --- a/openfl/component/collaborator/collaborator.py +++ b/openfl/component/collaborator/collaborator.py @@ -7,6 +7,7 @@ import importlib import logging from enum import Enum +from os.path import splitext from time import sleep from typing import List, Optional @@ -607,8 +608,10 @@ def prepare_interop_server(self): """ # Initialize the interop server - framework = self.task_config["settings"]["interop_server"] - module = importlib.import_module(framework) + interop_server_template = self.task_config["settings"]["interop_server"] + interop_server_class = splitext(interop_server_template)[1].strip(".") + interop_server_module_path = splitext(interop_server_template)[0] + interop_server_module = importlib.import_module(interop_server_module_path) def receive_message_from_interop(message): """Receive message from interop server.""" @@ -616,5 +619,11 @@ def receive_message_from_interop(message): response = self.client.send_message_to_server(message, self.collaborator_name) return response - interop_server = module.FlowerInteropServer(receive_message_from_interop) + interop_server = getattr(interop_server_module, interop_server_class)( + receive_message_from_interop + ) + # Pass all keys in self.task_config['settings'] through to prepare_for_interop kwargs + self.task_config["prepare_for_interop"]["kwargs"].update( + self.task_config.get("settings", {}) + ) self.task_config["prepare_for_interop"]["kwargs"]["interop_server"] = interop_server diff --git a/openfl/component/connector/__init__.py b/openfl/component/connector/__init__.py new file mode 100644 index 0000000000..482e80e33c --- /dev/null +++ b/openfl/component/connector/__init__.py @@ -0,0 +1,9 @@ +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +"""OpenFL Connector Module.""" + +from importlib import util + +if util.find_spec("flwr") is not None: + from openfl.component.connector.connector_flower import ConnectorFlower diff --git a/openfl-workspace/flower-app-pytorch/src/connector_flower.py b/openfl/component/connector/connector_flower.py similarity index 53% rename from openfl-workspace/flower-app-pytorch/src/connector_flower.py rename to openfl/component/connector/connector_flower.py index afe7057201..24a8d35cb2 100644 --- a/openfl-workspace/flower-app-pytorch/src/connector_flower.py +++ b/openfl/component/connector/connector_flower.py @@ -1,22 +1,19 @@ -from logging import getLogger -logger = getLogger(__name__) +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 -import psutil +import os +import signal import subprocess import sys -import signal +from logging import getLogger -from src.grpc.connector.flower.interop_client import FlowerInteropClient -from src.util import is_safe_path +import psutil -import os +from openfl.transport.grpc.interop import FlowerInteropClient +from openfl.utilities.path_check import is_directory_traversal -flwr_home = os.path.join(os.getcwd(), "save/.flwr") -if not is_safe_path(flwr_home): - raise ValueError("Invalid path for FLWR_HOME") +logger = getLogger(__name__) -os.environ["FLWR_HOME"] = flwr_home -os.makedirs(os.environ["FLWR_HOME"], exist_ok=True) class ConnectorFlower: """ @@ -24,30 +21,66 @@ class ConnectorFlower: This class is responsible for constructing and managing the execution of Flower server commands. """ - def __init__(self, - superlink_params: dict, - flwr_run_params: dict = None, - automatic_shutdown: bool = True, - **kwargs): + def __init__( + self, + superlink_host, + fleet_api_port, + exec_api_port, + serverappio_api_port, + insecure=True, + flwr_app_name=None, + federation_name=None, + automatic_shutdown=True, + flwr_dir=None, + **kwargs, + ): """ Initialize the ConnectorFlower instance by setting up the necessary server commands. Args: - superlink_params (dict): Configuration settings for the Flower server. - flwr_run_params (dict, optional): Parameters for running the Flower application. - automatic_shutdown (bool, optional): Flag to enable automatic shutdown of the server. Defaults to True. + superlink_host (str): Host address for the Flower SuperLink. + fleet_api_port (int): Port for the fleet API. + exec_api_port (int): Port for the exec API. + serverappio_api_port (int): Port for the serverappio API. + insecure (bool): Whether to use insecure connections. Defaults to True. + flwr_app_name (str, optional): Name of the Flower application to run. Defaults to None. + federation_name (str, optional): Name of the federation. Defaults to None. + automatic_shutdown (bool, optional): Whether to enable automatic shutdown. + Defaults to True. + flwr_dir (str, optional): Directory for Flower app within the OpenFL workspace. + Plan.yaml configuration defaults to `save/.flwr` **kwargs: Additional keyword arguments. """ super().__init__() self._process = None + self.flwr_dir = flwr_dir + if is_directory_traversal(self.flwr_dir): + logger.error("Flower app directory path is out of the OpenFL workspace scope.") + sys.exit(1) + else: + os.makedirs(self.flwr_dir, exist_ok=True) + os.environ["FLWR_HOME"] = self.flwr_dir + self.automatic_shutdown = automatic_shutdown self.signal_shutdown_sent = False - self.superlink_params = superlink_params + self.superlink_params = { + "insecure": insecure, + "exec_api_port": exec_api_port, + "fleet_api_port": fleet_api_port, + "serverappio_api_port": serverappio_api_port, + } + self.superlink_host = superlink_host self.flwr_superlink_command = self._build_flwr_superlink_command() - self.flwr_run_params = flwr_run_params + if flwr_app_name is None or federation_name is None: + self.flwr_run_params = None + else: + self.flwr_run_params = { + "flwr_app_name": flwr_app_name, + "federation_name": federation_name, + } self.flwr_run_command = self._build_flwr_run_command() if self.flwr_run_params else None self.interop_client = None @@ -55,12 +88,14 @@ def __init__(self, def get_interop_client(self): """ - Create and return a LocalGRPCClient instance using the superlink parameters. + Create and return a FlowerInteropClient instance using the superlink parameters. Returns: - LocalGRPCClient: An instance configured with the connector address and server rounds. + FlowerInteropClient: An instance configured with the connector address + and server rounds. """ - connector_address = self.superlink_params.get("fleet-api-address", "0.0.0.0:9092") + connector_port = self.superlink_params.get("fleet_api_port") + connector_address = f"{self.superlink_host}:{connector_port}" self.interop_client = FlowerInteropClient(connector_address, self.automatic_shutdown) return self.interop_client @@ -74,20 +109,20 @@ def _build_flwr_superlink_command(self) -> list[str]: command = ["flower-superlink", "--fleet-api-type", "grpc-adapter"] - if "insecure" in self.superlink_params and self.superlink_params["insecure"]: + if self.superlink_params.get("insecure"): command += ["--insecure"] - if "serverappio-api-address" in self.superlink_params: - command += ["--serverappio-api-address", str(self.superlink_params["serverappio-api-address"])] - # flwr default: 0.0.0.0:9091 + serverappio_api_port = self.superlink_params.get("serverappio_api_port") + serverappio_api_address = f"{self.superlink_host}:{serverappio_api_port}" + command += ["--serverappio-api-address", serverappio_api_address] - if "fleet-api-address" in self.superlink_params: - command += ["--fleet-api-address", str(self.superlink_params["fleet-api-address"])] - # flwr default: 0.0.0.0:9092 + fleet_api_port = self.superlink_params.get("fleet_api_port") + fleet_api_address = f"{self.superlink_host}:{fleet_api_port}" + command += ["--fleet-api-address", fleet_api_address] - if "exec-api-address" in self.superlink_params: - command += ["--exec-api-address", str(self.superlink_params["exec-api-address"])] - # flwr default: 0.0.0.0:9093 + exec_api_port = self.superlink_params.get("exec_api_port") + exec_api_address = f"{self.superlink_host}:{exec_api_port}" + command += ["--exec-api-address", exec_api_address] if self.automatic_shutdown: command += ["--isolation", "process"] @@ -105,11 +140,12 @@ def _build_flwr_serverapp_command(self) -> list[str]: """ command = ["flwr-serverapp", "--run-once"] - if "insecure" in self.superlink_params and self.superlink_params["insecure"]: + if self.superlink_params["insecure"]: command += ["--insecure"] - if "serverappio-api-address" in self.superlink_params: - command += ["--serverappio-api-address", str(self.superlink_params["serverappio-api-address"])] + serverappio_api_port = self.superlink_params["serverappio_api_port"] + serverappio_api_address = f"{self.superlink_host}:{serverappio_api_port}" + command += ["--serverappio-api-address", serverappio_api_address] return command @@ -120,7 +156,7 @@ def is_flwr_serverapp_running(self): Returns: bool: True if the ServerApp is running, False otherwise. """ - if not hasattr(self, 'flwr_serverapp_subprocess'): + if not hasattr(self, "flwr_serverapp_subprocess"): logger.debug("[OpenFL Connector] ServerApp was never started.") return False @@ -130,13 +166,19 @@ def is_flwr_serverapp_running(self): if not self.signal_shutdown_sent: self.signal_shutdown_sent = True - logger.info("[OpenFL Connector] Experiment has ended. Sending signal to shut down Flower components.") + logger.info( + "[OpenFL Connector] Experiment has ended. Sending signal " + "to shut down Flower components." + ) return False def _stop_flwr_serverapp(self): """Terminate the `flwr_serverapp` subprocess if it is still active.""" - if hasattr(self, 'flwr_serverapp_subprocess') and self.flwr_serverapp_subprocess.poll() is None: + if ( + hasattr(self, "flwr_serverapp_subprocess") + and self.flwr_serverapp_subprocess.poll() is None + ): logger.debug("[OpenFL Connector] ServerApp still running. Stopping...") self.flwr_serverapp_subprocess.terminate() try: @@ -162,20 +204,35 @@ def _build_flwr_run_command(self) -> list[str]: return command def start(self): - """Launch the `flower-superlink` and `flwr run` subprocesses using the constructed commands.""" + """ + Launch the `flower-superlink` and `flwr run` subprocesses + using the constructed commands. + """ if self._process is None: - logger.info(f"[OpenFL Connector] Starting server process: {' '.join(self.flwr_superlink_command)}") + logger.info( + f"[OpenFL Connector] Starting server process: " + f"{' '.join(self.flwr_superlink_command)}" + ) self._process = subprocess.Popen(self.flwr_superlink_command) logger.info(f"[OpenFL Connector] Server process started with PID: {self._process.pid}") else: logger.info("[OpenFL Connector] Server process is already running.") - if hasattr(self, 'flwr_run_command') and self.flwr_run_command: - logger.info(f"[OpenFL Connector] Starting `flwr run` subprocess: {' '.join(self.flwr_run_command)}") + if hasattr(self, "flwr_run_command") and self.flwr_run_command: + logger.info( + f"[OpenFL Connector] Starting `flwr run` " + f"subprocess: {' '.join(self.flwr_run_command)}" + ) subprocess.run(self.flwr_run_command) - if hasattr(self, 'flwr_serverapp_command') and self.flwr_serverapp_command: - self.interop_client.set_is_flwr_serverapp_running_callback(self.is_flwr_serverapp_running) + if hasattr(self, "flwr_serverapp_command") and self.flwr_serverapp_command: + logger.info( + f"[OpenFL Connector] Starting server app subprocess: " + f"{' '.join(self.flwr_serverapp_command)}" + ) + self.interop_client.set_is_flwr_serverapp_running_callback( + self.is_flwr_serverapp_running + ) self.flwr_serverapp_subprocess = subprocess.Popen(self.flwr_serverapp_command) def stop(self): @@ -183,11 +240,18 @@ def stop(self): self._stop_flwr_serverapp() if self._process: try: - logger.info(f"[OpenFL Connector] Stopping server process with PID: {self._process.pid}...") + logger.info( + f"[OpenFL Connector] Stopping server process with PID: {self._process.pid}..." + ) main_process = psutil.Process(self._process.pid) sub_processes = main_process.children(recursive=True) for sub_process in sub_processes: - logger.info(f"[OpenFL Connector] Stopping server subprocess with PID: {sub_process.pid}...") + logger.info( + ( + f"[OpenFL Connector] Stopping server subprocess " + f"with PID: {sub_process.pid}..." + ) + ) sub_process.terminate() _, still_alive = psutil.wait_procs(sub_processes, timeout=1) for p in still_alive: diff --git a/openfl/federated/__init__.py b/openfl/federated/__init__.py index a8b443c059..e17857d330 100644 --- a/openfl/federated/__init__.py +++ b/openfl/federated/__init__.py @@ -26,6 +26,9 @@ if util.find_spec("xgboost") is not None: from openfl.federated.data import XGBoostDataLoader from openfl.federated.task import XGBoostTaskRunner +if util.find_spec("flwr") is not None: + from openfl.federated.data import FlowerDataLoader + from openfl.federated.task import FlowerTaskRunner __all__ = [ "Plan", diff --git a/openfl/federated/data/__init__.py b/openfl/federated/data/__init__.py index 53e56a7f7d..29667f7b23 100644 --- a/openfl/federated/data/__init__.py +++ b/openfl/federated/data/__init__.py @@ -16,3 +16,6 @@ if util.find_spec("xgboost") is not None: from openfl.federated.data.loader_xgb import XGBoostDataLoader # NOQA + +if util.find_spec("flwr") is not None: + from openfl.federated.data.loader_flower import FlowerDataLoader # NOQA diff --git a/openfl-workspace/flower-app-pytorch/src/loader.py b/openfl/federated/data/loader_flower.py similarity index 96% rename from openfl-workspace/flower-app-pytorch/src/loader.py rename to openfl/federated/data/loader_flower.py index 0b63f60af0..1a4305b198 100644 --- a/openfl-workspace/flower-app-pytorch/src/loader.py +++ b/openfl/federated/data/loader_flower.py @@ -1,11 +1,12 @@ -# Copyright (C) 2024 Intel Corporation +# Copyright (C) 2025 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """FlowerDataLoader module.""" -from openfl.federated.data.loader import DataLoader import os +from openfl.federated.data.loader import DataLoader + class FlowerDataLoader(DataLoader): """Flower Dataloader @@ -25,7 +26,7 @@ def __init__(self, data_path, **kwargs): Raises: FileNotFoundError: If the specified data path does not exist. - """ + """ super().__init__(**kwargs) if not os.path.exists(data_path): raise FileNotFoundError(f"The specified data path does not exist: {data_path}") diff --git a/openfl/federated/plan/plan.py b/openfl/federated/plan/plan.py index 8cdb5a13e5..4d0459cbbc 100644 --- a/openfl/federated/plan/plan.py +++ b/openfl/federated/plan/plan.py @@ -21,7 +21,7 @@ AggregatorRESTClient, AggregatorRESTServer, ) -from openfl.utilities.utils import getfqdn_env +from openfl.utilities.utils import generate_port, getfqdn_env SETTINGS = "settings" TEMPLATE = "template" @@ -317,9 +317,18 @@ def resolve(self): self.config["network"][SETTINGS]["agg_addr"] = getfqdn_env() if self.config["network"][SETTINGS]["agg_port"] == AUTO: - self.config["network"][SETTINGS]["agg_port"] = ( - int(self.hash[:8], 16) % (60999 - 49152) + 49152 - ) + self.config["network"][SETTINGS]["agg_port"] = generate_port(self.hash) + + if "connector" in self.config: + # automatically generate ports for Flower interoperability components + # if they are set to AUTO + for key, value in self.config["connector"][SETTINGS].items(): + if value == AUTO: + self.config["connector"][SETTINGS][key] = generate_port(self.hash) + + for key, value in self.config["tasks"][SETTINGS].items(): + if value == AUTO: + self.config["tasks"][SETTINGS][key] = generate_port(self.hash) def get_assigner(self): """Get the plan task assigner.""" diff --git a/openfl/federated/task/__init__.py b/openfl/federated/task/__init__.py index 7d1d7dfaeb..1763b3c54d 100644 --- a/openfl/federated/task/__init__.py +++ b/openfl/federated/task/__init__.py @@ -14,3 +14,5 @@ from openfl.federated.task.runner_pt import PyTorchTaskRunner # NOQA if util.find_spec("xgboost") is not None: from openfl.federated.task.runner_xgb import XGBoostTaskRunner # NOQA +if util.find_spec("flwr") is not None: + from openfl.federated.task.runner_flower import FlowerTaskRunner # NOQA diff --git a/openfl-workspace/flower-app-pytorch/src/runner.py b/openfl/federated/task/runner_flower.py similarity index 59% rename from openfl-workspace/flower-app-pytorch/src/runner.py rename to openfl/federated/task/runner_flower.py index 9fdbd8d619..dc4f4a598c 100644 --- a/openfl-workspace/flower-app-pytorch/src/runner.py +++ b/openfl/federated/task/runner_flower.py @@ -1,19 +1,23 @@ -from openfl.federated.task.runner import TaskRunner +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import hashlib +import logging +import os +import socket import subprocess -from logging import getLogger +import sys import time -import os -import numpy as np from pathlib import Path -import socket -from src.util import is_safe_path -flwr_home = os.path.join(os.getcwd(), "save/.flwr") -if not is_safe_path(flwr_home): - raise ValueError("Invalid path for FLWR_HOME") +import numpy as np + +from openfl.federated.task.runner import TaskRunner +from openfl.utilities.path_check import is_directory_traversal +from openfl.utilities.utils import generate_port + +logger = logging.getLogger(__name__) -os.environ["FLWR_HOME"] = flwr_home -os.makedirs(os.environ["FLWR_HOME"], exist_ok=True) class FlowerTaskRunner(TaskRunner): """ @@ -24,6 +28,7 @@ class FlowerTaskRunner(TaskRunner): in a subprocess. It provides options for both manual and automatic shutdown based on subprocess activity. """ + def __init__(self, **kwargs): """ Initialize the FlowerTaskRunner. @@ -33,29 +38,28 @@ def __init__(self, **kwargs): """ super().__init__(**kwargs) + self.flwr_dir = kwargs.get("flwr_dir") + if is_directory_traversal(self.flwr_dir): + logger.error("Flower app directory path is out of the OpenFL workspace scope.") + sys.exit(1) + else: + os.makedirs(self.flwr_dir, exist_ok=True) + os.environ["FLWR_HOME"] = self.flwr_dir + if self.data_loader is None: - flwr_app_name = kwargs.get('flwr_app_name') + flwr_app_name = kwargs.get("flwr_app_name") install_flower_FAB(flwr_app_name) return - self.sgx_enabled = kwargs.get('sgx_enabled') + self.sgx_enabled = kwargs.get("sgx_enabled") self.model = None - self.logger = getLogger(__name__) self.data_path = self.data_loader.get_node_configs() - self.client_port = kwargs.get('client_port') - if self.client_port is None: - self.client_port = get_dynamic_port() - self.shutdown_requested = False # Flag to signal shutdown - def start_client_adapter(self, - col_name=None, - round_num=None, - input_tensor_dict=None, - **kwargs): + def start_client_adapter(self, col_name=None, round_num=None, input_tensor_dict=None, **kwargs): """ Start the FlowerInteropServer and the Flower SuperNode. @@ -66,27 +70,43 @@ def start_client_adapter(self, **kwargs: Additional parameters for configuration. includes: interop_server (object): The FlowerInteropServer instance. + interop_server_host (str): The address of the interop server. + clientappio_api_port (int): The port for the clientappio API. + local_simulation (bool): Flag for local simulation to dynamically adjust ports. interop_server_port (int): The port for the interop server. """ def message_callback(): self.shutdown_requested = True - interop_server = kwargs.get('interop_server') - interop_server_port = kwargs.get('interop_server_port') - interop_server.set_end_experiment_callback(message_callback) - interop_server.start_server(interop_server_port) + interop_server = kwargs.get("interop_server") + interop_server_host = kwargs.get("interop_server_host") + interop_server_port = kwargs.get("interop_server_port") + clientappio_api_port = kwargs.get("clientappio_api_port") + + if kwargs.get("local_simulation"): + # Dynamically adjust ports for local simulation + logger.info(f"Adjusting ports for local simulation: {col_name}") + + interop_server_port = get_dynamic_port(interop_server_port, col_name) + clientappio_api_port = get_dynamic_port(clientappio_api_port, col_name) - # interop server sets port dynamically - interop_server_port = interop_server.get_port() + logger.info(f"Adjusted interop_server_port: {interop_server_port}") + logger.info(f"Adjusted clientappio_api_port: {clientappio_api_port}") + + interop_server.set_end_experiment_callback(message_callback) + interop_server.start_server(interop_server_host, interop_server_port) command = [ "flower-supernode", "--insecure", "--grpc-adapter", - "--superlink", f"127.0.0.1:{interop_server_port}", - "--clientappio-api-address", f"127.0.0.1:{self.client_port}", - "--node-config", f"data-path='{self.data_path}'" + "--superlink", + f"{interop_server_host}:{interop_server_port}", + "--clientappio-api-address", + f"{interop_server_host}:{clientappio_api_port}", + "--node-config", + f"data-path='{self.data_path}'", ] if self.sgx_enabled: @@ -94,34 +114,35 @@ def message_callback(): flwr_clientapp_command = [ "flwr-clientapp", "--insecure", - "--clientappio-api-address", f"127.0.0.1:{self.client_port}", + "--clientappio-api-address", + f"{interop_server_host}:{clientappio_api_port}", ] - self.logger.info("Starting Flower SuperNode process...") + logger.info("Starting Flower SuperNode process...") supernode_process = subprocess.Popen(command, shell=False) interop_server.handle_signals(supernode_process) if self.sgx_enabled: # Check if port is open before starting the client app - while not is_port_open('127.0.0.1', interop_server_port): + while not is_port_open(interop_server_host, interop_server_port): time.sleep(0.5) - time.sleep(1) # Add a small delay after confirming the port is open + time.sleep(1) # Add a small delay after confirming the port is open - self.logger.info("Starting Flower ClientApp process...") + logger.info("Starting Flower ClientApp process...") flwr_clientapp_process = subprocess.Popen(flwr_clientapp_command, shell=False) interop_server.handle_signals(flwr_clientapp_process) - self.logger.info("Press CTRL+C to stop the server and SuperNode process.") + logger.info("Press CTRL+C to stop the server and SuperNode process.") while not interop_server.termination_event.is_set(): if self.shutdown_requested: if self.sgx_enabled: - self.logger.info("Terminating Flower ClientApp process...") + logger.info("Terminating Flower ClientApp process...") interop_server.terminate_supernode_process(flwr_clientapp_process) flwr_clientapp_process.wait() - self.logger.info("Shutting down the server and SuperNode process...") + logger.info("Shutting down the server and SuperNode process...") interop_server.terminate_supernode_process(supernode_process) interop_server.stop_server() time.sleep(0.1) @@ -133,8 +154,6 @@ def message_callback(): return global_output_tensor_dict, local_output_tensor_dict - - def set_tensor_dict(self, tensor_dict, with_opt_vars=False): """ Set the tensor dictionary for the task runner. @@ -169,7 +188,7 @@ def save_native(self, filepath, **kwargs): if isinstance(filepath, Path): filepath = str(filepath) - assert filepath.endswith('.npz'), "Currently, only '.npz' file type is supported." + assert filepath.endswith(".npz"), "Currently, only '.npz' file type is supported." # Save the tensor dictionary to a .npz file np.savez(filepath, **self.tensor_dict) @@ -182,54 +201,43 @@ def get_required_tensorkeys_for_function(self, func_name, **kwargs): """Get tensor keys for functions. Return empty dict.""" return {} + def install_flower_FAB(flwr_app_name): """ - Build and install the patch for the Flower application. + Build and install Flower application. Args: - flwr_app_name (str): The name of the Flower application to patch. + flwr_app_name (str): The name of the Flower application. """ - flwr_dir = os.environ["FLWR_HOME"] - - # Change the current working directory to the Flower directory - os.chdir(flwr_dir) - # Run the build command - build_command = [ - "flwr", - "build", - "--app", - os.path.join("..", "..", "src", flwr_app_name) - ] + build_command = ["flwr", "build", "--app", os.path.join("src", flwr_app_name)] subprocess.check_call(build_command) # List .fab files after running the build command - fab_files = list(Path(flwr_dir).glob("*.fab")) + fab_files = list(Path.cwd().glob("*.fab")) # Determine the newest .fab file newest_fab_file = max(fab_files, key=os.path.getmtime) # Run the install command using the newest .fab file - subprocess.check_call([ - "flwr", - "install", - str(newest_fab_file) - ]) + install_command = ["flwr", "install", str(newest_fab_file)] + subprocess.check_call(install_command) + os.remove(newest_fab_file) + -def get_dynamic_port(): +def get_dynamic_port(base_port, collaborator_name): """ - Get a dynamically assigned port number. + Get a dynamically assigned port number based on collaborator name and base port. + This is only necessary for local simulation in order to avoid port conflicts. Returns: - int: An available port number assigned by the operating system. + int: The dynamically assigned port number. """ - # Create a socket - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: - # Bind to port 0 to let the OS assign an available port - s.bind(('127.0.0.1', 0)) - # Get the assigned port number - port = s.getsockname()[1] - return port + combined_string = f"{base_port}--{collaborator_name}" + hash_object = hashlib.md5(combined_string.encode()) + hash_value = hash_object.hexdigest() + return generate_port(hash_value) + def is_port_open(host, port): """Check if a port is open on the given host.""" diff --git a/openfl/transport/grpc/interop/__init__.py b/openfl/transport/grpc/interop/__init__.py new file mode 100644 index 0000000000..d481116591 --- /dev/null +++ b/openfl/transport/grpc/interop/__init__.py @@ -0,0 +1,8 @@ +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from importlib import util + +if util.find_spec("flwr") is not None: + from openfl.transport.grpc.interop.flower.interop_client import FlowerInteropClient + from openfl.transport.grpc.interop.flower.interop_server import FlowerInteropServer diff --git a/openfl/transport/grpc/interop/flower/__init__.py b/openfl/transport/grpc/interop/flower/__init__.py new file mode 100644 index 0000000000..d481116591 --- /dev/null +++ b/openfl/transport/grpc/interop/flower/__init__.py @@ -0,0 +1,8 @@ +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +from importlib import util + +if util.find_spec("flwr") is not None: + from openfl.transport.grpc.interop.flower.interop_client import FlowerInteropClient + from openfl.transport.grpc.interop.flower.interop_server import FlowerInteropServer diff --git a/openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/interop_client.py b/openfl/transport/grpc/interop/flower/interop_client.py similarity index 82% rename from openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/interop_client.py rename to openfl/transport/grpc/interop/flower/interop_client.py index 7159baf9e7..1f21ddbe38 100644 --- a/openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/interop_client.py +++ b/openfl/transport/grpc/interop/flower/interop_client.py @@ -1,7 +1,14 @@ +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import grpc from flwr.proto import grpcadapter_pb2_grpc -from src.grpc.connector.flower.message_conversion import flower_to_openfl_message, openfl_to_flower_message -from logging import getLogger + +from openfl.transport.grpc.interop.flower.message_conversion import ( + flower_to_openfl_message, + openfl_to_flower_message, +) + class FlowerInteropClient: """ @@ -9,6 +16,7 @@ class FlowerInteropClient: and the OpenFL Server. It converts messages between OpenFL and Flower formats and handles the send-receive communication with the Flower SuperNode using gRPC. """ + def __init__(self, superlink_address, automatic_shutdown=False): """ Initialize. @@ -23,8 +31,6 @@ def __init__(self, superlink_address, automatic_shutdown=False): self.end_experiment = False self.is_flwr_serverapp_running_callback = None - self.logger = getLogger(__name__) - def set_is_flwr_serverapp_running_callback(self, is_flwr_serverapp_running_callback): self.is_flwr_serverapp_running_callback = is_flwr_serverapp_running_callback @@ -47,8 +53,8 @@ def send_receive(self, openfl_message, header): # then the experiment has completed self.end_experiment = not self.is_flwr_serverapp_running_callback() - openfl_response = flower_to_openfl_message(flower_response, - header=header, - end_experiment=self.end_experiment) + openfl_response = flower_to_openfl_message( + flower_response, header=header, end_experiment=self.end_experiment + ) return openfl_response diff --git a/openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/interop_server.py b/openfl/transport/grpc/interop/flower/interop_server.py similarity index 84% rename from openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/interop_server.py rename to openfl/transport/grpc/interop/flower/interop_server.py index 16f104b576..732c5c8341 100644 --- a/openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/interop_server.py +++ b/openfl/transport/grpc/interop/flower/interop_server.py @@ -1,14 +1,22 @@ +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import logging -import threading import queue -import grpc +import signal +import threading +import time from concurrent.futures import ThreadPoolExecutor -from flwr.proto import grpcadapter_pb2_grpc -from src.grpc.connector.flower.message_conversion import flower_to_openfl_message, openfl_to_flower_message from multiprocessing import cpu_count -import signal + +import grpc import psutil -import time +from flwr.proto import grpcadapter_pb2_grpc + +from openfl.transport.grpc.interop.flower.message_conversion import ( + flower_to_openfl_message, + openfl_to_flower_message, +) logger = logging.getLogger(__name__) @@ -26,7 +34,8 @@ def __init__(self, send_message_to_client): Initialize. Args: - send_message_to_client (Callable): A callable function to send messages to the OpenFL client. + send_message_to_client (Callable): A callable function to send messages + to the OpenFL client. """ self.send_message_to_client = send_message_to_client self.end_experiment_callback = None @@ -41,18 +50,14 @@ def __init__(self, send_message_to_client): def set_end_experiment_callback(self, callback): self.end_experiment_callback = callback - def start_server(self, local_server_port): + def start_server(self, interop_server_host, interop_server_port): """Starts the gRPC server.""" self.server = grpc.server(ThreadPoolExecutor(max_workers=cpu_count())) grpcadapter_pb2_grpc.add_GrpcAdapterServicer_to_server(self, self.server) - self.port = self.server.add_insecure_port(f'[::]:{local_server_port}') + self.port = self.server.add_insecure_port(f"{interop_server_host}:{interop_server_port}") self.server.start() logger.info(f"OpenFL local gRPC server started, listening on port {self.port}.") - def get_port(self): - # Return the port that was assigned - return self.port - def stop_server(self): """Stops the gRPC server.""" if self.server: @@ -62,7 +67,10 @@ def stop_server(self): self.termination_event.set() def SendReceive(self, request, context): - """ Handles incoming gRPC requests by putting them into the request queue and waiting for the response. + """ + Handles incoming gRPC requests by putting them into the request + queue and waiting for the response. + Args: request: The incoming gRPC request. context: The gRPC context. @@ -87,8 +95,8 @@ def process_queue(self): openfl_response = self.send_message_to_client(openfl_request) # Check to end experiment - if hasattr(openfl_response, 'metadata'): - if openfl_response.metadata['end_experiment'] == 'True': + if hasattr(openfl_response, "metadata"): + if openfl_response.metadata["end_experiment"] == "True": self.end_experiment_callback() # Send response to Flower client @@ -98,6 +106,7 @@ def process_queue(self): def handle_signals(self, supernode_process): """Sets up signal handlers for graceful shutdown.""" + def signal_handler(_sig, _frame): self.terminate_supernode_process(supernode_process) self.stop_server() @@ -132,7 +141,10 @@ def terminate_process(self, process, timeout=5): process.terminate() process.wait(timeout=timeout) except psutil.TimeoutExpired: - logger.debug(f"Timeout expired while waiting for process {process.pid} to terminate. Killing the process.") + logger.debug( + f"Timeout expired while waiting for process {process.pid} " + "to terminate. Killing the process." + ) process.kill() except psutil.NoSuchProcess: logger.debug(f"Process {process.pid} does not exist. Skipping.") diff --git a/openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/message_conversion.py b/openfl/transport/grpc/interop/flower/message_conversion.py similarity index 94% rename from openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/message_conversion.py rename to openfl/transport/grpc/interop/flower/message_conversion.py index d900b83cf0..43be8b19de 100644 --- a/openfl-workspace/flower-app-pytorch/src/grpc/connector/flower/message_conversion.py +++ b/openfl/transport/grpc/interop/flower/message_conversion.py @@ -1,9 +1,12 @@ +# Copyright 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from flwr.proto import grpcadapter_pb2 + from openfl.protocols import aggregator_pb2 -def flower_to_openfl_message(flower_message, - header=None, - end_experiment=False): + +def flower_to_openfl_message(flower_message, header=None, end_experiment=False): """ Convert a Flower MessageContainer to an OpenFL InteropMessage. @@ -40,6 +43,7 @@ def flower_to_openfl_message(flower_message, openfl_message.metadata.update({"end_experiment": str(end_experiment)}) return openfl_message + def openfl_to_flower_message(openfl_message): """ Convert an OpenFL InteropMessage to a Flower MessageContainer. diff --git a/openfl/utilities/utils.py b/openfl/utilities/utils.py index bab2ccc8c3..4f4e5fc2eb 100644 --- a/openfl/utilities/utils.py +++ b/openfl/utilities/utils.py @@ -263,3 +263,22 @@ def remove_readonly(func, path, _): func(path) return shutil.rmtree(path, ignore_errors=ignore_errors, onerror=remove_readonly) + + +def generate_port(hash, port_range=(49152, 60999)): + """ + Generate a deterministic port number based on a hash and a unique key. + + Args: + hash (str): A string representing the hash of the plan. + port_range (tuple): A tuple containing the minimum and maximum port + numbers (inclusive). The default range is (49152, 60999). + + Returns: + int: A port number within the specified range. + """ + min_port, max_port = port_range + # Use the first 8 characters of the unique hash to ensure deterministic output + hash_segment = hash[:8] + port = int(hash_segment, 16) % (max_port - min_port) + min_port + return port