From 5a07eccd9be4065e82309e1c1335af4584739651 Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Mon, 9 Dec 2024 15:39:23 +0100 Subject: [PATCH] fix: remove black background in some logo images --- bun.lockb | Bin 763202 -> 765254 bytes components/DownloadItem.tsx | 2 +- components/ItemContent.tsx | 36 +++++-- hooks/useRemuxHlsToMp4.ts | 209 +++++++++++++++++++----------------- package.json | 1 + 5 files changed, 139 insertions(+), 109 deletions(-) diff --git a/bun.lockb b/bun.lockb index 2c4c76c0df9ee284832179a55c320e1027f9d487..83cb1f936e56f2bed579c87ec0ba2fe718f4b70f 100755 GIT binary patch delta 123142 zcmeF42Y4058u!m0IB+)fq5)J;EQkuyB#}S@2x=%w5V4m40YXbiD5Am%7BnbgSYbtM z*!xwnUklbNcu}#JYrFQ|yI#NFe`YqG#02$vzvua$@5w$S|M|bu-+AYq+1cIjz{Z}B zywvmTp54QH&wp!iyRNa+Z2v-hTZzr_H>jqT7YLj~@E*ZPzu6>AJJ( zkS_6qFR40idw*CW7TYcst0=5mo9UlMbaTj?RrhD63JJA=EGR6SQck8(Eo|h1-r2KM z$Y95JZyAeakZxOk3ERUnK_8^NiaklEa<&IsfkovL3uhEgDw;T>cy2M}~E8Bq5vXYs_<*A}rVR>PxD!#*Ihzg2YI-Jtg;)zoWXG|wuF5RZn z6;lh#drY2DI3-Fabx5s^I@pGN?eeXHOa3Zc8tcu@yWBc7@d{(6LdM zRLKsmcu)7wou#$xS>kM!p(qS_#$TE|kZ%9&PCfwKyZ^q!S3xuI z#XX8=O)iN=hF}Le6{~n@H(S9myW5^uxr`N{G%%1nRM`s;#ox<``HRwfol14 z4!7OQHf&B=zy6dTOE~$r$kl`QKzWJp`&vu;kW|u8|DZC_B~_ViV^g3?omo7ysK=xU zv0^xrreZ9pf&PZJsg%fGBa4abG_uh8;wRLyT*tdsL?%~X#vws|lWwVh53rrAFI80h zGo(|eZv~~@sG0W~v{Tj1yqtoV>lNov0bQ!-nQMo4LE(%U_>ovw zcyr`k^Q`{10yQx_us!&-i*F2ehJP`rrdg#ZR}G3ONyTExp*CUUnWn%s zjK2(V_BFAjY!<`+K3oI0mmAp5ZU8^avJE+Fm_-KFM@UuCrbZ2LvVQYbg69wui}g}J!TZmE0Xoz zKtshZ2XTNEPdjI|{s7y7CI`l19gr85m6eqBC_3(j;Qfp)`Ol28vA2*)%DKwnXx9|))>@4 zejijd%S_#Nur2en@iz9EzOmTO#6~LmJ(d5Ss((kdsd`mg+r9=KVi%Y{+pzjNVCN}I zb2JZYPuxiUJ3Xkk1G^nU zik)8z+0{WzM6LBV1UI$l;$0MMZjsr2)nscmE16Gb`2}S)AA&7GwmCD3r%au5M$o2Z zW}nEb_bj%#W|d5087?jxLCLbcJWw_51*(+HqTukByLj&ei(6*;l{0MQQ^DGnS*i9g zW%<`Mn{@CjYnaoEXHDu+GC9^8t_BsCmrR&eG;z)^^g>hW{-bQ~mX+G2^9ZmH^7_WV z9&M+p?ICjDy(wrn3W_q+SK#jr+u>z)>D_WU807C2)Q^JL$JX1kB=LJ}AwFtAo%P5d zqn@{;=UU|J>+wTJ#I#|q-mOFh*O$J|3e)P7A*ZxEi3*5j#>x^q#*zE|m@#ilx?_eX8waDquqh$`+yy)X=2ne>CkPBaE#3y~FJoM;fS+F)d$I zaP9oj?5MAS4^n;!b>eEEj@ZZx& z86B2wynGn?msQ?zn4Py1!5;9xpJ~Tz0K7YV^D>*EK2^3QoyvLfEUUrm@qFy;D!yJG zi}eOihD*bHfbxtFR#|^?Ns53RM}0lIgHpC7eooQMQmyc1fpt9P_8_TxL*MrtD~~qz zx-pM&?TTCuX!c4QKM|Clm{e4XQ|FZF(XCs1?E1Iv(lKkK-3d&kiVTvB2`%OYZ89@= z$T-)=Mtk^~<;ot59Y$(7n9qa!%r1U(jxr#ao!Mo#+UIQBkhTkHn}Mytu&;AU=LdIX z_T2m3^KDz726glMFsQcP3Ch|24OGKkztGAj%&<+kB-o)tmj4t?J*{M0lbL#8tz|#1 zvCW=MRq~(F!A^ZgiS`63Rxzt&V&TN8MX_ftv2||%Rr_j!D99vJR_D9tJs-Gp&`%cN? z+Q-Y23KvY1V(z76jc)DZ>(g(rHActS`~J<=6dlFYK8#F}UJ7|WsOps2`^cMY?&&kQ z{iT-4<=pnoDJyJ#vn^#>dC9EF#WRX(v@^9Gxl~4UI`Y$v)-b1)6q~{M`#QU0zZR5E z*El>4ltorKe2IKoYewB_Zvmox`W;Tbpm3(K*;;*0Rg@RaoTo#D$Qq&q^;t#XZFbO# zX3aAPpa;RF%vG+UxuD$29Z5UmijFHSQBV5cX&V-u0+!C5wP0dNin|9Qq=Cs3%;3b< z-(~f6i$i-RUlh9%-hy=JgPIT9lCKTe80-K>_t4MWZLO?6{a=5NEyrkFi(vCcwnrbw zZ9{tBXI1^x9TpcLm#Sw@+KVHL8AbcAw+*}!R71`I+kp?0PMSFRep}9zBF^0B#bWE> zYWSoQ%WtAwCTd0b+=*qW!t$cnJ`Y;2GxK=##Pu3n1<#pUG)wd58OQs8>am$^q>F5( ze8$`s@RRdHVBT{ zWE)tYtE@c%qvuXF58;1(s#4$57A@|>o=^jWC7s)*zIx0K;*=+2v7R(#0N4YJcC8zU z-wj^hGJFB?N`E3K^MCs(YyMv{PSX9gPg`9?-hVSXki4{{e9px3@>FcyGgis73TKrR zvp|-@WhG}nYjtxf*bE*G{-MNofbR!Nnf3Lx_J$_9;iB(O`SU2l?CY zxx>7FS<8M7ltn%UN-6z8S>o=&>g~H_RK02^V5e7ujoasXg9CquF5de=_Z_-`pjnu+~>zTrBPx*atH8MIet?er#JB)nh?>yb=TJPhn z>Loa6)3r-}bc`E4RE)Mb^{q!GrRHcdw()K2xNdaam>(?Y+NI;s?^>;l1Le-9zGFMt zGq|a1X6iiBZjJPp_iQQ_E|!JzqLuGk^J@KpOUGc2*YxL4sCiT)qjd_5da)~P4^ zm=EDf-;{JdSn-h?cd!F|7RWqERlGq!1N}J_sv!q|Vx7qe@J`~N+UGkDfEwz3Kuw@* zP!+8G!Zy%j#%VjS0#t<$d~We1cx(7_$b(_$FKx?n}IS&>K{RT|uQ|JH$PA(Q$3yN?%-FSXNfJAoe5q)Uh|dv+{x8+YWz% zyoJ`GX9=ihkAWHBbuPpCpjv)5*c@C8s-iidRR513t$Z3>`Nn~&Xb`B5^aPbY?`K>7 zw(z#_?>@5)e-rGX9z0Dz72N^K9bXKphhJh7s+a}POqY*?&v(k~_zqH4|5D70`fay? z!45lTrk1~8wKP8NnPJ!uG}^GaOcil+AN|OZD{0uO+2HU^5FfQyA;>nk`<9knm-bh&5TOg#;ye= zFDzd$YvT0cIb(^JhS{K-E&B7mO}9seXH25JysTJ_)5H4G!t(M*g4w%dcD#dBDkYLe zPvEW!*6xy-ik{0we*Ku{wyY?16rYb=qgwm8b}(|a`PCMl8NAJ)hNbrAH{#L$&iSlq z6@y8w(T!f(@LSvFMqVb$5T)xyg|d=f2U*Pze$C>AbW_TS{C>1+h;|G62Wz`!ruv~m zP4oFBv!)lKs@#Tiu6WzdVOL{4DT6qt%rR5D3^Ta9ITQntJwmf&P z7E!jHnV#X!cBjR5N1*B39P9#K*1>jnmBScvsUs@ji|1{DQMaPU;P)VxW!1l6t=%;< zHMNr+ozhvH!qJ=~;VQlM=CtugOlGOx(2s?8`ktb3Q#P*P=*y^3O_luw%4TgHEQ)`iT6ORI-FdE>@* zqD1fA^y=!Fd)zrYda>}vJ59IgiLXfyn#;HJp8CH`|Nl5e}ZyEUh=JKKi5gk1TfhGZj`bGHq| z`$rK`!fVOUjs%~QutQqL7vY+Q4?0}Ehi&*`Q0a;tM&(51jzg{v<$}uJyr=DGG1wMM ztvHl`?CB~Bmh+7=o(Wgarh_|xUN6tw=tc3hE6Qbvls>ZGC!5&m{cv#D?p;#V!#>5@ zPjm}$a34D`xuEpKmejmh(+jTYwjC&SeBRrRM?1JC`)b(}IjbviI1t2-RlLYF(O6uZXSEt_ z{#U@I)lq}(V$asCFD~8{TYRtN5Sb z@>d~T8jZZ@D)MW-o(gK9XMl1X2ZNcz2@ED64V>vz9qey=`YL>TePjELvu!#Sxjabps^6Km?VWhDYe5fL z{bJXdImI()syE*UoA=D@_}M61{5zng_O#NXDLq)UUJ1NjU8)uMj7v3vLt(9Gvr(WL z+YWup|9y?gcLrA+W*fgAu5q{uRD2bvDKic12Ch89&hS$lPMlF_mar1Ilrf5Ql$TM_ z&lL~^i+g1aS$~XmqgR6}ZVf0yf8f`1qHvfH~or33)Sg?=yGSq~eMAt@^dE8yzsQDwHAt3l5#ptSVaNw&}gd{_80XiU2? z|CHdGeg~v3TVmV39F)>^psZzf5nQ@Ch~)AQ^G>(bJp;-bA{{;qSJx(hs%}~luK{ui zd+(dkHZkmFuyN>wyJ)0*9o9juR??=sYW<1e|?_Om@G-F>>unsd?2;yJt~ zxZoY+YVf+V?4WI=T%%+63T!*lOHcn?ZaZunf|=ZhAbl_{I@|VW8K_Y|1(XI(tg=1l z?3wpQVzIF(tCQ{Y+l~(>G@lyTtb8W*;2<^n33~K0ZS#5h5?aI%9s{(TPVMUdgm!8uXF3x@qZOIOdnic;9}V~4uw%5J zs<_AoDx&xNRyYG6et|8(VZu^ zu>?EeiW;yhF2FecsDP0d+ZJ94$^f@oYnQ6}^tU(Z)UfA%Ctak``$(s9Ym}!M6}^E_ zBO*;66;NM%35KkmM(HBU8HI-A7NLjb!9%^ef8lJzZ&B&0? zrrFG_)Nh{UM*4_Ouc9ORXf2BL6Fq;}pBbS8f#~QyI{oT{T=(nK%Gt^@gPLD!^&fpX zWIt|T3l%-rjJ|I8`5HSwpE&&6b#_1#*IR{0>0cpUzF{*cpYbyBn#w(HuxnixP)kX4 zW?5Q3!%XEzNH0SvFFdZOJUDpJHiut$fthj|se(NpkGIE>r+I9RPBU>GL{Xvg? z`_PQ**WEw6@eXevGH+75{SN7IZ|ljK-*o%t(yNBvwtRL_x~}!C?^<~O3j7oE;?0@{ zBTmfq&I~Fc+a!aHkokeXFwYwoa{W>G*kR;r zDxDM<0Y&NaTU!Ld93M!Z9 zCBMa0s)b>jmB#$MeFFdNyu{Vp$6|*DEzZtKcr0;)74jAZ8_v%2ZVUXXJpVnUvYL2M zuqZ3ho~3MXu<4G0jR_14mMzaoTuNw|vcrX#5CrNGeP5jASHW^&jlwn;dD($~PM+Up=V&ab*|l~wGE=tyC?Tn{QMmahGUTt! z^G{$eJ=T^OWciz5nof;BOMKq!E+&pi3uz}xe1Ald% z_im8CIxo?6_gHLD&|-CtR~l@9-vl?=6CV*8u7VQdQSe9;dX!MEEHT-nhgDBBT*>hW z)ZwtuDll<6f_;J(=MGE~u#GiNqNi0`n1fvzBiehhVt+Y9>tenER`d?~gn~li2?pmZ$Q=s?)vfWG~w;(~`sjnCY&6 zFCmSLsmf3GwpHPXPR#O#29+1(CFdejsZn3OdjkLByhJAb$5t=SNt6&8V?y^48mmye zP2XU|TX{+Prn?kAC`Naos#ta#hKgAteKdItuTm**vx?9Jj~%Kwzmp(ga}gf%n#Hxt@U zR!!*N#@8{05rzJ~@xhIwIaWtD`3XDtqrV*37~{{D5Aa*&*se4&RyGPIOO0!x!I}8i z<|Y4*tlIm8>t}eroKlS@*Jx5x2Fgsx#Bf5#YHB9-!BtHTM^E<#Hb!QgRy|Fu*31?i zR-)RQB>D}C#SS->oJDAoLVgy8qv@S6^J6xQk=2Spr>+btZ_M+vvGsAt>}s(x@NdfV zUI_B}-94zhDKAkvI2JqFl=?WKeQUZ)zdaiVJK9)k;&9j)4Xbxc;IGSzcN!XuSf?#V z<+?oohN0GsnIo(n9|is`d0wv|pWhRM%3Jah*Y3l7F*flfA!8lh$RPjLJa3JDC-#d* z>VKuLI)=xMWgVKVOAmE4q^A9)+t;s4lN--p%}}Ag+?d3xcs@I;hvDQjDLr{lZ*h=+ zZ=QcQGPwe~Qhfv)8yP|(ml4b}t3f3pIZ(DUZ1y(67<0SYhJ$mN-22%v#DlV)kA$gA zv)S`cg~>DFrWR&-_Xm~h^O9d8V>PH=uM=JHh}psDMQICWyJH!wyIp=ie7T(& zxK)2KOdi+nEAI<7Je22ui%bnN=9?TpGV*(DUbGKhiom&S*6jyiDge#kz||xdhf~gm z*}`$k{ydm%9U85tb#;luikm&ZDVf#kXnpnHaRNquS(d-c=x9XRtj?;#SY>zBUdC>f z{)n$hw`!N`uUqc~+PaUi!M_ud=jC=`MONZtBWLU3_d398icv?W(_qq~+1w;I!ek%O z2HNj@AT9&}27{r_gV_P7IyK9`6Q-;&8HAr06N|B`$tN=MMKEc!vALsI6Kr@Q&wmw} zGd>2aQ$b{yvfINQi$)-MQzXz1CtN?8K|-SHs*~h0^W-zD1|crW^k0F3z}pe?3gKnO(U518iuN zFFx?#U}GxRKaSf9HJM!%J$?nI)|g43Y&G7psIkc*2x@fa90V#dn#+mj5KJ~3o&N`Y z`1oMMi+SE^{Z9PrkZ4EtXB)~?s$+uH*bUe%N6iJ|f4m0xBah}01*&JmcUo5BR@gW# z-SHid2}Zo0n>gYahCUemdXBd;*zkH@;z#(Q!KT-95(gcN!I)4Gg}kSO4R7QnS{3U4 zV$&O>AvDy4RuW<-Nxr8E9cw~;CusMfvX&8=WI~@4I@*K|oT$Y~rK}`0-s~qnB*dnO zo$$y>iY4UT5NvoWk2`Yz?L7a^qG+DVnSUEpBI`EU`dw^sb(Vhwte3GeJ8908O0n_DXHvLOH6JipP@$Wd;loIKbtl@o5>I-Z?`Ip47) zEBSYrnasLr)t&nHLFIdSepYcbMYQ&r{f<{0PCw$9?2EGei(%@wo!(Ev)Lt|7liSU3 zYl6GQN*+{Oa1H|72YVBie5JNvo0+!mXa@TSAyCuodR7Uu4ng;7f2g5h!9-L^K54-$ ztNzz8xm8YjKIA@YmUSBT#$`E7_2KJrKo7(AHMMVsH7l`=Gbt1Mz_@k7#;-34GS1FT zTvr-xwVTi89ScR(F*7yss+Yb$vgj$p3JRQOOt(5~Jwe3AlZ zZK2D#<+0fDTZpf2#vfJ59TaHp4(d_F)^qrz$*AntTcGMn>dEs5l~=t+e zC9Df~!G@B@?C<@bU~)P3*r)n_y3V`6p<#YYFV9;SRtmlgHwYdN{U+Yv#?dW#9Tp?i zS5JjMI^T{s8S4#OG{cSwnW>)0ImO-W*HcOLMEUd8T}08=<85`SoT<)A*AObzK*gIa zF&=mJl2~l18Mz+`O)#OOPK#`+x{LL+?hnrPEe=6qLv?j~o$gH7X_R)>QE?p`GY!Y} zWVXjN|Myxg%V>pVR7MI~K*;HMX*8t&qv|iDz`uCJw59!OwPDqv;s46IzoEUxv=Wog zh`jU*gr*oroOfm{cA{~_?+}_VnRis^cf(tMw~UW6O`>}3BwRL=Nplv(stE6wuyR*2 z&RotPOblCe!@KWtb}V*ExNKK~*ASd%jD7p6SnMPd@4rWoofbDmRc~i`2ZjD_O!K-u z{p~Bv#{1%&o< zof~;wZ65c7sW5Iv>pq+b*KhXx#-!RW82x^ZA75>c-BHnsEN@hp-v<@deWsIKMA|WG zs2+i`3M3y#aFh|aLz~^tvu)wVSa$|28Md9en>fbBQB!4>7lir!sA*GJ3B+5j2{JCu z^{1|JLl9Q&!L!e+pxl#Jvo0P1i<}uk0X=Ly#Ti2`j$ixgZjiVmq+O zWr&3Z**uKBB;1(8&SLl_c4&?6xA+9sK2=S;PKN%$rpg?D>r1OA63=eNhkhK%Sft+UV~lVpqjYCE26zi8;0sin1<0F{Jsp+eBShTnJJ@t`j{i?WeUY~c3x32lueC2JwACYAe?H6( zh)P}uQ>SP*&j&w-Y3OXbx4X`^!JKv_k8&*XUC9d&j3sd-@IOUhd#yRO^YxK+y60;X z5y(23fE#HPTTdl6x5ddd#Mx1|rtEJ*pmsHpQ?}3a<4tb}m*!)zIXBqZY7Ze-z|^0F z*%&|Wn0YGaXZ$VFyjnCCHlCDGgOgVw7%YK1k@(%G(24iRF~FRR^t=(jN?z-+YWS$c zE;rG)U=x#iG9hREJmkIvre5MRF^gwl(nr!*UWc1)TjrUSFs;~R=sE?wz>m?i&o-_Y|Kx0eyI0f%>mmMAB@51#x@!3c;39%Av=0%tW!wU<> zqp41RkNkon4~I$NG?FHt4I8SY=Go3u;f6z5Z(H9TW*o+?`3YhEVYKGmyCai#v$ESg z_Jo{yh_{{#Q``KoiWi}hFwGC+0Q?_ZTobeWHNDqXX68;f_zl{PM0RH0%kgi3+4-Sz zzlLeNn+Kbp;7zCd>}jJr5`*Ov*TxvvQ?OiEhDq6ay=@OZm*ssNOzp8dwVPo|8O`3r zX9x~3YiaKN_HBjMrc-Ca`jL>6-II7S=a_AHMSmLp0MAc|Z>GaTZ&+A)G()`rp?c$+ zJZZWSC!wu%=qo4T`x=LG6l|nThLShI zOs~y;!f*Bu-a{d>Sy-i$S(tWFo?X4>LHj`M3F7@Q8K8ZH@j1*YT^$#HBRERwBu;5MJwd)Z%es`d{>qh6K zBcHqoflQK}8mrfBFxA-7zBBiwqp_fhx08O=jMpoyoWg)j2sZ$UH~-1)Pq_K)L_6=1 zaEGa0H@|$7-T&EVJ`ciV0Ud(P=Vry5JRWYG$~yCV?$7umfRcPgM7vkKgDCJJap_IRK^^Lk?8CH1ucCkM#)q1j|m$Nqj+Qe{)>0@=4B& zOsL&vdTBzX4A{}Z=nVrKBeHj6_1@f>d$q(<%BmxZ#e~fJ4~fQ4N9RV92<=B(T52x% zx5C_@b8h66g*E%7DE!1QAMn>d6S*SpP5jo+T2sWMRb~0ZVAi8;-W`v2EmZqErq5fr zoad@13{};*twwGVg7u4blVrhrSmy^%X`t9dUV(2&qrXENwc?E2OCOv%|6m^|5D_* z3r@>ULNrNv{&8v+8+(5N*76F%KH3i^w|&{>j5L=lLog;ymEHrPe>~&%GjjO_&Mr^= z&D`|2aL<<<_OECnvttP=KJ$|Zv}ZN99?3UhYP;!Lu>Kl9`HCHAb1v#nglQ!0&gjY- zac{%+BCeTs6*V=gf*QYyaRtjx%}E?aC_7v>(Hq#5kes(wbTWxO?>%6YW-O_GQ0Ge5Z?Mfx0Ct`MG1!O`G5S_4JBsCazspatev%v7=G) z*B}^$AZESvyU^a2&iCqj;i0C5`5oS{qhOYI@941dBu4pagz7T$=H#rzYp^|ZL*jS; zcVtrd9DhDcw!mt|3lW#Yq{5h8PTovU>g^ZipF+83y&36B``brggUOMwIhwp>$HcBN zgJCKhy>S;(-yU!CjoC>Ox}oDn;D7i=sec_M52Ok4u&R4JyD4lKtXlbdyls_aH$M|# zG6S>q_@6f8JWAGT%i@lCzXaPqtr^L#@7Mth-CN$tvk@Gw6z(CV{{aHqG-=6C6Fe$*YS72_w^8V6}??p4noh|&vT8|=yvDWBuZdK@?g)>XO zAC5SS4d>9X66#$MZUFo)AK21OU5QdyZrI{nb_0aed$Y{>AHs$jrZ<=JKCEsn9b51# z;~kcDFm;+u23w+UV7cL@9FEcYeH3NlafKhi4p4z%)k*Zf#mDZ|mayt5_8u@zuj&ot zO$f#W%TCJiy-%Vy`zR$@0y{D-q5qf@&>N}zQ@drcdVCT#+*Da`3{`IRnXSYNH$U%X zhZ_QvapM}z0lh_u!|Tg}v)R$oO=>BSC#jZj7AoMkQS*L*L-G;3^` z9lv&MFfXSU!N!N9Cvv|=Nd3a78S>0;oTWuOucHvS3Un9(b4B7D-i93-WlaqFmM(;& z4@UpX3CfI&Y7)=FctsSAw)n2PFkY`X1lC_i7~ZnbUyVw>aM8w3`D4Df%ab|p@GpkR zD(wBH_wUd@j~v~8NVndJuyIkf{_QZ$B1%Jvzrf^(jEyDoex!ls^y*YX&e~At(=eNg zy8yr4Pf_U_h67=)bZ%xYg^gEv;pSr*;qRfg$J*e%uS1oixZhCfu-=aatX> z?$(f~@77XUHFo7`o1EAW#!EUJyeuZ97E>$l<|kqDGMwDoKx5Dg@a{83~5hgvEM%i2R>DKqzS4wKM!5`Gbwg}Zw?p&DW5Gm2|2AEn! zoqUs!Xc}f*$$duH)H6p7t->lFd#bVN{Zpqz$;T;am|7Y=>1dm@`ea{);T{2V-D1A~ z4Q3KY^ZiQ%8k?9|lXv%RTk)_fSUF%>#I@BeK=K`!3X0aCWLAb%X7$c>E&}aUGRzA( zSHM&<=M*&KRhacF^732W6#2V0v#qr1+(KeIFr>Bg)=Yu4*u0b_swy^r!9B(`aT8iQr29Dkxhq-PhuBs&Soh45sbdfs=; z?%BJw^~`nvh8}93UmQW4x`bhIa()5KHQ}i&{|%UW!bb3s>}2|0$ltD=XZDD^%8AvC zgvn~~R;>Sz!uqNyVbv76^&?b{jhB~i;UKKN7aMKL)Zy{)u<|xGBKOz*R`u$wyx8I4 zvfCJkD0dEVYEILz;4Ji# zJ`UN9i96JGwL_<940Oag8z$!$3#%rx6NXj0J3ae*8^IW&Bd6@|wT*2+ENs&YCk~Tp zs-x2@W#8Zu+k3A!V5-XO`{V7l4Kwb=1CHC)7U7#yo#dHNS#WiU)hAnFo9}9!8QBkK z$Y2M7XSB5*A9mQT+Owy!8$> zm@GVb3}G6vWLVG#)jkV#&XfXbIgpwjV@qCPn=ZENOfV+oK`_|}3;SB?SPV7V3ODCK z*Fm-Mu=eC{@5PR_Y;jhi7r(+ z<2@1PKg_8?#*Q8@6S0OS&LPAp(u$nq7le!jIP*-5--*tfMCTLY!z7m6FC>e~^@r@@ znVoms-u-wtq)_In8EpHGq2iS={dqkmMYpE_R zv5;6k_o2BD6WY%x1+~Vv?HOh~!E`#Ir(M3VlQXisyTZyR7}swRjx*Jmg2GLEbN98U z)v0w}Yhgw^a%G7fdwIN&L?vn6I2Bp7vrCh2MsCK&I;d{Fqt(=W*nB8d2Ywvsvy)v7 z)5zfgII1cRH$25=?7yBqHBQg{i~CqR#b+~_K7*-MtZuBUWBS?!D%!L7ry!7v<$1;d zoQT6Tay&R>gtqQyO^?G0*ch0+gLSy8Ve*f5Reu?#+r3uCq?+<~>6FrVuApMGpG2UY zC%aXiJ*HNG+4v46Pqd4_L9f1Aqe68+O*atWS2|Awgo&uaP$sC+LQ zTfIh+omGR@{P?q!NcGoLmUtL8B3!mVMsTIQv9tSynu~6$Y&&%3;cBBX*}{KCp9o$7v)#qOlCQ(6*Nt%S8n*TWT=UKT zVg^iIW%L>S9f!wT z3=TKG&MC+dq5lSTuNmx_GjsCHBhT0&Zr<5Zyb7wmaZWvkq zIAo{j&R84Fa^j|u6nkeU{R&K7;(;=3yM3%dn}sF05T==H43jkzWh1e}ChzJEvrS;P zPc6e?8mOkBj_7NArKyAR6w!y9SHXUJ=C1ha_i^hulPBJLG4$U>DcQqq&sbg;WhH08 z?A+kQ$-KIhM55Jz`CFOQXsdngqFk`AU1sPPufARj8xxK`iuco4D0yLz4Vls{yDTMr}1?%@iU^%~ly{RBIZY_##+td8UIy;vEn zajfPwGJN9$ubcYyAr*HWVaqf3eBPX}Qo{QXs(zL)T+_}Y?NBjqIYRK3hxs3o=3b;d zNYf;2qs`lgP%}d2_&2`es4(MWOzNmG|6^?Rys#2TG#bq;3737$t9SVXIsYc;-zO<0 zd10H@__hNqv%YOO%(*A}`mbPeHg?rc3^-6Lr`|L{bs>6g^B zR)$rVk*4h-)oJ!8xL2_0i5zcXnExG5oz^Liq~>mXRX4spMWC^0ZMKz(9S)81 z`iBs-O4e*T1ID5t3woB|p=4>ivWmg%ahPXbukylzQ+PS;GHA6o(M#f=A&_<3MQX(1 zUhFU!&kO0?r7%q>bZ{=GWw3cLjsny8Uy=GA>{UUYrv6i(;gPIt!ZctQ+0v}|E=PwWe)4h?haJs9M%dykx_CB0 zHO#KF@4&REwa{`C-}{(w#LpD@+%asck)m}O_3p>oERD=jO?>gOVa9(*^(td zgOGd*4jMD*GR6A!ruL4$2x|Q$&Oh-3j6bTtj(5ORYkG_T=Na)OQ^OI7cy9d5so_%L znBs7wFnWf6N3m@)2PLdAdrh-OW)^`}5Ab#@0&^qM=)r01ZB`6Q{DNdmxa=e^Cw}1c zaA{M@3a5t~h5w!&W+daeiM}&1PMwYYlN^GC3XT1RCPK|k* z`8KRZ`8lQ5-f(sJ_qSo1?yL)^veTIDbZO>d5sWv5(eZjhV@QQ_dx)p^W!0xClu!(l zL&X#5iPAk#%^KRGHz&%&r7h6Vq2+902#)d(1_)#PP4^h9g>|w7uq8HL=L2 zvf>Npg&QS(*GbuV>3)09`A$9Nb)$)n(IR}~#jpY4=!dZPUsIi$m27#Ot~Vs`dB(e~1Ir39ues)>s~aAG(jlTnW^bd$;7mynFw+%P37U_H&BSGs|a zJVAyz=ZU|wFkIS!ZtlM*+$cPCQJB$@f<9VA)nSW{@tk{qZ8f=vN`R^}ux zwzoZ$y^5fw6>91j=M6=u9lWZSQDV-?p80Hx8)x2Vxf*t?(wh60Zl~C@Jlx%?EdLbP zWa4m+hg0$S_Q8R9mp$fspKk$@m1SfSFkw791JRZoHIzjrqey*AwEec=5-M zTAab*g!yX)ClS&uH;Vf0%O;5@i5(b@eu?>ZCMOZ9AuKqMajY<6dXcBI4|totOo+f1c$%WtE;{tLlIM z>in;7@biK&GY&H}f0OACcD0_b`TmD}uBRckhV;Ry`B$WVGbr`6^e?}vm$;IVu+zB4 ztks75d!p>IZ53X#rg`pjz8ye&50W?o%3ovSkF7jTNX`J;+=RQj!1<3v0U&atn;s`h#W%6VU*rn)_aS7D-&H^*tY6q-HQUiA3GP7# zdt*?u7m1&UtjE0_c`+LbGrR94bcjOn-PeX2_rcNDdF~TmKAo77L#nOa9izpXI6j5?xq4zElBgrh ziWI+`fe$&`7}%JQU4uU$q6KA7)N5w9&C=)BeTCw32Yj_H*qW*&qEg1vPzDJ?7`_z*{$)m_S zVA^~p!h#KG5GKnsFA*enyV@@J(K%~!2?DcIb?+;>KkIr2V)njl(mGyaALX~#!Ar99 zwb9X%-AY9-NBh%=&J#Md!6Tp`A989-!=GB^b#*Jad zM5avMjcg5((i*1Bl`!4QM6V?$V>ek{Ru9r31lmtUy7KQrpjF1~+uX$Y4>I`}9%9U9 z*l)JV!*+NeQwpYEPV zm&4R|w8R_8_g6EW2Y(40N}M@I^z&}9jp5P9gIWFwFqPfjSnH!O-Joz2u$Y$vZnd+& zt(qM#x;0!nH9jE4^PHG|bP1dCgZ^R(erEF1h@Vn^y73e8w1 zt1eUzZsSLI2S2)mD(6lSE@5MS?h)YRBVco$!E zgP|8pi)W@p9~0&0pCVjBrF&L{D;<^YIU}_w1;4_Ns(sDLg_6JHxKR1tbvzAC{dGl{ z4DXRadgCo)bJc~a=nEGwR7JeJYc8Skf5VUDycBC1`aP)Yd;V`6qtKrrN~lyy=;>E2 zlql}v8@c#&)W9@#a-lThJD!fJr@50imzgMGOHi^_E}|}MLi|?53%7CU>O#fuK)jN4 zb-1HTFH{3|0hMmh9t1Sjdx89m_1CXjs0@2Mxlj$x5f5LPfe9&;>!Q<9$p#}=)DVY5 zT{@u@wy)!Lp`!NVmn?gfOIHV`^hfPuhq?sms0JL4TzI65Pe=9Z803mN*2N2x@Ts8U zr#rcDH#qn2rabPz%@umqgkus&#(lTBge?fM3p1K#l{AwA_iGBq9hxg0RpA{j{_ie6 z9VNP(U+U1kp!j{#zf}1kr~)35v=%DEqsUu<&%5|7p~`v5rAtSNUgnp|dj-_cr2g#^ z3Kj7dr~=+~@^sW}{lvw84l2nP{8GNJKy~Ch$A17-!7m{HY$AtB*O*MylZrJ}ZmvIq zO6v1V*vw%IPzAPeyqzMswuDNu6~8>WkgW-*fKEoh>{Kk5P%7UIlty|uc{)lX{akz& zsGeqnN;-gFDmT~h!JsrUT#*jrvcLUY#3&b$j;i=TCr?LJGzPgU7ze7M6G1g-8mN3T zLH@-`9L@&SfO!%+OeuVvi&*F)(ybm^#uoaN$|yLh4Uo$av7$%T@y zh{w7DCSY26j!RGj`IG$dOwS8%ogMGO<6b7I%f8yB7OMIS98brlVT-bOH!l|MTo&(Q zoZXc!RXR#^wUY~_z3UuLM`?E*ay9-Im+p4Q?*RE1yNh3H&Ap&TWfQ3MkH;}KC3uow z8ir>@94h#{lmE-f(^203-%ef^s={}OSCaQ!I-x3l-|_e3N7w`(I)P9LK5{%ACHln4 zg-Z9S!_S;tsMY6t@$iCjr{Eu5^p;Qx{txL?>@P08P~2$Wq4bm>u@u=JRK868s)ZVu z&W%v8;&$Md3hD}~?43X*_9PM(e`FU!e=d%!1xYFHVlsJV^Y zYBE>M2<(JB(IrSZJjunUqbfKVxf*gRD82+#!&Et>C;gvy%o8l?%pz66FRK*X1YG~0voM3}X@HnWeE>wX} z5U+}!1KWY`gUa%eemPXSkKw{kz$W2#^W5I|YbX8&R6D){b)}=^`Y&8{3DwU3IG&Cw z{ukszlc*L-?vYtjv1wy195!Go_EjoZI;xK5$d$2$!jt_rUJRiXZKRwcd8@f$$7y4X#UatW1io#R3UZ|9c^yvxaj z3f{{vrC$#!{z1ndcKlIL4cOrLKS5pT*h=>QvPDw;;Jx~>X04nJxj(-M9 zGx~37bqSU3TPOd?$J460u{JKhacu{}Vg>jmmcM>VrIa$z4ApNVNRZoYUoH8e*ma*4g{62091JgJAO!l;Z($72-KrvKovXz)Rm4( zHwn2anC{Ze0#!i?sQB5SDwyl|e8=@4K&#wEPF~^o$tfo|6;#GbP!*i*5(J>GbW}mB zkgMVlRK=@7<-Y*rU+fb7s)b5-8FJ;n(qZZv7r5SKNJmw019D}&5mdu&cX%(Tg6;=( zrK98zAy@u~LFNAks0Ka;@-OzJe#xD-yDOxyxMYbd>()IJr>i=7RBXX38DzEO606HFBY%!IYB=m94_@bd+d`i$4t% zU#4FUmG3Oa>%f%$55(ANmmnQ=+i(eT6>zD;%Un948hC}{b)oWI>C#;dYLu>X_%|oN zsfmn=>m~%sa5JbY9aYgSPA*isTOHo!@OBrUj_SaAb7GBc72w+<9?4%e3@)sPex6D&|#wsh)R1WqTh~{0EMIQAEbwQU-XJt^MS+@5dc z%I@HB8&I9t)|D+(-Cdk~dnXr4zN6#msQf#*^gFxwbZkR>|E7BQVFRW!*)Cx^s)8IR z7pmZaU_9LJWH;T0xaf3LvZ2V0k8$z)rJ>^YcU&l*56ZYkJAQzR7plF-I4)HBW1G4` zBw#L~tf$x|mfW&uls?V`b)DJNO*aYDqGh1s z&T$FSQSmFCTqwTEVF)VfLj9_RYRDx{E>wpubNsSY6aZD=h`~1xny;rvVH5~(^38U4tWL` z*Nvbc`Jvllg@Stm`kV%+qneoLG@#6C+`UAN=J=QXD6=<)u5eS z{#`+px0_49TN2w<3wt6^L493BIx53n$dztyP&@}zPX>Z&a2}{j*cL2s@^Ma{j>&xQIXoIv1%;rlbX2+t$knjPpiE*es2-mPDxb<%g^L}Y46382gSt`* zD8W(}vD`(ZqYA#z$!;w=Uv47md6@g`=Q)yB!wQRy?CJRRfVph|ZX)rn{|Ya55# zy5x1C_K4kGy4_s5x=;hx!=>v9YJmH=^l51QZkm8(btbHqt3TPU;JsaeLUmvOsEP+U zp6lY%QR(tr{9xbt{lQK!1k^z622$#S4{hwBtf)q5xF- zu_+fZHVxH)agL{>G92tOj(73tC`&uq$%U%85Y$|m3@ZN=7cUe~O?3%ox`=dCf>};3 zR6*sShF}4x_~RX(0II@8jz=96D*dSr&v5Z)f~4O%wwwSTOU3R1rJDP}MEJ@XZcnlS zDup}-s=j}Mx`ZnCDNyZt9#s7=flBwXcif zeB&a7D&Pmlg{tsJhd(*FQ1YKaRqzX_2E>oV3~ zq_G?)7OL2Rppxf0o(F22hB-dm;l7}*EuqTU-=)t7#Yeh)V9FRm0RnY*oQn{uAqP7y zRQ#b%ewdTjg?g@EBM!R47i+lb!e_j zR~M@Ic`6p1@6s=D>4hpM1*(51fl7C>6eGbBCpZn%C6s)r<8`45IK!no3seKocIkzR zuX4D;$%T>!4$sNJFeF%sKoy?r5(>rFI4%^w5LEh$KrJ)ZIetB;D;+h1ZgTNAyLh4U zuLHGzxJxS0bypgyqI(<{s%Q5(o{lPLy^{-N6905O9VL2>Un=)SQ2AbR>B3}Hym{EX zih~jTGWUotySQ{zXI^u1q4p}DI4)G(KR7N_9X~oQR3CnJT&VOuyLzR|(C*%1CzG%_ z0@+Jj7a{b*>#N*epuH&3Te)bV%FlFMDBjU=p@KW{OFHNVD*vvI?+z+`4^Z>JkCX4^ z$VWHBTs3Or5J(}1g1Uq%_y|x19P8vlrJDq*!Xi-Vrh=+)8YnB8@8rij`H2n} zIjnGaQZvj|esn1U6|~GnEO%H1>JmzUp_8w6{35U=^6NoeLX~r)!*!qUO`sN==Rj5TqLaVu@D+!zfwGSGL0v+X`vI5*PZ5_MnEQgOdv-@8q~p@tr}H+r`Sm1J8-K=njtr z29;oYmoXiihBMEJcQbQpHy53b8p%G$RZo9V^=G?u>8KGHgk06+x_F@!I>gC`I=N8t z;f{kNpjM!Y@?C^b1&#n!@hDKrKg99FKoxYP<41!{!=qNZC1VOymrxcp7gTZcKoxf! zsOnAxb)}=?7a>>iiyfZg($$4Zcbba_?S5DSRd~89;0%`_9o2y4E`EiJPe)nY`A(jW zYT$)VE>t}iIet-dTfY$~;aV3V6u;Er<)9jHwd2=sfEv-4Tsol&c-e8G(!U9+!grlK9o3=tom{B=VQCmQ z4-{e_ILU_&KXNIB%K3@I&z$^^pa%O(m+xzrPpI;~bsS8YrhJD$8GdvT>8K1pJGoHl z|{$wXeM^!l0$%QI-y5mB{&vaM$@N$)?_o*_l;Js-AstoW^G+@le*sj(UUG7wOzbrm z|GJC+x8rX*{x+z3J_dC;Ohth$qALD`j9T-*1;xK}1qs!FpFuV37l)qK4=$n7#~n6u z*w`TBpCF)&O+j5kjcE&$fY}O4)oon7Q1O|L3#IyPKvlFYsPtW2yioG(9qs_Cz8yjH z?%6H`bP1KQyW{Do47)qIP`roZLTR9n!z?Ek$|!R|H6RaEz9Ehe1&#eHpalCk90qEv zMuBS3fuJ%LI6ltt@eU6KbqUpwqd;k-&|#5_7ixz;$8pfkKMB-;xu7yGa0${;KKE4Q zYS8JR8no1<6Dt21pc)>4YRI{u@?8dY0PhBM{fgAD3fH>`p$dKg+zNc&@fTgZP!+u4 zpE-qfE9_|FH=R1RP$$Nq7 zK$gS39p*S3DuyL1}7@;}?Lc_!3Z;Q0Xo+a>oB^ z7m<$2aD$TzmElHEJ-*4|%?{Urx`YZoz%O;^VJA;VHTa({{t3{0$?zlrRqzz3mOtnC z3!obE3aCq{bgw!2TTY&is`y6?e;C}U$#JxqYAsHsCAR6|;V zx`c{v?c`fIc{<8fcXo22%IyNmCU$mm&>qz6>I6cybPrG!^mNz@Q~|v~T|&*4;f|-H z8al$sg~~V5aiJPe0BRZ^*4p|X0#*Y@f@;9ApfVOZ`6N(RI;x^#=RJ!htr=$AQ%fuv>qm~`)q`;^<9L_x5KzQsKCeZ#XZHcQMEDCqvco(?Dgfbjkh*dg0rb$Mek1OyIKBg{u7=7oU#m zUFhUOr90R0bX2p>bMb3H<-5?O1MS`8MF^BoSE2if!W!_Y{Ak=}@}mMu`RT^bU;oyY zanf}OKPvcge$XTnlo;x3+ewq<>>8{fJ9H4d2@CAy2|3)a_hf zP%;Dx(RFe)|S^Aq=@uyY^5M^J#?(=8(YOoZZ_^Nf5W%7 z4d2=}d~0jZyc)i>ZTQxf_gv&Y8@{z|_}12}uMOYYTHo04t!=}%w)n+{Z*6%eUi1%Tb+D1d~4hA zt*t$pYWUW+;al5=Z*3dCwQcy;w&7dbhHq^fzO_yN#+Hp@OkB4U4d2@8n_KOj8@{!5 z-)8EYTRq)u_}2FSn{REKn7Mw@Y2UvY=cm#Cq3%5Zq$t|8?U`j~cZM8xNkaw!2@AVR zMskuYNfD5oM35wcq+L`51SCp{fCPymB1#k`iijXVl1c^>NkozY!hhY}H7p=_-uImE z{m%Cf+*{RmKb4;fT~*z+>d#Z*&!tHSpHa8OvGFOI^gT9r&6pq0E=)6PTeA!YM=aPr zeS6B!$M;^be1D7B5pPugy~EK;udh4v)2zc8e|#kGp&Q@%`d6sjp?td%TWCPMo?B^d zVd?~p&@a41$M~nye^KPiosG(M|NQd_~nhOIq0YnING&HQyKoUbiCw`<+57uz52TKSvdA3j?2 z=!)<6uW4Fp@o#Mced4zb zZnjz0?XLLgWRK7oqsA1ewfxohYDZPv7}fCh&So*DxLI;JJX8Jf!c|kQY@Pq|s>oMH z?~h(rqG6UfgD!sPAK&r46BB2?Uo_d_k$rYtihe7i?}CCSKVLBBscr+t7rVY>^!vGY zG|GQ9bFZ*h?}}eC)9!NkQ>N>c@Ra7$OX2laZMYJiEwAZ*8Ee5TzV2RgIJ2*wx3?p< zs!Y%~J<_@99pyS4kk>cQ{Pk;C3R5tjucO(Q$5+pMo6nch6v>ON_#?h~DQVHeOp@HQ}&t zns?&haFaO0=l3=>?dJHdnepHG!hP!>;q}&4u{k213O5^e`kGJLJt(Df$7@!No#LzI zb)|#%I!>2Otd9RbT_g=a_n6_{GzVy9U#X4!}hFrjm zo#wk{qnYGv)t+^}x?yg#Pe0Cw5ESkHVRs3TtZ82FwN-z;>wDLmYD+V`^>`9@VWw7$ zw%;X+UyJX{k-O5k3ZGiucl(qZ^7M{uTQesD5p~TIn|=A5OuO$7d01S+KJ(f8zC*tD zeElr>s&xB(b?^4E%4fchNuo7WAa}*C-7+7COg2?C;_q^#>sRi&Rypo+^X#C>zS6hV zmxZ!Oq2eBKpV+CpeV^mY`S9B&cb15m3fqmtT`{~XgDk5exs)t0jB~WrU*hPY{W;<>8V>%OikvOwnnz1sEZ+o?~JRbOxQ<@I{|ue$i9FK<}7JRdsWHcFH( zxvojgL9bl)B&{k}M{Ocav7Nqtz8#;Sl8*Yh`O<1t_FcY7 zVLrzz@rxZkZ28tzF*zdUxa#Cxzbe&!Ul*@0jPt2e8*j3R(!S&eRLTx3X-=(hLhxNk;q|1II-GSfFx<@s#W0N&Aj_p_+){8i zF`2b?GW}XZ<$)BOOfu`v``+;_-)b{8r<-{s#o_OiZU?Uo>b^u!6T;n?+~vj1%f2G6 zxYI->s~PV#>)-c%=S$6r(JAg~i~cd;&7Hdhkk-x28>=?{ni#+zN{*N5M!HVv?=u8WC|bENsUoPB|rMOj4p%evWwZh^lv~l-q2X zeJLXfs+4b~jOgY&If4MCZ(ZChJ2}F9pDH4&%d12d+*=}tedX_N$u6dgNC=}6Iy#pW zmH4}AF(Q4#lCp@L$eeW7R${X;OGF2^A-%8t)n%%^bG-WAP~y*+X%yLUZejiSt{2^x z)+Pn*Cej~Lf3v~(qVRc7_K21wdIUL0E=HD0NQ#kcHIlz&Pe}RnbMyR+$O<)X-FAOe z8_#RJW2TY__4uJ{)hT_9OFx}(C>bras|T zDD-`|DRBJPcQic%t=!vIPM3o%H_dYTzD|PWrdy6@9#5j>X22;98vb`qZNKp}%L?j* zkDgX=w&iq+X=BUjgh!=VADGffA^N>*xoGT~ht_Yd<@7zbV%BZw6i9tsc#yJ@-+X|$&To=kp5!+z7JlMOc{P=CO zoK)^vE4K+w0p|nVL#utCTS3NAo?h0m&aPCz`9W`>-xqNFcRq>J&tW*42SOee1TR`n z@7l@jqhN&PzP56OxPBc-xp(QKvQmb^U<}aj8|%0Tc6}LFzrEIRQS6N@x8KUez{Okc zfaQw8O}5-Y>$W)DIa?#YvvRT0zZ;hP-jZ=}&Zh}6bRefv7Z2J4{f=0<64>)d-TCRD zPRW%7c`bL`%9VoCm$CFaVY$-SzkqY}|0JYxp$z!a3WiSlEDN{Yays=>*;)?lvD|6v zmJzFGzva$ZIkhJTEqC5>72v+L9H)l52WVG>{LYd(LX`hb!*kejm#yQ<@S%@}>1a_! zrV3a?Em3Y?wOm!~n=GfJMw(3V z3%6W-xFweJS+@<~KCoP*m1_w1vE}@hdjf8y<#d*+b6R{O$TgNsVFeq*ZGcm2l@d-7 zYy!Tra;dFcQ@EX$OJh0p54$aw)^bn6ePg+F*1xBe{_iZQ6I_+z=HRI1qAd3`+;Pk4 zgjdO_!#QQSjBw<(rzQB&a#^jMI-%2+3tH|Oxakf@{_8AQdDt4vu!7kw*9J}}KdC9s z0jEZzEvRa_d~nK{cHlY+r(b^SwmtTnmMdVn4sf?DS5R(M{vE+>OBRAuRqOu5xN37%?} zR2#3u!wXJ>T5bqj{?M1z+gWlbWHJQR2k3}iMMgSu!uAn*by!>?IBB`g*6lF35;nzMEcY_p zW!u1Yg;Qp}0^Kb#o5kQ~ORllHf zfyIpk^K7e^Xx)y2TVlCkE|=i+#ValOvK1VS-~l*wAg@?%40e4QSAE5+aMVE0SP*Hs zF>uP6H^6b+R+8Pi9fw^Xm8^_8&T`|iUkjaZINmy*0NDw_YM2u(HxYYhIQ=GD$CI#k zvD}+hZZcd~%jxi9>-a4=eSB0uoqjC2 zsh}erk$y9++}qf@SZuy!qvi@Yq^=& z!%(<7nDgKinOQ)`%ILSi%FV|9A)Gp?g_fIxeYTZb1SchY7tGaRJPokCZw2RKUt|S! zT(bh12STS2Ewys<;aVd11m=g9TY$Z_b-T=R3*p*W?jy@Bf@^EJk9A76vf(|@-jd6$ z;9|I`#Gn!83d_BZ{cXjH-%2>8WC;iz6Sc<5eE`=SkJUSV0w*U+LFmM@Pp#aCs@po} zP2J;X*287kOR5g>+h7Gh!d}YCZM59SaD}bhCd(~{(*bqrMK@b+1@`oC>M=jJ+)C_G za0>s8iWp?+-5nojL%a4+F@dP%dLge`HK4Of>Ta^ z3Uo+gJ4_D9cE^98ago~!>XdAGxDJ#ie>-6AgVXKxprZ1e-(f4a0edaW9kqdMgsW}2 zV^(exTpi1uuyUJ~{`!_YX$3z=u({=au!39QTElg~{1HyKzW_QPvm@p&R&FcyWR^P( zr-Xb7A}n_nE}ZLa;9K;qv-1Cfb^H}}eWPE$-z>Ksd+$hxa?bfy7VZGeE%&>X`x>qV zTsO>1aEjng(8_XGt=ulSHE!4Ixd!K)6tf%hGsx#K|FDktV4n=v9aHCrE8uUyo0hu? zr_}8QIxx2f<}E9?54-bJi*eg>`>}^1*HicKL%DE3`geqjUR;D@%EN;o3`e~&BP{nV z_5&oT52iktKyG@z0|zaa7ETfT9voKE`K7bmA?!yjm)>%R;eK*B@;`$mk3crYt^r1r z<&I)kUcP`44M&af90T16O#=)aaITab2fZw(L(UbM6QH-{^1>-`C&7!Bdqi?7|5IR) zCG%UyKfn!x)31Pa{3G_)ETI*yIQtPiJh{{y74+>=)BPdGoEeotBMI`)-mC@Re6 zaLTP4V3pkw>=KQXRYIKIHhJh=mw`EVWQmGMKKY359>Ap zt{ZMA!S%G9J_D;SrB8HvT#kS{>0ZYSqXZ_5pK1wG8d zd-MtRx40iV@m}AOea3P+^ozr9BKA3OFIz4R+$*62k$RC|0xdi)YIMu97aG~QV$62||a60{TDfh=)E(@HFV*L_jtBKa_wR1$TJk5w_yL$ z3YLaTPI-O__m$BZp$69 z+~aVXKmJzvf6S7#A-{yw$mWFQ>cEA;>37OWi1X=L-G6=In=E(1a*g0J!u^2UML4x3nqtXpx$AITdYbTO zDBO?OZ&xt?aZG;qYh(}HUa?et3r$EBwwfA%{A5b{60C0jvGB3sWOkil}#z-a+WTofEN z#?u<^Bshyb3mmsSZMZ&VIVqk3Zp-y(Zl1%Q({kE(aSEgpoKBt4;H0SKI>YJ2jAWR_;4nO0_@l9fy7c0f>xw<$wk0)} zC&6d=qf>4Cn3~HIr=3NE;q(djcsK?89QGlWD`~mza4%b~wB>rh={z5G>18eVyxdY= zbioOp@{nA6dh$mj9(A{Rpb)1abv)Un-mwClvbs0+QkJV?<@&%Cg;S4N)pC8Y>mYLV zj@2yp0`@9!>Ithm9Od7Si*k_a32Ruv7qLHPxtf;i57&J7qhdl&3!NJ(ub2mTclW^Sj43Qu?qs~XqcnV}F z_Ji_;pPunlOVpQq3#SgL4V-Q#V%HOsI-ic#zhT$|mP_brJ$xB*EiTmgbhF$m*fn3H z&ZoQOUd28ZP94qjmK%<}5}Z1kUT})^YuGDW?gcA10`4(5{a%FQGQl&Fzp3d=)T#7$ zNzW+kxv*Ep9ALTEv1h_w74s#_jmECeWmUr*Xt^=ilM@5AoLXj8ZjHsB!g5+=<o0dyZb9u~Z3Tf#qIUO!_D#xwISZ)TK7N*rozGb<0uxp83t>je8&BU(5x7E_U zZMj+42U>2L;KXaf{#- znZ?*OT_f&&EB8KjO-89oeqgyJ*bBg^7JO*A4}k1h8hc6C(J z_~n*chCL;bmUgeO+(+2YQ=BT+m6rP$dn)84zY0#lEytc3E~9R)v4X#Rj)mXuQ>zZF zkDTKTYwIxsH%69ASWG%~bj>U<6@j;b_H0ZBZ-Oa6`!%#bV-V1uj3Hns&|VDfy?7Pq zkiX8L3+M`-1>L}NpgZURo(I~3(HryueRU9^P77=gIsm=pq|*kqCqsKMs$ zECaL;V;YzaW`Lq_F+h7UbVOoakPkcp)JUjNP#d5+uR1;)s1A<+Bc&woVabND3N8{; z`z-<>IYZP3+J*&LZO(3^7Z3ygV|%Pa#Z6ix38219^mToS=BGkbGnFkuwd(O?W1 z3&w#7Ko9bIaMy!+Q9O?UIvX|*$P07|b5=}kh3JY*J0^7k3upGP(G+CtM5ObxW40B`Aeu=!G6lz}@XkUc(L2L!u`tTLdc88r{ z7uXH7)!`ek4`_?S0ibOS+Qy(=3x|MqDjWwIL}Uj!fp#ja1k=%tPt?$V3O)ntz(#No zXiI{2AT$MfD*PDe@T}&b1!x7d8=(o%ZiC_AH828vPU>!u6F0$MK+WSUpe9krWxfdd zg8?9+A0EF50%Yeh9ImEJ*8rXPIScb$pi@Fi0G&2k02Bn;rmz5LXTl<&-3Z!!pxp*b z!G~ZO&`yKpUw^a14-)?;xDIZBo8T6>4K%r=&TABS9gGHQ zvR^0dqk&phwWRg2@221Q2KCuC*9(?ssyBaJ9OTha7fGtfe>7IwRV=RgneJm>{_11<3O1^qz6i~P~z?n|H)ktq#y#GfJN zTZs8>%v<1j#zQ?pFVGwG0ZX{Q7TwWt)eFHQ@E&MRozN)sFU(s&8!NoP2O_{txIe(< zNXq{z0cwSKIamQ!g4JLqm<6;dJO?ZUTKJs?rt6wWO~RZAwD{WsJOi}As|8&x;I;!= zv+W49COZvG2Q|6YdTjCJb=mm?aR%rsbx(ojpe1Mpo&i@V8ZF8;08fBAARd$eT7xYO z3W37rk?oN=8|TBC9~1xuK{~unhpDAht(;y0SHZ79tERtzrr4VSt%Q~axqucs^MJg5 zGi7^ZDQ^w)HQpyQAU02c#-Is!5wt?+n2hc3zWlhFi!BU>W)so{2;7QONJPovLsHw+Kfj(D# zk+lB~E`uxJD)`l~U+%PP96xE}r z9w9YY)|gjMb$U3{Lzd>f=74v>P8ySpq~Ht8t>815B?S6(O3sbD;q07e5HkEx?GUjvCir*3vbFZzQ1U;xnR@z>Fr&-5_14$CKCE%+2@ zU8E0)M6eUr?-JuU%(IwUnrH)mjYu@cYy`Btpp}Cd%wphq?7hHqKr00|z)f%s{7Me9 z0^m&eSH`TW$uLc%CsHQ4KyHu+WJmY}v22Hj9l(#+e*(XN)8H)F33h?qU=P>__Jcq0 z?<#nV9MbgkDWDl5%?N1*NE1Gq;Asmws=e+6G*`{sv@`9jX=Y6;|B1tF+{+Hafgfnv zF$M4vdri__Cnt31mL}GQW6s9Z)T1V4_n=pM!9Jj=$AjQo@EyoNL{or-l>CVVw;(?U znkpOsz9x`8DA-Ie3(N-#z(Pj8csVh6yVcvJz;&k@MaAUBbVBK6TABM1OZJscy| zC&3Ru(+(HG@8A$P0*(UBJe&Z|Y(px_-$$%IB^50}Q&5TP@?abh7!M|a$>2@!7MKd& z2GhU{@D7*@=79xZAy@?71B<~Dunc?zJ_gId3a}EaPQ{;3z*>+tV4mL-nK24PX=41CD?*U@CYU zXn$;FPz6*4^*}m2jRt9ewz2L5+PbDV*NE(1GEyTtwma%T!+K;AS*>x8gl~fCV@QIqd*u)2C|Y_u|t2GF+08nmnljrr3ATqIR<5m*dXgX{<#!2APvxt|P#18qml2($%JTMmC9 zU`?xZ#IBu%ow)Y`**^g2&}8ki(<#g&k-tsOXph~Wm}|fiHObmc$3{8NWY7|{0@{|= z7_$jzfwE{eupwp~&@QneK)b-wBbOdC1BeD0!4(p+h+H~Lq)vk_Tx&B|H}D+j0iFk~ zK^v8SAuKt8He+cIR2X*canhcqqeS2UI0(K4XTUhJc03pfMgdJ(w*;-gXO#6sFd1kk z(G;N7nr@=H`OUqa_t>kRCPU^o~GbmX`8O{4+qDaK_WksQ}H2yJ_KpKEPhc?L{K;6nQ!x&!Tb z&>n{_U_RNTy$!R#9H1=?Ey&K6pef3yZ3;DjwkBxTK^YJW9tBxJCXgB2Lbq;%bLhf( z@H+O<;1w_&Bxv){oe^XL$w3OBW$#pe%Ktl3c81pLM^agz7`6wUK^M>lXc>D0 z*aS8M?E=u!wYD`><94z+Fl z9WV;K4n_lQ)Yl54RtzhH@*shL5>g@*U>Wpe1Mp z>Vf*;1ci8W<)8GvF0sIKYATSoZgt`m_gTP>*)wH3Y zDix&~C=V)t{Gb4c0@2`8RMd+<9-vjUxnLfc0cL`cU{so?P$?|^K>|758&t;gDhdEp z1LZ&rsEsaG16pdU00t7dL0~W#0{VjipbzM4avzDzP*e+W^+0{l5vAw^^lnQRP=}!E z0xigC0q!@`4krm(V@m~{8l(YfL2{4+tmEE#@E%wU#)AozH0Yg{ z-ZBF%x1}d48Gx4AYEeFqgUX;PD5Tw^g|S>G&u)Mt;21avz6G1X=U_Eh1GF}$<+cI1 zc?t9eeL)&JPl7lQ4=xaJK2n(hq{8h5BA`XVG$1W-2Co>eY6!?L`D6X! z<0|GVk*n{s13UHXTqKt{zdkZeg63rOq(Lm4^~HC{d=2U*fbn1)s07sfjRvE@PU_c4 zOf`iXU1*e{-I^M4=$T*YRRn1F=Roih7y$YMtzz^A-SFe(WNdlw!-aHFGYy(?7{QIs zm>q#ymJXQhfjV`yxj8{w@HEggcy^Et1VL7i1!Mx!B59MFJT-lh=ESkcOvxj#hJ$1g zt8N{O92j3Rj0+FAO~hrz@OZJvYykAo65?kM>5;Cn>UVHQVRN-Twz zVy85xGx&3Q)0jY%KW|uu2ovM=7mCiv9c@Qfdp#3O2boQeD1U*3=Fk;Dc~A-{6AJ^S ztsuw+^zi^?p7Kd~p){*SR?DoGTD;<206q`M4|0P??6u5%ATJnztYie-WOPPYk8;6( zPf7l$*)L*dNBc8$D$1oM&gFg|?j*upPYKJ5D~3G=_yGSs@%&NO6AOw1$tX?ycibw@ z3Z^u;6I7;zGF%1`DT`SSbjSV}CjT9~%!>ROkJ$`pil!0Q)j>5-6^N^XSs6%wp8yR( zZBPqHPVQ@B)&P$KwNv#X(8;>8aI*nsebAcv6l&a>VOJw359N^@Jq4Zw^0XOf3Yvh% zK!Gct^rsDW1=O+h*iXA1(;8i)jsGQ zr$O-i_Y5(kGWmlwhT2P|@J=b-#c5!n0fz3s3@`H)YpNL-0UDUu>HI+xp4lH&@^!8! zB81@tDf<{M6gT-_1n8dpc>{}E8|!EG2WuNHRRdoD?P=A%!^unFP58;60{mVSSmWbK zTu%hi_@jCGzT8v6z5u3}WtsgM5;QY*9dRu)YWL3!#5GB=5pgw&Q-KzXr(?birhyz> z3)*?0sC)^x2xvFL%ODZF!?kAR`*B~p$!2n`IxTJqcJa7P?Rg49Q}_~^Wg2B6P8vN` z0FqJsLdn(AgGNCOe9Yc(HQU^B(sXgS6O}YJo}tmjfS|9$EdF58QD)tZYU`w65xU5%++Uxg{p z<=IN?%IOuDk`2j-)AbtbM%VKEe)qawO$0vY-e#}~Yy=y?`UvxK(4W<}4*O?jcFYjsz} zq`C1Qak2~S247qIPRu1aj_)x-hPrNuGlsMV%PMrJ~_Xqd_Kd)gbJn4oTF7d^F9gw(; zN}ZFqTM&N%MdYUGor4BP6CA1o$uT2A1keJCCOBrPhf;{G7+ ztDOtAA!_5~PmudrfwpzwhdGPOb{Hcjq3)BO(!Q-F?s1B-u${$rGx=RRM}e$bHC-hsPx3ykf}0O$|oP#YThf?gm=m)sVoCtM%U8_1uKA0c;g6VfN$gKy$^ z6jCM$+^tLsOx!^51s=YHslb(rP$Y(69}G|?N0)j=I{jY4Fu39174Rz1kY*I7bmetS zyI%%0w018z!I<+ECBt;&H0#f#c7u5T`Y6J zY%mkN1Kt7#OaYU?L@*A#0mcFa7Wz%#dOXmh!eq=hfn;V_ZaU^vFb%v7W`Plmqvv71 zAKuE%Y6YUbZ|`9)0t9>A_fS$ewK&S0d!V%k6A&rh^G zt42KH-y0EIfFbphPt{G+YDtsrVbodor!6CyxRZ6q54jihy}TjJ+d4L;Y)o-tVR{$w zXYp<@qcMW|j#oD1PG_v#Y*O%C_Au|zxR}^dF|nR2W<3HWwZzM0ed2QkyX^nu+O#M< zDiKpACZ6V$J6X8XXUpVkdw;$-fID$9B@{$;ld33ww?lwZPMrDdS2z4e)*p48mc(n% zAX5ba?-`xDF&aiz~n0FTp zb9jljFmqsjzO?l#>-OC)7UnGx6I(o{q^3j6(W3s$!Qy0KS|o04o9^|_^<@k5#+HnU zQ!Fc+bTLGtnJJ7B?2epLQ|F0+?-m|$Y@m~x;*uL~+8|JJ3Igd7$Z&DR@}K*K_eY>q zOlc=aZ4e)H%pAS)-SBDTA+awT6C1zUERo-85*fEA*7;*wci)9~n}&JgW8!1tD5>4% zM2x>nNp&JBh444luG*35P!k(CIiN-{J9jE%JT)eBbiuSqclw*yL4ho0N-=+fpk@Rm z^~sbE+P^-;|9n~%g%iTB=5{fEm#F)TBCR)t-wZ77Z|Yrbb`>X!wMR9G4}nc5`hGtD zYF@G_KBiPmS%zEODZ-s;EoLtG@Wh}aNq2GtOpaKxSZiSlebkV{Su>>>k}AwwJf<{C zQrgqOG>RpQ2bkwDf^Q?IFt&dGQ|YGhADv5*TVZBOZkOp@A&@CYY0r5ib0XPb{>f*m zovN}vNit>fDdR|WWSl=sShnP5ca=cqu>6>p{FzPDIDb}eG1HTKUJAE7Mq`t^9!5*^ z8Dvm%$|{H3360nFT-1<)>SdYN%tg7HU{b_mykj1T_s4rbFzH5dwc5p3V6sVZ9Xt=TB2Kbk`r4R2Vvl<)1{T`qijSL9F$l}HQ`Aa#k2 zPtAXBa{HxEhIzGSDeW$enGSQzqI?CHY|K)^b%Q#49yirW_=kB%n1-cEg|?c?hhG-H zp60-Th+bjdy)e@8cIM9#{w~2>Ou?#hEPZzI{v8?CWwbg&r6^_wl_Zjt&4eTVjAn63 zfA(zk5Kf73g)X~04j$1hpM+y$_{ZA;=8e*1Z&Ye?tE4}(x3Jk*IuOeB=x~(N@h6MD z!8cD6O5yoXbL>bcjHrlM|3a&7gS=otE8E)!JsrW0XTv1XzntT>H&W?HBf4KEjp* zncm(kL%>_xY?s^!v`ZQicCdG%sS;Nh4WU$>hR@uV+-9@vNsJ#&?k%$`OVjZM2& z812ol3K%_2?;g}xvf_#7{GCHG?oF|~pYmsxxnVXL^0OJ%5jWS&?8X?b@8+9|1f+bSD<>Ufgr4`6T@j6~*%8nuz zbaOW2tvof>FWvhFvZZ6Nr3Hi2(t#;qN z66To1kD7+niPz~z-PWL4+jFcsPy?^+C8PJKQ5%h!8V26wkPL| zu;V4tFaH@|ipRv2jw$20H&*vVCm2h=AQgLe|Ca?Xee?~zZ)-YV95Q%NB_c_?j$quI z7Dqv78OXeN>-%gItd8coN%DSdyzk;_wb}T7AggJJJ@^?Rp@xY^<~BIpOVgtUo%#A0w}ir*$2I*r;=L{SXNMf=in;k&sMzB- z|7aQYJ9p^hr3m+`gp3R_j-&SlKNDxPpUgPO5I|%%gL*-9A(VlhNRR@xVNNP+K__ylj4)JaZRUh z>9WdP(b$D@h>i1va;CaTp`5WN?u57ZI41Htv=XPZQyTkPhVO80r{_%_?|Ayv~5V| z^uY864>Ly0K+xHKiFkB=)7_JkqG-D+Hz{sRW6b)Nl&LLpr&qYAn0=~gw&dKTh5Cwr z=uhf-7yd&>bZ;l~K+y;HJRw%*-+PP)dURjcm0&LRrHtStrKx%!y|BzR`T$AH(+3 zSB-Z-XoTVf;)woJ7XD-2+tl5g&37VnPow#eoOH%YNiq4|On8}gB)p>8(3WN^Pet>@ zb!u6R$^Epy{u5U!y45RwVuyhnXUrNB=KTeRL2RP8lG_`dE#I!)wzviXr(*N0SH=^~ z9Z9Upyyfuj-M4;lY6n%aj3-Yev+ily#B1i_(^R)S*7Kfk?MgFrWIdDCI|ip3Y~PcP zd&Ul#l9jL;Yv#9LjB?s+Y~hd3cDst}@IdOa&!>;BTiXdUPU`KiYSOm!XU^88s@tx< zdV9q?H!?>*@5I;XX{fW~=LhZ`qBx`WmXw>V9d2u8>%aF6v$!iI{C`d1?$c?v@bA(- zMtSu@GXDe3NE$Z&yXyQ;N)-Q(b?6~V`X9;Kds~KoBNy*$X#PX_WO8-(mk8#o;p*wq z&2wruEs*P5TYKnR{?^61qnS_-8XCwIGZ#CfoOX z{nXr1hcR!;JLi14+E#I#I>V`86O*G4jrYTKHD43cxDQ=QaZ}~vK*n%JgXPW4J`B`X zn#jJSVuWedmqb5i%3mRpzcCtBNU7RSo!vg$sy-S$Y3fjkX7=gP6luMMc$m=dKhgsI zH&y-r<;MLDb5`Sk$y%6-19=k3 z#`-;ii7|~zZ`)F>!L}rcdZzb464}R$#t2SDP6_N>qGe=RZ}kO^oHORwY}O-C@)ra& zuX=O$fI^?ApT0cFqezy4m;*?xaq{`NF-KA^PP!9kQVk-Ar_7$2{%B`>o?xnonQK~N z1V6_m^BswezH7Ik^p28lpw2MnoEe8e$y_Xl|o8ZZL89$rQ#2rhLYYL;hSDOXnQi zj5+F1$(Ar}5GdIM0j3ZVFMPJ+RFAIh^|WYR%rqq3I3Hn>Rse7&SoR-^vX+bL!n*1(giVZ>7oftOlhtMMa|DXy# zu=9KPa9$5659!M89Wwuix}R*xQ0Xj`-?#B=SAEkpN0?K7np^S&+L-a5(h%RB>CtBV zE6guA&!5pgT6>T4IF>0{S&#ET=5o$MnQL{%WUkdofh4b**jL@j%v`TAT6n%9}9ZX_c#%^i}v zXLi$7*i5c>jyKMO;a#!h5o`o)W>U%&Bd;@vmNWNREF-pip2p%eRUb?0+z2>xH|C9z z%o#nrTWf4CUh!u&M@ABy)5XQRu9*;Ig07U)TtBQOj%Q+RylpMFo~`rOC*K_z=9V{3 z<32Y_Sgr}4@93`6)qe5gj~6US(9#Pl2?)gBHYX4W%hbu-9OciPwPYu^`=9iv*|+9M z1tu=?!)O*|%5joVi3?48)lN65de7rGv#VmeU9mGw=}alvnaVoGyiNz-#N2+J2pnZb zRu0S5`RdoWX;}vl0Tv}=Vq@vjx5qOMbw>uK!)SkL?`V@MHc+26gk>w3yq;;s#WH#- zHHNn0P19%$S$o#Zd=@uC|ld5Kd%rFAhZIVh+2s=Yb8rbH`~a*TlfE7-D^ z+q=&DHTUUhug|;S6pZ6;tods^sR~ut`{o1w_l78;l!W>Fm`^9s5tr!WPR+K8e`VB) zw{GuFN*0;_-)F7ik=A49&Ma(EI;)l;ayqXL#F~etp?-PT(ekRa%+ARgT^>dOVeW(I`0fvqs+8f{+zm9akeY=+bkNJY%NT3 zdo7;!qxWpL{m^YQcQ$j-WV$ma`as>dyQjai0{NeqZw*at{reN6_fFg>Ie)LD|FK8) z2X!|8oTE)mPbRDHlzXUUzh?R_q&KQ&HZG)0>zhLh={mZZG>aH&_j`$b`E-BTTMcV` z((~db+DNwBX!JaVI~wlSs<>@S*tU=Eda9mbp24a2OVfW59=YD$3Dou<-j*iAdw2B` zZZ)zxmf1ViEPam#c;!%cTfl}HId4B#H=!D#(+3uhDdpK~PQ6E*TbtO${=$J*6Wn2= zqaD!^aR?Aj;$qY>d7??3JdoM!SnMxyN3NyuzE2FFHQp#5>Un7IYf8RPT$h+eLAvLE zo^Eu)%tFP_xx`;Mc_?UiC>7;nFObJ^AMH~#Twyb7$z7rUztiZENg7n&DV&f-+*caz zcp=j1-K~zhjo$<7?S0AnR~kVp^FQciLMaKQAZfJXJT=^V8A>l_-QHCpinDpndgFDQ znLFy}^rErJiWdJ@67#@J`5&k7pOrF{qB}9}X<}ES&<_mu-+3qu<>!4F;tr5(FJpGE z`ClCd{cBlcd+IwmbirKvlm^HqF!;*r?sm4tZCCXh`{jPkLpr-WO7no|tg!tr7QOql z{jc=tp#uN+yRthy$2|}FA@(6%+dZ=XTk-pQmwR_@2(@o_k4?O5P3#u8^KphIw!PL) zQ`>_u>!Y@S@lRAPjd%8pbvwJ=oi5Lsc;?bgM?0K-v$Qq#4`zX4!-#8yy*EtnjoMw~gmeyLTnDc9ixj z#?M_%LOHtJK4$GcHZ-*UiY2Pjb=|4{U&ZEw&n?eeX}!>*)!V`iW57ctxR`g5}r?JSOh zbLO};qi)&gM^~TP!T>R})!6QD+Gfh`BdC3*hYV-?tu5~O|08=kL%ZHg$^#UN)sV^u z=#eIyeg`P`S?{`2DQja-o=98O&y4&~?RaEqptjk3z~3hD)LeJf#??XZ`)1rJGR2ri zKci9QP3}WnRX1A?GAZ=07C`+6=Y5Co*rOZ0z^zK7J5FBq>G#`?k-ZvH6Q4&GnCaiq zI+Qdkz9X;P`6v_iJ?Z+zWdELM^f0BrXGh%My^s&=;qt_onaBkPE^_C-%IAE%^}vaB z>N=|A>~^|8S>+EA(mK=g5UIOu4ssQiE0sxkm}t2Bi^BqoO=T{FITpJse<@o}&-GK0 zCv)0(Q-AEv;X-EYVLYp6HXbIb^UNWP;O+O^+}~E}_UxFBol4r6;A)gfqpih`PIaN+ z*u`wsH%qX5TDJ*kw)b4Vfj!ecjVtCuRagJZ4ao@~xK0DNC(La7!U?YvpxSfKNYn19 z6T~14?KjUA&9)3@-)Y7&cwKX;o4`|Xl~a^EP-~KP$(<;6)@Gt+zTY!;dG}vCyu%&) z6y$DDeZVg0&<53hCiWPCPBC>c{-L(4HVFun{Qg6C0pix)KQ3RKIsal(b^0$i65cdF zA0zv3o8WPhmwlNjb)0#@qh`i&c9FMQ<`%=8vjYpi(CX3%n>JMDsL6SPLQnaTIT}lL z95p>o5Z}8CXIOB=$FA$KFK($-qwMRWa9!4IIwzP4CrQ^d1k#d0Rp$}_XW`hiBEusItQ zh&R`Npu4tuV`6@!iTPLCgLwOTL$oROlRx_d8;5Wj05{nsAGk-;S+LGdF=_)-^#hxy z{;)ptQYW9CKFn>WOsSt~Ebgu2?ylT0PeC)-M*%N1=YJ+om#ub{eRlnZ-}|b6g+lN? zk+$vg;&tv{D5^cC{4c1}DbrKNW%KSY{`%R%*SM?t@29H%;~6ub+N`N?l|;5RCgo{b ziK0j-hM$#ex#i%EysGcSPc^rcsdU=isrtrgderG=<7t9fU=CsY!?twiWr2+5ku%JS zFaN}i^jiy-3~Kyh)}v0jISt?q(MA`5E%( zwmEi&pq(s>GO5n`%hElyNx?8=o@sZMJ4?)xN?bWrqsU|G{21t@{KyUb=D|8)HJa`m z>GBn1<&W`poPZ%ns|1H@V9uO&-nAtH9LD%7>Eb^x{2R zOl$-rnAd(qd+#K=N&?#LzX0W|G-Z@7-ZoENAnI{u^aXmHYMb5dcxM`Q81%$wXPX9@ zqBn~6nU=p1uv1J?ydptP9Ww=fV^*f%=WY_M#GUynRynem!@p4w?h1(;_jtSF;?Ai> z+-Ikzw$-E1@2U7AzmXby8dMcS=2xJ>-1zwuodE}U(wdawO>;P6% zVP8}#`S&nd^HLgx>3MvcJCM4(IQiz2Sw6k3+EOZJ0G=N(*)Ow=;P0LfRl`PKm7n%b z)#$0l(>=E?T>r{Z59dVy-ihdbncmrX_F|n)*)-V9ly@_>yW19~c!xy&G-ivtcpt~= zY3x_rDTH@Rj;;ykoa7(zj%76N#Pj^}E8Yb!Bas1#6)%2QeD{mPmN^n~Tk^Ka&EA&K z7MDUh+~?#HE9Xr)o--|5Tq0q#7ovvgDLH3_JW~#89P@^0;m>v(^je@?shMG39;ltH zWe#cG6`BCMUEUcJW-vLf`g3{Pm`YdCI;YLb;4k64oY;4@v)6+{#tm_d5BgvT^8?+%YBVAOEsUD!qij$W^LgUj+(o!mZxpdux87 z^Vfdr%rg&J==|c`w}T$^q!fCTGO7RYm$7g3MC;vv>ZaWv?&Rw|YjM-eQfS8V?0~RK za^-fr#b_2MJ{q;Q>>qAXXtAz~`Rfn*YCC5Udd#(sO~3K%zrS~)CXC|!bUz7fU-rK(6bl!{JrNX zx6d7bJ1v^>!l~M|%=xM`6qPFm=rzj+d}iHEnvCXVwjcKQo4i}`kUjnM0liGizfdE$ zIX4Uc!lAnD!9KCQ}K^bq-v7PL}&ut%@Mns9_TkSae z$7!^OOql#f)-?W=nW+a)1l~J;^B>yO@sFL+KR4oc1}ziJ40US{R~_5$eR$B-q`9w0 z4Xzn=x{NJWs-M-Z&rF31l%U%Sx?`Ly!JW9$PJyg9_Pkah-Quda((pb$)^o%p&|8Lj zncvNjVZ2Nj`K{R*!AQzg&|tQ2-7X~NjgAG2U*A>;*CpJ+@oE!{B-Vux(D1c#)EnN+ z(W}G4yn3Ct6fH>!(=d|#0*{*+l6z2JScQyd78Pz>F>QgvP{0y zOOQucBT9GSB+lKHkVTUetyo9ll}zSJq9UBvuRb*6k`w*Y<_JBycfGmBRd72#Dl><~ z)OhF7x;xm2frn0)>I^sPhsIdno2@AVU9^v(c*;QL;KSdSJ#9Lq40K_#WP3^??*GpG zlrj)!-%mAhsRCK;8!*8qqTPbnT{5ca(}yodMtLh%(0gEdfo)hS-11)8^i;TYUjNis z1-)=zPc?s~3gisacF@$^cQ}%K$aGIll3SbMsoBoqZWJ-QQU|j0KyW@aNiJm~(*%Y+ zu&oHbc-YMc-@&@x7v_{qBxmhFc)O{TmX{h2AfU~ntBNL@muA=I-yOYi;*|BMc_FQn zM&=%(%-XbpCcJ=^CLNKeysBEdKqK#eJ^K}Je%V2*H^qFMfg*BNy0V0&IBBv)1?q)m zJZZW`5x`P2BMQY^Gu<7i&22XKy{X$>L_qn45r&oB>6w89+ zi{@fBf{r{hr2xHBg?xe1VQJ5p4S5668Zvh>GYgWPN6)wgdv0lk*-L3s5He!(5qHgVdHQrV+6W`R@7`x^lxZxw0YG%#=?`s}@NMn4S>cGG=3; zKr{=T#XUA^)y!wy2sXRmj%A+J1DRRBxsRXKx7;jSX?yS2Z3v`#wMml$@9qgmUhFl`zz0v^kk%n_cd2vU z2HT_E2Y$7RoPLXXB1qx$_-= zIDK{Gpn6VBocym~isr;ao3BkxJ6&}%gL0x~HtTKLlS(~n@CE!+V^Fy9nwd}JAE+0M zq_(7Bn2F7W4~|YmnKrosKJR#QtT5DclaLFgeIKW4!ZQ#5a_YL~i%wamJdP@CQA?FC6j8Uq_`BxcQ_-A8ZrEx~$6nlH)juRdwih++itzUKkNHDsxi7)d z3c;$pRqMn8fvh1PxM>>?w@L?3{Na|shbg}AF<|&gHMFW&j|Q@4+j_(8`BG*4qs4Dyj`RMZQ|)+y zNXl^A3fa`zy5mN{}b~ADrK9H zPzPhi77k<&WvEjmPG91-1tFe{wz0UEzh6Gv!&}n(GTDiBreyK1zdWI;(R^SJ=gdyn z*6Mvzx2U5kZqB%@d8=rkg!jDpnp+ITelALj_=^d~P~mv~a+=fJEzehY^T}t*Qw}BE z$$}?M!x;MMKg|r}9`urrw#8C&gH7Bjd!Rwh1!u>dDB+Z(GwjUQ#GH$vk*b}{>s0FF zSMsgTGH6E^Th_R>FZW<;Y|0iRwDV>}F~-{~P2S>MjWE576XW$}bn(DTf$EW7zP05^ zyfdA3*Ir+W>;aSMCT$$uX+2Xo4qu!%z3K4cXv*3^1mEEklzKY&v|j7Mo{yf?>mUrS zm88mMQXE+nW46jzXl_V+HR7yBBu*`uWAECW%Qe%kj)JD?3sWpU&?R^f0rgDJw62q) z=++_XBkj1eh*_o$%g(;#6^z4%mEfwf*;pN8iaAuBKx&&bHMnYHHnzryG1*H73I`UY z^g3UDdeby23G41*4({QDYU;7xd2iy`jM3i=CmddYQ58OFW+GRzGIuq>@>h57hrRMt z*GD)sEr!4_4)aONojbj}4 zUzBQmrp}+|NCv4?`S3}d%6w9X(Xk>On&J0RKOX$C9e3WqX$y**E2Vi>`lkuPXUb3> z_YHLmnPX)FH3DyD@Ot8vdQ-G)phm^UQC<(PIwyAN)2>(7-rYUH>V2+v$g?4PTJI6= zbmdNpN$ynK!&dJz2mcSP-J74vq3TtPw>*zU?hIw5GegM-c-|>bB}|#g>+BI&^F+rv z-MmA1CUY8oasVh?QNmEn}cn%*|5iM{R^D_s# zW_4Se9g|w7-MQlT6HY>%YHdAATZzWdefo@ao~C)+Y+K2B+{# z|6ocbH1**|-70Op(6m~qsuZ7{<#L|xvzp;m1My*OK=`C8&suiMV*{UwR-1L{yic2pT*-CH>VbN});ybOSoK|p)bGEtv;Fd@~tjI$WhXFqclV`6I|W3OH?3AF+>5Z&`sApVYMRpWj9q5e2g{+kn< zo-!t9?fa9Zwue5f2RDMxJ>qqC?#`LpvDX)C2c&mXCxJ0$wp=bWYbE#aT-aa!Ayue%;8GcIr^Gj}FFGG*od+Et!P3c_YnFfzZ_nL^(X?)~C;zs}z# zWwDd+EM6y9vIO%Yr)jJ0S%1sdGukXbp;W1fE#DZa^Uw?$XR6dCCG$tt)q zI8ocpqPl^?VF&V?iuD4S0|)S*4`k6|UaLzXR5BInA#}ius~^a13e^jw|C?kvvqU0x z$?kZ)K#{+RIKkEk(bhLt&;E@P0WDC#an* zPm=otY_$*^CSXd0e;(2N5SBgYDEo4oI`{!Se1~#q3ZZwr$R2T@rn2`U$s85>sqH%O+B>$R5i z;`gG2+<*sD=ZWZO99@Wj7i#Q8>@N*m=Dq32MAhog{pSDe{jHV1+Fln3F2*F|)$ZT; z7OlPK#VLnN-5fG|8t<=m0-9#}!^W9K7yMOs{Wy$3LclBU7UQnB}2lbhx z?$CK4B#p7(!i+u7Zuq0sI&92RRPRN9Ou|%*r+xvDsZ3^K;~L=(N(q3-cbY5%fu7xD zIUDv-*Fd$YzF|^VTUg~qT2~}>9Tmv1jfASU=v_^Uk5^G<5TF}HdxEgW-xw%neApYISKcgb`US?x94#0pujAxlzJU2J zvb!L_}A1^ARD%xyCJHt=Af0~!Hx}2&*akYlhH;o4OxMQ+_PQ^ z1s~c(tD*tx>`>Jg8t9=={uvqC5I8UZU9F{uc;(Ry0ai>^bFjPY({uhyh}=bV0M9Rc z%3I*n>Z^*C%?J0X!uX&hF;VC;jhKSg#8RX=Q-Gg)RDf6dW}g+a~K_GnJX4wM##7Ug-_3YHYofsTe@{^inh4#((3 zQ5EUWe-PC7=aQESFt^e+RV&`K3g6YX1hH>;kIA&x6LX|P>)b5|G8`DD< z4i%DxL=1ql>?6930x|=p?or%`a-JpwrOo(#O-2eJBFlM!YTs-Cl$WD4F#-#$D^jF0 zHTUv?DfY2d;P75T2deovg)AifC4vT&F!1FAILD~*lydZd7_U(y| z=X@Ww;=|`Y2%@A&a8e$PHR9z zS`rj?kXEPjpH8Qe7|eJL{WC^Q zGiP>#4hNi6#e-lMPD69&aB~X}f;m3Q_5C%D%r7gNbH7acS%GR$dMCnZit)9+9@d+ew0*vsSeJ9}KBwsG*nc0r)R z-7xgs>}h#165&|w>G;wbUpoIdK0es)Md&CTW%#m8e);v|i1K$1Ok)gy*`Phh)z!+= zDJUW!G6wYMvd?yMySqJDCRQhVw_QD_U6M!ATUGY%mpw@ST*OteVmN+g9!9Rx-FcPjui!e@np> z3v0;#!l0o%5lFSE=#blKT**HTJ@7~kcg#{n8o1Pu;QYCeGsXs6@?Ea`6YB?jd~@n$ zOeuor*r2)2V`s%zsKumU@|}yLA9I3fE}r@VRC5BZtb<3k>3V&`>&zG+B4u|3(=jxx zR0h+vxoRrJo~dtQ|9e#8=>)hgMz|gX`B+d z_B$hl2Bo8i10nQEI$*+c0ee0SA=^C6l8E4>>U1mx+35aI@}7q($3yA$d1^1~bD=`@ zJw1g|=c5XjUP3J&(Bm1{`Sp;!m~1#R|L!t7&kw7a?B&eu#RJ2H_I1FvJm%}1girwG z$xi%uAxSSg<-%Y|$WSLMd0})h0}ac=FKsfxBsPappG*u?ki7mkw8eTkmsaS0(KG2J z$2^w^Y{F?cb}765TF97aiuqP=KY zpNm=yb82jmzHdwGZm88Cvw&LbqNo}rJU>PWTa+l++k4mG#EOA@WL&kiLQ2Xu_>ym% zI>deAmghO#@aXolI1xpI7a|TMHHNYlqL;iFv2SlHPwaMX_uUMXlybzn7^*}GWnTUZIwl6sFKaBeXbxi`W^*zu)GD zuFbn`!2R&$Nrtko;;6RXAgIq`=!q9(@$!f##i!TPiyKVN^L3JD@FIIgJ zZOx*|^oMZmI}@KrEsON%^>Yeazif11EF4Wf%E@^0%~n$}COVd_y6I@95H->)J+rzG zeR(;rz@g{Pcn5ONsq^&#Nz&&leUfOm2NmT&RI8-UOQ7I&oFzt_vwHs3w+?-by^1-- z+#nYBokcO==E|U1WRr`htYWJN0{ziY#H946>6 z?aFokmA!5APzgkW@md^7rUy&G&Av|-a&1Bixh(^MVU^OMf9npq^bY%jT?S+4`EA?G+KWmRC}!Prm9bIg5_n!n)N*ycPEEJunat)DbvStK^xvZ$UsYeF9}P`(9fdhd>XI{Gv_v+B36O-yfj~U z7hm|t)7I*ST~jbnw!dQ11LsrmDs{3h9wnHwujQ?qzJq_eutb)?fI4chsgvX9yB04Og_Q-*d`y<);8FmH~CCq=Rp$`gy zp?hyp>S{zjGSI9RkWCTBV84L8i@^Vd2asZm)Hc?g7l{2fdI8xMBbSPWVDGP zQ^^}EUtuVDlHXq=bNZjBbKgQAXj7uLw>Q-rd6%fpIv+H{c9%P^3>oy%%t@o`nvqar zvhqu?QQ%nAr4p=Jc}>A2+5Kjpo3D;;cj*1PdJ|~)YEYs`94c|g-i08D)q8p_^B0s~zPRQ1~i9-1zi(Jp*qqw#~L%4D>i>glZJAP=hh;sI*;x} z3V8z>#DpVOjNP81yt9~UQP`+eb}EBk03jNr-DSXu(WMvq+-yPD4n8)wcI-4gS=muS3gG$(r}zjI4|MGatL_ii!Uz{<^NZtB z%ik(EQ#oeZ*}4)Y^P}=y3nFWR&U`Wkp4UN3OVydzNdqK(0m*xjce)N;{@!z21t>CFz{)LyfsXYGzPqv`_sFyaPE<=NsQ^Keu|KVF9+K8$EEyyLcjsiY|05X}V zx&lNeth-7Q(ctYM2|+N8a1pWZXzW6=Mmn_}D|-yJe1|jJxu_VlX1h@GCZcTDP22QnE&%A~9@ zD`*Qio3d~Pd0$l9cEZNJYK4%Qnq2i7vBu(RA_}ueeYOv;pxSzcsrOEU!N6pkJw4b7 z7AGkKhGGu)yed25se-WgD&v-9*7_#3+TZf(62lq zTmOJ~s8Lo{=78Y0MTw(m|K7VX#QtvRLS&4pmtyTd^s0hKbJ+YfDE%KF6*DX$BO$6D z;`s;~ONQ7WEm)&8N0kQ+JAWgr@k#;Nernj;!AiNz>-Q<@eoHey1<^wA+{{Xt4AvBk z*)pAyz@H@}mI96L`Bg%tk1svk$2RQ7vtUqCs*_w@+=4|8pF>*HWDMi2S6@h}pQCRf zBI(VySSRb_hC6v>Sg2=tp^y$fD){Dj#(U*u3<9AS?Zp@77V-P>kL$CtY}hGy37fH; zp-Gws_}-@P&Ok)w(uI@qNg<6r1Y?Bx+qj-5rhI7PffUh2ZQTb&LRDY6ePLEVn`W); z4JIQ~xYooa<;h}t;t2Kvu^T!n!;7isVS{2pafe~PUSBLWhtWOyblv&(1Rf(OWE&x6 zInvp~m|}ih(Y`a6%FN4avO|5_5@F7K`k+q2+m;G&3|56 zIc0wd)nW+xZ)A%$xzCSnoqp;?#Zoi#wk;voqnLTID>-vxoJk0|nrqTGD0eK=-bb_5 z8aC1quM@JbbHD?1p!kkv`XX}+6xU? zt3W+-fK*}|v8PD+RkrK~Wtg!*ea>28F|7@>xIgq^yQSa;ET|jOv4%x6nyTD0gjv9# zs6IGbhd?HCp2KKOh`7v^54%>$S{if#6SQM3twc%PmjK2V{QS(m;iZ=rPw@jV%)km@ zj1+E7_$K{%5Rz2qH8uY1T8e;HuQO%q5tbzmdAlZVu((6T=f@7EDq?IA(8sS6TVKM$ zxDV`Z++W1D7h}NX5Gm>cXjI;%y843JUy&aS0XxkvLU@-f)E&pcglO)_%e|}irtF`s znj3hH$rb+}z*`#FmB6|G?|6zy!A3i}z)U?^IKm*!liF)x9I~gIm*IFex)2vxHQ1fL zQerW_$yC>}OpwKJ`;V+ocj+0y$O7aHf|eXbNJLm+t*;@0NJs3WnCFo`Ge)D_GAi-iQ0O+|g^1X)jiaRzJ-^8=3jBMERk1|?`_Xzwwa}&n4BiFDjZ8p)h zYuFPF7Z`h8hZrhrQu=ii*}9pEuVdWJ$^}C2wd}I9t#@&?Vp+3UFak7k;yQ3=BCinR zQeYux%4yIIw9#pcFazDL?!JGuyC*le3Ezy%7K*t6%k8agv=1f4=_PjwyPNV$1$p0u z>$#zit0@Z=U;#T80%kYkQI1eNc2KV>3{XtEvU3L|R3QL}Gv&6e7&%O;!F=QI;$2d1 zsn7KbnI01mJ3YkW%b|nc|NX@Ym4il!5XQ3~*1q;!?JuP-<2MV({2^{`m~HT|Gh-?7 zmfETF38XM$Gj(QM(wgy`oSiPHa&138nJD7n})Zu z52btmT5C^MtIxcC5zbWBN%{bfFD(;VJxBmiFzVf1)%~-)+g4%O6=H@S_aEJ^=kgc6 zD#C9Dd*b1(wR01G^4N&q%=efS`OR||L)}`~{wi>>W%I7Ds@0;V?INOMT_OYGV#5+# z!Xg7gLtG|@MZ|@~W(L%#y8>#gb6-h`HdADJUzfhIApt>gE>Qt-Veug@L1s(3Fv+%G zpSaLjLD5k`0de(<28B$IjcV{BZn{fcSX81*SX6vKli08TN>f{O=vn_QUPi?MfJffB zxb>l}E-kutYuF}(w&6S4rnKnZl1J9yGk;QN8|&_L>s9OK-Rg}8K(Ydl0#7*?tb366 Uz!ojZ&ZkA|T}^yiJoDOr0p>_O?EnA( delta 121675 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

