From 728e16733406791c43bd545518393fae408c33ef Mon Sep 17 00:00:00 2001 From: Laurent Mazare Date: Wed, 20 Sep 2023 13:09:35 +0100 Subject: [PATCH] Add details on wuerstchen. (#911) --- README.md | 6 ++++ candle-examples/examples/wuerstchen/README.md | 27 ++++++++++++++++++ .../examples/wuerstchen/assets/cat.jpg | Bin 0 -> 38638 bytes 3 files changed, 33 insertions(+) create mode 100644 candle-examples/examples/wuerstchen/README.md create mode 100644 candle-examples/examples/wuerstchen/assets/cat.jpg diff --git a/README.md b/README.md index 3d1b10fe..93a47082 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,11 @@ We also provide a some command line based examples using state of the art models +- [Wuerstchen](./candle-examples/examples/wuerstchen/): another text to + image generative model. + + + - [yolo-v3](./candle-examples/examples/yolo-v3/) and [yolo-v8](./candle-examples/examples/yolo-v8/): object detection and pose estimation models. @@ -142,6 +147,7 @@ If you have an addition to this list, please submit a pull request. - Bert. - Whisper (multi-lingual support). - Stable Diffusion v1.5, v2.1, XL v1.0. + - Wurstchen v2. - Computer Vision Models. - DINOv2. - EfficientNet. diff --git a/candle-examples/examples/wuerstchen/README.md b/candle-examples/examples/wuerstchen/README.md new file mode 100644 index 00000000..1b8accd1 --- /dev/null +++ b/candle-examples/examples/wuerstchen/README.md @@ -0,0 +1,27 @@ +# candle-wuerstchen: Efficient Pretraining of Text-to-Image Models + +![anthropomorphic cat dressed as a fire fighter](./assets/cat.jpg) + +The `wuerstchen` example is a port of the [diffusers +implementation](https://github.com/huggingface/diffusers/tree/19edca82f1ff194c07317369a92b470dbae97f34/src/diffusers/pipelines/wuerstchen) for Würstchen v2. +The candle implementation reproduces the same structure/files for models and +pipelines. Useful resources: + +- [Official implementation](https://github.com/dome272/Wuerstchen). +- [Arxiv paper](https://arxiv.org/abs/2306.00637). +- Blog post: [Introducing Würstchen: Fast Diffusion for Image Generation](https://huggingface.co/blog/wuerstchen). + +## Getting the weights + +The weights are automatically downloaded for you from the [HuggingFace +Hub](https://huggingface.co/) on the first run. There are various command line +flags to use local files instead, run with `--help` to learn about them. + +## Running some example. + +```bash +cargo run --example wuerstchen --release --features cuda,cudnn -- \ + --prompt "Anthropomorphic cat dressed as a fire fighter" +``` + +The final image is named `sd_final.png` by default. diff --git a/candle-examples/examples/wuerstchen/assets/cat.jpg b/candle-examples/examples/wuerstchen/assets/cat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9ff67183f57fc7947c3cd3ff831f1a68c3dec81f GIT binary patch literal 38638 zcmb4}WlUU8*!CB9El`RSx5eFyyW8UKUbMLD;x5GN<{XVl!%0coSKD>oRW!(goK`#fr*Wsi;Ihlj$fFMLx_cwi{rl_ zFeoS}=xFGK7#M^c6eJWJ|L5}71;9au1;7H}U?>5wI52QHFmHbVBme*`EZl$7{r?3X z0S*xc772j--m8EOfQ5mBg@=bjKtP0thew2ifrSIW;~-EV;SyPOH7&>~>k%x#gLo9g z1x47JF5oQB3JH^@TD>lA%5&9XHBzquNy@#Jiz5QS)U1?kOkWfFZ4!+GZ{!6RRQH~%5;jPhb0-2IQZSh+rM8=Y zXRr&vV4a>CyFv7i0L`LCbOZ+yvx+b<3O5}^#Z(_|EHFkGmt<;kph=1VgA~=&F3NtW z$vi!Jce%*1YS5IR^x_K0H?BljR0u;v0>;!~vz?&t!vdlmYYI*=x^ zWXX_Pn!$c%+s@Ibi$pb_zE+E+i0PE76_IyJ`_*PmU{QGuxMo@|h3ke5 zwA|r)RvjhLVokx3F&q2|<{3pEXJ|T-PCw}~hX+fLted$h^f9PN?)G5I%NBzdK}|H(ZJZz z8K(LX6&a;Yz-Y;!*@`(pCEhF(2Tu_m7={>MKu$H7Myw*6LKkhjmJ=XDv zqY0H<=SWI^mDvG7JOQ{>0^5Y&3ZcKXn`^SM!y%gQsRJ)ER52wfIVjIn72ZIHN!%-R z;U>pz$~C~aqEc$;4C^sr(-(h;c;K>&dXePEyrt)A@uj}Q1?vfJH6H-!K2;>4Gwl%F zWRQ%2!&7G^i6}p@{+TR^#L)npQoZI#wpdn zHdtJ@kQfy1CW+G|ZHGPe5wV;U$h|uMSRv7ODKSL8-oR;U>yWb9!fg{aov1lonD7hc zTuOL2OmObmUgq+ zFY&Gz387KdW{*IP`@E&I6M5R?THc&ha2pOp543n`dY|07@QgyV+Z_#_uC3473R7og*3^j zU`np+N%h|HRtk0_G|^=EBtWz0%f|+>m-PS-4A3eT`K>5>e9-8w`(H$z^v63(?%oHs{&DA@^r zpix6Tv;7zgu9L!|?+1D)RYke2oY%ilDmMKbgSo*N714uiT#(-7r?o@Lk8$)YQNV5K;H_%fM@~f38|pl3xrJyLTTZF& z(AHCov1Rw$%gL*Jk~m*)mJKdaEc~|Swp@2l>8p_%^m$G|FLb$Pq!3jn=cZ`8o~lVC zRLPrHX9%vcG9nMA+XHFE2f`A@U>`rLscPQD>(5s7C~JNy@nBGn7%?OX%&Y|TIgjY& zRz;bBXOc_QF=Q*V!?EG}Od~iY)A}Tj=c|J>+_}IHsnq8n6m4@^ZsiCtP4wQcU5(#L zz2)ab1vhvRchcy#_lQ{i$)FQPUhdnTv5oC*?PK&0T#!dgH4piv>jW}Nv)<$zS>Xxvnl;cW|0J|{s@&0r zGp2ePSDbIj*Ff7YVpdC=+iaSHqD%N z+(Uq9)`rD&IFW>;fs&3Or0O zA_Apupcs8LR~}A%EzFXTZKrpC?+&mheHBuF0@O*1F}W#%tGeT=SvYh@`TJqHzIlLr zTLfrP2N{%k@T}YlSLb_d6FX0l%p||ii&tyH`HO%jFJu}(^N(n1H_CdvGnX9}{t&G1 z%`w1TP50_v7!c}XwLnlWLY~5!5a#h*NzmLJP4lbeTgXb6llv!+yG=RYaAsn)`F?Z4c5mjeZ0X_%I* zagufZr5HuVJvdn<5lA3sc^h90hX^0s|D%nGgZ|O>JQPy=q~n37ep8Z-t0Vj)v}B`? z11>G@dthOif-9~utlH+p65+Ek)p~FuYX)UuGD&<`}CqR-z;S=2X-s_iAZn z-Kf9h&i~+~SM_c#)oxK;>6vh$9QX+F5TQ`#umJ)=8?oK01m=qxw#JH6CYQHz3*YZd zHPX3N=lCiq(sgdU!YmWAHQGdgD%KdY*Tg^Tr$@gTWAEe5AJBK#Z+z>+UHidHx8^8f zhWC)aXG^+(V`Pm(M|n43x6qpuZwxiE~1W;6!{T>D3oKm2yQiab8hPJDWD-UK0$TH6|*Z7%rdAAHJGOmX76#vpR_MN zXKZzLc|6CoO{)KoRd_lN!D_S)KRX#Ph9|@3H$iQ~8 zDla)yiI4VjCvAzbT2;PmDm?Vsjl`$oCG&A=c501qy`HZy^fEs7)r-+4bfgdkK0k(F zxZlF*INUADv##G7(1xb{Rla{^B&^>1ZIpUl;?M?lQJ;^c7nd%2SGx#KMHP**A?2~o zYW?&T(?wK5i1r9B8evdf&msUJxT{irAq^NJZ3ds+cCnRz;(OcAQ9K5&?D;;o5c!qM zQA}AG4;y7UBjq6yOTI3;Bw2i)>U)dc##t{h>Jq^A`+`U=A!K*e`BXdtY}LGYs^CP) zm|ZU)iZmj3ju*Qrh09P#Iu5Pq`xugeH7Ee<2Cn& z^ZQ9_;oO4N#h>A25qe2t{+L~AG$Ay-6`;9$_^z&f0RpN`RqU~T;_D-`WOf2`zk&+Q zGOrnBm6eRWtYcYkS2E{i7p17E?ZgH++jShly(i9mI-Npd4T7JN>#37Kn&%IEk=@;BYpCbK|_5Lsq+ zc55TUP1kDYv;%ljJj6VgPTiPR>@rzNzE@*FbC*PhV|AnxDb^x+#I+#8)q zRaW*32_zo;(0xO`K-;t}Z1ksU#Xuwsk%(b+xa8mYbVp+I&&KV9h7n;q3taYQdq-(D z4te(!XDxDBk@*gb1$VSuB)#7=`!F5ntmI!kJp>_GX00N6QDp{PosGvaX4U=nGG~*# z9Aw$qoi-bGJojLN``#qq2_)xhRyAXhG``(x8S3;Ir06A5<9F4$CZAvfR_xUQ{+3a zV{PL|MuyDT<{3u>wa&CDd)p|`6QyOr@fAJDWO;BIpnu-WIr0<-6x@oSP?ANpd$#5R+0r$;>c#< zQR+Ul(6i?r1{+Led$jtNto%k_ld8*{8^UK{uVV+we=Mky`=!dJy!BHC=TQ7?s-H91 zK-+Mdwkd5m6uh%tc9@ser$S~EbI!8GPaZo9^2w(zKrH#FE?c7&T~U~uF6y@4&KTRC zQ$DOVB;&FP$^RwZ#vM4bX{2hO_El*>i1D|FKGGHH=D=oJaot3MAA2@>GMi^1O%$pL zj9t7~Q?fXBpThad~l(W=z4i{X_jDz3oOyqsky2;zb2+It)tQPy-9cM+hYuQAjX zqt-Wq`1YpUbJ@F#?;qGOUe;hm({KnTHhw{*-!~0|a@5VZ+HdH3cz0O?f#R=z0~|{`ke1 zCuR-rg$pR`75s3Kb3>ecy6}p3|It7_wgZnyNNuTKWcQ(@jp_i~A4B{`ot3#TJbif0 z1)+5Z@U0K=E)za6P{7$1iHl;;ryq?gfIVeD4a!-9*`ojY6gfT0UW)`>`@% z^h{O|^?ZvTG3g&=NZqNH1^@f%h{co>9)JpZc{i3t0?sEA0$-|p<2VezoNgt3)jR|0 zEQ~ByM}51Kad(GGZ!4OA$B z{|1;*YD6X?_LnPKR#4V&O(?^>*@(6VUq?48+(pyG?{Vpxni+`WV|+=7N_Yw5aCn`&ExDbA|B+^6ckaCV*~7r0d{> zFyJE*M})UR!kzv1RKb~PfMK~XC6>8e#;uIM-{rmvR++8&8~YfZ@m|O-^$Q0EoLE^G zH=|0Apl8JcvC4;IRw@=r^DncOeQUp0sU=soO{6it{PiXKxg^KQfI;=SBke03h2GpY z3SB*nAPJb(5En2;YV#+CvP;&(Dzs+T4w0A~lAcI0yj3X$6w(vv$csg^^j z?0DrJ42VG57v^6f*`#YdpBEGC_Oo9T>m!C2WX#7iO9kSBvT4bk4WipU;|D%+_8;c+ zy09cWmRZ5sL3?q$*$tgz8;hviMhy0rXQA`R=Y~csMvJ3b9O?EoLkdlBk&>xKquiO7L{e z*n7JoP;$(VTiLYAPsV68Sqg%fQ-?6I{xGcVP>SWKudAS3(HHf&o_`2Vt5_Dus{`Nc zqrl=p<;`Lk^zaHzixBWB!4nZ~>Oi8R3E=EOQ&kPnYrdkv5taAHrcYh&1$mQdGsODKndeIiCLaz#_WC6B z)EF;WTzyo5`>V(rdD zzHQk4Vzi`)K(Xq`2^?uj5UGS5E%_&t5M!ENOnxI0;iG1G0|2WGUuye^uf)nlV?B|t zKT(U^6ui3Uy#Y>*H33;Q4mUfeMB+4=FC5}8cJurkd9pg zdS%~B^f6~v5wl*Nxkj*RFhEV?d_U)NsvFh~q@Gg7!bP|Zuu7?j!d4#S(8=EbyV6L< zDg)r=KRY8nQZ>vH5$?Be8S3*Eq&@!Y90Ar$GP`Oft=b5yA>CZi6yOu{G*7BTCjX2|;byRk&X|W``+Gu?> zt05AS3?nBUC`BW`<3CN`W&$(;mDYW6`c7NV#dD?WU zEBvQP!}|li>PRn%bv@$^z`(fSqtO}BR`D!!Td~ZkHHWYk(O0EJFvL_L(z6pN(DI(E zDF5ia`VsEW+54m>?>(CUb-O~YW~|Tt2yg7^k7nKH^9^Tk20C0i8p%xT*x5ujVl2F5 zEQc0S?sI5B206M<#?#5$TSEHYrlydJoaKw6U!|FZkOapnpDH6?m#c(tCl+kfk6@>y zXVT~$r(p7&AtDeeIDgr~6dY++SuUlm|FjeePL*-HCzSl7& zw-v{2)e^{Rw|&p^8R6J*{pZ;aY%gM`xgn1gWrcKyZ^c_XE{^C!WJB;8CF(3<_cdv~ zAGYw2rrVzD0(kt7_IpRQaGS1(Qn8J`_7+ zvHbufc|%_f{P+wCeiXCJd-j{(YBU zv+g#4KfTlwxU2u!c>%qvw`DJtlJP_*S~+$Q^~H%Higlw65b*bjJbNg z8CJ2_~EW(o}zcjj`gZiCP8|%#7W9(vKmS68!Lm(YJsq~=a?i6 zZP^Yq%)?zPse+p_^jMvV|4>o}(N_~Vh=WzCT$$9m9IYeN);|~enWsFJ}J0gGNPBKE8Xhleyhn-&64^NuKH9MIgUwUhaER7V^PXV7|Ef zJ~mwOj>FHT`7gNhFy9W8luD08|B`W>Ag_R!|4m4hR6>b9miJOtU1sFRp`v!UyA|ry zVFr`n1L!Ic7f>me*jm1Pmx1Ru_F@Dt> zPe)>Xel+%tKHOmQH^7z2D^zO^Tj`I8jouF&-mnfP&uu3iX-+v@O!A*i_KrN`vT7|t z#RwhNm5?6)f&;Z$9R20~0?%KuWYYrF{zZp$gn0-9=6+ajfa40C&ftLI(vNVOTRa9V z$2bnJ?t#l>#A5aq%e3*Z1qg=yU07o3KS&QbiW!adD$GYkGrrTk4jcMcT$B|Pqj1B^ z$tR5w!MgfBf2zRcNB5idO6E}zv?{^2@Z+{rw}_zO;^*tn9oDmm=LKGJC< z`R zxZ_UUBdr>?nJeCVoK-?8(jQ!t7X0u6w86JhM@FnnLMv7$`l-EW_$>E_b8#eg3}<(u zqDK7EwM9O#N8smyfsAE9SOTi5O6$2e(Uc5I^=PbU_0&Uy5kX1CZoR}qE^wrf7Er3uJHjw{uG}aN2cwdDO7!sX zZ+zqoEYziyDAT0fXu5}3z2hyV`EhA{Ut!OOjG>aout609SS;$=Q`Ai6e@VzfU5J?b z2}(Oa-#b=^iZ=~4t0ACLN4J%l_&O zXj}w4#fleTblpw(jK)Lj2p>VoJkPDqM?%(IAe6kOL|$k}iawAXKDbE@Bk}H7W1tNV z3F@=N+-#e>g5)k1`=TV&uwc>XWXP)A7=0Pk!;13;;7n0X9X)*Jg&dLlulE~ibPC36 zJ&*Ayqg;pzr2j0{37#|hs^fFQTd|<9E$rbv)=^CDHNe#dX8Yn844!!dAT_=_?0-B? z2?p;GkNX3k%n@s*@Fb)Yx;=->`~$A8MEyqWZM;?H>Xw^+%{*Y<2I;VFA!AafpMKyM zv=lX$=qs?HCVORc^LYcjF84W-yC>~S zHF0F4-O(=WR7%F+@(heAJTVX{%gYc*c>|;=Al9`AeI!ZCUHN|Gfcnx&oh$nn*4=cFCLmMTqn_+3%{n z0hH`y-v2M~i9?-9Jm23S*Y5~B`XiSQtF1xXuU%TNa5S15mnNVBnU2qW~o0buReq3>6S zZZfY5(MZ?O&K7Dxw3t}m)ep~72%|vhfMduuQtrT`)*B$g#+U*(>Ut2EmE7}SagH~M^Nkxzn+|&_1p(+ov~^Z zI+~IXz1vLWdtn$AS!_XTdddFq#3@A?2rFf#gr=Oqj4_@$FfX_u@eit(LZ|8Rqwb71 z{%FwVTYWH>@oKuTOsOtk_M*W>dOeuKG&eU;Xkk25wyhyY$=Zu5Nm)Y1CoEx8#qnVU z?7+41{S!;})~8oaav70KZqJzGJNGq$L+1xi1~e<#=kh~II{9r+A*CwaVi}CCXu_Qc ziP*W0-gsRt>B92Ck8c10Ski#j^(4Md)x{ZBa;p+mcG0Dc6+3JcD6OvQKhlBm7*O?@ zCc9`J=kVY7{_1~j4~5#ZTDrX4mQ#4wKWa;cJd;t5&^eA+DXN?rLq{=;_hUJTiZ7`V z@M^1{WBql`@Xj>dNYyDwP7ifvNTO#k+n~3_5r}oYmk$e}%ZYjMs|4d2C3H;kN;(;f=q8h}V^*~N_`k~?_tqk?Ih`ju~m?7`%)TL!4i2pDAY zH1veBxprvjSHb7%p`ykkBgFYq+_IEEoI)J+?$uH}!WGc}-BlsXmibm%nkSDcxhvd0 zMWU?Adiq9mJ)#yY+b;0_h$^O$0SP0`=L97|v)vT(dUBV$oGc|dN=$Ox_^7e`gP~Ln z5o6*c!)uqdT%y?y4bst=(pVAiqU$>j^QXC+@4_4w;oQE0+xeW!kop9N+E1l_dn|#K zOff0Lnyx9&E|R7S&Jj)>O|6z{5fg(XTB#pPjdH)73GOzwa7fDOoM8)m7zrLNcTfc@ zCX73b?ChuMr^(DfWof}eoRnlH-fnsFzAI6aUV5N3oPhx*BZ@b` ztn3SY9rPI9^$p;p;3VQY%pF5^w*~18OifrKy8(A~w!)>+C1OcZ2cm}6jn?&jU8i}@ zZrZ#}*XW!LRrBAL3$>Uoe%Dy%2AlywUzg(CLw$R0h@x8DGb^d-f5?D<{w4WN^0sjZgRdYMCw zJjR7beyTYZa+S59sK}ilEnRc^)1AycVNUfnXLl138iUuS!}QmMtr@e1`(!ra>%7dIax^-EtGQc?$mZ3%8@1(9pw&D^;`D9U`tPd|a7bX#RmPrY6(2GCS`lhjdDm z>+qN%G#6@zm#AMVUXizIV#+k)ExE--91 zDkyhrVsMtSo^7r+snhG#gAcs;Y{cOY1MMsQ`TQ{os{{-xEjkR1&Iy>RB-k8qxy7fL zDSL?kt6U8Nc^X<1zJ+()_JOjPe-vc?;18gm>SR}hHldj&;7;aW4ZYZPPTo}F3?3+H z^k>;qxHiu=HiX-Y6jyMY&J<2MMeR4lT2C(UMI8Ll$j{|&oC~wCKt&4YJ{Dtw`jc8M zgtfY!N}F^E_Yy51pR|ajDM()Rs}yUA$Zb(8g^j)=1&ec43sK5QG=o&N<}Jf@7Tc}_ zo1BtvW`V<$g6H)Q&~AJCd#cH7T{85wMTN|>5_Q4Q>;r83Y{%mVUR+|^3DJS!4Jx(u zMFxc8G`;%Q01)p2MWIiHJc)%OzCn&$kdo zB1eqDEP&(Xk*?&^<;}{|GI|;!#yInym8CLz)>VbS-kjwVuw?;TI$(MXozMzBQ&wfSyDPJHNgi+ zFLyw1&>K%{_RiW7W%iObeqkPsMi2b8kC%QOePZg2IrVw-MYL!74M0iQdg2^{z?96; zgtCn0wJgo_(R4aY|3&@wu@6*2;$KXAiH3#sVA^a{(>q z9S>-N8>9Z7+u?BzyyfS%8!p)RmE%}@hhLe$Lob4p(DS9KaAV8i3H2vSqQYA6%%~l0 zYqnUBtg%>=v`9~9-mQ@5*;8FtmGhmR_9ha8u#)5EcHPE&tgJXzWT0N^z$lV@%^*tw zEi1j{5hI0f!f*^Wk6-bD;4`FWF?=71;i>m7z{5XD6D6*0@unJ{zi54FGEp-$Htp{A za}hYAFPAf}E+;tu$H;>gKee9t@FJi?b$;l2iGUc&Y2dmQeLsyf%;PyO%bW!|~MrTZnD;Rx@69W9FNjZpt6=L#I%N$Eha~raOv49F>mW2Qo!qf5 z``$ccdgev8`%nC!%|L9&PR9e13a;w?dcF4a#S<4b!YJmXX{b+*{kvQai&EAPoDXwk z*bzY);uje%8hTo9G_YBwhoM9j0O z6`(V!E%`JP^NACjWR<7rsI!gVYIrQkua_r$?8KE9&-MF@c{OP92Lf#~kwZ`JL1w>{ zbds8j47dy>O{q#Wt-aLZR6d0aISVY*gyT`MVv9`@%slj2XTaG_p{$eOz)yrL7teRP zDLOWfs?J+(?=VplpiNaM_42no40n{j5tc$9?pP zyRR#Z`U?R6>z_q_w~7ZG%#gY=t3=A+6fl~`>tT%Y*e1M7{mmRvlZWQ?C&VK&;hR6oPIQ8*s!vTP2ggGQW#eQc5Dbl5!q0nV1#Oix*(R1y({j9%JCjGgR@cobRARp z?lsR}jHeG`c2{nC4*}bRXKrn!iWX85D!e`kLP6Mn$P&vc;dO0468i}{zNeD@HjLhe zXFH7HS}>yjG}gY**t8WZ1_kgOsr+bZvixqol^B0S0-Mah|B`cmFEX4ehbG&HBiGdp zWcy+a{PiU}eqCc!MwI7Y%6jm3876Nn6^hku!R*%Y5SRLBUnB+!fdr*@BVF^NlZQPv z`#_tBs63T|$rq+&Uv6)5$jYQ`11-48CPGcUUt8-dY-kSZyp)v*du=(Ltk)It;lEj2 z-LyfV%x^MxZE3nzO|35CNp-pm%D7)4l4dgU_z_g=aqQ}%RZ5CM+2IP-pH}$$*jj?~ z{nXabaEc`e^@@S8xK2X2#^v}`^KkCI6 zo*`<2jkF5P?m(=?y?Z5fer%OLsD_D%CZ0xp=ixmyPGjr(+BGjptO{E`#cB?-*#~gV zamI+~UVn{m(Rr!*59MFvo1?0nW28^xfTA%Ix&BpOlRrPZB=M6e<#q|@2F>nVI!k&l zs+W90US4eok{c?k6$>9KaKN?>)N{pq5Dl&?9QZu?Ye}FAF#985+nlLjJ5`&xW7hI# zYC{`;O>p1vP?4gP8_^QJY&U~$o|*kpwRS}iFVaZ%1^UY0DG-5*HyveMs>Rf_?#rr4 ze5zD*G`U$Vj4-2j-4+R`LR4@L$Hx-U082xop3vGtxC#-T1e|MWy8|Db*h)8FokvXd z*+r%wJ;+g<+M>2kk1LKnmp{w1Ah4dokD%tsWQNg~BnSYX?V9aOF$fzAo)Ui+yj@P> zkB^nYSsZLdP!^7`jqAuBZDWrhtEF%iy;m-q6-F*b8)9`RhVM~~F zi)YSSR~YO?J^lV=q(Kkx_%!%0XWG#?mgxll^i;Q`^`-dpb0^QCCfY0c&!0)(2U4#0 z2Ck~&8Ai*K*#+Sd7c#H-;7@mlM22H|jF@!L|B!7cE=-&Tda7jGs*H`{nEyCxcgVTR znEB(DgG3!54ZWnf88!(2Cx}^Etn`;(Vj?&ZNli<_k^Xz`+-wMDfM#!4>)F0m{#nb# zkCt|05{%kBqy$Ws4}hJ6?u;|0g3?; zzx!qoMjHQgA~4AqP$-Uz+|Rz;-0RD!B9We-Lh{G)STA}mn%`)*Zgu)cN8##+MbC}v zAD>bq;7B?17RR`BF0F_$%`jI;eCAU^*+GKA9U>c01baI0aFvXC0#vUN%B2kVH;r`g zSUxY&#nP#N+*Wrk@o$?T<`RU!Swe-9Drpn!av(C}koMo5`4((9#==iX$ z@A$620PVq}f(hk%DCVjDpGcw~IEWNn11Kv^1cJrKiYmwuzX}7dooWqxsH4*c>c(uj zvrR%;D-sRk9ce>izYxJXeOB}n^wpNi9>PmTU~LUDiB;2Q=1e(SM4)d-!O!d-f*IHwa$Z$8;bBM@$leTvg$R6tH00$`K zkQf=d5zA(2P=7(zYjh1tMWs;~@s;=FWbrZjsiI~dWwC!nx-F*}tbWS*2dc>0fmq0Y z*pAnzkv_hGb>Q|q9`7qQg_L(#rW}7`@hjm9R!{aPw41@4S0(#*ANWI zwKToyVG3QL7J4tx&QyUf!uH%<}z!|*c&)}jbvrH5Bt&`HIA?i z7?ls^#jG^Xp%3l&PGqg5m)Sd7o(rw{=bp~6uakZ1_EKu8w-)F*AV$UpI8E`s!olWg zHoogXAn?&oe6ech16vAB98bh)4uV_q`vI+os~o|fNu~$Rw!?PI^C&C`c1vk1P;8D; zBaIMLOFzZ~O;^H?_IU^9DkgF!R+OY1g5o&COV~xqNFo3)t?D$0U%sc5WB=bOSGPMNeH zh1O?7_7uL?{k>)v{YGVGL%<*$aYa*@+h5z<-L{HP%3;@3;ev2hrnfv~nEE=Zk5yUr z&lw%M)0WQv3F+1R)DTYQ@3B`Z0Wzc+wuau0{dL&YVN)P3ZZ5f^wTrnEc!S^c8zKWR z6B=tJ>uFC|{)k#BmCcfbKnGXnprvEmo2H*prccI_szMvqB&E45bX`r4#Pj%Ny|KG7 zPGFw>{(BaBWIgIavMg7QXO(IS|uwd4^kW+GGuch}_A`vBx#wPxn|ZlLI6L9n!LT4TftD8h~1 zp1PT@E+Hbp<$eaI@Aj@AeFvRlKx*Yr6d=FU$(4&VgxXEzuTDfSKVPX&L_(41D?xq$ z%OVMG)z>dghz;-^L{iAK@D6Nb&Aut8qB502DkSoSTFQSh)9hFp(caNUcbjNZu`?O@ z2trAqZ|LQRfVMt?NiOQvdGg=|sx65_@aIz>1FhOP!5ELh zzn6ORx+SsR%Zm?gtYbcGW%I@kQpCOOJ6U4gy0g9HufRZdLl$P(9v!uka6eI`TxkrA z)|Q}~F;U#1XkXbN#M0G(sZ!b-_PT9mM(tR_%>Mm5!h|jQ1`dT87X#Ph(3(cSA(X5_ zq#ud_hQPI6z1XTsjL~>$w(9-I$>HA;W*u4ftua*PhqC8eM$&^DyCA}0#qzXJU$Ak7 zZVSZVlZ@p<$@WUm2$wr`k2p$%17;{|?Qlp^v^o?_iWQOZ4ZH(M@0TbjvUehFW}ieG-|=+>t+eq9c^i%W{eLc&dZ z9eFdwn{wSag)}=S?7%`~I^~cEO=xgh+A#X6fYiR`;uU-$oxFAnH$r&On3IJoox?}$ zsps%Dkq(GFiB1UuN#q%^USwp5E3l{p zQFDD%6G?)lpzdsfGGFAgt|#M5w2BnrKd1f8tXy0#uqVo<(XgBQh|d8=B2VX(Rs<_m zEIveLV!WfmEcT!lbOH5Jim7mtbG79f@@LS)pnHB= z)tqnFnc$R)f8kU*byVl>W$~{_K$PJFGhhu)T8!rvaS-aQ2AfJXM#wsUIp)o)}_-NrK-HWLy8Vm3JV=RP@1$d`nG`+syy z%~yH$x!e=}(LOS#BC&31zH z5h zkT56E;TqXbQD&DFFK59N@STaHag2?(&?OnF)#7`ecskTP*0)Vd*y15ZTQ~+0^Uo1_ zReNJD8P9O*Nryo(XQW0kGH6j;;SVZlgcCNJU^9}}4 z5f*c;xHdHMvZtVZ4s&Wd@&64xEc4G3wu=4Vw5)xi6c~pul%=eBd*7vC;r_OdSJM6VPTYU zPPVOFm5!Bsrsu5-@2^PQ<1)<)^-*JI<1_it_DGb6-E8Erz<@mI{o=g1=nDE26^H=dSGQ+h|KsU09MU z zZI1g|lg+pjSR+a?tp$C8lqGfZeyB|RJ$9BF*qyLh%S zDLg1+ovjc}gG#F(r&?)zcylb*Cfb6*lBLoHwRLMv6Kuya11!=&Ncp;VtV5JjnYu6Qg5htq6Ud^Tl1)6#hc!1d{)CaQ|FP`L zHnk6Vbvdia?{4y0O#BZ3nLuX0DcjsusB&x2C&G-jeDrOcb~S{Fm9jziuIE45{1asO zYm?kk>Hf_D2a`1Q$cdHkTJYoYKvxI1O3Ep#_Nl;k_OYK1GT?hvT74ew*@%)CTzZOP z$r*SqTzN!Z6tTb*_er&7Ac2C%6$O=`E#?(v)2+WAHB=`gbfrprp-vRGbUqljWU^Kv zRCLdJCtTE43sxnGQP6st^d1ehqH_(^Ko}e6-l}@!vubz3-rWh$#B-bqnEq0>XP%WH zbi6u+;lki!2Nhtl)8mN)a%B4VtZ4i`wy_3q3w7Aj*epnJ2gBN@CzPwC0^{-PqEw#vlgm;5cgVpBCZh@~v2 z4J2fC%9Z_THRZSkyeUajxj;FW`iis7bi@=sBW;ZAG4;(Syn$pK%4IF-&bxg{r$$0t zO7lX}5G0B6IyUY90QMiwh>qG)ys`MF9e}|8CX9~DpR2)<)tCZ*LTJAP#(?<1k3aLS0G zSoygl8Ty(nt(1;-9Q)t_lfU()jzuEtNN9=hfCHC2qjQ|&KTWF;+d6WIWC$1%T=pIQ zb$++g1;hE&awsa;9Rcf#NyQ&$+KuL)FwyU04%>+5Jh*RAN3~i_hMHc9bgn$m?5>v9 zH1jKR2|04Z>+9-j?lsLa;?X5QgcHgf^%<@YHv?;YH)S>6s~CzwCcrpgN3KDm;^G$? zLymFIB}VI4B-W73ZAn~_ys-}0RiQ4;qJhwF&6Day5;+h8 zN|HTB;-OIpJ!Ft|8(?OOibw$gP~`SKsuyM!MV>ZJRV(tUrlDvouY`jfjCzf+S6)tW z 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 literal 0 HcmV?d00001