From 52ee661d286ea5ad30e715d4bfd37d48ca62aab4 Mon Sep 17 00:00:00 2001 From: Flaminel Date: Mon, 26 Oct 2026 21:04:26 +0200 Subject: [PATCH] added lidarr to e2e arr stack --- e2e/Makefile | 2 +- e2e/arr-seed/lidarr/config.xml | 20 +++++++ e2e/arr-seed/lidarr/lidarr.db | Bin 0 -> 946176 bytes e2e/docker-compose.e2e.yml | 20 ++++++- e2e/scripts/seed-arr.sh | 55 +++++++++++++++--- e2e/scripts/setup-test-data.sh | 7 ++- e2e/tests/helpers/live-arr.ts | 24 +++++--- e2e/tests/helpers/mocks/torznab-stubs.ts | 14 +++-- e2e/tests/helpers/seeker-live.ts | 46 ++++++++++++--- e2e/tests/helpers/test-config.ts | 6 +- e2e/wiremock-indexer/__files/torznab-caps.xml | 8 ++- 11 files changed, 167 insertions(+), 35 deletions(-) create mode 100644 e2e/arr-seed/lidarr/config.xml create mode 100644 e2e/arr-seed/lidarr/lidarr.db diff --git a/e2e/Makefile b/e2e/Makefile index 9f2e021e..a8666fac 100644 --- a/e2e/Makefile +++ b/e2e/Makefile @@ -13,7 +13,7 @@ APP_SERVICES = app nginx CORE_STACK = keycloak $(WIREMOCKS) CLIENTS_STACK = $(CORE_STACK) tracker qbittorrent transmission deluge utorrent rutorrent sabnews sabnzbd -ARR_STACK = $(CORE_STACK) wiremock-indexer tracker qbittorrent sonarr radarr whisparr +ARR_STACK = $(CORE_STACK) wiremock-indexer tracker qbittorrent sonarr radarr whisparr lidarr LAZYLIBRARIAN_STACK = $(CORE_STACK) wiremock-indexer tracker qbittorrent sabnews sabnzbd lazylibrarian setup: diff --git a/e2e/arr-seed/lidarr/config.xml b/e2e/arr-seed/lidarr/config.xml new file mode 100644 index 00000000..5a7d2b65 --- /dev/null +++ b/e2e/arr-seed/lidarr/config.xml @@ -0,0 +1,20 @@ + + * + 8686 + False + False + 0000000000000000000000000000e2e7 + External + DisabledForLocalAddresses + master + info + + Lidarr + Docker + False + + + 6868 + + + \ No newline at end of file diff --git a/e2e/arr-seed/lidarr/lidarr.db b/e2e/arr-seed/lidarr/lidarr.db new file mode 100644 index 0000000000000000000000000000000000000000..d8d51aed87f0067dfba4e5b784212672ea850b65 GIT binary patch literal 946176 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