Kg;nQrVT?pSwaOCxB{6d?>^7v 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 K@_p)+k$(r=K3BB> diff --git a/components/DownloadItem.tsx b/components/DownloadItem.tsx index 9b065975..8438f6bf 100644 --- a/components/DownloadItem.tsx +++ b/components/DownloadItem.tsx @@ -231,7 +231,7 @@ export const DownloadItems: React.FC = ({ if (usingOptimizedServer) { await startBackgroundDownload(url, item, source); } else { - await startRemuxing(item, url, source); + await startRemuxing(item, url); } } }, diff --git a/components/ItemContent.tsx b/components/ItemContent.tsx index b3eb242e..ab85f4b4 100644 --- a/components/ItemContent.tsx +++ b/components/ItemContent.tsx @@ -32,6 +32,16 @@ import { Chromecast } from "./Chromecast"; import { ItemHeader } from "./ItemHeader"; import { MediaSourceSelector } from "./MediaSourceSelector"; import { MoreMoviesWithActor } from "./MoreMoviesWithActor"; +import { + brightness, + ColorMatrix, + colorTone, + concatColorMatrices, + contrast, + saturate, + sepia, + tint, +} from "react-native-color-matrix-image-filters"; export type SelectedOptions = { bitrate: Bitrate; @@ -49,7 +59,7 @@ export const ItemContent: React.FC<{ item: BaseItemDto }> = React.memo( const insets = useSafeAreaInsets(); useImageColors({ item }); - const [loadingLogo, setLoadingLogo] = useState(true); + const [loadingLogo, setLoadingLogo] = useState(false); const [headerHeight, setHeaderHeight] = useState(350); const [selectedOptions, setSelectedOptions] = useState< @@ -139,18 +149,26 @@ export const ItemContent: React.FC<{ item: BaseItemDto }> = React.memo( logo={ <> {logoUrl ? ( - setLoadingLogo(false)} - onError={() => setLoadingLogo(false)} - /> + > + + ) : null} } diff --git a/hooks/useRemuxHlsToMp4.ts b/hooks/useRemuxHlsToMp4.ts index b722c3e6..a209a992 100644 --- a/hooks/useRemuxHlsToMp4.ts +++ b/hooks/useRemuxHlsToMp4.ts @@ -1,7 +1,7 @@ import { useDownload } from "@/providers/DownloadProvider"; import { apiAtom } from "@/providers/JellyfinProvider"; import { getItemImage } from "@/utils/getItemImage"; -import {writeErrorLog, writeInfoLog, writeToLog} from "@/utils/log"; +import { writeErrorLog, writeInfoLog, writeToLog } from "@/utils/log"; import { BaseItemDto, MediaSourceInfo, @@ -9,34 +9,34 @@ import { import { useQueryClient } from "@tanstack/react-query"; import * as FileSystem from "expo-file-system"; import { useRouter } from "expo-router"; -import {FFmpegKit, FFmpegSession, Statistics} from "ffmpeg-kit-react-native"; -import {useAtomValue} from "jotai"; -import {useCallback} from "react"; +import { FFmpegKit, FFmpegSession, Statistics } from "ffmpeg-kit-react-native"; +import { useAtomValue } from "jotai"; +import { useCallback } from "react"; import { toast } from "sonner-native"; import useImageStorage from "./useImageStorage"; import useDownloadHelper from "@/utils/download"; -import {Api} from "@jellyfin/sdk"; -import {useSettings} from "@/utils/atoms/settings"; -import {JobStatus} from "@/utils/optimize-server"; +import { Api } from "@jellyfin/sdk"; +import { useSettings } from "@/utils/atoms/settings"; +import { JobStatus } from "@/utils/optimize-server"; const createFFmpegCommand = (url: string, output: string) => [ - "-y", // overwrite output files without asking - "-thread_queue_size 512", // https://ffmpeg.org/ffmpeg.html#toc-Advanced-options + "-y", // overwrite output files without asking + "-thread_queue_size 512", // https://ffmpeg.org/ffmpeg.html#toc-Advanced-options // region ffmpeg protocol commands // https://ffmpeg.org/ffmpeg-protocols.html "-protocol_whitelist file,http,https,tcp,tls,crypto", // whitelist - "-multiple_requests 1", // http - "-tcp_nodelay 1", // http + "-multiple_requests 1", // http + "-tcp_nodelay 1", // http // endregion ffmpeg protocol commands - "-fflags +genpts", // format flags - `-i ${url}`, // infile - "-map 0:v -map 0:a", // select all streams for video & audio - "-c copy", // streamcopy, preventing transcoding - "-bufsize 25M", // amount of data processed before calculating current bitrate - "-max_muxing_queue_size 4096", // sets the size of stream buffer in packets for output - output -] + "-fflags +genpts", // format flags + `-i ${url}`, // infile + "-map 0:v -map 0:a", // select all streams for video & audio + "-c copy", // streamcopy, preventing transcoding + "-bufsize 25M", // amount of data processed before calculating current bitrate + "-max_muxing_queue_size 4096", // sets the size of stream buffer in packets for output + output, +]; /** * Custom hook for remuxing HLS to MP4 using FFmpeg. @@ -51,9 +51,9 @@ export const useRemuxHlsToMp4 = () => { const queryClient = useQueryClient(); const [settings] = useSettings(); - const {saveImage} = useImageStorage(); - const {saveSeriesPrimaryImage} = useDownloadHelper(); - const {saveDownloadedItemInfo, setProcesses, processes} = useDownload(); + const { saveImage } = useImageStorage(); + const { saveSeriesPrimaryImage } = useDownloadHelper(); + const { saveDownloadedItemInfo, setProcesses, processes } = useDownload(); const onSaveAssets = async (api: Api, item: BaseItemDto) => { await saveSeriesPrimaryImage(item); @@ -66,89 +66,100 @@ export const useRemuxHlsToMp4 = () => { }); await saveImage(item.Id, itemImage?.uri); - } + }; - const completeCallback = useCallback(async (session: FFmpegSession, item: BaseItemDto) => { - try { - let endTime; - const returnCode = await session.getReturnCode(); - const startTime = new Date(); + const completeCallback = useCallback( + async (session: FFmpegSession, item: BaseItemDto) => { + try { + let endTime; + const returnCode = await session.getReturnCode(); + const startTime = new Date(); - if (returnCode.isValueSuccess()) { - endTime = new Date(); - const stat = await session.getLastReceivedStatistics(); - await queryClient.invalidateQueries({queryKey: ["downloadedItems"]}); + if (returnCode.isValueSuccess()) { + endTime = new Date(); + const stat = await session.getLastReceivedStatistics(); + await queryClient.invalidateQueries({ + queryKey: ["downloadedItems"], + }); - saveDownloadedItemInfo(item, stat.getSize()); - writeInfoLog( - `useRemuxHlsToMp4 ~ remuxing completed successfully for item: ${item.Name}, + saveDownloadedItemInfo(item, stat.getSize()); + writeInfoLog( + `useRemuxHlsToMp4 ~ remuxing completed successfully for item: ${ + item.Name + }, start time: ${startTime.toISOString()}, end time: ${endTime.toISOString()}, - duration: ${(endTime.getTime() - startTime.getTime()) / 1000}s` - .replace(/^ +/g, '') - ) - toast.success("Download completed"); - } else if (returnCode.isValueError()) { - endTime = new Date(); - const allLogs = session.getAllLogsAsString(); - writeErrorLog( - `useRemuxHlsToMp4 ~ remuxing failed for item: ${item.Name}, + duration: ${ + (endTime.getTime() - startTime.getTime()) / 1000 + }s`.replace(/^ +/g, "") + ); + toast.success("Download completed"); + } else if (returnCode.isValueError()) { + endTime = new Date(); + const allLogs = session.getAllLogsAsString(); + writeErrorLog( + `useRemuxHlsToMp4 ~ remuxing failed for item: ${item.Name}, start time: ${startTime.toISOString()}, end time: ${endTime.toISOString()}, - duration: ${(endTime.getTime() - startTime.getTime()) / 1000}s. All logs: ${allLogs}` - .replace(/^ +/g, '') - ) - } else if (returnCode.isValueCancel()) { - endTime = new Date(); - writeInfoLog( - `useRemuxHlsToMp4 ~ remuxing was canceled for item: ${item.Name}, + duration: ${ + (endTime.getTime() - startTime.getTime()) / 1000 + }s. All logs: ${allLogs}`.replace(/^ +/g, "") + ); + } else if (returnCode.isValueCancel()) { + endTime = new Date(); + writeInfoLog( + `useRemuxHlsToMp4 ~ remuxing was canceled for item: ${item.Name}, start time: ${startTime.toISOString()}, end time: ${endTime.toISOString()}, - duration: ${(endTime.getTime() - startTime.getTime()) / 1000}s` - .replace(/^ +/g, '') - ) - } - - setProcesses((prev) => { - return prev.filter((process) => process.itemId !== item.Id); - }); - } catch (e) { - const error = e as Error; - writeErrorLog( - `useRemuxHlsToMp4 ~ Exception during remuxing for item: ${item.Name}, - Error: ${error.message}, Stack: ${error.stack}` - .replace(/^ +/g, '') - ); - } - }, [processes, setProcesses]); - - const statisticsCallback = useCallback((statistics: Statistics, item: BaseItemDto) => { - const videoLength = (item.MediaSources?.[0]?.RunTimeTicks || 0) / 10000000; // In seconds - const fps = item.MediaStreams?.[0]?.RealFrameRate || 25; - const totalFrames = videoLength * fps; - const processedFrames = statistics.getVideoFrameNumber(); - const speed = statistics.getSpeed(); - - const percentage = - totalFrames > 0 - ? Math.floor((processedFrames / totalFrames) * 100) - : 0; - - if (!item.Id) throw new Error("Item is undefined"); - setProcesses((prev) => { - return prev.map((process) => { - if (process.itemId === item.Id) { - return { - ...process, - id: statistics.getSessionId().toString(), - progress: percentage, - speed: Math.max(speed, 0), - }; + duration: ${ + (endTime.getTime() - startTime.getTime()) / 1000 + }s`.replace(/^ +/g, "") + ); } - return process; + + setProcesses((prev) => { + return prev.filter((process) => process.itemId !== item.Id); + }); + } catch (e) { + const error = e as Error; + writeErrorLog( + `useRemuxHlsToMp4 ~ Exception during remuxing for item: ${item.Name}, + Error: ${error.message}, Stack: ${error.stack}`.replace(/^ +/g, "") + ); + } + }, + [processes, setProcesses] + ); + + const statisticsCallback = useCallback( + (statistics: Statistics, item: BaseItemDto) => { + const videoLength = + (item.MediaSources?.[0]?.RunTimeTicks || 0) / 10000000; // In seconds + const fps = item.MediaStreams?.[0]?.RealFrameRate || 25; + const totalFrames = videoLength * fps; + const processedFrames = statistics.getVideoFrameNumber(); + const speed = statistics.getSpeed(); + + const percentage = + totalFrames > 0 ? Math.floor((processedFrames / totalFrames) * 100) : 0; + + if (!item.Id) throw new Error("Item is undefined"); + setProcesses((prev) => { + return prev.map((process) => { + if (process.itemId === item.Id) { + return { + ...process, + id: statistics.getSessionId().toString(), + progress: percentage, + speed: Math.max(speed, 0), + }; + } + return process; + }); }); - }); - }, [setProcesses, completeCallback]); + }, + [setProcesses, completeCallback] + ); const startRemuxing = useCallback( - async (item: BaseItemDto, url: string, mediaSource: MediaSourceInfo) => { + async (item: BaseItemDto, url: string) => { const output = `${FileSystem.documentDirectory}${item.Id}.mp4`; if (!api) throw new Error("API is not defined"); if (!item.Id) throw new Error("Item must have an Id"); @@ -177,17 +188,17 @@ export const useRemuxHlsToMp4 = () => { progress: 0, status: "downloading", timestamp: new Date(), - } + }; writeInfoLog(`useRemuxHlsToMp4 ~ startRemuxing for item ${item.Name}`); setProcesses((prev) => [...prev, job]); await FFmpegKit.executeAsync( createFFmpegCommand(url, output).join(" "), - session => completeCallback(session, item), + (session) => completeCallback(session, item), undefined, - s => statisticsCallback(s, item) - ) + (s) => statisticsCallback(s, item) + ); } catch (e) { const error = e as Error; console.error("Failed to remux:", error); diff --git a/package.json b/package.json index 78a924e0..b04839ce 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "react-native-awesome-slider": "^2.5.6", "react-native-bottom-tabs": "^0.7.3", "react-native-circular-progress": "^1.4.1", + "react-native-color-matrix-image-filters": "^7.0.1", "react-native-compressor": "^1.9.0", "react-native-device-info": "^14.0.1", "react-native-edge-to-edge": "^1.1.1",