From b9c0c4feda105a368385aedd19565629cf78add2 Mon Sep 17 00:00:00 2001 From: cottongin Date: Thu, 5 Feb 2026 09:58:26 -0500 Subject: [PATCH] Add macOS packaging with .dmg and .app bundle - Add cargo-bundle configuration for macOS app bundle - Create placeholder app icon (blue with "A" letter) - Update build-all.sh to create .dmg and .app.zip - Update README with new build output table macOS packages: - .dmg: Disk image for drag-to-Applications install - .app.zip: Zipped app bundle alternative --- Cargo.toml | 15 +++++++++++++++ README.md | 23 +++++++++++++---------- resources/AppIcon.icns | Bin 0 -> 74755 bytes scripts/build-all.sh | 25 +++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 resources/AppIcon.icns diff --git a/Cargo.toml b/Cargo.toml index 9515571..53d2004 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,3 +55,18 @@ assets = [ ] [package.metadata.generate-rpm.requires] ffmpeg = "*" + +[package.metadata.bundle] +name = "AVIF Maker" +identifier = "com.cottongin.avif-maker" +icon = ["resources/AppIcon.icns"] +version = "0.1.0" +copyright = "Copyright © 2026 cottongin. All rights reserved." +category = "public.app-category.graphics-design" +short_description = "Convert images and videos to AVIF format" +long_description = """ +AVIF Maker is a native desktop application for converting images and videos +to the AVIF format. It supports PNG, JPEG, WebP, GIF (animated), and video +files. Features include quality settings, speed presets, and batch processing. +""" +osx_minimum_system_version = "10.14" diff --git a/README.md b/README.md index b0b959a..84ed9a6 100644 --- a/README.md +++ b/README.md @@ -85,23 +85,23 @@ Three test files are included: - `Highlander-IMustFlipSmaller-OG.gif` - Animated GIF without transparency - `BTS-240-art.gif` - Animated GIF with transparency (1-bit alpha) -## Cross-Compilation (Build for Linux/Windows from macOS) +## Building Distributable Packages -Build distributable packages for multiple platforms from a single machine. +Build distributable packages for multiple platforms from a single macOS machine. ### Prerequisites ```bash # Install build tools -cargo install cross cargo-deb cargo-generate-rpm +cargo install cargo-bundle -# Ensure Docker Desktop is installed and running +# Ensure Docker Desktop is installed and running (for Linux/Windows builds) docker info ``` ### Docker Configuration (Apple Silicon Mac) -Before cross-compiling, configure Docker Desktop to share the Homebrew path: +Before cross-compiling Linux/Windows targets, configure Docker Desktop to share the Homebrew path: 1. Open Docker Desktop 2. Go to **Settings** → **Resources** → **File Sharing** @@ -111,10 +111,10 @@ Before cross-compiling, configure Docker Desktop to share the Homebrew path: ### Building ```bash -# First-time setup: Build Docker images +# First-time setup: Build Docker images (for Linux/Windows targets) ./scripts/build-all.sh --setup-docker -# Build all targets +# Build all targets (macOS, Linux, Windows) ./scripts/build-all.sh ``` @@ -124,9 +124,10 @@ After building, packages are in `dist//`: | Platform | Files | Notes | |----------|-------|-------| -| Linux x86_64 | `.deb`, `.rpm`, `.tar.gz` | Cross-compiled | -| Linux ARM64 | `.tar.gz` | Build natively on ARM64 Linux | -| Windows x86_64 | `.zip` | Cross-compiled | +| macOS | `.dmg`, `.app.zip` | Native build | +| Linux x86_64 | `.deb`, `.rpm`, `.tar.gz` | Cross-compiled via Docker | +| Linux ARM64 | — | Build natively on ARM64 Linux | +| Windows x86_64 | `.zip` | Cross-compiled via Docker | **Note:** Linux ARM64 cross-compilation is disabled due to an upstream `zune-jpeg` NEON bug. Build ARM64 natively on a Linux ARM64 system. @@ -150,6 +151,8 @@ avif-maker/ │ ├── drop_zone.rs # Drag-and-drop area │ ├── settings.rs # Settings panel │ └── queue.rs # Job queue display +├── resources/ +│ └── AppIcon.icns # macOS app icon ├── docker/ # Cross-compilation Dockerfiles ├── scripts/ │ └── build-all.sh # Build script for all platforms diff --git a/resources/AppIcon.icns b/resources/AppIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..e2a05db202252d424738e833ea0a0e6ba7a50493 GIT binary patch literal 74755 zcmeFac|29o{x`nQK!i+%%tJ*AO@@p|gh&*n%q0mKLT1jodL1@93 z+SgR+4zeGFAc*dYn(__siP`_5q6EJ`Sw0>F9|*@As+XYb7S0)PqHKQq$^%VJNEjSb zK?pxf2)$nf{IG)`2tp+yAQbpS?0=Vt{O?yWiKu@a?-x|Lekm6ee|be&QP&l*pl_hX ztawIC0=g@$}{l)Cw5-)k#LZAv`b%T*g6>B>{eLv=i} zk*zGk%d@8(pN%Np4T#mo-#3at;5)E)kJBsUo9m=Ti=4?t@s&w@6cyA);zKKK&e-$b z7k>RSAu8%9>R@aW-3_JLQ5+ML@}}v7N}m3j2RF_${h*jU#{)gP{)2C~F<%0mpr^+w zYflF^bZA`+D71u67ju{c{!iAbGv>i3~zzPsgLTe_gI7DbeM2!&oW6q)RZuIsr z!7Pc^PLD=cwed*tm#KFgPRe`si$Z-8BF`u!KHhsBIThi$E>Cm1Q{1{{iE>N#@|kdb zdJKgt`w(XjYAf#)Ymh3h3X{;F_mat%F^)K$5JQ)~^|cWCioK5yU{HP z>Iht_LQ1KlGN0gTUm6~%Cp2?HG-TQ~TR_^)A|vk$0{^OY#`soWtU-&9BF0`g@M2BL zM^hnA=(PL2g<$oaxbt%zZnuR_I=pyuok{1RoKFzr<0A*5+2$qU9JV31q~R6UHI{d$ zZkfv0PTspbBYRQLpXELDj^BXQ_KvPqdXD2}$4sOGf6PR!{M|-y@*go1 zxPLPf`z=6fL1-5UIuP;?GZ8o7pnI7CXA!3PIhKuDNCEMIiuxF%#@9<{nW*>%wI>2| z@N_QnK1&$4g}5BkI}?}rl?&R0MMQq$*o3?b+SH)qvG><32&3P{GqGu9q5|YEjOjVDH@Qmp1;4LnLydQFut(7BMkUOl1lQ72{SH4bW$x za084RK?KPLHHaiu?6M$ep$Qi4L9YOa66Zi8v{ZE&LSafN!d-^=K^^_bhH^W`|4=oU zi_jfSqQd##BZC+F7Z+B0=$Fd+I%ozxF1cUVL_ho?2+B-j6o+1~f5Yznoa^h&U;JhyLWxmhas8BBQ&}aMP@*B|(Z@7&il}mg zarmpxt?tgZvbpq|;~8Zp=g`6s+f2qH#{ebc*bkbE_1>D99?OuEjitk`%LPFRwe9bB zkJnNUeXW*}em*DaGQXp2n_h0jx*-LAV(g2HwR!RPqftHnIM%0>!^@5r zi<3p930Uph4m__F?9ZeKJlD+~?BJJMUs z+{Hs7xW~_f?A#u}X3Xa^mTvnFX_UGK1|i?7INN2&2O1J_;V|QU^zXupbM7)paYe{O zu#@I*9{43CL}XpPe?|?u=5~v8W_-w_U_D`Jg1)*5UeceStGj#hXmOZQ_%P)9Znq;q zVWQq7`TUArzGp3DE5P$K{G2lNAzW0sgRQlP)1pE#&eFuGq?$p7woUsArGOOV$)Paq z`J7ihdr+ioh-CQMJ>6-6PVJhMXV`)FEF+OcOCIp=! z*ww3GH6D)=xUNE84tF)3b2kSWXf8iR;#o;&H);>J2}+V~FW*8}BbjT0&`(}ewW{@5 z*Fd>uI$a~Za>pYA6guTx2PA1tg9;#Z!Bqy zJz0S&s9Rc@PdU99{ao%8m%X)e@tCcpRCs-&E9ALLV$EqT;}7@BQk8#Ji5MzFu)MxE zlIFxn2l3p+QW;C1P?CU`?V@ACGYz!wW{6W7DYT}?4AI` zJ+k^fh)%YZtqW8p_BjmUCc44WFo+z+A`!B!^^aTA1_R^ran`Ha;H%N z3hlgU-`WtR6ZiNLY8qQ&C?U7&X;t}YpD8l7SZhUCylN?@#^=k0)$KEW$lgEsvY*wVabs6b9m46v z3%VFS4XZM|xE+<7in)1MKuF2n^*J)1>0<#=pqP}_%h;5yH=_<;chDrfpqbBcCPa1eQjFEwX-j3H=+85{cU3HNfVT5 z72g9>9;3*X^lp`278E2ukLVsaIYJ9hv>HCYGC8HtQ43{jZgHz$w-wZc+gUWjA`=7b zhIj&`yk5N1`h03-;@)SL7s`-!jH%nTsjksJ6JIJV)@>`=l^WgHRsJUZ**8?0X9=k- zQ&FG1@9yP9$a;UElB2!w^l~tbv@Aao8Vaj=JQ;ixBXT_3Si4##0 z7JJ8!TIfjaD*<)wsW`56cZ!WFcS9{Xs49@>YQ6nNPS?|(2mSZ8)eozQL$@D43wBTa zsJlUven;+@EgRm1JCrw_62gwx5b%>f>2!&uCSK z^8}`JP4yeq!>mN@`{;i~3un(m5OdLgjTZLv0|fLZS}=4-d$51@A4nLPPK1B&a zB+_Ge?;@!%Us~#%sCc1u1l6&t5JK(u_S-|CQF(Hs|62_&B~y_cbqAJ^@#Mk1p|??4 zSb3L$y^$vIoO7-v@n~06TB^y@0;@+4qc2uica~?G-NNkbR0O=ou`^*HtLboUO?T&| zw4?0HaHCQ2hauUDC&zU2g;G_3tgv4caMHQPd7C@)$Jm&6t-mSV`@}@>eWKKy&hJTa z)C12B`&>${LGcH^s0vNAH3J0&5JPm$?dnUHymtbgBq@1KrbBDg8v+r|0Sq`Qq8PJt z9l_6oXvZh~q3KqSXO=I7)TSd`vi5T7^S@L5S;3Vn*p}z4_4hAP92M^m|2~gECtBz> z*R$aw9KEMk5FL3}7ewe$~D^A?TS;GqrQ3)$7Z7;8`c?UrkS}nK?D$Eyf zJ=Kf-t|Bd)znPM{-uW$9-Yef>)bm>BFod^orlW zp|rQYIw8e2L%+<^HQH?y0VjR`)Ziw>2DF#0VfNq~1(jxbVtsVqBq4RfM?R>p9&;lf zD0=gzN!QM!1(OwN((JdBj+0@r53FnzFOLkjFy>o@i++5n7v{HYtjRgjLA%g36vm?& z)3Z(CxY-{5X~)OhOXaIyry=OEqgPa+XGSJ*C!Ni!L zRUExuZX<|pG3>0Su)mbcAjxVhgw&QAy(b*#11QAldV;puxu?zTUkVkmNR>R z$zy%ry;`qF3#OAT`$g0zFCw-+o9Lnr?>T(;#E#ucHE|(sH-wr`h77PNTd{y*cSsHT zrx@KfPj-Em};JbziR;p1`F9$N1@q7#dDqx3wZQPYv0z6ifX zp0lUsOVKwRsfM#Aw}h?J2fVDi2cGoVna|~%GTL(Q`XQ>Q$zI?Hsm>ch=@-GB?U$M{ zlTm4sYh24AHkQF|yLAH^t8O%=;)$$ZHtL^2opr2og~~G9-HoZ(3`CCWql419ZoeNH ze(M@$X)MEDhGrMvUtVbJA{|kby5EUi^<1*vi>i)2p8%gJPMaL8j$l({x)9z;3+Dd( zUU;DcFcYDVod?(78x1zfWE0pabJ;_>FGozMLc&T3)%P~$u(4Uy*}YytR2r_Um9Naz z^a^9|>P)lnAf^n@Mb}b?YL@+zqK!q!|dNcXGcV zlYLr}Ds)x@LZs!`eU7|RBGTMj{b;;&OViE(Th6z2cQta`Z$LFsGn4XReZ(3kQu~m_ z6OmpHtdi$WG5bP3`*K^?-F$CzQa(*q*|z@Q?ieTA6#RERP9R3RSlW$dS|zn?h!6Uex1_)J^6@}uujD+Pf=+(JlX6j!Hw#}KUc8my zDil0Ak>#r^2IjVMFSJmFe_lS>aCeDiqq|!-;V!PCS@xdYIsRV(z)Xu_?`MTN!ZB>S z3WF8qgO#7)aOd}~jfYSvQ|orD^VIf?qA-C9v)vRYZdFXGdXz-^L8ovz`KU~_{pM%V zqneR{qz6tRk1^LtKf?o{hiON)nu4A@dqAKZc)dN!feo@8Hma^qJlhNR;J>uLLv5EfdX^SodCwq zhlMnr_OAbsFuLt%<0ac22dq?_R(iFUVdc+JR|D8GO@K!5KLL4&W%C#GEAiUXF zR_Z#qP{Y%caw>JRLH)*1tHf`A2`-+gN4Q9%=_v+Wn{vcNeJ{+sX)C8G?66R6E%U*@eoahbvZT& zPs*2uEF6Qnw5gd!&(AZ|gl$7N3c+7nZCeyJ_QIkYz1Xd13YEN}FIA~oQ#9vpt;hNm z&-%*tO1mvafpRA2P7(!swcsVY{&P!i?>Y$Lor0!moz3x(3H_ErFtl}kUAV?#0S>SH zrpJ-nk?|AuxSh?>>M=Du>Q3KhXmsQI`Gyxqk4R;$iyq??`nUow7i zKNGFE8>)wcbccr@^*4t8F8>h#L_z9o%AXCIM&Swpcx$5@|dTDwp&iEx`v9J}%rSKw(RV6_L8vj!05v4I)z9wrch`KVth=Cf+Z0;|> zJ{y@XE=t~Qwt<42XrF3iP>S% zq;%6{GQ#Bj^(|VIL>Bj%vDn}2oV|h?jY?1?)5&4DHw>GqdCqOH<#;KbRL(_w>Z7+ zf5pmGPTn6{r&5n?7MyLZ4~~)CE)EaV>NHJw`%7w$zJYrvlEZGuV$U$~PU)-of?9}&kJ&qn#(T4FzoA7v z@bX2BQDLroArM0TnO{pfvWb$9r%WVY>*Ui+_FL?1zedISHGjYPh;H%w?Oho(Mx$k= z-*K$$nZk`nS94&ItMawbOGf3+VV3$_6GmLFY<|0Qj})P|5T@DuW#S9vCFh@`&E<$K zc$tsTcNj=eg38ve6T2){m+qsqNE=8?E8Ciig|oE3KRe^+3scco?gF*A>-J#Gd%?)% z^SodqHt$4&rs9|9#kgfT6oRU0{pEpmYxuLVC?AltS}|< zPa*WZbh@3BzZ$zts7cZ4?sbPyp2#@af+xQ-O?nazW?x!RhLFQtxjD(qyXyyT-Rs}! zqs#buz;*5oDNwbD(t7FkbXWFatRIA4-U-`mDpSt+d8~9B+msx@L0eeq1RV+%;tDI+ zk+5^tR0|{dWf8b;TNN(HEzZ4A=%~E)2p7k%T$3%^gVGfqov#lyeBr&Kl(_VQHRnVD z#pP%I7Q75%!03){h(s#luRsWUetr~s^f(UsI%jbD84g72!^+B(R9`{B{2A_(%I!|)md{ivw=c8*F4$lo>P z`#4Mmu%fPB0p<+$Ad7tG{{!-I1(#NKSQ>eUkKrIG#!v)u1zaL`=>O3X@`0fw+LI;8 zmFKwjv9f=mc4wr>s2v%#`+pvvB%^j@)Q*hWkx@G`YDY%x$fz9|wIic;WYms~+L2K^ zGHORg?Z~Jd8AkkH1GN5+QM(HO#EVk|+#DF*g*(*|>BXVcs19|i0p(7Cg*|8*fC67(7QcOl@qYv&F)`%f$cME=`C!2K2=h-Rzs1q7WT z{$nBFK#%hg)iT~;=sD)g@9%54KpQ;mW_nF_jTz!x)kV8DR-%wshnD@Vp>-7af7yhi z&-K%%u}=<~2VMsn#n-JqSHz*6C`HfyVCsFd8KiK2tg*1-w9P`L!00Y&W+<8wo4rkd zUExa(47?Z|gh1Y;&djnZpw!quMpGFc4uRfMp{c;d#7hWj%nL=y``~K^US7nR1N-0N zFfWiyxP#AZfBY$gL7E==Q<2X>ieu0b%7GB-{Zkwo&-u6dBL~$WVcIf2=0B&@xQl-p zMGJ#=blIGgPW(A#f*k)guPelhNINs_d-c!hF=+Bnrx?<-F-YyZZFJFpPSv2M{jM_b zYQM*!6Tc*KocnVMI*uZD9DyW{I9XK4$_Xq5*{b{>X%5+xfRk~dAa!HQOK|(TPw|KZz5i~x1c5`tP8EIN=3^%Y%&k2#a~LaLC(csOAqL;r+W~~#Anjum~G73 zd64LAK3+r#We^YJ!wkIGVyv3vwQTE~gcRrEsn^OGrcS;X4dCfS=w910mPBG=ufeSw zYwyb?KlbGmXS=r4!qf#u7-ZWf)eMi18?sv~Q?t4PJ654OR&CVbbQc>Ss_`{o8sXzi zqXzYI@l*;d3;3X#(>L=9w_9y?4@Dt*S()YdbKioSID0gh`C&SSLkn)bZZmK$lDk5# zO0>ohyO#j@d;?tw=-Z<9>7ssA{X}*E+ql!UG1qWNb0LpyS)Ja5`C$fdjai{T#gH^q zoc(>Ir!v)U_U9&SUL8WBdqsv5EX&7|T+pJ_<8!24mqNH>gRYtXn`&`7wf#x^D&Dpm z!1ZgOk_^z3G<&l?fhU)s=`UvsQ;8PBWy5K~XqA&~fkP*f4lfU)rTOi1mAbnkC>MWx zY;XPq`gPN9XtXMwK#nZTR!?J0quK|7r~a2Lf}8c@8elqnJto; z&ta+@R@2AC_6FRtTF9U;UWnpQ(R2&;S@ zql0sg%1Z}4U{>}U**AZu$gqfZss=Nr-2q{O<9c8vGtwq|ulR7{0Hi^^ebGk>+|9en zNb1ukbF1!LjiQ-z+W1{&?$uy%h7(OyparI@>g_b6j|MVW?o6nJ-TbCPM+NSuA`Y{Q zE+fV!d&Rpeo2DU+4EH2?OigqubFF3ACWC7T=p7KPOq=Njrn4d?ZS> z8npYQBcaFgm>0vc*k}6d7kme)=c~+Q2OM<>nWK~0 z?MsRD0q`XKV=I?kJ9F9U)+)g^3vjauN!E|z4*!sBpIIG*zqRoUmhlagxeeS?*pxyb zUw}D!Q6sKudeWyZwtU*Ax2+l*<0dyodZ3Z`4DxZNT3;%@Dr30u6#t5%%y7pgUGWrM zMR-U8vydP!LdYWPI8x(azr#S;dcH?lH36IFGuU_fQNK5s=YVb3cbF@n{VO&$jJGch zM^6@2Tf2V-W!}ptU0A+%fm={p7feyOff+hm#6I^VNoV%09G1_hMEg@=0B9 z^Ft<#RA79b|FnLK|AnLGWPoyeb92b!rqwE&YY@+%I_~jZ|XT!q^3IMC`>wUX$2Xo=xV^u{7%2% zxOhqW@s6ka*t3qLqn+Y|;!%_>X3h+}3}9&d^SjRh89G3SB$~NSPfzH;kE0L`LEB74 zVpI$zKvd2!QlV-3i`-5VKMoJVTGery@W#r-H*5}9LY1pT;)PnRBHOE_i#}iy*uWsZ zF26->$mE)`y>7BU1f&n63Lqst|z{}I?DDY&aVl*-0@9X#M*Plpp;?S{y=*uBNL z87KD?&zp%hl9I_jb~o8wy=6VM5}yMj^8B*|)oK3ad8G+qctTXx<^G7)j>QA93w_8` z)|rWiJkHM&f9|-uAOk=*Si)AMd>Co2W}1Y>3zZxZwcBm%gIQ!gIHShf@zxrmPjAzL z*BJ&OV|TtljJl`daF)Y^SZM(S47lNIgxF1)R}4+ zWG=si7=Nz2PkSDRM2mrtlMj&+>ykpP)SFWV8X*-DJ@7C}27 z%Iyq2MWXxsYw4S{AwQeBiC841sH?>NaI=*`bQwQTUGCErQto@n#C2(;7ZXt1lQG}hsliCY(Q@XE!}2ccb-)aL zX^^CBkfeGgHBafU-Tj~$=x0ol-8>&s!KQ&UxmukZ6kHXrStlgO z=Tua#ev$7M=BTI$6(Q(^bfxZ#|LA1nyM5v%(jD5Uq~gfo*ht*@-86CA~sU zwBr@5oz!KDQK7C3^^I4E+8>2@@z z-Q3prvgsXUtGurBiix~eLdH(krt3;`jWAVqQQUUU(C>cM;gtm|WRuH^oX=e#R=(*o zl~kvBb1iFo*MDyU)p2BvmpS*&YmZ0bCVGf?ZuT6g)n{g$52*xXn>MhWgYoulQoaxK)C(MN87`#)Rs0y>TbOX~9o)|&65|9n@0iX-Zdi76jYaXWt>~4$UZOz_ZrinG zk3YrOiH<$E^sH)$w-vZmhU2Y#xnO|s4gD3b@EBw=D@@$3?U-p?^1})wq{Tplq0jOY zFmQpiCK%)yPn{*T;SZSX2a>;Z3s1Rmvaim-rBzd(aNF~jzK)#6JTH^52IA4lU~Wds z=;~z9bNLZ410VHTF)lK8!Iuz!n2aJq#c8$D8}i#Zka9OqAcHK1!pPL{ayrnr!M`g&e_05ZU=6k(^WNv*oacu*BQ@1o2eXVp7^A$u7U>0_T z!QETm4?LxuxIP0*4l2a09>Tq;n@Q=yFAc?s_KYVNIouiE4X3OcAE7~JFor;xDy`Pk zhJ5zKuf6MyyOPE$Kc=fa7u9+?U`K&hWtZ)3u~vkXQrj&B1Tq6maVD}=gWB+q>X%~4zF4pI;Ck| zm1e!-cFI(D_3_%1xpu9klO8F@ZEsmd%#C(V?;b zEinO;04nu*m6G?I3WT!TJJ|ZM7m`{jG-qX2MCr~Cu?d;@`b(XN*+t6cDOnCvdDv{K zf^aY4Hv5$jjPZ7Y3luIJFT=Fv=R#szpnNMf>VX_!6xub&kP&rPH#PNX_kf2;dyjU8 zGopQVB^v}u8%gKC%`r3uPJ!Iws=+}PqZsRMn0oy(s5DBAUDY3xy%UuIN67ZB&L{+5 zH1TzvSa_S|?^ZWaWfXRNrtos29?*5;7agYRG~>UfOG(&t0TY*CL$B&KDJ3z~d?|LEHuG@9!>t(nFeqA+ zB^!pni9A4q-BECx^lWe$wH{-95-|KIuewwc*N(S&cVws28Ccjpfsfd%!)yk{DO<>b zsG*o^7O_kfHnKsIGR*Qj(v#=#BAS-N36E~Fmjtd|O6V2gMLcxzT+dGaM?8Icw{@yC z>8uNh;{w`m=v9X1@Hu?q^;KD96h#Axvb;Y#hssHRcz6)prTng~1W_-4s;XIa+!iMo zL20|z*;X70Ot3yX+kjOLUNg2US+zJqZsMKYUPnt995ogmz)T!#e2cuyJZ9Z)*4Nl& zRwC;@C6HV2Xhr*Jf4B5hSG8MG?JCVdEjjPVrlxLk?5(Q0*{rU2%WJG zJByCI))wP!?Yx`_N>P=p_wiI}kUNuFtq_pk?+W?NMb$q#W=~xYoL@TMJaP2jE3~ZW z*@a^dG?IL_Te0u130{+wgr?g_p0eyBHS_Bq(rH=P))51O(K*aSPZ~5X!k-QeFPYo&^95hKguK9|9WN*EMycw-WY`v%`@D4awjmZ$d7 z=VRyvSW$~Zzrrbv6ScVcF~e5CHT>eP639)&h)V9Rc{J>s(e^cVoG5orgcI>K&x|0fUkJWp}=QVQ-0J|(*P4!%;&{7>Y$8iCDX_vH{)tP^tJOnh+yRLis7TUFMDU3!ZC6Y;P4egnt@Eq2$uHrI-Ms3F-$a{e2IdIG6+ZfsY37yI}pkN0X6y;iDc6h2K! z6DQ=hP;?VaY}b!zJ%9W{ckmIDGn>Wqtslj%eI?#KO%c~ES+#eo-yEk}tof1S#9qUx zBX$b~CirUK%{n!DnuFsFSaU5>>bhYtE8I+P1ZDt4)RO9`R{EDqrvR>?%jv09tv@_E z2&Zgm)eCgjw-z^NO>E^%s;Guq$jnownWr3`;spb$7%rQ7(8q97G71)PtLW-KJ=NLc z9YLy$G%;RcaLajiz>Y`Dpg25mrBHV7HRdA@&3nV7FNh%+HdF#r zMaQY|NtIXZP~Vwb&f7yYcJb4&ZcYMM`CWlt-+7RD-jMRhLmr47>By|pS7Hw{q7loHz4jJCz-KTiTZQ4BJqE!hu=Pk|Wq(g+*@%rpq} z@4~#fDW&r!J5I|l9*7xMkxX_OqoMn|=>z80@}1mvV|EEZGQ7_IOnQn`umd61?zbq} z!L4DZohbrQj94CSIY_;{IrZ2DmxQ>swIln)rdOTye4mw1kKC?;RAY8g%3Sn=z~!{ZC@kepSe%-??%=_?C?=R0C zM+T|3c}gJU9VUqH232`TdA-o-rvU1b^XDmZ|tnDMD}@u5YYQ-vfb zH2Az7LwUsi_MYU!Az3jMUOQ@HVLSfpmOkBIOhxL_uypmbz;BtKDed?;s<3N^t^-4; zeAVukw-2%Tm0hZPA5W@3_hdUhR&pnT?QTvp8zNusyHSQBKsIg@d6b8C9ynSK8*(-% zCb9t46$zDSDcBE}rxrFzu?GWau3lkaty>8j1OnsEdIP0@m3Q>JLcqqiv4z9G2M+s{ z&8bk_=sU_)$zBA^`R@;dIS~MdjkXQdJEhc7b}gN{tt@1^%^$ctfu|cq3rv5b;VT|+ z-;oIC%@a|S&J1aa07Fs=4?NqmYsW+@Y+pwQ%xSpjvQR z($+17G7Fwnjf$NsxtDMiw#t^nM@HT52!earALwjl-YDmRY7JyAlT6MP*6u(dx<@D0 z0c6=WHGNCI$diuXORZC}YMJ|Kq?|TaSYFJw6gLzkLLai2Wrzn!QJ>ocJ+gdBm;JZl zbPf>n>bxxX`=zrc*`z7nTz#L4z)r=)U?2hVD!<;|5S@ydgJq~PZ(%Hle;su9GN9<+ z`~>jeoSW2~v?W<{JVOd`q&k>*?*>eu~@`?*Xwb)-?p z8Tv&LZ1d)N(~I@ql@bMQ@vnqrJbHL0F0A27_nCTOjwE#AXB@$+q;wJ{8BHi;RXTf0 zYf4_hnK>bOyyapCi4G5(=nTi=2DE3{rMx@;Ij1z#vYU8iwT&VrRV~p@u3)-5ysM}2 z=Mi)2zD-jLRR4tdj9C4pi10?b<4oWKM55U`GIT#z;r8+@)V>8Ir^~=v;Bbj$N7?#x z(W;BR%-&?W(_jzGsIs|g03e`8(xmO4M*72h!Y0NI)(B4Y&OTJ6aV#*Y)T8gdRRheb z5HDl3Vsd5uM?U0?3V&Ttqyi#dw!&P3*ooz<_*s~~Du#MjS)aDZoUU@c%jtHogB;F~ z6|a~`zdt+5KiS%|WxgxD`pUUFQ@u66J73=8G~e;I5pv5FMzPSBQmP&U)iGuki=1M} z+Y&R`#178FpM6Mr)*yH;pC28B`1rb~srEGlvk_@d@jdq2on7wJ)lzeIJaJb{-bv{> z=jxXWg%qPyvdSywzULK`UmP3fZF>Twzgr*;p2=Haw(Rg-)#*uvOX>*|gsJwQ_})Do zE96%SlSU9q%5q2mE&6Uq<@^ z7sAG$QYPq9lFunwT0$uGxKxX8@g7 z!mP7AMwZIX#o#L8Rs$jr>pHe@?^nI!%o0!Cz=v*g-15mpR0hZgGnv{N%_t608V1Pi zW3NOWb@;mq$*)Tw07;xB1#VtVsj9n)ZSj(`Py7m z0iwi4m%Bd#YB*X>ASOr=v5g*6Ya)K%GiI!BrzmVChMI-jKLf0Lfb z(Fjn1)2K$BvA^i?n(t~xHr#fYRNo!LwQ$70f;L10rSR#3y@w#E7|6u!kZ;dyj`-{E zrLNl}xY-}G}aPSD7y8!Mx)g@Bw z+OG-M8IMd5bak1`H8QwvzJD9h)ygAR`r6pt>LW&8hdDa4hmPT>myH<65^@dCw$d~H zn7Flu#JAV63dZQK@qEh?6_XpxE|%O68c4PvpsZ}>1ZnMDep)<91DbvLBvm!WZcm3a zj#U?{ayw__Z=lyT^Y-!+`PFln_@o2jltBk8oufcjbNj^G)F{@H+jd@BS1UJ^tl%j6 zEn$N_VtL0*(<8$!kTVOTrYF7uJ@}R;UU0)Fp+EoZc)_fUNz+I0Uc3BuTMwfU%zik6 zOB-7hF`H3L_DR|*ET;u>a4uI?Tm_`dZ?#|+_}f}&ns zyE*EAqRM+7+h|@B0(PXigrh0*U~_<&D7uLTnH1zjFHFa2o-G-3B?vyr0&W-V4YRbL8Fg zmKd-{6ZfJsZa>a)(FC$z=zp_w$TMNXZ&A3KpdiNYu~33eoYN7BqLA%ClHSg;Idrc(-JGzg9=K z1xsz(9=48YB=spJHX&>e#htC-_7m9JXisB!Wdc#e*5CfTln9!yI5?`jLzk z2x5)R!cL7j2VbTw?Y3!=sPWub06L+LBDlLh@wR8ewfN;?QNIiB+PHgqG!^P3V|OJJ zM#WIS>DsFA{0e5gvTuuw14kt_86#HmRy|;aEvpli#O)sAJM350v7}|E9b0KzNqm>c zTt`b^-HWG~IUo&LG%pWbULaxz1F`NGw_C)qyC!slT^A<~`Bc6$FyaXZ!^k*)2QHS7 zywSsDFA(9`V}fkUuXp-pe~2f*;6O-uo?UlJL5p4ADgMz$397emZ2X_f8!`b^BoKmI zKDKH#8PEEO?Hph3o;-&c9ASLY-xf~keczy|EHdq^buker=4M@540kqN|L#%?mKguQ z&7$s{Yi2pgVVOfJ5s#YnjDF^m1ydL@F} z+PMfk(2VH&bmh96Mbq~NK}@VKPvO=QVd;CM(cS{8T!zH98}3v%06_gj_MYl>%FK? zjgc9$ItHHXZRd7C}NAXRP4-7nmb6^X#Y_G0r z-?=;9OITaD?Pr+dz%tx`{xBy$Z*A+Ee8Jv4Ec-=m1XOTFNc_o3tCgYH=2U!e^-JR6 z+dA+1B)X7A8`bbbb*aeJ3VZ}zBn0Z-I22xynQ@v-7faQrR^$CJKJ5( zIOy6!9!H|*c%f@D4n3?+XTo|!s_pRQqcp#F6YS_Yh}5}41>ac?|1iJ^1RHKy-K+3i z2>5Zu<424tL4t-2ZQ)R-vdO8sKJ}Ap5Z1cdt;p0Qhr1?w$R7KPL zB>EfEywQW^hs@8KuFIwsdQoGtLg_gPVzCjhnXFd;sS8_rZX#H8I zhy;p@n2tI2XD#DTP;8p&VZxs}&>$p1wuxW)Q|to}!=H?8@_$w` z9|RJ;{;X=;Uu#K)=|1+Sm_IP*%BtYm_Ws&SUJzF>;Igm$Ee3*4{~+AvpY@g)u;P*z zG79@!3?MoTT!@7~OD=st=zxLBPW&wf7RT^PBYOq^^pt!FtD&P{6bR2okrVJ9I9`S4pN}H9;Mx7oB<=5qat4C@kpFc*6f~gbp#ScNg5^5( z44nNZ_CrDc+kPnfEkIDmz%1DG83X;@4`qI!-b1&0TWU)nUH8Tn(`SK!2Od2Lv9F5e ztkZe)45vv*XzMfHs9x>cW2v0>%5fiv9b`jFT^l{tvPVH%^lYjpD6j4GM&%VeEmQbM z_C>j+DS3MO8^5wVT6f*()i%10Qj((J?LqZ_Zin)RLAy_cyF)|!fGckJ59#0!mv?{B zHROY(7J|UbSN=a=^Wtzw4DJ|B=)cPClXpSEzZ;V5SNE5hOD_1Yfg=wOSt!Ul^T#xh zRe`JuWK|%m!hVE74i(6e)L$tedj+yrAbSO}S0H-@a@tHzo5@(pz6_9|rhkLp$N>^L zKq3c7|HlMK7a0CP=m;c{amxf-a-7IhS45baJW??SZ#3p~z`IjR!oSaH^8ZPK-Kf|Q zA*$S$758%?@xxMQFB;e0a>=RJkuCF^YxrXX5*f6iHo8Ba5yOLycQuvba{t)lC!sxRpBHv+9F}tXnhIx_+gjawROlzC@;Bdd!e9`I zD1XsEO`^L5&Pau{pS5$+J1!$}G4dcc*t}=I*)|FU1x_@v?C<+IOJeaI9{MvrEAPwW zm^MrOiY3~0f`gw2nhgK#Vl46?G|>6P=FgwzzQVs8)v>MXMd~o8sAgu39sT?DV^CvY zpWE?24csoqcm1qc@2~1AGhv;fsFwPz-pt30;GZze{L?%KC_E@tPV=YmRuukcty%g= z^Ma8_?bZ*|ol^dKqd?ie4-+N$6QNv2@f^NC1IlqYcL(cX?~HobT7TzH=S<~5=jMJo zi2kYS_j7zaSFI&n+pKBG*P@Xycs^#)dRzSXweOeJ_s6G_VL7ajwPEq^=o~~Okcx-s z*uNRS%;Efe``+%omcOq*C9r5iCB>oV|4a)$g~In$LdnD)R&^H%S{`bM{%>r(by!r} z_dh-iA&3Y_c|l69A|N0lU89Joq@sY5V$dNiHH?LdgbIR^UL=&3&KX5SLFw*J8MV6YUTUMLySJoD0FQ2mg#$xapK@%PCrU_seOz__fYQ2z#XM8fNMUU7WR2j3qI(o zEao^W0Y5Gbx0A>Lxu2ISt>@?s9f zaC!SM*ZmSJ1@CdBp+CztZ*pOoPapt3c=ByvHKM3#5}M+@5q=31$L4Va{`twVL=216 zj1@c(A&b$0hv%Z+oUC)jt42@i$@eMtP=Sd9vd3Y+}hufzC0QvBP|ZYHA+C?AA_K;)zrk6%Q0^p5m7 z?pOZS=OMm+srt;?7aY`gzi^14(m0t0N@|)4X3tU5zQ46VB(L0$Ta#&iQFE@;i`r=FTo73bsN5K~4H|`vu+CN7Oj-hg- zMtG|E*0y7Hh$15}7^g!`AMGv(U-e5$p<&0!R!>yJQMkbYEGIJKuNUo||Aw!peR3zH zZ?`G1+&4H?Uk&VMb4)uJJ)ae}f!`*1!OC7y zbB;Dt$Jp!L+BEq*q=N^?e9uKQ>C`@S(m#Y(nhqB_vTrH-;DvNl6`Qkr$|O-rrbPlO zWHu+~qT^%;ye5yE!x9c=Ue7yIU~SiYEKr|;>o^?gV2q=(ta3L;pH6dG(cEuS?F8<> z1gs?QA+51O_{lc(WMn`MueAkq4oh)5>FI?kWNvTk1L303{eV*kA2m_i6`^YKKURN- z&3ihRwWo0<40)}@Z}g<38hi~HKG0GI9JuX@@~#Ybv&i3AAj(GgxLs7hCLUrKgiiw7 zYv-JQ4qaa++Ff|-=l-vX4?fB6S2G`aR{ej# zxZ3w;)X{MgSY~I(_x!3i+BQVTXF4B#(dJnCPX~P-6BuVVdRhz}cMe+Z`MLjQmLV8q zqT;8yOG9=WCg%5C&t{QBZJeEoiqY|1H(z|Sv%WBcZk!)5c1Pb!58Z4sNpgQ^@+bPi zw8}tROk2YXPH4YzbHL>KIFm!sGZ+xqH1{FdTGPPRzb$;eE|V&;(X0!nPlg00Jg>Ox z$%Q_v1XnUYU{H+>4E3Sk$7PR+5RwI-J%yYkt${TMOxB;Fb|ynaKVZ{&9(k)A>1Snk znJV$+)23tS<6;2m1}6KW;jrn$`jrc6dG3)Vgtzp24ufHn3qnuzO7`h2mxFoiHd!zf|Khn(}?x}g9U!t-)s2m028X#?S z$&b52>ndOrC$8tFhN^X42Bfr@`iZ_^zp^F$7X? z99jJUu8b2n0zP2d!uXpmTu(v+HJLnI`k2n*I3tvU->}rxPZna0!V%9q3ctj&ZpD5! zQTO$<5DN)gFPJdo7(i)rib{9%P(d}8Bkl3x5F9i_s31s+bkdWuW!1Z%HI#!tdRGgsRL8TW5j4Ja54J zl1i?&$=^i(6H%(fQum~4yq~j#SzL%T6Zlebi2JdT?f&x_y8=iO1#C-C^nS7{Ke2wI z1A0hZM&!`=J5U3m}PyZ=0YIri&5bv(?M>E8pC{ zPH-9F^YF5rPM9%n=8%(JyB3&58&KHz%OfqQ)Ao$Y6~3obPN?RuGRWY^JDeLbN~aME z)o2|Hi>-j`xL;M})=P8tOev{r&-<5@g`tXI2)$rE*Sa)sC@z*&SOrOn(SN<=>jS^e zi&fVKW}7{eWgh)@92^*nWNl$xK|=U++IdES_tuhz?aT{2j1z1jzF&&Q=2 zua#hCX1cV|8*jr|LaF}j$EaE|rlpKZ9yGx9@}+wrV_HoGwuX?2>^>Rw+m3_1CQT_+ zqZK1nW^82ijr{Z=1Z6ondmoLYVrV_p|xl=SDe%i z>2C5*A!k2*N^D{`(Y`A(4yXl18O+d6b~M$NWA zd@S=sH46`|&ImaRo==~ZkT7eT?08e1!&YY^W?^E@x+Q8ryug3Rri|)$cmMey&vB)l zq}i`ZXz*|b^fWy@pCUiXmnN6TT7oKAT8nK?H;s+S(aG`sQ( z(g9<+H(Y;?xmG~eBJHc`#xM~oe}~JkdB!;#e;(zWSqaiq%T4pkH+jaMo3Tbh`NY7qQ`HXT- zgz!pltOC>f!DBx{Byavu<7zQU==bd*%}h+puU+}ZczQgXUkcrqHK2&%$fPJr5ov-y zGgE4X(qsGf>D8F6w&ly42DzBQb73|unE0N7i#K(MoR0ZKZ(dX+)Jb}!KBE`JP;nZGI`Z;zU*4lyn^9Fg(Un;W%L4aftgoQQn3dH*jDOjjNWK*>SJpUWq;$&ROEgLYhoL34j&{!OLtPl?&jYe}>&3a#C@K>j)#d%e!>&bU!?_CWlUO;75? z>z0_gU!KcvuM#`Of)@FXT=u}v3c-_+VIJ7f9*J_!3M+gPv|Sd|bu@2VO{it6Z5dj( zv!@w*8RsdCDYB~hySo3HP}xlsrbQDm`W-)Q2!k%xz3Vmfu@h$$-eqIw(2)VE8 zip0r-Qz!n-mjdr<2E^~Qnnl_|f?!I?){bn+GswCgcmRyx${*=9mh?=scR zJUs5gg#;S4fH<4mm7(IctTA|&T!l2~t$kh5&gsL{zHMr%x~IoGb)n`i8_MA4Kt^s~ zekX`dWg=98grALhpVvrpWbyd$;>GDUo+UN&H#$bvQDUrK+1yexZ`SHrD_q_A(bPrAWHso`E?hk2&#>JvZr<#)1uiG9*@XqjueP1&B~4GmFYl z>NC^6Ri~aBQ@@A5?>l|Qiwh}JF>CUqJ~pCeo*_5{Eh-gO0m#>AxCUw=NFT8cTs_4h zVWV3~PCiZwJB2ljOFJ76x|UZ8lCM^{`OimI-IF~0#=ifn2Au1)cXZ37DK6Is4MOfS zj8?7>lxTG{pUG9kONK=bdjbz9!(`cGOzAnl`iZ$@mu`9>F~hHtwc!)Y*gJD?AKMvy z+9c8c4vA9rs4S{NvNaFg&82NnAc;CCuGz0@FGC!gZ3VZLw3_l*F9 zUU*!XH=>34Fz>H#IG-EDYK+h>{PZ1QF#<|NHf!)<;v7-@L}H zGO)O(Dl#81jUBoZ<8XsHwqS!gY^7j4FmyVDXU7vL7VF-s{>#6tEV?A|?TG9$_n>Ck zIfIhIhY!$EtycjZvfi{f!Ce_&O+55*r}U)ZTKsEC=B61v$(?~ z62s1bGN@h1W$}E!b7Q}^m#kTwnK|=?j(Y#O^hfSvb&s;lh|jqCcLrU$*BV_oVp7n2 z3pW@KD7W^nD+;r;Y77o#hAdYJpPOm!Wh%%U09LDiQrel;bf3%Nxx+293acvc_@hD~ zu-grZ3G>*Ru;h#;hJr-2fjmWkW=hOECRS0n7qDoNY=IF)cJ zY+k*TX1q_9*|H&YD8FcZWOs)iAf!uEf1QtdcSDZ#8&Z3=fMi`ws2lri)L`VhK#Yka zitXjVmmjd_#{Gk|zP|)wWa`}**#l7JV+@Zt>fC(kBdQQL)!KV2&gLI#=8>6u@=J#P zdpSFL%Dael9^jMq@j;)i31p+$U@fq8SB`RUqh4x;)kdbyztd#q-i6tE@d0hgwwucc zQ_n!T%Byj%x)8>ZLlE!c=SsS?8>%Hv15LQv5WWfxE3lI={TB);SMyZ4nlyxTygCJZ zTEH4}3nt6=4^DdJ0?_Y^U5zN-Wn%(N!cx}2mYtv(#i7zMOf>G`UAe%CwW8)pmwwt0 zqAOCniVy-3&!4~2QAG&DLdZfWEMz&CwvXt+tF}YTT0EEQ_W7q@28fhn5U$mU3Zd$i z?M*bInHB>cd!W}=0SMZcy|Lf@7Ko9<6-!f$Ed{^kwwo_*>Rh6E;;F48iaA?X;td$6 zF9#&K^tQGy_|0N!nRxKFip-0(X#~GvDeJ$`cR5p<_bxZCgvGK%0DQ(9iu)C4v_8IR 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