From 3a31178048dc7aa386381eb9b1e2ecbc7d689c9e Mon Sep 17 00:00:00 2001 From: Kirk Date: Thu, 28 Jul 2016 11:38:48 -0700 Subject: [PATCH] API Updates as of 7/27/2015 (#3) --- PlanGrid.Api.Tests/App.config | 1 - PlanGrid.Api.Tests/AttachmentTests.cs | 21 ++++- PlanGrid.Api.Tests/IssuesTests.cs | 14 +-- PlanGrid.Api.Tests/PhotoTests.cs | 80 ++++++++++++++++ PlanGrid.Api.Tests/PlanGrid.Api.Tests.csproj | 11 +++ PlanGrid.Api.Tests/RfisTests.cs | 14 ++- PlanGrid.Api.Tests/SheetPacketTests.cs | 49 ++++++++++ PlanGrid.Api.Tests/SheetTests.cs | 46 +++++++++ PlanGrid.Api.Tests/TestData/Sample.jpg | Bin 0 -> 58468 bytes PlanGrid.Api.Tests/TestData/Sample.png | Bin 0 -> 133578 bytes PlanGrid.Api.Tests/UserTests.cs | 6 +- PlanGrid.Api.Tests/packages.config | 1 + PlanGrid.Api.sln.DotSettings | 2 +- PlanGrid.Api/AttachmentUpdate.cs | 13 +++ PlanGrid.Api/AutoGeneratedIPlanGridApi.cs | 4 +- PlanGrid.Api/Date.cs | 75 +++++++++++++++ PlanGrid.Api/FailedRequestException.cs | 14 +++ PlanGrid.Api/FailedRequestResponse.cs | 13 +++ ...tachmentUploadRequest.cs => FileUpload.cs} | 2 +- PlanGrid.Api/FileUploadRequest.cs | 19 ++++ PlanGrid.Api/FileUploadRequestStatus.cs | 13 +++ PlanGrid.Api/IPlanGridApi.cs | 79 +++++++++++++++- PlanGrid.Api/IssueAnnotation.cs | 2 +- PlanGrid.Api/JsonConverters/DateConverter.cs | 25 +++++ .../DateUrlParameterFormatter.cs | 21 +++++ PlanGrid.Api/PhotoUpdate.cs | 13 +++ PlanGrid.Api/PhotoUpload.cs | 19 ++++ PlanGrid.Api/PlanGrid.Api.projitems | 21 ++++- PlanGrid.Api/PlanGridApiExtensions.cs | 89 ++++++++++++++++-- PlanGrid.Api/PlanGridClient.cs | 17 ++-- PlanGrid.Api/PlanGridHttpHandler.cs | 30 +++++- PlanGrid.Api/Rfi.cs | 4 +- PlanGrid.Api/RfiChange.cs | 22 +++++ PlanGrid.Api/RfiUpsert.cs | 4 +- PlanGrid.Api/ShareableObject.cs | 19 ++++ PlanGrid.Api/Sheet.cs | 42 +++++++++ PlanGrid.Api/SheetPacketRequest.cs | 10 ++ PlanGrid.Api/Status.cs | 16 ++++ PlanGrid.Api/UploadFile.cs | 10 ++ PlanGrid.Api/UploadVersionRequest.cs | 13 +++ PlanGrid.Api/UserReference.cs | 8 +- PlanGrid.Api/VersionUpload.cs | 19 ++++ PlanGrid.Api/VirtualFile.cs | 10 ++ README.md | 15 ++- 44 files changed, 849 insertions(+), 57 deletions(-) create mode 100644 PlanGrid.Api.Tests/PhotoTests.cs create mode 100644 PlanGrid.Api.Tests/SheetPacketTests.cs create mode 100644 PlanGrid.Api.Tests/SheetTests.cs create mode 100644 PlanGrid.Api.Tests/TestData/Sample.jpg create mode 100644 PlanGrid.Api.Tests/TestData/Sample.png create mode 100644 PlanGrid.Api/AttachmentUpdate.cs create mode 100644 PlanGrid.Api/Date.cs create mode 100644 PlanGrid.Api/FailedRequestException.cs create mode 100644 PlanGrid.Api/FailedRequestResponse.cs rename PlanGrid.Api/{AttachmentUploadRequest.cs => FileUpload.cs} (92%) create mode 100644 PlanGrid.Api/FileUploadRequest.cs create mode 100644 PlanGrid.Api/FileUploadRequestStatus.cs create mode 100644 PlanGrid.Api/JsonConverters/DateConverter.cs create mode 100644 PlanGrid.Api/JsonConverters/DateUrlParameterFormatter.cs create mode 100644 PlanGrid.Api/PhotoUpdate.cs create mode 100644 PlanGrid.Api/PhotoUpload.cs create mode 100644 PlanGrid.Api/RfiChange.cs create mode 100644 PlanGrid.Api/ShareableObject.cs create mode 100644 PlanGrid.Api/Sheet.cs create mode 100644 PlanGrid.Api/SheetPacketRequest.cs create mode 100644 PlanGrid.Api/Status.cs create mode 100644 PlanGrid.Api/UploadFile.cs create mode 100644 PlanGrid.Api/UploadVersionRequest.cs create mode 100644 PlanGrid.Api/VersionUpload.cs create mode 100644 PlanGrid.Api/VirtualFile.cs diff --git a/PlanGrid.Api.Tests/App.config b/PlanGrid.Api.Tests/App.config index fcdb8ad..639b40f 100644 --- a/PlanGrid.Api.Tests/App.config +++ b/PlanGrid.Api.Tests/App.config @@ -1,6 +1,5 @@  - \ No newline at end of file diff --git a/PlanGrid.Api.Tests/AttachmentTests.cs b/PlanGrid.Api.Tests/AttachmentTests.cs index 8f089d6..3e1e92c 100644 --- a/PlanGrid.Api.Tests/AttachmentTests.cs +++ b/PlanGrid.Api.Tests/AttachmentTests.cs @@ -19,7 +19,7 @@ public class AttachmentTests public async Task UploadAttachment() { IPlanGridApi client = PlanGridClient.Create(); - AttachmentUploadRequest request = await client.CreateAttachmentUploadRequest(TestData.Project2Uid, new AttachmentUpload + FileUpload request = await client.CreateAttachmentUploadRequest(TestData.Project2Uid, new AttachmentUpload { ContentType = AttachmentUpload.Pdf, Name = "test name", @@ -27,7 +27,7 @@ public async Task UploadAttachment() }); Stream payload = typeof(AttachmentTests).Assembly.GetManifestResourceStream("PlanGrid.Api.Tests.TestData.Sample.pdf"); - Attachment attachment = await client.Upload(request, payload); + Attachment attachment = await client.Upload(request, payload); Assert.AreEqual("test name", attachment.Name); Assert.AreEqual("test folder", attachment.Folder); @@ -45,6 +45,12 @@ public async Task UploadAttachment() await returnedPayload.CopyToAsync(returnedBytes); Assert.IsTrue(payloadBytes.ToArray().SequenceEqual(returnedBytes.ToArray())); } + + Attachment retrievedAttachment = await client.GetAttachment(TestData.Project2Uid, attachment.Uid); + Assert.IsFalse(retrievedAttachment.IsDeleted); + await client.RemoveAttachment(TestData.Project2Uid, attachment.Uid); + Attachment removedAttachment = await client.GetAttachment(TestData.Project2Uid, attachment.Uid); + Assert.IsTrue(removedAttachment.IsDeleted); } [Test] @@ -69,6 +75,17 @@ public async Task UploadPdfAttachment() await returnedPayload.CopyToAsync(returnedBytes); Assert.IsTrue(payloadBytes.ToArray().SequenceEqual(returnedBytes.ToArray())); } + + Attachment retrievedAttachment = await client.GetAttachment(TestData.Project2Uid, attachment.Uid); + Assert.IsFalse(retrievedAttachment.IsDeleted); + await client.UpdateAttachment(TestData.Project2Uid, attachment.Uid, new AttachmentUpdate { Name = "new name", Folder = "new folder" }); + retrievedAttachment = await client.GetAttachment(TestData.Project2Uid, attachment.Uid); + Assert.AreEqual("new name", retrievedAttachment.Name); + Assert.AreEqual("new folder", retrievedAttachment.Folder); + + await client.RemoveAttachment(TestData.Project2Uid, attachment.Uid); + Attachment removedAttachment = await client.GetAttachment(TestData.Project2Uid, attachment.Uid); + Assert.IsTrue(removedAttachment.IsDeleted); } } } \ No newline at end of file diff --git a/PlanGrid.Api.Tests/IssuesTests.cs b/PlanGrid.Api.Tests/IssuesTests.cs index 3ca290a..114d758 100644 --- a/PlanGrid.Api.Tests/IssuesTests.cs +++ b/PlanGrid.Api.Tests/IssuesTests.cs @@ -36,14 +36,16 @@ public async Task GetIssues() Assert.AreEqual("AC", issue.CurrentAnnotation.Stamp); Assert.IsFalse(string.IsNullOrEmpty(issue.CurrentAnnotation.Uid)); Assert.AreEqual(AnnotationVisibility.Master, issue.CurrentAnnotation.Visibility); - Assert.AreEqual("AR.1", issue.CurrentAnnotation.Sheet.Name); - Assert.IsFalse(issue.CurrentAnnotation.Sheet.IsDeleted); - Assert.IsFalse(string.IsNullOrEmpty(issue.CurrentAnnotation.Sheet.Uid)); - Assert.AreEqual("Initial Set", issue.CurrentAnnotation.Sheet.VersionName); + + Sheet sheet = await client.Resolve(issue.CurrentAnnotation.Sheet); + Assert.AreEqual("AR.1", sheet.Name); + Assert.IsFalse(sheet.IsDeleted); + Assert.IsFalse(string.IsNullOrEmpty(sheet.Uid)); + Assert.AreEqual("Initial Set", sheet.VersionName); Page photos = await client.Resolve(issue.Photos); Assert.AreEqual(1, photos.TotalCount); - Assert.AreEqual(1, issue.Photos.TotalCount); + Assert.AreEqual(1, issue.Photos.TotalCount); Assert.AreEqual(DateTime.Parse("11/16/2015 18:32:43"), photos.Data[0].CreatedAt); Assert.AreEqual(TestData.ApiTestsUserEmail, photos.Data[0].CreatedBy.Email); Assert.AreEqual("Galaxy", photos.Data[0].Title); @@ -83,7 +85,7 @@ public async Task GetIssuePhotos() Assert.AreEqual("Galaxy", photos.Data[0].Title); Assert.AreEqual(TestData.PhotoUrl, photos.Data[0].Url); Assert.IsFalse(string.IsNullOrEmpty(photos.Data[0].Uid)); - Assert.IsFalse(photos.Data[0].IsDeleted); + Assert.IsFalse(photos.Data[0].IsDeleted); } } } \ No newline at end of file diff --git a/PlanGrid.Api.Tests/PhotoTests.cs b/PlanGrid.Api.Tests/PhotoTests.cs new file mode 100644 index 0000000..2220245 --- /dev/null +++ b/PlanGrid.Api.Tests/PhotoTests.cs @@ -0,0 +1,80 @@ +// +// Copyright (c) 2016 PlanGrid, Inc. All rights reserved. +// + +using System; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using NUnit.Framework; + +namespace PlanGrid.Api.Tests +{ + public class PhotoTests + { + [Test] + public async Task UploadPngPhoto() + { + IPlanGridApi client = PlanGridClient.Create(); + Stream payload = typeof(PhotoTests).Assembly.GetManifestResourceStream("PlanGrid.Api.Tests.TestData.Sample.png"); + Photo photo = await client.UploadPngPhoto(TestData.Project2Uid, "test name", payload); + + Assert.AreEqual("test name", photo.Title); + Assert.AreEqual(TestData.ApiTestsUserUid, photo.CreatedBy.Uid); + Assert.AreNotEqual(photo.CreatedAt, default(DateTime)); + + using (var downloader = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip, AllowAutoRedirect = true })) + { + Stream returnedPayload = await downloader.GetStreamAsync(photo.Url); + payload = typeof(PhotoTests).Assembly.GetManifestResourceStream("PlanGrid.Api.Tests.TestData.Sample.png"); + var payloadBytes = new MemoryStream(); + await payload.CopyToAsync(payloadBytes); + var returnedBytes = new MemoryStream(); + await returnedPayload.CopyToAsync(returnedBytes); + Assert.IsTrue(payloadBytes.ToArray().SequenceEqual(returnedBytes.ToArray())); + } + + Photo retrievedPhoto = await client.GetPhotoInProject(TestData.Project2Uid, photo.Uid); + Assert.IsFalse(retrievedPhoto.IsDeleted); + await client.RemovePhoto(TestData.Project2Uid, photo.Uid); + Photo removedPhoto = await client.GetPhotoInProject(TestData.Project2Uid, photo.Uid); + Assert.IsTrue(removedPhoto.IsDeleted); + } + + [Test] + public async Task UploadJpegPhoto() + { + IPlanGridApi client = PlanGridClient.Create(); + Stream payload = typeof(PhotoTests).Assembly.GetManifestResourceStream("PlanGrid.Api.Tests.TestData.Sample.jpg"); + Photo photo = await client.UploadPngPhoto(TestData.Project2Uid, "test name", payload); + + Assert.AreEqual("test name", photo.Title); + Assert.AreEqual(TestData.ApiTestsUserUid, photo.CreatedBy.Uid); + Assert.AreNotEqual(photo.CreatedAt, default(DateTime)); + + using (var downloader = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip, AllowAutoRedirect = true })) + { + Stream returnedPayload = await downloader.GetStreamAsync(photo.Url); + payload = typeof(PhotoTests).Assembly.GetManifestResourceStream("PlanGrid.Api.Tests.TestData.Sample.jpg"); + var payloadBytes = new MemoryStream(); + await payload.CopyToAsync(payloadBytes); + var returnedBytes = new MemoryStream(); + await returnedPayload.CopyToAsync(returnedBytes); + Assert.IsTrue(payloadBytes.ToArray().SequenceEqual(returnedBytes.ToArray())); + } + + Photo retrievedPhoto = await client.GetPhotoInProject(TestData.Project2Uid, photo.Uid); + Assert.AreEqual("test name", retrievedPhoto.Title); + await client.UpdatePhoto(TestData.Project2Uid, photo.Uid, new PhotoUpdate { Title = "new title" }); + retrievedPhoto = await client.GetPhotoInProject(TestData.Project2Uid, photo.Uid); + Assert.AreEqual("new title", retrievedPhoto.Title); + + Assert.IsFalse(retrievedPhoto.IsDeleted); + await client.RemovePhoto(TestData.Project2Uid, photo.Uid); + Photo removedPhoto = await client.GetPhotoInProject(TestData.Project2Uid, photo.Uid); + Assert.IsTrue(removedPhoto.IsDeleted); + } + } +} \ No newline at end of file diff --git a/PlanGrid.Api.Tests/PlanGrid.Api.Tests.csproj b/PlanGrid.Api.Tests/PlanGrid.Api.Tests.csproj index 6bdcb51..9d0b413 100644 --- a/PlanGrid.Api.Tests/PlanGrid.Api.Tests.csproj +++ b/PlanGrid.Api.Tests/PlanGrid.Api.Tests.csproj @@ -30,6 +30,10 @@ 4 + + ..\packages\Newtonsoft.Json.6.0.5\lib\net45\Newtonsoft.Json.dll + True + ..\packages\NUnit.2.6.4\lib\nunit.framework.dll True @@ -46,9 +50,12 @@ + + + @@ -66,6 +73,10 @@ PlanGrid.Api.Net45 + + + + j-D^lS}ruEMiGr|yc{d>D$c4%#GT{2 zixr!!@qf00%zo!cqWoJoYK0za{NLtX*G#Z^M&|6jv)2W+gXjeU)JkXmxuHBc}+>;irfF()Q`2Hito}3te?`llGbY)fw#1Ek}4Lq z)W$=i z2S&)Qoc=45JkXmrLPlvl0<>{A_~vMxfE+vb_~wn%i@hn~er8y_Hn4y6&LAm9X`Y;t z`Frt+Z8mYY7rw8y$R)N=v^t4#`M-9cn6)E;|p4f416Q%Sng`@w9D%I&eEDJq2f)k4y0aAO{aO@lTsVc13bcH9Y_Rop7@HKBV z+5l6l{Ca%=tX8yaMi=4iH%G;ApjpIzz!{8`T_2DzDKk~5)0=zclVp})c|fu%X}ixG zya1@F7ONS5ow#K}TK?|OzVRu&Gd_QlUvC;rRL|SMvEizk)^ZBo#H~6aG{U|P?3%5v zEoCyV(GbsqM4q(@UsWP|UQ_{p)+|oE#~2H` z8;RU$(`}ghdQHG8E>^t-k=oV5dyv~p$9XNLorQdv5`i*5^u6(z84sQ zVE4605g&Sox6x0)bW5X}Hr~%$Q^M6Iniv*Iu6{QtvQ>tzC7WY9MWOP54SbWUGi?g9 z684f2B{tOqO&h0dr0fX{6D`^S!DJh6rgE?ss_+exv6lt&!EAbOmc7H}zR&yGbZ#H=z@ z6>dXV+1!%!^V+@>Bk|TR*bMd+3{t0PPbA+T8)w0j*14m;U0hBHJ@0Nx=wMT%bl}_C zrM)g43jpFDw+QDGQrIF)y7m9`#A7-6Rb6(5Y0xN_WzEjkYRYK~n;^yAv38 zZ2@0-=x1_zq$NGoNX}auC7_;>@$84`<`Xw#K}1{TdYHU04fJn&Gg@Wy;XYUj`T@D> zzoEP@_&{*<6Qg8gjJXL`>%u^c;qFUNa9E8*LfJxP>2RCTuO>1xpA{gcwT?J{Bgj$8V3nt|>@GUfM( z9HGSp2;-3*=Ja&$O)#6tE$;pZ-*0^(-^_OfFwz?43SQDLTj%G28UQ?5XGnXm;V6IDz^xg zkOATYrJ+j({hdkCA7F*;U%7pEYHM5cl*|5NIxjKk-#!8`i#H&)-QJKiiPQpZm)dQI zws0hma3{x&QhMFgEwn9e*0AJVHA%DsQ34y8N`@c>`ULAL5EsUrmN>0`zsOr}M_OV~p;h zWOr=Q42282-*b z$Q@5vmRn-I#pNnn-N{f;;+F6mP8n3N6up1vd^-kIt=up|y0gwPzt2gVCDe<_-DqyD zq01LC;;Rk!MB%O85khq$FlU;5bCau6Id>BH|) zw@ZcW5>B?0*njupJlv8lWe!~u?lU>l6`2x!k+<%(#pW?z_&! zf(O%1KB}QLhh9jR=9DAq;X*rn)-cjA7Wo~`gxi@G<5!T4m&0=wrzxA=n%jv%(e^pz znT9eqTP($A??uMwaE>!FBcLjX=Bqhm>biea+q;L~E%xvO_9pw6Hc~_gg4808PEQM$ z6)nD{9EK%BEcWe_Z}r}{nz{%`u*bd&w))=lPL%u2?43U{NR8NUJSl?$2{f^w2ywUO zngve_y=NmNF=abz-%XVzjs>o4=2;Mi{JULUKkXKU(!l!^ZClxflxCo^T+TK+ItREz zTSan!NYXk2n!K;TUOM20A?S7{VO_Zy&(`Ux>}s2+X&}8IqinMLtq&;GI^{YD%9q!9 zmF~x>SA(EWca$8>X1mi4e1+ei6EYvEOLR_b8;R`PTxCF>YNL0sx`ohew@shy5M_nq zKfihe3~5FNx)ls=Gg+{bx`As7dKNj=D)*XJY9{m-{}NwxtTRSHJg{jKIiAgCEI+ZE zjR*qe2ft=?%fGsKH+a$nqCmM z*F1@*s2e1deamHpa4es_(GpZ=M|ZUI#`h=~+)xAZ9jsR8x8ISVMuIkbjbD#L4K{$J z{rU#0q=!F_Gh2YZWm#0@2V&v)p|{r^t0Zo#v=9$M1}GyUGR${9HJWIvuKAo^v8jsk zw(k{P2-!_#(dgOGq6KbaM{wTNC4G7wO%csS>ruC%T_pfm);r(6Pgt?aZMeWd777p6T{OQNL z=MRtG7fw>|a@#Jb%y25Rb$tYIn=Q0bh;aA{7}cESE~XDrzsSK5S@IY7^rAV6%9==# zmgz+F2ly0SfgG}qHe&YAKrP07^LvO7NCNcYwrh|Z9(T@>($#?0$ z=!2pu>pfEfZ#8YJ=7t2M->|DX|Jc5YTiVPt(VINvE&gk+JWk8i!le=vO}IV=zngT= zq>rFKUJEo-aeA-N#Smvr)ydXCNHgH;YwhzQjk}=xfNCwkFz_(;`Q-?}coyo(Qnx3; z>q`1IS)#5@?RUP|_XE@;KFE3TQm1?Dne*FN9}X7ZKM8noP$Eg#h89*FGR4{UVn=?@xZ*} z52wh?v}Tcme(I=-I0^v z<|t|!un0@nHH1>tj>t3J>3F1kTs<4)x-Yrh*8@^YcuUbigTYF$S@5^`>ru=a@b|5wN``92MFx}UEEt7E3Iz>kP1Nq2!>3g&9)ERvD zhu!{P!2m__B=Q_cGmj9cUvi_~klbWH*4cP>(~)EW!thr(gR$XD%z{CEqMB+cusE*pJfs{Q4CGAf|^2%wXCGggjF+}ZJom@rh?;Tv;NglRqe^rKeU5Fdhtr5sn> zkthAWSbghX7JupZx80|6?KK>R!;wI&%6V!}_uI->Klb~D{9lIPmwVJgQ9sJy7O$%h zG|Y-5>bD@}*BkW_rGE4fdL#Y!m4o}+`hPaV-ANw-KfOtoy4~N%pSt5nsa<`clS)4a zi~21y&~Vo>kc_N9Fv0O81qGk~xip!YU2A-&4320>9xbm313%O+|2r?9hAfT6<&upN zBFhk%mt{6S&8c;cd_%PLnucRPj!vM~FxEh&mCvHd!Dr<(#t7NolA`DK=giIP?=OWe zfJeLV>C#fhNGqI#&2x6M{n;{qHM5+ceiuli!*tG>PWzH~{L$`V)?u?D^y#B*<7ghu@Q zoTlOt0HTiiFP;%hyMs_|blTayR>=DTKtz4!gmX1TTKBeSbG(hywJK3rb$8DZseBtL z@G?i+r{)nL5QhAP;MnY@XN)^WI#z+U%iTCl;Mk=pVD$Il1&`XfV}1 z^RuI`U4Wn~FTZTeJSFMu6M7(_rK4@fqpWq%w%Dt))V?V;ykNl8tCA&8w~7jQOD3=R zpElAH*K;rI>BSocHC&tDXVf*YWU$VxkSZ2Ok!>*$3Sv!`VpV%ZiS{z7?;G`n-uq>s z!(FUAVgoa@_*GX@OU{n2sX|MBUFiyWO-(%I&4(S^kle%1TdFIzu6f8q#6FBC7d{j5 zR^_xZko(3D02*s2mSP=(83F@qXsS#?zPt0+69b)qWv*>(h=&73uB&VD@>70dwVSQr z0KeL#?1i%Io9ezviCtLMz3t38inw!YN;LNR+OgTY&UNz2&FrWsbwSJY`E}#s-0K6$ zlGdl-)x7#r@oI5nW+t@D1jT;qqXX=Mp=S~)HLcVW87NekhR{;!g37HcdK^NSLzs%c z6#@gjK|KB`ALAtx7(x~jBYQ``=j-mx_*+)jYkfjXVDMR~S(Z5bST?}XW*y=H%qd{wHu3!~8 z+;SpCI_q@u%)#P#1Z;ObC6J&=+>2tP3|DXTN zm>Yfkv9IDXubk#8Ia9OdArormo3kt-tb<}`Ou6acYfppyXB`Fbs_dcR9_-G6>^)VP zP_9~#rMWQ`8H4vw-k8zva`|LTUt=Ga!0!3(*b)eP+R?05UQb?zK(BOPb@gsbIo+Qv z_IFX=xOV$jz>b7A?~tzoZ8E4^r@llU5Hi_y5B3|TxdG4u#CBSro3P|S()fGiQ&&Jz z0JwZtCjC7aL0JJm4!pi58T>Tsp!=<_M1bKC?BF-_2&nK3mZFk&++?6qa=0`~M*m_F z9(D5L{%}c((r+|{z4L)dl6So=slbNs`(5K^f`%T*;e+UbLK!a!a=G5Gd- zW5A4jeUO0*u{EIob5}Tn{)`~8ciE@iP*>xVpuF_*(7_mKierv7Q54Pv48;-~4cb_`T-?mNe{>uy1na8-wllVg@yGC-8vW0r(x77X=5_;|F z$2#?|LsyQOqq&Rq7EM8t!9znjF0hYM$F&?H-eU%t{*crwFL+cp<;teQIAii};HH4umT!{&YOvUlHInLi1dQ2M}jCCOYbhZ;;(=*-fl zzg7D)2zV_rKFOE^@glIwP>z05P5SOe&WHCi;YV**u!nyqBXBL>>D~)YcrOqfdSYIW z;0?MsfB4PwRr4XolyF(YYx$|GxZL9>0_p1YV@H06scnGCZ3V!qOLbox8bsOW2tp-) zTHOmGc7OSiLAsQY!E564cC}^XSK`f_4QbnY1kT^5=mY8Bs<^0;@R*Mt=z`tnP&xh< zu!U!YSWvmA7LjeQOT(l)h^X|$`N|XM7IzC;aI*gQ66dq0Ke0=}5`)sc`9mbo;SumH zv!4CC+o2?O_m#JNl+-ZIXL!O^Cp$@DckB~MIi@gh6aP%%6zqo@@UO!+CW>VEnMo(a z{GwDwHV+bT$iiXypw(>|CATL&n}y>e>*gwQC-l`9Wc>$k^h=;wV~+v-%dKZ=51inx z;7?O-ThkX2N_dNU@q!?aIIfrm$+v?FWp5iP&zhXn^2`tP=JHtWM=eoA&ZGfvpNn>G zw6yo3*urFI95-Hsl%?)CLAWCmju>9v8x%ljx=0R_05sp4x&Eaw2+%1WVHd&r36Za7 z@5xuMj2=>9Johi`H{B7c?WBE_Iom)tGI`<+7Nq-X^Ji>+NwsqqZY|LrQUZIb|tEP z$qI)*dTn7ywI>ed;A!6;2IZ@-ofHCxk{feR9)D)>@ME3Gi4Ua3T=}j5_(IT7x-oqz zXg&APQU%8jxW_E$=E;sc+gW*=@3l@Njdl%}I%m)vvw7+?M?KYqIm+?@;v>VPrPi4( zl0Tu+YlKJ8M)ccnh@_y~6GmoUSAjJNI>cJ>Icv8Fyv-NDa( zvs^D3xx$%$aU&>dN%h7k+t**~T*!TDTbt2={9~3tOam=wT3^mxg>CioWLfSno-c|- z_zj&4oLef!RI$q^&tqcbpxqzk{BduUue6Xq?VkkIK}A+Pv&Y`*?!bsD)JQaxAuC^%H|>Y+G_!k zAg!=0TC&Y-U+=Isi8v>dQB)HwEVvOzcKE8xG(qNJY|e?&PaCF-gB-w z=bE`vu+lH8`uUSRUzJM55f!X!5fO}_8^Kyh4DmVN8rMYo(6CUr(V03Tv$ZHtmI4dL zj{9tia%YwGLu2OV``Y(o*yehoianZ$%CF14{816jW`)Ybs~#&F{LF7NGaZ)$pO@a* zkA#|EMvMz@a`IB_thAU1e40IT^e#)~OMUkE)2@=&vwW@*1WF=(d+)K#k(Jm_|A4cW*NUU?ln?2R zQIys<_YY1h3p?}K+NMSp42uN!k4ZYj$NGLTsTRc6DVpmy#mo+^nBHCTWY!EGSSJ;3 z#oe(Db_DYv6`?)rPOA@D4l2;RjGex<;i~s|8!Kb_5bq`q3QugzbBfmGuF4EEKjgfh z;iqx$ctY-`!lik8WLC!LU*dinow%C|^9AqgFLzb@X75V)T4_inE%Zn~Hr;&L!Usa^ zot7-_EEGf;$*2^(@jz!IeH09q##U#x!kVosF0x63Zbn3kv$ zllO@LKGfzEoGy~a^(5#?4nv>b^oL;dknN1H#8T`uFl2XaTLHi-vx0E=2ftVAFH&wh zBZ8X0XV_3}5j=+=dOxy{br%;=`>ae6nca+jn&s=Y-(^0^BkFh0>mm0s?@7XsKap@| zb-;*c>cucL<>gpKkhiOrkbacpR9ygpd0ooCFwV-_+(e}%;DS9ZC(jXOw=z7{wC;;w zZRq8SHX<-jGz?3P{)>GuCu?&6{LM**_bLI)V3Z=-DL?z}a?0As?6<93H;tddV&QA) zP%7aaKsw4zaPVbz- zv^v{4N+Sjeqbtido9do-PntLhDJ29B5+Vx;TU2r9b3UR4+<3uh)g3g?=aP_ z%n3^C^N+FnZLK4BeB|A#uUzSXmm^O%nG?(OAzDM1yc6-pZ(=hIWN;1mVmHiIr!Nul zc<21Bj#36bcXK7*0p7;%^)<+k{Ti{Ay_0Nte()0ei-_;qdEnEot}I1OO%6}Z54XN^ z&h`4UOdq-(8tT6>EpT1J!OGTL84FYFT7r&D0Y^={NUl`;9(chd7X8F9r%*e?Q^zXV8$dfs#(#8v8< zw)@tfz5o&e`wZ5|_HU!H3r@|K6L2>F&%(lyz%U6#@->GWNxgLD5oF7yX$>yxCh&n( za}1~XgJR>4Upl1z%kOH|U64W9>Xu2z{?eqI?R}^BWrr&hZSrQHx72TlQPJ<)-%LRKeT=&AoOGyt9Aidtm)g*{ApnmQDM8^55k& z^x8JaVgFilcZE&M$%bOFaH)#}F@1l_P*v3#gD=91y;Ei86f(NX`K*%L@#2pY_##%g zqhc6rfJo9hr%ve=$(RiV5twLUNxyG3Wg1(1U3EjbF;CfXt`YUmKhx(;v-SU08roz# zq@10)o@8yx8gfZ%d;JAU`>y{-QV=+TC6BfaCk(PT@!7wk3P>7iuRfigV3IoU@ey9) zUij_5S=f-9+<9O!>$SKflijlk>y$6OFpoJ~q2HaJW>OAx9ax&&7!D#P(E+`v2Rb8o-AY#Rqi+ z&PEM3S~Ag&QqiU>A23yyW8MPFDsFKs z=hjf@X3?0ZbS()PAm`EniK0=0k)o{z0oGXP+D-VJgc`$$ym#My7Xg(Ao$6?+&>k8y zBDcOcj-$YLV_>*QtY~Ai>kk))AlTB9S?#Q=wMkq{7%w%6^A^L_iV%i6x=e$y5Jf}2 zx8O2Ddy(Q4XjU|_G@!a6`Za7CEq7qG!J7FikWqi$oh4%*nU~Zg0P(hLPv{CD-uX+njhW>!($7OA% zl1<>OZikB~`yb`HKNSCHF|3?AyW8^?hYV5fDsQeD9~#%_ZMuhdQi<#k=uAD zg3qBOu#{%M^NPct7xk$=5_#`h3lk4H|zD7<&!bp zwwL-Tcy+6JrKqwiHA3GilhS7{>Ubuk*Z~d5tyqio=Fe!zZR9t0CUC^NwfOJJov^re zerTsK9JCsF^3DZJ!&yfe(9`^`^L#DIUEX&u73hI?vzo2Fp*z={IOOEYAZ-mRl@AhN9@wMBHsAO$b7A=dlG5_NMQ# z5Th)%prx5d^pM}eA|k*lbQ<9%m91G1&Sm8WZ`VXHF}w~cp6)|p={B7ZfTf#U_!>HK z-m7ymC(0I|jyZnc633{)ag$rZUK;h>;H)>us_j1#@*u)EgcdVw;ScQw5IaIYlV~|= zSJ-2Evs##v^S*GYz=pIE@%)*w05(TYAXu+%#x7&oPxHmLU+=%%_$-@VFcFk@U%EwH zn|qWv`ex4Jes>RRt1cI&T_HPAxqFC+6s^NYygDUa!G%PqMs(AK5&ar&K>U-t%j1zW zF_|5llu68J3?kh2^Md*%Ut3toj9tf4Cez(}RM^uuNZvHBj)d zY{*ukGa^vcrxT{|54x6%laV2VQaOPhKfhUAuq+EZLS!fQLNU6qSOUjiP?@5l z>rcJB1h~u;OJz@b`IwsU5EjsfHznTo-%XB>fVnPHU0=GS%aD`2*Y|5Hg^;ty?b&!s z;>R2}nE*llLOir@L0RsjC3-qNiZg_{)CL#{r-eGWG2vB*(E3=J@U4bWuCq+h#@GAW z0i1s?`Tv9!0z+Q7jHk8e1V{b;on~6ZmNHE!X?=-hTHA^jvC#rX)4oXInCO3UB|+&m zZh@}6bzr53^+GrFjWdI-F{>TGFVca&sU=n*E5E2#727-KGQRF>LlcP?_RMRy0~FRg zfMbX+a7Us5lnYr?o==7!L{U%`Mxm#d)1Vy|$wVCrri?&gd1Zes-5xzw&@(-GBp$PvMtJpJnh5)amG14*nQ{7a-;6o5@z;F6)XvA%Pvj>3oSV9r~Xz%B2h7>GF8A?iV?JMhIw-&kyiSs6|=HGBTD8~y%&KK|r>x@@SF8@-szZDeT&bkgL&3*jO zDL4lPmPaTE{f=krWgGx^P#TNF4!6h~Wzm52h?Tp+5B?*$vQdwtT$jv6_Mfvga-u51 zN<=>6H>4NHacV<~Pf$PDV6U$A`&&kP9@aJT;R@9pEZMh8b_V)Zf)VSvVKS`$=JBxo zLu1@k;aW1@NFhZ<=q2BRu-O8QJzD*k;rdcNKtO7xT=@#kdgM3g!tlr;D?UUN$ zi5hTq4>sNQqr`{J5(I>9yItt>Sq|ev3n)Vm3s2@E2bH~*Dd^I?E~26g`dQ;4t;%!K z03hy0{j8L32}~b_J}Huo_Z&~{;H-$z{~xu>L6w(9uVv4=jiu% z@`Zyfn`qYrjB6u-@7WfIV%eZVKpu&m6uJvyI@VzffQRMfYx&lpG8c*#s=HCdljDy!_`lZ zte`&~J)H>LE2?YNo*uJpFyvX9^gR=jGWNI0F*l&N8o}^Ep^w`w!h8gWlIYD6jm4@y zqDEbUFpN2IOnUbyoxkZQ=DG{Nb@K!5#?krR^!AbBWE{_4#_e{@O?m4Z1e1(pw8Zx$ zCPjI~2)stEn-@!p&fd#T|1DiFk-4Jk5jF`o!&FAFMaUZOrJ5BB5(~G~k5N|97sQmY zg88iuU-;d2(z(x!*ryg!f3x?|8J^$6VI~ttKQOx8vM^UmecdPHFFCIrqEUlq6YsUhx_Hxq6NRe!hZE8-sO`e~JXC$&gqwoQN?x@71nI}4 zzT?#T;B`m6LUnnNOPqPi+tdcRb2P)IQjN^lb*x|P23F*zh50*J)x@tHmI!!UV1`ht z*Qf|;Gu%wKhCAz>7+??pOK{g&exJc=PyyB8{k^_&p!Ue)=CtkZF6= zr4~{<&5Y@bSRLXn=jDfnD0K3JxGJuUr-=tF*hhGJq!cU+*+{$Oe{gt*%M$n}_-$^HVCp`x>;(}M6zdLk1Z=oX0!O<4-# z=2{{Z0qXnL^acXEjv|{2qVK4S9$HH;I5n`5Yp*Oh6#E1B?S6?6PhzeJbx9fgRV=TGr;tQdLpevz*JvP< zg@2;S6+Dho>^ZdKRw4%*AsY~b(3$=uK766 zmh_HuTp%>o4&?WQ?@@U^It8Sk8)6cwO*GA(oXMhvcZX9z2u|*q;%PTNzM%`fZAD=} z?M5w6Mv0{aNL}~m^IJA*MjhzHu4Z9H73nx7#inAj$d;jusG0@9Bmekffi6c~(vW;% zxYilO5SvhhgWbjZ!74H;DO1yzr;V*qx=~IB`_f+Qv?mO(@R8#HqrPI!UopOF4k)px z=Q|S|(p_r`MQiB?7W=HjOIn*Ud}n+JhMNjpsq#zP{EN+cZ>gqdeSCzcK2r_psxrsj|NcQwzXPUb@sI7JQQO9xdr z+`5+^Sz7-3AweS|AC!%ABh`e-+B5H@?hB8BC0#Sz)$VA8v+%~8(%eZOpbSh1j;sKa znaZK?fATb3$i2o!{>WJ`Sn7)1G`t{or#Ono;)`~lFV?ks2xUONM2vIgd2!u7J7V&G z*%_FTT;`PQ#A%czKZHYXJm6i+9wfHdUQ^9RqT-Ep+WgTq;ik4~ozL#wF(%Sd)$ra? zebiL%(eFLafmmcq#s^7u`i)%U9k-{wTXL4pn%U=0_2qTODK%G>KGsdvUrSUGb2l!; zohuNJ!7r{UHU=n+SL^7pDMk&zpnE`8XeU!ibK6bkHFtWNr3?U81o*-2oy}$LpOMS1+ck-XA>Jz7J%4JZO z6+2ccYzHDR;o`&QXIVkDPw_Z;CxQV%iIOwD53v>TSo;)LG zFg4j8@_^h)HQwZ7!l{rB7lnYHfmz|nBC6n;R!a2QCXmE`OMCj~V*N|)Af0>bfdQqf z4UgN6@JIiV+zG;$*}1!dRWL6Ep+gi+rx%J&WxXFF*?`#Wa<7+U( zXfH1;xpf;FZaIo`vjR)y^ksjV=QBVz}e@O>rl z*&0Xs9}(_*UGd}F>~h{mv z=^mV{GRv!YVaasZ>k+@%79Aa{&PIL8trx@dt&%d`6~e$eiT_9(HGW&X_Vv0dWDS2p zvfnQ#xBxc;h(J4OD_t9wz;gK5lHHhxsNo)?+cG-|e2EEx4h+Zrz2kVkh64uVOF3_C zgEf(Zz8uOv!xqfOBUa@B{ zI(nLBDFw0re10`RIC2}R-Y2V(j`l*`+ZRmLuJ=dhAK377Cr7*yC(tKfA`1PFa3HK$ zsDg|SF(t}H>m4Zmwdh;<<*&)#=8egDI>z-*9O^u!A)NR^q*$aCFXr)>XoZwCk=s^yu0fJ0QMG7GzP)842fm<5}Wh18|?Z|G_V;LRGUwTm^pY@|;8L2`eq zLQ8f#;cEgl5bB+Fa%_HaKoR~(FMoNqbG^E`-uZejHG}*n33`-0Ki}^ez~?(#P^%PO z?uxZ3)e&|oq-qskqeq^V z|A-p=_#uw+0kMe{0eCb`5cZGr*HxYo;b{TcNbpZROu0kg=x!pU3lxIT+6G2B9sTc{ zr|s*KD@M~KYCD(*J5d+EzOR7Gd zK!$rlZ(~c}NG%-IO8mo%fEB9X#6$>Kzi`=F%qTk(<=>IpH~X~HzLjGdXS&q8RsWIv zsH^L(SV-pRv6UDoo%`b6t+Iz9|*Gti)!*El>sE^C%q=^-FcmrG(VFgPm zZ(o8ebNp`Wrz#Pk^QKE@xtpB79|$&Vey(iz%Re&~y7rax0al(ZF_IvUB@2_|5~(k7 zYVaT>U>5K&ZfwK#!+u;h2BZ;$45+>FeY7r}B^UEX(YJy7%6QwjtAOZB(wz~dTkLM0 zEp%+Rjel{`(YP{}Q~#%3W4<;tXx+HhpB^_owNm(GJ4> z!T)Z~FXdjY=I zr~Ts2v3&M*&P`D}F+dK$jkQ~iZ&$j0jx}CjPIAb6mt1jx9$!lQ_%ufGuC-xT_T*;m zbcu+w3=Vcv)9QDnv3qQy4A;a=OOV*(dkMHM+C;9LSV_8KZVm=D)_5lWB~8y!pZ9v zb*XJp4x+(pWpoCm>-qH(k)vM|d!DHJC^a4hrZ4qBH=OmRAg;9xR&etCNAt0IrwFMh)&B$HR9*B7!>)PGN0OBG$yqXyJa}*8(4UO@IS>v{LHjRPk zUn(~2zMO`^+1Z;1(^I?t#aau;0IM6C7hZR~kal9sSLMT<*Hmh7IZ+u~kNj!P9IgaH z-qWK<@XHE+m`OcR26k$mb9FWN*0(;xBQwQF@XH_hg30E#v!?OGj8fkJ}-!V)3pGN ze__gM9hz;`7*3=SEjAu>ASRV4ppIhmslDo=2-G|2b4qwiqJF~@CIXoR%@(k41b3OA z>5=8K*^sV-95mv**t3LnuP(&mV(=dgukT_DdjdZv9;#9Q+K*9M{-h$?Z%J!)?sa8= zxgi!)skv^vO%J1d%-X|QW4*!T#8>kbH@w}MGASS5?%wYZZ5-bM4mfm;<3$_}S}>?x zp(6!T>xuwP>ADSgs!;!x2ZJ1JVjRz}d(D39$`wMa@O}|+`vbvlv)pRnfZgZXz^`y0L)= z^#$vAoi4O@7>)mc+K^H>w68U&H*lXxrck3^nUFw}-M>-`RzoqLE^6hu?ryA(4D$}H zO8O0sy8k>oax>O<5ImqgJE@2wJV*yPim{$?P%xxU^iIsuyk-tr(XmqB2xa|LW1gG5Y^%$tan8n77#c-o~BCU zwEqdOh1?P0>b@)-E^&G;y58*i$(s~zy(^rEPem#Qb#T&VoiX1E-L{|H<;vpM>7TnY zp4q&B*ku_QZs=e(jq6+MeQRg2XMw&B915#q{Z?`ON5Hq2mt0RFlk!bXT1C%vzx9J? z%yMuJm{u!B%*pZqN%s1YXkc=FdMcK6$c@fF#5sw~K)^%@%`k^|v6&JYT1~=%ak2kt>uFP^2tAThxxz z*1c)){C}Pq+^l5fPP2ZTSawd%)gL)2V)?uU7UIlv5GYeHapW7|^Lz~hVtl`2@u4zN z@dHb&H!q|9+}NM~sE$<=UVT_DG{|cGuGfR z?yTTB3pUwJ6_!wiyirrOf(3b331-A2N-J%Ul{s9IU`0wzvU7_jz!}tF`q4v%zmmPd zWCCYZPFHt@RRqofkvHkr8a8Wil05=n(>IoHPv11HuWiL#bfd?6C@S1~=#;l4wY)q% z)#OI~%$TBqI(X2t2Up7NsMnoRs0@9XSb%Uh1;8fa)99GzOXJv7JMU6^!>SZ~!8UVt zLrjb!RCC&;o#k5U%4h1X|M#wtnIh{x;Sq03on6AQiz;@0GreJuFK_VRl)()x7N-OI zvw+v>J-Hid|B2@A&7RELj%WixUcrhWSqu4a8NI_1JAgTF?c^Ed_xCe(4iaT#bezF^ zaW#2J_t$G@6;~9~?)MetQGY8m6t%vVJXz+5NG!d{_juei!0=Pb(JpDgPL8+26Bn54 z1a5ph*st$&7T%LOLYtOx_(yoKR9k4dB7SPhplGTxD#>~-*DKZ1FLHjJEp3Z^?Lj97 z9sv`Lf{MAm5>B@Iu?8n!d|g$-lW1X63db5M{{D#*`{S2l( z$&)bqFsbKJ;Dhdoij0RjOr*>ml`);BKZdTHQKB| z4P1*L9o-7k?rR>z2Wv2ln+);BdOalB?Kx!_^DpQDm95lo-Ch~h0II?YhOCX`zLu#x z+zC?itJ(tA-pzJerSO?^{U!;><2z^B)gULmM07zY@sS|R)Eh)$!R;ySxU@K~E6)yam3 z)3u@e1)qhmohW6%gLa6jVUO>r`;ZlACqJ0q0|}j{Q4Wg2DPYSU1{S12O>8(T5d7-P?{h6hn;YEEwGgT^$Euu6F~F-Hv9 zvt<*1iJ=<1G_u4DWs?8zCG?cR1$4h8D znCF+%Uv=r)!1$PV_x>XZd4Nfb24XbF=W0+U8OC_in`p16$v7Cz@}R3R;0p)5IQa1^ zMb*z8J26fMu@fms7De4rrPx)>E6~LVLWyWt`203;M4z`BtCPI>6m|}ti?SgS`DXZ7 z;*Ji!X(G@$Mc}5^EEA(eQ1OT>t*(VQ*Tn}(tIf_bZ&c+^fX#P5oatTY=SS|C{W)XO z=U|q+C@xqtj%ugE4^3|M5NNPU5nI)*rkqoTlXlVSMl6==?$3h*SvODHc>AsBuzB$K zR>=zUVa3Xy_LSA&j;6tZqfXdPW-lidW<0KZQ5&li`K*rFQe7NqR{jSn-V5Ht78345 zuh_1&0z`cZLKb}TdWup53I}E@Y4oAK&^+&M+K~iP>obS7qn>dl|BQ1KQ5l?YR&mdw zV<8kU=K}YVQ1u#n`Fw2(AdfHW^z>h$U4v6dCps!%2U|2dx3wrOQC&ra74>hJKx6x04h*w-#zzff!&P zfDV(Njy`bVW>u~AC|Oz5ZSlhR{^gL5IRx-S`iYDgSjK@!e%v4L1Tt(_?aZR4HJd@2 zA$OY^LE)+gcbADy$$woarl@g>K9cVb$l z0c#ZF4;3j_IOK0!MXsm4Ly+G*EOeY_hA_|>?8Lc!by zJ$`>lt76VPCy&c0I;K^0QD4gEP{#FI$l`aqktt@pmy2#wkA3h1eVYh=G# zgg-qSpGV`u@kdzRzKm6h(_sCv&D{;rlKZ8i+u%mzv$BYRi<~nU6P^dtuZ(Z_y}FHn zC?$5E`_69cLncOK6zB$ePOsX6_XLq!k>DT{*Td&{#~{zkwlue=qFEjrfPcOPB8hIW z3fnc9ud%#h5Q-@g?f_-?&m=r7NFaLs5#dr4eg2aHg;VY)+P;iimw!=~_XU2}M;_7PK zwWp13Bza+&Bw;00tmR6c4b<*-cl9NI=r;P-?7+3B@Pp~nVQ-LTh5F0Rxl2%gJ1Ox& znM5HM8rg9D2&9fZsQYq!@WPFC?sZd?B3odRM!&^oyWkB>$p(fOYKT@a^g-*!uTs`o zdRUG`i+)7~$%gcSf1_nz_ggQtf4#{CJoe}8?@w}6VmXT)xK^0WEZ8wZ@UyO<-u_2o z+W+h|$rHi}>7L~sc%4Hm_&!>t9y1>6X7}&Sn_-C|E8DN!MtXBq9n0HZG3zFj5}690 zQjezhGpu9N1&SKdrw0fJV zivA;+zx34h9;GWA>U;I=4rLOl>*Z$YwP7Sq>IUY$Xik%m&oN_TGO|+w{Ct_p`_^WR zi0Jtea=nap20wrNGo;hs4Q&v+eq_)OuLHouzFzYv_C>DEnM6I~O)AfvQ`!^Yh5fdg zIU&lh+j*~FVMNwiFb;82B62h5G}X(^UVC2x5i0;9RTcUMGPWYzluCFsexU79V$o<6 z(cQD)_wD=Np)fu$jI&TG8Iwu4N0gDEQ7X+~J$(3gOT3Ysq|{dA+3k~efUn@Nlky8Y zFV{fdCG7u-3FZS)eL{gORQn94KRjbovHbNCu|h;zw+VGeE9Arn&h?j@|H{NBB2^Ph zh1s?FW^KH#HvDgdk7&q<-d}p?T8@=G<^zDa9TQ*GdL;{NFxefaLJGnKSt{vKy4P%a z82N=+Qv%nu&g|*7jcg1kN2Mj6#zLMZH~4ksYME}cIApx)q?$0Hgn8$-z<|_cz80>Z zD9&Zb-khu4u-TTCO09%;%KS%S?H22<<%h{c-?V4Fh0wI$es z*XtNd2V{FGa+Sd>?px8680(4}QLV0|ii3Rvh(fyH^#%LWqaLX7NQlTp1u7F{saTuR zMPuEp5Etz9)cQ{!_1+=Bj?keW{2}p%u?3tjw0vg(to|?!EdO6h>;+x;r!VyR_s8AF z;QG-26=aNV8ElRQ2UVgai0p`)gVphwJ`XblZsllAc0&$V75&s#U)tbbox;Xf@sE`{ z;R}+uoSO>k$yOUQhgEln)m^(;1xHCuZ25MixM^t65FX9J2=@T%=oFGr`o0$@_H^D{YIwBrD&LrN&(r}-h9AzxTOB@hyBhV9nit*LX{Ac- zgG$~L}*jDDWqJs$sQmRa}kFp7c17lw9LrDq5oe)7*d;PK&9+fr(M`HdS5 z>#AX#eYvZa-0^c7*Yr%0(~S4SUU!O3Z@r9k(u#l8&28C#Xs9)Ry)11r#akTE=uGLT zwPGgo=V)(sC89ODx3_3igdCmUVn=CYc15vhCuit&@&qT)a-|gA&WweJ(|omS3)S*m zj89)1)DNcer|MvPnw9U*NB8Qm2uhcqj-z?ju&<#^14sDq**zgwO^b=;w>*F!h0N}z%mC8Abn^$woy+$5=-Qy{ARe#ZhE z@hv#H++mFN0cpQyVWW{HZ1uAh{JS3nqq|h(t2fO93Ia9Cs`0)7=~)mRRnVqeEaUMW zL6EUa={X|{@1E7+LRtNnLBYGIJ7L5$wu@5+7b{Cu6uVcy)FnXUfyp}+HHP-6y;3PX z%75iH6Q|!Q$ZmbueoBl270Xa`eh7^zbz*w>_J;w?X*kSKIy2Pun_}5?x}4Fk#ig!m zm@*eG2g@C%ovfVn01aycPpys8w!TKK);=Fnh&ChB(xU?NyHAR-fEo|R0{*`W zv>j5T#q%j+9E`kCDF)9bU^X5iqr*;qap1w_{8#;@2iePi zry1F$J^F;R8j`xFQ;l6oEfAnM8>NytWw|zd?k=52NYviWIU-Yvhgg;(kLR)Ak z9Ib4lg>=69Fl-|9zPgTbuk;%uMd&s!-)4N^mN>BrN5ZL17d0z34k6b@G~ps~pMi6q zTH@)R{k7?5IA#fVlmi%4ID11l8%Vf?S2=_mCOLSI`&N;CpqR5gDUiQTq?FCMx5?`~o7>ACdECSZ zuz3x^luf7n^Jlt0*QY+2W>DC1@dK|z{Sz9c#&@$%%*_>22J1ECeD>rBhy9FiL%$@8v#8(JS3b8Um%Xgw z8fxwDg3}zqKaWRKQFYj12OSk$se5MBiOz zsstrbdBollf5x*ZxgTl&EG9e+%3PDRgJ5Gg05Ix=8TmXVEf4k+P>MnH0m+@j`HOn@ z^Bz4((2KLF^EJv&k3YU&?wVq!IB^1$u>9D*@0GtLTgIvsqo9UtfxUb;QxqREXtANh z{#WS0<)qsTntD-Tt~=|Zf2G}$@OjRC zJ22=&?Z4=Cmm(T7&n@ToK>v){O zvWfAiZg`=@{fjG(ovF_Yh$!UrwWhUw*sH1}4T*Z$69ygCAnLQ>=)U(IdOl8YA6C6W z{WcY55nb;VOhx+U4)e$7Jmz%{+G~p9eGJMqlx5T^5JoF#=SMh5mjxeda#N_Ff<^Rl zQ945=)*YMe<|8(Rqh?}$Gd_@fxS-594l52O#V8Xf46Z=C0IJyj`@j5UP{0UdZ==hv z_b$E9g8a?T@0L}7cxGlLO^g^7wA1@q(C5#hV*x$n zA-<*~Q}40VqKTP6nXR=m;p80pT=q`boGq$79j`$oY#DFD38E^Gl&A;_c<&X7kabW4 z&?b%k;0gPUB50{|>%vMLf~p0Mt%fNq%-f5`+-yi^daWPDaADrAhO9gd0U|RRD)H*Q zNh!+%4NunAZH6I%oJE`M&iE}NG<3rcB7aE1yYtMu^F?D$Xk%YAUa_ChhcYz8JzvYE zF}sOF?AO8QMDh#QwrdM$cMi+ltf=1ca7cfPv6UlNs0%oXCZ_bnztqNxBV119J~5PIbZxh$6Ba6 zHBB+(7;K1-#Z2LX@yW&8N)Hvp|2X-{WOTxjVvUoneKj^c9#$?qmg;;*hCCjrF(qiR zc`+OazlWT^2BO>|0W>orK6f~MHWKnHr+y#yt#TEZtuCzk*a${I?Uo48Gd5TZD^0H< zz5=#Q@8lOE)G~D_Zn8o)^9kM;B$UA`_#1R_`zKoZOqLv@%gu8{!mBCncY9AFlv+W6^|rGgx9~ zb{QX#TEPYhWqPTp^v}m!u%>a&6X5trg1VI*_p5~QZK)0=z7QRp*?GXKE%+X3%84SO;KW`jtW@}6fp5l&^LucO`JjBp17juW z<#G*}F}{@e`(NJ_w(`2L;So3pmOS0T**fM**|x2rKFW1KG*Wg;QFutI;P$W$a?y>n zzD^`AX;sVTky*KGc*E1mE*er-b(XWASi$qyA7L&?C3Y?vXqO{-_z_Sed6~^1TqDYv zTN?fER-?nsZe%y7XlfTgc(V2VtE8O<%u-ZCIQ<=n%~l-4_|2JRUkHjO4nl!fhF!m? znhu}Mgu3!Z3@r(l_3}pK(qD@l|Dvf=z5?L)x*(4-jWO_Eu?XPeLrY=Hy58mH$na0m zA@|ISBIO3q8zsYxj%2gtJMDsyDIj&L-MUfH`t;idVK0x;7S$8Sl>*PgTaQM!CKS z5~{FcWO|r1l1isg$9*O%h%NDtCFX;;^_Go?x6@)(+N)f%f0~*&DKfhBQ0BEg?+hyu zZ5L#7C-7^a?IwrbH^n{1v0!2Pj{lX7 zTgF?(DC?D9*n(cM7{D{k{t6|wTOria&_~s=99&8i;t0E9JSNgMt8u=w!ukzL8Vbad z|6Kq^phhW2Fsfo7W(Z}Vc01DzEe8sb+$gAPKVRODlrg|pE${Kdz{>R8~A2F)(mx$R_jH*&d^HI-g z%q6`4C^{AgyAPIoxXf$iDjZxE^`)WVJpK{6_08Ek#F&TfqyBIS&G|fsV%hpkQ>~v? zl>?{MBMn!&?0=_co1vZ8G}B^q_@Hh8W6C1Zt#h2h%+V||>X(L;45U-Ox{8 z^Qo2E5K?=w51Z2#%f1+zJKB8db|dlxd9bTtk!>`I>?NY~bG+16#4{5f3FU_@M=>X2ahVg21RlHO z4~&fqVM_j6b%D^Y8@hP4pBcPa)~^Q%+-g!d)2mYUFbaWY^NnATvqC3bish2;n+%)v zO{m4+rZ84Dk}s6)Zd-;gk-7^Kr{juyYUh?HuzO3bzsa@JktThL)C_6#{lf&Afgq#T z2n?!whg=oG0&F>1PFgX}J%|~gP7-~G0r8Zi0lwF+NW`U4^9!x74^A!5J=cS0$L>PD zIbkm{B*d-+FO3JFHRIilb~nY>Q1oJ1aG%`Wx|Zsj6;BT!%w78BuE{$))zkM{Gc{wq zQ(mPE6OxN(8h3nuN^O&oNDc39#}2dZN%>3n&?cy}XRn{te!5RutU#G+SCc)x*VWJc_e?S+{_-WMxB*oU*zTJ3H`n^U zW7t|k{LoGJ5l_oDE2J@g?fcDorG}2e|IvX3yN5Z#SHE!~ImPSW2ik4@fkj(Lo`2=` zw4T~ajV$rwd8?TpzZ|D@7E>hi@eH1b*P%i(4GO1c6{7+}_m<+n+#UO0{N`I-K?0EW z6q>NYj*q6Bb7VvhRaG~f6n&!hEUA($?XZ5HwmVe$*eF(8aLeVk#iUlI*ZzT6U!YY^ zvB<{F&=Zqx@fFD_sqR5kVl0$R!Hz5sGc?A=@nFp5@>f#;%iP{gk5wGBt5$&t^Vw?0 z_wuNx$*#IeeY&@}iqm_ae8t&&)EQrc3UALUiRbEm-|gUd+r`}9{dS^}HDV7)R`@34 zu}7C$wqJwfd_Z31p0fR_IzAYKq8QcE`D)?R@Q?YhPOD%=TkyNZ%|!mp1~H$A;o5jc z_bXV;W4-S_VQMCjzudB8-y}hNp{|v`(7y!bbLI5(z_Cab8vI+6X6$v}<1^R5Q-(by znpQ!9wg9&^w@7)9n7cg1nWUtOwn^u%_zKK7XKhN)ZtI`BD0_rRz4jR-XKt$(^?Pk? zLoY|^7Jz!ElmpgHBx=o`$=m%Ans$}1U)k?(DKNYATp2=W|NX!5rO#FA_&L7(M)4oD%D} zmtXcLw%Bu~O&)T^r!1@OsA}KHhv{r_C=b;um!pIFd`>}sICaH)^| zd1W)WW5_?duXo*;J2c-n7oq)PxNN!6icW__!9ZS7BWpzn z?YQ`EpEui2PjdFP{F!679-4u3Xj0z!`@(-gA3ozpyFLDO{`l}lmk3G~0M z$~e-jtEc$#*1dj{JARVU9r8)t-eQo=vO?=H1hVGK}4>A%NalKCqte@GX+a9Zu$&}x>%bAq;X z7uawfH>D6_T$;Z*E)sA3d-d~d!_N=$he_v*=jN}M+s!|DHlFDL=@WRTUCxOioTFW->D5a5){rauv z^Bj2p!L0`#NgxMgNe`52Pd+*o7e4C@enTf1&&Wm7OU;sSFd8S3-uJIi;ntpcJ|os4 z(pxP27*F0=KX%_Lq~=ju^1!=T*BEz15cuSssj8FzpBA*)$bW{~FKQ<1mQ#@g0?vW+xYl&#=s z$!w>+cE{cZ8*|d&Uk77pkkd5c#0jn#|B9cr8P6!~89)7qzIgM+p98cCNAAGu1-nEb zx)GU5^)g?t4TGwcsF8ys zn!%n`IOP;aWEo-9O5@4?^4XN-yQj$KGuBtT!p8ru&fsgsK=#_$v>JTH)zkJLpIz2n z+|8U0pe}y@$Py&};EsL9iJD-;$1s0o+{R7bi_;D(}MaBPsbX_(W=3|jv`e7$v4(~lqj3xXgm zA{|pfP(nl+28bvrEnU(%x*1F*r9(ivJ4ScckdzuYdUS8(fWhbPd(XMQbI<+b{=pf4 z@E2!$@AZ1Vp3mpQ&*jS0r0{jhXKQy+a+==ixIwdq>UREbPC&qV4xt?cA>q#9y5yTr zlqf>-J@XyK820Y;t@?vbEENuC_DFVwyFB178KAeb>1rY7@~V7mWQplIr*f4TvQ`lE z0Mm~Cfe^Ryf_dMz<@z0VBH>Bcntw;a#IeqA}uJ zHEb>oi4dVwsDbuW(XFnjm7%&$OfkvUcNtY3rzA%ko53)!h;@G2(oV7}Y3 z8?kX&T0d=_dTDi+57sNPm$0lBGGqByH2Y3*NyyJKvD{VKG+@o5D~bYXgR9-tbX7te z=$rYAVqodE@74?`ay5J0ZCOR5*N}Cg z9wyC(euz_^3|P059{qxLZT062&yPbWy4RX>8buOHOTxiEDD7T0V4IRv*vb9lBTpj} zIbO@1n05CLVjJwwzAFKQGUt2iV^83~=9RO2&d}if6$pvliO0*T)$rtqexP^AZ)Y0# zi+8lQhr9mUU5T+0v|qEt z=lyKb*iu#e5a*7#6wl5{L{8o6ARs*TbP3bkyYdpXwSzDyaJ*ys^k^q*y=TaWWe3q+ zqKCu0Ntx2l3I%Law}C4Q-`-Fu_u|?WY-5yP%E`~5n#ErA~xs`5i#=Uk2S2D#!N8u1+@naB)LMP>`4OZsFee2s>( z>6@ApSMH9j(wQydoZ|EQA|&JWa0VSST*1gwnYB#7gAR}FIC?PNjLxRGV-+`5J+4&y zZiRTylx!mo^P;&|@|pue;JYzkNcLF$pBLU6^GOzW!RXju%ZkDl;@nm0BQg(txz_0i zTz+WT(cP1@=fL`{V-tL=$O20=Thf9iXzwG7IEx^YJ|UE+M8QsePt^Kovd7Mpa$;mah0%A5k%E1;%Gj0jUb4(6?Gpdae9R zXWmcc;z#{Okixz(V~GA|mfAVGx@noRX(Iz8eHd+3#|N>3_qF+#1d*+v5+(0Cbv*JK zsJPUmOEov6DG*x`o3>MAHWSlR7c2CAj&5Vj7Pczgtu}{cPBKrCWVnM0F1I@`-`>lx zFAwN87^(Y|Z37*xih-%d^Chy^!1=m5X6-WzPrA|5VC(ZrSuCanQ5aqM+Ios=CFk ztdrFtzvgDz0B$dm6864S>%U|1pN$ivXvlV(5hgEu%AwaNFOt}5qg$x{Z!_A<`nh@@ zlpUwx3`}2`J#k=moj0r(v~vCAe{@XlTLh54rf!F)s%~yU0<6j*_(3u-R|MW|gcH-=Iy5_>V z*SL&FJRaT!ZV#KD)31w0b`t0}Jb9vUT5YLS3wirP>|!v`l&QToN*PA)XG6mQWt-FL z?>{?ep4x*a(Ais&;;}VO?ZYj^{;=HB)}yplW7Q)NpA%up^brhfnP`&>fgHX5krJyx zCI=5eFPZO%AlxV4YL?+TDrU`p&I+TjzFWu(-~N2*oP3Z&S7ivGTdv>~6zDmp9T8D^ zQZ?x3>oiIonMWFP?6CXE*#iZp!5vzDI@wNF9%+%q)z>yBD?GnD*txw8t(oPli3g(; zr-q43#e^@qzm?lqx^J`7`>JYxR3%**y*v zo-^oAeh@Ua*Rm$I=7DI2n0J3?S{-n~&Fy_sxd_hTnr5G*OgX3S70Z(aFX0R0RvY@T zYwp73lWq4=3N8Iun{(+tTrgdGAp0#!Et9h~`~JqNFZp^o?n<7*r;VzwT?L=587(_k zL386POVH!urcU*0E>? zNPy-a(pV7*EsAg+Y*PjKl(WCAEc$cZe3nS$+p{^pwE(VvJ9+ln+#O+D>tf`LYg}2F zq5iGeqdB*<>uIFw0jo9-qqZ&Dn@V%Gp*{+mrqzxYfCc^Ap*@kQyHCCgMrEkZZ8zyx zUsySo#LE+0zfn)AI;pqE;viCSw8c@V6J?C*`Y2)8!9X)=?{gEDfaJQm=;GOn+M`*$ zN_|xq5V^N^LZwFUlTYM!Z)v}PG_Uc^roa?E*ATM5m))%PE^lg26}H8Xt&LbU3-4y~ zZ=HRw-vd0Uloi@^0btt$1AC9;;l$J~MRt5!uIiS<+Stkm6bI#VwA`BX*!J#M{JFP0tuFlB3K*Oa z*?~6t(GRKmdC9OuF>LXs(2YK34W>!@Jl+)HN$>S4TK+?}0=!di?Ihy(T*?8l|GI|y z`@wwrDTpP-%Y5jek2Lvj-jRWg67j;hDXt}d$_lpH!roHYv|=xZ=cIoNrM#P|7m9tr z#iQ^|5-{|eah_Dgl!Ef$?x@kjr<#i9|4%Fn_xdpK(*?fu>zOAaS$bC%+M!&3;kv0_ z)>RWA;n!S7Ekic7SwD`h@La!K3O8?YF-$U^=rmH$!8AyxhjbMuER!i2)#2Z`ejrvJ z{v%ZWeVCv5Lc;@>=60zxvFqk+Dj1%4f+l(oIHH^@A{><7YVy5YELn z7l9(G5?8~&Mmm`g;Fy@hKsy4;iIXA2x9X1_s7H~kcqPBC3_%%krG^_}?|8s7)#Ag9 zm&JCK=~AupSXl?4NAB2G{@mAS;lW(4h^;2zV=6|L;8~p<63p#D7ZX=+yus44(E_h4 z@>Gtq$bt0OJHwl>*Pl2#F>vq9*YzSzqgzE{iTs-c90RPOgc+Bz%t)#-ZQ6p7@B{)DQBLqYCBS*AmB(ow$Z_7=N> z_wYwBqNXZo(e7aAGt|zID#0zqwso93oHw~>hX3c@nB4Pe7 zCgSkI6GovR4XiwF;N`oYF(VbuNS(o|thY{aaH-5!6=jc*M6o>DO62SNHzd%SYVDU@ zgd(^c#z-O=Iz*9^KMXIb_L8eDt(u$Wp0&tcRa>-%#Oy0Pj2n*?Fl)jwT~uuinp0ps z{!iTvpIf!hUvw`o;xBP~{l0aTI!Hs6^xZMRXEek6B(!n;f(XI8;x*HzQHC8>wwGT& z06t{uO>Fpby?}AO9+ba}Qx5Zs>mOAzo5jAs6j23B^JBs&w2{f#MVDDX22afSkp&3& zaU|#~`)`VWdo8-D1MTV*n36t3P%>(I^)qU4$&Em|pn5@Bet6c2d49_s_G66FKk}{= z4eK`}_FdFBk=Y>b1<_q{MSNVLgY)M7bJeR%Y1SVIx%xRWFIf)h1wz)cWf+`_qm(dK zU5s5#@0}|fMoVf_W}`Ped6hSoUb9`CF-%e*Guhbc8(gd|Z@bq7;dz53N^Pjsav26_ z5a}*Lug`KL&}BelA92?@INlt*#>xtu>!HtvhY3VOU`)<=6?;r{?S&BA zVNmt6`QPuShrgsQOg0v3h*?m+^Pk^y8Ir-g2>;$F`JMl82JO8K(loxdG;VqT7lZM& zA$dg<>YCvla!5Ta4dn6+W6ru99(FW8xC_q^W;UaAd>!yAI;I``6a7j%XJCFDiIM#I zwk9jLIHMaYihU;~A%3r?Yk$_#*%22N#E2=-!Z;!s-vqJ6&>0OU92FXAF0M+V zVqljBGJWyLy3xK-@+bBK zh%-KE%zhh;-Vo==%rVSETV8s0Vl;E@@1^Fjfo^^rms1Oib|{0!VGBLp__e3(iJ!wy zbbXc2-=d2S9n~@d{vDjn-79*vmQN^G3BTM8gx%t9488g?E{tGGpvO9t!B-Ng7w!zT zqMK)0NxT7{l{fQ}9%;hF*8=9dF@SrroRU8D9?l*sV{P_WzXiWqn4iRSu+*^7w%~%0 zvctnHUYhl9w;ewX_;s5!)jaefhvEN9o{sYs|Je*xkVB^nv z^IxE2?*0i5$Ap0Iixc+Gc_+m?qAL2>sP9UuJIq~>>am7uF-Qoh5Wj1id`w}#@L+p4 z_qQK-U+$kL+5`E}Wc_SUab5+Pb(!$)haGMuxIC?+NXlQwCi*9a3M|l9w0%O7liSM-?qGasPYT4&rZSZN!xOk^MjPGAAgP9Qr#&%RQv3>c z+fT^_Z!8zKp{fE%0X96wo%zMnO0$P$X%|v9^71Jgnx1bu)-{e8uf)bdimeu7fd|;G zjbn~MH-#tjL-R@C>7@Dgq&vn7Xk7II?<(b%F1u% zwdT|O{hTJ#$L*2aGhe3X*tBmy-%kn{7v2k@OsbKkL)-9|c)@okMc}AXj;5Kmu~0_+ zABA7bCWWu$tI#C8)v6aARqwvH`+_O($xsjTDHD7+mKhjdlGPsz4es- zH*u3cH@Eaeel#h^e;{$_l?CLDH(_Qx(I>;~eNKEIDmnct`eq^}LXXFSJy0VuHBE1h zlJe`EfaqX-pE`=A9q5&#SWgx%)XoRCvJ(``~+tj*cNR;>0lTS{`83m2HZ z886`2z^`aQiS|O7?IfzxkV?ACeA!k>d~cZT#P?Qe8Wxa=M+SV2XtDD7>|mPuO$Pc&&8n$7yQv( z>_5BR-hLLv6IJd;wd35`!jPX#py~o7Nys~6?n47LffjPzg%!53BGtM6+09?tkoYo- zyz!Bn%!kY2p;+c>Q+olsd_O*}1p3K88U)nQR7Ie@I^TMo&-QS8duLgsSRcPJRR*+3 z6n6A7JhpKmg#F6D7I7>8Ub1#vZ`v!MBHz&7r0eqr5JJEvBXM)Si9)&i{|ovkp`MlX zusOW4a*?SCx-A~%r#PX$JpAWoyYcWizri4H`tU)rm;q~)!0m=iZn=b7oQMAuf6`U% z>zSG}0c@zx3MIy@>fp%`=!hX~*!y+t4p!9{Q>n@V^eZ3UFOfB~OsScMLQgodFKw)O zTc{3__AaUd0qZIC&?MWEg^nV07_E~6Bs ziRq!Z8~w(twt6}wutW(lTtx*17yq;W3zo)cud4)dsVb2e@hJ8kb73+sAXjn9e`XqU zhz|_;PGT=kBHGl-o4nmkq9|kxewMT>w0G2y00P9SD=xXGyvAMn+foNREv9{|!LqLO z>UGJ@!dZ3XM{Jo{g;zLnL%pvx8w9xAk5LHll!mbW)-FshDcfaxg5fFO1K7;z={7lH zP?HY_Q*$2o4o?bCW3FJ`)c3Sl$vGgTtSh)|(XQ#8F|)CX%Z_ECN-Tlk<6O%!+V*0@ z`n3#&KSRi;@epcL*;@=j4;lfgc}; zf4vkSI({z(U8nKEw=8NQC$SuBK3ysE>528ei-a{xgMc= zpl%Qq6{veD>}N^wJvH{F4p*^33)CV^Gn6@enQ)_Ix}*EjbNaaIo>c)kZpfFO8tGyU zhyFVKv-8;ELm=S?V4#}g6sQp4orLI`2w{qJx~}{@n-%jV>%)dyq3C-SE4bw{>uONO zW#KWz@ZA2;&wXj`R{uh1_n0=!#{*Gk*%tGYI6Kf`jMCtHtRTFxGgkcAo)5Vw?_!(e z@PVv#^1Zn5I)#T@rGp+*Wu=O-v1HEeLELnwCGykl9vgmZqTJ6nb6+EkJI)Wo zSS?kARodQoMy}V%PW*lih4TuVh5E3mp1-4+Q1HJ|QT)ARUo)oW^K84mG?CBA0GHkp z2z{#g9=D+WpC9rRA+J~akDMQ|2OsHA+s)r_gzfY@ktQ0d5R2h<3s0QfdhgZx2~Ts{ zYth7<;Uk;4C7`o8*>yiCJK0P6*aKeXfOwf*cpym>>xDyfxKa1>V-oH_Iz}-lj(S4xOJAVa_ldn%dK$)+grb9 zn!{X>>t+4yoZDA87^(hXk7<*}&l@!~rM^y7 zg@PK-0ZmXvw$m3e${R;d?CZ?BFTD1Y)ZU$ow<~Mg_oj*Q55Ra11 z@K)LsCsl2giI_C}gXZcdTh@icN7c|p@F=Eu=Z>fITfEf)eIZ z0|859m6WrSxNNB$-5Qb1Rvm;gP~I^C^WAoBRE1gfU4W7>E8W>U+6<3>hREPvy9_DV4P{fO z7LLqwTMx7uy_XgWwBuE4VQKhCQP0(eKCe`P((XNKTA>Q-y@(hbk#n^7V;z}) z35Y6)ql5ot9#@1ApO!kUuj#7+AH>VrQ!i#>fbX!FA7n`k<}|Ole)5xzRF&50p4QiC zf()?4OSHsuE_p?s!g@QmszM55tn{5YH8L8UYB0eW!>|oZs*ws5M+K0_X#j@sy9N$? zQyjJ;oUTh4UE$c)RO{i0oSk8s9tMlFBK9jw9Ly94NZteEy}uurE|>Xo>7e1Q)|Hsn zNHhCWzZA#fB*uu#v8c0}OJ^Qj9RqdA-kGYOXM$m2qTmSnMHx5~JVqpV&RDL)qG2Ei z>te&wVWP@?Enq5`!W)qsHx}zR>!^vGpU&Ub7_Gpy7SdOm*a+Chz41m@R+!1nx)mF#)1B zr#ApJE{9P5zwzDX^7@P(z1+)2@Y>2eL+Km!S$JlN`ntEY2qq2Zh*Z2w#p*Ga^qoA# zge$eMhqd7Bki&Z|!vuidihiIT?k^YO|}4VCYe*#8z}Zi_*@X{GPfhxlX6>i)w!8bt;4i{fC{kl?n=8%n$B+G^67Gbvi1oBD)gDQ!>GwZ2 zOz7q0!uiE-$BaA#E_S{-#-mqzpAFQKudhPnTAnc=YQnj?u$8?hp@f)d+wOgd1ePUw1U^c7-ZUGc>#Px z(q|VJ)#=A4NZxJ$nBO+f(Ub!hAU)4GP#L#5hTl+BGkLv!!ca3^htB@3;gNpFiz&kW zV~g*;KbcU~U9394Or|<43J;|bX3ybnSIwwp+!Bf9(9=@5e1AwkKKjO2ILZ%9>m51T z0k?|4=FUTZjMaY@dPyqG@}#Nq7Op+x?Q$9NOU6xZA4 z+1PKly3(y{VkeA=BaXidtY65!2;XUzPCgi_;&-U#xBItqb@h`)l{DJ&*~Z-(kM#bY ziW}k+`vq-#C5G$E52T_+y7*IZt-zK_W+>@F=5zzJiSdS3 zM4s3rV1FFPZAm(U;B6#dKUi{g9IwR5h}LNWMI&np6U-%}rr{gS?Nhk>^IX#`9u0@B zD{)Dqn+-6II(*arjCmBpd(HpFa;J;R!=PD2Y3(7PjlBkoNgI9ZGk=?udkkdrQAOn35||9F-bTVffMmJib?; zxK=Yj>VvP*W}o&~i5p#54jjv2B@tiWermb?N^fnFL6SpSa0bT$mX_L*P3hQB>L{%W+bPl;6?p zz1K9(sOR%Nhy~GDRHl;AGF#ddj&FfeJ2G&AJ|y7Cq|~9Up^F@K=x$%bnZb8}8k$~QZ|+fM5BDDoHd-)MlHM(G%2a2>6A)(*KT4mZ>KBhS z*U=mLQ`&9B_+_X!AYo}=`fbo`N~+#t*(yvJi>XrG2x9p^Ja09(A+c)P!LA2)ZAOFq z)!-+o@*RJ@$Q09rMsIIHeV@sLS!y$@-@RY{Q_)SRYs-$5aNV2X1YyF;dL=T~OtnxI&oki%07jY(Bp`R+)R2XBw&MMiTe)*lV z*~i@3JVV!o&LQ1vu%C{jRkc`bLP>_7t?|+{*kVlO6WhsULVfnX;p&t=#w2RvFa{@3 zJX_aqTmX(VMxjmGkyeL~YT|^}-mK9%2MX;!`O(FXjw#>2TD6-J%8;R{x)@X6+FmbA z?lE_ceD^dK3ghgGz<_X^n)?^csmhq%lI4CVCL0OsqjO(oFHG8n+wZKd;QeDC7dPH? z=FpoFF$~IKg&_)Nj@esvmMh>mEEY{SigC&{z=-&^_ z*>g5yNNC_2x+G~2TD{u6zmGt9ihLU+PaW%?YJMx1v|KDwZZ_8w->#QNsLSQ_WhSZe znB!wB{uPn250**Wn27pG1_LINU#94h{!F)SN)tLcBS>GI#sXah=>q>$ZM61ksqvQC zmjGc>;?+@~r%7{tcEvdhXFPMB$Bo|TZs&ZZBv>Oq%Tb1NK1mh8S=v||AI!Hw!U_&Z zug~I+yJc_m_=^!wqgh=2_VmC8P{32nj0T(|WkF%6$a#&B_(@OFruAjgoQ*lD#;A|`&-$&G`LJ@@E>ZGRP5t!$_eS!6ei!+8hOhAcOYHgnD*_P{8I5`m z>9jX`6^1R>ikDI`bWB?@o8vYNgRa5bjlYjv`ey?or_24rVrOKWn$XPLF#d4C0S;CYr zSp#HefC`qJsg--^Wh3QWCGzq|&Jf%>pTmgdh%%`E;X<^}{(g>kYqcoOhUq0>J**t+uH9^GZvv)O{q4#mq!FO~<- zpI-xRc~JE;VsH1=BD}}Flp$l_n;`d(Wi3plgIkOQzL_?Ks`NHR&_7U zKUjwWiKiBF(gkiWm!jPXcV2ZLm+oQUp!pDC6DEaDln!#S-r08MSiiHO5~4pj6Pckh zgEfL!QcOnkn>V>f%>3IM57C8Ea@8)t7Nj6|hN<_M^B`wtMxTh!_yt`hZoBJn2(dao|NGzh$?^ zl$VUw;v0~lp%!&kFttnMjdb4noo&w_;Q|vppxj2_$3Nx8l)3>gLu*>ZUbz>{GEHMV zZr@=)Mj;6eb7DI5WClP)6ntN2h-036wN4kQW$Vjry_Hg_;Y;|;J0ZE=Jrqa->*7G2 zgbJ@da$pi2;FD)mzl6oTF}fA8(M7CU5DBmjyL6P(>J#AZ==~64pvn4_04h9oThu2t zAEY)20xrLBRbvtZwJox^vr?I=`UfSTI;|tAFrT4M?j;qd?8$qE`4&81O{gvTS5vrD z*REI5jmdtcvD>vUZ@8r^T*)vS?v%)OK?n3pjOT<}qva-Ea@M0XR_SghxHVI8JFApDv=n3rbg5HP%RyInLm?MlW)9=5c zcY1c+?wN1Zd9K_Na4{L)={@H}6M#JydoheNw6Ygc$c!P6x4#YESINg7Ln_Z&VA5ZT8CC zJ;(+tlWwIyA38MSn!YRqhwU;rcozQJYcG}y^!0-Q;ns80Y3~3RWiC(}=Tl!G+Q5Cp zc#~WK7?>PVHFIpUe_o%h$>v0V(VDNM{1I;(bat#IJ!nAjv|8cRFtvIhIVZLzp zJfLz@qilaaZm~C5rzi}1v-&02sXz?b(T=3=TU3djBqWsBOd0f_{N0YTS(lU|V1D>N zYm<)56yj}vkL5gRHEXlWc~>uO(>>)PB(B;q0^{1UkRXj%HeGDm5J4{zbw&-DJ_9MgFF*_UTMCCf`} z4z!J<+n!F$ghsw(tMrB9(BTNZds07S4z*)ku`hA&l{9;k)`$z++8|kTU98)QX_G>q zvC1HgvKLd-awqku5xoi(o87rI5|ednXuM)96LwE$pSKx(l(-p7zl!MCUX-8p8vl6E z^=^)%v(&NXN)|E5}&qod9roPY!l_@C?zR7&p#eaBsOLZmKmvFaCtH5$O zW}4No2VKo1-z&5!NGa?xAby*0sOp#GkLSRg%jmn@Aa?M>rZ&26vb6xC2pym}R0XnK zu=KqZZuiugG*Z-glc{PgC$zgxA=Z<5l@1$lm*k}DSMVkB+hz})rRw2_+WYF zgzju6KXuF|nmDDjbaXZSxLC6wO``u@GKxp@*DBlb;PkLNnU5-C(B}2XpKSG8())=z z4D<*>3;eVJz+p{zlxg<5@SA6`a_=T?z)o_;s#|TFc#2x?ihqtwQ*ZHnZ-*c>)j%(w za$oI1I{%l=k%j6MCYZ=eCEe|LhPYt^JZsg876Gp36>~tT+h<_I@2N$D#jS`)j&+SE{`fP% z`RR3(Th#0|Vxj%_$}2Q$+z&8U8Kz&;Nw!%3kK6MJ>HS1vq?_Y~E6>|S1g^Y+QePIvlyn#3_xzcwA)bQ0qEsphWGBmqB8UT=01{HV~y zQ`k85{CkiFiOk{LK>#^bn!=We=k95h8h5huSi95{h6qlkqogOk52T%7s|p{)DiI783l90IWT9QflA&Jx}4M5WD<O}IIXSW#=g_)cJ-$=)ZhKO|TtBq%o<04GeA>ieA-fhhU83yWO1ykzh zxfEZOxZ?6IiYCR%C7io0%YMYC7<{o&@griDE|{(^aAAZ64Sk~-Ki3LM-Z2&H#>}jB zKbDCSdKopqL=t1T^HK4E$ztflc0}AoNbFmOtEdk84M$afbp|jH{W;2aAAHAs7qvK1 zfYE@Aib!`>==FDTx3oqgCI|f?3l}00jk9lYvKEWG-uN@hkRTzv|L_Q~%71|#CH=y6 zqt*c&FO<%surKFoqzXT0l^~i<_&|-!x^?X#KzDKprj4%WSXxx-fE-;lzq4njA>9)r zM?>R$@n5mul6$-^h0sV7pY^S(LTSEtCidu_QIUd%j*&06W4~VYOv*-|+7T!WwE0AU zrPgsuXsBNy!g&8NxnX~xxJExPW+xB!8EtBYj4>O^7ENRo?PC)O1Ptibxy%B^k%~ZQ z6PIt^Z_gc>cRP|{Zl;6zn2e8TzM9sl#z)nf@zR#!&)Cw4^U6)%pfps4Pb;8HOmlcb%zO94F(As_JgfZ)#3hTOMxxU}OTqD3uUG~3iPl_hIheOWA z0m_T5wdj-BL?bElul3VAABv}6Qd$w0`nY{R*9dA1_%IEYDOixRF5xVyY^+NTGn#+b zLXhd~iVu75f9FUni}?ffoiym05#r-s8T4G(JUbuVBXtl|>aMnTeHn677WF zGyAgl7@8C(fgBPH4QVbVMck)`jLI|y5+Q7oI$3%!fB85L|1Vlb27mY;D+Ioc$;8LL z&P>|Nv}u_n!c?CjMJjKcTg#NzL5j9xQ&wIe*iqp^Pz7Tcm7}tVb_fKv)kGm-CC0;g&`dd${Kg|CRFV}Fz zlmW_zdo$%2<#eCNG{3IMCO`uQS8HU+BA``o=;^K`#)z0Pk9Ij@-0S>_32BxzE(oTV z`Hpg#vn*nTce2W*?s$^X$yecC<4ilBB*5u)6Gh5A52M*&W9*~~rInJZ_CR%raAS6@ zXvCW%o73YXzCwIHtNR1!M;X)QisET7bNSL)#eUy1UcbQ}7C(CsBYs0V;ijeQu$%BjKt1tL9H|*J zLdJUU=;&}Wb-benP0$eM#c+Tt70gNN?ozC_fDPOnWjfLi0m3Ap-%plD%9o38y;)=R zj(27nA(ZI2?@Q*rZdsqy51!HlT?n1HoP2V~$-4>D8xRkY$ZDNV1;y-gOfr@w|6