From 711d4ef9dc7ac20f84ccd660dcb57856c05f870c Mon Sep 17 00:00:00 2001 From: feger <marc.feger@hhu.de> Date: Thu, 30 Jan 2020 17:42:48 +0100 Subject: [PATCH] Refactor --- recommender.tex | 2 +- submission.pdf | Bin 454556 -> 454569 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/recommender.tex b/recommender.tex index b7079d9..7e46978 100644 --- a/recommender.tex +++ b/recommender.tex @@ -29,7 +29,7 @@ In the following, the four most classical \textit{matrix-factorization} approach The first and easiest way to solve \textit{matrix-factorization} is to connect the \textit{feature vectors} of the \textit{users} and the \textit{items} using the \textit{inner product}. The result is the \textit{user-item interaction}. In addition, the \textit{error} should be as small as possible. Therefore, $min_{p_u, q_i}{\sum_{(u,i) \in \mathcal{B}} (r_{ui} - \hat{r}_{ui})^{2}}$ is defined as an associated \textit{minimization problem} \citep{Kor09}. \subsubsection{Regulated Matrix-Factorization}\label{subsec:rmf} -This problem extends the \textit{basic matrix-factorization} by a \textit{regulation factor} $\lambda$ in the corresponding \textit{minimization problem}. Since $\mathcal{R}$ is thinly occupied, the effect of \textit{overfitting} may occur due to learning from the few known values. The problem with \textit{overfitting} is that the generated \textit{ratings} are too tight. To counteract this, the magnitudes of the previous vectors are taken into account. High magnitudes are punished by a factor $\lambda(\lVert q_i \rVert^2 + \lVert p_u \lVert^2)$ in the \textit{minimization problem}. Overall, the \textit{minimization problem} $min_{p_u, q_i}{\sum_{(u,i) \in \mathcal{B}} (r_{ui} - \hat{r}_{ui})^{2}} + \lambda(\lVert q_i \lVert^2 + \lVert p_u \lVert^2)$ is to be solved. +This problem extends the \textit{basic matrix-factorization} by a \textit{regulation factor} $\lambda$ in the corresponding \textit{minimization problem}. Since $\mathcal{R}$ is thinly occupied, the effect of \textit{overfitting} may occur due to learning from the few known values. The problem with \textit{overfitting} is that the generated \textit{ratings} are too tight. To counteract this, the magnitudes of the previous vectors are taken into account. High magnitudes are punished by the factor $\lambda(\lVert q_i \rVert^2 + \lVert p_u \lVert^2)$ in the \textit{minimization problem}. Overall, the \textit{minimization problem} $min_{p_u, q_i}{\sum_{(u,i) \in \mathcal{B}} (r_{ui} - \hat{r}_{ui})^{2}} + \lambda(\lVert q_i \lVert^2 + \lVert p_u \lVert^2)$ is to be solved. The idea is that especially large entries in $q_i$ or $p_u$ cause $\lVert q_i \rVert, \lVert p_u \rVert$ to become larger. Accordingly, $\lVert q_i \rVert$ and $\lVert p_u \rVert$ increases the larger its entries become. This value is then additionally punished by squaring it. Small values are rewarded and large values are penalized. Additionally the influence of this value can be regulated by $\lambda$ \citep{Kor09}. \subsubsection{Weighted Regulated Matrix-Factorization} diff --git a/submission.pdf b/submission.pdf index 3cf9ec050d0d9bc343351c26dd1ab4167b8ed524..d1069448e38f245ae380fe82dfd6fa922d86cea7 100644 GIT binary patch delta 10154 zcmbPpUwY+z=?xPfFqvCSH{fGYtv_oU-5+N;@%>NHzcV<VuF-!wds*j{FFxxZaJKE? zeZ#D9VZ)g&$L<UNey`osU;Ad$`HzL_DFRYff4`>hjtSMfe)rMC^Zbt<+Q--a`0>hq zo~ez;PS)fl)jxhLXYZ^R{PBN**<!gpB|p^ve)!nl{$8&2LKw&6R)%JK)_*mJ=9~Q$ zum8XHgZ<BUYm4~y>$3hmec9rd-h=xE0yqAw<oY3f_M6>blV@`o|HRllmlUasKea_K z;@9`x_iO*CGV01NxzTjszo|p?{>Fy^tJi<O`jqc4UuUJ(giCj<*86PmoNVW5|9I8? znwqbVwfp4uN`C*)E+1F>-TLDP_dlog<&P|DuK$t#r~V#4|Bh$Nwj8bh|Mj8y`ntbf zCM)c3vgRr6V1Hg9{^-Wh%YD&;AIu*Y$jfu&f8liGQG6&r?{fV_vG?V>PP9DTVZU_u z$Awb)LaLvvlKxLw@#a+d+kJdnzVy#${+qj8SSfvr^U|+sbDu?<%=Eo;PK)Iid(sk? zxH-4p)rVg#-)DC$v_7Zeq*m0<vn>Z4J1)QYYri?UB;M>{cUg47yvkn(7M;F-)A6n& z%jVC&8V|S4OPzE3dbO9tv@g92I{t0AtWkgY&6l$VJGQLy*pV-JHS)%m#-<ltzoLH4 zUBsCydPj2JkF^|6Kkw_VX-YX8|1)}G&%X%OM;BE0EWOGVe=L7W;rsFxM)m5l^)DZo zMwS_rd1SM=&E|elKC9>0k<yY@?%n^Vu#0BIyC`!6%)KbPe8c6dp}T9XKKLvT)ZVuL zbaC>MyG@&wi`*0zDjj#6#%L|Eu`-eC^6poE4t(9Yv8*_*+&JZ7;wBGSLF3MAn+}~+ zTk0gCTjK3wQ4)X6Ah2M;gA#9}C9j+6^?z)U|7uY<$7D;p@xR+C$4>n={+95&;;zm6 z<9270XT49`D6q;ow!7=g+7l1h|0%^}dM`M3>Fi5i&g(fZzqXrO-%GSP_WJBgvG?oi z|2?akn_$MeQ1<ik*QEk~&T?)$mmiq*=5UFHBwIAYZNA^f!}ITXWyjasM+UW>eYp0_ z^eNZtcQdm}vwzVS*7z7D=(jET-@NI9{3kN`Slx_W7XK3c5a4uU3GeS?`{p;WRb8HQ z;1#do&DZ(=|D>%_%{+Ot_WIgQO_M|pKjd4?;<#X<?CA%wfs^z8bDmA9)Va6StfYCW zrAeoX-lxQi;#`ft&Tt*vr+=k&?nKvzYp<$IzPiL>>B=efO4@S#qQ>)Xe~CSB_H4D` zvY5&Zs}~hcE4p_1{@aCDmTKoOis0PL_#w6?a4(m?xyN}&jYC&jswQ(5PEFA-FX~=4 z`}^W=S;CIx-R)gsdaHMshU#DG%wA?#amRIgf=XmWtDMcfcdMM|t_<y$Hkddm!N<R` z&o=+CsDB%;+<K9#0`(@V7bWpc4VIqem@{e9)~NO?8yIGX{8)I!`Gr=Q(%zK$JHp<S z$K9CuHp=ru#pQ($(zqwSOJC#~+Re50Z1QUJG}nd-tG}l6JO1uA|K43xC~P-J$>^== zs`)_$TB$N3Z$g&2=rZTcFHJY+&FT=Iu+?r(S&h4Vo9ekOlkDECh|dhF-yK#}+f{o* zX9nL&^{zX8F2R>~1)aLF@#BV@hs6ae9aFR|qfTW^3^#s|Z?<`5(zUIYITDc@sy@W7 z_7ih_*X>)eYO9BT7oW+2eg7W*{=f4|^pp!4>jZwTFy|_gySQNgQ$>yTf(~cPD?A@( z^Hg+r_^pn;yfe<_(UXJQx@*2Z{;E~K;;p6#XWXK?&Fh1%Xd2svWfcFYSo2}|y{jwZ zQ<q-iQM|l?ah3lT9*z4eH>&@>xP<9v*%kYJzy4Ke7H~{`J5B4=YPmk6qRG2tm#CRF zZ0bl$jdGju`q`;ny#KS?W3%^i>9f3){C;LjTx-qa=En~>4R3}v__{6$Km0Fy)6xYK ztFP5>Yk727vwqW3<JH~^9QsqT4E6LaogUv^$8+&ye%Put|Kh!~J<nbAQxZL^b87CJ zcCD<ur^=EiS1t)P*?-e3_v|F@tp1ZO%N9pY+IEf0?_iDeqagRYjk$Thy=orCRvebt zz~?_fBTwvOqIs6bVb>QYd#0Y~tyfoWul@Em@k_(qlzRJ_zm|z!Y`<+|X_}Q?U(V8} zqow(QP37cShuS*96+%xp3rss7Hs|4&`<Es7)?Qd*EGy%`x^1cJ%G5d5raEV*CZ1%= zE@qK9#d>ekBmcCFD3=?FHPgNKm`*;oQ+)qJ<MlNwOe`yRL|va!<Eb>KnN|7pofiF^ zASFh#4|xpHCbK8kue2@H%DSQ~qp5vX=2@3xR$@|7%hLPTx2C!B8F`l<+NkGMo~kA% z#W;KVy!RIFJU-%#Mhmws=G|;t^3+oHr|bDWXAh}GFFtzHMZnweQq#wGhE8T5+qw2L zU(Rui@D6cN&6Izubdl#`B7d~lgxpdwzbibPOIS@m@BQ~}R??*fO7&jP61fj2J~4I6 zZF_3D@x#CCHHq(@DJ@j4?(N7qY4gcOW>U|@iq!p+*L^Fyk(2l8uxeqgN5G%S>@$MB zW%(wZ2!FWYe%PNkw_46x-}Tk!lfS{K*7Y?`r!4;Qlo-$7_tP0yeOViDvn}aC(FwQM zdtWr#l1|F!^3DD{`|h%Phu3NH)IX71z2abTo2~3=3A3U}yZJ87;6Ay(elhPt-@Q#< zQhcADFIsK1;^7WH#hG7)cT{$7Fi!oQd9&gq>x8x0kJf$baId|blDKIt-(jcX^;7xE zij7LDvmdp*+qjEAWb^jrweG(~V<-QSU1i+=wLxj$->K!xobO(Cy>Xpo%imQ$s%ldi z>O<1?A323R`Ch8AyT*FADdVxtR}Wqa==@POt@}dmFE`;Z`)f@lr@FTB+?g&Kdn&a} z$x*^@@oSa18Lymu7fpYd!m!%z+UYAN`DU#sWV-U|^uGP&`JK8^HTzs1-r(%#+GxM# z<f8mJN00w`w)fd$zVKr|W|>sH)w<pH>wWg>TMM3iuYcPiub-Q>T65uXi*BYfhT(ly z+yT{Vj|KGhX0|WuK3+Rvf5+`h>Kw}YYf_|t-ZYK5_h9Mr=^I+B@*lkTbz5~;Kn&vz zvH1Tx+PZZ-`0H2`gLe2XZrajhs2SMla<}R8j5#ktS7>XP1ien2s-^R{>vIf~R_4JE zC&Oa7FV%N#TlJxS!$T99jwcs-Z)xqH_R!;17iUb8s)N%!rRV#vO!H5fWU|9zvWW3_ zqm0d#MIWy1sd*dccEY@cqkX}?#ZP4a8!;T=aN2z8$bKHTJf@Hsw>u>U&5dV|DmR;5 zwPiQH!7`~(!1qKoU)qMm?mMBpvwluL82CrIL_7BP^n<H)T}(n2r`7YNab(=gDzCaa zr!ascqifsZb#phenVQ*z`iS_w<5QmKHHq20SYNvJm%g;=M?L9OGws8d+P2)_nUnj1 z$E4SMx6$&T@-zHxZ{kf>gg@E6P~zwhr#;s~bpA0!Tn)JuSZ+GC>WZ!JQn^C!;Eg8J z<1dA{1;l1+SzLOP^*7dcY21_gWy>}-tX;G6iu1cnEz^DPvb4SnhM7!d?Gg2D{dj}d zmvu^ZTWHz_o^_wXmfSDmsQe#2{dMt@=~<~W<|oX5xRUFp!{5x^X}MMJ@2{NGd{gT5 z!da7?{)O!O8xv{u-k9avM&AzIljruu)nC85?(Pyh);95Tv-wn(Jo#~C?yS!htC}Cx zo9s#rf7s4Y)OytOEoar4N6R-dPEm?0^V#zJs(hy0b-ptzatjjF-6gI&2+a@`YH(#e zv5s?Z#3IJ*O%ijC@!u@lH*3vfn?(w1);>-QW}24avr;+T#g185;TF@JhO$XlR71{4 zKbT`ZL4E3VXOXbP>3VUCQ#ew;z49y9I%c>#mZ|<@eAn*~9)5L^l@GrpPc12WmFk{r zyXC+c4Hq$)EUC9Mvel-xJ({bhrE#kz+D9ueaY4;P!wmIL@|urd{4uyAmsx(@Tj~A6 zZQI&-Q}#KW3Gd(eEZpXy=YcCXW_-}TBsEoUYYVUHiR<!KIW}K8|EM0=abGH`^xlst z6$Z~P{r!E^yFUH&cm2F&wP!x;dD6sZ+i`l?%<BF+=A$3?TA8lC^Jue)MHw@{-+Hsa zmNZF&&*sNIEqs*Uv;XL9`CCOhto#-|dS_fBD1Ye*lf%4y)6!(zEKj}KI^E=4?4KiR zS~?wL)z_-cV4HP<hv}~40y+M(%MVt5YrL{6{FCVVK;8G7zD-;%Tc4`a&U`8H#1)Mz zWzD%oQvE+t^~z7mRX*Q6!{KMifwk4kI@bzS1Z_LH!zy)_{l?<!rEXKXW~*86ymg~D zVuzFPHO|u?KORbvX+3e3Lt*w?<J89iY%{LNuF&^Bc9AJS@wLQ5H>19=70Hn|4{n^( z;~dp)cmC+c@SPTKBmUZ{s=9BhPYg7i)>Yj7@{j+dEzWxS{8a(6MK7DTdU!msG`qED z{({4I?3!QBjyF<0{$j<uO}egz4^}hnoYeJ1zS8V$ExXw~O?KID|8zex9m@|Z?-5!* zF~YFsz0}Om##v`0%csxpllVSWzVFX5Es^~8E5g+*{M#>`T`_S}^`<3@A8oy`mh*aj z_OZ8o({;Amw7IviPnBaYpRw%TsglBH4||^Oes1_IZ5#jMnOr{)KRkSLSHzW-mwsfb z?5f!;BD2)w&ZnOS*Xkn5td7lmf69<yi}{wPDiMBXP3O;>)vcyE>-)0vIT`QX&E_ne zx^9Yw%|=JnTcOJs6Q#~h5?i0NW%~(Z<<0XSSj|$cUwe1SqP4GlPeor9x^&W4<N7+I z&NR<G>s2pZ3CP;JPxQ<rIbJ6r$q<I5_eVAb^gC`neI&Gp$2>XGNX@^k?8=r1r#F`- z>Y8d!bEpozQFdWVL{rxJo?OX?ZW~*SR$TvCc4NsV2kw;CX=^S=aVjWP^4;AM#$>qQ z$A-wYEfZ&7&daQKKbALbetV>eccd2Mb=gDf7e{g}o%+RPS%cTNy%G(#v~SOvs`gRm z>D{&&4=$WliVDd{S{nImk;6o@<Ly(cf3HcHZ`3XO_-5y9&&Tain|podd|t6gLoxc3 zpTsl~+s9WWwoEpX(7MpyQ$Byo4q=<Rs?IGZxOVVfRg_k<UX-Ew!?Zp{`Pi0(2eH4u zXso}+swbzmAo6l@VpEQ~8F%-Ivb4+pz8sj>ni+6;@g@1Pllw0`xqk213eDNR^|9gQ z`%c_pf1AWI{qRqt>iJPt6<1c>$m!ktKar>1Rrut$0-f8x7ksq2`FS1RyHgL+o2RbK z+W*EszJOUM>7NT5{|WimS-QVpFRpLz4J&1y|He@}a%aI0x$l;FDc8OCsJ{G^_3+1{ zFzX!=UB?_O=3I;Q`_{-79QpMoPvxom8lFE`7v6l)6;iKve{*}Qz}@xdzgit#A|LiJ zr0?zW*j9am!zL!BOfL)8n|!~Z>OD7mMX>kNit|4-)`hSYn{3*%zGsch;og-s?b)+> z>c!+&O<I?<$}W6cpqYO2i`!;z=g+z&V><P)MaQwH(Nnc|Y$_`gp1w`xW~*M-^8$fA z*DlK+oP0^pdxGYwRZYFJ`*K{S-_M&lPfB0trM1ur$MF6f=ieVBt7QX@g@rUpFx>p` z?X|3_iB?a*&wR1pH4E0Zhq26WDGdu=5H6IW8nv>1+w799*V~U&8@|YEepESa-s<F@ z+4-LRzf-mfPP7c^GGc0eV;0`NKj&)f!IoW*m+lQrOTJh#=~X=I{;(CIoG%`%_nH?} z+4!ul$N2oJgWb2kaGcyww_?{k+l|jAWD3U4-M343;hxKu?nkz<DF1t!`}k7QqEGsE zp)1bJZHfr=k}|BH^7xAE+3<g>y)I2V^15Psht^e_zt`?bJlgnntKjL)Q`S5=^lxtD zY3q<X8tQWx*?PH5EsM|PUn{Sk?R5W+;_fGXKf;7(h;G$B+-k>|_KNYLC{Lo^kM;R0 zWz&iae*c^6dCG?CotD+av`MZTrbZr7Y`K}W??P!nN62T-wTT^_lPl`yf2@7HOQt}3 z>K4b~`rBFIHYNLu)(0Kk&$TT&WrAejt*TS2_)eK*x#zLJ$(!cn(K~(Dvu^j7((1Xl z*0Wl^a-VH?mM`{flOuZt^V}(kT(cxC=e~8B#wL1H;`XUinF~rB+4s$EVwXSEv;Gp_ zf~$9Ps<qx-33{}r;$h2cThm~}WA&`k#*6BhyxkY+X03gy;Bs!$x_8TR4xc?2vf|{r zFE1yR39H;<vv}aU`SZc8|5|x{rmE+sKIj(Z^AJ9Lr&#~{Azj4@S~In3x4(3oqhD(H zf+M+qN8Z$5lfn$X=5IGmer#S)wnOyV`P}$Ft$*)$%s1bbere75+m1c6Hg3N*d)1{4 zck1JQ$aY^mx^`L9L!0w=+tL~%CoMh@`$Ayu?67;MTBmJPZhLrphxDPT851P$CM8a* z<`9`XiFd-}nvBjXj8`98mEQeq8O<`|UijCE*BAWybnE2F(2bLskDu;}TbvuT=BCI} z$(9wlxzV3}E^}Yr#`(`Z`9X~5y7+0+x+5-{ZwV5}_*CEYTH>!$+uNT1Op<IND=r1k zdbnoa(KnTkj{kdWrTKQvypE{Sz&DMTcHCW?alP)>Yr)BE`}M;30&1K^_RSZ~`*~LK z_PS4>vv<t7F(o<r=U>$XzNGuFRS($oO<We6DrCE`q+I-#qH&>{6noSjsq+{0qV4vr zbS>bBULeiCK9YM4Oa14NHBmB$9p-!JOkrJM*_Ku`wTbD1&Sd$m9-aK}D-R#*Tw;2q zExmP}kf@n^`RxfCma{E6;yCSa?39kB$L35iTIXYay^F{7miI;9!YvDST>k3$@MD_$ zqWo!AFLOL@E`Jl^Ytc}(<rbsb>zFi-_Q&P7c5pfHo_zFfYJB#dKAGt}^_#sk1vH*A z#hX3lS$XBalW$X333gsN_e%JNBl{J}Is2ZSyPc)oGTZWWNad5KlLD3=Qs(FmntG~Z z#qB3ud(2m;WgX31be}6#-MpJ)cHst<gS=nQU(aLZbvwvr)Z_X*bL%FTE3Kv%0#<Gb z(`{r+(R1X!^~6Sk!!!Ebxx)tx4s^TKH_3mU;9hmL?(!OS&U4!*ODi(*opmyOdR}GE zC+XO`x)tr)eb@fz4R8#+8`iyUrI!BP;*Z-79`OFYZy&?cm)VZz${XbM!oJ=JS>iM2 zi_%Y-n<<ys0-tAEc)ge=a{bi;v8>5QyqL^_KmA&E((p>|jEOOOD_5_byLH*+Ss`Y} z%Vl!wH5Ps^-%<48%!a&6NAH(yo@_Gpq}R3^J_$jWS*^bE+NpgCa?}aSoi_7?x5DZ( zbLY?6%%+&q|HH6k`P1zh$9*1XcScU;UZr4i`nXigneJ!qAD7Ac^IG;8db4m}iNC#7 zW9Cg`i@j5;IulA>2Q<ErI+&ErdugBBg}L9_Cm7Dmo0w34Mcr9ytJj92=_Tx&_Irl} ze4M#y&elx{<_l~)?q{dXNIrk_#_86mb!@BiR_>l>70<?}86uk*{9_r{nxi^jf5*-a znCr&&oO{m)vx!@_Cj2aUYGzpW)a>Bw8<qAgYv0}ZKX0$uG=UG7mbF}YA9CWg>>a)J z7ujZRIQ*`wcZsgnqD6D-la86(+QoaGF@Bn!s<g2CmfUX6S-Z{$PW`!ZJ6pbZu6RG= z-jgn(T4yb1tms&fe0oOxO-lo%)<nC@mI@D3t1DLfn5lKftf&^eZ=;}Q8*!a)-Qw<@ zNiSbi1Zf?JudrFNEXU*Ib)8#Eced<V`H!jBa^FYR!?Rs@uj+>w`|SNxAzPpQ{>GwO z$6X)IOM+iXh)TKm<dwA^a#%RkSB_`GuX)><6}~N&TCh^9B<s`Tb6kJb&vstS3ze1M zwe9YUPsO2aOzOWTMZVi_*P1qSdh_I>BD?IgJ-c-E`VK$oQ9dUU<#*jZv8X9fM2fej z@8REqsr9SZ+`RQ&X*J)O?942=6@OODt^aW3Q^*2)*KmdF+8@jIhRl{R+r9X~F<IB6 z?m^eBXUz@v%+u^RzqNvUy9)Q-F6Xs3qqf|&SeCsdFzz_pnYTvstGq<B&Rp6)S#I3} z(H|=!n(j4aKHP1w`1com&diG^1AlS7vi>g6dZbla@Lk$0-U`o)Q_fc~@Uo^oxW*}? zA=EanUV8fcRr@O>vk%_L(LAhtMN;nEopT=|jJ!X*S-AEjV}xE?>HHub@2$DV${e=z z+WK6+aX7|Cy68&A46EkDGnYnR$hr4bVQq>N=bWY~3m9`%b&l=n7k?UF#<)V%d#(M% zUChtipNh0R+Ietw$@1+Jn;veKU4Q(=KDDYxfqb)<y$uttKbJkrv@2-RDUtY1-@<&2 z1L}9LNVk&Cn`+YR-g;wO_ZhEQyhpU+qK?g|Rz2Ic%jbc>hKwTz*Un1wUdYg~+9Un_ zH52QttdHJSU0Jg%vPw4gSk21Uv(jGX@*Ff-oaTDg=)&Uz7m5z`7KJpv$<49O31ZTT z*|a|El;7%EE2TYL;+gC3ZCNEL%5k{;?5bIz9sd05ayq>pc*M)(z2q^=@>B_F|L7TN zY^e1!H=~3v>Flamy>6m*TeQ!vn)Pwk<yFo<wyd(0>kHPiTC8VU^&}}H$iTa-^VyQU ze)@q|o?kRD@|`bNGW%*B&n?c*70#I#vQ@Y`%pV?Cv0D3*Z{xCR*6ff4^=AcbR~m&e z<@Oz@sAihENklc~K;#+TlI$GcpS%ipgrc(@q>T(N)YbD!1w8oEGDqFwwDXI7+WFV~ z%bevnH}8;s{b=)C?cEDY<ehFE%KId+>L_!y_B&^PmS(=?hu&^sipja=z3#yhJFmR! z46nCU2R2rnpEuiZSLTP!Ne>zJCcmgJS-$@6E32jYoA0_uEo^#L+I@a5um4P?TOU({ z)H42mnQD>0tYWQ8RMwo_*{REBW_{T=srzP}*R5*KGCuyvugZ$83oUn?UE}C^$~UAW zTVwxxbBE9*o~4-vwz<xcucn{MzLk`9@tL8o?1RkNTp^RE<`^2~1}jcV-Y;kTk~8VT zs(NPYV~->=o~%vWGOsC3@nm1snefeJ5*jPM-ZGkE>z#PA>dX@^*OhE4A#Qi-*dk4q zKV;eRImObquzlM1pldZ5_fo~1w=J~ZeskB6=XbZ1?|9(gH;H3{*OZ4gc0bc^RwONc zCfTzoKd{SZ@~42cpYmR^G%v3a{2l4{!Qshi5tG!=`r4&a=W4(G`}^BEyWgpQGG+gL zyl!-TMd3Tw=7{sbVX=1&7v9-;F8*hEziH0x3H_CsMm>sCzdhl)^<rj8-qGJKoIJan z-)B}F*y&&37&Nc{m3Z|_>x*nZdul4*=FDGds;gA9xui^DjsEM<<diD$iD%0eo3CY@ z_(z_n?`fQ=Q0tuf-4z<Q;=is+Y`(hSBKIHZFKZOjCtB63+&Z<Z>Mq}$(_yBi4Ov$N znt#`=U9&Z9_U+c`ah~r_FW*zN?eCTFOJ`1n75N33<est3FOQ$3Zg)ksVbiOdmn?!e zxBobN_8C{j4-t=j&*tiJU0G%*VfTsKeD2b;Qe76!(EGjC=Y4AKt69}I-~PF4pRND# z#fHm1@V@peZa?n3YJ)_J-i0(tu~S#`pTF6Eb-lIy_WaUkMV7+%{la$6Ze7XsxAd;} z-q@{M1PoT?Ni2}H7rQA{V%xHmyYTO(?7LsKulTvmKJ5CL_Eo!Gndd8R%)GWpoA2~_ zC3{hYyK&p}SBHF=yXmq4@6KlzD}L7piM*MrQN`yXcmC6>oL?R1R){Xs3(=b|VsrXc zZ|=>2s2NtCc4uR@FYz!A&yN)Ox?bo+!fErL&L=YeWhx3=-q*SR!Ap$IGjzg%<rdi- zQ_G@UG_EXt#QTja?bW}NrQ#i5ntG%zEU*1s_P<2oS^5^KfL*(|x~lTDs${~M9&3EE zukTv7ck;AvX<O#aQdzX|z_Uos>+Ds{8`_uDsm9*AxUy@$naPxGb(zZFcb+~LKdV(# zMw}~by=wDUUs><l=QASY3T7QqedO)8`0U)NBB%XNO;v5>&vEaMa*Ivad}76y+k1a) zdinH~RmG`opSVpPZ3vF&@6C*|oL!}3v9jsKhRmxb_3SyqOCD`mthZ9_3iswTm8oSC zr^T(G^hoVpBW%An`v3O&-)@x_Q{_0@)@R-cQ0`irbNtMswmjzkAm>{@!mgg(k=S+9 z{Pmw2v9r#rPdi(u#Tl=VNu9LKWaf6~X%}5`j`{pqBeFs5Wx(RZHrD=__onwR?x{68 z(&1_Rrapb6Wy{U_vJ=Li&PJQaE;E#>;=Q2vu-Pf^iu<C}ZqEa*H|Hfk|8XJe$h3dj zKNcJ^S{mQOpJlSH*1GDMW7$T#5Us79F}E&%V_mR5fImeuk^A8NEFK5GWX&6PYV%?~ ziBFbKY&Cjfz_-Ci(*0^!S+CI){YPgSjD+`Z?6@eQRuzA%d}h$i-SytdPtM(XT9|iM z?Mm;p(`@~1uN`X>U#C8iQrvYjZ^veh?Lj-=ZM$_hGJos&{C3%L@trB(qt9&8%l>pE zQfK9~wMAmDS8+!9Ny(eP$o<^!zwY~u1&2R`E@P`NvgW&IoSZ+^_qUjr@UEl!^VGP_ zdFyh|oXDP*mi;VW>L}Ykp8S8u>T~5y_OiY@JR$3Q&ZKU+!mQ0<<-z^)8)w@+Z#u<$ z@)YA;@m+g^{$}oByJ52Vos*&V&gXAgC!2{)m6FI?(Curo?B~MvZS1<+5+^)P+ts=9 zO5Gy$um#;y&2x6GewOdFFC>1MSmd$ITc!SqZL+iXUbSi0dM)XllGhIuKEEsQFxEJw z{$EbV0nZmZGqT_9lX~<hI`pfSv8iP1r0Z|v@-j}^vF>;sXg_=P!YMwX{4-yiP|RW2 zckqA?yZZ~@h4*$bOn0+X-W%7@ZDknvW!1tnKB1u(^LH?b-`sZAaPG>UTgSF%H{ZLn zVPc4noO9cz*}G?75-Faco7}fjik)xm=L<cvY+o;|Pfonc<>uQFb%JB@@|pZwO01vg z@1OCc@n%GoA=4X^ZpWk3w9jfyKY4n}_XUBPoC4W%ciY5Ud;M8v{?PNNv$OB}BR*R1 z&E@0&{#f;UTJQOS{}0>4@Bj6)`6KxMn|BD`%g`tF$MXMuSg=^%-{#L(@C@^-!^eLf z($rq&yUbYKwVrRsv`H-4A9nd#*k?~s4AhEz6#BU0Uyohx+J&<iUx`m&`FTNr_?51% zU%mUMPg$txb;anyf8Vavu_Xbz9R?kN$!E{sIWmvYV78O;{=HI9mxwjpV_0l9m0Q~B zv*YfEb?2;FBC;|subcSu=)9GY4bxMrTlUS}<J*5-TWQOr+WJ{b>-YRPTj+a8w)WcT z&3FCXXa87{$+`2-FGeoG&{jpKuM!o1XE0~##NB<htm<CBe#Xgb*7tHFURAjW>QCY4 z`4-&zQ-yhA&81UUH~Yvh`Mz?|Qn^L<6u!Lss;{=PTPg1J37c<eb*ia)Syv1s4!QOI zRQ@!poQZ4aDQzap)T6JDYk97y_cMR=bMwA%%k$ZmjwKV;ZCUqWNxkVA!?!VlA3``! zi}{wePy4RpKYQO#p48<Z{j)CL*k-@gq<0rTr|o*5+47cqSOec|`Mi~F`|EpB`Y+eS zU-$j-bMpD>uL*u!y9I;S?-gNYwme@l%jNQnNxz*vju$ik)YmVaxX{K?E^&p_juUNh z>uVNEIPPuct$UgLSZ-=m@{N@8dvd}{t`}wTU)m`ps<VH&i1I}r#^wjzOm30cPyXbD zY}kC7`|C~t?mK~Q;^__7*37ZK6fHK(t8~_~w3Q`GXZkpO=ZM<6_dmO7ux!O-!zIG) z_ZS)5?=dp9-(zHMzsJbZevgrL`#nZB>qpE+M&{FHp0LS-7~Achu<5V{I$D~Wy15xS zx*C{R7??Y{I2o8axwsjbxw)8HS~!|I+bP%(R1&N2lbV-alA&N|Vr&dq=Ak<6bbgqt zMEi5w`<C+Cofbaz^R|5IxA2aa_xq)~Q=AsEdhNV_OCq@^$>)QR**|uP&!<lHc6J^+ ztD+|5%(J6-xn9D<)I=qrsdM#AgoXdilb@|_y#I6U^D{HQ&zvdT#A|oDY3bDj-iX<) z0W93+@tj-3Vy3m`R4C4D>{-*8!+5uz>%>W^lg}>eI!w*6ylJzGDg1Gm(K@kRjOBf| zPk!0%x}a~(^d4*R?t?;`?2K$T$?2%RR!<H&YIMQD%wgF>v!<sh%_(~VH!`hJk$zPB z{KYz^)hEwQI(sRWc}A~=ds*{4s|z8or!~H@x|_CP-kQEQQg_8RH0E&L4Be%gp}Jaq zw^Mz&@(q`5Q{EWeJ)6LNGi;N0$@Zq)l-nouF5TrTn@~D2cEN47vPrV)*8b(<8S2*V zWqt4RHnhL7xyf^PZ-V?y*G-#CzBlt3ojquBmwCbFYo%uoO74n%pdjh7{AF3Q+=XmK z>y<m@Hw(PFYQ@v{A^C4}`jW{hwF~5V8XOH+_!<)pl$hLfOUkd?y!{vQ-I}ehnX`cD zMcw2Ct~pFnvyQEqelhyh*Xgyd*%a!t9xnYYb$`drUE*Jbb$P{Ht~4b`y67@L>7OM3 zbnz7TFB*my4ZYk|dVCqaKB`)<wc)1W_7Bg3L)(5W<22wix#|AX({bUt3$bqAPp>Io zG<%epv-QJ8kKD5N|Cbm(&b-62!T246w(gyu0pZ&lco|$TYpf03(sMhW!6*30ksEv; z^y}X-Mu>lBjOmtTIGm(@V0DE+La<BYjkJf;Z&&5<pO;{6Z=7P!I6-j}&m}K8zmtpH zT1!82NHEXpEnHB)z~5zlhn--p(l3`UoiBv_H;WY=s1rSZA?R%T**BeTt>J=8mAqW1 zbZLkNYAp(JS=kXJxOCC6b`be2tEDlX$$ZVH`sWO+x~tRX)~__>Kf}&_plAcrhkdHW z@tYP;fAivL)CRtc=UHsG){8NTXc%uk`?=(~Yl7hlgZkc{2U>T<0-C}$=c_w$n0;B( zHhYfzQ?~`ZImQ>ZT}dc=KO=9|U7y<vzin_k9d&%igEv}rvN6vN=`C2BWqyHet9VBA zEq*JV*S{R=&21S17UXQsc^sRX<E<*~b(6O&>f5*cDDGQrm5VolBJ_Y{fE?4|hD?2T zMz5*vI@RC9HoUoCz2|-Q*6+NI@4HK%1|GPj<=+%{I<GuK;y8o$dY9vy&Tp!Z;|rT< zyJq$B2A4^8m&0~`U8Ps>ZOWBBbGDqCv+a5j+lH1)Dr+@Y*W1*%i-%0fZuqI4Z_v4B z`=?Eza<$9npJ~#bw*CK_lWx)1Z>?vNDFVTif>rNjlKYs>t+8A_wb*87SvQ-4?uK() z4+xwSM1h4T3Qt(F%Vx@ep!Xc(^Ba#?zLc4`hj+sqSw|TpIA`*a`ohD%8K#!a4U>2{ zGxXm-|IG&%zFZ^e?sJ^?I-_R1(E{VhcGLadRmDpRLC~h)OrdVXnZh%LWzp^e?riTj z)^zTZl!=$&ocwITbTQ+Z8vd8o6slQ2vxu{7{jS+y*=J(M`(^E-Cb{i<QfKG&>w8Y_ zO|(nA>OTKv?~0N|Cpwkt)oWL0OkNjt@2`jb!R8jRl_x(<Jbv)g#lqN(Z8f|6bhT!f zMc5T@E-QVuaMPtvuj5y{ItsJ;ikJjmSkf;sm-|=A!Udg8YH!brm~4%<`@N-X|4z-j zsoS5%?_DUi)c3be{RgMFubT6xyxpFZ+aD!jSsHcmOYMe5KP#`L9<4s_el@rL=x_T~ zSCfyj-!cncFB<Q+;%fTQ$=k2I+Mf0F=kzlTq2+(pU0V>EZWo??V%7TkHP;kZ-^&cj zzOgFaXO-(&;i;a>*Zlf1`GEN|r2uxZX4M69I$K|@FK-V0pTYT`S@8D4Z(ON)Da9p4 lsfoEDR(?_zS8+*VQAtHnY8sb`sgVVzr74%Hs;j>n7XTJ4&*K09 delta 10111 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 -- GitLab