From 82a7eccb7c741a56a9ed75e143613fd78fce61cb Mon Sep 17 00:00:00 2001 From: Morten Turn Pedersen Date: Tue, 7 Apr 2020 12:08:48 +0200 Subject: [PATCH 1/5] Begun adding unit tests and image --- .../Templates/Test Net Core.yml | 16 ++++ Build Configurations/ci.yml | 4 +- .../EntityRepositoryTests.cs | 81 ++++++++++++++++++ .../Mocks/TestContext.cs | 11 +++ .../Mocks/TestEntity.cs | 9 ++ .../Mocks/TestEntityRepository.cs | 11 +++ .../NetCoreEntityFramework.Tests.csproj | 27 ++++++ NetCoreEntityFramework.sln | 8 +- NetCoreEntityFramework/Models/EntityBase.cs | 3 +- .../NetCoreEntityFramework.csproj | 12 ++- NetCoreEntityFramework/Nodes logo.png | Bin 0 -> 92846 bytes .../Repositories/EntityRepository.cs | 4 +- 12 files changed, 179 insertions(+), 7 deletions(-) create mode 100644 Build Configurations/Templates/Test Net Core.yml create mode 100644 NetCoreEntityFramework.Tests/EntityRepositoryTests.cs create mode 100644 NetCoreEntityFramework.Tests/Mocks/TestContext.cs create mode 100644 NetCoreEntityFramework.Tests/Mocks/TestEntity.cs create mode 100644 NetCoreEntityFramework.Tests/Mocks/TestEntityRepository.cs create mode 100644 NetCoreEntityFramework.Tests/NetCoreEntityFramework.Tests.csproj create mode 100644 NetCoreEntityFramework/Nodes logo.png diff --git a/Build Configurations/Templates/Test Net Core.yml b/Build Configurations/Templates/Test Net Core.yml new file mode 100644 index 0000000..888d474 --- /dev/null +++ b/Build Configurations/Templates/Test Net Core.yml @@ -0,0 +1,16 @@ +parameters: +- name: projects + type: string + default: '**/*[Tt]ests/*.csproj' + +- name: buildConfiguration + type: string + default: 'Release' + +steps: +- task: DotNetCoreCLI@2 + displayName: 'Run unit tests' + inputs: + command: 'test' + projects: '${{parameters.projects}}' + arguments: '--configuration ${{parameters.buildConfiguration}}' \ No newline at end of file diff --git a/Build Configurations/ci.yml b/Build Configurations/ci.yml index 27cc1ff..19cbc12 100644 --- a/Build Configurations/ci.yml +++ b/Build Configurations/ci.yml @@ -22,4 +22,6 @@ steps: projects: '**/NetCoreEntityFramework.csproj' buildConfiguration: '$(buildConfiguration)' skipBuild: true - skipInstall: true \ No newline at end of file + skipInstall: true + +- template: 'Templates/Test Net Core.yml' \ No newline at end of file diff --git a/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs b/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs new file mode 100644 index 0000000..f7beb60 --- /dev/null +++ b/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs @@ -0,0 +1,81 @@ +using Microsoft.EntityFrameworkCore; +using Nodes.NetCore.EntityFramework.Tests.Mocks; +using NUnit.Framework; +using System; +using System.Threading.Tasks; +using TestContext = Nodes.NetCore.EntityFramework.Tests.Mocks.TestContext; + +namespace Nodes.NetCore.EntityFramework.Tests +{ + public class EntityRepositoryTests + { + private TestEntityRepository _repository; + private TestContext _context; + private TestEntity _entity; + + [SetUp] + public void Setup() + { + var options = new DbContextOptionsBuilder() + .UseInMemoryDatabase(Guid.NewGuid().ToString()) + .Options; + + _context = new TestContext(options); + + _repository = new TestEntityRepository(_context); + + DateTime now = DateTime.UtcNow; + + _entity = new TestEntity + { + Created = now, + Deleted = false, + Id = Guid.NewGuid(), + Updated = now, + Property = string.Empty + }; + + _context.Table.Add(_entity); + + _context.SaveChanges(); + + _repository = new TestEntityRepository(_context); + } + + [Test] + public async Task AddAddsEntityAndSetsAttributes() + { + int startSize = await _context.Table.CountAsync(); + int expectedSize = startSize + 1; + var entity = new TestEntity(); + + using(_repository) + { + await _repository.Add(entity); + } + + Assert.NotNull(entity.Id); + Assert.AreNotEqual(default(DateTime), entity.Created); + Assert.AreNotEqual(default(DateTime), entity.Updated); + Assert.IsFalse(entity.Deleted); + Assert.AreEqual(expectedSize, await _context.Table.CountAsync()); + } + + [Test] + public async Task AddEntityWithIdKeepsId() + { + Guid id = Guid.NewGuid(); + var entity = new TestEntity + { + Id = id + }; + + using (_repository) + { + await _repository.Add(entity); + } + + Assert.AreEqual(id, entity.Id); + } + } +} \ No newline at end of file diff --git a/NetCoreEntityFramework.Tests/Mocks/TestContext.cs b/NetCoreEntityFramework.Tests/Mocks/TestContext.cs new file mode 100644 index 0000000..3a17434 --- /dev/null +++ b/NetCoreEntityFramework.Tests/Mocks/TestContext.cs @@ -0,0 +1,11 @@ +using Microsoft.EntityFrameworkCore; + +namespace Nodes.NetCore.EntityFramework.Tests.Mocks +{ + public class TestContext : DbContext + { + public TestContext(DbContextOptions options) : base(options) { } + + public DbSet Table { get; set; } + } +} diff --git a/NetCoreEntityFramework.Tests/Mocks/TestEntity.cs b/NetCoreEntityFramework.Tests/Mocks/TestEntity.cs new file mode 100644 index 0000000..a8ab1b0 --- /dev/null +++ b/NetCoreEntityFramework.Tests/Mocks/TestEntity.cs @@ -0,0 +1,9 @@ +using Nodes.NetCore.EntityFramework.Models; + +namespace Nodes.NetCore.EntityFramework.Tests.Mocks +{ + public class TestEntity : EntityBase + { + public string Property { get; set; } + } +} diff --git a/NetCoreEntityFramework.Tests/Mocks/TestEntityRepository.cs b/NetCoreEntityFramework.Tests/Mocks/TestEntityRepository.cs new file mode 100644 index 0000000..b629a86 --- /dev/null +++ b/NetCoreEntityFramework.Tests/Mocks/TestEntityRepository.cs @@ -0,0 +1,11 @@ +using Nodes.NetCore.EntityFramework.Repositories; + +namespace Nodes.NetCore.EntityFramework.Tests.Mocks +{ + public class TestEntityRepository : EntityRepository + { + public TestEntityRepository(TestContext context) : base(context, context.Table) + { + } + } +} diff --git a/NetCoreEntityFramework.Tests/NetCoreEntityFramework.Tests.csproj b/NetCoreEntityFramework.Tests/NetCoreEntityFramework.Tests.csproj new file mode 100644 index 0000000..d34235a --- /dev/null +++ b/NetCoreEntityFramework.Tests/NetCoreEntityFramework.Tests.csproj @@ -0,0 +1,27 @@ + + + + netcoreapp3.1 + + false + + Nodes.NetCore.EntityFramework.Tests + + Nodes.NetCore.EntityFramework.Tests + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + diff --git a/NetCoreEntityFramework.sln b/NetCoreEntityFramework.sln index 951bf2e..f953d47 100644 --- a/NetCoreEntityFramework.sln +++ b/NetCoreEntityFramework.sln @@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29905.134 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetCoreEntityFramework", "NetCoreEntityFramework\NetCoreEntityFramework.csproj", "{30F23EBE-4571-4215-8D70-F776A71BA51E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetCoreEntityFramework", "NetCoreEntityFramework\NetCoreEntityFramework.csproj", "{30F23EBE-4571-4215-8D70-F776A71BA51E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetCoreEntityFramework.Tests", "NetCoreEntityFramework.Tests\NetCoreEntityFramework.Tests.csproj", "{170EDF01-1CAD-49CF-9837-D0076667247B}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,6 +17,10 @@ Global {30F23EBE-4571-4215-8D70-F776A71BA51E}.Debug|Any CPU.Build.0 = Debug|Any CPU {30F23EBE-4571-4215-8D70-F776A71BA51E}.Release|Any CPU.ActiveCfg = Release|Any CPU {30F23EBE-4571-4215-8D70-F776A71BA51E}.Release|Any CPU.Build.0 = Release|Any CPU + {170EDF01-1CAD-49CF-9837-D0076667247B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {170EDF01-1CAD-49CF-9837-D0076667247B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {170EDF01-1CAD-49CF-9837-D0076667247B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {170EDF01-1CAD-49CF-9837-D0076667247B}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/NetCoreEntityFramework/Models/EntityBase.cs b/NetCoreEntityFramework/Models/EntityBase.cs index 27948ed..db3f8a8 100644 --- a/NetCoreEntityFramework/Models/EntityBase.cs +++ b/NetCoreEntityFramework/Models/EntityBase.cs @@ -1,5 +1,4 @@ -using Microsoft.EntityFrameworkCore; -using System; +using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/NetCoreEntityFramework/NetCoreEntityFramework.csproj b/NetCoreEntityFramework/NetCoreEntityFramework.csproj index 1313653..07abe36 100644 --- a/NetCoreEntityFramework/NetCoreEntityFramework.csproj +++ b/NetCoreEntityFramework/NetCoreEntityFramework.csproj @@ -3,13 +3,16 @@ netstandard2.0 Nodes.NetCore.EntityFramework.Helpers - 0.2.0 + 1.0.0 Nodes Nodes .NET Core Entity Framework Helpers The package contains base classes for entities and repositories Nodes.NetCore.EntityFramework Nodes.NetCore.EntityFramework + Nodes logo.png + https://github.com/nodes-dotnet/net-core-entity-framework + Github @@ -17,4 +20,11 @@ + + + True + + + + diff --git a/NetCoreEntityFramework/Nodes logo.png b/NetCoreEntityFramework/Nodes logo.png new file mode 100644 index 0000000000000000000000000000000000000000..72dfc9b3dc6ba9524142c057716aa4eec011104c GIT binary patch literal 92846 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ÄpC`gZ}ews6@MfsyP$G z4}O5iebEcNZs*~janrViNw@WArOVsidgE?N&vC=#uyGE~l3zPztrR9d{r z=U*u9yjBvF`rIj)iT_VbuYH381@+<>na{st1btB%tq<0GuGZfhp9@Rr`m~Y`fFb;* z7q2dGv&-*A5fbaA*AYA~I}Vp~;gM~sQ*uf|oImv@Y#Zik_(wtoJsyq=K+ly{A3oJ0 zk2JP*pYL^p5U-1o|LTBib1n!l~qW%DzF*Zau86dQkN!(T(}2Ue;!RC@yOB zoMi-Ty@VO@^8D|Gl1YsO{vhX{i8KLv%X{t^5d8l~_QaU|;Np&TdKZ72K}EdBIk zov!IoVj28K_@A%I6_;69WMA~}az*Qly8i`~Kx@DDjYs2D7D4)QBVN-4tWd!1dJV3( zVG@6X?=`&-R%4xCJM_bEe+2woG6ETajDRB`+e9uIfz^+|p4VP_!feyOq^gUbugYQ) zN2EL>=frRr^5C|*HCtiw&=jH{vuW+Jez1BUbxKoLqDg1unmv6(9A8$a|I|9t&->6( zo7$4A*m4P<0QyquxqkE3qd#`VW!lZxj6g;pBf#ek8HS9&>O|nNbEgg;tET^h9Cp9m zt-1$I_j`Jt;*19Htmof{QEe3 zf)>4K>V-obJg^}F8&cREbQTWyqL}P-io%A{VpoyOGY3gaKIv-1BF)m`QB&9DK6L@zB-db)EMW0D+ya`OWVxi~7CeRrlr7{W%_hcDBjr{pDyq_dpLN zIkY{<{YY(zi30lmOxg8m3yS8252D9+8B9QJp%j!5g%Lsfs1Rgo>g6|z~#{Y1vtX?wH z^eO6R96C6!(*r#`(^aybqtZ@~(*ags+L`TVH^f-fU;2)Akkz6e-hL=!I7-tN#-_#O z#hCv++-sYJi9t?^PK<7NfZIV%R%p8qYCx%|%2Gbv)_>7qAKmhKr{?;=L!deT{LX#% z9XHVh9DUbW23OfdM&LUm(EPw9hwbb)f3T+N{-iuH&>f|vrq9Z8?qS102?wNh z!`5Wo(06(6QZ6e**JllT@_?-R2o2@XuWoEG5f5?nP%tP>D}B}vTI{QFkZ7n?`>O>0 z4BW@1`ZigZV}VWgWgBf#zvsx0ZuvD6$kl#~z};s}O*Z|VCr@;{FYedJ15CA z)bFRDmR+`P1eL^6v-9D*jrHsJh5qRS4w?41z z%>Ct9r}I2)Qfa~76!)aKc~E9xZ}H6pyuo&hkUB`(x-p4S%L;CK-Z441JO7z^G^Cp) z`Z2u*<<&MsRL1*iU&jEN+CYs0S*M{dR;}v?`ce5n2QaI)-2C!4uQ{q3|E}?|`WHK8 z@l&$CN64~EQ(x-#iFp)wWH1n7qVSN#jbln@JUI=q#BdS|t|v{zDac@ITWj}Ax(rHH zXduL(D5y;cdmA;1iniL$ayG{+9l2rIRW#Kf%3lTE``Kf@eAgSUzPi0BsFi$O00CXQ z1sIu>5m*iccAk65+1;xA-;&(x@ojD>Jltf*@S599n*ETGM;g3oKZtt61ydn7k^+~$ z$FXh^>6vo=EJ*jI)R4CI@P#eg0BJYf6c=zt5;jMjD;=4)*oJ)+^^E$-e97NNKa&r1 zMQb%(?>%eN^Ch5PFE3C3!bCOp%$a&Fd?}KyyT)M}gP32uNsRI6v60R{#Fqy;n4xX) z3KC+AnMDD)=$~>l0^LWf)7*guOAJ%ZEf9r9S!t>*ofX?|gvxqx68^F;e~XuIN33tI z%lePTXZwGC{4H1QNknsV00F?COGaSX5oo5Ss@?xI{mb$(wD-*LZ{>PWh0RAs%jw3AI@kcIwW@l7Juevq0ZHzIN1&S+mZH1%a|5sw=YbYlwn4MH|@9_k`3=GaFAMRe6FIz|IoerTIq z@K92_8i#66V-H#`qvCWH&D!wP5+z#JmBJx~aq7H;)i>{z#azF4Z_#vr=cMgd z{0WBVHgc^9#1+kmWCWHGfyZBS@g<$2ybN#P@q;OD7MkQf9Os7|7lsF}XEgfW<_TyU zm~L)yV^dph*$j!IZ)h}Zef0vX*y>b9HQig>@aP+x4+;mzi%rDjIl*Yh=cP*NRps5Y zj!jKb2QxKSu7!6h_p9c0M_qIIhn<$|(Lvze(>EX6nJ9j}sq0_ul$~|>{{kK^8eF>C zAr58eXls#p@H`>S;z8%cU$fwtxZxZ4#jl5Vm^t6nI4Q?sz5t& zCCxAcV`)DKgQ|sgO~KNHbEZL~yBfOqrbKz4{TKRW@0U;d#5-lSN1|O=T9tbx>42#;?{Id=`*I-<^WaDY|BU1b`5O8yP*&&f;a>!$f%{*n>RUv@GPTMTO9>$)d8CZRzb={(d2V=n}{ z$T3zRPwTYnP8howODd19^wq9QN7BmHmY7|Xn8p2;r2 zoVLRYZIpzqN$*6dv1zbt(d~Vu%GH#yIZ=cgp_7GX{ji$^Mc7v3kU>fN9(wLB9KF`$ECXkeAXQhNtW8gCSJA$>U^97`+iBrZIz+OaG0i8CI? zAZgUoms$)1VN4mDk{nSOg2*8TUEFMg&CyAp2e0&9MeXY~$T=UTU{d;SGAKF${4hV* zQRy%(kc5VpFKzIySbwtmWTkx<*N!2QN-QC=>Z{3ZZ}#1~~i5*l<{#W$~@pxn5@*hcC~ z=3F;5AH3ATwmV38wm}gK74)!SW`T3qHz0{3659~${Y(DM0Ggl6#-nIpw z;+v;tUZPzyN9K(Tq<_&-lcJ?+=cp-e-?5^_6z(dsIEZTe%L#Qy;GD`cS?MsWw>!04xhe zi7v-!As{Bb5+B9GY7ih^$XZp#1tfYFf>baF4Grw)w_HqtlYEoZ*5z^_BH1EQS+?oS z>n!!ADH0qYG7JNCoGALO%Z*mpnw$|(qZCEZc-sk zOYFB`oof#+M+QG0_9y5SIiv2j&5y&2g}2$GHzm1=JC=Nqz{* z^t?kIo<4lB9uI%^$WL5y{e*}mH?5c4in;|YI1e=V!H52M`VGtK{-L}jC7T|-GmFu@ zQ*Y&_4R6r|vGcKhsaOckizjo=X@T;AoC`+#(Z3ZT(`;Ar6za@oFPJ4f>ZxGRYlS@| z(U7pK;0j{LW&6xpa;!J?4eqqn?`;_mzto%FdggqpHcvO(JsxOY`p3&|U471P z99eC;lCi5eFm%aC_xFuOENzkI$!AT963c(ppuwng!*7nU}6RX57qt z5x2{*2au6?UJW>njhG5Zxq_0w;i6*(r@{saE{`NuBv_zacG6|SG!>Gg+@e4Pgw$4) z&_kE-geARJN9;jGA-h#woDZrbkL>s}^zYu-DO6M5_`Y6m>gNu=@-5xh z)Z~>td%;WVuNu@-e~#EJ!;MaoGTVo-9TYhau90XTrrjMd^uG7B53)3j@_wAR7o`k% z{7?HZ@!CF$XSeymYHX;aQaaMX2z1)JQq2pngj0604>^6X=F5_O4#>6DAXpCHlC^`Z;EypR*H8H)$D-M&x3R1L4e)eq9 z7bKFKaN zzmr+s*sDxJYF`wGxf4=fXfv_gr{d6FjeVH+AaTABusW&J8ehO{7Hf`~YjdL5uQVs| zVNm9YJ41R&W2Pr+3FbOzYw#7Tf?$Wc4JId!6U&9UlGE0##K%s5koQ@fs&F zfsdZRax5akG|0up?88+R%HZT9Jmg1D)_{wGZ1`6erl4VO)Okc+HdB>#5k?uPS+@?R zR-VIo*Y=DD?l}2PPrvQOYd+m?>JQ^{hx_BUx=>{MDQQ$_d=Dz(PLc?GFu_Jr+jGHd zbUWXNCRh8y_nhq+JJ7VpKq5SJ<$XxJ%}FD?)s|=t8jEP8;B_t_5tA%g@=pwDHw}N5g zf=A@iCJs)csKq1w)}wmYAsV-j+>#JtC`1s~Eb|P>gSXWH7KUIBd|@1FeSk})>k8ho zXpxpL8{$dg?;iN!b$H3WYrES6@Nsqfi_dw@pc#J|A9#D7zDG`=;=%~nzNFsCy`jK@ zgu8+N^Z*V$|0~|cRE!C*MiMs4G+j22%^_XH2iW`E*~YRxWYCr@GKx7Q_#9J0Vq224 zpx{(3V4~$-1(fm=90S|Bltg57`GG8LGX!%qn$tTb7{hnUNmA>-bNM2JbG~n2mnm~4 z?vGB;tH} zBqQ@tbe5O|L`kt64>%>3w1_!1JMDaI&(6Y~B?M_r3pE(;NJYVY=(?^uQ*(4ExR1Yc8Lz2Jf03kNbQ!XEB(J zgwOS$j3JFfE5gl9W@AM!0!U+v2W*t0gKJ`+`F0eRER-~FA4G_oyiRw8!|4%7!hbuElPCQ5eEP)+=??V88Mnn_bv-%`w*L% zsV6REWV);@@gyQDH94Wn?8!WoV|ItOLa*cy>p3Yl=anyLkXfS6^~#6ABXp^+$ZuyS zZ`c>Un86R?;CJOu>(BN6;PPjmqgN44)8f5$2m0cT-GaCL=GCuSj#sx1Peq6pM^1aP zMqLPSNs<@HWCaB~{8?gJ0vo?^moii=9bgH}gV*UoX;zR%QCO_RurP$w%%6yTprwcm zHtE0FMs(8Yv?i@xa2z$S3(Z9EYiip^!!OpO>htpmJHRe^;Eof|{pD&f^$)mx=woqD zeA{C?lo-+Tz2|$wS<>Flal;6kBW*X03oH?l2NU{?$}-3Hq(Rbt%wojJsf*H_A zVPXLyjVJW(Xc}@_JfVy|-2tSm^)UgW4<^EcP$K~hWbDEw!;(@8wtP_@a~wE|G%iU< zV2Dm;V8n5<%_wozpvU{`Pu0CwKYripCk(i_uib&ZxZ}5=tv_PlL!VkT)k>yzpqcUWd} zf;{mOufcm1w=;Eog5oYC($ zm%!_*c#nh#M=3eSyp4^cqNHt)?eNilav|D-AhJU#n(rM zJ_Jw@XU+CI)6U?IX4mG4on4qf#bFv5lFYD-K(qwsWRl4U+6OdYMPp9FnD84hF_u-O z4Z#L_(-b}o1o~uN_z*wIiVvmK)%c>XzG&^f1?8d~b_e>R4BO%`dS-j`RQxc-3KfTT zg-8V>l9_0c6o;_VQVEExjYK3}n$QnKSkjwUfTbX3QDJo5p-YMYQ=xSUloELBDJOJU z@=KEn3^j2^9$ci$=E*cKG?G#15>xPT0yc3*?*xQFl@tu{-ubri+%3b|xxMBVmhOf< z+TC{2Isb7m=)V`Y2-OW@sEmGBOfj;aFhwZY67$$EMgbZ>d?Y8Bohuzeg8Sy6T+Aii zdyWY)s2xZp-idAR8nNsYjq}o6F6d)joRd_x$0T}k5bsRUJJ@)* z3fC3uA)c+IcL1s9`_TF4>nakA`ENqhPwJd7*%k##i-}o=>EWYl?pGyd5ns9keGvz5 zp_@J&^qv44m&;B+2$fv8@UUVMMxnE{0D}L7G0pO`6r&}~5?3dk7Yj@5kVE+#^B)OR zI3!QXoZsXTAAI04GrhNYVFTrYLUx5b8Y4F9k~$}%UWrQ=+L3i7um+|%W4c18ctaa|0qfUI{mN$Dxw%_z0&-|MlhPUsT~1hL zmF1@;eyTPgPYDS|a+5-^l$DrKSkaX14wFVxCJNywS9s$UjV@V;*=ll4l@XM>L_=^= zj|t=kO^9?;GCbKHg{aUArr@J2{YgdD+d7)tf*0KXE>m}-UGczoPQwSFn%;*XV;R3A zZDCW5tPlG(s#MdylVo#6mV1K~(S&PFbm!AWelyg2{)8$+O%M z4`qSJEfAwb@FG=VqfoBN#-(iraT@6|dnJo=s%I}aZ4X$l zz03W}jetL~kX*!N9}uT-IU$SWX)jHXhR~EJQe{Lz8ojHX*SUEPr@cOmUQ574J-WzA zFdB*39kWm{=|jS~rZP`LMOt9^&~=(FR}6mBlue{e%VUn%f?~cd!xQc!lCpUZ)zj6u zIn;oQ^V%Kgi!*Ku-sk31B1|b1f2-81YPGU=$Rf zm5VA6kYn_afN>O!fMvOSrepYAfDB9R!54k#3VsVS0eSTaK?FzpAeK@ODIkeY@quoK&`lMIL*L zfx=iV_LG7SYJyuZBjYv8wFeA&50S-1dSpoJ9G&sIH9@4%uSFi@lcL{CQ!B) z`o))YnUo#rDt#DQ!w>Qy^ThKr@am;2tOG>4vVTG@X-O3_6Wk39ID6V>wB#zBNUQzWt0dSHStl;r6*j-GlS#|A`i{iTxCFlEqbH zOfM$9FxD#>BU_D;f=Qg3=#|+f&(gQlMN;DU2WlgeE@D!nZs>BfabOZfB-5o)GNUlZ z_&_3w$jNe=2zQkNCtsWRP-vFhR4c z!R^2RHHfq)5SO$MjL|qkFu3i(f<)<}eMkWzIQj%ITI!N9l*KXsmmVX1cp@Z3y{ks$u!=OV5VRO9LH^4A&b=flN4Pe|AWF7 zVR*r$AoB#Bd>9icr%nTe7S0F?Y2)4qkMl534oRqJG9uuKCd(&o#|T1Q8E1t>t}4 zhfhR_dkrxv4+n0yd54Vnz^j<$eJE*3B$0NQx$1TYblPKKhggVclTJ(%GUXW{WDQ2r zb1uF#!N7-A@Xfb9kD0~lGy>Bnt(}nlMcYj7HNo zdG?*tChJJ&HG+aeRP=49|qBXV2n3$!tup zGKun-spNRi@F+}W(GZacqrg&v72J@VWr{GdSQ;B2X=Doq;&Y}bE^QgDT3|(^kUFWQ zoU?|cmUP%4)@Sw`mGqZPARYAT-t1`jnPsEdMg5*$^20(H;3W_4gfOKYZ-5bq9G{2{ zVLnDDJm*P_AJpVEGQVP$G!Ybg*U*%yzk*A83L#+&#Sk2*=qX7&92ClkFCU16+^`Uq zq;-TWvxQQ^XkrW-cCZh6YD|s3kP_=B>BuEC7$h|&u1k0c3p&c-|M}X|0}ofZBbpYQ z>jJrJD0&yqZ{qZO&Ceb2PwTci*`n>b1AWnkZebdZ9AUM1;i|#ZDn3J>YzFab;K_ud zz(NrHBwx&}xF9_}Ls@{V2$i~sGy;Qq0izHCRDg2tqKHM~Ohl;&rP?jLT}o{QSi@MB zi%ILULKE8TXptPLbcqWs(Qn$8iAfl(d!ahlW zoOBpUVz$9ZV?UZUyB0Y)&x&l9ba|4Hk9u~T$L+<~VeEE<59$9xSJ+|N%pO~_@uj7J z&}hR6=nEKe&LIM`8Fv<{2fevbbME`5{_W!h=b{~U2l}E7-NH0{>*>FF7+!9F6@SGj zClE$Of#Hxz8%ZBM09J@t9AX^H1XCm|M@&fZNm4sqqnL@qb;%f!xh*t~hOl=~p~~!V z0Lh{iLlfyp!7)}(nQSiC)@O5rk;;iUbf&PE2SXn}#xiQ^FILyRZ96Eswi`UquSVZ$ zs%kU07n@wqm@$Ubaz$>5{&du8=~`kYjxD;3RU4bNM70Z9H5=vVmjI+gPJf(O&41 zZu62|X)pOR-r&?ldz>YyGJ6R(`GG($*)|sy`3p3MG3S_eF2`X$+Z+CF_4wP~zHY+? zdpVKFMcldreGvz5p_z_ktcLyO6#T~U4-WA=lw|^`7{K62L`z}-qBx{zl%u8&K=zI^Hph#|<&+@fP9mJbpkY6&Oz6Q#Q-CIyWn%40 z4tdFS*?LX-96pIX7*t<|1Ou41?z#&em}z>qR!wuSZg!*qF+SWccA&HlA;&YM78lzx zRNvlD1~Ic3NCus9Gku5>4N2GtOk)F)DL@X%9R+&hhTtr14996MWkwrz%OrrrBO+i# z!o!<#LXz_VNr>^=C@7p!mW01DEth47y0pm_Ggd1DVFsBl3Nrn9PKdMv6ne?WIJH_J z2`t8<;=F*h__VUB+1`xa`NhL-d-JiET{hdsFW%W;@tWRQzR*1I?Vo(zij}kb|K^M` zDYD6ukV(s=j+|5yClXIo77`W&Us&)&k+5Qrm_TJ?D+pGA$SNr1s4xL*j3!mWalttm zU@KpS7K}y)(!l8&+6hQw4)VeT4-uixY$!ERh1+NbQ;7cY+4S-n{XcYuA z6D?<0j$NpZ%~X||N?oDHbOe>wi%HBW$L@i_k--OepbWZyUsesCcJwEf-eJyl zb_Y7W(6wFm!1rE!=Hu|yk2fG?@Tw*gkV%xECGSuHvya(}rlCgU<;+?!3<#3acmyCR z{z8`%={wv(Cuz8_*iN>Vd=VN2hx}`C2=7G6Zl9CViEZtaLx4$9`3X{@)Iz!;XfH=R z&~a0luO8fN-{gc{x0^gLJM4XSZZw*;z2W{Z_Ju{u_frHEx)q@aSJ+bU#gKb9_L&_y zL2SKn7Vd+LZaHbGF9Y7G9YBTyllUOm>R6h(TOb&fT6)o zpbi&uBwdb6E{(Yh;j~s`@YWuzF3u8m}2u{KadS6t+z8vNnV!_9Au~;@ZuzK&W8FIzS}x zK$Bu8s*DE|Rvx)hJH)9Ybnz=|y-{^Tb>%y{JH*j3yRr4B>reKE&HXsE4s3MCI7G_> z7yf4i6+=dZKu*#isElHsX%YvT5}o!uRR#Y%PMIN6pn^TNSLPzdo9ogZf?Vw;!NBi* zke0pn9!&%h{+|2CkFFos1fAodKvP1{nfxbio`$#Tp9`!imIv)3A;k7>5f_MTiQz^=uE{#%QPco4~_5wXAd7jUKlz#4_@a3I-cEa$IpR{ ztEPK)9xmIB{S)tb>NU5ny74}E|G+pFEZ%k?a-YRqczq_3u>u@{wr8(SVV$f?Lk<*L z;~`Rf8u0P}O?-yeKEr&TTn9*v#vqa^e_*K1$U~QMoY?b5K#>DqeAZGAGL*Za+t+DA z1dL%TodXE@rKV7AI;fBk8R z==$pdztsEgCHJKs;XS;*Z~fSBJrUL6*H`oh`|#PhibGjILcemF$<1Pu(=k1Y2Tvqp zuvkH|Vv*^9^~~lwVpDa0jQfSWW!3ETz6bv61+Rb1Rp-ZHE;0LGe!;)@wpCAqtiPVF zcmCUmx#T4AW`^s^HnXr77HW(OjW6J&h@&B>10B5>ibeCVpt_my5H~fe?+d=J-+dma zKKDBKcKqp)f@qO2ujhDq$P1-Thxp`uU?CTg81kVem~Rqt5}ji%>;qm%ukBPa0a)s$ zfI#Q{7}`R-B(?a0hgNA!<_Tqb<_>uH#iSXh*+98$Cf`N|%eIK1xLDqp>;Su*WYnY& zjgDwiCbD36K$&O!Kq(e{=Xg9i{n%?Se$vq&J%6t`%;}cy8G3AvuK&J0(44VudegmI ze|4Y!vZJ<+@XZfpo|OSTTjx9qhK5B-B17B7p`1$)IrNVbMN1z1w%UHod)GN6%=JokSVpA;kj`MCEBgy5vEmZ10LWMZU8fl#J7OQ){;1 zFi(ky%(J8eB$5&^6{A9T%4@(ZS-}TJ-kg(+cF+;2DK2OjPoWymj+#qG_2_pFyW*nn z>n>^s{pv@^}w(iUfpY^Mm288C#UPeU@-`> z4;dVec@VYL13C!^RtqY4f+F>jV}b;#6FOapKMJO>bF$sy7^tJ}_HtS$oX2e|l@+_tw5U(D&BJ@8Y^QUc2o_ zQBp457WZpshFOJi$(EjWWina;X%z{jFZr@DK_5vSMQ2%`?~xDxWy{RmE05T4@x%T) z*TEls%hmV3VBOI(E4F;J?)RUm4@OacC`PYhg9;c0lQv8i7_A3JmW7E62{AmF?L9<7 z*bHN`+P;uaqG0klPB0 zyzgakP1tHWighN*&YI?+ab4-X_+-D?Ky`d@9x9>-*qZFY(9Msj_+k>Y=tDd~13V5J zR^z*xas9TZe*A(9vX=^my>!^UhrX8vepi-#-)V0;s_r%an7^N98K{Dw!U*YpKuJ%) zT1qXGmB7eq^`O&1sO%@+enNEAj5Z*FpM2mI>tDJnhk2-f>~-rl-uAS6e|R(=y=Qqn z6=3U4EzK{A5v+?f$ZVElC)6m$?gy;Kz5`1*{>0lZlvEalw^XJlH++UZx3znQZV}n- z*C+Mxd8w-TggrgCy=Qw@N1oym^Bm{Gj0iVCb_goU+7Y$`3R)j>O9w7w6P5N^?5~1V zhbD9dpJ@>nIq_$hz=y4rFJ4lVCn0ojE;`qj_8`R;GDDZiq>rejSa=$nfyBnTL`kq4 zmX=nsQyrSjv!NuC#MvBb9Y5q|CNzIqP4yms%qK27=5u(42ARicR-Szi(wdICiVQ)UHg#B^^qw zF%PXG(;?TA7ip@eqEhK9^R#b@B7nJF)8FgR9G4J_7e| z-+9W~{g+ks>t>rVJ_aA91-*t*Zp?TVI2IW$Bw8K$8^d zG6~XaqNO5sikTC$Qd^8^O}0w=k&sx7$Z&yz#Nmr%r|ml5Qb0^sK9q z`Gt2qQf@!=%JskcofohD7CvwHUr|}6QyGL!VKdiNu2mQy~b&?q%NM49%M9sn1#5>V>r?xYfv%f7_|*+~{jk}hhr7Wh~n4U{cFo2H=j zd7(?HF{fA;o%Ly1ypX{g?Zc3djnrezzHH=}!hIx$&FGrhYW9NV-x>ewF*kNMRVsb- zP{-YY{!l%&7t?)r^}1EPxqIKaVlefJbePj0$jnqQP#u)0sY=8F2O5$B&H|vM#=z#@ z1COWS+wiILpE=~p3;z#AKho{6kF0<5cTQeAMsbz{Xe6W)$N@~T zE<%EbG=U4aSU8a;ace~XjBzI%p}NZ+^T2RfGwh8=_uxD~AP%tlt{cA@JI^j&b?-oVE5n4xF^w}d6c4l$LDBKa-R z2@s}-?}hiakLLbvx*5FgF;}*43PUN6WIObLo7dm9=_$?fs((Iz&z&vSh2^j!dS`vA zW~Y3e=;nLFx5IL4Q1yS7I?Fziha@k1^5q5vMiy~w~S#5SCF_$6a> zN|6Cgdsv;~&)BE=4uSF=h@$eBkrkl17hi4vg)rEh(5WL4{2+bL1T=?ycPnms8fBNFhBYrN8#+%Jy zBUc&)G+-)TgcG0&hu+rcO9uw8jZ#`P`iv0cAzC9A!hW-Q-JsgA&K^|+L)Y&%58&Gk z&9IprhVLm@`xJokAeyJpHuDbSZ_xt>2MDw}A1ltx8NEK9vxK^AyEq})F(lkoNtY%L zU}qV}eOc@%%J(_K)zJG3BW}bLkHBJ>%C!FZJHj*Bvk#Z~e$rJ$TLx?k%nZ z46BNRj0w%6!vE0-%Sq2dMF6ojw&K(0~Y;N>%m&?alshM?^s-3ki%_vwVPC;Y~gyrHjYSbLpF@>t?R! z_vyL=oi5x1ZR@tJy{Q2{fYtBYK823-J}&~}(QIjEyx0_CTxH}wp~Q}a_`O8CGis%({Gx?7Ly}F%1=(9PW%~hQg3EB zFY!*|L*20rZ=H?swat&>d*Z+UjO#A^7(@ix7`p2o^FVi??=jadUcsAAUGsx;<1PQN ztR6gZJ6~p3A&IPv0>Dh?pOq-hKo>|brZxDh zL4p)4rD}=``zTX_*aw$CAlR&2vH=Wkcm+R2Gs}*e5tWtSIxb>x&QC5 zE7rf~<$5Y0ss(vD5HAhlj&eV#TK8yw9#tY-7ari-jWL$`} zgPRokDyE1r<{lT5_kuf*XG)goNWpE)JrXS+<^c)a*2jJdI-65{))2F-iTly^9i^6I zvAKFlz&gc;N$4Vvt)Bz^*Vh90e~1{-e=w?$3_-9?v$LHy(cZ`oHS+*0;$P z=!|!iyYr+qzc6a5kHEy~Ff)9i6F42(Dup5;e!efP-jEZ5_WKkG4-9j{QC^%JnEWEEHBOqG(0&X}#wrD$vCthoSv0 z@pw};?!Dx|E7yPe(Ov2Hul_0=sa_v1C)#HT;vkna6j6BwuHvf@HZwhC zfpv)a22@czRrnh9Bj=h)Ha*?*p{ z>nF`Me8Jb66{PuQ@EM2-1nP(muf%|P`aq2xSQLgg*6tqH1cqm|ue=F+23h3z$^l;yv z=C9r zLLEsLrGzBPW%HfqV4oQ@*#s)+;z2HY>P3rJ74)0py=DgW;Gbvv&6?+Y?Bbh6&|Mb1 z2f71&!G~zi8MyJZ^IltzXD`JMRp3^OILs}tU13bDOc0og08my}fWv=#RzU*%IXT~B ztLpK_YHsetL$18!X7VrAcF2Z5+x(pq&b@eBe{S`luAj);zQ`9`5Xbn(BF&}K1-S*p zodQG}kq;9q?#_idW6;Mf>*`VO@mWqc+MOQYPygP0^;R6{?P!%c(mBeQ2*IlYR+1$N zz!VL%2yV(3U~-)EVeS%v^uX(YHGPz42X2UMYsge?9Xex=eQ0pwCa=$1s^9_V!;aJM zCv5MHK0T^N>yQ5U+x{*zcm3k=z{HDAi^uTJ(uePXji;RZ*t<_V?^@h9{Zf00*NTrx z%!R{BfF-?fECx{+03hBDb0Ju@>_9?sz{a|9G;B^i@ajvhH@S=Zdf3M<_#$ri@?Y)Q zi>*cLFP3G#AvAm#zKh=cGwDN#P*FEweA@%Bc06;_fBKF63h~`=H+kT5|Maas-dK7@ zem%+r^KjE2ri`K*0csvoPVuK_vyLIa$b!}pu?>u+bwDd`z!V%3n{*jJX$XpE(q6#mjnU^g z(l)XauJkZ=0hKL6kO~dsoI3`Jt4uHw*A?Obus~10vR$-^O;_nO909Udx}8485X`Tc zAxF0~b?-e}mN(}<=ZcHANKkiK^d9IA^hF=Shqiz%r>;F>rq}!}?vS;5J3icnubenz zR2)w2rDGdevCv_z3I%9XDX^#zu@{&!?18|r*KEZPt^C%ZS6y@+=qBy+wOnLcv*Frhe3NdF51Nm29SDYOrjXOcBO+3W5zH{vKW)c9snD^|>we|pfB7rxUlOYeH}TaQO40> z5D*8oKoV#=U2Kv`*~U){CAbkuN6alpwRwaK12Msdq8w6&t$d3J6!+mZpWmwoD_0zK z%|);14s$tfNnW~V=u0xJwx~N#KkGTuBtbEPuxw_msQxomZ?l&xn`imA8id?&`IFJgmo;!V}B5%3O@S5X(na zc;)lbhhD1VFi!=4!d?83;#Adt(Z8Q|&Ih}fL?@iHi&K1$`gt|(Kg`&0KdZH3WZA$R zU`r%AFa>fb@kWy#xDnz9YaFmj7;-=ve|98+-I6l3+i#GCSC3-=pvWx9%{fOZJ}DJwsnYvBocj_3ydwDR1a+8DBW6dQ+|M zm1CVscci}+7B39?616*lg@Qy@7*r^%WT+k)9}7(s6eq`%9emxqdG+Hz^5$>4q$S9=h&@pPPsjsoWj)>7Jf6Mq;K8UWa0OfPMW*4r=*u!dr6hBooDc>vGPUjkq5S3c9# z8N5UGbaVqt_uE0wXYXt~42UI4dhkoy$Q?b9R!$nfgd|xejTmYrpJ^vmIW{g{r|W)i z`)K@c&A9sIqprJf(cOhHucRC8E)R4sx$iDdK1y=#I(6;KHlBX&z0i67S0{aD-7r%-Qow$3A%WOPKfCbo}h6N zlBWj=O>@;uzkV`)+3dN`xNh;?QaRSu^}E*tU7^^${(MBF;kc;oK7H*gt8w*CJR@H@ z##6ajesftZmz;Q%&tjk_;i(*f#_m@d^+UxbXv+IK=Vuiz-s=}-567dqsu}?k0BbDu0GnAbd!?m2U&+nH+~6FnoB6GM;|e z{`)-_&`%mwcYU}X=pVTC#qjqNdH)65*C8pQFd312)QSQDiic{7tpbLTC5{P8vBM!v z`ba+ZiZ&%tiaj_WQ($Z?$u85!KATi>p!7g@pqJiQ z;Ny*_y!El;YSY{AtKam>sotQ^?<>cr*I8<;S$VKW_$(?`Fsz=Si~y})`9g1$#+7T6 z(S$2ZPNt3eq#s>rnlBtQT6JO2?rr@YTQ+_5u*a-=_wstho3@T-Rj=ir2}j8HfYFyx z<|z&+RB-S72|&r!n)q#h$g*FwHaDt!Q zq6bMFHbgrrDAk+X7RZ$KdfV__wbvYc#rnUU!0uJk+fH6{{M5Mjzj5RGeff4rj!1Sx z>BA`4sn29K0BIODqNDLu zF0tjq)qP$hg$`#@r9csBTR(D3^D=<|NQZjb3AQ8h9^eB91(^YsK+~0BQc2<50af$9 z!M4HcpZd8A?iHxJbRKvB4|LDaAHX?}HtM@4uXzQ2gZPr(czE~_`98*pJ9$8>o}e)3 zSw&GOa?t?Ni;fi)J1$g904NXfR&DZPLmwEQivb)jG4uD$zjW9Y7w*-EIejx4?em$s z-u#)BRsY3X?Im)8=e6)5i?|B5_sP4O+cS7PT?4y6DSx!vU1S+3&pk#a0?1s<2e|Pt&UxgAHvr;8&!}cynKD#S z{jz?)H!~hxzOAW$>4&db|1G2HuAK)S+yk-C9-OkHctkvK*YUq`cz@;c3-C1jXYh5f z6~iXqaXK9eULLGCut?Z}u5u9-#ZPMC?0nGa9S;cNAfGHqTx5vgI5tQL)4iv9^-mvk z<@p~X&EDQ_U%mDXc(}D5&!$(zt0$@0!#T-^aANkm`#CB(aOPt_)ZM9+v#dYWn;8y2 zT@MC7_5)X)fA`+*@9%g0Uq((%SA+KtdiC-44G?9D#H7PjvEc!1@lu{JSZp4noICR$ zSX*F4Y%I8@2MppDID(uv1*mMV@a9bY-l!RUVYWa1f1mxaOS)ULy34xmp?jcvhW^lf zwZ|xLf5Dk6R;^n0il!RB1xbClZYlz86-VNM;9qVPe%cn_Fz)r9H5$#m67cR>dUno38ZB??Q>W^|@$rK?+VgOz4s*qe z2e~rHvkPJ;4)Zc7IcFe*5sgP_$r?M#Q%;gB8fY!<1Q`DSH#C@QdiONrxmO&0?Il+P zY1eli_~9K4asl=l%En9dx`_bWj@%ko=6i}#8JGAkpk^dKi$;(@#|)DxXou2lJcx2%<2I$ zAOG_+YgGstpkic1W{}m4Tr^ZYTuNqBjfrnsmFy-I*8qy&MDwL~Jj?msU|Dr#wQgN} zPtK5g`L#d5Z_AIGSK??sAjO0}q0i+*8(2*386n>*x0sTy2#)(cSjodrX0NQLUbMNX zP6qYg;je2C!2>JDgEzySPvBc2eBflU0VED`9n28qJ;M;7@}M_W#o-S+i;u;U*F=Lc zbvc3JU&^BV0Uj97^~To@d-cyA`|%5JbLOt=Jg`e1z}D*8p7y{8a7)&c?t9`(>ZX7G zbX7lVh)>y;&%<}FKZ=DF5*7m0ee}6F8B9ee*Ob=zP|CL=WRMuA9s|=61JL;nVL@7n z_j0!k=l-HUQ=N72C)Rh*&`ZZ+eEZ33{t5R6_z6~W`ZNWLW5q6c+5m*Bg})6ShdxpC zyAFMf`8(EgKD<0@xa^Ds2JqYi{ z)7Koo>9ljNcI7QRo4!#o;`1OM12doSjITOsn&A~Gu`#s^LnBNM^$ zQ$EWGn&?9d={RQ37CcteoGOTcrw*R>Ro(xW?l70j=3Pc}qray|)4?F0(Ro2?1NkyQ z>fta2dp}{JIu|W-F5eR zpeqWy*Pp%Sv~%{^RP}$oZt6Aoea8Lpsa3wTW{DoBXDTWxGq4~Y?VB-CXINNr;g~Sg zS&h~N2cP6|vXd5Cg?1*^AHs!;qU8J}nZoy>w+?5&gC~i5-Cf~!;>LMkyv=<%?%Bsz zcWd1zr0}D=Sr44($31|6;L#D z+p5{0Kl)>D`yj1>xUO{`*zF$Zo}uq1m)`x7H@#rf>F0g={@!3S&hIzlMfLrLd|{o1 z7@3`(we3J35A7%|8mrK>pS7_But20zz^cH4K@fW{P8^rI$Wpd)&awE!V^mh$OosG{ z#(vQW%5JDuRNaAII7W^x=Zpv^V-)=9W?0w{yzQblV`^MK{!j0NECN#_H{c}Y34F5V9EUa?ol6o+hs&0W4l4;f!*wZ?iuqMvwxjIN>qXf1K5R_43w%O!zj;~~Ka`VCecwzV6c?wE<@a!ut+IGiDYySzi#XW^T zO3j$ichRRxA2>ynkzuowfM<7#B_}=?73WSlRaM8{*4xVWV9yY+yY%?=&#zx!zh~v3 z|MD%PIXV*lbDvGbBI06hLuR?3>2Sph2+JtuBw#*EZnkh?+LljzsO5)9=f=%n9`lKd zU!C~6LFa)z=z;DT`uFKvmWWL!uRZCW)6e@_Z))2n+?w%?czJJ1pHz=bhDSlWjJ!6`~05}7uI0t762HoziY z?D2hf0LK6EmJ`nUEhE^wuQ%h>ifvQ%Rd{gy@@;rqLJp@N>3HAw;XisR#@2K1)ARH- z4{)}84O)RgrYN~+&A@A_tS2XKWHZFw6kl`9Cobv^b2+ZNJQ5!04)llYW&Fa~Y3IG- zzSGXVdulNF2!1f*>HMU+UQ(9~D*#rJJ?R0@g~AnyY{#_Xjp7r6K&m27c4u=*s#R&s zfr^qrOil5yA_*}(?b3mhr5hry5@1Xm)>wW$uD%rLuHUf-23zO8w{A?vD08Joevz*58}6^1%8UBNhaf1kU4c#|l)~!KVU}SiqwS z;+;>k1OO;@q6NET0Y{P;lT_p2b7Fh;2-;+O5Rk*ij^hD@1LU6G@~In%?b^;gFgv## zKcZ28VSo=2+8Lew8i#rG`4IPLWzwV|4swfE8CCv#?YP(PSBEs!;BRj^;hZNYroCwJ z_2bTY{udCYK=(3l1cKICsh?F9%U zIQE@_gn()9fFIvW$M@5#qwxa#-`@SwH$J9q&C;F0C)HP9c-AlDCH7BNO@$AjMpjL( z*)qZQJIC}U`tV`+zQu1m?s=n^Sm+SD%M2KJ8B^RT@beKi&KKe3zV}7OkzjXU z&0(8PJ@=|*c=-q1~iuQ7{)MuBnVDi#J) zX_!EZiUP|9LeUbI1_c3Ot!98IOlBQml$&UMFrkXSP=#kececcJlO1}14|?XR;kT1Z zTU6n1@9B61Bpzt-Fv+eD2}Vme_Yqs{C(dl#;4Kk6)~c)1Za(px{|PC6qKJCURI9-yA_y}*{lyydaY=1ZiN|e ztG?d5I zhz=hN`_JDvaqZUTqw8L?lwMK!>~k-jTD9WqmtvK_NFV3}sqT&NW%8lifeSZp;X^{K z<&pW*C3r4TPDv45%n>%`1!?$g2GDIERLxI4^<(S55_DbPdEn9Vz+U|f{q9rFefj45 zXYWE<{-R!5XF{XJVQvRB%K{TT4m;IOQu!Zw@`0(+5C<$sqR4Ll!=xDdp@uurtXC|!aiR?dANsm{c9wf>Ho=89a1p+BD<3X|@`3cYQDqjOro2 z+;UimXWE9(9)-Fo8I-?|zOXuSTZ*Iay!5Z$Hoz@zMez4AbBUUtF08&6qtH9k=DetduYG5ihd zvatw6v9P4h#URs>C(422QvtBTp$btHW~w;4+~o8YBp-q9=?bn!BzbB0oV< zz(|{y1w>+W0i0{dHBh2yv8!QtRm1Y|^}N}bcKri;V5%9+-~r;C0zy*XPYOc0M~c0n zxMk-nj^#lfV;x8-upU(KnOFv@>G8n?Zq@tyEAHI<=H|Jt#g{V{XKV1R{OiY^_2>Pj z{{^h{$^2b-`ZD|)d8*Zc!1jK2BKLLpEiyG=MoZ3=2qD(xn7laDnI5Iv@zN%X#QUFq z-9_u9zq@oESO6Z_>kjmLPdWGJ?%Tfcwn5!r&6n+zrKw0*a!1irF;IQr#SU$YS(FDt zy&wRgB4MPItXh$Zju#xEy{Mb4;wmPayBL!L(BxbI2Zs69Ly>fuoJm#5a_~lRvo&yi zY<86p6G0bM)u>q#&-Q#td$hxcq-Nm8nY1_j;EqE?y~A{1FmP(|J z7i$q@4hiF-j<3$0bL+}||IBC?*Y&33&OGI&l{enjului)<@6T@alnRW%%{bMH{x`C zC_Z$-;*qx@E(Dk!pSqvT&FWg`fd%1#z2-gi=2*N}e#HIfP4x%s zW=6w`A0mppwW4VUoRZr^Qzmm6twfK33MiQfWMkpc37Dv?2piU~Mx5$6pqZK_#af8e z3=@6SiM>-xw^elK0IoGBr5z0XB(BY@&sv;E#mcNO`)wT(jC*A?b+5Z`c=GZC5AZ}1 zUl6bG>M%TB1eu3XIj0o+oozl>Y1drixr?OsM*RQ_m z#5GTSO7)r3stp_b=H?Q-ATM8j?r$7ESTT5aUH5;S&&Zo`Uei4PC7%S1`%ta|j9~ev z@VoEx(uZ_}L`jUx0zm$iEc0{34zK9VOihnod*rp}-%Z}GbsktK9@s0Mp>I6p+{fN? z#J0-^)zt6d*O%~++LKmAl*y{B-$6_aZq&hJWSk{FO{{*f3J5OpHV-+8v*PRYCe8|q zk6T@ca1(VXr=k=#|i9F^NTOmn`j(eu#h>e3uE314-W?Tq~stM+;tD;fvLH0 zdy6s-1OYuRbUlX=pEd($9!DGH@H(N1abX24V#v3X@ZR%DH#I-<$!|XItj9aag6lqT z#u@z^jyq@FvXxWc!kTrMPa0{5aBNm!i)Du&(yJK+gmc}8K{F}Wd{qb|0j5f`Aa=CA zj#xF9{_X1hJ{G91?>w+jJh0>s^!tA5O$Q<|KaJ#G&97haG>z1a5f9j0Y>R^7QDTuG zkLU<<0pu5-ADrTJ_MmqWsUy9!tKKAp4{{AMDp7|%@Ur;Oj#g!N{aLb`2s(pt1-6E^ zzV=!vHvGU|g$_M`Iu+lEI=s!>&35hqzHRNEXKYf7u|-+_PB3=jPN$yw+5qT{knDQx_dH&le&Jv zcwk8%==Z<$jR((d9&W&+>Zhk?^nS`5{813phYV-hNk=M)!6n#B(j;C)8RO@B z)UJ%+$eHrG49zu)Ay+j+w636na2Cy^yHo~RzKw~3yYKD2-jiFb-DD>o7%zuYSEPdo zVF=%#j4DVx2Y-|dG1_kuL z)7aVh8~0mBbDtXbX0L*Z5^c=gwe!FN@W7Hi&<|=>{p!m8)af()U=1DZDVUR=0A@cR zI`Aw_2_=n+OJ)Mp8_8T?V#C}DlF=AG7;-P!KvFB4=`vo4B&=kXF2e{;ModkwKOo^e z?1W@e8(FLi0JTC6=9EF1gbKq-7jshpxQO&&JiOTWnCaQ-Ng(gqgL#)Nj9w-1S1;9CvYs&IMcgO_2czj+ym?1CjD}!sj&$z0N zpq*WN5D(P-71Q+~?IHOPGd&wuEWxj!So~}|`r#wE;TdPeIAB!kEWSk~r$mz^%{c(Q zwu8eJVvL6X4(h?_{pl_L_lD!oJ_evY*7)EHKP%nT{BxQw&e4Q;_q~}kfkGt=p%M}lNsmHy??v%p9t^K4ZddNsW@9^>Xma-Tk zhL2*{vxP{T+0{d7v>?zNm*C-CUkmFsPr)rr|NX`j*1V$R-yLHfpSuF zykD5XL2kP>tS~LwgEBC*8kHUZ0o0=ABo@y-3O;RBC!&~i7`wQ1Hg#ZunHMj7LQWu#hRrL>!DkVC+_vxhm6O>zcEM$1kK&%cZJvE>TrkvPLXq2d7Q*1iNHxl2IPGvLxj+G;6>OB237sO8%{X;=bu*Z z`~OrM*6q^w)o*zI+8=19#_z>5+Y=kS4CiF%HTJP1GBb#1l?)S+td(Y~MBd6vhF$Sp`;rfdrL_~~@ zBvlj2HyuDom(yYr#mS0XV)3?o>P}779|)O16ZukgL@|D+vg*(&yLhxJ^lS zBMo_G=a**nxgeAH4lva``E*mq{@j%`O%;*=H!sd=B0gyW`ohsIhmDDT@l#V!|Zx zc|jL-i^vt3OrmK6W_RB=-u`71-d%U*0erP-6>hEfl(=JQimm(}hmdjWaGG$v1-SsG zcv)CdjMJcPiGhO&z4ifmf?TX))7-7`J=EYn<+>02dHbz+>{o6*>D*)68uIM=7oPLt zub*(vSNi>_%K<%Vj$c0`Iu;!Y#gf;Q^pjLL_Azom!ILpIqWIX}aln^c9A}=4Njw?k zqikECf}cOKgCqUwfOmc8fradWCG#HoH%~k3@wk`A(UzJloXmPAK8_+Ex9SU{LgL6= z4!sZ&l=v_%Td=4XVaBpxm@Z=Zhvqb;JgJl}qhT?#LzCn-HZ~rrJ_o(-5u*%~3}AybdMyRWG^bpeZwxJg2}EN0#Cx)+Q9p^C+2TbygV`FY z?Rb*#G0}II&I1eF154&WUs2V^Rv^Hqq7t&44jq3uh0R2wpkPc03wsnl0Z5bwnh8=CD;b1~swH|3 zMM*^%z?kq++dpKCq9+EClLp`A-`=l!-Ft}UmIu7v)7-!B%HA>^=yYKCJ`QOyM{Gh8 zh+>ZvAcn5pOqgJ{cge>9Cq;%UxVYy^LFu4%%fdpkkd)1AW#o-@(5ue6@!L;)1@7v0 z13)JLQ;+qF2-!mI9tg;XqTAJ4m@A+`8iodH_2%orr^*Ego5*0YolfgA8nFOeswy<) zg=Jw9;;O)BIVYnMBM10vn%U`nXFl&*yRP%Vg7(1DdC9%${}4RAZ@V11@0pv-edZ@Y zRtI#z#>7EF*?~twZ$L(|peSp>5p(ZV12C2@ltz%Tj;Q`jke1UpW(5NirQ3lU7E*K8 zDS8NHkxNi1BO_^}nWW5{<%mxg!ZJKY;)E>J?tA8X!w-eTuHU%__8BjK+%&$Y6`_!O zNiJswUlFr#wxbe#knW_P7vho*LdwIB+9VgcXxGjg4>o%cNx~rI3+XuX9*4ix7}b8O zCW+Dhlh8O62?i$(L>Dq_WV3)J8w0>SsD%Mg*jl2qz-(X37p6Uv$w~*ZD;$vcpi2zV zI}d5=Uh~x>Km3jv2X$TNfd%b>C3B!7`F;R*=c@JIB`N^ZJrx2Dn5?+y8H*Q-GPzq( zDw3XXv5TJt!RD!8P0|7%g@U>`rk<>;WtoJTrKW&m*+{)EJIf$BtO0iiyOTRectUS|ZF_t(Z3u>SG!AGze4fOhQxJOFpq!@=lC`#@ajb1=EPqt7v( z5a{9YF2#>j38wuNd?C0XP#AT=eqf0C&=CB-pTd|tH(BLA4Erb`=(M+7ZNL(pDWEb? z*gkYp*-h19zw~oLQeMPk_J!OqRXo8My>yXH0<^}^rQVr?TvL#;&pdfuW>`?0B>IA0 z!`{EXCA*t+9$3I0SULxKuR0jtllJ<+?6m?R00O{dRzdP)&oQy0V8z9tk=o(`h!peK zNJMq1s03H&@m?Y+!S$dgj}=eQ&`{!_AjYYviB~A`kdOZYFSHEHFyhN5de;$rwidIO zFkgbPmFtpO%?y4C{SQi+-FU|yxbdZLoWc{>qxlS0`@(%0pLi#i`JTP`za1?QI3V!G zgPj5LL>qgKNXC}?$q9l_yUBGBR%(lV7W*)GOdNIDpXSBp(C%|x;&u7KM+;lBgs_YJ zQR20?fJ?d{Jugs9^L?n*l0|K2xqw4xTN7sSkFx^nGRbt6F-~;lid;unXLj3~2@4*waJ&q+FU5!Be)ns22C|OiU+uSNq;j;;adzGWKu8zT7Lv2|6^>2tHq*kQp~Mdz8&}m&kII%{WV1}8UG_CN1Jb(*cbnjl73Kw?$g7?6Z zIneRxZv00EdI4Z{Q2k(1DtQqLFI1_}cz6;EN$^K<_H63O2cW?*CJ>V-7%otoQP}8cfrJoh8uzc> z-pp;-Iydv*s_wU+>755{!_n08s_FkIzt64aZV&ILedv-jC(@f@@8iT1IQG~Bgfr@P z5F1i3Ts(RPOtTE-VW-2K6q4ncKts|d&N4ZoY&P46Cd&@ZkQ=?}4|=LkdoW0-g9Mrf zWgw--E~PC_#x6JtN`n<5B7dX`453myF4tu73P$~RzmndJOS<|^4?i;4wax>J!vjm^ zK<|x5_l{|sx1mbX6_N;(KLbfER z*=JK17=;8ftSFiAc*c>GiOJ+r6D3E1kDerHtu9w=gi~yqV896%!Cv;`-qrXh5N@4& z&v;a?Ir8K0xGTuJ{((KPwKw`5>_^xN%%d zTa{4dx?&#&3niqbVN5-#6%$`pHc`5$4Ad0heW^>f5M3&ea3ik9gDskNm(Bx=zynL? zKyUgtZf{2EsS(q$RRuT~kOMSia%*bP42uM}ycU*8&jMh{Z`>*(iH1zZmdnQpw2qg~}%oQQX)P54)V+XWiDCW!<`-HthOd)L4 zXCu2}zr~#UPkWF&5(xvKJ#idxYM1e2D3 zp5N+4AcUo~6*6OsaVi!f@xr9y1AzWd6iL?;+6+srfIwKt6~Hfou?R_7^gt5EDgTj| z3WG;uAa@93Q8sazhqNRILNd)4CZ?X9?e#8r+=lh*MAKa!x(Ax-MeV!)SVS19GS&($ zVS-y27~gdE2+`)D5f*pjW5i6R#}d*azM-qsD;)QYVh)~A#yS6oQB2dc+(}h zuCHWk$p9(mQezj)4VHOKUZ{wk_!49K0&9JiVN1~*dZ>!@rp)vOXV{nJnGdrr_fIgO zA2j3cKrj5!4Hvct^69s*?R-${wvR@amhD z@3_Qcv<3|pA~_B*B|I~N2DVeSFTr{)jr@s;v)l-$|H6)pC9G%(fdLTBa=eS)wax>J z!~;v_KtE!`#oxp0?VlR+rxZLXnTaVsBQ4Pr7Sn_e7ywo5>%dQEu6qU45kd-Q-YJ@~mgAgAEHz8?zRVfsV!EQ|+$ zgJVY~1_Lf&Vypy^Q@}t7wJm>K-+O1y-hH3vdEd3xJ~NJh81A0ycg>x>)_T9!v-e)l z+2_ujQQyiiR&72|KnoPH%D|lW*bl+=LwDU-zyH2pqJ18|Cj`DWJaLKLOndR6e+6HU zuzG$Yu+A1wF|RqCYc!BfT!T8Viijh9I1O3!I@jU1tq4Zef%OEjBcCOSYq2r2p%$YI zp;3{#4q*bq4qdE0?iuK$q`j|CiwN85yW_}XM;!GLs3wLaY#7G`z_GkoOYD+@MT}SWw4CKzsU`JvTc#kKT!mjfZ}bBYF!sie*O1g-udlZQQ64?(Jp= zOSH&U>tb2b*^$4yKkFVjJnR4N*|%T+9xC$iJtMFjW|!NCkQ~$E9oJc0Pdp^w>gL+fIW`Atab6h!cJ{@1c0gbJa6!lg!qIi0c=g&SK1fiVnp}`Gx@62{2an5m zo(pLM1JoKi$`r!%h}ULPbV+v}vqtzJfi;F;eoo7r}DE>--u!c>OPPtS|Ede9o>&C5bU`U<$ zS-&}79vddvCjwJP;HV<>{r3CPTN`Wtd~@jkh)ne!9&*N8K_RG&VP|s~I0$dN}dh_#)vo*S&Y>snL8izbvu=Hy~ z+W0tG&dhFfz4-~Iho5KIMJ`3qapVUZ|JF#gjN(9KMhc6>_K!|xB_RWswbER*xB2Np z%ZQ~3L)d{m*Ts>?M6Sq#cdpzAiTO{qqk84(^{NhclP1D5SF5oxbA^F)^R7E{#VV(X zz+@3Pst6q@|CNvY>p!=*K3`{Vfj(w8qu==281OhjQP~VYywX8FZrBX4iHP{4M}WBH zwP97q*udB`7vhJtMOQN0#j6ir&OxDnudP^W7S=LP47SD8EE9FNbJ zoGAC}kY^b7@Q-Y9J;~gH*6Sc*>iR(ebXFgJE~OS~Ypf5pVQvG)a34408suTeu(h7o zpesUL>|zi>+&F558rUdRjRf;p8T!Bw*&-C>+p;5`>X(mM!@&}S+>;@76KiH4{o0>F zVIC5JU4Xz*N9e%(jE`Oa$$mMz+KBPV`COYSH_Eu{d16fNdxbVH2qEB|?)Q7$DCiOn zam&Z%W-g2m@7R=mQdy>Q4dd6TbU5{ZNajL0laBa8&!`V1U5_TAm8eJmsNK>wTN*lKr`fXC3;@;R6 zP6E_B_CX}mQQkO30#7U}zh}AVz;NY-QWJu%O)}5K`g&Y^jqEVfm#3P>1W<{{f8MY4^ImMU%KLr zr`d_QpqyWvg*eAJFMd7Y8j4oW`{-=>xrWSbs|#J>*Pdj0+clwU*D{#iW|2lc^H*6J z*#NdkLD@8as?O!PszP4~ea%_7>1L32kP0^{<@)ec7zctl2N%q`CQO6AEqk%QK|r zz@}8@VQTuhLFA+nWjH8DTLXTEz`pT`Z~t+TUe zKO*q_P5#|poC=;W43t8r$0=(2wIPXYgJ4T-=F3w|fsb@yP{Qjl<`#n2q0j4eT%s|S zGU0luk=yXC6rp0yahWJri5$t?UOA-2m~Kt1Foy-koX0vKEQ!sj1c1UC?9oHc7K7;V zqBnHbhkc0P+!&C+OF_CPalgS4c=p5m1>u@~A~1CXj%q>&_@{mJo!|VU<)<#(8v6Gv z?0)6{tK%*&n+Em<5#ne=<*tDU(qW{Xrzk9h?;Oz=8(K35W12pQSepe6-DtH_d~I~i zwi}xi`=%y_s!v+$_QGXtK0mOvT;BZkV;?!me(3FWr{A$ZiF_62r)l2J4!`jD#m4bV z`^(v4ni@FHc}U{QDf~f)II+48dA(JGaAi+_=y>f$G?^$@jYUp^im`OP)N3ztxw;rD zRveWI*RD$> z{^0O(_SWa#`JVp+X|^9M0{30@`ZG4R_I+s2V(pcOhb5E6wSn`fYfC4S=a(!L=f0j~ z*zx)sT~|2W<7=#38VF`Baxp9~9E$7p0vr2oGwNE4xQ&75Qk@tzAlug5 za8#$+(?x}-z}C@}ut(c|Pd1su-+gP2_TKauZcCdMjV4z`NdcQokN5rZl^5RqZ$9p+ zvP%Rei@@4sEBgTycJ3Yf@wv?Z7~kJ|`E_r$o#XBM=Idu3>bLCq%5LGfi<`|tLv4UT z;_59*v-{E2j7j{~V~!S^QoFe$QKTsGNBI%D-E=J)Hy?J4y|5?Rr<>1TZs&m44vCr91kZ3&2F|x#32{#C+|hQ_H|HFlcFOUobG*iA zEj?AZXsGgQgfktW>0HmT&DAR>;vqNVnjLhSHbe-SH7*4P3P72M))+RXV+=~_AqW`2i9J@HtXK7v6!D@e>PN`fGK0c z2tVBN+%PDJ-2xMAP}X6i(LY+?pe<9IhJ=WsIM5$5wr)M=w)cJ-v9kT}5%|oDe__3!FJ85`TdW^kZs8ITIq>}Rj5S5+#Nw3F5S^O@ zq2Ss9(TQLDLhx&VofM;MQt=QB4L(7J?Nw)T#*UgyXTuIm3@@e%a+Hh;J21ZMHIarQ z_`*h_a*TUM*EM3qH7*CN7ja3n4g#uWITnz3K+lMg2@|{!fxL-F8?3?YEHE*od6i+2 z@TD1IH#MP_$c7vk>zo8m{IH;xz$#lJFm(jlJ7(&&{=n-SUirp75B0~Kzg!Nlw@*-e zwQT^W*$>mr?bnjHA?V(>BX$Pu1eBvNZYtO;ToM~~_+SImW=4rZz|X!!-i*ShEBsVG zPRwS%Tw2`6Z1THn!~6qXzwh4s|8U@R-l->R+R>xx5MTz!#qH5aeCCKul{Srn?EguRJ85zJtLzQ#SI&po zkJ=r5zWtx+DQor-Elb-4@Mb-J{}`knt=*7fuYnF@{7@dg(BlW#&_A)<#9RK~u&0y< z?5FnbTMqM&9k*xiM^E|4{zoHb_R~V(Pp){|-?#JkJNRKZZvG?&)JWQBdevPCHYfxp zEBrvR@h4EzDU#iyU=o{)jH=J}On4HNzFvd4#Z78rjnpfqYHN>ej>y#dt;$;87>{3g zm^TBU02@RA7<*ueaD)IY#?ea}$B?4e!Vs4;<_N4Hldb7XF1Pbwp_dPYV+?VB+P(eN zVRQ4RF8s{RpLMtF5`jq~@Qi)S{kuII7wA{L{;S#JyR_e$UA=hG73ZIP(#GLu4gLIC z_W3o(?S1DzTwnBV$YAstf)R`{YD61RqnFWw5Q!c!Oc1?9Z^2-+=$$Adh%S1G5IuT{ z-n&FZj}qMZ-dFej2fr7;^X9xf>$CQH_IlP{XFrRob8QmeP;JmUObeK;^jx&Clx5vB zXtzE~`r=iVBghJ^Pgyn_-iocPC^<#-TL=-58P3g~5UI)0n`X*6*Fmm&4$y7-Qs|XDoQ%|D=#3#_<2#QnVSa3zgaAN})c%uF491n`!$dU~BI5 z_#Dh&tRiqKV8MtIWLz_To@`PToVV7gVcDk1YE|UH^vfVkh?Hd%oykYoY{_L}MxO%I zqz!#b^~#?D8&@vv!-e}t&3qP-5r+WbdJluP74WL z^ErAxX|WImC(6f91*oG&2=kr^FpkeqK~tMJ^{7HWHDG}09 zYsVuzT3-O(U*gAr@g5jW?<3o9N`~yhQ2`WUS1@onml`q}=IX}#h7_n=D@?7Zz>qD@`d&53?3knh*8)o{??6VzgU1OOxljg_Ihujs?cru?n z^8EoN_umd)o90JkF%rDV!n>%yBxP7A(;FU{jFE_B+G~*n@_2)zG8z647rdj81U* z8Lo<~G9ed)FiR~l*lII);iH{iSS<~r7H&&5*nbzp1Z)x*wERibKJ(VMJ~;VPE@v<{ z+$f30TYp^ew;S=^#GR)`nd^_PYB&iekT6pJ=54NrnGnL|Hrrbll{>f2BYqCJ>ldOR zzT^9b=8V=E7M90|i_src=E*jZ_hjRQlk$C`(>>&XOkT%40a^^-TFLSUQqq!` zwOajgJWWhbpzVADr217SH5S+&p~RB-F4~ zcwY!V#2V`((`M_=Dt@pzs$%t-JKlow;~C8u@nCa)siBS_?c<9Q9xEz7u6z)8oSQoq zEEK8#YvouxBCQdZ;+$J;jpO_GgCtCg*N3^@6TNkPFdl=t-s?-n(_K+O!f26)%I6RG z{Vq9mo?3axTCT;qdZzcQ?=WwOj$MD~+i1SvE_K!(5ZstMaSfiIK#B3vHGg!)9UQDu z&dKPkyP?Rc3>b)WvnN50A}rbqowE|T_d1O&C*OtLAM+kTSE1u;+Z!i;arR38>}Um* z8FYVR%!3*-(ad>9 zX*}knimRzlom@=yJd&bZoW=5xhgMxk?BQhwKqU^--b3l6+Z!_58M+(s0WNKQ;`q`^Al+C8?=Ql-ijgz4C#zB{yzV z0qQs}lr+7A1y#w}vmV+BZUvl0ReBB7s1Qr41Gs|mNK)2TPC>i`wE4}>YqK`r7>JWx z&A{R!6PeXJdg9_C(FmciR!*`p`todb8`6l{fQR5@=jiHFs**;n`r>7y}l`_ zZFT9a+#woFw#=CnI=Mg$jJ;!{#T#*o=JU_wtaarBM4gKD7rQTDjLdh^c15{R@& z3FZe|${o)Ve=S}jP1t*Cc>T47g*p+sHgv-bVvMw48#qran%fNVi8_~(p^&B{$Qg;H zBt_DAQi^LL-eW(;2JPk(#Vd6?LxfVvh43Pb`Mvj4()9Gn!YF7Ye~5N08FO?(`uAGQ zZ2}Z3UK^27**QU(>bZhmc7RsX<{iveC|zEYv+meEKzL4!dneJvdt}z+%sPF|FpGAL z18M?-wp?@6kVYzSAvQpp|LM&-^m>c-RsGYwhGjVtqqxE@fC^cDC{NnS8f{Ex+i%pU zv6#ZLf<}H)9TwKBEfXv`?`u<*1<&A8mec z0`0}8@rmE>WgTCsPpD5PJlOEkQVUg#yL+fOZ&Cd3yMC%+KXZ_3)hG|f?4y*$&}$jZ z_x}*)1VaT>j6@_eKC#1Qyje%tc~|MS={RNc`~T&ob!jvmt@276d4;TF=_@nKK$n3V z4cpE;^`%jMwqtOLhK>qW3VGUobyMd0Y8%ampnGkqpK__(45G0VvL{n{EDUnfctsTr zj8=arMkCT4RnRCArn{pBAlI55z>i^@(0ZmhYkxTjA?{|-W5Nzz&;;#fWC_>czRDYF z(H$3qQ`m5+8qq>AB^9NIMsKsPbxT*bJ7uqw&3XSbZ&MS^lBi@p^1%AGwt9GX=AZhE zLb0|JkD)RZ*&UPTyzRh~XA%V^ku2&TQGXzj_K`)izK^=kH1o)D#h-=|ike-5ua&(x zOIm;8=HqPGK4vp#vw|18sFg zwZfxMdAsA9rOEW8#Ko3wuz>2?3aP((25q8&5*6?y94QPBouI@xPEFdNP1nPTUyEyA ze!Ql&UL_le4`=UA<`(ra2!F!) zwWKb-`+=Akj|&dyX8GkU**r|H3u*K_6)hxKEmTeK7Q-%(aFk<#H1la(=!L(&KoB!C zQ8?%uQ+5){s3!LD;h-0x4S$0NuBGk!H0YV+>uJN(UPP@lZjF(X@09=Zuemrdn2(dx z2D}%+@9?UZ6zCgucvYLHcOKoDy`Q3?bbN|p_3k_-%Uou6oJb*i{CfzdJ;aN`Z%h`+ zaB~2OR}Bz_ZzasOlg8I`@Ub$*&B*K z70PE$s;lkFER`rKz-(h`7#prgcE;F!`aA{J6)KV9gWnTEK^pw`#FQ3RJWuXhf_kRJ z*PUbBBMNFO;`5|JS@K<4`O_0rOxp}m-?6&^!1lEFYk9+rnfzht*UqN(%I1&%1JkxCnv+&BH}mw$ zzVua%T=Gw*Mu&A3G=I9?UZ&ic-xWQ$mONheJnxKN5ZHaC!K5t=C3Y2eQ7mtYWQK34 zQjSmbXNTnSviz`*1Z!{oijfuSYzB*9nJ>i{-F6-@dwdVgpqq{MFR;Kcg^Us(XAEo% z5`AgtbDB6B4hxNxt}032z-i8JRy_=WvZv5JQI5?}--4(LG3|t^qC;N(zgFtutz`Y| zno?8YeScc}RUa;C-tiogNKioJ4M06ty*~y!Crm8LkI***4(%cIIarLK;pHR~BFguY zMCuPej->&jY<0ZST$pL^J@i-0HxOffk%&L}){kr&f^M;4)T7zz)y=VU9=7rPwPWGl z>6vb=A@3yUo<@PZ4MLJJ;BK@1p|JAT%YmiE|D~Qgc=(WJVfau!KtAit4XXAr$U}yywGMMg*`9*Bw@fi!XT!#O!0=* z&8MqNNtLRM`VDzlZAdQS?W-S-v^OE3KO)5qV;#tbb6c<1|3Ad}nq{bmt&e;62(tNs zbWh*56(s`52r`n@2)`^@P_Ys_i$^0#lY3#bqz@Q@;gqsyR>(V$R$ic%a5^soPU!20 z&W8m3WU2sFKJ^t<^{!qxh}a)eXQ}KgDIF26sGz6PSE-4;Tg?KRo&ze8?X6Te@D@av z3c1lzNUBKm%|S&QJamLrPRszQ@6f21t_s8tmR_`b(J7VNLz;WV!Z)pLvci?k;s1r? zhBBIQLa{xd@%mFf zV)^8F4QXnU>v-uJY4h02OBW*?=~eZnY&*w&wbCZ~=yaK;UkjI0pYjY#Fn;-DKE&aw zDFg9Eb({`{g_|AiX3B2I|95y8geP_!+Dh~YQGnS&_;jG<5+$|kgsMv@kx)mE8InVg zoz&rEG}gpLv}lFqK@6rHpMp4H}NRUiMxd3cpoE;yXE{|B<`A#Q2Yz z&LrQS)X193_k(eL(y0mK5gp%~SN^=xnamoLH&JsBVE*gqaj@cdtZ!hI3e+UV1FSzQ zk`HYQ8tdffQIJ@Tl~gn93OYxTax;lf zc->c(=21gCf&zZ7-rFdd*{A7;Ncr8yJveE9$(`WD3 z@=K5DH?Kmh@w=49e}TJekLFKQTxpH{dR2N>q!+l{rm9T-nJ0!B76kkrF+>5QLry{i z6nG&xNoyS{-)@o!b3*buMF|A;=hcOpG0D%5cYP?-o;Y4+wD0XkGzpf)v8?mb|Jw*| z>Z9J$rPXBT=#6=Iv{rdvny#$%liH6R_l&T*j(mwUfcHGQIQX^g7szxINwszzFSTMm z;yvSp%x6UE{A}aaPpbixMC;Dgt3Os(zQ{gHxDd;K<(`|s=LAx?5a0B&)7!QmDTPDJ zoHKvBq4%6^aR`U@Fxvzr>Ch)@J-A#)a_;Mz;hZi9GfUNanurh{5@n1jI7A~SRz^C1 z8g#-1FP%+lOlQYlRdItAHxxhWm%L~=hyv->4!!wVy&)~z)0_dayh|LHQa1y76u3M7 zK|n)w_@M$jgZ$L%svdAC|uAv>pR z2r++9N+OXVP@0C9uaL#fg$pRmT^Xiu5}lh?YfS-`>{C-_>_L|c9k+dtQ*BDCC3e6j zYJ-Q}-q2z7EWHol3M?hPq9P4N?Jtye zUrJh379E)a6gGlZo8vEnHdkZ+EY5#9Uh};P@t0M=FSieHvNXV_?lqp&bAZl|UN}hx z+SxgN&7Wi`Ez(a$26V8XLts$tY%l#NY5}5Y=Y=Kz(qOI%>W*qXkxzg6{^MDGVkZ>T|(?PoeO<*~3Uy)Vda-}DjGt~R*M#KAzN`>U&BC%@I zoYG9KU!8iy`tf;RSHv*a{hsv%EhXMy;RoLjYM&?39MTh5FdOTC+Z(k z_-t)~S>7WzcS%wQUP)Cgv^sq;vA2fa+v^&qiG!Z3l{-O*ywee32W+ZMkA6T}2-yv0 zt7>6(Cy_S1fhEdchh7(%LbVVJuyJGRV2;@f!!79ipzicfa`23VoZINsFh%soAIY2< zWwjofY*k7ErI^RepngmFaQQL4kO$fJTlLUsDPy8ANB)ua(S*bDvw-u{C$jGAOfvQ! z5$y$FHN~8h-Tt*gOnYcf<6#F9KLBm3>U1d7pToXZ(RhuD8)kF5N20(<9jPvXRFS38 zO)<0rUwV;QciF;ZO=Er^!;HINh?bnk_adEs^m2RXz1#anZM!+0@5c$sr>H-;OHyB+ zHUoQp@a!MfE?CF-m0yND8`CtMcK+%!9OEt#_Ncw6TV{$*RQ3McEJu}oe9dgzMbDrt zc>g7}^xqEgP=~XK_DOKDXYb_0p-Y;e2-v~J!zI75OV@z#_|8L1MIj9W$-H5m6{=3J zk0c7jO#pC*Lkoff{(9E|s@aQ<@2f>LK*b^})8b3%X~y8}W;#6j-UJ{Q^T?U1gSYV| z73AcVb>_97H-uFi>pQd#H@XoNa8m#ocMgewgFt#M4Fp%)jyro^#&K8MuI8d@*8S^& zRF3qS(iL89k5mupK|F24k=Z#t7+?uZ2+?OIc^YMqwYh7}OYVH`d7n3$4f`_mcFwhV0D}=F>g|q?DG4 z`z?q*o|`RrF|8RxsOS_riSX>r7TRdGv6z`nHNz<9_U$R4w#gp~+DP+k3q^%yGJnmm zVTGS~O;g{Vbmz3~c8Y4erwLjNl3yTg!OfKkgVR8S)TXCTMr3N6{{1-{t733EJKtmc zn%&BNNH-ot55P<%fVW&hx{*R`NE1$YpGqxJa4;V>qUOh4`+vK0VOd6TG*W~7DYoy- zO;tr_1!8^XWcOynzj5gndc7cvLCr!em`_0s^pDD|HFu7#$q~wAPwNx0lyW}teyZomWltwru1! zW(31$Z=yz;PKeaEDAgnv+=1tdRlj}?2h#?rvpFwsI{6oUd2==3_pImTYkT%@vp47m zYcw)-QNRd`ccYq$7J3{pLm`KYb3<^Gn8n5x^0&#%GKJwrT6FI5T{%ZcrJ=}fF=pm{ zT-(;2>UDKiTfsX@y_B6c#SG>Co=O6!=(c)n{iCo|OC$bUsBhx+=xCsw?5nE?hQOoC zE4w6SPQn)2AV0}~$i4-i6zf2&tZh{163=z<%;8$o>$41C_jq!x?qqP1`nP`)R8 zV*b6bzjs|&cQh?JY2I&V%UhGKDRN*YW}!KuStzJ^Zaa^s+72p!pS{i&z*IP`j z4|9!|j5ell(EfVgPK1oYgl+nP9RI8tl%l3HJgoehTH57XEJu2S`KFgR`vJq^{TA<+ zM!s-oWe}vI&Bx_dd^liTr6Hhm6=gRjMIKzH;zVNN&PLlWfg(OWB&C1)cPgX0u^(6= z42RDe9Av%qBP@LGn$B))Xj~b1Q%fPK=fM7o_aCgZ?=_p>OSU2-&5T9P@2`n)5rmdR zhxee4WFeMnt=K|ZDxtB=!;?2_HL^2GBRc;&8cehwd;iMV_TSi2(kf==B5Z*M6}9Pk zT#vgFM6|~%t+=JOZI+!@_y$f71(FpI3b0+ojoDiO^!n%k_X=2KGz2ZB^Abv6r&H&d z1zq*k*sG?wP>pPYuNHlQiMUWauGm@&O3cu65d^Tm9c&AJDYIqu<>_9=&iwu#kbT63R~ zL+~KGNoFZ!IQl!%5#Yw|{Tn>)Q2)0OogRs`z2GY!$N7A3Oeju9c0XpP>&xobxOwJg z68j_H{sVgHy7CnDo8fkAaXK&?bsPs|{s>%&97zFk5XzYY+TM281^({eJYe!|t{V^w z=d3yW^!VsLTOHc4OT|6EC=Svz>+HAwJylWo!~El%AisIj{f}mv-HIS_M->F!@-E{tC(3 zHRz)jvq2TPba5vew<`A4vat5$S%TFw;nd`cDofeMY;Soo)#D^=$)EPmHC?q&uT@rn zQ<9MT*r(z@YK54t(nFmbhAv-S_Z4Zka>{K|np^pDv4Q?hKYBCNG^MSc0P}uBYS?CSNuBhjMS;&LzT;1 zrSzX+&wow41D5cEL8Uu?HR_dNV2NPhLf~ws;7h9GK-9*`-*!(gSA!@sDYEWc&>3i)`04Xg$r zBMcZw@us2)`mcodJNqpDa-5&xPt|f`^SG?>*+zLl#0XR6k9dr_H)Tg8vqG?xXmeWr zZxln9y6|F$?&{#fz7*&xPq@Y!bmVhfUr75C{rFln)8r~MZu}4i){nl zQr*m4XP;U`M3cQqsR)3f>5B*p2ZDwY|iRuvTMiFmP`Ajy~UuF87xrXqM~I=Wrq z#-#Iz>grA!HLKyTo9#`{#RCT~e8Qs%`a>0T`0{M=qTmG_ANMH0zW=J|NCs=*;Ke|I zSIjl(bWWycr@9K3JkG*N`H%DfZ%7etqln|}qv8$z$|E?zF!=4@0vEmaMAu!6I!HY0 zltjb&j9UZo!C`KM%x~i7wZqjx_Hq{M+~vovMF-x-6MkwCfL4_hPB9@W-CMc(YUM$1Oj;_ z*d6E2C}J^dhkj5==Aq>Ll1zJL9LtXQkiFNah2Nsu)lIO#i8dw1W>@BT>>O+{+AaRmv|Kvg>fEzuKdfoVlj{w5vk$;+ z`0HO+_Y7Q}&4kzN_t_r{Fm0w> GetList( /// /// The entity to add. /// - public Task Add(TEntity entity) + public Task Add(TEntity entity) { if (entity == null) throw new ArgumentNullException(nameof(entity)); @@ -105,7 +105,7 @@ public Task Add(TEntity entity) Context.Add(entity); - return Task.FromResult(entity); + return Task.CompletedTask; } /// From 96b43f65a9404317cdbd167dfbc0db920dbf085f Mon Sep 17 00:00:00 2001 From: Morten Turn Pedersen Date: Tue, 7 Apr 2020 12:15:08 +0200 Subject: [PATCH 2/5] Added tests for Get --- .../EntityRepositoryTests.cs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs b/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs index f7beb60..ac2120b 100644 --- a/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs +++ b/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs @@ -12,6 +12,7 @@ public class EntityRepositoryTests private TestEntityRepository _repository; private TestContext _context; private TestEntity _entity; + private TestEntity _deletedEntity; [SetUp] public void Setup() @@ -35,7 +36,18 @@ public void Setup() Property = string.Empty }; + _deletedEntity = new TestEntity + { + Created = now.AddMinutes(-42), + Deleted = true, + DeletedAt = now, + Id = Guid.NewGuid(), + Updated = now.AddMinutes(-42), + Property = "I'm deleted" + }; + _context.Table.Add(_entity); + _context.Table.Add(_deletedEntity); _context.SaveChanges(); @@ -77,5 +89,29 @@ public async Task AddEntityWithIdKeepsId() Assert.AreEqual(id, entity.Id); } + + [Test] + public async Task GetValidEntityReturnsEntity() + { + var entity = await _repository.Get((Guid)_entity.Id); + + Assert.AreSame(_entity, entity); + } + + [Test] + public async Task DontGetDeletedEntityWithoutFlag() + { + var entity = await _repository.Get((Guid)_deletedEntity.Id); + + Assert.IsNull(entity); + } + + [Test] + public async Task GetDeletedEntityWithFlag() + { + var entity = await _repository.Get((Guid)_deletedEntity.Id, true); + + Assert.AreSame(_deletedEntity, entity); + } } } \ No newline at end of file From 3f6bbd0105cfb5c4fa20b5b0ae2c61a6c357e9fc Mon Sep 17 00:00:00 2001 From: Morten Turn Pedersen Date: Tue, 7 Apr 2020 12:26:06 +0200 Subject: [PATCH 3/5] Added tests for update --- .../EntityRepositoryTests.cs | 39 +++++++++++++++++++ .../NetCoreEntityFramework.Tests.csproj | 1 + .../Repositories/EntityRepository.cs | 4 +- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs b/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs index ac2120b..65f5959 100644 --- a/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs +++ b/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs @@ -1,3 +1,4 @@ +using AutoFixture.NUnit3; using Microsoft.EntityFrameworkCore; using Nodes.NetCore.EntityFramework.Tests.Mocks; using NUnit.Framework; @@ -54,6 +55,7 @@ public void Setup() _repository = new TestEntityRepository(_context); } + #region Add [Test] public async Task AddAddsEntityAndSetsAttributes() { @@ -90,6 +92,14 @@ public async Task AddEntityWithIdKeepsId() Assert.AreEqual(id, entity.Id); } + [Test] + public void AddThrowsExceptionIfEntityIsNull() + { + Assert.ThrowsAsync(() => _repository.Add(null)); + } + #endregion + + #region Get [Test] public async Task GetValidEntityReturnsEntity() { @@ -113,5 +123,34 @@ public async Task GetDeletedEntityWithFlag() Assert.AreSame(_deletedEntity, entity); } + #endregion + + #region Update + [Test] + [AutoData] + public async Task UpdateUpdatesUpdated(string propertyValue) + { + DateTime oldUpdated = _entity.Updated; + DateTime oldCreated = _entity.Created; + _entity.Property = propertyValue; + + using(_repository) + { + await _repository.Update(_entity); + } + + var entity = await _repository.Get((Guid)_entity.Id); + + Assert.AreEqual(propertyValue, entity.Property); + Assert.AreNotEqual(oldUpdated, entity.Updated); + Assert.AreEqual(oldCreated, entity.Created); + } + + [Test] + public void UpdateThrowsExceptionIfNull() + { + Assert.ThrowsAsync(() => _repository.Update(null)); + } + #endregion } } \ No newline at end of file diff --git a/NetCoreEntityFramework.Tests/NetCoreEntityFramework.Tests.csproj b/NetCoreEntityFramework.Tests/NetCoreEntityFramework.Tests.csproj index d34235a..9f5ae31 100644 --- a/NetCoreEntityFramework.Tests/NetCoreEntityFramework.Tests.csproj +++ b/NetCoreEntityFramework.Tests/NetCoreEntityFramework.Tests.csproj @@ -11,6 +11,7 @@ + diff --git a/NetCoreEntityFramework/Repositories/EntityRepository.cs b/NetCoreEntityFramework/Repositories/EntityRepository.cs index e6a558c..34b007e 100644 --- a/NetCoreEntityFramework/Repositories/EntityRepository.cs +++ b/NetCoreEntityFramework/Repositories/EntityRepository.cs @@ -113,7 +113,7 @@ public Task Add(TEntity entity) /// /// The entity to update. /// - public Task Update(TEntity entity) + public Task Update(TEntity entity) { if (entity == null) throw new ArgumentNullException(nameof(entity)); @@ -122,7 +122,7 @@ public Task Update(TEntity entity) Context.Update(entity); - return Task.FromResult(entity); + return Task.CompletedTask; } /// From 0e3aa509c8c834e5b6177f33471115c5359b1e73 Mon Sep 17 00:00:00 2001 From: Morten Turn Pedersen Date: Tue, 7 Apr 2020 12:33:11 +0200 Subject: [PATCH 4/5] Implemented unit tests for delete --- .../EntityRepositoryTests.cs | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs b/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs index 65f5959..f34d9a3 100644 --- a/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs +++ b/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs @@ -152,5 +152,64 @@ public void UpdateThrowsExceptionIfNull() Assert.ThrowsAsync(() => _repository.Update(null)); } #endregion + + #region Delete + [Test] + public async Task DeleteSoftDeletesAndSetsDeletedAt() + { + bool success; + using(_repository) + { + success = await _repository.Delete(_entity); + } + + var newlyDeletedEntity = await _repository.Get((Guid)_entity.Id, true); + Assert.IsTrue(success); + Assert.IsTrue(newlyDeletedEntity.Deleted); + Assert.NotNull(newlyDeletedEntity.DeletedAt); + } + + [Test] + public void DeleteThrowsExceptionIfArgumentNull() + { + Assert.ThrowsAsync(() => _repository.Delete(null)); + } + + [Test] + public async Task DeleteWithValidIdDeletesAndSetsDeletedAt() + { + bool success; + Guid id = (Guid)_entity.Id; + using (_repository) + { + success = await _repository.Delete(id); + } + + var newlyDeletedEntity = await _repository.Get(id, true); + Assert.IsTrue(success); + Assert.IsTrue(newlyDeletedEntity.Deleted); + Assert.NotNull(newlyDeletedEntity.DeletedAt); + } + + [Test] + [AutoData] + public async Task DeleteWithInvalidIdReturnsFalse(Guid randomId) + { + bool success; + + using(_repository) + { + success = await _repository.Delete(randomId); + } + + Assert.IsFalse(success); + } + + [Test] + public void DeleteWithEmptyGuidThrowsException() + { + Assert.ThrowsAsync(() => _repository.Delete(Guid.Empty)); + } + #endregion } } \ No newline at end of file From 84f8847b6356d6866f337cd5bb57f16cb29ce205 Mon Sep 17 00:00:00 2001 From: Morten Turn Pedersen Date: Tue, 7 Apr 2020 12:39:23 +0200 Subject: [PATCH 5/5] Implemented unit tests for restore --- .../EntityRepositoryTests.cs | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs b/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs index f34d9a3..a212cbc 100644 --- a/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs +++ b/NetCoreEntityFramework.Tests/EntityRepositoryTests.cs @@ -211,5 +211,64 @@ public void DeleteWithEmptyGuidThrowsException() Assert.ThrowsAsync(() => _repository.Delete(Guid.Empty)); } #endregion + + #region Restore + [Test] + public async Task RestoreSetsDeletedFalse() + { + bool success; + + using(_repository) + { + success = await _repository.Restore(_deletedEntity); + } + + var restoredEntity = await _repository.Get((Guid)_deletedEntity.Id); + Assert.IsTrue(success); + Assert.IsFalse(restoredEntity?.Deleted); + } + + [Test] + public void RestoreThrowsExceptionWhenEntityNull() + { + Assert.ThrowsAsync(() => _repository.Restore(null)); + } + + [Test] + public async Task RestoreOnIdSetsDeletedFalse() + { + bool success; + Guid id = (Guid)_deletedEntity.Id; + + using (_repository) + { + success = await _repository.Restore(id); + } + + var restoredEntity = await _repository.Get(id); + Assert.IsTrue(success); + Assert.IsFalse(restoredEntity?.Deleted); + } + + [Test] + [AutoData] + public async Task RestoreOnInvalidIdReturnsFalse(Guid randomId) + { + bool success; + + using(_repository) + { + success = await _repository.Restore(randomId); + } + + Assert.IsFalse(success); + } + + [Test] + public void RestoreOnEmptyGuidThrowsException() + { + Assert.ThrowsAsync(() => _repository.Restore(Guid.Empty)); + } + #endregion } } \ No newline at end of file