From 8557e6c85848c4429c84bb5ae6a457a26d9879b6 Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Thu, 1 Feb 2024 14:42:06 +0000 Subject: [PATCH 01/15] FIX: Subtitles are shown when available --- code/web/RecordDrivers/SummonRecordDriver.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/web/RecordDrivers/SummonRecordDriver.php b/code/web/RecordDrivers/SummonRecordDriver.php index 38aedec304..c6f6fc4a86 100644 --- a/code/web/RecordDrivers/SummonRecordDriver.php +++ b/code/web/RecordDrivers/SummonRecordDriver.php @@ -236,6 +236,9 @@ public function getStaffView() { public function getTitle() { if (isset($this->record['Title'])) { $title=$this->record['Title'][0]; + if (isset($this->record['Subtitle'])) { + $title .= ': ' . $this->record['Subtitle'][0]; + } } else { $title='Unknown Title'; } From 524499e1c0cbf0613c61177de23fc441241afdb0 Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Wed, 28 Feb 2024 14:55:35 +0000 Subject: [PATCH 02/15] Fix: Explore More Section for Summon Added correct paths so that Summon Explore more has an image and returns results rather than reloading the same page. --- .../themes/responsive/images/summon.png | Bin 0 -> 87284 bytes code/web/sys/ExploreMore.php | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 code/web/interface/themes/responsive/images/summon.png diff --git a/code/web/interface/themes/responsive/images/summon.png b/code/web/interface/themes/responsive/images/summon.png new file mode 100644 index 0000000000000000000000000000000000000000..0c0ac431a50c01582e9a0ff9126322038491784b GIT binary patch literal 87284 zcmeEv2Ut_f7Vf5Zq)Qj+MM^@i5(rg5dJ{`X0)$RN2T?&$s!CC+6al4+(gj6Onus*% zsMt^e1q-OCyd99>@p#TXc;5RS-tTTdwv(AzYi8CzYt77>*?TV!FFynr40R230U}}| z;1u`|Se^xTn7VlRdf{BWy!m9MWB?^C17ng|0Dm#ya{xr(ziE8Ezm2@HjIp;i z+6AK@j73`nn^+=)-H^&C{+$}sYJn<&9^M{kUj$#Ehr1_EB~YDzg}DkC#z#x@^Q~m@ zbyMeu;Y;PSH8$nb_QIn16wT1H740+EEsszBvb zIjNY#b-xt{{!-`v)~Dw8!na5N5y#d!N-ygd2vd=ZXbe!lAb{P=}Qqy{0~^jRCWvJ#k=f0z2AI`Vd$Ny}xJk z^YXpF>*RmH1WW*1Ec;U^!8A}8e+B?PWtD72qgFe*8Vaf6_-bH05YA|6S8uel zn)G_?dVBC$eKEf7={^052CuOy?g&p1g+NIZ+6m$3?#r)XgLYJt z#_OIt=8uG{v47;ZQlB4-Rs+SVqK!r4JBX#1m%GNQnK4-JHhkLJc*CN|Cu)Q7M0o|^ z#MGpJB>Jv-gd{W^;fvP5Q%cGxNXp1rLgZCspenLT5;C$XGBV#WS{rRZ%k(2TXgyH~U&I;%um(z!vNDzs85MaY6?upRSe3O(7=NGl2R@cAejbjV z2#h=K2La=y{zv(K>k6xItXM>E1Qv(JYrH!Dn#vPQ=xXk7H2A&^nkq`FC_H9b7|N*;QH&1~ap8 zvo|z%hH1f^bzl}SEdv+~F0E(=!&&LM_@nfcgAsbl0S0hmKVuk7&dkl-1STN^Te-Ag zV1E3i0}~bqgsH;J@WkL{2Gf$3kb}Y9bln`GhVC#u%av%Dle8nu08Df?)6s%i>1a7y z>1sK<>1mnS8EOYO>uEVV8^K{-yR-wmcC9dkYr%}+umJp@85|~OssmHn4c9WZ)YUSx z)Cml5)C=F^sm=;R$Zks+ds`b_ zcZ3Zj5M}GGY-0~~@kV&~;v8+{{q1DUAt+Cj9NN}f(Mca7;Uv3T$Hfkzk1_Drg^>#~ zarKhWc9XZTcK1fxdDyQo^l|hwgrYs=ce#4+vhna%z<5d zcW^+Ev-b)^841&17efm-Ut>!vc~f(Dl%0*Wx1+5t1Z@j3cenRIc_D1Pv5tBWKS$_) zYW@mC3AnqVjg7lJ#@@r*59w*I;N<4B+szw+@buZ`;p3wadQ|3LXy82t~Ff3GwD)0BU2$W~nO-7%P1%*XzM~C;1Wzh2MSkGQqMPNX(<%Q-Vq9w zSCn-`O3EwBpe3D@q7sl#_8pOCn^T@{)2Wc{ExP0tIWn>ZAZg^BwJ<_`=axj6WKsi}mvOhb|Gd z6*sC1X1zlAwqn4xBB2NcB^hO9Nr)3vM$!o)2a!ZLDS&N-D$7H_RimsUT2@W^Pvq-$ z0(~dnxTDrlT9f2PxPM3fGwxo$+!t0W{}cM36@&fDF1yO+hxBz8gbuL|&UfCeZyj16 zg9CknLEk0d#fSH9S)hIX7`v7Lx+(GL|Jd!d;^$UDAn|IafkS}(1P>qR`(BG%ukyOv zYc<19x`z&25!5h6uxCO+b%Q{ZAu`HvsEoF zDhZXbghEy16jkKpKsVxw-*B}SE4luf3C_#OHvoY}!<<2b@H5Y<%V-xX>`3?vC?$;l^yfSNE-tTh#HIqL=@Q?i9 zt9<`R_}2xjLG_E+ts?qIZ$cM*TisgJ-}V{jNpceEuI;fVuH z2-*`Fq@jy&$Ds+-f060$xb5~wW4*B$Q2qXj)q0LU^D#yQ;#**W2}b`z%LaBxa34!0 zKtowUMoMPo!fWbk+&pgU5!8XuvNpmV)r*{-ofJZRGjg}m>@jBp0m1Z#kX2K z-%9x_HU2)+dSg}##tUkl&q_C2-8%Y4^h3w{fk@lS-3#nazCSc`J=b3iXMfDG!G^CB zuhbm3BJLFt*tlSPSG%*G%6HK}Y4i^~JiJh74RbxMZ}M9C`JbtL@d|5dz8my)TYRHj ziTcl!Sa67e%7dfRN(=D6{xgj;7L6Y>2~?}U|1+JVyC1kuNFZDJ`Il6GIjpS<>=!oR z)`@>aOv@cS*6~dYn;x+>&DaQDYcv}|YmI1gVFl_3pE-UG`6Gyb*_%MzSFOwMqhD*H z|1ZJI4(;yl74Y8;*}84}F9A&tZ|Q#*%+?fUBS!JR4l(T@#Qy;MHp;JB{7pUUz>j2F z;I!z!S;yA&azi$8T`@P`)WaBDDS{_ue;3TwMY$2n_}_(^Iz(BPPfuM|nNLeyZf&)* z>8JT%rN4EujUXqh{EcWs3P+I2Cet@{D0uW;PaUcRA}9Opxa4oJq?TRX@6l7)2y#%R zUqOx_l}(4790Wv8S?2dbPHxqSxiRFFf5}{KV&w2T2a!|6L$}tnO>Zuta=)T(<1w>9kHBuXPYb1rR&=wV`11V<-PBY6rIRSFj_9W%FSN#gBEeD}&wI*#8?~2mOY^ zh6X#?UmNY##IotI1D~7$v4hItZRT1fH$QfeHS4z_?4aN#`-<~*Lvu`mST-AW5IGsV z%~Zzgox*Q}9a!sM&^xe|zk(e>ESn8G`IV`P5(I=!ajjQwdbN}P6|I9Pt&Ncz(mH}v zHXCv)Iwyyprzre3^ORrGIJsY%r4WR&DRGm*k8^~*+)b}=zl592nmyT&z7d47*>IDU z!w+&RmJ$N_ZJc1TYanc7g7S-|a$PK&4Z9UvsepH1LI`8Wf2YzB%-)8SZe1#y4Y?I3 z7(@|2KY>Em27*lw-7k5;z*hds)N)-cn+>}at%JzowN7bm*1YMV`=y}{vbO5knAQ=b zve}RWrW}<>c|u5w;UIz0!fT{sk`zp?w>}jzG5QumksczU_}gn?`9(w^Vc@W*Tu5wu#;B;vBO(T!g+zskDUD4d}<@e{gS~X2xYV328FEb_N)N6 z*0N0x99ZdJFqgkJ)Dd>oHyv^-XHsNWCMnRhHP7aU?w1aw5cdB!HqsHqve~c$UwR2z zONb(VuLmOk`wVr;YxDe#7)-F4zp^4L@Pac1c4+6R}LG%cFmz!So)&;sD^a#Gs zjp-giE}ITLh&+fMsDN7PN^2{o&5s?ySH2PK2MxHBTDyc=Vu90*=)!ulh zt`5bIFW?P4%Cly*H~qwbP}7Z|Mj+Y{Yy_&!hTF;`QQ!?cvASk4Ha%{Hnr;L)0?~$W zBT#KN+!XPf(%=m|+W*_Q3kfyd2yO(T4dF(h+HAP3o&>?)@m{Cj$8kZZ>PE0zZ{UW& zTPNFe=z$O0fC@ac#Z6`E`#_)eWIXpxPLE1hUPB9u#~k3S1zpJR1exf0x~s z^{Q?Jy>+S$p|?)9>CgiY^x&Vq#~x0?McCPvHU9?_M2eM5>zccUPps)080i2+L;ygmZ-nvmB4z*p4^Lk#{zD$NcJ_P}-2gE_1&{*} z06-vd-o_TXmH>De=xFodz)bk?`n50!fSdrJUsB(ck8eHxAB7l^-dJA%ATkAW%c8)^ z4H!NOhTQ{vz47sLV3@_x4Id^Z#fPzA1;H>oKJ2_2-m#KrHLQsbqdYuOU>{wN6U+vHEk^;M`tEn_VZ-+q7hhj*6=~^! zfB-2B8YzVrDB=2#83;N5I`Cb2Quy)+vg2F(f+Jq2NYI<^hvfsm)QLp%N&eW0f0^*R zYJFFa9p-2!H2#aAXg+JOmtj1eLAbwtubU6!`Bw=4BH4F!zz0|RH5g#d`wFn^mjW2> zvH&ErT>vRF4M5^>4oo2;;ATW+4d6A;X4}+izX!u$`pW$eH{z4vPhuR#nGYYWZEnej z^uzk&!=O&!Z)5;9umxZNH~?Ni01yQv0Vtpdr~;aR4qyoE1}p(PU>|@4TmTOM3j_e6 zz!4x4hyhLk$v_&A1>^yRKpAiur~w*)8$c^?8|VS<0b{^J;3+T-%mE9)5)ly*1rZ$) zGZ6>THX`d%K987$aIG#9#IG4DD zxSIF|@onOJ#1Dz5iQkg|Bs3&!B-=?ONt8&mNp_RilQ@xJNy12?NzRbul9Z9uleCfa zlRPAuA^Av3PRdNmM=D9GN~%w4MT#W#Aq^vqB~2r}NLo#LleC|7l5~#rD;XUbH<<*P z3Yh_!EtxY}09hp28L|ShDzaN-_sE`-Es&FwvyqFCE0XJz+mXAHhmgmTXOfqbH<9;} zKPG=qK|#SmAwi)|v6})x;Y$%okxEfQah;-%;wi-kN*c;-lu$}tN_$FA%5cgvltq-+ zDElaq9mYHeogcHg~p@ zY?s*v**lF)ZXBmMYB(l1Njb$i z%{T)%&vD-3oZ({OQsqK&MRQ%|8s#SD7UwqS4&gq}-NpT$hnGi>$D1dWr-f&RmyK7G z*OfPk_ZshuZOq#=wqdp==&Vqi(4w%2u#NC>;TqxRBJ3gt zBEcfXBIBZTqB})>L~}(4#K^^z#N5O(#d^ev#pT6a#M8y^N)SsZNMIx~C3<&|?NHv~ zxg&SSkR+`nOwwPnSaMQ|P0C0rT&hOum9(I=z4U46HtDZ2@-pr+c`{=VCWs*<98wQ? z0~LoNq3O^8Svpx=*+a6mvh#8ha%j18a>Me>^2YMV<(uWdC@3mm70MJ|C<-bbP|Q#q zQesguRf<(=S0+=|Qa+^Ip!`uqLB&_)vdU{!NmV!1BGu<=B5G*0JhjK_{OSnx9QB79 zd>RKdvNay=+`bdBGk51BO#w}mW`X7uObq4vWcs`GPwNjE@E9Ns3JvBA6%7v>-rPmI%VJmB zu17}VMp&bIV`5`N<3!_e6Co2%lbYSYZiC&4yC+OVOnpqRnvt8Cnx&gPGl!Umnzvan zTkN+evRJUxvOH-yW+iInXVq-I#oEET(0b7ZZj)g1&{o>^pzUotPCJZUtv!XkwS9s8 z`#m~)lJ`7ykavi57~CteH*jyqKF)pa`x^Ie*^k(Ny#=YEw(&K?1)NNE z`HA`+^PBY7@K5*u5MUi}C6F=DGq5X2JSZw?Dp)r-KZG;{8PXiOJ@iQEIRBF`MXjF7(j7-d#n9s4u*v>deTuR(>yiKoqad@;r*=x1_QV6ncV9gv>F^9au|9z zj2eDE;yyAz>OZ>;S`?(Lq9+W>+c-S}zpX_>M@o4NZ^6~T&+>_5w zk3OS&c4lhZRN-^z^M)6?FM3|?dHHnOdwOXma+Yy6DHo!qHlL=J0zOlGPWdACrT*)#uj9)e%gf8J z0Q!|L&;zI@a4tZ!JO&&Emlyx|B3{2p2-i1iVj?0i75pP4{L{d46TnDGL_>6sgoqI! zW+WnEBwD@+P9%r`Vv<$n_=yX6QBhM+(vXvp5|My~0RRP?;_)HdT8;th zGd5>0=%3&;lNB6HX`e$>XvqmB-(z>V=yT)-HvD<7xnn;{N0<=+%O@ryrKX{zqa^`r zfUhSbSip7&jETYw;lq67bOk^3GR{|CAxF#H5i1~jg+-2XEOr-q$gHe*|qb~1IwcTo+U9O2_vu*xZcVr6Lr*xAHhtS0&f=nr$0h5 zw^_*0QF$deGgHV@-uA|`r`)*5YDSoe(RQPS3@=lFU=~uNoi4K5y6Ub-Jn4cAcYEG+ z_ihj>h;%D_9In!LHRnxTsT7}!i%{DE@yC$}_A*86j!Pk!S7moAqZRdEVtcbsDI4@C zl)6^E-C}uT@!}2I##4J#CYgt;$aR2 z=VA28Zo5P#7d|fA;26`%*}Xo#jzPR%*+me8RC}^Wm(-lQbRinzl5@|Mg~C2pK4rYs zpt>bwi>Un_w<*alcLNO@_tgMV^+#Av$&O5Q96y_#e861ntlKh>S{I=#3t0xDuCr8h z@bH>6&4u#!w!u>S_nY)~eHv}qmmaXAbey{BQh^P_)w;TrkW<4cVT+G>ma2|SykSlZ zA(}sbz(b*9>xC_iy5`wqHNIN@^~Vn+59d8d$wn-lPicMegz-g67}rAblEu6#1A7>2 z%%dTjcuu|+4`kd!>w2=xt7!gfBi%j);V;P|k*Us-2fEZ9AQcVeK^m$jW~CQ}W1rob z$+sI_qEdLd==6H_Du*>c>?Ijr=FzyLeMeuN$UeDSaeJJOk8N}Q9t&TdTvV+j+!`L^1ZNl z9f|nmzJL(%HvaH^J;^tQHQO)d7APhbh9HJ!-@SP@b$h>4Jao^5!W7H3%NP}hy#cCs z{1(S9)nCY9lBjZ}^%8cXHOe}Fn^|J7)al2!+@j~9_jx`y94H)b8GG5Ck?kW+1E1mI z66&U=@W<6yy^}*EO8fhe_#cgAdQTrQl>P3j>Eu^T6ZeA)cWBcq`#Scy^)|Ggn_x@q za$tL8)siW-6-Qw!&otRr<51sLpg01qu>-5-=EP-lzt6;!1+mW`?NOZg9!_dyu(!bW$Dov z@v0%E-O~)m!p}dqxxCwK?@K@H{>CRZ25#s3D;X|nh4E!f-oxreAF7@cx93<;E4j++Em3z)xg=2K$0v{8 zFVk!paXYS%-=$PDdV5y7WqQb7mHR5Qmdgj}(gVq(a%Rhb{^9Nkd;JgxlPh^cYUT~z zi;_W>W+U}6`|ooI^XYKkLy3qcQj5%JTHEP$Iy@S5I6n{~R^_Qpp|!M4?D&w(msser zcHEo$5{I0{`nXh)bqCZUeD^faV;4`Co8(tR^*$ucvk|wyttL78NQRDVusp5PT-hM# zYHTe=&fO;>+hwq3+Wf;^@2LZsd47Y2WBJd9OyjzCbum7XIF8L;+NN-2;I2|QZ4)VQ zyFG_n>*T&{GC=0-Gt83MydH2rod#Vd;nHhA)^Sx*`B94QuErUYq|7v5`p))4p7B)A z=Gq~t(%w5@H>vmDx=!V@C_9#_=_TtjC-744lKCT zkCC-qGHN@}Wg&gv{sE$V4qcO+s2jYED`WIc^nk~{E0Ucv8?lRjV@qRh%t&U!@0mJZ zdf8HnNAITyCX*5Z(o1v6Hr17v3o?R?@uFR3Y<#Xm-10*8* zol$7&o42tK9x8@|ci#=R%W85|kw!vLh?#9#Q9HKIZeWqTAjH95I&fs=|%;4Pj=kPHj0OMmkaU zV!Oi>DTCdL<*zXJ~ zngUYM6-}4i8=XI1C#eeW>$uh@EFWH(Z}Ob0`>9W%s(~HOVLBwfBjkBelFAzj5#(Lo ztk;Y_g;_Ha+xfBs=$bT14NY>3GD#^dD1Gm0u+Hg4g?e>8NKx{OG!7D=oW8JgtDAeD zugasz2U~eGg-Qy~829nVy<)M|@at9%5J5a!( zU)t+q?*jR=zkYqOE3Ys_oKsmqdYgl1Sh#xpQ-KTHMTV8W^c4xGHmPv%W@?7r@wWJ^ ztmKuD6T|W-`Sx301dGp+^f|NttQ1jiPjb%3`rEV|(cMu( zfB3Op*JS7J!<}()^a9Aii58fajcxwc{U>6N#_4_Tr#vHhepKWMz$oD#C3uQGI7sh; z*;3FuE~4ADl|g2c|f(z~rZI8|GF zu0ycA_-yjSmEMkwJAL83=ffy=^(A7#yc4w%zH|Vs)v!3%#r!{Xq zO60@L`^?5JUQ4At^YwWgPj`-Lk_Ppqeo=k9z(#jDmLnEs-h%;cWxOpa5JO?|d()?q zgY@swn)_QA>Yt>}z3?)?<&;`xOv~MBp?5+l0ZgUvd6#WQ)h_N4=k^?=JtXEU3gP=BOiEOB@Q&c80pjGbeIi6csDj<_sK{3Bpx-b9Wqm)+MFp zCbd^PDAJ&CJ}r9I?a29*`Pr1YAw@Hy(ARBHPfUB@lT)=aSayp>d503DU;R) zT#Y5C>$<%Ah8QYtk@(J*@}PvSn!4}tufLS*+l8Sn85_Q?#;?oFT2c&WC6}e8$ zGy{dHU(TJ%oh?2?-+On=O8?5uRF)I!k?}0N5$z6|OM;U%l409hZlCw?$@{`Kd24=K z2+IIeubnj4KCwWT?7?U0C5+?Tds{E&QZ7HQoa;taE~u6VyU5_?*hI$2!!B{JtoQbQ z4)5naoi9IZzteF@LDH%zS?Ju2tBU7tUWLHF##Lyk8J9eDwPmIst_&Nw65n)Wi6@bz z$4f^>WMT4$Fnb$+}mIb|f7(rwca`Ii1r zHKMQo6$*Jc)N8Cx!2YFa-_adyDR0{QH#EupsWH!8JbO-vMO{cpq(t8AyaN5Wt6z%I z4y$8#bdSzuixnLmD=6C9x4;&?#N5W06FQ-lQf8_D>Jb+(YJQ={on}X7ZqqVQDSj=%me!JqmA25Xtx~@b8haA{ zlIyDHh}@~&7Z>z7=3AmTT4bF=!`uVp@83Nby;Jvd{6#lceUv*3$}HSu#;2;p!aX>FDu;U3p|9~A9>u-q?2}(L6fu@ zpxE1d0W#!2>)B2nBaSS}{%C~YUdlQBM%Z++dQVNKGH>$(y4!=zvC-Q#4GP{Rs3m+v zA0$e!bNDEzvhR^^`MD3zRAZhQ85-^9KDR4F%i@80n^S8gwR|b>y*Q#$PJk$w_O@02 zcO6C2?@1QxyBdk-#byC?Rvf>_C&jg!XQL#+gn~;q?)v0J&4E38x zDr2xcOxE>)-)D=w_Y@m@wQU_lslOy@;+?GAHgemSB$1c66;WsdB;%RAZT z1dceXDs&AFw5Yn=j&VLcc|(#4GvLtD$dW{?t41wugL~Vu=;@s>YHq6^5_Yjd!>)0w zt1i@xvO^vyRuZI(N)dhN=KsWA5KVhehdw5$-H%JW!ors66R!Cjaao^?|_mW%<1fY8qVcActePVH?aC-OaZ zTPV2{B819;dc_9$rHTlV1!J&V9{S*P4?ExsQR@Q7RBlQ3 zI?I?0$Fy6PJqs=(I{SFrs4H3u(;9S8SNGDJigj9$GiG25_II-*=Q7&dc~&63_Vv@YuLLe6E0Y?N&RRK8vgh6lICM~a zr|O6Drjq^J&pu`sOIVa3Ht^F>8OIuNiatA(=|Z>Y;S~2e|078hTixZ6Gan-Mc*XXc z?%cZlX>2CnQnSGmTxFm8Tg}q!e>r_*^$#`vY&BTkWgB>>Rh7a|?S}LFFITD@2k6HI zas#>qpT7&pdy}u!Ych(3Mp1G^=d*CJbF=E0K7A!SALg!}hz`9VHQRF^eXGUqimk61 z&q>ZKzP^_GmtI@eyqp@Io-yVXJ3cypJl6l}Fsc;w!HJ8nSJqcU^>!*cy_J!fy;&Wu*C~*tEDItpVj#a?_sTB& zR<=r@M-&*K;M+54wG3p-F9T1Pfw^wywy;a@@1(R1p393k{uvcei{9l`#dpQngZSN1 z2U_af(rO)&faAvw6q3na;61MSc8E-d9cW5G-e+&qJAbWn89Jiiz_=l!YWEjjtKjttLS)%p`vvCo;+ zI3olq-|yf*8os!gtzdA|=}sO_w_<*F&t=DsdP$BeF3}#Nm97)eya@m2g64wJlzEzB zhNi?x*#J?N*A930OIJm`#}(LT=avG;xXpBX+8@UqmXAeplGqPc0)vM^FOldqR|f}& zeGVG0W?!FqX>(Tnl~6Y>!*xozHLo_oKyV;aC@iCBpV%LrF8i3B+&Jl?k z3_PMWzdX}#(W3A1S1#k^ZX+J5JX6b{Z|%@>*4t<#V)xm%td%x_>bGf7@i0@}X8P*J zf_UVp_V7dQHVVLsG1Ta@+N%ckk!Gj-gO0s6g%q8xW1X$WElD@{C?xu3TVdoKa@E?3 zil$1!aKW^*-3-qiYhg75VRZ8$bdSzZ%%@*^mTtWzUsH}wg|yc)!7*sW{Q1OvRTwhs z&9=Ay2Ft3LVmPCmyJKr{FmB(Sx; zukElcjFg8j!aiIfynY!FN}!?afl=QN+oB;$uTcEyE{n38X0HopGbm8s zG!S+dU2JpaJ@?vy{jlvv9a3WVXRo$0go$M?19U#;!@F+Wth*wrXCz~_$TqtSO!gU^ z+5S~O#D7Zy&)YDmT#cIBwMj!~O5>lrHtfwA)1R7}8mlq6syrpNZwHd5}gl-1I{7y{fy=QdKSI+tQS_x1Ij8N3COF+<{hT9^@#f=Cnw5xDk@_JtN~b z(G&6B3$hQB7rEF0UCka~&#|&Y-P=Jkzw_xG#^)V| zdF=+&U|d9BlL@XRTxf{pM<#WonHx=x%Nc1-STdU4dev{bE6O`2!nTG>=|oqR%YJ$) zI-zT|ByhHeFX#jroRU5}Nannb3gU6VGPY!3AMN95p>5QV_qi%8CI%U8Hc537fbn5o zKIZvc)_ebOPr&^q_fp%E8~tv*tghq1jNYb3W+&qu#~Yb->bEZ#dDUC_B{7Q@MKY=s zvA4-Y#q#gOVFw*$(zaVD z#b-~f7khI5qX6jE_C+@-^(HdT!8ke>I&fEfX(ZJ8=AYcCF?6rL(3RFf3Z+!`yEPxZ zr!d7W$wRCw&g8>HnZgYp&fb?Qe{h>RxSaH~FCI}Q((K7Py^`%69Ii}~seK{}4Y_WqJCucY}5qr0HrxI`Q?Hc9%GPedN&+f=6I1XvqB^Wmv zfQlQy(NSJJe*`0`Hdj}Cv-EiL>@22l=w0``f-sfq-a6qT`ItuYtdfgbBj@#zMV7IJ z<|{VU$D{LGC0bJE&e!i#bUKk%&yhy{+4G*gC7Vjb!DD6F zr4(JU+Q&a!r;~LU+0XX+rYC)*sp!b0NJDb{3wyKK!tp?yE5@S0^U&0xSGO|j z7Yd8s@=|GtM8A2wH|u0bQ9ySPSK-5cyQ4D+Pq(HA?3I!A*SBM_ZL(0Q8>GD~=>$yV z?-NGtUr1IdTZ*TBY(vMDG%tO3SXS(8Syq0wOSpx(-5suX_3Cl*Xn^+q@S?v|wD9<) z&|Ot;w~eZ*Iz)$Dffr*p=oDYm-V~j3hoUFOyP|_>P+ogZBK+l2WJ_7MJRp|ZF__9~ z5nD89&knp~wW}L);rFAq_*hSz`;2~8;Dp^3dU>z2mxAU)GIvC!aaG+_Veg&G&@8)Q zagnu3Nvt^o7niZSS;_6NRgF?yJJT-1>iZ*yJ8<5!TBn+aYUNH3swpUBPF3;-?vcPu z1o+>n_b83okvB283>-L!%nI`{W!k#ilKw>^OR^PGE-J!wu2o{kExA+HIeH&eX0OISdZQvo2q^{J%eqqMa5w8-Q~E^$rCHw#-`+xZUU2iVFr zJ|Sw{5igZs)59SYa(`AzqQ~mm?9Q)QA940b4Jzw#=O*>!`m{)XlN+)$WYo91GH!N7 zh}K>l#6)*LXus~AZf!IsxF41K%0b+mg=8iLXMn7>2~6&nnWmhOfA^+ZX}H%${q^<| zH{HG|2H>eg7Vh4cb6by(I|jzaMmFCU=@5*Ua}z-BI=9Gkq?9zVo%PO#^KH++s=C?+ zryjYI?wjCZv@gGhepo%rj$sz!UKdfFXUXaG*69J(V!@>5zy;gMEc06CW>tCy)QPzR z?4MhF;fwu>CZC^J6uVWWWP9Cel_Pm@yMD-U?z%>X_oK`qHrYF^N{SV)swYJ&V(a{5h#@8J`0aj~_+dxi&up`a9kYyeZJB z%P0Ze+D^5&c!#T!@h`#) z;>ts0HOmiC35^m-AwtN{63d@tsXgRzZccJIt@ot8)xzB#@q?8n8jnnYK9`}$ou+(m z2eP7)4ksstXT*nWk*DE%BkU+_T-1fieJYS~v0F<8mY5(snLcRJt74d!W9T~|n$$#0 z%<(SsZ3~WB%H#fsc?g=aPL%QLDZ8Lhbw17IS!O&i zvuBB_I{MAPXtxCOnD!Df!;O2oU<*r~5d3ND;lZ(GVBZeYh-*!`^E0q}e!fTJ$Ut@o{TcO!yBLbJ zN)?!`umD1VD{x8qvjR^DTN4Kv;&NB2`q+!Ofl*y^k4%|o>9J-H$Ed55@NuXnPaoJ`4q zFZ$_!Rl0X539_vPq80V(<>}8pMazJw2_?;!f*1UYoW$xW-$CFMogAe5i~r>7kXCy3*vx6tschD&wJiN2%0U6A%pP%+ zm2bf$p}pvNkzfuj4`~6wz-^if&cp&NPd<*b`KZnKSyn(RW=6NGrR%g6;^}#`1^i)J zr|vb^4^iAVM#WfFt*peIA)(nMJ#Z-HwKLy#5Lvy|k%dL*C9S&Jh%Bkv>mOig-d=*`psH_iJ>R7!_hc z?a+!kRWWM8f6j{WuxqWXYc@+q>ge~ZsKB_GwmoioDiSi2IsJ?V zPB|mYCXeY)Uz<9molEoh?uUr^JVf=}oEMOEP-Ql*_NGIB{wXhO8b{sps>k;TxN`HO z4up5yi@Q>5)8X4JE$dp}?^4lv_Uf3M-1CI+0=fL6VDUz7^IVg8gzQLw`xqdYby@N9 z!uF@zgyF<~{9jl@toFU$A5(2Ub4uY;<>Lb(ROsR^y}LutIHI~!RAW-3ykDunE?rEG zxzC?-dsOuJzHDV`3)o=H>z@o`;sL=o8t8?{r?=fP#?XupR6C^GznVsH4^t1)IHuMz zQNKiS2~t%fgPnTXHEf&AKOu-O;xdDHQ^)o@^YUM1YT0{g9wQOr(!6B;IDgLOdUW0k znMCU?Z{UYX9PRh0KJ~YAob9qU&f7{)e1QCjaNF}mWV6PM^2GZrsSR)y@pT{{%sxv*b2Yt&Nt%W0Zo48?8s zj4hf0Av0$s)SQ(|L%&;$Z*8p@&UR(}czbVwqe`P)DZKrztw;e+ZnHQW+xFb@r$VSK zWfhN+iUS=aMMcMDSdNOGIH}ph+9RKPVQ6PVfI`9T%(TJJ%1Nj01=mH?(6Wu@yTBE! zKFZOG(G1I~>*&aT@#{Rs$`uV4>?=G%pL>V&WhHfi7Wr8>^Lv_P)vs~ayQC3~VY7bLH|sWvz+F6!BLe4hz=tgV>)*_#t7kN9^ws~;vY4}Z(PvN<39HH>N*u-4;P z2Gp)s(hqhjhnapEV`(u@=6-AT<0k%Ar3Z}Hv$CYV?p&~Gwi$7_3;2o|_Kl~)_Ke-T z@;M4?^VmFp&cMAO%hrMnH8b~(UZ-Guc5=cZ{c~7mzcmM>?9O)n?y>UHn_g29)(zU# zp`-FkXAb7l44>^nWmJToV80-%rw4VkicY;9`)s_*D{ansGEo(4f4udR4OWwqG%h>b zezM(IuBUVvSin5KuegAF6jyzyIp@@&;n>W&Y+2%uGgKwXFzZ$2&tJ_fcM-VcGP#$Jhvprw4zH; zZPBQb8^=3ThiPU-lFuw&s*OIg%S|F(R8rn^iDWX!E!Mp8e2_=Lme2AZ_1eeOw6>Sc z)c5bFsWjesS%HNm({+0if}Y$zkeunFY(jM>2Okq(gkbl{Fd+&W#od*Kl1kFlI8W~e zcgR?WTjbe*w_QV!QqPH|hdcs>Ii)W7n1*N3wHOVxFJ&Jf&F-8*^pei8PUlJ|bdJUL zjvId55-uF-8R}m#c@hm!p zq&A@+9Z$>n2no-;RQ4@Lk=amZJOYHfpEP;zqOFS znc(dH%!cXo`G#d69YQ;m@?_el!SLx@L*2;m$2qaAsuit0!;d{ora1>^_ALWax3@aH ztlk+lwbQ>mbdQaA^;I}GBm9iBZmL)Da7p;YCA0dj_vcj-o#_Vn!z~!KQfPNOs%v*7 z=PJ;_c3I`i4yw`>=-7p*&D@E%J1|o!rY^d$Pseh((D=;&dJeRCAP_rob=R+znTRj`q^`4LyTz_%!G$*t&^Q8T$ zlDi5f<%!`i4p}m(+i;mj*NZMW^c`v83h7N5@&XVEd!n7jvaQ@cM`ZR zmQ+A{uamWmaYa-|s^5fKPfJRw-l}(K<*c-magcgUmtJ%xK9+}`^Td~kPW6PU<3`?F zQ^q4|+WP&WP4Xu@S8U83P}9n*J%1x8A*gP2M zv(enSMPsY=hi$DY@v$dD2mL#xGRGDCs&c6nz1)ZU?~Dj23ib*`>vXVkcPf{-(a+^s z+Ct!+EUb{X5wg!bYrE^>9bB!??CH^?p-*T}-`nHw#pJMPq5C#Y&df3JzJxF&Y`P{| zPjir7H%>b*!C*?napH5!AKd5S^})>0-kRlRif2$f(8=O3gkD>qob}^}V8f zY*!t^9UGDwZWcdQ8T#ORv=U zUCT}gy(6Mi1U;EJ++X1eu8enxWau^=E>jFV!QSNK_*I7iqDh@|IQV!}>UryA&K-4M zIb*I*dsuxvfdencD1}lC7IMeO?{vw^BnaLen^M1HxKiS_@AGgM86N7*M3xbygDIOM{oDpMB4mp zxh5myr1_+I#!_7;Ed0>g*HmkHnpj>u&IU5|uG0Rvi(2`9WT) za1JeM;&ye#Em`9ZRbhTH6*#G3QGRF8L}Af^Qb^LvZ*8iOdOsHHtC8REipt*O%#bu1kq4h2Tp=In3OkEIP* z&!JAF=)5fudNe%`P3%vgeYAbMK-R76zJ_nbi5MsMG=4u;(??|6 zsrmTf5B6g{_mc14E2m|zaIz$ZM>NK7Ku3&?EOFfDvJUFqQ8IH1 zy0J2<6xEyUp7~omb3S*n?vMFNWArD7qzf|!2kC3b>xZs7p4Ow9O8(%yWX)7a+*lge zEXhzJvCGNi%-p9vZ}_GiL*AhATH5c&Zt5 z4V#XNuSlFIx@Z}ln=QM)?m zGTkFEz>_cDP9rl1Y%|kW3)C}>i`$9-mOYT#%ZaJyQ(j8( zrIGsZ-@Bd2o(&IinxRO~4e_0(vXZz3F)>dmAYo}D7mMZ-g1}XdL~kD;C8cOrewKT^ z7C#WXDlAN$-ST1Jd_ll~#2>aY2o{Vd{Us^^uIzp(JEt}LU ztc7HS&4`FI;D-BQB-OoI#b)kdmv80c%Ir@vPR~ajQKdUm@rr|^Kl+%%<0+cz*rDVe zF;yN(`wE|uE%{!mfB=2mGGx+4)X8ILX zlyXh+b>|^bxlEeS9s&0XR=TKd+l8pOyq&jhL%AMxf09T1B*~dZ_CO5Gq9MxkCh0yY z;?vRmdZ&)x)ICjSm953t zmgw?-y6qf%gjFm_SN(i4Gv7iiuwM!;SKGrMk$Gi$n~TbHn^EOp6Wk2OC7Fl%r5vs@2skmmDc@UPU~I6Xb`kB` zY}FsJEt`mx7N(efKEz+hGTAvT`Wa8-|6%SegW~GiZPA9{5Zr^iyE}o#rEzz6g1ZHG zcXxMpcXuZQ_uv5nx&40oyZ7#0b#|Q}=blsdM^{&`T5YxFdghp8jAu+?#;&*n6(b+U zw8`6YT6Ko;a{5lMo;;R`xVZO_U)F)iO&-1>EGh-LbpM_X`u4@gE07b5$s)?ds0yty zk%4fI=-FYU0W!w8Me`y)LAb!LdpNtFh(ieim4|?lZ1{-I9mx$B`PK;|DQrfZD%vwO z>ME0PWiVZhJW*FJH)Lt@ENqpnPKMPHZ!=5Pv@#J$44wM>sSo|;#oNsoa3Uf`cTHo#C ziBZdHugQ?F9S6J~SF#g3f6N6eBy!d3wAz(~szM7~#_?WD1QARB_jo`Ik)RSoga-Xi7Jot%m~^M)I%XD;Emn=96zBcN&y3dypl zRtiZ>;8Pqs!t?CZl37#qRPcaECh4R2WYU~`%Tw!zXwEUWUtV7BZVtc-uMeef%JeVT zugNux6UkUTJvzeUX_S7PbOunVlU9!*Eb0n#(3tDw5B2A9aJ*pZEdAaviKDS=}awR+GOnu}t!lCbOr^SG4RA^b!ad(=eg)e_}8{D`X ze}W$Nh0HN(Wh?;F| zcsAFKPn&GsQ3nng3L6q}*l!kER4sUf-;f(8jq<#t;DU617`D*SwWnIuSuD8 z7OS{K>JzohDW}b|@D-H2p!(r@(rK0KV*at)nXTlX;?pFM_B{yXPhq5>!kUot{j)rg zGscUay=FcKF2)aXgMsQ!UnJ{~j&P2mHCqMBb4Cga`$>}WfN(s`e&oRQyQNu|fI_T< zrU9T+*HlmfOH}?%Fziat$edSeUvgEg($szm%W`p^z_P06@A&)OivAoTo5&bVEw`Q( zihdm5~-ggZTM zbL4KAvx_@8o>@DqcA__jN2$pB-&xeuvW7%~ZFH`r8vcr1QP+_;i~|A z8crGp*#wXlWKu)Pb^9D!(QhDpauO`hY|q%pjmc=%#EZ?N32G z#b;~!kL%1RTN@{m(&5!F$iZ3ppST1UQ%tMS2IQQnR7kAGS1C22zru^iu1!J`o3g<1 zC3xb}@J0z7a$5HgTpRlh(G$YLq7RTWy($}PZ8DIXWaJx|Hnr91qEU%Y&-0;Ua=bh^D z_faW1Jil$xm9CfT{pV^vP)@_3l>pLkdGr=CN+KqHL;SJwiPrqr8-ih(n1JfPks?c! zI&anppD^3+ch`kyWs(K0(A}g`t?6}wuHxMTbj`;uS+c++Rnejlxv1uFmyun{-j zmEplN->k}kvvIc87qv+n8g{Y`##ljJHgA|Q<|Fv!wCm)jM@aAZZwDJGYZL2V}iC_IoabtUa~^=AD~JBBkWNs1j_4I#tF9gdfi zvn%11qpWG3lBphuT-26wtPT(yBdE6lOwcji*p0ES$o}9Vf6XoEFYx0?1VHNivNNY0NAE2%lxtev*)w z*RaPwW^U`8O??hk3Z@`n&@t1OmX)34lTLQAfeFXF;PrUi9G2&pgft=Ohe!bFLHn?I z&?64`35=={=MNnJ>PfKyjnGvjta84&I;}=!;m4Pyo=1(IHjD2S zI7-!R6-#g(dPf6N>A?A$!A!wm|FAObuYyrrB+ohpB){-lf%W`;*XnY!dAv|k3hxI= z0EEb_idoVlv`Jb4wo?4$;KN9IB!^rfYh*c_i5P=UE7WK0;x5-DGKZ~rN>U=4JR{o5 z=?MgM&a+jM`3XMjLhCSviQr+@NXszn%wXL&-lL%{4LDCco5iJC0y&MhVmtiJ%}#M~ zyUi!Fq2_%vY%-ucMTus+=}#e%5Ly+6@0?xrm_YW-mRJ-!)hc->Gw5&r8V4E7Zf@l* z--I4ny597YZFADJYhO$l&aO+6Jd&v6r7Qh5C(A?|JLNe>#9ZW~tJF`E(QW3Nm$U3~MYa5;>p1g+k%L!$odDTmF$cL=|V6~-nt5t529@uhbaZ|Y1 z`HetuOmrs;9AeJSR*lIHO-b_0tJfWv9&DEfomQ$)RZ6nTK|+!yb`1z3&=)^YU=o@$ zW)s@u)Ab<|C4h`j;0YG#7$c$IlC{R_fiN+N%$u}uAfy5n=5piYBUU*O_}wa){osdK zesaH{h=_c8?pQW?>NI(LoAQVWpe5 z48foYTzL3C&gvkOhNq)46`Bj-uYlLK_Kq9%wYwD8NnW3SE?m+{W@JHF%<5Chw$Jkh z){qe2qdd_hj_Qh5irDk#ZAnS)jE+t|K*2o2_o(8oW#j@8WVfp?VBh+2KV&1RgiD1? zc=ZEFW#UKKeuwN)PvS;TTlBXRj@8O~&g!AXSu^F>b$+;onbKUgJjcK#-IdK`xhNba zeAHo_DIt5Ybe#kj_1o01JD;?aAoS4NG;5X&4{SIQ9thRjkTVAp+>`8ojGq}xma;dG+==OAKo70= z-8Pk8ODNPUb!$0Iz`$cuRP&9?!0;|=*!wUV7V%P|HHC<gn`nK{=Kt-n&0eJ6(azsZoN=Nb_{S)@fT?-* z+Yda5jDFJhpX$>?6LT#${&){k6J<>AEW)Cv1NsGFFAwWXK1qL)N3Xo^kSYaBA6Vc1 zc=5pLWrCJ=39*m*d+>C&#Vg$1jQDv8MO zl38>!7wqsQBb4Q;R;a5lbY2v%E_WGXs(;R&w;)$0*-fq@LqB*j{ukp!;&aBC74)uQIees>Jlo zZk?1C1LxMqJ1E7LbQf2u+UIFisd40#HW{hfg*N6%{zM_5U?Fixk^MdYvLZmeY|`}~ zRQ!JwNq3U}{%=@%y6e{wFV390n9VMq26Hh@PNHE-ZM6j{XqH7Tek>*3SuEy8jcL1I zO5!4+$ieq3(U3}LpWgbtuXaL2D(#PCQl!E{sE(YAJ)g(;0fN{G*cVNDDkh|{s+*nR zn-rX^D8ith%B8bhZfZ%lEa@er8_A08pIiSv5h=(3qIrb_mN!+;hE1GuiC497ffQc7IdJp zYo=S$4@>L5#nqO-0IhFp>?t%V&p00Oe*qkv24^B6z-E`yI#YroVq&5FixG7D_;9KOWM`CkfFz|$H6w{l zp_1+tt?C5W6#HjRi#^f&nh#iHaeK4HG;xnpPH~pCYM;o5tj%xRf%z{Js4-2(Bqgsn zcuH}M4EUh$M)MuimyjaYigwh)X;DjTwWcMZ8?!+V%cd#`)2rQAsr(jS%?-YA2G0O}!faA4=s0^g)<5?TFaG zfZ!w;tc&V+5<~WM?8{AJUW|neWNy7*%?t&d4B6cC|F8g7CMk=twF!b}E6 zUNsg7X9$i67^H{26<$T#$=pcRlT3O@-J0#5;J{0KH_*$`uxztTkV>a#2q?H#KJKKU zf~LvfDU&4tN+PH7L^O@ee=q68w64||xxqjtxcf0(*y6Vq7uDT!JuYujpQMoD&z>Rz zg*Q4f-Y(!;G63+(o3En?S9}>oVe;VP=GL4qt=!WE%Q78d4vJIu2fvrs4G_)lx~&n^ zqS)vVu5;@wrrAuuq>7Obe!dyQF0qju=BY*GzsktJl~lFF$1q-v>cs+;_Ao*`Ses20 z>H;p;Sb3Mgr5qK6k*;M@xQRgv=Jd_$@*dT~_=xCaZVxjRfX9m5b4Y2|7A8W4gldHf zT-jQGT=p&gr*G1?O~&+ugms<}y!h5DDJ~hU%3Ups_Stgeyu4^+_SoM$TA&Wb)i6OZ zrZVd)bf$WX-w)X7xI^m;v6k*q{-X^4|6~qh#JT10S_uPqT6c|pxI|`ZZ;nT}VW>2o zOE-|Gw_jG0fbO|xlQf#a`3JEjPa=2%ez<2}I~Iv!a}FrfIBPzz&9D>TNEd9ZbZ;lvCRJa{KvA$oN+QIC4*eCNshj-Gf7^@{Y=VwDYIc&@D>k|}XAUV$Jl3A0>=CJ_=`7)RjIU64JmBGpf&~Vafqy_|LG|vvM z(kH}GRdexLuH)i*JjfmWX`b#HHu-sg+eQMv=J9?XM3L}m(j*%oGz%2(owv7=;*R785H z7%l1RAfrM9=EY#G;2VUYkcg}CIoMe#(JBR#^^Dgxe+*S&14)JT7s9cg<`j$pC?3l2 zk_F;&L`8|JiC8JdgHr26gDS4)xV;<{MS7yok$fDj*DC zkD3z!J9^K$eos&kG`dCfZeWr|3LlPGRbaw8xAjL!U!~I%_5XD7mgj6kwZB&C?Xhkr zuc%{&Q=zjAU6@rxx2fRHiI=aeR>2%dhVIY~jTKg;eStH$d(!FKf zsA&_$d8ZCZ5P&RzaQL$_!e0WDhSk#luek#FLfmJ9J#v_xHJY%{Fhd|5AMdx1ZL7&@ z9b=)Fq&<& znn9hF$-W--S`i^BBX!csln@CcMc!n^o**dE#Ku^am>IoKp;dCujYOCv0tkFzJieiw zzKX!uU3qN&J~^6c`bc_h&V{z|?1mUX)&PjrQXwb)WNz)kXP)fh3TMnPBtYd0bGliI z_{-zN(Z%&?IOYMFOuNk~6U-sauH-DbCRR@{Jao zq%kuN0+Pmb89R17s(5OTBt5v+(y>5E50}I3q`>KmiW0X(V+y>N`aqx^Kk|>Ad45Zi zh^_G2s-;5$hSv9gv?`Fxg~$YoB3uF! z7EO?KqIVh%zU$RU3k7iCtX1qTPD z(`)>Dp(Z{^Q+r$g+Q`fLlKGzRs^A5@`+mKi?@9+_W}MtYc;EF%x zmBSL1va5?35v+&yhoQGlpTQSE}R0@q`=@d%K<_` zxN}Qj%dAPi9_w7!vr=})phJu4HlpT9-NEW1yal$=e&|*p>P3BMx#u&I(Zw>L^e$uB zj4K7TjxagW?0*Mr|F=NfasPYpE$#i#r|_Bd^e;gCt)%p2uZYjHtut=K^~=tf=h9!m zrQqhP*z8}xhlXcLf(L|*Yx&X~5IV6iYx0Z2?hYCJD;i;1#nw1nX?`Voto2)glp|Sw zdZGA8k>pNc`Vng|0_7(NIm*x#EUw*pW^9UskhbL#q`G`&HCTHco`jldNMS#*)+W_8>oexwX17G^WMmMZMam2^CLP_*YuH#{ zAkOB!#vA^a`$8&nusS3JeTFsAv+o zQkHJ(#UiydVc)P&$qUwZc_-KhmH6}G!)wZ~es3s9ajPb;nTIH+WrV8PIm6|Odq(>S zuhaf2x`FSQ2bD=l?J0=%Segll^X@3Eg zjI1oqGXjfVpBIV!t~c72uIj}1VtZKe}IjvOhs%@+lZDEPOR+p~FlT37?N8^Y*H?{_vx*oS<10oxtcx!q;mhmZ0;{$m}vbkVDM=!^O_UpGRNVX zOZ2q|Z-MJzv4EI}tRb4n2D%36b{$RLvt+43>BKvB4)|v?5`;qZ8N$9;E$0V$R`Us_o)Vc) zN}qZv1Jzu>m0(8KWABYV>dh~!%axG0Mk|E(2_)dDj#OY|$Femf{UujoJR zG<}+bb*?f-F-I~3I*5IiJKiQD6Pw& zR5dkO4V{n*=}T#(Tp>xp7ER%p6|8=^^>-?1+!HptcoN(bZp$HcfMx!2enYl^cukNt z6C@1hpXtNHD4K9fkJhNZq?D9IrzD!w^dm{FH~=VjCE(8zXog zr>{MM_2cz%&brlvl^0ZJNkP17FAFSWrjhmDY>dat7of@wLhgg_`!6j;Sw!w;(`Qu( z;h5L--ZB*&QyrjU=IkIYuO%BsK~)S@FDg1AQCHdd{%~)yR27UdK2^p%gW<41#(1s4 z?2h?Sd8lN~BQc}?PTgUtAZJKM?GCM}6!DTL+EOu^Z+Dnb;-5&{KfV^JVf|UWeO*-b z8a@&W2i)7*mR)5_Hmon!EADf)2&!e}u%=s14z5HW&FXVH!#b{Ok>VCi?cxni;B@FL z)Fao6>RuO{QyuHqk<-(X9EoBP2*&#z0o6c* zRD5CJX6++|8U(dFmdJ1G9-f!&e*rLE3eOU~r*^A58={8<$!Hn8c!j5*-IX>tXtcz& z-FKCaEjWo8nYSbe-=qdj(0^7M|2Uu1-5ZJylni+!qG zmhik%QW8`JK6mzZ<~>-2OIlpvOhP$EB-@u0LZ^^cWd2+Nm8yO|cK`Ie2gf{Hxh2zi zbR~LmLaWqT%}#BtRELCt#s_OgVqBiBdiw=l?wWRDU`xdn^+pLZO}(KG1)sA*JP~*-J(_;YyPtX!xw0)vJ3`rMkmF={o9i`M;Sn8^Ro~5kaZ+C+v7W7};N|Vy z;zG)@fC;zkw4#d~fJMzjkdiJ}DWx>t_)2B}E-vN4+I3wzg5I%bi}=`QwR5FI1a7Q( znse<^7~f!6T7)6#OiD{}a#z^KjX>l0QnDp%MxjiKCQ6pVF)lu-9Afy7rVc!0qp285}X zusHpivrtYOl*e!j?!Ku7M``83j@g`hT?g>gqF@S@7Gr~qj4=xf zuU(gmN(dsNmYQ&HHzVOv8bu5|48%HJu^=njQs~s)|2MA3tDW0iff$|_vS8zOeE52K z+d4N37j8*dz1bHg3bn3Qn*jKYNnkIKT5cQTCMJh0vlx{Z;6xH{%~_cL7Z8pTT6_7U zWaX~0p%F)(keT8~vtA$OgxOD3%cc@YKFDht5>@LqWiE7xd5y-6vw$)4!V$6(nT9wN zf^%(}{fT8TmGTc|skgLp`4TGUn;_S+%0%|M_h9wQ6^(X<#|3d{t-pELeBg9Xo29z_+cd;5x_IdiAL^OjQuiJW4Br zxG-XXT_`w_*&E9+l69CL1-Ev;GM|J3)Gz4Njk>Q?A=97$6!mLGNBNmkM2h`#X!A5^ z0w#ker+4yA;wK1{oVL%Z<8#>4i#AwXX~KO22buluov-n*s~Y0BzA)ZXOK0FP?CM`3 zXSPf2xg=h#rSQp8IkbY?-4AJaG1WQ8%Na5%TxM7IaCokK%Pg^dW473MjIkKANB&COYcyi$1CdbQZd6G#HzOzNlgCinymLjbvcjxz@#i99L{&741 ze~$1G9aA!bDzvHTQ^qvDAaT0ct0NQ+T>98ts7||>qn>?pYtY&~bX*zUO;b>>`u`YOn!(a zG7_eyCWjOqj;Lg-3`vFA-=V*$(z9HmDGA2^;)Bfd3q@tuS**qzLu+-qWD8kb;pIn5 zZ3?P%j9Xmx5ekjhIGR6{QS-rGH2^@|F>;g$p9n6kCWc>cCwsJJT!}N-q&4vupT1pF z_*?G?A0Ywvvkg&x{#_af>y7XNIH{!ti6uTlRe>8-wNH_6Y2U(vu=f!Y``}*iPBgVZ zWOlj-e5oV?zy5aI8+T81Gt)ga)BC*R=G}X<{&03UX@>RY7&W7Fmh$<#eq#9^UCUOD zx)I4&?G~GmnEL(+G8Kr)tkVqh*>yfrOd8yLmzfO~Kv*&hJU-a)9^vy#?$>d5uPc>2 z)kpHndCvK9!QS;RTTxLEvIA$(H(pA;Sh*48F}ICE+Ca&15Vz=@DE;UP0(7juqeWQV ztvgttmtHjJcM^173>5w^hrX=|(qKHpczFE<;JDR26HUT5-bPs7i#rpI+s z3Ch+vdZ;nBNYLIDGwv#t?2WD}ES=bF@hCT6j8%4}D$=A=+iinCgQwIfL?+DX$YIEG zQQ-@f$BdL}xpoMO(&}^a50yNhdw05neW*!tZFG9Zq``UP`laz}%5uM}xP3Yz#kNra zgFdIDmx!A!yj%@V18LU|Ym;AG&cHmgn9mxgLQaV$+@vNcg$A>TB5yBX<`oDNRqRx(aH=?6<#^9_(3JGVnox+9TXNS8cjvS9;N~p{^U;e z7eMP3{zw$Uv;vtd{1d#*%)^E0(KQW-`Q%#h*Z8~EUqG$C$VW=U>crHx40QT~WT-y^ z&rE|!Yj4cb+$s0^DBCx?h-t4gzi6LkaB z5~aV2j6Wk_6i7sQH;T)Vz1%ghsw~9qTac3<8y#sg4JuHnWm(})U^A((DQNW>-g0Jk zTkey?D`W<kJI+M%+S!NJ zes{I_7oRcz;Q1e(Qmhdrpt_vRw`$MHlxo2@nR~oI@1XVtX>;jj)ZDCC2d9kwXi@6N z_P99thGN;*aJcvGgjpuA*I1)xCsR@Lj$U)4dH1mTtzq?V1Dv@5FUo*ovJXG=Q?SNShJzec}U;xJvkOYMgknRq>yT0m?V1 z2n#w1jW#)Ul55}C7L0S*xd8SN=sYSMEdj&3T)kUbGb3nsD$`L+M_47xL?MvC1GEG( z+2^08-P^RDZ*^|T2#h$SBtL?y8VyD6c=juE*wvac8OSb^O{zFl6 zsntk!H;o|0F!K?usnu6E6+LNwj0}y=)qATT@lqZ*OdS#FafRg#NMk`6Rq`cjgGNXq zxonx+mal=P7P7$Emq`dm2l_nywf`@A>r1)RNG>F<-Nh6dO&5 zuV&V|Ea8DiTVAc56t!sVvyxXWn<-zTf_2m@W(erwQJTn@)a1`CX$;?B*kk}Ge-_^G zh`R5f3fJGwen9tU(x=YZN!j)EHquda#xT1N7w#{svBg8Pv8}NrTlAWnA#Pr;y0phB z(MB7;u&J=m*1!W9UbCdm-cfWI#pEtz)EjHxe@u;nBYf)367(ANCKb&I*hRUMob=Yi z@s>t#ocs!@c*4U^GAO`gge;islOr44dXB^QPR4(nt=x4*amS=~YDlst@txPE*E=j` zE7Rs&E1|u2eM$6ejKuYZc7)HXYoz^7MxYJGCky`Dd0>*H=`TRHJMf*}^xZbQX9NNI zyu25+m+*D*Mt=PvSI`UlM5INdb_FkQboMs!K|Z&NY1R!=aba&eJn?PtdPj&96Dyv7b}!)U z(NVJYdhU?-l(oJ}G4DIGn%I+Q@uhk)TGUT%oS0S+xG^7KwI*Mv-XAVX+@T&1ne^UZD z-qx<8FTYMc{;Q1JD@ko$WXH=5kPnT*EjYWXs=jAh{x2lS5_LN+#S(7#s;+j=Gu}RG zZ%R>IOi(xx>gpfVvQAO03}Mj!$}NK^;_ z;7e13lmP9a&FDW}prNv}AH&+|3(bnpJ9lLLDQj5Elsac0gIKFu1|86^Ahu$M^ISH% z8_6%lYYVhwn|QvgSCT>Ewf-VPGT+wb+BR@?jiw=<{99NXRGLYx>M|ioD3kE7C z2ti1MwRikj?DEyB3}@-M?-4>D<}1gNd)b74vzCGO>mojr-hrvx3AS4bbYU4fkGE*| zN^4r?Qwpe}lCjLV@=oVlfM&BD_2*&6V|R*#Ub-i3^S2Hz zmAM3_OnL_a2cegep20`nZPk;%05I1=)cMDI+x5+M3wzg<8JIvm**g>}(i2pDbj38h z%lFN484FaAaj%*!8ToyK?wDZtC5+l!p!OGQmcGp2-J?i?{*zTH`GBeov)>>Xt3!~Xl*=mTYw-zH2O8LpyE^@IP z@Ae>v4#sXZhZ;843HtZ%(Aq6O!>YzwRqfN-NpT9Wqcod!)?7S^$A^~Y0}!0sx`tJ)`~)`A zUDlv;>^M|G0-*>w>TKTwvh9jyvLU83c86998Aro(F=*x7<`i}|_3G&&Fn>6usqfvU zQD|;|ag!AsJu7fgT1g>@^)!E$wMHJ2VKDdE4;mtksr5dCO_sFP$Uq(QCNF0A%!T>gke0vyOir3-C+Hzage5Y@7)M&D|7lu(fnTj%5}Qqe znIy1HV%MZxVF_2*zm#>uLm*3|rPOM`ey5%CeAjn<=Y2KxX)?t@T`V#-xyK1MW%V~T zBMMMF6Fppu%UoI_bwbp_WD^0=-4bosWycGzo1H12#8EIPTSR? zi7=z)7C~bl@O2t@7=l-1;?$4dqzzjWSPO6ab9GnnIx&-Oyv=fG`a}TZ7su(^cMI<` z(&orXHj(ti>(C`hQL3I0x67lDY8ALXdUFOXyp4?}>-n1j;$6h+ujuZP0S6(=|lcLS$_d1THNPCj33H-zw$n6r1rwV zJA)ht-xB??^CLg!_p17x^$dHRcUuJ^_x=7aV3fE^`0Fd|cFf29iN4J>-d>L9SmqP| zuy^l$v)>K;EH4Vq1UQiSg0eYJ=7QU+OmO-9nY*p+AU5R!npRJuc|nJXIdJDkkHKQj zm(H1UdmLg|x0WiM>k!T>W$tvDCI-cxXF`iOZ3_zr`XamyzTEN>#obG#6}N^PTSa5~ zXzT=^O|0VTVg{QCN|3lH8Pipxgs=!(2nv&~V>FwO1;%&y76!YK;hLC|LvZ|uh_1-D zPpJX9W=dAJZ&Rt-!y<{2Fp=jK3#9>>ZU{ldw*rpTFGWW;cZhNydCqo!0Y7~9{*--w zzjOEt$T9OT|K0W?>p$rK+R{e=cWZJ`7M|1jF1wiAv!ao_rq;eCz7p>XbQ=us*D28ED$GddvS zgkFQ&YS2AUWZI?>G2Wnw{w=+ZkpU?Jh?R4g}6M@z&YW)tlb(*4$$pn!#V?=or3(36K_qP$Y1Y zxh0Tiia!USD~jN&vfnspk`HCcwR_^|b?b32AF!x#;+@Q{UR$7#$N~887&YSD$ zz8g!M_P197MWYKBAf-$mUMpSJR!w}!e$};R`*pAH-?=a0BFk(rYM9~C3{~>oAWSf2 zkFFk{$TPOy^RBn|o~xC)_;MFv1>B|^p7{}OiNuoQVmd4Zrl~uR>u5jd=Kg?(=lS=) zfHt3szks#9zW{^3fU3U$5fI$)82MM;v*U_WXn>a64=Rk%+qAXTT0G39+-SlYFzCkD4g*rnQIJ z@2H%B_2=rRebt*|m$FHqzp zIw!&L#~Wc%zT ze_d)wu+^M|dvjoBdE-WoprRA(h_NBH#XCz_L+Y|^N0C{rNx74q6!00ycg1}B^0jWL zoK!{f5q^0?lD*>DMz@yG3!|kR)LI3Hd>-=9>2^jyL7Z zH8VTLg~~7^$qw%>@`S_)?mJ<3#G#2+1r)|#z&&@gXVH%@eBeI2;@Jh1-}k$UO%H*= zLy;|uwlM3>Zc;hJZjldeUmXdL=9x}nb7x@1 zQ_*$tdG!}RZ30%W76-0V`6JA#RX$s#T%qg4*qg`m0Y8QDmcY`b+OF9U%aMKHj*!YZ zrz0o_q>r)$$|xuEMMRU&gLjXeuXCM-<5i@5uV zu4@nSt~^aK9^mu~@kEgeZM>ge5&eFGP*U`KEa3?Dx<;(=C}{!bVV)3K)*Qbmtwq&r z5I-33I6!=9TC&-LeVLuCa`(6Cp7{>mR!HrKFF$Hq%$8UC9<@AowAvNIJ^ddo^wYSw z_L#EW=B`fd294iU!gt`GSc&qna|gE9*7be#{RL=zlz4v>_>cSrfCKa_8@c)(OCBk* zzq_>Np*>MDF-Jo^bGxG=(g zvP@BOz>~R%L z*H`3nRa>v8Nk`n$+EKRRnxin;%042CJBWVeslvJ#v>D)g(WWQQUxhWy;v)rV^T(JARE%WS00sJf+Y3ji^wzjf`tXM{9`h zK4`c#)v;@eFvh$Xnt-!PwP0&}JSYw+jd~xe#e1sOZ1dz zgvQ@IXZ9{1jg|jN-{7HT^xPhtqn2&&-MR!iqZYYLf#@<>4L*o*6Fp$$9+Piq)@k9J zpk)5mu-YPL8?kg1WRIIrBp=75j*JA2o-rjc6^KM;Dr0yVyEoL17&F^{sqnPBofBSZ@@XB|0JFpxH9g_87OA{1uWCmEi?b_doZ}d{{5|Jm2DsSJR`Qs&f{VX-xgh# z+j>|1A&Q=pRGQFzWKrJ(Hh@riV2PO{g#K8k*`= z?K%t*7#i3w1p&F!-VnfY45}V_X z+y9B?Bsqg3gd!w0wzor!n(ALVhX2b^>}VK=vSA_nytbvR=VZ&E}Ark<$m(DdGnhJ24MO|jR+KyK6S=UM_so>BOJMEDXXC^GpAIsYirMIutY;(g3nYAY_#c;pM=ZmglyMl z^J=IF5D8@+J|a6|LCvSUO5ceu>HUFBjp@B^PY$)HqME=*x}e@`e`4jSn82jHxwXxD zedsLf8?Rq>5&38H0EdHaYSZJY#jp+nKg!Hj?YsN0wakPZ`0xaVhYgpExsk%kvmA~b z1S-?hv%HyA)e;Qz+-W==qRD5-J^VHwo#E@Q!I+0t&Jj7+Zu9v;z#Mckn&n1qPJwo78GCG2)PJZrPv zfQkgmxvVl^T|OK}Zd6Dz`~Z59XC6Q&%@+V}JhYJww-IIHhm0hAJn-Eg$j|8w^X~y| zx@kUQN_%}IgnBk~mZym*aa=`5&*^1+CGaK_&G-};AR@wtA|Dp)SjB(v8J%r@tKYZz z8tvo9s^T{Nd#T1~ZNFnwmC@#X*QJO4VD!{n4Q(;`nxmf02xFC2$s69b2epLyYLdE;S%}?6g(I+_@}yjOfqTvGoEIn8JU* zg>U*^$aa-fVfjabNjGqO_$yc>hzk1S3*mw=$nyo zy8V(AzTm*%OGMmZM*&&Ho7y5ljV=eD-Sw5{eyqNYu&S^BH$5R%7H8)sF|hA2Zbq(h z6K9aP>_%;wT*g)wYu0vpl}8hgSx9_pDTspr9}GZ~I#??QAW!WhO@|3r$Gy-9ffzqNK^0&0lq(-7K@kD>G>(C>PA6fG(1REQnoy=+?e88+qGqKTSeQ zqfK;4CR}SDgL1MS`5?$)XIIhZY_Kjx65t(Oxj2`X=HZr>#%m9Z;`Ex+jT>*bJ zV!A%oz2?xonS?>%8$^^peGgWtz!X7Yhv&ZluE$wLem#3N2VphEHxGZ;zkuiPS;sd~ ze^Y!7nRkaWoF?Q6um#1*J#%)Q><&-<`-zID$U|a`T90lxO=70KT^$w|#dA=9n{eG>u z;FzpbuQ-068DVroF6W0MfI8j=F9je27=>hR2mPhNUIaEM5CuN;usU85FTH2a)_Fa) zP1Nxh7Ti0#+?G)rt1*@p;0O8O5cC{-h*VbdDe7v>kXS`7P%{y>Z33!Rh-t13_lvg% z(jl}u8ppb072tuzjW(sEqI z#(q|B?M$n<61kT!5X+??Uvi&0h9_#>4Z*0NiKTXtK{G@KX>N}SIN-t)12%n9mR}Me zICf=^LnBGoF~k2H?FoGjCH|Eid2IiY3=BEwT8l9f8ON@RH3bo~7%<2s|flfzYvc(;;@8ankl!xqq&d)Cf zZrrq)*%8XP>YMtkG~Ba}t#lN0B3|Pb%45T;Fa`zoUQZ5+OMYrM8eMr#&5zBng8Huw zhgNkG6@|gUWM{~aLsON@QO;;=BIxYTQTiXm$@i0{AsbjGPIhWT(yz4{XojKmN_T6;-cE5a!KAU*;CJ|rKm0*eS(V2)Y{x$ zl~q~={Da5|(=Ib8Xgje)(SJf)-+d%1){-%VgN_`q=)oRytJhVR69>%&kHNxf-*4b^ zs7-v{Ts{9$uw3dj@~8bo71D5H-PNa6K*rrwrc(M&O*L zw&;NeLQQ&SryhR51s4+we}n0_mBo^hT~N(9mN zaOil_?4lYC-$t=h%bV%ppqyvu+!5@|;K37wB#!2b{K{(UVWn9Si*)!LsOHSbN`m|V zP_h9fl94e)TgUCv@2U_#mJ!qq6br59%_*XQb6O}z+f@{DeP`PHQjf4qb7vikqjo}@w> zOj>MX_r)~NZxu}5<@2Wqo{CuAO>_^MEYho!1$ArPq@cuqmuxV|Oh!;3GDcj=Pd~09 zF!ov|pa0Vtp|jAf6zCwxni81*xY>59sGg@9#f3M>DCX?4;N{wGx9w`Ee}yVi`2L~4 zI}ae@2>;{4Ny{N-PhA9eJ%xWZ(+bkg+?z z0nz6Nb{d`TF_(T7njw%_5TKiMPygge3LziUrC9mNR=z&BGi-smbwut@ALfc@wvdS- zrK`*uYyg&U?;>nX4ymIP}`Tl7|ST%uWyz#SAG*2gbZ$dFZhM+=8-#z)$g+=55Bh~_j)u61N}Ep`up zFpAhc(X8>~s9+i%+x#kIU-lMIS~Gp(Cu9@~>TTa{HQOz_UPT7i7)P_lqZ@r;!yhAl zajhHKw6f#c*PWG=_T-&eW?XGj?!k4tp5m;mtd~TYFP*|0-8VT{kPFN~GyA9;XVFxK z!jyGfmN}TC#s4MVRP~Jfw zx%7sw*FAE^G*+msvnE$kwpm*!omkl;qEc0puB#Lp(5U=;eKAWzgZw*_HJxT>oj*PW4dJMsYLb}61iyCp{%4pDDJd-6WAh-s%0HLML(lQuUHcmi!Ri)*n zj&tWY|4*AaR0jw2nrK{y;H&AwLiqvwNE%N=eiR zcR#Rx^C;UNiO}7wCncEXhV7cOGc0&J1!zGh*i{#VpKehGuk!b0lKK>3=HJ4SgrORI z#4Nr6yM?ZQmLMU0=yBA)ij{_``5ylRD3orXDL?=4?R{&laZulcb*OGVFoksInf`!} z=pNa&Xg-!SCsgT>YRj%!saz&|CYDS=H!qJQsnRsak(;xH07tsrrh!*NA+hOu9A(0= z>T{@~$pmHzlkRMR)i~yM%3ROQ$wr?nWq`>m7HihSsf@xJ>Uw-lU))5X$WUqk5GrD< zsT4BbTX=~qTLp|s+HR&r;w6-^+1FE0*)5!*6|*}|%=w*`CJFSf(iD`1hx&LDe{w?a z(H(|Jf%|PPfUOYO^U_s*|-%`egNIaK91)VJr>q2V;h5{4dM?QC$eLS_F+6eO1!rHBq=vAf( zSVaSiV*raLe=02tnpLOxFbD5M6HN&mLt3&Ca0#wX(Ser=geE7Jj>s<9S6x})pTIy4 zH;FOTn}QO;W5X=68(vvDnTRr;*f@i8qKb&ItO$~PP;Ev6n~G5@$RQWv(s^1l&Z*@eF%Eiaj;c_SX&S&l)~A~?0!J#QhhJg)h}3Mn-Ckvj8|M-@gAh>X$QE;$-5eL|bR79i_uFm!l4aTA zII15vW`&PlK9akgK_;n9%JP8@A@-;MMTMWVa-)m^Ej(?@w6@tG7+KhWJjXC z9qIY?#sD`RiWi;ZaU5fpi$qj^2KEPqnn>C1x#wsZJv9~TL|U6Hlff*)qz}d7&_YX3 zbYL{hT9)+bEgDBNOj9a8>kv$%=%i^(vc#=~e%h z{xTSqtkMVZELJ4>39y>(gvsXYfGj#re!esRx~zP)rK$sfNUr{ zEf2Wa6{w}z&Jk5KICoU%k7Zo2wk$ z*Us(AU0=$4*ZW_q{{VJ~IR>vGzT!VG-y2rlUtUX(eFIhQXKXd@%yPqTmv^V}3u6{v zY5oEH+6uia!91;Z+t;?^lhyGRC@6Q~mZu>`cZK!;I)M1G zdg-?paqdC~m1U=Npzn&rOKz_LXZ(fd;CrTCM;AN%m5qRR+3w%dLg%w|X zL-`1@)C|(u>nx}`G9$t{8ziEF9UP(>ekp{;*cr_j1$b15-NpQPp(48S>7Pg+uY1*u z+}c-PnXYRKvoX3bvKeKS`Bu2o>pU12BN^yBiRqwm$Pj|sPTUIQ5Nd*X#Ks#qdCG2U z6>LJRxcve55x*6m?uq>K-T+ZYfC}S%Gxyq=fy1&maUmFtLAGba+q79 zN51If7u{Y<)HAn?M2hMpH&QvGV?9R{L`;yaD3{NRO8B+OD6po5xNmnE?0xUDx&u!k z@E?jGs*JblP%(d#Y*rEOG9mP0%1K0e0pNj}0Lv9Jh?7D!#{Qmx zXr*j>(#DZLD37jiw@2ybEqy0+_`rH2yTkf|(@gO&ULt~EYNc~A>2+kN|BZtG8$?Yn zuso>GAgMg;@d7|t{n~9dSrzPdK=rDP7JWjb!kpXZ7;0?T-atqP!N`jW3*>|TeudIO zYl>dY-V8g0bAmd3TYyQ*D{7OTV6?0Gr*=VQmwVWLfQQ!d6#4a9tNEd4cv!0}A`f)Qc|n&JHrn z$;j=`{;oYs{=VSlN372kw43am`Dxw#MY-A!Ogh>%bLL6zr7ga^KFn45z`j|7uz?B& zlCVS$8HU+CLx+v8rFsVZoGCc@$&wi3U{ZC2$HEjMr=Z<1u)gWEEG;d6MIo5R`4b?7 zeSp?5m{3ni=$KB>;tVSRuH@$w%_$laY%{ubqPL2mPq?kVz>L1=$u0p}YNfOI`-_t` zceEF|MpT{x`C9*c!I7mq7#?~UZIdZT(P(kcCNZ8yJud=YZG@>|s+*b&MCP-Z?2zu} z;`!e8Y8t6^$U!!7b2q$7Ygyh_4=NKefRBc_(a4+~2>V-7+cRc%^Eh3@N78`1LU!7CFq*g=Q8W_YTjuG%` zP1oqfTO)^6`~D z)>tiH@$do*+u#ppQsZmXysf;GUi1zc>?>MSAt>tt^E9&=4t=I$GSQzC!6q63c0W;8W>OOC^TUedTAn>eGC`ifys)jhG}s{FM*Ow3Z_WbGj2tbTykN*y--#{NS*%tOY9 zKO*UR#j3l*zVdjpOsM2K%i%1oJ26cN;$X%glirw;H|$_@vo#ER&rAadJZ-bCIg}E> z7Ro{xHkwuoykaPI7EP4A?sM@IpySCCaY2DOE6&nrIvCQt6}S8=e!d-A*b*h^sAQd} z;j5KlWk5!U?cOgSeqPqBMA)Bo>?4n+%U}lvn*4WIU{3s=OhJy=(R0gUZw_p=*^A>S z)h}tuQE5{Kc}c{TF;W%PwHhwIOQ>DMZg3BoaZe_Xtgk%dvNg4c7PgcKUt$S+Nq@{%{Axs7`#|*fFYDP>b6kSnQY?pQz2ALSjB{tKVU>@1QCd%OT7-WkOO995My@KkMNr`(+#l`W zUoFNdy0(9CHfUT!%n12|>eGEpO7TA~rTSUrsO;W;BIli=W%C;vhYqUh ztoBA#Z~am2`6gI2E@zvRHaUnMT^1Kb20&St%4TJuGOJC}(<)uk9W0u2+MpokxVG$7 z#ZBf9G5fIu0exk4>4kn&;3fqC$>SgpqTGp6VZoi5_*ps z4v}Qb_NPFxl?uj!2}2k;t6+=GMI{zMc0z?j$h15}ka)yoYD0cUFO5AW^+^g#N@5F8 zU}G;SL_$Y&>1KSoO`@cZg|;;01da(6ApB=C@ESLN`DE>;pL>sDX6jsLwW?5;u47~q z!h2Pv69Vs2%_k|_V_7A|^9K*Y7c$;p3X1(D!Fl^o0VxAm$G^4zzzYbNUtCgJpJyAp zqZ2m9C{DPcSO(()^W7)W6h{ow^Fc!B04hX%UDW=_;XfRsFfF0GFeAebA&KA2g~`-g zt+9|hEb5DG0za6bSIS!S;hn>O4Kp`c8Xz}}QE`uu`MvDs{Twd>~aZD1`4CeVzcPo1{_{4Ba|ET{pZbw{|rk^#q z8|c{cNo%>EzNyh$-;r{smh`CJO`TEn`mNZ5Rha=B+Y>hUdHk2CpJ{iQ;68L%RenZW zW11l{LAL*sr}N{s;ltsDH&XpemY!@EjV>_sDD#h)z4&fG?n>xTtoI9I!sL!VxBL?< z^1apD+HxwB2h8DKELLUFj@|phEqRt^s;eiqwMyiP9%qeasI zoicFvZRI*=vxv#^Kwt!u9(1)`ay7g4zjPh9Kv6=L+{FzNpj>b z(V@?^7r}xl-k|n-(+*7Ou6^U8MCkT?kA8d&yz`g*lD|?^>+4&OdL z`k;RRKg(373mS}9Hg$c#6nM^5x=W06Ic<5{>62WeRC#6YXI{lR3NJ?_pC7bdjU1l) zK$whb!kR*}PNJwY4-R=6e%1p5vghO7rrc88L8muoo`*mGPtd8U+ zWW4elG!WYNTY^>&+o8YRUH6(gpD~%QZbUlKd%lz}D*4T)sXNN!#YP*~b{P)u} zg%qwd@pCV8!nOl%Z{K;arU3(&x>6ozeJw_v7;n&tb}_~1*PhA^7q-}5`}9|E@uzAx zedQa+sCC@7y;U`$+eN0U7w%aSYOPLQu_{rK2suneKp6`o8Ub0UTY6A;AmCYyVhSVR z9{^Z)y$%JcPBV?!?az| z^l7ZC&`YnI@Xh3ta9bWZ@JYyKwQQvI~lNUeO)Lz-u?LHp!f%ze~N zjsNC2|2vq3a5K37^q+^h-g_KbmV31aV0J@Stf#8JqA;|o4;lBPMfyeNY%MGu` z%6qm~fS0KgB=}8xaS!@|cil=Q>I6EMIYPQn$Gs$d6MF%{MXcF-+7Eb~5E(tsn z8t~6`_KtFeri91XsDE=5%nR8l<^TZbk%pa8-5`Y zsb2F3BzEgM=LTdA-Un2GXOJF;^AQQ`-gMTqe!gquPOK@;Lo}cX3!2AlwnN`hX&DmwezdQKbzF!ASS-f+) z>-aOhm9(z8z7amEuPnASCr`B);jcMg+Mo09?ALq&vk$amJ{|f#o|rM{tKT1oTT^VE z9U*7#HODm+mu)^lKBI$x>_5|5b6VbyqWGuucNjl%{+2@}@ltifI9#k)wDUHOPLa!h z(VOWKbG@*cf_>Sxf8mhNYF5n>ziY^`xyE7_gg9qxL_Gbi;+rD3@us)!CFX?XV2Z_S z-Sml$J*~m0oW)Cto!&egtFq3J(T^1Vl=G?iYxV_n$?Z3NOF81xX6WUK9EG{`e>d2i zWb0@TG!xf76mHK{S9<9#Pad`Nwb1fTU)3Y@?P5xF>=Etv=CB)Fjd zJm22-OkPiJz0;aLv3F&9{q8`(Pq6LB9VYgH@zuab;d$BOm7;eKx)WQX5gTtjHB`}> zKBJBe;5MmAbRWEwq7}S@d<%N;JPRI|i_a`EN@rX7q<;LLrh;CesbF$+x0-Km%ho%g zu8(>X21v;0k#GGj$(P=yW&(oc`Pl8Eh$u`q%11vnF=t2E7$k%0!7*Ex-_I`yBf63Q) zPEYYV?|MJ#k>6p|dSjd9+Q++y;KRq5RsBoy%c0L5SrImE7%G6Ti<&Rx=-CuXdBpZ*;$q)-B}^w#DpcqWxg-bTd9 zSGoGo@Ek#0l+?7s!$Xs;c!c|0WrbwpH zd9f+=I%$CV*+82`s>vn*ch|I3&@a~fk9RGQuYsP$-08S$ur|(BfG4@_KF+RBzotM} zHu}Y9T1ocuc5p+i=Y6%6rcr;#TUM9s7Og74Ho>)@XLx0k*Qv(qfBmBxlv1M8-XTFC z)OP#_kbb#3GcDfC!O}j=@)Ip@UQFLRlcpg22cSr?D~W2rFtuEXAv}WU+c%!u1n}zd zHMNXx(>a3Gnruz;D|uUKGP_tb+(oSjh(pRhAW936Y+_MeG<988B;7#40mJ z2lyxgGMjhaN|gBxNR%+Y2w7xM3^j2)m+MX)i;mop#-z&W9?4z6ozU@XF|fwS(F>J0 z>^d1c=U>)&rcQ%=cQEkZKn)1$o&WRtqfK%{FBi8bvGb$mpBTRBHbPH}un%ipb~SDI zCA3|Qo|S2=t_eGm3ptgp#}7%nXlS<~7AFCRw*?IU062WZ>ZD(u#JThDl$RV+RT`y< zjuPv95pDi{T=i^q&larsDn^dC4#Vc{zma_+Zz-_tl|JR)5$}2r9yPqA$)R}*4tZtr zy092e?F6*F5|3D%vt{u%H7wC1*`~>{^@M39y++|b=dir?9BuBC_w(CKr92}Pi@!>@^If8`x z1b07o@^q~_%HbA9TgpEkbBIEni`!a5OkEgvDx**8F4QWnF}fD22mqZmi;Pl(!6sBP zNMa4E?tx}QJ3$u#WiSz2dl3+PBC$c2;73>2-RK87=OX-&2G@uLjnP9F8OJqG9Q2)J+p{C*>W?6;*-t&z@7n1H+LIr|Ed3L3tg&spj}>I)p4ZA6wHGgx zN#`WtTofFoS$??SQtM}A?0#vUxgjeybz^H*2xw%xRbNjtNuG$Bt#ku={j_P$X)nES zsXh|}UJxs?FPN-u&?XI zUv4Jx#{a)>CYW(+e159F9vHgjIma@&t3>zFcL9%~$C-aZogE}*3nufHF5f$J)s=M* zLajU%Mp@{wyG0Xc^ly?QPU!`?CYU-ppiFUTh5sXwJGE_t{^cptvU?pnj;UO@Vp@Zt z&hov&e))Y$vAsO?0^oEZ8b6iv+xLLZb7ND+(-AkjZKo|ow7xKThOinpfnRYL=On&v zgqnB@04&NtH0E!`?l$Z}woa)wY>lKY#ilL6yEdE^5x>Izo-FMU4~T71Fvy;6{k1JT z0T;xCaXmOjoduA|bOr9ESPW+A2BpWoN8I>=a^iRiDz{PMJPn!Mx(_ErAQ~a!;yG;CVgFlEo6P=$J#9u7jJYh zV_({&e~O0rcA>T@LNT)mlvD#nzZ@D&wsVr(;K4Qv@vw-4wx6ngXrPK;+9T3v1MvHDG;SKeH>B2aGh?tLg82!vDmOYad5HssTa>< zeGw!Gq83UkkdI5`FL@>+`WfRnC2t&6?--T}=A>pAWc{lPX~W^>-2J7RYB9zDe$Z~6 z?nhCPO=I@V9G4FA353(-459{)*=@K^UdqlV%&|_LpTOWG+)8eP)N0{I+yrMzokB$L z2@HDuk7K6ra*GXGXnZ~CI_G=msaj$K`F*Tj#NIT2SQ`zXY~JdpW|j}MJx{PxKOK&F zq~^>Q916fauyer^uS76z7975D(_1(l z`2+4>Xc=+|glxd(hZus0FagnJMTZ+U11`fPn6W42f}kkp;92MVOCmtp;4LsEjhu_Y(-fENKu1jVOJ%%G{LFhO}oUu+~fnj*V-< z+oe+NY|$DTOBZR<(5EV+H?N7%{!M*7>?}}b&A4(FdzgO+JTT=Dq}n_eEZMH$XfEg&hJab{x0fYl$d9&>h+C-WQ6twTU$ay2Eq(% zL5=`enNH_wuzm6WtxzhDKjrZ1bH<)~3cg|Ows*4sj}2V+|J=YuW2#zNQmqAzt@ODZ z&po~0u;$dqv)rC~HXp5gdF+~X+#Z{JYC~^KMzR$hJ-}da^t9wq7NATtw@XF+JVKtFoohhk@&ZY87zX+bE zX3;by=wouzs}WxcZSy`d?~WU5a&ZObEyzQeB z>xNlvnrb|iIb9{akGYFD9q&=!g?>>jb6T!EsZr;#3LKF`Qm<@@iI*8vmC+(I(qeVk zHpnKO(}=^wgKPW~W8EMTUyKywz+U0NnM-NuhH1PoiN0;>U6EotL_39 zi)lTduBxX94N(^x`MIQ-qT=HnT0)Yq@d$;a$u5t*3lJUyd<37&Rf}QN7F90@a$qE+ z37#K}ABrDMvpdSl3Qn&O8}L02UUGV;8WHK}Mswg}%9BLlT=DUdIj3_K1(wWdK56|$ zZGg3rBUVk^XbYpXR<~k%oimAl1@hnfCXU$tT)Hs3HLd-c?af^7`2=2HS_ZEGhEx!pIWF32Rz(?A-1% z8>cuK6twvWo^T=2PI(FpTAnL$vafWs=z8eofZhAqd7LOQ(!-6hbp^JjZ`U&DOUxMo zW>hRI{*FFw(_44+0yl|E2x28NW5r)tZ0zqAsV68<-@Y)$rX| zO}>138H{~QtA;L-hUB|Jfg&)xqO8M#^omWwShzf6F!sa>l|}=n%fv-^!?n8F$d~CS z7btBkP(1`s6#^oQGz=PC+TvleB3gMsHg4gVbwIu9y_#FjB53nIcTI>?A3E-WB2qS1 z2aNIw3NdQP`jO?z8|?C`$d4WU*;UZ4*{SqfRE5P8xz=RUZKu4anOoQ4Ke84vFyVz6 zRhpnQcSHkTeybYt!=vYeQZ*dW(@|TY@$FXAaJJ->ysyt8`4dLF3?hcoM1_b^rU55Y z3!ZqF%Nosg})cPX^W`=kVqBHaP-FI`O-~9V>K3}Fu5>~Fc+tc+rf?HH? z;5y9!>}QBL%vUZ02;GM2-&(OcSIioDq~bqA^Mu%HHn``KT2*zDa3-27CKA zo{%5)$KM?Fx36Eu^9V{%Ubtwc3x1tib#BG?U% z3^n>U%)mT`;TT$7Fq)%}%mALS`@%w#YotF1_(ddSrX@LKvW$dKdBM66PU#flP@7vl}c_BkbR_PmK;_ zjSp4K`xrAlrP+S8#~hse$U1%UegM#JMwqZG~=KhpVqG&+7>*IvjNZ4d7`x+M%W~m8J4T`UKUS_krZ5ct z0YGIZZsI#QHQn=+#29v8`tby}THRLL?xSw-)JEM~0*5T2(&pVQFwV9#$}y*(eAd=I zwtt8~H)WtvZ^l zf5BtQ#>QSCx0O3~YX&@*UM-V#`xgD8jn!(UcFLup2RQX4M2m~UDC<@E)6K+*ivHs0 zr9YR@99-Vx<<2bSGL~wr0Khc_VGlkp1~B3D zYk+xK9O{vlXdX0{-APF+EmQtkCoyXv%9|kq?YB#NEWwmaMiaYLP?tEX#VmgO+ivQ3 z2o8~alj|H2)u6~Vjv@NqJg@gNlSAv8MAf;5C}KMDa79hnw2JUWX|B)dL3Jy}aSg&r z^e`8nB^HBu7*W^)T31ls4CyF3hG>-N-k~-{SuBy2<1|PH$ycv_l3o39*)NDNRjn@_ zRT?_otrus+_5qTTl|G!$=f+g&9<03DY;7fir7+H%WT~3R)1BvQ^5zEK*u9qF=zAJG zn8{W%mGXb(+~sj{-blJY#oCK=Z)0WO z2;BN>Dd19<#S^w1M`(u%byhd@Eyc{m8E%$SGs=HPPAy$d_D|8>5$dyVZn!US)2R%Q ziPmV9BtI@CCCGI8k*zHuCDySEzySyYHevDrg#06f)Gnr9Cva#s`>L%BVmIoE4uE=!eJJPnLiHMUMBe?|(g*3yk5!9^5uhS%+mFG;VybA*M7WYIwt8^05 zK`K^v;UtL$uBs~*1xwEFt4%lDK)6#@alJu_3rn9=HbcRkfjaP{w zAp5IX&Of4R^)L~iqGSLYy^!K02rpNkc>*hNYg=n)%7&gKK{M3SaZBrP;S@#AsFEaM zoM|eNV>a%RBtg#TTqlzor0W1doiH+OauH>b9k4~VcJ>Y-^IO)6FfdVA83&K5 zn6l?i9w=i_aYrcS2rZbI!IdUnoZv{*cL!y8s*v?tUl{u!zOzk&78ActV)|66tqjo` zaatb6R^XG%Z~;r6uuAZIT>GMiKL>|@gMsv4u$^x}!6)Pko&;3eq+-N-003Yj^ba7F zJ&3P~Z%)&dw+XYj2@+j4h37_dmJrL^LXI{KO53sOV zZ?XZ#MHQ>?%tfU49om^vnA`NA#JA1nDlM|_rG8*=)5w}i?8M7OKun9PZUx~`a2H;2 zln1OJGrcBdL8DNKtiXHWbhYDerM$ycH=qRbmf&EW%O}5&Cw_%9l>JSbh$HOa=MG~e zmnT|BTN~dgiD%y#0tv!E)0U3*HulyeN$!uK7s;u0E0FzB?a=gmTdXq=TbYfwY8A(& z7N22fV4$_}>?!l{JLPj!5wXS$b7=F3lo)H8H7?D0hmCl;3W!5V@DnD#&(eyKTM8y^ zOWzfBQ;VascwQWIAc~U~PZ7k4LnasVbA5XbI5}88kut{z1}RkAo0oJbAs6z`Pu0oY zyzR+d2o2FcTQ2fl=xBo|kd3}yt0lI*Y^XzEPgF*i z5KbY0#3;OC>}bk=^`#rUgi{{e!XU>Wmhj?8eHt=>0u zC<>Ts^H6e5|9oqw)vTo0c>5fLyo61;GS*SrD*%c!3G}@LNf-iy`5FLV_s6|Rql{JR z(XnV<9qrK})hLrB{zYdbP;GwZO;ql;wsd~hOABLjPEZ^(r6LmQm9!S=43P>zJJS7j!KOF)Tx&tnNB9dk+sje>1K89_NF3zFztj{KIn=t7icW&9_BPJq-#q7}S6#M7 ziUG1{M+P6zASs)m%vaJ4FO+4CRS98{!U-T#20;y6GM#8%x@zbgU@mHO$xnIRcgN({ zq_iL565tZ6RU~LhA?Glmt)li2S8?1BJO-Glj2}nK)5q%9@@wjmQ>C=Ad$Q68b_!;~d)*<4N*P;#CYS?#fk7{c4m4Z7c>N)NB0RwSU^&ly zqW^{XuTN3;U!J0oxBhU?uXC&ymu|*U8Pu|B6r>yK*{h5}dCPaWk2NS;!=r40&a?{E z10$`$_V{p%ebLe1W7#I-KuI#`05rDOzg!Umw0BaQotZA3ZmjA>@%ep7KR$QKWIZGJ1aZR zo1U4OemGN*n3|TF=v28*sjg1m46!pNAm6 z(U@6kY^M8}ee(n0^8@ApbKh!hs3REjquSfxzWM#Y1APDets`}z>`!IL``<}Kr+j<* zsHMng=Y1pU=ZTom<>X2l)O)1!_($$57UiTO!vSO=G;{$4AYcI3tNqk5gNfw`p}A|w z_PE8ZFzq8;YZXC^WtJeu0F7kmjxx<4<-k>RzX%H`a1K6Koj!?@FHN-S9XP~GZe1y~ zIkJ2Rh5Ky0B7q@uWc>jpX=$0A|KWC0&KN6j9Wbhqkm3{xNr8+eSujE+fmB2R#{ZpO z#XXTxf8}5iv9~*5xhQVzG&u^Lh1pUIP`=<~&Z%s~9z$sRGh)X*9cc;sh1vWB9O9tY zb@rRD0v@4nqfR;q=yhNDGzntVZQIkorT5}`{B<4fP1f=O*=0vGZMHjIqUX%!!8MvK zB4j||^LS*N?G6$uv%CPxr1GK&i6j^W5Yv?c0C1YJpP?h2A!*AauGJjDCsF+&(rw6>Dt4=p&`ywSLox|w>!`?NYqsL zmwbrLp?A9&s>wCkfW2qz^kYiI(o}e;^*+mYI!~9J{{sNPYSL0Y0H;B2M7B43k>@|$ zbP~?l=w@O*oU%DRB4&P&u(@qpa!&ov_sT3uy8+5O{kWVh8vSS0q_EGSL`IY#Y6}1WsgLM+ z|HDy|C*@B_KaL*f)7Grab@P_(A_ghB6i33Kjys@im@CL_SpC(Sbp|du6 z#&GkuhS^D+hycOdIe4^)hY0hWIH~`PQK4dnI8i}Jkoj_9zGduxEqXftwdmRYkD{0Q zq>9f>7WVjZz$b2j%XU*a?{oeS09|7xy_RSG9dUs-`0=Ivr<$*{2mT_$=jsgCEZakI zXV0vg&vGl$h`pDt<3siK^s1`%PK)YzXSdAt_6xR3KvS_9bs3dqNJV-(rNo(lLV|@!&KSge;=Oq Pzi>qV5Bfp>&-(uZ`KK2V literal 0 HcmV?d00001 diff --git a/code/web/sys/ExploreMore.php b/code/web/sys/ExploreMore.php index 10c99b1f38..a80bbe0454 100644 --- a/code/web/sys/ExploreMore.php +++ b/code/web/sys/ExploreMore.php @@ -733,7 +733,7 @@ public function loadSummonOptions($activeSection, $exploreMoreOptions, $searchTe global $enabledModules; if (!empty($searchTerm) && array_key_exists('Summon', $enabledModules) && $library->summonSettingsId != -1 && $activeSection != 'summon') { //Load Summon Options - /** @var Search_Object_SummonSearcher $summonSearcher */ + /** @var SearchObject_SummonSearcher $summonSearcher */ $summonSearcher = SearchObjectFactory::initSearchObject('Summon'); $summonSearcher->setSearchTerms([ 'lookfor' => $searchTerm, @@ -745,9 +745,9 @@ public function loadSummonOptions($activeSection, $exploreMoreOptions, $searchTe $numMatches = $summonResults['recordCount']; if ($numMatches > 1) { if ($appliedTheme != null && !empty($appliedTheme->articlesDBImage)) { - //TODO path to image files + $image = '/files/origional/' . $appliedTheme->articlesDBImage; } else { - //TODO inset path to default image + $image = '/interface/themes/responsive/images/summon.png'; } $exploreMoreOptions['searchLinks'][] = [ 'label' => translate([ @@ -760,8 +760,8 @@ public function loadSummonOptions($activeSection, $exploreMoreOptions, $searchTe 1 => $searchTerm, 'isPublicFacing' => true, ]), - //'image' => $image, - //'link' => TODO, + 'image' => $image, + 'link' => '/Summon/Results?lookfor=' . urlencode($searchTerm), 'openInNewWindow' => false, ]; } From d1e99b6fe2f42982b6102b173f0cd2084cc65cdb Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Wed, 28 Feb 2024 16:10:11 +0000 Subject: [PATCH 03/15] Feat: Adding the ability to hide Explore More Bar --- .../themes/responsive/Search/explore-more-bar.tpl | 8 +++++++- code/web/sys/Interface.php | 1 + code/web/sys/Theming/LayoutSetting.php | 8 ++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/code/web/interface/themes/responsive/Search/explore-more-bar.tpl b/code/web/interface/themes/responsive/Search/explore-more-bar.tpl index 96ec4a1f11..991435230b 100644 --- a/code/web/interface/themes/responsive/Search/explore-more-bar.tpl +++ b/code/web/interface/themes/responsive/Search/explore-more-bar.tpl @@ -1,5 +1,6 @@ {strip} {* TODO: Consider renaming classes to assume they are under the exploreMoreBar class *} +{if !empty($showExploreMoreOptions)}
{*
*}
@@ -50,4 +51,9 @@
-{/strip} \ No newline at end of file +{else} +
+
+{/if} +{/strip} + diff --git a/code/web/sys/Interface.php b/code/web/sys/Interface.php index 2d27d59870..1bba0cd082 100644 --- a/code/web/sys/Interface.php +++ b/code/web/sys/Interface.php @@ -740,6 +740,7 @@ function loadDisplayOptions($fromBookCoverProcessing = false) { $this->assign('showDisplayNameInHeader', $library->showDisplayNameInHeader); $this->assign('externalMaterialsRequestUrl', $library->externalMaterialsRequestUrl); $this->assign('languageAndDisplayInHeader', $library->languageAndDisplayInHeader); + $this->assign('showExploreMoreOptions', $library->getLayoutSettings()->showExploreMoreOptions); if ($location != null) { $this->assign('showDisplayNameInHeader', $location->showDisplayNameInHeader); diff --git a/code/web/sys/Theming/LayoutSetting.php b/code/web/sys/Theming/LayoutSetting.php index 140113b331..9e68ad8750 100644 --- a/code/web/sys/Theming/LayoutSetting.php +++ b/code/web/sys/Theming/LayoutSetting.php @@ -16,6 +16,7 @@ class LayoutSetting extends DataObject { public $showTopOfPageButton; public $dismissPlacardButtonLocation; public $dismissPlacardButtonIcon; + public $showExploreMoreOptions; public $contrastRatio; static function getObjectStructure($context = ''): array { @@ -103,6 +104,13 @@ static function getObjectStructure($context = ''): array { 'description' => 'Whether or not to show icon instead of default dismiss placard text', 'default' => false, ], + 'showExploreMoreOptions' => [ + 'property' => 'showExploreMoreOptions', + 'type' => 'checkbox', + 'label' => 'Show Explore More Options', + 'description' => 'Whether or not to display the Explore More Options box.', + 'default' => true, + ], 'contrastRatio' => [ 'property' => 'contrastRatio', 'type' => 'enum', From f6957cd7fabaeed7437c50d8675afe08dfcfdf4e Mon Sep 17 00:00:00 2001 From: Jacob O'Mara Date: Tue, 16 Apr 2024 15:15:58 +0100 Subject: [PATCH 04/15] fix: ensure summon author names point to correct author Previously on records written by more than one author, the record could sometimes display the sub-author in favour of the primary author this patch changes the getAuthor function in summon record driver to another field that is always populated with the primary author. --- code/web/RecordDrivers/SummonRecordDriver.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/web/RecordDrivers/SummonRecordDriver.php b/code/web/RecordDrivers/SummonRecordDriver.php index c6f6fc4a86..bef54e93fb 100644 --- a/code/web/RecordDrivers/SummonRecordDriver.php +++ b/code/web/RecordDrivers/SummonRecordDriver.php @@ -336,8 +336,8 @@ public function getPrimaryAuthor() { } public function getAuthor() { - if(isset($this->record['Author'][0])) { - $author=$this->record['Author'][0]; + if(isset($this->record['Author_xml'][0]['fullname'])) { + $author=$this->record['Author_xml'][0]['fullname']; } else { $author='Unknown Title'; } From b26769d120eb702b8b524eb4c3b9086d2e30a8e0 Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Wed, 17 Apr 2024 10:03:54 +0100 Subject: [PATCH 05/15] feat: Set holdings only to true This commit removes the results from holdings outside of the origional library. --- code/web/sys/SearchObject/SummonSearcher.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/web/sys/SearchObject/SummonSearcher.php b/code/web/sys/SearchObject/SummonSearcher.php index f6f48dc6c7..58dd3d0b01 100644 --- a/code/web/sys/SearchObject/SummonSearcher.php +++ b/code/web/sys/SearchObject/SummonSearcher.php @@ -41,7 +41,7 @@ class SearchObject_SummonSearcher extends SearchObject_BaseSearcher{ protected $searchType = 'basic'; /** Values for the options array*/ - protected $holdings = false; + protected $holdings = true; protected $didYouMean = false; protected $language = 'en'; protected $idsToFetch = array(); From 1d2d6a5ba0b6910fb71292a57e09322411c7365e Mon Sep 17 00:00:00 2001 From: Jacob O'Mara Date: Tue, 26 Mar 2024 17:10:46 +0000 Subject: [PATCH 06/15] feat: Added new filters for Peer Reviewed and Is Scholarly This commit adds filters to the limit results section to allow filtering by whether resources are scholary and peer reviewed. --- code/web/sys/SearchObject/SummonSearcher.php | 107 ++++++++++++++++++- 1 file changed, 103 insertions(+), 4 deletions(-) diff --git a/code/web/sys/SearchObject/SummonSearcher.php b/code/web/sys/SearchObject/SummonSearcher.php index 58dd3d0b01..e7babc0348 100644 --- a/code/web/sys/SearchObject/SummonSearcher.php +++ b/code/web/sys/SearchObject/SummonSearcher.php @@ -48,7 +48,6 @@ class SearchObject_SummonSearcher extends SearchObject_BaseSearcher{ /**@var int */ protected $maxTopics = 1; protected $groupFilters = array(); - protected $rangeFilters = array(); protected $openAccessFilter = false; protected $expand = false; protected $sortOptions = array(); @@ -58,6 +57,7 @@ class SearchObject_SummonSearcher extends SearchObject_BaseSearcher{ protected $defaultSort = 'relevance'; protected $query; protected $filters = array(); + protected $rangeFilters = array(); /** * @var int @@ -90,8 +90,23 @@ class SearchObject_SummonSearcher extends SearchObject_BaseSearcher{ 'Language,or,1,30', 'DatabaseName,or,1,30', 'SourceType,or,1,30', + //'IsPeerReviewed,and,1,30', + //'isScholarly,and,1,30', ]; + protected $limits = [ + 'IsPeerReviewed,or,1,30', + 'IsScholarly,or,1,30', + ]; + + protected $rangeFacets = [ + 'PublicationDate,0000:9999', + ]; + + protected $limitList = []; + protected $limitFields; + + protected $facetFields; public function __construct() { @@ -233,7 +248,7 @@ public function getOptions () { //Fetch specific records 's.fids' =>$this->idsToFetch, //Side facets to filter by - 's.ff' =>$this->facets, + 's.ff' =>array_merge($this->facets, $this->limits), //Filters that are active - from side facets 's.fvf' => $this->getSummonFilters(), //Default 1 @@ -242,6 +257,8 @@ public function getOptions () { 's.fvgf' => $this->groupFilters, //Filters 's.rf' => $this->rangeFilters, + //Range Facets + 's.rff' => $this->rangeFacets, //Order results 's.sort' => $this->getSort(), //False by default @@ -275,9 +292,29 @@ public function processData($recordData) { $this->page = $recordData['query']['pageNumber']; $this->resultsTotal = $recordData['recordCount']; $this->filters = $recordData['query']['facetValueFilters']; - $this->facetFields= $recordData['facetFields']; + $splitFacets = $this->splitFacets($recordData['facetFields']); + $recordData['rangeFacetFields'] = isset($recordData['rangeFacetFields']) && is_array($recordData['rangeFacetFields']) ? $recordData['rangeFacetFields'] : []; + $this->facetFields = array_merge($splitFacets['facetFields'], $recordData['rangeFacetFields']); + $this->limitFields = $splitFacets['limitFields']; } - return $recordData; + return $recordData; + } + + public function splitFacets($combinedFacets) { + $splitFacets = []; + foreach($combinedFacets as $facet) { + foreach ($this->facets as $facetName) { + if (strpos($facetName, $facet['displayName']) !== false) { + $splitFacets['facetFields'][] = $facet; + } + } + foreach ($this->limits as $limitName) { + if (strpos($limitName, $facet['displayName']) !== false) { + $splitFacets['limitFields'][] = $facet; + } + } + } + return $splitFacets; } /** @@ -436,6 +473,9 @@ public function getFacetSet() { //results array does not return human readable option $parts = preg_split('/(?=[A-Z])/', $facetId, -1, PREG_SPLIT_NO_EMPTY); $displayName = implode(' ', $parts); + if ($facetId == 'PublicationDate') { + $facetId = 'publishDate'; + } $availableFacets[$facetId] = [ 'collapseByDefault' => true, 'multiSelect' =>true, @@ -445,6 +485,11 @@ public function getFacetSet() { if ($facetId == 'ContentType') { $availableFacets[$facetId]['collapseByDefault'] = false; } + + if ($facetId == 'IsScholarly' || $facetId == 'IsPeerReviewed') { + $availableFacets[$facetId]['multiSelect'] = false; + } + $list = []; foreach ($facetField['counts'] as $value) { $facetValue = $value['value']; @@ -469,6 +514,52 @@ public function getFacetSet() { return $availableFacets; } + // public function createLimitList($recordData) { + // foreach($recordData['facetFields'] as $facet) { + // //foreach($facet as $limit) + // if(in_array($facet['displayName'], $this->limitOptions)) { + // $this->limits[$facet['displayName']] = $facet['hasAppliedValue']; + // } + // } + // return; + // } + + public function getLimitList() { + + $availableLimits=[]; + if (isset($this->limitFields)){ + foreach($this->limitFields as $limitOption){ + $limitId = $limitOption['displayName']; + $parts = preg_split('/(?=[A-Z])/', $limitId, -1, PREG_SPLIT_NO_EMPTY); + $displayName = implode(' ', $parts); + + foreach($limitOption['counts'] as $value){ + if ($value['value'] == 'true') { + $isApplied = $value['isApplied']; + $availableLimits[$limitId] = [ + 'display' => $displayName." (".$value['count'].")", + 'value' => $limitId, + 'isApplied' => ($this->limiters[$limitId]) == 'y' ? 1 : 0, + 'url' => $this->renderLinkWithLimiter($limitId), + 'removalUrl' => $this->renderLinkWithoutLimiter($limitId), + ]; + } + } + + } + } + return $availableLimits; + } + + public function createSearchLimits() { + foreach ($this->limiters as $limiter => $limiterOptions) { + if ($this->limiters[$limiter] == 'y') { + $this->limitList[$limiter] = $limiterOptions; + } + } + return $this->limitList; + } + //Retreive a specific record - used to retreive bookcovers public function retrieveRecord ($id) { $baseUrl = $this->summonBaseApi . '/' .$this->version . '/' .$this->service; @@ -484,6 +575,10 @@ public function retrieveRecord ($id) { //Compile filter options chosen in side facets and add to filter array to be passed in via options array public function getSummonFilters() { $this->filters = array(); + $this->createSearchLimits(); + if (isset($this->limitList) && isset($this->filterList)) { + $this->filterList = array_merge($this->limitList, $this->filterList); + } foreach ($this->filterList as $key => $value) { if (is_array($value)) { foreach ($value as $val) { @@ -538,6 +633,10 @@ public function sendRequest() { $settings = $this->getSettings(); $this->startQueryTimer(); $query = array(); + // foreach ($this->limiters as $limiter => $limiterOptions) { + // if ($limiterOptions['isApplied']) { + // $this->limitList[] = $limiterOptions[]; + // } $options = $this->getOptions(); $this->searchTerms; foreach ($options as $key => $value) { From c54437d9937555f47584ab827ce966037f5b0730 Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Thu, 18 Apr 2024 12:09:35 +0100 Subject: [PATCH 07/15] chore: Removal of unused code This commit cleans up the code by removing commented out code and unused variables. --- code/web/sys/SearchObject/SummonSearcher.php | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/code/web/sys/SearchObject/SummonSearcher.php b/code/web/sys/SearchObject/SummonSearcher.php index e7babc0348..7763be15f7 100644 --- a/code/web/sys/SearchObject/SummonSearcher.php +++ b/code/web/sys/SearchObject/SummonSearcher.php @@ -90,8 +90,6 @@ class SearchObject_SummonSearcher extends SearchObject_BaseSearcher{ 'Language,or,1,30', 'DatabaseName,or,1,30', 'SourceType,or,1,30', - //'IsPeerReviewed,and,1,30', - //'isScholarly,and,1,30', ]; protected $limits = [ @@ -514,16 +512,6 @@ public function getFacetSet() { return $availableFacets; } - // public function createLimitList($recordData) { - // foreach($recordData['facetFields'] as $facet) { - // //foreach($facet as $limit) - // if(in_array($facet['displayName'], $this->limitOptions)) { - // $this->limits[$facet['displayName']] = $facet['hasAppliedValue']; - // } - // } - // return; - // } - public function getLimitList() { $availableLimits=[]; @@ -535,7 +523,6 @@ public function getLimitList() { foreach($limitOption['counts'] as $value){ if ($value['value'] == 'true') { - $isApplied = $value['isApplied']; $availableLimits[$limitId] = [ 'display' => $displayName." (".$value['count'].")", 'value' => $limitId, @@ -633,10 +620,6 @@ public function sendRequest() { $settings = $this->getSettings(); $this->startQueryTimer(); $query = array(); - // foreach ($this->limiters as $limiter => $limiterOptions) { - // if ($limiterOptions['isApplied']) { - // $this->limitList[] = $limiterOptions[]; - // } $options = $this->getOptions(); $this->searchTerms; foreach ($options as $key => $value) { From 805fbeba44432e6ff1ac312d13a4736798760f20 Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Thu, 18 Apr 2024 12:39:12 +0100 Subject: [PATCH 08/15] fix: Removed 'count' display for limits This commit removes the display of the record count in the limit search section of the filter options for Summon to keep it inline with Ebsco EDS --- code/web/sys/SearchObject/SummonSearcher.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/web/sys/SearchObject/SummonSearcher.php b/code/web/sys/SearchObject/SummonSearcher.php index 7763be15f7..bd9cf2220d 100644 --- a/code/web/sys/SearchObject/SummonSearcher.php +++ b/code/web/sys/SearchObject/SummonSearcher.php @@ -524,7 +524,7 @@ public function getLimitList() { foreach($limitOption['counts'] as $value){ if ($value['value'] == 'true') { $availableLimits[$limitId] = [ - 'display' => $displayName." (".$value['count'].")", + 'display' => $displayName, 'value' => $limitId, 'isApplied' => ($this->limiters[$limitId]) == 'y' ? 1 : 0, 'url' => $this->renderLinkWithLimiter($limitId), From a1e8c3340b953b98dbb331d2716a589c6cd4daf0 Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Thu, 18 Apr 2024 13:43:35 +0100 Subject: [PATCH 09/15] fix: Fixed book cover display This commit fixes the book cover display by reverting an array merge. --- code/web/sys/SearchObject/SummonSearcher.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/web/sys/SearchObject/SummonSearcher.php b/code/web/sys/SearchObject/SummonSearcher.php index bd9cf2220d..7eaba1e3db 100644 --- a/code/web/sys/SearchObject/SummonSearcher.php +++ b/code/web/sys/SearchObject/SummonSearcher.php @@ -253,10 +253,10 @@ public function getOptions () { 's.rec.topic.max' => $this->maxTopics, //Filters 's.fvgf' => $this->groupFilters, - //Filters - 's.rf' => $this->rangeFilters, //Range Facets 's.rff' => $this->rangeFacets, + //Filters + 's.rf' => $this->rangeFilters, //Order results 's.sort' => $this->getSort(), //False by default @@ -292,7 +292,7 @@ public function processData($recordData) { $this->filters = $recordData['query']['facetValueFilters']; $splitFacets = $this->splitFacets($recordData['facetFields']); $recordData['rangeFacetFields'] = isset($recordData['rangeFacetFields']) && is_array($recordData['rangeFacetFields']) ? $recordData['rangeFacetFields'] : []; - $this->facetFields = array_merge($splitFacets['facetFields'], $recordData['rangeFacetFields']); + $this->facetFields = $splitFacets['facetFields']; $this->limitFields = $splitFacets['limitFields']; } return $recordData; @@ -463,7 +463,6 @@ public function renderLinkWithSort($newSort) { */ public function getFacetSet() { $availableFacets = []; - $label = ''; $this->filters = []; if (isset($this->facetFields)) { foreach ($this->facetFields as $facetField) { From 968b388754fd0a785ce8c4b25bd44e122b80da20 Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Mon, 22 Apr 2024 09:29:20 +0100 Subject: [PATCH 10/15] refactor: This commit removes the additional code related to Publication Dates --- code/web/sys/SearchObject/SummonSearcher.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/web/sys/SearchObject/SummonSearcher.php b/code/web/sys/SearchObject/SummonSearcher.php index 7eaba1e3db..cc12ca2d04 100644 --- a/code/web/sys/SearchObject/SummonSearcher.php +++ b/code/web/sys/SearchObject/SummonSearcher.php @@ -98,7 +98,6 @@ class SearchObject_SummonSearcher extends SearchObject_BaseSearcher{ ]; protected $rangeFacets = [ - 'PublicationDate,0000:9999', ]; protected $limitList = []; @@ -291,7 +290,6 @@ public function processData($recordData) { $this->resultsTotal = $recordData['recordCount']; $this->filters = $recordData['query']['facetValueFilters']; $splitFacets = $this->splitFacets($recordData['facetFields']); - $recordData['rangeFacetFields'] = isset($recordData['rangeFacetFields']) && is_array($recordData['rangeFacetFields']) ? $recordData['rangeFacetFields'] : []; $this->facetFields = $splitFacets['facetFields']; $this->limitFields = $splitFacets['limitFields']; } @@ -470,9 +468,6 @@ public function getFacetSet() { //results array does not return human readable option $parts = preg_split('/(?=[A-Z])/', $facetId, -1, PREG_SPLIT_NO_EMPTY); $displayName = implode(' ', $parts); - if ($facetId == 'PublicationDate') { - $facetId = 'publishDate'; - } $availableFacets[$facetId] = [ 'collapseByDefault' => true, 'multiSelect' =>true, From 1fbbe93d063a495c3b51a519cbf4c3e73bff2bef Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Tue, 16 Apr 2024 13:01:59 +0100 Subject: [PATCH 11/15] fix: Add correct paths for explore more section --- .../themes/responsive/images/summon.png:Zone.Identifier | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 code/web/interface/themes/responsive/images/summon.png:Zone.Identifier diff --git a/code/web/interface/themes/responsive/images/summon.png:Zone.Identifier b/code/web/interface/themes/responsive/images/summon.png:Zone.Identifier new file mode 100644 index 0000000000..5bfebe3650 --- /dev/null +++ b/code/web/interface/themes/responsive/images/summon.png:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://www.google.com/ +HostUrl=https://files.mtstatic.com/site_11811/55152/0?Expires=1708452791&Signature=O-eIysOYl-1drJTT2f6LTnuDXMhKycAnvuWBQT53Y5WC-uFeYwIE744-kFoVgc-gDsc1ODNBFX1G09SEdxs6NAzaBLFM1c9V0Xq3GZiKsUMivxIQC8YNpa9VHLWM0KE-snOgnMcGuuzuqvpFNAZA5J7FNpYuE~F2eWzOKKYIdhw_&Key-Pair-Id=APKAJ5Y6AV4GI7A555NA From 4e863c87432d9a7843a74a7bc755b0763441809c Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Tue, 16 Apr 2024 13:24:34 +0100 Subject: [PATCH 12/15] fix: Ensure correct author is pulled from db This commit ensures that when there are multiple authors listed, the primary author is the one displayed rather than the sub-authors. From 9455da82c1778fd75ff8871d45cab619d96a915c Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Tue, 30 Apr 2024 18:26:39 +0100 Subject: [PATCH 13/15] fix: Increase how quickly Summon results load This commit increases the speed with which Summon returns results by using the BookCover Processor to create the image URL without checking the sizes of images available on the URL of the record results. --- code/web/RecordDrivers/SummonRecordDriver.php | 17 +++++++++-------- .../Summon/result-tools-horizontal.tpl | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/code/web/RecordDrivers/SummonRecordDriver.php b/code/web/RecordDrivers/SummonRecordDriver.php index bef54e93fb..a6ad49b064 100644 --- a/code/web/RecordDrivers/SummonRecordDriver.php +++ b/code/web/RecordDrivers/SummonRecordDriver.php @@ -30,14 +30,15 @@ public function getBookcoverUrl($size='large', $absolutePath = false) { }else{ $sizeInArray = 'thumbnail_l'; } - if (!empty($this->record[$sizeInArray][0])) { - $imageDimensions = getimagesize($this->record[$sizeInArray][0]); - if ($sizeInArray == 'thumbnail_m' && $imageDimensions[0] > 10) { - return $this->record[$sizeInArray][0]; - } elseif ($sizeInArray == 'thumbnail_l' && $imageDimensions[0] > 10) { - return $this->record[$sizeInArray][0]; - } - } + /**With the below code block, load time is very slightly increased, but images are returned where available, otherwise all images are generated by Summon */ + // if(!empty($this->record[$sizeInArray][0])){ + // $imagePath = $this->record[$sizeInArray][0]; + + // $imageDimensions = getImageSize($imagePath); + // if($imageDimensions[0] > 10){ + // return $imagePath; + // } + // } if ($absolutePath) { $bookCoverUrl = $configArray['Site']['url']; } else { diff --git a/code/web/interface/themes/responsive/Summon/result-tools-horizontal.tpl b/code/web/interface/themes/responsive/Summon/result-tools-horizontal.tpl index d42cae024d..2f44603abe 100644 --- a/code/web/interface/themes/responsive/Summon/result-tools-horizontal.tpl +++ b/code/web/interface/themes/responsive/Summon/result-tools-horizontal.tpl @@ -5,7 +5,7 @@ {if !empty($showMoreInfo)} {if $showMoreInfo !== false} {/if} {if $showFavorites == 1} From 16a36a9a6d7b0984ae3b633216615a972bea0fc8 Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Fri, 3 May 2024 11:54:11 +0100 Subject: [PATCH 14/15] feat: Add ability to enable or disable Summon Book Covers This commit adds a setting in Library Systems to enable available book covers in Summon to be displayed or to use only generated covers as this impacts loading time. --- code/web/RecordDrivers/SummonRecordDriver.php | 23 +++++++++++-------- code/web/sys/DBMaintenance/summon_updates.php | 7 ++++++ code/web/sys/LibraryLocation/Library.php | 11 ++++++++- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/code/web/RecordDrivers/SummonRecordDriver.php b/code/web/RecordDrivers/SummonRecordDriver.php index a6ad49b064..63941a34d5 100644 --- a/code/web/RecordDrivers/SummonRecordDriver.php +++ b/code/web/RecordDrivers/SummonRecordDriver.php @@ -24,21 +24,26 @@ public function isValid() { } public function getBookcoverUrl($size='large', $absolutePath = false) { + // require_once ROOT_DIR . '/sys/LibraryLocation/Library.php'; + global $library; + global $configArray; if ($size == 'small' || $size == 'medium'){ $sizeInArray = 'thumbnail_m'; }else{ $sizeInArray = 'thumbnail_l'; } - /**With the below code block, load time is very slightly increased, but images are returned where available, otherwise all images are generated by Summon */ - // if(!empty($this->record[$sizeInArray][0])){ - // $imagePath = $this->record[$sizeInArray][0]; - - // $imageDimensions = getImageSize($imagePath); - // if($imageDimensions[0] > 10){ - // return $imagePath; - // } - // } + + if ($library->showAvailableCoversInSummon) { + if(!empty($this->record[$sizeInArray][0])){ + $imagePath = $this->record[$sizeInArray][0]; + + $imageDimensions = getImageSize($imagePath); + if($imageDimensions[0] > 10){ + return $imagePath; + } + } + } if ($absolutePath) { $bookCoverUrl = $configArray['Site']['url']; } else { diff --git a/code/web/sys/DBMaintenance/summon_updates.php b/code/web/sys/DBMaintenance/summon_updates.php index 18dd4db7ba..8cc0a64e4c 100644 --- a/code/web/sys/DBMaintenance/summon_updates.php +++ b/code/web/sys/DBMaintenance/summon_updates.php @@ -84,5 +84,12 @@ function getSummonUpdates() { 'ALTER TABLE library ADD COLUMN summonApiPassword VARCHAR(50)', ], ], + 'add_book_cover_display_control_in_library_settings' => [ + 'title' => 'Display Available Book Covers in Summon', + 'description' => 'Whether to display available book covers in Summon Searcher', + 'sql' => [ + "ALTER TABLE library ADD COLUMN showAvailableCoversInSummon TINYINT(1) DEFAULT 0", + ], + ], ]; } \ No newline at end of file diff --git a/code/web/sys/LibraryLocation/Library.php b/code/web/sys/LibraryLocation/Library.php index c02153f989..77a92c2026 100644 --- a/code/web/sys/LibraryLocation/Library.php +++ b/code/web/sys/LibraryLocation/Library.php @@ -357,6 +357,7 @@ class Library extends DataObject { //Summon Settings public $summonSettingsId; + public $showAvailableCoversInSummon; //SSO public /** @noinspection PhpUnused */ @@ -3702,7 +3703,6 @@ static function getObjectStructure($context = ''): array { 'label' => 'Summon', 'hideInLists' => true, 'renderAsHeading' => true, - // 'permissions' => ['A'], 'properties' => [ 'summonSettingsId' => [ 'property' => 'summonSettingsId', @@ -3713,6 +3713,14 @@ static function getObjectStructure($context = ''): array { 'hideInLists' => true, 'default' => -1, ], + 'showAvailableCoversInSummon' => [ + 'property' => 'showAvailableCoversInSummon', + 'type' => 'checkbox', + 'label' => 'Show Available Covers in Summon', + 'description' => 'Determine whether or not available book covers should be displayed in Summon', + 'hideInLists' => true, + 'default' => 0, + ], ], ], @@ -4950,6 +4958,7 @@ public function getApiInfo(): array { 'passwordLabel' => $this->loginFormPasswordLabel ?? 'Library Card Number', 'code' => $this->ilsCode, 'finePaymentType' => (int)$this->finePaymentType, + 'showAvailableCoversInSummon' => $this->showAvailableCoversInSummon, ]; if (empty($this->baseUrl)) { $apiInfo['baseUrl'] = $configArray['Site']['url']; From 6ff5b212b0b53c9d02d8863a2f603020f8ec8c12 Mon Sep 17 00:00:00 2001 From: Alexander Blanchard Date: Tue, 14 May 2024 09:43:44 +0100 Subject: [PATCH 15/15] chore: updating to 24.06.00 This commit moves database changes to 24.06.00 and updates the correct MD file. --- code/web/release_notes/24.06.00.MD | 33 +++++++++++++++ .../version_updates/24.06.00.php | 42 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 code/web/release_notes/24.06.00.MD create mode 100644 code/web/sys/DBMaintenance/version_updates/24.06.00.php diff --git a/code/web/release_notes/24.06.00.MD b/code/web/release_notes/24.06.00.MD new file mode 100644 index 0000000000..2399c904c6 --- /dev/null +++ b/code/web/release_notes/24.06.00.MD @@ -0,0 +1,33 @@ +## Aspen LiDA Updates + +## Aspen Discovery Updates +//mark + + +- Added option for Explore More bar to be hidden (*AB*) +- Added control over whether images avaialble from the API are used in a Summon Search or whether Aspen created covers only should be used - impacts load speed. (*AB*) +- Limited Summon Search results to those within each libraries subscription. (*AB / JO*) +- Added limit filters for Summon Search - search by whether record is scholarly and whether it is peer reviewed. (*AB / JO*) +### Koha Updates +- When a user has opted out of auto-renewal, do not show auto-renewal message even if the title is otherwise eligible for auto-renewal. (Ticket 131789) (*MDN*) + +### Sierra Updates +- When linking to ILS course reserves, use the Vendor Opac Url in the Account Profile rather than the URL in config.ini. (Ticket 131388) (*MDN*) + +//kirstien + +//kodi + + +//other + + +## This release includes code contributions from +- ByWater Solutions + - Mark Noble (MDN) + - Kirstin Kroeger + - Kodi Lein (KL) + +- PTFS Europe + - Alexander Blanchard (AB) + - Jacob O'Mara (JO) diff --git a/code/web/sys/DBMaintenance/version_updates/24.06.00.php b/code/web/sys/DBMaintenance/version_updates/24.06.00.php new file mode 100644 index 0000000000..090933ec96 --- /dev/null +++ b/code/web/sys/DBMaintenance/version_updates/24.06.00.php @@ -0,0 +1,42 @@ + [ + 'title' => '', + 'description' => '', + 'continueOnError' => false, + 'sql' => [ + '' + ] + ], //name*/ + + //mark - ByWater + + //kirstien - ByWater + + //kodi - ByWater + + //other + + //alexander - PTFS Europe + 'summon_ip_addresses' => [ + 'title' => 'Summon IP address configuration', + 'description' => 'Allow configuration of which IP addresses should automatically authenticate with Summon', + 'continueOnError' => true, + 'sql' => [ + 'ALTER TABLE ip_lookup ADD COLUMN authenticatedForSummon TINYINT DEFAULT 0', + ] + ], //summon authentication + 'explore_more_section_control' => [ + 'title' => 'Explore More Section Control', + 'description' => 'Allow control over whether the Explore More Section is displayed', + 'sql' => [ + "ALTER TABLE layout_settings ADD COLUMN showExploreMoreOptions TINYINT DEFAULT '1'", + ] + ],//control_whether_the_explore_more_box_is_displayed + + + ]; +} \ No newline at end of file