From 22f6907743e12e40211dd8831cdec661250fbe3e Mon Sep 17 00:00:00 2001 From: Robert McGovern Date: Wed, 9 Sep 2020 21:16:23 +0100 Subject: [PATCH] Error state for mobile done ... well there are things to do. Placeholder text could be nudged. The email text positioning could be moved too. There is JavaScript functions to clear error state, show error, and validate email address. --- .../css/style.css | 63 +++++++---- .../ping-coming-soon-page-master/index.html | 11 +- .../ping-coming-soon-page-master/js/script.js | 103 ++++++++++++++++++ .../work-through/mobile-error-diff.png | Bin 0 -> 56605 bytes .../work-through/myProcess.md | 23 ++++ notes.md | 6 + 6 files changed, 182 insertions(+), 24 deletions(-) create mode 100644 FrontendMentor/ping-coming-soon-page-master/work-through/mobile-error-diff.png diff --git a/FrontendMentor/ping-coming-soon-page-master/css/style.css b/FrontendMentor/ping-coming-soon-page-master/css/style.css index 4b76e6b..740cc2b 100644 --- a/FrontendMentor/ping-coming-soon-page-master/css/style.css +++ b/FrontendMentor/ping-coming-soon-page-master/css/style.css @@ -40,7 +40,7 @@ body { } .titleSection { - margin-top: 2rem; + margin-top: 1.95rem; } .titleSection p { @@ -48,9 +48,9 @@ body { } .titleSection .line1 { + font-size: 1.1rem; font-weight: 300; color: var(--site-gray); - letter-spacing: 1.2px; } .line1 b { @@ -59,7 +59,7 @@ body { } .titleSection .line2 { - margin-top: 0.95rem; + margin-top: 0.9rem; font-size: 12px; color: var(--site-gray); } @@ -75,23 +75,26 @@ body { width: 83%; } -.formSection input[type=email] { +.formSection input[type=text] { font-family: 'Libre Franklin', sans-serif; - width: calc(100% - 46px); + width: calc(100% - 44px); color: black; font-size: 12px; font-weight: 300; - border: 2px solid var(--site-paleBlue); + border: 1px solid var(--site-paleBlue); padding: 0.55rem 0; padding-left: 20px; padding-right: 20px; text-align: justify; text-decoration: none; - /* cursor: ; */ border-radius: 32px; } +input[type="text"].errorBorder { + border-color: var(--site-lightRed); +} + .formSection input::placeholder{ padding-left: 8px; color: var(--site-paleBlue);; @@ -108,12 +111,30 @@ body { padding: 0.625rem 0; text-align: center; text-decoration: none; - /* display: inline-block; */ - /* margin: 4px 2px; */ cursor: pointer; border-radius: 32px; - box-shadow: 0px 3px 10px 1px var(--site-paleBlue); /* 10px 5px 10px*/ + box-shadow: 0px 3px 10px 1px var(--site-paleBlue); +} +.notifyButton.notifyError { + transform: translate(0, 1.6rem); +} + +.errorSection { + height: 0; + padding: 0; + transform: translate(0, 0.35rem); +} + +.errorMessage { + font-style: italic; + font-size: 10px; + opacity: 0; + color: var(--site-lightRed); +} + +.errorMessage.visible { + opacity: 1; } .imageSection { @@ -156,18 +177,18 @@ footer { .attribution { font-size: 11px; text-align: center; } .attribution a i { color: hsl(228, 45%, 44%); } -@media screen and (max-width: 600px) { +@media screen and (max-width: 800px) { .flexContainer { width: 90vw; height: 100vh; } .formSection button { - margin-top: 0.45rem; + margin-top: 0.55rem; } } -@media screen and (min-width: 600px) { +@media screen and (min-width: 800px) { .flexContainer { width: 50vw; height: 100vh; @@ -182,17 +203,17 @@ footer { .titleSection { margin-top: 2.5rem; } - + .titleSection .line1 { font-weight: 300; letter-spacing: 1.3px; font-size: 45px; } - + .line1 b { font-weight: 700; } - + .titleSection .line2 { margin-top: 0.95rem; font-size: 20px; @@ -209,7 +230,7 @@ footer { width: 88%; } - .formSection input[type=email] { + .formSection input[type=text] { flex-basis: 66%; width: calc(100% - 46px); @@ -219,6 +240,7 @@ footer { padding-left: 20px; padding-right: 20px; } + .formSection button { margin-left: 1rem; flex-basis: 34%; @@ -227,17 +249,16 @@ footer { font-weight: 300; padding: 0.8rem 0; - box-shadow: 0px 3px 10px 1px var(--site-paleBlue); /* 10px 5px 10px*/ + box-shadow: 0px 3px 10px 1px var(--site-paleBlue); } - + .imageSection { margin-top: 4.3rem; width: 89%; } - + .copyright { font-size: 12px; margin-bottom: 1.75rem; } - } \ No newline at end of file diff --git a/FrontendMentor/ping-coming-soon-page-master/index.html b/FrontendMentor/ping-coming-soon-page-master/index.html index 959cd40..e36d96f 100644 --- a/FrontendMentor/ping-coming-soon-page-master/index.html +++ b/FrontendMentor/ping-coming-soon-page-master/index.html @@ -24,9 +24,13 @@

Subscribe and get notified

-
- - + + + +
+

Placeholder Text

+
+
@@ -57,5 +61,6 @@ Coded by Robert McGovern.

+ \ No newline at end of file diff --git a/FrontendMentor/ping-coming-soon-page-master/js/script.js b/FrontendMentor/ping-coming-soon-page-master/js/script.js index 23e72fd..61bdd37 100644 --- a/FrontendMentor/ping-coming-soon-page-master/js/script.js +++ b/FrontendMentor/ping-coming-soon-page-master/js/script.js @@ -1,2 +1,105 @@ "use strict"; +const console = window.console; +const emailInput = document.getElementById("emailInput"); +const errorMessage = document.getElementById("errorMessage"); +const errorSection = document.getElementById("errorSection"); +const notifyButton = document.getElementById("notifyButton"); + +const errorMessageForgotAddress = "Whoops! It looks like you forgot to add your email"; +const errorMessageInvalidAddress = "Please provide a valid email address"; + +/* +* this is my "simple" regex for email addresses. It does not cover all the possibilities that are allowed +* for the local and domain parts. For a more "correct" / comprehensive regex, there is one at +* https://stackoverflow.com/questions/3844431/are-email-addresses-allowed-to-contain-non-alphanumeric-characters +* +* For local part you can use ASCII: +* Latin letters A - Z a - z +* digits 0 - 9 +* special characters !#$%&'*+-/=?^_`{|}~ +* dot ., that it is not first or last, and not in sequence +* space and "(),:;<>@[] characters are allowed with restrictions (they are only allowed inside a quoted string, a backslash or double-quote must be preceded by a backslash) +* Plus since 2012 you can use international characters above U+007F, encoded as UTF-8. +* +* Domain part is more restricted: +* Latin letters A - Z a - z +* digits 0 - 9 +* hyphen -, that is not first or last, multiple hyphens in sequence are allowed. +* +* Recommended regex is: ^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,}) +*/ +const validEmailFormat = /^[A-Za-z0-9][\w\+]*@[A-Za-z0-9]{3,}\.[A-Za-z]{2,}$/i; + + +/* +* Don't quite see the point in this, setting "type=email" does some validation +* Setting the input to "required" prevents submitting an empty field +* +* Only benefit I see is the being able to set an error message +* Maybe one form of solution is doing exactly that. Use onclick event on the button +* if the field is empty, unhide the error field +*/ +function validateEmailAddress() { + const submittedEmailAddress = document.forms.emailForm.emailInput.value; + // test email is valid via regex + const isValidEmailAddress = validEmailFormat.test(submittedEmailAddress); + + if (submittedEmailAddress.length === 0) { + showError(errorMessageForgotAddress); + return false; + } else if (!isValidEmailAddress) { + showError(errorMessageInvalidAddress); + return false; + } else { + return true; + } +} + +function showError(message) { + errorMessage.innerText = message; + errorMessage.classList.add("visible"); + emailInput.classList.add("errorBorder"); + notifyButton.classList.add("notifyError"); + // errorSection.hidden = false; +} + +/* +* (Possibly) To be called as user types in the email field. If an error message has been shown, +* then hide the message and return the fields to normal +*/ +function clearError() { + errorMessage.classList.remove("visible"); + emailInput.classList.remove("errorBorder"); + notifyButton.classList.remove("notifyError"); + // errorSection.hidden = true; +} + +function testRegex() { + console.log("Should all be false"); + console.log(validEmailFormat.test("submittedEmailAddress")); + console.log(validEmailFormat.test("s@.NET")); + console.log(validEmailFormat.test("@")); + console.log(validEmailFormat.test("@.")); + console.log(validEmailFormat.test("@.net")); + console.log(validEmailFormat.test("@tarasis.net")); + console.log(validEmailFormat.test("adsadasds@")); + console.log(validEmailFormat.test("__submittedEmailAddress")); + console.log(validEmailFormat.test("spam@tarasis.99")); + console.log(validEmailFormat.test("rob@.net")); + console.log(validEmailFormat.test("spam@tarasis")); + console.log(validEmailFormat.test("spam@tarasis.a")); + console.log(validEmailFormat.test("s@ta.net")); + console.log(validEmailFormat.test("_@tarasis.net")); + console.log(validEmailFormat.test("_3@tarasis.net")); + + console.log("\n Should all be true"); + console.log(validEmailFormat.test("spam@tarasis.net")); + console.log(validEmailFormat.test("rob@tad.io")); + console.log(validEmailFormat.test("s@tarasis.net")); + console.log(validEmailFormat.test("s@tarasis.net")); + console.log(validEmailFormat.test("s_@tarasis.net")); + console.log(validEmailFormat.test("s+blah@tarasis.net")); // this can be true, some servers use this for filtering +} + +// testRegex(); \ No newline at end of file diff --git a/FrontendMentor/ping-coming-soon-page-master/work-through/mobile-error-diff.png b/FrontendMentor/ping-coming-soon-page-master/work-through/mobile-error-diff.png new file mode 100644 index 0000000000000000000000000000000000000000..f5e52c884e96ee01a872064ecd360622f6943a13 GIT binary patch literal 56605 zcmeFYRdD1$lr88swV4^q%*@Q(W@dJq*==TKW@fw1%*@Qp%*?#*nR#y}-p2lI?AKO= zN~bdO-kZ9TGLKHGLgi${V4<*}fPjEtCB%glfPj900RaIsLx6vmpr~kiYn}@4jgDb8EaELvj;o zV@%AO%=u3HYGNS5m45~AM(=DcvX*s<-b?|uoVq}O;(-mNahG27b+S!C=DmGz2kbkQ zgrHIG@|M}T=U46hFE8+oEQ1Uj8@eF{7);=>4WC{_uvct`xdp?k>t6gn%)s5S4Y5n> zSvtzzRSku39$5FI!Cq58V!vo8rh704h=C9kv|{2}!Z78=v2YD+Y9{?HC83zBKl_Bj z8#FV!Ai@^jd!_G}4v6qRnGM@uKZmQ2`5pH-2VXkZY*EeWn)$D^RnM*Ld$kF@Em!WA4D%6|oy; z5C>uBN3Mj`2xqsNDtDLY&wq_S^1Uy!ExRwPE+d|UKHfy-z^ry18i0|?y$oWbxqrUdSJx^!5c*Y0dSz`w5R=vFn}(~(z#wS>WAboNPSed~b) z3b4&Yf?_6>-<@GQbToy$>sKl!$Uqa3?{!~GusKzEFln4ctu?I8^5OfRN&3sJ>HR~7 zg*D{(^&)cc+@PN!(*oayEfJMs6k|a29%R({iVn{gFQGy{F1<~a9QjIWay8v<`07L4 zfYQ)r3>}}mP4i@dwx6N8M;v%->YJUgOdfniWI;q7#q54~0bq#b!clynmZ2Pd5$S)j zcK>MhyC}&9nR)mHasvQ62UZ85qxkjZ;3)ZN*g|E1q4Pr@19fb3HiHHAK)8feW>Z}M z8253#hV}z+3&Yp&YsCN&Ls(6bAgF+VL!3dupPBH&v;ZG~JS=AP!@sXu z50qi{7>jj)-N1uhK85)gUJ;H1)LcYMn5&O#Xll><;H;r*O?nNM8dEtmD-d?{L@%15 ztR9_VRc@OZ6jyZL&a&MuyRsu&>#m>ONHh1kycTlhPiJ_x(6^|ey_W0r8x0q1Zd82# zsovxr?CXu^w`YoXS>RLvzZ?Jqc^zUW07j4@H)~p?S=L4BS;UAi42dO#Ran=6u*OGC z%#v)ALtR=xC%ESLXuAN^j zH$IOk=PoC_aIBb1VoB&J#X2f0OD94nc{7qXh&TI_*^}?X;WZnE8io^%?FW zCM#4rQaZ9GuqK!$*%~NUFYTc9Al|4>x0kPHf@iFMv`}>lqBybPX{ehBd{d)%wl)P;-@?_rCtY%IIESe4m5w5hUF>)qurN z`ncv8SN~gPboNvLU0hW}RrVDTA6FNxH~kmEC+(-%540avz5rh#;0@p_uoch;P$4iW zuqvoYh#RO>r~xQt=ncfz1__V&y`l(d>GZ)siC**G&)(pGw}9Wmpu*+C3c`~i+=wJ$ ze?!5;l0x7@J`s@79njXO76~6^G8ET;aZ9{MJTpPMLE?szhhl{W$FWPWj3A8U$Mq>x zC)6tCCHVCJQVB|Oo?|T=qJ}CjKrA5zED#U zo{_rq|KWdZ%Ba;U(aKy`bPa27@d)y0doTA(@QW4<>=hDm6EPfc98ejkl1xv0Pl%$3 zq^Kj;q_|SPRMb(CSI#YE{`;#eti-JpPu{a&@UKZ(Qt=-l+_K85tjf*Y&Yavl#C$t} zy)l)O3Iffurp`H(rTe+^xs3VM0+EHki)qtn^N+KYvsu%Kv$?19$L+JIiw_Gtxo;}6 z3Uq2!0#|jN8NAY8wV&`Hu>MN^ctZWt{q#fEQHTS>GbQWCEjOflKzmGsOr)cvBcwb< zYKqWvAVtyR&*L8BGU*d3WogA}x(zvX)lKA0F2)qb5_OhMeih>ta2h;yXbo^p)-^v^ zO;~?g4O$IYIrX)1v}D@8U0UyZEqjg%tq_eF&MU4n_1qo)xxC0- z<8r3I%(-kn4t%hG{QIPlw<>2*vehxs9_=#qjPacC>~X#Dz_ZVFQGB4f|Foz();0X4 z?W5A&<8#8F*}dBxEdVZXAfW3n?N8iRD)FGZlF78Hl*DD5#b!xmC~JokVT(B zo|uyP%sRq;;=)L}Le@ejLT;=&I;PYyf67cg!Bs)0&CbK*Xf? z^to}()!Cg?_i%E2goo69(ul!mrWWsFqqWH%-$Zx1lWQex#dxL5!NURE;lMuJA^Fzh z7W`@Kif*GT?kd~6n7?paji8dg-S*yR(pOPrTtq@7{$~XoD?So;g2VCJ4sNgw8WpN) zQjDa56saVQl;)W5DAZWeD9D%?FA(t@5D?tqPcOq;k3v z+fv8^%F?d+p83{1#{w*lDwo$Q=u_xA@)%j4tV~8Nm(xT2>B-zf`vchTZKj&vMcCX} zK~q>+R#pkt<<C zRc^MJ*j)@d?VWvqxPff2)muBR&o{5Imas0{OC6}(#oSIGtc^C&ZOOOHd8j^EpH;uw zzVS@BYd<+%KJn6f*nZ@$^l1_;5cnv~{yIG=nA#6snyE@IV%(bUqVS@+e!S-jbjF<$78=qHQT}oVO=csIn-%99w@ND|{^x(DpT#C-f z*5Z?;DWQR(=A`TVKyzCVCXbZ$t$Rds2!>M zZP$KKyWcrJ)~5;p0yPXY2^13P3@wzRmr$`xTAd}#r*qfc)YX@vPz=;;(9za56rWSK z5FFBd^7l&ViI7jZ!Jfl4fv5gOO{WgMvcERDYPMR;>B#=+sNx9eRAGnx0C4$h^|U3w zzaWwMnEO2Xw(=YddJabo%Za>>$cVv-_Q?5e(XW7#HHb8U-G@AeB^IU`=AC^_U&B&L z%|Sars!aW$y1H@SnhDvq&Q$MgGur>#Ym+H$p{_|^*Y%H#j0P&3rPeEoLwevggJPkxA<7r=7S6Ymi!2FpT$Oejegs!tb~WB{I`Q9uA4R^T!~dk)qQsQ!yl@)2uY9MU;#u!#d85N~^BIJ=7WFa^seFT6jd2rD_;IP<2t9Qe@pV;$`vt z=RkXn`GM!XbGL61J{~`uPu+9S`|=ZshlqXdZQ=3kxctTPY(1$3c`Kk(*$e%3lfH`W z>sD-FDh4ciAVD`e=}bjsan}ZPj0nRBYc8B8BD}{PQ7hz;*rAqVgVhZ`hw<% ziGNX}u?gokLqh9=8>gMXV*}XZ7z+cP6{&@qlv)Q+LylVel3HK*D?Ov$qlM64q4hT6 z6t3Y1>`H}kT33UoQ{@TdSuth=<_OmB)QD7xR5CSYjVR4{t9i?gCgU}h)h(yzUE!HNt$*S7~;BAxhox=rZLZulcvI6Vj>s65cRpz0unUW`5oMBDzUVR(62 zGmx1hLrH`9z4g5Xh8sn~zRh%RgtzOrJ%3rJY%|?@6M81LPLrv$$(_U2E?2Mg7rdvBr}tcZD84~& zJk1=M)=zsKD6Pr2jSfU_{bQW-FnS_%`b#yWMp&^vDrEWq?0&&Gx|I}}ES(hJ*y>i_Z$2GjQB$FfKsw=>Gh@Hp9{FT;8-0taa(Xq_c=VJa) zouhj{oFSb~73L|+6=OC)SD7zkE5uuy|5uIxg4DFpbzw}oTr&Mgb>THOVoPk1d`bzP zhGf0u{Zh)SS~h!D^V~K7MTADa=gzC4Q z^_|ouT6ynQ11Cf+Vnk6Z%9P4A$`i`)OY=*Ye;wFq|9E`%FT@8Hzsqth*l-!H=y|9V z%NI(V;#|4TzPvzB(LL&Ndb!Fv2ulfCcxh_84`$P9NPgpl3NG zpTE+doA?N?{kiI7$lLr(h7vgehiOUOuoLvi-Mn(ZGJdS|5Q9B10U}JI>ddnDK6$y^ zC2*&HgE<^2Ka%{U^>kg(wIH2)r?yD~;AceJV>X5*_R$#q_4`coS~O`72@f&Rf)j__ z4C-nomML(sCn31FAx{B>2VkWNgJtyc9ca%R`b&8Zo-qiFrvF$X#Xr8ab?@ z@!g{+#T_K}jZRPjiExrw8%rcs{9QCxdT@#S(2TbDW5KhaGhMi}R#0VC-ABJxGU2kQ zv`M|$z7#hSX70Iywo+t~Z0rYseS5kk2(X=df(;3<>K|}#&cE}a0o!PecIBe9h;>RbPx5m`tl>!2HS=Iry39)0>~{tv|7## zJopFz9tTW12R_0N9s$%YuZGRHJ%{+1-VqMVuSlPp8VWl%b}AscZ)wNb)Pyda9Uvi& zn%3vtV{35Fpr4{J&N5D|f?(kjpOm5syFUrtqRQnrCZ_&Uymt29in!L8Y z+Pns?dZkXfcE~=4-JHFFJ=>PV{x0tZZs%aXVdf78JY~lh=ZB0Gi7ARrZzRJgJ`A|)zMVmRsogAdHgz_6v({MSU!IdIo;%Q7~bhnq=TVBH{GNUgkg3&pJN z5$}2SWnsjj-?7ed?fHI@we!XyC5pQv8lq_8PsL5g7-hUuvan=29JRpgZ5X-(*P1+$ z9Cf$2KgHjbL07<+W9p1f#8})B~Coc%B zA42}?7im-sig>U%v=OCih&7cqQ3tsvi$6jiq$tOr45>wt#32e4Utu;$NMdM1V&tfd ziOtUSfzbiZw&a1zLDrGkp7asZ!S5q)s%Z)}LX^4@2{lDwr39e}fee6ee7{62E0fhu z99p7$0!y4j>{kACSpa!@Swe|S8Mf)X>25<_1DVst10I$d_9inc{R!(Fy-kBs-Dx#L zy{C2Z4&daun`1$F{37b771vpml#=_^Rp-!q1u%oa2Z5`87NWVl){O1=ul2Hk4C283 z(0Tt8m9`YdEMuK<&UPDB84n$;&nUrj-ynb5V90^Y!q5W^F>x_nl}F|5iV7Yb2m33t zkylOFoydfuq`NG1hGeWXTup(sRI19%{z@tyM9;jBrAk-bFVB2OxzELJt0k_hAj3-< z9&ztycjkkc=pjVeP3}94uBTqpyd6|-v(HvN^Jkiu%pJ%3x4-Zm_}SjCudc@6kY09G`FQ9LA39*Ym+sNgs5pK$PDY0_aDu8PNBl z1kjJ~4eNUY0s@H(0{Z#ANBZ7`bAbO>?GLaVkpG2&ng2BuP!y7o_}(iT+8Y~NJDA!y z+JPO&f4f>VQ&MwOlm5kNXk$gIZ)9U&OzUE0`_BZ3+lBKRS{Xa)16-^utsOXBcnJTa z1?M;ZS4>9;_>U%z7CeM%(sBSH8+&5_3oSD(Js~d?007{&H!|T=5ElI}^Y33ggr<&; zww!cy&d$!X&P=p6_P^;EI5;@y=o#r48EL*-&^WkSJLz#mpZzp;G5haG)(-!5SlN*j~uS>f6wf_rLS|U&jBl^8Yma zkC5vB9g>BW`G1D|A2t7F$xZj~$p1$s{xi-0QTm-{UMOz5|9#GQp)@`T+^}fi}m-HA@mUq-fBnHyW$|u^daMCdE;3t zN)bnTjpsv&bhWA3w0QOTrRu#|Fxv=1_TZnO2P;QEGSHx=|7f?yW>w^Ek^#9Mp|I_tAiU<)1 z^x4JjTZE-c^S5{* z$Ss8Y2_`1T5ImGclNQ#%jrQA4$Pfwl&FahB-Y=2v_}*Wh_SDWtd2sU!N(3lTDYQ~e zZ$E==&zB*QKr|gRz&TDWsgVX|Nx~5#hiuQECGMZ#b4qLA?hdDfC^LIzh{P~ulo0z% zODhNCCPj`fu)9YTixHA2df#?zF;aiQS*TXUud|vr!XM zr4nO$zk;W}z&oFRdxsUhYDB=m8aldQK=RHkCb?NIH{&^X7-D0cnorl567b$$yEAaI z`~1XnK~Llg5c9hHFs-QSS)K-3ELRUC|0q}@3{Kq87LSA>5-W73MU0L!N_lK2#o@9? z_z8bLFdGH;{&>U}9(h*9)N8B%VP`_LEujz2$A{QAJPZMc%ju_Frb;k~*7;j61xyS^`Ef1sD2UgnK#1uAX^k&ye=sjB?d*^2l^kw3SuDjF)w*03s$O5Z zHyTc?vOIr$-HSbM3tb5*qqZ>ys_E22$&FVdf9;zrgS08xIanUBM6mONZFO2<*QO>= z*h)z;h3aW(CkAQXhzW(}($j=y;W0PW1Mm!?E=_o~?%L4`mJ`*c8-a=^vkbKkkOsY9 z>big;!C?yQpS{1{l4E6xkFT_D0EKsVL#aOB7kBD)!e(OxLHqM46}#IzJFDfg9*A$( z9lkd{^eUH}wsv1n_XiGDik5^b&DG#V(?*yrrN6&ew82A|wGoH7`gz<5b;*@@zd=c5 z=^@RGAR5n++s)kXY!Nr=&?6m}RR5STWl7$FljplsUmx!`dZw&75vfvEO>N&`zFTM| zla92AZ8lw3SZGeJ>)hZi|F75I-cgs8GQt&Kw)%_}_w=xW7?0IeRxL5EY9#%uXN6!MIVI{v$rc@+Lsr>pQBU0h`WN-t=Rz!9q2+vNOxs zG?qN)vpqc)!bKq^HrlFvnzbpW;JPN-1A%5@0s{xHr>AeIdhda)=4o4=c;Tct$UHA@ zUVZ1lu~NqmLgWf-;X$pv8ALgkoLx9Z^<$fzn>oZ>1Da@r7>nb0xvvR{uH%^ytL(4c z84cUf5j#+yA;&xk;V+H|EE|8QL(G%!`EGbfMdLW4K0Rzg_wkIWs9>c$iV*ZA4#_36 z;f`K;vE7BLx!5plzvisMQ?0=oRS*%5$iAK-0Y3u=2cy3?5ZW%tKURo1)09vESUtr3 z(wpq_Abm?j_z+xM$QtNrebz@A*Xem7nz6G94JJADaZf_Oh^GefV4>ZQev4rg7~)eJ zBBpD;ydOdc1AcmH_hj|ckH3#d0_V_jI120z)29yIRra#KbS^_8Q&d|BdDF!KpAkom z+vA@2^Q26-FRU=rW$F!|8CYW(qjxvSi`ZOIZNXUnV+uwXaN9EFz2p3~5C5eHj^=5N zt}aOv|G69*zue-^CSz+bTSwO(a_9Mh4ul*UAg8Dqxice=!)}Z5dooKPf(gZ#qrK${ zU|&zmyrB-tFnSZPx{5WwsO;dzOePi?CBGxY?)}NVJ3}7l0V}VW$gik~yjZSbwkU+V zW&7;~sH)Qmg3R48M2rywZ_;2$N1bqUf*Dk>*zMKciYAh&V!g9n1fqloUzHEjyA|t+ z0?ORV+g5Cc)LUBJ^1*`FkE3%%j!ifogW1+h8)2EXeIbJR`pMd-a||o_;=S0 zz%Qvz5ZSVP<7TXR51jwcy3QI2VT*2iE$i++>BzPxA)r}%W^*u_s8(+(zvIgO)!NFr z{%6f9M7W;HzErc(5>rD{Q;LV`*!~dJ{+hdOy?VtIFwmW|w5m#s z8m+Ipn?KZ>M4OqFRbxYGQPPgkUzpHNf^p#vBDfD-&#U4T;ap3i!f{P^?XVHO$a<%s zJ^tgspX%53(VwNm#5<*w_S>+-}MeG88e9( zxVR!#Ry09DLBI60jfvY&9I=Aoa0MM4>h2ozA#(rzg&Hxc?cY+zAjwK@mV0h;h!0F1 zx2bh3&?0O$a4s~aj?(n_{Bxpp+DSFnPv6Sxat+AxdNupLL%Ty-*kveHlStv-#Fn3u;(Qrqc&jjyQ<*t zjwXbN2Ra(-Fq>}vAUJ`4>a2rj2qa=+WA}0MCd9@f&d<-M{`mMv%9=$nBiD6eN}^Wx%gVyb;Pb`{ zBWv<_vCrUe7^Ih9y|}nQ(|tfC2$OSC;?Pn@k$oYDP1H7`0#^3iSCZM#tT70DDdnd0 zKPB@~);LgYN!Xe#l%nx2%xB)8M@_i3 zTJ|8yw($?-vpojHoQpA|4Q)?DjQyCeiAuL_Pc1+k-02gWc6bNe*$fF}6)TwC3WpSV zVWc-&iln?eKHM8@U1plvSPYcT{booSS-m^eX&F4V|Ga15zW0USyPh#zu5-pmY9XGy z&uDUkkX-0(NGamR8$l|eBf8D z&`_2mbz%`lkQCY>a&~S)Y#kou;VR4?JG_SOdX{Q-dh1wrJ|;$WKyZS+ zL$EmQpU_;)_jTznLw>&dI_k=8Fr@f%!Q+=}1Q%O0P!d*fQ`Ys4*}uyWAOX?!vNC0O zu!>!Mb!>M3NHQ~DgETZ5xpRc?2^xwa5m7r`uSXEXq;J{r_RW*_LE-TD!fmCIPj@-W zwPpr>^9|Z%QwlTws8q?td}pE(7kHLZpUmX?ElArF8@P?~OOl?Q-88Jc+PsiB;x>L- zib2Qw!wFdn@+FJMy<8-*mOW0MnuHWbmuKQ zuFLj2S{O2>=VZDMRNlK!=bQ#sk-Q5*vXQI6qpY5bCM)9+!Sf{H*a|D;HMlt-V>CP{&{@qu8!%h0ecK zS-!hm(1V4j1=zjntUx!XSRNl`Tf$c@bEXy{dlTBkzM1Z}r?AVQrpDf?lL=<7fpsoQK~n&@SWLHPj1|AyHwBpLtEjV!Lr*AY)^adsfNuTixtav ziwx~Y8&5rhfRgPMCLT4157_5RWZC>u*08_|8u7@1nbp}}=W!*Zhz+$CvvdmdN8&qz zQcUaiEe zhNdyiw&?<5)A?c&daF&{c?bWUaLetpcSlDX+k*OUQC%{Hqdn|HyHzICiD$+01(oZ7 zG z(%1~#{S2X%))|}*NiP9rr8s@3iBz`trhJ@St2J&HPRD2XjDoxluQA8eWkTh0%O8EL5{XPqe&09#rtup$Rz?)lXXN zpaY$ql(CTKC_32~teh*@3E2~sD;hI)M|7=sXSlvEpD&xbLQhxS_InWn#DT+;9dnE6qGo(~*K0mhaB3U{>%lpmF%Hy_ zkma1^iaH}ka1!5`A^9r|=ze1CB|vv{AP~St!Wb5G!E?Yd+dms1k$D7)`Al$(PVjj? z;9q|f>-3-5;6iZ1J+?Z|4#yX$s_WE^D%e&;l!G=rw*9%F%%Sm3SfRU9D{9gp;2goO*rbWrj3d^6)S_z2a!RKQ4F7(lM!K-PId*`lJI8kk(TS^_GX{WDsgPZ~_2ec(xPw5vrqZuE4ovO7YS zU9Z_I;7v%T?u|TGUM96o6zzfGq|Cvr8XSvvy0dKnbEUVm-G5_vtg#x(_UE!Yukq!1 zjm{I2tz5?!0@Yls3vH||86ab|Tzx{yeRqDR zwwcgx!L}xZ=RoQZA!wW9vf>gh_*Er z)>+Ymu2vXu4b>u7B6(gvH19F~w6`K>YHzr_EG*qDct7JeUuALKWG>0GrUJ|8x9`C4vxWN`2W;BswsyKlY$IzKC} zF0>ulak>B;=j+7kjU+BsD$YMyDRnOydyX^VC&v{3;>xuZ!6%T(cq^}KaEKD&2w`5u1 zf#OQpG3L%%SWhf*8}<+VV8#67qq3=Aol}Sa`a9~N>C&uDElsKXKKDU<5+fvPXX?sn zBd=CE@1u+yNkAq&*AHiX$AlQltX`>D$I32)9y*yOcGwrHP7OCmwHhSUqn%qjGs-M+ zX{f)?VPs_9g;%$7t*uqIVN~AeqGBBADo2wxd0nSP&yuoEj&>-Ug{nBk?6@yuBeG^C z++kO<(>%$YhXNs>D59V=#V&;Y-&!cp6!%?3Y)+qVzDN5M{cID?8M;&s0iu4gtuRBZ zN@hhS-0CUDSawK2Ii9D7aVevbwB3+hXdJUaF7;nCp@s4phF+o9K!LG|ZAWvhZJM3aYBAx#>z7Dk((%FZ&?46MRs~#bZLQXGva#oAv|x z!ZNLY3KX?exTc066>5$HThWVAyX|j8DMHj=y6VDEDDkazd&3C;(Bg(rrwqK4$B zlOt}^9&rlEOP}qvXqO{g(=UF>GGU48OO}j|%^s==nOw?$D;*c1QG6R0+f+gNXI5yeBh0uzM%1%5;FbsN9IX zNwm$4-pvc=*Gi+cjJYltX#+6rA4}*5ahJ4cjPG`O|L~V!wn3r;r+cK~r7K9_gVcC} z7Mea1lpRbR&r4z6?vF6(e;6RQ7e(1bpC#HxY<~PFL_DUvqVNDSVSQ^AOs_XDz3!lu zJpaTJo+4h6=<3{=! z*_|8S?!`k2ufM~3wPWjVqu-`&GE6pk2dH3Uks%X>kubFkyt+1KR}o=INoYgeG0_P@ zJ|%J=WJdy8=)=a8K@oQz3Ibweb=pKjdBPx{8SNhhNWWDeePDp9Tj|vYHdcDI{)Yy& zc5MpuAZ^dCNRNyJlKxY1qMvG|Mr0(mHTm-j&&Pfr*lz{6(u8>dn!*6?=A_zjo6O?C z;ARL3+~n}G8gd2TkHCpE+Y8GWjhNt%w8a*SaAZ)((Rf)Q9citgi_f+#eW+6uYIg9^ z(^WG%vvptD7Asd|R~RhF{p z&6&`Nv#P$@N|Ix>`4JWx)t@(a#xw}G zWT+95`d#h4<#o=5K;6@6WQGpLEf*3sAXV;!k1MrTvC)Q5c7S#vUs?aF$W(V(fW%Tj zag6(tvwtIwe7kI^{GibUk`{juw^$G{ZiLd&0cQT~j7$l&s2_+pXGW=ALL0XD?W7sV=MZk;>2 zf7xuULPEcRarO|K%@A=Z2gOblQ_S0GyzhEuR04+0#)~RBX)Y_nu%9?$K&q|gtJ~}H zUTGjuS#=jB`EaTB^>_2RJIfe}hokI)Jg#PQZ{sK)sn>!sWEmON2-oY~<-f&U+rkiO zh$<(9si#MI0xWr5#Yn766y{Md-e`Mdg|#x@od&_%+Dlp}J5YR&XZ`W2vcb{GKbmGG zPwVQAH0lAY8bB56kLN|{)}lno^tv?>Xkubz4IX_U9nD@e$!f*D^-Z=@Vw4J8Y?Li_ zdm7gIN!=Y!n>6WuqZorhXG^y_(AK+IVG6(0(IqOin-g9rqR*BpSfO)@CrhQ>?~@*8x`)$#jvGZmSnhuZ4)aVy@!ErT@e**nY(pqcjf<~DrFkh#l`QB}2H`fO?YW(c3`2kf5Kl)8o}VLeb&_QB2MLUR_1 zR}z_Q;0)`L1}6JN;hbzOOL|jvJn21f`}?Xju_@(P`IMZUl@h<$z>b<>1dRh{=5AI< z2L>kI?xei-FaK6yX-T_G!2xU{DPbeRcsT{F7WH-m5Gd}M5TS&_rbeCQk<3H$vHS@4 z$8ioh_?w2Rk2iPH3X52kLE1 zV{RdKV25(VqF>ZBWek^p`TdMJefQKrppniSx+^i`71+poYoM&e9irB{;N#9``$hNg zYy0OvN^hFr1z>MOU;DnNkT&>a$a$k4;=9vgu{_8}Pt_cU8NvHZ&e0Aew^E?> z!jv{-XKF1UjmAoQJ8N%R)xORvsIFwdQ93jYK{5hgK{~ z0BT1=3)%zo3W(JdpBrgPE-9I!(mMT5##EEAiaK!U%&}@NVuQ7B5p(h(Yv|O;LcXu_ zL%#7eTzwFX<^hLI&1kI(m)AbQ5I~h0n3yyuFZbke5(%S#X{Ea5|7WD@dsISo{u8Tp}8SX%Q_EI>f` z%e@fdIZ(3-r6%v%)eaU*7|PDiX_AyaxXq-R2&RBF;ekWQoY4D9Py^m26>^FSk0;VX=?nZ8Ss9qv$U# ztNiQ%{ax;fHUMnk6n*(^%-rIc@_E|59bdp>ln73;TKJXcmAgt7=#bnXyARfRAVNv! zZgVrIsvBk7Y2kP|$x%(GFPD{_zp6T7B}7>9b(r2!L;-FZ3jY-)is}jZmXW>39Ogm3 zYVT^9P!9;BJk-B2{NExGiK#Ymd4O8{AL8d#`C;PafEmbw_rXj^&mG3CqQk`Q_HdML z?X?+_~`Lfrivt3~V=6`~PZNmQ{9 zCY(AsHjyTp^xfK{I!fYl1A47t+mYlEsD!Q_EoxZkzWeWgXuu23<;yL$%jOD>b}iG1 zGhN$5ftj2eFh(eI4ouLvAcgS|!=Z91UOh;aZnttGQ< z<7_He52N9FbnOKtdCK@C3M~j-G%Kw5-6>u>Uy3tO9*&m4nTG(WX6f{F2qe?^d z%6YHO0n`MCX%+}{IpPBPlm*sZZRft+Ku3f5W2svQ$47pvkk!s?v@#q}9Tae=GEsPw33fe_b_mK#&8t{H316ab!K z6p#cbO&1YZe{GC*LJ=@REP_>7Rx7JqnQ#EV1ky$#C@F^(Xu_x-#U16`%m%s+*X3!6 z#QPDTV(FS|0fHRXi35lUbbTuZq;cz!RhcWv3q17?L4g;k07S#pPO!>RQa27#u%i@j z&SAFTlJ>(g@IHkDB(>WVjt4+oomT2fai$02O%iD+(khvDk>dWfU2R5hO?7X*5o4 zHyijsHiO*9vOv^ihu6PE#c;a;h=S?iKMBs?Zm;`KH##58jMMYP+#0BpO5Crgpa8pa zFnh@@J+5;YHG3b$JPvAYgdVHmBMA`=Tecytussni%~{;yIC?HLOt*#IwuTXar7F~- z7^#TVBj3gSA->d%K8}XdYxa)N4&=2Ln0W^7TS;_>5UyRJq@*}qTXF}ugo~BBmTXVL-8J8koXo?hwXl5 z!!`P0;kFzT+VS9U;xjb@t#)aoQ7+`P2u7xxjZfGuxf2Y=j1ARMY(aAt+%vl zM^y+4@q|>G-Vg8$gpnJc#AJF2U*^uJDadv z8jWgY36aC; zov)I2nzmIj`@&d4P4t}(?J+?RGn#*dQ3KY}Z98mA=VkNyP2O*x(zwc`g8{rR`m3Jr zuYeq`@R9wO$ex$T78PBzFUMHL{^zc1A8}$tG~qfkIW2pOW5SK*OH=EfOV!GrFHWTc z7!bW+F*P-|tFC9<4d3_6R+DvAFQ$S!?w6gwmCnCv3fy>ygn$znu;X)r0kdSUM;iV2 zXm2Ei&@2|s#)rk|+CS3znBjSh;{GVOL|QQ>!XU=LU%$JlJG_aPYxH9Oe2n}VMC*AG z`4K9hCgn9Xq5OF|{)UV7d0QwoK{KIF9`+A}yq$~nfz^9|Td8w7SDmy<4>c!_;%eEB z@VairaroQP*r@NZqG;XYg4Jxh7DnppcH7%=HS%bsrnO2-`4aNDvitSE6+Zmt>1AnI z_UNz5bKiD8&1FBMUb}sWq*GpV_sR+#}n0IvLGtO7awN$&Sgu|W-UaGDP(6y_jI)u zST2mskfKxQKGAH$?(o4r+O#_9xaGBiQ)-|=xJz!S-u>MD?rXhj4_bw)$&NhkQlX}Q zKE<}%tks-f{UbTraANzxdp;<>oFsRI(9B$2Ya*(A0e85(-iT{U6ZD#TBj@?UvkwFS zCLMHT2nzX=e2NTtQRpF+9#|#V3`i9YKcs z4UFq^!Su37#uq^%)oy>Wb+-#*Ec^DIp=jn%{%5qp_c?IsK^)`Pidk^@v$-R zJFmJLSBf)rhim&2_v+7am;1`+^Uh1%{&G1R8_SLn-Y0xbtifRfiaTFbw26++OOxKG zTWNK9|G;m)Ffomz_&Edby#hQ@vaypNvgF@`3qj?p zDtZ~Y&+2L)D{xE);<=w>LdV4&Ug>^fX?A=@e!Jv*>3gpAdZrz$z?@rdj+1OcFDM`q zj}PK~$Lb03TAdfGD8H@w{*ZB|zTltucs)7Ol^g8|ee$l6)_kb_d^x|k88g=RERmIMf9+VeH#X-DO4s`q<){m5=Kk$4 zRqsFfPWNr}pT2w%7>g<9ME(>oxilM^o+}p?v)lT)HD_-ES^ZWPeNhyM5ko7jk&z6n*;79w?y>Z+3~mvG3&u@TyTj ztgiz|<#fP!_%vaN@8Q1#)`a?U8#fzP;8!U3TjWX@#RY)IBzM$IEKj2#H-ZX*+FGh4 zepE!k8ja=%z(m*V~`tH3|&216y4k4tQE0d|&(DNHSA0r3GWU6RPs0Pvm0< zv0pcQyWwOxgM2>wSm+oSb&x5tCF})^k;)-me3V|SIn|8wLW_D~*U3ta0A*Vz>W@sj z%RaU4I~DI&yKhL|_q7?wt*Gr;`I(v?t6B%pZ80Wq#&ly{3GUAark9SMcS!Ho3BA4% zzFYKb1>_(|oX3n>`w)m&i4?KTc)rg>zTw~9-|SzvR^QSA3ni_TpCzbo!||2gYe*_kR25dA1q!m1X1x89V1ygTg`gyszgY10YL#?aMZ|uIGa5lW}r2t40trwhJcpK2PQjYAJF{ zB_hbl4&{!+`*>=PibXqPKOHINI5dIh#e8aupfAiS-pAy8u|b*F)x?VPr_fwb{66*8H);`omhdZ$le~nK! z+_rhpNeK>0A2bjX>t*l7gw==Iv(HbNioTB6dV)vHeIA}3i83X2e`wQTBD_})=0tQX zOw8IJ)}DPjp&vcG7dsP5tlZRx-sZX(0(j+$;&FD~wV4zWK4D0@k7=#}k0B&mT84mB zqKT0=%&$iIA(Qp;R=ANOG~e{sEB5+|!U=nm(mpkHrCrg5kD2aA>1Gnj1?E#&)8Jx zEJ$4$fnKbuoGJC(#E>bZ?+pII33YV=*!Okq^-FjdCK}<1mFZxR94NHY^>mlIAvztd zYc4?^WP1u!-}vuUZQRu^E-b{o49l^F1I!f_`_i!~BE-Fl`&5{I%K!W?S-S!(e%rHt zi?1BsapJwQZzo-H1eO0BvA@n*F0wnvYCzO~n&LSr+e$n>p8rg~jH-xkwN<=$CJ@FI zBrK}d$%q$pX?X*rjwFH)uomoXfA%_#j9u!IwF?r5hz0v&&U%y?8jbn%bM4O6=^6;P zqW$^KjTbefW5@1ieqqb4JkD4}nF)iAs>h(2DiLd+9_WkwI zLy`No2=`g%i;l6%I^NeAaqN z;19}4;f}wDn@6yd0S<$U}i=fr}u`nfR*K45d9{l zJVzluNo2j8w=K|V%#k0wF^x2nlx_?>r=Wd=FNZ_KfVNHN9`na5te9U$bseSkI)J#p z^lOp`{p092!XA74GC57jsv0cCiBK)}F$Jthx%_rN9SH~LmGlF~*Ne|B4+t6|f7ML& zso>Qg55QcB8^M^s@J3z%Y-$V4U2#x##I~Y#+HBKv8M-2Xa+;S->?kzmF|Rz>sdt?{ zbNcPNZ&Al(KUxPoYu5443NBhszSzzgJUxL+00y>H$QsZGGkF7Cj?^1NL3^)39dJO-1eogpx z<4WA~(mJr3(BRIC`}@ z6ON;u5pD2l$y1B$ywkQyLvzq|4@iRZ=YN%9epIqgT18Jq?6jb9bh8sVc;^!^b|5Qx zDv9&`;0S`?Fqj4q;|DqRI8>xzM9HvP~5zHc#e(y8Ahms{ik%I+ScpzJd2I^ri;~?`a-Gp4rb%@{`fhX>=2Dv2HCI55mZ?Y0K+?+C;ubF(T%+Er zh?!<_Pq(o@m@>S!VTSWlC5(^nxQ3z3R;oxp`=ci_-w&rfAQ!s^nx8+H+X!SRGL8CQyw_CrU(QSChJFI25TmXxT**J(uqZAeXe}C{1oD%Yr~mX%R18q1{F?&8ouo<8 zSPt5i-k}5m4ap2lYR&7qTwE9Uc@^{vtY!r9XiY$kS`jbc7L<}{_{JfVvRRgM+!*lh~ zs4+5Msa0H|l5Ye4om+A?;7;-%yBh6dQF1Xaq_WO~2M66$(675A@NBLYU^8%h1**ST zNvb|Bx==n2R5#Qwb4*Xw0N}Cg_e8gtz;q7U71X1h;_eMtwUL+U^uTOnQ76ooEZdUX zpN}-q*>>dLP0v!a)M3vM3Zef8b%Z$JpTkRJB1EnTZ0@a=t9F-Fl~n z8)-dJb$Z-hC?4%=f)Q{l5n53=*uizQVj76?{pz=){>q-Af)+w|HyQXBjH2U=q&!2! z_+CrHBntFD&eGIcLG7Ve!c$W#dF?DAlhIc4Jh2n4J=d~9S{Z(FJm{5GBehSONzj#Gl&heyWHB2LW)Gxt8;MTIIkb>C6}x>I5PqC>u{>CT3kEVa&aXGu-oFCU1`ijXyFbQYG)D@EBntKbArzbSQB6`^EA zI%*Q9nJhXiuSi>=`@}9+b-^N0?}ncI<_J+j)V2m)YgS!kTPD;_tZhGR9nwE&#)7}r zEKOB{ErHY48A6|-PwkmkH1V*VA^JnZ|H5ZK^rJ?(!X?Ui|3LG7mixN-eMAd_WNGWT z7Zg15l5!r$yA&Cp(;f0)#uuI;bR5^UFKhg-tqYAM|LS!mPGr52@j~juU*@bvcT_{)%U%F_*v8;uX zQa6J*EU=`l-JT_ZgSO|7FF@N6dZ}JfwHb?`IOc};b|QE`j4ms77AVylsf~q&Xz-ET zNJbkf(qYdEmB=e2t=1rx_S*1`I5-}*|57H!7LE@VI_Gj^m4eo)r4}O|ORc~+$V#2@ z(q0Ltd^s_WQ|r}+A7Eh!-)#m{uGu!Uqr??vftY>;9`>6wUZ*3>#ah%x404`qhVZ$2 zz3qS}#{enyXo47_#Go;C`H8^rq@YG-Xl!RY}^H1>%gC3ml@6$T3W^#&+7R;nu4_YUz) z33>5>+z@L8|EXpsuiDK|D+ot)>MxVFcu0+ETb?uOi&)&9KWEj4C_;ZMSuM_Vv)NLAFS!BUk+-54WsM142| z75grwG4{CMr@EE}gH%y3>AcJibTQ;T-qBZlQOrft@^F=b$62#&Xm)HC?gd0$d>;vCL*<*&9vcF6;srZc+Bzt7C z1k)s|4L-+l9kwhXTx}L75wwLS2`wrF?LIJ=?OX_Fd&UgSX>I-ng%wCyzk9%q_`Ff_ zqBqg^$r_ESWJW)h_!>lX!yZa-`{mhsKJ}?`G<#4Vw_k97B%6LTQt_R6nJEtF0~1HU zbP5hwd(5ds*1%Y^%}#8F$8v4pYEExZEWwey>yxt zZQUj@6U(6x>Lu7T{!YqA8I;E6EQLo?Ld}`NLn2jCTK|^?z+uKPEiB{ItfyY}T26xg zIVmKLFfo}?R7n;dxE!y+xDtQDx*4@=L>A967kX3CF?(}nKrH4NpHC8xg&};j##XvU zToSt(S@%VZD6?cv$S`!wqJOc%H|&TjdSUdN=<`fAs@n^z+-@rZHe4*{^d}0KgTg-> zBK3$Z_0Nwt?B?M$KHAhn?0Xo2%Uw|H;PF-#%X;RQM2!s$8c=NP40vfJi^ z4(GJH#{3M*%@<*bFm_Zl%KgQ7)_sfo-mh}9?FG`M9I<;qE?9FRYJSXXeC!~Q-fl^( zsTIdFdd=}xwt6`=`a}=AFZ_fndRcZ4B(vXl%^f($)ogV0{q;QBZ4WOra|srMD-t!a zXthK4IY^atnav~nl5njfoJccjzYij!F= zgX0@@au04i7}Ej1xg~k{36L11Mf>j@?l8^jB%X{YqBd6y!Vk*sBdTri3~`{12p-{k zzUMVDg~vVHsEsDv(-k?Q745(}HCKX04-CQY*P0jZ7uCZXVBzO1h`;VBn@m^3F8Ppi zU1IV356|o)Y9X&p2HW9G#P#Tg-z(et7f8SH-(MC0KKmHNy567z+i$#x)N)~v5SyX!(;({+FHEJvmDUnXc<*KfDF*$;*fuHk8W)`0HCWpT9Yxh3Z z=@ufhu+t*1(O9WRF^syBTt8On1Zj4Urc@eAv%SLCSGSWBj3AC~c;9n;Myrm1XlIP( zqpNj>WjE-&V>hCy%RNHu%86Q(-wj1a&58h}RVEx6=};q(ku*^uoMBWt{(~I{;}Le% zUX*mBd#%>D#_l0A4)#wjX%pBAL~p5t(_`pq9c9K*nO(N-g9;tc-Ma3NK8KP!O=6ge_>}4v=VJL+elej<=a1{19w0gTN_N5PqB)ZsriyjD)AD$Dp#4bt z@}d&-?IuE#1tYG>phAW+U zlP{ z*Rq5Gfp#4C-1_xdXv)Dk)BU=px<5Qs47@Y)tl|fdz0lnBWd`s=Tcy*U(S3=UaRTIC z|7(GmJ}3MRA~R`r^I9Eap|+*M8o#kip4`MeBd$2@^#qxHvOa?{7zHw*51HF|F3h4J;nbBA7gqii?6>u$H991P4GvyJQrZ1kZU+5(m%7J$J^QCl8X&>~^X$ z2>T2Jf8*RYFscWp`}Ly~@Bti%%%Bb%RJTt$9-d>;>ZzgZL+fh$m;XuYkazMprT-Mt zrl7)Fwv^N6kz|zfNLi|IKO_yQPY8JUr=H9gL`vUT`eECGPa~6Zr?2e$5s(B9JXYtV8A2-qe0A90x~tB@naZ5U!Vu*H zDLOY&bV8_&lfZ1S9E2JlT^l^%=)u{5jlRO-PTO_LnPPKDf)L=;%oo;}>HDurK{S~< zkX~WRv=!QsG|-q`Vzx1y4M(QZPibgWl3ZNcG{X(o|Bj$HL`G^r0$Zj4^qxS-V1;kY zl@?Rb%nB|82?Lv(H^je=KVT`hjm;uq&kuckA(=d~Xa~?2Gku|`=6|dSaF3z_E9qNu z7i)u2cV@Oi<=GtYqJ;aOl!=OxmkBy}kY zFvjh}tQ>JUSfiA*JD*~v9)F@KfNRwRQbFB7b{Xufz@SRi6yjWhGk&R|D#{OKeU;C% z^78X5qgP8#FNGp)Y(`^8c6nD&e(EW%Lzz$9V3uqfsh7& zP>2&9vRONpU%oxq3WD{?bgUM=j77dwg43hZrm{|^i9HyG&@!S;tt zbUPoa$Uc}xgXtPgN@GRdzJon`=tvIU;GKy=<6`M9)A$aL#+08iB*S3|xU`EjQjB?fNRLscoKqw*0hzYsW-xEj^JlVHZUVgh9VYf>GHd{I%Y?g$ z8$_mUsmZgT9nsz4G@CPR$U^pM=~81t0HrW?<(>eE#BWXmiUjVE`VC>?!B5mB5&C2J zalN-dF@046{z!kqEic~aU1dzRn%#5Ph;HY8YpC*&2a|R<91-~JwX&3*CedkagF15BI&qZ0y2AKrU*0d~$5$MJ$>KfB9b& z)sI94?*m~>n)~~0+0_Lk3v$js#R#*fB;cybpGB2jCb_4D5r}YIQIiMklcVQRXEnfR zjG=F8TRPDG^tNpbftjpibJ{b}wj8AQvmJ=$mc;oUqC1nnr1%5WhNjHy+8L&y45msY zg=@Vp=}~FI3c9;d**4;YpA`{7Bm@%&nP&%hDqgLPmw;Pr#CMotqjubUNMUDsPzhzuuHD+qEH}444K{q8l86;T_d8RgZwi>am>ICI!*|ow z2;GmXBo>GBvlj41@|2>{+3|kvP7$_$aYhF9QE|W4k!WP(v!l~q+n4?cS#p^A*EC}8 zy;BM5CFN!^rsHz*Q!jH_lhPWngpkYXM~RfYII!+Z|H%IFbTYSAadc$bGIbU8U4#P&AsW!s*XT0| zG{gn0m=7PbRWJZj4%Vcpf~M|ZX0jvpXCD^RzYc@aaFp+yvRK$q2kt~P7D>WLH;0mQK$%ojQV(nJ@lc4 znFILPVvd|{2$?)&+;@1s=^~X{U!Pw@1r*r4nFDk_7qBDX>`%GJxi8p!J0qT=t2Ng+ zeWL(KlCwAa2XeFX$llA}=GF+|QMRr`2 zblVe88Zroi$$!dQ*jZiq9}0}`l@rcsZZuX~`seYsV(W({*$O-^6}k%Xl?sTJq@XF^ z!3+VUreMhmd=vw0zsu{}kqlzY%N`RJTn2UJz*fGV1;Gfjo)9HO>rOelDe(J390N;j zt$Hsr2TrhfVl$hSjSl-gx$UJ`x}PuT70VbtHfU5%tpCQgw;OzH)zI{QB?`4#Ea3O2 zdrsp@5wU1Se~v7aR+I}QoU0xXT3$PeJ22nbbuWi)hC<%>Kbzfb*t$}@y(?fnX;n=~WEbC!mVrU!tLIyrYA>$&X_S>q?wfu(MOIG7`V;5DDyqZKY4{ zWnc=*_Z7SH1a}6+-Umz@qbhtgW*`QWPSy}KoC%(6a;`|n*{?qz!xGIh`f3*ZT_}__ z7k&Me8ZEVRhm5yR-mH6BKP3=E^<8K@x`TFuf`5prKchr~dC40^^C{|B5zNWm^XN`@j^7wg|uew3n{()x1k zn0q8c?kW346`xZ1i06xBX?_2<;iJ77z54hAw^xL!i-CLQ+eAVLcqM^wBUTv@{Hyv| z>v+sQx(y71Ns@l%Fm#mgSweOf-rxnF44rX);(g@f#KEPJLlU)aBVJ+x-U?>P>GTrfe4vY)>lpvs!^ZdUbk^Tb3{sf6HG z2-snA8CghbGZZKn_{JfTb{prYC4^GI%(x&C0QE8q1!H+;1!j4wQ(x%91|nS0H4io@ zKtpVQ-YEVi6O6i5e@mK<9J10)cxVqWg9~1G+HA`Q=6o5)E#u}y(jU#iTH-#^1T6r) z$~7r{DIL?6^3&I>gQc|nvoX6Wztec~9biGOCV+07)b&Sd^rS3=AP!CmTAav&pL>b? z#R-j-@sxlGsv3cvg{ma+^%@!@}!1b(BNMr=N4 zl2v9w!JLzDEAuSri243DvBRp@kX<<(pYpuVO_2$xsBP|NB9day_Pc9#`{hqaL(S>p zHWK@q$+>DPO5%U2;mCt)Q{O-Z;M92F*e`*Q4QxVmg&WmmlNIFz&YCGZ$gX1ObVvi` znimaWU_9b^TAY-WSN_Uj{W*f=MwE#l!7rDdW+bODHK_XC`sz!;F4R!Q&b6KvR)+xk zf6$<`AU|p*OF)v&`n^DKi5}OOzLFaDOgH^tdfvl?+bQv0J!v7DDTBBI2zdU?Vn^8} zue7Rfg8y3<0qgT1NiKgLK1`BtJ%}*e8ol1C=nDni@3zsfu9l_V)VJ2YunXgGFTPlQ za6*1jz){@zo=O3FUwM&AnA3T{&*|F#$hZEw7>(CiF=QtfRSUF7pn=>Z9hdF0Ft>b- z-Jj*Pk4v*Jw>$9)ikXSLwK<@8`RD~oS0@E;GYIljZYL}WwdY})h+YYPmfB>hZLZgV z7-0lXM}@t;1kbFMx8Rb=0yV%mhb6&W33!rT9$bc@SZ%8$9eKC|#DlkyHo%)D3_Wii zCWw05W6Th6A1%z9)vwT5tzZ#iLf4=3ve!zD@v}HeCH;58l4{EL@0nolH)uQ*Jq|D? z!T#AvwwQi70)2MLhRzOgVv@{Qvu%m{GzB|44)EI$;u~G0zz=j)MK9}m;6G*^9WCfj zFNmY6I^95Y$e;<%{aap`mGm!W(byv#XX-Yfb!`tf!y(m#P0-1palD}$$e3S??n#gFz!)UgDd^^uC??)VxgdS7JjpAJ>9NW| zy>^AP=OVApzp{ez=@Wv`)pvqKK>ms5VfBwScZ2$nU&8qq`#|8vHGM$HQtRn^=TUrT z0%^(k@b@h)H$PuZ1(24-;LvpE*gmb9!*3=4Ll>zQ7zIs2ILGKw4{sg8gvB;i9i&d+ zJb7^Jdon-Ygw>wG`-3Lw;qQ`{1g?#$Zqb~e@d<}OQFJz;|0?WXW^+z~#RoIg6Go5+ zC4(Qed2vq5iT&uum7@Fx?fFVNPjQvjtfDTr&pBT?6fsKJ)r(NGlEhAhvvo18_Ko+#UBhc%al-?E4U^N zKJ6-v)lWo*@jFnOpohGM?kdwJ_A7}0`)(-!%W${%K3w;WC3)vq{qI)3b`a8R!H5HpHOUfQb^XH& z;{%No*_KRZCpR5H=GvgCs00Zn&M5T=@KCe)ID~sL_Vs z37$FSGyud!tK{PB3c!SQ$4CmUE;EEzO^-0;3Be>BcJA`CdMIb|48;ZX!Hjd61cm9R z6ya$f7->iGTugQ^HO>5~;==E5#A17yiR9&NF`N24a&Js;C6!73iI_lpb|sUv{q&_o z*l(HrY&s8TglwoMZ^64w?dfBjDi!Tx3z=E|93rIAf(@In*1{6Ud$08BozowPtdF@d z@RSBYll6puwX^wD3rZLe0)d4G;Wx7k(*Rd>0?AUB^*jLpz+%6O_goQ1%QSkfOrezX zf5YhPX~jfh2ttE+I3D(dxpCA!czA-*2K2UG=xXbZ3}_R_TimB~?PZJg{y4SC|La2n z1@qkk+`)qU$iV3!e{%2mp?+-Ik~=qO{{;^JJOlmzd1gWeUZuRRTA?r&F(W0(DMU-U zY!-sNj8*rd%xg0Um++$4AAo%6b_9lJ0a34Mc4HkhVB=)OZok2j_Ok_e5 z+TiLm_wum8b_Qa(GYB3`+Mo;*0i*`SloO#nqEj0u0*?QgUTqaNo#RFY-JlE!8KO`fh-}KV^DD~A(9hKh&dGhpOil>oDam{HrW6YIx;=)}AVEMPu=7{9;07*^n_|mjRv;P+INU?^7hkr3Y4>A0! zM>~edfVbm}EgpVFhf>L-N$8)}fy7AAfw`JK{;xJ}8VKP3H-p;XUJIgRB_5M?(s)BO z6AhJc95^_{93@1lU?VLtJIoqoIA7w&AF{=jxhLC=?RPMo{co6Qqz>X|^=bh2cXSP( zu%+nS1XZ5NB}?8*6AT)!dHxdOkKlR=5eI57%l4iEcLKRX`-8Zc z;rkULAgC8+>s7=4#)0Q282iV7(}K)=Pls)~vV*t}TznS;#_S+q-HZ3?Bu~K3=D8r( zHbx*PZ`@%oypK!$d%~*>SY>ILE7p%dzg`eS@m!5m%~dh3KB$yCz3#z8z&=kzp7(~7 zs#b$`Ihnws&bC>oxwT?Ln?=K*OD~wP7b2J@{7IEA^rz*kKEqGL_wAf^Dmy-tO6+ga zyO!#BH!;(aak_MWm_rLTJ^-oOQJ)yllndhb$7Ikz60Zr+rvoL#$1j)acm% z52k@HxCaAT35&u2tr*{!&^GU=gk4S1!eXdBaSZx`Ovx)x@YkUS5dFh1*Hn0m1E62p&#MksP`XS43yP=s`Kz?oM^yRBvA$R^m0DK ziDh$mZG`jg^YRENKY+;SblTC^D2l2LPnbqU#aYwgr+;Bgv^BA61Y`nT&_~crlMizpAmRhI#EBCNKAd;=c%F$RNCf85r!0q!dVj67 zKKE9GO!PazSa$j-6$!`TKWisha%C8mdaH`!E9`7 z%x!E~)R%nJ>y5+H&--SA&B;a-(f2)JhKPI_FKQ0;Rv~^dqGL!Lq398(?7x7-V(QTg zw$@s2{iKp&A*4A<2?R!r#7=ztlDiBT!fgraofuf6syUr`1^nwjqT;7s zES~!i1bzhai#Bl!nPE>)u0()nI%!~obI3Xoh78aCVehCIfWpoa53}Z`VkxEpCSqJN6c_j7I#Lzkm3nICFdo^;!1h(q=YP@oSQf?^zFjrpGMk z3KoP5PC25=s++zZy+imHne5-jDKjk0&iTz{%IBCfY3sjz`xJQ2OSWdPnyMV${g*Vhr4+HfsJhT#5oo!Oek#<*I&4x zjNuW6F0E=B(kuNG#7uAEb*Jv5E~WwO{nbp!@M#Q=>?D*o&OPU5V+-x2BAsue)mdJ#NbHv<3(N z(j_W$*g+>tc<5y6vY^iI@24%W>8HZ-`>2k?smH2E-Ak$=Qe^^iuEtVw=znL0wN~P)~S7S!zRdR&cZ1M7^uMD!u+fnh0x@sl;vla*M}3I)%Wjz zUvj*@(><;yI_d0=CML1sUwgh^#Io2C9QLx1$Ws1%RApdS6McII^HW!@WugaFcd44x zBK$PyB2IoB|fj4 z#K6K<0lA5Wc{igq_K$@mtqZ=qbG_C<4}*Vg8Z>4g;FAf*(#j?NA;C*upL# zKv3&iP`IFu&E#i~&m$Jq@V8jJfoE^8o)Lm*TQROmT1+$D8EVENe(kOG9AhcLh$)kfkOF2^Qd(}v8}sz1s2Cp16vda%QBS`>cP36>9k^;KUgp+={s z_|95cpX3Zm7FT>XXvs(zPi(a%RrJ$>P$AddlUavz>@jxMGV@^Gs8_-0_|-sq*BN|T zx1A3{YWt0Rt0h$Ve#hyFSW@F>RtvMn;*XPXqSY?3f78)I&+tPI#tBtd5p!!o>oe zH>%8cVq%XR3I#^{z~Z$G{vqIns|Quoo0{09X^R=pwyyAJL|47rt9xLqIH1se;)pUU zLrA(tO-M_-}S7 z9L@c&d_i^1z6eENWj=K~HTK6S@UFfHr$~LS3Gi1eMZiP30GUmj(X~*u1-HA{)oZgD zLrlWDYf-MxWS)zu!bs~#!Sp{gHRdUPE2%14EB8JEs?^-JE**<5u{CMwROMpY=Djn< zbpv;-dA~5iHJL7eCjU(5d{_2|K5R~UdL6BrB-l@a(l!oVIAfy+@P07$GY*|_D#&YP zOO4XWQA?)xdJS?MEm*a`1i6AKIsxARB-0+MiB~go%Ei8EG1z?+hkJ6}&LGnlA9ky$(`P4T7ZQ9KpfxnU{ z)k@XJeLg$7Bn289IfBC#%}+N&`-9u$xz$q?<(ttSO-jck$#MCxGssYA84FmKIZ3TC zHAm<&6#0#%-i(O5mO>&_1&uqUch!Hi-6)BSUO>#nCNlcyrd^S*<%(3bZ8&v-mpB(Bb%$KZgJWz`Niu&`47?n z=?^LkQOzHF#d}_bhSV_vB!+fsEzFv;aJQ2>Gsw$wB`;~ z6R=hmoIRx&IzvoYxa$z4xGA7Y$|BuIut&|!hJQJnWEl+UTTKBNjE41D&ew~o?ii8` zdh^B!(UnOC;QA823Jtd;bLA!hSW?4U#c*9Flpd@E{;ZS1bxCTKQNav-j?})+h!hly zoa2ImhlwGbUI=D45g8|yCuu%3zwL%J`Z@p?4*VJMA*qA%=1GZp!V=N}Al6nT))G0_ zmg_4W(lX|ziq?gqRu0sNz{Ed4+l85>Xo~!?M{2mbb?ufim?DXoToCqv8Tm*P znh}i5e|N@GT^o1xq=qI1t6t#rZJrY2AR?KFUkT_LHcv+4G7Y#XEDrz5VSM5I{VJ@y zJcd$eJ%k!6MeR;Sn7iAH9v@k5Qa{Co_B(-|E`Bpu7HqqEa8t6YG*&tmfSuf`2nbo3 z(V5JMqe(E4)vY=s{oskWw$7(aFhN&?0r>KU0uvA?#=;DafgGuySo;b;_mLn z-JRm@?(R~cxcfniyVLgP8{^(_pYQwsmY2Qv8d+J{$y~{d0VeKmMOavY3_a+(No%iy zgDay;Lah$7k8!?{TII=CtEeergiq+G+9o zelo#GOo?D9bBc-QqHLo^2k8_BXcP*rhpg$3nZ$Xmr>#}?!Pm{WQ0BL3fp|QbO^B>Q zkY}6eP4pWZ|8COT$kc|JzPamJrf!Iy(3uUx+1U3Wx#B}(Llk$%1aQ4dWNa^Q9)-~e z=R@RN3zN4Z)+MjwwJD|{4BYU}M0&IL(~@Y39A~V%Sn2BdmNwA&fbI3W-*D5fGH&Qj z6bllLrlI%SvGkm~`ebO%imNQ+Y4mAC0>rvr3gn*=wLA6Kbh{)2=RdYBN=1g}0XAwp z(4__F;v3fT7pg(WXXNszf;F~{^VW$D%Y_L3hIyTZ&|m{vF}5?w>#hz4uVu#lNPjxa zJy!x#oV_w)l|$?UQ~b`Qq2%!Wp6$w7?H?yrVaVmmm3Uf$ODnKrkuC)E;jNG7D~Xv7 z7g8+^7cRovshtCdy)dw!%9$g+V4d4Ey)5El&J`pXGT#0|Ju_tj#Eu~r#>c0bm4=eSAT&U^V{G<}*^D z?Vg17YF=te^+*}m2<@X&*j6;od_YS2OK;O19sZq_nazkp8$~_k0DO2F=JfJ=8N9XL z`~$^2pooZRIxlXh9tJ0y0&~SqXawtge3KasO+}8U-*ZZymfxtj*re+tN;++k0f#gn5TzLVNcNJ*nVHyI0w zU1ms|NMEQI$jjL2CeEq*!+w}dVN{s3l}jdgt6mk**q?|JkCBDCXEKn;e$ZJ#*{!F% z)6o#(*kf9jmh(|}rPGMD@)ahr%Pq=vBKfro+10DDD9-BmH{q`J(hgZU(0aU^h=tim z7klt<^_FWZm&wK{W~(twts{k7N4Uqe2yKs%*_71e_HNYo5|5b&^k>!Yd)D-^M$cze20QW!FK*g zmX-|`E`BEPngxH1>ShWF6kj`A?JHfH%7+A3)-!~KaZS0&6*j5BOs?_Nw=K;TRI;!< z0R+OHT{KbY745$3J(bqst|*FnoAz~qFwNVVrhKyUj9`Nj(~lY5n()Hn5mBN^CPQQO zx;UM0OBqeNykz^~P&l&gGc(~Pyfy%CtK~>dQOi{BE-7kd&3qIiZsz_%Il6|4$!%&p zO$Oh04NFBHSxs9fG3b0&^&KVJEO~$>RfywM_Eu_(#KKtk#rJpZO)2VM>QP&hF&!`7w#Y z5+vlrXK8&JPK;c7iiqVRQWc1hQttUq<=z>}%F(o$zh7NgZ^D?%-^#HU;tiI${T(>H zp8^knDWYx9(^BEZOe-t25^eFzShJafGQJ@L#G^heMebOj(y&3A>8eMQqqIbaf|7Xt^k{g-(N1(!|Wy-E{7a z;S&g347y@0XF_p)OJ{+}*u=A35@0xX9saF*l#;$#v#DNeMaql9?jYFNR?5X0rzE-} zo4oxs(*+d&V5~qDVjznWkDcInY#_`WXs=*4Vn^&sK}-L#xHTC%mWS*b8?1^)HxQ9Fk6Db=47I-aqy=!y@mj&vgQBu_r2zKjAbJXkKDIM%--lTgBX1L zz=WNe%H;wnf2tg>JyF*FV}_9qS0C(F`Gr`xNom#jQ-=$Cdy#4n$zP&u6Y@JUKSwnm zlhNK7HCv#HyB4yVuraAb^jb75cFYXsxL$70QhWKnt;V>S4+?wjlf}*JwVgnDp?Ybn zv4R=XT7%?=a?@7s$b~%>_T|uR*mFoF&V_ZHVmcQCAF$lnPv?ncOA`eD3h`8;HiuO`6l1%%^H9N$}#j35+S8n zar=4?r50_qFjh!7EGh|4Uv)xtb@`ASt!#ERDxU&A;x5fRb?~~VRj(wql}&#`%ZN+m z?GZJL9c(D8B^4nrkGbXBujOd)S#iYBpVo-4tKmcos^6@`ZR=OGTEEVx(2%66+()tBV5pI;q&P*l+!=jsu$36x5?3MY+u>L+6p2m(mfwse(~l?V~gv3@pCO9{+e5B(N8F{i%v4Fl(TN zmtDTm`}}u-CzWk6(xl57^$Q2sBs&Am$uNV-V@XjCnIr|#_o*nUPAeVWlA6PBu0tVb z1gOWnX3?NW!G8WbEf}b>S&^0LYByunJK2=R;?6>i@&RbE$76R@RWM9R%_J=4I5WL&WTkEo>4uZ>(!JXH zxi@@#q4-4^ zJ#LC{C-S90f%#J8q*1;NWZf!yYYgSy^xyWJYIb-JQZ<&fJDX>Hpc=R?oe54S!y?W> zinor>Y)8U=QPSkD629RUpN7YFD=ccv`?cqNKsNW!4|CZAza12_Sa=kR95ail4NqBY zYYVAhTN;9IVk)%?q2@xF#j#&BJBtbF;tBg+mQGtG#>;+>Y(X(g>hS1dHT3@e>JTsC zXpPWpf-BFldCKx+llEl7{y=yCL^#r)Rq36EdW5>9s1T2EiOhu~W>}(gKHnJyaafH1X=nwBmmYL+Bw?cWp zvI~$+P&IlJapdEP-|gPZCd&3y*UzhGH*7mhLNjO^9~Y3WapUf3_c}aauIJF=Th?7x zi0ja2z4(J~XpQtu>F;JWfG@7Q&58xOw}d|OZ`}0-7`Pvv8n1i1C+J$f(s;G?zU=G& z@`kZ+Z9o3I$+Ood;_7naDtE!LS#6Dv>~1Q|$TZIx$k4pP<}_t&|FUA6$U=#9!H9I> zQyR!BN~Q`!3**UK4{!e#|7e^M@JVQfh?k+>9NP)H_Vf2BLg7z}uvgTSQowKW?^M5L zxHp`APeM~V=kZ2rzr-l^9@Fc%wkd@GjaR)Xg|1ZFD~J5rlD>1WJ~r^MO~Px^rdyWE z$W=pW%>C+eJ05@&`hf&>88NlG{09ZPls&Tb$lCAy7cV0@k=1i=A<&~$El`%)t!?i^ z(tdvV@AtN(A&CoXxA1O4DHE!m8aylNR_TDJA|Z)pQzjc|CB32AOHR)k;AT#ej%b@G zBT|r{<=vh;*DJ=CH6??I%jLD>qD$Jh4hjNuh;jQcQ_q$){szjCLm4^bE;7NGnH$CyYGycq^}A4per}`cPtlB2H|Wj)%bE3nHO)j;sS;=&EvA!R#8% z_7u9h$F)dp@SN7s1fyNB<4r`3Mcht0#_e}8C8V$2B>i(SM)Gb}8T`tFM$~a%3EL-|I%zOS0_u==Lq`ig;S?8(n9pDm@k+p11^RgK0$4K%62 zalc&Tj4FoN$;6BKXY{%FcYvT_iJ)zfpzV4rbIp$@DLOq~Pn@S8eO<^ow#ocVEP<>|r}dhX}g9SlWHAT$|SM z{CU4cG1R$a^JOj6--;)|ij(e(ChaHAqO8af%1t9&Ty=I50n|3oB!+Lc_)i(&$ zk@}CO`@M8nf%?fss+rczrd~zvFtIJ(ui4%bjDop3O(a0#LEF^E@z&C*{1c`c@}VU? zQ{L}t_CWsWE*!g%GRBOSFV#Vl#r0c`Xi-|d9K^O~1=@7Kk%E34|Di?U@)Qdz@~nIh zCsaeuot$*saB^hmN7DkC^@`f9{%Y`5XrR-H2O)f0;te3Ik4q9^me&@3(O*FAoqBt_ zi7v2{DH=0XGJcQ1FbSB^J^YMr1%EiAT%dBTN9MF}qK=?qu5!5$jm}ih3#?y_>KAvm zsw|Ae6Af1|&fi+C$K9>l-|F<5jy4aCHgq(nbS(}gQS)M5v_;p@&EBL2m!y{&XhLg^ zzEuBip_7+9tr6`)$t+h}Dxb`}JwF&5y{7JYsNkW+bvx^^fnl*Q5brY@R(S}#o zj(H)?RL*kzi9@3FW!Jk(YVfJ3#?x0*C6pp&EZMnzRvX(6(d7tgeZSJotJed( zt7T8*$N6<)7z%d{N7=kpnuEzVBcx5q%RoLlP~HzGX@=2Lwr0< zQ}SRE6-gONs<$NguDzp;37w(1z&7r_itxP5Ijz)^wTv%Vl?pXDIPmr)H6oj6DBNKE zFAo$j62qA2+ZV0 zzsPSlh=>kEI$J-sI0?hD*zxApT;WC^5$NHSbu{T3jGhl6)wvBkadm!>_ZzJcK73j| z*@NueEj_qPQ2s`Qmc|^a{5^nasWQ}H@_R~{>5Jw{kE){O=3>vve5RvdFfbpL>QUto z#%eohFxS;7W{HHxZc40-lg{*#h0~RiaIT%H|L!Q_p_P`0!DTrf*FHu97_AnmhMzt8 z$<^%yWnBFe+%u$lUU62=jO%jnz!sE8M@rpO46_vBAN>k#wsA$iBxL6KIRw711{Z%ZrUAf61BJ`w)hZ|Cy z!d;`M4o zEzOn^$?G54)|b!DIqqWQ4i7l7t&a)f?fMnY4raUh6+Pz!1%>NV;S4~$kL8=q`_I%X z4C$VZZGG(}lyd#hIN?qwYE`ooow1>N1CpJ5M1Z%##y2)Pw3Zx~5d3|8G4>x1SN{Nm-_w}EF&C6G# zca8l+DxDOcZW4Cg#5kN(q|Fd>yA~G2=O#U;_P@4ObA<*HwgU#bqb+|o3#HNdL=IG4 zWkLF2TxMHPU8PbItn7*H?w#IBM_(->k8ebvi(IBWl4$~bL!;xgj}{_UHwW^Mhw5f; zGFL+L-6A{ld;)NVdE%US|R2 z211a9r6X=I!hQM%YKU#iSj%Fv(;vi4H|zr(Y!ehXm{3{X?D)C0c2!#2%GHtan|t+z z;|kWn0`2_(HgNKO0ij)o=x3ky3Lzb8STpY8#>wB#8zC7DX#Mfb6JtEA!Mg7}GE2`&vCNCCvi&I~zeQ9}tky+M{5`qI@dDWFdJ@{Z?NVv?-Z z5&R3)b&-F$MY?d%tay^G%u|%-G^=zH<7@*=Lz-!z{NRIX|613+WcLFQQZKIt!{EO> zvISdfU&U--KvAkw86sa(4?~3r$6NcG!*+N>+mWh9s^J#f-vXZO>Pj5Y@*II|Gkf_*CIGAm~`Q#7er+Xd#C)71oS zrWf#J3%;9V_h>o-J~YOMc#cLm>HxiinT}VEcZw{i~WZalxB9VjgWWK#q=9+KN3AOIT5awDxMz6 zXoo=GV#Xr|moDufe@7kN4ZxB>g6vjRsYo$}o$ zfL+jzSo7XPi<5CFT8&f-DPaAyJs0BX7CetX3D!E8k{p8GGS!IX#ZVhCGwFapou}YS zN%(rF!jD2^B$N}5y)XR{CkH4_F~U1xc9@ECLMTWBbKYfrfSH{J;x7D{2#*rf zkum?=OnLKGV?ymo{6qF;l`OszVsC~VUSByBRCej`9gL`uGp6FfI@Cpkg72t4;}~5# zkKqRB?O7Ng@|Nt>;g^TPxe7+PB*$d9FFtO8Itp3gPUeB55#)O==LuvOO!cH}92x$f zs%et-^hVsC_?C-b1}^$!1d=73vf1h^-@!_P^!mG{#eYm{G=xR=?;wLH-dj$-(;fzUgQs;l7Pr>px1XyCOX8RpGf#ph1C zqX(F4!<>WNO+~0 zg3UEhezMefOWZM&5J3+A1fMaS&=AYd3^j{}+~DTavn z1T9WbC3s+|1Qq!=j4ggL066{|(!$P0u@zurZ0#^_1NpZ}XlJT~BtO(u>Uqm&=Ty;N zjGTmE%H-(LC~^I;7`~>zz6hFjOD7awqT;2Sk6|H3qM8K+q?5BhA7wmN(6pIewbBrG zH}~b58m0e{-C#c-gI7Yxt>ei|!b>M#ti?rXY6(K)V`gN`%Fj2q@0HTQK#P6nhtRvx z4`^=*Q&3-!38JmKV`t$q7v<^wg>S)ePR7R6Zvtz8rNA1>s4+z7q~;+h1F`HYy9Uh0 zZ9UXd6QU{wolWv6XPQ;$`Z$4dytb=#-@X<(J)9B1>SES?3|Q$6}9pfE8r{bcS5le02{wBk*K zwouOPP)eyqy5Ns<0Wh0OM-PTve`>_H!^F?SKOxr z6?AeuT(G&3%N<$Y4oqOjDD%$|3y6QClIp~&+B1192#1X^{%PU2EFYtJuX~sKEmDxX zqJ~b#zvg%6N7U{_5+gl*fsxf-_S8Oxl6@xl_)GsV3y2pbBXx+Sf(HU^&B?m5(7Ajp z$ca)uyzI+}LbATCqa^9y8fSKk2yuBn|Eelm>rPyUzSrZq)K{;ki!b)tYCY-OXC~8S zLeAeX50tDfc>A{y7U2`ZJ3HCgEOo-o5}@j^yn>eJLJn3U zU3om1;$BpGRU?I0ZNv(*mG@dx7g)1c{K6NaIaNjQc%hq$*&YWZhEJX;!{9lR(dnIV zx*;TOP&$m4e!8;aRAc+Lhi}KT{PPCB1pj97yawtW>$l`1dEPNM1SQdw3Jr5!_Zw}V z@5iG2M3XIYLgKHAI3CgA_PBK_XnNgL4g9t@>#VH$8;Mma}VKt&K(3 z#tOtNDIN;F0;cOerjpS`RV{H&;GA@rQ5lPGwBIt3gpNMKVeJofv||Y}>@L9L=_j6gOQqFN~F`vZ8H7%|K8Gv^Uvh1L#=$Z_!$%QV9 zbe>j_JQNBQPtN$;b&g5oCv$wEb#3*i?vRk0L28*n-q+c0=y^2eiXmb~%9;j; z>+4CD@1Evh;|!7R(~1%RmtqweWc2&_+4^RyH!GjQ6eJZa(G+#Ker1@rbV3Z-hOt8> zadfK=c3@d%M_&)=Am(NiSUI=TD6H`{xRjT*%>zW<^8C&RpB28DY`UVh_JXEaE?nJdY1 zdm%U5cnJoN@$JCvIrKO3Z0wJPPGp;eqDxA9xxu=M+M0IF4PJkT0YW)T@r-#M^#p=o zeu#~wO-Xm7$H55n7h6tEk7(S!3X0!OC?p6Z>GE>M+NoQV#2Y!7LfwCAPFC1|b<$Fi z&Y*;qdb4`c*RV)wbbz3mF>-zaGI?P*`h0qS$g=0LjqWuN?DAJ~!EJL$#1A)fOh=96 z06XRP&ZgMT2`s2svpPG9uwymTVTxN+<-ZUCO(SrK8a9a+(Lf-GV*v@g98??*4l&Rg zlT4}U;>z7n@UP0bn6~C?ghXz(-ll~mPvQNsg1dchP+{_~>J~S%_bq`*&h)0bpCgY< zW3}icVv#C({t8p<37F>y7V1h>G4)(Vh{m!I!)fhwZEDFSfHtw-!je%Za}>qucDIeB z83MrK9pUina)&dm_azo(RW_o_DC7uBEN(vx|;fV?~dqmY1Our*q zf%`BiDE$V~4?@V&!6pi13J9KY{=tptv|dt=Z_4=>*iF%&iijLO?4ija;dU|!0lPO0 zJBb=A%zvSIWx&~j!vMO(rG=njw;mbAAT`w{{=I+zZI;iInysOzX15EM2FDTJHsFv; z5o?qcc7h%^&>)W&(V}}zV%p?|5Nb3&wUc8OAUb0tn(6u%pwR?r&NG;+g^<-WQM&EG z{PvT(DTA{=So~$Z=P(^Qpq(S=l(v-&z@&pDPP%_o90*o{n&&Nk6AYJgBv|{~fMd6x ztSi5^{s5$h$GK~rIU__ADH$jVjulm6h2Pt`{G%0doWG^)QyC)U=6=y=jxvFLH9Ntub#~p$OIGf zyDoE_|GamfSp`X9Pc6%fk{`0VbLUp1gD=CuQveyMB_?~;9PddnJ4BJcOb}6?W3s+J z_9{?3{lzF9AG{=%fqEb7k8+ShbKPFuYi4RE)-kR9P(LxDxOH@%hP}5}aLd2F=yvqJ zprBp^>YBdPC4TFg8F>m(@luAJ%jWBCtg%km5$VN5196;jD)Lk_DX=x~@1;Ww!|Xmy zvkcMTcNUZ0$(hiPetu+-UK%~bWx(Ct%8&T?+J@aDGZVW`A}9_NXxO~i0u#OW-UFE) z^gg&xk4a!kNNA!=3k%@F2Yk{dsB)X(o80g{D`Jjk`WLH@B+_E|4wI2>Mp*s61v@an z=5rVP@U|si&${lw^5I5`V*J?Yy{Glr!Na0+O{&q6b~q1G`>e4)dm1<1uKRUxy# z?81F?Lz-LG*y8v6t6ofmYUUZb4o`Oc_N7MrT&YZ-t+;}vyN!h)1;{2sAC5%}@%&y! zO``e2a*+JRj@(6y9(KCC{QEB=uz!9Rje-rj&xchd@aI@sR;W8&XVMRm+=qxl*1X$8 znlR6gOW)yzA`f(jCQSZy#}x|WQ# zPX4N-p1+>EBp5f(K3Q8*-@_sZH$l{5__YJQq+~HxV`h}DMX$ScK@~ILn?muz7B|)$ zUgn_+4-}F$WIXhz5gKw(Pr>YZd+RPqIQC;;A`NjAEU`Lemn*)C-*V(johe~Ek0y9NP+hd7gTwlK&c@^*zf_~ z5bUKrw|@ag%HqaaV~fcU-g1x+1!hN${YZ~mPshaAe(N@e_edjQ|2%$Ys=eqboNMFY z`~z)>cG)1yMZj;5CquSsZ&gG#ecf+YRzw&~e37S@R1J?tzFZ?`Ta{jfQtrgu6&hcm zpwys9gh(H9+D2}0|B<<;pUm3&w($YO(L+(?SwHP!E+*iCuJ)9okj(%!?rC@kOp(86 z3w>Yc9-x1Xxink|4G*aAz4RHhvZ=yX%GH~@5g*t6Nyr~?Iq!7!(CM@vD@3q^{E8Op z9x8dX?l}`n!dh{)zt~qtkimMdOSH{>L>#U1hgmc@563wM#AGn80S7}OnY242AWYJ3 zfi2{M9cK%IpLOn&H2*krl5xb_aeFTpzjwtOj!T#?*bC<$Di?arVku{bXUgF%|iL(}#!p(&uRQ#u z;yc9)Pbi6WCOuTbfe?dyknvldTYLQ$(Up}y$nWkf%Sr3htK(#<^k(l=9Xz+>r9CeJ zcIVb7kz203*@H$8jW(1Q`u^s|Q+<9|*=%egMT2G;x|5Qo9JbRA2xL4cY?u!=nSqFy zV^7_iaSC#x20EjeqJMfu*I{@cEiTq=&hmP49JkOl%aaHHpmirPSLD%B=InIyyR#fL zAjq{PGoFy&^C_oKXbA;9&uaqhqT`rsHZ-|33E8>{k}33syjng4&b{nnr(x{TEk?JCyJ*{n1#jHi3Z~4DKPzGqhp-@T5fI^+#rg>|D zIo#3KB{-mV#eN6tjy4N?OX0dyd+b-N4Kfvoofto02HCdU4H!BaLUoIyC_N*6v+cZrg$t!QD9YH}{RlDL zkWTT_RttrM3rm0j#%N2a!8b!wskwHSossDNo)>o3UFBgLs_TfAHXKGc7{CIVuyvIa zF;|S@Cj?pLgoLdL6Ac;0qA=Ul!Z1AM)(IH^4{W0yZqX{D{S8zg!$dIL;)b&8l*oD7GHA0%B`ck^j7+<4eQnM zwcY<~ui&nbZz0r5uGt^NdijGyOie<4&71d+U`HE#&F#9(Qjw#r3*+=O1O3}LUc@9> z+>&))roOwXru$_I2H3B{<LRi(99!QdA}4S*s~w+((KvJZ?JR_;<;7+ zWHKF4g(b~+mgvY@VN73Tjs*u|W%?7YWOPNUWa7YXJrzh(aiC1b2(n`;!?^Wv=}V{( z_ePFmkRrKH!!I!%PNxRVJ|C_%&oo?^gA&JRNPi;t47+J5fK(9ah8=2fcUhZJCtG>NJww26Mvm8QQhn@FK?5ksDz+!#iZWUu6b8n)3P0-azO6jV1Ed&@7ID|C(5*`T}MF zghD)Gf=+z?d!y;NLctfQ>FMcA5vUL&QjP&9I?VW;4enQnkb-@TvEc}G0^*^8gO|aO z12ke7Y@m`L6dV~93Db>&qN4i{5&8|&z+PcZ-cukN#E`Ns6QL&;HD)|Cy4;9yM@Rx6 z#PHEg-WV3zDa~ipN^U0BEC>*pVEyOJB!Li&Y`*jH>;yCKtF_P(hM&e?(YEui5|eu zpm?~zWT?>|aC6Iza*dZomWlv{M&=p@o@F9s+GC1L7ZI+ry7L-18A2lr2*r}lp$Cp% zPLAXoRLG8p-5kS`2*3IOJw1t)0t_wp2T=8eP>lyL!gudI_4RsbN*gqg${sf5Abk{> zU?9jw^vCCI7xY}ppO0o>30XoR6S5S64e=2V4gnOQ#7g)d@$mih(BTk!WN7+(Qb5FU zOn3pX{(!SIZ(xSkojt2gm12FIP$rr*< z?<~Y&Z=L|<124gN{+a8ihS7ZbF3Qf)rt(7y5lHUg$}09gWEf-Ogt^1qVJG;p{2*s- zK=Av$wE=|e@X<`ZVBC0Z?=$vRtJlZ+t$~~w{`hwgaNNK1xdgzJ;R4#m zDHbs#r41E+_b(293_iy>_7a%6Cf>R3)8Scg#Pw))`ZLKPQ0N@HWgB1ZlNF>Tqmd|^@s!UoI1lVLX;Qzk-f7SB8*7E;xh_+z?v=_l_7uV#e z&z_GS#+Ph)Of5%)^~k^U834h5O|`8eJorO3W8?!MF{QOd^E~u02kyl8%5tf&IDmtt ze)5vrgJ5T!yvd?m@YOMd!m})TwyPm4mBuM!zey6`DOPx&LB2{Fit~^HchTj)iKOR z9LzfyH!76_=k%Gomip0DrKvEriPz4n?5IKpRerSzlPd+%nU<>PsrI#6C|#puk|5O1 zV7Y*RXJ2bmQ>8_{xkCObVv59w$vz|o)8WaNp=fF1mtm-8v92;)2V)sXvC_)9WEX!r zpX}nrl|ls`N(vLJP}3q^q$4?A2Bu}PVk+arn~dMBrGQB&8+qW5CTg43f)goVb=#p9 zk04L!da6+(2ybAhLa&oNjD-^y_r$hP6Cb%$j5Bovc2vPCXk0|w&>=#t@k?3x`0&S& z9Cd*hd*sw|C#7U)vR+jLsXHZps<`TGYBj05blxvbGKPANkO#BOth&&!QmKm7sPR4) zm4K8@i%*Z&@C#<9Send;OF1Dy7L#Lmv=irX!n9B~UY$SlTpO87V1S7hK-Gd3X~N4; zTaiJOk|-l9<4(FCEdG_Hl-ucH1S*S=S?9;Ax6e@(m5p_*Sb)%1mJ~y8T#XVByR8lR~kF01F zI!xNCSrY5iz91hpidAsStD&T(7%QOfX@I)XX~|*w7$mjPHIC?Q;cLgtqAEe8Dv{b! zs37uiCXMYFHR9!l4*e7;#;~fIsw4AdJju1{hM~l*8(NI+3NTnclSvdZ9K{_JLWQWQ zBS;>+YPC$2!%4ukwpDERft0}z$eQ&wfkysym8Xcdux6QaN6WD~3NnoRD*-P!nMw`I zu2^#}Q3R^$HA+_zX;3#`Kt=JE8L4uJGV^fVMov3zbs_nfhhtXct#0bQyU=@AyOijx zi3f?646KfG_!Yk?QH%~(6;4q{LUrrBNK)M*O6n_}C!tsY=EagV1(d0~nL)7TM?!I*WZN*iO`wSYA1_u07Z*duK#JBX>0(+naAX+$}4nI-6Qi>@lXzFFg*<>NNndkCXeKA!wBE zv?N(?Y7iC;GIX12O4@MdI#ko%42*MTk4(_8^ckB?k#vP>R@P0ad4@{D z(&ZcAvh(s`##KT@>3GR0^PaEBl8!hXsabi!uk4 zoea+(P@Gmk*CK{))-i?Ox(MdzFhn3KUd_Aa_maBi>v$4RCuu%GibI5E?{s8L9RdtO z*LPQTAQqA=^kK4;LUDN998o&m*p1k@2`eWf`4jz-iv4rVmHKC}|T)LW~EvHOm_ zGP|8v80z#9+J&2Naq01fm!+%JOjKVBV@s6zCy$a}%O)7r3(&Rfzc`9DghQdgPCse# zkP~MdaHJ-#ku?c_1XF;o;5Wb-|2l|w{{FRjX>M1F$oDd)_d8cFV)2l~cnoIUodJk* zTWF*sNr65qrTknlWEPo!&}Y`j>_y`b?=GU{_sIwM1ux8b!9mF0Q#jO2nn~Z%3S+5R zp_*nMwit(+OO5zg%E#8kv$PdrxX|`nxH1stF-0)vJ46(-FW+=*T8LG;Qw!X)T5<$! zAhhqOp`rKJVOG`JbR18J&RcOhOk&p7ErU<3JN^r00fv%Z%IQ(h~Cz8J}oj1R}@#Fq|CSi<_7O24?e!tOu ziP~if@BdS=;FfGoP6jsG8yqW>=WSLJ5XLrpv;DBjWY);R3*e02=Bhd*^ za{X})pN1Xqw4+%;Ym>-xgXqouy|bJ6AiKUSJ7J z4$V6?aV)aIV68h(TT;Yfti!Om15y%EZT_y`QBJY!$@={ckg=nO z+J7lZf2Bi3Y#jU04QDB2Yb686K;fpz=xqcF_2(*%)G~`)=wKFvhh|dAK1q!r@>9y| z<&8%dw((RR^_lQ^bku1?yYK|a+>G9XNraf%8Z_W%wI(H3VCqW#z|hmzm8_iDO@R8^ zXhMcE)Pwx?6cF-XO!x&ZCd@h;lv!u0Uw=4vb5MAJG(INSGu z;SAEuq1`iti148&zgg{r(&LsAkDT}Qd3%n;M{iu2tHRO!ZuB!vlT&iDRg_?Ik{9sJ zV%+;(N^jyopBeKQ#|9fr?q>9kXJ$@acxQ|@^2N$xPGFry$TH01@fnox6Z4~!a~pv8 zEA#740=q=42yAE#f8;a(pHh-TV?urO~DP#nQ746$B`Z+Du!~J9>wD0 z84g6K*g;E-g><(rg@8-P82_x|&`1d*Gp@FcFj;((rA-cg%&^x%piPcO6|Yi5m|~;< ztc&=fmB?9Q6OPlXGD=OG#&cY%S7VG9vzmng(9)SqXs6Osvp7(<8&LB(lAlri;;~4* z>jVn)Pv1gQ5h*s|r-vXTtRKrr-Z+b!I$~w)mxK+9+U}(VEQm*@2EjFXjv6YPA8waZhw(T@XYQ?5BrIXvsx7}5qJ7wLfzdZe11cCvmDPHqi8BuJh zilXU8bB4(!5d4SQpdx%u6w>}ew)DxoffRRoR1gBsskBllbtzT`1o}>m-V>N}l1^hu z?2wwFnT&e;JCq=oODjG718s*#{25Z51Z5Q+b7`9STV*GwhGgGytq#Ie5KhJWpn?>X z<03jG8BMtmY3vTb(SdBzI}D0)6I5HKd}p;ft14oeNcXVwtQCnwqkVAU>OTaC7OR)o zi+&C5N2ew`(Qe&eu8b{~zc+vqj{)I|^TaPkrxPnz6e85EhXqyaNST&KZNy*7xy|>{ zkC_|z3Jp_rJoh_LFdJXsJrKB3qI}}An=!xUgr`&46|065yfzyk=!!|oI&CB$>clr4 zaAmXl3!lMJ1wRIHisY6;Ea4QIne>y~x^PjN({Fx+Dd{z}lWqSX{njZOgP~r!3kgbO z2!llQ;N3G|9m)_q9pmwqt%g{^q?2-?usjHIP~N2 z)YhHk^dQ0RjpN3P2#3 zCojnT1e}tR!dL3^I37kw(twtsES(wAy_-+O^!*y=#5iDf_#lFMRp0f0n!EOYCcHna z5TPLog{9<@a_y756$z0kB}!Nlx>+B|+%|Gqs8Li3Ta46)5XoZ9wxYRB$SpG?_tP{B&ODInV2Tp7XrkPtVxo+IZ^Lg-7kWCs+5O4BVtto6Hg!iUy)!(Ub;x zeK;7nLXg09%*Oy$R#uEw;fkUhK)W`)wOlH+^e{9#JKNxR8+*(1^mJLZk25o2q30*B zcoaD$HL1_Yt$Sp5FXySQ>?%9^Kh6Of=eq+rJ zfw3hyZA+Ct`Pp^Jn7a47N-LgXqHkn217i{8dZ=!pct9JY0-rA{3iS2$ z^*hC$d&! z-F}o3vO+~{a0Dt#kY;i({wE zL1~xZSXxYb?b=6&ybPF(6vTPU=a9DXIJv`-_*lf08YY6T;}}0Evyid(j=6T397<62 z^~B37I5v)^>=1L}n~@?sjdu5(a;E~k+64&+NP4Xr3Clna$`WOPF$V#cpicmsn}VS; zk(+vdscByUY+j7(aO};J7vtPrKDTZ0?mUe)dj9L!Uo0j?r1eGX>6;fI5>(&Brc3z_ zL^I^E;ScyMjD2kNKwdAEisZ~uk)xvlY8l|9Mc;P3`4Q-s0hdtK+}&>sf(r_uD`j7E zIOttlN;Z4sb@ac!*a0>J^G55#cW5kV>yEDt{`#7J;IWCyWW4c?kd~sdj!Vg=MzUy1 zo-RfJO+i{prS|J@JimO$!oM-%wbtG7v$sqK^S8??EWcBWMMvRRPm!go^9;eSc9L$m zjP@P-l}?&04K(tIP`=&rzODH0L6rAlj_sCq=`SSSnwV~e?$T{@3lq zK22Vxn`8kjsoyem$>ibYO`Fs4dV)H3; zPF!28YG*QgzbKZT)M%`-=zJ+(aVvNuytn9sO-4M1-yLqJ@I)ZZTyAsxyrJ$sxB%Xp zol>H5R7T4n?ejtdjo59jZE)lfD&)HrKTXHWQ**V^y$|1kTs^B$7Bfe3sc}ckA0A4x z`k-h%Bh`Ke3SA>j^B$6!EvC+C0XyLF=ULHbz14TtDm$*_u7AvbY}3IATeb8JuTnKN z2)tWHr5kgP{AYjqDOy*1)195X*E1DXalmFX!>szUJ}jB=g!Hlp-fq(hv;H+@T8#fm$qrVed(+KxJ8nH-mbg%4+S z&EHztz*LlEcFdmQea8B0_d+OLoa4Am>I=#=u9;kPin33{Q@sXunXoadub6&`OWXiR zJ7i^8`g;2r7u@TaTVBwP-F&q6PD`6&CNM;oOCgR`7wx8orq-KaMbmS(pV$9VrQ?~Q zbQ`sqmx}uesN|vm#}5@LPga{LXBZ|=OMInDKhgwck$c|6@?6^4nQ2Pv{tu}*f?#lt{DW~ zyEGNq-vZiX@p*8edY+N_Q+4-fg#)9%-}Ps16>pNhGh(c);AF~^vds(ie>hz`eL96~ zYGeFOd2l}XV{zu_J==TNx6eK2HCUBr^Jh5wB`Q?#hsk0i<)duuJUi_3PIyhtcZj`W zF7`us^gD-ayX#i=_)a4Ccaqz)trgqFBROJ!*o;ZA7JN1w-j32qXtzSEwk}q-EIBxQ)rKd*-)RZt8#q8P2fTXlo>{6nu7E@V19I+r<^lfj}Y=Rgwt% zY7zu-tDc!264>4s7ZUh|!`o`&XRBO80`)*k0aS$?_!{;iaVD8WWL8&9h^LO{_jKNEB%7r8Do0=*Z4u^j6%1G+F35h)~Wv zuB1U7F1S$68ZrEnK_N5mBTy}$2ya2FY9Ljc36V8?+L|<+L>o?L3aXiPWKYOWz|k3& zcdzBI^VfPeIBIar###juBqD>98pr?5)^Xc5eRpV|9Ofx%t;qJFEGgx!_V#ww8TfrY z^R;_zsvYkLaEGyBgm^d>wR28Aw7=LcrW3VFqS|I@FT{{<>){12_AsVwQ9K1mAkeF6 zagR>@P+w-RU7YxvMKR^AZ+9>H0b)kJ3%J7nx17!c1Dqmf7#=%N-p2vLSlwi|+RL8NvVENdj{kk_ZEMcU9Y{r+( zxUA)d)o&l?Bq7F$Q@~$lAITpJMp#4pg9?f*`%;TR1IJFp%{J~Pf91S~GH(6s^isA? z@b0L8SLACYfMzZJlW;8Uk_dGg)}Mz~U%^eISkWME^c(zHl^XbZ<#M4ST;;Ig5iHBL z{N;fk{L&xxbiVgZH$cFQ=+ykYd7G_LRtnia5(G+oW~Co#kG5TW96CC=BZ3V^3A z#AU{7kwhF*&UzYdy|r^?5`t<{F1>3%E_mpSo2$2*iLX-GZMx_mUtDi*v5T}u968l? zyzra{b-!ch?6DoUC_}&zlc{Ik(tT+62Rh?OHBl!VL-ZjIy>Gh{qw))wZ za51D}$8f`6w+Xq22{838aT0b*PX-y%{tSRJsQ|&ii~Jr6w)v$$zojm?mleHdKXEu z&gp@QkEBC|p^A*bRK3J$PBtT0hV!<@G{bs>-oqkE&M5#TQeN7mP{JqmAg){wD~4*4 zVV3nF3V$X2{KV`RB2aSN1V7nv+Ca0T+9Yl9+T|>n5_v{pYo(_51d!B|b2yD4p!xB7 zHC~V?H7B>gCWE#=%pYj5Ub2cl#N}N(5%#n$cPoxV`O11FnNW~$a$b;-^Z_M|Pk@g? zpHS8ec7i9SOOmj}3XnJwyZ3>lRHNk^Dg@CTs;d?uJ=O_EpW>H}5F|nZXgr$gc>e)s zQzgeB!$HE)>pG20(+g_DT^S&55LEJt`OXRmhD+81oDLBy= z;kvAuF`ma_G%2y+p5>4|<~4rL$`!w>%~+$alEFag&ruT?6KY9T+(oxcil&kI~og~~4!(nZ&ohzk}Qf*Q#f ziaYCh`X&L(8|iQwioZWOPn_@hU^=n!rxD4;&pF<|W(!o`V(s;4|K#9Q6fYyHHVAnS z3}@#Z35L(7xO4wvnz32bZAYxRA=Ke4IfQxQfOS${x{&c-TTpbUUSMoJ>h!Ro;`wK+ zluZGQCK(6FmHnWz!{4(6pd0B-Az0x2G)?FWj6`xRiO~Da1+rqz4NrqZciw)NnR^hcUBjs3s>5qE>kc?_0Zzl}5-MaOA>p+{vE8Pti5^3GCaOS#R zpKcqp$bP}ruNeC)5*#wIii-7bhUt!j*iUlOh6x+%jEMy1KV1*-?h+bZOk>nz#JA+` zdHAU-@IJX|kfS8S*I}CpD*(cTyO<;{lHaqa=kzh+h|5Fg4GURu-xnh3fht#Ae=e0;8vIF+ zq^h$EH+`A(eg$Uyl`i$TB->+szCX5z=FJxT;SIzcjTx+JLS%ZQD9*%TX4Lh2>#jS` z>d=oc&GM4jgMzoY3Rz(pKT;ob#3#$$FjV z=vKrs@P=N8HJ-79@sgVO<|QW)%=k=Asy5z+dfNfn6*BAMX4;*!qNEieH@4liE%%Yl ze0OHQca%#hFeA-|MKm=Zc)0SblLeU@Q+}I=y9h~R6bvS;W(VJT^ye~R{qh!HjBZLc zY{h)17snU0?mI-TdR*Z~97K$E1?@(&^DFMPW*(34I3c*za;4n`Qb$wS&%~o9c3uS;=Vx%!%q};jq zz4=VpeBU4y-%gqHPG?!~x&Hb%u9bao`$tX5LCH;Hhq>nLH$_U}epf?6dJA=fyGT3Kla@2OhnOu1Q7B=30?e>ZkUNSDC(-oT4y%$P=7q8gce zG;@1R0&VFQjGOB;NqSML@_^gQZ5i@DpDH-+xq>iGNn&`0wRbh~`{yn(8Yg@JATeh( zbW%!ci`e7jiSw6dSWOqRU&shW8qZ0U6X%Ylvly|BNA+)L^+;%74RY1tt*<)9+-o-@ zWSG3huh9D0{o^NUl=1J6xCWaqDU3-;R7q@}`WyeHkZlI9%xR7jM-P{zL~kp(bvmc2=In1rw#R%4 zmi_Rq_qKSbX#8bpGQ|P4R(o3)1eH-4@^I0*x@%X{#0)27>mvtkGZ&;X!G1Qk!lcFF zqf6uz`}QQXt?zo@6Z4Q-`FXzh<*{#M8`BVvob(h+$OQ%65dTPT*~I_4p@sR6_56Y> zcB#R;Rc($$C`UY!ZP?w8`P`gpfF2^_?BBEDV_G6poc@ta)R6LVbd}>~D9fpo&OoP$ z0ay{8n6&aSzdNDi9r6w{spA>xkDuXHlhDFlkUT{|WRPMY-0 zD(s22CR!-=;>q3?AvH}{_XxSe+awbPBuYOfhmuhKvj*aI)$;e~yJLLG7O_s7?Q4SP R38~HD;p%;|+BxLG{{XxNugw4e literal 0 HcmV?d00001 diff --git a/FrontendMentor/ping-coming-soon-page-master/work-through/myProcess.md b/FrontendMentor/ping-coming-soon-page-master/work-through/myProcess.md index bb89bf0..5afe5a2 100644 --- a/FrontendMentor/ping-coming-soon-page-master/work-through/myProcess.md +++ b/FrontendMentor/ping-coming-soon-page-master/work-through/myProcess.md @@ -55,6 +55,29 @@ Hover States for Social Buttons (flip colors) Attempted to use hover state to change the background of the fa-stack but it wasn't triggering. Could only change the color of the item at the top of the stack (i.e the social icon) Learnt you can change css of other elemnts when hovering over a different one ... sorta. Has to be a child you are changing, https://stackoverflow.com/questions/19121223/css-change-an-element-content-on-hover-from-different-element +Next Day: + +Realised I had to change a few things. Change the input field from `type="email"` to `type="text"` so that I can do the field validation. + +Added a div that starts as hidden and has no text + +Added some css styling for the text color, and added an error class for changing the input fields border + +In JavaScript created a couple of functions, the first that has to return true/false when the user presses "Notify Me" (basically onsubmit event), does some validation of address length, and address structure. + +The other method reveals the hidden div and sets the input fields border to red. + +There is a third method that I couldn't decide about using. It will clear the error message. The idea being that as soon as the user starts typing again in the field that the error is cleared. (or better yet, when the field gets focus again. I can check for that? ) + +Created a simplistic regex for email address validation, with some test cases to check my logic. I'm still learning regex, and I don't want to spend the time learning all the combinations for email addresses. + +I did research and find a more "correct" regex that I could use, but I will stick with my for this sample. + +Played with alignment so mobile & mobile error are close. + +![mobile difference](mobile-error-diff.png) + + BUGS: * when screen not tall enough social buttons and copyright pushed up the page because I clamped them to the bottom of the browser window, rather than the page. * because I used attacked circles I can't just change the background to blue for hover. Need to either sub in a filled circle on hover OR swap to manually creating the circle diff --git a/notes.md b/notes.md index ed97cbb..e1ddb78 100644 --- a/notes.md +++ b/notes.md @@ -33,4 +33,10 @@ Think of it as a combination of learning, and tips and tricks. They will start u ``` * Random aside: can't carry on a list after putting a codeblock inside a list +* Found useful site for Regex writing / testing https://regex101.com + * this specific address has regex for email validation https://regex101.com/r/uP2oL7/1 + +* CSS - The "!important" rule should only be used as a last resort - nuclear option + * better to do elementName.className when wanting to temp add a class to override some css (like say a border color) + * Blah \ No newline at end of file