h-=TLC{)iUOwO-8oQP%6^F2HF-6c zb3_zxSP1w#76T|4M`FtQOc5d?6!-p~5Hs|9m_RU8bZ-o+Q*n6isrAjsDKp1dJ~EPR`AEsPT=5f)Hgp&`R42L)VX^HA@hDG-fG zX9X;w$*AIspoI}+PO#Xl(fJULi36Xf!$7mt&p<;Rxr@j5RvX4n~E`-sPB(r^6Fi%z7*n6#Qro6L>9uPYz!+R~!Zq7WR=C9?*d^ z&e(DqLJ~1k_$yJqFoRfKVa2#I#ae{*uv72ED76bLU|zQ}DB_CzziI4O$7bHJ?T5Gg z+Vn${pW`3T>Yoo!&cGNSF>Z}dW84B{>|2NL-3qw9YIF|U;p5Sqv1rFpTO!np!3{Mo zOgvmQzo0tKGh62Mjf+cr-OBt;r_=dw_=VrvismyyT)?g>UNvz1h^g?DxKI>W?@~ zJ45u2y@n36G&)f9?8yJ3Nkpm8`C4M);=R)xMNR+iVUEfSl?5IF^6n81nP^h50bssC zJA$4LgGc8@xMd5odxf|2$n4@ph(`hHHip+V-%8vNBF5hK$aT^kA^BnOA~NW5mSk9QNy*nn89vyrF_4F(3W zT49C2-hm*C5w2H;HR$S?dyHAFxJqUW5f>q5#JZ?OhhmVKd$BKbG5R?)=mwD(dj%%K ziW{T!#!iHD8Sae!N|XusC!$7o8GJSh3{fGVP{+!S{U<{&v*v1s-6%s7k5d|24a8IA zAudAKgXE88+8Q+V{nH&DdzcGY1!B<0Rspi;?D0+zTVN8gO8sQS(@e$@VT;MwGnZp$ zNn5nCh@(is_-F7Eyd<#UGE-u~bMXx;Zt0-iKYzG_J9-4o-aS5zbq?E-!Nr9GgQbV=AN3i&FOcvYI)~Q@9?!|>*10=I zv(EV=Ud?lAo)n2OMfEo^XG#pUE0SLI1lnxTNfpaK+zBs;?cuo@dPCzx$0HokR zy?uDYb0OqImQ`osPy!LfX|D6XPSN$(1Ty2@9^)3*NKE*Mmep%MJCbG9lk)S;vf4#u zNUi~5T}YRb8C)X8a)F5gCr(_Ou}WcyktoB%TQ6lAj#%l&#Y!g*piNB(Z7m^Li3HW) z7Y%z^JM0!Q5pY?!9xL5b7maA8^BmuWY^F<|!)zQe(=i)+=CD%}w}cNEK~+qol>`}x z!x*t8e?pcKS=Fq=O!weBMl;j-xllXZ2zI*1_FlrQ9SI%noJ6XIpal{k5RV5>nqV@= zpiX=PVSR+&hXo-b(HVq}{?I2z3mx^dcmBnW-hVMj-@Fz(+NoTMIwOA%ff!_OB8e3_ zA0&GXJ^&HXT8_V9u|F<$^on&vj$XNMw8&A9xrUBv=%~0poQ2TQLGiw`|8Jfh+xD|t zFQU^QML-cy1QY>9KoPj`5P19pUjrjNWP2ou70%}blp-ifjzCHMLXK4uV&Gj!Xls>_ z-f2YJxS(K$IG#DM@GoavG9`E-OMu1Pm1W z(#x2WA$_Z)^CLV*G6OZx`P5MPW@e)DMhRzEwcZ&iKk+0nPk zzMuwz`8}XvLmD=uVME9a8aAY1LmD>3Ii_JlaHN{mPqX?x zI}XBv~){O(cCdq{|UN6c#X(Cy@U)js4Qt%yYJV?Uw((@#`ku z&Oe@|KZiHJ^eFc{N6-;pq#}}MnDix%VpSy2$?f`7 zvb#nqG3F;jb+W3HeY$nBd!BgVOV|c|RFP~0vM|OZF)paR5rnu)7Al|GHBz*Yr_kqHw9uZz*^5DUCf2E5g{-hrUL%oQf7GSJKt$H|wpvdN&_Dd(h%rE3qkZAV0Ev89Q*?vMj8dwC%B=}G zBgiFJQ|bh3Xe5~=$$N)GWBjqr(h_2MhSIC+2o|4O5+LS z|A~p;8{2*vjs7SC=NAG`Uh{HD*^yMhT^>d%c9Rd5GQTJzB+oL1z{rV!ZohFpqsO zRA6VhD-%j{BsdJ?$VXy&T!zVBmr+K$$VUr?+V#1OyQs}aF=Wb55ZoXY z_)5_;)yU>lLLjpvx+WWyo^#Y_D2;|XJJC?b`TuVs@&ERXTfbxa4>sSu>94g4z*!K1 zpLpRbAsxepzlK`QA;mtaC*m_FN!1i;!N)a~$q8tp9F04xhQE!PPtdrCq+v}!jS%Xs zgru#4O4s5aQ-zdyC9JHkw-QsPHkVAKSwT)Q;%LxIQ(qY}PqAJS?4UB}3y0vYO??|m z+_#OCg`w&OB}VdsJY-$1Z&Yw=g+nM*PLXrdQYE!3Y)hSHDQ%6;l@dXerDY4)cF@@OH zWBB{ak8HUv8>K{-XP+-z!{466>6OgJfG-}&{~|*bv7A75(>5eGBb719%|fc#C*;Yb z##BR?(K^g|B>%fE9i>Q@pA5Cy>74@d0tT!Ta>5x2*ZwNO;S-b*QICM+U8X< zYHd?%+gY-<9o`(Ut_NHYiAp68VV2gEGA|;OE(w*|sjtp5r^tP6izYEt93MTS;HXil zeraFOQK_$DDh4!RM5V@rAY@*|r)GOXvMC}x5cbq))NM1iA4rTWRxs8o$g zecGc^2M_fw|KIqYv5h}I@fkY(IhzPPwl9L-46AUnIxfOG#`aJ0SRwrsaLLI^P!)C9 zhGA~nJUN#tTu*n-Lltfa)Wa&=Br6INlZOy5Eua?H3ldjjcfyjFVtkLIB6@mMxE^#> z;i?MvEU9pxyyn%zOy#Ez%oT|#;+k{i z4ZK%Iy0#)qlwq9VS3}J2vzQ75>& zoxd`yOj#zj2_$8k#41V@0ELqZJoM`vX99Au`75ztC)Cd~SeKxmBmiTaMBN0DE$cKf zX_e$ne`T3d6%Ua$3X3ifouo*lXbx;<;d1ga&+7i31;5#nfRWG=w@zg}31dx5?r9jJ z2?>tO{XNsRh*K%6#gq}%$jHdOO|HMJwY+zVsVnQ>9e;XO0O`teO8XIeAPE6u0Eh|} zfeQ)VX{?{!tqHR`99dK+1l}iQ9)zjHvb2^_w^bQbBynsi(w>o9`kX`-`5C^TBa32Y zW5Az+$fCqimxyTEpv@)Fwu)t=mJXv^nGjHG$!lQGMP!km42>)rA+l&twCn8uo4;vn z+n;Z3==4VsPy`eKML-cy1Qda%7lFs`x(0r-4*?L_?W0%C#f3{-#2fMkw8W>ADJ3W) zDVLGuQJ7T-Jh2%q;np4Bw{fI=TVAf$2mp-$I9m|_Q)W#iG2LlYhyX~alk6z^8Z=}b zA~O;C4CHt;1Qm{3xPT(S+R-BbKDJ?`vQ&O$U&sLfljTu?wIeW(&Xt8JOrD9Y+Mzg% zI@jE&4Ny764Z4MhH23Q(OEpqeDnA$M|F8c4&jA1bca3fQiHTnvf7jD{++PS!du;FP zpg4U9fKVJv6%D!Mk_d_)IZI|X(uoFTS)`OGtkAwfji?TG1|a}H^xn*Z6@cOH2)H+2NQz^#btXNeDXHuZkgbBWXrW_?+fI9CZ#S8f5uVvn~ z+Jjbm(0BnY^FCPS{hsR~&%^NoCe7=F956wgrI6>az>T>yQBb5gRa@dbshW1gc!Bb% zk>UkBfjh0;C5bAHCfH`Jf#ABWU?dJ&R==U z!h>#p*UJ3c-O7G@uvxz9)DHOD{`tcb8`6~g>-ctO0jf?s+d~YtrNzxY#KpLwoD#Ln zn@#r;53suZI)>NzDEn}Rxw!@>^&-!4gU@Pe=u|LFmE~lva$`}EQb{NGk$iq^ry0-2 zgP)w3#I+g!cI-ES3GrK}$UT`VODb_QsDjvuG>enUkLS`|jHfdQt&PXDu1;$l*xL|4 z7m5SHIp-2tDDf54$Y{eR8ggJCX}-YaK10fE#J!6eoJciDN+gpdaY$nS z#`{`ZkcQ=h)+{D~mO#PzJ#zjD3BVqywUcif+S*=1m?i1=A#kS~OZ`Nk`NndycpW2`aGE2_cAr5T15l+_I-%~ABf7>};%o>Ai3tEeJDyTq%Ti0Lsa&y+0DzTGPMc9Gi}<-v z|Nk@b|EJ{N%)7UKi&p*{N#!xhMNgWW*%*D&S20Foo^#G7HX*vIOr!!*5{3apD+?Ov zaSfHuT`_vy`P=Ro%{=Fs4mHoIc}~r9YMxW`oSNswF#?DSZ%^;6CSb&-v)U;#wJV-uC#R&V}bXO9C8F^ z6=fCV@YpTiO`ED1(I)(w&y8dg_5}L8vk4#GdMn@#Tj>&904)Z{z){1TT7J0+Ozq9K z1g(Uai{oZJR=TGy8qrGU`MnF;N_Pvh(WmJWV+2;Zrm6T}$B9twJt3VOdFcp5#BIAN zTx|`O;dNN)9(>1WRyscyYNZ>&O83~_H#2L)k)t&kh)d=tusA>jcv;|CTQP|wMI_N) zl4T|@&Lnd56Qf0r`q?}GB1aFr38Zfo*9V`UfwUv3mAs*(5+s5YW1Xp?R*qVYvT;(PBqE>KZ$$ zv7=`xc63m<)%<^hXz1^XfFhs>C<2OrBJi{$@c3PKz=#i9KFRTC;~FJQR2MBtEyR&4 zChd8JPqL}gC`zMtwETZ}ziTwhr`O4-z({h;y=y*H;BsF`~9)K zcSCW8wYZt37Ews`7($is!LtP!yA1vScw5KLRi)3PqMz6PASL6QxAB;Bi{qE7qaIy}TSvhwCv{9j@wd&yo)J zNpt5gPbmRLQC4J53R2Y>=4%^a$PP&{U6qNWW)qdQ5;t=Gzguq_Ex^dHYz;8d03!`B z(f}h3Fwy`c4KUIGBST^il5FGRTsMJf%9_L+l(a}}SrEM9S4fkSA1+VAAa5daK4ivH zw~?BGE=!^UZ?UW@`a+UzN&HJ2J1Sg~ej=qHr6|kDOA!}&Sdmbx$qIkZkV+bHDrrFs z1u-ckiK4iwTu__5EJFjEl2`sps%(}HHx3G3N)gRMRLT_f3}Rb`WGFBsVejwR*oMr> zG5$7W?jqF)f*XO{yjGFgI7CfUq)Gqu+K^Jj!hkiRN(yr#yq^X6|F(_4xXb^y^>4R) zX!^^We{yPh)1HloHY`m1F@LzQe-2-7VYB<>Hgn!}E+!iZ`CM3jgr`u})RH--Ms>@w zO!KlyP#ac*u5lVstdw}A z>}!)|mWTw`@3*cZN?D_kXd1#4%9>)Txl~^wlU>y2HlZYnU-4|cFp;vot|iMpnSKaK z6J2(RtR30hR(aKzc#Rn-WnNQc?}Xi6R@4w~+BC>R$%R)Hq$e-^J+qYilMp9xp;U6V zCHKS|F>p~$zM43uzHPrV>n5^o4PA&bhprxFDhXpyD7G@FB9Alj>iDv;WA9=b-O(IH zRAC^+OG`oN21PH?bZLwmWF_c;myOyu&up9CJpXokaAp2ZJh~PSy7}vDv;UF#D<4`| z*@ws1p{8+5^DB$h(W_V$`^H%&~NIm0;ZhJuh4z#rKDbO1#+8*Uh%hG;Q=D{D@YwWyOu>tfPQhc_=Q1oFaEy*c zAjyd`oP#+lEYUG}8X0`CZI!;+9^7k#I~EsDjqkQE@0-|MQc{^xVd(NR!;m2AB~_K= zu2IOl6)q#olE*hr8=NMAmU6|=YlE??l%zEPlDf7^A{If9MTH|^jP0??#8N})?E&L#PL_Aro&>@eH~c5@+cOoW=?FJ zNtGpRaVfx@YF0HF{B6@f0&IBKJ{${I_Oa^TzIebMJT)Q{zy8e=Q&j23kl7IH z9G0@;3}+z)ogJx?Dqc4&K*sinxVYf6iqXqV=8jBJ1!a*UXb#gz^)=hqpRQTL1nBX0 zMMhi+^n+Dun(iETJTJ+k*w6VTdw9>}=zB8fO%t`e5lF}6X-W-*(>Q2LODSqOg;9aJ zx7ek6A1^q6qg^^Me;q}`mrwn!8$a{##HO4`LbwPa7ZIyEEg*_Um=I_wrBy=eXt$Mr z*Nl_jQDrM|RO%)J7|K@@vkx01WHSf+vL`Wlm{VsQQfZieP!TpEM2*;FCQ70dZ0#C> zbF6-L4LdrND~ZlUj|(C0sBqb)Md69jW4pf=RNgRvik%}%SnWu4Mfr0{XV$hcsPNAO zHYOvlm~~Bht36=7x9N4x9h_f0IDhLS^S3S>Y)*~MgI>F9gAbyoqjzcwzE@ zQI#74O>W*IX4ZPj!@$$bfg%;n!6qVkn+YkL5|ZrYsrq+))~3wfUFHWwP`4WB_1=OXi#CP9uEk9Y9W6v zshO}0V=?2wN(`}teG$`fK_0;{=_jn9Ac%F{JT$2z_}!0U8g0|7*6ygWrS0vI=sZZ+N`RCL2Ep` zxYb)QWZNf>^_OHo;XvCJ$av&tjH!#*t=+?0-_BYYjw}ML!i2CV9Nt1Rp!-!) zY~Ti3o;0*pPO~)r@*^Wg7WuJX(2+%NV>Sl-DTpkJW7Fm>1glJ1R*@tDG}ds`QeH7^ zp)zq44~j>pnT&@&GFoJjp9_sF8X>Z1P^1_8|J2xzj?Mhy_OWf(Zux_a*H65je?Fss z4o~f4)eZYoL6wpJ>NqHBDqf`t*;L67YXb6kHg%Oj!NP20f2u1!J(@q&^u1f==XYMv z{#1L1_dotraPTCr6*(d$hb?(}p#)AC7E_1tk#Py7UWY$b`ts5Isr+21Kb87ZiRg_4 zRyomawa&IVR&ZDKqKJbbArcu@3U)_yMzzQYg{UAz6+x4Ro}VTIctn_N9#B*hp{33% z_-Rznuu@HK4N9WMi@8r+*0KwRGkr9OK&*9P!G)oTC;?G9SRa@ihx#riZId0T`a?BZ zrVqdTHPeS?`hZ`rDul$cgpo(YqS-^2gLH|sj@6?@ zUhbv)q)yTT&5^4`^N0Egy-I=z>fr0562(&6>jB8S9@!dAF)AIN9kT=gSRt*s4RVA{?pdHZ5nW_PmEFuZ!;|_e(KTgo2`CfL63H8}p(V!yYSPrY zB0^l~Md{q4s*4g)dy9sv;+_35QOloAg8sATjJJz|c!6oQkYV@HRb zM98|)nz^f}iy}wkZEN%y2(hU2Ww0R<3K|$x)=4kJ$yj(MimO(<*2wNA!cdG#q)16z zZ+P7`?G$f{42fY3l^SZJ5Y+_w98jQgx#%LGR~}EYsiPY}C4g#JW|QA4gev^ak-@4M z0S`UxtAw2?#RZyMq4DA(_;-Z1gdw1fjF64%hVu0O$_C}i<&QE zeqeDkEhzrk1`Q`dnT?w118t*e>N;d~=B;e1m=#?~RV(sH`ZOwm`>9;w|IXXsE zwvm{&A@mV@jBQRT76?(%=9mxtM$1uo#SIKhr-((g3dR17Xq8cKn6p8QH~vbF6!bM1 z<{{n?p%$Bfk(_=RSMu+bk^3-?VsW=`=Gs@vGlEu@y29C3zwQ zg+y*V4&xidi?PCqCRE!H61b*hucNx9xCfcvgdCF*Ud%F_i!J(Mlw&oE*S|kI2ZsiZ z71kn$Z;hF<%&0ShStdqdmWX8AUx|K?b{Gf0z^8dud z?~iSNA&veh0_Ph7Pnvf_76z0>;wWvaC>B#^h)x>X$T@)-7`{eq85CMVCzrvTQ5*`n z1}8cm;17|E3loEpsgU4QPE0fy=qeB}@YpF#i4f7V8rZqQn&%@?h|M?U^r|?F@jJ<) zswFVHY>#sPyb`B(Dtuyd(rMaFbT#86L-o;UtqNF7d5u z35@OE9UB*gWij_)TIP-Tl34B{Snjs9cv~Ri_D>h*1z1uMah<#o{2-rjo+1lor3>*g z?4>@Kmm; zIWuea?2?;O@D@e@X^WT)-n~YgR7Yubl=f?03#Dr%2B^0>N7)x`?XO`%+gB*jG&G7An>+CcogCd^D|C=^^>1h7{hxmv7 zC<2OrB5)oeaCpN59O*;GAQxi=Z4HJ#3UQJP8;5P82E;tqwiH&v%OAh;vuh06(m4*D zZ^od`dPpMo#L3Y^{0wq?E{Y3$fN>!&B!h+2Fn1oM`Xl7oe&0MMsOj`Fhj;=)MCf&4d}$*V1dOfNdO^^W`rxCtiWd)Ekap~ z?`@p+iifa5aUg+$1sX-JMCn3s3Vy*&7}uCru;BE{jHX6agZ+^z=@NP&zN?i%K|-tv z8Ww}^YrbYgE-9EKrRzwTFKu30a_R>ATYz%wpCb^5yhp~`iLK)Hw-C*hPw7_0frTAPI1n#ZFOZTB`M)T73 zbD>_kBY5dPws$|XHk>(%#FwTEZ%#ysif0Ip5eD0!D;$pXO^AnCw0m*sfkVq!qn8$z zR~F`X+oi?*r`}2vKl0RQnWOydoqw654%`pY!}&yRt`Cp8dJIbT3xuZ09l!Ub6=tjUEo-76RKnan;C#Lu4$Sr=-B z?stU85^^avGD_B#;sKrDj*_Ra*SHdfM3kRhMX8snR8gvm(zBx|6?xVocNSeNJaQOu zq2dOI^h6Lqh?8SYkYz3L$cLk4Ho$BrGw< zUJ#!3kR-ncF5Hl$E+EUG2ggi&H1I0}nfj$=J&kqMn%-Mig^wCH0 zm=-VR9L)ogH>w~B{LirN<0_bhSp2iNtj|I4lAkpVUee$tWbvmpcuDpP@zJKpNW_7m zh;#w??w|&M+YX6eV!M#eqmI}wPu%z(_RCP16E6Nl`BlV-qfNj~2k%vO4mvDnaWcvX zVz8qXH2&g9{wDjdx&FeNRLXwJIP~4Jdh-!kt9n}{ew_Q zM|2=D>L~uo^c?C@{V8_7=}~0`!Y=red&YD z$xyC-3Al18uCw?(6VOQb7QtPKXtUai^g~fj;=k%RjqAE{^^d4;^|Pb;R@Jwj9er!J zFGvXGTCzNm8c$ek%+VDFT0G`!QpQnp8%CLZ@nn67eKDX$_|ySs%Z6xH@n0u_Eoubp zrsOjr8yUIh$emV`5$o&+tN1;j!73W8qQNQ}tfIjx8mywhDw@?_v--mkK0~wm3ztcr z1`JMB62uX)DWplqpNl*LL0FSP7(NoWMKM+l3i%@cZyWo)v6<&=``WGFvn8DVV=Qmt3@vr#9v-{`p^{bO`)WZqRU9HEvkabac&m~jShD&O)+r2iV+VcT z=C52@M*{!7-!y6hf6ruV0{;;b_&>I9bz)76b0kNwq-?U1;h5~QXbdP}AZ0-aTzSKl*YrhY$v=V7M))p4*MPSsD9m6QqrApzD@A&>+yD0Zk2LHK!F zklu$Na5HME{{K2QVygaL6Z6$g)xSCh7{j^x!JrMPMI$+#Nj4snR)&fJ8R_FGDM8+z zkg7K8%+iKAv75S2!kghhNvF!HjhcoOj>a&R>zH{M#TDa z_5Z>jjhL(7zw1{ySN{he;!?c`XGUg# z8Ze{;BJ?dS#5#9)&%?~yfMeW;_K>eNvN-fg_Tvx(hDcA65QxeS8PzK&mqW>jL7C|^ z(>7|nke@Y;7dm~skj!sN9iOrxIY2B0V-RM=k&B=%vI(LB$jSYbok;$l8vB=HGoRk} zm)p`UzrHb_cs2igM*SR~THV5e959Q0XnL+9M<*eN5&q;7-&ocXXiECmobXI+#chJ- zV|4G@n?_6czx7^$`NH+C-Sgqe)#+i{K*s;9E*urd@yJ37B$Ew6)Kx6=L5wX)DWaGp zrR#8-O+GVP#(zH<>NKlPvro6v?4BnsTiwhy81jXkBgZb~U&(pvO41FdAr%NsEd^%D zS6gGkr)E_;Qp*2}M@#wd*T4G0sxPei!fMKYP5D2R@_%&-`aG28Wv-y!x54WZZDvBk zQqkXHH$d$~&QId%sjynw5!1YsPmPrG-&5%GEzQfG)z__VIyUJ)znr*8hSevn4^()apSq5!MtN zq3j_gOUnWu)~GVYa23JzX8r%09~(96zkeOg`aeq6|8R8!Q+fYT+JCZ_kWB_X2Ngb0 zNK#xEIT$T7UX)U)vnKt2e2TRHyBGH#I#4ax`8!6=|Nml zJlk#k&nTUR4(1twz>{Wm8{}a?bwv7qG81GZDUZnRCDm=y2px1xzzn&yLbOS!qT^=t z^#6B^mj2)K0_st%9@Xkmtsd3tQLP@;>QSv8)#_3G%=M_=^Y~q>TVWoD(pt?qGQdPp zL~+2Tq^@2p$ue4eP$_Ir-NT&Xf?+&bTB|#LZnXUWo^#Z+R+`r8?4-3i&i{YY_}j*| zZ`}GF(|@q}u1$Z%KlJA-L;(BX#ZZo6`(Q%ZMx1B}$H;K0O;el|NVQA#QiBJiCCxZB zk4Lc&e&Lr#vkz|ToE6kQsP;j%52}4o?SsSi!8z#juzj#3Cw)oseJR_`NlO78>M>Jp zr--XOs;H$*t@IJ?gTuaL3sqC zh{&U9DVs$Sx?(+!zfWB>V)}p2K3}+wzk3cRtFuhUkU#GniJ~l4P06uC6>jqG5Cd70 zD3i#g6n7YY{;oaPd??C8Y}o) zlDH}*__3ivxOGv~;EjC-iK~9-6QdOX@Y8p`C9c}@`2DNffqEz()m%eR1+`;DKOyB? zk`~{FB*bIBAiq@|QE4qtzM_0oSMD1v|Gx)a^HFI&sNxp-a`VT=w*A@GicWtN z0YyL&Py`eKML-dF8WF(Sb}3Bwu(hqMU5VbjAfl0Sk|}w6sD2zr0UGnFZK=dT?CEIM zwzob!nzhaAWYpTG*0!@`Z6kX1Ijrje7eu00<1nHci6fJaA(03LW(h+eS`lWqgN3UMOR19dsh+eJZG%G{Qay7xzRQf|FX2OQD>82`*1mhe9 zVAc`6n$M3Gz3L}JqgOS0^=Xe@9X!;#{Qu*7#y0-=#AoRA=WHT?3io-?n_(3$r3Iw? zGx;+LDdC*w|37FpqN1tlu*vASfIBmy{t+D!ff4HBIWC3UuRAAV3in|& z^<)ZH=BP{seWaoeO|2BdL=JO;y2@SQP3tlC{)$q#Pgsjf;r5N5Qn)FFyF)2lcr6c| zJXFGK$%7t>#F-s6Qx26a-kSzH6K+hLVQe^W%6O-Mi!Y4hwe&+f@mdnECGlDkuO;zX z60arkS`x1%@mlV~yq2w3+)n?0c-CO$+@+t~{e@jOFaGVqd*=_#T|RqY=H*kL;~&!3 zW((jY@Ho!glU@QiOvC&^7gPJ3D`w*zUem2Y(AWy6B*4a6Z^hAV&r4wcr(?YY`eS(V z5{UB>ct66ZLWWJ-7I(u-z+V{YCD8ZZiRdNp z7}|Q$OCabhGzjX9obn_;rNK1X;w2z6GVz%)+GJ&{m%u;nkMt54r(o`7FM+S7F($nP zL}Abx3b;ar1Ul|AI0IG;QQ5j`DDy#ER zj@dY+T;zF7&~H_l6E??b+)J^2Gl7r1I?_y_f7pB3Okn-dG|Qx$0EIxzGjfbIFj)wQ zUVzw|T6f{KaYaoQrxthDP2h1q73n6>H_rXWOfSegZ11@a7HPqO~E1V{kK} zvFxa=Gpl83Wmfy`_z65c(obNi_Y+t@h0YvHv4ze&nyyNn@apJ@Oew#H_o zbs*d`+xXJ@39iU-GZg4M_XIQ)SbyXl9R+ORZS9ycIB%fhY&>&`5in}40BIwQpgtb$ zDDX?~k8>30+c(}(VE6hX7%h{`B1GNF!dF!6TQ*O09oan5Iv*)55xfUXLBPalIfgd< zzq~S%S=4{{lbc!eRdmM|JjE^hR!hZr5hWZiht_7+w)h2Q&?tPt^aWVKs=OU$(UBjF zV;1$Dk(fmh%%aT;ZTN4v|KAVv|IcEWO(Ljjf&4#P7bPzA=5gO*xhil1Xxq9irD&zC zTr`5}^ho{x<)r_={)EXH4}!|nt@Bnw?R17yM8oMdXqS#$k=L5MNR2Z3HV{;?`u}}r zBm`ALP~GDQD)c?hWExEBd*E`BaS16#rDpfjy3V=DXJse%fi$v#P-tTGJw6ku|KE@Q zr0U-1%>FMO7NBw`$tFp)g;;b!^#VgR0ur?E;vNDC!h$>fJZ&&~Si!YAV|L-q< z+tL3&jo~p)I<1m)3inpL2(uh51(9VwJOLFTfl3KdB__*-w7UJu^#A|mm9hH&{o^G4 z|2X~s$J3RQ`v0n_@g^?OXyp1qfhl;)YJPN<(rjibo#k?8_5XkC9kKfVecvYi|E)=g z^nGf9|dTT(~hq!DSA7)*4cL`IO&9wPB`g=lTJA4`!G%#MUt~QJWeW-__9$r1vaBfloc|J2E3kVfQ%Yj z6uKsfV0Kvlzdt!9MUtdQvO|g_Td!K7{y#U|J6N9H{XL6+zOZ-hbNrCLzJeBb)2Zv4 zRbyNm49UeepS!BchBd>QQB%P`&oqvd4ruvEH3D-{YZ{;ok+s3|SbkbxDcnb_3qsXa zHYf-PkPvn4eA(8eGSx~F|F>S&O)3ti;$SKcrsCk%;^39*iUoRH91IIIkYiJ;0CW}s ze9r>yg8Osr;3>2Py8p7Qfq6z32hWRA|L>RR6RtXl`oE-kCo#H}tn0Gkz?}Kk0TF{R zSG9nPOV<|C7OK&?+zv)JTK&I2JfGYcT|swDVstBO8^*Z?o8-`vH(=|z&eWq^wWZ5c zk$GKgWi1{9F&(S^-*-mB=tf|4k&b#2-8Ly51+EO}LPbC2^q6i6co78%GmoMaCg&Lf zLw83yDpvi!@4gdHI_lc>C(_gx2R_l_Fi=q5c;>1@;9qI>1B~Ruf`zJ%D`Dv&u+z#i z&&sl{?<5`d$(z6T2ETT}p=4Z#Njz$Y#G|%eZae+Ih1U<3 z{(ARS{3m^-7Dz3SS|GJRYJt=OsRiz-7I^LD>jh`fgE~`VubQR&l1$u z$S5>f(8cgtXMj9g8z=sM(K}|(%TdNOrGO%cs5d-eqdVwH&TeGU5LPNT@ zq~)AdBgqQm1c>o0)7vAjo~L0W^P0R!iOBQ_@hB_>JZT&Jzbk;~IxFqCK$qC7iM@J{ zvsbrn>fQZ+c*S7$eN!LeKj~}7T3}=Ux@EN)XK=%6Lz&5orYzg49W_l!VOEoUcaC*B zL+J@^%0`DmH^+IQ&(JF6Eey0@f>Dx=-p06Bhz0Fat)2czM$fKiV za>E8iy2Ej$vuP8i9^2`U5N%6ypp1YjZWU4@q{?*);&phaQ&%t#TFPN!h=XXI-{y$ z1o4XdNyY`-avMhowkmRoHA618BRrV)Gfk;=Q0f@g$HZw6wn>S zc|>})9nHnx)YwWJv^PB{U!6Ba47upW_~&)9W-ZcX0i4JCUFCqi`&4nU=ApaB7R zl$TlSP19$-PiAUSwtmj-XYx>WLq<^xA(~d0k!!=HC>NS4L{Nj2)DrNLpgp%E|NrVY zES{hFVC4Ymc_i^9p|Sxl&*6-N-C9{G;VYY~F`goEiz2v1TkrJY{y#PKr-S8F_#=I# z7C5n50R6x7SfVEN|0=K-g*O8KIRtAniPH`4Hg1#`!APblto1s&Q2K(yaX#t&mYnLO zsZN^eq^VAt>ZGYon(CyfPMYeZ_u)Dz`hQR7@HnaeSIJ5X?zW@aqq_z1!Un#803zoE zPR1rLjEf^B?fvoDC{9v;a!j10#7WvAPSVyZUSI!D`hQ#7jJ=Lk@#l+mc>%+~O-dJxB%O z{%nOZVEy}pRh#txN`Mi8W>Qt?ni;5Qs?G4IYs#X@+rE`D*k~lQ<;a7V2$2X=1{-Ll zGfrpLwr#G*?Wt>sYehZsbpg=<5-wsmjA*o?+6Fs?Qn#*;M3qvy8vACaTHaj((5Q^Y zi@Ox2sC=nKCHhDUA4c1<8F{k8ypngkJF-+o(PR=rqlUuKM^>`XEhdxD^g`z&vpcfb zMDvGltE`f`%B%6`M4P7s7&0mh=1!TX0j$DoKBp3nY?2KW%kjJGCWi`AjSBMp;favY z#9DgfbDJTg34BD!KC*BInN5w#{5`#&xwt7p?I)mWK~ZF@q0THiD<`Bg1FmJL#xnxYbaE z@JmOKEx4&_ljEcg^SV&ue#g9*HfORyk!AyOuA~$ayty5G=}bU4ZHw^}iMBQ+B##y! z4UkbZ5Xz?E6N|PIHlT5QA89C`V9moYtDqCW?51WT+h$Z$HN8+7lhxxs%5as^78me3 zZ+J}$y`gdqf~S>eOM_`wv-z5sHRV_)(eIW;A)|nUI2P~jHLoYO*66NWe-;aLSECy) zjxEP)S9pdnjp~B?Q%euJz|+cdpJ$AC)!HJmMpypb)Ja~XdnV00S)}u%TU*W0@deam zsBR4Qit*u4*~%s3w9?zs|NE!MM|yPkhv$>INT=7IL3eBc&V?dfE?5T(XoxzjC>Db( z)&}_Kc`e~4H_BMI4gJ3xUm54o-FHT+(M8ng(Eq!DZo7m2ALVCPqthrYG|z4$U^``V zan7?ax5{Si-C&Qt@6-hoLmutB@5CdIUb}uiO+BgqS7`%xlY@?O89S*`Y$otEYM?DS^0{@sc~C1H=T;>R zf;McloXkK&R~Vd0VX9VUMGFb^F}wC%xo_+Jw&VXN{lBeElD10;vV= znHE6*?>U^oyHZ=9G!OcJwy069Ks>7mycUI64w)%U<{XtSGJt{sCIWbt zQ1tMqitw6-bacZFSGO&h;ueG6YBL?3lXX^T`VviLR|B(z2Izfiqq_L!N`2Yv?% zNmc^SU}g9SSyA!E>k;@?yQae-$e}U4uIGXY$&8yFL*M#q(6~+;vNt7 z&=~1PrLObByUr^knnHTo%~Od(8V1s+kgO0{2K}wdY6|q+lj@daFh!xRFJ3pZej$C) zrNYLG%xhL1wF{|`w`s`$(-#IGXtFF6Kw2szS!PO=ZA1T0nW;n~rFetNDkTp}C1g)r z$@IXWf>MK}5a7n8CtEpT+C(A^#R{AyDo?hFau(&HP%Np&MHP=kD9UXpFR?Ols}E~Z z%c5KeaLdN?M>Z~|>8gS9La~ip9&1uvP|l*>GeYCGDV%i_Sk#xl{|{dr^#6XD|D>-S zY5~;$E@rLi^0)n3gZf|IQYUp(*{FqteUMy@aV_ZcHe)xStnFKSH}bdd-9L45CvXq0 zKaaNV61cY=9&0#ZhV#a#plBF$T`i{*siIYdeyR9xB!>B1Ym0Sd^{cC!i>skPpYr2!;A? zeWBeOZUvPL$P1jJGsI%Jh>Srj!WnN{UZlzch$ZJvVgv_HYIm*xX21q8hJ0WMi}Rr5 zCIT8G3>>JZk_(h<`6{IHq8gu~peuRDn~pqp8RnoSvMs!& zSwfNJ(gUd~;C-BO+!I+5Oso2LXZix6D5*|_yB9zrwmn481M0+}#g8_n9naQ`J0WKo zbSz7Rv%3?y@r4-$$;mu#JWIlO1*l5RRSF1AB{J6dCTBM0fN7Zgz;nuiJK%T@<^*aB z4Yg#c;cVnX%Y$GlK?W!m0I)FQRtk*Ln)e476WS9`HC6z2Yv3i49a{24w}V)CB&xA( zK)PU65N?>5N47PdzR3KRc5{S)!9fzdh8X5TxH( zh60fBnAzE|NVmHOIBS8BU;}g@#3dmd#MHUSPl$-aKoC5$8aMY-p zQ?VoeVq4Z+!|mO$G*yM&gbS*St0W*m!BvM_6UzgN3N;G_i)v#F3iRXgDZ$`52Ud@@ zkkv*>vRD8oo2k9d2PFBw^}Te(78E1$e@#O^KIeAU zh;TvVs7z@{ds2-h2HxBa{kBrK`Xh0f+rBfB{9nr4-s72D95EdwVJ67Uu7Lo%zC5H9kXaS z?DXaqS1mUs^6lihNllV51G!?WP+cScUt}`y3&l3%|7Je_hN(m?GOZ!6NrHtF4k(IX zyNdXpCv8nFLE6&v*p_VllFdW;7~8UM6$V~#2O_l^(uY_mR)K~`=DMtkTC}kFbh`~| z(UBjVO57sFK<55WVhlesKmugCM-WvV_y3BF@VIuRogwoa!7bW)y-)goTU#T2e}c6D z`hS+9+~I52&OdOyzwYaIt*t%ghC@gEb&ok`O`P5RgL2 zlL4bqf&{c+2tn9Yxvo&DGHun*cbvO&-xeA;b3g)CV3y&;RilPwhZI{O08;lSh(Z*V zwjdIKdUCfYfc8PM(E-6EaYHHFW|MIP0f)Co+R6$DCn!Py0_4sMiUG7K`f#BCx;%FH z=%#_1(Anzo_ahyU^yqyB;G!r+3xZp~P}#L_`E$``q(!O=SlfJ$=2U~Di&H@@b7x#Y6nH)E@4 zZe-X3hBg4YL4%>L0R$9;Sq+pG&ACnBIq*n+)dNEVZG(LeOh)7#M`Yu?uQ57t%_dCJ zfsfQM2y=QUkQ7OVqOXL$9sMZ+A*b*ml^PnnsSQqT1u!@Vm{sF3LrNPAH!yZ(K=~BV z6+?qp>-%W%Gbb9n6anr=b)l`P{_2u^D_BoZ?hc$CP*nCSd)|Qq*Iez696G%AqH7NN zW3=+h#~>8~F>Q*92NQrsNj)NrR)zfzYDEhK2IR4<`&Pzv2XQ${&`=kFGlBkRQv{3( zA||heMnP#UEXRC2K6HK$U2JWZQ;CeF+ufS+P z`v%^OmjW=b8v~#Cp4aE)fZ@@75}7*FFafk|R1TPrUU!?VEWB{4W)#rU41748v@+^| zqAbY?36!wPme}=j{iP3>pbD-62Ub!ju+DW(KWYK&-&UXtDYCb|G$rGtecqw#j;vjH z&DHyFbT{2~6VJ@w3RAEI2nh-oY`F<66$TF|NjeUlK%twaMZnHK;L3i005V6)j@gae zAu}@Q;kl;f;~=UiNvwN_3VigVr>tMe0J-S)0dh3=9*w|;Ps#5h1F0RqTQP-41^^AM znnPvq6IGJ6Gu(kA{_sI}#IGH3ukdFc<7sYrI>Mxg(Fkv8R|MU{)8GOGdKoG)H5yEN z8pZ@q69#+LYOiaCLEb28H7uwgIe98n2caSZ(iD0;48UWZD?uW-x`o93Y+u~g*`C) z5D3alBdZ1n13Y>dS}$9_f}zzjf;;&^58{u^BO+5Q$1FPtBL;IY=zgt&h61~Q`ip+n zp~F{u2A4m4jIQ{=Tc#vDYoPh8Bb-Qit{nU;TNodx$y`W%DpVf(o@iO3Xl|CMpvTBZ zrPVwg1FD35M#6rDaXnt59EaS3@(v9V_5`K_eyb(5h}>1R#N3GuEsVh3>n~vh-a!En z{5>QT-ar9VD>#nh5S%`3|}H3D{Y;3YH3{hJH}`0$2QNQ&d#GV7V@Hkh2=>_amOFFkSq&fr0)xp%~)fM7+{2$6w zpTI!=bR1c5s%;@th!Y2S z&b-C0p+ewAg^a_-i`N@E{pvpF6_CNC@tLNia>-VZz6@-bIy42Ecciu4ZnE2V-wRBqdTHdW-#;FxKi&d{Ds~QG%c|$vD#Eq|#aYP=nxMt=d##$jNu>8j%px8h9d7 z)c9pEO}&JKPAfPbxPPLWLI@(6z_Ur|@#$JNqnxaI+X=peL?0>?2#sfr0f(ILypc|UCR8lJHU+8$W`1=4w zuZwYp*_EU&3p$J^;oS?$ea`ZXSiT_fBcc3nstO>mPW6o8f}RKcN2Zt&7xV?-bHFtf z{JF`+#$iJ=2H~J!Jw(-wk_5^c%n!zhDBusH+CJ_TStvFq_B4|4%tMrhf_|YMkr2h; z27W^>a$-01x}#SfeS2P?HI5d*xC5p4tYuK+*+i+58YPP)Yc9$Qq})yQV&NIcMNd)BX_+0MGX+14#p zI#S>T2w*l|78FTggjF<%KCt$dip);qE@MZylx=}}*&zzOcinhXpV*HU82v}Jl@(u@ zFpe!QH*^B}Dd<75?36U(c>h#2bMuQ)QYEHUAEKh0F$Y!Y}cB-3eQ>N(6&vh|??fzm0;sFVnKDjDYY)^-3NWpc1zI8Qs2w9do z4tjLiIdRaV{@#(GM+thgGti^{NDp)cuM&_f+>{W*VowfyF=2rOu!DhF8DA72M*?%9 zV{O^ImWV2gEZi>0ED9ryTQ?yu3y7s*~0O-WpSM=231@UPJ)z!!LM*BK^KLi z7b2Y0>k$}pS-eii`{Q&v`uXB(V_&!K@`Oi;lV+={pfqANYVUNxT6B7$xx z7*X=2{LdcN5N^>(3kud~YLAaIHGXy!<&Z_>Hr4Np2(JNA!q^30m#jc^y5DUfhBX{K zOZcUMzK5W7P@?1h$V~waGW=pT9SEs!0C`~}E-{V?R6PzUGN5Q+mF4K%8E!KDYi3Bt z#7Hc6{fi0{wG)~f{W+eAgCf^>4mLhE&U5%h`XM5 zKsgNAZu<9iFJ9kI|8A*YzVS8dXp-|n97?&0h7+teydhG~`1c9Uc?jRISZ+hNIeUDZ z_($KvN&F*;e}wbtJt^B9<`!81Abeqpa90UeFVII}_&cCINTcCZ)@+JvBZZ280yr5- zT8XS8D<4N_uv-+0xjdnb8!i=Zde!>X%&iGQk#$xdLdiFAI>j=8GbI-al8?B_l0V_* zWRa+jaV!2z6{jfDPpYISk`zT4)Jah!nH49qV$my#ghd}fWv~NiING40enEJiuM1wGe zaRMZp%0P>9F%g;e!d?u;5{5w>D266QHg{hUG%# znQX7&wu|I&z=kW4TZN=?5oiZ*Sy_JtvuI0t;_cV2^UwGWII4LVpp$_PE+AZAv4ARb z%97Ia+ag|r;tg>c6#aZj8Wc%`g403L>Q7qzf;yeE6!H3V0R?DsXPhsAV6dV=kPFq* zP_9Oi8o_@-nYfPxJp(rpZx*Z@NL*T$N<;ONQUrgABVQ1v?jvhhI#xT%%@jyU@&Pq~ zWkXq=%0(L_!QdbCkyKkTcpz=c8HDi}%pc&aa75I+K8E*gy_vWKQo>6joLz^M2Dk%i z-jzlN9u|)*YwEI_O6+9|H7z87+kkOE2c8tC2-@-xS#q!simKxH*}cZb03K2>$p|&* z07T+7tu_?}MZg=IkrZ$>x^g6Si@+X2D=lDB$UNe0#_JV$#f;D6O5hS7QZF4TGpjmG z49yGr#%YXm6r{*;D;X-U;4>f!29+;KdfWw=hia)-V`dR@zvET{5TN05@e!&2WF=4^ zO5Ys$t;2~&RY=m0%dWYqbG#jRcd$ZygrLRGt5GHOm4*9>%f_Yxf70q_gviiJ!8Of7 z5yTx5loSvXw)=5=g0JFU75Gtsu*XQ|c4gqX!9|7rSwg4XEMtS^U>s9%Q1}253AVuH z5Z4%;SYvW` zhGnGsGWY-4soxwde|l+V@i!J;#kc7zwZQ$i1&~NT4Bls=qOt0kDh`a=2!IgFa6o3_ zTLex9%698jFpkwbSp(E)Hpq{FR}HE_=&xW`#c8!g>12EZ2f~e67HD5C+-%Z(!oYMPC5kE%Y@pnz zY@DYM72bsahbdSDfEA)j;B3iL@RSM=HQ@No`#;cVESdsPvJ5y|?z!Qj3|JnvK!#{i zg)eJ=7ivsV1Fo${68A=)h_nXyC*aI^AY~N5CF(Iq8F>=!RAh*udxd%&zk}frLOoo} zRIs+K+s%3$#)}zLm4MLXyv`@%1`Y!Slrhg8kmmXL*;UVz(|xx(o2}g zgLp*N1qu%uU`1f@+_JEKkUri5qPt}uKzMY&IyE83oC$WwOg=P?7=X-QxNIoe$gMP< zy9U9}+;~o$3P|6>Nd@HCDj;Dj&`B&-B!#G&ha>>ZITVS&N;bJ94V2@`I?nuHohcn+ zSY#19%{Vv|$WjINS3~hXM`6f(IsE_h!Z#0=KD)c(Kj|yAKx%>10;vU33#1lEEpQLE z0BYOUlNgxbysZixy4 zG*TKM6<`WCn1lyWW-4_E2LxSFtk=-?DCCZ_)B2%(^0L$Ry>5E_I=W)ZB^VcJZcK{G zJxLVUag^W#LZYR1U$tPS6`&N|9uFc}-x-NWmWX7`|9g~3b|?P-^l;x`_GhL(!hh1& zPPPCNuCHdjnIJ%{HnK%iS)m1j?lDPO@Lr&ZLZ%OnFG?&5G4JEZf9Thp6OI3{@3pU3 zzmcZyRL^gda4n%K8mPo%$}{rcI%qK=lmI6ZOdy)vS&`LuqAF}h!Zntt&^LM_DkP%9 z&JY#$;cI!r4K!RMrqoK+R{zIR*XDPMm_oDPV<7 zoPxwDNSuPiDWGZzg9O32z&TKW+L0xtE{*pS4ngSLQrou8ZR`UC+o)9|2&95<3q?#S z*ny+bAS{<-<5Ji$Pr;%UTHzjq@e)`e?CD{Mph$;$PFtfPS5O}vqva*ye30=JxA=gW zrbG@#f)Z*AFglnK8MTR#fQ5|O4fqsv)IuHyrz0$bf)t$fd4&ue)RR8rgFYe#K?vLA zdEmSlHd@FQ9l{lS|(1xeV0=(amx?-e@nx&1}o<-{p9X1?7DgJZx`M> ze_-zN*#k2#pZXmCkiIrs;OH|pW;kb-_SobCyBG9SS2wy#fTAMBoH(Nd(B7 zddEd;$0?Y5QM7j7y5AVm7!y*ot6)eaLV0Ml3*=g}2JK^K191z{Z^UR3TDHeaigw&2 zJ1#}LZ{tB510Hn3RdrP&F+w^Hp~oQFi#ebUXh!4`kW1$T7Gz)A3sZ zCmc{$@eL?d017~#4M1-wwSdQiYC5EF;L=Xo5qg}h)gCzg@$of%Aik#iHV&_U1D!eHR=QeIo@jzPHkAC3Fb&;` z?It9CJl64qMIf}AfSw;Wx6;0IPc*mEee2o!*WbZ|bhX6BzJ`sC7!8gby~TZCYdG8% z5M)puw0Ja0H%Ms$qch~*UYosl>N$L18=>Ha@Ic>7@GmzMr%so3>6(m+jHnRDXVRWLzKSw~BDEy9Ns22DX{gGo_{{Ho?Q_E6gS%dU$9>j6U zlS6UGcCR3j%-OO=6$0sy()8Cq!1^VwnMmISyg~55LjoI99TEg&2U}zsdi%?LN1weh z$M6`Zoq|pVH&^0uYeNj%5YF~ZsXtiI1p8LR{V>!-JYgb{uw9qffBxxMm)QPsY;uV` zrc3O;jVEr*(v=h5ud5~}+t36HRM6Jk4Y7{GB@hS-B_~rfib|8&QSaAlW4&Mdo-OW0 z@7Fus|EH$@bg+C1f26O}0w-1ryxDFnvp8%?9D$Qo*cYINDNzHZ{;aMB4Uop93Vx+R=+!bvBbbizra4hSnRX|HF&^S(h|4@I^LZ9`L1 zJ?(MlsLSIyPr@Qtep6hbMDJQ06i8RdQrjl4%CX*Hi*!65s~#alVCNM!lmtgwa@oP5V2ULz90e5gB1?rF(`|?<2=J1B7Wtna2lv5_cV1Z&iH|zVX_WHip zUbeBs;c-%t1kn)-ffpS_3?X;`Gy@E68FC#cLI_exqKs1{dB$hrOt|}#V^SnZiX=Ov zNV4^c7x4eP2X7iIPw)Po#Xn!zJAd=suGyE*EKa>+So7ESkh7+aov&Yn`;iO z9lHL=5%&te_Q{*Sa}D&LKJ%`VjZ@!s^VB?Yt3`%lsvRN2LUSYa3ZB1^h=X9m=o);v zW!X>2hJ;|H`7G!bvn(SIGXjK!jaMmzcYqJ-T6F?28|Q624C&4F<=Y>OODVQ7=(V!0 z!p#jBw_tva+Q_$_gPzh893~d)}DVDbFlr_9K=#@?fe7R`|IxR1JC~AY}kVSBL)Zk&FE5UWRt@;PPcd@hkHXh1aeBG8dbgM1ms6vAwR*3nA zbT3{wfW1Jlc?FgYuj8!zcd@f~x7ns2`@ks{Zd_la!-fX~L1>w+vX+Z&dVSc~SUN6P^CsO##y0|&0T+8sH> z^tWBtZ6T~ zy;WCN3yp0nE}H=1vCZrhd!0j-f+Y%XA5j7oXrFiJx+7~BUUT*S8{JKJw@GKF7pA5; zi#5nngD*EG_y%$E;*EknuxN#DnwCSQe^8Ia-FOfKU=oQ-9i;#UoWadtUZKK{dbeje z=9jP$5?D@Ib%&COJ8;AwKIo44wXpggW6_;Cx^HR zB<|fF9`Ap897eZq`E6iyH&z)(cfjaUeUTXuZkY$QG`uvqMKGeczmybSMOie(#5lU^ zy?Q1ZquYP@lNzJD@c_DG5~Ew>rOCL^adipPy3K;zyhfPbbGylb=t9vs4jA3OGZIEO z0;9We^~N5$ZBjal^0x(&&xO81m!J6)XkuJNgE3sAu?WCa@iP2YX7%4S(O7hLd~Y?j#*`d|a;kW>4Z#Njxgt6Tfno>pRu| z7Y1(~tbBC&<-5Oo*Hag+oB#f~bNP$=!WSUhHD=}{$QDr$F5=LI3sgfmEJ_HIdCrf{ zXF@y3l-fsuY#%sKjJJ%diRWK1p;9%sbYoYDLT|zRn$3b4S*md+?egN3J<|_1d#sP4e!h zv)3;1H?Fq0r_!b8^|o*blSuRZ5_GS1oAVU*^_$TUvAr@YUFs0wz1q~?l%2tcXmE6|#{>hEH;ruz0tT2paaQ;(n@ zyEM*iT2okJYHSAZihvMEewXqg;EaMD(qPw)G`KGG-O!qP*%ecZwl3? z88)TTcUn`Qy!qSq9y)Y)lj%#J8%!-23{CMNZTyIWYPhSzG{RJZ%8nFhVU|c$nqr*I zxi@vFwqET+{eL?7|7~rO^nGf9)B>pmQVXOONG))WwE$?_$8vm|MBBFB2*v+G79pHz zIVu|$zyoE$>8fhHtwbE!cJBw{(6)UtDWPo>+IEM~wrE#9hH<@xf{6cLQIiD`RIQpe zXx`(z9w>-Zo1x01x5r&YXYtxq7tUlt6;A641*WC|splO?y?|TglH-c9)~@!dAKE9k zcGXwY6yO!#Wd>G3s&q5+6fxgsFo z+mOHrY0K$c?#p5OqmFQZqX-E;ch&d)pyiXC%G*C8J2ZYYyO<|cHuWPY)uE5hs3+PR3 zHn2zm-Uhs%uc2|z9* zgi97#$mE-^smT6l?MRklqsRTVVzhylMmQMp5Y%CT!?pdp2ahR;*0|Kj05iw7GZ6pW zNNKc@5IJhweDm2gIl7Vs*yB^k=L~B9!FMdf>o)O-$R(3%C}97GvW80JjYQs`aDVAP#EgSkm4y(NQD@# zg7iQIeAF3H$P+)Y(&Ej;<%4M;+ zGga%QY;h6KzfxbjB^-Am)HM36-3h0rarC7dXWpI`4XyrKxmuJskNQvsL1coJu+1Ti zvUZnv&O@lDPG;rpavH}Fp7^Er?RXt) zfL9gVQfWDuv&&H8lbn2V4(rOu78RE94pdVnuqEEZ2<}mQw$yGgutf771*RHFD5Emp z?-ru628F<8ROUgE4*@4&1Mp=^sylUoNPWBML*Kx+XbeIk@G;meG;fSyy&p+u5KOXJ zrHf6CK~vN=C^1Sw{Tt;#2BoHrxIdsGSeODKtp43gzQYbVhujf>1}(pXtiItjk(tTB zn%C{Pa*2SI%G#Xm7XA-9H>IO;30)y?9nYN=Y+U1K7e&Kfg?V3L!m~?)*t9VALXOLM zfqF;dy2|Cz-5Y1nzmwV`DueUOnTB8F41%l$?}Mi;JR~iJWgE;zy&Y|lTOSbV|JQf% z$*nDNI^D4aPl1a9K7Td6!6-8=(+yY)#~$XK)wZ%QAA-8tHnc@r|-<>b4ZB=uKVvXxpWgDKa};{W@6M8f|k{Qu73|DSk!P9i9L zg8wIXOtu)1KFBIAt_5jf7vO^cL9H~FFInz5{=XmECpZ3oGm%HAXR|Gv=^{y*XWcMktACJ&Y1|6z#r**%PinGOzEusdbtvYjQlmAA73pExKkU8hVS2%arCFYKd;f2^Ro~bQVQ&rzJ_!1w3N`{KiC(cOE!bb>aRUE$ zJxuSqai&kZBGRd}Z=B+O;#6uj49$4vL^C!JVhWg&C~32tWVL4fuG(PZt3`n%Gpr;% z=~Q}*wp;mFq#tSDcJ~)Q(&dd3yU7l*+wXm=t5__wCC(Ap=H}F*z=kt1S&pHd!X1P6 zWm~<~kMyn^ZUzQvoa^XA#;&6UojEpx2ulS#30E3inK(F?7(9d6NA2DTJ{#~42(Y+d zf@hyVbg!MUJ=f7&o*wBs+IQ{=$CFskHgbkRr%5;*yN)U!Xa#`q1!#Nr0c4W^^lK<^ zhMh4gy1-<9w#Uq&!FKR8^vjFv?XR+U1yoyBZ0Z8XN)HOa&n` z-${9ne*7nI)g;f6uyzi><;TNv(EC4x32Uy=FN zNcBX@b3FO?qP$i675ape=fH#X>9p=R?G%I}V6GQsfe;Tu5!RqufH)OG9YNs1H%`~G z(M9big#@qp(`miWK|}OLTN>lZXl=GqLWk` zH6o+w8^w{{=gq%kL3;M>2Be2?Gafxgp?2!GPmMJf?R)lKH5c7_xefgPsi{95ET6(3 z=_|FsiPZw=q(6(rVN2d6;G|7vxX1v`!90UXWWY(Y@S}@IBHEKqu6(xRIO%>PO*rX< zlTJA4gp*D<>4cN+_0%+iSSrVP4E0sCKha79g4R?cEIg1|6^(85roU6}EqbE)sKEuE zGp)7AesWteP2HM2M}^LA>WQkXtQtThlyV`zA(DVrD$dtb-fHkB1;PnqEmfJR%7tQG z6(C3%2|n`P*jBfB?QL5(6jR6QuqfzNdCo2gCWR9DBkv2N6Gn9eI_1U0_?iSQi3 zz^X8#99b^j9p%vq**UW64uwNdM#ZK+9nz`^C!KK8_f?!UiX_kE@HnYRl4010w;He% z8{l%KL#q&7l2L(u8w}nOk@YN2k>v8L;v7l)lVegONs1&pq)4*$iWlzx^Mel#mS=Z= z-{M~^TsHr~xt1UAUte!Jb>m_t>bRB_Qb2D$cQqGfh3f$TrjkuiOO5on3%cI60cDH; ztIvI8E$cj0qCN>E4dHTBy~EUR5D7um)YP@}?5d?Q)x)~VdMak6Vpb|e-|goZlBjRV3IZp)>hi>hYzOY{j> z&062R@!U-~@8U2t@9HXwRtl~8;HMG5Wi4JqMx&vZSF%M#8Md1D(Qw`my#v+r62~G9 z4tpdT6O_NP2C4zV4!u2z($x|~cU?kAfo&4*xq;$9=@QCQ zUerQ4WWTqA(*67!B2~KkNtu= z_1$+Oibp-0rk)g!%1nk+H=7bVqulnJ25xAEUlnc$tfQ*tudA;}JnA$PXCB=*dJ>OH z;!zYUcfve+>*c=J|9|~p>92QRweb3_|B}8>Es$CuwLoft)B>pmQVSf{7I^LD8_(wi zJ}$L|48|MJTx~TD$6CR{!fO+DI&{*iL0d;4&+UC%z*w&1N^N^TID1|$5m+b%re#{$ zj&6s;XkFo(RvYX{tGaN~^a-L=YfH7Z9jdh*UD&vkfjtHwhJlUxKZbQ=;YvT!1>VOR zSjWibKoKF?mo>oU;Ip|M;^%ppPz64*l^$VBNN&#KEKs2yg5e(WI%Tc7$Etp8pUlk9 znT<>6i*X{XTV!6dDslY9QJ7Vw0H~rh%Kud`6OP#$MWboWSi?_A^&Ag_FD{ZCe&dLgBAYi6h6^zCuzf zXN|W)p=*Q^lL@-|1Z6Bu<{iCNMET1QVXOONG*_BAhkehfz$%2 z1yT#77Pzmp0K}rpNqbKci;$IQp^SN8LHIjsfrq!2MBuDnty`)|;l!e4ot3qHNBT0ue>)iUuK)cBFF(5LDf0 zxk~3Fsjy&Cg{)PUZG%{Z{QvoxR~pd}x>&+o3z`c#vcwt4iU!`9@Rdbqr0^_gAo-}ODa4()o@u2UEPaq**zKeTw$ z;`0|zU-;s}#}|HV;hPpNUpQ-FIRCrz@0>q6|C0G9&CkyL;oN)X-Z*#FTsgNg`>EMq znElS#ubn+__F*%ho%z7b_s$%edFIR`r~iKX!_#k_zHa)W=|@j}e(G1Jet7EZrd}|0 z#_&tSPYmBVyk&UhP!8w$=>PuLnbVg~#b9v;KOPo20kt}@DZ_r z4~Pw%?fTF*buDr~0*S*pE|`08F0`Y@2#K+xsj}P+pBEi@UUcMH(UFgij$DY19Q=KB z9=VA~x^|v4Lx` zfe(!hTsnRF@7*`+^RdiT=nm-a2`rN!NUw)g&P+xUU=;Mt@FP*|D*G-nSbH@ znR8#7`^4Nk=Z?<3WbR3Gv$KCV`<~f1&R#WJ&aTXSYUUSazH{blXU>~>*z{+oKQR5h z(}$*?IsM3~zn}W>)LW;no4RP~(ZkOVKRSHd@YTahhL0QEI{4V0U)lOJgFzUdR$>QQ zk^(GC%&aqu3wGtmL!r>A;S=JL;`3p5JdBAP{AKKG4*tLB$Xh~Z#k_kJUeYKWyNiIH zHYL2Yyhh3}u)Az-bLW~eFJw7k%NDT zj{M)zk-r%o`Qhlu{}vtj-ss35i;nz`=*TyOfgGcb`Ks8!Ha76m*uZDT29~jbXT=77 zb!_0nVgr|B1E;z^L_pl20~c(f;5^sCSl)WbDxwv-Y1#sk%CL-%d~j^!;EU0be-s`0 z*6z_Gp6DB51Fs10jYcfQD>eyXAWy&q$Mn!BKWeJVOBP-$g&RIOI&v5rIry{a$hSpD z-W(o1=80Yw0`n{*wqj7A2oG&oLq{VsGBQq-lxwnF>8e}VW4L9*7luz66?tKFq>7F_ zEjn^fY~6CL@j-Jpx$Dc%?xcpx_L^4P%V z#s;1n8z^G~Pmc{eH8$`;v4LG~5z1m!2EG@{8?1y9g#tDYxRXdinxb$;ZrkBgLvKe# zJ~BFTCN^^L7txVF5*>LoG*ZkHxh|0Hv??+H?zzJNK*%;Mmksa(?{JpNr7W5Yy7!iu zMUJ5z6~RO>EPqTJ#X9d z>OGh2dECmaD<4~V`^sxpE?YTkWor5Nmw#&c^;G}!<)x)hF8%D%w=OkH=PW&7_y5}c z3lr7<@7{HA*E4sWviP~hUs-(H;;R=gT|8~!Ul)FB;T;R#xNzCR6BY*ZpP2uN`HlG( z&p&Z~X6_H>-aYq*xtGmlbGv5$Z1#P#-!faz+Sxta|9^hw+h_LAJZcrk01Q&;Ny3^|MP5NRL3w^9~m3C8XGv*1p+%l)7X#l zI!LiNnT?q0DC_2J zM|L-Zn0FuidF*QrekeL}y=$b1XMcHk$-1bkMxoM_>2NsD>xQ$ctwwpP@}el3+-3Rj z+~~+hL`P1?Mh-q19r?r2ksG0rVxIk~?j^xL;b`hec+~-|CUChZjKCIH)wxj)X&W<~ zkBuDsXmsT3x{n$0?oDi9-o3ZV=v-Bdq|<1HO9adju&75^&9bU3B8FC-Y3=SSh$XMjqt6B@BM4A@uVnBGZ9-8RL zhr~t>{w+H4kE0|1Q+V{4Cwfh6;FaOMW5hXzd!r+t9UUp7BOf0fxe^;W_^0T|zmAUl zM0Dh@Mo0cqbmY%QNB(4V;MVBKzm1Ok{piTwh>rYVbmY%RN4`5c z^82DAzby>9m=SVQY~aDzz!${^UK|_vwAer$8+c}H;G<&$9}*kb-PSG1YHms-r)4lo zEe$uN76Tb_R=KW3Ax&Ei&*^$QCh}p?k%QRC!JkG){$Tg$5ufv$VgvVa^F4Fx%|7n? zQ2&3*oSek}|Mtp{uiU)yH7jS60rY4OP7a~9VYzOeAC3qQQ@bqg<8IDP($ z^B10;vV=A1x5JxVFy8W0G%bMW}3$ zlmTCm3G_?@&I;b7%l)v3j(kFNK^!N#4}eaHx^=&n zQL%v!jt%Ufo-yUU;R`}I#NVOJ}x?PIW}_eh3Lq?ijMr9=*W*oNB&}Tm@5-6WUt0d1<)2vISboX!le+u=d%6F=d?{aA+Wi;1e{T1;cl`f{?E0&Y z0dR2FGj=^<@$VKtwD)eHZ$@M{Y{vhelY{r}(Qf9Ey?K;Zue1i;JZin*oP zPtN}A?0=l~vrnE~o%!E0|E*&HJbmV&FaUme`unC|HGSdqqu~F4bn1tuZkl@j)M>+i z9sbtv9m8)NUOqf)I2`=$)~C7c`!EDDT>x9sXzd%snKOwdWo1F@c zGD0c7FB4@*>5B$8qO8Sw75#oBL4x84UZFLhQOVJ_9Q=9ciA-fqwW!a_s--4dV)Rle z@ReRRz7_DVT4_7J6+-=1=C&DmQ**QtU;%8MqdZap1|Y4ay~+k}=ssqIZA{P1%Fye! z&e&0%160azJ;El|;~Lv2&`Y|lm9m3w?&(%~m7}U*EmdQ{ujJQ!OZ~W}x~>}|jh20V z9h;iMR1(($1)2dWEil;(tZb9%+&zx(O&Dy~Sx|gIMtD1i*g$m3;SaDVG zA%_mf?`k7kYo6J?r1M^Ku^D0cN=N3rw=o<-OI_!Mce1X_YVbe1m&9SgaW)1<| z5V#^_cxmBRPzbJaG>&$rWE^*8aLp_!_%tJiAUL_D zv6xxdMuMGdG)Cdz=s*Anyx~n=OU!csuUI$e4wD-DV{DHr`U8LnLyt1JVW`_o=4Df3 zh@5AGuFM(ZKtAk>KU!qS%@hR>%<_@7T+2fBZzLHO+JQNNI^H9~wGg6dx&OL056v#< zNevj#N|f_)n1Gn-2i;K?voc=Im=P}9O!LC>>I`t)g&9p6=cnA3!#p$+k-!T9V76_= z5HB3}!CKQzs>zrgTDFYFFgjFIHx8R896maj1dW8d5It*4=8maQDv~`XNi_niGiHPo zo(ED8KP`i7#2CtRrc)*hKkQI`iZI%}2Bp|NI@8Sogok-#@R16}R8=wT=no2aBu(m_ zVOf#{D0uY>G7`ht0RB3L3adF zkiS^%@I)xO2X|mF6`fSswrnLm$Br=gm9EuGAJ%kUq-t4WBwb@9W>DxyNs(8o#^Ru> zE~v7R3RVUD0KuZA1K0*UC~K=Ijiy-z>-BrP{wba0(#lM1OI{KkDppz2BqeuQK7CQL zSoL5VRZ3+H+lpk%;PF`vZB~FO1tMx#{3=_jK?e^}P}o5EbxTL!@rIFJu)Nb-GS7;- z&aJDu=K&ezbSY?c#zj`L4^%a*hT2QfIv$jzYgZqrgm7WFnU=tek7`>GC6&-{L`vH# zS9Vw%#cErWVcym>Qx+x}AK8x3WU>rkEBQ2ow{{PX!I=mqT8t}3F#HJ?Bi^B5pbMMP zO`;xlcL=2!*)%q75_-}GCp3JwMnJ^tx{(bY6IEAuV#8{SmgSn=i!tU92+JAyOAUeSh$R)(=*7}!N?JfEav`Y0)}+~GB}U@v3)0rqEE z?tJM<=`@0!Uv`LfC7ROnVMev#Ops+1v)EhFFcU0hf+YffjSl6bL?-f@mr$UKnYohv zS!tZbKoTNF#tP8d!TY)g7t*nr2hA-O3no>!8qf!Pl)7al&wW1V_`4EmGZi|U!wLr@ z$JW9$sQ3ge`*>Rmn^(gwDHmgo)?fQ#@7aEE_@qKYKIyZ1|ik z{dEn?WF%b422_V7v#}gi;A~d-^AOk$I}j(4K)=|NUBI?wH2_H$%#vio=rzHDJvUG8 zUebl57MmaVNm`Q!4eK$_*ZS78<=47ZJ&+ebSy|I|9N2WAhK7A5OgVsZO`!z~f0hjw zL!V2_8-&A%1-2RNns8I{d{%z1G&rm@xoNwqKIck9JF-j3K+bIGCJWwf#FX~T-<&g{ z9d;A|#zxVEhHfyhq%XtDz)@*rY%PT3U?z&9(|D4`wY-EHN%kQgJTQ_h`(V?$77ABr zOf}zqNW-#LiNJJaYBSquD@`+%ZB^4=g;K8SFe%dHIm=i$THy%A_7&zg=TbIw$70Jm zoR=5&ugD^znf`Un5hBAmhR1Fd+ceXu#>I{V+{3#z2cW0f;mB38mFZH^;Vo`69DpPM zMBZ5EgHLpk?89NT9Tj!hC=^E?$LJj~VqEBKFIzq6z&JAF099g{S2{FWm`AK@%mv7< z3I+nkSx(i%?n1;Vhh2s($1(H6>c-~)^v1ETq1O}q)P3a>4lGkh#& zTkIFD_rfb*i*oS0-IEL3if|nA>>hl~V0M#*L%!#R$QG2lHtW!qg7ZK_gO5zZGLw~_ ztyzR^N^)qn6-%i!gD-@a6s-}M{c$i-e89|07Hh9rNUdUp7+GM-zGi*DHAh6Dqv)y}ig!h{YMu*`2}532-+HO@PnF*>9t zP0pc-uCX#yCo1kz46-^{V`7JyLvbnn@T=vnIZccT&jMDUFsN!V z_|JW$D404NK*`k8LBU%sXZaEw27CqH(n&S==`NDP0tYPKGuL5~^TsZm%YAo8u`T1j z96q{_RFFm3%K1>-RX7N-iwFBKkgtq6m2vp#^}1LcazQMRa=~ctZk>wHVG1sYoFkl9 z&7ezW5XpdKVada}5HAvLH5$xx5%zWbZJA!hk=t&`eAD0mKRy`W{(JoYkFINq7p1Sal3%|03|NpW1x6gmW{NDL9=La4C|CUhwpPQfkliB||`_1tG zi`nIwznuBG3H<+ePvHL#kNN+<4VT~@cf~}WB zRMoVdV2;Hl4wy7Mb`9GptFv%g3x`?`Pi)XMWm8`ndW)0+x7x7cpp?Qt1GEmy3~RFF z@?xmrWcA>6eIz#?!!DR}i(&cT%+KkRADK+b8;%vV8hkp;C(Fr;-J~8V6*f3dMx4=V zuEVlYEQ5_~8}-ocC8g(x!z|){!;pqYz)^+uL07EbN;30nJ@}FEk{qfTcPLrnKe%zH6n6fqN3hlztI;02~DQuPGCp4$?Hs>^44m*&HVHyA;=Q0cO zp7kNz9eK?WH!&98Ea%NpAL!oP=U}sGBNc{yma)!K#A14ZLN~c*-Z^t=cpd}&$-{G? zO-NGchB;>~*Ebku;Vwfyg6Z_*eWWL8z&!}U085T>9Lp{DaBh|r7OTvWIv>2HkF@L> zoPRi4@i7Ako=A4<94EN}7flbU0E|a}nX-5hgo*jyG=D6PSW+VY%Vq2W_gsd%D-G zIKQ-EPw-(K%ejej4CR4H4&bVru{i7DX#ph5=fjDStEr6VjRT zM^XwcpXWViH(KqHt75f7XO3dWTIqe?-+O&7-{;n-qc=p?ASI3h5wos zRO;51Fm^iiSXGP6L_x1AyV$O_vu>qRZRRP938crqgFP@lkFsNiSv#v>xcyQ)1MOh{ zDH}}4+U^SZ$1!Ud@;3R7NR>6p$%xVQ zVhVF>D({`cA{O%=DGeGG;;!dgRs<4gLs4lo?vB;CPc2ss4-72~_qL5W^rus%b9lX; zdzMVBLM_@&3ejSp1cY-1^XNfbN>tFE#X)rP;?Xoq6Y2J;HaJKed&kYw(?dslz*JoX#gO`8YVe-o$uy?h1^^=JwJ7sJaIkN$8P?Lw+p7KH z#p94c;fAfUVmu*qd25*)l(l@q+4gz_?j~k4j_VIShPdpLAsaV|y&~XaT=%mKPXSpK zejt6k*{G6_09Lgq6b?lQ)xRZNBdd446be|SkW!p9n~GpYk!uN>k)y7BEG*gq#8SG- zsD;E+Nv?5OI*z8gi1}NO$R6iI#!^8!FK3}YG_sU3v)QTuG{DZgeVQNYdJg`u+vphv}y0hr$a)6rZHEyo9If*R<%l87h%Gbt5&Z< z2`~I)nq{Tb?+dm^hU`3G&AqIVyuGlj4Dq5V=Y?dqY=SFLpvZGA)B}BUfl5#n!iK0* zpk*jIe>;s?ZrRQt7Y)=kv@bW4h82<*z|>yWdc}mRf^&rVyW;X$<0fi4Mq-%&V5+1B zQe1c_rXlT@>!G0sOb3dTI$bwO3CKnhCRc0Ve%~6mthft!K);L3RGW&TX3Y?SD0xU! z)9r5;Qeenf_NP~27RJO2NlHXydNSFuiM2`FmQqq8VMKKZZRD(=-#SXVW5A##Dx#wj zK=)#N9N5#ue~>p{PpVod|HNw0yvIf!tk#O@8li$XoQ>|$_`EbMB@0xPQr&8n@O^N3 zGBrYJ96^-PmDk!c?~?$894$7xJ?m~$HrnNJ6mJ8z8MGNNL;(e*llEK4H+d6hK$4&e zg@2N!>CF-Uu?T6#2_0@!Ct`$2eITx$-OanjhvUY12NvXWo}i;FlNFFtU(f3mB$H6t zsC+ODS#NcrgB4P4hzWG=7&2uHB4B%15cP5JG}hzQMUsaS5YAl-V2-3zM{tQa)v~QE zCK16aYsi*K`4fX@>E05WVQIibdaKl#txECE^mR&-*evKdQ8ezRqYOd=ilHPBl0o#v zL}YHHNNMqXY3YErN)-{xnjv!cgAkK9a0>va<-@mX&!msjL+d>XNk8)2)#&rOgtiPX zgycXUX^nfvEz4!x1N4B%Qw9Z3$r0$}JFQNMbpSr!DI`Oqgi1BU(MChSKuN;3g<4r3 zagr1Wh3&Tre<#MQ_l?L90@>j&e{qWH(joAj!%V$tKbfx6{_GGD?Hqx z`O!97t-QAY?PbFi;cW7K#o;i`4AR!VkvA*Wsn5ZW2pqFjYK> zqCwXo_sSYmY9O4|aY_S6O98RxFcAbS1h_~p11S~1+Cu>={pZqpNF(JMSd|*1A>}VF zXKr()hwtSk+-nq5lr3o8rDiK?K(nleue|uo)!LVT6(?F#e9Q_c8F22 z?XEaJ9h53$)JCPbkQ!F{t})|{dl=F!eA#nmcQAkWcP~>Acu#7G7(ug1Vk{i+O|me` zMQ5eBV*#Mhto8A>*PR=e@{kBU!x<%?g&G)aKfA| zq=*s+fB;ReqgG6bnHU6fPql?HW8<|z7CJ~PQUbZ4+Q3kny_h9}4Z{J}!6`@`fhe_D zwIEf%J7x31w!2vG=vc{V`-4$uU3I zu|)y#VqEr4kR^P`1EL1CONFm&)BlhDg82WhhW@`9|NqNJLjQkm%lrS&&wp&bGJo*! zuTQf7x9R^8|NogogF_D;di~u0n0Ws`F8lxgJoqmU{=~tJgXgxa|J%L)pWFYA{l$I% ze&6SK|9@;>b>G3gzp?jc#Q*oUtpA^t|1Yfn-`M@7t^9w#z3b<9{lu<~UFUY)S^ReK zmx_O@_{rk?i}x0OukcmV-|;JU0@3Ib<;k2`80NA#0ZJUY;%v*UGAdRbC%%%igONoe zc5fuKLb!0U2ut7D<}{2>UMs$PJZ6Qch9i|K=qyDKXOzKWk^I4sMDc|n7rrm9D!aM! zQi`F6TYCc7R-4}M`O$H(ftbP|4cQD+BaQ^bipx)xq1Oi6u9g}|Bk8PKY^5O^M9dN} z1L5#-d<)wq`nP&41;kZPyz#wh$N;KDe0wHg0Fl2c?6wqWMko#utgP*7@sTtn?g4cU zy#=5^6E#5=3J`uNm+Yki8qWG@$f`tPjo2OXUQl~75UmNt(Xw0Sf7z%Oekir9^a$s8 zAZBRW8K?u?CpNN_(1P+hP^EZa+_K4VW6W~c0x>kw5dDLVh!h0XXw}=5VoF~_3aBBK zbOF@W*GXwaSb9EN8w@!Q3(3VaWWa#oZBWlb5I|;}X`nCObRAY*>6H70Z>N=qy&BpK zgN8~bvfBc=c=wzb$Oh!%-b-o75`$HX>eA?fkFnomm~&jdOMQXSb*sfvwCwg^Wws|CB&wJ6C;;M3CY$Y4P!Ial8hCJANqy=6w_qfp*~|l zd|Zj=s+~k5)(Tv|-RM!#n)zL6$R4(rkq{X{YiA z^PsV_@S)&2F~D&)fE_4Qt5W#Q@tC%~O05=O9v6-{#~^ANbs8A|l`=hdoEuY;=8%;_ zM-C*~%>|Q&!8)w*8Hu{yYZShi#-x!mSzzzANJmFl2R~7hnvDvbl$oblE*JiFS~|8O zduQY@=!e)%X?KyDizFE4!&-&qq1zY_iKR3{eoe9xWt<%XR|qQ*IJu!^qwp`rEnzM2 z4g8%xPo=a80JcTXyg~M3ll;*kdw|xoZ z#*{&CtMx(S05BB6{bDDA#oKt3V;em()LSM(EB5iHUlkd z0kyVXiMz?8oX{B@47T5aONS{secPt>cwi7@6x*puzfJDMKIC+x6te~>fmHZEX*q5V zp51Uc!aC;K#IA>a(B=N$s3AeE6j|7<@`Z6F7L(XOtnn<|3yP!r7i)q)q_kIEFaqL0 zbPd}sTp@^S_-)Yv0GEAARWmuVqLEz!8JicIm}A7~I!(Y_rPkn>LXxG#oKCBeNudQ` zWrQGI)U3>Es4tL)rVA5Ncc<`~)RHE|MB{Z)<{VB?>IRg;hSTZU$v}C9zdLT(AeX>y zr~u|x^~xEhTuWF=NmDkFR^cB<%P+OZ@hNU4VM8RSoqa6CQBTS!Yxe&7$I?1wNdzd8WR2lVGWOeCLQb>-IQ*Jq{dRilK_@PhJ#rZ=h8GoBdAz! z6W;684U9!qfv6ebvP+HV*NVyZ#2*H4!XVyT4J;_K3w$!#s{?=BzC5^zD^ox%YitZak0MBxkLmOkdGhU18N zmI7k6cti&WZ2{Y2oTLq&BV9W60 zBAFVopH_l!!h_m{%h8g#n_CU39PDDqX7H`h%P6Seg>I?rAs7C8e4P4B$s_akL-nUq z1P8>oL7^Pg5Efi)oJ#?d2^1OdgF)Is_nnZn$ebO>Br09*r`Qzg2bGn&!EGkk32SDn z>-I-%j$4i zyOu=24j&EpY2ioHa+pgSadeylY*8m9#NaC>nM&?R7RN(!`3X_ea|xSR_#uVUM}S+1bDd$VcOnf*7-LtV)b*?cMuya~|6r50 zi-=oMu}kZX${TVL3UdtK!!DL2=&6Rq#?_;J>0N(hI$$tecT^PYtNm_ zHFS^K52Yc=yj+)jw&ILH7K9F0l7LjEa`Q~J*23q~kjPmc9wZ?RVCNV+>=?^rtRkj$ z=)Sd&MMFMUqy-$6H(~HULlWHZ{lH=gT>J&fkHoj>8uh#aN1?P>j@pNDC0!!+MeN|95*EWfMM8|l8tF-G#D~Xj9#RN|rDWottzP%t5bOo#(5;z|c9$9Vx z4_)v+U+q@+?djt(zQZ&SU3UiOjV%fnB5o%vRggZczPLya{=+8#7{~utH{<`GK6>|& z|9#|FQvCl1kKBJ`Z>sZUcMQebGSc{4M3@=0j5Pkl5 z8j^6?0#>mD&_Nk636qQ|WMyJGuMd8Dl|ssL%f=HPjKP7i?ofKUhtR|+{^YMbd@pK+ z|CT=9A)IvKO*~Jj!8}YzUqsmuTR{LI^?E5~A?ovO;cA+bc!;|~G6Er?cUTK&F;OSY zM&odrWmX~iVAAz)z=M~N7{LE@Na}M>gb=B$_-Oieo8g^4BZMW~5Q$f$3|dT>Vk_mG zLvhwf{#6oMl6ZlYMkK9JH^PiYL=3k+(F@>$W-+;e2}$WhMgZNa4rEEt@Q&DWfVql@BK|nr=h*^n1p^ z9{jEFH`9V>(~#~khf=67_>Z3B^x;4BCl|Y3 zmf8ZiU-D;uBIF`>kHuJWdh|g@-hXF zFBmN#D|{_2o%I8z9KJE3>2U1;r??~F9oT8lu7LDX!>nU2Msso$gU~qIF0bb+1dN7F zEy}+;eVdt+QcuSz1CJ1PnbbGtfd~Y2k37(D zzUafh|K7MI7Y~5EYe_^G_C*C3n&ITjtTXl$7F_tXwDcyj=3Yj0RbbWhCb&ONcjMI zhk^>mi6p`@ldK~=ivm)oZe$`Q%K#Wef$6DME&PKtro$D%=^`;vS`c+G;t**cusPak zqfXiR595}ilem|J#l`v=cTprATdX<($gp+S3crwAR$Z4AjuiG{mhQlTse?cl_?-h5 zMlntpn^R`obq3U4U}%+4cKWsge9lJDsCaOd!e30=SrM`qZr1Qr#u=zHOP8nNrFVI~ zd2h7c^zjN!xXv#G*lJwAAj4r2l#|=LEZHRNf#NGb zz<-}jLpnjoC%7;|KL8aB@C>Yr8gL=vg5Kh(uz%c=GgBBEI5iNv-HZDI~#?+mWGTc8d>xByI~pbH{39|5NH;R z!0Ei&OZg0Y8ipf13q5Baz&0||02DzDDlE(;^QmY*r^Rpsl& z#l%Hvm7W-XI*hFds*o+~=BJNMhh2eL9)?kei8sbs65>floSad;^YEmkykpu~lXEV} zIU=C{?RdyCFW%Vd3eqC%j57dq0&Ef1un4}Y=jT(yjI|;xM-Ip7K-S17tO?AyOxuQOpw%o&Qhex>(X>tq?r~q=jNMG?Akz=j$ zxRNk`LqT%@F);|iR~X|$>5q$41Kco$mYT)G>Em2!1bDe#@I!aVCHG)>LU2$-q`cQ= z<-oWh((bWBdUz-bPJnI-HjX$SwkWI;k9haEVF^B`2Sh_|1ADLq7>M9XYv2D z`2Sh_|1ADreB~_ue-{5gi~pa+|Igz8XYv2x2|tVf4`0Yx{QoTee-{5gi~pa+|Igz8 zYqR+OtDXCA;P7xxaq!*AIMo|2Oyj^xogv z^Q}F#-5)Ogz6O7Mzpe~!xwY`z!Q0=md+~U)e&vnD1DDlWlrT1z4N6sYxg;X_eAH}- zLTu8e%GE6+_v33Sxjo(Q54wYF`NICc^wGJ6g=43O%Nr}5L3V8J{1f?wto!o9nciT1 zFkDT4``qeaJ?||%yPmD*BTdvGl4DhUr`kfP^g#OOBhm1a{x#UDq4Kq34=j}LoBTnx zlKb)4vB}T<;o3^J9)EKBv16KiPyG3{oh#RLess9HFPxF-%Nsd^l zF;x4B>^4e&$iE}mOB581{FtRmo(4IlXpS1(61Pb36Dc=jIFckqqGh>3)JIizuvxO; zD<3?1%XqJ!o?oh8`FQcbt#Yf&Co7d}q&1H0uzE_zEYqdTQSxS$)YRFw)qnbDzc)?p z>9xUy!D_a=@cz6zT*@}1ORvfJnUO>ej|p6AXJkSIld%ToE(p1^xv z?yL=*?IWijTe#Q1%h}8M+VLAcm7Qm?ZNM~a8uGq{%0l;Iwz`@xkH*8#oqz2|&tLw~ zk;%?JH-Ef-`7S%#ZFW_ckd;Z!8kqzn_vZ{PJBaM%vb$8|!Kw7O?d-|tKbJOc>k`M! zIriknXwY34t}gtk!RpJ)o11%PV{LdTAKzhFvLoU8tKGqJci4@Ox+NnxVkm(&@uq^V6J({PI`TY3A^20yZWY18k>+G z(vvLLU+r=xPjbA3jl)|@I9|W9H}1V^MD0jTFE6u9Fy$!LtEz{LEDFHO0xT!%_Itm4 z%PmuvaP>*tq`Ulwpe8%-?bf<)cXX{oSFJl8ofNrI9-OD4>@eQDym}HNd+*YM$+V|r zNUe55M|V0~l_SRu93R=uc*9#$ck8Y^GPgPPThD`*J3f^hcpCCv*7&2Pb=YX1-d#e5Y$KTeLzO@@Hu;*H_e##8M@AlL1`TdbKu7 z`L;c*)!(&!4--)uZ{sF0`sfFTYsxbq=%b$?_c%RIDh$}{hK>8-yD-__3kBsHYX(M*B zn@On^1s^)nv#CfRS=P3lIr++@dP{iPq|`UPes}1A1NJEcL$Cd)u~xC$9{zJ=^s2cTO`AEg9nfm=EuX!3$$~%@f`sJI+|=F36r`bSh&Il-Dt0Nx|EMfCdn@oyp7J%DsAWH zn}q4v;p)p1r6ZKMwD$LAm$FqqjERzBVXs=BxN4ndU%cj&Ztbf!ELpG$ll&s{wD z(|(-&n(e@B2WC4k+kx2*%ywY51AhW`;PUy~CosH2k#}0oW+~hi zqLnT>>Jdm|t)SpGnQT*{+|rGbrZgRJeJWqSn6HKEKeimCvYCIBsOzcMUn_HhD?19U zNjI-}BQ1wE+=-gc@@Xq-YH<>_Z(AQ!^AFSvDyr&*j#Iu_0N334fN1V`U7GzJyUR}J z${DAlG-y;_q{k}!7v&1rbQGSC9PVmkv=v9}cGB!09S+x*^9!3MosX^#f%%<$Ik2U) zoNM8xi4mvtYE_$^aMO+Gt*>Oy**RjEcFtcOyms?!&(UB5my>En1_+136YcFVP3!YJ5cS80!wbv#!ZYj?3!P+T0$z2WUw9#38@;j#>}IGO)7DB` zzp{8+thN1?-GM<~Q4adnW+hj|g>{Mn52B%ziLx2}&Z7Frin>=-6YP)Ix^V9Vu7&@F z5%2h>x$pVU{Fm()J3ZX(%KY|QQYs}q{w64fJJ)$5w`3=zyK|hm^C0^xuX)YnZXBPO zLvK}sJStxXdZ(Eg*_Bs% zJ6kGjY{~<-PHe>a{J8`lTvo3F%-vTus4i{)xKe2rm1?qzngps7D8sQG7TlqMr%SV) z_HX?(AvIT1{nUKRFz`oU^*EFcElQiVqReuD`2pBMf}-HHDo3hX)K#BsR>yF3*G&L| zs^8p6ptmv?sy-+&tJ<#;AyqYKyJ+Us%slk}rwaeDaP%uj|LW1_k5-QEKk{=&e(1;t zkDNTRd;UMqe_{Sp^N-EH-OR|ieD=J zK=EAhjfHQT+>~Fnr}h-9XP#E7M-9d>c7CATdZ1Q)pjys)y`{lwFMlZ?EoIA{jg_Sl z^ZsD8KIo2)KdINrr(Utw+ERZxyD%y}q3MH9PHUP5UCu`9OQSqn>t4)zOY4J`{DE_N zyzhx=Jxpo1x|FTOG?rq5>%*nh;rf8Df~gHxNA36O`}DafeLudz+_3)gQZMfhcq?eU zbZIT`=WA;|I~sfACk@rzwL+cd1fa+ML@U<}~aNmh;icck6iS@#}QFdd=xrHb$j0Iz0I9>vZT1UtC=t zX1%5E@*rO|KPU6{$MiUUW=fCc*xu30tKD=S?>epBhaa2LE;gn+T(*^K`6X+~SJK$d zBwMjh{%*BDxNz!G{hvKOrT;av8W~22rZl<8q_lp~sH62^9P`!NcK<_qwI80+D^{h;#`qY!!-oxL@DG@FwW0ZG73_A9u50eq(xrTDa}|xcPG?n%+0iMM>S#7M_?n|RQPWRx zo$381oi1AOaP8%LtJ*R!>}&rdEGQN=Y+Ve4_(+(i~2mPfcB30OdfUjB6_vt*?CdRy&P{?83w5d za#Ff47IWW}&T)d5)&|41p!3#0xwxZ~@6hAaJErvLFXt}}Iu`ChW-o6M-}_GJP(LxH z!(@JAemI`n==5=|yT_-rjtOnPo>&a(=3|L#t)T$fDBt?z-S-;go_nVZvYw5eU+QhF zB?ec!N3%2cOlcP1TBG1ib}Vs6ye@OJqmysf>(tw)^qQ>4*}t@Oakvtyc(%TlpSW9x z^4-_(aA9ru;&M#>#pT-DVoGnD(l(~Fd4D$<&*u4*?$YbQyQcI?mvO1bjc=2UjHznr zSoAnHrN?9uAcPAW*@f@y>B&3wICbZg9$T}r0>ojod9@be6AM#1xP?oD9zn<{Zi*kg z7e>vu>T&L^Q+mYW$1UwDf1dShkZy4JJq%XY>))m0&IvfQxeR*jm zD0}%Wx;^xkDcvT#ZZH~c?wh7GpU|aE31?HhN!N4Z(uK9Ghw3aZ4`0lC553VKAARHX2MIpD zHs~fnFW&dHZ|KAu3{ZZjJzo*43^j3yL(=%?K@sOrS0a!+!$TVmWS)r z+cZ3V+mwdso?XhP$&mNGMyL8~rgci9w>OsY>Gf!0OOM^E^_{m)X+4?C>Pl9>MVrTO znbKxcs2Gdp6ZSSCextjO>UPi3DcvSR_p{YcY;+n&G&_4_O0)jprKPRsy>(MJFH?11 zzti(m`i<%I)@#37{yTA4r}E)xor021E6=!()R8{Q`%m2_@fhZG2+~mR^w?* z#vCnK&D#%Zd;H)Z*tT{+yE6x-v<(ursBe5bx&ugCXazt?y|m$Hx- z(>rnlUdSKWr`yuLDcwf-r3?e|RH;Ecvj^Qo3DL0}5EgwWD%|nChB&!*$`CtFt+_|j zb9<&VjVt{^hLLZKChH^ken&Stv0KOT?(1|6(iyty#-)%)8@seUyK86L()gKYBO;$I zxRkGkqxI&wkM1h&Iar;-|4L^=cg&Wb&DS?BU9C=s{=e(!rwd2_x&NE}n(e@B2WC4k z+kx2*%ywY51G62N?Z9jYW;-z3f!PkscHoa^2TIS-{2zSZPR+kOfvN^8u;MT|t_%Si d8*9rapVs5lGuQ9Igb3__-*+JQI$XVw{|iRz0(1ZX literal 0 HcmV?d00001 diff --git a/e2e/docker-compose.e2e.yml b/e2e/docker-compose.e2e.yml index 8d2aec54..b0505471 100644 --- a/e2e/docker-compose.e2e.yml +++ b/e2e/docker-compose.e2e.yml @@ -213,7 +213,7 @@ services: retries: 12 start_period: 30s - # Real Sonarr, Radarr and Whisparr, restored from e2e/arr-seed by setup-test-data.sh. + # Real Sonarr, Radarr, Whisparr and Lidarr, restored from e2e/arr-seed by setup-test-data.sh. # Every run starts with the same library, API key, indexer and download client. # Regenerate the seed with `make seed-arr`. # The tags are pinned: a seed database is only valid for the version that wrote it. @@ -272,6 +272,24 @@ services: retries: 12 start_period: 30s + lidarr: + image: lscr.io/linuxserver/lidarr:3.1.6 + network_mode: host + environment: + PUID: "${E2E_PUID:-1000}" + PGID: "${E2E_PGID:-1000}" + TZ: "UTC" + volumes: + - ./test-data/lidarr-config:/config + - ./test-data/lidarr-music:/music + - ./test-data/downloads/qbittorrent:/downloads + healthcheck: + test: ["CMD-SHELL", "curl -fs -o /dev/null http://localhost:8686/ping || exit 1"] + interval: 5s + timeout: 3s + retries: 12 + start_period: 30s + # Real LazyLibrarian, restored from e2e/lazylibrarian-seed by setup-test-data.sh. # LazyLibrarian publishes no versions, so the tag names the upstream commit. # The seed database is only valid for the commit that wrote it. diff --git a/e2e/scripts/seed-arr.sh b/e2e/scripts/seed-arr.sh index a6454ad1..1e8382f3 100644 --- a/e2e/scripts/seed-arr.sh +++ b/e2e/scripts/seed-arr.sh @@ -7,7 +7,7 @@ # CI therefore needs no network and every run sees the same library. # # Needs internet: each arr reads its metadata provider. -# Stops the sonarr, radarr and whisparr containers. +# Stops the sonarr, radarr, whisparr and lidarr containers. # # Re-run it when the pinned image tags change, or when the library has to change. # @@ -21,9 +21,11 @@ COMPOSE="docker compose -f $HERE/docker-compose.e2e.yml" SONARR_URL="http://localhost:8989" RADARR_URL="http://localhost:7878" WHISPARR_URL="http://localhost:6970" +LIDARR_URL="http://localhost:8686" SONARR_API_KEY="0000000000000000000000000000e2e1" RADARR_API_KEY="0000000000000000000000000000e2e2" WHISPARR_API_KEY="0000000000000000000000000000e2e6" +LIDARR_API_KEY="0000000000000000000000000000e2e7" # The mock Torznab indexer, and qBittorrent, both on the host network. INDEXER_URL="http://127.0.0.1:9500" @@ -43,6 +45,8 @@ RADARR_TMDB_ID=911430 RADARR_SECOND_TMDB_ID=1184918 # Package Holiday (2004): a plain title, since the seed database is public. WHISPARR_TMDB_ID=1253309 +# Jeff Buckley: one studio album and a plain name. +LIDARR_MBID=e6e879c0-3d56-4f12-b3c5-3ce459661a8e log() { echo "[seed-arr] $*" @@ -134,7 +138,7 @@ wait_for_items() { log "waiting for $name" for _ in $(seq 1 90); do local count - count=$(arr_get "$url" "$api_key" "$path" | python3 -c 'import sys,json; print(len(json.load(sys.stdin)))' 2>/dev/null || echo 0) + count=$(arr_get "$url" "$api_key" "$path" | python3 -c 'import sys,json; d = json.load(sys.stdin); print(len(d["records"]) if isinstance(d, dict) else len(d))' 2>/dev/null || echo 0) if [[ "$count" -gt 0 ]]; then log "$name ready ($count)" return 0 @@ -149,9 +153,9 @@ wait_for_items() { # forceSave skips the field validation, but not the connection test. # The mock indexer has to be up and answering caps. add_indexer() { - local url="$1" api_key="$2" categories="$3" + local url="$1" api_key="$2" categories="$3" api_version="${4:-v3}" - arr_post "$url" "$api_key" '/api/v3/indexer?forceSave=true' "$(cat < /dev/null + add_indexer "$LIDARR_URL" "$LIDARR_API_KEY" '[3000]' 'v1' + add_download_client "$LIDARR_URL" "$LIDARR_API_KEY" 'musicCategory' 'lidarr' 'v1' + + log "adding the artist" + local artist + artist=$(arr_get "$LIDARR_URL" "$LIDARR_API_KEY" "/api/v1/artist/lookup?term=lidarr%3A$LIDARR_MBID" \ + | python3 -c ' +import json +import sys + +item = json.load(sys.stdin)[0] +item.update({ + "qualityProfileId": 1, + "metadataProfileId": 1, + "rootFolderPath": "/music", + "monitored": True, + "addOptions": {"monitor": "all", "searchForMissingAlbums": False}, +}) +print(json.dumps(item)) +') + arr_post "$LIDARR_URL" "$LIDARR_API_KEY" '/api/v1/artist' "$artist" > /dev/null + + wait_for_items "$LIDARR_URL" "$LIDARR_API_KEY" '/api/v1/wanted/missing' 'lidarr missing albums' +} + # Keeps the database and config.xml, drops everything the arr rebuilds on start. # Whisparr v3 names its database whisparr3.db. snapshot() { @@ -302,30 +335,36 @@ main() { write_config_xml "$TEST_DATA/sonarr-config" 8989 "$SONARR_API_KEY" 'Sonarr' write_config_xml "$TEST_DATA/radarr-config" 7878 "$RADARR_API_KEY" 'Radarr' write_config_xml "$TEST_DATA/whisparr-config" 6970 "$WHISPARR_API_KEY" 'Whisparr' + write_config_xml "$TEST_DATA/lidarr-config" 8686 "$LIDARR_API_KEY" 'Lidarr' # An arr tests the indexer and the download client before it saves them. # Both have to answer during seeding. log "starting the arrs" - $COMPOSE up -d --force-recreate wiremock-indexer qbittorrent sonarr radarr whisparr + $COMPOSE up -d --force-recreate wiremock-indexer qbittorrent sonarr radarr whisparr lidarr wait_for_arr "$SONARR_URL" 'sonarr' wait_for_arr "$RADARR_URL" 'radarr' wait_for_arr "$WHISPARR_URL" 'whisparr' + wait_for_arr "$LIDARR_URL" 'lidarr' seed_sonarr seed_radarr seed_whisparr + seed_lidarr log "stopping the arrs" - $COMPOSE stop wiremock-indexer qbittorrent sonarr radarr whisparr + $COMPOSE stop wiremock-indexer qbittorrent sonarr radarr whisparr lidarr snapshot sonarr snapshot radarr snapshot whisparr whisparr3 + snapshot lidarr # The seed is public, so it keeps the title and drops the synopsis, posters and cast. sqlite3 "$ARR_SEED/whisparr/whisparr3.db" "UPDATE MovieMetadata SET Overview = '', Images = '[]', Credits = '[]'; VACUUM;" + sqlite3 "$ARR_SEED/lidarr/lidarr.db" "UPDATE ArtistMetadata SET Overview = '', Images = '[]', Links = '[]'; UPDATE Albums SET Overview = '', Images = '[]', Links = '[]'; VACUUM;" + log "seed written to $ARR_SEED" } diff --git a/e2e/scripts/setup-test-data.sh b/e2e/scripts/setup-test-data.sh index afa29929..93c91422 100644 --- a/e2e/scripts/setup-test-data.sh +++ b/e2e/scripts/setup-test-data.sh @@ -16,13 +16,14 @@ ARR_SEED="$HERE/arr-seed" rm -rf "$TEST_DATA/torznab-src" # Media an arr imports during a run, wiped so its library always starts empty. -rm -rf "$TEST_DATA/sonarr-tv" "$TEST_DATA/radarr-movies" "$TEST_DATA/whisparr-movies" "$TEST_DATA/lazylibrarian-books" +rm -rf "$TEST_DATA/sonarr-tv" "$TEST_DATA/radarr-movies" "$TEST_DATA/whisparr-movies" "$TEST_DATA/lidarr-music" "$TEST_DATA/lazylibrarian-books" mkdir -p \ "$TEST_DATA/torznab-src" \ "$TEST_DATA/sonarr-tv" \ "$TEST_DATA/radarr-movies" \ "$TEST_DATA/whisparr-movies" \ + "$TEST_DATA/lidarr-music" \ "$TEST_DATA/lazylibrarian-books" \ "$TEST_DATA/downloads/qbittorrent" \ "$TEST_DATA/downloads/transmission" \ @@ -101,9 +102,9 @@ script = Default priority = 0 EOF -# Restore Sonarr, Radarr and Whisparr from the committed seed. +# Restore Sonarr, Radarr, Whisparr and Lidarr from the committed seed. # The arrs write to /config on every start, so the run gets a throwaway copy. -for arr in sonarr radarr whisparr; do +for arr in sonarr radarr whisparr lidarr; do if [[ -d "$ARR_SEED/$arr" ]]; then rm -rf "$TEST_DATA/$arr-config" cp -R "$ARR_SEED/$arr" "$TEST_DATA/$arr-config" diff --git a/e2e/tests/helpers/live-arr.ts b/e2e/tests/helpers/live-arr.ts index 81763023..63d0a85b 100644 --- a/e2e/tests/helpers/live-arr.ts +++ b/e2e/tests/helpers/live-arr.ts @@ -2,7 +2,7 @@ import { TEST_CONFIG } from './test-config'; import { WireMockClient } from './mocks/wiremock-client'; /** - * Direct access to the real Sonarr, Radarr and Whisparr v3 containers. + * Direct access to the real Sonarr, Radarr, Whisparr v3 and Lidarr containers. * * The specs drive Cleanuparr through its own API, like every other spec. * This is the other side of the contract: what the arr itself ended up with. @@ -18,6 +18,8 @@ export interface LiveArrQueueRecord { seriesId?: number; seasonNumber?: number; movieId?: number; + artistId?: number; + albumId?: number; } export interface LiveArrCommand { @@ -32,6 +34,7 @@ export class LiveArr { readonly url: string, private readonly apiKey: string, private readonly queueQuery: string, + readonly apiVersion: string = 'v3', ) {} get(path: string): Promise { @@ -52,14 +55,14 @@ export class LiveArr { /** Creates the tag if the arr does not have it yet, and returns its id. */ async ensureTag(label: string): Promise { - const tags = await this.get>('/api/v3/tag'); + const tags = await this.get>(`/api/${this.apiVersion}/tag`); const existing = tags.find((tag) => tag.label === label); if (existing) { return existing.id; } - return (await this.post<{ id: number }>('/api/v3/tag', { label })).id; + return (await this.post<{ id: number }>(`/api/${this.apiVersion}/tag`, { label })).id; } private async request(path: string, init?: RequestInit): Promise { @@ -83,19 +86,19 @@ export class LiveArr { } async queuePage(page = 1): Promise<{ records?: LiveArrQueueRecord[]; totalRecords: number }> { - return (await this.request(`/api/v3/queue?page=${page}&pageSize=200&${this.queueQuery}`)) as { + return (await this.request(`/api/${this.apiVersion}/queue?page=${page}&pageSize=200&${this.queueQuery}`)) as { records?: LiveArrQueueRecord[]; totalRecords: number; }; } async commands(): Promise { - return (await this.request('/api/v3/command')) as LiveArrCommand[]; + return (await this.request(`/api/${this.apiVersion}/command`)) as LiveArrCommand[]; } /** The arr only queues a grab on its own refresh, which runs once a minute. */ async refreshMonitoredDownloads(): Promise { - await this.request('/api/v3/command', { + await this.request(`/api/${this.apiVersion}/command`, { method: 'POST', body: JSON.stringify({ name: 'RefreshMonitoredDownloads' }), }); @@ -105,7 +108,7 @@ export class LiveArr { async clearQueue(): Promise { for (const record of await this.queue()) { await this.request( - `/api/v3/queue/${record.id}?removeFromClient=true&blocklist=false&skipRedownload=true`, + `/api/${this.apiVersion}/queue/${record.id}?removeFromClient=true&blocklist=false&skipRedownload=true`, { method: 'DELETE' }, ); } @@ -147,5 +150,12 @@ export const liveWhisparr = new LiveArr( 'includeUnknownMovieItems=true&includeMovie=true', ); +export const liveLidarr = new LiveArr( + TEST_CONFIG.liveArr.lidarrUrl, + TEST_CONFIG.liveArr.lidarrApiKey, + 'includeUnknownArtistItems=true&includeArtist=true&includeAlbum=true', + 'v1', +); + /** The fake Torznab indexer, kept out of MockServers: other suites lack its container. */ export const indexerMock = new WireMockClient(TEST_CONFIG.mocks.indexerAdminUrl); diff --git a/e2e/tests/helpers/mocks/torznab-stubs.ts b/e2e/tests/helpers/mocks/torznab-stubs.ts index acbf3d78..e6de149e 100644 --- a/e2e/tests/helpers/mocks/torznab-stubs.ts +++ b/e2e/tests/helpers/mocks/torznab-stubs.ts @@ -10,13 +10,14 @@ import type { Mapping } from './wiremock-client'; * A test adds the release it wants grabbed, plus the torrent that release points at. */ -/** Torznab search mode. Sonarr sends `tvsearch`, Radarr sends `movie`. */ -export type TorznabSearchMode = 'tvsearch' | 'movie' | 'search'; +/** Torznab search mode. Sonarr sends `tvsearch`, Radarr sends `movie`, Lidarr sends `music`. */ +export type TorznabSearchMode = 'tvsearch' | 'movie' | 'music' | 'search'; /** Torznab category. The seeded arrs are configured for the parent categories. */ export const TORZNAB_TV_CATEGORY = 5040; export const TORZNAB_MOVIE_CATEGORY = 2040; export const TORZNAB_XXX_CATEGORY = 6040; +export const TORZNAB_AUDIO_CATEGORY = 3040; /** * The advertised release size. @@ -120,6 +121,11 @@ export interface GrabbableRelease { mappings: Mapping[]; } +/** Keeps the link path free of characters the arr would percent-encode, which WireMock matches raw. */ +function torrentFile(title: string): string { + return `${title.replace(/[^A-Za-z0-9.-]/g, '.')}.torrent`; +} + /** * Builds a release the arr can grab: a torrent, a search hit, a download link. * @@ -131,7 +137,7 @@ export function grabbableRelease( title: string, category: number, ): GrabbableRelease { - const file = `${title}.torrent`; + const file = torrentFile(title); const torrent = buildSingleFileTorrent(TORRENT_SOURCE_DIR, title, 32_768, 'http://127.0.0.1:6969/announce'); return { @@ -162,7 +168,7 @@ export function grabbableReleases( mappings: [ torznabSearchStub( mode, - built.map((entry) => ({ title: entry.title, category, file: `${entry.title}.torrent` })), + built.map((entry) => ({ title: entry.title, category, file: torrentFile(entry.title) })), ), // Index 1 of each release's mappings is its own torrent stub. ...built.map((entry) => entry.release.mappings[1]), diff --git a/e2e/tests/helpers/seeker-live.ts b/e2e/tests/helpers/seeker-live.ts index 4d2204b5..e45284da 100644 --- a/e2e/tests/helpers/seeker-live.ts +++ b/e2e/tests/helpers/seeker-live.ts @@ -6,9 +6,14 @@ import { buildSingleFileTorrent } from './torrent-fixtures'; import type { CleanuparrApi } from './api'; import { buildDownloadClientPayload } from './api/download-client'; import type { ArrType } from './api/arr'; -import { LiveArr, indexerMock, liveRadarr, liveSonarr, liveWhisparr } from './live-arr'; +import { LiveArr, indexerMock, liveLidarr, liveRadarr, liveSonarr, liveWhisparr } from './live-arr'; import { QBittorrentDriver } from './torrent-clients/qbittorrent'; -import { TORZNAB_MOVIE_CATEGORY, TORZNAB_TV_CATEGORY, TORZNAB_XXX_CATEGORY } from './mocks/torznab-stubs'; +import { + TORZNAB_AUDIO_CATEGORY, + TORZNAB_MOVIE_CATEGORY, + TORZNAB_TV_CATEGORY, + TORZNAB_XXX_CATEGORY, +} from './mocks/torznab-stubs'; import { mkdirShared, writeFileShared } from './shared-volume'; /** @@ -54,13 +59,13 @@ export interface SeededArr { url: string; apiKey: string; version: number; - searchMode: 'tvsearch' | 'movie'; + searchMode: 'tvsearch' | 'movie' | 'music'; category: number; release: string; /** Id of the seeded library item, which is always 1 in a freshly restored seed. */ itemId: number; /** The arr endpoint holding that item. */ - itemPath: 'series' | 'movie'; + itemPath: 'series' | 'movie' | 'artist'; /** Title the seed gave that item. */ seededTitle: string; /** Download client category the arr grabs into, set by the seed. */ @@ -112,6 +117,21 @@ export const WHISPARR: SeededArr = { downloadCategory: 'whisparr', }; +export const LIDARR: SeededArr = { + type: 'lidarr', + arr: liveLidarr, + url: TEST_CONFIG.liveArr.lidarrUrl, + apiKey: TEST_CONFIG.liveArr.lidarrApiKey, + version: 3, + searchMode: 'music', + category: TORZNAB_AUDIO_CATEGORY, + release: `${TEST_CONFIG.liveArr.seededArtistName} - ${TEST_CONFIG.liveArr.seededAlbumTitle} (1994) [FLAC]-E2E${RUN_TAG}`, + itemId: 1, + itemPath: 'artist', + seededTitle: TEST_CONFIG.liveArr.seededArtistName, + downloadCategory: 'lidarr', +}; + export const qbittorrent = new QBittorrentDriver(); /** Outside the qBittorrent save path, so a decoy download never finds its data. */ @@ -259,7 +279,7 @@ export async function teardownInstances(api: CleanuparrApi): Promise { * A spec takes this in its setup and restores it in its teardown. */ export async function snapshotLibrary(target: SeededArr): Promise>> { - return target.arr.get>>(`/api/v3/${target.itemPath}`); + return target.arr.get>>(`/api/${target.arr.apiVersion}/${target.itemPath}`); } /** @@ -271,7 +291,7 @@ export async function snapshotLibrary(target: SeededArr): Promise>): Promise { for (const item of snapshot) { - await target.arr.put(`/api/v3/${target.itemPath}/${item.id}`, item); + await target.arr.put(`/api/${target.arr.apiVersion}/${target.itemPath}/${item.id}`, item); } const restored = await snapshotLibrary(target); @@ -311,8 +331,18 @@ export async function waitForArrQueue(arr: LiveArr, downloadId: string, timeoutM */ export async function resetDownloads(): Promise { await qbittorrent.clearAllTorrents(); - await Promise.all([liveSonarr.clearQueue(), liveRadarr.clearQueue(), liveWhisparr.clearQueue()]); - await Promise.all([waitForEmptyQueue(liveSonarr), waitForEmptyQueue(liveRadarr), waitForEmptyQueue(liveWhisparr)]); + await Promise.all([ + liveSonarr.clearQueue(), + liveRadarr.clearQueue(), + liveWhisparr.clearQueue(), + liveLidarr.clearQueue(), + ]); + await Promise.all([ + waitForEmptyQueue(liveSonarr), + waitForEmptyQueue(liveRadarr), + waitForEmptyQueue(liveWhisparr), + waitForEmptyQueue(liveLidarr), + ]); } async function waitForEmptyQueue(arr: LiveArr, timeoutMs = 120_000): Promise { diff --git a/e2e/tests/helpers/test-config.ts b/e2e/tests/helpers/test-config.ts index 63c1539d..3d7668f9 100644 --- a/e2e/tests/helpers/test-config.ts +++ b/e2e/tests/helpers/test-config.ts @@ -26,7 +26,7 @@ export const TEST_CONFIG = { indexerAdminUrl: 'http://localhost:9500/__admin', }, - // The real Sonarr, Radarr and Whisparr v3 containers. + // The real Sonarr, Radarr, Whisparr v3 and Lidarr containers. // Their api keys come from the committed seed in e2e/arr-seed. liveArr: { sonarrUrl: 'http://localhost:8989', @@ -38,6 +38,10 @@ export const TEST_CONFIG = { whisparrUrl: 'http://localhost:6970', whisparrApiKey: '0000000000000000000000000000e2e6', seededWhisparrTitle: 'Package Holiday', + lidarrUrl: 'http://localhost:8686', + lidarrApiKey: '0000000000000000000000000000e2e7', + seededArtistName: 'Jeff Buckley', + seededAlbumTitle: 'Grace', }, // Real qBittorrent container: the API key seeded into diff --git a/e2e/wiremock-indexer/__files/torznab-caps.xml b/e2e/wiremock-indexer/__files/torznab-caps.xml index 33ad55cb..c8dc4fb0 100644 --- a/e2e/wiremock-indexer/__files/torznab-caps.xml +++ b/e2e/wiremock-indexer/__files/torznab-caps.xml @@ -6,14 +6,18 @@ - - + + + + + +