From 6ce847411a78b61cbf3597a0299b7b4006bcc9c7 Mon Sep 17 00:00:00 2001 From: JamesNK Date: Fri, 3 Feb 2012 02:31:56 +0000 Subject: [PATCH] -Fixed attributes on nullable structs not being used -Fixed deserializing nullable enums -Fixed JsonConstructorAttribute incorrectly being allowed on properties -Added new NUnit --- .../Bson/BsonReaderTests.cs | 24 + .../Properties/AssemblyInfo.cs | 2 +- .../Serialization/JsonSerializerTest.cs | 168 +- .../JsonConstructorAttribute.cs | 4 +- .../Properties/AssemblyInfo.cs | 2 +- .../Serialization/DefaultContractResolver.cs | 10 +- .../JsonSerializerInternalReader.cs | 8 +- Tools/NUnit/framework/nunit.framework.dll | Bin 0 -> 139264 bytes Tools/NUnit/framework/nunit.framework.xml | 10407 ++++++++++++++++ Tools/NUnit/framework/nunit.mocks.dll | Bin 0 -> 20480 bytes Tools/NUnit/lib/failure.png | Bin 0 -> 1445 bytes Tools/NUnit/lib/ignored.png | Bin 0 -> 1444 bytes Tools/NUnit/lib/inconclusive.png | Bin 0 -> 1436 bytes Tools/NUnit/lib/nunit-console-runner.dll | Bin 0 -> 36864 bytes Tools/NUnit/lib/nunit-gui-runner.dll | Bin 0 -> 188416 bytes Tools/NUnit/lib/nunit.core.dll | Bin 0 -> 139264 bytes Tools/NUnit/lib/nunit.core.interfaces.dll | Bin 0 -> 57344 bytes Tools/NUnit/lib/nunit.uiexception.dll | Bin 0 -> 90112 bytes Tools/NUnit/lib/nunit.uikit.dll | Bin 0 -> 258048 bytes Tools/NUnit/lib/nunit.util.dll | Bin 0 -> 126976 bytes Tools/NUnit/lib/skipped.png | Bin 0 -> 1405 bytes Tools/NUnit/lib/success.png | Bin 0 -> 1439 bytes Tools/NUnit/nunit-agent-x86.exe | Bin 0 -> 7680 bytes Tools/NUnit/nunit-agent-x86.exe.config | 69 + Tools/NUnit/nunit-agent.exe | Bin 0 -> 7680 bytes Tools/NUnit/nunit-agent.exe.config | 69 + Tools/NUnit/nunit-console-x86.exe | Bin 0 -> 4608 bytes Tools/NUnit/nunit-console-x86.exe.config | 69 + Tools/NUnit/nunit-console.exe | Bin 0 -> 4608 bytes Tools/NUnit/nunit-console.exe.config | 69 + Tools/NUnit/nunit-x86.exe | Bin 0 -> 5632 bytes Tools/NUnit/nunit-x86.exe.config | 83 + Tools/NUnit/nunit.exe | Bin 0 -> 5632 bytes Tools/NUnit/nunit.exe.config | 83 + 34 files changed, 11050 insertions(+), 17 deletions(-) create mode 100644 Tools/NUnit/framework/nunit.framework.dll create mode 100644 Tools/NUnit/framework/nunit.framework.xml create mode 100644 Tools/NUnit/framework/nunit.mocks.dll create mode 100644 Tools/NUnit/lib/failure.png create mode 100644 Tools/NUnit/lib/ignored.png create mode 100644 Tools/NUnit/lib/inconclusive.png create mode 100644 Tools/NUnit/lib/nunit-console-runner.dll create mode 100644 Tools/NUnit/lib/nunit-gui-runner.dll create mode 100644 Tools/NUnit/lib/nunit.core.dll create mode 100644 Tools/NUnit/lib/nunit.core.interfaces.dll create mode 100644 Tools/NUnit/lib/nunit.uiexception.dll create mode 100644 Tools/NUnit/lib/nunit.uikit.dll create mode 100644 Tools/NUnit/lib/nunit.util.dll create mode 100644 Tools/NUnit/lib/skipped.png create mode 100644 Tools/NUnit/lib/success.png create mode 100644 Tools/NUnit/nunit-agent-x86.exe create mode 100644 Tools/NUnit/nunit-agent-x86.exe.config create mode 100644 Tools/NUnit/nunit-agent.exe create mode 100644 Tools/NUnit/nunit-agent.exe.config create mode 100644 Tools/NUnit/nunit-console-x86.exe create mode 100644 Tools/NUnit/nunit-console-x86.exe.config create mode 100644 Tools/NUnit/nunit-console.exe create mode 100644 Tools/NUnit/nunit-console.exe.config create mode 100644 Tools/NUnit/nunit-x86.exe create mode 100644 Tools/NUnit/nunit-x86.exe.config create mode 100644 Tools/NUnit/nunit.exe create mode 100644 Tools/NUnit/nunit.exe.config diff --git a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs index 00ed7700..d57e264b 100644 --- a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs +++ b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs @@ -263,6 +263,30 @@ namespace Newtonsoft.Json.Tests.Bson Assert.IsFalse(reader.Read()); } + [Test] + [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Could not convert string to integer: a.")] + public void ReadAsInt32BadString() + { + byte[] data = MiscellaneousUtils.HexToBytes("20-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-02-32-00-02-00-00-00-63-00-00"); + + MemoryStream ms = new MemoryStream(data); + BsonReader reader = new BsonReader(ms); + + Assert.AreEqual(false, reader.ReadRootValueAsArray); + Assert.AreEqual(DateTimeKind.Local, reader.DateTimeKindHandling); + + reader.ReadRootValueAsArray = true; + reader.DateTimeKindHandling = DateTimeKind.Utc; + + Assert.AreEqual(true, reader.ReadRootValueAsArray); + Assert.AreEqual(DateTimeKind.Utc, reader.DateTimeKindHandling); + + Assert.IsTrue(reader.Read()); + Assert.AreEqual(JsonToken.StartArray, reader.TokenType); + + reader.ReadAsInt32(); + } + [Test] public void ReadBytes() { diff --git a/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs index d3b781d0..ac320ef3 100644 --- a/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs +++ b/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs @@ -66,5 +66,5 @@ using System.Runtime.InteropServices; // by using the '*' as shown below: [assembly: AssemblyVersion("4.0.7.0")] #if !PocketPC -[assembly: AssemblyFileVersion("4.0.7.14524")] +[assembly: AssemblyFileVersion("4.0.7.14603")] #endif diff --git a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs index 3a8de615..61fa66dc 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs @@ -5162,13 +5162,13 @@ keyword such as type of business."" Widget w = JsonConvert.DeserializeObject(json); - Assert.AreEqual(new WidgetId { Value = "id" }, w.Id); - Assert.AreEqual(new WidgetId { Value = "id" }, w.Id.Value); + Assert.AreEqual(new WidgetId {Value = "id"}, w.Id); + Assert.AreEqual(new WidgetId {Value = "id"}, w.Id.Value); Assert.AreEqual("id", w.Id.Value.Value); } [Test] - [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unexpected token when reading integer: Boolean. Line 2, position 22.")] + [ExpectedException(typeof (JsonReaderException), ExpectedMessage = "Unexpected token when reading integer: Boolean. Line 2, position 22.")] public void DeserializeBoolInt() { string json = @"{ @@ -5180,7 +5180,7 @@ keyword such as type of business."" } [Test] - [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unexpected end when reading integer. Line 2, position 18.")] + [ExpectedException(typeof (JsonReaderException), ExpectedMessage = "Unexpected end when reading integer. Line 2, position 18.")] public void DeserializeUnexpectedEndInt() { string json = @"{ @@ -5188,6 +5188,166 @@ keyword such as type of business."" JsonConvert.DeserializeObject(json); } + + [Test] + public void DeserializeNullableGuid() + { + string json = @"{""Id"":null}"; + var c = JsonConvert.DeserializeObject(json); + + Assert.AreEqual(null, c.Id); + + json = @"{""Id"":""d8220a4b-75b1-4b7a-8112-b7bdae956a45""}"; + c = JsonConvert.DeserializeObject(json); + + Assert.AreEqual(new Guid("d8220a4b-75b1-4b7a-8112-b7bdae956a45"), c.Id); + } + + [Test] + public void DeserializeGuid() + { + Item expected = new Item() + { + SourceTypeID = new Guid("d8220a4b-75b1-4b7a-8112-b7bdae956a45"), + BrokerID = new Guid("951663c4-924e-4c86-a57a-7ed737501dbd"), + Latitude = 33.657145, + Longitude = -117.766684, + TimeStamp = new DateTime(2000, 3, 1, 23, 59, 59, DateTimeKind.Utc), + Payload = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} + }; + + string jsonString = JsonConvert.SerializeObject(expected, Formatting.Indented); + + Assert.AreEqual(@"{ + ""SourceTypeID"": ""d8220a4b-75b1-4b7a-8112-b7bdae956a45"", + ""BrokerID"": ""951663c4-924e-4c86-a57a-7ed737501dbd"", + ""Latitude"": 33.657145, + ""Longitude"": -117.766684, + ""TimeStamp"": ""\/Date(951955199000)\/"", + ""Payload"": { + ""$type"": ""System.Byte[], mscorlib"", + ""$value"": ""AAECAwQFBgcICQ=="" + } +}", jsonString); + + Item actual = JsonConvert.DeserializeObject(jsonString); + + Assert.AreEqual(new Guid("d8220a4b-75b1-4b7a-8112-b7bdae956a45"), actual.SourceTypeID); + Assert.AreEqual(new Guid("951663c4-924e-4c86-a57a-7ed737501dbd"), actual.BrokerID); + Assert.AreEqual(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, actual.Payload); + } + + [Test] + public void DeserializeObjectDictionary() + { + var serializer = JsonSerializer.Create(new JsonSerializerSettings()); + var dict = serializer.Deserialize>(new JsonTextReader(new StringReader("{'k1':'','k2':'v2'}"))); + + Assert.AreEqual("", dict["k1"]); + Assert.AreEqual("v2", dict["k2"]); + } + + [Test] + public void DeserializeNullableEnum() + { + string json = JsonConvert.SerializeObject(new WithEnums + { + Id = 7, + NullableEnum = null + }); + + Assert.AreEqual(@"{""Id"":7,""NullableEnum"":null}", json); + + WithEnums e = JsonConvert.DeserializeObject(json); + + Assert.AreEqual(null, e.NullableEnum); + + json = JsonConvert.SerializeObject(new WithEnums + { + Id = 7, + NullableEnum = MyEnum.Value2 + }); + + Assert.AreEqual(@"{""Id"":7,""NullableEnum"":1}", json); + + e = JsonConvert.DeserializeObject(json); + + Assert.AreEqual(MyEnum.Value2, e.NullableEnum); + } + + [Test] + public void NullableStructWithConverter() + { + string json = JsonConvert.SerializeObject(new Widget1 { Id = new WidgetId1 { Value = 1234 } }); + + Assert.AreEqual(@"{""Id"":""1234""}", json); + + Widget1 w = JsonConvert.DeserializeObject(@"{""Id"":""1234""}"); + + Assert.AreEqual(new WidgetId1 { Value = 1234 }, w.Id); + } + } + + public class Widget1 + { + public WidgetId1? Id { get; set; } + } + + [JsonConverter(typeof(WidgetIdJsonConverter))] + public struct WidgetId1 + { + public long Value { get; set; } + } + + public class WidgetIdJsonConverter : JsonConverter + { + public override bool CanConvert(Type objectType) + { + return objectType == typeof(WidgetId1) || objectType == typeof(WidgetId1?); + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + WidgetId1 id = (WidgetId1)value; + writer.WriteValue(id.Value.ToString()); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + return null; + return new WidgetId1 { Value = int.Parse(reader.Value.ToString()) }; + } + } + + + public enum MyEnum + { + Value1, + Value2, + Value3 + } + + public class WithEnums + { + public int Id { get; set; } + public MyEnum? NullableEnum { get; set; } + } + + public class Item + { + public Guid SourceTypeID { get; set; } + public Guid BrokerID { get; set; } + public double Latitude { get; set; } + public double Longitude { get; set; } + public DateTime TimeStamp { get; set; } + [JsonProperty(TypeNameHandling = TypeNameHandling.All)] + public object Payload { get; set; } + } + + public class NullableGuid + { + public Guid? Id { get; set; } } public class Widget diff --git a/Src/Newtonsoft.Json/JsonConstructorAttribute.cs b/Src/Newtonsoft.Json/JsonConstructorAttribute.cs index cc0d6e6d..192a5066 100644 --- a/Src/Newtonsoft.Json/JsonConstructorAttribute.cs +++ b/Src/Newtonsoft.Json/JsonConstructorAttribute.cs @@ -6,9 +6,9 @@ using System.Text; namespace Newtonsoft.Json { /// - /// Instructs the not to serialize the public field or public read/write property value. + /// Instructs the to use the specified constructor when deserializing that object. /// - [AttributeUsage(AttributeTargets.Constructor | AttributeTargets.Property, AllowMultiple = false)] + [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false)] public sealed class JsonConstructorAttribute : Attribute { } diff --git a/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs index 3f34b106..b8363ffc 100644 --- a/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs +++ b/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs @@ -85,7 +85,7 @@ using System.Security; // by using the '*' as shown below: [assembly: AssemblyVersion("4.0.7.0")] #if !PocketPC -[assembly: AssemblyFileVersion("4.0.7.14524")] +[assembly: AssemblyFileVersion("4.0.7.14603")] #endif [assembly: CLSCompliant(true)] diff --git a/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs b/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs index 7b7f9842..803970b0 100644 --- a/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs +++ b/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs @@ -419,7 +419,7 @@ namespace Newtonsoft.Json.Serialization #endif private void InitializeContract(JsonContract contract) { - JsonContainerAttribute containerAttribute = JsonTypeReflector.GetJsonContainerAttribute(contract.UnderlyingType); + JsonContainerAttribute containerAttribute = JsonTypeReflector.GetJsonContainerAttribute(contract.NonNullableUnderlyingType); if (containerAttribute != null) { contract.IsReference = containerAttribute._isReference; @@ -427,17 +427,17 @@ namespace Newtonsoft.Json.Serialization #if !PocketPC && !NET20 else { - DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(contract.UnderlyingType); + DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(contract.NonNullableUnderlyingType); // doesn't have a null value if (dataContractAttribute != null && dataContractAttribute.IsReference) contract.IsReference = true; } #endif - contract.Converter = ResolveContractConverter(contract.UnderlyingType); + contract.Converter = ResolveContractConverter(contract.NonNullableUnderlyingType); // then see whether object is compadible with any of the built in converters - contract.InternalConverter = JsonSerializer.GetMatchingConverter(BuiltInConverters, contract.UnderlyingType); + contract.InternalConverter = JsonSerializer.GetMatchingConverter(BuiltInConverters, contract.NonNullableUnderlyingType); if (ReflectionUtils.HasDefaultConstructor(contract.CreatedType, true) || contract.CreatedType.IsValueType) @@ -448,7 +448,7 @@ namespace Newtonsoft.Json.Serialization ReflectionUtils.GetDefaultConstructor(contract.CreatedType) == null); } - ResolveCallbackMethods(contract, contract.UnderlyingType); + ResolveCallbackMethods(contract, contract.NonNullableUnderlyingType); } private void ResolveCallbackMethods(JsonContract contract, Type t) diff --git a/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs b/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs index a0f1d2f4..50e8d5a6 100644 --- a/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs +++ b/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs @@ -530,18 +530,18 @@ namespace Newtonsoft.Json.Serialization if (contract.IsConvertable) { - if (targetType.IsEnum) + if (contract.NonNullableUnderlyingType.IsEnum) { if (value is string) - return Enum.Parse(targetType, value.ToString(), true); + return Enum.Parse(contract.NonNullableUnderlyingType, value.ToString(), true); else if (ConvertUtils.IsInteger(value)) - return Enum.ToObject(targetType, value); + return Enum.ToObject(contract.NonNullableUnderlyingType, value); } return Convert.ChangeType(value, contract.NonNullableUnderlyingType, culture); } - return ConvertUtils.ConvertOrCast(value, culture, targetType); + return ConvertUtils.ConvertOrCast(value, culture, contract.NonNullableUnderlyingType); } catch (Exception ex) { diff --git a/Tools/NUnit/framework/nunit.framework.dll b/Tools/NUnit/framework/nunit.framework.dll new file mode 100644 index 0000000000000000000000000000000000000000..6856e51ef08a8e681896c3a84ccbeea8975d5947 GIT binary patch literal 139264 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
jGx_)XGKVSL!mZ7A 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 s;idf~4WfA}|OOnpsbG<<@nYpjdJ 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 K#)0=F2mTF_u(`ni literal 0 HcmV?d00001 diff --git a/Tools/NUnit/framework/nunit.framework.xml b/Tools/NUnit/framework/nunit.framework.xml new file mode 100644 index 00000000..c98e5adc --- /dev/null +++ b/Tools/NUnit/framework/nunit.framework.xml @@ -0,0 +1,10407 @@ + + + + nunit.framework + + + + + Attribute used to apply a category to a test + + + + + The name of the category + + + + + Construct attribute for a given category based on + a name. The name may not contain the characters ',', + '+', '-' or '!'. However, this is not checked in the + constructor since it would cause an error to arise at + as the test was loaded without giving a clear indication + of where the problem is located. The error is handled + in NUnitFramework.cs by marking the test as not + runnable. + + The name of the category + + + + Protected constructor uses the Type name as the name + of the category. + + + + + The name of the category + + + + + Used to mark a field for use as a datapoint when executing a theory + within the same fixture that requires an argument of the field's Type. + + + + + Used to mark an array as containing a set of datapoints to be used + executing a theory within the same fixture that requires an argument + of the Type of the array elements. + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct the attribute + + Text describing the test + + + + Gets the test description + + + + + Enumeration indicating how the expected message parameter is to be used + + + + Expect an exact match + + + Expect a message containing the parameter string + + + Match the regular expression provided as a parameter + + + Expect a message that starts with the parameter string + + + + ExpectedExceptionAttribute + + + + + + Constructor for a non-specific exception + + + + + Constructor for a given type of exception + + The type of the expected exception + + + + Constructor for a given exception name + + The full name of the expected exception + + + + Gets or sets the expected exception type + + + + + Gets or sets the full Type name of the expected exception + + + + + Gets or sets the expected message text + + + + + Gets or sets the user message displayed in case of failure + + + + + Gets or sets the type of match to be performed on the expected message + + + + + Gets the name of a method to be used as an exception handler + + + + + ExplicitAttribute marks a test or test fixture so that it will + only be run if explicitly executed from the gui or command line + or if it is included by use of a filter. The test will not be + run simply because an enclosing suite is run. + + + + + Default constructor + + + + + Constructor with a reason + + The reason test is marked explicit + + + + The reason test is marked explicit + + + + + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. + + + + + Constructs the attribute without giving a reason + for ignoring the test. + + + + + Constructs the attribute giving a reason for ignoring the test + + The reason for ignoring the test + + + + The reason for ignoring a test + + + + + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. + + + + + Constructor with no included items specified, for use + with named property syntax. + + + + + Constructor taking one or more included items + + Comma-delimited list of included items + + + + Name of the item that is needed in order for + a test to run. Multiple itemss may be given, + separated by a comma. + + + + + Name of the item to be excluded. Multiple items + may be given, separated by a comma. + + + + + The reason for including or excluding the test + + + + + PlatformAttribute is used to mark a test fixture or an + individual method as applying to a particular platform only. + + + + + Constructor with no platforms specified, for use + with named property syntax. + + + + + Constructor taking one or more platforms + + Comma-deliminted list of platforms + + + + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. + + + + + Constructor with no cultures specified, for use + with named property syntax. + + + + + Constructor taking one or more cultures + + Comma-deliminted list of cultures + + + + Marks a test to use a combinatorial join of any argument data + provided. NUnit will create a test case for every combination of + the arguments provided. This can result in a large number of test + cases and so should be used judiciously. This is the default join + type, so the attribute need not be used except as documentation. + + + + + PropertyAttribute is used to attach information to a test as a name/value pair.. + + + + + Construct a PropertyAttribute with a name and string value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and int value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and double value + + The name of the property + The property value + + + + Constructor for derived classes that set the + property dictionary directly. + + + + + Constructor for use by derived classes that use the + name of the type as the property name. Derived classes + must ensure that the Type of the property value is + a standard type supported by the BCL. Any custom + types will cause a serialization Exception when + in the client. + + + + + Gets the property dictionary for this attribute + + + + + Default constructor + + + + + Marks a test to use pairwise join of any argument data provided. + NUnit will attempt too excercise every pair of argument values at + least once, using as small a number of test cases as it can. With + only two arguments, this is the same as a combinatorial join. + + + + + Default constructor + + + + + Marks a test to use a sequential join of any argument data + provided. NUnit will use arguements for each parameter in + sequence, generating test cases up to the largest number + of argument values provided and using null for any arguments + for which it runs out of values. Normally, this should be + used with the same number of arguments for each parameter. + + + + + Default constructor + + + + + Summary description for MaxTimeAttribute. + + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + RandomAttribute is used to supply a set of random values + to a single parameter of a parameterized test. + + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + Abstract base class for attributes that apply to parameters + and supply data for the parameter. + + + + + Gets the data to be provided to the specified parameter + + + + + The collection of data to be returned. Must + be set by any derived attribute classes. + We use an object[] so that the individual + elements may have their type changed in GetData + if necessary. + + + + + Construct with one argument + + + + + + Construct with two arguments + + + + + + + Construct with three arguments + + + + + + + + Construct with an array of arguments + + + + + + Get the collection of values to be used as arguments + + + + + Construct a set of doubles from 0.0 to 1.0, + specifying only the count. + + + + + + Construct a set of doubles from min to max + + + + + + + + Construct a set of ints from min to max + + + + + + + + Get the collection of values to be used as arguments + + + + + RangeAttribute is used to supply a range of values to an + individual parameter of a parameterized test. + + + + + Construct a range of ints using default step of 1 + + + + + + + Construct a range of ints specifying the step size + + + + + + + + Construct a range of longs + + + + + + + + Construct a range of doubles + + + + + + + + Construct a range of floats + + + + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + RequiredAddinAttribute may be used to indicate the names of any addins + that must be present in order to run some or all of the tests in an + assembly. If the addin is not loaded, the entire assembly is marked + as NotRunnable. + + + + + Initializes a new instance of the class. + + The required addin. + + + + Gets the name of required addin. + + The required addin name. + + + + Summary description for SetCultureAttribute. + + + + + Construct given the name of a culture + + + + + + Summary description for SetUICultureAttribute. + + + + + Construct given the name of a culture + + + + + + Attribute used to mark a class that contains one-time SetUp + and/or TearDown methods that apply to all the tests in a + namespace or an assembly. + + + + + SetUpFixtureAttribute is used to identify a SetUpFixture + + + + + Attribute used to mark a static (shared in VB) property + that returns a list of tests. + + + + + Attribute used to identify a method that is called + immediately after each test is run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + publc void TestDescriptionMethod() + {} + } + + + + + + Descriptive text for this test + + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + The ITestCaseData interface is implemented by a class + that is able to return complete testcases for use by + a parameterized test method. + + NOTE: This interface is used in both the framework + and the core, even though that results in two different + types. However, sharing the source code guarantees that + the various implementations will be compatible and that + the core is able to reflect successfully over the + framework implementations of ITestCaseData. + + + + + Gets the argument list to be provided to the test + + + + + Gets the expected result + + + + + Gets the expected exception Type + + + + + Gets the FullName of the expected exception + + + + + Gets the name to be used for the test + + + + + Gets the description of the test + + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets the ignore reason. + + The ignore reason. + + + + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + + + + + + Construct a TestCaseAttribute with a single argument + + + + + + Construct a TestCaseAttribute with a two arguments + + + + + + + Construct a TestCaseAttribute with a three arguments + + + + + + + + Gets the list of arguments to a test case + + + + + Gets or sets the expected result. + + The result. + + + + Gets a list of categories associated with this test; + + + + + Gets or sets the category associated with this test. + May be a single category or a comma-separated list. + + + + + Gets or sets the expected exception. + + The expected exception. + + + + Gets or sets the name the expected exception. + + The expected name of the exception. + + + + Gets or sets the expected message of the expected exception + + The expected message of the exception. + + + + Gets or sets the type of match to be performed on the expected message + + + + + Gets or sets the description. + + The description. + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the ignored status of the test + + + + + Gets or sets the ignored status of the test + + + + + Gets the ignore reason. + + The ignore reason. + + + + FactoryAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + An array of the names of the factories that will provide data + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of the method, property or field that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + [TestFixture] + public class ExampleClass + {} + + + + + Default constructor + + + + + Construct with a object[] representing a set of arguments. + In .NET 2.0, the arguments may later be separated into + type arguments and constructor arguments. + + + + + + Descriptive text for this fixture + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + Gets a list of categories for this fixture + + + + + The arguments originally provided to the attribute + + + + + Gets or sets a value indicating whether this should be ignored. + + true if ignore; otherwise, false. + + + + Gets or sets the ignore reason. May set Ignored as a side effect. + + The ignore reason. + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + Attribute used to identify a method that is called after + all the tests in a fixture have run. The method is + guaranteed to be called, even if an exception is thrown. + + + + + Adding this attribute to a method within a + class makes the method callable from the NUnit test runner. There is a property + called Description which is optional which you can provide a more detailed test + description. This class cannot be inherited. + + + + [TestFixture] + public class Fixture + { + [Test] + public void MethodToTest() + {} + + [Test(Description = "more detailed description")] + publc void TestDescriptionMethod() + {} + } + + + + + + WUsed on a method, marks the test with a timeout value in milliseconds. + The test will be run in a separate thread and is cancelled if the timeout + is exceeded. Used on a method or assembly, sets the default timeout + for all contained test methods. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + Marks a test that must run in the STA, causing it + to run in a separate thread if necessary. + + On methods, you may also use STAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresSTAAttribute + + + + + Marks a test that must run in the MTA, causing it + to run in a separate thread if necessary. + + On methods, you may also use MTAThreadAttribute + to serve the same purpose. + + + + + Construct a RequiresMTAAttribute + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. + + + + + Construct with the name of the factory - for use with languages + that don't support params arrays. + + The name of the data source to be used + + + + Construct with a Type and name - for use with languages + that don't support params arrays. + + The Type that will provide data + The name of the method, property or field that will provide data + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + The IConstraintExpression interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + Static UnsetObject used to detect derived constraints + failing to set the actual value. + + + + + The actual value being tested against a constraint + + + + + The display name of this Constraint for use by ToString() + + + + + Argument fields used by ToString(); + + + + + The builder holding this constraint + + + + + Construct a constraint with no arguments + + + + + Construct a constraint with one argument + + + + + Construct a constraint with two arguments + + + + + Sets the ConstraintBuilder holding this constraint + + + + + Write the failure message to the MessageWriter provided + as an argument. The default implementation simply passes + the constraint and the actual value to the writer, which + then displays the constraint description and the value. + + Constraints that need to provide additional details, + such as where the error occured can override this. + + The MessageWriter on which to display the message + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Test whether the constraint is satisfied by an + ActualValueDelegate that returns the value to be tested. + The default implementation simply evaluates the delegate + but derived classes may override it to provide for delayed + processing. + + An ActualValueDelegate + True for success, false for failure + + + + Test whether the constraint is satisfied by a given reference. + The default implementation simply dereferences the value but + derived classes may override it to provide for delayed processing. + + A reference to the value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Default override of ToString returns the constraint DisplayName + followed by any arguments within angle brackets. + + + + + + Returns the string representation of this constraint + + + + + This operator creates a constraint that is satisfied only if both + argument constraints are satisfied. + + + + + This operator creates a constraint that is satisfied if either + of the argument constraints is satisfied. + + + + + This operator creates a constraint that is satisfied if the + argument constraint is not satisfied. + + + + + Returns a DelayedConstraint with the specified delay time. + + The delay in milliseconds. + + + + + Returns a DelayedConstraint with the specified delay time + and polling interval. + + The delay in milliseconds. + The interval at which to test the constraint. + + + + + The display name of this Constraint for use by ToString(). + The default value is the name of the constraint with + trailing "Constraint" removed. Derived classes may set + this to another name in their constructors. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending And + to the current constraint. + + + + + Returns a ConstraintExpression by appending Or + to the current constraint. + + + + + Class used to detect any derived constraints + that fail to set the actual value in their + Matches override. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + Writes the description of the constraint to the specified writer + + + + + AttributeConstraint tests that a specified attribute is present + on a Type or other provider and that the value of the attribute + satisfies some other constraint. + + + + + Abstract base class used for prefixes + + + + + The base constraint + + + + + Construct given a base constraint + + + + + + Constructs an AttributeConstraint for a specified attriute + Type and base constraint. + + + + + + + Determines whether the Type or other provider has the + expected attribute and if its value matches the + additional constraint specified. + + + + + Writes a description of the attribute to the specified writer. + + + + + Writes the actual value supplied to the specified writer. + + + + + Returns a string representation of the constraint. + + + + + BasicConstraint is the abstract base for constraints that + perform a simple comparison to a constant value. + + + + + Initializes a new instance of the class. + + The expected. + The description. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + NullConstraint tests that the actual value is null + + + + + Initializes a new instance of the class. + + + + + TrueConstraint tests that the actual value is true + + + + + Initializes a new instance of the class. + + + + + FalseConstraint tests that the actual value is false + + + + + Initializes a new instance of the class. + + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + Test that the actual value is an NaN + + + + + + + Write the constraint description to a specified writer + + + + + + BinaryConstraint is the abstract base of all constraints + that combine two other constraints in some fashion. + + + + + The first constraint being combined + + + + + The second constraint being combined + + + + + Construct a BinaryConstraint from two other constraints + + The first constraint + The second constraint + + + + AndConstraint succeeds only if both members succeed. + + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + + The actual value + True if the constraints both succeeded + + + + Write a description for this contraint to a MessageWriter + + The MessageWriter to receive the description + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second constraint + + + + Apply the member constraints to an actual value, succeeding + succeeding as soon as one of them succeeds. + + The actual value + True if either constraint succeeded + + + + Write a description for this contraint to a MessageWriter + + The MessageWriter to receive the description + + + + CollectionConstraint is the abstract base class for + constraints that operate on collections. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Determines whether the specified enumerable is empty. + + The enumerable. + + true if the specified enumerable is empty; otherwise, false. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Protected method to be implemented by derived classes + + + + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Compares two collection members for equality + + + + + Return a new CollectionTally for use in making tests + + The collection to be included in the tally + + + + Flag the constraint to ignore case and return self. + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + Check that the collection is empty + + + + + + + Write the constraint description to a MessageWriter + + + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + Check that all items are unique. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + Test whether the expected item is contained in the collection + + + + + + + Write a descripton of the constraint to a MessageWriter + + + + + + CollectionEquivalentCOnstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + Test whether two collections are equivalent + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionSubsetConstraint is used to determine whether + one collection is a subset of another + + + + + Construct a CollectionSubsetConstraint + + The collection that the actual value is expected to be a subset of + + + + Test whether the actual collection is a subset of + the expected collection provided. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + Modifies the constraint to use an IComparer and returns self. + + + + + Modifies the constraint to use an IComparer<T> and returns self. + + + + + Modifies the constraint to use a Comparison<T> and returns self. + + + + + Modifies the constraint to test ordering by the value of + a specified property and returns self. + + + + + Test whether the collection is ordered + + + + + + + Write a description of the constraint to a MessageWriter + + + + + + Returns the string representation of the constraint. + + + + + + If used performs a reverse comparison + + + + + CollectionTally counts (tallies) the number of + occurences of each object in one or more enumerations. + + + + + Construct a CollectionTally object from a comparer and a collection + + + + + Try to remove an object from the tally + + The object to remove + True if successful, false if the object was not found + + + + Try to remove a set of objects from the tally + + The objects to remove + True if successful, false if any object was not found + + + + The number of objects remaining in the tally + + + + + ComparisonAdapter class centralizes all comparisons of + values in NUnit, adapting to the use of any provided + IComparer, IComparer<T> or Comparison<T> + + + + + Returns a ComparisonAdapter that wraps an IComparer + + + + + Returns a ComparisonAdapter that wraps an IComparer<T> + + + + + Returns a ComparisonAdapter that wraps a Comparison<T> + + + + + Compares two objects + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Construct a ComparisonAdapter for an IComparer + + + + + Compares two objects + + + + + + + + Construct a default ComparisonAdapter + + + + + ComparisonAdapter<T> extends ComparisonAdapter and + allows use of an IComparer<T> or Comparison<T> + to actually perform the comparison. + + + + + Construct a ComparisonAdapter for an IComparer<T> + + + + + Compare a Type T to an object + + + + + Construct a ComparisonAdapter for a Comparison<T> + + + + + Compare a Type T to an object + + + + + Abstract base class for constraints that compare values to + determine if one is greater than, equal to or less than + the other. + + + + + The value against which a comparison is to be made + + + + + If true, less than returns success + + + + + if true, equal returns success + + + + + if true, greater than returns success + + + + + The predicate used as a part of the description + + + + + ComparisonAdapter to be used in making the comparison + + + + + Initializes a new instance of the class. + + The value against which to make a comparison. + if set to true less succeeds. + if set to true equal succeeds. + if set to true greater succeeds. + String used in describing the constraint. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Modifies the constraint to use an IComparer and returns self + + + + + Modifies the constraint to use an IComparer<T> and returns self + + + + + Modifies the constraint to use a Comparison<T> and returns self + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is greater than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is less than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Tests whether a value is less than or equal to the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + ConstraintBuilder maintains the stacks that are used in + processing a ConstraintExpression. An OperatorStack + is used to hold operators that are waiting for their + operands to be reognized. a ConstraintStack holds + input constraints as well as the results of each + operator applied. + + + + + Initializes a new instance of the class. + + + + + Appends the specified operator to the expression by first + reducing the operator stack and then pushing the new + operator on the stack. + + The operator to push. + + + + Appends the specified constraint to the expresson by pushing + it on the constraint stack. + + The constraint to push. + + + + Sets the top operator right context. + + The right context. + + + + Reduces the operator stack until the topmost item + precedence is greater than or equal to the target precedence. + + The target precedence. + + + + Resolves this instance, returning a Constraint. If the builder + is not currently in a resolvable state, an exception is thrown. + + The resolved constraint + + + + Gets a value indicating whether this instance is resolvable. + + + true if this instance is resolvable; otherwise, false. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The builder. + + + + Pushes the specified operator onto the stack. + + The op. + + + + Pops the topmost operator from the stack. + + + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + The top. + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The builder. + + + + Pushes the specified constraint. As a side effect, + the constraint's builder field is set to the + ConstraintBuilder owning this stack. + + The constraint. + + + + Pops this topmost constrait from the stack. + As a side effect, the constraint's builder + field is set to null. + + + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost constraint without modifying the stack. + + The topmost constraint + + + + ConstraintExpression represents a compound constraint in the + process of being constructed from a series of syntactic elements. + + Individual elements are appended to the expression as they are + reognized. Once an actual Constraint is appended, the expression + returns a resolvable Constraint. + + + + + ConstraintExpressionBase is the abstract base class for the + generated ConstraintExpression class, which represents a + compound constraint in the process of being constructed + from a series of syntactic elements. + + NOTE: ConstraintExpressionBase is aware of some of its + derived classes, which is an apparent violation of + encapsulation. Ideally, these classes would be a + single class, but they must be separated in order to + allow parts to be generated under .NET 1.x and to + provide proper user feedback in syntactically + aware IDEs. + + + + + The ConstraintBuilder holding the elements recognized so far + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a string representation of the expression as it + currently stands. This should only be used for testing, + since it has the side-effect of resolving the expression. + + + + + + Appends an operator to the expression and returns the + resulting expression itself. + + + + + Appends a self-resolving operator to the expression and + returns a new ResolvableConstraintExpression. + + + + + Appends a constraint to the expression and returns that + constraint, which is associated with the current state + of the expression being built. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class passing in a ConstraintBuilder, which may be pre-populated. + + The builder. + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns the constraint provided as an argument - used to allow custom + custom constraints to easily participate in the syntax. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + With is currently a NOP - reserved for future use. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new ContainsConstraint. This constraint + will, in turn, make use of the appropriate second-level + constraint, depending on the type of the actual argument. + This overload is only used if the item sought is a string, + since any other type implies that we are looking for a + collection member. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + The ConstraintOperator class is used internally by a + ConstraintBuilder to represent an operator that + modifies or combines constraints. + + Constraint operators use left and right precedence + values to determine whether the top operator on the + stack should be reduced before pushing a new operator. + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + The syntax element preceding this operator + + + + + The syntax element folowing this operator + + + + + The precedence value used when the operator + is about to be pushed to the stack. + + + + + The precedence value used when the operator + is on the top of the stack. + + + + + PrefixOperator takes a single constraint and modifies + it's action in some way. + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Returns the constraint created by applying this + prefix to another constraint. + + + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + Constructs a CollectionOperator + + + + + Represents a constraint that succeeds if all the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. + + + + + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. + + + + + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Represents a constraint that simply wraps the + constraint provided as an argument, without any + further functionality, but which modifes the + order of evaluation because of its precedence. + + + + + Constructor for the WithOperator + + + + + Returns a constraint that wraps its argument + + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + Operator used to test for the presence of a named Property + on an object and optionally apply further tests to the + value of that property. + + + + + Constructs a PropOperator for a particular named property + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Gets the name of the property to which the operator applies + + + + + Operator that tests for the presence of a particular attribute + on a type and optionally applies further tests to the attribute. + + + + + Construct an AttributeOperator for a particular Type + + The Type of attribute tested + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Operator that tests that an exception is thrown and + optionally applies further tests to the exception. + + + + + Construct a ThrowsOperator + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + Abstract base class for all binary operators + + + + + Reduce produces a constraint from the operator and + any arguments. It takes the arguments from the constraint + stack and pushes the resulting constraint on it. + + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + ContainsConstraint tests a whether a string contains a substring + or a collection contains an object. It postpones the decision of + which test to use until the type of the actual argument is known. + This allows testing whether a string is contained in a collection + or as a substring of another string using the same syntax. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to ignore case and return self. + + + + + Applies a delay to the match so that a match can be evaluated in the future. + + + + + Creates a new DelayedConstraint + + The inner constraint two decorate + The time interval after which the match is performed + If the value of is less than 0 + + + + Creates a new DelayedConstraint + + The inner constraint two decorate + The time interval after which the match is performed + The time interval used for polling + If the value of is less than 0 + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a delegate + + The delegate whose value is to be tested + True for if the base constraint fails, false if it succeeds + + + + Test whether the constraint is satisfied by a given reference. + Overridden to wait for the specified delay period before + calling the base constraint with the dereferenced value. + + A reference to the value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a MessageWriter. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + EmptyConstraint tests a whether a string or collection is empty, + postponing the decision about which test is applied until the + type of the actual argument is known. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + EqualConstraint is able to compare an actual value with the + expected value provided in its constructor. Two objects are + considered equal if both are null, or if both have the same + value. NUnit has special semantics for some object types. + + + + + If true, strings in error messages will be clipped + + + + + NUnitEqualityComparer used to test equality. + + + + + Initializes a new instance of the class. + + The expected value. + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied Comparison object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Flag the constraint to use the supplied IEqualityComparer object. + + The IComparer object to use. + Self. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + The MessageWriter to write to + + + + Write description of this constraint + + The MessageWriter to write to + + + + Display the failure information for two collections that did not match. + + The MessageWriter on which to display + The expected collection. + The actual collection + The depth of this failure in a set of nested collections + + + + Displays a single line showing the types and sizes of the expected + and actual collections or arrays. If both are identical, the value is + only shown once. + + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line + + + + Displays a single line showing the point in the expected and actual + arrays at which the comparison failed. If the arrays have different + structures or dimensions, both values are shown. + + The MessageWriter on which to display + The expected array + The actual array + Index of the failure point in the underlying collections + The indentation level for the message line + + + + Flag the constraint to ignore case and return self. + + + + + Flag the constraint to suppress string clipping + and return self. + + + + + Flag the constraint to compare arrays as collections + and return self. + + + + + Switches the .Within() modifier to interpret its tolerance as + a distance in representable values (see remarks). + + Self. + + Ulp stands for "unit in the last place" and describes the minimum + amount a given value can change. For any integers, an ulp is 1 whole + digit. For floating point values, the accuracy of which is better + for smaller numbers and worse for larger numbers, an ulp depends + on the size of the number. Using ulps for comparison of floating + point results instead of fixed tolerances is safer because it will + automatically compensate for the added inaccuracy of larger numbers. + + + + + Switches the .Within() modifier to interpret its tolerance as + a percentage that the actual values is allowed to deviate from + the expected value. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in days. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in hours. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in minutes. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in seconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in milliseconds. + + Self + + + + Causes the tolerance to be interpreted as a TimeSpan in clock ticks. + + Self + + + + EqualityAdapter class handles all equality comparisons + that use an IEqualityComparer, IEqualityComparer<T> + or a ComparisonAdapter. + + + + + Compares two objects, returning true if they are equal + + + + + Returns an EqualityAdapter that wraps an IComparer. + + + + + Returns an EqualityAdapter that wraps an IEqualityComparer. + + + + + Returns an EqualityAdapter that wraps an IEqualityComparer<T>. + + + + + Returns an EqualityAdapter that wraps an IComparer<T>. + + + + + Returns an EqualityAdapter that wraps a Comparison<T>. + + + + Helper routines for working with floating point numbers + + + The floating point comparison code is based on this excellent article: + http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm + + + "ULP" means Unit in the Last Place and in the context of this library refers to + the distance between two adjacent floating point numbers. IEEE floating point + numbers can only represent a finite subset of natural numbers, with greater + accuracy for smaller numbers and lower accuracy for very large numbers. + + + If a comparison is allowed "2 ulps" of deviation, that means the values are + allowed to deviate by up to 2 adjacent floating point values, which might be + as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. + + + + + Compares two floating point values for equality + First floating point value to be compared + Second floating point value t be compared + + Maximum number of representable floating point values that are allowed to + be between the left and the right floating point values + + True if both numbers are equal or close to being equal + + + Floating point values can only represent a finite subset of natural numbers. + For example, the values 2.00000000 and 2.00000024 can be stored in a float, + but nothing inbetween them. + + + This comparison will count how many possible floating point values are between + the left and the right number. If the number of possible values between both + numbers is less than or equal to maxUlps, then the numbers are considered as + being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + Compares two double precision floating point values for equality + First double precision floating point value to be compared + Second double precision floating point value t be compared + + Maximum number of representable double precision floating point values that are + allowed to be between the left and the right double precision floating point values + + True if both numbers are equal or close to being equal + + + Double precision floating point values can only represent a limited series of + natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004 + can be stored in a double, but nothing inbetween them. + + + This comparison will count how many possible double precision floating point + values are between the left and the right number. If the number of possible + values between both numbers is less than or equal to maxUlps, then the numbers + are considered as being equal. + + + Implementation partially follows the code outlined here: + http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ + + + + + + Reinterprets the memory contents of a floating point value as an integer value + + + Floating point value whose memory contents to reinterpret + + + The memory contents of the floating point value interpreted as an integer + + + + + Reinterprets the memory contents of a double precision floating point + value as an integer value + + + Double precision floating point value whose memory contents to reinterpret + + + The memory contents of the double precision floating point value + interpreted as an integer + + + + + Reinterprets the memory contents of an integer as a floating point value + + Integer value whose memory contents to reinterpret + + The memory contents of the integer value interpreted as a floating point value + + + + + Reinterprets the memory contents of an integer value as a double precision + floating point value + + Integer whose memory contents to reinterpret + + The memory contents of the integer interpreted as a double precision + floating point value + + + + Union of a floating point variable and an integer + + + The union's value as a floating point variable + + + The union's value as an integer + + + The union's value as an unsigned integer + + + Union of a double precision floating point variable and a long + + + The union's value as a double precision floating point variable + + + The union's value as a long + + + The union's value as an unsigned long + + + + MessageWriter is the abstract base for classes that write + constraint descriptions and messages in some form. The + class has separate methods for writing various components + of a message, allowing implementations to tailor the + presentation as needed. + + + + + Construct a MessageWriter given a culture + + + + + Method to write single line message with optional args, usually + written to precede the general failure message. + + The message to be written + Any arguments used in formatting the message + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The constraint that failed + + + + Display Expected and Actual lines for given values. This + method may be called by constraints that need more control over + the display of actual and expected values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given values, including + a tolerance value on the Expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in locating the point where the strings differ + If true, the strings should be clipped to fit the line + + + + Writes the text for a connector. + + The connector. + + + + Writes the text for a predicate. + + The predicate. + + + + Writes the text for an expected value. + + The expected value. + + + + Writes the text for a modifier + + The modifier. + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Abstract method to get the max line length + + + + + Static methods used in creating messages + + + + + Static string used when strings are clipped + + + + + Returns the representation of a type as used in NUnitLite. + This is the same as Type.ToString() except for arrays, + which are displayed with their declared sizes. + + + + + + + Converts any control characters in a string + to their escaped representation. + + The string to be converted + The converted string + + + + Return the a string representation for a set of indices into an array + + Array of indices for which a string is needed + + + + Get an array of indices representing the point in a collection or + array corresponding to a single int index into the collection. + + The collection to which the indices apply + Index in the collection + Array of indices + + + + Clip a string to a given length, starting at a particular offset, returning the clipped + string with ellipses representing the removed parts + + The string to be clipped + The maximum permitted length of the result string + The point at which to start clipping + The clipped string + + + + Clip the expected and actual strings in a coordinated fashion, + so that they may be displayed together. + + + + + + + + + Shows the position two strings start to differ. Comparison + starts at the start index. + + The expected string + The actual string + The index in the strings at which comparison should start + Boolean indicating whether case should be ignored + -1 if no mismatch found, or the index where mismatch found + + + + The Numerics class contains common operations on numeric values. + + + + + Checks the type of the object, returning true if + the object is a numeric type. + + The object to check + true if the object is a numeric type + + + + Checks the type of the object, returning true if + the object is a floating point numeric type. + + The object to check + true if the object is a floating point numeric type + + + + Checks the type of the object, returning true if + the object is a fixed point numeric type. + + The object to check + true if the object is a fixed point numeric type + + + + Test two numeric values for equality, performing the usual numeric + conversions and using a provided or default tolerance. If the tolerance + provided is Empty, this method may set it to a default tolerance. + + The expected value + The actual value + A reference to the tolerance in effect + True if the values are equal + + + + Compare two numeric values, performing the usual numeric conversions. + + The expected value + The actual value + The relationship of the values to each other + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Compares two objects + + + + + + + + Returns the default NUnitComparer. + + + + + NUnitEqualityComparer encapsulates NUnit's handling of + equality tests between objects. + + + + + If true, all string comparisons will ignore case + + + + + If true, arrays will be treated as collections, allowing + those of different dimensions to be compared + + + + + If non-zero, equality comparisons within the specified + tolerance will succeed. + + + + + Comparison object used in comparisons for some constraints. + + + + + Compares two objects for equality. + + + + + Helper method to compare two arrays + + + + + Method to compare two DirectoryInfo objects + + first directory to compare + second directory to compare + true if equivalent, false if not + + + + Returns the default NUnitEqualityComparer + + + + + Gets and sets a flag indicating whether case should + be ignored in determining equality. + + + + + Gets and sets a flag indicating that arrays should be + compared as collections, without regard to their shape. + + + + + Gets and sets an external comparer to be used to + test for equality. It is applied to members of + collections, in place of NUnit's own logic. + + + + + Gets and sets a tolerance used to compare objects of + certin types. + + + + + Gets the list of failure points for the last Match performed. + + + + + PathConstraint serves as the abstract base of constraints + that operate on paths and provides several helper methods. + + + + + The expected path used in the constraint + + + + + The actual path being tested + + + + + Flag indicating whether a caseInsensitive comparison should be made + + + + + Construct a PathConstraint for a give expected path + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Returns true if the expected path and actual path match + + + + + Returns the string representation of this constraint + + + + + Canonicalize the provided path + + + The path in standardized form + + + + Test whether two paths are the same + + The first path + The second path + Indicates whether case should be ignored + + + + + Test whether one path is under another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + Indicates whether case should be ignored + + + + + Test whether one path is the same as or under another path + + The first path - supposed to be the parent path + The second path - supposed to be the child path + + + + + Modifies the current instance to be case-insensitve + and returns it. + + + + + Modifies the current instance to be case-sensitve + and returns it. + + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + Initializes a new instance of the class. + + The expected path + + + + Test whether the constraint is satisfied by a given value + + The expected path + The actual path + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Writes the description to a MessageWriter + + + + + NotConstraint negates the effect of some other constraint + + + + + Initializes a new instance of the class. + + The base constraint to be negated. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for if the base constraint fails, false if it succeeds + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a MessageWriter. + + The writer on which the actual value is displayed + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + SomeItemsConstraint applies another constraint to each + item in a collection, succeeding if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + NoItemConstraint applies another constraint to each + item in a collection, failing if any of them succeeds. + + + + + Construct a SomeItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + Write a description of this constraint to a MessageWriter + + + + + + PropertyExistsConstraint tests that a named property + exists on the object provided through Match. + + Originally, PropertyConstraint provided this feature + in addition to making optional tests on the vaue + of the property. The two constraints are now separate. + + + + + Initializes a new instance of the class. + + The name of the property. + + + + Test whether the property exists for a given object + + The object to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + + PropertyConstraint extracts a named property and uses + its value as the actual value for a chained constraint. + + + + + Initializes a new instance of the class. + + The name. + The constraint to apply to the property. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of the constraint. + + + + + + RangeConstraint tests whethe two values are within a + specified range. + + + + + Initializes a new instance of the class. + + From. + To. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Modifies the constraint to use an IComparer and returns self. + + + + + Modifies the constraint to use an IComparer<T> and returns self. + + + + + Modifies the constraint to use a Comparison<T> and returns self. + + + + + ResolvableConstraintExpression is used to represent a compound + constraint being constructed at a point where the last operator + may either terminate the expression or may have additional + qualifying constraints added to it. + + It is used, for example, for a Property element or for + an Exception element, either of which may be optionally + followed by constraints that apply to the property or + exception. + + + + + Create a new instance of ResolvableConstraintExpression + + + + + Create a new instance of ResolvableConstraintExpression, + passing in a pre-populated ConstraintBuilder. + + + + + Resolve the current expression to a Constraint + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + ReusableConstraint wraps a resolved constraint so that it + may be saved and reused as needed. + + + + + Construct a ReusableConstraint + + The constraint or expression to be reused + + + + Conversion operator from a normal constraint to a ReusableConstraint. + + The original constraint to be wrapped as a ReusableConstraint + + + + + Returns the string representation of the constraint. + + A string representing the constraint + + + + Resolves the ReusableConstraint by returning the constraint + that it originally wrapped. + + A resolved constraint + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation + + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of this constraint + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + Modify the constraint to ignore case in matching. + + + + + EmptyStringConstraint tests whether a string is empty. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + NullEmptyStringConstraint tests whether a string is either null or empty. + + + + + Constructs a new NullOrEmptyStringConstraint + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + Initializes a new instance of the class. + + The expected. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + StartsWithConstraint can test whether a string starts + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + EndsWithConstraint can test whether a string ends + with an expected substring. + + + + + Initializes a new instance of the class. + + The expected string + + + + Test whether the constraint is matched by the actual value. + This is a template method, which calls the IsMatch method + of the derived class. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + RegexConstraint can test whether a string matches + the pattern provided. + + + + + Initializes a new instance of the class. + + The pattern. + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True for success, false for failure + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + ThrowsConstraint is used to test the exception thrown by + a delegate by applying a constraint to it. + + + + + Initializes a new instance of the class, + using a constraint to be applied to the exception. + + A constraint to apply to the caught exception. + + + + Executes the code of the delegate and captures any exception. + If a non-null base constraint was provided, it applies that + constraint to the exception. + + A delegate representing the code to be tested + True if an exception is thrown and the constraint succeeds, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Returns the string representation of this constraint + + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + Test whether the constraint is satisfied by a given value + + The value to be tested + True if no exception is thrown, otherwise false + + + + Converts an ActualValueDelegate to a TestDelegate + before calling the primary overload. + + + + + + + Write the constraint description to a MessageWriter + + The writer on which the description is displayed + + + + Write the actual value for a failing constraint test to a + MessageWriter. The default implementation simply writes + the raw value of actual, leaving it to the writer to + perform any formatting. + + The writer on which the actual value is displayed + + + + Modes in which the tolerance value for a comparison can + be interpreted. + + + + + The tolerance was created with a value, without specifying + how the value would be used. This is used to prevent setting + the mode more than once and is generally changed to Linear + upon execution of the test. + + + + + The tolerance is used as a numeric range within which + two compared values are considered to be equal. + + + + + Interprets the tolerance as the percentage by which + the two compared values my deviate from each other. + + + + + Compares two values based in their distance in + representable numbers. + + + + + The Tolerance class generalizes the notion of a tolerance + within which an equality test succeeds. Normally, it is + used with numeric types, but it can be used with any + type that supports taking a difference between two + objects and comparing that difference to a value. + + + + + Constructs a linear tolerance of a specdified amount + + + + + Constructs a tolerance given an amount and ToleranceMode + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + Returns an empty Tolerance object, equivalent to + specifying an exact match. + + + + + Gets the ToleranceMode for the current Tolerance + + + + + Gets the value of the current Tolerance instance. + + + + + Returns a new tolerance, using the current amount as a percentage. + + + + + Returns a new tolerance, using the current amount in Ulps. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of days. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of hours. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of minutes. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of seconds. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of milliseconds. + + + + + Returns a new tolerance with a TimeSpan as the amount, using + the current amount as a number of clock ticks. + + + + + Returns true if the current tolerance is empty. + + + + + TypeConstraint is the abstract base for constraints + that take a Type as their expected value. + + + + + The expected Type used by the constraint + + + + + Construct a TypeConstraint for a given Type + + + + + + Write the actual value for a failing constraint test to a + MessageWriter. TypeConstraints override this method to write + the name of the type. + + The writer on which the actual value is displayed + + + + ExactTypeConstraint is used to test that an object + is of the exact type provided in the constructor + + + + + Construct an ExactTypeConstraint for a given Type + + The expected Type. + + + + Test that an object is of the exact type specified + + The actual value. + True if the tested object is of the exact type provided, otherwise false. + + + + Write the description of this constraint to a MessageWriter + + The MessageWriter to use + + + + InstanceOfTypeConstraint is used to test that an object + is of the same type provided or derived from it. + + + + + Construct an InstanceOfTypeConstraint for the type provided + + The expected Type + + + + Test whether an object is of the specified type or a derived type + + The object to be tested + True if the object is of the provided type or derives from it, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + AssignableFromConstraint is used to test that an object + can be assigned from a given Type. + + + + + Construct an AssignableFromConstraint for the type provided + + + + + + Test whether an object can be assigned from the specified type + + The object to be tested + True if the object can be assigned a value of the expected Type, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + Construct an AssignableToConstraint for the type provided + + + + + + Test whether an object can be assigned to the specified type + + The object to be tested + True if the object can be assigned a value of the expected Type, otherwise false. + + + + Write a description of this constraint to a MessageWriter + + The MessageWriter to use + + + + Thrown when an assertion failed. + + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when a test executes inconclusively. + + + + + The error message that explains + the reason for the exception + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + The Assert class contains a collection of static methods that + implement the most common assertions used in NUnit. + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Helper for Assert.AreEqual(double expected, double actual, ...) + allowing code generation to work consistently. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + The message to initialize the with. + + + + Throws a with the message and arguments + that are passed in. This allows a test to be cut short, with a result + of success returned to NUnit. + + + + + Throws an with the message and arguments + that are passed in. This is used by the other Assert functions. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This is used by the other Assert functions. + + The message to initialize the with. + + + + Throws an . + This is used by the other Assert functions. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as ignored. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as ignored. + + + + + Throws an with the message and arguments + that are passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + Arguments to be used in formatting the message + + + + Throws an with the message that is + passed in. This causes the test to be reported as inconclusive. + + The message to initialize the with. + + + + Throws an . + This causes the test to be reported as Inconclusive. + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + A constraint to be satisfied by the exception + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + The exception Type expected + A TestSnippet delegate + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate throws a particular exception when called. + + Type of the expected exception + A TestSnippet delegate + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception when called + and returns it. + + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + The message that will be displayed on failure + + + + Verifies that a delegate throws an exception of a certain Type + or one derived from it when called and returns it. + + The expected Exception Type + A TestDelegate + + + + Verifies that a delegate does not throw an exception + + A TestSnippet delegate + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Verifies that a delegate does not throw an exception. + + A TestSnippet delegate + The message that will be displayed on failure + + + + Verifies that a delegate does not throw an exception. + + A TestSnippet delegate + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + The message to display in case of failure + + + + Asserts that a condition is false. If the condition is true the method throws + an . + + The evaluated condition + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is not equal to null + If the object is null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + The message to display in case of failure + + + + Verifies that the object that is passed in is equal to null + If the object is not null then an + is thrown. + + The object that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + The message to display in case of failure + + + + Verifies that the double that is passed in is an NaN value. + If the object is not NaN then an + is thrown. + + The value that is to be tested + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is empty - that is equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is not empty - that is not equal to string.Empty + + The string to be tested + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + The message to display in case of failure + + + + Assert that an array, list or other collection is not empty + + An array, list or other collection implementing ICollection + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is either null or equal to string.Empty + + The string to be tested + + + + Assert that a string is not null or empty + + The string to be tested + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Assert that a string is not null or empty + + The string to be tested + The message to display in case of failure + + + + Assert that a string is not null or empty + + The string to be tested + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + The message to display in case of failure + + + + Asserts that an object may not be assigned a value of a given Type. + + The expected Type. + The object under examination + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + The message to display in case of failure + + + + Asserts that an object is not an instance of a given type. + + The expected Type + The object being examined + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are equal. If they are not, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + The message to display in case of failure + + + + Verifies that two doubles are equal considering a delta. If the + expected value is infinity then the delta value is ignored. If + they are not equal then an is + thrown. + + The expected value + The actual value + The maximum acceptable difference between the + the expected and the actual + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + + + + Verifies that two objects are equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are not equal an is thrown. + + The value that is expected + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + The message to display in case of failure + + + + Verifies that two values are not equal. If they are equal, then an + is thrown. + + The expected value + The actual value + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + The message to display in case of failure + + + + Verifies that two objects are not equal. Two objects are considered + equal if both are null, or if both have the same value. NUnit + has special semantics for some object types. + If they are equal an is thrown. + + The value that is expected + The actual value + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + + + + Asserts that two objects refer to the same object. If they + are not the same an is thrown. + + The expected object + The actual object + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + The message to display in case of failure + + + + Asserts that two objects do not refer to the same object. If they + are the same an is thrown. + + The expected object + The actual object + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than the second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + The message to display in case of failure + + + + Verifies that the first value is greater than or equal tothe second + value. If it is not, then an + is thrown. + + The first value, expected to be greater + The second value, expected to be less + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + The message to display in case of failure + + + + Verifies that the first value is less than or equal to the second + value. If it is not, then an + is thrown. + + The first value, expected to be less + The second value, expected to be greater + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + Array of objects to be used in formatting the message + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + The message to display in case of failure + + + + Asserts that an object is contained in a list. + + The expected object + The list to be examined + + + + Gets the number of assertions executed so far and + resets the counter to zero. + + + + + AssertionHelper is an optional base class for user tests, + allowing the use of shorter names for constraints and + asserts and avoiding conflict with the definition of + , from which it inherits much of its + behavior, in certain mock object frameworks. + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. Works + identically to + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an assertion exception on failure. + + A Constraint to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to + . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + + The evaluated condition + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + Provides static methods to express the assumptions + that must be met for a test to give a meaningful + result. If an assumption is not met, the test + should produce an inconclusive result. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + An ActualValueDelegate returning the value to be tested + The message that will be displayed on failure + + + + Apply a constraint to an actual value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + An ActualValueDelegate returning the value to be tested + A Constraint expression to be applied + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + + + + Apply a constraint to a referenced value, succeeding if the constraint + is satisfied and throwing an InconclusiveException on failure. + + A Constraint expression to be applied + The actual value to test + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + Arguments to be used in formatting the message + + + + Asserts that a condition is true. If the condition is false the method throws + an . + + The evaluated condition + The message to display if the condition is false + + + + Asserts that a condition is true. If the condition is false the + method throws an . + + The evaluated condition + + + + Asserts that the code represented by a delegate throws an exception + that satisfies the constraint provided. + + A TestDelegate to be executed + A ThrowsConstraint used in the test + + + + A set of Assert methods operationg on one or more collections + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + + + + Asserts that all items contained in collection are of the type specified by expectedType. + + IEnumerable containing objects to be considered + System.Type that all objects in collection must be instances of + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + The message that will be displayed on failure + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are exactly equal. The collections must have the same count, + and contain the exact same objects in the same order. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + + + + Asserts that expected and actual are not exactly equal. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not exactly equal. + If comparer is not null then it will be used to compare the objects. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The IComparer to use in comparing objects from each IEnumerable + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + + + + Asserts that expected and actual are not equivalent. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + + + + Asserts that collection contains actual as an item. + + IEnumerable of objects to be considered + Object to be found within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + + + + Asserts that collection does not contain actual as an item. + + IEnumerable of objects to be considered + Object that cannot exist within collection + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + + + + Asserts that superset is not a subject of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + + + + Asserts that superset is a subset of subset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is empty + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array,list or other collection is empty + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + The message to be displayed on failure + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + Arguments to be used in formatting the message + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + The message to be displayed on failure + + + + Assert that an array, list or other collection is ordered + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + + + + Static helper class used in the constraint-based syntax + + + + + Creates a new SubstringConstraint + + The value of the substring + A SubstringConstraint + + + + Creates a new CollectionContainsConstraint. + + The item that should be found. + A new CollectionContainsConstraint + + + + Summary description for DirectoryAssert + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are not equal + + + + Verifies that two directories are equal. Two directories are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + The message to display if directories are not equal + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory containing the value that is expected + A directory containing the actual value + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are equal + Arguments to be used in formatting the message + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + The message to display if directories are equal + + + + Asserts that two directories are not equal. If they are equal + an is thrown. + + A directory path string containing the value that is expected + A directory path string containing the actual value + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is empty. If it is not empty + an is thrown. + + A directory to search + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + Arguments to be used in formatting the message + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + The message to display if directories are not equal + + + + Asserts that the directory is not empty. If it is empty + an is thrown. + + A directory to search + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path contains actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + Arguments to be used in formatting the message + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + The message to display if directory is not within the path + + + + Asserts that path does not contain actual as a subdirectory or + an is thrown. + + A directory to search + sub-directory asserted to exist under directory + + + + Summary description for FileAssert. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + We don't actually want any instances of this object, but some people + like to inherit from it to add other static methods. Hence, the + protected constructor disallows any instances of this object. + + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + The message to display if objects are not equal + + + + Verifies that two Streams are equal. Two Streams are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The expected Stream + The actual Stream + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if objects are not equal + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if objects are not equal + + + + Verifies that two files are equal. Two files are considered + equal if both are null, or if both have the same value byte for byte. + If they are not equal an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the two Stream are the same. + Arguments to be used in formatting the message + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + The message to be displayed when the Streams are the same. + + + + Asserts that two Streams are not equal. If they are equal + an is thrown. + + The expected Stream + The actual Stream + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + The message to display if objects are not equal + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + A file containing the value that is expected + A file containing the actual value + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if Streams are not equal + Arguments to be used in formatting the message + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + The message to display if objects are not equal + + + + Asserts that two files are not equal. If they are equal + an is thrown. + + The path to a file containing the value that is expected + The path to a file containing the actual value + + + + GlobalSettings is a place for setting default values used + by the framework in performing asserts. + + + + + Default tolerance for floating point equality + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new PropertyConstraintExpression, which will either + test for the existence of the named property on the object + being tested or apply any following constraint to that property. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new AttributeConstraint checking for the + presence of a particular attribute on an object. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if at least one of them succeeds. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them fail. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Length property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Count property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the Message property of the object being tested. + + + + + Returns a new ConstraintExpression, which will apply the following + constraint to the InnerException property of the object being tested. + + + + + Interface implemented by a user fixture in order to + validate any expected exceptions. It is only called + for test methods marked with the ExpectedException + attribute. + + + + + Method to handle an expected exception + + The exception to be handled + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a constraint that tests two items for equality + + + + + Returns a constraint that tests that two references are the same object + + + + + Returns a constraint that tests whether the + actual value is greater than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is greater than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the + actual value is less than or equal to the suppled argument + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual + value is of the exact type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is of the type supplied as an argument or a derived type. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable from the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a collection containing the same elements as the + collection supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is a subset of the collection supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that tests whether the path provided + is the same as an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the path provided + is the same path or under an expected path after canonicalization. + + + + + Returns a constraint that tests whether the actual value falls + within a specified range. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + Returns a constraint that tests for null + + + + + Returns a constraint that tests for True + + + + + Returns a constraint that tests for False + + + + + Returns a constraint that tests for NaN + + + + + Returns a constraint that tests for empty + + + + + Returns a constraint that tests whether a collection + contains all unique items. + + + + + Returns a constraint that tests whether an object graph is serializable in binary format. + + + + + Returns a constraint that tests whether an object graph is serializable in xml format. + + + + + Returns a constraint that tests whether a collection is ordered + + + + + The Iz class is a synonym for Is intended for use in VB, + which regards Is as a keyword. + + + + + The List class is a helper class with properties and methods + that supply a number of constraints used with lists and collections. + + + + + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. + + + + + + + ListMapper is used to transform a collection used as an actual argument + producing another collection to be used in the assertion. + + + + + Construct a ListMapper based on a collection + + The collection to be transformed + + + + Produces a collection containing all the values of a property + + The collection of property values + + + + + Randomizer returns a set of random values in a repeatable + way, to allow re-running of tests if necessary. + + + + + Get a randomizer for a particular member, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Get a randomizer for a particular parameter, returning + one that has already been created if it exists. + This ensures that the same values are generated + each time the tests are reloaded. + + + + + Construct a randomizer using a random seed + + + + + Construct a randomizer using a specified seed + + + + + Return an array of random doubles between 0.0 and 1.0. + + + + + + + Return an array of random doubles with values in a specified range. + + + + + Return an array of random ints with values in a specified range. + + + + + Get a random seed for use in creating a randomizer. + + + + + The SpecialValue enum is used to represent TestCase arguments + that cannot be used as arguments to an Attribute. + + + + + Null represents a null value, which cannot be used as an + argument to an attriute under .NET 1.x + + + + + Basic Asserts on strings. + + + + + The Equals method throws an AssertionException. This is done + to make sure there is no mistake by calling this function. + + + + + + + override the default ReferenceEquals to throw an AssertionException. This + implementation makes sure there is no mistake in calling this function + as part of Assert. + + + + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string is not found within another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + The message to display in case of failure + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are Notequal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + The message to display in case of failure + + + + Asserts that a string matches an expected regular expression pattern. + + The regex pattern to be matched + The actual string + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + The message to display in case of failure + + + + Asserts that a string does not match an expected regular expression pattern. + + The regex pattern to be used + The actual string + + + + The TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It provides a number of instance modifiers + for use in initializing the test case. + + Note: Instance modifiers are getters that return + the same instance after modifying it's state. + + + + + The argument list to be provided to the test + + + + + The expected result to be returned + + + + + The expected exception Type + + + + + The FullName of the expected exception + + + + + The name to be used for the test + + + + + The description of the test + + + + + A dictionary of properties, used to add information + to tests without requiring the class to change. + + + + + If true, indicates that the test case is to be ignored + + + + + The reason for ignoring a test case + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Sets the expected result for the test + + The expected result + A modified TestCaseData + + + + Sets the expected exception type for the test + + Type of the expected exception. + The modified TestCaseData instance + + + + Sets the expected exception type for the test + + FullName of the expected exception. + The modified TestCaseData instance + + + + Sets the name of the test case + + The modified TestCaseData instance + + + + Sets the description for the test case + being constructed. + + The description. + The modified TestCaseData instance. + + + + Applies a category to the test + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Ignores this TestCase. + + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + Gets the argument list to be provided to the test + + + + + Gets the expected result + + + + + Gets the expected exception Type + + + + + Gets the FullName of the expected exception + + + + + Gets the name to be used for the test + + + + + Gets the description of the test + + + + + Gets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets the ignore reason. + + The ignore reason. + + + + Gets a list of categories associated with this test. + + + + + Gets the property dictionary for this test + + + + + Provide the context information of the current test + + + + + Constructs a TestContext using the provided context dictionary + + A context dictionary + + + + Get the current test context. This is created + as needed. The user may save the context for + use within a test, but it should not be used + outside the test for which it is created. + + + + + Gets a TestAdapter representing the currently executing test in this context. + + + + + Gets a ResultAdapter representing the current result for the test + executing in this context. + + + + + Gets the current directory for this TestContext + + + + + TestAdapter adapts a Test for consumption by + the user test code. + + + + + Constructs a TestAdapter for this context + + The context dictionary + + + + The name of the test. + + + + + The FullName of the test + + + + + The properties of the test. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a context + + The context holding the result + + + + The TestState of current test. This maps to the ResultState + used in nunit.core and is subject to change in the future. + + + + + The TestStatus of current test. This enum will be used + in future versions of NUnit and so is to be preferred + to the TestState value. + + + + + The ResultState enum indicates the result of running a test + + + + + The result is inconclusive + + + + + The test was not runnable. + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test succeeded + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + Helper class with static methods used to supply constraints + that operate on strings. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value contains the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value starts with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that fails if the actual + value ends with the substring supplied as an argument. + + + + + Returns a constraint that succeeds if the actual + value matches the Regex pattern supplied as an argument. + + + + + Returns a constraint that fails if the actual + value matches the pattern supplied as an argument. + + + + + Returns a ConstraintExpression, which will apply + the following constraint to all members of a collection, + succeeding if all of them succeed. + + + + + TextMessageWriter writes constraint descriptions and messages + in displayable form as a text stream. It tailors the display + of individual message components to form the standard message + format of NUnit assertion failure messages. + + + + + Prefix used for the expected value line of a message + + + + + Prefix used for the actual value line of a message + + + + + Length of a message prefix + + + + + Construct a TextMessageWriter + + + + + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. + + + + + + + Method to write single line message with optional args, usually + written to precede the general failure message, at a givel + indentation level. + + The indentation level of the message + The message to be written + Any arguments used in formatting the message + + + + Display Expected and Actual lines for a constraint. This + is called by MessageWriter's default implementation of + WriteMessageTo and provides the generic two-line display. + + The constraint that failed + + + + Display Expected and Actual lines for given values. This + method may be called by constraints that need more control over + the display of actual and expected values than is provided + by the default implementation. + + The expected value + The actual value causing the failure + + + + Display Expected and Actual lines for given values, including + a tolerance value on the expected line. + + The expected value + The actual value causing the failure + The tolerance within which the test was made + + + + Display the expected and actual string values on separate lines. + If the mismatch parameter is >=0, an additional line is displayed + line containing a caret that points to the mismatch point. + + The expected string value + The actual string value + The point at which the strings don't match or -1 + If true, case is ignored in string comparisons + If true, clip the strings to fit the max line length + + + + Writes the text for a connector. + + The connector. + + + + Writes the text for a predicate. + + The predicate. + + + + Write the text for a modifier. + + The modifier. + + + + Writes the text for an expected value. + + The expected value. + + + + Writes the text for an actual value. + + The actual value. + + + + Writes the text for a generalized value. + + The value. + + + + Writes the text for a collection value, + starting at a particular point, to a max length + + The collection containing elements to write. + The starting point of the elements to write + The maximum number of elements to write + + + + Write the generic 'Expected' line for a constraint + + The constraint that failed + + + + Write the generic 'Expected' line for a given value + + The expected value + + + + Write the generic 'Expected' line for a given value + and tolerance. + + The expected value + The tolerance within which the test was made + + + + Write the generic 'Actual' line for a constraint + + The constraint for which the actual value is to be written + + + + Write the generic 'Actual' line for a given value + + The actual value causing a failure + + + + Gets or sets the maximum line length for this writer + + + + + Helper class with properties and methods that supply + constraints that operate on exceptions. + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the exact type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying the type of exception expected + + + + + Creates a constraint specifying an expected exception + + + + + Creates a constraint specifying an exception with a given InnerException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying an expected TargetInvocationException + + + + + Creates a constraint specifying that no exception is thrown + + + + diff --git a/Tools/NUnit/framework/nunit.mocks.dll b/Tools/NUnit/framework/nunit.mocks.dll new file mode 100644 index 0000000000000000000000000000000000000000..6ee2c1cc20dba59e4fbe2948a130b2593145d790 GIT binary patch literal 20480 zcmeHNdvqMtdH?S0?CfgwFj@&2VaXn0VJa43W0wfjDuY^>#;KWVbODS zkEnIe)%6a=Tyxm52c2lb?2jgscFOFtOlKr%#*${+Wj$uX9MTYSNm)Bmz`r~T0K7~*=w+Kpv?b!W zPCrxFw-vZJmL^Sa>G4I-eYX{#OyFK18Q-5ys zx!;$Z|M-+5zNdgS5VvCa=acX-3h=_h9YY4*u~|FKiiq~sk~5tWm+6Q4EoP$L=h zF4i27hU?3S40t~8F3m+Zvh;K_K^{_>Mh;*A+x7V>onkoUt1pL9H_Tuj#O(_9Vct?G&@27* zXNm^KD)kI@RaS-WV#YE5=NRNx{2@A>YMZGT##Kd=L7xX5MUnF- z&ouJj*_ci~w;pn#w14T8Q<+{r8{}fG9z|sM0&X2{B}P#9m+9^t^lcLWnINjb+?
KUoj!N9`SHUBQuIQX7VYvB{P<>cER({?gve@rG=uPSa_R26Eh^QguF zpK-uOd?EWR0C>#;VPpEHkb$8mbWnahUHn9>I&Fqtm_uH(SuCpB2hUVV<7#bxOu8Yc zSb%9gkd>Kc1dgIE73Vc{u(8+(fGcJXQegU~;()=nFzrtpnARYca&FOLIdPEq3dTW} z@~uqYg_X|1@?0N=Pl%A`nyD~a61?CmAf^fXV~E6wp{}RzV<$?BsDtF;H%0C#fqw^ZW@xp5ird#cPXY(&wZmdmrpDomF`S7cv$U zrw?AyFRb(i4p(@u{36^z^r;oX^1!~%epJ~=YX}>;jp8*jdznV4G0s(1ORwl?!~G-Rzk)NfSH|r=7Dhwf)yC-u6;u&@tQHZU#ON-;JpHWCh!%3mHLN1gBA5Ff{%;AqTj0F{9~Af_flmnhxxi-x z9u@eKz+(d65csa>|AW9#;ATmmmpiV2yOGN?=`6qu7D;28@GeYa_zeuR+ycyxUWs7s zz$)SC43X>>$so-XY*QMWC6ZfYT#)Jn8y2jX<_Iv}YdmUHdmQjf+B1MG zIg$HQ?P@M7v?KnPF=t+e7<-M%a#-nGcsfIIOFL5fJF3pZKBn3n=J%_!u=k`Tfi)mg z8LR{tmXx$3{%RG;{u+10zep{WHNeax{*~$y*gtAAc2n>nwHdSUj)$G`_bLSJqb$|{ z%&cR{w~E-$aymbav7hC%K8>-T<#d&YDfTl=gITNrbDBzH?C0t9%{0b-R?+=wjQy;p z!)c8Dtf8ZV9Z{UYnKaC0MMo585RbmI8M}d=RRd&FT(Fyhq+O3Xc+kTT(QaVRX0b05 z_Bm-h4>uD|To03Z;9ZZ~5oGr^RLt@0xNlPfK@r+bbfI=X&8JO*-A?PY2WbKQ+~dLC zPq6R&R1p^Ro%z1yZ280oJ?+)|VwbIJShsA;i|!6=?h31y={(j) z&Ekp2_24GqdNHyO8J#c7Sk|UtRkNP6u)t1@Vq%t9gCfuFHM)*JG!8epbSO3-g1p7joamjl+)mC}z2j0wC>;F!Q01nv=d3*ejdH-I7RjtuV?*dVY- z;1B2?{Vw$=`VH78kL!P@>gWUgA@wv>`5#d)&>a8u^a3^ctLZni${#|7clw`z>_-1j zQMrTuBan~#e+{_N|1#(!{(n*BG=@>{67L2@bf^EMT1emV>)Jy4rT;YTHG0#37GSN> zDE(%w9M*SJky>p)UTrj1Xhmw9u}Z5}HyS6^GR0Bs0bHvwyb_~k1xB?7nj3f%>!=v> z5W!i#2e6+W_C@GII)wh!^Z@#^h1*DXfigq-t@IN5Yw7FY_RyWaHrhse)ja~+l=KA- zXx!I*3VSGyy`lb1eWXI#bnSetPy2$VW1jt}CG z05_-(z*kgq5~W=Gt1N{jHH`NG>d?g6{OFfJmxlAI2=Fw-tgx5j%^xw90?qXx;MZn`N{1hOBgt4QlCb-?xsic* zoH{mGPHgKKbzQ;qPNq{wYcw8T9Ze3zEr&XoMgrQ#lF>x0U-}{grj;792gtki#0Hbm z)QDq=I4hA(M>1tOTciC}MkOmq4@|iIwiA!_QO}s0vJ!Mz-?dhMDvd?DN0O;n!iscT z2|I=7#mIWc-Vw80>b9bB?vGL0eK9s@r8aj(6BcoYpD>}x&2?Ap7-rqxt;?1n9@3H= z=(gZ^63l*UI2E(G$I{^R4mtLA>akLu$cAWq#3C`1Hi4vAqW7$qcKF2$p6Drc(2aiU}EVs45?l9rgY1|)`c6T~9@DchlzfdS7oYd|8HDAPMO zY*C6q0!i*jx~XWg-%AK*JxiE?u)GB1xhLJIGswE&zT0XihNG!iU)xhMw=Cnj&bFlI;Pc5ZjB9&I0)XJg58na zYC8#GM&qbMcS@;GWb``G0V@%8woPStc+80n4y8_Iq3Q=lP?x6!D6^Ct%P}S;nfXY7 z(_=ZKv3^XfM-cbBk%Jx5b93X)1J4F5NgGx^-=sKoK$j7#i*i@M zSdtga>Zm)EilV5+TjVwtsh?F9lU#Vw1f+)yCE& zL&UJ>6tzcVagHMujbY(qrLqakbJ87-vR-e?>O`el4p)yX3X$Oz+u=eDFDN9X-LVst zo&jEm-qx8BWp0`h?N5zFfm7DZ9L=dI(smNeTM_$ zS&<3#9GWQC;r2S%)cKeh#TJ1Rv#66WJ9v7aC09_AEZRZCfc=yL>@h57m}VY zQOJ$uNxJBJe$shekYT+U|MNX(x$TI=!IiVa5hD@zZGHFrk6&H0clE!1@!Z#~Bn1y& z|G5p-i(lR2Gf5eyR#R46gKilvO*fU&KvSS`zbs(-R9Q`JO_1;5(%Kq7Gi!YHkgq3A zGs-kW^BLiCT&1{9*G&qS7MVJPSR8LlLa){gHiF?wg{#FvxEdOm0QEwy(T&=0wOA@c z2Q;m=CO`^(cxZ&@_>9_`5LAcfh;EQd0&pi>9WF6U6|N1}dhUix+4tc1xB2}~A1C?- z@?dBHz`J`|7V=9uf9rUDP4Q2btWE4IS@!miR~##T?b_zY?i{^%pZ=%YZh3Tp6FXM) zvm@6$wPE?|w?1%hb;Xl+U-aU^(!u0Q$DW$|QTrd?8luO29lq#+8Q<%kws~Yv`}2)! z{_C+XEG*TIe*HVoU;bpG`<{ik;6+RNH&Z!GSw`&QB4o_E3Qmlke#-}mBE5A9w0 zLfxzfbOoREfI^A_stlKgr^~Xkvf%AU56nFL;hOE7?HbGkg`*5&NMR7M)dY3IL+`_zgjxic)kc0-)Rw9)GST zJiZUMOT)Dsm(t4Ehx!`L&tdb&!)cMox%lrLN^TO%wj3Xpnj=dh3!5Sf7d9FZg%qnf@@+w$BAwY@P}}`R!AiHV|7JEc|ir0 zys!|>)Z^u zin`J3pv$NWcn4rR`rMw-e|Lg+3x4nGZ471anUu3i-dgfo8xRGpd@8h44Cf7wL+tHa zv4?Y;!y6Fwg3CKT-YalVLCyx|wL?0VICS)Y?tqiT>2j*3H+(G9l>N7u`sBO$V)=U6 z3VjKjf8MFmg*%@a+`5R*xfpauAj2mY;ro~dT^So~ki^5k*dCtXn+e(Fc+btrZh))< z>74(~(7OcJLU_ZF@5}IAjoS*$pptCxne4z1KGAaCCFRugd`rMPKFwWd8Gsc3Cb3uj z5aZWj?4XR~D2H)sa+U^hlJjH0sWcPc23zsH#Do`|uV#D!^m@xcYsEO8t2lJ<3A!FS zZD1DcmLivbiN3`czb2h)K9@H_hl%(soY32#-vOKtN+`}MSIHMd#H#~81 zIk3u47W`XH9AE15=fbP#0q_%&Po6n$xq369leI;0ab-uLDJN|rrmf)QXk9Cy8o~GnU8Nl3K`%$4xrZf*)Ugq`Mz?ka-C0m*|iL7C<2bg$xujP{=?b1BDC}GEm4sAp@V44B!vJ`0vBUGcVkqmADIW m7BW!CKp_K#3=}d@$Uq?jg$xujP{=?b1BDC}GVmG7!2bdQ`7AR4 literal 0 HcmV?d00001 diff --git a/Tools/NUnit/lib/failure.png b/Tools/NUnit/lib/failure.png new file mode 100644 index 0000000000000000000000000000000000000000..2e400b276fcd227a2f056b4a2c704a3a17776bf2 GIT binary patch literal 1445 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fHRz`)E9 z;1l8sRKUo{$jk&pOzh0e>?|xCtgIXy9AX@7f`WolBEl*>9IAX==Hfz@lA;O<3Z|x} z=H}*(GUDEnLVmJhVG{fi(t<7u(jH2(0Sb~Ks&cUk;@+wXk-8eO#(GKWa-pH2$ss|h zp~2Ke@2e>~Y_E0LUi+wv!C_DH6K+N)-Azt;nV<2oIOl71F3|2`ko~DZ zhsz<3S3;eyg}dH}_PiDAeIw52M!etQ;dFk&lg!9x zxiPQH(%x6+%xtKg)mS&HsqSDyX-iAX#EBDU&z?PJ&YbPrx9{1r=fZ^x*REXy2Gl4R zej%{GtG*hT1sF<#{DS|FY`_rwom~|e!<+>kk;T9Q2$?i7*PM82?WL(g zN`WPzD}+VwdMv!tclO`E`;B||X1=U6{T!X0cGlpZ__Dns(^Q{q33<@@B{==%nWLWe zk1k$d-u?gaXS02Y?em%@UT;|X`Le6Q9%a@~-wSg4Dw&gQuTA7S^0aqm1jFsXn`gLK zuT`(x(RJ!s_RG_k0(5hn3;4_C?KACI9eX3|FH6Gy)$UIicifXYyG!~|)yo?vi~jBW z6jT{=a3z2Dp~83PY7E{_76^TyV3HAkJ?rKNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fHRz`)E9 z;1l8sR3IV3CMCuuBf%yw#V#+yE-S?^FDoh|Eg>f-CoeCrq`;x7$f=^tsj9-Mp$sFr8r9QJqWp9JN1n((vk4)9WYVZyYLZYHDh3Zk{%6 z+U(i0=ggV2ZQHi(+qd7_JNN$nxepFbyLRo`{rmS{9XSXL&rvXhLg0aY?KWVZVkimn z3;sW{0YmV2c2!{1aTa()76S{QYaq-xA-{4CP*9@8HKHUqKdq!Zu_%=xATcwqM94ZLo|YufAq6S9Qc#sYAG36YapyLLGk>-bH|RITgV`K;&Dp4 zNJ!Ykgrw`OD?F|zU))eouw`|VL?6U#FuR-@+LO+}L)C2jq= zW9lKJMyAYvZGncJoU;!7nZ(AJnZTH=KEFa&Q!q6Ac)=+(gsSzopr024hF%>V!Z literal 0 HcmV?d00001 diff --git a/Tools/NUnit/lib/inconclusive.png b/Tools/NUnit/lib/inconclusive.png new file mode 100644 index 0000000000000000000000000000000000000000..4807b7cedbc70436d121f9052bdf719cf2e692ed GIT binary patch literal 1436 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fHRz`)E9 z;1l8s(!-;v$fu>mr>!iYtt6tUDypL{qOT^Vt0bYJBB8A!rKK*Rt0Qk@EN!c;ps%fD zpr>e}r)s39Zm6$mXsBy!qvh-)o9Lz!=xO8cZ4?%09~ER96Q+?FW|$Ufk(q2+7U~t1 z=2@KXSDY14R#9G2TT@$KU!QH+Sm7{nsr{u{5j$FQC(J5Yy}V@qDzB>xV-BnhxV}E< z#)i-v%af09O1ru(@y_;?I~y}E@65QjJNy2g{QDbfj%}(txux>_&a!K}Dy|)>dfd>^ z(9+z}+uPgU-#@iw?zFaf)22*=ZP=V$w$ot^OV-0Y|Km*2m- z@a@fIuWzh)|6=3yms@T*mXFhFlJ$A(H^yZVhQkhwqa=!#$zBDQ}POMF^Q*x%A)1RPa-{KM&m0#}=i4RPCS&+>>!C^t~!qAdQeH&7owuBmZcyF7% zZ)WnIu7;vLi+5U|2w1SyZCYPoRaxJ(g$ddJ|CjR_noWKjV8CD6W_kCvu1AyiFkkj&ff-?id-yQAc$CUKbKq=bO)z4*}Q$iB}HW4*& literal 0 HcmV?d00001 diff --git a/Tools/NUnit/lib/nunit-console-runner.dll b/Tools/NUnit/lib/nunit-console-runner.dll new file mode 100644 index 0000000000000000000000000000000000000000..1709ce7bd2b96242101956cce9211bca31c90845 GIT binary patch literal 36864 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 MEl{<<|Cbi{PnGciH~;_u literal 0 HcmV?d00001 diff --git a/Tools/NUnit/lib/nunit-gui-runner.dll b/Tools/NUnit/lib/nunit-gui-runner.dll new file mode 100644 index 0000000000000000000000000000000000000000..35efa737c3957ac14e4480d2a559ff4127298597 GIT binary patch literal 188416 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 literal 0 HcmV?d00001 diff --git a/Tools/NUnit/lib/nunit.core.dll b/Tools/NUnit/lib/nunit.core.dll new file mode 100644 index 0000000000000000000000000000000000000000..a1dd69866dfe9f4a0ea9975d961b02230aa66969 GIT binary patch literal 139264 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˜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Ê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 QFk*ob3yfIc^DOZH0B8(6)c^nh literal 0 HcmV?d00001 diff --git a/Tools/NUnit/lib/nunit.uiexception.dll b/Tools/NUnit/lib/nunit.uiexception.dll new file mode 100644 index 0000000000000000000000000000000000000000..610c1700ed22be35144f6522175332e291d288c0 GIT binary patch literal 90112 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 Pfe8&vXkbDEjt2fWQQ5Ds literal 0 HcmV?d00001 diff --git a/Tools/NUnit/lib/nunit.uikit.dll b/Tools/NUnit/lib/nunit.uikit.dll new file mode 100644 index 0000000000000000000000000000000000000000..9087db2d16660e0fa83bc9d3c64bd01e21807d61 GIT binary patch literal 258048 zcmeEvd7NBDwf~*lJ-2&$W|B;1(mmOxJ0S^|>B&L@B!n$NHrbIa39|2Nh1)@prei=+ zgn)=F5EC=o>5p4)p*pFZ`Czwh^)s=M?|0`L9a@2?;8N%~fu zI(5#eQ>RX?x9%ZpuJ>}D=jHMLpa1l{2k_+I3i;jk&jutlA&ii_V%K=(+-NVhWvrviDeCl!0e!J6lx1o2-H@dM(R=Pg)w`X%cS|G{T$xmZ?_ zGeJU@lNLmc=v0Cz8)YQU6L_ZnRzM*OqSMbaKvY>(2ZEo)+dCC~HTbFqUe&;>8hBL$ zuWH~`4ZNy>S2gge242;`s~UJ!1OFds;1irznmS=Y@d%`{>G*Yxb=A&+dM6tLKELj@j@p!#{rJ zu5bKozt!h#_~__8-zon2iZ8uo@eBQX|K{)~9zN)icYNlEzy0RPtDkOMw%?x?Onmg| z#|K}(b8yP6(t3ZORl;(BANG140)B|{1)iU4b#RejxPOuFEkpqj>+^Eu(T-9uf2QX* znP)&^6Ku>(5CX^=PGo4<%Pq=#x4Nmf-@r_~)C$O}(Z?Vr-7bj9I)al4g(4B`XRwe2 zu`~b?2LJ^((x~>DDXG|`>R_XcxTz$-2r{oVg9)HEih@+jjj2SOmcYwqdJ>72FxLzP zP{cvUh>_~z>LnRQ1V%fj7zx(F)k=m7ffdI^vh3f+#UBk&+@LX&vJEMBY9;2bk!q4s zyN#vEN<*Xw>q2p{HJ2@(q@I~#OkF36l-MLwQx+Pl9-b*Jfzd@N`UKQy9MFGSt%Of? z1!g@~Ckkq+=R^*^yWz(yd{ec`+a%+GYtpsJCl=ujVOO4n?yQk^ukU zmTAR{;0ZeV^L=zs02TZ41}(JY{RE}$fEV(;UA*Jp<-r4Z9?SAtN+)Ge-(q$Fc8h9I zWvpL{c#3z~i_S+$qkF0RGkq_Zx2y{!Ql->-dSlUS`PPCLsDl-1IeL;T#Vyp~2Wj4>A5KCunL+xC z_6GB)AHIg=_WZ^^c(x!3907lyK;3D{D zU$|}Zr?fCK%)^&pD46mkaQNa&FoN8MFJYdx;XqTQI+>X85uwe}3F z2L+91FoJvX7-$hsCgnPUW84v)3ZRq~A91}xiyHpNQH*13$CaC|&b z6m$gfR7Ybb9Q3ifqQcP0(#K=80p~6L&a4Jcvj#uqQI37ltClszFVF23-)~3!!^qFR z2N^t!06?cn=dW{&<3OMyy&XEOsu%qTf|Y`3LIEXNhyHh_OY`g1bVk3)-o?CL3a)Yu z-@t))Oxj``Pce7IPl%~{zyUAk5$MT0j8B{_4ODsnhbA4S^oM~tfusX-A|A1T1*-yY z%Ov*E5V;Vz!S=9@qkFyi%k{Lw1y)`w$VsGU^AGPg&On^HrvKM*i`DXS@>5Bf!qj^-_+>)jT4o$qcA}pRVPIbo=ho>*f zdFMf9jQ*T1bB#~EGG)$7*Jn;9LxK4W^761ptSWCCx}M-2yhe3RIerN_FsPv%(w4+P zPa~-^`>NP5WQNsSKcXv{*LGv_MH}fUrj>`u0Oy39p3d(nM$2fErxPp1plHqjWL{8N zRr0!IS|;f4+cKjoJueeru`iyP1=?r?ya2+{n1j*0#Jl{Uvf9=;3u5hOKKOWEyhg=wvr-oc`Z!+Wp7KU8$7*gykwNA)P$(W0=v12Z-6Y{8z z{MmsO+LaqO!9TcQO@cBAo0UMfOM;Lp8Ca2qc3#j@-Jx~n1p zUT!YbkXf{&v~jo3NbO4~SM6E+WO`60Md|*XfH6V{u*(S{dD6W(^&#}Dr3`Vxqx3+G zfHA}goatywmh`BL02FXudjYBVWL(PFj5h9sMF+#M-Qp_&TN#B)ekTJXU|nC=iWMa{Bl)0Bj1ZG+cVcT9?IOz|aP z3||5EIKGnSQz^a#fG_%vi~;#g)^a?QkO)vAQEg5K3@MMFZ44zyH9G`g`LYn2ZWcl= zSqN)C3t{D0Nc1Sm(LSsGZBjNA3tY$T{oDHf5NOb~&>pw%XNvUwbV8}VpFSf(y~rPW zXrUnens}>bjrp1kYj@;&A*pQ(_Z?8GLV=5CXs&jdDyv8HNe`9u_n4rvZ=e@!U=I8W z`+F(&Hu|8XzrVr~*Chmz(Tz`p$ne$UAWX*?NA@vVeH~t2`qPJ?D0EhoHBt6y;{8>6 zVPIEhx3jCWyKv&2$`CY3Pdlf0#r6B!Tyah1mT_HoK|3j|%Z@-6snyXuVqJa#9h6p{ zRJxWm)j=`Mj)&%WJ07j;x3s4#1ZR}X1bQ4=Tut4G0eh3wpJ%d23OnZgi+z)VF> zjI3129Bcj$`K*#My+S_sqnm}p&7;%BA`T3{1^2+dcQGH~nOa{V7Ha};>uaV&PWoKN zQhn}Oq{04L*Y-P9Z)6j%AHf^wcroWUnIPkEtOw;(nh?#5>_sP!&&F=R@*aFVMS12~L@kwLRIiL6KO zn>QCGfZ7vS!!l6jodR>ye_D3j7I|GcG;~hlB!}QFF z2=BKmG^C?~i!$)tWB3~~@TG)bOrn=$;Cm7NM#3-6!1s*lG&AsJgkMJdRtAoSob6Fr zH?dwBDUa>t2(F%H)+;5(qFPEn1c*wiU758U!sEqYM#|<*2?;1?C572QAum@rtz){Y zWJb!hx5ET8)kAQ!EXAGxt&v-Zo30Ti4VWtu;_-3_jjv+ftSK6KOFD985}Cc})?4>9 zZ&d&-HDhdK;WtUayiHLQLPQ6lO`EHbTDca33(RFPm8EfS4h)J%YhkQxu1+G+>sZ2T z5&+b-TU>V=1#b5l$uHYMQ`cDtP1AMRuLot@Wvkk1ux1@dOcT2CQaIXmr}rpQF;76d z4zERWZ`bmV1A^Ffh^dciil-V4cBX*u0N7kFgajVF0sQ=?$n;L8-GHA`U?J~9WN`&c z;x{7DpP!r$Z$d!kjrEQSdIN0lF>7FM2Anf+@`}CzniYfkE`?A%2M#Qu-xNopDAT&U zwOUi}2HM>IPIV8MBw05hgmwW|Wh3gQ!`uqA4=~hSs4S>hMmHl}4PXzJ-ewm)US zn6c3S3MOSWMQ1TgLFFxpEAKWCg1{CIr)(SK?FtwAhnBpxWhozKh|t1--%J_W9mK3p zb}%tDfmz6C0DH1j-$Ps;#dt3R!yg0Zn1iC5JCUODjCO3ij;gpzaM{=8JotFG7ebNE zW~5aX6e4P--WgF7$W5B4Q^9y2FgC&r(sc6PaS0s}fSR`%NK)%S7^k3P8Hw7IT~aTq z>)}VO9q8hbjA_&`2F&|eA}z0;>ky|f44G)-@WEbLY}{&RtbM6vCETMn`|36yAdAA> zZnduhO*#=XS@(hY5FpN(skw_| zk)p8=?)1>KJS@L({3A40BS+qRnECEW$b}#m%pb~|djSi~NAQ~x)qE83`ogWGT12+i zp2>drF+9!3@zb53+!1~PfwRpg@#``ADT#iXQ7D@7eIN3{Klj0m?gJPDaxO_M|1!V; zeTJAB$%&MbJa6s?pmJhmL9Pt%!1b~4vw+k)!w2x_$(zsN5q=&&y}p!kWV^|^@C%5i z@r_svR(Ip4e5AEx$C+m zR`t+^;V>r-{vsXL{{ zf)3Ml`3ReS&uy7z7mxH{1or`xgAq34SIL*vX7}%p_O`#wjkA4)r^-NE)o~_zHqjv= zVp-wCq$Ks9_fA94Fc)0Otn3v>QDBCsa0>c#y4 zd_w_Z^_&xm9dSjEWm?a^ibRxpV^7Q?S}diOwO|gBX@wNLXbwsugJ$0(QZcVdM-EFO z=u-BGo%}Z;2?{Mre2igK-3cCM3&PM&A;J}6g?oE$PGJE+=9~sv;X)t#c|o+|=gqf3 zFmJw%U-KRO=zQdr)d*VXMYb|hy0_FOd*S1tCyfw@T~@3*1Z;elj6%^Ce`_^NF3b}E zf|`IwgWcoOKbgSI_ZSw#rB6liZF`hlYNFFD4FhlF=$Ri#zTxYTHV+Kj2Q3?K1|i!m z{@%+$`L7}Sr;y7$&8!6N6N7%}K>Nm^X9yaGJe2ELJZDnZdGjN{;a8r;1LKa>`xcM{ z7wK)6`tKv`{?}&(=Ep#uYB%tMa6jLuTWz=b?u9o|re2eVC+ZH4WXVNY@T>V2Wv zm^hhaDXDE70C<(OqJN-S=FLw)$vnrOE%>qVpCTAOj~@VDz$38mpCR0M5kK92A>5zB z%30Dr(3Jiz*Z4UzL4HjHJcn_|Yw?sn+ZNkBVY?T|nU_GuTAMv@W^umCgyCbtU*I_# zG*>o$iO`0*sA!%4!tR}&V4Rj8!Jv~*^DCfXt;f!Xb)H<4HqzV)=>ng}=`drc+_t&& z&KVrWQaH1e&Mp}o#>V0-&EPPW!hyeIU$V^Mu9|ZLJ7_>_*jmsoN{!#*r)2Y9g>YbghhMZzU2C{4E?)>U!8w!V8v%jG zZR`OL*<#&k4T9(@N7Q^1Bv1-T4G#p^d0K@WOo(;23OSUJ{nh6xn})oO5bKwT zV;&AwPBjw1TzZcvvVsoM{K zkFXnNEyiH%4;oMUqn;u-V)lR$$T48=4KGK1z{E1 zVf=U7-0P92z0J`E)DqCcwmF5IPKa%D3OSPy+vXH&%=Czvp-5?Uw57y~UO)&P<;!caqOgQv!Au!#(;M6{x#{&!m>++X1Q*@fUY zN87vz;fH^PoY$T0hyRJ^no>@NU%{vkGkA>~9<30K>o4uxjgJH}8i1x<0fQ7-unZ-fc)nPv7SaURwYr2j^vfb6;mAj~@)&%s)Y_KPdMX>Sy%@eT7Zj ztp`Qy)?d_(48300NOza%00efxQGT(nIKR6KM>BlD=G7+@Ob!8@bi~{Pebknz{n(NE z5(Eu90l<0cFyPbM0!jJ`l~w(PzCvGc-PxG^lGN3@*Y4pY%;IyssYUP{^1}kM3{$Ub zM62lB23q@wmU^Y|ez<{UL`@b++;8rU#Jt_g%$Y6#Tdx5q7nTq-ICli3@G<7~L%gQM z2i_TAWvUIZ{=^3Cp8Z15Btz9IJ1xfS{(&D(KwiH|4oaJnOeA%X!}zV>%>gm_v+wXw zzWBu*Mk;2ah#`{4tG-MLCm~_>k|o=%9GqHiV5h0%*6f(twp>q8^aE(y?J*NjTLJFX zFtZpedEF)~Bh{LjEE0tMWHBJ&bWZy|N83?kW_7EpDczRssj4x@rhY|B7!<|3gHmPt zW`S? zB=dvC;J!Wek(nb6E|{Qm7tDX8Idah1>nl$9RyGNaa>5~SGgY!=dFUtL1Ju4{;X11I zq*hpQx~ykx9^ZqL@28>KRkdJ}ZLHfWLmB2&z2j6#6iy9c0*VW{e zx4ejz;w5TJ^Li}d_3YMpQOz+g^iP>`E$Ytsp)!Tz2j6aJNNPq(Gr2b|%?t!xY1G~@ zy5RalpI25LDWTOeFPi2zS?T9$3LfNf?&{-8_2O(~!=w{0UE$eQ2h0=8dJNLxESYRYHe0etdjLxDTL!KJp3k2PI$|Fm$6~jw)DNwIbtW_JHc4? zhJsaC0k_tHmWpPIX$ZyQO#cQvJswlcg~PNr-_*tI1cK>D0{Izn<_p9&hEPn^&zS{) zhPRWFhW&6MAcG+`w5<=p97c8IH`##H^h4MwV`fL8+B`T3XWAJW0sThYj$#@p4fKrm z>u~I2Zix4k&~G!PxMo$jD`H-Kf20&Zj%lllgR8^k2!wcRkltBz6`0)_ za|DVur$1LHRaS|cg7BoW9T*a1brf-D4_!i3lnFF<&as^7Z@j%E7D8 zM|N9swfi-GlTH7)I3MfQ=7a9k9iAjB5BlJii?7!J^`M3i~2I z+!Il=m%yT{(OBHx=_gP*_GQ;_nsi%-`r%cqL^$KqxZj4*@TH_A<_(q9>4FJn4wXx_%=SbTR9eNds~nQrhUX((5AQAVx$iotPaRQSUwqd|LaTq^@qiUsc)|hLdqAeM4`0Z_xS6vZemMZ_v_lf zV>CI=`sAQHkX_%_66J&pTj}vratx!N&3kVHefi@6<1Uo0ZTzx12E~Jw_r;)iNONZl zipMYSk3mnf)=B;YF-XQQ1l=8jo)OzvAMOo>Y+%)guVILK3-@7&${F5-F8@db(7PYS zhn)k#VIRS0zJ-M*>rXQ0b(kmd%Zv>t{RS))KBq~72@Yc^oDsz#7u&b^T=!!gGcVzC zb|Gi>gRo|Q{0y1{@GICn|CaYK==A0*KE*VzMKbCh|1fXXZNi{z4g}O&hE*#N=V&#k zC`cp1#2iGN3YuM02px>5IRrob`DJKYd^dFw)Vc0H_;vKfO_q10yI>9l3b@+ZXJdR=uuLt#c1+%5XT&ep8|*H z=q!063}Z)FMlZ#JTu=hMNv?G?q4^dD1biHehxR+;-`7AI$rz9^I|gJ&YiDq5Kl9kg z`DfpwT|@HvuG^|4xSBzC9RpGD4*sOfc^v{X7cdY|!=$zSby>pW*U%)_lH}ddCIP6N z&&8E<6m)}%rYzNEZ7+Bcn0W_Qunuawnt;Ig0%*~~S(2*BA=)KSYnW+x)x-42&UON_M}bJg zO-(T#Lr2e2WFb_fg~XQ!d@AYI+!Qr_NA?#;v&#xl$7h{7#(9?~b4LKJG4VN!iO)&d zq~9b|O|b?ANDT|j9mp0@k7hl~Sj?CEMp1V7B}Lcw^TqI+Yz6YtkJ5Fo++(CRIrYZ< zd04xjR|kRYi|XF+)7F+O;bXwHyyIYsjo)O;3QvYw)5m|Mf4&_;4L~k9?-PK8mU=E9 z@iEN@rKL75K;G6#Owk}{x!@^D@YE!D8iP&dD4S!|-WjQwRY^oV)3oGZ8HsKVaDIs- zHwP#J32qLi`c0Bc&YY1_G-*O|%uGqIR?;LBpGadQ8cv~#ZNEJR6ve#{q7gh>(ss7J6>Z zgw6t%!TW1iQ;9!hEaeZ+V(ZfJ#HJiF^UrUrfr?tB?>CNP@N@}cAQiOENT6uTK)^60 zXn~BY=yMnp;S4N>4WGGPn0aj2IaTthnAdBqFkX)`-)#bVg8g zBb7Or&?%ea6JE7nb$FiKa*|m}W5)PoCnKnVuf;WRg65ZUsjSqB^*K`95ch+)F|`1u zP18Q(q$F!}Pf9S-sy$CxMo|M9S(sEdC#Nz#$c!_zMC2T+fRQ#85ET79#fgBeaFXn9 z0a5g`zTp{An>iCd;iCjdCNz+* zAd)&Ao1oz=62&f-k60Lzw^e+1v7YFBMI^Va zBC^tqMU=XDLdz%~L`B3j69->0UoKfUq&=$Cm+wJdEpy&n0DjRfz%~Y<`MX=lX@JND zJ@bbxPqyG^RWD8_Y0dGZ(wb0CCoso1Ve3{ zCn_)QhiwV~FCWL}sey>9lOj>kLF!l&Nz1(XP(0<2v)FHdY1_Q{n=vS!BtI5|;;Ho4 zW01_7dB`FBB4E1H+8*LM+bl3m>%4t|9u=h7fY-k$@P30Q=7R1lX{z|rwHNbd9ZFuu zp-?_6jf?Qxjd~8>KyYVxF&?sX*CYN~g1vgo6L~*J3)~$juvmt9G<|M(2>?@9g>NLB zaj2&>b#-_t~Rq33skCIAQd)uo7nu5#YybS zF8?UG3}FAZAVuge)))2JSKwF(RFmCA1FL-^OxLB(f_&_ZQ?BOjl z`|KrTU41N}K#P5GA?0Q=Rx~LTyBfWam20;})0316iym(SPaK0~T^KrDfW(hVX&k%d zv$+;AvoFwB!^h`1+<}pi@15bT{2-4YGQ5-b($o$KbHDs9=ob{(uIOV+(f8mfx&t}y z9v7JV)+c&a#i=^)@2XEh>12(D3hV8%B>_;xWX3I!(Vjpq_3@;bY=am3O0Md?W!Sm% zf`YhqY6rQN_W(rLRS-(npQxwm0`qpnSuggLccMPea`olQsI04*8uaDSELUl+LfS_A zyOyD!^|B&M4fh3Yh3zZ!clULV9NpI){Tno*oy;V}M&sD@`qD0GDuKBMeC2L79f;P4 zy2SibsULt5`{oa94wyNl^t1c|t;TJuNZOv(D{_P>ymxYa+D2gwtYGV z!F5bCY&~M|kU9xzFy1NEC$^oBv==t9eX~y(r+rTy+rD#VBTAk$@aMMKz+L;^erIjp zr(ou6#QpR_BIqZ48g(vvC-C{HwS&~X0>n?|Z;YkpZxcyI=Wl_JLh#QnVqHK!jcXxo zYpn#~6HBcN8FW)GqQuv3YNSenev^?JIyY z+yhuQ9u8@rX(G746O_p~2uj^P#6;8$i z-;cv@J(v;xm{uuc8Vzwg{w|o-vLugLh?>B83@l9OI|$tczbT~vLkyZFcsGJ}GfUp0 z;VU)oK)(1zI3#k6u^NXgnPIN^17cmP%=Jk%&o%Ev1h5;@Fu_}`c*EDBS)uqaY}c%| zumFDJS9rA6Aq8z@Ywe2}llH~f`0eX4RHgjc_7#z#t`|2Lbd8GeYRTC)V`a04iq1&9 zw8}`$1JT-tXe4P1WKw2zm4NC2ZOgj?ob2Z7k_QtIXB$llmB_)EUQ98D8jP22E#r>rDDxv>_QI=j1LZjFZvt$z1$K zB;g9f@I@5{M>#MNn(IaHhZ>^OCwptBg%@GCRSIUf-NyoU<fPc4Ta$>6uA?rwju<@hb+ z&$&?%ix8xXuj087<45q%LoDWa*bGS4~MtqXK_4Qx!O#B;TDgSmB8$@zG30)R# zk9;$Ig@scP3-@tIA-2^^lm*RI5B6~Fso>J}^%AhbKin}ET@HhE%VOVvwTq8X_W=91 zHm>`J+7|4pkgipsK@7kOt^;O^e0}prRU_;9aPZuVWoY~vKs5ESH{5y$GU8hdH54y?uUPoC)>@|`WfOU^}v`;2UyeLbIh*e zxW`dw`STmMp~72D@@d@8;AO&cfTH_Nde0h6!mDA%@G|`e{b~*S^W)%(C*PT#9Ib$K z$#2XiCxOvzsJJv%En9o;qIn@O#q|`FxjLzKR=bRZM;}g6BtR$*Wd>Q2KVE`mtZeRp zGO$hf8y4su5}pdtvwaJN$o4JF>c&%FOiU1+)?cA~9YgIPDzHN`YNl-7BfKn#I&TB1 zL>Vmdc3A1Y#^-*x^HsFGviSvmF<265x!4|93FUpDK!*Hk$(9NZO?O-z5$_;<><;J4!L;NWpAl){MdtY(JesHw^&8Dn%jQ`QfU81dL1mU zz5=V=TECigbT4RYWz}oeXrs@?Fi7wtdg}rU#YV)n@gIX8XyX0b?}%WZfMU!i@gvfe z($G&iD8{>wkkHrg(^JF?gm)vLFSA?c^J$>E7uxORkh85ofo(<75Y+_l12#?z9^(}Y zV`+^;aUmAdMNUdo?d4Wk$Z!q~o}K zs3*Q0^UB9@FR@|#cgJzph^~IZtmwP2SdJ%Dv(<4N@sn{JW8;tGE<^*7KYO0yYT=U} zyj=~9S2}oGJTC5-!5f(*3u_WvP@Sv;D%l(Hn*uCluQMksdXa6^4gv{?4@xkiV?FE- zWf$9+t`x3%~9P4JF6 zP3MF3cUbIE|0(mBXzqY}S0|o7`QEj_*-zTQ=fSm<{vd&T^n}-%V7uT8Y&AjD015LT z!(79&OA?cia4i$Q$ONxG0r9niaUADUzofaBaQy#e3H#+#mWESn&Z#*>WTODyK-P_bk`3*g?@ntnLQu2NxW_8QioA ziUsp^CS!h-)JH$|tL9HAMxP~`R7f3}9+~N4MOzz1?T(~2@C^!E8{>JBo+86S7miXu=R) z0g8I7P$VX%*oflGpYuLZtjc)rM^I|2j>oiO24h>F7sVb z@SfWU{(bglazQu+AIq=;JOK>zB!9j~Zl!t!yJp{K5WB=IVPC<1#HVC_Krog16YRH@ zbWadFSTGZT7W=y0e%qEA-j>1sqKB|yANBB|QTk`M) zr9VBb1g)RW;tUkSYy*khcF%*17iAG=4YV@|0vAMi8eNKWf z*fpPdj#s7*sW+%teV!ja1v0o-A$%Io%84iz49?D*e0hKHprjnOrTq}7;WNyKyIrL1 z3FJqFOi4qAP*X|~t7LeWQgG2T;WZ$fu&5>Vct7MhIN{UyF>s)->D#$lDnxrREKN1d z;U_@sDe?_SGD3|M3q`BJ=#$Lx9JxWmTkP|veAf50x|EE_H5h#n$g1D)d7xNtH^nv= zO))P>=80ZXJIH(Au#Qi#ip8@D&JVjX)aQ&>hC=u=&@wObN4!g68{#JHP)7Cx=xW#x zn4eP~u$Q(l3(rHzUp;?`z8}bT#rh?p26mfO@Lvb~!-!ug>B=>02OYpK@Bkk%x`keJ z2;?uAUjitK=_yVX|KirK1r3#1Wo3FnZ{6#HKx_l|fj-s%+x78qN*{k_Sn9M89WobT zRYhQaMRvc&kGkzbbS_iJt;>vZz(9~cM`lc32sV)w@FYa+@3)1NP?Rag!f7Cc9!`4 z3Bo-|@B>NkZV3wA4<^tLG1#Ow-05Z#YCGLbZC1P7ZXjb7^IO`7-(;lr0D9x>Se)SK z-)VbxEG{Glssov2Q2|bHi>!=cD2+*ieY0nX^{XrZUlPNAr>t4AdItp5@i73L*E3DzZTU$7M50w}O7Q3ot%q{v$rA2$Ctco?7RJFw7Z;46ltQypj-5?=6TAi{n0`z8#oifc# z2rPGk&`J_k5{p?$?5x@%*lA`jpYX_}SP?KDDl1O!}e5*Di1d*bTri37%%(Gr>=8Wj)A{S+J zNqBYG3B|^O0{*qVY6y?Mo}x`aOj~lbmsWuFG~wu}RB74%lF~|SZQCa=35;G!F(p9D zko`ulC)$GGt*xGvse1yWl_?1b7_Yh|_Yx-r9TilSrA1)0 zIz>yc4sZK*u>fOdAbHMAl?FP>!$_a;+8Q3=(d8-Pg1D$UF=Lbhj5`rJNT_`bEyANa zQnUo|@HSckT;xhDdG1XKN;fP1VJv+nMGvRw6M!$DW@Q!NLPuZn{4hnI{<`)c)G(Gl zlQQ3lCZKv$8+`%B-M8fVX^K7_e_}R_#bzT(Yui3fOtj-&}iU18FwIQqj@^i>^gmO^+`CE}nqDnVS)rX2ys+Lt`@ z+lWtdV;c@GlVw=OVpTB`w=lt5TieiXyM#x3r6eLiRkvfte1$-)I*vaRwv5?#={T%) zopTDzA?`R}4tK`^bLcw`m?De==IA&LhT^eXlIT1qE#tcgk1kH}6U0w|Ra^f_cy$kFNRsUxDf-mg7!xHhx;I5! zu-Z*jfV(@&k|%9NRQ;G9g}~?wDar)YsG&BoC3iepk!;^jiOmX38ZcwARWcG=rQo%< zW&$&(VhI?}Bqet|j-eUAqi%q(nW`W>`u9|s1hKs%6JR`!kvzE_;s#yAdXQJU)VG$B zJpe+Zu=ZyUZ*Ulyg>cT0g>Z_Jg>Y(RAv3mi16m(svKt!iC}Ji2ql|{4-4b~*6B}_e zF}v9z!`b)^K(*>&aYFHK2G3IUL47DI&t{1{{|ef&V8*iqgyhV>ksY#Poh9#`jOP)G ze=X(zcO;rmF;g&j?bD!zn^V{S3Gq9MmGys?r}+;&_{}1IqNo($8b7@R!;g+b3H;_p z(pe7igYbDa%NdlC{J4jB9-i{&KQWX0E&C!dx)S*se*x9jJCHY>a$B5&`5)%cEP>x- z*!&gvAg}<8P&8rsp8!F1^QpSOA#DCm9JxbnM=)*I3)YdaiHe(f^X4BwTsK647LuN< z0In3dp*N+jDJ;iytc4t%_xSB==vh}+a0$~c$l0P25njgdbqt4f613CF)zrsnqzj1X z`@bmWD1Q1o>s7p^u?UIswuGC3GE1QM)+2c*#N<_|A7CZBQ&+O_!VFik`GQmti{3kv z{7*oi7Me4=fxVkn(~2$MxSn0wU4qSOa}aj6Y3xr@RH;l0{U^o7TPC<32Q7=AM$zqM zyq+UNj?csfU3Z{l6jH|_0Kxitf(4;D7PRC+Eat}?rRLY zB}sKZ`0~{qmlg7tKu$adBMtVrfkgw zr7Kv%!I-t1F+I&asG%s`W6FRgorSH)+V}FGu@3wuL2~P$v-`8tKzT2!=Kam{^u{kX zjA6e?S_Jv=T|uQ>|CM0j zB{sciCxgYpS~7Uw&04$o%9RIeW5NWB?{<1k{D;GoKQ^}6_&EU2bMQ>VAA&jWiT|T1 zIQLZ60ryDyE8YzY>x1jg=X&a=luI~Ly_c6O@TDxgZGjibx>oPo3G5>N!%xXE)=4&u z)Y<~SUaS}4^-H+G3b&P2R&^J0qI2mG?h8h`a)I;+^$u|GisFCw28E-9e~7mfOEsKg z@|IL`;Uq+OWoI9r)#)Od?g#h47q6rQ*zYOf-0Nf@r1rd*gC0m^`Z@LI_&|{M66{N~ zm*5A2+ItS3F}??9+dsi7$nn)k?f1f2@M_R~uJtjd@Xj;z2gAQlQ1QNdDd{I;d_%Zq z%C$b8&gt$7Ps(v7Qe+Msb*5aBw|yh8j=>w+~NLG0RVSW=f(S**|#= z(t8tHTIty5!X+qzPv5=q$Izj)@=_ge@{|kDHe%-N;Jkg&$!7IUjfreHqMcLy`Aq`x zMsXQp;Em!69^oK<;&BEB=-w=m$H!MSpwqdf5T6sou1`44;qm^gvw(N3;0>q}{q>&& zY24o?*agLgZQ%R>K17SGJ@tNjP=oz9`pUgnWAT}b7hlPli@G=KU_Eoey&;@4@m96# z4h^PTMCn=fXX-vt7aPsKY%Odx)A66JWghu(-UTc?Ogq`CY>=v`@55CQ6;Qc7*Fd3oPp4RtjA+KbV;FshDb4SQ=h7b_7r zJ~kHzqa7taHCidpY0(k#q<^017lOj3@Gw#oe=ApJqn>^V-D7Js-s zSsD~xw9j&ME~)k9E73(7faUaemivSHemIp8Y{Ki|`J$fiMAw3E+sW2Dhbep?dphj> zOHhQ_4r#fra1I`3E`GfF6r9k&Mcy!-zD~KwoA@7rTzL}Z$6Q`u2Kei3Fw7?#7+6*wBKclHp@mn4|T zWdtoiEL`Y7tr&!M1ZweIj&^&USS<}V*ZLw#%#FLVnBght!%QP5g3gXXGaLw~&n(t- z2Rb(f&2*siV$f$D==>P;G~B{*1A)IBaDJ4r60*!X2Rj!Qt7e z%Tes(#dZXa+l|qAMP6=x(GM2`aei)~9{7#Ruq)2d!4lD4^XniC4+d29_>B0CoseR7 zW-@&nQbwT9N{g)2m_%aep!BieA(Blqlzi1=gNlYKWTe6f$ z$7gIe#K#$4!AA-3?%Z`}BNhMjg2&l@xC$uhwWn0B#V||GM&PDp!qMPMaNu?fHVu4E zCLf;ok;{j%z{z8<58#oKmt{L;+_G_6n=YG)d)4#p*iCPH&0MM;q}N0 z*Seexj(~V2Yp6xouzitx?Le;+oFwYBkA)!nLc%pHg|zJ)&)s_GP@bH@ckN0w&#QUTKEVsuYis3V ze(^2%PW^UCxEJssp%{~B0&OH*K}m&Xr}y@p=bbBM)K5lTMR$J?U9{h%=5W+DjGYd= zpa8{c*k9vdBM#FZ02+SyI!J0^%W>EjAgMUB65Jea!Kybp8x@T1>BN+y_+W zdC?upd2NO>4{ND6w%3OxVx9MzTR z8?!`ltk-XHkUpl?aaMU7)fDZos>-%_&_*T*D;63B7?3e&qtM>r@m<0 z%@V!<@BE81LKBz1qs=|-?}tFMf;6Ehhj|O;XmB_QM{bLS zkS_$lRrc0*#Zi2j1P;k05OYFFlZ^Rt@0O|UlRHc$=l=j1aSmVKQ@aLI8L^YRIR+fU zCJGPUF!?v2O%kL9X93|nSU^_@;Pk0~M>))~K=A6;;Rj|Fqt^ScMtB4t9G9+O4I<_^ z{D6xNKk(69Ns*d^;yJ$B9&)LjW#xjwmav)mdQz_!u`?_o=E-xu;jPv7!|qi_dw!EM znvt6AdInSOeLi09*j;3 zV*bL2X6JqL7&qm@<0Y)Fp-xN$8qn5m_c5`7qzH--8~WHyB;u%Z}FWRl8Q%o;!hL5)t&L#GV#pGb%o)3 zM4SR&E)RN&up_Jxp))9|UoV=IM1Afn{;q|*iuLjG}V@PA?5aDq2y zvDzWNgw?nYdI@F9%MW8U?oXoHCO1P4_4B##OeDG?HT+a9IuXN#oJ{4kDo%&^vR>9W z1EEXPN$g$hKu5M&84pj!h*AAwcl1us(rj1_-4&dm)T8j=)i`H@TI|`dHyxO>$mwkS z0IQc;rvsqgj&*vo{k^N2>A>x-52TwgdZoL_CvL+(+j<+eR_wmjFvXj_RCS2G2-GVl zR&f^xU#8!(Z;0P?b1Nz6a%?ETdgS(2tkE>)A!93riYufi{!+bn*#2Hfn}D+50caEDKRIecZ&l`AJRT|3IN9WAQ* z7GyE!Q`g+BXCDjT%`p&S3!R(syh!BMETupe(%qIrmmeOFJU#VB&h`B8JNT$#YUnA2 z>duun6{KWivMvKQiI@u@4Xg_U@}M|t@Yq*NNZV6i)>w-?c>TOTU&cNQCYXJlo4WBflQiNBsRrJi$%$cKp34cy z`(s^QV|&bdSAfUGru{1Al8hEJmXuG(M7f~|`^TchbGcb!? z1Y26iC7^CJ`|SWPbZVc7w4IO!hCh0lFRVCuv>)EdtDorhY4YCNA>Sn`-_GO9hr7Sh z^1Wd^`F708Cw<_5Lq4-7RpP|7cVH!Q(k|gkbnjBn)Fl2E&Vc<;U~t7E<%DA%T#rFC zj+@QL9nRv84HlkYuRD91us0Ig$tWI{&FL0|V9vaexzLX3SF!GA`=gxHf*ljJJJj1) zkXPhTg-N><2FKCpIiOCgfBD`7Z}uYfvmC#|9Xg-G`3%;-QC@hEf*TCwLgAk?O(DZP z=+re&niV^ryl!txKePmPWEUzq=6w`--YD&&ZJ3eHWBV>l9_rCaZ3=Ct|2*h7?tyA9 zRo$j#VV|kR#%tb7sXoQAyqIijLYoR0=CS>?J=V|I8nnT5hVMmA-fqSh2yyg4=GAWf zn(gr0zUN)aGL=D&M|8UD$MJ;2WeAF+>G6wF+B`2J3gjK&U9G*mAH~x|HM>uNZ^~Xe zi`tYisJfl)-Dum=tV_#!Ad5X-BrUtwgT$0+F*Y!IGC~zc z=B7DQv0ZHy2Nvi^gv&&~*wv{+zGa)y>+r5-><#vJF58HRm%}1eTwdvpl!fd; z$QhUx1oSw96j(7=R7egV>ow~$X(cc!D$MT-oJ4)Nx*4z3J9nui#>FaFtXY0C?(~f> zdnVvT%IkHi#=7eV;B9Pigj{Ur?&B+zd=kDW+@J3RzDSSjr@QsI5?}nj7w4zC^|)M5 zUr$^xEMj6J#^Z8niFo}q9e97<$NTE)!V7S5Qt~e6#6>mRdq5H6>=JLT#_24fh%~WI zYbUF^X$$n^qKTjXSNaUq_;LlfcpGn{53fWnn3DGyR5ixR9!~3I&i%X@u$0Aqjs~a8XDZhu zZ`lFK{Tlm1t`_Ce^^*tC{L34+gRaf3sHP7v zsmZ&`dgmtQa$JYA3vg(l@K`t}nFBl2kZcKdgsZ2ZITI=$o-*2dfmga}Y?z>>vm+P;gttR2ci4z0f8v z7h1U{!g*aH_HxaA5HVLm8NKy`aJ|%9Sreeq+?PnFqqe1*WVLM=BZ>Wx9yGDmgVQValnQp5(IpUSOIMei)dD| z-U~TbwBr*n4*vUTpupcdg}>6qD{@+#RZy;u+=1TbYKYjl20uNy=4+6FPLa!pg<@kP zq3A+S5PH6@>$v&mbno>SdlOMi@0cfM!=zFlXW&q8cmd`h*Ma~La3@QytXkobAE?`Y zD_HM_K(%mRE_NyNNAzI!$Q*sz{iFU=Os~DgHiXXC`n_C5>DwlPHN&wS-TAmv)tdU03#bo=%2_a`;yJjMy2O@m8=sMF z@|jTV!Z$B_CwDY)z$L#q&GG9m$FYb(4Lp$jZbYBAWFPe>K1R@c+@JWC>wX$AQ*8ZOZ&&e$d`(VpHZIg_43O{)_c~iyRB-Zz z68XeaCH#ssD_zsxE3v8TQB_bkCK0^bjybgs^Np_}!$ww%UY=Z@jRC z70-)wjcH1DjVT{KMAq?~=!LB>GO-VH;=-D6NFJ7vOoLZA2Y>7S_|Vh5ALC z;T)_1?>&HW_>CKpxAhFtG0Xc4AMtk+e<&>UV~JFP{ca*@+2HSzAlA(s6iZ<)_{Svp zuSxLVlHk85!9OLzKQq`Q&-lxWjKp7FWJJEaSS=-=UZh;|=|xHP(xe#DXz+vfT&&F@my3~%{H$SIfO55J zoiW*?ccO?Ljs{P+6J--cWxqf;23EM#5kD{y3;zY-uO<9sh5rZe@ufg=vF-10wB`=+ zBl3+qILO^G?6?jX(ZMKH+1!F)_?Tpu%ZS47Ff170{2N5lpMt{pU&6xXGvp=Ur8tWh^#L}qcWfqAz!BnWMJ6W1jW{<<0Tr|z>V68O~T$oWlpC4Pw^mD6FW2$?68ZX6@aC0qd72|E# z^ts*0$Ul2uDUM;Gk2wyKwSFu?tW1_#&n3a1O7IX+XbD-puKsy}!ct2u_K)@pDeN~b zF^nY<6k=PF;4c!~UnRj`O7M0v{<#DXC0&}hy{wAHXD`S9S%N^*_M0q#yP1h4aA6j~ zg;@p{rsOV6AzheKx-i9bVM^q}WNyRmJ1}HF=)P+!vdn?-ep5u5iy-PW1s0AeaQvlH z;DGkClYr>eTGV zYYB_ql43|e4L_cIO*iw_K9k~)*Gk5lnQ?|nDx8$5RD@-k0!y8wz_C_{)20=IqRlC} z2-u2TlHHYEc&ixFm@GenV}6XZ@gpd@KgEv#<@Zp#t|hzUMh*%9Xra^f8g)lO&xLeW~sa}-56^*dy_bIZ1bW*jFp{ZnS znI+5Qg^9Tl03|#hD`7}W!Xn1Z8L9SWnG+U`kdkd;g4E8O!1zNIlI6e@a{|Epr|rz8 z-K(m_(OBanxV_;K7M+k1gMh6VIFsVXa-W!lKa> z9|B@qlhpE}#Lx)DnN)@YOUqXV@U<%CMH4PrB9ngVJB&}FtM?>Uon+5@* zSh?FT(>j^tE(>om65rq=RQ5@gfC42q*+?wDX^pWV++V#U34j1U zk8ACB827-@vdtyBkQO)xj?0eV=c*4Qc&MBai=fPfdjx3JOky=orPrR8WREpLytrzF z$}=f3Ik-y1kyuK?b5j5n(UN_JL>`H8M6F7sAg zlI%S`mXu2*8e6V=wOn!PD=(Lw5Q|2zFN-_>&%p1z|8co^%md|`0qwDsmvxfuBBxLr zT(%ff&bYeYo~_@jZT)gSx*M`yrS(gbfs(Q4Jc9KE+27+yhn(?I-MrnG-wt`DCwIapyj|)13s5R{+0AcqHN(6Y6m$(USvb%;Z&C)~0HU`6DU~i#$hKiGKN7qM zP%+38+k9YN+!6bGvYtc;3V@hGgrGGK?f3rSYqqf+wXkl!=FF1qCwk!Xo)HZ+o= zTSti-NYOPA<)ihSD&?IoS4wRkj>%?7hI^uCps{*uyaiXumFftWI!?QQP;KwCQIA(k zJ&vuqSTeH)0>c;tAT?FrE#0((WJw)rV!;bia2PSpu*YNq^FGRiBZ#Z#!k=(A5E%Dc z43RhG9bV2nc1o!mT*(Dr)d7Q;GI+;EW7}lxYQDN{SECtKBvotN-ahH={qO2mur3y- zaZlh_DwTiMj6cBArets>iWTAjTWjTR$z7JTbvPndHX{efC5p80m@1QoTnLWfvGG#G;yiRSv)^1hNr~1h&J#oFJ|WAFHwpTHJO~ zF`$3$lkDi^*6*>);;cKWf`zg{U9;81^r9^~$#5sJK5S$DCwO6h>2G+@kGlOO=!WMV zm|EhODII*4!ijF-o!*j>eBxTv=nU?JGkfQAJFgtd6WI101k)0l9jJIr( zmkm<{SZpD{GRig)3nZDzFPj-!`!6S%sY-pyho?WppoEU5+G(fxiido&$rw(rj4s z$_6H2B})!+2i{UZvF`+1%;`1jPrw58#6b8F@Gt4U#I!D)cO3{n3P{d;48P_sn%D5- zuwk(!^Kk&hGsv3 zSgIGNmFoE+HaEZNgC}>u>A`rT0%;uz&qFK;JE zxn>_}&OkQU?*w4vnv)6n1DgW-6}=1M`hHuZW!u}i4+=X3ay#<#~3=ZPg4H7rPOy7B90clC8P%8-cXQkdykm#MsQ3Dlwo z0~u;j0gCfmhod(nwEB^P?54s}N`oaJk93KsLG&X%dZp!Qv$iAX_3_~TnYdGA5!`d!Q`w-Tc6 zB%gfYtUp-x5$YTr&{|1AmR0O!%%QtKwrrj%KZEEdoMn&*L?UHcg9HD+Kplp zQlZk;7DV5JIc#7vif_Q$gcpNorntp|%1q7*wb-~Z5Mr|yPiDV~F6YJAPIKNYSO;1Y z{2*^#3v$vbaMbiBG|WJc3hA+Xycnjr^X79bhWI>R`m&puA7_?Eyl50{B-jXm-js+V zU}2&c>=5S*J@qb35LT7&g7FhY?UyRC?OXZqj%aBeZB>e#;{18x%=zib$a4$%TCrqx zBKd~9WDdlT<0GeJ|G)ALcedAl@b3`4%KsF*{cjl4R8X_kohAW z>M#m6u_JsCIOdB|F#2hx=Qx4}Lbk85NZNmOga5n9Kl~E13g2U-U)dhDnCfbVQBxm7 z-#r^-{l)+iTXPwl(hB*=g};#w+7E}3BtG6x<_@Vnd*;`10r%_~)Aq;Gg;*h=-{-#Z z{V1>e*^dTIAs79AP+5XlcPO={CBf-Qa7GfGnFMPRoQ&q$8j|4cq)?F{s=w5#CeT3% zqHap9sS*@!vm`i)(Crc^UR89Gp|e8pFd}Tvpxd;i@a=2MghlWh@e(%y)dSkrb_Lk& zwlE}5&tl}!zO_kJ3{}s{tc((txs{)Q>RD}s1vtqOmOP{EA1q-Jze)8*cq?|TIUHp| zeGyO%WptF`DTsFxaZnMH{1x-MBySBzG1A8gjXj!A%)U;q-51a0EApNzL2!X z=&eMzY9s(^yc2vfY81rZj**bySVGBrNt+G@*zd#>GCeyb;t>Gxa5{cG9kPu?^N4Q6 zBS3XHMnb{8iny7ICODRmk!rhy0vvD>3Yqt(BqRV5E+1b)Hr?p+DG3RH0-tYJpdc>a zxm`ShWAPZNJ%F5TIux2yoPd`jTWLhp|EPWqM)1sU}KLbQLLC z^-7LaZCg!(wev3Rk`o+D&PeT7V;f&PK z$+x!`!egToLb+v$$_aqVcaBwV-8MVUMCEE9ghfX)vlUm6R#jJIszIFe!`MHUSWJw^-PtFf>2|X4l?s%!EZ>O9@LrZ58#Cl~)jV+_ha^ zf@66ZsUF_uhy+-5!U~ytQe86v5Ef?#vyO;^kD)dh2+Mr-ih$~hw$>xSnqw$=j-cG? z`RpU^;`5@&zy+86Gz;!P2CW^$b58L6zxzColIP_sF=P zcfMj3rzr)hbANKTd}lmOPga&ouA zoK)Q`hki>~zm&qVK4qy#_PwxDxgFjD)JawfBS_acZue6i`%O;9)IP@2lXX$98}U+H zy=-lXwHWU4<>bCh%!Ig>Nl_X_Ovm5`!-ruu=0IBJLHNPu3x2WQY90YxuNZ@vc)K}m z$thW-G?mpV*7&y_Ia}!Ujyx&3Tj`CcW7u&lPwf@RgDau7(VieDE}oMSQh9EVXtikN z8t)P&@K+n{_12uJa@`N*NZ-~JcZ2zLNl&T!)fIjMTYMRXv}^&zf|B^WEEMn9h;Ph7 z@m7ua&=iykhz->?Z5pr`q~DY-0Dhz-i$%jPgDqVMiR&UH^uhhngYo1a)}cmVhgg-G zua5Jc^&vWY52hS_;38m<@gd!4QK0l&Hztl^3xGCVOR<4nj6P2r)DO zUib)MU&9af@5v(kCW!P*##IxKAWhzfzf;4?l)BBG)qp}1k7BDjzn zDlV02Pk7){;L&>z_XX2T%StUR%FI$*w9?A0-O@^p%B;-F$}ih&Q_ITAFaEzXb0547 z#icLme;?er_spC*bLPx)=gyonBTM)kiJ?1mVpnBF7rzXVucU30iQ$>lJE)5hl=lp* zd|{cxe>R#KgezUbvFwL0@P*Hx`e9WPeY@J5Fq8ckENn2B+Ca7KY zI$(^%q54yeLy!|r3yDK~RO1lji9=mnH4Z^eIB0&v4^_fy9Dz!IpL`J zqJFd*haiDdkIpS)_X;{n{CiY06brb8k`EnmMyK&aM8qE?e|`M>xcOQR3Bb8|#D4%U z-AtN zLRG`&s?w+UGNx`OVK_=(_a2F zJnA!lhXgF2R1?743H!dN{um!P_5>eMFK=N*0HHS=)V+t^4167O-4h~#T6(vO1`32(4)rTbSm~p7zqiV(h!W~P( zrKJ(|^iOqqh9X2-RttHnUR1T*yr^cnc~RPKUNR?=mP5^4elubW!!Z2EXQM8jn!Gxr z5U0*4pu*|s+#bO_zPs@C_#Lol`&g&F9}b*tN zc#P4%^cqiI^p23X=$(O228T{#8l-8t8N8KF1-|1%4cd`$98qka;KaU@ zu`oW;!klv!e=T9l_mU#^44NeR8mHI_?Or3dibd>T8KRfQx!B#w3A2hAeV4BVziWt= zPxC~vA(DT10937fgtBlX+KhUtY5+F26lWBMpsp!mCqnF{(p}x-#2$p);T+1(AQ~Ts zDx@Ugn}8kSgfXTTW4{wpaelUXzZ0mcptBVbYurDn3(K10&_7Vd zkNtI2Yh-*RI?S$Vn2lL3>?2A==|B+X%I#yTB4Dx;y@n%{qDuiu9aVZS-|r$Hk`4%C zr9O-)Gz>oq0v3D-`L}ML?2uAGmEc0KSFLaS1e8r6y+{x(NR@|=tf_Lp8Z;mF0Hvb} zw|@Ips%|lf7FF9*wAgs`lip6c*>9agH=C^8h}Qt@_9xhdo&&7r9kvR7tV>U+pH1@z zcJPC`LFc=iA&GvDh!~hrGt^t4ET|8V3V>9>^%h77-z^CN_;g8wsKxGpP^<2OCL?+q z%tZKGz7T@0_VATm4o(%aP;{N|Y>L~S zf_LVNzLcu=dZ9dGD5HiekMjl%AmJv8H81pfv8tXd}(!LDkHb>Ca&Qw z<=dorj5BSQFr0f@9hPXlHWYeRRFA9ltf~c~I+)OPr7?Od(0oYHw0%eQ1Mk@x$YFq-+5{CG zEP{b0*+|iGW9qxnfVl`cw@Ke&vG9MGXzcG2i)!CEmCaf&=0G6=e>-$ zk07oi08?C}NcFTAGLL7>I?F9poi^#jfYE<;ZyAm$Q}5yF6mC0CsF@O#MiTN}BKByF zpN(vyQ@#eNiCv%ZcI~0U{(2{K9r#BueYLR;HfNlj0g|+J`lFD{>^=lghUmR(Mt(L3 zc`EU9kOGQAy!6FheTwaRcv((>D|#P@R~lAfu#a@O(=L@XiV)1nGe!{|o2eUw8e)Av zlsr6q{Tzi-T_%YvHrp{?;o?EQKgGTz9Sn+PDN>@(PSH0}*|!F-8;MuNb`oLes`c?0 zDB;V=`^2^!7a3S!xTEY9kq)GQIw^LDw8?VEL7hKRCfhj`_-9T`-Ri1{;j^!x(DShvMh!&#?>)ETz_5ldbA$xXGAjvL?h7*>Ww`Li2=#m{BIH&1@-7>y(&8e+e-erG@rVt0}G6 zRBE>x3ln0pOD7bXa|fEH=U672iqj@^>t^hd+ofyAl;qB)r0yv#JrgS}wwsGgj?_n( z>=??4H$J{y*(4P|!;)vpv=k){HWf`US<~%yt9e4H-DFFMkqDQ7wR|6!F@`^g{5k_UZzgT7+%jsMAAdgl*+-gEbZd4_eZzy9ONkP(GjGPXXvZCLvrJ04y; z;Mq?nAK2YA_}Ooszb)=m^aCS&Muk7@*L2vEK~KE1J^1IjD@g2(!;eH#HD}D(GdlvVO zxQ4@TKf>q0@4vX9v&+6lJQ{bdhyQr^4aajK{2~F1SHkbGPwEcy|7)G^lxR-jL1{Sj;iGG+i>5gY*{ z5Ih4^?sG>Ng!siceXtbw0w837uUO|K27!xQ1QrSkMm7OYCiWCqZ{&$K89{k$D+0rv z1BW1f5rVcOAjUah1kyI*e4ZR6;$ZbHccdI-&WP<82Y`YZOiqMs-Ud=@XG#tv%8ym# zBnxa?K>r|6dr%IF;b8*zeUMo@{wVO=GCxEq)f`=lN9McKfby&v)w4XOBElfaB^5H2 z0%g^XXJRe`ZV?1-0m~Nb@_%k-!~Jj~_4yEVX8#F9?s-0uJu~zaNDQx;grgqhpd6+l zo3+hWHeMiS;jAXI&YAljBr?yRGtVp@2cg75l+pxInL5^@RF+^evx#dIXV%&VqE)yC zdnVf+NKVOisztJU5XC83isGEC2~#Uh$x^UqvIRiuWWkQ(=htX_@EO(2Gn#Yq_X8!) z6UCE-wLt96&@C|-hg8y?eu3yiS=J?cjn*T&&DED&O|Naj@ttBUEH#ZE&kV!>O}7W= zc)EA?hPl3*FTrbAu-U+sta#-UGxesL^XwD#6HVrViI{RQ2oBN1FuDTzc<|^$`B6tA zi8a31QQetet{gCBWd;_FH`{20HMF>JdO)tFsKjVB(fi+EH%+tCgKu$Z5#0mxjCNBF z#z-PG*H~yO&NEu|MdOQ&MJE5E@d!3%VFVXiG``ek8fi0GhfXnBt>!!vhUxSJcLrVq zd)4VitHN;QKSyPzmDkWAr8FGtXR#I;1MV)47|bPi8kCWh>8r|Kl^jwq7$_mS{D`y<;d^JzAqIS1 zu;8Ncg=U+5gb5{Pv|Fq$B^jDqYO`C4)bZR9lu!T)3KFQHi0T)Omkb(<3$pO7M>UBX zxIs@T@dWNKvP&%bkPvED3@v~eg4%2I}^me5ev7M5FTwVH}^r&oK0mY6W$FSb|v z1eREAX1jTcX@t3;II!4MfZ?eGA|<^{Q?9wlSXh<$aOY$k5{Yz8%HiF};q6W&$PqAN zdeH<+VVJSlX3kK#m0o_u#$x#t>EIBp!CY*%PglJiyt;ZfRCDN_VuVZ19Sqi2eI>~t zK!eSNg(e9G77JNqnhVT!n^UuE;360q9O1~2ny&P1=yjA}Q zN!iUeQf1POh{M|rJ6y$fVI(wugANd@eX>tdl^sEi>VTf+KK(j4KtCeoM}+iP>SDZ=9-qQY z`K)ZSA69L|kGd7Q96xG~jvx7p=E*n@CYA{>P@fS@yjMY?M2zyF$5J2TN%|&q>!@!^ zw@!NK7&D%%$MO~9o%PM=)*@5P|qWzyU+)$KeV{yLCqIUl|ss24FGet=S{d6L_CiqC=%jPsfgzYYX?5G!Tf8EaYDASz@*K*x~Oz%vp5&74yVaZlbxp)MBV;Kcm``#b$b9SWf ziXFGaJRZ&a!EQ+W-i1qgv1~1 z^Wje#Gq6-=b8!s>&hxk$!=L5{OE5q4H_QvVsIWS;Ni)EoiwZ6&oH{Ge&cGyQEfi?K z!K_M+3bfxL&?R+;hT{(iaG4AAra-GeSHK0y+k{~~Ak}ih&>yHhj8LAXS)(bKnL0mR zz(7i==IG9IQ;z^Op=MOixv7na(Afx;y^y$?B0DqG0-7W3YC`m6swL1jX)Kw zc}MkR?J-2qW{susjQC!FcAbDMJ)N=)cxG z1I4bIu)HcOBc}KTV=%zFVgvwM98OFOIwJgFO)CuOLP8`QkC$-}aN`jcgR3_#SdhWR zkN8l3ge_x`N16C%Wo7h)3x9anxpOD(0l2xbR0_9umoCwxC+U(LJYnH^0nT4sEvm>< zJ*RpcgUeCR%kb>@U8;JX@Ah*S38aWBcwgo3D8An+e{;HTP~lDTj`AzNul&B>aVHv7 zRixzIDZ0Xr{9NcgAOqqNO}5HjL^F2Kj2%?770uWI<{z4|gTt)B#m1n@sKL!np~~OQ zP(fR4(-zwti){^DEFJphnbFKNO9yoe1#QhpTQmBntr^wr`3rpQx({;ekWqArm2hv%L^M0Wr*UkZFYUB3k%DyEbj`#+Ig$~ySd&$0j0arj|tK$d_`99#0U z1-MoqjuC!j>q2%e_W_62wtqnw4hj&qF71I+4>-FKHVMy%VM_5gtZScj`I^?ZW1Tlv za;%{J&-Q;JQHDWSmIgd5sO+fGISlP_P3g=X4Go0Tt;vm?rv^zTqXNi%iOVZiVJ(m-| zCHojhq>)%HK0g*0k$p_f(Vf{NbC-mgQ9W5}g9sO~KD-;zYq>sbB=v~%Ss%_tgr0V^ zhzVF-m;1Y&uL=Ndh}-V$B%GypFVK_Dj_xVJ`w*#akB+#u!;`kdlV)M0?eL`S@PwV8 zv_%hX(ZjLm5k~7As)>3V?eFblQcZ2@3azQaUM>=7-XDaDn!M?Ppeneu%tvrht-yX=RR!ZV_F~d7SVY@WCpDddPDMD2AKuaI{k*#4!Y0|y1*G8+D2>I zMr+zeYuYjhMl9Mv7wSP5O$S+u3x<~#7vt-5C=M@C54*6H6dI>%HXxV42IQYQzx7Y$ z`+6v&*ZJ>SY^|Yv*Iv5sTG}hVrf*y4J>nhbsyd&kO8dh*pQYLqbEY+Y^U}WXJrVBs z_FWH{zJKq*lpTHlevUiM+tL2=^ey}o_JPvAgWdOqC%x8l>dDf_axK4uKLF}Q>&ud?J`iTAujumZ4y06YV7P%h3>ezJ4eKU6F&-*PPaY>F9-3CGzum}AJ z=*6C65Bd{8sns6zKLSykfA|Zw?9uj~(Dt6t_MRxII(<{ydqUfL!s)C{?VwEzbuaRu z&Bnt`bgr_?4iuU;rlyUlX=7T=6H4tS8$Khwp50!zN4$&`;~3sLKMxb9&BK@{T)KIf zUN?O`kLF>TeS6EY!5@6J%%KOCv8lnj1wDUwUJ4`*{rh zKj2Q=dUnKh9Pw|!o#uhA!aW3VCcc%m`5^cCpk1|@4|=8c^FjN7+K*;OO4xLk3GE0n z>ojAl=D~O_W~D3(KC~o9YNTU}-`vSn7j`mRN7mNdKf-S?5#lX#F7s+9P`e z+!-i<{{XF-CpG7c-2n6FI8PMM4Bbd}(w>OkcA1ZZ-E!w*6p0;kx232MwatBNM2zzu z(KY|OYC?3Ez$-wE@kY^E24*P1wf2VODTT>EjrWG?O%4VaFL!lCCKGK_E$V?kqQ-iU z>dg5=Kyzcqk%A}hj}SZ306PPPQ;g!Fc2igjcKTr(dK@B2b=WhiYtbC78P&aTz5r^h zcdE{rT#UVIhZj%k{mLR)za9a35}!DQ`cv1${W+QgaTdu`gcuAJGob`(xXV^O1 z&(@@4OzTvnU;OU0Ho3#FPDJO?I-f&J_4Qp`wB|(T%-VtT7@n8lqBCe|eTmMNrSod( zeA($(WBMD`k6d(D7CtJR!mg5@9m(90WmjQ3%zw#LWiq8|HUxXXN?JH^hv)Jb~S!A0W>%{F_Ls(xV6 zc(ZM|w#KKe@o8&(#ktdceSMwQ_vleGUSJo!#uqliWVd7E1a<%DK1Q4ApRv}b&DP?T z@$cMIbs97w>%87QG(WZd4=$bFeNB5GIP1;RT;xfJ-Jt`IN3VPNkuLiNjJf`Xc}ABV z0BQQIm=!=nSDycq0lxm;^Swv~{hZT@uhm{pos`S93A4Xo!b~$;*R(seFF)>kw&)*hzipJzEkN>Kty~y@ldphWeceV#BKk$&yk5e1azGMRu8n>dc z`hETP_aNPYelO+>eeuMJt8!M38Ao~qA3oe^R&SJDO=Ef5qbwKt0#D$|1s>U|F2SA7 z_U!>b+OsUnhq2G#NBRYEc&0J`VTAd?kIwm}{mWj&Guf^#!E+`?s@nH}yWJ`s<$KQW zfwyY^JwRKYU4(jp*g3p*>IHP5?|G>glp;ds0%4F>D$cOAuxZd*IkypO7z|D0yhn63 z%%kIcy&}4sDYt>TPMB#mPQ`q4;t2B$6Z&OVZ>l-ZK2bl>WG7=K5e;rcV&;#`=?!jER!u0{Yr6d!1Wg0A&c{#KXkD= za%^dT9_PM3jD(Zy*g}dnk;=iIVbocBDq45?V)L6b zx}y=)wC?m0!szTAT7SyK{c6Cp_C)JWwB|%>O|;JR1N>=yX#p-;U$Oyr0N$79{eE!K z7W+4z7yJKgedz+$RcLkT9P27#U8y$fDzvWD-P=BnwOL^qf(0J0n?TCQu4^sdo(RI* zDVVUYsnKq+YKQD-dr>;ss%ds==xZ+WkezVsLOH>dr>)6YCYy@WCUooe|71<3?he?r z`TBqRd_9%04&V1%Fi5KN^Y!3S{Ah9;|HSinOzzcrz9C;m*IaeRaF;APIxdOtcc>&)K`u6mbFX3vREZ+?Txsn+(^Venb^_8S4W=?;ue!M+z#N+r_p2mms)qEjesjOPhfHfc2 zUOta+;fMH0zL_89M!t>b^NxHJ@4zE@Yd(di@Lc%k@$I~VFNP~(-AC!{<#YIxh&h~Z z;-Bz|{Aqra&)_ff&w#U=zsT+UA^sMh4(ifh;s`3rs&eqHa{3;>f^SgMmYB!*QvL?g z&gPSN5|0J{Ha>(GaOp2`Bu_Fo2Ujv>JAakWLLS~ntjGALd@_HQf5~rz9KPrG^Y=ip zh~I#mwc&|;C{Km#zu@=qH&q;ozXupkDceEq9{vtDLw+)MpK=R-4w$!rtK@OCJnwmeYCAxP8!!jst2ZO4On3*a?D&7Q`m@@eatvXWng zx-^n^Mo1#!ha;wRF38WWuLNEKUZ0+ z>q zNO1?QSqPn_tZGD&jo*UMC48x}DuOAw;At$}NlGEE zd}Y3p8_1NI=s!mDYf+PvcqV@ZQtOZM?~anI;62dqys18SgG~4Ft5J3qV(35uo=Uqg5u*g`D;C#Rh z_#VJD46+yoY3#y9t=gij67ejM+P#P|102WkThWuWKq=e|>TS>_{E(A4_$)-O;`x32 z5fw+~W|be+v?AoDM7dsBuH38Kk83%et?=1LwGMr14$lQIVZ0%7H3TJk2(8Y{KSw(% zLQ5QtUf~n8!NxoVSR;^Qlc=Ky)!Nelt+;_mH4g6z9qru0eR%+`sVL*Aycqptv6?$s zMzUT}JwK?{t5|MDe<;gG=At#q<$mOj^5~DNE!xx)9S0e##8r<6^LnTUKFFaDu+z}Tq@g$d6qhVXSsz6kQsYlXZ+JKQ#;JI( zwZiji^d=k8*CyZ{_%!#|wTHYC(Qk(9M!R#+#=N12Lz?Lid`|IcCJu1DlaMT z|r$12fcVdwERzy_AO|2 zw{ksNwH{^K9Go|IDaCB`D%mdil%<%5mi7{A?el26<00+$c^BP#;KhhksXS%P4Fsq3 zPMiS=jo{1qYC&l&dhcs=^Y|j&a(<6)CBMt5U6!E7l(ls-YRl882fdJA*;A&XzOK@t z-szc6LG9~-T-?X|qJD&BKw5x*%S;0R>EzE?3 zGEv@bQE%F!d|t#wQ+Bj>A}de>Zp$=+x-T3tEfC!=hchjMHEWe z5B+c}*`p~3(esw!T{u|x2;Z$+%5Z7HTnXPYgzi_mDAZRrz?-xQTH+K?9*7qF zh^UQ`Xq6lo`+@0rcgUQTL*`q--Cn!{ve6btsx7iB%C;+Vjvfkedx>{PCf@%>aMuLf zwE*p0@OL9hMD{DP?Zt_AV0}ouJ5p|hoHPb*OJybAg!DGgRt76Wm0`HD0nyuh0qS2p zlyWd{q$8TU(3|8z#_dI2Z3Q|{L8?vp7{UTC3##7Z@*ODi5sdyX7@Td#CEtqjIfUPd zx?{k*lj62T{y$ZkAy?7JgC4SKgg&YjdQPfeeNjg;(B=bB8c7I^1TBH748mAMjFa>w zXl)oJVKfkd~Gm@$aq7$M32zbD_J z!-cVighhQ*Zc^~2q}&R*Y*UiJT~kOAafj5P{^vaUB*UFbYQ1Hp^S2kfQHpDGh={P(3*^+&CPu&u`_B}tt`lWYm ze)#j1w>0OVKjs4t>4{ymFyMHU4B~9l@@4Vs1m#=@U)2_FClzm+XudZ1C`+qBD zoKAZ4)E~#+O!~=wfPdfqkbUsrLs5S`et6DjBab@l^6!u9|8>WluoM3YY<^+g+4juXM74y`1rSI-Yjs*d+GHZHv3ntZW!`f{wpENZoWOVf6pnA*FJePl5F>{ zpZ$2FQ&|V1Li-(Sk@RwA>|1lz#J>CN-EDGu*)AiUs(VK5?fgy0W1WAxA+URL~2fkQo zH4a@lo%Rg){NR+?e_$eu^tVXwssh(BSe)OCdOZ<~Y;DjSgJGWQ*dJ^e^gT{P`Q#CV z&BWUIbFj%R3_)c4p2L!QGN!)h%Sxjm~K;1icU7zX)lsK-^DpeTJ~H;9)G{ z-wnRM03N9fT#oxH;2uSs$BT55#>MR}g6ZgnKe@ zx+6RYbnb$Fqo&{HzJJ0?klZ=5Sq+Fg6H~4J@8}2L(C?JpOD1oS9n- zR8-so8H8j;=g-so`fxSA+C zXPJ%&Z&wqdXLjkJ@PwMsz3IKtap41U-Re`H3zQcfA&&FpT`OnJ#9ZaK>wF@+%ae{8 z?_ArIo#ji%kBePNoZC}PEPKkEUJa?WP1l?J>6mhl^r?;(ppKrqhSE{x?cCFMj_xXB zIYZ95=SKQ|%gTv}kE(X}?Id*=2!MD3X?ST*8BmyRd*V}&x2 zjeKON6d`smioih)M2)B1)w8-)Z2tDgD7Gtq-w$&+99L~c2u=OZY`7pedrrT;E&gZVr<`qTSg^IOoI{JM|@<9o@6I z{1B<14eU{s%taNaR-1vkT;0!_;YYd$=V}TMf>hVql5*__GjMWrEu*>@a$iL4RJ&B2 zg>?+ky4Nn6r_jDd;f+MSAJ2UPV%~(`*kSC)7KxkHt;7!aA1EmvH zWBO949#x#H8gD=}n5TM1bIn`-W?s?U^OyxR@aay?Ij`RX1vV<~D4uyf4#d`;h~DzP zq&a$FXH>^4|6IAh6%k#SsgCHH|MoF8Ai7JS0}x}pvEnR)w}Ir6HAk|ZQg{cbFczv7 zmjl(C97&~qqwI>X%7 z-*!}>wg;W5DACn=C`UEEYNe_bx`qxBHZY``X%t6^wegAtHA8W(ST&ya!>=;bBgYJ! zOpv%ArYbdir+pBDFv;@4j4Z2NF`&O>A%63*x@R+3nQUV2!yvbRe zX0J{&SI0N5soS#qM~oorcnR0_J^QpWPVQ_<>YgI(eJ=P@OKZp4-kYOLRvSitX`K?2 z=r18ALv9I?R%|M@TaASYG1;XP3eC9#P1AEOsiASUFs1w_eC=y}^+k0v+BopvdMaz( zet&57?!xPxHop4zkFT`$p|y{{ckrjZKQK#wfnRTRTXx#}C!P=C5i#F|p3K57^En{R8Y}GcZ~s4Ghg*_TpxY|CfilVBfoj z544!~MZnQ{$%DSVf$VdqhsP{lA3kjHs$Z{LoRay&t;=#AyPfQE$A0nbor_+5<4!v3 z`sn7g`yMJWt}pyK_i?hx4H;3m#eVRsEo77X+vM+sU2c2xH7_pT_g#f`cl}R4J~^?< z?smq1Hhk4I_}Op9-eEd^)y+*$Zh!2=sVO1%|K>Mt*KYw=uKQ#3k&rWFi#sa(VZR@S zzv%C_GkA;ot9@OKLsLBrlZi#0)z2ord2s;A5j1hK(6m2V7|ge-ZSWAZ{Mg zCi_^jX`Kxkbgsf6#Iqs}*}%RCoQt^vzZ!VIAgy6AYtigi-R)QDXzz2{uf7eWTH3GD0p7h$ zu)TB`iIN?I!%C)4Ev;k@fe5T*&Q8Qxf0mB+hLz0OBY5i4PDQi}vXTi$J@;z-;%+5F z2Qqj?bXOC83W(>llA&Y1YiT8OB~WW^B|}Ghd&r?vEsRabw%#LqGNP-xG#&Wu713P| zcLLEv4n)zpxGzWZ_K*W1c@}XRP(9>8sNU42KLm0rRn|hBvy}}UYqA+K3sWy^tqv(a z3<3#fBOr4@c0FbgFJ{wWS()zNmmy1+8qTu+%OQ?zt_% z9sm)T8=akqGi$xb#_(JbJef^Lv{XklqE~R9jD7+F@n<98%;ZcMCMKQ@*^|N9hytrR zDG1uBm-Yn6gKLF*ell$Wqr)l@ot>03)7udZ_HDJ{z?1!_5xJ@|_~*9vD*moj*zCB8OT%-cEqr-+755t1R)&iNF$`P6LQYR zWY`;atxY6P#)}ZOr^A|xtV+oi(Yb8S-KY3Vi$rPe<(-5xvkw6sIXoM>C!3ETlCTt< zhNdcIS({_4`oVrt*!Hs&^MTx4f>0`C?LS z2syLa9F~P$YZJ+n@fL`xEfHO`dS4%gk46_`G;D&7_qJCfCslJU3nx}#7|i_C!+=qO8Ip)!+3%uKKF4X6R)aX){@ePBB@n<~);T=tXUiVTw@n{Mh%I z2V?R{0N5`dD;1a`s)j-_9A(tm>oJ65JV}p{)kPm{6-gGiLrd)?rFO^RR@pf7M8^%# znFedUMf#Qa(YuI#fyA$7_GPlB+wE5Kgi^c7MxybBePXF;{CH*{`CtO4j-P9-<8G(=U%Y z&0HOS@oKU|_5N2X)7I?)pH}a*diQtOj%xKzt9M$xbNjs2#wZuwC^Xq=vimza6s_KA z^-imI9y7J56wo7v_FtVpubk%pX=y;S3%EGD0QJ0e($ROElSR7sj&ra`XP$KB=}aop zjXw#IJI-~&W7WA$q)$$IX&cdO&r8c{zNYyhMVk|NR6pb&&-pa--yQwJDW7pRD zMdPQMi<3JIG8PwPWnwKGJtEFX)f7$~8`VnX4^81@ib>sX*s+DMwzF`e9)<=?_wqV_ zJ*}H5LySZ8Q0Qj{htiQATJ_AYg9G$~r3dqa^#;>JO`GvndMH3M<+HNQbe46oZI{?h6nF#c`{W?}26jlVB)C&#(!Lb9w1 zwnTdM+7h#hpnEjPY_pHBTTOW7SQ8xDuP%5OvIRu9ZpJRTUAlHmksE3JkL`kQKlwwM z<6Gm|MMZa$-LLca#;21H>|U|(viJMU`EQkN@AJ3CoucoMmdAh9JM4C!cxQXC@&gYE z{W!G&eVaV{>ByJ?35{E=JN>FSA2;d!NhxH*JLTk`L;Ag#Gn8z0b5@QS_wKYdxu4|b zTF5q+cJ_CC&lI69lie--$i}uKuKnm6mczdk-!i%AE1tmBMzx*I#+|-*dcbcz@ahBa zLHN=4&l=!=jpt0<>08JT_rt(@1NXh~=XjovJK61aM!Y3}$wX26UUL6l+FzURr31D9 zUV0y>;snTIVZ?L32i$!?Dbb05-lIEP5ln%`qBzaaJF2Jcz_bgsf{m!jxYgYX_Q{$M z-K{^j0MWzxlZ-%|GdKnlFdo*QgyfmEtAOfZ{Yj|atUrGRa#u5Kd5o}Rt3KVfHZ~}~ zA!>s6s99A6$!v@)qm1xbiHWY(-XqAYR-1@!#`q%MJE~`f2a)xb1;;<0pSj90L~G_5 z%~|RTF|3L6MDb){5fBqgL{+V=eQGOc(>8OD;%Y$rvL}jr<=G9CCazSRGcXalx-qW7 zp3F}IQmiYIx2oa`Q>Ci&rAEP)*93db+Ef%jM2wNuz{H#*I&=CUkg86Daz^sx_hF#+ z79+{Jsvpe%2|BLYG>kS4LqlE@EVYbwi`B(~OPhv)L?Rt08M&I(G;(;Wrwvs}Fvt-g z=Ul>!#Wu4x4O6Tg@WglrJ2Rk$Mw=L2&w-(%@O)0;`66b% z2q!w_6b=^{Itnir;pHN{g3=M;6(WTSqM#%C6(YP+_*M$Km4fqR)xSy_NKZbOt9QyD zNs97~96?rqbjX2lfrV$_z$FYv&X5a&bdnl!BE!@)ksATa{3Ayal4m)96DSW}FdY4$pu?h=39brjX%e)bm<04FYCQP~uTp`nZ zWG+dzM2RlKq6^PzT}c*nh?e6bJW;Pi?nEjgROX6cq9E!Uxgssf0r5_-q$6`k{=i0# zz!6;FCB3YDo+4pFxSF8NAanN#u?+>7$0x=*|iRq`cF z5vtzhGqs%xkyA=v;z*egOgMCxGNU#~DH6qUQIiRxH0Unr$(k(M8GK~P(p^v%B}neRt@t?tOb^LC?`vMpghn||!lTPwN^c47kqQD}`O?2NnsDYd3d=~PzTDURN(1hX z^|re3FvgLxbfa+a{-!?*I| zx*$*&H3nrKtBc^VD8s6|D9;n3{w!B~k+<-AB+nngiL7x#wpdyG5n(}~6C!D$rc(WE z3n|!;o9~c%10P3Cg_M*q{*C@S{-avMK~rBTC{V2u^;y*Q(>jWu#J@*gjsruq2A?AS z6UK5f{UZHxB5m;PsOW}(doT(CW|HXrcspAV?xWE+1uLRbjC z_&{)ed2)Gqaz%M^rC+bH0|G#fkwxSQnE=;d6MTUYqzuxa4PuB5bcDkLzl!qmN+C+*5D5dWs3@-# zl0}BW2ZAdq%PWPTQ7kA22p*D#Xdz1o57L5oAP)!tIYt)2G-!cqunE4v2vP=V&;~KY z20FswfnTL4Gl&v7M8be8MG>O>QQ#aGAuk{sq)4q@GcZ;q~&r^4W#`Pb?bjE}$lUi+D9yGX9VCL=l z74zE`^$1*$oS(5ey!6Yl1GapPT3>12y=Q+MTNcr!XWZW9aeePjFkP`~ z$L$Xcxv}?r|AGKVn5aOCb$H;d{>ei_n`P9Qk-;6DtfHP+1Fm?v_ z1takcMPhSt0jaFAvK{b4BW^iz1oJt?sGndh`;W}Z#628v1$4(+_9?U=s`%-!Bs{wL zw&tYA%6{j`47zY)^#V?BcwK?}4M4gb7c}bFDcnhGe>AQ~aRFpLxUd_u@LPgA#V3EL zzcM0AFw_niG^qp)djFFjH2c{JpO1X}Sy;U@Sm%hU_mNK!>sc?ko}LZFvz`ru8^$Ko z`x&koZVKbQQW3hb-d(`2rz8AlgwHO4|DJF^6z=D6_3Q@`>vw?@sMo>zprM{< zw$xLK*XoJFI=KGq8Q*(-{n>kP!`La`pW)+UI758G1y=^bybEq5)A|487sML*6NRq+ zANe$4%l)VNH(}d^yC1HeeGh*<(*=+l2RDel6F~S)0?DVJa1RSNpgx6mtDjsihz*9@ zjBTvHrhX86UHBM6L@FVa?y``d{Pb)_C_Qfq{mCzq{RB6NT@{vGFP5!pu%^DAT^>%- z;}ImEd6AUXt-{>}w;Q_=8i|m9qmO)=vA&Jh)Q@DN8xzf`jS2I?Cgd)TpwMMa*VIQT zL{TYNgnN6`UEuIw6!CK`ig2Q%3Fp0LB49 zD}}pBxch{AOt`@vDKuWV8NwYW+^NFd+;M5gFt#7Ao`rQH>9y-b((4CT&u)g#W$g7% zB$;pUtYi z;<;CYk9^weenp=U#CjO0w)E*vsdq`C6m4)L*+(gqqsShV$HX3#$BA&m*qRkH5EL=N$^lVic_wO@;YPASy@y( z#B*h@$w@)1b#KbufZinY@p#s=)x9a!=fZ86{*ljdc3(O)@>xP3N-G6!EX(afHR`KA zluASf;itew9nPTgnvy|vuNUf`Kl>?z@*9;&c}&eD%pBn^6YgrbK`gZ|$@xm*UMJj} z;i9kTdrx0~_Bz}!_Mg5~Kff1llYTnvL*1(%#l5p1@$A>1D0da^aJXU2+MjZ|y+6t1 z1>t{0_(u<*_R@9$@qaCz!`MvWE)(wk1Ac9Xd<`JUkIb5!l+16=qCRy~7V*C)i&E)y z1-Z8fx5Yquw!;l$PYL9rAtdeOp_JkRxG2Y=R3bZs`z~Dc zD%l_Tv}T`W@6B$_PQyh%JWQu=&Dsy6=e~HRcY}OG(7TZ1E!G6eznI}vp)>&nFoOsi z0>}@WG1eE*)gmm6g$u|cpePn2pz8tEXRTO!0o}${vj}|KWeI2#pvEkPjTO*NU`9j7 zdkW(*A?zJMEdb3BVJ85!0yI-VzMMGg!{!L6C7`xASmt^GB?9UIXpw+=0ZPRY9jgU2 z6i_r9#vT!n2~a&Yl07M)xq#|}lV|Y$3}H7x6w!F|zbV4j2+U&ku7I8vkd+j0&(?X0hWmZ(sci1#3%wg?-{b->(#;Xyjv z!!~fr-z$Jxur~-o*ik@ffHn%~xC(7TNC-119oZ~|Jtd$PDzsHVDJryGq&HkZZ?R`Z zSRSBgwx2yOQlElBNjiI*z03o62)hALUv>}>!`%KVDJg_#fUZTE#0zMe&uWxPTb`x^$gW4cbd<>$5w;ANV_0_; zdPJnx6N`sbleY?}7oR4emju+8&lB7Vdh(Quse5Lq#ewuEdf4GH#w9(Xsgvo$G~5>2_qk{%heA>;Ev^_WqP^s{dnf z`}6VUo`V9Y9d-zK2d>PEjC-_xd(?#Q z>l1~a>l0<4AacWl$j2EcCz$+e!j$~v1yihq5R!0Ohz*owTGF+I5CxlXrwVtbaLa^y zXUJUO-!I&aA={Db-$L(3>(_^o+W;0ZoWnWE0A7jPQvUZkGu1?<}5Eg_|kd z>?YK9t`@G$i*qizH{H&+7RP8c#$~xsa?l zdnKv|{6CB8sp#2HQ5kraY5gg1LZS!2Cq8-z+-}i?-%q$#G`kKy%bLxG`&qNaie8`J zaxoiKR@`!=Dmg2=Ur=b{!PG2?u9%NyX{-;!$4-7Rmz^Lu!9#A*?@6Zox!+g7-p z;ObdI)Pop=bd95Qd&PZ?Sf53G4|iM~m2Ykw)!{L?4 zImX3X+L4^UZMO%Q&hHdiW2FpbO>W$t@|7UmRN)R1?p5vS?NivEWH?9o+#+0AqaJKe zZz9<`7u%CevO17_hIRNJJmhvb30L;dvR9Y=d2t7NQ^;O@ws^ipV6N=2 zy-GgT#P)nt*=*r1gv;5@iLLdV$v#K&vm%jdyUf>`#CH0QEax(kMsPgnu&2cHv%)>o zhWz(jM*e3my9?hF!;;9y7jFkW8=EBkcY%Ih61^jc|NSu-mav75-qa_8+Y!Z7B` z#t2BJU|@F$NT%S&4z-mj+ya_@?6iR9F{0wfMzwQLNx`hpA_*D3@*N9kjevHu-+YaL z-WAYF=5Hv#oLESEino$Q8;UVD>#jn-`Ih2a_*xZeXPAw#)ocMtNrbX>0+M`&u_FSK zd^TX2G?ar}UNoe$25gB69Rd`=PO8wifEuz!m>VF>KLIsnWhxZpmyX%3RVqaJi)Ncu zs0G5BvpmcoP`pgP6|4pOPKCz!rLb6bqBDgNpTht(>Ozp@vn9(BkmNIt^-iI%dF(dO zjAM&b=pjI@nW2XaBhKPki3(93+OcISM0rSHTU3ZrPh?BQl>a>TI;bSF(<<}{pd>af zm1q)YDXbG)A|T0GC$>jG^9;QM4&fW>hzbo3=nN<@P4YtZtTVpS3EIuB3OEdCTOS!_ z3`oZp$mc3_BcN_9Aw!030F=UR7tliXMnDSYM)#;;Uj%#xXi%oa{2iESY^e%e7WfV8 z#gh8UurYx@vUC>GPeO%(={P94vkJ`#Ou?xCvr{M6#_f#mlzK#!NzX|9|o>AYQ4`bc0keFB359Pzz zDixXpD2IKmLNfr3VyOcq=C=Bc`4~2~3X0)ZvL^(ztkF-GU+;ev+asWbhS;D(>?(Fb zg)R$9;#V;PzU`@nrv-Hd6s|%8fq6AcP@&O5odI=Mq1>P}K9*&x(3GHbKx0*CF~Y84 zb``o8Vb`!S6?y_R$FaLqXcuUXW4i_Ps^Pt$G&Y_cR-sRVRsfoYSp;y#z6wggS53?i z3H>0TECJ19B>8Juj(~QvhXW7eIL9q&*snq9F!SFfGbVRKRAb5J{yASjfJUm_mX@ z?2cj85-eiR3rI?^h`lMG-E3>{VVt3PNDZS}Ucv?pr+B;B%fZ>)%Jv9I)?^#|uL_Z@ zZ7gtvNI}TDlwIipO_C5h7My}Z9O+lamc<+o9?h$vGXk=%kEa8tdLMXk3FhFV*t%(M^vaFq%psNwHrh6WIwo&b#{SP2}ts?kR6d>hOHrK z{6=R<=e!^Vl-PyN!LWLTdyRKUVO`c7)!>Z)5LWBO!VREM*PG z5hNwJl(iAiJQfp{&X=-&D%3tKlrLkWR44_|?QEh7QK_t8PpMEpgx$$@st}cCIZGWc z)1%(>9=1e!<7?P72^sDTJH#GfOI2uNSZ6@1 zROm&7tz}zO=n%rzvYje)GVF1_jvZ2=-@~>5G8h?t3z^a&g{^0)69}5e3=Pr&l?aGZ z-_0LlYXl_g(j)A!ib)dOz(P!diWseJVDTz6s=*3`brulhiIK-fR-!^Q4tb2dr9y>B zZxb`*3o4=&KfyK^5G2!kf_*0-*^ZuM%O?v=@%DX^?UayVSoq`oNp?s;vW-2-W)%|V zJT@*o1)4!6MG~U-^i%AR3KfN?v#l(uSccsIXgj+`h3*CPG@GVE+Wd|}Io6=wSGd>{VtjAu7AsH{pjd_xP-UWG&ds z-WCv*!#8{{Gh9cQa^$g(*;Ob!B8BZ^?^-Er9;5v2V{7aLEn_heCwT??T0oNP3YH@} zKUwGBU?l>QvVMa-Dj+HAH`&gqL}h^?E#eRUCOf1;SrJV4COaV@DeE_xZW>|EV5VX*+DWZYy06QZg_7bQZU?npp z=37YN0J}?ts4l(BF!_q#Jj1bwLzppLAfScpvdC!NL3W1~y00+M<7h!kd*adwplZobUX znugcvjsel$TYJXp|H7Z0c?i;pMg{U=t$M&f4 zsNMd+8ZDGGgBykN6KtY@7P4qSKeFr_Wf=A4r`YELlI`dhHf<4wQ8`$3zp~E-Bx}!a zj4h@xSq{IkQ~}9y_?6NSxVBO0Z%-`SX(30h_-YBZXkVY39ZlHJf~rtS=Dw1mP4 zny33O`=AQC2_~9fs?aiED*RLxbd%198*Y>FRwGQ$!>gd1U<&c53T;4`A0M=oFqg6I zjh5;Bxm`dj+3N@k;D=S{eL#VH%`!>z3qbXG%yJ3+x6w)%KV%DN8S`(vQWwlOt6|ZN zXX-+D+3kcWU*pH#x)_@bxNmU6am$b_i%5 zo7E%*>k#ql2y-4=(j*`h=c;wP%07j%vInnz^3BTXuFjd{!l zf_AfCn!K%R!b=2%w_#I!LGx`Y)Cf>Ce_BA4qYre=`R7#-Xz-YgL}j7j?xsg{EqHeo zTHEwXK$$A^Xw&a?v3#rwZExC`$MO;tdbw#DYsr_Y&|3mJqC%fEJ%q5+D)epB&VXVb z73s0lO;cDLAD}{hQ3O>8Xda7 zwc^V~*aFe|TZ=G7lwUo?0lmtvj`~s;uZF$KXGaB)c`kkmdzCMaYNRB%#OqKMc6C&9 z<+3Vhc2pZBsS2Wa$$XVaUDlV*JZ2M7oyT&b@x{((snEped|hWAzFCIRyQ3@5d4iyY z=zB&eUHJ(K8D>Tw!itmONfBnaJ-RcXa22ASFNG(l5cPa1yt@i*M7$n6TZNuMydM07 z3hj+PqPv_&Jtb*=7=4X$IZsugZw0hYh5jp`3Kgo~?0dvJtwM3l@(?d%i=@)6*(5+I zfMQU4#xkVI;~fKZEzeP*KLJhPWhxXIlg{$^D=L%( zD4!ozp@D!V@q%xT=eL;pj0;q`ZR-soA&%%>lq_ExWXv{Op zb=f5xOR8;{yam^Ai&NwM*YDyT8H^URlISi=@CDW&{~3ejxS6n;iP zyIHdq&nQ!P)XRjqn!bDFC%vs#$6$w2cpzbQPqeVKxG6l4dy^XLr z{CXAoSU`8H&<_IIqQ?7gi#^I5eny4#v2QD7e9fyeg-}5AxX)`6Y90HLay?&H1%0L5 zzz6M-Vac&C=oaw`6-ouPm}l>mVOIdUi7!y0k+DB1H}f4Tbam_*=RD_pp7WgNJlk15pS=03Gox>FCVrcBuQBgG ztIoX58L*|#o^=lDz9FSy^YB^kjJ(}>!Ir*#*1^af&L_U3IDdra?sQ)8OXo%Jbguj^ z>(oNO!|9O{t>QuR4u>_KO@5~>(Iy{>yxT9`RMiuGk6)r~Jyh`A`~AAB;4MDrmu{-M zAsUqU+=ra&rT2#o{lkZyn|)g9%txFzh3Y=y{3%p-w`0CXN?()s@QlvL-Og#Y^vN05 zptMp-it}#g^I9i9=cCROe(8lF_wnSf6sVd^j;?~ zC35Mb(T_WK*t);WxG(w%=cj(@{^%#2HQyI3X!%I=(*=C_tj~$7s=gb&-!I)%^+fb@ zeu;c}z`0tnB%GQ5>U_x=u%*(Oe~Ny|`Gzf>GxKrtCFfVRbji#GC@ubh*L$7$vh#%} zSkmbJ%g$;4A$9O$FGPP-3}pBpx`m|u5pvZd?r+&7)uY>Bq@+s>zLiFWXq^DA4Thy9+@@vM5MJ7$)} zzUSO%OZTDlsB;h{Y5?{9G3SG}M16nE`IIeD-yd@xl+v*ICVGF&dDnj_Wj{vg2hOX1 zsiohebliE1EhW#bH~-;$(3Ym3`;3bhw{7Xtb5qWboKOE+pKC(tKb_w{r=<*@d)hI- z(b5p=e(H4E(p%3xGxCgck1gGcmOpoXVM`C6TW6kintrR#{RirvbvkW{t83h|krL(X zjM%T8FK8)o_N*o5H_oHBR6A=4UdAO3L{=pmXHAa4Hz>tu*?;S`jJ1JCx52ZgiZ?dHoDE-O#cUyWn zN++E^+tMIP|KrsBPO-cRrN209Z0V!3m&N|(yxx}R!;Sl8TRJ*B<+yJ3@AbK#&0Zag zx?Q%!l~l}qSW3Ff5qG~KrDu}lOTzuBEs-w?_c<*&6dC^#cuKs?BN-Qe3{@@ z+Y&i3(Y?f$c&0JY%}D7;)Ls22X=&a%r_PkSci0kF^W|FRy!Q9-oDan&xs#*> zt(vpMOm?r-I>dGV8k_9iU`xl*a*BJKU-#bFRCnV4D3+(^d?t3fd!CkrvNPQIe(9UB zGu#H-lG0k`Zj#c&=9RM^ja9i>zjV+{a|dmSbM!LzHZ3J4o_9QUruzXY=?eNx_pp?P z4W*~r{eqO#$DQT=LQ1+eoZ+7R0_oJX;o0spMO1=^WggCUqj8po&3Dejs>kiLrJqQt zDxobo4`;jQNom;p_B@&$F-RmIbFAE7kg{g^HN1*L`V z5nDQaE>0ia-`LUxDAl>u6WIf~^vBqx?jFDNLTs`73n>koLv#NayUe|^L}{V*Ug|z5 zCG|2(-A~|)PLxQVCM|QnW=lLxTIN1#OFW^fcYkF|JfW(0|7=SpkCmF|_cba?JTlsawcp}CQw2KPo=dUS3QrPtZgPv$;u zR=Mx9rT?D00Hu4R^q}Dhz-qTRt)q2n>dhK=l9V1aB{ff)%iVRh#FM7A?!C6<>1esm zz2BDRqO{({aLf?Sh?doq7j1B>D~R(!v##c}qD}6nrKI~ko89V3GIr6GE$(6|skCl! z_ee>l^-A{}QlrEgAbq}9aQ*@R4TU&a%=HjAj z+zqE|-GA3yR`d$@ep_-cs42SEU2}%km0$3n+wOkNmS&>V>Hgl97NfMyt;W~1bkAy4 z(GGW+Uur7KxmWw8%|+L_H~OWmMcwYZ{8Cp@pL@S8?Ym%A(SZB7Uur5Ebbs%ct}oi{ zmQU0E_Fb^QXs>&ZEgeAVMtAYcwC)4I@+$XgztmJT z)Kqk{`>0>Kz38>>3sO=$f2;djDXDG6zSx=CpL^l^i*9wVw56#Rez@rM?z{ZbzZTu* zJ|ZQ>a=ZJuU;1eDcK0LI#4>E=Uig6f2KU10TDt7Qe=B;UyGcr~G3zcoXx`-B;g`Nx zbin<*mPB6O>^|(59&qvD7r%tt1@5_L5vOYSTii`jdd7JaTKrbXCvT@ReZH3I%jff* zrVP@;{6Ku{HXmC+c+1?v)HPxFi@`r$zb^*HX1)J#DH2{>hdKP z7cl(%jgsFdZFKGw!%O8xc-}|TtPsT&jHm8Ys8&b!F zX`8%^kT6c_po@F%goj5IZZlp!%)Rm2ycqb4=e%MI%V(Ikt0o1b(>98EJUSIV9);gp zPHay}s(f2KnGj9GI8~yw{b-zF{_DImb&X1(YSwr({3CE3yV9nk7)={%9iwgTU&+0m zhmb~bTec9cZM>FjGd|?WhQiu#%fkFJ=|!nhE{!){ZTavTV*akAMRg!M4Z?~Cartovd9Xg*x4^RBb0wJHPQUUW`>BfST+jQ0lC zaUQFXM$9=#J;((ih+-R=x^~tG*L=ieLKxVK2O(9i$dxCbicP8gfym+K<=KUmq#-Pm z+D0*)T6$UQ7RdHUn)#Lh@hkiV>CtWCQ<{$>ueEr4OY+Je%_|L>4^tTCbC8dSu0;#z zQJL4dqXzLk4EEkAeT}wY0k#(>Gvl=nYu|Wn#)B*Wwf5FJ(mXmJ)-`RTGBzI0Fa}y< z7w;|*v$Y9gx7CCENjP(AJmKC?ou9itpnr7Br$eA>-xS(Ti)gOJC!) zd8u$+8TANe9jQXX{0z(Fc=^$Dq>$0@Foi#tet(5DVt$J>YW{@O^R1_j8LryEma6s2 zTjobYJU zEyOUAlCf$7N*u#D3U5iaFg;t+z-D@ORckj&ZHJ^SbK`hptQ7ys@vj2^CgI=d_*aX6 z^RPEG55Je--!ju?PP#mwb0SQWNEeut~`OJB}@eH2b6>l>a&btxml6ePB&O+AC+YiX5dG)xZ z&zo91L1!$|W-{~M5IJJ5n|EvcsJRifN%M|*2jWTdF-gB5PyKM-9r3-93nu?DmNd`L zdk<<$=Pv+N^XA`${L1-n0G=j5j+%k_pNJno%g@H|jNCfE-Z^YOJ^%CZ3_gN(Bz||~ ziTPiR-xvA){3W0SWN3xAGD`jmOY0ylBY zyl+7K{ z#0l){525|t3tyW6uK+(Bd2r#^F;m~gv-d?fgC`=~Z$BJ)X5pQ{L*7nRs-l#NI-za0 zq_vVxm$Y8eMoHUD=|x`!wbd7WE74}=UbHNB(p+>=y>rs6y@(WcAZ;@@T*P^N4brJm z%En1^??sO#rc1ufeEXs&@$3&#JKNSe7yl$t=agPt@6@5oygZY9|9iM z)+L!Pm9$aPmSnAS|0QpT)H;tMo$dVgl4x?a6RpE|<^7-8&h)x%Xt|`W3oRS#`jNh( z?$yA5ecc}9-&nUS)@D9X*ADJc4i7l@)GaY>&gbivI43ZhZ%np157oUDZ!Uco@Waki zb?*RGzdPGIayclWCTOTi7%=%8RzUppHCi$E?#s5=~|>2 z=bA;4qC2DcMPE(cDNo%Qebu7BB{I_2Vds`b-$|Y{Z^g4uVXl9Ze9ED&oiz6Va(DF0 ziz3Bs=39#r#fP2aizXJIG*2(8C_d(rs$(uWmNdUx#CiWK+UK0erFcWcNg_RI$}XLa zmM=qosz}jPXZEG_$X|3RIOZ(9w9ZU*8jv1~&_>;fHnGTFXUnA*74LO+NP0ceVTX6! zZgK9obV>0o&ZjS30my@wUQ>)4yqC5YKV_b{bcw-ROqJC7pI^EiwX_fQhP*uhoIS-% zr-H)|&$+SqXf(F?HN{ClZo{}vU;H?}+(3&lTWngJnYs8q#gzFE7Pmz&n0yb~aHMU9 zBRvKwT40VNJ!qandc2tF0`sg7sds7xTdiO_5qFL3-&rUUdDNOy`=Aw^j@Sb z=8Km#mE7&p!rUU9-wE0dBF`DwX=^W-+*;BiG((m!YFO#Zu0_AJKW*T{4&?cMMw@y5 zGS>3#j5axwxlg3D&A3Y=MVVOb(t(n@Wf!~6T()$$WG9}z5YKKw{+PRc>1&bpE?wg6 zjs45gHzQAJJm$V;X+0pfEqyy6uUZ5P>AY#_yYbX}mM$>Eu`e$r2fnrR!jfT!=j}(F zsS6$gXMO_s5$9Ku{vPQq=L{yQirGN%pu|4ap&y%DW%69`p4rAJ;-ouUj3YsLo!o`#77@8e5%DP zuSYy!S|q(1X(pPle_82$?!Nl7f&X^2Ip*A1e-QZZt6xxhMD7tZIuF!8ZjQt*n7pX8 z#d)Njn)O8eXJUsVKSSDPo~uuk9CzqXk2`;=hgWiF)2LI+N{3_7<#S4gV`WH>xwHev z+%uNfBb|=)sL1@$*xB`$qp#=FEv2+STS}8Mr%se_FC2Fom(Nco9ctWh=ZfX~Oc^M$*uUL)rnI-Fy(ktam>xu`VCq;HkV8vSbl0Ub2XMIO)(jope64f*SYG zipOzF@4G9gr$0fO0=9oCqs-vFT;yqK*RH&yYf4lM%Wry)8na`Bn=cXDCBCa^S0XDPfT;%JERy7=O z8;d$5WnYa&pPv6kO&RC7u3^O}i-e#7szO6iIu3h~Wz^NV6UFuHC<%|p$?Oy$k^5LR4 zAUz!U$m(~O9|oNtD?d_nboD38cbf05K3skjkXWR}{9*M2<+I(`nup3$Zt0pw%8!8$ zN8%}W-kR?KvUJT7;B1zZwkYLxt@(cWQ)u&K`H7-L3bAXH*5;(};balz|76j}*F25d zRg=FOzr~@P+~Rz84c@eq=;CnXYipvZTK7>vYTYN-B#NE*bI7-uKdw3E)(QQ$IJ{|| za(Qq3h*R81{aw6hP6;eItl~~XyRlO&$=xog-Dys1T;j9{uX1jB&U)MsUeyR*#b43b znyN3#H@2mQi}p9(naH^BY`iu#)%{T8wp1#9d`@?2YMfDV2G8zKW!xtkZ%G|-{tG>3 z+}}4|Sdxk-FW=_2m`RtvDb;4qx*Sm!+H;k$;_|lxvH@v};l1h>^NPzKDsM5oReeD8 zZl`-yRXyOZ1Uwnr-}qcA8N1=~=Ta^1^XcbP!!pJ;nemFJ#Fj?3q!Tg+XT z&ridr;D&LV`|-;khn4>P<*?`O*DwFI%Sd2Z`fit;-)WveEg`GZDfe0A?*{&s^iGqX zQHS0cM`4yPXUYhw#r#e36V{#+Z4=#LT4(CwbJtEWd)!NZ*S*HL=a=V0P`}X4rl8+K+)|-VkmvycyhP-nh07-u7)s+sp^irbRq* zi`?;Tk-NRgqK~eH_W?h#b~9f`o1KP{A)|#P(&KCCH=kbncKD-b*1}G@f0_QqXwEh3 zfDKPQp1xCN{7%@n-=+^B{cOBWI8f()a>gU&w>XQ?5`KT(Bjqjb=5@0xjyY9x;OWq^ zrlQ5Y;qv3fJIxK?#sP5bjmZN7Ip8uXYcW0RAW`O3>w54Wp~iK0uG?SH7QbuV*Cw{O zpIrC0ib+@leyXC%JTd>_ik;@W>o{KOV3ncuI2<{??&}pf(D~lBuGzAY7;MczQ|9b$nXL8={d72PGIH8lr$fATAH}J*^0Eq zbR#`!Zf}}idD7h9G^_GZoKkV0`$*Fxuk?=;&tEPL z)1qu&6=nPCC~MD-u8#pvv=!<3(JPTYDlH$EmQSK(4ZafbktsF!TEnfU)!>VNZ$o~D zd8n9wn*JalSD6nY?J)NuU17eB+6huyVTO@E1Noz7fBd21XU$vUKSKKY_}8%}()0uI z(dZb z;LqBWIFqjQ;z}HAU_eD&q_WS5&9#fs!{Seq@O8S5oN#oW3QjIHF|gKDarT~!6K691f%xkt&5lc7lIA46Mbf(^ zJ*sJfZGL+CrzUQVM$csW)VZxwwnm3%T{Y$GDTih;f5fK5|I{o^33q0*&4ZWosq5nR z#E-@QJDy5RPRvZyCN4=_mgq?ICI%9>C*G2HZ{ps>rxIUIOigY{zAAZ3^5e-LCI6T_ zz4(IS#^ToE!Q!_TzoYn5#h)v_eBu)mmz1n3X)Eb1`Ebd%Oa8OucO}WvIi)*FZ!EpF z^lhbIDt)ZUuehn=){1vke7E99lYT$RRHiDYR@PKrTDhk3s>*GZZ?61c<-b}ggO$fC ze^&X|%IM^h$&)6}o_x{d<&$rn{JzPbo&2TA4^RH)colJ5x@ZQZr@2l!htm zr(88<+mwMR{I=Ky*n7rTqF*+I^uWtrjr8f4)!|yz{+ah<-x+^X4F5&(UmV{JO5mGC zNqn=X4Bu%@!6&6nHFkQZn@V#QAZO$2Iy22__;$_d_(n|?Fi*o5XkLaL*|YHNsM%&Y zAS(e`4M-z)gD=OoWY*#fGEMky%zEq$Z!n8s>5N$y#{s!{g`{tnbWwtIJyCKl=!%yy zEiYSz^mNIeRkjZKT1o2#(p*Li;g;VLxVAqoEysK6NQ&5wN_tGv@2B1d$WJ8yY>K^~ zUcq#Zq)RIfBfqlZOGuUSKTjg0B^JXSv|B2Rk;W&VhO}}rpITXQ5%Mc579;JMOgeRp z{ZgxK&OePUmz~yyHaeE`r@jaI+A|10zv?9ORro`1=8`I6sF!qI6>CqNC2a&lYzFh? zGuVFGjCq*oIg(x?>BJHq{X4)iu?) z%d@@aTqj|+I{d=swMbn^U^@b!B;$Lk$)4u+T>!D zun>?pOZrymm22K2=|>HA=J92TIzaA$Uv=*ga~;~? z4Ns)4PB$PMkzy{KUgS3+b<7rLC-PTFdZm*`zRej#`f_JC(yN@kNUwHoKzfaH6WYH5 zDdqxSlfiv6XBg>rd_BfB|Aw!|xaNL*^~J?oLbo9On)7<3N1fa8)FVhScIS;qe~oXR zVC?wT30|R*G~ylv#Fcb{`*y%5B84=%cOtED--+}L_uYV3A$9R4z3~2rlnUV4(30r`P-2H?Gep?9Qh4D z(EJm~58=Hu;&~o3s#d|0Kq_;(TP%*FV3 zDLl9QZ*fy^=U`X%GSf5IlN+cR%w31Hv#ZP0cXqDm?b(*wKG>fb$o2ND%w@WIx105w z*=%!eZEk=~Hf7p3WVUB*Wqn^Co*BsGdb0hd;OU0W+(2)?;g5YJZ=Y%C@9*tjnalTe zW%ineJ$;#;PW)kwb(!{Tmszo)W=pQ8vv+sCW>s&0cRr}!l-)D1ymyaTJ(#N>7|3+& z$dcN8Z&%iA%H{_ec4d188hdv2b_neadpfdx90c3@_3Sh=fJgiB37ekn8wY!O&~tNN z)*Gm zPo_Itzz;k4joJKQ7des#syzdi4dh{eZxiMbs#e^sN>1Bw`V&?RFh%rdNZBb{>_cvh{2?RT-KXI zwrCy94P?os^}U@s2?dZVa(R(})-37DcJh%GJ2E}nvz;EBR_w@jTsLM-0sbp;+1)RFah$osw;!PArorQ*t4zIRx2m+-gqd{9<}U41TxIc zf|m9Dz#Ebo$wOg0MGI9?+JHOU+N$UXkS7)f)k3HJ4ar&v?UsJX12tsNK=a^0-{64v zxX9tAT%T&Ts&pQ_2cZ=d=Ay&^ih+SUs5OqSShMU+%VKasw*{`}43ht$XtW z+3pbrM0H1Myap?JyZd^3zyVl7+8p12u}iCpo^>3^b$J$$SerZ5FZlz6tX|0U*y{B&k`T77E$r}RGh*~B#^lLBrrpy8GmsnT%6h{l8Jh?&n)*Tz7SNiN*?ew$4~#_ru3QJbiuJc! zDTjdMP2;FKVzxk-1q#LLEEH1Oqd7EH0Q_wXFrrOCp}@WS=cW4Wl&Q31}cjdQPlkMt*%V5-g}-9N?jPFBz+~%wxHC0}s&U4IcANo97kDiIu&(d+e}T+}vji zqvInTP9ci1$p|B|#20pDfmW(k_Gfk@fH12dKxSojTLxxiRc=qVQveVljW0~z%j^K5 z{W{5;a^0L30yI0|oAceh{heF-GkvBr3%L{?c*ZlA^=+URMfz5;hJuDrCvRZZJFeT* zpXoqQsR3Ai6hvai<^6~YK}MDVq*rL|9qgx4bOulR5YyV%l^dW_q6T_-b_|=%cr8S8 z7|NEqv8!}iG6q@hxgA|xjMwD74;)95>K2<%{czN0_a9$I;bvu*BSBSd_;JXR;BxkuvRP+4&JDxvEy z1P$4m93--T8#EwqgN+q{O0c2p1$Z{h=m4KrfJoar|c5PXz(sge>^q1pDp8ZS?HePNHR9sy#jVD6L< zHX8|JJG#|?K(;D`unm1GZI@J@F8}h7b`{4it{XeK zQy|O2U70S^o$E2(nLP&4c^^VNtQ@o3yJ5;!^bW!kE$<)9?=agS@S1CfH_%*On^`Gr zf?jna%oYCFyvR^yPXM=h!duxJ8%u_e4Ow`Ko&kxIManhDHUZ4ihEC;KpM>U~75!Pn z+Vm4}TL#ELbGIOG?pY3^5w7=QMJX#>umcMZG!B6_V3$PK0oGaw045PDQN%Z71N6VX zW9J}d!Yi(ZXWfzO$Qx^)?LD9s z+bL4;V`z*4+aT~@SokAs&QJ$m(ZUCE7+qc8pao26IuM?UFws&ew zWW|m{2aRe2GZkI2{@ z^qji@p7etTFH5$fMoHRCva={M{>>}SFoo8+`{+F~EPOP5UWMP^*s)7M&sIPBpbEms zScUXStncs7?3LI94=I^SwdPl6LqRd=k+r?uhmf&a81vr##CV%_Uf9!`MYt(j8M0^4 z%23FAw$H8GDhPYJ}DtZT0a@?*bXSI`TQNZ*=_-6P6x%+jnt zpkQvelJyWM&hgv9j?1Bj5stpvq942_mlUo^i>4WRcJ zmN&r@>X(R$&srfi-V@*eHb1OdVzy*!SQufIhknq9=fR+{;Duv=>Gd{m$x$H%t9qDX zn+>5*>Oue^(v};zG|GECv{v3PGwk*1Y+xxieng1soBU8G{(vk&fx^|&E{xhk)|uj9 zyuG`@&RnmJ;S9Fid#s?#nL=-*#Ns3%Ns5*^Z-LZ7fEL;5GUyL3vdBl>0nnU zg>>6smwF=X6v3HqL`Z@7Uz#n{pGyRVYy}B;KH@QN;q9y6JZ)Qhp}|6-4=XJZ8EIeZ z)zz8|rl{YBZ+-p-yTQ>*c01f648KURFhjzq4Vr}|kbN$MG4zD8z`<-F$_$PcRB*iQ z(O_wY)s)?eVO;51bt|C(5*!WWx)CSyNNIUjrsukKIGRHA)ZfeC2j*x)e|8to6a0Cw z9wt=QQwgsNOM9-Tqic}%jasRjBCXfu`uZ^4vJGZ+&DLnFr3D*a*+Nf8FEQn@^Q91) z3)x&J&sY$SNrn(BA+#el>$Q`qWI=6-aFoSHk5WG47u3gzXllO_zbi^?HD|gyLUr{B z75j945Z3X;O6E#>4E5$Cm!lB7crcCi`Mo_I_A$u=dl$ocvpkECN!J+Ivj*q5+A#1w zJ77 zxYS41Ai-xRAv^>mzj=P*9p!k!ycd>+8%TL9kNY7(B9M8rEw_h9Pu8XJr=HDvpaHh0 z(J)a8=<2A^$lQ(r=VW?z12W8Jp`y&ZRS92Oq~4w*S?3&_zNuPLP{(UwCrvuWP@v5I z_}O_O$kRu5?kP*Av(pdI!f@T49kVJ#au~}PV2fmo8krSu)hhKcwOQ|c%#fU9!fxHr+c${SCRPkVKOtekX@0CvFf)6R|nYg??{ zN5H-2qiZ0>BiaHoW;31t5sj%c*bAmikErRu>a>6Csz3`zJkz)`Gmx>zV2yb!M{_{l zm0bx_&z-~VfmNrB_@~A^4`cYgT^f#E)xe!H(bEx+^$x;-=t8c!r+yn+seEFoDkYg0 z-TebwRM1u7#md;Q*lTR3#e3Lpv53hOMD}c04|0{GM1#FSxHyc-D$*L9X0Ql2L?iH0 z)@pg-NPz=XoTJ({GhixcC{K49SQHFMdqF;|m3dZ%^&LfR*p#`B3vcq0S;ii=*eE6w zv6pw;h%E^edTEw7%AwAx{@(7OB;0G_tqP+qMgTz;VQij#HueZ&pCg-jE-r0XXT56> zdLRrI(#PT;PuMP7jhp(hdq>{(_Q^9mRxijb-z)JG_>OfhPF92SVvKo|#SN4c6BZcA z@VPvvGN{R$FdM@)cBV(z#$7y%-MZCqe-4I1l{~b!Tcg}Yq#AI3o6g68$O}!doe^er z)+|5^;_@t{Lqis=06(paYB`tp=*1ybPiKMrdXpSlfPlr^;pWCD4mo-02X})2T$kO2 zbz5c^+y{NN9WaAEb|aop_a-FHPd+v`xo({r;UBM0AkTQ@!4L*ArX+=Vl3fraz! z0cE>Sf+3xC3#XjseWs8`k3=Xy52^?faql!Ch&m9g4@U4?0}t%3+I^_dBmVZOc4-we z+~a8RvqY+W^~P?kKnP7iJmb%{$HUN+(Jx8I@&p2JZpn*?V3cA~y@D=0Nu7X&Oux0n zLU>YQRK`Wf%X(c?F2cl2=;otYO)rTBp!Zk@PG@}4&Wo~##os$(_M2=&7k&XNGwjUg zv)t|Tft}egfc+pI-l3qOEHyxFm;}q@QG{6dNOCNAEIMq}Sk&06F=(7o76?)7;awx4Fl5*J%&xDH|4<5X$KfmqYd5zLT`WYEPEDSd3#OC0mB}LV~VQ zu%iUG!bD`vTdN@u!OjlgSZZqIzF5k1)ir%+{bJ$d*cf2iKoFOj+itiicI zAad>(7`$U`+tZ2TK|4%>geRf0a3@p-pKJ+(QUyb}q1Tsi%IXcvb1axA?&8Q4Vo7IL zm0E1vw!YWH1=69Ba4Wh@^;8t2v_T0u$m=&YRMI<7+AYjMmrp~xIMrG!Q*3P~NbW=k zHm|L3^aQhKuwa;#>Egw+q5Hi4o|KY5($bALxRLD;)_Hbd^c;+AJYq`5st(Q2Sk?Z7 zjjW`&kmm)bGgi_ebEBH)`b3&&KzJaC<0MGWcI;y05D+YfY3$4g2k(00Kn{xK6j#ga zlFymlP*_>K=&mpML7dbdT%44Cs9Rp1aLT&vg;k*`s_O-T&V5bAIZwgj)IPIj3qxYO5x%<|rW z9TG`#%~xx3-d+tZdkyyE-WK+o5TcB6E!3U>h}>Gy7r9i;3uSSf&3F@0D6Gcveq5~C zv8k6xB?xZrr!C=DE@KuUVrzKOI09D>AxYYncN{Qk~D60MZDC`i4+X zAc7(oqz2e3s94DQ{B;bzg;X7*E3okSFYDzgHS$SvpS3O`do+H(Yv3Z!SnV(!8?#^&*8#b2z%%q4>_{x&C9$E<{46~%k1ri z*RO|a^!CfzTQ?aMU^evPzJj>bb@r_aDTuR`6HFQwKLZP?4hjCkIvds(9KU#WYE710 zGmWYsm_IRgtksQYg-dTZ_X(~KvjvPA%!71m9}EOu?4^Zb#g1uTj+=U5ro1%3r^kY| z!pk@IY|7-XYsd8pwm=xrKd=G35~1aDg%A#rD*)LW?}jrMKIXwv?5AYy1@IAM(KaHK z!Uc%%cs-R?)KJMm-^(??7Y>{bWlX|)G zs_1ksp@dN8-oC93J8{b%@`Hn~13c~w$b{+i!X9!r zibBp1RX1xn0+wiZEChDh%08af>&isBAtU3Wn9J3Dr7Q>2!CJBuAs@K!-Gl}M^eVBZ zUs=6zi7hdkYs&P%JMh(v0p2~v>m;HYxFrpFAVju}{h>10@6D-MvPQDHyMDhxSU+@F_z>hcVkp&(*4uE89XZGfKI>gf*stvf$%MZ*37uMh*3$LDfTlvx~s0&^2ENJ0h?)1@Wtm0h- zX$aqQV;ir+o06~PfFcZ-vT8{ZmxEiYz!8VyWmz975&S)fKg*nKo%d zFLu}VO5>5R&_!S6C5agm2v>|?L2eDhFofT$+lZ64yjIJ5cHY8xgjMmts;X**D3&Yb zl>?Ch7B@o`TfJ-HUS58NRWlK>zZ(C>ts8Gw?k2cDx`DrpUh;h>dY;yP#RCJYBLd;@Xny zM6}JGD2H022Jq4%@7?rt`uDlfn>DGLQ|swnMpR^cJyTXBEUtkk@1i&NA$CpTFNao% zxx!0`vYAXO0tzgVaxAP{TC{-vU6_WRP78&U*o(WZI4uZHmxKg)>C%V~*^RNR#`yup z=@X#Ge|m46MpgKDrKD|GKEtl_QH^$p4{MVFgu%iu2D`ACf?^Y2`2kz7?;th;k??$M z;L4_;Hb7YHU!@Tl;~SC%5bo3XuRuun&@~Y79L5nx?ONu3G*08>O&wA-vK(N+cxBT^ zT6xz%7{p#N^XBqeW2QKVL7x^uW%!=`p^(A3-0i??F2<3pfls+kYVs=RH%ZT}$f z^fn&@h~4YJdEa2D9ZZRLmnCRQY2gY9TOrb~-qMf}fJ$owJlAbQV_A9h_W6yX!O=3T+*#v#f zYDA>>7W7ITc6^(%13P+gnE@|yas*nmP#GaODfh4C`m}6IiF7sdHnlwBU8$CJlWu{9 z-fN^J+7{>;PQQ~%YBhsBDx#6GZn(@=cEVfnZU9-cOn(XniPHgA(li-DeC9g2nP4rREkA_5a((QQDmgd6Fy zXqdlJQHrIs5P24=WiL**!iQsTf%n%*S%?d;E8Ds}Q@T-BJ2)fVVOC_ZK*K=D(kpqD zTizQB=pcMW2K$D3YA%aCyLSn@$g6$q$TzxzCq$2~K-gp*ulg~w5dz9zJ6l#qn{dT0 z+aKs-PWBS{VvD*GPy{Y=Db5Sy-twJz8W2b_wC4^1_k@FL5%u6fHdIR^*S?kVMxet2 z7zY$q1D*QPAg zRrn)0v5@4hlq3R^O3&b7`C2IOL5ZWb@*z%+SmctA`eG@9eO6KY1p~LV0&h(@w`Zin zMfDmo-FkLwR%Y7=w{z2*n^pl=b!^^EWue7BzZ=RcLO<)r&VE4*HEzc1LBi@R1}^v7*_WLm zVNCNj>CBTP>~r~1ArGNR4u91ekb%Mry-r|FNFR8mP?~kI)dcZ%iT+HtT=fowoHskY zj={JUJ91t2@*Z8Td=Ej6jwN{KDuopIg~B#r7dy*%8`31o~IwgJvMBH zTC2|?$>m)#Mxu9B66@-Q+diry}7qg5W*lkLFPS*LGReJg3LrXP4{FfV&b>JYiD zA%Z_*x9IOQlxw@R33gd3<3@x*8y1G?yUeUb1p+7`U$d$Zw#sfA;&Pw=v5`iI<@|Xe z*(7R_?g22%FLcNbiNMK<#=PC{uu{Pv3$dmFTfz1{cD65AOtY~sT(n_gh)AN{U&hs7 zY|7v&9E56M$7Xy6fOlHF9ZS+A#wEC`?32SfGzdT#+G50@{IOV{b1dt1&MphqjT7 zhASXutO$gjXAmt-$U5t08tf~12ni)<;f$$*@MXK*{9pty;QWynbh-6qgFBhE5g-X) z;8HDECSM~53$fNgZ*p^RoK;dJO;_`lk)22Z;5`c5Y~%K#>UmJ4{@AT-Z&4^Nd{ghb z>^2RD!ett*)wr##;Q~ir2mua$qQLg;zllm6X$9hEv68P+0_Ukph`Z14g3Gs1r$zEipi0GZq z9*DHR2WnPhM^@}If;`Vc5a{Ja#}ERw^Fo9K5g~mhLH72ruT1`aAl8QR%DA^}DGllH zz^^Q5P%A4?g~*7u?4W(7sK6QbV4cTZRCI~Wm7(jD2!Qp*W_Zty zK)I$#PDl$bm8DPbxQfH^q9GAB-Q_g+?38z4BwK(g(>kNUjw+wPhA5Fh_;^KI$h3xq zv4(aA9oJ>E6dUo5AdC9IY&@?c?ST?yC4A~uvT-gwnn z<_V~u^Y_;aAzI3I>Vd)tsP_g{oO^SiX09l6-KxwsCW~2yAW`K$M4QbcVvn$u% zt6Ldtgxf4~AB~nP^t@Upc_9%WtY$-NYe0$K=LsAd{bzm4|snv~>M0;UTU(( zHCSrf3n$+GEcOlh?dI1G?u2&3C+>#L&vctE{UNFAKr0}WO}ZmLAQ8haQG&hhKnCgE zdG7)L-TP}>b`jrd&q=`0Cj=}(miy;36ngzWN8WW#sxFteEV;L?Hy(=~7|;^Oo6qPTo> zu?CIprobti6(H0PBaMS_^e2bLYZy9E3N;z|jm8=k7f7z$1A9>|shHUR4YdvP=M*1j z9Ons`eMAYor!r0hiFx2(ybn2!(`+N|+l~3*#&O$o#~$;OAE!a9JvGz0qk;ZA4XHij zH5ubmj^j1;HZ;bm2gRda*&VMbOssXx*!Mf74APnwyq0qcl&6?03WpkXk9#ASGD-rm zFQR(}<8=tZAn$RtKwqUl=>#|pU|}nJtDxvKT|t?Kf&0m@eOWx z4fN1&%vJS&r?=g}K7enES4+y7uLiBk#cCNTFA-(XJ9$Sb$bo0rcfeeehXdfnDET;Z z6P{>C`wjTrj{0gykk=Mmo~~ThR$iL|&QA3>I}($bt{e>dCRIJ4Ba870mnMY9-@@4@ zg&jh(j*|48Y6d9L)%e#ZILQ+}!5OPD=8W)@>nt~{q&93s%WkyXg79@e!X2 z(s-)=%~X!V!&0C_Wiw5<2eY{zSSgD*_ySHor*o&W{g3qT$v|QM?0u%~BWuh#E2MXh z&KoVIqZ%U&X~~ohzf}RY3Bl85Md3&&Z^S_jr4&*oRnx-UFSJ#rLZ2$=0~}LXtHIo1 z_L`f34FR!F?@OH>QbSqF$sC)h;Zi}*Q)e2luWHZ`dZzMhkqdIF2H(in5uM7eH3%;# zmC)$fD?}2nTz|`S|@T1$zUYv9Ix&Z7QnqhfBiKKO28D1INl3yJylyn1`tzEt_Fl3WTMs z37nwOsKy^e=mQ?F zoJqWUX=$Qb1kdFybY%Y<&<7T8cuGT+myWRpe|CZ@)rnsQJ$>kvW=~}o?)D6i##QKJ z59sVfs6aO`V9Zvp?(flG$eS93ABB8uM&CK$Ce|SEGS~cX@vo6F<;?Y#QqKJ-UbX#i zv0ouGOrA5)8w2xI|69zhpqKj0(2?>(S^P(3rUtUpi~sP-Fet_$?#LP5T@SvimD+*v z^q^PTEjs8M@P~(P!Y^%#=iDgm)J8&g0HfMC21T@j42HvYR$U>rMJ??j!CDKfxE_gT zIMO~}eyio#UFhLDAIm2DY=hVaN=P;O4d{dxR*uGm0IMP#yjcCXcpY%lp>71FJ@`*) zZ3Ye0+CcV3aJ`u=JT0ScdQ=e~Z8@LjA5O@7bYfSbWqHS7be)i-r&AYr++RcM!PDlnvk> z7Z&{}VPhUvpZqjso-E#g1rVf1{JIyQjqjlfEWh|Q@0nBjH3Tl<8T32_{KL633+!?= zLcy6B=PFQ1T~Kd~cGElwq2A2IqKsa?+RB}Y%ry=c2-F%vXF@`#Ien7aFs)L3j*bnV zwE~7NV^Wkf^*Ec*XFDhg`-y<_qbLgbsu9v%p)rW+gvEMBnEnyeR~EMCOkw6K!yHpA z;KR~W+rmOh!XvSCyrk!q&Vq5A!&rjRSlBM9*T?$=vM>Xc3r|gDcmYMrXla{!>Zc0F zX8hLPycf>7;tV1V4|ic}Q#QgsPx0!j3uMTgIrj6OgqaES2D)%HWuA^;vnN=^1$tbfQkfJ*qySP;=%$Iulz8~%nF@-oH+Ie#@W2p- zox4XDN8WB1GoCpm_f+xd&~T#%>3E`PnhNJ^yddBTjFZ7UMVkD^H|+uGMV_E(;;Y7=-MeuF4VR9hK_R>FNBRP~JXk=N2MH)p zh*F?=r9ksa!HwXH#w3MYqtD)pv8aLg=kbaB9*;}^fAQi*KmHskJd~A@V;xP^jSxmg z6B@14WCqVEx4mbybR*Pe#wbAzo(apF_hcA$BmQRGsh%&C3=cyg^hR?9Oy2n84NG`{ zA&@SP;XM3zDhz?-1sDPtC2h0@di)-(8y=3)GK;@7UMQ?DUB$=mE-(h;tBhyS$7e=> z#T!Nd`6n{ss&x=VT|jZU;F%uJS9hRRHw74GkW2KYr`jgtzAHUk#+c2g#?1&Kz!=`d zIu(AiCA^P$s+L|IX(^=ClAIJGA`mr&X(Cf;iZaESS$Zg&oEj918)%S zN5!yEn>|>dpB^O8xADa{>|%MC6*$?EEE?NJc_R<|BM%l(*OMjzX-}Le#W3|%Oi!PX+w@eteg4TC;Qfr=Tz9LvF71Qfg5@}JV?qW#7Iox z^^%^`nVY4*@g8zG% z&*OY=c>fsd{|_?koJLIXE)fYHl2;>6YDHS;8O+qN-3yj}zTi;vm|2G7)YD0LiLwggr$~pd`4uAG}Mk_>1kLAXT8qLn|&c=AHyg)gKBRvxwK!U~G z-=S(k@Qms9+6D&}dhDo;&cj!slys^=QDV@6I zZ_W)y7RESgJaf5!pOqTkbli;eJe+x8tOn`zGbJT94kiqhI9=`9j5Jx8AIy~po?QM*N+g}2z0=e;8aK9~}>SEADM>cXiXf=hAP#(HPjSF@* z!%trX%E_J4t?>LA9#4s%Yoiqy5n~tZl!Yi*fSv*>gEqiWk+%^?7j#>908Lz@Co`or zROjtsLT6Ij&*_-c&bT8L3!o=GwLg82e^X7r{TZ><{%ZL_G;&0 zECrG^g=6Jtxg!{i#+*?fg6lz*@&bJoNXdoZ2ctzE+!GIvCUlq8oY?@4qqPe*dGrPv zC3YkpQpRPJjsdmU73ECfH9*kT3+zgxN@~HLvK(WD?O%_Z zdbJuR$%9qSD38GT%fnBNCC!uo;#pkb^_i-@ddHM&6zZ9teu&+ym?^qLJ@)j#;Le*$ zhh7xWD*}3wqI)cCZKhJ^!q0K{MQgmhBlV6vrnT1pjNp)eRNa)BW9o~k^|VR%uNX4~ zYco9*r@vAj%IV0^>+1oaQRLwUT?9qOb81v|BH4&v&xHodF1pWZyCUG3I-g?b!6(=S zkHYYBqQJSS#MZhz(;7Vmx9)klxq!806=-HwNr|IGu1VsgF9~?^2xY2CT zftd+2eNi^k#}d1lVZp0h18jVbhE;h5Q!sbrF_DL71!iHC@FuAm?Vu@e&;HRL&S-tC z72a&HR*wS>U@9^p*aWW~FivU5yitl69E94;VDPAvgcYseejQZ9YZKgV5OthJgGN(? zH~K_b3ZBD(oL3ttQ(+K<*Y@!=U8kuWE1cl;S|2ATS=2`ZH*@^$v^I(x)rs$)Tr3 z)DxOcx!(wP6pTA$&MRm7cMGfi+l40S-yTeCxKYV=bUEbRYJ`(nq<|p!%OlUx2lc zz5qUgzRY<12q=f@+qeYFLGpvGTeT(Bc}OO1d#jJ4RUz(m_~ix%-sU&vfkqUHs8-3MpMGsqsfG@cw*5FV)dP(?kXLSi-Gp*vwjsckrQ z#7-vAbaTN%U$W_lr|x|I=b9bS4D%<|BI z@r2ML@6@8indGHX6-o|MZ*YxeA}NaAuqnL3Q-O)a+|)8G<_d{zxIzmPOlleO6{r{9 zk}7`A=2dS!?~*sb5UPZq4nh@sWe_ga8#7$zTm}%N zHO%o=z`}Q}{Gc$k7_&p|)QhlqW3XZ|T()Xv0Amk*2rRfX>IBWZ(QZKI8=rUrlo-I3 z2zWJ@dmu#dC8#sL(iCJXgYllFJ+h1Ghi;gKU^58*|KKf(%ck;A2vUEWMD z!Cr{|cbP!->V43{nZVOQ8>GC7dA(lAwItW3s%x}j`onjn zMqk0Fk)UN`&`5K|{UYwRt2{8M21m~vdwuWk@*)Te?a)uJkr|;*W`I@06q+)>Jzl{* z>$gh}{rJBgYX01N&;Q<&PY$-3#J^pC^%YYW{O2u+w|(awFZ;LOU%oq1l)lC-D#cF* z|EA(!CH`gcFBz+Lob)wOq;90zIQUmuRP8!d>Bh(`QyMKw4?SAMCPR;+buLk7$&y5?mDm_=B<>|T6S!m}LCGgBm#4*ecN)w-0y7g75$BGvbbTgA% znB30f7jBWu-vdkzGP#qUdgzo4}obSyL*alf2JtzLJqxSZ0NF-T{1fhS;2LU;CdE3+<<>A_*aF0 zmk`0PnVeA6zm6F^cQdM*I6ab7asrx|aH6j!{A!l276x9+2dAa4MIn7{LekRMEXgyK zZvVg@PU7Lcm|Bc0eJufhaf?bw@vsxaXcKsf`Gm9}LIX*OB}|lzC@n1#cxlu)ZfV>& zso_{U7C~cR-2-gHNuqp+xe_KRz^jG8JvwE>mE=olyxMWgQ^QkbxWm(=|D+Zmz8L#M z^3aV!Oj5WA2xR!QiPe$x@N{&P9zLf^pO_A882fOtMCzDhCHtR^{s)+u%cM3|#7brt z%5)9SO%HvssM-)JG%Qq%3(;g~Nb*BN%)eUmujZq5+NO?7-oufk_uz5;9ik|@>ER`I zwDsDyQhyo}7y|oplXz-)A+r-eGoEiu4>!1ee&`_=O!r*}%ZTWwU00j)S z5u~SvZWE3vaYKJDnx%u{WGoMoy}RUMIr7#}#E7-YiP_i75M0NK$I5(nDV^sg43YbKaCu z^M>2V^w&Ygr@?eV0EgR%aayU^ll!%k`yu_)N+}i4GjiY?gxjC=@HLPc6gWz$fIgw# zO$}$F3669blOZPP>T5ut4PXWym%@W0bvH};Alp2t-QFU#PYV1=>769vDTo5}2N^BW z=D4LrVD`}C3H=c*d{EImh-xQ7T*F!78qV@@&`MQ;w5Eo0GNE&Yl{d)0^zdfOy3KYLpu5yps4bWPT~6w6YPfr%i4cNZYItXf ziAuGW64EF=9j)00nbKly&F0CX%JlFcM)*S1K&#O~dg#xk3HeD6@5KNhx-yK-RK1}W zhTdn+R<^$toG+rtp}euRzSczf9SO&L`|=52TDZ3R_K9^r|H85#PI&5-^FH_PU6J$zWE4+eyjBEBd! z{16a8C^4Z&F~f-}$sUuGE~F}ET(`7zVmy`}KAuPqKjx+(+Q4;OA9_kLA1{kT3yu>E z^?NMc76(svriOne(y+5C8h7Bd7>?ohPGl*G(WPB_~Ly67?6}qnPckk)n5G7wt;NE zdiM@|2s7JXjih=Y*H^t8pPB33U7g?2JJ{7(jlUYy-<8=bwO#T@DosKt0=72CY~r_! zt8+co_!|WHFj^L00qe}8ac02Bm&;do>fe^cS9Gdhp6%~Nd$04J-s%kgu1Yt)E7yVE zyR-PH9To@Z;(Y1l3dgj(v@WVM{6pc=yZmXs>aOgr42H?!fjapzo4LR-a~ii*<9mSF z^F8YF)fs7kFBMhed-H=}#K4Yf`MREgRwvwyW3C>b7VWHiFh5Y;o~_Q~V@+T^zL+W; ztj_dQ~aH;&C4SauNx=ntZheK*4)RpDov7{h(gQ@5&WS`{U_bW%JyjdfgU zOrKUIt#wHd6R|obnsZDQ@ffAlnvXk6t78u3FtzX9seOkm^e!| zN426zJ_PJA&YNKm6X`mF>e6-MdiUK8je+D>m4ZnyU?u`xr)s74i53q%C7v%wwM&5b zk`h=yXd6rb8a@VaNjxr=SHwE$!vCUQ>FZPE05r9UTvB(qDA&f6$+kWcn~y$0f|| zcZg|!47f?Fm@IIc6D95Uqm`TP62EqBy2a}p+#O8N6vxv0rzK$b_ou86rp2Z21Z=ns zYjr_CTTCo$E2m}uIrvHMpDUh!f2}lF__Fv!wukQrrv2w2$U>kMD@{*#)B6{u+a`h; zUNu%=h$7mwAsR5g+rNZ%8&Gx4Rb(EUG?W5>@ikIF1V9e}%;YB+#{pc!o?JL{`vg1H zu{XiFdCI1c7X8`m7GaK^#I#5}9xcU>a(t(aDoUuZv)MGgKg)cbFr^V`YCkp|K+sM} z2hk?I|EAK@;}c3#`}d~zwV+g`Oh(H@djBBgDUyiCV~Iqm8$syfo+jQH3pdQ(&_k4o zJvQ7Zi^mfvaPEL2-9{#0QD~I&v31l4vP5PE~@!wmm0)XRuaEM_i%lbj>qIjOD^+L`9bEiIhMN= z#)UGJk4!KwETaCOp@sx-dt_Q0T#=^+7q%1~$o$ZJQZ2EpBu3hg)c!jm`RTeug01Q} zi!dam5(nKyCr$mYOPn1q0j)!KdH;XN%lMGH5K?eJ9F|~rr=wgbZ*n}}zcrwAT z7_AyWk<6@?haU3EV3!LogN*|4CjuHzkC(WR1$l(Od$?wPOrE8=0MAq|AU-m0lo47k z(T<_putF9CICL9Xxc^=ZKAPTl3v!$R$nU-u7=0Kub|LcREr^oUrZTnvKBvMY;s@-XkM#roiC!WDa0t=nG4Qud+z4@nB;qv!)Q$Sh$p@XnfF2>xOYFGVdx`)6FbV}tFxJo9o2}c28gqdUrojtR=r~ukH*@; zzxja=$s#tvhh{@4+wq6mK$>9Dk2quf4>o==y)#Nt1uww<Kv+GTo2M1`RVbw3hbH5n&uLVx~%{+qLcY z2g*+~hhQxV{mWh6w(5@rm~W64HABlk{FGBQIav}5p`We0q?5fnUM{HUVMO_tRp<9-*`?X`LE0dGV_++{ZJ83D`zv6&)NC);` zMq^>DLs!la=NA2AZFnCM0yWg(vD%V^;R73M3?FcADb@gr6jv%0Dm_i&pCp`yRimy@ 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%0An#yj#N#!l?OiRN0uMO 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 literal 0 HcmV?d00001 diff --git a/Tools/NUnit/nunit-agent-x86.exe b/Tools/NUnit/nunit-agent-x86.exe new file mode 100644 index 0000000000000000000000000000000000000000..ebcee1be249b1bf77bd7c712c19c9df9da7cad26 GIT binary patch literal 7680 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 literal 0 HcmV?d00001 diff --git a/Tools/NUnit/nunit-agent-x86.exe.config b/Tools/NUnit/nunit-agent-x86.exe.config new file mode 100644 index 00000000..84c2906d --- /dev/null +++ b/Tools/NUnit/nunit-agent-x86.exe.config @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/NUnit/nunit-agent.exe b/Tools/NUnit/nunit-agent.exe new file mode 100644 index 0000000000000000000000000000000000000000..ec41f32382a836eb24b238fd8969cf5811760925 GIT binary patch literal 7680 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 literal 0 HcmV?d00001 diff --git a/Tools/NUnit/nunit-agent.exe.config b/Tools/NUnit/nunit-agent.exe.config new file mode 100644 index 00000000..84c2906d --- /dev/null +++ b/Tools/NUnit/nunit-agent.exe.config @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/NUnit/nunit-console-x86.exe b/Tools/NUnit/nunit-console-x86.exe new file mode 100644 index 0000000000000000000000000000000000000000..e08ac9c81d7a252455cddaba10fff7b0807c33f9 GIT binary patch literal 4608 zcmeHKO>9(E6h60qmSP(aBoGxZ7Wr*orbGE@@Mnf;g(Cg2Gqfri`Z~RxKKtgq@xE8u zvLKC#CKzH|7);!{a%Un5XyV3=Zb;mi;Eu$N3ln2>rHS~R^QO#HDuI;=;dbu#&b{Z{ zbI&>V+;?7wUjL99iKq$v)-9rIcyh}K-W`^~?s)pE4!W}L`i^Vr)b$;OSufHR8h-VzU@y{80-4Jn^$?H%8Jl(WGM|Tf|6g%Yb0{HuSodf%T3xeh5La zbrMY01=s6ahUi%RnCS|~6^(6cpk}IQqVEs~&Iy(52I}71rj!yJuy!Lg>}iLwZTqQZ z-}Z(*9iaCe%bz@^STh>idM@pxoP(*u>BBtJOg``m*qs*;7Wl9My)z$MFDOMUkwT(! zT6CVy(-F|@V(0PGgZ+4(z<8P09`nN~jJaXCI{tVAt>eL;>HuvKzX--ih`<+Xc)Y$! zvvoYrfle%Kp_i#2p%3Xz;3dIN1-}veSx_nFJ}G!ua8&T3@>C0bCitW3ht`&c-J(Cy zp2TAVY1)kl@Mu&s`!bD*1+y}GZ|elSP3-+eZKMg>Oxpx^2<{c^5$qGp3JwasBKR6` z8@a#@$Q<1ilLkH*#a1$K@K0zs9Ck+DE3w@N{0iC1gm4m390On}|c!nlb z7d0&>dDKRQ{Uq&MIGIE<87n#}1ZUfdR44tGgo5a~p>TTMH!n~yA9!(hF$|*6H{FXz z4moDgP|kOwsE3A6gX!cF=Gc4?7)#}-7+T+(qWn@6n=*||y=96q4Y^)GPB9K`mEnw; z86O-k3@95#raa{@^_!?@y$a7|V`SUZd~9wr3tsG-JEyVxj8~es?%JycgPG8lh3Wd^ z#zt%E{!d21y3?lY+PSqht}I!vG#lT^8nuXCaScW;ELYrMskR~sl7raAUfCd&<%;JU zn>Y5HS2PhN6Jq|D@!dtCqT2fELeU$0Q=ad|b=vPZJjxfcg;{Id>6!}H;!dxYM5W-P ztez<6Nu!o***g5g`9fPXvfQ+k`Ro1P6}4VH|Hk;X-kTS3V_Ki;fS791N_8-_HgPt! zUjF`*?N|RexzPBCYHgPMdQ4Hfq)vA=b?}zL`zq}mbb3-wPfw~ZO|(nV4iVBQX0DD` z4nl`BI?21xmhh(eQql4kxv+W`dQWbzPN!1oZa|;T&AP}%qenwzuhZVPwp_11>6T5T zCmcO&7Un!V*QJNN;;d_YopW?yA?(swA9?TTtfR+68wPO{o?A;_iuXVW2}Hh06W`hB};k&ei>fC0sJTvAt{>lEmcXkj}m zv?Sh?XcqpE*uHvB(;m$3#fu^>@k~>9mFmM>4(s?lefVQA9)-@tZwFqt-Iu;ztUp;j zj|lVxVxr-zp#_?Qehciv%n<0J>}#+u+rV-KNQJ`BO5E9J5A#{!j)P~>19-_Na}Klj zW?$;IziDV2#lD=meEz&M=cM!QI5qiN4i_YcMzDr0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/NUnit/nunit-console.exe b/Tools/NUnit/nunit-console.exe new file mode 100644 index 0000000000000000000000000000000000000000..1544a9d831c682670bf233f02c88b2dbe8854065 GIT binary patch literal 4608 zcmeHK-EUMy6hG4sTncUYPy&A7V38DPZ?;Q;G=A-}AQby$cPSty^maSlUVHc6b?z-~ zeIShyqlphbX~K(7zWHDx3234*_`(Z`{s$!TVxsZIClkTnId{u$r4V>Cgz3(iGjqPr zoSC^Ddh1haCZZPf+qa3XVC0q+cz>`2a>w)EbT6X3{j#gkvLH!c2V20%86(^oEv&_l`Aw2uAUB0z}q@ z&>LHp=uqRF@d?f=8vE8ntyI-SKOzqbb9A=$P;GNsi4Tz7NKIYsaJFqPt=Y4^sjCC{ zohm>efd_9+O($4<$!OTH6(@H+zB?xz(N6d&Jh2B|+trwId=IBD9a#?hqC{P+W zhuC@a#K2*USgZEVw3a7-t9`U3i4D#$O*%w~=j+fJ=gu@vG~=9x zqm%`lrPF{P3H(Cf4+3ur{72wc#XS224hp=Wj9Noq3j9T7q4k#P6upV|Bp(~-S?WXv zcs8n;{22|42QxDJaBBh4vR{gBs*O~jCuy6&9Rha?>=oEAFeh+8;F|(Z18yT1a07V) z-xV8c1=m!f?c~rtIs>?w4gfwwX~0ez09+^dOY}bQJiVeEoSb8T1v&|Mh9*=uwJdS& zTH$wbFI+|Y2|*^=Oy-JYt5)DaAD8dI345IJ7l_GiIiJP`ogpTojqg zq`!FBL?!E0c`X;C(kAC(bB9>;V&B}o4C~WgdCt14OAQ3mp{)qf^~a5kR@Hq^LeaWY zrsCS!)eKh`tyi9j?tY>Gt z^^jMZagDF@jxNrJ-8$!^<~^Nr^mu5)AdbRwtLaO#-HaZc!7fyF-nw2HY&qZ8V_YVY z9y1a4)l50K&J?vuB)IPst!)S@rD_lDcD{a!OlgKM;1y(P6qZcoR1Wps=XJy zIRWFEvAf&yyFzp}AKD`eMvkH!Q)8SdpYM5malA-6E7)W3f5?E6_jGIW71iKS@!BY17jVjQN|fph!5<GnM~a}jSdBn;DF$DNS<=34;qM3q zpJH%%STC=lsYQ6wc=eLMKAHqZ)F-cU9{MU&6&s6)$i>Wv`e8Z&jUIG6;IYt6@VNu_ zmc2a;&Iqq9+pezgtuEVxH*q}jhJElLz+nt^5#pI5GF>cZ-7 zTof6}V}^QaSU=YCkmG&y5r@Hi6grc59YovqQ2P2Hf4sI25%819g+`2q=JDm`!OARk zV`T_|s48)N#-(I_Hmf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/NUnit/nunit-x86.exe b/Tools/NUnit/nunit-x86.exe new file mode 100644 index 0000000000000000000000000000000000000000..fd342c070ace450cfb50c83775d74b018ae7f6f1 GIT binary patch literal 5632 zcmeHL&2JmW6@N=fE-hE8f~0|sw)VJ60y&lz6eBwk8l?MyKmqC^X@R2p2Lc2I`f+Q3_TXDCIoLW>{k^xOxTF}h z37SLEj5KfF_q=)YW@o^;@4P`hMAVCZa6t4fMs68_$AcQggXexXNcT>@cm7@D+I#2o z>vo_jzE|?CvMO4x>xHVIm0xw0?W*bPORDUxYI9(q|A~g{g&Cr2Mh|`I?{CdDXZwH> z#wjC7gn#;C#QpA57!`U3oq@uTh~fq&@$*PEbnv+)DDz{YA^C5O4Kh-pB>XNho*{a0 zvcZfGD~BP(x&IzlQTR>8B31m^4MSV)}t!1SPR$fb=&y zhGxqkdehgA2SrKO3MB07G4xo=5KYBMK{K3JG>$DneN<6Izvv^W34@5E`$X;0lp!&| z_7O^q3?ShCi*(}Yvx$*G;7?C2U7a!rQZ$bBcG^stmr~EBpJh%TIe_;d9{vH+f;D`^ z_)_TGZYf}m$55!8s^J?;^i|;4T^hb}V|E(jC}@ZEryQ>Unj2ggSH7Ge+1h>M8G0NH z@DYrp2=YVvR0C%@^Eug!a~dWo4fra(4EVahp9_3j;GYG4D6rpPohJppAaK*TX`G<9 z1pdKD!|Q$HocN8rb3P2La9g})KB?~B<(j?WR%T_Ht2#NTy0IQVfssy3Zm!dyw$3s zUm&;Y+TqyNbC*rMr77oFK`>79H^4NnRBb8;MbCHa0xfL^p)S+)!uNDBq&drW$t;GR z-w>FKdd-2v_FT#afi4%E?P(npeY?WEY>3(_R6~6z%-f-(kFs-~yJnZFzSZ4o)?M@b zvIs3_S^Gg(-ybW;`_`&1TmDA3i7VT_U0M&1iWYq2s@O%4^U4*=-ELV#Nir9!ZfKXa z$#UD#{*v}@+eIBv#E|e8wPS4w7PRaehT=E03$|m2G4F?4MN9c?e%;sBYRlB}adIP# zQq>;AUEpe;vX#n=8~WQ)3O!1O!mnN(cxCFvmul%hJ-Bu2Z$F~sJFma8d}iWZc(^T_%bHnyGM%A2MT(`8Na;C~}dZQ}qptfz5HPy1`du|wbx4ZdE z@w{oZu#UV}RL-~T64bJeqZYX^0=1|E?4({b@nJLQWNal#Lq3;8XZgF5Pdt9pw<`0V zJF`{PasaSh-ezE=8utKi#607Qv7@bdU$i8zhO0QFN!BgWd!>i z{4ZpnNACR*900x_@g}J8{kjsps$vUB$QOMJ{2p-MI3mYE{2|fZE_^^!1qi=`7;K`=QzH_D%p@#@+TB z;0!GSo2BbC4|*2xMc~|i-}~V|Ii5abB!990aQvo7qjza+TH*3r#ei3feE6~P=F#x! z(i(Xpe}XuWJfs%50pu2i(DOh=?d{$qR1CxvLdyof)Wy?3usH_q?B?GD6@U{>$g3g; ze`Tu39NSot1xkzidAb3QHhi1V@!^|oPQX_)+G%J8crEbUmA2Sgwz$e^AZD`+8y{A! zb)@0{68gBjE5>EycNVwj@j^2sE1}rAh|h^d=~A^3;}~txbMhL|z<32eGw#9m8t{@> z@k%SSEzy=}9q|(0FP%I^Bj8>jg$OufX&P%_li=lG$NS|Vehqp7_MYsViBtwdmN`M zz86tduR>myd~U#kTdQsqe6lwSovYh|r9=ZhT59GxY&cRr6vmT8aWy_I_F1f!vsT9GbWo+dhwUfjI3FX( zokGu`8}i)%68rA)_nUjvYSEXsRwH2O_ye-Hw}+8A_yGX_{6l~Yfc%@l0fW!DVUA;4 z9SsTqchDGV&<~m3Y0&%iItxW%7wSy!92`7k1Eyhg91Zn0c_&@3@5kj3chI|SbiLk5 zAMA6m95Uj8c?Z3VfDxs%`Yz1lv@AF#KT2bThjK_^9zpiUSOhr_M`>Yx3h)`1#i4ty zbFO2B-mLQ)@MimO)%jXS>r4rkWE08nJ(OcJA!#V`Lv(DpBS; uJ+{-$^?dr#!0}gVNV3E)pacyKMHIh(_`TNFRP;N{%H=lh=fwX>2L1&N^IYWs literal 0 HcmV?d00001 diff --git a/Tools/NUnit/nunit-x86.exe.config b/Tools/NUnit/nunit-x86.exe.config new file mode 100644 index 00000000..6c0320e8 --- /dev/null +++ b/Tools/NUnit/nunit-x86.exe.config @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/NUnit/nunit.exe b/Tools/NUnit/nunit.exe new file mode 100644 index 0000000000000000000000000000000000000000..ad8b08af381ca783992e342487e6705bc79c247d GIT binary patch literal 5632 zcmeHLPiP$18UJSWr?L_&3UNb?srytpMULfRwUHClhIH2})sbV#TkTpVO(33KJ*_61 zo!QLHT2d(OURo%$U?`+^4%M|R0j1R7v{2BchZaIZ=%GiGTnr8Ll0&RR)Zh2bu6DHA zh$J+Jggohe@B9D0_r34EdD7fZZcq;q^`h_Y61|0yTUy}ZpbqiScm6U&w~xF%@|JPw z?UBNY9jL1Bm3^zCN|x(-p(<+S*IZ@0YWi|sRlFr_9z8mEs_8m6Lv+dLp@-i8-CS$7 zyOb~>t=NQDS~pJO~t zbni%u85^(dg%D$Y3RFemw=@SpKieWOnxS3~F&6p(6gsc988z{YLB4}=KVO;oTf@EuVj3?;P zXl)2aQUtj~!}J4994aE?sC=jj6Ab%DPT_=doD1^!21zri{q0>3XXF!Dw} z{Z`-|!-Utn#tHEodFOl>SjjOufebL7Q!IXso|Xt!g!<*TGSG?Q{fF@|WuSjt;E2G} z0w)Ac3Cswb75HO;&jTJO3vifhfv?CMM+8??qLWzX6O;#hgq{REK}o<-$W7#j@gLBu zfLW0~N9VAfJWT_>Ky$`8_12?08l=J*lJ-X|lA~@lgB}xJ2dsWrmSNH!351;VaA1;O_iYJ`Ho$r{6-M!3SBO~tV!9S@RpwOEn>4jp}vo%P&hyIk|F?pCwzvgcPsXgQ18 z54!sPL_xu~mUPAPSG!GI-SF-5N_bF|^O2`g7eUsmR4sR-Z4o8OT&TIBUC}1XZAbfg z?O(S`I-rOl;V)>%S{E#6+cyoxZ)g{7#|~rOWt%8p$P`w5Z7sFUEFULUq-V=D`z*cz zuJ$QYt4|6m{`(JRUw`?P_ll=_{ze0LUVU-#_~hMR;WP|ElUPlW4 z`CT<3?}`Z-rwF&T%*Ssp&PphDF5+`yQMy#yi&4|MME+~zHf$~dFN-#>uu2;eWtmps ziSTae-grD6eAykp$>IX4SL=UA)6_y5f5gRr3<$70Kr+ zEV#AnMZqU~v(UM!EqH2cE39c5lD2-kHltVaW!P|}d>Xh`TD8hlRN38XW?bqz2U`#G z)sXivR%P+{h|*He`*l03`mmaw7W)iV$=RylG&-nG-n;!L<1im%$eBVvaN#jvpY~+uInKgFpE3%YXRG0LcFX*k$kqH_UNpYoI{^;1(JqP5M65 zn@xJB(O{t{Y(bsr&E4JmY``>(4x^#IPu@v48ar`0#2xh3KDyE9q<42XSPmKSz`TRr zLcoYpT4M|5aatA}lOLq9!aX^pFpnVnV=RK4hl8{*KL_}N%VN(x*E!d*LT}Z19eAt# zzv_IsqjjbPSwsnL?(Sgw?(g1@jg2O~6^+=xTbs8wcQCRKE|n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file