From d8aca3996b8b11c89bd2d5b1a7c7b5f6d371d477 Mon Sep 17 00:00:00 2001 From: exodus4d Date: Tue, 4 Nov 2014 16:48:10 +0100 Subject: [PATCH] multiple map instances support added --- .idea/deployment.xml | 23 + config.rb | 1 + img/custom-scrollbar/mCSB_buttons.png | Bin 0 -> 2998 bytes img/mybg.png | Bin 3647 -> 0 bytes img/pf-bg.jpg | Bin 0 -> 101381 bytes index.htm | 1 + js/app.js | 8 +- js/app/main.js | 124 +- js/app/{ => map}/contextmenu.js | 0 js/app/{ => map}/map.js | 267 +++- js/app/module_map.js | 272 ++++ js/lib/jquery.mCustomScrollbar.concat.min.js | 5 + node_modules/.bin/build.js | 20 +- sass/_colors.scss | 2 + sass/_variables.scss | 8 +- sass/bootstrap/_navs.scss | 4 +- sass/layout/_main.scss | 27 +- sass/layout/_map.scss | 59 +- .../custom-scrollbar/mCustomScrollbar.scss | 1229 +++++++++++++++++ sass/production.css | 88 -- sass/production.scss | 51 +- sass/smartadmin/_main.scss | 7 +- templates/modules/map_dialog.html | 37 + templates/modules/tabs.html | 7 +- 24 files changed, 2010 insertions(+), 230 deletions(-) create mode 100644 .idea/deployment.xml create mode 100644 img/custom-scrollbar/mCSB_buttons.png delete mode 100644 img/mybg.png create mode 100644 img/pf-bg.jpg rename js/app/{ => map}/contextmenu.js (100%) rename js/app/{ => map}/map.js (80%) create mode 100644 js/app/module_map.js create mode 100644 js/lib/jquery.mCustomScrollbar.concat.min.js create mode 100644 sass/library/custom-scrollbar/mCustomScrollbar.scss delete mode 100644 sass/production.css create mode 100644 templates/modules/map_dialog.html diff --git a/.idea/deployment.xml b/.idea/deployment.xml new file mode 100644 index 00000000..6647537f --- /dev/null +++ b/.idea/deployment.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config.rb b/config.rb index 76936db3..63b43d67 100644 --- a/config.rb +++ b/config.rb @@ -1,6 +1,7 @@ require 'compass/import-once/activate' require 'bootstrap-sass' require 'compass/import-once/activate' + # Require any additional compass plugins here. diff --git a/img/custom-scrollbar/mCSB_buttons.png b/img/custom-scrollbar/mCSB_buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..985a9b8b5aba0e87e15b81c027f199d0d097cfd5 GIT binary patch literal 2998 zcmbVOX;>3i7oHG-xKM&sDT|N<5UFHOz)1;U5(1$>D2O5`5Rw2XB*7%eu2J(TQWYw= zwz3ITTo9_bp@6$0f{F^o1%x72#8~z~0^bCrUw`!Jk8hrtx%b>T%X`j!&wXZBV1T#D zJj;0i0GM!mSV7QO1UT8QF^d9lJEAy1IH z@xIUv0N`<=)uD<|e?J;uD#r2jI=B>ZB4iB!ZXPL#Jbt`Tfr=K!iX?Q5x~2|;5((&- zwN!tCeXh~mM_=vfc3H$O%g^n{c)nh*oY&_5%k@P?1|ts-^<(Dy z8D{?+YK7l<@T%6aY!GJPb|KXv&$u*2^Br0G!Ug@*mkeM47LXN~1K8L$?Ws6BtZDf= zxnSzrpTW1!AUM*@e zLp`+UJe4$w*<%Y|)rf2#*OmhkHdA__wcTis1*4i=64cvl)N$-_gw-SM>08M6+s_VZ z*z|2?;5kQ$ zfT0XLRR9u(VgOl9rl?)-@*5n?Oq2jZe?J3m?cEQcHl5A@+8d&LOaOrSy%xFK!GnjW zz2Z>l&#~Cb4-Rrudh@HW8MViJQKh}&DqL6|x= zAYi7BCtc^`VCbA!t4~@GU?BiA00ZFwX5fUtD+M^5_lJtJXQ#*Kt;hXY2je=et7>X% zzp@H>*hXJpxXGy^c}y0`mwouL^FihwbQLv5W!5Qw?!BXJ@bDY?8g?g`P{o8TIJ&=a z>CJ<(%VM)mndR}!KpoOgA>GUy?sfG8fMmD>^{Rnq<%O-RbJGMU9o+zS*yuV*V^`N)>hkgxDkUN zCVg>p42wkTbK9jbl-HX|L(+4r2FGdZtm$TLN?!{ zkvlbQ+HoYx7rVu1%-#Bv_1&E&B~J&A!Bf6WtLT=8b2p`Hv~T~=Wb}CNRLAsPj&Q#? zEO3oX<#JQ9$0z#1g&rTlNrKc{)!H&x6B#*qVZTSiZwG{p16@mRERxiHU(BtWN&*{x zrIekl^9FhAz75%uQ&tr?5h7j+;Jz3u9bNLK+9;}g_uRt%q?|DOF>5v0*9@<`I2m!h z&*BDuiFS0e_M`H)(VZOK*g%FZ?DgXAYD~m~np#(ctd6+g3Mm+gY8> zQx2WG+MAw-mzdI{nrz}WEhs)Rug#h{M&LYXvw638p&SvS>D#UT>CZI7PZgKcq>j4z zXRCn@xaUXRlwn8a=!OHMM~9CCV-<#%d#B7ZfJ^NB4gYBkQ?4~mk=IYqmxt>Nfvdiq zoY5k>>Ghn&*=kr%t;Yku!wosO_xPK>h+T0DAN#Lmgl6-dD#o{3pr<~VlNl_V8R|@L z9|Cwxh1r|r1r?X_Zm=*%Sd?@~{aajf0dhoD>1aP#fIN6UopHX$+kDvENyN=!|L`fS zuQ#u$eE7?e(u862&fahpXZLe%+cW333yuQ$)y+QbUq+vM^x}2ih^oz5>ri<52>ob-t*jbHmL;Ql`1s2u?TeN1b39LdY9GlAze+7~ z{BW%|+zyaEFN_X;5>{d?F)R{ux6McO7Z{1Uie9x4xcmh*g`4Y)Q6V~T*%v3r`;zST zonOe9O`Fd}#Hh~aFNjfPx##BY6=cW8+sd)=yZ=| z1%r~3?cZ4TwhYLh723rpbk(F&M4sgz~1RIaSu1m3JeA|G{p_F+t$R$Zncc8 z8LjVl)Ka$*dGztli_L@QGh#O^Pd`;O9>UnZue%U?!ehN614iLyy5YH#?1;dyMm=Z;!)%N(162U`wk?w8~((Y19eZN7e1f zKI8l~xPV^cq0=s`*1}5JMw&;_nT@eRi$BO6VW0L@&S|y0al7@>lEiKAxm8Q7S8qA< z5K*mDS|&1d%CO4##*81vVf#DhXkhUAiYIW)Qw73Br*xSr{OyHm3`V{Amfn>-)RjGX z+jRNZ)GwhPMY6U96?F$H;tFj8;f?RJ>ew&Oo!NfFF`~x!P|3 zVGd(@WQ~+#efXaH<*;+_m#skCmvC6!#sa4=JWzk*O2}{y00%0XH;(4KDYMf5Nprjc KSQU(@ZT|(at>>)( literal 0 HcmV?d00001 diff --git a/img/mybg.png b/img/mybg.png deleted file mode 100644 index e6569aaae96656fb0af8ddeeead6fdfa77809e0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3647 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 diff --git a/img/pf-bg.jpg b/img/pf-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a677831846dfcb5a70c2abde0dbe7a38793d95b2 GIT binary patch literal 101381 zcmeFZcU+Un_bB{OrRhQ_0*V_#f=KU3uuuXL0!W8IKuDp5o`j|-vZ!<=K^Cd+sPzrX=rkOuNK4Ho2) z{+b4AZav^r!?Wvqn#rT`m$EwC8h}0EbBRZHD=h`4C(Z={{NS5g_Br^1f_!m5 zA|De0V6XVMw;3@UPl7rGhEu~Sf#DHQ3ui;9ihEEPF+7H{575=t(MRg&Ahq?NI)+GX z1Eih-SRKHB0RXmf-`cvmIu&2#`}`RIDtN!ODR82K?^~KrgEA zl8q<&ud?y-e5-@!B=7gSMPj~G2Uvq|u6$eX&-XsR1jM%FIc8x8@P2*;?AXcy#6&LL z=LbMCASNUvBrGH*EG#A=Dk3T&{ezg;57M%dlG2irvJzrj;p^*5=HFwU?V_UFcWf8m zu|r&H$BrFR+-Qf?mm(7XGZlQk21p12IG}=$2L|v;@bF3Se0~TDDe`%c=P<~n0MAwc z8RiB)fQOe~KyaIou!tznzax17UcPTgae#-PhmV(^S74ik3L`SGJog!KIz9yWs>etpmIEa#mB zz{?AA%fH3bHbDV{Efy4YAp9T)kuXUC-P74pTn?@~jsK z)%~ZOHYqyyU!-b9d{T;)|18p~KhjTOS;?d%d|Q^VIWGB?FJ& z!#A;^M$XR@IX}b!UG;6q?q5EI|8|N~aec3yjfn#3-OC8WIYI?G3Aa#FUi~Vnc$pNX z6#+k$)Fkxb=jWe+=}MdKPICGF7m|Iu>Q4#moquZBCUS2-U-?x5_{wb({5leS>hs;T z-+Np!G=)6H6roEKtfLuWE5)$Q|Y`=^h$W8082UUlED`-qCPAyF z3#sKCZo|8zzdI#~vjS{8>-rfu^%-dJc&Npv%(0|xW+_EH(3BXua*9TKf6PU9H#Q;T z_x3@+m-5SJ;CYSWL#u?+(Y&`s8Nc`(JTsQ?3g}bpIA!p2>8Bc>pQoE{-sl=k!V`wQ z+h2L?|74^l*_`o{BPlj|>X=XRFInBkEl#E<+#Z|BP?X8E-cBi&FQwg|60^Qbv-RI` zv7BaqkwDQJsP2h_8DyShyxH*Sy`oMjS^XiaChomK&|9(MbU~BC4H^(D_i383xq*19 z)V3s%QfZ^it~`V+o#(k_uS&MCyLeyt*We>X=_O00)ut%xY56~1^;XBV-01Eq{z>*R z*=mNbE0dP>8Ay&-C2p?DKDv0(3o~z8*|AFf_y>P{$ivToe5G#)WPG&m!|I%TbHtyw zReMCj{50R*Z1saKcTU{j%sJqKsB8`7J#-;P{^SD00{tjh=%QHJ(fJ?VSm+%1Q@D9b zvd%uO{PXy_+vtV#OD_u@Yi5jfGY8K9&|j~va_z8`=W?9D^;T$m5Z{&oi{B`( zK_jGs$K=oD2f00s%?~_utmKMj`nW=<9qrOio$8I&=pm!cE3bciH$9lqGZWoD)c$nB z?0ukXzxsSWZkPQZ>M&8_<-u2V5#>Z%qRTZRNHTYA6X$C9ASNeiPPaHYgtP!v!|{Zt{%?!#C`^F zYpuik3m!y79;<#{W%2mI#@w!f@qo3@0Q$A{tJ9qi7Xthq#>}Y`);g~rYSx(#l?I~Y z-JhKw?+JTdc{O-L%K2C4_k0FEq+Py~_GYfTb8Lby=M%nRcTU5vdv5QzL^p|5 z^3|yF8XIeCXA2skK1#`viE@eKuhtLuH+Ij;hT{VQ-#kIT&b;2Y-FQ*$s7Qe4?x#-| z7B4P34|lLcpOd@0u3i0I?*35F0P8UQF*vb=KhCbFoqc!Zz5#qtiRiJp^2dIpLP*5N zwL|Hro;H0PTl_Qsll*SLF7AqdnqqF|CFEo=Fat;?Qd>H9#B^6$*R=t6HH=`D( zobdMKxnrBNRh{?oVrm;3ADOMiCn=sYctZaVZo^%tXBdApRG;cwy?T)0F?33QjN^RK z2J892L3_JR9^*Leqj>t0LB8wHBG;ULFZy`bPKnZE<*w259zu>tRLSFQRM8dCce@23M-P-Os!Wdk(iioT|97-? zuag!WcxnC0$#E|V(qD^wUgQj|J3dB>D|IQ$JBI0QTL~VCwmbUq*ATL5U(cOaEsrw8 zvCFVD4B>nOClbE=gb~+=U4ma4o+xz(y`A|Yg0KjX$*Th zdY@C7GdwMSz95%wh6$!q=}vcZ_o5N%+|(5~h)2WeHeexo`RBRMFQt(G+CJ-PY6JVt z(RTdYtv3Mtu$#vd;M;{bvK!o@^YX5I!6CMA;!gY*U)H?WbA-uw{UO3 zSR8z~n_B=7jfe^gqaLMEBWP4G%RLbQ4iu_0K0G{Rivk@+C6U5tpDQ01iMD z5DtF)0S&+s2m-rq#PGDB5Nc4^R`noW zc#GP?4vYDs853?5yc%HiFX$XVc!G-1;$5x&o~88?7n9# zqQWfxl?kK%D`Sffp?t^K2T-HGXDmZQP~S74PXAT4Ie{GTRViOI1~?rtw*a{T&uakS zM1(?#;WWHy_^;gTRyYzB_FrJ;A^(-mJc{Vz8b-BJath)0^Y>sLLWKS&xDzFWx&?QL z4Ka24PA(EnB2dGlP<~WDt^`|5Is`aSzKsxWnoA76xoiWrB>ykf{9Cgw;BoLjHS0_W z`2u%{BA8;iHEacOLR5H!dmstyTyV4og#~<5-wrOq3FOH>Gy5 z!e8Lqzrme?0s{Yv5dDS#dHYV!oi}_hzwq$&NXYx`y)~zlw{SbYu*r=NCjwu_+x9IO zcdqW)qLll4o^O3CFT53l5zkgB@bJtHB3~yAIAFIpc)JC)2DJSBK}-l3gNIx&@O*_- z78ZSn=x)J1!T1{u_gu{b&aCf{tvcU>c>st2fY1Li@IB|E|0C-2{~z3zF1S^LvVGMQ z*TeuG__@&*R-2mwczJlXa$LT-oO8#Tz!pSk3-Waq^O}OB;PbUC*HrP>y5zZ8zFIK) zq77~q;8OvsIsqp3gR4w9r~?f!rfsb_QDB+^Li_*%xc+E>sSq$72BxVXTmvA2DGEUT zUM>d2a#tyCi3kuEwM7*O(rExO;7ay|o&ds0;3o`h^XtUs^6@?V1;*uz%irI_UkJV< zzAAv552J-}S6;3n1@YmuFe2sORuKYK2gGfum^<~pk8cq8Z}S5%|2~htu;KK5nrx{| zkP;F^AW_^xY`GJi=Wp!@Y~esK1bnt_WzeXR8Tqz7aF&DzcphE+o;Ol?4{Cu>ikiUJYZ7Kin z5Iai1-@o_-{X(cNegS`@+Cd!(NvxX}I=s2F~0Vg4_0QLu{x|DAkmc7GZBVqi18hkxTX`gLYY zY$ZX9=N1*$4Ebe13vK1O^ngeX7;&dc1^D2=%{}}Q9G2;DW#QVpH_m2_pf4>p$%YIc6+>ru+EBJsrSkQC^n1M&bZ~zY;3ZbC+ zD-cX`kD`>VR0K#N`QK1L0SmwxFyvPFrG+o&+id_p*Z}zV`N{T#Kq@r?sihT0(e&e9 z#cLA6L$zZ4BD8cgwY7i)hhroB2xJl!iYI|5u!FGISAK>;gNO%V?gn<+b`ch&z#!}R zD3Wu$y$d0pOfV+G4j+OZh(*SRMud{6e$d#^kT41|_8@GlawM4Mg0*1KEfOmEAZ+W3 z9O_}`0JR8@B0&u_^)v|DIyz88Lrooh14Ba{btvcspsS?~{uye3?f?dcNL?f7*8l@s ziz50XolsU^+X8b3VPA!ciHXsS(bEi%3eeIqHa6zgp{uI_QfN@(!l-_+8etTrZ#AGu z6hc(cmVFP(tr4_c(WnPuAg5nM2#v6_`(E*X)K+LHSFSB;3e_?iEd2kbTMG9erR7AT zgwvu3B+F=07**+8aU$V+*$D6`xg`LRphXHHg@R-huy1s}Hx=>Cb>e%GzcKe6z15-L z8UVZJKa+p!c`hL+FcK9`pmEzoqYlC>jdhGHtt|JWQ2M(1C~ZA+eSJe?Z3BHvGjlTw zD|5?lWzb<1s$Up^#4Q8Xq8SuKMDEu&GS)XYGdDCd)U(vr(J@0ASeaQE85tWHTIg8m zYJV&H6rb2?CTVn|6N8nnV55g#Z(Ig`5D=_FkX;|;S)9{xH zV?Yb(-$nj6Ilhol!u_c+eo-W|0I>JJ&C-9}GyKg>=NnsuK)q={blI@#ohve>k&8keIY#bZNd8I{f`Fz(ZD|%_(uc(Xy6|W z{9mMje;uVrVc-@i20SQ%9>R)WJ%qs{8UQ*ci}UgF{pAi4yj$fu4GZ$~Zxh%iDkvzr zLqteqhXmK>S3*XT8)W`xe13Vh2@6Y#Nx~#0VgHLx!#6;uVLlas6MQ_Nm+cp);Xz;? zynW&0dJA)z{}OnX}d-HV7!dc3fKoR^Y2QFRR`3oYVVp1PPU2q{nzdign7KDfAA1|FWkanl!cN;v5X{fu&p9c3Fm`yH zfuNFREWN#cfEJ`=tI6L(rHRH4GIGQdg&|rPv^q*B8>UOlO+-sfJrVb4(M_IF@sOLa zto3zrQSJ7^KQO|)(770w9v!}aX$3#EL><+zy@@dNZ=xv@L()_trK@lqi=I#SdSMrq zt`ls;#nh=oF=57%*co&2L0uTg@-;!aN2YqCM{)}ccjPu3(L|eMGy31o35+!q!5#^fT95Gz9W8> zCD4!wX*g|}RxiA-=|)Lkb=|;h*+6Fc^U3pLC-$`-v0YjoEARjC(0HWW>585Pil*Au zJ_qkm$E_`~F=c8dM!OGeFf(CrGhXWC73R7gGcC~q5Kjhl(n|DQb%Rt*yY*}m8v<`J z{S&uX=9jS^QZ3O{5+W$1pz`>2ax~G|QlgM9p+Qy^(W;%-T+Y`F57T{4zweS(;pP!^ z0XwIoF37tV;!cpz$q<%A$Rlc9++yCAAJ))wlu*-~0~nJb14HDM`PT`q1$xX6zW!PB zA6v^}oCWK3+gJQm)D+GzYTg!A%A*Z#axP==fxV~co=eRzQx}0O`&aE_WU-1|9xtqb+rQuteZT?EDz>A6r{ zU%I-ug@k-bpRhEv>t14!tuNYx-=I`qR8ZF!b-4p!4|ms3SHH&8?WJhgKGay9Jb_i3HskXR?LX|%8#U*i(B(^-FrBXJ9NwR_GeqmYmuACx--_#mffpU?3 zN=ye*VGbz`x)CXfPv}@BIP9KAw{kXC9-r32=xqr)fkf*_x{B1RDli~gazQ6Z4MiA0 zk?B^|(SGxTx7_`tm4hb|nyw12&rMY$*Kys|@*i@azCK_VF!b7ZGhlnc6W3^S7E{T< z{HB~vv&02&S9@BSS4g%cJ=F^LLLu9}u8q0CiF9<7$QB>8^cYX_A~n2lI8AVa!P*@K zMCvZ^wtpEKyns&DkTuaSxlw`N%$f>8NXkjjcZ-bhqs)075vlODw#$e@mCLmKt*6mt zNrVRZs*0L?jGP~#v1q$s!3s<2S+H|h!(CkjDci!;JUN72ak}r2rb&DZ zr2oBrJ6%IU#GJ=eRVo#mFnAZP8Yuy(Gxas|osLQr;el=`okvVCLp_%%(UhoSg|bQI z(RJLP33FI+n5M%r2|~WwyFF~P4N8td)S5*_tDK%pp<#oqUQPT#gLzfW>DB1S*{naq zOCCrUZcOg9OoFNWj6|fG6CvFMA&nGVh9|jVk6?n)`Nh9j1zewp4&$h^4hh+1}@LQ8A zbWM+GB&X(Rv3j-2W?bEH7ktXX^&G73=A+11-F3&vNcl6c8$dZ+1 z|4$cG#t$c4G?m*Evp=09t%$uosf%rC+_-DB)pCo?_S z^hy8z)hn5Chb|NI5QBF9^vy0!{gxU74aU7o{UxYTcX_?0JgMM>{GIcm*#Vi6wfC;_ z2V{@-Umxmy<5?2C^t#lGEzdTzz;5%yt4ib`ldl-0ph%_c=CXaoGM7(dBl54b`ZS;D zkB(p0sW+UcZE>g+i}og^N~e~24h8p)M-1EXiWY_IPXLe$Dtsbey}u-QO%uhSa9&F@wih7^Mod17~e>rT3?>&f=)}=O}(PIf>SfjW~wP2*Novzetoh>$%;k zYB^LLL$D3aFUD;qhmSVsxX&~{-&GKLPGdIxTI;7$1I~gA>srR|?-K&2|XPT6PZisqB4h$nQ~{^$aIra77758eI#ZsYvA}N&yOdvRi$^Bax&n{?tq*(ODr;MQD+@ z;^;?(Rbe}7bkPvF^*wb)1O(ln(v}UIq#l!==B=Z{(Js0-3+RX%wtu>T+xvNMFZ@$d zUBl$ATF0cOEZ3F<$KOxply`8NI-YR6;Tu<2K0XFNA;(HBPe5YJJ|4Je8z=M&^ZD`^ z(!9#e;nGr9hEGn%?K-tQh9+))($R|^9XfL;ZQ7GoV9oU?7^$riQOBYynIul9lg+muAg41EsqUn`NEz_Z;O3lT06-wc~F(VV~ z=lc*7D?aq!oaucAhiYrDx-QKY-WYw78QMD39$GR&VfzjZoSeNCPkByV9G^Mi8CP5| zrx2h%T{NN@M-kF<=l3{EC zL3EQ;UWK=RdU}^3ncoFJW{X|6MYuJXSwr0v6I~L&ZbDJQygCr2qOBJBIG0(cnotf`j z2seV`R*MZX)GQCQOf+PLiYBn98~4vWPaTTGlPlUyN{tf;;|m`iYaPvAc)TMT?m9m| zTAY>XSc)%Z>8Dm}b$YWmhhE|Z)nDsh?wmMVy&Vq~^5o4;N|e1(u;m8?0A^w;rV%zm zfy>nn7a)z*%20O*&kk^2i7-*-Sh2e*q`VUzr&V6Crt`CzgB$%l&-Gf9-rM(o^m!vq z#o(V~QW^EOtC(@ax^=VGD~`(x_b~GlnlOO)T&DtjSOpN{f$GAF$xclx=x>feK^blj%JM(~^A_!#4T{3|Q1eVxffVz*xo1@Y zL8Pzt*0AK&9+Zar?QoDtD>2dRP*cpfT*%v&D+@^%PD{x~WSA0DWp>grmi|FdqPT5`o*TY4z+?B>fOZbrlYSH_n~Z)rdK<_X04a$>XZO;*lO zq8~6q9_Av9EB|1t*WsoEY{wNv>JH+&_oQMw_|05-E6h_4{=t zJ#x>+18fG$XU{!)H@x%*=eKgB9`-_mjjoD7H(EKrmJ)?|b-akv#DUN1hDl^IbBI>b zHGrZ}iV7eFh*5{OL<9K!QV4Aber*x;0yT`Nuw>&-J@Z)=D>0C!AxxZ!HA>0a4Yh2%RraW)_FOSe(n6ino4=Szhg_y>FAK zl;_d^u}=a2KzVWQa>o<4E6e3b_UOk}qsgfiDrf$YqJKex&U#tNpU0UWKV3Ym?pPx% zuijlLx6b?xL#EZ4hnm}Gj#bVi#DwiB?D?iA3|{v1oUWS`HwcC&Fc) zJ>}G)`xdLn@ae!@DN8dTPslniQGk!+5 zXdrU4l&@W@jdStnF8iBh>2@?ERU+eqh5VUfr0o^yVz=EF_w4VDG=3~uy4HThAZG5- ztorfM2m3!66INNn!Lisl33_8utGCyk3AO!f4Y_H&lSs2cvB5#X_HGV;RA+yuM=cpL zSV_=ecvF-UX2TD6EdO#Xa$`+rhMuvK+9fXCmWZ-a6yitO+!ffDc#V4PYbQeG`4D1w z{tGVY!8amdgPHpqObv*Y5ILBtOoa_rW(0q)_(fA=ipJ85M{ibj;`_!L&mS#)S9e8i z5M8FF_sm=G*+#1VL=VKSt97*G>aEQfjT@uWW!3IJ)v3)^rR{zk|OIQ158?mnWHy0X8%BZcaiwSa!ISJIP7V_7C z6D2-|K6?)QUMJMSsqWvj|9Ilhbq?`Y^6nOUf11q=SNG0?D(of?7S2HRR->a!Cmc(# zrP%rp5sB(PS?x|9{<)o@qbI0!K~4- zqP13r;h{TO={C}OwT$+*HU3B?b0l%HvAd7A@yK48`^(hA7+;9sfz|BNHNAl!jkcXX z`eT1YOj$6YbEnVA2S3Zx_Ko%1#8BybX!3{PTJdBLSRl?B0#Bdw8l-a1v zeWFqw%ykz`)6>P|3A!3Y4YFYw#epOX3#AD0Bh4KM3Q28WMjc>^SJ01YJ3Hd!KuS(! zFy^m&oD=r6rr#k}!gz0@(k12+vTtKlTL@ykv|YM)W8iObAAX-@y{@z9(eFI*wj=@5 zB&>U;w6tJ(Pr1>9_1Q!0BlgvjE%C+buQcc@ipBAdAIKTh!mTeFl`awL`H)YR78g(W z)YBiu-MewpJbWBfIJ`}=nt5IcJ4;G zn6hc!we^NsD-J=wN6x=!?zH*SqGW_AuN;q%g}9??g|E)NsV_qDRPX^EP6obwaO+Y} zh9t%b#oy%8P^iN|C1)#GM@U*v*jePc3>p)AtS+xu{eFBuXQDN9mEgHkEJ}UYMx#A% zE|jMGE^d~B{Pnd79HmyNWrbW`mVcF_cQePU2QlF{UP!|FEyl?`E-vQae_LDY8!MP! z2rnBgL@wkj%l|_1%$pxq_bXhSZq(1XyqMhXp;<6T^555V?R3?xEN}OnaAs+yaqlwz zehoffezo`Y>&(Kg7K#U>Hrb^eT-p^=5)*CC@|fOr`u6=S43i!9wLu6-RnnDhSfbcM zT?@#KAhCiGdb-dVRN#oD|Ls->(e0>3Q@Z}pGF4`TIco$T!`6;T1vyr@8~&(u<9U$9#Oqzt|Ui*jTdt@T%m!*O-w9 zk|SJSXWXt4kmW8lkt%K!?BJ}9UlUPfNZRRZ9bmQ_;@DapXw{Xuo9rsGqRX0|Kll?mIUxfh%=x7GVlidC!WNuUXrxpA)ehI;anx5T4G;!hXrv} ziArXuK6OE*3#W+J*-5k)&dAm17uJR`DlGjkKQ!1EvR88f2~}Yj=$Vmo?4GUhd;H7wccrnxGY8HcdZc$g z+@P#Izq8dz&0ST^^Y)^7o&=8s6zT#6>hyWf2yXqi5dgq5qWR=hB31LO#8-lX^gCEk zo@-Mh>e-1iPS)ApXt{mxkc#WUsjjJ21}sPKl)FKBENZ8BqojO88$`{&2(m=8{GA#W zQq($*D1ACL;2qRyWLdm8m)G$JI^i|essLfUDiuj6FCOAteWmN`IpJ1*+Rk6Eo#Dq?G7mtuuAY35d@{gcu#*_?nK2!Wg!T$3(FRbHR+J4RNq8` z*EaRDd~O-O-MUa8d(RgYsut;)WT_yM1o4u3X56e3ZZpq6TNjNyTbI*W&>GMfT^EcA zY0E|UH^yI{TD)IOI{m8lT_2%mhk=i#^Bsil`^h`lvz6g8Pg^(wxhsSo#ga6qv=OXi zrR&ALNXX#6+j$tr-4ETcBt~d^=corKt~P1bza95L9iv=HNp0|d(Wy%_NQX5@L1r~9 zqq>+xH(qfdnODSDTjX2MXrfGH#V$O_N=3LyVnQI0dptJE9vx=&60iV>IRlyCKQNW+bD@(=#Kjt_V?4 zbk7c+-DwwOyN(Na?Xaq^ayo$}SY!PQMBk10n7M52{}Xfy-vPN9>}F~X?I;QPdG0T*ZY79T3NEcB%H(7^9P(rhs&tCck z>Fghz#u`luA%$W6f32l-Iwf-+1k?54a!8zY+ut7K*hNh*0ET8fxgFLu(_Uq03< zh>HYl zlwb%WRO?_tq#X2wGRhI@WaWfSH9afMdp#cuzhL1dfZyH2!06OCMa!UUl=JR38{VQn z$1ty!9}#Jsnq|&4mTDRYkPa%-PISL=E2!&@8rNUAxVLZkXu~QlWxfBESg=f#T7JFG z33eoQN%`UWIa|_1(^JYLgByjbru0U#CwK(x5af?MtvSK@vr?;+&lCLU-& zmWuLFbeeNQzsO>Mvt9my4=wLRB;71{>zWx=kSVB(q69CLyA@ZF{d$t>mA011D5&6N z@uKyqD-Pmt{Rlo&iCpnP51By!`;KzWRxB6mY~Pt75*lhrEFPKj54q)Ty}GKC=`?g} zZesRepSwog{#O_6GUJP1EU6#eo7GEc`xv0=3DDym0hQgzhEH z=%=c-Wx&wBsW!{z9xD5Irp9;9RXt-AHY1`#Y!GRl4c)h{+gu~-KXjsZ_~-s?pXIiS zB$bvHmu0eD`|Q{bF*~N&n`}e#h1&u3dlii59`#0RH4OdPg|y|&{;(rDT+%t8`Pj$d z$whjOhJRacQ=1)$0iNs~U7GY=^XO!A5C62#mS9F95i72sgk`9A22=cNTs&+zC+h<| zp07eW)lIKLsjvKs8NnqhU8G2-sY|Gx$}!o#{H{XQX9590yW-oK@Q(}G(&FkEA)#z| z#}NMuMfFsyt`cGgtj&Sg8sG#C^rr=z2hZPAv%UcDQm&Mq5}ou(!@M9?{erGz&rs>l z+~U>Biri-LCIRsN<#0%=_n1L!?~HNt!oA_*G5Z0dw)uqk#kzecj zSJp)6MQXb*FKUXa?PFUmr46(#jW*(f&GndwHYSQmNBeu`x^)vt z$W4w_j3*uIq$KsgbGlgIsurqU&a>vUKq|yQAOq_3ZMojQQv;3wvh{^KhHR?ri(tAV z3bw=~gjfsNbq7nmgB4T}*n6R~(@=+$8SLpeY1L^LpLHAW+E}{y_JsBGS^K9O&*z>` zYz&YmFek1u-uEqDbgqo#6b&=uZZ2`W3uf4t<_N94cp{YV|x{YUxVBl4?ueEw7jg`qKk2nCJJT-c!ug}3Sk=eSzYRKLJ=n( z=wl}Wa$DjzIXNaxF1C@7t|ku&4|PS}L4HN38Wx_%D=uvIWwRjP3b*F(u*x9t6K~Yo zItrD_SQFG!e(}g-N-(grtP7|Y7cj&oIfR7x6eje}VrkZOLu{9kdvixJTcbN(Fs3E{ zP_u^Gq=~b)z)M2?E)RpTdU*aw%)%1s3Hz<)!IQZD*XPPgN4-D&5u`JlTd=U4HSFVb zOlDTWct|Oy)NR@dcMtdca`!Dvu)7B7EMnNmgj&l%;wF-V9mDE=C*u~Ky%R{a*#5;J z{X8cRbZH-Z#&`7h`A7bvRqYZm9f3yQHYIhuYD!` z@d(?L)Cnt{3}|w@v~_ziRg~GJq@E|4?nKH(rOc^jcr;__-kv$pwH))&D+fgl>)Y%n z?v);Rc<*KZDy!MV|9INlg4MFogx#y_uaD%gvCFL{g;BH0$l0;_uCZ#TsIb^*iv7vD zT`Kt;)=lH+fXOpsaf@}{G7csw2;+&A#k}yDAROC&bi-BThLQ%6>55mZ-FPvnp{#Og zmT97-#xSHBr0vuU_rk5)UtpUmF6I;B*{b5pW~SgO2wdCR+-=VXhIDcS zEr}Pzhi&odH7UM2BEoo8B0WgD$MI(Hkah2FtQ);EIJjd&rPDHL)-$JnwCM$I)8lQ_ zX0yKkuwhZN$@~@j@j7vztVzR2t$X?PQ+a0+|E6VX6eW~Bs$7Yby z-KVh6U%Z-s_vWhHBMl<^dNDOPsJ1@XsVkrkb$tN0XMP^)Jq!5MS)n;^vNU@~Tt`kHQQK}B7O%)Uq9kjph!{uMW zt-;$4f{F|pZc$+-pkh&H8z>?n?{+83y5L1Ng6Kqx@(Hx_EEX}HDa|C*GM{HMJWG+U zmnS>>a@biRdJ`z@D?%-O=+4M&=W%pg5vSbaLGhjCtmq4!S4+v9nfXW2ABNTZdlq_* zD0osdW917nj0|QzoM^4r<%}_K>pkZsS>rcHd!2q&grxB5)@GX41?$=GwfBC*fD;*g zrP&DI((OkbXU|V}4KEt6E`6Zo<$HO$sv`zQM?b!&%s`fH+;_L`^GwB{ogF-weiBlu zP#BZ90C3>@CSn-eW>~_dN+9D-frEHrDwL;suYIl}zfG+z-I~z+ilm{YKV2WZaI%Ei zoKGrcWid-j12V!}TvxlweW;zWf+{PT^D7S3SCPR*ms;8UlR5qVGrGZn=(*dS$W11> zmQ`E$0?OX!{TNg3)xjYj$P6ekXRQ)1Pu>nM7d`Reep&P?r~ml6TJ~7nQ|VS4M1yBQ zDqXd^kx(>ZM-K2VcUt}B>7i5DAIxCcEq!C*xIeF~ygA-jK8j0-)0wm!rEv(JEA9#j zYm1!Dw8cs?+_9J!5mh@nWvSvOvC9*5i1+0&75loR1Ya)Ice-f~{vw8#GXgJ=CQ{?8 zxC7x-qf!7vxMk2i8d`_2q}#7(1?%B00wXUCSoNOF4cDm_nc&;ctNPyD?P=NB6-Kl2 z7A$%>ba!&Ez0WC+XJq}kbnI{=bEUp&sBhjRa14#vX}gQ#I*cg~JB!56=)q?ugeDB* zM*j>KtshnX_$ual(c`bXi*`vHs@)IK^7uf2i?vK3~X$AD;dKvr7BUbM{6G)>%*)_Yy1eOff9UV>J9 z%fKEt)T0tFQU}>SCXBX^`Ny!yiH{G51=pXg_{|)5`m`i=EV~Z14TE z-A^8mN4yT1gk|^Edn~RVqF_1U2Z+zKayx(0WF4UY_ThEY@yw$;wa$nsZ@;3!G4sEvUdqu{pF4x;|Dg)|zUt?#_V@h30HnW2)+=u2`KHg_MaG6>v=~aJ< z`*0;|Pv^2;!e`*n!xI~9%G&uOIX9vguaj#7TG*T0emK(oE`0lhN z>@^>!sM*`fO69#HMa@Q&EPJD;_s0TuPZLAhs&L~zv>arQq2(njFU^im{z+4__#?#Z zd#O8T%{lj|3$JL%_p^iTlc{Bei@<0TtbHGY+28^0-%QPUoFMJIm;WlMo)sD{4IYVj z+49;FvaKEy&BE{@e){e15t*9iddlq7wf;NvYaN!gH_tG_IzwrN8=j+|0-80iAjhX} zJ}J4yZmZwhHLgv#47su-EtjhGh>B%BdLZ0qPfDY&wu0+-KFBNtA&v_2EWn9_O*dA|Q#KCXMZe}4j?`))&P*iGP@HW4^ zI$&;X`P_*%+J)faS~(hx;A%Hl{9x#h`M%9P-VyV$0|gCFM{J^OV#*NttB3SVRyc0d zQO$%yM_Joq&?o=k2_&6%p&+rK<(jJW$&W4=>}-k|ov}|AP6j9h7M<3YDQNX{D|TsPz{Jg^6?sqd=7PRjTU$gR=yD-En`F;6^khek zxCpBXGv>s-Layr1-x+O7b~8XhZrtuLpRz{dx)`oQ)^+Y~GBS0=h`{{$4NV#%In%X+ zy|$c>X84??z3mUb*9z+U{mK3l24zP~#+gBr-ebp4&~O_DS-Ni&qHY_|>S*yd%;=I)Y%EUFvApaoQPSM`3?>T2)X&p1LrPJ`s~TshmnqnNmX5DoWEC zZo%M?he?=dblT-3ZgP%ztjtxBU8so7!-vYAlGFR+(zB#vS!KcNJ9SRBOHOVq-kUv) zoYs9>yu=Dhqq@B_7##`pq8!(y)~?$9!CZa5JN|L;)1LGD2)(nQ*P8!Z&MDK;&w$D9 z=Hj}KmwGVYN4ySQ#iKHIAsd&24h+AH5;RR1plyndy6txnBKSt@qR(alE)+3EJ z{Ayq52HM#oJ+GxrO{7em5pvt1I}$W?)MWd_#IbC$PC$3!8|Mr=IF zQL@esUS%s?n|r$oN-SnJiI2!ky>NOQ!C>(UCj{CpS36g+-;U=$XD09=pBg=(m4!s* zZ%RgP@nzy zun}_@_wiv_{`vZK*PO?P20`7t!6aR@^m;KS>ndFv*NE>L9IksHo=r@4mZ|M4po|wu z%r)J1TMF+@n^iNy-4bFA7hCF1gLdAfW*z}6aUm%l6>Z?_PEtWF)n$TsL7A?gm_bi< z7=cS^+OQxrX}U)?b}k5_qe^$PQ3-DJwG31aG#|;u9Mtl^VXkQ>L#1WDL;P$`c<#x$ zUc5Hxb26+kqLu(fWp#$NJC2UNHj)z0uyg3H%fyY>jdp){td5uryZ2TshLWH^^YOJ+ zIFmC?K4es{b4VwvT;ZZM6;T=69qHexiBRu_;?88WdQ!*?$V2xzoIQ(}G}PMLq{ntO zP}8s0U)5GppLihBVa?oG9f@w;uU9LI>tZ>|HKdqXXYdMGKoa@D-}>MNp6(}fj6?>h zNdG7F9(SyFmGx<1^FLJ8;n{8(!jnSLh*Z3Ft&6Fpo>RxO#Hqc6)akrP@~(GTt-YJ9 z^Ffp>GFz);%vLW<;SMad`32-v;ZOT1eTbc|EC!xIZw~2xpvN*XoTnKS*UmL8^zKPA z#Mn#~>0Km@^>p2NKYEcN}AI_tzlWAQdi4|W&Ut&TD~{?MPl=c+-j zrQgZH)-|SFYi%`CZpK+U%w^q6Vc!suV?BlDICc-&R-GUu36i z=;(vO4sgFFINkgns?of$Hr2DXNS6l3r>I-m*JV{pqf{8TA*RxDA)QX4Ge+b?#keao zko6+YUfu8mQ*_91Wi(%icz zh@8=Bf2@|W{F~aLOLvS81!R?c=&ObY1lLsEcXN{QW?qNwqaiHcA=NC4)qC}h95&K_ zgvPg}+;DfR?Y7!$n+m((rjy;AeS^^(JLwQ)ljtfA-km7%sC?@vKt4>s*H*6Ju1iBo zD&0Co81C9+g@)PY(PepXwS5wEQ7C2uDp|CGj>^MQf@5OF9&Id?k<*P(aJpCZ|4Y*xueKEjTaP z%*8Yt&+8>FQv^XLoDr36a@?zF94|Z+)|HHK5i(a&l}{0pP6Ss;ZrE-l>>(C-9p#I% z8Lwc1F3}n=7+R-Fex_ky1lMIMA>lFvUi5cg#L&tuTNAvrTVAX`co6AY*x6ldklq@n z=g~PS6C+2~Ot+TMQt$2N=wBL5VH=1Pc@ufa=fVSU8)V)5(6Sf>3M&d%HiQ&j8=2G$ z@pMcmBF<6}nTTZ2o;IS<`+ySNIevMTd4o0C$o%BL@Kp9CCvx&kR>^WRjHSY8#KXn` z8Eh5nRe&`{NaPj<*OyajG;TX2_(bHikV77{Lf8ZNY6;$Mq#>Vn7f5x4ufSYjfrF=| zU3(9m9ysMad$@?Qx|Xpl1Q461^73qMDPdh);3KZAsAB=n*p*eIxnk|Ex~ALX%3cO@ z)gE;|Zbr5<2VT48&$+biV?b7V2O5)mDfKSug7ju!Os%zLDARwX3Z!BL@AW)%HS$f~ z5+|a_941@|gRMOF&mHy5$2M_hR?AcuZCD|b6y#=r&z_z6;gVxN|7gPDxS>gA1keLq zvQb`>ilv>V2lJ+=yA}GYv{2{gb~Aph5OS2@O_Bu{`K^8e3~=pJQEG=rJ+Y%cbJnTowMY^(%Z-Sd`>}I z4Uy8qj-WxkEonr{j^Ra2S4Tg(yiDG6GPsKjf8agZe{lQQ?Guj%PR#5Jk@KhxJZBq8 z(z9gS$ZMKICcq1bRQ#kCQO$5xH@McES5XzId1 zOd)#i@qVqtyJ~6kE9l$|4%@B9%m0(FkAF;X0B&ui(@FTEbDmKS@{b)p78kWdhx>(8 z;hA{)UV@8GZC!Jz8@z3jx!l{O;#r$?uk=vKr`PsBDzE=x{9z`#7H)=?ed#3ayE0`i z@8zJD$0OZrc(#V2C*4B!PIb&|NOJ(p9lmWS0ez3`M1Jjxh-)MgKGa?0}9^C}%IrlWL~ z0U4=DR??&;U$Oy*y-SN+H&%dc5bP!28q{6;`&{?y{5!qx>H@7Zgk@lm+d~-+FN?e> z71NY@ry2k3eV(<+eQytCK4!0H9ejUp*|w_Tf>QIoU)t&7gJ=cF;AvrBbI<9WHEy*j zRrkA$Un<%N@mGj_-8KQ9XEFrW%p7VsN*u3gP&t_Zh)h33dQ&>L~JLPFEZY=1S< z>B-(RIjSCFZ2uE08P7FruH&0LY$W#*rOuK&;xpBC{BM%e5N&;fsu`&0|H0myhqKjv zf5Rt{5OWftp;bvF#84%aHrzx+42>aX#Z8Ics)G*ESp}hq#yqsDDiUL7eL)`W=7o^*rx&y?;J`JiC?QoRdAQwf5Sdwf5S3f4tuyv41(brN8dN zo7JTs>sA}$@EXcz)nj#kUEuJ4ZD)x8lFMCdA5@9*#5)VFCv4Gj995eHc15d+u&G#nN{C{qSAFX2Q5 zx-G??aaE+i)_P%bg}OO0BGBi+gXEK7sL1A{_UI?);BLtEBsNM%A9~y8!5P-fQ~eJT zRx{DYxPE=Wn@#(h+Ft7YTyy?w%I+U((>pI+w6u+*W4s@EB<;KLK#yA!)9N*3*M5Ib z8D z0Mz<%0YNR(l7137?k!MH0v9?uK7aRd`gKD?brU$7`@+EY?ttB6O0Sei=nZ&P zvLz&cRqIdv(!_?t6;0F04{v?>TPL`rt5h|p1yC#KZ4l|}VtntSjP!&oD!r4cD zUGwnXmruL8Lg>MkO|7?9pSQc%TZ&toupX_dp42+ndZxK2$s_E?SE{7sM08M3hMB%A zT*(fDCZ=sPCvK$Mo!cBA5wNM|#DPz{r}lkjtQWrQ4x+@ltyk-P;)>ve9M9&*)2ONh z+_^9Tzg{l^<^OLHf#shAuv%E4$GcX^OM>RvXvBCK=x%Hbf3a(l5Aia;*d6;oyk_%8 z?YVbys_zd*@{WaFeo}gAA2g2xYw+GRinIG=8-qq1Gw9fY-d-s>fWKoMT>qK~P zFF1K+#?Ge%Jz5_d9^-{OW4Xz#;js`u6h3}-wSMlbkFUJ^9{DYrU>;lFJt$YhUF>4C zgsn%@J+>CY^a#e5uD|DtI{rCMmGB{PNH=Vcji`jDkzgLQHV5!L;kateOGWG5{Oq8R zkS6|_sO*rU4I>uNi+r$@4Uz`<9-HbD7u9xAYlHR1Ls#hppXMp25$dyB7^m+#H{OU| z{gAbPkVdbK;>05mB$WRee6>70zKDnr=&Wy2R}HtWt_ZQd4;stnu&$yF>gpPg#2(ul zOT%oPE}o%OopH4+#3zW(#NbL0-v6^UK^_5Ol*(n(*4r#*g8%) zPxmfKM5;)? zhyM!Ey^B_3!|h7EaIJXrBeYw^b`?b)TY0F?nCPZ_MW*HC&A{u;f9|c^qEo&mrCi6L zM<=+D$Qw_#yKafQ;J)ioOW3UtW*RXFg~Zf*Yy4Y8fn}B?mADnw01>B;7pnn00mSY` z?-OHs59~CJY0y=GY1wGGSqu3XLQL;Eu0dlA=2n?QNpkPUi0r3`3Y5NoRz+OjmX#jM zYnxh$q~=h%67;@nEE4oprOP$-DKCoaAqI9ORr;L7Cx^=iPvB?OY-2c#Nbu&0fU23q`6p#MDnXiG~ho`cZPDfO=G$sj+W2cjDLic0Ig7Ch``Id z0J(l^NvN4>SiUa$9*|z;))2mtCGLSG92JTP?ZRCIVaz!^Lb(}fp!3GG;NunjWZSbqZ~iPk(lPaQM7@OIl86tq2*8 z_AE6ys&GEi*Q!fJkyf;ppWQ zA`T1`%2q4DXG`^py%m-%jBPliUhQCJ^~IiKbetI&0gH7D*Mb#H=)d1RMlnhJID7B3 zK86pF)X{tBA$YhFA2z<3T73T!i8r(!Vre4%>xHe0=gdvm?9>ePl#AiM^FeF$OZ!Be z20a4tSeU%zOh64H4O3W?h7}sbB5QQPD5Zb)azLpK;u(jXWaC8)9!ix)5F=2XUL2m< zUBHW!t;Q2{d2w;92`Gcus>s}GaJ8M<-GTzMQZ*gFSI6=S#`2DwJ@P>D(9f-D$N63NHwCH5#lAg7 z5LMTvPGX2_tb05$@uGl7LZplT<HH3t!G~;bO$x^B=f>z}HoDpk&YX!qhtFGbTGNQ&ePRo6Wu_YfMCgT|m zYEpBlxjMIS{%wo_X zXg~Ju`O5>N3*EmbRzLm~O&h!WapC92u)8P?PDgtu;SzxZu;9w&!fQ}^N3D710`(@YnrKnR2OY)WrYLwC8Yfa>Fc*$^aMsNq&!Z37_o zcnT4TN7zIm9PL(1F@~TarQz7me@51Y*LqbGjP(h@iBKp_v>9J7sySWSl7>2VF(>HV$NnH4rFa%{Bm_`3KR1 z3Q9BpRSgg}6Pebv&B!bO#w6eX??MD%LBwPli&c4u$(OrMTr{@Sg91dBYFH<+fmnaS zvygT)=u9lOCdAAijt2Sg&!oiE0{|P^8kh~x1)2{cB#BlffZ6GSCw$S08dSsZmLXmQ zm@JJ-XwfnEk0rpeyCJGHq98_$h(!W&6jlRV*2(~AN>y+j`d>k!L^f1yG6qn7Q68rh zTEhsz0jvTX&Wl8o!yMu3p%SGPEyy(5ze@)oQZ;bFw3vu4#pi_a0Gby#)1l0Wu>p8A zSW|wF_keZ%X6=mJb@n(+=1tH zAvD7R8D~gQjk)%F?xNKJ0!)q;GraiTJ;Jaj#^yMDFG?5r->tC0lfhav{Ilwb>xn>O zmrWlNYg`MO@L-7|IyA&HAK1_eI|H#Wz@gxbNBu)7_qRk|>G^9gK*=c}(EZ`cZKpH#lU6Ccrmmz3`WKdZ0I}(bqD7+l!s9FcAiN-Y!QlWpiaNqJw3?7vQYv9qv`9PKp zj3h+XlD+>!e?aRNxY9a@fywtz#&^=Xpb(xh04WsH)6;0_lAs=#=dAz$qE%~`_{bau zWqjU-?0tens)q4kLVutG(c$i|!N?D?Mg(Qy)GPsf|)r_nJPq-I4zdj2ZtV*Z{V^<{@2#bcn`yycmpo3k*btCA5pOTg}h z(ABE8i$ek$wD35K5)D|eM*b}^zuwF(%OZ$?!}EYK8a@-5g@Iw-`s-O^HQbO;D6y*j zUcW!M2!aO1_TYh08b0s{4W+t%Mg4!vMFHMnYHAo)IErV1?SQT23IXGwOeDDemIi@C zOAxVOrRBW)_Ked(N(4s}&;_Fp)(*owo(V^en4_?Ku$OAMfqyZ2(2z`GqJ}aK%v}G* zN7%qQYzGO3YiU%42Z4PU!h!_-w^%Un8o(j_0bU2hmDlx;nF!E2RBG`C!qof$gvd=F zU+6I8dMcDdi$n56VwnJDg8%{q>Az_P2}HnY8Zc|X0FZz&6cD&F$Q;dYYd7({{H;~} zp`~kMp*Tzx*}8@QKUxavD;^A5i-X0e{l-f%cpm7t#Pc*jWdR_0Kpe?OUl&~P!VIGN zYe^9_D5%OHs{Y_Ig)9IdtI)E*N8OM;**uV`NU$Z!S8Xk0X<)QU0}Pg)Uq$ADNb`TT z4@d*Q{pJ_gxGp7-J~kRO5Q8Iol)$Y7C_!?ZdnBV^o8WX10He{sP3?I!Xb=?3g9-pQ z2}n+50E!LM3;^>-U|ea~M?Y=vBL-Pb2AK}f%gQIdk0t$y9yTp8(e`nGGHWGj(;=}-eQ|mX_ z`p^#OlfaQ;0OTzVy!by80?CGhqtovM2Rk@O7-hgF6UPI{M7!7xZ#Cj{ZL&@M5nKk1 zjwCC=XgIb(JrY3k@Pb(IC*Uv{qjU~JMp*pLfCdRWI(Zt+vjcS?1U!Ba%KLrwzX=CE z@~>}+03t>S76VX!a}3*`2B&!f$RLWBzN;k@1a4}etkMBE3{ea~G65tU0L2STHX2BO zP*hxLt_%pL=yX-R9{OAh(Di%!j{mCNf0lp)-)R5%2%&-1G#2mTff<>%h(P%Q9mFsj z0T94r04VTx2xvVS0Tn=bSl&N=0Dya1{+z07wVn z2FPhL51Iikx&^eDQuH0z&$b<7_b%KeLM}sW+cE8L;KB5!S5bg3<0l$_h{f7D3$+8uz!vNSO6U3 zc%Zoce#@o4+<^uTk;w5XKG3Z&4Dw#+b`lH__5Uf|M{H}oJ^)<#z!!q8E4vp!at zHfss;3rI6`uCBt!6n5Ot>4<&2G6%_Pl_hQN1AYXZP37AeTxzaxuDgF7m-pFYQA2EK zYs!!uf~w{tw0k(RrO8zPTG|1>5pOQk027#qbfq8;+baAK^G)TQzktmcr^=_PG`@_G z9p6pmf==3GCD$>BVP4+wjhy*`y4i>+V2XTL{YSCgH=6PA>lmC4Zq2qRs`*2C_#P!p$Tyd^9%2$3PP%f9Msnwir zKtY)F75@SDc}Eu=g1RIeGjd_rcEoD2F6 zLtH5wdBIAQtD$y-;Zqnr2~suNK_fS+6QZAPGX(QuR8=udz~=_{6>}jllt=eK)d)td zxM&GO-|qPfz^tG5@GtjxJg{`?jkLnm@B64BNJcs*P@%v$K_Rw;Bg5eNtExNEMf0wd zkt>S%_SENpHztfNqN;o=`%P(CX~=A_*$}DtN?oRzu)<|8oan#$N-POtiP<# zROFXIl&eR`I2M=4g;>7PU`dcbi0aG{@AQyXMfQ?YKoEP_hK%|IfIs!C&dLW zrRyA?Aj6)wniZJMCLzSxT!j=QnH#MPDEILD@Cy*kgCs68>gLMZDayyTPu=3i})>0kx8Ky+{#= zL(TftFJ&aYxfJE{wlxWzHYjaXp-a-K#h(QpT?sOU{Mw5rsit#KDlA2BvHG=ANdGlM zLoL3^BhvchNl9S)HhpA;=K+=Oi`(?k<@7*M*s}gW=6xz65mZR zW)JUm<1nkR(h+Ww=~R+?k;$xZao>`~0cl{>Y|2xN3a_u&`+Wtv!q6k1O360fv|us| z6>wukDFABm)N2i%kF@R!2W8f8HXv>AX<$Dt!mTMxF)R{iJ6lzt)B50(Lf`5=ehP<^ zZVk%r4*8b+Hi&Y7MtK)3H7eN4NT&TEELvjwBRWFz`UiZKm|;4_;mJ^Em3TrP*3 z^d}`=KA1JHjV)!Lzz-e~Xb2atfLsfquc{g>9-D+)i&I$_Y*rsQMvP=n4EZixn7YVznDtUIe^!f5*2VPz9C;NL~1(2`2)!1 z6Lb>B7POA^abBO?%T(>xR8&4K@61=duE#3dNyl4*dP2G%EtAhemr{(o7CHPQav-F?OlSt`xJrugeorsu#HP`Q@{6FRF_~Jqddy+MZ``FB99zHz zyp2D26$NGsowEqWYK~TcufVM@Rc|K6s0+4aS@{h&X!3r*DdI|J)-i;9F140R4a@;`LSsn2bLmh?m<(T!${8Zuf|KpiDR>= z%8!d$NmR~K(RXcHap(t2uP<mxKc^f6u{?uhT90#^!{R~Zw0h$Fyrteu03N3XK)4Rwku(YzrUQ-=3=T9UPi0UL7Q) zk}+z9E>~z%oY$5WI^Rv7aOcy@3RWxlZ_+W|;Em<-h3Kh=)nfxvuo43*Q)wPwznILV zKI#g}YZ|)=oA>xybXciwTJ^f^2ZfQbSWB4Hlj>>wGi~57!ehqwlx&HIT5Nrt^gZdv zpR!*-ccmzF0pTKcdsdahCl9~*9lm#uDQ=8YINr&h z1t6EEmP^Gh;v20+WHZe&hMCcK!+f84RkJo^o2kdQe2*z#Q5jH%npej;MJ&NMD#Arb zU!S6L+b;mBZ9EUKgi}f1k^7DMpu*>W&U+-|-b~^A6fPg3GWmjP>UaIQ)TP!6mr3PC z>tDdvGh9%b<~>}N)_@1d{>E-fzp>k*Xl&t?bIy3HfqmVRRQ>HoYCrRmp1qq3ozn*d zG@Ko|c&V|DRUUS1wgRnC2BBI+h%0rQp}y&F^=7sJP4RT=qZ;-Z@t5Le%D-mp19d5+ zs=vte3(5IRNYBEj5 zq$qs{Cd?>GPt1M+T%%4Z%q|t3?d&(MH2gfh#)Q4HQF2J1l4R|&Tic<(2$yZp&h<8( zx^uF+*Rg8cB_qN2tW*JoI807gxfIasnYWjS*S|63(9>XN%5;_Rg7 z?%GPjE|&XRIqa!q5>l|zs(%V$fVrIqPIwuuGz3S2o64ss>XS@esW#v9d6(_ zh}T>3eGQ0KrCXkd@22(}4S*~fXZINy53fme@EeA{8-5P+D0BNdH5=W>9h>DYxjnKd zEQr^y15sJIykOcHm$0Nc=B54oqsKJY$(uXxB7ROyF{HvZAz#b}8j3lRPz*|SF4a0u z3@wYFvB_yHubW9#YH<6izGR^|^a>p2T{09)K%Jkse@^B8EVY=vDY8s+;JdcZHGSQ+ zyVy0y;2l$IlEjdwQ*9Oc?)UEUDK`gT|2aS*gUIe4pvnH+VpMn5|ktS-vl? z!>s5494)%_ewmEE>}-iT22_wsvXp4o?{`A|hL?!qbgquVse($zELrk=#xD=I+Nh7f z58>75*6Qz~4Tky4bU`%99bFfB4A%yZ7tgl;#-K&>+ET@#+#@t6I$Wu-uCFe&Gu3Bc z{$B2p&LWe?7vj5jsPiHNO@9B*w}P7b_{}|STSX;Jg-KQfVnED4PJ-DvuWFQ}=)9Nh zzkD>oPck-#IP7S$7+iFqE_8-kf}tB|7PaR`;Hni};;~+m_RdzgQq?rqjytcdq<}36 z2NQhH49^$ak+h%xJ#q+yuO0OYJM>@x?xUH=78EjWwH z9C)hvz92@a8CHxt&=MY$p(RI-ny>^65G0GZMj2)l(aAhQ&9Z=|u7&bjAaN0!3B8UL zDq@$o%NZtv(&5*}9VV{e(Cxg_GL7!_#tY}q5`aK#n<^sRKLd9t%H{O<&gAK7>!R;B zYJ4F;tki*(m0KMJ$U#%`kjj|$ybblHM1hy$(#aCkbWGO7(arK*zUjYPN@x2Gquf%o zkIu71QNZ&`G@D7zVwbiS=8AazzW`ru>YCpa{!L%A#bu8N>Szib3Ci7&#x;*btrAmn z2Di|iVe_QHWX>O`kq6n!_gCm66`lFyVs&wa_K;Pjhi?UFbrqTP4~WZ9W8k1bqJE>p zs=(P7GoZ%7r(R1MAfi2e5s)Y5rYeJtN`ia{R3tmIFqfiD3W^j&@OaJ}(H!ei??vX@$xDHy-cx}xacQZTMO5{vWN%{Rb15HCJ$AkC9RQAKOK9fuZ z$9`3^d=Woyv*6%2A}`wS0MZ{MpuUlcn=DbGLZ==ydnS8Wh}Wl}laXz$AH3lOg`?s^ zv@h8EGFL+@pxMcWs=LMpB>rYk+egafpwUq0d!&r4!UEBu{}A)fqf3RUkO8pgcWy&? z3_=EDpYLKmVRCAHh3*H*o;D|7b*u`C0Tr%_i}KtLWW%8q?u-NlXhXd+Vh`Dh*O2+l zf@9#QS4~NB04bJnnEm)Vk{{aoK{TYli=FM5$SzF&%wvK79v3Ab$(Xpt1n+J7JGu9= zo`crZb!hHc1vN>ht{qQ-YyJZKx$~gp{HEr8jvQ3SNYx>I@OiJk23%QR`Y?#X-LbVk z!#ZOBB8g4{Hy%6V!BNruyYU~Ko&aI*>~EO+1>zv=OW;ECUFuuGGL+|Ttvs6ediAik zdTCR+tk|szqnuMkBM1f)=b`*#?f7Hu`O)9&f5JZV`scQ(WYo>6vUoFi`!o!fqn*E~ zdlO%Dc-@l#-*L12l^USkTCCJ;R+QkBTjj#*^MWewc)IsnRR@|*gGKEMtew@jKU-yR zuPT@c~&oLfH_oed-w5}IXRG8q{U`Qo7 z*G3B_hE$z1WPm_ z{WiSom@&q7oWPPBg<6Ca9yH|2qQtR9Bd*NovA3htR##t@;DQ?X(Yg(h0-_C$|DbUr zzJ4~sRl1rZJI2l{H}M&H4pLUem+{w|e_Mc-yMB=OBaHf%Pep_<%*gIHkrhVrIc^{h zsalk<#G8E}%4$+f^0`Jl`pQ7H^EXHBZ@f8;VY9z3sJK%cP5p+Sqp$a=UQB`_9~TVn zLkr!y6m%sTi0qD54Zkj!qGCXUE33!!OPR}fy#3PaHopeTwz~eJgt2_p3sl&Ag{!Y{ zHlic(Ie(Aa58U!8!52g(uIk6+k#V1i)>IY05Ay3aBPh2)2n7$jC*-PBliHl?2OBcA zUw%@!G|BTp&Uvf3GY)X5%MWX$=iMC5dj^^W!}DNIo#8y!W?u`Za9%6j3XI3j->Y?0ZXWnSRbhgzx!m+^5w}a#Y+W6t2xG3 zDM_#0wFh2!d?9&?vvN;X{Q{JzsdqWAO_DJF(<;%v;TVnw6sr+BW%F zKxUBBbPuxVh$pe(_hLTu>IOA1Aoy#zmE%&xK!iF$*5D3Ai9}o8Z_M)U8aLfI|M#OW z=kG^*_MAp{b>7x*`+;U&UA1nH!Q&zSExT`(?uUlg_^tD!xUaXCR^VUHm8kSEg`fFTXUc?4hD}qxR&ztF29z{zr=z3N)%a z3h5;DrM}WXyI>Epx+^GLLng5bjMk>&4S5itqWEO4Q_4>95X@h70pfeTfSP)Q9eD{I zubPBZRDAV#SuZc`)ThQ1FiKreA+7a88x?SpxHgFmeKj&;AfdYYj3;ir)@E0lBTD`# zJ}JJQuaVVpg-uMihbxJT(nwv76cNww$~Qc=?cEg(sjk60(u%dcI#o61`DcnVvPWWT zFo~~iY}obphExJIM0>51SL_XrUDiF`bZ+tB{NKiwTqD};ZhimS;~!oCtuv5t<&M)6 ze_!~DO@2aoPuPBO`HEh;_ukdV_Ive5rvI>Cmamz`Y=8EOkx3ZXFshz;e8Dp<>H<^G z^7OM#!-C~l$@TthwJYl;c5J@Ycy4ml!*&J+nk$1L%x>Y2UZKIbn`mGhk}T^_Spdfv ziCms9vm*B3`(IJtdqWDymA6LEsp0!U08}NFaQFC*4SfD%SZYelyt|8z_*@-MrTEi5 z&u_gxfP(_ClrFkpq#0FQETsGL;`Lhv@Bi{ZdNK&~ufg)i0m=cVrea+Mfq3VSKTK)$ zU6)sNpq;`s2aGW?BndZ>&WraNZaTUWGATT?`fT7~n-%fa>yQ&8=s@U|lFmMH!Jm#z zk*dDY8|JM%Vh{LDG#$QV(_Qa7L1gehty@bGoIP_Y_*k-SXVk|{TTF)j+|?q|a}VH^ zjcmJkZ&Y_CbEzYxTFT-``J3wUI+--f4euB~ogi?_{R@1aJ6{7IbY_x5Dmx?*B(H6F zB5TIgf~qOXFW4t}&-I$NZwE~oXXC1?M^p1vjecO_s-qrWc||`)AXp3?JjF;eWeW>h zJBjNhSK9Y5q&VSRB`uA0Z;eE7vtL@cvxZ{}u+A?A$Y#9-i4-H6$ z(p4`t@#D|WM1Qc^ZT=E_jK7y3Tv}qXOV&zUb9jVqK ztJ`_ppZTJ6is>|T6X+-5Doi;bvhnv#^OXd7ljYDfMgs|!0Tb3310<{3r zPLi!2$(v^8HJhT+H1_lcua0doME&Ll&R5-WYfo_{V~C<>#cHtPc_=h*hG7Q%U?F4$ z1)8pw)f-9-J*OkP@`qM>N6+62r{C63eQ(O9uZT_Dh;0#$tS`XM5LATjgRUkj*(cNS zeL}YA)D@&OJUFhcYwY9J-8Nm12eB(jY!y@kFZ(;YDZ_jeZ?0N!2WPNOjcgJ^V<5XS z%wpeq56nhSY;m+bk`@{sG-+?S{q|x4=c~%Q8_(>M5{%78!|%3VyTJ_AJSp09Y?@i;zE(0p4} zX?b@?&!Mg$slAqm#AG0qvy8A9eR)uWYOetmBRq3llLWod!lG;dDcfacKPz;Xq zR|MJhko(&(|9bLZbmOhfU%yDvS4}N6=e8%jSy`BK@E36Aaz~w;!Isx+38PHZ$Fjk@ z=!g7wMga=*4BR^b9Tj}Luw+*@N^_^sDNaXz%qsCx;zU{*s_e3E zsm~)lZ+8CXfSd=gq2N@!S5t4V&#p1*(Sz#`K6oyTOfO5uDL$9o)m=3pX`_zN|6-?| z$hB5|wu9ECU5JQ$JEYGuhI$IJDI~T2XWoY}O@A&KPxBrxK*0%?Q!-o-r*gX$Kal*H z#|2c=o$uX!wbM_!bA>Al^fY2*06PY6MU1+*=Xmob?+dXX(PiOQ&tu-5+_}#8lp69? zS8L1@CU8ta)5? z44d7c*Zl3msTID5G#r}*%o|Tldh<4ZRgYWlXnrPlZ_?4}yVQV?4dXZ8H`T1zugi(o zy;l-d-CG|)ezmqBh7&1_T6?GHwBX%z%SKcQVIy`q#OA~fhGHl6o(4&0#fCGYbIzCd zY+L*m@2hKbzA!&ICYC*P@a#5yRI5lMXJ0=;c{$uM%nxU5OA1!*R_kK#CqM2gr0e!3 z>;!w=dE?!LT!rc2lF9S*3MHvRYogH9-)?#RofruwU+WTL{XU8Cxo>DI{;BTdah$)E zBs}yloqIYnf>Rvv3P4RbvSn%06?inVu|5MzT0UXd8~8Fb!Z$-FGs~)Sb9v0^{spnf zYt2DfArQ~XPJ17x=PwBEFmJ^BimP17?+T@YJBw~44H~MG7%u1us~Yv2sj$6-PHS2$ zjb3#<+Q+GFQGNcag>4IO?e|vobDh=9=Npxd<`Fh`HZylQgua+7ed^dQ@BQOJ%G1yy z$Hdb3*5Xz6@6G1A8h6$Nh+v`*u{XR53|PmEb)2oEKku}Uf8hUv0Nk$_1ZY~nxokdO;@m4JfV+cdP^* zh41*ky;DNJ^WyS5uKtaFD{Sb}(Mztiz6s03xnlGY;XT=jJ9fqwB+b3)|IrL?hLGOgF6(Pa`qAnb zzR)U{R}{_v0wNCe>}79q-^1Lyeo+-0H4w4&XI^dK(Y(t3cfR2+5$En)y1lmlrc-aw z=r6$Hd&bPV?w-@{wpuqfFEpOm9#q|nvJEWWa3z)etOse|JHDj8<<4p5#OQTl!Nt`tsXq;J$y08`Pqbpo2m^st-2}sPp8_dBgmYC zzO1HeX5oY@=oRMU#gEsSr?91D6m0NLlV!MMx1ShAC^lQUzhjcBqsqn9WTrD)5% zbs}^L-pw3TOu_fA{`zi2`$?z}5)ec%T6wNz`p4?o8^*y_r@J9cUQf zlUq+FU`A(}v)%W+D)=)c>gHyR)4O&heYX6$I=X;0LsNsw4Xh8ln!hFd6%!h5rnAo7 zM`#mZVv{-=Dbszz*#QL=K$O@V#@< zKD9fOR}%6agQ}|Ec6Ok z!KfX%cjd{d-V%WvT9&Tj$8}j@;v>$zLr-&0ErwDJ2XH*vHti99S|7|`2p%=G!&P0# zz&Jz(Vj%2YDT7MQI91K=?R+3Iia`M&M-uqc@6l)$5@E%P~nj9 zzLs$-pFcHxyg%4&^{1hkv(kw#JII;nUZWk7lNu+FR#)xkpPv~mBFhmy-J z_dyVJf*=Q*I_XA{UE?6Fd^#*PeK?3*e`rV95$eO>zVM2zI~DVX9g>c3J;jJ8LATcH z`nok9rr>>a=>vzo8!|GnQio!on=IOpPr)$t&~)vd8R8KRlyK3?8?I z_%POysJUs>6yy3A)3Ju0+o37B8P9ZE5s44V5XDf4p}7Tm%!E`s2Y6S48#@@i|6ZWvzq!cguzrRwtp{ixvM{WsCpdYUhh zL{V@ODzbOU)+WurSW>T5-%*U$uwVOZyIHsYosp{CyE+)p*ktjk#+ncD1A^nT3-_FR#3yvsZa5npv0~|5By(uEa$h?L~kyh5N#rPi9CU2CnU!=}d8 zJD6nPdJz@H9Wm>qnSWy)*Cihr-oU0uhW<#4U+xN78@%5voe*2uuEKgxao*khKt zlP8$mmUfDDa^UE~s$O01{inxzWW#X}8fG6Y=_U6x-gq&${-7Wwbo_DhcbA=?Y^EkY z9n2`P`q}UcsLMT=X;8Nj3VUN0C+j+%{Sf0dVn|D3!K))lPNLN89dCOZ#X%hfJ=MAy z1x2b7?RODntJoO)u$YUu}?`>m-fxfPx_dDkHEeU-+%d1S7zbeJJ0}Wc8Cmo?L;D%^fG0Ler2k&8bYs> z{<5-)X!f(1S4l5^vdT8~e)@d%{hF50gFTk8y~Wxp$>uz_@8w(Lf*z{J(3)-ReU)uA zzQ2?l=+$^S_Y3Gh{b~2a_n`oPAFVR%1Dcj3;x47z%aZyI-mz64d^2X-6-o{_w7w| zbNl%N1CgUgtpdSC$fx5w>8)_Kx&Lm&F6?ZP`Gkc*p<fU5{d+qZXfho!D%+X?3@g z6I&-wFZ%r!LS0Wnh{@)o>XRd<_lbc}R%Yd9UhVf=_IpHEUq1ifvCC%b*=y@4U6YcU zp<8srWAl&dCQp|BwOQ-7&eb|2lchTi=ar*3{@CR+_sqYBCxmnfNugmQL^I`#2do8$ zR?6m~ZRm$RIU%1lX1tL5PdcssYWnCM_ICZ}<}TZx_u`|U9sGGP;_MZlP1sERGPPAd zy58dPsw`jD#V6bhSU!{u|9k^6?# zMxz!DjlNdg3EvaF@pX!yM$eLHuyuNaeMiRhjK~}v+%LOpSi*(YSHl^sObq-8qxL{j zQ}i0=TEj!b#^Dpwf7#@DHe0XMDOcYmMUqhF=|)`<4z_vInKSt(CKEOm)5YhzEB3r&EH@un-^;Gg z4BpO9b6Hzx{iD=97T4A7E<5R(pLMHFRG-k*rC|Y7=yRvCqVKF|eiWEfd7pLsWaXg) zj2dIIAF1m@REVM5N>^rm@7nL(pxL^6%53uB*)}zm_?Hg}yD!}9y%QiCiMJ(w7OJf; zq#_mDs5GEtW@5dJua59k$~#1Bw^pVV+cP_Da|)0)TTYH<c?HLB*uyuoZA(ZHT`bA1>j9mP8TGJcbBGlc?zMLYtfc5}PvX9vO!GAiJXL-4c_068hQ7 zuJ`47yw*qUk;~^qn|AHGavMB*!7Hf!=#dvS$>VdpX@T z$yxLryBXopU`C&Bvbx)mRE?M{7A%ks|XR;w`}Y0XioXyWVv52fkc+FHpD63n6ViB{S4I z!tAT)HD&hgGyG$A+w!Mi)FlLFXUuNR7P7Sj{zrM&<*$H@LLAnb#(#S#hWteECL53a z+(mB3cM$;VSSUaIV6%7VFFek|uuSjJ{GoK`$@-b>OH*j)iWCfU*qbH7v%Vlb99w+_jK1={Q~k?$4W9CrIcW$;<}v$ z*NRPU1Zcb;uRn4{CStM4%SPjK)9C9*{fmx%J_d~n{d?^+AvoLzC3>5LW;*e@Yjyjv zw-PeEEhS+iql~A?g=IDt8B!fIWPfWhcX&boo@Jt$?CLGMj1#2j4-lLTF@HC%PQA^s zGl1zMd9Lp6#e3L={IcEgtAyELn83F0!oe?q1sk0IWhexb=N9?4GDN*7~$%r)H zF?=T7UQD#7YTYVdWU!5USVt%$(W*{Jw-pS(V6(hbTz0O}+Qp0RJ_0&ti{%YwmgLmW zG3{E|x~ChWBTP!MEN{4~P;}avY7-&mdAC7NyOJ*6{Qd9mmgq5NS~sgpu3D;gaDX8j zQGJl-(kR9`|9H88uM=m5)yXZVyx?!4!_$}2Z1Ms$A^<2f)jd8{d$8m@9DB)PD{$sxU*lRGYlHVFr2YWT`Oc~UB{j5czIK+X}w{KwRpFM#RS{l=@&G_iK!(n`5)KQ=4Z?Dv6yd_PbN`W3M+wo9Nx%m7M@3Rk6m${2s zaW%)DN;&&X*%n2=|k$ zua+geApdsEE;va_WB>jW`9yvB_5}hD>5F&KQ@^|)uS;hpgimI&fNcDw zMuOXlRwLz2vw_Ln<_#S-Qdp@Ki^D39O$uU=>y2{92P3JzTyqhVmv=iqmBs85_st2v zr*YSc;E5}|`?NMt1tRFVOPBzjJa592Cirao`T{QF)?lp1INY;&QdR5v@Ot-4u^U4@@%nlt6KKDn=Z0@*KA^sCGhMn_ zOy3IMK*L3>-2%jL;@gyFFZQaU(LcBXhjW?pD{r<6A(xuz60kq55B~y)wN_Mi{Ato; z9cejBJu6o(_qkh-OE-u>tgm1v9@z@c;o?sWzhCWmM zYH&^(oz(eeFLfY$Z;%lyj!Xk;lmgsrvae%w0$FKuxt%C+t3ElkMJg~$nT;k+P(7L2 zYEK2BD&8UqWa<#01PKAhfkBN)>ER-9$Le%qBO^UUSL(_Ui(EhD4h{s+@0SRm(R%Iq zx;mb^bWW>otChQu7tHakF4a~{Kivacm^aNlD~H%-Pmu9r<(Xw;ZvqNck2s5ZKShpT zjn1)fB;UTWy90s-u3pxqZ}la7^2!D~(V}!%h&qlE`AQn2@nwpnHJs7%w2986 zBK#fFv19g-mS;S!-kB%1e>)Zye3ko7_V81K=!k2elCN>xuiDKnxXayotbb{gYj}z` z{7R}2D;3sPbe~wwj$X?>YLdpFb3144X|+&?L4KJ^wyiW~#YUq*C-!p@iw{T^&g4BK zZ6jz+%h}p(P2a4>7byEeKz{*xN&Yg$8YxQ;a6&Uew^brB4m6bbaiM72!n$Hz3f~}~ z=+4<|j>#IG)9ppJxDE;XG}|ch*CVVaWrMLrL1{0SE;c0 z$clKDx)B}h!0fhBLw5{1w6vWUroL17?}I;6dBFy)SAg+)@`mVEH{y5oXWu58%opzr zhZb+8|8{A+*YPz5n!wFqB>r5>)++@`$wy*>BU1XhJznIi$6QejX7?r`60paTo{fVW zm+a`x^GSS|lm_t2Y8Z|s#8hkipbf7iHjjRR1DxCcHzzYA(ANL`Q)^{NDFx*=e63Sh zG-^I@6#d)t6309wGRIK$QBe4p^Irfnp0cn_Q#hAz@SccAN^PHBCzM6bEWp&0Xf_-yQnN`Tt_~;~(6nDybM!ZIi>p(QkJ~3a?VHF_}k7<}J!p~xE zrzHUcD4!~8J%e6cS7mMalnPaP#kk&qOgfmRm0+JgjYX^~YZ%GSJIo=1{Z0DXB7zhV zy?BHUEft#f5@fg;p{)uPx;}&{yOdJsQ+tNoLx%^40YM%VP*ehW0g4=S7f&ap4KqEr z=DW1?T>yQwX_JlJyJ;(j3w+4wIyBMw<_iX9O{*|hy zWBmuh`?$XE8x{QMxuvI_y(W;*;nIU^d_8u#bcmaVfP6vnLE8q zfGyDj9xUjkD>#g_WmW4L8S9t)E5g0@Q)>zaKNM=R9u!QG*pwUBH^FP`2kN^5exZz` zQPh$SwXr+vf0tCV$|q<3>5{^G4i0&~ zWsGHPf72sHcgV1{up^M+92+Z*F?uZ(N1H7_USO*6uljHpH;-AMHmUGCe7!e6jaKoh zBvL%TTD)2a>qIRDdgmeec-yp%8D{FFu_-lk4ml4sE>D2J{b!gn<|PEQqUgStYcjS0 zFh}*sss#AFiyAu60fgnk1L04?mL8u|=BUWzV?WOLFM}qWd`)a51(CtSxDO6R=Bh-d zj*K@|>SSa$XWfAZB~_ zv8O!$PTx7D{7Bb6TW1rs_bV7mr*p=bjPt6ln0FOSMPm~I&rbhF|40ARgsbt-Q07nB ziP-siiy(7jP!p>eD&@$w>g0cm6>c9%ZxHm8z1i?7&{y=s>MgJDnwwAR`o{UW5}3zO z%u(k$kefwoKfsaR#X&t)GzDJk?5IlwDJLT`P}cUQ`7>04~MpYNuHr=h49JulLd1>!-W zV%e8f-hD|N)s%qBE~!p^xwBOGPUzVQnW=!0q^`DVh+Ev-kBw_9{bpuQ_SD~hkb}db zyT3UE1x<*JBx|lcJW+7Js~kG~FvNHUU_5RNMDyWp8>vjsxrc7*4sDR>=mr_b#i`NK z2X?32dF~?5z>k7I$T)>oaJSGUqTx*iC9hW8+>cQQOc#k)5#nZcX2HYxjr#hN!iX&K(g68#dh-!y!-o@QL`o)o+1>azbwOJ&VV-0;w^ zlhWV7seGXrWiE&n%(kCgd4FO!#7afNHDctz7U03mX0(ig5sWhBN|K5z@@Q#` z*VL;?^{NGJX)y>_O^Aeh{wa&2Tsj$gHiJV6q@R)_av@?uAj~ zkFru;EA=TC0#_3dAPp8iPcxGi>(AnoW~8xf7GOfhB>P75QlMBgV+-cqCNk?Dx{&C< zX)}v;Y7h;ROyW~;9~Qn(47aiEY*8g-sd^wPjDH?GOn~~od)1apb#*SO;d9)%=5vYN ziaYK1Pqb?G8_sC^+H;T3J1^3`9r?Qh$F*E{W@LW-1zhNFPJiN@wpJkxBb*zWxZ7ZK zUdvs(|KXZ?_En$rmQ71SXCRLKYAO#Knbbk=!(=fL&)}K&JG(DMKSl2y;06gEYMNvU zr(R7Tr1bo3jDh~6EZCp7Zkl0Y^lISpRyRP-GE+L8;;2*WVPYr$+?yBTN^9!YQ&(m? z)2Vu^<@E-p4@D>+6b1Th^JK2Q#ZGD#tvct5d!cxE9z6y16D9Oo9?e=;qZ3fyz6M*v z98Gm+>47C_Hb`12g@{MFV9;^vkGWnBf-0-M$bNC!?giY!4I!SkFh!mWl~)tGU0Z!S zDFWa~bvu*i+9of|_XVa3m$By)yi8wajTN(2`B?yMesExVn#}atVUim{o}gZi&LqRI z7>((k>T8YB`4s1&BMtB+E*AIf8Jyq9SG=i6;Q1SM&-vMRa@n)E>eI}c! z#|Rv(T|GnT7HLHiG)e*_P+vTab6#b@=NZpMrvCyoY;8vM<_yl020xql)QDo)doY>C zA1R{`%-a`hO8pD->F0tyT3takbWAJbha(3=jsbD#9baXuyqjz}fomt^2jZ&j0e$~V z@GiWVxA^#_6Wggy%_V0Ttr9G zE~_zFhx4G;ha15GddJU}Ri6?g@k0O<4=f+FM)?lPs(IPE@Rjo;h^h~5bQx>@^wbrR z=pgxo=)V9LE7>K(P=F^L0l0O_8jHuPXW0{4`(@+_~e;*15#8$wbQWpc|d94jzW0JeQOZq4f zJ*|3?g>!!dOYRI;0>bmaVtY$>WwP3qFQ%!XMj2tf6&_^DGQn>=*WtlCUq8z{EMLVy zd#>U)6$SFVBjFhLDr4)!4{@L&i|mH!`wtiUqRY)HtH;U(J9)_5s7owsWHM(ShSl@1 z&Fxt1Rrkr%7XjVtldBXot2#Yz?^@!te+*xi+%|d+*wQGWN%L8!REw9iK)BX1?pf{= zmhB12&vk`oc#oWwjWX_0U0JQs^YcycJT0>6Y3ZHbwQ^MM8{J-Cqv#fh?eQzHjVcZZ zPYW-sr>TXGrPYBjSSxyn50$GAi=`5?r9f|DG#B1`XBUXRXv?+en{kO~yDFm9uWH^l z5kKsV>~HK4WDlrYbY1o`DA8Q_6VaL)4#?pXdbobWYUGJ_Ny*X>z6%Z?q3lrGJMP{r z^^kqu*CX=$O={{T;e|ip4}e;#?nt(m9{07pAVeQ;ZMkg?kRY~{Rkn^%s~u3?*8zOu z;xv9VqlX~ona6mI&;irG>*M7zXA{kx3^9D+d^q;4w5T~4=eaL2P1!-_?Vpg2)=3=- zgi24X$DrfkVKX!evW3TXB27(e<+ss-0?kpnPb4XJGq;N&3j}G-m|&_-)~=kB1Lwzr zrh$aMT_*?8o%J&?LouR}j}=x<#$FkbmSqLzi_eZm-BFbU)$Vx6Qk~sBN46r*jfyvP zkKyfWbGl^loHb05x?Swj)ZvAdGtK*n%ci;aMGaoQo1^$$-fB_&sdev;9=gQ9$rWD) zWPJM+wRqvt3>g?95ykt?yC4q+K4x^*xQ`Uz02AB`;wTa(`zHO^wk@D zIg~kr)32~X`mr2`S$sk+YBqKWjuTI^hf72qlOV35bpg8Rmhfymf$-ejN4W*kJ+?3- zd=vlA-3RWGaf;3HHL2k$NG$dWzC6XHjARVNRC_rsy9aU6J*E~m>uoIJ#79`-ZIiV6 zyMc9myIAF1;*zImZFm;ng5Q-f9zG+ipjCQ@O+fZUuQCDgjke1N_Z33NBFaq!9Yz_Z zP?I7y>~)_QK4*@nBVH^Pr5dRtNQVQP8w*9k*exK$xb$I^CQ(&b?VM|=0l_e-yHoMi zm-Ndh&ZW~grmNlm0$}glHSD?X`l$A0(RUrKn+^W$T22x~r>+d2Xq5sC{K~Liy1|4x zIBOUaru3a9vOecuAC=byHrg8Q`gg!m4Vruk>*_pe*tF9L|AQ2I#=m~r95>Q1r+c5? z95Bta^?5-w(j|s2Xj$gtU+gbkTmIuo-kp{|Z;i2>J!n&sFKhk;^}zNlo@Ou*ca{UM z_3?wNYoFQ-lJXSw(HKZ|ci0?fD_iosSRD$^|6N?Dq&<(mW`4gTDw*GZSSZdomUDP@ zzhAt66e}=Y>r!wuO1H?sWsa#cwLne0bYdHj>|w1}ZZI7JRP_x$ z10O)>p^5RTILtA-SbI!^;4zEKdr9{vK{41N*ZkCUA#f=MP2`ldnWbck#lm|c0-bY) zV8E4kD}XXJJ{m|)nd&9O;K`e{K{QHSOPU+;kjzarT#IZeW1K5lU8kKm(2CkdI7xfS zky59Eg1GN~g^BUIyVtx-e+=9&NbI{+FI()r<71lsd-kday8qJ8+Xmu&adAF{H_i*r zyunZtFSR6E2QGi$`AG;IAEnpoQKg+Na7;a{ z**N%|NEA=_^xK4`+&_h#p-XQ$q=jMD0{ws9_YMB*Yz*?pj(qqpy4&!-*WJDkahh${ zwg=lceBYfcNicG<>!RKHcZd<8*Ze!g9PjYRyiO4rfsi`Y!oP4iDzbLMzg{MQ#f=!;1+QKFOOZRE6UQxT>a}ooo~XGeX6|RPZ^AES8uqu+H9WF ziu!+kKY(IdJc20_)oIR|Vjwf*2v##$GgJ3NmI_c9ts3PbYxt#Rq#8J*8zm8V0j(n~ zG=}Bh161-+>v1F~Q}b}JrU)K(pm-T?#9~VU)2o{5CT=3^sZS~7{Z#BR+7S)@=j)` zX43Qo-mBO%D7K1QhH&Tk?->K$_w13ZGGZqqqGKl?X4|lXJA(xiDKT5EM+OFbD zQ)PT7-w#R6c^{{`yTZNx#dd1LAYVGbCzTyvILwTTzQ6hVFMt(#aKiP97oD0}TS!pr zu7U~6xOvV6SNM4!U?XIoSf1F3JW#T`>KbpmT^@giez74X8w>unHDN%oLDP|WMYmi< zP~Y!K8mbvUg_D!$h^-@(KbL$M?BgYEJEZzji}Lc&dQT)71|Wm1ki*JQ0EiFiDVSCY zEH_DjyQ;xX1d3bSZ9pN?fLwY|cD#Lsqis4CAs&Eo<%dcsr*Bq5ZM1k|xddPKD7v)0 zonEBlIvhC1ngP{NHM8jx2U+uz#L$r?Ezj*j<6JGrf96m@zG7>^D5<3h8!_b}eR_a3 zAEd@JKpM+~GYfgGDG+X99AYfJ?8}=s<7aZV8^577@Z$cB81x7ctAz+A74Eh=dIcZW zkBy6WKRg+5TXJzqg`yo+={c+*;;I3b!a815DE^>=>325MyO)W2*hwc5F4>KFD4x1L z(B3&J$sUx9DkDuYU+f&1HHhbBY*FkvXJq5wh0(ATsHpsAG|MRHPe{%$f-{rXSI9m3Ayjtn!E!Irrbr-nxTJVppepz z$@sDRe*s~fgO3YdTkT~oF%fOwCbSy_1ZHHsw8MDpi)sEN=ia1hM3jQL@xF#X9loXj zBZir>YvX1QT7|;@Ms!hv7cS@`Qfo9h5{2Q4qiDI5QY;GgJQ9Gdz$ycSZ5YH-2w#wf zQVL1L;eqbQXQE=xZ4Voy^Np>vA{b+>iDoF{O3IXN5j!EC**JGr`PrHnHSAjm)P1K4 zHTt$8*Ic`}u<$>lRMF;B&5Y*c!cHVnx&dvK_$t3`OI)Z_5F%C@o+aXbn2yg4Duu)_ zOyt@-${Hz(1^cfx&3A4&4z9r?i>EC{D6ih`o>+IBnDBMN|9e(VV&?5)s%Tf|*t*uY zqle)^PN!p&t1vB>!CvKMm1fWn7sp1jA1o7)qdg?%3; zUB?zg9d;mG zF6rKVK)CCp84Vlp;5+{#pF7jCYg2-nJaRmEtt$G; zqu{Q${HnKH7bu6rn|oIdJOI(I%I7gD%RQ(SsTjF^B}~q&bFr1(H}l^;t93Kg*Eh}! zHvv1O17?DDc5bvEP~V4cULKHQMirmE%Y}FCa39f)ln*$_gUuz|J6L_7LkVzGRcvwv8oN9z}Jm z{gHItN*}!3q#Acv*Yhr})c7#X@;>9%O73UwB-3%A<+JW;Jy3^~O5^h7MUp_*kq=0* zC9HK~!{(WbC-YoRa1n5_VqX%EeF2u6Ugbt!*$rG7lZ#5U1*Bc00K{OXD9Gn)nPW(+ zHohuHdML`6Q{x-Jzx4qIx}2D(L_g6gTa|Y-fa*v5L!IBEWlGy4-v?KrKkL%6t6V90 z|7%(6W%%BDeO)-ma%Uo3K>Ague}>&_m*#a-9~H{(KwEn0ugtX^zt8P=UK~gkjUElN z2s1NcitIp7Uus0!b!5+`(CMqBZR}}E8+ubvd;>1FPA)HhD$60xnFL|1P6HwS?&1VkX$(I z0&Z5m^?NQ-25LVQ_i!r1FFdkklX;SPEjaj*xMW=6kl#AiPFnLzsy8>Q5+p7rx3!1L z*qTP#^Phg(-}r7#>Zy#EPqVIQ4OpUT>kj3AiXL9f2PYTgZ|dro`d%<%N4N9E`h|5V z`kwfF1lzsW`0|tc^xRn~54+5cZS!u1W1XI)2~b!PHsUBy>QX?z>bF#YHd|pyO|F1H z58ed$;CSAx2-s-Xc)2z{)w>qnN(&tm(p4SKi$0xJjicIo^8>cIvxMbU2n1&~ zyQiVQN@|tnM}ybZR5Xtv$KKw?`@phrzN&hNiJSbBL#XkB%(yShcqSyT1<^uak}T4yP1mia6s!O3*nOTlKg@g*3{8(D3#dYnq*<`dd#yET*lX{cN6O}Qn_?q9WC?21ZTq6cJFba z3a_OK-_nQV-Kbri_RsIUFGhn(=c&cL^s7`~Z(d2=o-{A;UAtRcY?PELrVzXqoYk0r zJmjM7Q?hrPpqpTP4>X1xk*e;wMl#!=_bu09 zkaTlEY6|ZoK^lLeS>|4i&saU$|pj>v=E@q<$-p*85gm&&x}!6Z`6z_w+cF z_^WH8IZ#c>Xc(4QLAY{`89j>Dgj~m$B1__LcNKs9)A1MZKNltM{U@Z4_u6jx&c%_V zQi?Evts5&T2QPjZoc`a28I^hv;#;cT{H;Z^wU3J0zsK~QNaOV2Ka=B%|y+o_AjPPi1FJ-uP@nb~uK z`ZYd2@MXHzp5Jb(aWHm0;hnC!Ue@fm==9;iCT-n=FrF2=nqD{;GMg@vn{QWM1!Ykr zW%^(;$n)g38rg~f!iG-*(l&}Hq}F&v5PNoxe$J&3`+-w?r9gT?*70res8s(Iv?a`a zn%QEar8vLt@ba$wzm(m7x=;twZyLz=+fz_@lAx#uCpz9WKfh=#t6J>M{+S<1Rxk-3 z=lhc>X~MTDOOTr3QeAJj0_ZY+w5Ks(td2~qp-AXixxe;tL)Cf30S!s-+@ix#1n*PI zD}p0p68=C*EUr0lyV4|Ca6}Mb0vPaT#--`Qe{%G*-(?s%R0W{4D@CYwuv`;sPhY|< zNnyuq6Y=}!En;q;;)vApFpr`eI-Gm;FgYGG@ZuMBy~pi%ie6(ufwS+8f(QOz#6dANp}E&lb+cDr-#NY4L_AFS z5NPp?6xFhB7}cV%;&%|JJ;QcORbwQnweq+l(%bj$!5AAP0eG2GX_zF*&xV8g~!qw4E4;0 z4N*-aFmxkm*|ihxf$4m0!JFcz0K0wEfb+nxLylX2_ts3$2W=L>Q**2$dyc z`R&0}ic_zoZ&`-6;0&ZW4=KAfGB_qASn5fnXn8%a1g#m#G5C@15p{pEBl#1(rv%(> zU-z&PoU@rvHvrlH&89TmqkIy5*7~HaJ1A1&A7H%tY&Q*c^9#dNp&;}Y!kUYA2ZtSa;7gXAG(cd(UweOT0dI&dw zl7xnzQy3&{$1%Il-Wi(u6K)5sZSkcHlQQ>WNZ12|-vBZZ(D&yPXsiUchl5M8dv<<9 zQkuW{TDA^)X+=zcyXrR9AMBJ*!Gr_ylsXPQ)UNJ8uf@mz26MO;wvVm*1ly@wzB`uJ z4%+-a^lL#Eoj98r3&RKDL5eR-o1Q!Mw|efj-%F>BFzM0X+H}7@jY+T{*6_e(BbuJl z5U}W^i$a;y^<0e!SNbtA4T!^$ekrKgy;R=47%E%K?)wA>uz8by~rOF{L9HZcJ+vGtNKVy!&*&eSl<=y{G~rRZP`+!CSeTxt^yazW--Z;Tjwi*Nrx zcij=O8@8gSBvS+eeKixu!zzofSS;Nuyocehf~P1 z(SKB^QOKd;&~d)4X=Fc`+CkbBi`_3j6`7Kqf{TXeiN%E5G)Hs>ZJ+-tL5+&*+W)%a zzWRtNdOPRY=G&L@+#u3<6ycW=qHg+*?eF>5@}D4GCUr+2$I6*F!;~7_6C*OT%uR=0 zlm77o`R19tV9Xb{Puz18XS^Kv@nWkzt2Oj)73P{&rf}SUHsH~A`hHdwh2Vws>AOC_ zU93$H6=v)fSg#F?V8hLPK+O$Cb@beKrel7050?&`w0~(fBzXDkiCp-?R+u>F^?UZV zIgm3avlzHV9)k%}2#dHH-(?I(QgFD+g{z?;LB&3x29XU#kjJAAms- z?8lr`0m(ruUOA}El!pu8>xi&hguXc0orlNdr~9H4h3WRS)rXVQyk`36=ByXgs$|*%Z2Q@V$Q~Wfb=kxQvs9IpH2?2ti zJ8Ae5;R5pc&=13RZxwUCF7e29XJ;+?Y3h`v9z9L?M_o)qQUlT}U6!Tij;Y3#&6orL z>(s1@vMU9}ReYlnZm)($=p0#TwVH!L;A*42p{V|Qwn+6+ln z?Ym3E?@4+wL;b2uK1uUApUdmVZxc#O#8fo|hlv|<3o^6C8k7sG@g2>ZAnC$jYqfq3 zRy0z-Z_hKT?&ldr0h{Ph=Ihv-Pwu+a+)9j6^}DI~X@xR>n7@Di>|yp+nfCW%{Ysyn zOw(4IYQ*)Quvq(3``31SP3^ob?`bEfjroSaj-IA%8;SG5{-nS9O0*8`1;Y_Oz!tdq zMyrsZi3Go|md0p6UZ#r12u%Px@Ob1k)wbaM6;&>UcvnyL_#4uQ97%=iKjd=M)V|Fg zr`J7@hzUr%%#AJDS>(Kl_x0`3XZW~f#v{}m75|Y~IXbU89&kzvc@FD6WE+Ex=+(Ao zrD+9ls!k4Euv*Uy5hsngO(1}!Vzgp}Aj)FiztRQ*@&II4QqGO1R64p@BcIxXMd)=s zcc`2^l7i+Q^8GXmwXuUy@aFiqU_T; zuk-kHs%bX2k}+SsF)L5U^?k9#A8mc#5BQJ%`-a|l9yqc2E@N8N=hEi3Me%D=e8Kma zqq^6z)7Neh_sj1|lU~0MaW{0n)SgtB$)af3dU@BJMeWLSx5TQ9f<`Hip%!%+@|~g9 z&dAxT=kLC!-fN!C(s(V)&zNs5$uCd;1+pERg*aq9Qj_mAlYB1NQIFRruz71L|d_pf!#^Ya4aDpA=-$FWD z(ngK5@=mp)i4~-;t_{e`Z>!KFBZh&k1*OB9qVvS2_w$vP(f4>sDfsNRI-2!J|8j-s ztrsBuAfK-5cpoO=X>Q?rP|eigosZWwHv)*;UCD+YG)}DLwg=4x9=_O^@guEkJkQZ! z9-Mxlr8Mxt=fup9pFzdxl>Dy!@y@4+7TALYRb4-d@|1EK2$1$Fe@;0~LbH`TX;TCG z;B@R=E8|7O4Y`IkcBSTu#YlLF`FjVb$m;?Xh&$~f=vT09VKfO!57%LzheA|X5EIl& zoD!)aECW?95~4v-i>O+jd^aVlfYGs8PmwuoxEdiGOXx4zQzam4s}O|c`-3T zNulDxGG{umMWhDU8M)4`P@3x8k}TzB7*$Iyd(L3-(m0oTY*MIE(@QruqGOGsnmeeb zkf!)CyCE*0Zlz8E_4U9-3h#?UJEd;PHVk8@({EZ`yMPGS4u6oYX@ZK-bzwo=Ib#Gv zX&(;@Jhfxn*yW_u=n1uct?~5?^Hz#|B1hu|U2Oe$!~WOR)QyB&AN~Ta+&=fQCW|-P z2%KK$eh)RG@KmjBc|Az`=c3;8>d+wyZwBPaE0Q^S6i_vlU-j0>PHq)yg3fqj0kvD3 zjpaY}@}Wbe=c4amOcOY>XaI8dlEkhuWKVYxSBE;nni?;2`DnyIG1h zRlKqz84E;B7|u!^bz(#*0e@25-Z=UX3T1;{zP&ip%=K! zUU5_YLGP1!j$jdMQK)_R*w9+%THcCfC%SLd;>m2ljS0(-makG*^U%>(1)LNBE2#M@ ziDQ!CliJ+IxnLKeT``}YCa66gfU#DWYXRq2SOW>qWT0}+U3n2$119-a$KqlUH*?{A zB;$Q|TXTEbE0SK9$HSYT&Sx`zg_-RNxyEX_jMmFTNO{=*XeO354+0b2!WUa-68jTr zq31&jt#zp z$*P*ttP8H6&>t7sHZFQLuO!e2DGLX(wEbYP!&-m76kAg&rrUEzCg>~9e0>b=@H-- z2ys5*1Aw_IgKn*7PiBtacDvU0en_0T+(1Ej_HISXhJx0<_M5Tj&vz&vX5BArcW9~s zPpHb26pTO_izWhsI9*7GLp0>rUR!^C_Xrg4+@k1#^HLJrTNHdicSsq@{*3{cWNSyo>Y5&O(`jlD=Cq%YhWc%VTiS`@##0S5(rN2evqEk+YeL zH4vT|M<{_Pr1v<-V5rt^n@Q{R)!_ObhluHJA>lt(YxdjgH?LnL&OpNHwd0Gfns*@1 z6Ejw+BsgT*i3> zK|Tu|K7Sw4#O)VCc2MWWgurCJVC%1TBO+`*ZIXz1`r{Z%CD7xHqsnX0e-YGd|43buEEXdK0FoCJr z;B-vqbi*0DX3u8H_pSUYPp?|p^A+~bTiwHHOc@VoPy_i#4dD#8dhom#yPHc$27tH1NDFXC*} zX2>OuPkd**a^=S_!e=B|rFbdNMR60E2}7KeZ)B&Vgwv+GJGf;e)z8C}VWo8)G=K$l zydKI^fxj!f+Q}*lPh;R7MOwbSg>PT&QHuRuQ^7#j<%O{Dr9P$D(9wKEV-a3+7Dy3M zu$h<8Uaq;ql7D3AKH+S+;dS|1=iWl-%nXhxxp*b{(s)Pl;fpE#WJuTaW->_wji3RL zn0$X5T`?Q&9&(j{v$FapZ{)fVAaPhc1kMXnAd9KYtCYFzr7@9B;gmS1YYdYTbdzDj z=QDe4<-js^p9f1_jTHzJpA9L3f z_0H(Wb!Ju!aY_bXz~hlaE*>+FU3Jf(nuca1pV7m*^1AVAZHT)tFKHk{Ik?7CQxO5h zV9tF&U!PIOdY}8mm!g(k%Zz6fZRhC~;UfX`I&FA@>PqXK78b3DD7|C!vhn-nqZbDo ze*poUadr{rw+e#jtX+{q7$T0*4(>ixSH<1?|9mZsM|X6< zRTC@a&1-~ih-)sN{_nVvcQDgB24!8`hbAKaLF924Q-f$){;m&2zVx~PostTFD(AMY znn>+Us`D-hzde6lLxSjP${a5j;Di!+A2yy2nTlmS%K66aqv3Yy*cv|K;s(%kM)Wmz zw}59#4{oC-)~~EqU>rGZJa|04b9mK- z5sl`EL8xRhzZW-YF|K3wrY+8)Sc7=1{1LTPo9IT#&tWO57c>rUl^z*n(C6ir#u=GGUQK}IhGh0#G{dlX(xR^5m*TVU ze*q!&kc}7>I#CGycE*&ScO>w=Q0|n@c$y5v%BfsZLI~7boW`#9W?lyptB?kHBx0|I zeX4ssdjIpKVD0m}=lwu2^^5kMkJEM`=@-we*!D#P=R<<>tK%47NkLP@cBmMp>K~` zJ4d?Bk9?Od(w*4iLbzbC0%C!kv0f$q8Y zVD#u&14Evqo92r8sH`HM13!NZpQ>z_HbgJrdcOVBbF!)p^CEHa+_9?!agbDo)Pu-7 z{IXSelhUGcDb%0aP-Pms&i%K9)wwwBxG^F1$>K@WyhN_51P-a}TD1;e`wLJ3yBdqd z@@hzE7T&Jt)Ab;3iLBn49#^7d@tuU-f)+5Vv~Ig}G>Y+){!nXiS!zzsg0~Ur+nd8l z*Y38)c*Vlm=fznx*rPxR2WLc!_7Qet=?{I82jbKH+lcy7t04$VaUi(WI~239Iq zDcdYo1?iOWY4c&3*od@pC)IUL#b-h{{`q{M{iL&Hq1$>=#ETwC2G~jgU1EXsawy!v z8iy0Nd+#J>WlF~bj`@@yC;OXl8!uS)YPR+oe7Lq5567S|}GGtK8z5U_3#}iYhBL2)e*?$<3!xz1A-$lq}Pct zO9Yt#FF~rFf+}$k9PF(wzaxOi_5e4l*$ZUrEjM^k8x+;|?|t)p^YWL@@XU8eV}3WSpY=(v6Nf6~9xIrKdK!jOJ|&)e%YL8YD`DYPMkI?MaWk{T}WJS$Ya6!|IUJz5WK z8|5Tk=~|`cDoVC>S3pEXna{f1Gk#mn=wX(to7UUC0o5A`hFlnqRAjyVbuoA>G zB@S0k^TIYcz9z#FZmAV!LlvO}nLEEV*pe;n%jy0?r;1iQ5F{`YCY9OsTgsW}zZ$7$ zqfG@UB(_Lh6}Z+joSqAoI8*sjKf3w_+&Y=xX7+0k)^*-N)yDog3x;(pPpsuJaw$mS zQQi_OhGm7ejW=c8Q2FNfr&#|$_SO=tj)Rl<3Mh8zjNuEa zv=xI&bKd=B)khTBdO1sXV@*dei#WkM-JXH3$St64q<005Y`+r`{6#bK^h$2S^1V z4?rAQjXqX!CtQIpW{?c~o{!1sW(F9-QnMRX@l+PoBrv9sF@8p<>!|WSkW93lG^-v+S@;8b7q)b8O>R#PX z$Z~4AH22m@lKBobSsVtYQP0&rzd>N+h+duk-|v7Wo9boISae~66hY?2-iFV${Hl{1 zWU7M=_hd zMu&8Rbc#qiO6dj#0VxS3RFLnx-~0crZPz*1dCv2B;=c9Xx4v8r$U@tA?XJ+r#|mla zL`Z3J-$s$e9u(qzSLqVbiRlyqa}DFX_aReC5S_lXZwdx6N-A1Ep~*oL$5WYRL0EnV z6@;3vA=r71YL{XF`p`HR3}fu#@#IX)npOgitvrU7SG1&?Uh&d3WsuV*Z}|A_XU)t^ z-#GztiC8nD%38?MjGd`E5E%SBTr0FXXL!blpM%#oBP8=DzoqeOSz19|^EOz$53>|Z z?b{R<1Mw=eCz}W)_9!@@F9#I}sd*?52G~F{G3jE#Rhbd1Uo6dq1A5!WO=ZH2O>|keX##+XW5UMJVd*;FL-v8kXkHmkZ$jn((;Q zKws{eZtNPq4g76eFKDpsxxk#GS_{K=2VN(3Tv}enPeEs#Bt)#oBlKL-OQM2yM@ZXg zY-|JMC!F200{W6diC5RSZPaxiflxN%9s#QXz+ff0J*1PS1yoNEIBP}me)tEdTfd539CzL ziYf0mWd)*a?_tcj9KysZaO3RkIlX%cZ#r%S-F z`q71Rk$p4jUa^5nLbJ`yujBWzj+Hue7?eIBE^&hB7326ygh_;s!{tVV`_FVpkl~tw>ZIz#J&M3i5hWqJzY&Ebho<&G-gN%AXzCdN4=b=QHb7|kIMPp+ zzZ#49kcQ828A^>!M4+%zV+!*KT8@O06UtHmVHogwwktZ;o)2xSV=v%5+eAp-^D3$6 zS30Z|--O6{IV+qE0#6)rwm*3?S{U!#(=A%PT`8OHNExlSjZDkI0qJZyV?v!;Pt#EW8eo!Bvh7rCZ(B6dl5%6a-8950|BxW!QnTnMT;8RQ` zu*r03>MoSbO#?zi@@W;uc$}P3*5Z#V{lSSfqE}8X@Ij#pz|42*O4V65nI{EACxwax z89f^X)tMjt2s3~naw%GafwUDRdOtGkaCN<%^rKJR$vttoKU05_ims#G>91_CS~ z9Fe!hsQaLHO}ts*_O)VkR?Ot07@$q{aXGE%axahVBq`ss&LCK%V-!sBnc226-a?Xq z264u2=*=+xWEF;C!5`8XU!zcZew1(i0~9FQzL3Oo>YT6422)#h;RonZ5xdz+3o#Ed zf>#lDwmQNWH1Ye9LkJiHzq4+xKRup3DPjyKPG%+O%BUeVNbu7LGy2y3)Bk--I)t~2 zT{!ffFAtq$HL>h*B#I6~4kF}Xr5>Xy)ub<+i}xR+kF-&^QpY;7+s6`)Qt6md@eygH z+5Hd9zK~{;`$XEpa0YTx9zd{wQp<*hD)Dq39|~lgTIfU8>DnH&?p4_h=r4y( zsJA#8la1(aEDz_Fl_YWv%cj4^r!>S^z59N0>I3w|@)SslnPv=`$Ornn%-_FMGX6CZ zx7?&YdZ>W1K#SJY>!oDlhZc=QwxQJ&~pj>-;(CvyI zUY$|~Vcwpnu%i=LuI8%L4mp8=G}kax7_XUAqoEamDdNGS)67)k>hu`35&?P~BRHD= z3Gb7yg*#8wjEN&|r>^9$HjJ*s+&;AaP)%6&Y$y@pA*-4dt5Ofzev zfe9w*+FSPzSk@$iitQTlvlFARD zsKy8nYuN=e`2k~Xal#%ky42VzdU8{qDx*w`3?>?t9d+sj2)PXzf;k5re) zWd1OMZtl>}kAjR77^ntLAaXfc(HIi$#~U&|p@Uz!=0Ma5pbs$%>C!m+;)%3VcoG>WO)O z(~S}Gialt?{CdVVb75tXYfbL%t~BL64s@{KqajhwswB)z6RYe0-GTS2YD=+~3S+~cJ!jqM@e~?a%wv>*#gzThm zoa3D87w!P00@Z|NG||^lthDW zfV7JD!MU7^BhUcEp%%T~&SUy$yc`vTXD;JKvB#x>JUmwBez7G`8pA3fLT+$S$KD*P zAPjnCREF1pjZo6%3eOuS-sgug)BD>UToGmR9NM={lv?3!9`~X&&pw>-sh0>ZwFnR& z7o_bA*{#Z^MDcpX>S|%buE`TcSG@Ao`f&yw>Vw-+Xq*D?da*4%8;7+4Al=7SAEoE{ zAK)YH?qC2+o)^k4=w||eP~&~Pi4YgUVjcCh4RX@u;v}N2Y;ltPVx+WE6c2Nkk`SVz z#eWQ>K@5z4`2=-vMXVTzh-NR2LXfA-`pYSFV`wGHQyn+at zXnRPuCYm0IEg-KW0GgPRanj&BfY?nf!ea7EnyyM8*1k)Exng5P!nWU2gT9OH1iL$` zqc1w@v@wFVw9&lOcvlyfPRS{Ka<0D5JrEH;%_@=QTYuULCK%+UX;Ki26rnNQ29bud zwz08d+#R>}+y-cWUj}9JMX$aXS*+ILr!NG<2Nb{4D)XG@P^AK$ZB%X5qz)A2_a8ta zYMI9>w9=7+i1FCz#Ii&@E~TP{SP!yK6Bp{D%2S-E=rheY#!&64;CY-#_y|@kqw-~I zG=)wbst6@(`42!QsMbOn6ib)UXiq3)cZ6as)U$aBtI;XdgAk9*gBf@zAk^M8Ppk@YnXn`5Bkc3YtjPPY;b;T`9nu%Mq^qe4K$+_s~?Um-erW; zP=7Ecsw3Ib{GG;%cgW%0SH*r1?B|m6<$XP|oalYdwz$`^g^H-Lg6IUEN^R7^((k3( zw6S58eWv?&)=;+4Y9@8gjDse%9wmv;S2M4P=X&r2{dl}mRr8O^UrtVHyiGVI{x2Z+ zf;fEx@2~x$GloB1S=Ar$}EAhD0*gdc90hvlTM zY4phtgoXuXR2@Sl{{yGX(AKHJpU$NSFpFjv)_HyN8x*iGEj)u_?%BzAG`_cutUB`p zh<-8pd9*^C`||y(svhALzuY&6J6D!fOy|XreT}DxsA1HVp)#Oe{#POLDV z{z2gN2S&w+LX{{Wj<@O${hASKERC3YsfB!;%&UVu-4F2+rQvL_58|Z9f%Z?{gzJt& zuW?V7IB_ydIulJnWPCCqf{|`u1ZzU^mC~TLAF6&o!Tp)BNQb! zf#CF;d!9PecB34)acv?NnuH8Md{-sbyaLrupW z>GqL^T@tY!3}{gSK9)+9988cGII%(d)gy7;<+K=58O8}(1#Qw4Qn!T#pm3gFaoLDM zK)&X20AfTnMdtkrh891HFdO(;1i%E5D11$<2symB*Lsii3?IWeiB_Z8wei|w1ZIWA z0OL2Ya-aSI>EjH(lVgm**x+`~J}%9~;JYWeS_{Dv?dCo+tcsei8_$|YzCFY1Z?QK$ zo)nNn88-Tqs(}f?dD8R$0Bp30WPD|AkBnY8q-U7bHcty*`uSgLet1PNGlN$kYyVo) zUP#}7vH_#W=ZcY4h;Ek~U?INRq^;Jdg~y6S;WJHxTvEG(LMVjiToc{GW^ZpKwY#m) z_JN~thQA?NBGxSMUbk2$rJtIbFcHaEp&~C~Sy@@Ep5Okv^z$o&)apAWAx%HJUu4ys zH^`qjoMf)EIwt&Ya}D4@p|H(ox-_FqmmUxzg@-u-5%KMH(oaMbQ0<_gG%58 zyNO%QHX$`*N@q3C#ej%|q9K{x)gd_fyi*f5 z!Y)+!9$j+c9nUpClV5e^{lqIg{aygWD0qP>FV+9*|Bi^INr_Tx2|VNFWPfB>))Iz@ zI#Z-pz7)oDT)la}uAP=0-OQnB zZd#FzK{HXLfdUc4-p@iR7vf2kIQsNaxHjwVmrAS_pd#6z$Yfrvu< z3-#c%TKwx@)tI*ty6=pNjW0*Lc4yAX@O5nN6-3nh{sRGg3Z2bHe1f-}Afho^`76{E zWMyBEoOuq;_ek1jtRz`T_U)7}F z9c7+Re&Icb(`%yw7^(;hl?=DBeoIfAi_tUH1}NUdW_yQp8+(^4o1BREy*c~`*o^sq znHdmBq6*j*+rAQEcX-$z2VfQ}K7A}=cUB#`CU5=cR#f%>KSlVzPqp&4A5@eLe1#sw z#Al_vV|Q0c`N+&%p}B5FaLDH9(T#k-g(`b#T~8t3)YWoXUtno#X=mrZ{fA^pi!zw6 zVo$8eSlVkeJ3*$lk`h57;#qE;)BfvS?qM#O@bkmv{(Q1~<>LSUYXk)U`%hA>JM5W; zsn0B1{NL3cZ*&Gs0zE7)4O8;b!E@syy=ZlFqmFEmAMSIU$>yGB26ZiKbH|kvmLk?U zbIuaEEG3EF^6bhKqedY^Xjv21{EWWZUfZv6jF?g;Bg!h_*PjL>Lw_9(s)DfEDf6kp zfKf%;rc;VpBSjK~S{d;jq=;%x3~bses84GEw=F8lV* z7S=Avt*wJ!Kv6P_D8FZ_x;L?&3TkgJf2ypRXZiqYK44>S5#60}U&OZ(nAq!9)7)$+ zWZq6faNcLS(cWzTX0f(TtN-G9CoZu9bGin*eQ9Ri>0;E9;;L__J0L8J2z z9)NkPete24{qxUEXyba8vq3$J`w?O#%ul95?EF>QD<1YhDu(1H-~io0un4TkC&hSu zfL=GDkM>WBYBM{XrO?n*ipCE}!SCD^x97sv;xa?F!r zCUcT26b!ukeP+&N4N`89MNVg1moh%%c30(PHmyWIV+DGe z8wHFD$=+c;|7CAj6M2JXSTB6!{*(Ku;xiV(ZWFWRR;5b3!sX%3lI-|}(8`G8dM$=H zZossjkwLK6o!CwjyTs$&t|FWXp_uZ2nd^KnJEY+tZ9ZLLhXdq?YigJXm@J*Y;WP&j z8)F>?DOuSF=2CmgluZ~^-5fsrmU;glV8yC!U>>V&9icV0$7K;o4Y=-AbtMp?{23zx z!I9Dv(&eVIx zK>KFCf#;Mw+Ld-R4u)6aJ>ILPpUvc&ezJn*G!$EL=8&(t(nS#_WDPthLp`lqAjS<- z=0}(t4ZCwG;BbZC(|`Hc;5(XK;f|^oGwE~*V*V)hvu~n4@WSI8y6c^kjuILcvPdE) zx`kM78C?l$3n1F0=aK$mPJIzL@;+*^6v*6&0iRO?gM zfvG3Iq8=NZ5cyiKv5h;>@C3Gc8vq?!ZKA^>x2r{BofyFS0K!bpCtLuPp_Owv_l?xW z*U5f7JOKN_epBVN0^?qt*TU!eb=)uOlO2`DtgN-}xK`8W#gG34AP;q7L}NWUA;bFh znoR<$2Tr*U`FWJU(k^e{T!+%>tlA6|{VF?XMM^{3f+yE=bj02YGT`J@s zIxSz4=@Ie3qmu7tOqFSs6q)M zYu%D=Yc9rI*^7o0+?#olX0uy^+gs7&EO&{n~z$r8P;QJ#wK={9i?M+OT-gQb(5>5MNBVp>CebiDV?RwfIb&3h_r>#)5dc^;R5e zCe`vkfTUv3EO>ax{f&@8_pwE-S>?MrMz8){FaOspm3@l#wC8N6Ra*{=xlEl;jaVhV z4{7&AmOG07PVPl2my;BK<+N^L3t>tVeJR%#R>9-8SNVtI-Z_sZtX-|Dpgs>?TDjWa zep149M$&QdYhG|E*y7!~i0L@X%;{eSxHh}RV~s724%>mulYX~mZv^ne_FE$%e^b#{ z$lf`knhysyDFGB{3<6zzWf67&=`p}A5kHWm&R&FMT$ z5zyMwiV|n0;sDvj#2Vk0YC%ddE#n^(1iv!Ljt)N#|1RjCo8uqS-@wK{R&Wb7nfsi* zhHzn&mA0&Ehbm=^e<&K;=p(4UuYO2e8$z__%#%d+fUK|P3=ZGnqkWllJ|vhR`$T+Z z;}lQN9M;y8NhT&1d%?G=_JI&A*|lj!{vlT@ruSudGpIH-;E6QvYU6~kuVR-n_ok5u zC5PEB%~N3%^b_H0xXILLIr-!V9o+O{uE?iW;GdXCYR#MHorfiC?N)K1xZmI%LU%B+ z4m{R36L}#-nKX^VD7}G}N6A4$#M(H9a3bcG(Zz_6Wwy#p&TwAmcIK+-Qmt4iRj6Wm zLHX0*w*I!F&tkOm7<%S6eO%+!jq<8aL*;x$jjQs8_mMrg(ksNusqrcd+7_ zNmj>x7lG4pdKzltp>)iqtW{#Qs@XxLsj+jC*7~M~+3)AC^W*9M1Bh@)9~mmxuCdd= zcOPfkjz?FMTYDK&5bZ^o4(~OXL>E(8+)BVmR^BZ?xrQm^3#3EJ}TNNU*=(_H6g*i~hq1k>`8nh06&($lqtV(uX+O&0jYr z)-5yuapv~Ip}hwo<@7AjqpydvJT^E-y< z)F#CG0$8U8U|LZh_}=w#c7ZYRsp^dwcvZ@ZafS|-0xSq@|=&Qh*gB0 z??4X4{wTxQanh6dN`jtOeh#&xgOh zjn}eeCPf6Uh9mLL4a|#?A+V<=m-h|TDOA7^jtDYImpMqf(g_o0f7g)i**Slv#pF%{ z{(K_VLWQ(*+1n8k!s#R@Na~vIJbVbvC2fci3t4@wGU?=TC-5JjBi#DQQ1sut)D@ip9sCG{m||Qy`Btm!VBiIVIn!6&kD??J9K8|(jLqIDq|gQX`Am+1Q3Fk=~Y^s zf@{ljS^_la!}eX7PyBMUh7%7FmfIt~x8)ap%}gO0;;aI3yHZe!(a{E<7g0K=@#A$_c`wH8W?v*O z)3A*#-|Cfp#h<`Po^gW*?ITL-{kyLC(WKce@5_*1$6C$;-)*O>`NCfGjE%rWdRc38 zUR6M!afr-+?Ih63l}iEI~dZRowJ8Se5I;qxy>AAHU~tZ{b_%K1P)m6jc{o6zBN z!}T-mtccylQsLIni#EI*^bX#X5?^G`$C9eU^v{(KLdQvF^4S`Gbyb_kTS_~%@DA*U zk(Ofv{d~TsVVaZl#X1ZU1@({VFwwkfw9+9^Ky=zIOYkC*7hyJ8mMIy}wP#~KK0{|4 zw_E1TO{P?q@FCg>){{kgyM9GHg@XRlE-c-PBu;J$_r{})1Nm(%(7N({+HkdKeOR*L z#|n7~ksQeWprG$O7|f&8Z}!4&JUjBNN-lAp`fa_)=F-bK72JOS#fZI$mw&^2IrT;@ z+RIiRpA>xZ_z=~*dHo(V+mo2(BetT})%EJ2(K6P$rk+Je#>|p9&nf50Wm*}ai1Eus zBkj!;=I{6Eu2hY2!oQgjma4qbZ^ft^aACa}+XXhAJOI0c$V!p;5`}goI<g&YokZ*`Fd5F@PZb6kJ8=3(;S+Cr9+hRU;=6KK|GIwXF8!usPeUuoWIPD} z^j_2e6z7X;p}^t?Z`FMm06BvUliDb`cCm#+f2W(ee_KUqY|p3ixG|9U?Z&FDQGCNf z=p|HzZ{X;a$J-I`$>(e(|Ddewm-v(*ml^Y5Qi*UQ)$TJ|TjR0C)<-$l83%Kxdr+Q9 zB>g5j8zJEZg^-WsB~#O~7S@a5)-Ob`uzXs&vSw9igS*)^u7reWJku0YjCtz!H#W_? z@1f?OIRJs+&QmDWi~e9Fn^5o5V5SmBDfzgJ(<(oCA&FtPB`tyu+teD{tg++{-DL1czkbzsxSUp|!}be^Lg$Gj zFvjK3u>pqvtZ+irXeQ!v%&&QeG~D7#7`sg`7Vf#4OwTA_#N6!(f2W3It#K>{O+SCVy_zF}u^h^8^SoMl*K+wN;k;~QV(`ui zpPZyg15i+3va70*5vt}XVa*Mb`P=twcFY#fu}>SnU><&#zYZPXVl@)tUNN0#>qd0D zelk_am*lcrZ%CNB6R0Ywr)s+yo9M^JRxnSXj)Xt9XSbvjVNP`f_7qzr7gK2RU>&Ec zv5h2u<2EV1fsrpn6Z(+(5+aemmYXz`(@g`x*9#dG8E*9U*6Yaqwu(wFM+3mqANmXD z&q~3^Y62fPV9%eWd~R(Xw7&*l*kt??N;>s}xm=he^9_3q1+T}PhogBl!*kpszR@lG z2heZ-T_7b0%jK543Kf;p_0KkL(-l-@?&S`8R=OEW73u7BW8uJ?^*vD2)Tldvi7Z$&d?WlH<=`wC6WG8wxoIpAO)UIaU%_YX<#+@73g5`Bv5D3 zf5UDL^g4Tc$oT3BIWe6Erqta{kX+ot%z|QbQcesXOH>1SI7eBwkxG%>Iyz5O`{THD zRyoAcJK?G&kK0k&h}Kc_^}xwxsLsAKpA5GYHFlx(Pe2;fV>;alnfn=3w}8%rd*R6^ zhAUW~fp*H((Zal|@X0J6N^e+V2|a<@aM$2vFds#II*6&ryQj{L+7weVPT*n8m%zlc z`X9iYb$m7{@7Q;`z*nrC+41|I_t&ddxv|yP=IB?Q!CuDk*!u`G_xCNQx0*&DbqL9d zKHqMrODz3mGd;vd1!NLG^G$>4)0%2sW!2EOGAYC($Kb|aLT!K31uyftA0H(0Tt-ib zQZN%d%|*YzHJMQV{%_~hPII~C0}thE7l6@rrA%C@EbfTR|p83{)9>v^Z+`o`n!(n1tEOKy%W1k+yZ%1UgPmsZh5vi|Hcldv2{}#itQQrknFX;p4HD z`n^Pj#>YDztwAuYNgb&ABJ{YF| zWLVQko}M<=NgMmwy-bdRi`_C@e)6dc{TrDGQpm=|vp!Z(IQphaY49(P zW(kd$&YwUYH#-a_ykOWa5O$43R6v^oWzp_t0>Ugi7$W+~P>awn+g48@xW17uK_aWr z;7u0z^p9URqOo!hOkSNLBbllT!MX`V`7R58i@q;t!Wl@dQSVrCa*->?yTQ+Pw>7nY z{$`C_Dd*_a*Wxtf=qVE4`IQ!=ru{ds=+fwHt$Oq`P|woqa9Vn^5Y`dt(L748>7CkXr&^|_*hUQ9^JgGHdL&NWpUeY&1nnZz z@Ow@N(P70Rl^ltJ=F4M^h5<{$C#%;&%gdgQW2fZfTP0m9=0(q?iDZ6$xiN9cAfFX? zQTeHeM}iaQ%p|lwEg%}GcM_$ZJGe4lq+`Hj!FdnAI48-rl~cu#DkS{YP@qa0pL3g_ zsg^P9R`T5IBTU=~sig{z7nLf}fP&OBc&vwifmrZ0^#Py)+_bKKhN>ofh-Fhp#!3s9 z{@jRuXZ=tv>9%jjUOlS!SrcE@5{+cz1%Viz-Kq%SKBS;zS^FgzxF8W6m!Qn4*KP2Y zq*_A_t@674furT9U|FuwXl|h-i7snSEaL?7?K3sFEhzzpg(@V{&x7eC_R8l&c>#-FHW{l-qEc;Q%X8l$7?HU`ph%bD zaPSZxbP(`>Yc+y%9~n8%PD?Wo*M7m{=oR8!9PW)qzYCd}BW-X;ehyJg-^N0C)pWCo z`=8#58V#WodscnHFVx^X?4POH!;aTg@ZPeu7ogaOTyJPP>Ipe@@BIfzEp~eOXSEMs zd@|Bcl?$xfx|Owbqa%RC1Eu)RE=rY`pTE$T!KL%86No)OayAMZw~lL_lzUTO#=338 zt?DYxs8&ks*2<7|=Dn}+EMyfS>Qme~Z;pwq4K~jXxB&?~0IW8RbgVt8&7~b@B z5u97UpD$ty_dc9BLj8W^o1?A9Oq(zP2rD7GtUA@lDAYHL%9cFK1G$g;hBQt_Sj@-? zfsSNi+Q+87^cl6Bsz8PzjZ5gPo$X;MBO10X^7=mmd?SF&^| z_qV)En8kaiMsD9)StZ!scp%mYDC*+p$EGTP@3Hq`QKC{-#Vg+HIrF_^;VLR5E%^D~-HA#L9f~l-rVY={T9=k_@&tPBOk% zIL)$M#zMy|X3%_7ht#`2exFd->mJM5myun5RmroED(%6wZ6TnOF#I12!U|1u-M)IA zmK!-cJ-0PChY0{KhVrpA7%}qwb7hTkr>W;XhZE2R8{a6c|{Q>Qv ziCB3jcecBO$&{R$d;16=5eYa>`DS`>0VYTQ1@S!E(f|vL6;rD2DW;#zxRXuYKRZbL zSO11y`nFe%H8F5?-8Aq>+vuE7C7EW&feY@fuD5y@Gsm4MpohX!u@=Vi4J_1c*aul=iCn|osz=M^ET zK}0wb!jOO9I@pp6qW)FXXa+MPa7BjDpKJ4qvvXe?FP+jj=yoa5PBMATOTxc$? zn@EEV(zi`E3>1^|2xT-Tq(OcA6tiG4&kHcX*aJ!JNC@kHI@`CEkbj?>2h4u;yj$4V zZ+E$t{ccr7%XJf1D`%I1^<{JN1a< z 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ΫsSQ}H6K|ITd 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 literal 0 HcmV?d00001 diff --git a/index.htm b/index.htm index d8efbc78..32f935fb 100644 --- a/index.htm +++ b/index.htm @@ -12,6 +12,7 @@ + diff --git a/js/app.js b/js/app.js index ac229a67..ee39ee82 100644 --- a/js/app.js +++ b/js/app.js @@ -1,6 +1,6 @@ requirejs.config({ - "baseUrl": "js", // user build_js files, change to "js" for un-compressed source + "baseUrl": "build_js", // user build_js files, change to "js" for un-compressed source "paths": { //"lib": "lib", // "app": "app", @@ -11,7 +11,8 @@ requirejs.config({ "bootstrap": "lib/bootstrap", "text": "lib/requirejs/text", "templates": "../templates", - "jsPlumb": "lib/jsPlumb-1.6.4-min" + "jsPlumb": "lib/jsPlumb-1.6.4-min", + "customScrollbar": "lib/jquery.mCustomScrollbar.concat.min" }, shim: { "bootstrap": { @@ -20,6 +21,9 @@ requirejs.config({ "jqueryUI": { export:"$", deps: ["jquery"] + }, + "customScrollbar": { + deps: ["jquery"] } } }); diff --git a/js/app/main.js b/js/app/main.js index 8b0e0ce3..26e7d5be 100644 --- a/js/app/main.js +++ b/js/app/main.js @@ -1,31 +1,26 @@ -define(["jquery", "app/render", "app/ccp", "app/map"], function($, Render, CCP, Map) { +define(["jquery", "app/render", "app/ccp", "app/module_map", "customScrollbar"], function($, Render, CCP) { "use strict"; var config = { - mapModuleId: 'pf-map-module', - mapTabBarId: 'pf-map-tabs', - mapTabIdPrefix: 'pf-map-tab-' + mapModuleId: 'pf-map-module' }; $(function() { - //$('body').alpha().beta(); CCP.requestTrust(); - - - // Map init options var mapData =[{ map: {}, config: { - name: 'WH Test', + name: 'Polaris', id: 1, scope: 'wormhole', - icon: 'fa-desktop' + icon: 'fa-desktop', + type: 'alliance' // global, alliance, private }, data: { systems: [ @@ -84,10 +79,11 @@ define(["jquery", "app/render", "app/ccp", "app/map"], function($, Render, CCP, },{ map: {}, config: { - name: 'K-Space Test', + name: 'Providence', id: 2, scope: 'wormhole', - icon: 'fa-bookmark' + icon: 'fa-bookmark', + type: 'global' }, data: { systems: [ @@ -119,56 +115,76 @@ define(["jquery", "app/render", "app/ccp", "app/map"], function($, Render, CCP, type: 'wh' }] } - }]; + }, + { + map: {}, + config: { + name: 'Exodus 4D', + id: 3, + scope: 'wormhole', + icon: 'fa-cube', + type: 'private' + }, + data: { + systems: [], + connections: [] + } + }]; - - // load map navigation Bar and init map ========================================== - - var moduleConfig = { - name: 'modules/tabs', - position: $('#' + config.mapModuleId), - link: 'prepend', - functions: { - after: function(){ - // load first map i in first tab content container - var firstTabContentElement = $("div[data-map-tabs='" + config.mapTabBarId + "'] div:first-child"); - - firstTabContentElement.loadMap(mapData[0]); - - // load new map right after tab-change - $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { - var mapIndex = $(e.target).attr('data-map-index'); - var mapId = mapData[mapIndex].config.id; - $('#' + config.mapTabIdPrefix + mapId).loadMap(mapData[mapIndex]); - }); + var userData = [ + { + config: { // map config + id: 1 // map id + }, + data: { + systems:[ // systems in map + { + id: 4, // system id + user: [ + { + name: 'Exodus 4D', + ship: 'Legion', + status: 'corp' + } + ] + }, + { + id: 5, // system id + user: [ + { + name: 'Faye Fantastic', + ship: 'Armageddon', + status: 'ally' + },{ + name: 'Sibasomos', + ship: 'Proteus', + status: 'corp' + },{ + name: 'Xtrah gfdfgdfgfd', + ship: 'Pod', + status: 'ally' + } + ] + } + ] } } - }; + ]; - var moduleData = { - id: config.mapTabBarId, - tabs: [] - }; + // load map module ========================================== + $('#' + config.mapModuleId).loadMapModule(mapData); - // add new tab data for each map - $.each(mapData, function(i, data){ + // update map module ======================================== + setTimeout( + function() { + $('#' + config.mapModuleId).updateMapModule(userData); - var active = false; - if(i === 0){ - active = true; - } + console.log('update map done'); + }, 1000); - moduleData.tabs.push({ - id: data.config.id, - index: i, - name: data.config.name, - icon: data.config.icon, - active: active - }); - }); - - Render.showModule(moduleConfig, moduleData); }); + + }); \ No newline at end of file diff --git a/js/app/contextmenu.js b/js/app/map/contextmenu.js similarity index 100% rename from js/app/contextmenu.js rename to js/app/map/contextmenu.js diff --git a/js/app/map.js b/js/app/map/map.js similarity index 80% rename from js/app/map.js rename to js/app/map/map.js index 767cae43..d607138f 100644 --- a/js/app/map.js +++ b/js/app/map/map.js @@ -1,4 +1,4 @@ -define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Render) { +define(["jquery", "app/render", "jsPlumb", "app/map/contextmenu"], function($, Render) { "use strict"; @@ -11,13 +11,17 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende y: 0 }, + mapWrapperClass: 'pf-map-wrapper', // wrapper div (scrollable) mapClass: 'pf-map', // class for all maps mapIdPrefix: 'pf-map-', systemIdPrefix: 'pf-system-', // id prefix for a system systemClass: 'pf-system', systemActiveClass: 'pf-system-active', systemHeadClass: 'pf-system-head', - systemBody: 'pf-system-body', + systemBodyClass: 'pf-system-body', + systemBodyItemClass: 'pf-system-body-item', + systemBodyItemStatusClass: 'pf-user-status', + systemBodyRightClass: 'pf-system-body-right', dynamicElementWrapperId: 'pf-dialog-wrapper', // wrapper div for dynamic content (dialoges, context-menus,...) // endpoint classes @@ -73,7 +77,19 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende class: 'pf-system-status-unscanned', label: 'unscanned' } + }, + + // user status + userStatus: { + 'corp': { + class: 'pf-user-status-corp' + }, + 'ally': { + class: 'pf-user-status-ally' + } } + + }; // active jsPlumb instances currently running @@ -182,7 +198,7 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende cssClass: 'pf-map-connection-frig' } } - } + }; @@ -247,6 +263,11 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende return secClass; }; + /** + * get status class for a system + * @param status + * @returns {string} + */ var getStatusClassForSystem = function(status){ var statusClass = ''; @@ -258,6 +279,84 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende return statusClass; }; + /** + * get status class for a user + * @param status + * @returns {string} + */ + var getStatusClassForUser = function(status){ + + var statusClass = ''; + + if(config.userStatus[status]){ + statusClass = config.userStatus[status].class; + } + + return statusClass; + }; + + /** + * updates a system with current information + * @param system + * @param data + */ + var updateSystem = function(system, data){ + + // find system body + var systemBody = $( $(system).find('.' + config.systemBodyClass) ); + + // remove tooltip + $(system).removeAttr('title'); + + // remove all content + systemBody.empty(); + + // add user information + if(data.user){ + + var userCounter = 0; + + $.each(data.user, function(i, userData){ + + userCounter++; + + var statusClass = getStatusClassForUser(userData.status); + var userName = userData.name; + if(userName.length > 7){ + // userName = userName.substr(0,7) + '...'; + } + + + var item = $('
', { + class: config.systemBodyItemClass + }).append( + $('
  • ', { + class: ['fa', 'fa-circle', config.systemBodyItemStatusClass, statusClass].join(' ') + }) + ).append( + $('', { + text: ' ' + userName + }) + ).append( + $('', { + text: userData.ship, + class: config.systemBodyRightClass + }) + ); + + systemBody.append(item); + }); + + // show active user tooltip + $(system).attr('title', userCounter); + $(system).attr('data-placement', 'top'); + $(system).attr('data-toggle', 'tooltip'); + $(system).tooltip('show'); + } + + + }; + /** * get a new system by data object * @param data @@ -282,23 +381,28 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende class: config.systemHeadClass, text: data.name }).append( - // System effect color - $('', { - class: ['fa fa-square ', config.systemEffect, effectClass].join(' ') - }) - ).prepend( - $('', { - class: [config.systemSec, secClass].join(' '), - text: data.security - }) - ) + // System effect color + $('', { + class: ['fa fa-square ', config.systemEffect, effectClass].join(' ') + }) + ).prepend( + $('', { + class: [config.systemSec, secClass].join(' '), + text: data.security + }) + ) - ).append( + ).append( // system body $('
    ', { - class: config.systemBody - }) - ).css({ "left": data.position.x + "px", 'top': data.position.y + 'px' }); + class: config.systemBodyClass + }).append( + $('
    ', { + class: config.systemBodyInnerClass + }) + + ) + ).css({ "left": data.position.x + "px", 'top': data.position.y + 'px' }); system.attr('data-id', data.id); @@ -313,13 +417,13 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende // create map body var mapWrapper = $('
    ', { - class: 'pf-map-wrapper' + class: config.mapWrapperClass }); var mapContainer = $('
    ', { id: config.mapIdPrefix + mapConfig.config.id, class: config.mapClass - }); + }).attr('data-mapid', mapConfig.config.id); mapWrapper.append(mapContainer); @@ -333,6 +437,7 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende // draw a system to a map drawSystem(mapConfig.map, data); }); + }; /** @@ -400,7 +505,7 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende // make source makeSource(map, newSystem); - // Context menu on for Systems + // set system observer setSystemObserver(map, newSystem); // connect new system (if connection data is given) @@ -414,8 +519,8 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende type: 'wh' }; drawConnection(map, connectionData); - }) - }; + }); + } }; @@ -480,12 +585,12 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende $.each(systems, function(i, system){ // get connections where system is source connections = connections.concat( map.getConnections({source: system}) ); - // getconnections where system is target + // get connections where system is target connections = connections.concat( map.getConnections({target: system}) ); }); return connections; - } + }; /** * get all direct connections between two given systems @@ -583,19 +688,92 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende * set up contextmenu for all Systems within a given map * @param endpoints */ - var setSystemObserver = function(map, systems){ + var setSystemObserver = function(map, system){ - var mapContainer = $(map.getContainer()); + var systemBody = $( $(system).find('.' + config.systemBodyClass) ); + + // init system body expand + $(system).hover(function(e){ + // hover in + var hoverSystem = this; + + systemBody.animate( + { + height: '100px' + }, + { + queue:false, + duration: 100, + step: function(){ + // repaint connections of current system + map.repaint( hoverSystem ); + } + } + ); + }, function(e){ + // hover out + var hoverSystem = this; + systemBody.animate( + { height: '16px' }, + { + queue:false, + duration: 100, + step: function(){ + // repaint connections of current system + map.repaint( hoverSystem ); + } + } + ); + }); + + + // init system body item expand + systemBody.hover(function(){ + $(this).animate( + { + width: '150px' + }, + { + queue:false, + duration: 100, + step: function(){ + // repaint connections of current system + map.repaint( system ); + }, + complete: function(){ + $(this).find('.' + config.systemBodyRightClass).show(); + } + } + ); + + }, function(){ + $(this).animate( + { + width: '80px' + }, + { + queue:false, + duration: 100, + step: function(){ console.log(system) + // repaint connections of current system + map.repaint( system ); + }, + start: function(){ + $(this).find('.' + config.systemBodyRightClass).hide(); + } + } + ); + }); // trigger context menu - $(mapContainer).find(systems).on('contextmenu', function(e){ + $(system).on('contextmenu', function(e){ $(e.target).trigger('pf:openContextMenu', [e, this]); e.preventDefault(); return false; }); // init contextmenu - $(systems).contextMenu({ + $(system).contextMenu({ menuSelector: "#" + config.systemContextMenuId, menuSelected: function (params) { @@ -623,7 +801,7 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende 'Cancel': function(){ $(this).dialog('close'); }, - 'Add System': function(){ + 'Add system': function(){ // get form Values var form = $('#' + config.systemDialogId).find('form'); @@ -660,13 +838,12 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende $.each(config.systemStatus, function(status, statusData){ statusData.status = status; systemStatus.push(statusData); - }) + }); var moduleData = { id: config.systemDialogId, titel: 'Add new system', - status: systemStatus, - content: 'system dialog :)' + status: systemStatus }; Render.showModule(moduleConfig, moduleData); @@ -810,6 +987,32 @@ define(["jquery", "app/render", "jsPlumb", "app/contextmenu"], function($, Rende return activeInstances[mapId]; }; + /** + * updates all systems on map with current user Data + * @param userData + */ + $.fn.updateUserData = function(userData){ + + // get all systems + var systems = $(this).find('.' + config.systemClass); + + $.each(systems, function(i, system){ + // get user Data for System + var systemId = parseInt( $(system).attr('data-id') ); + + var data = {}; + $.each(userData.data.systems, function(j, systemData){ + if(systemId === systemData.id){ + data = systemData; + } + }); + + updateSystem(system, data); + + }); + + }; + /** * load system map into element * @param mapConfig diff --git a/js/app/module_map.js b/js/app/module_map.js new file mode 100644 index 00000000..9496788e --- /dev/null +++ b/js/app/module_map.js @@ -0,0 +1,272 @@ +define(["jquery", "app/render", "app/map/map", "customScrollbar"], function($, Render) { + + "use strict"; + + var config = { + dynamicElementWrapperId: 'pf-dialog-wrapper', // parent Element for dynamic content (dialoges,..) + mapTabBarId: 'pf-map-tabs', + mapTabIdPrefix: 'pf-map-tab-', + mapWrapperClass: 'pf-map-wrapper', // scrollable + mapClass: 'pf-map', // class for each map + newMapDialogId: 'pf-map-new-dialog', + + // map types + mapTypes: [ + {type: 'default', label: 'default', class: 'pf-map-type-default'}, + {type: 'global', label: 'global', class: 'pf-map-type-global'}, + {type: 'alliance', label: 'alliance', class: 'pf-map-type-alliance'}, + {type: 'private', label: 'private', class: 'pf-map-type-private'} + ], + + // map scopes + mapScopes: [ + {scope: 'wormhole', label: 'W-Space'} + ], + + mapIcons: [ + {class: 'fa-desktop', label: 'desktop'}, + {class: 'fa-bookmark', label: 'bookmark'}, + {class: 'fa-cube', label: 'cube'}, + {class: 'fa-warning', label: 'warning'}, + {class: 'fa-plane', label: 'plane'}, + {class: 'fa-rocket', label: 'rocket'} + ] + + + }; + + /** + * get map type class for a type + * @param type + * @returns {string} + */ + var getMapTypeClassForType = function(type){ + + var typeClass= ''; + + $.each(config.mapTypes, function(i, typeData){ + if(typeData.type === type){ + typeClass = typeData.class; + } + }); + + return typeClass; + }; + + /** + * shows the add new map dialog + */ + var showNewMapDialog = function(){ + + // confirm dialog + var moduleConfig = { + name: 'modules/map_dialog', + position: $('#' + config.dynamicElementWrapperId), + link: 'after', + functions: { + after: function(){ + $( "#" + config.newMapDialogId).dialog({ + modal: true, + resizable: false, + buttons: { + 'Cancel': function(){ + $(this).dialog('close'); + }, + 'Add map': function(){ + + // get form Values + var form = $('#' + config.newMapDialogId).find('form'); + + var newMapData = {}; + + $.each(form.serializeArray(), function(i, field) { + newMapData[field.name] = field.value; + }); + + saveMapData(newMapData); + + $(this).dialog('close'); + } + } + }); + } + } + }; + + var moduleData = { + id: config.newMapDialogId, + title: 'Add new map', + scope: config.mapScopes, + type: config.mapTypes, + icon: config.mapIcons + }; + + Render.showModule(moduleConfig, moduleData); + }; + + var saveMapData = function(mapData){ + + // TODO: save map + console.log(mapData); + }; + + /** + * get all maps for a module + * @param mapModule + * @returns {*} + */ + var getMaps = function(mapModule){ + + var maps = $(mapModule).find('.' + config.mapClass); + + return maps; + }; + + /** + * updates complete map module (all maps) + * @param userData + */ + $.fn.updateMapModule = function(userData){ + + // get all active map elements for module + var mapElements = getMaps(this); + + // get map Data + $.each(mapElements, function(i, mapElement){ + + var mapId = parseInt( $(mapElement).attr('data-mapid') ); + + var mapUserData = {}; + // get user data for each active map + $.each(userData, function(j, tempMapData){ + + if(tempMapData.config.id === mapId){ + // map userdata found + mapUserData = tempMapData; + } + }); + + // update map + $(mapElement).updateUserData(mapUserData); + }); + + + }; + + /** + * load map module into element (all maps) + * @param mapData + */ + $.fn.loadMapModule = function(mapData){ + + var moduleConfig = { + name: 'modules/tabs', + position: $(this), + link: 'prepend', + functions: { + after: function(){ + // load first map i in first tab content container + var firstTabContentElement = $("div[data-map-tabs='" + config.mapTabBarId + "'] div:first-child"); + + loadMap(firstTabContentElement, mapData[0]); + + // check for "new map" action before tap-change + $('#' + config.mapTabBarId).find('a[data-toggle="tab"]').on('show.bs.tab', function (e) { + + var mapIndex = parseInt( $(e.target).attr('data-map-index') ); + + if(mapIndex === -1){ + // add new Tab selected + showNewMapDialog(); + e.preventDefault(); + } + + + }); + + // load new map right after tab-change + $('#' + config.mapTabBarId).find('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { + + var mapIndex = parseInt( $(e.target).attr('data-map-index') ); + + if(mapIndex > 0){ + var mapId = mapData[mapIndex].config.id; + var currentTabContentElement = $('#' + config.mapTabIdPrefix + mapId); + + loadMap(currentTabContentElement, mapData[mapIndex]); + } + + }); + + + + } + } + }; + + var moduleData = { + id: config.mapTabBarId, + tabs: [] + }; + + // add new tab data for each map + $.each(mapData, function(i, data){ + + var active = false; + if(i === 0){ + active = true; + } + + moduleData.tabs.push({ + id: data.config.id, + index: i, + name: data.config.name, + icon: data.config.icon, + tabClass: getMapTypeClassForType(data.config.type), + active: active + }); + }); + + // add new tab + moduleData.tabs.push({ + id: 0, + index: -1, + name: 'add', + icon: 'fa-plus', + tabClass: getMapTypeClassForType('default'), + pullRight: true + }); + + Render.showModule(moduleConfig, moduleData); + }; + + /** + * load mapData into a container and init custom scrollbar + * @param container + * @param mapData + */ + var loadMap = function(container, mapData){ + + $(container).loadMap(mapData); + + // init custom scrollbars + var scrollableElement = $(container).find('.' + config.mapWrapperClass); + initCutomScrollbar( scrollableElement ); + + }; + + /** + * init a custom scrollbar + * @param scrollableElement + */ + var initCutomScrollbar = function( scrollableElement ){ + + // init custom scrollbars + $(scrollableElement).mCustomScrollbar({ + axis:"x", + theme:"light-thick" + }); + + }; + +}); \ No newline at end of file diff --git a/js/lib/jquery.mCustomScrollbar.concat.min.js b/js/lib/jquery.mCustomScrollbar.concat.min.js new file mode 100644 index 00000000..bf69039a --- /dev/null +++ b/js/lib/jquery.mCustomScrollbar.concat.min.js @@ -0,0 +1,5 @@ +/* == jquery mousewheel plugin == Version: 3.1.11, License: MIT License (MIT) */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.11",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b)["offsetParent"in a.fn?"offsetParent":"parent"]();return c.length||(c=a("body")),parseInt(c.css("fontSize"),10)},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); +/* == malihu jquery custom scrollbar plugin == Version: 3.0.5, License: MIT License (MIT) */ +!function(e,t,o){!function(t){var a="function"==typeof define&&define.amd,n="https:"==o.location.protocol?"https:":"http:",r="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.11/jquery.mousewheel.min.js";a||e.event.special.mousewheel||e("head").append(decodeURI("%3Cscript src="+n+"//"+r+"%3E%3C/script%3E")),t()}(function(){var a="mCustomScrollbar",n="mCS",r=".mCustomScrollbar",i={setWidth:!1,setHeight:!1,setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:!0,autoHideScrollbar:!1,autoExpandScrollbar:!1,alwaysShowScrollbar:0,snapAmount:null,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1,disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{enable:!1,scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:!0,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,advanced:{autoExpandHorizontalScroll:!1,autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:!0,updateOnImageLoad:!0,updateOnSelectorChange:!1,releaseDraggableSelectors:!1},theme:"light",callbacks:{onInit:!1,onScrollStart:!1,onScroll:!1,onTotalScroll:!1,onTotalScrollBack:!1,whileScrolling:!1,onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0,onOverflowY:!1,onOverflowX:!1,onOverflowYNone:!1,onOverflowXNone:!1},live:!1,liveSelector:null},l=0,s={},c=function(e){s[e]&&(clearTimeout(s[e]),h._delete.call(null,s[e]))},d=t.attachEvent&&!t.addEventListener?1:0,u=!1,f={init:function(t){var t=e.extend(!0,{},i,t),o=h._selector.call(this);if(t.live){var a=t.liveSelector||this.selector||r,d=e(a);if("off"===t.live)return void c(a);s[a]=setTimeout(function(){d.mCustomScrollbar(t),"once"===t.live&&d.length&&c(a)},500)}else c(a);return t.setWidth=t.set_width?t.set_width:t.setWidth,t.setHeight=t.set_height?t.set_height:t.setHeight,t.axis=t.horizontalScroll?"x":h._findAxis.call(null,t.axis),t.scrollInertia=t.scrollInertia>0&&t.scrollInertia<17?17:t.scrollInertia,"object"!=typeof t.mouseWheel&&1==t.mouseWheel&&(t.mouseWheel={enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1}),t.mouseWheel.scrollAmount=t.mouseWheelPixels?t.mouseWheelPixels:t.mouseWheel.scrollAmount,t.mouseWheel.normalizeDelta=t.advanced.normalizeMouseWheelDelta?t.advanced.normalizeMouseWheelDelta:t.mouseWheel.normalizeDelta,t.scrollButtons.scrollType=h._findScrollButtonsType.call(null,t.scrollButtons.scrollType),h._theme.call(null,t),e(o).each(function(){var o=e(this);if(!o.data(n)){o.data(n,{idx:++l,opt:t,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:o.css("direction"),cbOffsets:null,trigger:null});var a=o.data(n).opt,r=o.data("mcs-axis"),i=o.data("mcs-scrollbar-position"),s=o.data("mcs-theme");r&&(a.axis=r),i&&(a.scrollbarPosition=i),s&&(a.theme=s,h._theme.call(null,a)),h._pluginMarkup.call(this),f.update.call(null,o)}})},update:function(t){var o=t||h._selector.call(this);return e(o).each(function(){var t=e(this);if(t.data(n)){var o=t.data(n),a=o.opt,r=e("#mCSB_"+o.idx+"_container"),i=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")];if(!r.length)return;o.tweenRunning&&h._stop.call(null,t),t.hasClass("mCS_disabled")&&t.removeClass("mCS_disabled"),t.hasClass("mCS_destroyed")&&t.removeClass("mCS_destroyed"),h._maxHeight.call(this),h._expandContentHorizontally.call(this),"y"===a.axis||a.advanced.autoExpandHorizontalScroll||r.css("width",h._contentWidth(r.children())),o.overflowed=h._overflowed.call(this),h._scrollbarVisibility.call(this),a.autoDraggerLength&&h._setDraggerLength.call(this),h._scrollRatio.call(this),h._bindEvents.call(this);var l=[Math.abs(r[0].offsetTop),Math.abs(r[0].offsetLeft)];"x"!==a.axis&&(o.overflowed[0]?i[0].height()>i[0].parent().height()?h._resetContentPosition.call(this):(h._scrollTo.call(this,t,l[0].toString(),{dir:"y",dur:0,overwrite:"none"}),o.contentReset.y=null):(h._resetContentPosition.call(this),"y"===a.axis?h._unbindEvents.call(this):"yx"===a.axis&&o.overflowed[1]&&h._scrollTo.call(this,t,l[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==a.axis&&(o.overflowed[1]?i[1].width()>i[1].parent().width()?h._resetContentPosition.call(this):(h._scrollTo.call(this,t,l[1].toString(),{dir:"x",dur:0,overwrite:"none"}),o.contentReset.x=null):(h._resetContentPosition.call(this),"x"===a.axis?h._unbindEvents.call(this):"yx"===a.axis&&o.overflowed[0]&&h._scrollTo.call(this,t,l[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),h._autoUpdate.call(this)}})},scrollTo:function(t,o){if("undefined"!=typeof t&&null!=t){var a=h._selector.call(this);return e(a).each(function(){var a=e(this);if(a.data(n)){var r=a.data(n),i=r.opt,l={trigger:"external",scrollInertia:i.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},s=e.extend(!0,{},l,o),c=h._arr.call(this,t),d=s.scrollInertia>0&&s.scrollInertia<17?17:s.scrollInertia;c[0]=h._to.call(this,c[0],"y"),c[1]=h._to.call(this,c[1],"x"),s.moveDragger&&(c[0]*=r.scrollRatio.y,c[1]*=r.scrollRatio.x),s.dur=d,setTimeout(function(){null!==c[0]&&"undefined"!=typeof c[0]&&"x"!==i.axis&&r.overflowed[0]&&(s.dir="y",s.overwrite="all",h._scrollTo.call(this,a,c[0].toString(),s)),null!==c[1]&&"undefined"!=typeof c[1]&&"y"!==i.axis&&r.overflowed[1]&&(s.dir="x",s.overwrite="none",h._scrollTo.call(this,a,c[1].toString(),s))},s.timeout)}})}},stop:function(){var t=h._selector.call(this);return e(t).each(function(){var t=e(this);t.data(n)&&h._stop.call(null,t)})},disable:function(t){var o=h._selector.call(this);return e(o).each(function(){var o=e(this);if(o.data(n)){{var a=o.data(n);a.opt}h._autoUpdate.call(this,"remove"),h._unbindEvents.call(this),t&&h._resetContentPosition.call(this),h._scrollbarVisibility.call(this,!0),o.addClass("mCS_disabled")}})},destroy:function(){var t=h._selector.call(this);return e(t).each(function(){var o=e(this);if(o.data(n)){var r=o.data(n),i=r.opt,l=e("#mCSB_"+r.idx),s=e("#mCSB_"+r.idx+"_container"),d=e(".mCSB_"+r.idx+"_scrollbar");i.live&&c(t),h._autoUpdate.call(this,"remove"),h._unbindEvents.call(this),h._resetContentPosition.call(this),o.removeData(n),h._delete.call(null,this.mcs),d.remove(),l.replaceWith(s.contents()),o.removeClass(a+" _"+n+"_"+r.idx+" mCS-autoHide mCS-dir-rtl mCS_no_scrollbar mCS_disabled").addClass("mCS_destroyed")}})}},h={_selector:function(){return"object"!=typeof e(this)||e(this).length<1?r:this},_theme:function(t){var o=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],a=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],n=["minimal","minimal-dark"],r=["minimal","minimal-dark"],i=["minimal","minimal-dark"];t.autoDraggerLength=e.inArray(t.theme,o)>-1?!1:t.autoDraggerLength,t.autoExpandScrollbar=e.inArray(t.theme,a)>-1?!1:t.autoExpandScrollbar,t.scrollButtons.enable=e.inArray(t.theme,n)>-1?!1:t.scrollButtons.enable,t.autoHideScrollbar=e.inArray(t.theme,r)>-1?!0:t.autoHideScrollbar,t.scrollbarPosition=e.inArray(t.theme,i)>-1?"outside":t.scrollbarPosition},_findAxis:function(e){return"yx"===e||"xy"===e||"auto"===e?"yx":"x"===e||"horizontal"===e?"x":"y"},_findScrollButtonsType:function(e){return"stepped"===e||"pixels"===e||"step"===e||"click"===e?"stepped":"stepless"},_pluginMarkup:function(){var t=e(this),o=t.data(n),r=o.opt,i=r.autoExpandScrollbar?" mCSB_scrollTools_onDrag_expand":"",l=["
    ","
    "],s="yx"===r.axis?"mCSB_vertical_horizontal":"x"===r.axis?"mCSB_horizontal":"mCSB_vertical",c="yx"===r.axis?l[0]+l[1]:"x"===r.axis?l[1]:l[0],d="yx"===r.axis?"
    ":"",u=r.autoHideScrollbar?" mCS-autoHide":"",f="x"!==r.axis&&"rtl"===o.langDir?" mCS-dir-rtl":"";r.setWidth&&t.css("width",r.setWidth),r.setHeight&&t.css("height",r.setHeight),r.setLeft="y"!==r.axis&&"rtl"===o.langDir?"989999px":r.setLeft,t.addClass(a+" _"+n+"_"+o.idx+u+f).wrapInner("
    ");var _=e("#mCSB_"+o.idx),m=e("#mCSB_"+o.idx+"_container");"y"===r.axis||r.advanced.autoExpandHorizontalScroll||m.css("width",h._contentWidth(m.children())),"outside"===r.scrollbarPosition?("static"===t.css("position")&&t.css("position","relative"),t.css("overflow","visible"),_.addClass("mCSB_outside").after(c)):(_.addClass("mCSB_inside").append(c),m.wrap(d)),h._scrollButtons.call(this);var p=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")];p[0].css("min-height",p[0].height()),p[1].css("min-width",p[1].width())},_contentWidth:function(t){return Math.max.apply(Math,t.map(function(){return e(this).outerWidth(!0)}).get())},_expandContentHorizontally:function(){var t=e(this),o=t.data(n),a=o.opt,r=e("#mCSB_"+o.idx+"_container");a.advanced.autoExpandHorizontalScroll&&"y"!==a.axis&&r.css({position:"absolute",width:"auto"}).wrap("
    ").css({width:Math.ceil(r[0].getBoundingClientRect().right+.4)-Math.floor(r[0].getBoundingClientRect().left),position:"relative"}).unwrap()},_scrollButtons:function(){var t=e(this),o=t.data(n),a=o.opt,r=e(".mCSB_"+o.idx+"_scrollbar:first"),i=["","","",""],l=["x"===a.axis?i[2]:i[0],"x"===a.axis?i[3]:i[1],i[2],i[3]];a.scrollButtons.enable&&r.prepend(l[0]).append(l[1]).next(".mCSB_scrollTools").prepend(l[2]).append(l[3])},_maxHeight:function(){var t=e(this),o=t.data(n),a=(o.opt,e("#mCSB_"+o.idx)),r=t.css("max-height"),i=-1!==r.indexOf("%"),l=t.css("box-sizing");if("none"!==r){var s=i?t.parent().height()*parseInt(r)/100:parseInt(r);"border-box"===l&&(s-=t.innerHeight()-t.height()+(t.outerHeight()-t.innerHeight())),a.css("max-height",Math.round(s))}},_setDraggerLength:function(){var t=e(this),o=t.data(n),a=e("#mCSB_"+o.idx),r=e("#mCSB_"+o.idx+"_container"),i=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")],l=[a.height()/r.outerHeight(!1),a.width()/r.outerWidth(!1)],s=[parseInt(i[0].css("min-height")),Math.round(l[0]*i[0].parent().height()),parseInt(i[1].css("min-width")),Math.round(l[1]*i[1].parent().width())],c=d&&s[1]a.height(),l>a.width()]},_resetContentPosition:function(){var t=e(this),o=t.data(n),a=o.opt,r=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),l=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")];if(h._stop(t),("x"!==a.axis&&!o.overflowed[0]||"y"===a.axis&&o.overflowed[0])&&(l[0].add(i).css("top",0),h._scrollTo(t,"_resetY")),"y"!==a.axis&&!o.overflowed[1]||"x"===a.axis&&o.overflowed[1]){var s=dx=0;"rtl"===o.langDir&&(s=r.width()-i.outerWidth(!1),dx=Math.abs(s/o.scrollRatio.x)),i.css("left",s),l[1].css("left",dx),h._scrollTo(t,"_resetX")}},_bindEvents:function(){function t(){i=setTimeout(function(){e.event.special.mousewheel?(clearTimeout(i),h._mousewheel.call(o[0])):t()},1e3)}var o=e(this),a=o.data(n),r=a.opt;if(!a.bindEvents){if(h._draggable.call(this),r.contentTouchScroll&&h._contentDraggable.call(this),r.mouseWheel.enable){var i;t()}h._draggerRail.call(this),h._wrapperScroll.call(this),r.advanced.autoScrollOnFocus&&h._focus.call(this),r.scrollButtons.enable&&h._buttons.call(this),r.keyboard.enable&&h._keyboard.call(this),a.bindEvents=!0}},_unbindEvents:function(){var t=e(this),a=t.data(n),r=a.opt,i=n+"_"+a.idx,l=".mCSB_"+a.idx+"_scrollbar",s=e("#mCSB_"+a.idx+",#mCSB_"+a.idx+"_container,#mCSB_"+a.idx+"_container_wrapper,"+l+" .mCSB_draggerContainer,#mCSB_"+a.idx+"_dragger_vertical,#mCSB_"+a.idx+"_dragger_horizontal,"+l+">a"),c=e("#mCSB_"+a.idx+"_container");r.advanced.releaseDraggableSelectors&&s.add(e(r.advanced.releaseDraggableSelectors)),a.bindEvents&&(e(o).unbind("."+i),s.each(function(){e(this).unbind("."+i)}),clearTimeout(t[0]._focusTimeout),h._delete.call(null,t[0]._focusTimeout),clearTimeout(a.sequential.step),h._delete.call(null,a.sequential.step),clearTimeout(c[0].onCompleteTimeout),h._delete.call(null,c[0].onCompleteTimeout),a.bindEvents=!1)},_scrollbarVisibility:function(t){var o=e(this),a=o.data(n),r=a.opt,i=e("#mCSB_"+a.idx+"_container_wrapper"),l=i.length?i:e("#mCSB_"+a.idx+"_container"),s=[e("#mCSB_"+a.idx+"_scrollbar_vertical"),e("#mCSB_"+a.idx+"_scrollbar_horizontal")],c=[s[0].find(".mCSB_dragger"),s[1].find(".mCSB_dragger")];"x"!==r.axis&&(a.overflowed[0]&&!t?(s[0].add(c[0]).add(s[0].children("a")).css("display","block"),l.removeClass("mCS_no_scrollbar_y mCS_y_hidden")):(r.alwaysShowScrollbar?(2!==r.alwaysShowScrollbar&&c[0].add(s[0].children("a")).css("display","none"),l.removeClass("mCS_y_hidden")):(s[0].css("display","none"),l.addClass("mCS_y_hidden")),l.addClass("mCS_no_scrollbar_y"))),"y"!==r.axis&&(a.overflowed[1]&&!t?(s[1].add(c[1]).add(s[1].children("a")).css("display","block"),l.removeClass("mCS_no_scrollbar_x mCS_x_hidden")):(r.alwaysShowScrollbar?(2!==r.alwaysShowScrollbar&&c[1].add(s[1].children("a")).css("display","none"),l.removeClass("mCS_x_hidden")):(s[1].css("display","none"),l.addClass("mCS_x_hidden")),l.addClass("mCS_no_scrollbar_x"))),a.overflowed[0]||a.overflowed[1]?o.removeClass("mCS_no_scrollbar"):o.addClass("mCS_no_scrollbar")},_coordinates:function(e){var t=e.type;switch(t){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return[e.originalEvent.pageY,e.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var o=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a=e.originalEvent.touches.length||e.originalEvent.changedTouches.length;return[o.pageY,o.pageX,a>1];default:return[e.pageY,e.pageX,!1]}},_draggable:function(){function t(e){var t=p.find("iframe");if(t.length){var o=e?"auto":"none";t.css("pointer-events",o)}}function a(e,t,o,a){if(p[0].idleTimer=f.scrollInertia<233?250:0,r.attr("id")===m[1])var n="x",i=(r[0].offsetLeft-t+a)*c.scrollRatio.x;else var n="y",i=(r[0].offsetTop-e+o)*c.scrollRatio.y;h._scrollTo(s,i.toString(),{dir:n,drag:!0})}var r,i,l,s=e(this),c=s.data(n),f=c.opt,_=n+"_"+c.idx,m=["mCSB_"+c.idx+"_dragger_vertical","mCSB_"+c.idx+"_dragger_horizontal"],p=e("#mCSB_"+c.idx+"_container"),g=e("#"+m[0]+",#"+m[1]),v=f.advanced.releaseDraggableSelectors?g.add(e(f.advanced.releaseDraggableSelectors)):g;g.bind("mousedown."+_+" touchstart."+_+" pointerdown."+_+" MSPointerDown."+_,function(a){if(a.stopImmediatePropagation(),a.preventDefault(),h._mouseBtnLeft(a)){u=!0,d&&(o.onselectstart=function(){return!1}),t(!1),h._stop(s),r=e(this);var n=r.offset(),c=h._coordinates(a)[0]-n.top,_=h._coordinates(a)[1]-n.left,m=r.height()+n.top,p=r.width()+n.left;m>c&&c>0&&p>_&&_>0&&(i=c,l=_),h._onDragClasses(r,"active",f.autoExpandScrollbar)}}).bind("touchmove."+_,function(e){e.stopImmediatePropagation(),e.preventDefault();var t=r.offset(),o=h._coordinates(e)[0]-t.top,n=h._coordinates(e)[1]-t.left;a(i,l,o,n)}),e(o).bind("mousemove."+_+" pointermove."+_+" MSPointerMove."+_,function(e){if(r){var t=r.offset(),o=h._coordinates(e)[0]-t.top,n=h._coordinates(e)[1]-t.left;if(i===o)return;a(i,l,o,n)}}).add(v).bind("mouseup."+_+" touchend."+_+" pointerup."+_+" MSPointerUp."+_,function(){r&&(h._onDragClasses(r,"active",f.autoExpandScrollbar),r=null),u=!1,d&&(o.onselectstart=null),t(!0)})},_contentDraggable:function(){function t(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return e>90?t>4?o[0]:o[3]:e>60?t>3?o[3]:o[2]:e>30?t>8?o[1]:t>6?o[0]:t>4?t:o[2]:t>8?t:o[3]}function o(e,t,o,a,n,r){e&&h._scrollTo(g,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:r})}var a,r,i,l,s,c,d,f,_,m,p,g=e(this),v=g.data(n),x=v.opt,S=n+"_"+v.idx,C=e("#mCSB_"+v.idx),b=e("#mCSB_"+v.idx+"_container"),w=[e("#mCSB_"+v.idx+"_dragger_vertical"),e("#mCSB_"+v.idx+"_dragger_horizontal")],y=[],B=[],T=0,M="yx"===x.axis?"none":"all",k=[];b.bind("touchstart."+S+" pointerdown."+S+" MSPointerDown."+S,function(e){if(h._pointerTouch(e)&&!u&&!h._coordinates(e)[2]){var t=b.offset();a=h._coordinates(e)[0]-t.top,r=h._coordinates(e)[1]-t.left,k=[h._coordinates(e)[0],h._coordinates(e)[1]]}}).bind("touchmove."+S+" pointermove."+S+" MSPointerMove."+S,function(e){if(h._pointerTouch(e)&&!u&&!h._coordinates(e)[2]){e.stopImmediatePropagation(),c=h._getTime();var t=C.offset(),n=h._coordinates(e)[0]-t.top,i=h._coordinates(e)[1]-t.left,l="mcsLinearOut";if(y.push(n),B.push(i),k[2]=Math.abs(h._coordinates(e)[0]-k[0]),k[3]=Math.abs(h._coordinates(e)[1]-k[1]),v.overflowed[0])var s=w[0].parent().height()-w[0].height(),d=a-n>0&&n-a>-(s*v.scrollRatio.y)&&(2*k[3]0&&i-r>-(f*v.scrollRatio.x)&&(2*k[2]30)){_=1e3/(d-s);var g="mcsEaseOut",S=2.5>_,w=S?[y[y.length-2],B[B.length-2]]:[0,0];f=S?[n-w[0],r-w[1]]:[n-i,r-l];var T=[Math.abs(f[0]),Math.abs(f[1])];_=S?[Math.abs(f[0]/4),Math.abs(f[1]/4)]:[_,_];var k=[Math.abs(b[0].offsetTop)-f[0]*t(T[0]/_[0],_[0]),Math.abs(b[0].offsetLeft)-f[1]*t(T[1]/_[1],_[1])];m="yx"===x.axis?[k[0],k[1]]:"x"===x.axis?[null,k[1]]:[k[0],null],p=[4*T[0]+x.scrollInertia,4*T[1]+x.scrollInertia];var O=parseInt(x.contentTouchScroll)||0;m[0]=T[0]>O?m[0]:0,m[1]=T[1]>O?m[1]:0,v.overflowed[0]&&o(m[0],p[0],g,"y",M,!1),v.overflowed[1]&&o(m[1],p[1],g,"x",M,!1)}}})},_mousewheel:function(){function t(e){var t=null;try{var o=e.contentDocument||e.contentWindow.document;t=o.body.innerHTML}catch(a){}return null!==t}var o=e(this),a=o.data(n);if(a){var r=a.opt,i=n+"_"+a.idx,l=e("#mCSB_"+a.idx),s=[e("#mCSB_"+a.idx+"_dragger_vertical"),e("#mCSB_"+a.idx+"_dragger_horizontal")],c=e("#mCSB_"+a.idx+"_container").find("iframe"),u=l;c.length&&c.each(function(){var o=this;t(o)&&(u=u.add(e(o).contents().find("body")))}),u.bind("mousewheel."+i,function(t,n){if(h._stop(o),!h._disableMousewheel(o,t.target)){var i="auto"!==r.mouseWheel.deltaFactor?parseInt(r.mouseWheel.deltaFactor):d&&t.deltaFactor<100?100:t.deltaFactor||100;if("x"===r.axis||"x"===r.mouseWheel.axis)var c="x",u=[Math.round(i*a.scrollRatio.x),parseInt(r.mouseWheel.scrollAmount)],f="auto"!==r.mouseWheel.scrollAmount?u[1]:u[0]>=l.width()?.9*l.width():u[0],_=Math.abs(e("#mCSB_"+a.idx+"_container")[0].offsetLeft),m=s[1][0].offsetLeft,p=s[1].parent().width()-s[1].width(),g=t.deltaX||t.deltaY||n;else var c="y",u=[Math.round(i*a.scrollRatio.y),parseInt(r.mouseWheel.scrollAmount)],f="auto"!==r.mouseWheel.scrollAmount?u[1]:u[0]>=l.height()?.9*l.height():u[0],_=Math.abs(e("#mCSB_"+a.idx+"_container")[0].offsetTop),m=s[0][0].offsetTop,p=s[0].parent().height()-s[0].height(),g=t.deltaY||n;"y"===c&&!a.overflowed[0]||"x"===c&&!a.overflowed[1]||(r.mouseWheel.invert&&(g=-g),r.mouseWheel.normalizeDelta&&(g=0>g?-1:1),(g>0&&0!==m||0>g&&m!==p||r.mouseWheel.preventDefault)&&(t.stopImmediatePropagation(),t.preventDefault()),h._scrollTo(o,(_-g*f).toString(),{dir:c}))}})}},_disableMousewheel:function(t,o){var a=o.nodeName.toLowerCase(),r=t.data(n).opt.mouseWheel.disableOver,i=["select","textarea"];return e.inArray(a,r)>-1&&!(e.inArray(a,i)>-1&&!e(o).is(":focus"))},_draggerRail:function(){var t=e(this),o=t.data(n),a=n+"_"+o.idx,r=e("#mCSB_"+o.idx+"_container"),i=r.parent(),l=e(".mCSB_"+o.idx+"_scrollbar .mCSB_draggerContainer");l.bind("touchstart."+a+" pointerdown."+a+" MSPointerDown."+a,function(){u=!0}).bind("touchend."+a+" pointerup."+a+" MSPointerUp."+a,function(){u=!1}).bind("click."+a,function(a){if(e(a.target).hasClass("mCSB_draggerContainer")||e(a.target).hasClass("mCSB_draggerRail")){h._stop(t);var n=e(this),l=n.find(".mCSB_dragger");if(n.parent(".mCSB_scrollTools_horizontal").length>0){if(!o.overflowed[1])return;var s="x",c=a.pageX>l.offset().left?-1:1,d=Math.abs(r[0].offsetLeft)-.9*c*i.width()}else{if(!o.overflowed[0])return;var s="y",c=a.pageY>l.offset().top?-1:1,d=Math.abs(r[0].offsetTop)-.9*c*i.height()}h._scrollTo(t,d.toString(),{dir:s,scrollEasing:"mcsEaseInOut"})}})},_focus:function(){var t=e(this),a=t.data(n),r=a.opt,i=n+"_"+a.idx,l=e("#mCSB_"+a.idx+"_container"),s=l.parent();l.bind("focusin."+i,function(){var a=e(o.activeElement),n=l.find(".mCustomScrollBox").length,i=0;a.is(r.advanced.autoScrollOnFocus)&&(h._stop(t),clearTimeout(t[0]._focusTimeout),t[0]._focusTimer=n?(i+17)*n:0,t[0]._focusTimeout=setTimeout(function(){var e=[a.offset().top-l.offset().top,a.offset().left-l.offset().left],o=[l[0].offsetTop,l[0].offsetLeft],n=[o[0]+e[0]>=0&&o[0]+e[0]=0&&o[0]+e[1]a");s.bind("mousedown."+i+" touchstart."+i+" pointerdown."+i+" MSPointerDown."+i+" mouseup."+i+" touchend."+i+" pointerup."+i+" MSPointerUp."+i+" mouseout."+i+" pointerout."+i+" MSPointerOut."+i+" click."+i,function(n){function i(e,o){r.scrollAmount=a.snapAmount||a.scrollButtons.scrollAmount,h._sequentialScroll.call(this,t,e,o)}if(n.preventDefault(),h._mouseBtnLeft(n)){var l=e(this).attr("class");switch(r.type=a.scrollButtons.scrollType,n.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===r.type)return;u=!0,o.tweenRunning=!1,i("on",l);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===r.type)return;u=!1,r.dir&&i("off",l);break;case"click":if("stepped"!==r.type||o.tweenRunning)return;i("on",l)}}})},_keyboard:function(){var t=e(this),a=t.data(n),r=a.opt,i=a.sequential,l=n+"_"+a.idx,s=e("#mCSB_"+a.idx),c=e("#mCSB_"+a.idx+"_container"),d=c.parent(),u="input,textarea,select,datalist,keygen,[contenteditable='true']";s.attr("tabindex","0").bind("blur."+l+" keydown."+l+" keyup."+l,function(n){function l(e,o){i.type=r.keyboard.scrollType,i.scrollAmount=r.snapAmount||r.keyboard.scrollAmount,"stepped"===i.type&&a.tweenRunning||h._sequentialScroll.call(this,t,e,o)}switch(n.type){case"blur":a.tweenRunning&&i.dir&&l("off",null);break;case"keydown":case"keyup":var s=n.keyCode?n.keyCode:n.which,f="on";if("x"!==r.axis&&(38===s||40===s)||"y"!==r.axis&&(37===s||39===s)){if((38===s||40===s)&&!a.overflowed[0]||(37===s||39===s)&&!a.overflowed[1])return;"keyup"===n.type&&(f="off"),e(o.activeElement).is(u)||(n.preventDefault(),n.stopImmediatePropagation(),l(f,s))}else if(33===s||34===s){if((a.overflowed[0]||a.overflowed[1])&&(n.preventDefault(),n.stopImmediatePropagation()),"keyup"===n.type){h._stop(t);var _=34===s?-1:1;if("x"===r.axis||"yx"===r.axis&&a.overflowed[1]&&!a.overflowed[0])var m="x",p=Math.abs(c[0].offsetLeft)-.9*_*d.width();else var m="y",p=Math.abs(c[0].offsetTop)-.9*_*d.height();h._scrollTo(t,p.toString(),{dir:m,scrollEasing:"mcsEaseInOut"})}}else if((35===s||36===s)&&!e(o.activeElement).is(u)&&((a.overflowed[0]||a.overflowed[1])&&(n.preventDefault(),n.stopImmediatePropagation()),"keyup"===n.type)){if("x"===r.axis||"yx"===r.axis&&a.overflowed[1]&&!a.overflowed[0])var m="x",p=35===s?Math.abs(d.width()-c.outerWidth(!1)):0;else var m="y",p=35===s?Math.abs(d.height()-c.outerHeight(!1)):0;h._scrollTo(t,p.toString(),{dir:m,scrollEasing:"mcsEaseInOut"})}}})},_sequentialScroll:function(t,o,a){function r(e){var o="stepped"!==c.type,a=e?o?s.scrollInertia/1.5:s.scrollInertia:1e3/60,n=e?o?7.5:40:2.5,i=[Math.abs(d[0].offsetTop),Math.abs(d[0].offsetLeft)],u=[l.scrollRatio.y>10?10:l.scrollRatio.y,l.scrollRatio.x>10?10:l.scrollRatio.x],f="x"===c.dir[0]?i[1]+c.dir[1]*u[1]*n:i[0]+c.dir[1]*u[0]*n,_="x"===c.dir[0]?i[1]+c.dir[1]*parseInt(c.scrollAmount):i[0]+c.dir[1]*parseInt(c.scrollAmount),m="auto"!==c.scrollAmount?_:f,p=e?o?"mcsLinearOut":"mcsEaseInOut":"mcsLinear",g=e?!0:!1;return e&&17>a&&(m="x"===c.dir[0]?i[1]:i[0]),h._scrollTo(t,m.toString(),{dir:c.dir[0],scrollEasing:p,dur:a,onComplete:g}),e?void(c.dir=!1):(clearTimeout(c.step),void(c.step=setTimeout(function(){r()},a)))}function i(){clearTimeout(c.step),h._stop(t)}var l=t.data(n),s=l.opt,c=l.sequential,d=e("#mCSB_"+l.idx+"_container"),u="stepped"===c.type?!0:!1;switch(o){case"on":if(c.dir=["mCSB_buttonRight"===a||"mCSB_buttonLeft"===a||39===a||37===a?"x":"y","mCSB_buttonUp"===a||"mCSB_buttonLeft"===a||38===a||37===a?-1:1],h._stop(t),h._isNumeric(a)&&"stepped"===c.type)return;r(u);break;case"off":i(),(u||l.tweenRunning&&c.dir)&&r(!0)}},_arr:function(t){var o=e(this).data(n).opt,a=[];return"function"==typeof t&&(t=t()),t instanceof Array?a=t.length>1?[t[0],t[1]]:"x"===o.axis?[null,t[0]]:[t[0],null]:(a[0]=t.y?t.y:t.x||"x"===o.axis?null:t,a[1]=t.x?t.x:t.y||"y"===o.axis?null:t),"function"==typeof a[0]&&(a[0]=a[0]()),"function"==typeof a[1]&&(a[1]=a[1]()),a},_to:function(t,o){if(null!=t&&"undefined"!=typeof t){var a=e(this),r=a.data(n),i=r.opt,l=e("#mCSB_"+r.idx+"_container"),s=l.parent(),c=typeof t;o||(o="x"===i.axis?"x":"y");var d="x"===o?l.outerWidth(!1):l.outerHeight(!1),u="x"===o?l.offset().left:l.offset().top,_="x"===o?l[0].offsetLeft:l[0].offsetTop,m="x"===o?"left":"top";switch(c){case"function":return t();case"object":if(t.nodeType)var p="x"===o?e(t).offset().left:e(t).offset().top;else if(t.jquery){if(!t.length)return;var p="x"===o?t.offset().left:t.offset().top}return p-u;case"string":case"number":if(h._isNumeric.call(null,t))return Math.abs(t);if(-1!==t.indexOf("%"))return Math.abs(d*parseInt(t)/100);if(-1!==t.indexOf("-="))return Math.abs(_-parseInt(t.split("-=")[1]));if(-1!==t.indexOf("+=")){var g=_+parseInt(t.split("+=")[1]);return g>=0?0:Math.abs(g)}if(-1!==t.indexOf("px")&&h._isNumeric.call(null,t.split("px")[0]))return Math.abs(t.split("px")[0]);if("top"===t||"left"===t)return 0;if("bottom"===t)return Math.abs(s.height()-l.outerHeight(!1));if("right"===t)return Math.abs(s.width()-l.outerWidth(!1));if("first"===t||"last"===t){var v=l.find(":"+t),p="x"===o?e(v).offset().left:e(v).offset().top;return p-u}if(e(t).length){var p="x"===o?e(t).offset().left:e(t).offset().top;return p-u}return l.css(m,t),void f.update.call(null,a[0])}}},_autoUpdate:function(t){function o(){clearTimeout(u[0].autoUpdate),u[0].autoUpdate=setTimeout(function(){return d.advanced.updateOnSelectorChange&&(_=i(),_!==S)?(l(),void(S=_)):(d.advanced.updateOnContentResize&&(m=[u.outerHeight(!1),u.outerWidth(!1),g.height(),g.width(),x()[0],x()[1]],(m[0]!==C[0]||m[1]!==C[1]||m[2]!==C[2]||m[3]!==C[3]||m[4]!==C[4]||m[5]!==C[5])&&(l(),C=m)),d.advanced.updateOnImageLoad&&(p=a(),p!==b&&(u.find("img").each(function(){r(this.src)}),b=p)),void((d.advanced.updateOnSelectorChange||d.advanced.updateOnContentResize||d.advanced.updateOnImageLoad)&&o()))},60)}function a(){var e=0;return d.advanced.updateOnImageLoad&&(e=u.find("img").length),e}function r(e){function t(e,t){return function(){return t.apply(e,arguments)}}function o(){this.onload=null,l()}var a=new Image;a.onload=t(a,o),a.src=e}function i(){d.advanced.updateOnSelectorChange===!0&&(d.advanced.updateOnSelectorChange="*");var t=0,o=u.find(d.advanced.updateOnSelectorChange);return d.advanced.updateOnSelectorChange&&o.length>0&&o.each(function(){t+=e(this).height()+e(this).width()}),t}function l(){clearTimeout(u[0].autoUpdate),f.update.call(null,s[0])}var s=e(this),c=s.data(n),d=c.opt,u=e("#mCSB_"+c.idx+"_container");if(t)return clearTimeout(u[0].autoUpdate),void h._delete.call(null,u[0].autoUpdate);var _,m,p,g=u.parent(),v=[e("#mCSB_"+c.idx+"_scrollbar_vertical"),e("#mCSB_"+c.idx+"_scrollbar_horizontal")],x=function(){return[v[0].is(":visible")?v[0].outerHeight(!0):0,v[1].is(":visible")?v[1].outerWidth(!0):0]},S=i(),C=[u.outerHeight(!1),u.outerWidth(!1),g.height(),g.width(),x()[0],x()[1]],b=a();o()},_snapAmount:function(e,t,o){return Math.round(e/t)*t-o},_stop:function(t){var o=t.data(n),a=e("#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal");a.each(function(){h._stopTween.call(this)})},_scrollTo:function(t,o,a){function r(e){return s&&c.callbacks[e]&&"function"==typeof c.callbacks[e]}function i(){return[c.callbacks.alwaysTriggerOffsets||S>=C[0]+w,c.callbacks.alwaysTriggerOffsets||-y>=S]}function l(){var e=[_[0].offsetTop,_[0].offsetLeft],o=[v[0].offsetTop,v[0].offsetLeft],n=[_.outerHeight(!1),_.outerWidth(!1)],r=[f.height(),f.width()];t[0].mcs={content:_,top:e[0],left:e[1],draggerTop:o[0],draggerLeft:o[1],topPct:Math.round(100*Math.abs(e[0])/(Math.abs(n[0])-r[0])),leftPct:Math.round(100*Math.abs(e[1])/(Math.abs(n[1])-r[1])),direction:a.dir}}var s=t.data(n),c=s.opt,d={trigger:"internal",dir:"y",scrollEasing:"mcsEaseOut",drag:!1,dur:c.scrollInertia,overwrite:"all",callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},a=e.extend(d,a),u=[a.dur,a.drag?0:a.dur],f=e("#mCSB_"+s.idx),_=e("#mCSB_"+s.idx+"_container"),m=_.parent(),p=c.callbacks.onTotalScrollOffset?h._arr.call(t,c.callbacks.onTotalScrollOffset):[0,0],g=c.callbacks.onTotalScrollBackOffset?h._arr.call(t,c.callbacks.onTotalScrollBackOffset):[0,0]; +if(s.trigger=a.trigger,(0!==m.scrollTop()||0!==m.scrollLeft())&&(e(".mCSB_"+s.idx+"_scrollbar").css("visibility","visible"),m.scrollTop(0).scrollLeft(0)),"_resetY"!==o||s.contentReset.y||(r("onOverflowYNone")&&c.callbacks.onOverflowYNone.call(t[0]),s.contentReset.y=1),"_resetX"!==o||s.contentReset.x||(r("onOverflowXNone")&&c.callbacks.onOverflowXNone.call(t[0]),s.contentReset.x=1),"_resetY"!==o&&"_resetX"!==o){switch(!s.contentReset.y&&t[0].mcs||!s.overflowed[0]||(r("onOverflowY")&&c.callbacks.onOverflowY.call(t[0]),s.contentReset.x=null),!s.contentReset.x&&t[0].mcs||!s.overflowed[1]||(r("onOverflowX")&&c.callbacks.onOverflowX.call(t[0]),s.contentReset.x=null),c.snapAmount&&(o=h._snapAmount(o,c.snapAmount,c.snapOffset)),a.dir){case"x":var v=e("#mCSB_"+s.idx+"_dragger_horizontal"),x="left",S=_[0].offsetLeft,C=[f.width()-_.outerWidth(!1),v.parent().width()-v.width()],b=[o,0===o?0:o/s.scrollRatio.x],w=p[1],y=g[1],B=w>0?w/s.scrollRatio.x:0,T=y>0?y/s.scrollRatio.x:0;break;case"y":var v=e("#mCSB_"+s.idx+"_dragger_vertical"),x="top",S=_[0].offsetTop,C=[f.height()-_.outerHeight(!1),v.parent().height()-v.height()],b=[o,0===o?0:o/s.scrollRatio.y],w=p[0],y=g[0],B=w>0?w/s.scrollRatio.y:0,T=y>0?y/s.scrollRatio.y:0}b[1]<0||0===b[0]&&0===b[1]?b=[0,0]:b[1]>=C[1]?b=[C[0],C[1]]:b[0]=-b[0],t[0].mcs||(l(),r("onInit")&&c.callbacks.onInit.call(t[0])),clearTimeout(_[0].onCompleteTimeout),(s.tweenRunning||!(0===S&&b[0]>=0||S===C[0]&&b[0]<=C[0]))&&(h._tweenTo.call(null,v[0],x,Math.round(b[1]),u[1],a.scrollEasing),h._tweenTo.call(null,_[0],x,Math.round(b[0]),u[0],a.scrollEasing,a.overwrite,{onStart:function(){a.callbacks&&a.onStart&&!s.tweenRunning&&(r("onScrollStart")&&(l(),c.callbacks.onScrollStart.call(t[0])),s.tweenRunning=!0,h._onDragClasses(v),s.cbOffsets=i())},onUpdate:function(){a.callbacks&&a.onUpdate&&r("whileScrolling")&&(l(),c.callbacks.whileScrolling.call(t[0]))},onComplete:function(){if(a.callbacks&&a.onComplete){"yx"===c.axis&&clearTimeout(_[0].onCompleteTimeout);var e=_[0].idleTimer||0;_[0].onCompleteTimeout=setTimeout(function(){r("onScroll")&&(l(),c.callbacks.onScroll.call(t[0])),r("onTotalScroll")&&b[1]>=C[1]-B&&s.cbOffsets[0]&&(l(),c.callbacks.onTotalScroll.call(t[0])),r("onTotalScrollBack")&&b[1]<=T&&s.cbOffsets[1]&&(l(),c.callbacks.onTotalScrollBack.call(t[0])),s.tweenRunning=!1,_[0].idleTimer=0,h._onDragClasses(v,"hide")},e)}}}))}},_tweenTo:function(e,o,a,n,r,i,l){function s(){w.stop||(S||p.call(),S=h._getTime()-x,c(),S>=w.time&&(w.time=S>w.time?S+_-(S-w.time):S+_-1,w.time0?(w.currVal=f(w.time,C,y,n,r),b[o]=Math.round(w.currVal)+"px"):b[o]=a+"px",g.call()}function d(){_=1e3/60,w.time=S+_,m=t.requestAnimationFrame?t.requestAnimationFrame:function(e){return c(),setTimeout(e,.01)},w.id=m(s)}function u(){null!=w.id&&(t.requestAnimationFrame?t.cancelAnimationFrame(w.id):clearTimeout(w.id),w.id=null)}function f(e,t,o,a,n){switch(n){case"linear":case"mcsLinear":return o*e/a+t;case"mcsLinearOut":return e/=a,e--,o*Math.sqrt(1-e*e)+t;case"easeInOutSmooth":return e/=a/2,1>e?o/2*e*e+t:(e--,-o/2*(e*(e-2)-1)+t);case"easeInOutStrong":return e/=a/2,1>e?o/2*Math.pow(2,10*(e-1))+t:(e--,o/2*(-Math.pow(2,-10*e)+2)+t);case"easeInOut":case"mcsEaseInOut":return e/=a/2,1>e?o/2*e*e*e+t:(e-=2,o/2*(e*e*e+2)+t);case"easeOutSmooth":return e/=a,e--,-o*(e*e*e*e-1)+t;case"easeOutStrong":return o*(-Math.pow(2,-10*e/a)+1)+t;case"easeOut":case"mcsEaseOut":default:var r=(e/=a)*e,i=r*e;return t+o*(.499999999999997*i*r+-2.5*r*r+5.5*i+-6.5*r+4*e)}}e._malihuTween||(e._malihuTween={top:{},left:{}});var _,m,l=l||{},p=l.onStart||function(){},g=l.onUpdate||function(){},v=l.onComplete||function(){},x=h._getTime(),S=0,C=e.offsetTop,b=e.style,w=e._malihuTween[o];"left"===o&&(C=e.offsetLeft);var y=a-C;w.stop=0,"none"!==i&&u(),d()},_getTime:function(){return t.performance&&t.performance.now?t.performance.now():t.performance&&t.performance.webkitNow?t.performance.webkitNow():Date.now?Date.now():(new Date).getTime()},_stopTween:function(){var e=this;e._malihuTween||(e._malihuTween={top:{},left:{}}),e._malihuTween.top.id&&(t.requestAnimationFrame?t.cancelAnimationFrame(e._malihuTween.top.id):clearTimeout(e._malihuTween.top.id),e._malihuTween.top.id=null,e._malihuTween.top.stop=1),e._malihuTween.left.id&&(t.requestAnimationFrame?t.cancelAnimationFrame(e._malihuTween.left.id):clearTimeout(e._malihuTween.left.id),e._malihuTween.left.id=null,e._malihuTween.left.stop=1)},_delete:function(e){try{delete e}catch(t){e=null}},_mouseBtnLeft:function(e){return!(e.which&&1!==e.which)},_pointerTouch:function(e){var t=e.originalEvent.pointerType;return!(t&&"touch"!==t&&2!==t)},_isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)}};e.fn[a]=function(t){return f[t]?f[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void e.error("Method "+t+" does not exist"):f.init.apply(this,arguments)},e[a]=function(t){return f[t]?f[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void e.error("Method "+t+" does not exist"):f.init.apply(this,arguments)},e[a].defaults=i,t[a]=!0,e(t).load(function(){e(r)[a]()})})}(jQuery,window,document); \ No newline at end of file diff --git a/node_modules/.bin/build.js b/node_modules/.bin/build.js index 1f8a5268..84d2e695 100644 --- a/node_modules/.bin/build.js +++ b/node_modules/.bin/build.js @@ -26,16 +26,24 @@ { name: "app/main", exclude: [ - "jquery", - "jqueryUI", + // "jquery", + // "jqueryUI", // "jsPlumb" ] } ], - paths: { - jquery: "empty:", - jqueryUI: "empty:", - jsPlumb: "empty:" + "paths": { + //"lib": "lib", + // "app": "app", + "layout": "layout", + "jquery": "lib/jquery-1.11.1.min", + //"jquery": "lib/jquery-2.1.1.min", + "jqueryUI": "lib/jquery-ui.min", + "bootstrap": "lib/bootstrap", + "text": "lib/requirejs/text", + "templates": "../templates", + "jsPlumb": "lib/jsPlumb-1.6.4-min", + "customScrollbar": "lib/jquery.mCustomScrollbar.concat.min" }, //How to optimize all the JS files in the build output directory. diff --git a/sass/_colors.scss b/sass/_colors.scss index 5afb2338..1fdecd60 100644 --- a/sass/_colors.scss +++ b/sass/_colors.scss @@ -1,6 +1,8 @@ $black: black; $white: white; +$bg-color: #05050a; + // gray $gray-lightest: #eaeaea; $gray-lighter: #adadad; diff --git a/sass/_variables.scss b/sass/_variables.scss index 2adffdb2..03e79a84 100644 --- a/sass/_variables.scss +++ b/sass/_variables.scss @@ -785,11 +785,11 @@ $animation-ajax-dropdown: "flipInY"; $base-url: "../img"; //urage: background-image: url("#{$base-url}/images/bg.png"); -$html-background-image: "mybg.png"; -$html-background-color: $white; +$html-background-image: ""; +$html-background-color: $bg-color; -$body-background-image: "mybg.png"; -$body-background-color: $white; +$body-background-image: "pf-bg.jpg"; +$body-background-color: $bg-color; //== HEADER // diff --git a/sass/bootstrap/_navs.scss b/sass/bootstrap/_navs.scss index 820e116b..09fe7587 100644 --- a/sass/bootstrap/_navs.scss +++ b/sass/bootstrap/_navs.scss @@ -79,13 +79,13 @@ float: left; // Make the list-items overlay the bottom border margin-bottom: -1px; + margin-right: 2px; // Actual tabs (as links) > a { - margin-right: 2px; line-height: $line-height-base; border: 1px solid transparent; - border-radius: $border-radius-base $border-radius-base 0 0; + //border-radius: $border-radius-base $border-radius-base 0 0; &:hover { border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color; } diff --git a/sass/layout/_main.scss b/sass/layout/_main.scss index 9294e15e..ffb23977 100644 --- a/sass/layout/_main.scss +++ b/sass/layout/_main.scss @@ -5,5 +5,30 @@ body{ } #pf-map-module{ - margin: 10px; + margin: 0px; + padding: 10px; + background: rgba($gray, 0.3); + + // Tabs (colored) + #pf-map-tabs { + .pf-map-type-default{ + border-top: 2px solid transparent; + } + + .pf-map-type-global{ + border-top: 2px solid $green; + } + + .pf-map-type-alliance{ + border-top: 2px solid $blue; + } + + .pf-map-type-private{ + border-top: 2px solid $teal; + } + } + + .tab-pane{ + background: rgba($gray-darker, 0.95); + } } \ No newline at end of file diff --git a/sass/layout/_map.scss b/sass/layout/_map.scss index 5bdb0492..e37bc306 100644 --- a/sass/layout/_map.scss +++ b/sass/layout/_map.scss @@ -1,9 +1,8 @@ -.pf-map{ - background-color: $gray-darker; - width: 1200px; - height: 500px; - position: relative; - overflow: hidden; +.pf-map-wrapper{ + width: 100%; + height: 530px; + overflow: auto; + padding: 5px; @include border-bottom-radius(5px); border: { @@ -11,11 +10,18 @@ style: solid; color: $gray-lighter; } +} + +.pf-map{ + + width: 1200px; + height: 500px; + position: relative; .pf-system{ position: absolute; - min-width: 50px; + min-width: 80px; height: auto; background-color: $gray-dark; z-index: 100; @@ -98,8 +104,12 @@ // =============================================================== .pf-system-body{ - min-height: 10px; + height: 16px; + width: 80px; + overflow: hidden; cursor: move; + padding: 0 2px; + white-space: nowrap; border: { top: { @@ -108,6 +118,33 @@ color: $gray-light; } } + + + + .pf-system-body-item{ + color: $gray-light; + font-size: 10px; + + .pf-system-body-right{ + float: right; + color: $teal; + display: none; // hover effect + } + // user status ================================================= + .pf-user-status{ + font-size: 7px; + } + + .pf-user-status-corp{ + color: $green; + } + + .pf-user-status-ally{ + color: $blue; + } + + } + } } @@ -116,7 +153,7 @@ @include transition-duration(0.2s); } - // System status =============================================== + // system status ====================================================== .pf-system-status-friendly{ border-color: $blue; @@ -235,8 +272,8 @@ } -// system dialog ================================================= -#pf-system-dialog{ +// dialoges ================================================= +.ui-dialog-content{ label{ min-width: 60px; } diff --git a/sass/library/custom-scrollbar/mCustomScrollbar.scss b/sass/library/custom-scrollbar/mCustomScrollbar.scss new file mode 100644 index 00000000..bb146ef5 --- /dev/null +++ b/sass/library/custom-scrollbar/mCustomScrollbar.scss @@ -0,0 +1,1229 @@ +.mCustomScrollbar { + touch-action: none; +} + +.mCustomScrollbar.mCS_no_scrollbar { + touch-action: auto; +} + +.mCustomScrollBox { + position: relative; + overflow: hidden; + height: 100%; + max-width: 100%; + outline: none; + direction: ltr; +} + +.mCSB_container { + overflow: hidden; + width: auto; + height: auto; +} + +.mCSB_inside > .mCSB_container { + margin-right: 30px; +} + +.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden { + margin-right: 0; +} + +.mCS-dir-rtl > .mCSB_inside > .mCSB_container { + margin-right: 0; + margin-left: 30px; +} + +.mCS-dir-rtl > .mCSB_inside > .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden { + margin-left: 0; +} + +.mCSB_scrollTools { + position: absolute; + width: 16px; + height: auto; + left: auto; + top: 0; + right: 0; + bottom: 0; + opacity: 0.75; + filter: "alpha(opacity=75)"; +} + +.mCSB_outside + .mCSB_scrollTools { + right: -26px; +} + +.mCS-dir-rtl > .mCSB_inside > .mCSB_scrollTools, .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools { + right: auto; + left: 0; +} + +.mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools { + left: -26px; +} + +.mCSB_scrollTools .mCSB_draggerContainer { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + height: auto; +} + +.mCSB_scrollTools a + .mCSB_draggerContainer { + margin: 20px 0; +} + +.mCSB_scrollTools .mCSB_draggerRail { + width: 2px; + height: 100%; + margin: 0 auto; + border-radius: 16px; + background-color: #000; + background-color: rgba(0,0,0,0.4); + filter: "alpha(opacity=40)"; +} + +.mCSB_scrollTools .mCSB_dragger { + cursor: pointer; + width: 100%; + height: 30px; + z-index: 1; +} + +.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + position: relative; + width: 4px; + height: 100%; + margin: 0 auto; + border-radius: 16px; + text-align: center; + background-color: #fff; + background-color: rgba(255,255,255,0.75); + filter: "alpha(opacity=75)"; +} + +.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar { + width: 12px; +} + +.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail { + width: 8px; +} + +.mCSB_scrollTools .mCSB_buttonUp, .mCSB_scrollTools .mCSB_buttonDown { + display: block; + position: absolute; + height: 20px; + width: 100%; + overflow: hidden; + margin: 0 auto; + cursor: pointer; +} + +.mCSB_scrollTools .mCSB_buttonDown { + bottom: 0; + background-position: 0 -20px; +} + +.mCSB_horizontal.mCSB_inside > .mCSB_container { + margin-right: 0; + margin-bottom: 30px; +} + +.mCSB_horizontal.mCSB_outside > .mCSB_container { + min-height: 100%; +} + +.mCSB_horizontal > .mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden { + margin-bottom: 0; +} + +.mCSB_scrollTools.mCSB_scrollTools_horizontal { + width: auto; + height: 16px; + top: auto; + right: 0; + bottom: 0; + left: 0; +} + +.mCustomScrollBox + .mCSB_scrollTools.mCSB_scrollTools_horizontal, .mCustomScrollBox + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal { + bottom: -26px; +} + +.mCSB_scrollTools.mCSB_scrollTools_horizontal a + .mCSB_draggerContainer { + margin: 0 20px; +} + +.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail { + width: 100%; + height: 2px; + margin: 7px 0; +} + +.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger { + width: 30px; + height: 100%; + left: 0; +} + +.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar { + width: 100%; + height: 4px; + margin: 6px auto; +} + +.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar { + height: 12px; + margin: 2px auto; +} + +.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail { + height: 8px; + margin: 4px 0; +} + +.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft, .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight { + display: block; + position: absolute; + width: 20px; + height: 100%; + overflow: hidden; + margin: 0 auto; + cursor: pointer; +} + +.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft { + left: 0; +} + +.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight { + right: 0; +} + +.mCSB_container_wrapper { + position: absolute; + height: auto; + width: auto; + overflow: hidden; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin-right: 30px; + margin-bottom: 30px; +} + +.mCSB_container_wrapper > .mCSB_container { + padding-right: 30px; + padding-bottom: 30px; +} + +.mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_vertical { + bottom: 20px; +} + +.mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_horizontal { + right: 20px; +} + +.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden + .mCSB_scrollTools.mCSB_scrollTools_vertical { + bottom: 0; +} + +.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal, .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal { + right: 0; +} + +.mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal { + left: 20px; +} + +.mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal { + left: 0; +} + +.mCS-dir-rtl > .mCSB_inside > .mCSB_container_wrapper { + margin-right: 0; + margin-left: 30px; +} + +.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden > .mCSB_container { + padding-right: 0; + box-sizing: border-box; +} + +.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden > .mCSB_container { + padding-bottom: 0; + box-sizing: border-box; +} + +.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden { + margin-right: 0; + margin-left: 0; +} + +.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden { + margin-bottom: 0; +} + +.mCSB_scrollTools, .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCSB_scrollTools .mCSB_buttonUp, .mCSB_scrollTools .mCSB_buttonDown, .mCSB_scrollTools .mCSB_buttonLeft, .mCSB_scrollTools .mCSB_buttonRight { + transition: opacity .2s ease-in-out, background-color .2s ease-in-out; +} + +.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail, .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail { + transition: width .2s ease-out .2s, height .2s ease-out .2s, margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, opacity .2s ease-in-out, background-color .2s ease-in-out; +} + +.mCS-autoHide > .mCustomScrollBox > .mCSB_scrollTools, .mCS-autoHide > .mCustomScrollBox ~ .mCSB_scrollTools { + opacity: 0; + filter: "alpha(opacity=0)"; +} + +.mCustomScrollbar > .mCustomScrollBox > .mCSB_scrollTools.mCSB_scrollTools_onDrag, .mCustomScrollbar > .mCustomScrollBox ~ .mCSB_scrollTools.mCSB_scrollTools_onDrag, .mCustomScrollBox:hover > .mCSB_scrollTools, .mCustomScrollBox:hover ~ .mCSB_scrollTools, .mCS-autoHide:hover > .mCustomScrollBox > .mCSB_scrollTools, .mCS-autoHide:hover > .mCustomScrollBox ~ .mCSB_scrollTools { + opacity: 1; + filter: "alpha(opacity=100)"; +} + +.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.85); + filter: "alpha(opacity=85)"; +} + +.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.9); + filter: "alpha(opacity=90)"; +} + +.mCSB_scrollTools .mCSB_buttonUp, .mCSB_scrollTools .mCSB_buttonDown, .mCSB_scrollTools .mCSB_buttonLeft, .mCSB_scrollTools .mCSB_buttonRight { + background-image: url(mCSB_buttons.png); + background-repeat: no-repeat; + opacity: 0.4; + filter: "alpha(opacity=40)"; +} + +.mCSB_scrollTools .mCSB_buttonUp { + background-position: 0 0; +} + +.mCSB_scrollTools .mCSB_buttonLeft { + background-position: 0 -40px; +} + +.mCSB_scrollTools .mCSB_buttonRight { + background-position: 0 -56px; +} + +.mCSB_scrollTools .mCSB_buttonUp:hover, .mCSB_scrollTools .mCSB_buttonDown:hover, .mCSB_scrollTools .mCSB_buttonLeft:hover, .mCSB_scrollTools .mCSB_buttonRight:hover { + opacity: 0.75; + filter: "alpha(opacity=75)"; +} + +.mCSB_scrollTools .mCSB_buttonUp:active, .mCSB_scrollTools .mCSB_buttonDown:active, .mCSB_scrollTools .mCSB_buttonLeft:active, .mCSB_scrollTools .mCSB_buttonRight:active { + opacity: 0.9; + filter: "alpha(opacity=90)"; +} + +.mCS-dark.mCSB_scrollTools .mCSB_draggerRail { + background-color: #000; + background-color: rgba(0,0,0,0.15); +} + +.mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.75); +} + +.mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: rgba(0,0,0,0.85); +} + +.mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: rgba(0,0,0,0.9); +} + +.mCS-dark.mCSB_scrollTools .mCSB_buttonUp { + background-position: -80px 0; +} + +.mCS-dark.mCSB_scrollTools .mCSB_buttonDown { + background-position: -80px -20px; +} + +.mCS-dark.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -80px -40px; +} + +.mCS-dark.mCSB_scrollTools .mCSB_buttonRight { + background-position: -80px -56px; +} + +.mCS-light-2.mCSB_scrollTools .mCSB_draggerRail, .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail { + width: 4px; + background-color: #fff; + background-color: rgba(255,255,255,0.1); + border-radius: 1px; +} + +.mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + width: 4px; + background-color: #fff; + background-color: rgba(255,255,255,0.75); + border-radius: 1px; +} + +.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar { + width: 100%; + height: 4px; + margin: 6px auto; +} + +.mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.85); +} + +.mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.9); +} + +.mCS-light-2.mCSB_scrollTools .mCSB_buttonUp { + background-position: -32px 0; +} + +.mCS-light-2.mCSB_scrollTools .mCSB_buttonDown { + background-position: -32px -20px; +} + +.mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -40px -40px; +} + +.mCS-light-2.mCSB_scrollTools .mCSB_buttonRight { + background-position: -40px -56px; +} + +.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail { + background-color: #000; + background-color: rgba(0,0,0,0.1); + border-radius: 1px; +} + +.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.75); + border-radius: 1px; +} + +.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.85); +} + +.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.9); +} + +.mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp { + background-position: -112px 0; +} + +.mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown { + background-position: -112px -20px; +} + +.mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -120px -40px; +} + +.mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight { + background-position: -120px -56px; +} + +.mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail, .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail { + width: 4px; + background-color: #fff; + background-color: rgba(255,255,255,0.1); + border-radius: 2px; +} + +.mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + width: 6px; + background-color: #fff; + background-color: rgba(255,255,255,0.75); + border-radius: 2px; +} + +.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail { + width: 100%; + height: 4px; + margin: 6px 0; +} + +.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar { + width: 100%; + height: 6px; + margin: 5px auto; +} + +.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.85); +} + +.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.9); +} + +.mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp { + background-position: -16px 0; +} + +.mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown { + background-position: -16px -20px; +} + +.mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -20px -40px; +} + +.mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight { + background-position: -20px -56px; +} + +.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail { + background-color: #000; + background-color: rgba(0,0,0,0.1); + border-radius: 2px; +} + +.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.75); + border-radius: 2px; +} + +.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.85); +} + +.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.9); +} + +.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp { + background-position: -96px 0; +} + +.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown { + background-position: -96px -20px; +} + +.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -100px -40px; +} + +.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight { + background-position: -100px -56px; +} + +.mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail { + background-color: #fff; + background-color: rgba(255,255,255,0.1); +} + +.mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + width: 2px; +} + +.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail { + width: 100%; +} + +.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar { + width: 100%; + height: 2px; + margin: 7px auto; +} + +.mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail { + background-color: #000; + background-color: rgba(0,0,0,0.15); +} + +.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.75); +} + +.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.85); +} + +.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.9); +} + +.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp { + background-position: -80px 0; +} + +.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown { + background-position: -80px -20px; +} + +.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -80px -40px; +} + +.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight { + background-position: -80px -56px; +} + +.mCS-rounded.mCSB_scrollTools .mCSB_draggerRail { + background-color: #fff; + background-color: rgba(255,255,255,0.15); +} + +.mCS-rounded.mCSB_scrollTools .mCSB_dragger, .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger, .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger, .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger { + height: 14px; +} + +.mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + width: 14px; + margin: 0 1px; +} + +.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger, .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger, .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger, .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger { + width: 14px; +} + +.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar { + height: 14px; + margin: 1px 0; +} + +.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar, .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar { + width: 16px; + height: 16px; + margin: -1px 0; +} + +.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail { + width: 4px; +} + +.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar, .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar { + height: 16px; + width: 16px; + margin: 0 -1px; +} + +.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail { + height: 4px; + margin: 6px 0; +} + +.mCS-rounded.mCSB_scrollTools .mCSB_buttonUp { + background-position: 0 -72px; +} + +.mCS-rounded.mCSB_scrollTools .mCSB_buttonDown { + background-position: 0 -92px; +} + +.mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft { + background-position: 0 -112px; +} + +.mCS-rounded.mCSB_scrollTools .mCSB_buttonRight { + background-position: 0 -128px; +} + +.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.75); +} + +.mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail { + background-color: #000; + background-color: rgba(0,0,0,0.15); +} + +.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.85); +} + +.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.9); +} + +.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp { + background-position: -80px -72px; +} + +.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown { + background-position: -80px -92px; +} + +.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -80px -112px; +} + +.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight { + background-position: -80px -128px; +} + +.mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail, .mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail { + width: 4px; +} + +.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail, .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail, .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail { + background-color: transparent; + background-position: center; +} + +.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail, .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg=="); + background-repeat: repeat-y; + opacity: 0.3; + filter: "alpha(opacity=30)"; +} + +.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail { + height: 4px; + margin: 6px 0; + background-repeat: repeat-x; +} + +.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp { + background-position: -16px -72px; +} + +.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown { + background-position: -16px -92px; +} + +.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -20px -112px; +} + +.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight { + background-position: -20px -128px; +} + +.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII="); +} + +.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp { + background-position: -96px -72px; +} + +.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown { + background-position: -96px -92px; +} + +.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -100px -112px; +} + +.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight { + background-position: -100px -128px; +} + +.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-repeat: repeat-y; + background-image: linear-gradient(to right, rgba(255,255,255,0.5) 0,rgba(255,255,255,0) 100%); +} + +.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar { + background-repeat: repeat-x; + background-image: linear-gradient(to bottom, rgba(255,255,255,0.5) 0,rgba(255,255,255,0) 100%); +} + +.mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger, .mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger { + height: 70px; +} + +.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger, .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger { + width: 70px; +} + +.mCS-3d.mCSB_scrollTools, .mCS-3d-dark.mCSB_scrollTools { + opacity: 1; + filter: "alpha(opacity=30)"; +} + +.mCS-3d.mCSB_scrollTools .mCSB_draggerRail, .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail, .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + border-radius: 16px; +} + +.mCS-3d.mCSB_scrollTools .mCSB_draggerRail, .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail { + width: 8px; + background-color: #000; + background-color: rgba(0,0,0,0.2); + box-shadow: inset 1px 0 1px rgba(0,0,0,0.5), inset -1px 0 1px rgba(255,255,255,0.2); +} + +.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, .mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #555; +} + +.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + width: 8px; +} + +.mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail { + width: 100%; + height: 8px; + margin: 4px 0; + box-shadow: inset 0 1px 1px rgba(0,0,0,0.5), inset 0 -1px 1px rgba(255,255,255,0.2); +} + +.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar { + width: 100%; + height: 8px; + margin: 4px auto; +} + +.mCS-3d.mCSB_scrollTools .mCSB_buttonUp { + background-position: -32px -72px; +} + +.mCS-3d.mCSB_scrollTools .mCSB_buttonDown { + background-position: -32px -92px; +} + +.mCS-3d.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -40px -112px; +} + +.mCS-3d.mCSB_scrollTools .mCSB_buttonRight { + background-position: -40px -128px; +} + +.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail { + background-color: #000; + background-color: rgba(0,0,0,0.1); + box-shadow: inset 1px 0 1px rgba(0,0,0,0.1); +} + +.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail { + box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); +} + +.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp { + background-position: -112px -72px; +} + +.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown { + background-position: -112px -92px; +} + +.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -120px -112px; +} + +.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight { + background-position: -120px -128px; +} + +.mCS-3d-thick.mCSB_scrollTools, .mCS-3d-thick-dark.mCSB_scrollTools { + opacity: 1; + filter: "alpha(opacity=30)"; +} + +.mCS-3d-thick.mCSB_scrollTools, .mCS-3d-thick-dark.mCSB_scrollTools, .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer, .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer { + border-radius: 7px; +} + +.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + border-radius: 5px; + box-shadow: inset 1px 0 0 rgba(255,255,255,0.4); + width: 12px; + margin: 2px; + position: absolute; + height: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; +} + +.mCSB_inside + .mCS-3d-thick.mCSB_scrollTools_vertical, .mCSB_inside + .mCS-3d-thick-dark.mCSB_scrollTools_vertical { + right: 1px; +} + +.mCS-3d-thick.mCSB_scrollTools_vertical, .mCS-3d-thick-dark.mCSB_scrollTools_vertical { + box-shadow: inset 1px 0 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); +} + +.mCS-3d-thick.mCSB_scrollTools_horizontal, .mCS-3d-thick-dark.mCSB_scrollTools_horizontal { + bottom: 1px; + box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); +} + +.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar { + box-shadow: inset 0 1px 0 rgba(255,255,255,0.4); + height: 12px; + width: auto; +} + +.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #555; +} + +.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer { + background-color: #000; + background-color: rgba(0,0,0,0.05); + box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1); +} + +.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail { + background-color: transparent; +} + +.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp { + background-position: -32px -72px; +} + +.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown { + background-position: -32px -92px; +} + +.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -40px -112px; +} + +.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight { + background-position: -40px -128px; +} + +.mCS-3d-thick-dark.mCSB_scrollTools { + box-shadow: inset 0 0 14px rgba(0,0,0,0.2); +} + +.mCS-3d-thick-dark.mCSB_scrollTools_horizontal { + box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.2); +} + +.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + box-shadow: inset 1px 0 0 rgba(255,255,255,0.4), inset -1px 0 0 rgba(0,0,0,0.2); +} + +.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar { + box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), inset 0 -1px 0 rgba(0,0,0,0.2); +} + +.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #777; +} + +.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer { + background-color: #fff; + background-color: rgba(0,0,0,0.05); + box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1); +} + +.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail { + background-color: transparent; +} + +.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp { + background-position: -112px -72px; +} + +.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown { + background-position: -112px -92px; +} + +.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -120px -112px; +} + +.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight { + background-position: -120px -128px; +} + +.mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical, .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical { + right: 0; + margin: 12px 0; +} + +.mCustomScrollBox.mCS-minimal + .mCSB_scrollTools.mCSB_scrollTools_horizontal, .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal, .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools.mCSB_scrollTools_horizontal, .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal { + bottom: 0; + margin: 0 12px; +} + +.mCS-dir-rtl > .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical, .mCS-dir-rtl > .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical { + left: 0; + right: auto; +} + +.mCS-minimal.mCSB_scrollTools .mCSB_draggerRail, .mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail { + background-color: transparent; +} + +.mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger, .mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger { + height: 50px; +} + +.mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger, .mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger { + width: 50px; +} + +.mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.2); + filter: "alpha(opacity=20)"; +} + +.mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.5); + filter: "alpha(opacity=50)"; +} + +.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.2); + filter: "alpha(opacity=20)"; +} + +.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.5); + filter: "alpha(opacity=50)"; +} + +.mCS-light-3.mCSB_scrollTools .mCSB_draggerRail, .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail { + width: 6px; + background-color: #000; + background-color: rgba(0,0,0,0.2); +} + +.mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + width: 6px; +} + +.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail { + width: 100%; + height: 6px; + margin: 5px 0; +} + +.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail { + width: 12px; +} + +.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail { + height: 12px; + margin: 2px 0; +} + +.mCS-light-3.mCSB_scrollTools .mCSB_buttonUp { + background-position: -32px -72px; +} + +.mCS-light-3.mCSB_scrollTools .mCSB_buttonDown { + background-position: -32px -92px; +} + +.mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -40px -112px; +} + +.mCS-light-3.mCSB_scrollTools .mCSB_buttonRight { + background-position: -40px -128px; +} + +.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.75); +} + +.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.85); +} + +.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.9); +} + +.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail { + background-color: #000; + background-color: rgba(0,0,0,0.1); +} + +.mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp { + background-position: -112px -72px; +} + +.mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown { + background-position: -112px -92px; +} + +.mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -120px -112px; +} + +.mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight { + background-position: -120px -128px; +} + +.mCS-inset.mCSB_scrollTools .mCSB_draggerRail, .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail, .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail, .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail { + width: 12px; + background-color: #000; + background-color: rgba(0,0,0,0.2); +} + +.mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + width: 6px; + margin: 3px 5px; + position: absolute; + height: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; +} + +.mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar { + height: 6px; + margin: 5px 3px; + position: absolute; + width: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; +} + +.mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail, .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail { + width: 100%; + height: 12px; + margin: 2px 0; +} + +.mCS-inset.mCSB_scrollTools .mCSB_buttonUp, .mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp, .mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp { + background-position: -32px -72px; +} + +.mCS-inset.mCSB_scrollTools .mCSB_buttonDown, .mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown, .mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown { + background-position: -32px -92px; +} + +.mCS-inset.mCSB_scrollTools .mCSB_buttonLeft, .mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft, .mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -40px -112px; +} + +.mCS-inset.mCSB_scrollTools .mCSB_buttonRight, .mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight, .mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight { + background-position: -40px -128px; +} + +.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.75); +} + +.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.85); +} + +.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.9); +} + +.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail { + background-color: #000; + background-color: rgba(0,0,0,0.1); +} + +.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp { + background-position: -112px -72px; +} + +.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown { + background-position: -112px -92px; +} + +.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft { + background-position: -120px -112px; +} + +.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight { + background-position: -120px -128px; +} + +.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail, .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail { + background-color: transparent; + border-width: 1px; + border-style: solid; + border-color: #fff; + border-color: rgba(255,255,255,0.2); + box-sizing: border-box; +} + +.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail { + border-color: #000; + border-color: rgba(0,0,0,0.2); +} + +.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail { + background-color: #fff; + background-color: rgba(255,255,255,0.6); +} + +.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail { + background-color: #000; + background-color: rgba(0,0,0,0.6); +} + +.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.75); +} + +.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.85); +} + +.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #000; + background-color: rgba(0,0,0,0.9); +} + +.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.75); +} + +.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.85); +} + +.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { + background-color: #fff; + background-color: rgba(255,255,255,0.9); +} diff --git a/sass/production.css b/sass/production.css deleted file mode 100644 index 4aaaf0a7..00000000 --- a/sass/production.css +++ /dev/null @@ -1,88 +0,0 @@ -/* -Error: File to import not found or unreadable: compass/css3/border-radius. - Load paths: - - on line 1 of layout/_main.scss - from line 1 of layout/_all.scss - from line 83 of production.scss - -1: -2: // Core variables and mixins -3: @import "colors"; -4: @import "variables"; -5: @import "bootstrap/mixins"; -6: - -Backtrace: -layout/_main.scss:1 -layout/_all.scss:1 -production.scss:83 -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/import_node.rb:66:in `rescue in import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/import_node.rb:45:in `import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/import_node.rb:28:in `imported_file' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/import_node.rb:37:in `css_import?' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:301:in `visit_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/base.rb:36:in `visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:158:in `block in visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:79:in `block in with_base' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:115:in `with_frame' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:79:in `with_base' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:158:in `visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:315:in `block (2 levels) in visit_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:315:in `map' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:315:in `block in visit_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:88:in `block in with_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:115:in `with_frame' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:88:in `with_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:312:in `visit_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/base.rb:36:in `visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:158:in `block in visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:79:in `block in with_base' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:115:in `with_frame' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:79:in `with_base' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:158:in `visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:315:in `block (2 levels) in visit_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:315:in `map' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:315:in `block in visit_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:88:in `block in with_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:115:in `with_frame' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:88:in `with_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:312:in `visit_import' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/base.rb:36:in `visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:158:in `block in visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:79:in `block in with_base' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:115:in `with_frame' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/stack.rb:79:in `with_base' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:158:in `visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/base.rb:52:in `block in visit_children' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/base.rb:52:in `map' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/base.rb:52:in `visit_children' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:167:in `block in visit_children' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:179:in `with_environment' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:166:in `visit_children' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/base.rb:36:in `block in visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:186:in `visit_root' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/base.rb:36:in `visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:157:in `visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/visitors/perform.rb:8:in `visit' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/root_node.rb:36:in `css_tree' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/tree/root_node.rb:29:in `render_with_sourcemap' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/engine.rb:368:in `_render_with_sourcemap' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/engine.rb:285:in `render_with_sourcemap' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/plugin/compiler.rb:489:in `update_stylesheet' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/plugin/compiler.rb:209:in `each' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/plugin/compiler.rb:209:in `update_stylesheets' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/plugin.rb:82:in `update_stylesheets' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/exec/sass_scss.rb:350:in `watch_or_update' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/exec/sass_scss.rb:50:in `process_result' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/exec/base.rb:52:in `parse' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/lib/sass/exec/base.rb:19:in `parse!' -C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/sass-3.4.6/bin/scss:13:in `' -C:/Ruby21-x64/bin/scss:23:in `load' -C:/Ruby21-x64/bin/scss:23:in `
    ' -*/ -body:before { - white-space: pre; - font-family: monospace; - content: "Error: File to import not found or unreadable: compass/css3/border-radius.\A Load paths:\A \A on line 1 of layout/_main.scss\A from line 1 of layout/_all.scss\A from line 83 of production.scss\A \A 1: \A 2: // Core variables and mixins\A 3: @import \"colors\";\A 4: @import \"variables\";\A 5: @import \"bootstrap/mixins\";\A 6: "; } diff --git a/sass/production.scss b/sass/production.scss index 42077d91..24f1a3c7 100644 --- a/sass/production.scss +++ b/sass/production.scss @@ -8,35 +8,36 @@ // Plugins imported alphabatically and by order (remove if not needed) -@import "smartadmin/plugin-bootstrap-markdown"; -@import "smartadmin/plugin-bootstrap-slider"; -@import "smartadmin/plugin-bootstrap-tagsinput"; -@import "smartadmin/plugin-bootstrap-timepicker"; -@import "smartadmin/plugin-clockpicker"; -@import "smartadmin/plugin-colorpicker"; -@import "smartadmin/plugin-dataTables.bootstrap"; -@import "smartadmin/plugin-dataTables.colReorder"; -@import "smartadmin/plugin-dataTables.colVis"; -@import "smartadmin/plugin-dataTables.tableTools"; -@import "smartadmin/plugin-dataTables.responsive"; -@import "smartadmin/plugin-dataTables-cust"; -@import "smartadmin/plugin-dropzone"; -@import "smartadmin/plugin-fd-slider"; -@import "smartadmin/plugin-fullcalendar"; -@import "smartadmin/plugin-ion"; -@import "smartadmin/plugin-jarviswidget"; -@import "smartadmin/plugin-jcrop"; -@import "smartadmin/plugin-jqgrid"; -@import "smartadmin/plugin-select2"; -@import "smartadmin/plugin-xeditable"; -@import "smartadmin/plugin-smart-notifications"; -@import "smartadmin/plugin-summernote"; -@import "smartadmin/plugin-superbox"; -@import "smartadmin/plugin-voicecommand"; +// @import "smartadmin/plugin-bootstrap-markdown"; +// @import "smartadmin/plugin-bootstrap-slider"; +// @import "smartadmin/plugin-bootstrap-tagsinput"; +// @import "smartadmin/plugin-bootstrap-timepicker"; +// @import "smartadmin/plugin-clockpicker"; +// @import "smartadmin/plugin-colorpicker"; +// @import "smartadmin/plugin-dataTables.bootstrap"; +// @import "smartadmin/plugin-dataTables.colReorder"; +// @import "smartadmin/plugin-dataTables.colVis"; +// @import "smartadmin/plugin-dataTables.tableTools"; +// @import "smartadmin/plugin-dataTables.responsive"; +// @import "smartadmin/plugin-dataTables-cust"; +// @import "smartadmin/plugin-dropzone"; +// @import "smartadmin/plugin-fd-slider"; +// @import "smartadmin/plugin-fullcalendar"; +// @import "smartadmin/plugin-ion"; +// @import "smartadmin/plugin-jarviswidget"; +// @import "smartadmin/plugin-jcrop"; +// @import "smartadmin/plugin-jqgrid"; +// @import "smartadmin/plugin-select2"; +// @import "smartadmin/plugin-xeditable"; +// @import "smartadmin/plugin-smart-notifications"; +// @import "smartadmin/plugin-summernote"; +// @import "smartadmin/plugin-superbox"; +// @import "smartadmin/plugin-voicecommand"; // Libraries (Remove if not needed) @import "library/animation/animation-engine"; @import "library/jqueryui/jquery-ui-1.10.3.custom"; +@import "library/custom-scrollbar/mCustomScrollbar"; // malihu-custom-scrollbar-plugin // Individual pages, sections, and components. You can remove any of these sections you don't use diff --git a/sass/smartadmin/_main.scss b/sass/smartadmin/_main.scss index 5d8b0cb6..4c147f6c 100644 --- a/sass/smartadmin/_main.scss +++ b/sass/smartadmin/_main.scss @@ -1,8 +1,7 @@ html { margin: 0; padding: 0; - min-height: 100%; - background:url("#{$base-url}/#{$html-background-image}") $html-background-color; + height: 100%; position:relative; } @@ -11,6 +10,7 @@ body { padding: 0; min-height: 100%; background:url("#{$base-url}/#{$body-background-image}") $body-background-color; + background-repeat: no-repeat; direction:ltr; } @@ -1861,15 +1861,14 @@ input[type="text"]:focus + .input-group-addon { } .nav-tabs>li>a { - @include border-top-radius(5px); color: $gray-lighter; &:hover{ color: $gray-darkest; + border-color: transparent transparent $gray-lighter transparent; } } .nav-tabs > li.active > a { - @include box-shadow($orange 0 -2px 0); background-color: $gray-lighter; color: $gray-darker; diff --git a/templates/modules/map_dialog.html b/templates/modules/map_dialog.html new file mode 100644 index 00000000..c182f109 --- /dev/null +++ b/templates/modules/map_dialog.html @@ -0,0 +1,37 @@ +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + + + +
    +
    +
    \ No newline at end of file diff --git a/templates/modules/tabs.html b/templates/modules/tabs.html index c85a2eb8..1bb09966 100644 --- a/templates/modules/tabs.html +++ b/templates/modules/tabs.html @@ -1,6 +1,11 @@