From 89fb2fc69b97e1a10358d7c977ee7742cacbf927 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Tue, 8 Nov 2016 02:50:00 -0700 Subject: [PATCH] Add private messaging (closes #8), add more formatting options to chat names, add multi-server list for clients to choose from --- chat.php | 14 ++++++++++ cluster.php | 20 ++++++++++++++ composer.lock | 18 ++++++------- database.mwb | Bin 18806 -> 19946 bytes nbproject/project.properties | 14 +++++----- privmsgs.php | 50 +++++++++++++++++++++++++++++++++++ settings.template.php | 6 +++++ 7 files changed, 106 insertions(+), 16 deletions(-) create mode 100644 cluster.php create mode 100644 privmsgs.php diff --git a/chat.php b/chat.php index 63412a4..47c6fb7 100644 --- a/chat.php +++ b/chat.php @@ -69,8 +69,10 @@ if (is_empty($VARS['msg'])) { $msgs[$key]['uuid'] = "0"; $msgs[$key]['nickname'] = "SERVER MESSAGE"; $msgs[$key]['color'] = CHAT_ADMIN_COLOR; + $msgs[$key]['css'] = CHAT_ADMIN_CSS; } else if (in_array($msg['nickname'], CHAT_ADMINS)) { $msgs[$key]['color'] = CHAT_ADMIN_COLOR; + $msgs[$key]['css'] = CHAT_ADMIN_CSS; } } @@ -85,6 +87,18 @@ if (is_empty($VARS['msg'])) { $msg = strip_tags($VARS['msg']); + preg_match_all("/\@\w+/", $msg, $search, PREG_PATTERN_ORDER); + $privmsgto = $search[0]; + foreach ($privmsgto as $to) { + $name = str_replace("@", "", $to); // Remove leading @ + if ($database->has('players', ['nickname' => $name])) { + echo $name; + $touuid = $database->select('players', ['uuid'], ['nickname' => $name])[0]['uuid']; + echo $touuid; + $database->insert('private_messages', ['#time' => 'NOW()', 'message' => $msg, 'from_uuid' => $_SESSION['uuid'], 'to_uuid' => $touuid]); + } + } + $database->insert('messages', ['#time' => 'NOW()', 'uuid' => $_SESSION['uuid'], 'message' => $msg, 'lat' => $VARS['lat'], 'long' => $VARS['long']]); sendOK(); diff --git a/cluster.php b/cluster.php new file mode 100644 index 0000000..6da338c --- /dev/null +++ b/cluster.php @@ -0,0 +1,20 @@ +QE}`3s#`Ztb*B5}W<=-y%jU}Gm(xaj;`PfHYV9U`liN)Tus;BVTuzd9#t`$x z`cQ@}Q&&?<%Mp;^+;N1Sw+L0lY+YZzp3V3?w1mKZ6xWH0SZWa(1k3vwSZCh%awvl08Un}T0 z_uai?3(4pi7=FscD&n_?N^^XiHXOHo*NBtHm-5pZVlPaiY z#2qcRKU?_BRl>1P^;#_|I}11Fs(92{dCj!zUZ;+-UcGexkH!lT3$&*iG<-<)4p z&`-U>fpN+dSw6n4h%ut=m`TCWqfRv8f{co(;E79u^9fjzUPSpnpN54Vb?&`Q;*7gG z=*ifR%D%H6)I@k= z3C1UGGJVu!AB=dstrv|~%BEjczwY2C*E-zk$@L#i?pg-d;NPxq76(cZ<8GjfV)%WX zzu~9R&5JgM`Dy#UhpYO!v%i8y{rJYj^j#@u?2`5e_rKoIeX%nf`Wojq`?_gD=vkbf zto^*Z83Y30Q(g^PPgZ37K6GQHj&kGNpL#|!))~O4l<WG#+zCY2EHK%zzyR-;KH=tJS(cEHi?rr;R6>`Y+-L{dfx!exLa-W(rj zgZW}C4#ako7xha<$=%s|zgV$PcgPOTzLK6iy{%1!e_?|OV4h_gJOIV%wvzKtIl;Q8IHbz5?i&^O&PV8!93BIM2b zHDU{dd#^^#GU3sb6;SA(@Y}>mak~)OwJH*)#zWjK#aQ7ae_^LE$x#kC4obMb0p4F+ zjo!7nc{*!ve(l2BpeDrNTPWex})4zV8|cV)Uu_s{(OjX#Z-@nNp!XBob_m)k&zkKM;7(`Kq`-fjDtM2^S^7FmdwQ4i6% zeiNZDz+X5I=60#>fA>?c;L(pAe-_94&a)yE-Atv5P``ziF?*wTy^}l6);MGHoTh@- zlt-er3ZfF5S6kq_wqlc$27D1ZTu8P64`^{Cz;l5JRkg+<_poRR z^KHh<-&_Bvc(buapl=iV^QbJ$k44en?`wcx5@J_>^j02ga1Qg+7~;0h^i{q05yYRZ z@IBO@=a0WXuaLk1AYfOhKhc>2NH_q{23SDEObR(fGvX2-M03xgcPmIy0%r02nEXSV z{t{9X1CX6B!*0nIwjp`O@`zJa0M=NT-vaz!&T%N+uWvRZylXo@TzO|#Zl)p)t@=^+ z*42g>VMV-9M^>rFml9DN(u_ZNwu$IM__$QS{Y$u&0!Ct}zKT8{69ZSP)z@3~@3Iww zxhQX$%TOziE@ZFZeM=l%DP0n`iI`oK_LrKqy& z^WDN&Mq*6f;g9V*a^bHbZ+o{gfic)4+KZd#6X}G zS30HA=L-d*Fiolrk#(Rei|O(Gi)Za>Y_+|JAI#>(34r!MLfqW;|2ykKQC9t?O@*nq$6B@u%Lh-0?6UzwL&lKIMKAjr^f+TAOKk ztQADY2Dy{s)jiImnc9(pr@UQLL{#|X{4Y&~hjS|ytiG?3-t4t) zH=IdwU}3d~hFJW7IG{vHSFaC^JIyJ-#({{X{5@sH80(6jx6`0C_rXm3ZyTNdI}^0p z#f5Pr%H1TaofWRmW_Z@i-!Op;{Nj6@kuwY*oCc^aflXY5VLt7OKJKi-@LkzV=#Sf& zZ5k+)%Ye33>BCpe16)zIRnb>{<+|b{_Qjrh;;Drka9qmbBdeYcY>NplEwMDBkq~1g zry6u2M3jpOg1DNhb>z%&L(b>KN!x0PgRIMZb9O{=@sJ{farOKj!BQ0cy|sq=D9+#? z9L0#O6fw8H1o)3b@IdR6=h$FkkSfYAq|Z)M(ZHY90Du1=81aXHoe%l;67?+%cDv^w zqcGHUrK^M8`Fo@=-jx0Q&db9Z?g=i@t;`PvYGf1jCAIpZ#gF^k&5J31CL~CXd!xsv zuKRUVFgcpNm7#hjohBAi*eQ)nM5!b?4~?F5PyBSLOgQtowMG}NA(M^Vw*o-oYV1<0 z_3?C|(%s0(zxJTB^~+kv^vHNrn95xs-S*qD#%Gn8M;Ip=F(t0idRJ&I%_; z4PUz|CpPAzZb?8Iv{^+!TD3*5TP%10IltuIIeEcWiz+SOV@FrJD)5*^h6{_usgi`l zXg6HdacJ{;U;vTZQvCA#{pu)h#unq=ugW`#bVq)bR$3U!R+D|Rk!!+>g8kR5s%_RL zOLY8sWft1*9aE?!VQGIxx6-#PvVq zO@?^NIm9KVxBYUE*cO&$iN|{ie1yRE0xcGIZAtz`_|9w%MslN80D^rs&<9z`AAq6I{Svm1dw@Y{@w%P=RV@}Yom`VA-W5~lbYUiRhXk0*tsI0XubVKK91D9A-@DJIlJ0nN*pW#|Xo zxK^H7yPcg-CSftAkf!a06Evh*y!Pp_v|BL^`X9(FdGbpQHbOD3P@CW1=E%!0M+8|2 zjgW-@plu&K#71b0OlJjhT%I&*j%MqUNZ=%1UV}Ps&IkxTUa`F{NQRyXDq zlDxnI5eOjuyqu54TmZKhSg&UwaJ+kSO{1oZH6pw?LYOXbzxhTAqC2BZ7o#VylNH5} z;fH*$BEJ?n?wnsOi7R|4AWRp-D2m9ma5|&c*Ge=~dY!G4p(@#Rpc7Ck3Qt3#BsC}P zz0~5l{8sb<7qR?F{=mLcFAMzTK&`WpQ+(!8ciGgDta7R-d(ii_WXq*{9JTD&U%{Wz z>wEKl+FJ)U<0S@Ss5?Q%5AI!kS4VO>8Z+2xcRV}E1PO!ps+M43ZtJAv1^k1S^Vp7> zm)5khmTWtG^R#?zxp`wvHNS3~xs8pf>b5X|Ti5s{vW9VKM(Tw1ab~3`Tb*Rw4EJg& zJ|;yn(8+8?|NAx0q+ zr2QU#R-#_}?+ExU0lQr`AuX`qN(000uE5_$2?6b@gMVg%^-`$xmoGGw*MUZJl{|I$*pKpZ zbM^r9!ItIt0P>A$NdWYg`qRe%yaK#d0_`aHzJ&NJ7kYyEF+veuUqF6Jp5mxNe=A_a z@g6B^OAvBAUQQR3tr-n3f~RHI6!!`ekRbp*g8~&qsDu&TmTwgU0DS-l9L(3y!!)BV zaU%rVD)|5oU~ow;af8JOImgz&{lz5XCw_EV@W*hg=t&0u$q~>j#yvGngng3O@G*{u zdps7z4J^nj#M8%&F%f25(cS>aTp^GP22^lmM5gz5B3#nB!mI`H`_(Nt9~FTO$;-s^ z!w^uBls)l~L{5w&Wi24`R}|-z=d>%m^2=h^HJ}9Q=zpP-bB#xC3TumU3;IMpHLGP4 zyWoid(T)@+p%~Ov)u)jFc;QmJt8-n#og0Fn-q2RMXzK540sB!!D?%^(Z6*1etcT!bg^xXG!nPK880DG7#csO&d`7HG=54HN zbrdj6O;FrcgDw1q;|2Hf)kfA_102_~;Kgo^SUoK6Ig4Dra86l&eqK$`FQOS&PNRzJ zd}6jNv)`6SmSE!5t;EN^kxTVIhy@b6D#>kBV~N}Ci{QBbE9eO-hL^+immRi_qDz6P zeU&ztTa9tO0H8C>wcqIO`{=JZMhq@6;ZcKAjP55khQQc?IYxI~awFH^*a3_jWG$s@ zhHZ_}-H;nN-k^&iz7Mh+0No&C%*kFiShg%-*HY_xO#o03$DVRRLJ2|OirA(2bk?A4 zMFDJuwVMc2$10!rBMm4=NtSisx0tz7Dq6s&_3(em$x;o4nE>(%>)~LvFpUFFB)PT< z4=23NFVC$FumQHl_s{@I5kTM%#5cngCbIs%gM++f0gM&KPip9mOt8KU2S)r*>U&Kn zEBs49zka}1U$66c)$Ls)nX|ePvu-HKYtasjBhSz!-p*H41P1Xy6@lcb^c*> z_b#^ekWR=XE>(;x?1~VCT$bR+Rvs!-vXlnbHv2KhK*z1XP7B4l=@%oQfa%)MPUwGm z88)?iqUg==kprV@89pu{1=m#+;V@cas&5$?^V~bTbrr6^Oc-gx)mf4?1%ahtB!x- zUU1-l;-2+u<#X<94qFInfg+Tz7W*d){kk`SxLg5>%SeJTkjqlSAR>@B+)M;Dr{l*n z8HeNUn9FK{_GB`bgI#P0p}W)8%W-7|3qlHzVg-MpQeYrNxRktqdGj+b^}jL7e{i;Z zID!%`6;SRRQ_iyV3L#RG66&T<_$Lc<3vDiCIWqdPbdK55GM`8e%O$2cS-cXt zxFi|5G`wDfL7-@Fzkp`Ym@g}>)K?c zhp-v&=VKYcM4bYQCOM_~Ts}z}p{dU}{GYGgDzDg-SH@SF48qGQ zN=5Rt;2n16-Y)^6W_Uj65j*-I-x8-qvimuof)moT1}QHzy-*dwHJ)-^#wpoK=SvGTz0jIjbYm{1Ig@hT z%nnGIg+WyKrsZE`qnV35RW=WJMk9D^ddZxIw5`Hv04c$B9x_|Nk%Ww0y~AOA(JlzZ zWqjE{wI7mON3@omj6GR_BHzv?7R1?Xv~4$aNqzya&71}m?Am168h&VW%p@k{Y_}YB zTG*t=#diI{n|@hf_8MJVtjD38A`PGub6w{}ZWiJ~E@lxX5@t?i6Ti{cee}3aHdB^c zjgqsZgyNc~oGv|t(qQQvEKHcd&|sljtZoZn;g7*&iE4lp&DWGU$sBIK2geEIj4V>I zrYjKE;%A^22mqS8KsyEvzrQxXGxhhl+KZ;TtMonsf3qQJf&cL5o}hPAi99UmDAHSp z13iFKIcS8qV-PH-UJC(~3WPI5&$L7nF#=f&8J(naHYc>==$bRL6LKXqK^J1R-DrXY zE-aRr^N)U$la~oUEw%4fA@cpA88}roCh{;q527R_r^R%{gkXXPi3} zO$01g-3Lvf`TsZ-Nj$7#VToo&oCF9=81BPwP$0FmC>B$r{92Yo6Dk^0wrsBkW5PZ! z=3%sy(Gt_P(bD|0jk0}L4!ptS44HI7nqh|jx$y9$t)14aSh0n{T8i) zUbJ~8Ln#*wz(Of+=@p2fay$pM+WsA!+Zxpz&aZtG&bTI8>hG8dN(P0~K-?PT%(q~* zis;0T4J3Y9jN7pMNVx8f=eS-I4umFoJKedLwX|$tfC3-}=obwHD2Rmt`aVsu>-q{7 z4b)Eo@DJ)y`6(En9+MRXvWsq`cPoFU#l9tUB2I^)vyM>IpZ^AK5UAOQ%EEk{rY8^) zu!x@NkU)b=Fc942_XWgr3(_a}O|{R0l!6W-C8wonj_J6IeyY_WiGi1-55T#s$z(A% zSLm6fF&UAIazO8S=*y%fsIe7^4E@RPx@1}m@rQ{BAb>ZZAEg|u6D$A-(O(}EtjD_vKcSHV2V_hF(beLhG5kL0R_kcoC`cqaSj&&B)6mWb_x?XUDg#ZP+KUk zBphP|e)Je7pwEz(NA0I=COZ2!y`RsI1avdl}5=jwP;@QwvVUicr_4Z~C9 zUfbQV5SoL0$rMI%5yq54tdZ3 zJiG^ZK$7`;EHT2fLwQ1~A)EuAs)F|P$sd)EMS{DnHl-|*?=EPONQMKvdIEXJ%C-`$ zS_8b8{K4HU>JM8gjI;<+1HOXuRx|Pp_H2M*NJIMFlbfFlN0F~Lsvr;E$z3jvfDq6O z@jRi$>9*LE@P~L#83wshxqamV`jiqZU;Q8&nHAcLDnwY0dBmr_NU98fPy_;}A<1>9 zwsuGF$36=s{Ch&pu6h6Eyu}n`_`eK>eyR`vw?vFz#inxf95izPCm`NGKvU9FO)y9Ku+@O<3p{s&I0nQO;-~12c*I!H z0)4*u_@p>FSy_ zu@`j0R8Hnk^*ueAu#}eR$seDKx)o31pO5DIRy!^hk}k$Qb@@(Brv<$;mgD~iHX`vM z&PP49_|bBTcB6Om+@24%i;)pI#lBV#ZUe4!SH~rDqeC-vPu6JvHNBGIvelzR(0e!ajhA`FrpV@PI}W z<_z(q`saou;}z%yM;Ix^FEO5xfG%2to~MikEzw#G`O_9#gXbWM zZwd0kon+H;on*`TkhHBzSmIv;(uV76Asm+o7?IP4H+?ixea(kN1eag_4wi^iQGEP8 z9A0hui=S8{z3&4`oF*aieyRCYBjFsh$J)ODH_n;b(ev}4V&y%`JFALI?s8eex5=O5 zzvkXKhhKISsqe?(^>zHP6lM)i@f5u}(oILMXFQcKIAll3l0Y0}doZB_W{rer^?}Yu zeK|cZUoJ+>`upHNrEsYaug?-cmFKP!G6u4AY<|(p>^pJL(5u{FD+`bc_Ej#`Flc_w{@coZJ-aY2+*eHay_NC-R5sCYP;YvX0>8D>dkN1M*}BxJK4FHw)97DR{}Iv zB@U;82DLw7-7Z$8O_=>ZL%R~ZEaFz+Yl<1m{juxXt|~G!5O0`CKO{7dxT?s=Cw>SM zm4|5;jq7sO4$N689P>HfuBeP^PblO;S1u5>HYDgxr$D8NlOO&RjIGMJ1Zk^MiV@jf zcoeux1q~EJQbUs`gP;KBToXo0&5rg-A42Y;-mO5l0*vN`3d-g1@PRz)-Vqap+49x znk%1|X75O1v*AaSi8G)-2B}DP^6$y**TVt2R1NFN`~L9rwL*JGxrTc*1o_2$SmbVRftHiDES!K_erq0S7)z|Xm1k96KP4a!4m~-= zf}Crlg~)tGr@Gkp{92wOhmC z?PDUfRmY#U89@fKz;PfyML!05_0f&OgHgZp^x&$rsCeW%{$wNMtU* ziTZohjCPtOL}9hDfN6D3Zt3N^g8Xn+0kwwU80>ZqPtIrc)bbb*jKwHXkJ4ET3{DRC zr2?>OtzX44xhh`eIR@~9oMvYb1KW_^kZ2XF5ef9=9M z#V(174k_Wy74@N3S3EA6CqY+N7%z2L8Z$ z9X37+FWXGP>&KP<#Wd%AKnV}JYx&y=(=NEV`)FvKJ4rUe!8r%rj?IM)?38wn? z{G!xlLA|qUvz)Tho5feU23AA*>#$Ny=7>@jH|&i@CYXPT*}mzJn>CNY*ecT* z6iUUY8j&B-B}X2;ZX_)T=gvP?F#@h@KDgRgf&fpA-1@2lJPlfCc@S^?6btqwVP&3# zKwJL$R-nx(z4jLE*iXjVMsSJ-vK8oxHGt*}ZA1t!-=iJhwwu4T6?o2N#KvA&<2W=? zD!=74G{q7nK!$_UaKLGFt%(N9ZFIc`wHuz(Ozi6N^?WaH&JKfneEpY9x;L-hnk*1S zr^&Y6%mwuo;5u_U#H(tvCEWRLvpV~jC7QC`demuUGszvx^#=|6b%EV#bg$Q$zz>IV zS|A2Fwa{}|t)F=PtIU#S=jqgGulC0?Gmg_ooO)yiRJkLoj&q5Z>wnN1v=*z~>dJBH zSW>L)y4;dO^`fxItfIRYdVNLKlonC=?d#xGTkmDT)3K^fY=j4m4(S`?s_73mhzW5R zIL6t{@C7HetSsb*T#lfH0M)Mt+j0)c`6w>@m=~e_b@WD)``_B#c#*N8_x+M)+jh?&%Yfb6>^r=># zSL6&*yX#V7^o2VLVmE}{dXS{MHvQ40f@*8edm%KBjyHZQQt%1Ui5oI0cI9a?a*0 zKA+Rx9nHLU9BA@jU^J&kJ!^ZO{qgh2*RE>rHqnYQ{+a|KS1}Hk8DXs`c|FX7H{FG@ z@_(+m2Oo@YTbQ*;b0XhL#@tvVzO0JlxhjGSrso-(^zXwIcVVL**$)J#ekWQ=s+j;Xg!=rw5BYUzD<`MF}&2gF%^pF(q(h%v$H~nJ|gf4!*t0tqlNnO-DYr}3A!&3eIWpBj7fn@bP59`b-gjgoyGBf66&N}#2#MX!-T zl2eg$AA^xfVH)Zm)>?#wsX+c#BBx-|LKip}N&C4g73}X!@`SHI{w0ZSJGvz+ZFs7L&)Fjin0z53)!MNmit;0>KyUWA;&`01!itV z>@*9lq8v+*L}UVDw~p(x0Bo=~n1tmN?%Tn?4{bo73lrY1R2jc4=f_n82>=R_sD~h^ z=SL`4AprpDav4v9LIef^0$S#J!twh3V~6t!^{IgBAdgHkS_<^VG6zYBQGy>{sN9MR zg|G&4_Yn*4;CJNm0QXjSSfgL2^!Ww%y7S;!a9Vv{GWYdlSeyZVbb@>K!|f;F1{?ea zcC~OtFyAp%eV+hyeR|ydzl8L7WzGZrLr8n!q)LjtnRxirN{nK5eJBNqE>PE zW&0`9(*wCDm6_N<#7AWvwSH=VO?S=({Bo11ec$%a@6#t$@GE!<=a_vl9zEHwLx%fp zi&u)3(#Rp!uF zS0Q5EW$CGJrlPtj8^&+`*U^c8yf-spi-s;TZ(YpG(osXcvrakSWUP||ouAaC1jDd0 zOH3^b8nSP!GEst1V0m~5xUm&bbI^YbBK~PHAq59Tb9~PtTFpvV6sI1}UYCwaci|j; zFUDRsGCi_ANGI*Vl5DAII^d#_ZKXsO(XFb3?$CkHc=ixqjK6kmS0F zgePsk*?H5Bh&~G2IVs?lVWoMK%!nfFmf`D`=Fr6(a?LcS3-+HUF|Pqi*GDj*os-QC zT`+v&P0zI9>T{5hN(uGG&S{!(acnEP#~s-4x@PA?!plwVN9Y^d-vRjkp=09o)qlqx z+lHCFS?SqVE3i_UxXXPj)n-x)ZTD?V`005Z4rJRuEAiV>>GW^1k}69l&lXJtTNEe8$V)duJ15 zhXwS)7_8YL%l9CouCug;jV25cPK-O1l(OBg^za#Kr+hSJMi-+bRT~w>(Pf&I+}c?z zLcJ%R*ohAFhUnsUV=1FQl9B$3s0wrh;gu}dQAP7WZ1vto^YZAvO|o_7 zUfB1RplZTNo|~*Izmyii?~?b9=z^UD;H5Ob5wWcAjfpAat(md$8Z~+~<^AioVFxVl zTAzpgu4v*!1bg=GW>W7(*y=`ms1oIs?4k+Jri_y+yhen$EG)0B=%pgs3&rFDbEbiY z93D>wHt$T-P*xKv=n(ez=ap~z2Q$ZDx+ijI2fJd{@gx%kR3X(#qVMS}&s?si!&)Ub zZ}LSV`pps#?UHZ{v7m_9O)|p*cAaKil?Ua*x7xQfzmC^5&&?p~-^c8MdE1{CM;|My5^z&i!xOnf&L>PZ z*f&)xKeak?-)mWJTI@TEW_Gq+_4XVjzn(QZn$g2N#1O@3xC4~vnz`BJA!Yus+t{*P+w{_J9+gYUGV;u76c658+HYw9L+PJ+SoG1%; z13T7Y{)kEv^RYPs++>b&SDzBz#S%wn4sbtAD~8?1+I#+XA59>LIoL{_)z$Uu{M0yb z%H!Ajdfqr1wFSJybDHD#KY|G90baFH+Xuc~=jle8hKH`RoI~j@trWh+g7BTVjpXF! zb>F%l;P>_Wcz-Z`n(bkQZ+~#24SwJ~E{n6THNDy0gqTnYPt^uE5v+uVI^o!Z9pIGv z12@1K<7~J4c@W0Wr?0CH;w&^=0Qhx3JIU_n414=*GlvI+rzRN(V8@h;wkDx}dZQ%^ z4V!*~{6M4J*1i#O6|1&0$$p{k#N#T;s&#L`GE2L3rKrW192CIsAokFBHkZfam$-kq zoLBG6klJfPdQjou;sd!r#Y}xJx!yYRz$$WOVXSY>xTX9{J?vOjuR{>}Yb(vy9ffr# z2M-i(q)0n2&dQ7qFWOjNYhQlR`=f0cwvIY;{WpCPKJMPP{DT35{Z)c3yB<7Q7cjx|YERB-MaCEchxivE= zOxtcyyD}3C9_*p^zSrj6S;2&l)sAfL!-g*O%t`8CYK8b>-uaXoXuzu%jvJTx;NJR9C#MEFnzoUhHRwQ6eT&lTc^Ust^ z%TB$-<%@MUeBIwV>M0Yme~_0+=Y@bCDR9>X#N{jg0>XvSk)HeRipf~1FH+9>+K5mvG*`Sk{OWuF(x2@aX>kE_0AK3XlbL9Y;0s-0_3%B2(X zeZCJJ(W|jAtxwBQ>uOoQ<5%?D?#?r1z)e4 z$UoKIv0#&|EEww04RCJv@vBRj9_{>;K8tIX$eR_F$=_4uWuFG5cGR-(HlE!%TUQ8ZO588M$-Q&~5X??uQxHXr{~V-29IH{KfNzbdk{6^{><7Uqgu< zvj=y=AnDEEXW0|V`@lQdj5d6d1jupX!&WXF1 z_O@z(Y0OGzJ3oK1rDZYw<6pt@+W5bfbj3zh`@ewaiVkDqz&#QV-f7;w7!&MLtyO&p zsPWyri%}(0;Z66#|8nJ?Ub;Toy&Im9^7q{RsG*8f@m*{~YC~o6#Fa68mVNCkujeCD^Df?j|Ymk0+$di0E@T6 zm#`cFES5tpMu8l@6O^j#lJQ$Q8kx4cHt8LzY|$5R2OV2NI+WrBJ+#7gl#Eq19xGu; z_1BRlQb$NcBV5_<1JDA{x&o*Hk%VX?*aVuhg0{HR00T5$%JSq6T1F~@qTO4DLa2m= zP_+g7z06Eqt-YioNa2X+fTw`9-w3RV&=7uy04)eYj5vZA!vHNT0}3l-miyx{t_5Ho z5J|KswW!TauI(8np!D0Ir%O(is96FVuwhhby3+Pz_G?=2R&T;dPQbyNKL$ql-x3Ig z&oht+3Q!mYD+m4J`Mv0$u}cVB?-7O!&|C|kl~071kAQnS2{`8pm?;z>rBs~-!ond8 zB4G_%oB@jnE)gCiyw2Hc5bYEIY`D)nR0t3z);Yj{gcwPA5{(e(VbN=kR){Fj442Ig zRLF{3I3HYva_5w~Yr%)e1XD;%kcl;BQ;uwk1}Ok5P$TPrC0l+xGP%(}-tCXohd{JqY0HSx^*UU9v%6Nv6p@sBxdm?yK(ym%IRrATq{z(V!ppG8DG9IGSjmIV_HRHU zf0ZnOiA(TdB0|?IaQ-%uZyo%U(;RfIeBwXfTXWANoVn^}H;NkQT6}AW!1aCmO7O=7(-4cnw z!9BYW9YN8BtPm*M3au<00#)hEM!OVt4`tIBP^tx_WXg4yQg*!d3gAVf%q0#KV~OQ0 zRIa&@id%?Ntf6XSoOP-r+oLc7$HX4=GJ_oREQGU`uH=oDn%*w1kX6rfY&tx~4Hit%50$T2dN6#Ms9ocF+3b+uQjL^K- z+}S0oZkGkdtlx*#xN|hrhzxPkrr|)GES8$^=?@(AV%9N41>~m zB%|@{U|D-Gt%dXWjAMwy1+twq39Sk?{a7 z^=@TQK|1Lb@L@SZJTuTLJUt|gLa=Sk4kkC7#P6D7bu^MoMp)H|iJu!zmdGVBn8D^} zWQRs3igBfdaX;4OVlERzrxpMfcbd6_%yeR%$?O1VvCINF?gn&{o4zE9SV1F;?dRsN zcJplyLh}yja+^ca0Rha;R_C_RWZ+>loKi-;4OjC0=Tl)02zK`w0$@B0Vm&w-216Xx zh5+v1M865faCRXOW@oB19q%;LTtA9P8q;9k&Csr6`wQCr=4OW$wk*%#HhW@R<3Z5n zu{kr+la}b`t}~g#$JS;woJN&QhB!F<(FrYCINH85JN4dvKn887p_@K`lr zA}`)g5{mp{<*!e5PCS%LgxNse45qQ`kE22mXSQfOJsfAa%%>%rLh{>NovtmWF?n0o zzs+S6KiRfc+i`&mgP7d9Y?`$K0s+3Rg84BY&y?^l{e z8~Yqwgje}j+j=mSbwI;~)+ZaL{0+LagLdzXes?uo=*SLP!W;6RaHk=J0kg8Kt=Xcn zbU-Qhv1z|((EQ0Q{jKy_#Hrfh#di|Oykp|Lk(*<*LsLV%0^9Fhir*06 z*#u_aM&Stzg+R*DL;(;5IHH2?R%y_Ev(fKs+L~j;L-f>YJEeT}=xX|4F!IFbQ8B5FxNKaj7oayR-Oe|VFQMjf4%{+!rzW0jqV`sIgW}APCnJxriD1!{(_1R| z(NvHsMPf^(+0~&3U198fp+mgCR4b)7R|Fd}MX-;HB9UmRgexVRCH-yz-Gafc{JDJt z9M0&Kk?dt;VEm`D5vf4P4Kb4Wix{9Npc9Nmgy=OCM)+W`#Tl4(Oo;GDCM76}d0;}` zq^5{;xWWmmBJ+bMTnQ}f3Ed684Q3e33U&jl$YN>y5=2F|< zcRATS8GUD_NZR#k7U?=knEODdNDJ`AZ>gtWcr%OPaO;55-gXwPFDkSgj0hfiN9X>$ zt0(%79&dLxjO5EJJkfmTDv1?G$Z_VOpWxH=I%zLQJF{vbP+|^3Rh}2uiZ%0KQa;WCEGH<1FnDr{z+ro!EH3gI5OS}<666pStx=t?x>L| z(_RULz0ZDqW5a{vC>FJIJhLiuR9OuDVwdrXXJ7){j%+2021d5Q^nrwAo5v*@k;v4b zK?)4t0(4@I*FLYwPg%jX zUIWHW3o-x39AR1tyYmZ<$91l!`bNSD^&J7nJ$5NM-ycMoSzS47@9Wq}%W69)I`c5y z8T_5qN?IptPhPsi&07B7%abDix_n#5J^!Ffu0d(3FQ@I0{Wupq^AVUse@5b_CRwSC zl)ad`anaE6libtk2OOT?e;RoIr-QqR{kSggW+X=b2tdb-C(q2HV-u(ee>u-`Q2jpU zB<*cb;)@TnY)#-MEuMpRc)geQ@Cv&L(QY*9at(FS_piC=^5x+l4y|ZIy^f|N2X~cx zOfSXhvrp4ZbK;y6bNsTPX&po_)$=zSj*jSMFXvy3!ssue==b|g-9B2AR@_#|n-ym! zM!gnqW;I2rva^zjvQ~Aa9*lUYZc87@eD`Zg$4V;TgJb4`uXgUv+<7|26CW>E;P*y=rQu z6T>W~d5mE^XFsrX;HR~f67Fy?s|j_fn$}50LJw?m{6BS^c|6qL8pjot^+!L-zNBnf zCSxbY7K-fqzEcLnR3c2sNVe>INMs!q={I4f?E4^$ZHTcHqiGCcFmtDS|M=Z|U-zE# z$8%oid!F+;uh%)>=Xw75ydOV;e{iq|7Dj$F2fnjHNF~tVb)|dN8KzZSs_O)6VUJ&27#I)cXFC66=y(olILb^Z%(`psUxdzy?}YM{ zdhJ6$5vmC4$FtPhqk)I9N%!6SOX<4W74tIr#g>aZQ{To3L8QcvNXN-tzRLk-{`&@` z&9@A#a1<>B{6)%*N2!?dig+HIyQght%V*^Emus5cfZ%J0#JaN1SgYecpK>VTZwRCZ^EKiIu`kAO-y_z-yY)~E>ya8-N8Ulc)VY#7%Vw(S(6o1Y)1Puuv5jj4|pzH~)k&Nt-MRaS1bYz7zUXN$4?~ zknZVA6}k4z3MNmn+CBljc#>^ppwkLv_6q_*>4@4Jw>xpSi_9Y~G`v2YXtm%g^R7j) z(RKor_`Lc~{xZ2}pS}Jk{}vK(r!vf`K9)ibV=ftk<>S!RG*jAZD({KSNhn2hZz)3j z0uRp%tH$9J;D$yNtp>sNDM-5SD&LsLI zfRFQsf*Tj6VO7os%SxT22@|WcaD-g$d?c| zL(DJUCk&f;6c!q3sBXRNnDf4!iEEJ4aYeS~zZ>KtZ{;D*zH)%Xbyj zp8whS+Q9nZB>0(qlu5`3B8vRu824)|;^LCQ(U~7IJMNQ&;a%|i>tPS5(KqWqoF>I$ zCj$iU{8D(M(L>4r#fEw$)u{iISA>cNFEyl z#WTiojq5YUBvT^Odaxh$_{yzCD&r)vgg|K ziH==|a6MNzOD$bNpcyTy{0GK^*}V31efqi5u>lXJWlIz{(ElNiBm0pXsxOJ0OgyaK zFgSJ1PZ$*xwgI6M_SYS$p2USgQE>4``)^$2n!zE6Bt;a=pBZ;170f0jnhuMcl5UfxaO@EKEjXFcoG}NO}H3Cm4w}yeYPI?L|!T%U5zbO0p3=-WK$Ey z4b+Xzss0*b07l$x;&LKi=~t!PGv0bB5$`n!t|7??=X9V>%-7&kwWO@4@iA^;-J+Eb zv>PwMrvoimfU+XJ=R^yta-~fTazyvz z&%(4evz7fDRpM6C^7?lHQ))eWiKPk_2m4O#zdETEc{vrNAp>I6+WHnRZWp_{tY!74x5$gDTzPNDK$a*{=XI&7GPIX?Jq zDaTk!mievGx&Q;=ozgbvvxg1}(OvA_>n`3l%AR-Amgr&?Y5#2Piya!nkrHCC?L7%X zN{dUI+NBl;q;yn?ym$4r#PzDxH0gnh=5atQi3S>L;T+ti#elZqc%|gwRZ*ht1m3|w&DxMOstP*ammT;l`y_-z?I0>&~#@Lfu2GER}%q=@NfEA z8)41;ozFIsdJawjS}pzf5_bY-E?FNh&;VPoiCuKp4L!Z(8(rVQYqa>nNExIk6zFmS zN}7*vG?sr)eO(S|$I>Pb94ysQcn|E4J98ZqNo!>~ugxNUSUhNN3+Q7q!|+9#dGZ8A zjkO6%gx5p_zj68SAilm1m@m@-gnfqnv>w+U7}9 zc{u?_58rq->QEJ@${Q-I-Wg9$FCF@VPYv+XC5 zke-PLaZ+0VSDo2;%XGTvw>xC&k2hFc$vwFy3r9HF8fHMh3FVv=;T7jm<_Zy=^XWd$ zws{y6hCkuYS0eUlEg34?_>J`w7<`7qV($g7m?0#=%j$l4`XkKKfIT}mIJ6pF>}Plu z!{)1hDlFro<|j@Wna;kmUWo^j^yo%d-5{?WDyaG%il`z-T$}SjyT_mdnon@~6XSmdwxOLpcba*Ggc82#PCKmqT)d^W?cz!r+eZt(b%Z z1dqodjg@tf=0MMG2r7C%xjJTt7D(gW=l%A5AvJn#76k2htofwSPT*|I5vcz9w+~K! z>P`E_nLu$y|5qFHv7bJpwXJJ@MZe|hWU7-Za~5%gBa}Uu)tH40@`y@oHodRN8>*_w z%xi<3`>-l3l@obJ8~>)xbe|T<=Mp=mqVIo{w>&$UyIitOROipsJ1U!p8*2{vKC#isW`R};1eO4P6_@@#Zh$9nh~p=7ML_hj;+Nj;oVBEiY$SX5A?C+K zew486pUh=k# zn!J%BC$16|Z3Bm*mZukBx%X=ApuuHGrPMzjq{Qs~sdI|T>)*AQQ{6?Ss?eV{{Xa8Eyz|a~e zO&|U@1nu9w|5v^Ex3|2(e^if_re}Tw*cce;y_Rmb%;=vPZb#Z!nTa`sh6j23h4=)D z-46Bj1B-cu`vl&3;3uZ2aE&$i_l!K$C(tk03#us=0F}Sz7ar~v5_aDYdXM!V&s$*! literal 18806 zcmZ6y18^tb7d`m-#I`1$*v`bZZQHhOb7I>zC$=XO+qRR<_xInet=+Eb^SWNW>gulQ zd(XS)^p%$a1w#Y;cYyphln7>3&xiQF{_h0)KCSJHteDu@Ss4KG|Mxm50K)e=p%v?l zf4l$yH5UW`>3f~Aoso-;iLEo8jhi8zyN&gQkB!q>TjJ%@9kq53f$7y{Gl)MSRLS(1 zD%s6shwQHL-sH;4>Z)S^A%#-`W}G7rsP@y*^>Mk@kU_=lE-t2!FL`oiroo#j z-we7U=m71@yqm({G%9{dKuwtb2@^MqG#?@lQW6}{GO%L`m+Vk_lDQ!u%Yw&&8RU7tVh4?B92RkSjr|Zj?d}ogI_*s0a`=l!`Xa)4#{W6q z(FXIznD2?|CoAg}kC3~wU4A7ZEY>F7+<%UF^7J$}|$8iZPh?f-1fj7FN8LSV|cxK5tJTbRnB%`+D(TcVaQdr!O|0`y| z=|37GTEU-!K4$Pm~2T(!l5mzbpCffXZ$C>1_) z$d?XJ$WM1ZWQGi%x)6_9+epwNR-WAv&$d>UPmqLEzZ6q}m;8Z~@*1reI24+2ehWId z{8@U_>Snn(bLD#t*%B!(7AHGz2z69D`-xav4W@>mx;y30fESx;l>QNKlNI0?-V*=X zMi{YQj7fr$MICsMx?`QKz&JIcM$DnmIJ%9#$ynX_Th*sGx2!5$&Xw*wHvc}w^-8#A zccZe?3oB00_Vz~jUZuUiDk9O%kjS`(jE$;ybH5M!7_aq)wmGzmGW9v;vEeSly$9Zx zMF3)k1s_g$r{%Xt9=zjjh)d7AFQ2$ch96pE+lXMESK+gd3b)70PLY&hX9XVM(e4AbR3Z(e@w3k^tE98ZOtJI}^(=N>Hw5#)3PsN^xI#~}~R z8N2zN4}PAJ_mxcW&D`F^y`4YWvb*MKw7T?5b){m>*taQbCG6Ph z5oI+$31QI*^}~?jnfd!#eiFuMp#h2f`$`1#tC&upKxBkj5kX|=S#xRo&5Iz*S#M20 zA1fsdF+{hg5Fxtiyojwy7yh~1vdV+rT)RD7>m{+M9bDN7ZS{X#(CnQ>YcH`{-#7Dr89>Y?FEXyr0XT2WW5R--11s4;~$~)?(d{c)DDL9@t5; z-ja+iHKn$d)H3z+Jy);JQSwYhGa!oOtTWbJXdpELX&NaW4f1gIdY#P76k`kr60o*+ zR$pb53&=#U6}#NuQY2yrZE33Ft4^_f9xtYR5bNxMR6@3!X0Lloha6R%qVM(i5QlFk zWM1V=P-oGYcqf^nX>pV6R@@vR$t4!s5~aTgR`kD96?tFZf5D$1S*7O8xHqZSXCUU*kZmKB36 z7=NNv&^P=E!+DT`KYIb2O8nr9h9HwP(;tQDrRNQ%@3tayWbNu*>a(i%A~1qMHF3FE zuEiOUBnsVq`;MZj)6%7)+8WVSz~L_xU!04^0WPp2;wVV0@~fA#7mbY@ zeBY3=16}FcCO|&h-bs(sADQ|(yem@<6p8fg2Tlt5{EtM z^GYADlt}#OzpZ~-$GV}L7_YS67`GA|?Z$p$)osiGo5G1{v)eBQa>H4Co!IbJ{>6&@ zNDl!-k)}oWelSrxRXxAZV0x&Yf67Tl1~ety)|X{Z-un2iw=DDs4#rT(?(;_aB3Bf` z2$m>-J2jjHsDiE7tg1-RJzi9B!*-{uaG-52tT`JJ?>a8h!&vI-#E9;-@~Qo1UVBS5 zYM)~;W+6Cx-f5>GOfUNQG#WDF{Tc%!R}Biy^u|_E^!k{C?7j&_=X=-a^xqq!(Jn7Z zdQt3)!QE2h>|jA;o%{nA$k55(4-PX^_cebfbqaP@8H{_lBl@zV0>?AyIBq@bWwvf8 zU!)G+7GsFfxd5?8(^1XT@>Sr7mmVjya>LmGCX%q6!O66xM?W3P+0gPgfm9p?p&gBO zqBx!;fRm|=nELFYXf+^BR>ycgQ?j9Lcop*1Wgqz!S7DU+ToylnAEmC=<{zf#ML#cu zMKHW1aTh^2B&$P^|6xN%Xn+CS(xOhp2MzNc;LEbFm&E@cqG2ypeQxFG)jb2f<`Ee9 zq!s-kx&XJnuEpfriQnf_sip({W701bc_E-i5>YQm^XKR=G262lQMm^c)Pd3E#7Lx- zmc#Kaqm`Sf%Ikb_0+9Y{9!&gNSkc+mNYS?_$A@Y#y_ahZJf8shZ19Q|5OJ=aJ@MD~ zgB`tAdRp$0Tg_uVc~Jr{;H?3*`$oBjS0)O*_tXCIb?T@RaT$T(OaoZt%aiFYisq;+ zQI{A;B8q)BTr8#gmqgwBp8;uTPWzI~2~>Q`anV5ab60fjcnO@41VT4uZtccG+m@Pg zLGuPn_cGJ?Wl0d1?%3}&=X({Yc{w+&XW1VuPyORCE-o~6$YKNhtk_~9MUy9oD*x=j zVlUgH++qr0r26K5#4D3>B~8S*$en3l$RSU!i9vd`BtQ@|MK@T2}S}npXKM9l$hw ztgBl%e_i&dg3_YTDgtR$Ry=QDkRhT1Qpe{MWE(BYtpg8z+-zcCGLi^wEoLXn(6++^ zh*igt8#^H(#mMPG$fA?y28jOBa-`ZgN@fozzKvT4tT-Z-kP+aA&H}R;o%Q!AD z2sTvPYRdQHK(Jjj$pu`@)AY%JvQ=x?YK9br*uI!!_iF$e>@?UNGcs`x}F5tgHxWD`#Xx#*Xc5}^k)}Dc3k_%pa9(RHcc#*~ibuYL95})`9 z7hMwFqO;l_Mt*uAqABouE<(=}S6!gTjmCn#I4)a}vZ0J3V|CsWx zbU%Rt{f{uf11_%s&VE=!=d;d!^wD7`t-*o;sJTsKQ}Oys^DIKLKavmdIi~EleroJ3 zz&%~ah%*PX2vJPfc-#K$=iSFxeVM1FoCtCL^SS`7l`0dS5J{L>_qGze*bZ3&>aXFHGtxel+ z_ltg>QBrHoJ$<(F;F83SP`~zHzK=y@~5Mh%%mMF(eRxH3k49BE=RkE37yI zkS7EK>Wd-pl-~m0S0Q|TR_ya}PE0xxg zox4w#R!=OKPv|M;Hf%Ci&Cv~=C)=@VbG`-UaIT$+95EZt%@pK+#~C#t--}3%Ndxtl zup3ZBMWn_g!6HcGQ*eJ*8S8!e?2So2UdRwq0~=5XsT~vr&2>f9!J8T4Q`ljUGGtT@ z55g}ZxHAvJNvmB3DZu}>5px;3mTJh@4_3*B^dWOuh*fb+S@^NTt*nK2@5O3>#A-<4 zHd>y-b~(lzrrfQH(ugHug&%at(Wrf_!-pUEt0Vjew$#21gsGs0?Jn8j&(O#dz+&x# z;Q7MDF=z>mqp^Jua_-!bpGl|=V1pod6%0GTrZO8X8`7g9p5_!dcW`WFEvD=aiW-&# zL#L@`$a|~uDrH>YrAv^UKRK_yuE*pX^ppI}QK@G?JxBHD`8v$oI|RR8RjvsIgp1G? zzmE#2*EuuF0_(LDH~984{532n$hI2z`zb^ZLwsM^LPJ?CFq$*u;e_wsUQT+}G%z=C zVY&v8YeGu`(9`Mr9SraWc$);+QS@~F;Wbjg3+jaeM|yGr`vh~2tpM{YgAU8tEu$?$ z!u51LoK>=`_dX4jnpRd^CPYFF2Xul2%nDZwA-ONwDgpvF0{U*su3$iAL|hQS@-vmy z_!$Ca6_;WK1^_yQRbPIgV^YDof8oOwGFPQI0E2YK0T@-kJvfzHB|ZWSQn$|7bihJQ z6FGw;Xi)GCKBtKY`UWu!h*;7p0wc;T-2{Z zzD0XU@Jq1%8MR46Ug%hZ%v?|Cv?ahDL2g2%BikIvZ&EEwvL>(w70+~0oI7knd=%P0 z`>GeR8&|R+@UGoak!e`lb^NDrwv9rR-3*U_GN0Jek8IGzx^aqTKzpHz>4CKhLC~qS zfnRbk>{hwf%9gK%=Uf@o($5v6kJ_<7i7VvBDHb5Wwg!_({Z1NMW()1fypm6JxTnDiiez|`T?hk4~RHDOp*^g&zGPM<*3U+Rbw!+$Kwd%)m zA7iY4*!C~Qt>tMkIKzh8_RrF~pV{a`Z3O0PU3bU|eTN;srf`h!e)034cHdpk#b>i@=HI)8EjaL|8T|6&hN6;~hw*1{wPTdT$igN5GKjE)rbWHIBN6 zSO+Yc;vAE3dImKeCQEpq&Ae590S)ewT3XhC%G}tDIA?Tnf55bL2gmhJsdNgGNy8z| z$Bt>Qi4cTRaA0Ooizqa-6$Cn&q1LiuGPM3k%N(5gqs>JJ)weF0*77|TWNEQBprE-@VfQ?`WioxO5JI1ChNl>sGl3#?g zhSpkMMQm9psUu^PZI?C=$T<~EK|1b}NXlE`a^x1aa5}OJZ;$qKI8ch&Zf$~zA>g)S za5-9~E0SMMy$Ap{wconi9jV}ji}{sLW6P2W>A?!-Q3PcKvVeEM`*@(Rfi5@5F0#y~IpS|Y?} z@M$g1Phr)L|Cnt$OW0S`kQ2;{f*=1$$YVz=AS+HHo&@;Mit;=p3-r7h;Ze|0u?|x` z0N+9|4(5YKh_MXke&3mC&Jn_5H%~DS9v?&(lZcnjnkgP{G%a-LMLA@}39 z8Bwvv=<+B+2<@fJXz+5!X0S+uZPs%^6RJ}cuLSR&E{eRO$`@OW^8QW78%escMCWA^ zng{f~M1~BvTw1eWwstOw7R72+QZieqTp|IH-d7x+r&5k(ZjlL(w5t{g6qjX`vgC38 zEBy4WAM#Pm&|J_xPBc-iEiS7>muqZc0swajmEI>8xo^&NyX-!1Yg-goL}yr`6dpn< z(&ev0yhctJerX}02?;EOMrd69pK%;fT}Vxm}2*>o=1+vmnC+n{r%G#+jLjv_NRr-!8$Mk!kF8u3GuV zE>Jf3^(NDHi&<2+SVP9F+~zq2r#Uc8&JuxCAn+Di zb|FJ!Ep)EZh9$p?!Pq&*7(K$T=)B))%YPX!=KR8JEmVl|J{FGJlrkhZ49Gc)Nk^?j zN?DQ;srA3JU6d#hk^UToLgOab{5#2QzDBeJ1;~`4<}%H2D&IEJqyikNBqI=Sz9YZ` z|CU5wx07K;D7hK(t_(448F#u2q&8B`HhxA}@vaWBt#I8@j8q&qgX=WpM4rJ`fVGBz z2xAbcnY43OsDAm+xggI}7F0B0=e7Gv$Rmv~s~Kj-xy&eC@VQ{wu#M-h{IDYS2Wvqy zxa6st;gEHKQ9K&FW+agIpp9v~rn>_|HzY^MpZ`HCKC8nh-nr+czPv2Ca&vg0_2sss zd-C5@E_Ujv(60UpOmeY_A8>*{URRZMo*5A^@en}i&$XxX!c^uXvjk#6$Gh|11KG!O z`{Ma_So{Kmf%|ezG=2qbXn|P*qd#a)?!+%RWlHH9AY@2Yx(1klA4W&;junCa?p1W_ zL0tl^ZAZumZOcsS3sHaZ*NJDX8zdrvz>V91J*Xf&0!Hv&;=p58#64KA$OwA+~Be!H2iu2akxvXpi2 zGz1Wwv?&z%T7$?XWvNQph)Za*0Nk8b`|`hV1I{r^yR znE9T^s6{K$?Yq3c-Cu;Qss;$qLI49yn-SVIlwu#ntc@tJbAU}B4Im2q4+6f6oB)Nq z!f23p5O6cF-zI3+-#1>2G3V{7`z0Enf{7mvPKBNPP0n3*0 z{$wM;^7o|v)Dx#by5zrC1OGT&$!w+j;bw~{(eA{K1~!h@n#?8L66a`kIO`5gburtN z;Yg0wWjl_CDmTx1AWM-*r*N4?br(ZQWUU$#4th6L&aeenTIff0ka|}VEp2AaCfyQn zA)5KhFnpI>?idEaimm}mq@`|LU8*sfmYi!!(NLppY;!fV_>B#0`J>p8RRI?zH|R@& z?&Nw37gQ|%uIKXH8`ZlO7(zGBBT=On-W(J;p}Q9U!AbQqaA;wJHivBgJ8h8Al%u|j z4=vp7D5z@P+`l_xj+az|ad{n1JM^<48ezx_(5a&|zG#awJ$9%u;3;gz2A+(@8UC1` zhXsLO!AYkeAcdL-*Gi?sA_c*25GwGts1=jh&yHdd5E4+~`h~^+ImfkNSd2C|P!9b- zsIWt|4>lyM-Z&2SINrK>@nU_fN?ApP31ltwWgR7yM$o)aTM z6_6)S9U#vM=&=g>p76t;9O>CLuEKwHF0MKDXGCv zNiO;kl1`Y9aCXv8N$*52>K3TSCc&b8F%Y@E1nx@LtLk*2tI{W+W(Q= zq!q@5DwZS&jaHb!%J}8*lL&&cE7#i^{FEwX{| zXk&3H2MlWOI}7NHs!0xQ5>bQbo%MG}Z?Ayl&~C3dDt_4N0`-8+MVu}Jkz9k7>l+2P!?T-+U0psNZ{4ie;M)20+GX~x zO3zX);Ec9Yn+Iqs3%dBjV4TYkPUML(0C<+IC-N7u>;4Gn$MOOHLF*>eFn`#p2B$J& z?#_1c%r_-T#tMaXVBy!sAUw=@L5eO?-OPNRI7vsIqK<(U&5H0J8*+k2?M){XDAE+F z#uvO2A%LM*+y??EEm0@LDWLrs^GuqPJf{pPhysWb8+zoV#1&)+zy1v+^(ZP##+Si9 z4j}{3R#htCiITnKky{C@z zx&1XP{@E7eRi-+x|;bw>*h1|&h z!AO32BSHXGIY8?!Ic35gqOGD^Sis$(pz^Z?T{20joRFR;!q(9-{f^oWxQdCq$=;g> zW0rzaT{+V;k=CL~g42;a-zw+D0EA)GjAaD>gSAKksM8TnO+E}=!mH@* z-&}7FcJmSOxP`vw4(__u4@PgdeR;mtU*O~Qry~?9D9}}OAUt+b75lSix*us*`w-jL z4@QmP5tQ`Zgz|iUN1I@V8H-e!s(hnwj*C!W7>njQM~m$hI9=;17*X^1Tw!*srJ)O5 z4DgDOI)*v`sC^x&20H$v$qT!v|4o$vlWBckq(A1eR81@bR$YNW=m<{(jp$!Y6;GB9MEXugA-5 zuIB-jzZYp)Kg%8g@q!OcIOhwU6ZlVX!Ork^?4tf2c>Uba(LbvPxzn@I4uMAD)RQ=I zuL%4z{E}hv^n=2$fk{h@Lks(x3vyBQe=aulHGUW z$lC-trOn%PR7A4VMf*-1@B548tyv+EQze@fr{U>?+231UqDal-aP)=qu)siKSMKjZ zp5}jh0_p#=C#b2}(*3l(2+ar0s#`C)c|v`hAfgBKR^j<-kY0etDsPLsj3%6tA`mW|NhiV%R;*aTKEgi1Jq{Cs49g1k%J|Xq~g}q;`}Rxl80=9e@hPYC+#v>1Wp-1 z(~BC$`H(4o7h}l8;$+dl|33TzfPO9a`Nuuq*PBxJEV+YM9wPBJq#cS~Y?dsU<}|^I zyD_3aX)r4yWPr#BZB(rBX1<2AE*7FlQ{JDg-@K;m$_F3i888zp_f2(m(sIlO&}7A> zKVT-PFjLd_MOZrOCXMYhF;Z77nrGX@%N4)1f12McZFk%*)uE0O+tq;0$bn@svPHg! zSMjxfb);SB@(9oe@m%nSB>?vDJlux0gLu~-++-m^4w7Uc{0`jPkApWvu7KWhkp!kb zd9;<40&$eApYJH(q%MK(Vib|yxcL3e=pw!gO0K13ilbcMAqgsi_=P{5wQ(hk&=s)F z!ziFr-;w5@xYTe@h<~&curpnMu*-v_=pu=|2x8raXdlA9{F|rrXIUvcfmk0)De zkp9V2(a{*}Omk4u|2IFw>WBVE{en?@SQ3(xD(1R?XO&hPaX4T-C5%g(b!!267nwv3 z<_3f!(mCS?mpCeTn_4Ke|A@e-H%!|y@;WR}UpL0CE*9t|@G@njJO3FWO)VA3uPBO4 z?(ebD#~lZ_(proC#p5Ww$p$8txxv1Q8+~AH*3Q16Jw9$bRqP4{ZlqWC4-p8C6A`$; zy@Ot53C3+-E%b-N0uhBN57Zn9udholDYLUjE))j~&5AlgTgl76@d0Io#Ev z0ZOSez}}+xcl{O0(WUe6N)^ZSG*3&07Z_$v8udF~x+=(bTTNz2Mz&mHK9uKd2ZjDEwN~<&#?tlFgrGH`u2^;QKUqD`yik^D-=3QH=!mA1l9ITGL{SqfQ}Tb}x}2o4 z&$qZ9^^4@c43%B8KVj29l4RcHCmB0l*Nv$vQdbEYaOBQ8;dhHiXx zxl7qt46GYbN*ZKdb{_{paL0Z_h6#cK=KKPcK(P|1(xyF(<3OL|4rhDG%eZV}7BE7LwkN2&fZ4 z@;QwQ;9W%InwOYJ?1nV$gl5S@-53p7;j~EZBFt=OV zC0Al3{>n*5U&sPO23NaqugUNMk(>HPBDglo?F!Zj6|FkocETpZ8Kif3T2wow@$I{^I7xf&~9(l8%ldi+Q znCLF(_Q-zq%;tb(Z$_6Ec6sObIPP5dY9s7cOU}=oFWv3%e2`JEL4PO=7yrktg5C-vZx3rU09_YjUEPt#ui(UnP4AqNYFl457*P?0Tcg zg%p0-;^y73eVy8Bo^~eq!r=^8|67XY&?fh!!%vzpkM;r?cM$LKu-kqg@ zzCUwIy!l)-(~2_x&!OLo`2RcfUO{_fo8qReTpXzO#3N5Bqn?w62#w)Egp+g(^ZE{< zvr@v6r^4YC!UTs2Bd^!qioSo~3Xy_Dx1DA-Ao|=y7}FfLoD{{&aey zpNtd7OmP_6DI=-h7a*Y*r2CDJG|<0FW6O)eZwkH`vjZDLVuh$zCYDF5=(I}Iz75NR zBvuB!NRWxA6%zQIhQi-zo0nb0n5Q!_EBh*-(ZnphsP28cWVg(w)~l=6C%Wyj^}9eZ#<@+0Y%~OwXFf<2QT#H^cKEeEcme zLApKX$~2Q3{UJclqb*A=jEhG;!R=k?YO0fSA5sd_?C{@Q|d zr}p6(#8Y8Ez&M54^Cl2&#}1>=s=&#Vi;1!3;@JIOf!`WWrF)f`)Ic_Vie$V1D)zQY zc~yR(jx)ez6UJL!P-m*$^`>#$=2TzxaV}VUD;)iqRY6l*)K?OU2#!g?J@6@ood!i? za{u^)yK$t6)ngI0tZS^1!EH$^3J!$Ob+}2#bW+M@yvY5#sjbpk?NkIpNV4=nH^s$UW^zkc zk-EgCXkyn9uOsp4<>p*kPqY%R191gl9NCp3sx2YKM=1bDf+)%2RCMt^j>YNTeVSyW z+`OQtJt3v^2XSn&j?BUD2rif04& z<*TH0yVP!)>=(ckJNFvp_DVy~Uk?y(k|ciZX^STGv2!7dL#;iikP=aoW?R#Gd zDC|;GY4bF6NkQI}t~m8FyqIn^ejdgp-CJ?W`#d;*aD8!b)sCv%N}oF7c?TQ6xImfE z#1s5Brlv%>BTguPp`7zxen0Dd{A|{Yea@(RncAAl{A%<5>R8_hT^*pP_wDbs`q6@6 z-Q)W-?UFdN={;BBQ9$P9v<4nB^wXkyWIUv~&%~~+%IO5bt&B@cihZKm+obtr>Xz`R zFrENy9|dI@%rRm_6U;Hq6>^`q_w!}LgdM&O*dpX`!i}&T}>*1|Z$c)dY z^TS!~@7z`JIx@y1{>qUR$^mNA&y)VM zUrar5c6xq2G+*tluRu57ngIKrk#}e0>6ByKEGq#EkU2-t?RBX|fgRkDDl+yFhj}9Q z()?4nEWg+5wWG?jM1NTdK9)SaPv4ir))wGq4*aS>-vHAk(zeX-0ykcH&TGv+i<-X& z9pemxOVmpCze~a*?H-NpjJ=2!COjVNpO!U*v^bIdec9~Q9w*MnvN>E53af79G(Vz4 zs5NffD|B?!{v=C3L~DX%T%bEK$Q&)Tdvs0_BFvTkJ~fFleS z_DqN^F=N6HCs5NmkX!OPA%J5rAIWF==HEJ(;YM}J;KDeUkO=)Q$l}=zax~qHbTDbh z+U!g{IyZQ;T{=673k%RO&RlG9=$(}hhOrtAhk<{U7z?KQCAwo`3t7$iI#bfrJSlrk6_e;m4 zQW1KrV^U*aDP~5`dv4)R^hi*Qm^(L#LIJn4?km5(mNu0!FFI(WDD)cfw2s1Sfr0YL zv98|}OwwNEjN0;-kITo4-t||td&BKr7~&O8tde$4kuqOwZI!HKG=CvNp2F|iS~;ci z#QV<3%u+=zS>D(@MLYT}?QXx1OFf2Hzp@I|566eMzoH&G%jLV=F~8)>TXOF31d4q< zo^~FNDk_w{Q*-L*ZXmGBs*k!x>f{J~*K#;bie%ndnkBp_vEECkK2fV9onHr@jh7-= zt>-)5G6uJ6vIq*(`=O&-Qim8eENK{?~xzjD^)QZTN-L{=Wf#fwY)Qn ztGFv(g*dO6+ISj`8U_^ezNpW2?hX8E4B1mWx8?Kxs7c3;IW&P@-qW6xDb9-SH5qfy zvP){Tl=rqA;bS~UyxYtiQFv#lVufuyd9(SK&>KUpN5q=w*8SEQMw4PV>y;V#DGc|! z3-K=ZuhQ|8R=bX)nJWFhC+M?PGGqcvo#!BN;<2Bx>CwJ^R=NAkrrrSwQVuxVzi1Kt zC&kNPorQGmkI(~SQ3Y*ZrUCIX@z5e=0wv1JqfU|+$IL^^w5iWj&;%2zwas%68GVJl zX1dEKL0M^K@HurdPj+U8%o+H#7({|MZ$c9^o2{FwC z<7at@*ysQKkz3eX8CLxJ{eGAl_q9Gb=U?;B7L*EWkLZ`N)tFOEY(?(Saca2;R|&HA zq%oZoWdWlc8WV2hE!#`TlWBx&FHBQgpr6FsLWJl1@z6}IsVfyp(R_pQ^XbZdl}|g; zyT4vfY?jp15a1-*`NpEUr$hrAKGLj0AJeq~D;+FMl>%K!6;v`N(spleYyh_wPzWf* z4paa_Mq3h!;$e_I>MJA3_my!nQbmYlW4Z7lAzCH^#ew3iphbW9zX!x3G&6u=DU4zw z*!wdf>Ap@yPle&0X{#HNmf_MWJz*Efz9p0+X*7rK1<>5mVJA?`fVn}9!MsqXff*)YJ=RR8e16p#S;b0u7a57z@>+QIQP**@~?rLqj)gM)>WX+Zo?rHRx`$zunF(~ zoJK^jz-&8ui*`77z{~x~cW<9pYz0UBGe3>#5LJ)?_8xOukOd_CZ{VFMe^ZAL3pR5) zq3g~FdzM@%|HgA$?=RtYpgV;7-*7ILVl)iH zWmo^Ap#>`ALxV{WiOLf&{bU}|kTePbK}UtG9(pptp)p25x)hTFM96S}q6`RSH$f4B zV~-VITRS>2PaNZ=73jW)GNcxbF%4Y(QJAg+`fysD5MJm{`rxuk5d};cs6B-;DoP~6 zjG!_pMSP~JpbZjrI{*6**jSVuF?^Vhpru%uTNY%dnH)u4z#?D~8_7droLgkDhIR*L zk)1GwLlN(1m?5O%5Y;WRVoDQ8{5XEOA>SWgevxc(@P5o~Wg~m4$B;;#LBu$vCP-uz zD$Y794B44?#5-^yr!If%MFx7gYbQC?OVR$bue}d7nEp-c5x# z^78!ouJR9-N~C6Mp1qeEWBiB?qe8?SEuyWqfp|~`hxUaR!nkgqRl|`W429-}k=A1{ z9?Cvk`%ra~mgCZ6z01ChvLx#fs#5v#-FV_AV&!(^60l%KFKgL&8Z-bY?GFC1 z%f*)Cvi`CCpb7IewdH+L`bCNP-)i(r&YmE{A?uI3**GYyJNV(O5L%X_BA>&o`?hK; z-^j-JpLAI#qgx&8&$7>*=%|J$`vpm2`H|V=LLz*92{f8i zic+a(6|oQ_%C_$w7NZ*>N|y#MMxGSLbd$D{5MHiX-I=@7eEE;R)n32JE5GW?Z<-*FP@p8!aGMu+9)~(7pyyBPnx1+9sBV)L(w|Si=$>R zBVTo+?^ieq_}9#^o!L5;rZmsHwH{`4*YNi}6Xhj4Lp;CQg!Zx>2v4ql&$<5nEXfe# z87tjUCx`fUdlphSR|23QmmZWspW=PGVXVJNQn|x-qv9uu=k(eA2U0t#UknZQYeG0S zgopB6J~_(Ss=?KGZR#5jpZ8;@RZ>%`@m6PMdK@s_wcnhNPY@q0_(5mHvY5vyhPm%S z3Br29%%)^`oamnZrA~Z=bsvO}`TT74r%Rf@h?xyBk}l4h^FVKWf_(-5a?}vud2Bqj z(}j;sV25e^O#OHs4`wu6<6Wbxx2!D0LwTy>w`&GB`3qvS*8J?kl(R{nTAwlVWZJ`*UZ-gocU1fDmsp|=@66EIPQGxkd2@cWQBQ}pT( zV_!t#zT#h^2~f953~9m79?LM8M>M|n>o!3yFy2v`5r%^(mb(0G5Uqxo}41>b%964Gz`VB9%hMg7Sb+`o_^>p3d zqd8ROvfO(TZSw`Ta4UuivaoO7s2EIY##TxC69f}$Hxz5lMRIAdO;7Kj*I4a{A|uWu zDakVWla74uyPo-xU82jp9s9sQ_iiG|9U2h}jL%^fe@9!3&wu{HU5z>n{$O; z9~ak5jCE=^pAa__DNd0`1J(8^c^=kgj|AFF6No~U5s;@F$1L~NKRNObk$sP5P}jc= zf#Y6@xvCUB3~0bhtU5I4Ylk5b3Pj|w`HYA)70<&&X2jzs`e;_}Ee#^%nIp$Me6RSb z0mjM1=5qy%)ay~>XBJ`qZhR#(**zf1FrH0GGIu;W0!uesfis4YT%u)X2NI84L4?veI-sz$eBfPF!m(hoD|9qm230fxSP8A&B6`1c<8-O`(jbwOq zHZOW0B~%|V3^yk(CoYY5`r{VX`oM3h(pR+@wu!q?g$mD0^Eu|-Ssw6dU>ft~$bRL= zx63zmbv@i}$=>K!OwO$l zJL5yKzzMlDLOjGnfn$+=jXLj{a~Z?hED*Jr&G}6b+%z{*jYCDY%GU17YVg0(OtX?+6 zq%QyXoQbSjSt)aE@+N4Uml0?hAm%xEJ37dk&Mnp8RMc>NwBY=wZQP|+oHG-eGGX2& zwv54C=b)!d=b0<=WkEY}Q6^(gUYZo~S#XeslMNr{ax}ReY$0Ny^<(4HyImZ`CT2m4&&N$IzA(A&@dN+JglM-|@CRP8jC@r}V;#Jqa zMRnfDcaQdP!wv2aX{Gqg1q??GdD4vqdor`-y@!kKt<|2cU3~D1yRhL8Hg+aR&hX-w zyg2fFWN$0q+CP4HcQE{=k%ng~yT0|b z8T;J>UH!O3@q_OLC5P|;Ct4%{iaqk#=tpyEo8H18OD{Eow5{o?vunzcrcum;a^z6N zSo5pvFRlQlPjh6j?sn8dUt}=k;3)4kSm9{~zmrBsMbnJlb!4;-gHd6^G}> z52dH1oA-jMG7I93*=`kOT=u(;{R$ zFxY*A+0~RAU#=M~m9!>zrNX=p4y>5i;IhQp|xpdaMyk}aV3#a#-VO*(}?Ja3E;9S z+y+5(-7a$}qYrNd%M&I~J^vOW)Vp1J+LqH+F8#!SULQp21(eXm}ND#Hmcp>D?3tPX=77eR{R zkZF(WB0rY>qlNf~q?lT3#W1zTLUvmBSkb#}lRtwa?4g|o#o#XVV6*Sh`QX$U{NNvg zhgY{qCbyTmj(3}<51(n$a8vuH|2^VJSFhvMuT?R<=$W7gZCgUJRq3$7y0Vr1>ih7; zOS;~V>G#{t1_%TR0Wm;=5`w|VBA3XaMu7l{1SA4-83h?2nJ9xZ96>HQ!lhi| zK{x{e$$wz?!|ZO&c31V=)!k3^@uBOfdaHhIGXjEh+%FI9MN6@D=KZ);`;Hc%cs;5b z=;M@;UCBja#HNhi)}?KdbErBVWmWeqL%+W=-&uF;{kO;>noBx{JFRthvDHic>XB}% ziu0x3)#8Gq(+~0Lcl!el-(@1atA$Nl*^E`rB8}0=bYZUz+cYp-c*7k3^*<~ZPii+j zI-h&?3YdFy?`4-Om2a1|PVDU=oP6*1F(tBP9jTNFhwBxVXTH}j#A>mu)2j%Hq|TGb zPfGMtKO5c*m=7c&A-1$&4aC@+*qUWCm1&hsE$bRD(=m&rr4t?3AQm0eim>2hL43=H z*(jb&msdx0p|bUCl&xlKodn`U_Kvi`sy4!)lKAVK&}-Cfb#79(&nQEApyZ}63T~yc zse2I~^tkBf%3!Xda)lQ|GGC=kb^-GQFg3(I-vmEasA~^!02)`sc=%6y`7PnMF{to+K)* z=l~h^EkrvIhIe`^t9IaYcxj(}A%ueia5S+_*O2*jnMPe_S zEQBR8C{B0k!8)oUhHvlA(s=U2E4~u7e5e!d`J?Rf7d9hZ;0PQ!$6OvkvX?|hd}aGJ zgumvn00KGiL`4)3zxe+9GB`SH;Bprz{o!j7&V^1g!2=y{~rUIA`w{7~pj zzh=IBP?M@VGBo(ZOh;UOtcM_Cu3_+t*=ozu@MNOYMXcVTtOOq)TzUDy9-q!*w=+Z1 zCVDa7swnu){xZu2<&nMO=-xx2PCnW?zxhCEv;J~*B2;1l`214-KOBnB`a$Fe*Yr&R zZ#QzO_(I%MWP*=uYW5!a36-N?e37h>%Pa-G$l8??^btnicN@++q#~+Ub~Gto&tCK_ zPcr-+nBHI^m73oW(=!~xmWc9nLV=L-M2YZKq8_#{lqGAL6j2Hjw@#_;C*F7E?5p(* zP@ixLU-3a~Rvyx4fIFXPm7O=YIc%mt1%*vNc5DHmRs!@Irdb4PZHTAI3;8yq85tBbn%E7o*A zQN&J9o%tsR`kBtBe(*9W_oj7NlggyuY+|nt)+#(a&`giBHoIrJoXJQ?H0)noc9Z|9 z$jT#OtA%IyYU2G$G`u0WrpKCNnBUZC$17adRrw`KwyQwfXS(W&Ao5;TR?J|eg^!5y z6oW*}z0K!&0-X~U%sjVqmB3lY{I4svC&dR3xXi6xdbn{1&sj!^Fs6{MCg}&dg38$O zk=aTMJfEz}H2*Y`4m#Q0(3222nqA1UVx?|kU z$brg*9iCi^x!Yq$8dF=*sLY?Mfbh|kY5~k((ZIKGm!Ty7p(C$}PdE%XTVucrOnp_ciWK|YORX3OH0C!Bcd1JJfAG+joBCI& zjo%L27^1%ve~%#g_xc?>YU3eW-Tws={ipixtlM8|6WjkXa<1njw_!*-B(`elRwOuX zP493fdbl|mT#CSl1){?*hZs0V1fj1QpzxPNLZi_JW+q4Fu-hZhsLLT}EGo*{022kh QhQ{Mj;kfJQsB3b60*DM8{r~^~ diff --git a/nbproject/project.properties b/nbproject/project.properties index 8b7302c..911a7b8 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -1,7 +1,7 @@ -include.path=${php.global.include.path} -php.version=PHP_54 -source.encoding=UTF-8 -src.dir=. -tags.asp=false -tags.short=false -web.root=. +include.path=${php.global.include.path} +php.version=PHP_70 +source.encoding=UTF-8 +src.dir=. +tags.asp=false +tags.short=false +web.root=. diff --git a/privmsgs.php b/privmsgs.php new file mode 100644 index 0000000..44b8627 --- /dev/null +++ b/privmsgs.php @@ -0,0 +1,50 @@ +update('private_messages', ['msg_read' => 1], [ + 'AND' => [ + "id" => $VARS['markread'], + "to_uuid" => $_SESSION['uuid'] + ]]); + sendOK(); + } else { + sendError("Malformed input.", true); + } +} else if (!is_empty($VARS['delete'])) { + if (preg_match("/[0-9]+/", $VARS['delete'])) { + $database->delete('private_messages', [ + 'AND' => [ + "id" => $VARS['delete'], + "to_uuid" => $_SESSION['uuid'] + ]]); + sendOK(); + } else { + sendError("Malformed input.", true); + } +} else { + $where = [ + "private_messages.to_uuid" => $_SESSION['uuid'] + ]; + if ($VARS['filter'] == 'read') { + $where["msg_read"] = 1; + } else if ($VARS['filter'] == 'unread') { + $where["msg_read"] = 0; + } + $out = ["status" => "OK", "msgs" => []]; + $out['msgs'] = $database->select('private_messages', [ + "[>]players" => [ + "from_uuid" => "uuid" + ] + ], [ + 'private_messages.id', 'private_messages.message', 'private_messages.time', 'players.nickname', 'private_messages.msg_read' + ], [ + 'AND' => $where, + "ORDER" => "private_messages.time DESC"] + ); + + echo json_encode($out); +} \ No newline at end of file diff --git a/settings.template.php b/settings.template.php index 596c14b..2eb6ee7 100644 --- a/settings.template.php +++ b/settings.template.php @@ -3,6 +3,10 @@ define("DEBUG", false); define("BETA_MODE", false); +// A list of server addresses that can be used by the client. +// See cluster.php for details. +define("SERVER_URLS", []); + define("DB_TYPE", "mysql"); define("DB_NAME", ""); define("DB_SERVER", ""); @@ -31,6 +35,8 @@ define("DARKSKY_APIKEY", ""); define("CHAT_ADMINS", ["admin"]); // Color for chat admin names. Accepts any HTML named color or hexcode (#ff0000) define("CHAT_ADMIN_COLOR", "red"); +// CSS styles for chat admin username. Default is "font-weight: bold;". +define("CHAT_ADMIN_CSS", ""); // Admin control panel login define("ADMIN_USER", "");